From 4188f38ad56d7ba2ea46e94403f305243514f80c Mon Sep 17 00:00:00 2001 From: tcit Date: Thu, 24 Jul 2014 15:49:36 +0200 Subject: [PATCH 001/119] add pdf and mobi libraries --- inc/3rdparty/libraries/mpdf/CHANGELOG.txt | 2895 ++ inc/3rdparty/libraries/mpdf/CREDITS.txt | 92 + inc/3rdparty/libraries/mpdf/FONT INFO.txt | 164 + inc/3rdparty/libraries/mpdf/LICENSE.txt | 340 + inc/3rdparty/libraries/mpdf/README.txt | 148 + .../libraries/mpdf/classes/barcode.php | 1965 + inc/3rdparty/libraries/mpdf/classes/bmp.php | 248 + .../libraries/mpdf/classes/cssmgr.php | 1566 + .../libraries/mpdf/classes/directw.php | 408 + inc/3rdparty/libraries/mpdf/classes/form.php | 1498 + inc/3rdparty/libraries/mpdf/classes/gif.php | 700 + inc/3rdparty/libraries/mpdf/classes/grad.php | 723 + inc/3rdparty/libraries/mpdf/classes/indic.php | 433 + inc/3rdparty/libraries/mpdf/classes/meter.php | 224 + inc/3rdparty/libraries/mpdf/classes/svg.php | 2600 ++ .../libraries/mpdf/classes/tocontents.php | 468 + .../libraries/mpdf/classes/ttfontsuni.php | 2065 + .../mpdf/classes/ttfontsuni_analysis.php | 463 + inc/3rdparty/libraries/mpdf/classes/wmf.php | 236 + inc/3rdparty/libraries/mpdf/compress.php | 172 + inc/3rdparty/libraries/mpdf/config.php | 572 + inc/3rdparty/libraries/mpdf/config_cp.php | 153 + inc/3rdparty/libraries/mpdf/config_fonts.php | 304 + .../libraries/mpdf/examples/alpha.gif | Bin 0 -> 31084 bytes .../libraries/mpdf/examples/alpha.png | Bin 0 -> 87454 bytes .../libraries/mpdf/examples/alpha3.png | Bin 0 -> 8596 bytes .../libraries/mpdf/examples/bayeux1.jpg | Bin 0 -> 128530 bytes inc/3rdparty/libraries/mpdf/examples/bg.jpg | Bin 0 -> 6762 bytes .../libraries/mpdf/examples/bgbarcode.png | Bin 0 -> 2991 bytes .../libraries/mpdf/examples/bgrock.jpg | Bin 0 -> 5191 bytes .../libraries/mpdf/examples/borders2FF.jpg | Bin 0 -> 31340 bytes .../libraries/mpdf/examples/borders2IE.jpg | Bin 0 -> 22070 bytes .../libraries/mpdf/examples/borders3FF.jpg | Bin 0 -> 39381 bytes .../libraries/mpdf/examples/borders3IE.jpg | Bin 0 -> 42274 bytes .../libraries/mpdf/examples/borders4FF.jpg | Bin 0 -> 50994 bytes .../libraries/mpdf/examples/borders4IE.jpg | Bin 0 -> 52945 bytes .../libraries/mpdf/examples/bordersFF.jpg | Bin 0 -> 32952 bytes .../libraries/mpdf/examples/bordersIE.jpg | Bin 0 -> 33061 bytes .../libraries/mpdf/examples/bordersMPDF2.jpg | Bin 0 -> 37662 bytes .../libraries/mpdf/examples/clematis.jpg | Bin 0 -> 184829 bytes .../mpdf/examples/example01_basic.php | 187 + .../mpdf/examples/example02_CSS_styles.php | 41 + .../example03_backgrounds_and_borders.php | 138 + .../mpdf/examples/example04_images.php | 207 + .../mpdf/examples/example05_tables.php | 1017 + .../mpdf/examples/example06_tables_nested.php | 532 + .../examples/example07_tables_borders.php | 500 + .../mpdf/examples/example08_lists.php | 137 + .../mpdf/examples/example09_forms.php | 204 + ...0_floating_and_fixed_position_elements.php | 103 + .../mpdf/examples/example11_overflow_auto.php | 81 + .../mpdf/examples/example12_paging_html.php | 92 + .../mpdf/examples/example13_paging_css.php | 94 + ...ple14_page_numbers_ToC_Index_Bookmarks.php | 148 + .../examples/example15_headers_method_1.php | 60 + .../examples/example16_headers_method_2.php | 49 + .../examples/example17_headers_method_3.php | 58 + .../examples/example18_headers_method_4.php | 84 + .../mpdf/examples/example19_page_sizes.php | 59 + .../mpdf/examples/example20_justify.php | 130 + .../mpdf/examples/example21_hyphenation.php | 41 + .../mpdf/examples/example22_columns.php | 80 + .../mpdf/examples/example23_orientation.php | 132 + .../mpdf/examples/example24_orientation_2.php | 200 + .../libraries/mpdf/examples/example26_RTL.php | 316 + .../example27_CJK_using_Adobe_fonts.php | 91 + .../example28_CJK_using_embedded_fonts.php | 89 + .../example29_multilingual_autofont.php | 400 + .../mpdf/examples/example30_arabic.php | 384 + .../mpdf/examples/example32_indic.php | 219 + .../mpdf/examples/example35_watermarks.php | 59 + ...ample36_annotations_and_Attached_files.php | 36 + .../mpdf/examples/example37_barcodes.php | 437 + .../mpdf/examples/example38_dot_tab.php | 43 + .../examples/example39_PDFA_compliance.php | 31 + .../examples/example40_MPDFI_thumbnails.php | 20 + .../examples/example41_MPDFI_template.php | 36 + .../examples/example42_MPDFI_templatedoc.php | 35 + .../mpdf/examples/example43_MPDFI_booklet.php | 121 + .../examples/example44_MPDFI_yearbook.php | 150 + .../example46_progress_bars_simple.php | 1595 + .../example47_progress_bars_simple_custom.php | 1609 + .../example48_progress_bars_advanced.php | 1609 + .../mpdf/examples/example49_changelog.php | 41 + .../example50_new_mPDF_3_features.php | 1905 + .../example51_new_mPDF_4_features.php | 615 + .../mpdf/examples/example52_lineheight.htm | 36 + .../example52_new_mPDF_4-2_features.php | 492 + .../example53_new_mPDF_v5-0_fonts.php | 431 + ...PDF_v5-1_features_gradients_and_images.php | 498 + ...new_mPDF_v5-1_color_and_other_features.php | 456 + ...ple56_new_mPDF_v5-1_features_grayscale.php | 497 + .../example57_new_mPDF_v5-3_active_forms.php | 233 + ...example57_new_mPDF_v5-3_active_forms_b.php | 234 + .../example58_new_mPDF_v5-4_features.php | 547 + .../example59_new_mPDF_v5-6_features.php | 387 + .../example60_new_mPDF_v5-7_features.php | 595 + .../libraries/mpdf/examples/firefox-48.png | Bin 0 -> 5640 bytes .../mpdf/examples/flowers-pattern.jpg | Bin 0 -> 40092 bytes .../libraries/mpdf/examples/formsubmit.php | 94 + inc/3rdparty/libraries/mpdf/examples/goto.gif | Bin 0 -> 132 bytes inc/3rdparty/libraries/mpdf/examples/img1.png | Bin 0 -> 1000 bytes inc/3rdparty/libraries/mpdf/examples/img2.png | Bin 0 -> 1044 bytes inc/3rdparty/libraries/mpdf/examples/img3.png | Bin 0 -> 1087 bytes inc/3rdparty/libraries/mpdf/examples/img4.png | Bin 0 -> 1772 bytes inc/3rdparty/libraries/mpdf/examples/img5.png | Bin 0 -> 1802 bytes .../libraries/mpdf/examples/index.php | 40 + .../libraries/mpdf/examples/klematis.jpg | Bin 0 -> 10937 bytes .../libraries/mpdf/examples/loading.gif | Bin 0 -> 771 bytes .../libraries/mpdf/examples/mpdfstyleA4.css | 89 + .../mpdf/examples/mpdfstylePaged.css | 123 + .../mpdf/examples/mpdfstyletables.css | 124 + .../libraries/mpdf/examples/quran282.jpg | Bin 0 -> 175840 bytes .../libraries/mpdf/examples/sample_basic.pdf | Bin 0 -> 38069 bytes .../mpdf/examples/sample_logoheader2.pdf | Bin 0 -> 89631 bytes .../mpdf/examples/sample_orientation2.pdf | Bin 0 -> 64368 bytes .../mpdf/examples/sample_orientation3.pdf | Bin 0 -> 64260 bytes .../libraries/mpdf/examples/show_code.php | 48 + .../libraries/mpdf/examples/sunset.jpg | Bin 0 -> 31640 bytes .../libraries/mpdf/examples/sunsetv.jpg | Bin 0 -> 17615 bytes inc/3rdparty/libraries/mpdf/examples/test.pdf | Bin 0 -> 115385 bytes inc/3rdparty/libraries/mpdf/examples/tiger | Bin 0 -> 85202 bytes .../libraries/mpdf/examples/tiger.bmp | Bin 0 -> 155322 bytes .../libraries/mpdf/examples/tiger.gif | Bin 0 -> 129588 bytes .../libraries/mpdf/examples/tiger.jpg | Bin 0 -> 58232 bytes .../libraries/mpdf/examples/tiger.php | 18 + .../libraries/mpdf/examples/tiger.png | Bin 0 -> 85202 bytes .../libraries/mpdf/examples/tiger.svg | 726 + .../libraries/mpdf/examples/tiger.wmf | Bin 0 -> 18718 bytes .../libraries/mpdf/examples/tiger2.png | Bin 0 -> 149248 bytes .../libraries/mpdf/examples/tiger2.wmf | Bin 0 -> 197440 bytes .../libraries/mpdf/examples/tiger24trns.png | Bin 0 -> 169256 bytes .../mpdf/examples/tiger300px300dpi.jpg | Bin 0 -> 28210 bytes .../mpdf/examples/tiger300px300dpi.png | Bin 0 -> 84835 bytes .../mpdf/examples/tiger300px72dpi.jpg | Bin 0 -> 28210 bytes .../mpdf/examples/tiger300px96dpi.jpg | Bin 0 -> 28210 bytes .../mpdf/examples/tiger300px96dpi.png | Bin 0 -> 84835 bytes .../libraries/mpdf/examples/tiger8trns.gif | Bin 0 -> 79175 bytes .../libraries/mpdf/examples/tiger8trns.png | Bin 0 -> 16173 bytes .../libraries/mpdf/examples/tigercmyk.jpg | Bin 0 -> 180137 bytes inc/3rdparty/libraries/mpdf/examples/tux.svg | 1487 + .../libraries/mpdf/examples/windmill.jpg | Bin 0 -> 18045 bytes inc/3rdparty/libraries/mpdf/font/ccourier.php | 9 + .../libraries/mpdf/font/ccourierb.php | 9 + .../libraries/mpdf/font/ccourierbi.php | 9 + .../libraries/mpdf/font/ccourieri.php | 9 + .../libraries/mpdf/font/chelvetica.php | 20 + .../libraries/mpdf/font/chelveticab.php | 21 + .../libraries/mpdf/font/chelveticabi.php | 21 + .../libraries/mpdf/font/chelveticai.php | 21 + inc/3rdparty/libraries/mpdf/font/csymbol.php | 21 + inc/3rdparty/libraries/mpdf/font/ctimes.php | 21 + inc/3rdparty/libraries/mpdf/font/ctimesb.php | 21 + inc/3rdparty/libraries/mpdf/font/ctimesbi.php | 21 + inc/3rdparty/libraries/mpdf/font/ctimesi.php | 21 + .../libraries/mpdf/font/czapfdingbats.php | 21 + inc/3rdparty/libraries/mpdf/graph.php | 721 + .../libraries/mpdf/graph_cache/dummy.txt | 2 + .../mpdf/iccprofiles/SWOP2006_Coated5v2.icc | Bin 0 -> 2747744 bytes .../mpdf/iccprofiles/sRGB_IEC61966-2-1.icc | Bin 0 -> 3052 bytes .../libraries/mpdf/includes/CJKdata.php | 101 + .../libraries/mpdf/includes/functions.php | 126 + .../mpdf/includes/ind_bn_1_001.volt.php | 3164 ++ .../mpdf/includes/ind_gu_1_001.volt.php | 3314 ++ .../mpdf/includes/ind_hi_1_001.volt.php | 4169 ++ .../mpdf/includes/ind_kn_1_001.volt.php | 2994 ++ .../mpdf/includes/ind_ml_1_001.volt.php | 1769 + .../mpdf/includes/ind_or_1_001.volt.php | 2149 + .../mpdf/includes/ind_pa_1_001.volt.php | 1444 + .../mpdf/includes/ind_ta_1_001.volt.php | 394 + .../mpdf/includes/ind_te_1_001.volt.php | 1489 + .../libraries/mpdf/includes/no_image.jpg | Bin 0 -> 7888 bytes inc/3rdparty/libraries/mpdf/includes/out.php | 59 + .../libraries/mpdf/includes/subs_core.php | 454 + .../libraries/mpdf/includes/subs_win-1252.php | 308 + .../libraries/mpdf/includes/upperCase.php | 975 + inc/3rdparty/libraries/mpdf/mpdf.css | 20 + inc/3rdparty/libraries/mpdf/mpdf.php | 32723 ++++++++++++++++ .../mpdf/mpdfi/filters/FilterASCII85.php | 98 + .../mpdf/mpdfi/filters/FilterLZW.php | 154 + .../libraries/mpdf/mpdfi/fpdi_pdf_parser.php | 363 + .../libraries/mpdf/mpdfi/pdf_context.php | 78 + .../libraries/mpdf/mpdfi/pdf_parser.php | 690 + .../libraries/mpdf/patterns/NOTES.txt | 5 + inc/3rdparty/libraries/mpdf/patterns/de.php | 9 + .../libraries/mpdf/patterns/dictionary.txt | 1 + inc/3rdparty/libraries/mpdf/patterns/en.php | 10 + inc/3rdparty/libraries/mpdf/patterns/es.php | 11 + inc/3rdparty/libraries/mpdf/patterns/fi.php | 9 + inc/3rdparty/libraries/mpdf/patterns/fr.php | 12 + inc/3rdparty/libraries/mpdf/patterns/it.php | 11 + inc/3rdparty/libraries/mpdf/patterns/nl.php | 11 + inc/3rdparty/libraries/mpdf/patterns/pl.php | 9 + inc/3rdparty/libraries/mpdf/patterns/ru.php | 12 + inc/3rdparty/libraries/mpdf/patterns/sv.php | 12 + inc/3rdparty/libraries/mpdf/progbar.css | 66 + inc/3rdparty/libraries/mpdf/tmp/dummy.txt | 2 + .../libraries/mpdf/ttfontdata/dummy.txt | 2 + .../mpdf/ttfonts/DejaVuSans-Bold.ttf | Bin 0 -> 584396 bytes .../mpdf/ttfonts/DejaVuSans-BoldOblique.ttf | Bin 0 -> 524624 bytes .../mpdf/ttfonts/DejaVuSans-Oblique.ttf | Bin 0 -> 524396 bytes .../libraries/mpdf/ttfonts/DejaVuSans.ttf | Bin 0 -> 633604 bytes .../mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf | Bin 0 -> 545712 bytes .../DejaVuSansCondensed-BoldOblique.ttf | Bin 0 -> 493756 bytes .../ttfonts/DejaVuSansCondensed-Oblique.ttf | Bin 0 -> 489032 bytes .../mpdf/ttfonts/DejaVuSansCondensed.ttf | Bin 0 -> 555944 bytes .../mpdf/ttfonts/DejaVuSansMono-Bold.ttf | Bin 0 -> 302868 bytes .../ttfonts/DejaVuSansMono-BoldOblique.ttf | Bin 0 -> 224160 bytes .../mpdf/ttfonts/DejaVuSansMono-Oblique.ttf | Bin 0 -> 230244 bytes .../libraries/mpdf/ttfonts/DejaVuSansMono.ttf | Bin 0 -> 322524 bytes .../mpdf/ttfonts/DejaVuSerif-Bold.ttf | Bin 0 -> 307596 bytes .../mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf | Bin 0 -> 295360 bytes .../mpdf/ttfonts/DejaVuSerif-Italic.ttf | Bin 0 -> 303004 bytes .../libraries/mpdf/ttfonts/DejaVuSerif.ttf | Bin 0 -> 330052 bytes .../ttfonts/DejaVuSerifCondensed-Bold.ttf | Bin 0 -> 283140 bytes .../DejaVuSerifCondensed-BoldItalic.ttf | Bin 0 -> 294584 bytes .../ttfonts/DejaVuSerifCondensed-Italic.ttf | Bin 0 -> 302444 bytes .../mpdf/ttfonts/DejaVuSerifCondensed.ttf | Bin 0 -> 296976 bytes .../libraries/mpdf/ttfonts/DejaVuinfo.txt | 99 + .../mpdf/ttfonts/GNUFreeFontinfo.txt | 108 + .../libraries/mpdf/ttfonts/Garuda-Bold.ttf | Bin 0 -> 57796 bytes .../mpdf/ttfonts/Garuda-BoldOblique.ttf | Bin 0 -> 57460 bytes .../libraries/mpdf/ttfonts/Garuda-Oblique.ttf | Bin 0 -> 57412 bytes .../libraries/mpdf/ttfonts/Garuda.ttf | Bin 0 -> 57324 bytes .../libraries/mpdf/ttfonts/Norasi-Bold.ttf | Bin 0 -> 77420 bytes .../mpdf/ttfonts/Norasi-BoldOblique.ttf | Bin 0 -> 78280 bytes .../libraries/mpdf/ttfonts/Norasi-Oblique.ttf | Bin 0 -> 79836 bytes .../libraries/mpdf/ttfonts/Norasi.ttf | Bin 0 -> 103412 bytes .../mpdf/ttfonts/Thai Fonts License.txt | 340 + .../libraries/mpdf/ttfonts/XB Riyaz.ttf | Bin 0 -> 1144764 bytes .../libraries/mpdf/ttfonts/XB RiyazBd.ttf | Bin 0 -> 1159192 bytes .../libraries/mpdf/ttfonts/XB RiyazBdIt.ttf | Bin 0 -> 1159500 bytes .../libraries/mpdf/ttfonts/XB RiyazIt.ttf | Bin 0 -> 1131668 bytes .../libraries/mpdf/ttfonts/XB Zar Bd.ttf | Bin 0 -> 1389628 bytes .../libraries/mpdf/ttfonts/XB Zar BdIt.ttf | Bin 0 -> 1366172 bytes .../libraries/mpdf/ttfonts/XB Zar It.ttf | Bin 0 -> 1361580 bytes .../libraries/mpdf/ttfonts/XB Zar.ttf | Bin 0 -> 1397368 bytes .../mpdf/ttfonts/XW Zar Font Info.txt | 92 + .../libraries/mpdf/ttfonts/ind_bn_1_001.ttf | Bin 0 -> 235632 bytes .../libraries/mpdf/ttfonts/ind_gu_1_001.ttf | Bin 0 -> 257872 bytes .../libraries/mpdf/ttfonts/ind_hi_1_001.ttf | Bin 0 -> 107216 bytes .../libraries/mpdf/ttfonts/ind_kn_1_001.ttf | Bin 0 -> 226916 bytes .../libraries/mpdf/ttfonts/ind_ml_1_001.ttf | Bin 0 -> 115804 bytes .../libraries/mpdf/ttfonts/ind_or_1_001.ttf | Bin 0 -> 162552 bytes .../libraries/mpdf/ttfonts/ind_pa_1_001.ttf | Bin 0 -> 57864 bytes .../libraries/mpdf/ttfonts/ind_ta_1_001.ttf | Bin 0 -> 85328 bytes .../libraries/mpdf/ttfonts/ind_te_1_001.ttf | Bin 0 -> 124248 bytes .../libraries/mpdf/ttfonts/ocrb10.ttf | Bin 0 -> 23112 bytes .../libraries/mpdf/ttfonts/ocrbinfo.txt | 60 + .../libraries/mpdf/utils/UnicodeData.txt | 21488 ++++++++++ .../libraries/mpdf/utils/UnicodeRanges.php | 218 + .../libraries/mpdf/utils/font_collections.php | 72 + .../libraries/mpdf/utils/font_coverage.php | 255 + .../libraries/mpdf/utils/font_dump.php | 222 + .../libraries/mpdf/utils/font_names.php | 200 + inc/3rdparty/libraries/mpdf/utils/index.php | 26 + .../MOBIClass/CharacterEntities.php | 413 + .../send2kindle/MOBIClass/ContentProvider.php | 22 + .../send2kindle/MOBIClass/EXTHHelper.php | 132 + .../send2kindle/MOBIClass/FileByte.php | 41 + .../send2kindle/MOBIClass/FileDate.php | 40 + .../send2kindle/MOBIClass/FileElement.php | 89 + .../send2kindle/MOBIClass/FileInt.php | 40 + .../send2kindle/MOBIClass/FileObject.php | 168 + .../send2kindle/MOBIClass/FileRecord.php | 46 + .../send2kindle/MOBIClass/FileShort.php | 41 + .../send2kindle/MOBIClass/FileString.php | 83 + .../send2kindle/MOBIClass/FileTri.php | 41 + .../libraries/send2kindle/MOBIClass/Http.php | 171 + .../send2kindle/MOBIClass/ImageHandler.php | 28 + .../libraries/send2kindle/MOBIClass/MOBI.php | 205 + .../MOBIClass/MultipleFileHandler.php | 136 + .../send2kindle/MOBIClass/OnlineArticle.php | 116 + .../send2kindle/MOBIClass/PEOFRecord.php | 49 + .../send2kindle/MOBIClass/PFCISRecord.php | 59 + .../send2kindle/MOBIClass/PFLISRecord.php | 58 + .../send2kindle/MOBIClass/PalmRecord.php | 154 + .../libraries/send2kindle/MOBIClass/Prc.php | 97 + .../MOBIClass/PreprocessedArticle.php | 89 + .../send2kindle/MOBIClass/RecognizeURL.php | 16 + .../send2kindle/MOBIClass/Record.php | 96 + .../send2kindle/MOBIClass/RecordFactory.php | 129 + .../send2kindle/MOBIClass/Settings.php | 95 + .../send2kindle/MOBIClass/constants.php | 11 + .../MOBIClass/downloaders/FanFictionNet.php | 125 + .../send2kindle/MOBIClass/http_build_url.php | 94 + .../readability/JSLikeHTMLElement.php | 110 + .../MOBIClass/readability/Readability.php | 1069 + inc/3rdparty/libraries/send2kindle/api.php | 234 + inc/3rdparty/libraries/send2kindle/images.php | 136 + inc/3rdparty/libraries/send2kindle/io.php | 250 + .../libraries/send2kindle/readability.php | 249 + inc/3rdparty/libraries/send2kindle/send.php | 69 + .../libraries/send2kindle/storage.php | 230 + inc/3rdparty/libraries/send2kindle/utils.php | 37 + inc/poche/WallabagEpub.class.php | 114 +- inc/poche/global.inc.php | 10 + 297 files changed, 126557 insertions(+), 7 deletions(-) create mode 100644 inc/3rdparty/libraries/mpdf/CHANGELOG.txt create mode 100644 inc/3rdparty/libraries/mpdf/CREDITS.txt create mode 100644 inc/3rdparty/libraries/mpdf/FONT INFO.txt create mode 100644 inc/3rdparty/libraries/mpdf/LICENSE.txt create mode 100644 inc/3rdparty/libraries/mpdf/README.txt create mode 100644 inc/3rdparty/libraries/mpdf/classes/barcode.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/bmp.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/cssmgr.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/directw.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/form.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/gif.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/grad.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/indic.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/meter.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/svg.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/tocontents.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php create mode 100644 inc/3rdparty/libraries/mpdf/classes/wmf.php create mode 100644 inc/3rdparty/libraries/mpdf/compress.php create mode 100644 inc/3rdparty/libraries/mpdf/config.php create mode 100644 inc/3rdparty/libraries/mpdf/config_cp.php create mode 100644 inc/3rdparty/libraries/mpdf/config_fonts.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/alpha.gif create mode 100644 inc/3rdparty/libraries/mpdf/examples/alpha.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/alpha3.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/bayeux1.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/bg.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/bgbarcode.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/bgrock.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/borders2FF.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/borders4FF.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/clematis.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/example01_basic.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example04_images.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example05_tables.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example08_lists.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example09_forms.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example20_justify.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example22_columns.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example23_orientation.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example26_RTL.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example30_arabic.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example32_indic.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example49_changelog.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm create mode 100644 inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/firefox-48.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/flowers-pattern.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/formsubmit.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/goto.gif create mode 100644 inc/3rdparty/libraries/mpdf/examples/img1.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/img2.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/img3.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/img4.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/img5.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/index.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/klematis.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/loading.gif create mode 100644 inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css create mode 100644 inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css create mode 100644 inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css create mode 100644 inc/3rdparty/libraries/mpdf/examples/quran282.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf create mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_logoheader2.pdf create mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf create mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf create mode 100644 inc/3rdparty/libraries/mpdf/examples/show_code.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/sunset.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/sunsetv.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/test.pdf create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.bmp create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.gif create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.php create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.svg create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.wmf create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger2.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger2.wmf create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger24trns.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px72dpi.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger8trns.gif create mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger8trns.png create mode 100644 inc/3rdparty/libraries/mpdf/examples/tigercmyk.jpg create mode 100644 inc/3rdparty/libraries/mpdf/examples/tux.svg create mode 100644 inc/3rdparty/libraries/mpdf/examples/windmill.jpg create mode 100644 inc/3rdparty/libraries/mpdf/font/ccourier.php create mode 100644 inc/3rdparty/libraries/mpdf/font/ccourierb.php create mode 100644 inc/3rdparty/libraries/mpdf/font/ccourierbi.php create mode 100644 inc/3rdparty/libraries/mpdf/font/ccourieri.php create mode 100644 inc/3rdparty/libraries/mpdf/font/chelvetica.php create mode 100644 inc/3rdparty/libraries/mpdf/font/chelveticab.php create mode 100644 inc/3rdparty/libraries/mpdf/font/chelveticabi.php create mode 100644 inc/3rdparty/libraries/mpdf/font/chelveticai.php create mode 100644 inc/3rdparty/libraries/mpdf/font/csymbol.php create mode 100644 inc/3rdparty/libraries/mpdf/font/ctimes.php create mode 100644 inc/3rdparty/libraries/mpdf/font/ctimesb.php create mode 100644 inc/3rdparty/libraries/mpdf/font/ctimesbi.php create mode 100644 inc/3rdparty/libraries/mpdf/font/ctimesi.php create mode 100644 inc/3rdparty/libraries/mpdf/font/czapfdingbats.php create mode 100644 inc/3rdparty/libraries/mpdf/graph.php create mode 100644 inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt create mode 100644 inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc create mode 100644 inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc create mode 100644 inc/3rdparty/libraries/mpdf/includes/CJKdata.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/functions.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/no_image.jpg create mode 100644 inc/3rdparty/libraries/mpdf/includes/out.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/subs_core.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php create mode 100644 inc/3rdparty/libraries/mpdf/includes/upperCase.php create mode 100644 inc/3rdparty/libraries/mpdf/mpdf.css create mode 100644 inc/3rdparty/libraries/mpdf/mpdf.php create mode 100644 inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php create mode 100644 inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php create mode 100644 inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php create mode 100644 inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php create mode 100644 inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/NOTES.txt create mode 100644 inc/3rdparty/libraries/mpdf/patterns/de.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/dictionary.txt create mode 100644 inc/3rdparty/libraries/mpdf/patterns/en.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/es.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/fi.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/fr.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/it.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/nl.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/pl.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/ru.php create mode 100644 inc/3rdparty/libraries/mpdf/patterns/sv.php create mode 100644 inc/3rdparty/libraries/mpdf/progbar.css create mode 100644 inc/3rdparty/libraries/mpdf/tmp/dummy.txt create mode 100644 inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Bold.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Oblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Bold.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-BoldOblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Oblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Bold.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Italic.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Bold.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-BoldItalic.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Italic.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/DejaVuinfo.txt create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/GNUFreeFontinfo.txt create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Bold.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Garuda-BoldOblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Oblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Garuda.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Bold.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Norasi-BoldOblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Oblique.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Norasi.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/Thai Fonts License.txt create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB Riyaz.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBd.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBdIt.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazIt.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB Zar Bd.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB Zar BdIt.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB Zar It.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XB Zar.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/XW Zar Font Info.txt create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_bn_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_gu_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_hi_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_kn_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_ml_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_or_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_pa_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_ta_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ind_te_1_001.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ocrb10.ttf create mode 100644 inc/3rdparty/libraries/mpdf/ttfonts/ocrbinfo.txt create mode 100644 inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt create mode 100644 inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php create mode 100644 inc/3rdparty/libraries/mpdf/utils/font_collections.php create mode 100644 inc/3rdparty/libraries/mpdf/utils/font_coverage.php create mode 100644 inc/3rdparty/libraries/mpdf/utils/font_dump.php create mode 100644 inc/3rdparty/libraries/mpdf/utils/font_names.php create mode 100644 inc/3rdparty/libraries/mpdf/utils/index.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/downloaders/FanFictionNet.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/readability/JSLikeHTMLElement.php create mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php create mode 100644 inc/3rdparty/libraries/send2kindle/api.php create mode 100644 inc/3rdparty/libraries/send2kindle/images.php create mode 100644 inc/3rdparty/libraries/send2kindle/io.php create mode 100644 inc/3rdparty/libraries/send2kindle/readability.php create mode 100644 inc/3rdparty/libraries/send2kindle/send.php create mode 100644 inc/3rdparty/libraries/send2kindle/storage.php create mode 100644 inc/3rdparty/libraries/send2kindle/utils.php diff --git a/inc/3rdparty/libraries/mpdf/CHANGELOG.txt b/inc/3rdparty/libraries/mpdf/CHANGELOG.txt new file mode 100644 index 000000000..2e6a5f8f5 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/CHANGELOG.txt @@ -0,0 +1,2895 @@ +=========================== +mPDF 5.7 +14/07/2013 +=========================== + +Files changed +------------- +config.php +mpdf.php +classes/tocontents.php +classes/cssmgr.php +classes/svg.php +includes/functions.php +includes/out.php +examples/formsubmit.php [Important - Security update] + +Updated Example Files in /examples/ +----------------------------------- +All example files +mpdfstyleA4.css + + +config.php +---------- +Removed: + $this->hyphenateTables + $this->hyphenate + $this->orphansAllowed +Edited: + "hyphens: manual" - Added to $this->defaultCSS + $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB' +New: + $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-'); + $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2); + $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2); + $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script) + + +Backwards compatability +----------------------- +Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences: +1) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever + you previously used $mpdf->hyphenate=true; +2) Table of Contents - appearance can now be controlled with CSS styles. By default, in mPDF 5.7, no styling is applied so you will get: + - No indent (previous default of 5mm) - ($tocindent is ignored) + - Any font, font-size set ($tocfont or $tocfontsize) will not work + - HyperLinks will appear with your default appearance - usually blue and underlined + - line spacing will be narrower (can use line-height or margin-top in CSS) + + +New features / Improvements +--------------------------- +Layout of Table of Content ToC now controlled using CSS styles +Text alignment on decimal mark inside tables +Automatically generated bookmarks and/or ToC entries from H1 - H6 tags +Support for unit of "rem" as size e.g. font-size: 1rem; +Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip +Text-outline controlled by CSS (compatible with CSS3 spec.) +Use of enhanced by custom CSS "outdent" property +Image HTML attributes added: max-height, max-width, min-height and min-width +Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9); +Lists - added support for "start" attribute in
    e.g.
      +Hyphenation controlled using CSS, consistent with CSS3 spec. +Line breaking improved to avoid breaks within words where HTML tags are used e.g. H20 +Line breaking in CJK scripts improved (and ability to force hanging punctuation) +Numerals in a CJK script are kept together +RTL improved support for phrases containing numerals and \ and / +Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A, + U+202C POP DIRECTIONAL FORMATTING (PDF) +Support for in HTML - uses it to SetBasePath for relative URLs. +HTML tag - added support for or - converted to a soft-hyphen +CSS now takes precedence over HTML attribute e.g. + + + +Added CSS support +----------------- +- max-height, max-width, min-height and min-width for images +- "hyphens: none|manual|auto" as per CSS3 spec. +- Decimal mark alignment e.g. text-align: "." center; +- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem +- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported) +- background-origin, background-size, background-clip are now supported everywhere except in tables +- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. +- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec) +- "z-index" can be used to utilise layers in the PDF document +- Custom CSS property added: "outdent" - opposite of indent + +The HTML elements and can now have CSS properties applied to them. + + +Bug fixes +--------- +- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E) +- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop +- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced +- Tables - Warning notice now given in Table footer or header if placed after and table spans page +- Columns - block with border-width wider than the length of the border line, line overflows +- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed +- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border. +- TOCpagebreakByArray() when called by function was not adding the pagebreak +- Border around block element - dashed not showing correctly (not resetting linewidth between different edges) +- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double +- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed +- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser + [Inadvertently improves borders in Columns because of change in LineCap] +- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed +- Page numbering - Page number total {nbpg} incorrect - e.g. showing decreasing numbers through document, when ToC present +- RTL numerals - incorrectly reversing a number followed by a comma +- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts +- TOCpagebreak - Not setting TOC-FOOTER +- TOCpagebreak - toc-even-header-name etc. not working +- Parsing some relative URLs incorrectly +- Textcircle - when moved to next page by "page-break-inside: avoid" +- Bookmarks will now work if jump more than one level e.g. 0,2,1 Inserts a new blank entry at level 1 +- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two / +- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1) +- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1) +- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1) +- fixed to allow color, font-size and font-family to be correctly used, avoid dots being moved to new page, and to work in RTL +- Table {colsum} summed figures in table header +- list-style-type (custom) colour not working +- toc-preHTML and toc-postHTML can now contain quotes + + + +=========================== +mPDF 5.6 +20/01/2013 +=========================== + +Files changed +------------- +mpdf.php +config.php +includes/functions.php +classes/meter.php +classes/directw.php + + +config.php changes +------------------ +$this->allowedCSStags - added HTML5 tags + textcircle AND +$this->outerblocktags - added HTML5 tags +$this->defaultCSS - added default CSS properties + + +New features / Improvements +--------------------------- +CSS support added for for min-height, min-width, max-height and max-width in + +Images embedded in CSS + improved to make it more robust, and + background: url(data:image... now added to work + +HTML5 tags supported +- as generic block elements:
      + + + +CSS visibility: printonly, screenonly +------------------------------------- +Roughly based on CSS + +Works on Block elements P, DIV etc, or Image +Cannot nest / layer. +Inner blocks/image with set visibility are ignored if already set on enclosing block element. +(Block element) does not work inside table (image does) +So 'visible' does nothing but is set as default +(NB Changes output to PDF version 1.5) +Incompatible with PDFA / PDFX + +'visibility' + Value: visible | hidden | (collapse | inherit) + Initial: visible + Applies to: all elements + Inherited: yes + +The 'visibility' property specifies whether the boxes generated by an element are rendered. +Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether). +Values have the following meanings: + +visible + The generated box is visible. +hidden + The generated box is invisible (fully transparent, nothing is drawn), but still affects layout. + Furthermore, descendants of the element will be visible if they have 'visibility: visible'. +collapse | inherit + NOT supported in mPDF + +CUSTOM: +printonly | screenonly + + +Added VISIBILITY function +$mpdf->SetVisibility('screenonly'); or 'printonly' 'visible' or 'hidden' +(NB Changes output to PDF version 1.5) +Incompatible with PDFA / PDFX + +CircularText +------------ +function CircularText($x, $y, $r, $text, $align='top', $kerning=120, $fontwidth=100) { +x: abscissa of center +y: ordinate of center +r: radius of circle +text: text to be printed +align: text alignment: top or bottom. Default value: top +kerning: spacing between letters in percentage. Default value: 120. Zero is not allowed. +fontwidth: width of letters in percentage. Default value: 100. Zero is not allowed + +- now uses Kerning between letters if useKerning == true (set manually see example) + +BookMark styling +---------------- +New configurable variable to control appearance of Bookmarks e.g. +$this->bookmarkStyles = array( + 0 => array('color'=> array(0,64,128), 'style'=>'B'), + 1 => array('color'=> array(128,0,0), 'style'=>''), + 2 => array('color'=> array(0,128,0), 'style'=>'I'), +); + +Column sums +----------- +(Also changed some preg_replace to str_replace to improve performance) +To use: just add {colsum} to any cells of the table footer +Add a number to specify a fixed number of decimal points e.g. will give you 123.40 +The width of the column will be calculated using the actual string {colsum} as a placeholder. +If you need the column to be wider, use underscores "_" to pad it e.g. {colsum2_____} + + +Spread tables +------------- +i.e. can split table (columns) across several pages width. +CSS
      Caption title here
      {colsum2}
      +Cannot use with: +$this->kwt - ignored +$this->table_rotate - ignored +$this->table_keep_together - ignored +$this->ColActive - cancels spread tables + +Messes up with: +$mpdf->forcePortraitHeaders = true; +$mpdf->forcePortraitMargins = true; +Problems with CJK, and RTL + +Will do no resizing of fonts at all. +Maximum width of column = page width i.e. will not split columns across pages - NB will keep colspan>1 on one page +If table row too high for page will die with error message. +Will override some specs for width if this creates conflicts +Recommended to specify absolute value of width on each column. + + + + +Bug fixes +========= +Dottab - if text after dottab is hyperlinked then dots are underlined + +page-break-before now respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed +Annotation() function called directly with colorarray(r,g,b) + +Added urldecode to _getImage to cope with ../name%20of%20image.jpg +Added urldecode AND htmlspecials_decode to href in link e.g. https://www.google.com/search?hl=en&q=mpdf&filename=name%20of%20file +[barcode.php] Allow   in C39 codes - will be changed to spaces + +
      inside a
      not calculating table width correctly + - leading to either upside down table or error width less than 1 character + +Depracated magic_quotes_runtime() in compress.php + +DIRECTW included twice in compress.php +FORMS mark up for compress.php corrected + +double backslashes not preserved inside
       or 
      +

      + +Select + followed by text +

      + + + +Input Radio + No      Yes +

      + + +Input Radio + No      Keep      Choice +

      + + +Input Text + +

      + +Input Password + +

      + + + Checkboxes
      + Not selected
      + Selected
      + Disabled +

      + + + + + + + + +'; + + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->WriteHTML($html); +$mpdf->Output(); +exit; + +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php b/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php new file mode 100644 index 000000000..b423e6bbb --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php @@ -0,0 +1,41 @@ +mPDF +

      Basic Example Using CSS Styles

      + +

      Heading 3

      +

      Heading 4

      +
      Heading 5
      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      +

      Heading using Small-Caps - supported from mPDF version 5

      +

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      +'; + + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('c'); + +$mpdf->SetDisplayMode('fullpage'); + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyleA4.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php b/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php new file mode 100644 index 000000000..ca1370278 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php @@ -0,0 +1,138 @@ + +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; +} +.radialgradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65; + margin: auto; +} +.rounded { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + border-radius: 2mm; + background-clip: border-box; +} +h4 { + font-family: sans; + font-weight: bold; + margin-top: 1em; + margin-bottom: 0.5em; +} +div { + padding:1em; + margin-bottom: 1em; + text-align:justify; +} +.example pre { + background-color: #d5d5d5; + margin: 1em 1cm; + padding: 0 0.3cm; +} + +pre { text-align:left } +pre.code { font-family: monospace } + + + + +

      mPDF

      +

      Backgrounds & Borders

      + +
      +

      Page background

      +
      +The background colour can be set by CSS styles on the <body> tag. This will set the background for the whole page. In this document, the background has been set as a gradient (see below). +
      + +

      Background Gradients

      +
      +Background can be set as a linear or radial gradient between two colours. The background has been set on this <div> element to a linear gradient. CSS style used here is:
      +background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
      +The four numbers are coordinates in the form (x1, y1, x2, y2) which defines the gradient vector. x and y are values from 0 to 1, where 1 represents the height or width of the box as it is printed. +
      +
      +Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. +
      +
      +The background has been set on this <div> element to a radial gradient. CSS style used here is:
      +background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;
      +The five numbers are coordinates in the form (x1, y1, x2, y2, r) where (x1, y1) is the starting point of the gradient with color1, +(x2, y2) is the center of the circle with color2, and r is the radius of the circle. +(x1, y1) should be inside the circle, otherwise some areas will not be defined. +
      +
      +Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. +
      + +

      Background Images

      +
      +The CSS properties background-image, background-position, and background-repeat are supported as defined in CSS2, as well as the shorthand form "background". +
      +The background has been set on this <div> element to:
      +background: transparent url(\'bg.jpg\') repeat fixed right top;
      +Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. +
      + +

      Rounded Borders

      +
      +Rounded corners to borders can be added using border-radius as defined in the draft spec. of CSS3.
      + +The two length values of the border-*-radius properties define the radii of a quarter ellipse that defines the shape of the corner of the outer border edge. +The first value is the horizontal radius.
      +border-top-left-radius: 55pt 25pt; 55pt is radius of curve from top end of left border starting to go round to the top.
      + +If the second length is omitted it is equal to the first (and the corner is thus a quarter circle). If either length is zero, the corner is square, not rounded.
      + +The border-radius shorthand sets all four border-*-radius properties. If values are given before and after a slash, then the values before the slash set the horizontal radius and the values after the slash set the vertical radius. If there is no slash, then the values set both radii equally. The four values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If bottom-left is omitted it is the same as top-right. If bottom-right is omitted it is the same as top-left. If top-right is omitted it is the same as top-left. +
      +
      +border-radius: 4em;
      + +would be equivalent to
      + +border-top-left-radius: 4em;
      +border-top-right-radius: 4em;
      +border-bottom-right-radius: 4em;
      +border-bottom-left-radius: 4em;

      +
      +and
      +border-radius: 2em 1em 4em / 0.5em 3em;
      +would be equivalent to
      +border-top-left-radius: 2em 0.5em;
      +border-top-right-radius: 1em 3em;
      +border-bottom-right-radius: 4em 0.5em;
      +border-bottom-left-radius: 1em 3em;
      +
      + +
      +'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; + +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example04_images.php b/inc/3rdparty/libraries/mpdf/examples/example04_images.php new file mode 100644 index 000000000..b98776347 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example04_images.php @@ -0,0 +1,207 @@ + +table { border-collapse: collapse; margin-top: 0; text-align: center; } +td { padding: 0.5em; } +h1 { margin-bottom: 0; }z + +

      mPDF Images

      + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      GIFJPGJPG (CMYK)PNGBMPWMFSVG

      Opacity 50%

      + +

      Alpha channel

      + + + + + + + + + +
      PNG
      +

      Transparency

      + + + + + + + + + + + + + + + + + + + + + + + + +
      PNG
      GIF
      WMF
      SVG
      + + +Images returned from tiger.php +
      +GIF +JPG +PNG +WMF +SVG +
      + + + + +

      Image Alignment

      +
      From mPDF version 4.2 onwards, in-line images can be individually aligned (vertically). Most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom. The default value for vertical alignment has been changed to baseline, and the default padding to 0, consistent with most browsers. +
      +
      + +
      +These images +are +top +aligned +
      +
      + +
      +These images +are +text-top +aligned +
      +
      + +
      +These images +are +bottom +aligned +
      +
      + +
      +These images +are +text-bottom +aligned +
      +
      + +
      +These images +are +baseline +aligned +
      +
      + +
      +These images +are +middle +aligned +
      +
      + +

      Mixed alignment

      +
      +baseline: +text-bottom: +middle: +bottom: +text-top: +top: +
      + +

      Image Border and padding

      +From mPDF v4.2, Image padding is supported as well as border and margin. + + +

      Rotated Images

      + + + + +
      + + + + +
      +       +       +       + +
      +  +  +  + +
      + +'; +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example05_tables.php b/inc/3rdparty/libraries/mpdf/examples/example05_tables.php new file mode 100644 index 000000000..997614a5d --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example05_tables.php @@ -0,0 +1,1017 @@ +mPDF +

      Tables

      +

      CSS Styles

      +

      The CSS properties for tables and cells is increased over that in html2fpdf. It includes recognition of THEAD, TFOOT and TH.
      See below for other facilities such as autosizing, and rotation.

      + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +This is data out of p +

      This is bold data p

      +This is bold data out of p
      +This is normal data after br +

      H3 in a table

      +
      This is data div
      +This is data out of div +
      This is data div (bold)
      +This is data out of div +

      More data

      This is large text

      Row 3

      This is long data

      This is data

      Row 4 <td> cell

      This is data

      This is data

      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      + +

      This table has padding-left and -right set to 5mm i.e. padding within the cells. Also border colour and style, font family and size are set by CSS.

      + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data

      Row 4 <td> cell

      This is data

      This is data

      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      + +

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      + + + + +
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      + + +

      Table Styles

      +

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      +

      bpmTopic Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      More data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      + +

       

      + +

      bpmTopicC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      bpmTopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      +

       

      +

      bpmTopnTailC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      TopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2Bottom right align +

      This is data. Can use

      +

      bold italic sub or sup text

      +
      +

      Bottom right align

      +
      +

      This is data. This cell

      +

      uses Cell Styles to set

      +

      the borders.

      +

      All borders are collapsible

      +

      in mPDF.

      +
      This is data
      Row header 4 +

      This is data p

      +
      More data
      Row header 5Also data merged and centered
      + +

       

      + +

      Lists in a Table

      + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2 +
        +
      1. Item 1
      2. +
      3. Item 2 +
          +
        1. Subitem of ordered list
        2. +
        3. Subitem 2 +
            +
          1. Level 3 subitem
          2. +
          3. Level 3 subitem
          4. +
          +
        4. +
        +
      4. +
      5. Item 3
      6. +
      7. Another Item
      8. +
      9. Subitem +
          +
        1. Level 3 subitem
        2. +
        +
      10. +
      11. Another Item
      12. +
      +
      +Unordered list: +
        +
      • Item 1
      • +
      • Item 2 +
          +
        • Subitem of unordered list
        • +
        • Subitem 2 +
            +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          +
        • +
        +
      • +
      • Item 3
      • +
      +
      +

       

      + + +

      Automatic Column Width

      + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      + + +

      ColSpan & Rowspan

      + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      Fusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      + + + +

      Table Header & Footer Rows

      +

      A table using a header row should repeat the header row across pages:

      +

      bpmTopicC Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second column header

      +
      Third column header
      Col and Row Footer +

      Second column footer

      +
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data +

      This is data

      +
      +

      Row header 3

      +
      +

      This is data

      +
      This is data
      Row header 4This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      +

       

      + +

      Autosizing Tables

      +

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      + + + +

      Rotating Tables

      +

      This is set to rotate -90 degrees (counterclockwise).

      + +
      Periodic Table
      +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      +

       

      + + +

      Rotated text in Table Cells

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      +

       

      + +'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyletables.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html,2); + +$mpdf->Output('mpdf.pdf','I'); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php b/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php new file mode 100644 index 000000000..e50764a92 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php @@ -0,0 +1,532 @@ + + + + +

      mPDF

      +

      Tables - Nested

      + + +
      +Text before table + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      + + +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      + + +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      + + +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      + + +
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      + +
      + +

      Text before table

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is data +Text before table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +

      Text after table

      + + +
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      + +
      C4
      Row DD2D3D4
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +
      This is data
      Row 4This is data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      + +
      C4
      Row DD2D3D4
      + +
      This is data
      + + +
      + +

       

      + + +
      +Text before table + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is data + +NO NESTING This is data
      Row 2This is dataThis is dataThis is data
      Row 3This is dataThis is dataThis is data
      Row 4This is dataThis is dataThis is data
      + +
      + + +'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyletables.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php b/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php new file mode 100644 index 000000000..a0cf4fcb8 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php @@ -0,0 +1,500 @@ + + + + + +

      mPDF

      +

      Tables - Borders

      +

      mPDF

      + +Border conflict resolution in tables with border-collapse set to "collapse". mPDF follows the rules set by CSS as well as possible, but as you can see, there is some difference in interpretation of the rules: + + + + + + + + + + + + + + + + + + + + + + + + + +
      mPDFInternet Explorer
      IE 7
      Firefox
      v 3.0.3
      + + + + + + + + + + + + + + + + + + + + + + +
      111
      111
      11
      111
      + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      111
      111
      11
      111
      + + +
      + + + + + + + + + + + + + + + + + + + + + +
      111
      111
      11
      111
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      mPDFmPDF < v3Internet Explorer
      IE 7
      Firefox
      v 3.0.3
      + + + + + + + + + + + + + + + + + + + + + + +
      111
      111
      11
      111
      + + + +
      + + + + + + + + + + + + + + + + + + + + + +
      111
      111
      11
      111
      + + +
      + + + + + + + + + + + + + + + + + + + + + +
      111
      111
      11
      111
      + + +
      + + + +

      mPDF

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Datadouble reddashed yellowdotted greenData
      Datahidden DatanoneData
      Dataridge bluenone none Data
      Datanone groove pinknone Data
      none inset graynone outset purplenone
      + +

      Firefox

      + + +
      + + +

      IE 7

      + + + + +
      mPDF
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Datadouble reddashed yellowdotted greenData
      Datahidden DatanoneData
      Dataridge bluenone none Data
      Datanone groove pinknone Data
      none inset graynone outset purplenone
      + +
      Firefox
      + + + + +
      IE 7
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      + + + + + + + + + + + + + + + + +
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      + + + + + + + + + + + + + + + + +
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      + + + + + + + + + + + + + + + + +
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      + + + + + + + + + + + + + + + + +
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      + + + + + + + + + + + + + + + + +
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      + + + +'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('en-GB-x','A4','','',10,10,10,10,6,3); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyletables.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example08_lists.php b/inc/3rdparty/libraries/mpdf/examples/example08_lists.php new file mode 100644 index 000000000..a716d8825 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example08_lists.php @@ -0,0 +1,137 @@ + +ol, ul { text-align: justify; +} + +.lista { list-style-type: upper-roman; } +.listb{ list-style-type: decimal; font-family: sans-serif; color: blue; font-weight: bold; font-style: italic; font-size: 19pt; } +.listc{ list-style-type: upper-alpha; text-indent: 25mm; } +.listd{ list-style-type: lower-alpha; color: teal; line-height: 2; } +.liste{ list-style-type: disc; } + + + +

      mPDF

      +

      Lists

      + +
      +
        +
      1. Text here lorem ipsum ibisque totum.
      2. +
      3. Text here lorem ipsum ibisque totum.
      4. +
      5. Text here lorem ipsum ibisque totum.
      6. +
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. +
      9. Text here lorem ipsum ibisque totum.
      10. +
      11. Text here lorem ipsum ibisque totum. +
          +
        1. Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum.
        6. +
        7. Text here lorem ipsum ibisque totum.
        8. +
        9. Text here lorem ipsum ibisque totum.
        10. +
        11. Text here lorem ipsum ibisque totum. +
            +
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum. +
          4. +
          5. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum. +
                +
              1. Text here lorem ipsum ibisque totum.
              2. +
              3. Text here lorem ipsum ibisque totum.
              4. +
              5. Text here lorem ipsum ibisque totum.
              6. +
              7. Text here lorem ipsum ibisque totum.
              8. +
              9. Text here lorem ipsum ibisque totum.
              10. +
              +
            10. +
            11. Text here lorem ipsum ibisque totum.
            12. +
            13. Text here lorem ipsum ibisque totum.
            14. +
            15. Text here lorem ipsum ibisque totum.
            16. +
            17. Text here lorem ipsum ibisque totum.
            18. +
            +
          6. +
          7. Text here lorem ipsum ibisque totum.
          8. +
          +
        12. +
        13. Text here lorem ipsum ibisque totum.
        14. +
        15. Text here lorem ipsum ibisque totum.
        16. +
        17. Text here lorem ipsum ibisque totum.
        18. +
        19. Text here lorem ipsum ibisque totum.
        20. +
        +
      12. +
      13. Text here lorem ipsum ibisque totum.
      14. +
      15. Text here lorem ipsum ibisque totum. +
          +
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum. +
            +
          1. Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum.
          4. +
          5. Text here lorem ipsum ibisque totum.
          6. +
          7. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          8. +
          9. Text here lorem ipsum ibisque totum.
          10. +
          11. Text here lorem ipsum ibisque totum.
          12. +
          13. Text here lorem ipsum ibisque totum. +
              +
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          14. +
          +
        6. +
        +
      16. +
      17. Text here lorem ipsum ibisque totum.
      18. +
      19. Text here lorem ipsum ibisque totum.
      20. +
      21. Text here lorem ipsum ibisque totum.
      22. +
      23. Text here lorem ipsum ibisque totum.
      24. +
      25. Text here lorem ipsum ibisque totum.
      26. +
      27. Text here lorem ipsum ibisque totum.
      28. +
      29. Text here lorem ipsum ibisque totum.
      30. +
      31. Text here lorem ipsum ibisque totum.
      32. +
      +
      +'; +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->WriteHTML($html); + +$mpdf->list_align_style = 'L'; // Determines alignment of numbers in numbered lists +$mpdf->list_number_suffix = ')'; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example09_forms.php b/inc/3rdparty/libraries/mpdf/examples/example09_forms.php new file mode 100644 index 000000000..0117a5beb --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example09_forms.php @@ -0,0 +1,204 @@ + + +Textarea + +

      + +Select + followed by text +

      + + + +Input Radio + No      Yes +

      + + +Input Radio + No      Keep      Choice +

      + + +Input Text + +

      + +Input Password + +

      + + + Checkboxes
      + Disabled
      + Selected +

      + +

      + + + +
      + +
      +
      + +Textarea + +

      + + + +Select + +

      + +Input Radio + No      Yes +

      + + +Input Radio + No      Keep      Choice +

      + + +Input Text + +
      + +Input Password + +

      + + Checkboxes
      + Disabled
      + Selected +

      + +

      + +
      + +
      +
      + + +
      + + + + + + + + + + + + + + + + + +
      Textarea
      Select
      Input Radio No      Yes
      Input Radio No      Keep      Choice
      Input Text
      + +
      + + + + + + + + + + + + + + +
      Checkbox
      Checkboxes
      Gardening
      Holidays
      Motoring
      Books Theatre
      Selected option Musicals
      Eating out Events
      +
      +
      +
      + + +
      + +Input Radio + No      Yes + +

      + + + +Input Radio + No      Keep      Choice + +

      + + +Input Text
      + +Input text:
      + +Password: +

      + +Checkboxes:
      + Checkboxes
      + Disabled
      + Selected +

      + + + + + +
      + +'; + +//============================================================== +//============================================================== +//============================================================== +if (isset($_REQUEST['html'])) { echo ''.$html.''; exit; } +if (isset($_REQUEST['source'])) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} +//============================================================== +//============================================================== +//============================================================== + +$mpdf=new mPDF('c'); + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyletables.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->SetColumns(2,'J'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php b/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php new file mode 100644 index 000000000..8a485e359 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php @@ -0,0 +1,103 @@ + +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; +} +h4 { + font-family: sans; + font-weight: bold; + margin-top: 1em; + margin-bottom: 0.5em; +} +div { + padding:1em; + margin-bottom: 1em; + text-align:justify; +} +.myfixed1 { position: absolute; + overflow: visible; + left: 0; + bottom: 0; + border: 1px solid #880000; + background-color: #FFEEDD; + background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5; + padding: 1.5em; + font-family:sans; + margin: 0; +} +.myfixed2 { position: fixed; + overflow: auto; + right: 0; + bottom: 0mm; + width: 65mm; + border: 1px solid #880000; + background-color: #FFEEDD; + background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5; + padding: 0.5em; + font-family:sans; + margin: 0; + rotate: 90; +} + + + +

      mPDF

      +

      Floating & Fixed Position elements

      + +

      CSS "Float"

      +
      +Block elements can be positioned alongside each other using the CSS property float: left or right. The clear property can also be used, set as left|right|both. Float is only supported on block elements (i.e. not SPAN etc.) and is not fully compliant with the CSS specification. +Float only works properly if a width is set for the float, otherwise the width is set to the maximum available (full width, or less if floats already set). +
      +Margin-right can still be set for a float:right and vice-versa. +
      +A block element next to a float has the padding adjusted so that content fits in the remaining width. Text next to a float should wrap correctly, but backgrounds and borders will overlap and/or lie under the floats in a mess. +
      +NB The width that is set defines the width of the content-box. So if you have two floats with width=50% and either of them has padding, margin or border, they will not fit together on the page. +
      + +
      +This is text in a <div> element that is set to float:right and width:28%. It also has an image with float:right inside. With this exception, you cannot nest elements with the float property set inside one another. +
      +
      +This is text in a <div> element that is set to float:left and width:54%. +
      + +
      +This is text that follows a <div> element that is set to clear:both. + +

      CSS "Position"

      +At the bottom of the page are two DIV elements with position:fixed and position:absolute set + +
      1 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      + +
      2 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      + + +'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; + +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php b/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php new file mode 100644 index 000000000..6fd990fb7 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php @@ -0,0 +1,81 @@ + +

      mPDF

      +

      Fixed-position block element with Autofit

      +
      Using the CSS properties position and overflow:auto it is possible to fit text to a single page:
      + +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      + +
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      + +
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      + + + + + +
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      +code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color +
      + +

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      + +

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      +

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      + +

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      + +

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      This tests underline and strikethrough when they are used together as they both use text-decoration

      + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + +

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      + + +'; + + + + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c'); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; + +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php b/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php new file mode 100644 index 000000000..44c5374dd --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + +
      Left header p {PAGENO}Right header
      +
      + + + + + + +
      Outer headerInner header p {PAGENO}
      +
      + + + + + + + + + +

      Introduction

      +
      Introduction
      +

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      + + + +

      Section 2

      +
      Section 2
      +

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      + + + +

      Section 3

      +
      Section 3
      +

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      + + + +

      Section 4

      +
      Section 4
      +

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      + + + + + +

      Section 5

      +
      Section 5
      +

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      + +'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); +$mpdf=new mPDF('c'); + +$mpdf->mirrorMargins = true; + +$mpdf->SetDisplayMode('fullpage','two'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php b/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php new file mode 100644 index 000000000..256a8a063 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php @@ -0,0 +1,94 @@ + +
      {PAGENO}
      + + +
      {PAGENO}
      +
      + +
      {PAGENO}
      +
      + +
      {PAGENO}
      +
      + + + + + + + +

      mPDF 1

      +

      Paged Media using CSS

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      + + +

      mPDF 2

      +

      Paged Media using CSS

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      + + +

      mPDF 3

      +

      Paged Media using CSS

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      + + +

      mPDF 4

      +

      Paged Media using CSS

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      + + +

      mPDF 5

      +

      Paged Media using CSS

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      + + +

      mPDF 6

      +

      Paged Media using CSS

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      + + +

      mPDF 7

      +

      Paged Media using CSS

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      + +'; +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',5,5,5,5,0,0); + +$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins (1 or 0) + +$mpdf->SetDisplayMode('fullpage','two'); + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstylePaged.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php b/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php new file mode 100644 index 000000000..540469838 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php @@ -0,0 +1,148 @@ +Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      "; +//============================================================== +//============================================================== +//============================================================== + + +$html = ' + + + + + +

      mPDF

      +

      Table of Contents & Bookmarks

      + + + + +'; + +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); + +$mpdf->mirrorMargins = 1; + +$mpdf->SetDisplayMode('fullpage','two'); + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyleA4.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + + +// Alternative ways to mark ToC entries and Bookmarks +// This will automatically generate entries from the

      tag +$mpdf->h2toc = array('H4'=>0); +$mpdf->h2bookmarks = array('H4'=>0); + +//============================================================== +// CONTENT +for ($j = 1; $j<7; $j++) { + if ($j==2) $mpdf->WriteHTML('',2); + if ($j==3) $mpdf->WriteHTML('',2); + if ($j==4) $mpdf->WriteHTML('',2); + if ($j==5) $mpdf->WriteHTML('',2); + if ($j==6) $mpdf->WriteHTML('
      ODD
      ',2); + for ($x = 1; $x<7; $x++) { + + // Alternative way to mark ToC entries and Bookmarks manually +// $mpdf->WriteHTML('

      Section '.$j.'.'.$x.'

      ',2); + + // Using Automatic generation from

      tag + $mpdf->WriteHTML('

      Section '.$j.'.'.$x.'

      ',2); + + $html = ''; + // Split $lorem into words + $words = preg_split('/([\s,\.]+)/',$lorem,-1,PREG_SPLIT_DELIM_CAPTURE); + foreach($words as $i => $e) { + if($i%2==0) { + $y = rand(1,10); // every tenth word + if (preg_match('/^[a-zA-Z]{4,99}$/',$e) && ($y > 8)) { + // If it is just a word use it as an index entry + $content = ucfirst(trim($e)); + $html .= ''; + $html .= ''.$e . ''; + } + else { $html .= $e; } + } + else { $html .= $e; } + } + $mpdf->WriteHTML($html); + } +} +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// INDEX +$html = ' +

      Index

      + +'; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php b/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php new file mode 100644 index 000000000..7943bde87 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php @@ -0,0 +1,60 @@ +mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins + +$mpdf->defaultheaderfontsize = 10; /* in pts */ +$mpdf->defaultheaderfontstyle = B; /* blank, B, I, or BI */ +$mpdf->defaultheaderline = 1; /* 1 to include line below header/above footer */ + +$mpdf->defaultfooterfontsize = 12; /* in pts */ +$mpdf->defaultfooterfontstyle = B; /* blank, B, I, or BI */ +$mpdf->defaultfooterline = 1; /* 1 to include line below header/above footer */ + + +$mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|My document'); +$mpdf->SetFooter('{PAGENO}'); /* defines footer for Odd and Even Pages - placed at Outer margin */ + +$mpdf->SetFooter(array( + 'L' => array( + 'content' => 'Text to go on the left', + 'font-family' => 'sans-serif', + 'font-style' => 'B', /* blank, B, I, or BI */ + 'font-size' => '10', /* in pts */ + ), + 'C' => array( + 'content' => '- {PAGENO} -', + 'font-family' => 'serif', + 'font-style' => 'BI', + 'font-size' => '18', /* gives default */ + ), + 'R' => array( + 'content' => 'Printed @ {DATE j-m-Y H:m}', + 'font-family' => 'monospace', + 'font-style' => '', + 'font-size' => '10', + ), + 'line' => 1, /* 1 to include line below header/above footer */ +), 'E' /* defines footer for Even Pages */ +); + + +$html = ' +

      mPDF

      +

      Headers & Footers Method 1

      +

      Odd / Right page

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +

      Even / Left page

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      +'; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php b/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php new file mode 100644 index 000000000..8ca966d69 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php @@ -0,0 +1,49 @@ +mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins + +$header = ' + + + + +
      Left header p {PAGENO}Right header
      +'; +$headerE = ' + + + + +
      Outer headerInner header p {PAGENO}
      +'; + +$footer = ''; +$footerE = ''; + + +$mpdf->SetHTMLHeader($header); +$mpdf->SetHTMLHeader($headerE,'E'); +$mpdf->SetHTMLFooter($footer); +$mpdf->SetHTMLFooter($footerE,'E'); + + +$html = ' +

      mPDF

      +

      Headers & Footers Method 2

      +

      Odd / Right page

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +

      Even / Left page

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      +'; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php b/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php new file mode 100644 index 000000000..b0d39d454 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php @@ -0,0 +1,58 @@ + + + + + + + +

      mPDF

      +

      Headers & Footers Method 3

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + +

      Headers & Footers Method 3

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + + +

      Headers & Footers

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      +'; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); + +$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php b/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php new file mode 100644 index 000000000..16e8bca99 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php @@ -0,0 +1,84 @@ + + + + + + + +

      mPDF

      +

      Headers & Footers Method 4

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + +

      Headers & Footers Method 4

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + + + +

      Headers & Footers Method 4

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      +'; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,47,47,10,10); + +$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php b/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php new file mode 100644 index 000000000..6c3ca9453 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php @@ -0,0 +1,59 @@ + +
       {PAGENO} 
      + + +
       {PAGENO} 
      +
      + + +'; + +//============================================================== +$html = ' +

      mPDF Page Sizes

      +

      Changing page (sheet) sizes within the document

      +'; +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4'); + +$mpdf->WriteHTML($hhtml); + +$mpdf->WriteHTML($html); +$mpdf->WriteHTML('

      This should print on an A4 (portrait) sheet

      '); + +$mpdf->WriteHTML(''); +$mpdf->WriteHTML($html); +$mpdf->WriteHTML('

      This page appears just after the ToC and should print on an A4 (landscape) sheet

      '); + +$mpdf->WriteHTML(''); +$mpdf->WriteHTML($html); +$mpdf->WriteHTML('

      This should print on an A5 (landscape) sheet

      '); + +$mpdf->WriteHTML(''); +$mpdf->WriteHTML($html); +$mpdf->WriteHTML('

      This should print on an Letter sheet

      '); + +$mpdf->WriteHTML(''); +$mpdf->WriteHTML($html); +$mpdf->WriteHTML('

      This should print on a sheet 150mm x 150mm

      '); + +$mpdf->WriteHTML(''); +$mpdf->WriteHTML($html); +$mpdf->WriteHTML('

      This should print on a sheet 11.69in x 8.27in = A4 landscape

      '); + + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example20_justify.php b/inc/3rdparty/libraries/mpdf/examples/example20_justify.php new file mode 100644 index 000000000..7e9f89622 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example20_justify.php @@ -0,0 +1,130 @@ +mPDF

      +

      Justification

      + +

      Tables

      +

      Text can be justified in table cells using in-line or stylesheet CSS. (Note that <p> tags are removed within cells along with any style definition or attributes.)

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      +

       

      + +

      Testing Justification with Long Words

      +

      http://www-950.ibm.com/software/globalization/icu/demo/converters?s=ALL&snd=4356&dnd=4356

      +
      Should not split
      +

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplit neque sit amet erat

      +

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend et verylongwordthatwontsplit neque sit amet erat

      + +
      Non-breaking Space &nbsp;

      The next example has a non-breaking space between eleifend and the very long word.

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      Nbsp will only work in fonts that have a glyph to represent the character i.e. not in the CJK languages nor some Unicode fonts.

      + + + +

      Testing Justification with mixed Styles

      +

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      +

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47 and then more text. +

      +

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text +

      +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text +

      + +

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      +

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47 then more text. +

      +

      +

      +Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text +

      +'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); + +$mpdf->SetDisplayMode('fullpage'); + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyletables.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + +// SPACING +$mpdf->WriteHTML("

      Spacing

      mPDF uses both letter- and word-spacing for text justification. The default is a mixture of both, set by the configurable values jSWord and jSmaxChar. (Only word spacing is used when cursive languages such as Arabic or Indic are detected.)

      "); + +$mpdf->jSWord = 0; // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character +$mpdf->jSmaxChar = 0; // Maximum spacing to allocate to character spacing. (0 = no maximum) +$mpdf->WriteHTML("
      Character spacing

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      "); + +// Back to default settings +$mpdf->jSWord = 0.4; +$mpdf->jSmaxChar = 2; +$mpdf->WriteHTML("
      Word spacing

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      "); + +$mpdf->WriteHTML("
      Mixed Character and Word spacing

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      "); + + + + +$mpdf->Output(); +exit; + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php b/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php new file mode 100644 index 000000000..e23cce8fb --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php @@ -0,0 +1,41 @@ +Little Women +

      Chapter One

      +

      Playing Pilgrims

      + +

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the `Mouse\' was the pet of the family.

      As young readers like to know `how people look\', we will take this moment to give them a little sketch of the four sisters, who sat knitting away in the twilight, while the December snow fell quietly without, and the fire crackled cheerfully within. It was a comfortable room, though the carpet was faded and the furniture very plain, for a good picture or two hung on the walls, books filled the recesses, chrysanthemums and Christmas roses bloomed in the windows, and a pleasant atmosphere of home peace pervaded it.

      Margaret, the eldest of the four, was sixteen, and very pretty, being plump and fair, with large eyes, plenty of soft brown hair, a sweet mouth, and white hands, of which she was rather vain. Fifteen-year-old Jo was very tall, thin, and brown, and reminded one of a colt, for she never seemed to know what to do with her long limbs, which were very much in her way. She had a decided mouth, a comical nose, and sharp, gray eyes, which appeared to see everything, and were by turns fierce, funny, or thoughtful. Her long, thick hair was her one beauty, but it was usually bundled into a net, to be out of her way. Round shoulders had Jo, big hands and feet, a fly-away look to her clothes, and the uncomfortable appearance of a girl who was rapidly shooting up into a woman and didn\'t like it. Elizabeth, or Beth, as everyone called her, was a rosy, smooth-haired, bright-eyed girl of thirteen, with a shy manner, a timid voice, and a peaceful expression which was seldom disturbed. Her father called her `Little Miss Tranquillity\', and the name suited her excellently, for she seemed to live in a happy world of her own, only venturing out to meet the few whom she trusted and loved. Amy, though the youngest, was a most important person, in her own opinion at least. A regular snow maiden, with blue eyes, and yellow hair curling on her shoulders, pale and slender, and always carrying herself like a young lady mindful of her manners. What the characters of the four sisters were we will leave to be found out.

      The clock struck six and, having swept up the hearth, Beth put a pair of slippers down to warm. Somehow the sight of the old shoes had a good effect upon the girls, for Mother was coming, and everyone brightened to welcome her. Meg stopped lecturing, and lighted the lamp, Amy got out of the easy chair without being asked, and Jo forgot how tired she was as she sat up to hold the slippers nearer to the blaze.

      They are quite worn out. Marmee must have a new pair.

      I thought I\'d get her some with my dollar, said Beth.

      No, I shall! cried Amy.

      I\'m the oldest, began Meg, but Jo cut in with a decided, I\'m the man of the family now Papa is away, and I shall provide the slippers, for he told me to take special care of Mother while he was gone.

      I\'ll tell you what we\'ll do, said Beth, let\'s each get her something for Christmas, and not get anything for ourselves.

      That\'s like you, dear! What will we get? exclaimed Jo.

      Everyone thought soberly for a minute, then Meg announced, as if the idea was suggested by the sight of her own pretty hands, I shall give her a nice pair of gloves.

      Army shoes, best to be had, cried Jo.

      Some handkerchiefs, all hemmed, said Beth.

      I\'ll get a little bottle of cologne. She likes it, and it won\'t cost much, so I\'ll have some left to buy my pencils, added Amy.

      How will we give the things? asked Meg.

      Put them on the table, and bring her in and see her open the bundles. Don\'t you remember how we used to do on our birthdays? answered Jo.

      I used to be so frightened when it was my turn to sit in the chair with the crown on, and see you all come marching round to give the presents, with a kiss. I liked the things and the kisses, but it was dreadful to have you sit looking at me while I opened the bundles, said Beth, who was toasting her face and the bread for tea at the same time.

      Let Marmee think we are getting things for ourselves, and then surprise her. We must go shopping tomorrow afternoon, Meg. There is so much to do about the play for Christmas night, said Jo, marching up and down, with her hands behind her back, and her nose in the air.

      I don\'t mean to act any more after this time. I\'m getting too old for such things, observed Meg, who was as much a child as ever about `dressing-up\' frolics.

      You won\'t stop, I know, as long as you can trail round in a white gown with your hair down, and wear gold-paper jewelry. You are the best actress we\'ve got, and there\'ll be an end of everything if you quit the boards, said Jo. We ought to rehearse tonight. Come here, Amy, and do the fainting scene, for you are as stiff as a poker in that.

      I can\'t help it. I never saw anyone faint, and I don\'t choose to make myself all black and blue, tumbling flat as you do. If I can go down easily, I\'ll drop. If I can\'t, I shall fall into a chair and be graceful. I don\'t care if Hugo does come at me with a pistol, returned Amy, who was not gifted with dramatic power, but was chosen because she was small enough to be borne out shrieking by the villain of the piece.

      Do it this way. Clasp your hands so, and stagger across the room, crying frantically, `Roderigo` Save me! Save me! and away went Jo, with a melodramatic scream which was truly thrilling.

      Amy followed, but she poked her hands out stiffly before her, and jerked herself along as if she went by machinery, and her Ow! was more suggestive of pins being run into her than of fear and anguish. Jo gave a despairing groan, and Meg laughed outright, while Beth let her bread burn as she watched the fun with interest.

      It\'s no use! Do the best you can when the time comes, and if the audience laughs, don\'t blame me. Come on, Meg.

      Then things went smoothly, for Don Pedro defied the world in a speech of two pages without a single break. Hagar, the witch, chanted an awful incantation over her kettleful of simmering toads, with weird effect. Roderigo rent his chains asunder manfully, and Hugo died in agonies of remorse and arsenic, with a wild, Ha! Ha!

      It\'s the best we\'ve had yet, said Meg, as the dead villain sat up and rubbed his elbows.

      I don\'t see how you can write and act such splendid things, Jo. You\'re a regular Shakespeare! exclaimed Beth, who firmly believed that her sisters were gifted with wonderful genius in all things.

      Not quite, replied Jo modestly. I do think THE WITCHES CURSE, an Operatic Tragedy is rather a nice thing, but I\'d like to try MacBETH, if we only had a trapdoor for Banquo. I always wanted to do the killing part. `Is that a dagger that I see before me? muttered Jo, rolling her eyes and clutching at the air, as she had seen a famous tragedian do.

      No, it\'s the toasting fork, with Mother\'s shoe on it instead of the bread. Beth\'s stage-struck! cried Meg, and the rehearsal ended in a general burst of laughter.

      Glad to find you so merry, my girls, said a cheery voice at the door, and actors and audience turned to welcome a tall, motherly lady with a `can I help you\' look about her which was truly delightful. She was not elegantly dressed, but a noble-looking woman, and the girls thought the gray cloak and unfashionable bonnet covered the most splendid mother in the world.

      Well, dearies, how have you got on today? There was so much to do, getting the boxes ready to go tomorrow, that I didn\'t come home to dinner. Has anyone called, Beth? How is your cold, Meg? Jo, you look tired to death. Come and kiss me, baby.

      While making these maternal inquiries Mrs. March got her wet things off, her warm slippers on, and sitting down in the easy chair, drew Amy to her lap, preparing to enjoy the happiest hour of her busy day. The girls flew about, trying to make things comfortable, each in her own way. Meg arranged the tea table, Jo brought wood and set chairs, dropping, over-turning, and clattering everything she touched. Beth trotted to and fro between parlor kitchen, quiet and busy, while Amy gave directions to everyone, as she sat with her hands folded.

      As they gathered about the table, Mrs. March said, with a particularly happy face, I\'ve got a treat for you after supper.

      A quick, bright smile went round like a streak of sunshine. Beth clapped her hands, regardless of the biscuit she held, and Jo tossed up her napkin, crying, A letter! A letter! Three cheers for Father!

      Yes, a nice long letter. He is well, and thinks he shall get through the cold season better than we feared. He sends all sorts of loving wishes for Christmas, and an especial message to you girls, said Mrs. March, patting her pocket as if she had got a treasure there.

      Hurry and get done! Don\'t stop to quirk your little finger and simper over your plate, Amy, cried Jo, choking on her tea and dropping her bread, butter side down, on the carpet in her haste to get at the treat.

      Beth ate no more, but crept away to sit in her shadowy corner and brood over the delight to come, till the others were ready.

      I think it was so splendid in Father to go as chaplain when he was too old to be drafted, and not strong enough for a soldier, said Meg warmly.

      Don\'t I wish I could go as a drummer, a vivan—what\'s its name? Or a nurse, so I could be near him and help him, exclaimed Jo, with a groan.

      It must be very disagreeable to sleep in a tent, and eat all sorts of bad-tasting things, and drink out of a tin mug, sighed Amy.

      When will he come home, Marmee? asked Beth, with a little quiver in her voice.

      Not for many months, dear, unless he is sick. He will stay and do his work faithfully as long as he can, and we won\'t ask for him back a minute sooner than he can be spared. Now come and hear the letter.

      They all drew to the fire, Mother in the big chair with Beth at her feet, Meg and Amy perched on either arm of the chair, and Jo leaning on the back, where no one would see any sign of emotion if the letter should happen to be touching. Very few letters were written in those hard times that were not touching, especially those which fathers sent home. In this one little was said of the hardships endured, the dangers faced, or the homesickness conquered. It was a cheerful, hopeful letter, full of lively descriptions of camp life, marches, and military news, and only at the end did the writer\'s heart over-flow with fatherly love and longing for the little girls at home.

      Give them all of my dear love and a kiss. Tell them I think of them by day, pray for them by night, and find my best comfort in their affection at all times. A year seems very long to wait before I see them, but remind them that while we wait we may all work, so that these hard days need not be wasted. I know they will remember all I said to them, that they will be loving children to you, will do their duty faithfully, fight their bosom enemies bravely, and conquer themselves so beautifully that when I come back to them I may be fonder and prouder than ever of my little women.

      Everybody sniffed when they came to that part. Jo wasn\'t ashamed of the great tear that dropped off the end of her nose, and Amy never minded the rumpling of her curls as she hid her face on her mother\'s shoulder and sobbed out, I am a selfish girl! But I\'ll truly try to be better, so he mayn\'t be disappointed in me by-and-by.

      We all will, cried Meg. I think too much of my looks and hate to work, but won\'t any more, if I can help it.

      I\'ll try and be what he loves to call me, `a little woman\' and not be rough and wild, but do my duty here instead of wanting to be somewhere else, said Jo, thinking that keeping her temper at home was a much harder task than facing a rebel or two down South.

      Beth said nothing, but wiped away her tears with the blue army sock and began to knit with all her might, losing no time in doing the duty that lay nearest her, while she resolved in her quiet little soul to be all that Father hoped to find her when the year brought round the happy coming home.

      Mrs. March broke the silence that followed Jo\'s words, by saying in her cheery voice, Do you remember how you used to play Pilgrims Progress when you were little things? Nothing delighted you more than to have me tie my piece bags on your backs for burdens, give you hats and sticks and rolls of paper, and let you travel through the house from the cellar, which was the City of Destruction, up, up, to the housetop, where you had all the lovely things you could collect to make a Celestial City.

      What fun it was, especially going by the lions, fighting Apollyon, and passing through the valley where the hob-goblins were, said Jo.

      I liked the place where the bundles fell off and tumbled downstairs, said Meg.

      I don\'t remember much about it, except that I was afraid of the cellar and the dark entry, and always liked the cake and milk we had up at the top. If I wasn\'t too old for such things, I\'d rather like to play it over again, said Amy, who began to talk of renouncing childish things at the mature age of twelve.

      We never are too old for this, my dear, because it is a play we are playing all the time in one way or another. Out burdens are here, our road is before us, and the longing for goodness and happiness is the guide that leads us through many troubles and mistakes to the peace which is a true Celestial City. Now, my little pilgrims, suppose you begin again, not in play, but in earnest, and see how far on you can get before Father comes home.

      Really, Mother? Where are our bundles? asked Amy, who was a very literal young lady.

      Each of you told what your burden was just now, except Beth. I rather think she hasn\'t got any, said her mother.

      Yes, I have. Mine is dishes and dusters, and envying girls with nice pianos, and being afraid of people.

      Beth\'s bundle was such a funny one that everybody wanted to laugh, but nobody did, for it would have hurt her feelings very much.

      Let us do it, said Meg thoughtfully. It is only another name for trying to be good, and the story may help us, for though we do want to be good, it\'s hard work and we forget, and don\'t do our best.

      We were in the Slough of Despond tonight, and Mother came and pulled us out as Help did in the book. We ought to have our roll of directions, like Christian. What shall we do about that? asked Jo, delighted with the fancy which lent a little romance to the very dull task of doing her duty.

      Look under your pillows Christmas morning, and you will find your guidebook, replied Mrs. March.

      They talked over the new plan while old Hannah cleared the table, then out came the four little work baskets, and the needles flew as the girls made sheets for Aunt March. It was uninteresting sewing, but tonight no one grumbled. They adopted Jo\'s plan of dividing the long seams into four parts, and calling the quarters Europe, Asia, Africa, and America, and in that way got on capitally, especially when they talked about the different countries as they stitched their way through them.

      At nine they stopped work, and sang, as usual, before they went to bed. No one but Beth could get much music out of the old piano, but she had a way of softly touching the yellow keys and making a pleasant accompaniment to the simple songs they sang. Meg had a voice like a flute, and she and her mother led the little choir. Amy chirped like a cricket, and Jo wandered through the airs at her own sweet will, always coming out at the wrong place with a croak or a quaver that spoiled the most pensive tune. They had always done this from the time they could lisp . . . Crinkle, crinkle, \'ittle \'tar, and it had become a household custom,, for the mother was a born singer. The first sound in the morning was her voice as she went about the house singing like a lark, and the last sound at night was the same cheery sound, for the girls never grew too old for that familiar lullaby.'; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('','A4','','',32,25,27,25,16,13); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->hyphenate = 2; // removed in 5.6.07 + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyleA4.css'); +$stylesheet .= ' +p { hyphens: auto; } +'; +$mpdf->WriteHTML($stylesheet,1); + +$mpdf->WriteHTML('

      Automatic Hyphenation

      '); + +$mpdf->SetColumns(4,'J'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example22_columns.php b/inc/3rdparty/libraries/mpdf/examples/example22_columns.php new file mode 100644 index 000000000..6b9aac531 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example22_columns.php @@ -0,0 +1,80 @@ +mPDF +

      Columns

      +'; +//============================================================== + +$loremH = "

      Lectus facilisis

      +

      Sed auctor viverra diam. In lacinia lectus.

      +

      Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum. In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.

      +
      Nunc tincidunt
      +

      Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.

      +

      Pede quis ante tincidunt blandit. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante.

      Suspendisse potenti. Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend.Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.

      Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.
      Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. Nullam ultrices leo volutpat magna. Mauris blandit purus nec turpis. Curabitur nunc. Aliquam condimentum eleifend32 lectus. Praesent vitae nibh et libero ullamcorper scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.

      + +
      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. +
      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      + Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      +

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +"; + + + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); + +$mpdf->SetDisplayMode('fullpage'); + +$stylesheet = file_get_contents('mpdfstyleA4.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +// Bullets in columns are probably best not indented +$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list + +$mpdf->max_colH_correction = 1.1; + + + $mpdf->WriteHTML($html,2); + $mpdf->WriteHTML($loremH,2); + + // consider reducing lineheight when using columns - especially if vAligned justify + $mpdf->SetDefaultBodyCSS('line-height', 1.2); + + $mpdf->SetColumns(3,'J'); + $mpdf->WriteHTML($loremH,2); + + $mpdf->SetColumns(0); + $mpdf->WriteHTML('
      '); + + + $mpdf->SetColumns(2,'J'); + $mpdf->WriteHTML($loremH,2); + $mpdf->WriteHTML('
      '); + $mpdf->SetColumns(0); + $mpdf->WriteHTML('
      '); + + $mpdf->SetColumns(3,'J'); + $mpdf->WriteHTML($loremH,2); + + $mpdf->SetColumns(0); + $mpdf->WriteHTML('
      '); + $mpdf->SetColumns(2,'J'); + $mpdf->WriteHTML($loremH,2); + + + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php b/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php new file mode 100644 index 000000000..7049d7e19 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php @@ -0,0 +1,132 @@ +mPDF +

      Page Orientation

      + +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      +

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      +

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      + +
      + +'; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + + +$mpdf=new mPDF('c','A4','','',42,15,67,67,20,15); + +$mpdf->SetDisplayMode('fullpage','two'); + +$mpdf->mirrorMargins = 1; + + +$header = ' + + + + +
      Left header p {PAGENO}Right header
      +'; +$headerE = ' + + + + +
      Outer headerInner header p {PAGENO}
      +'; +$longfooter = ' + + + + +
      Left footer p {PAGENO}Right footer
      +'; +$longfooterE = ' + + + + +
      Outer footerInner footer p {PAGENO}
      +'; + +$footer = '
      {DATE j-m-Y} » {PAGENO} » My document
      '; +$footerE = '
      Even page footer - {PAGENO} -
      '; + +$shortheader = '
      {DATE j-m-Y} » {PAGENO} » My document
      '; +$shortheaderE = '
      Even page header - {PAGENO} -
      '; + + +$mpdf->SetHTMLHeader($header); +$mpdf->SetHTMLHeader($headerE,'E'); +$mpdf->setFooter('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ; + + +$mpdf->WriteHTML($html); + + +$mpdf->setHeader(); // Clear headers before adding page +$mpdf->AddPage('L','','','','',25,25,55,45,18,12); + +$mpdf->SetHTMLHeader($shortheader,'',true); // New parameter in v1.4 to add the header to the new page +$mpdf->SetHTMLHeader($shortheaderE,'E',true); +$mpdf->SetHTMLFooter($longfooter); +$mpdf->SetHTMLFooter($longfooterE,'E'); + + +$mpdf->WriteHTML($html); +$mpdf->WriteHTML($html); +$mpdf->WriteHTML($html); + + + +$mpdf->setHeader('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ; +$mpdf->SetHTMLFooter($footer); +$mpdf->SetHTMLFooter($footerE,'E'); + + +$mpdf->WriteHTML($html); +$mpdf->WriteHTML($html); + + +$mpdf->setHeader(); // Clear headers before adding page +$mpdf->AddPage('','','','','',42,15,67,67,20,15); // Default is Portrait (because that was the document default) + + +$mpdf->SetHTMLHeader($shortheader,'',true); // New parameter in v1.4 to add the header to the new page +$mpdf->SetHTMLHeader($shortheaderE,'E',true); +$mpdf->SetHTMLFooter($longfooter); +$mpdf->SetHTMLFooter($longfooterE,'E'); + + +$mpdf->WriteHTML($html); +$mpdf->WriteHTML($html); + + +$mpdf->SetHTMLHeader($header); +$mpdf->SetHTMLHeader($headerE,'E'); +$mpdf->SetHTMLFooter($footer); +$mpdf->SetHTMLFooter($footerE,'E'); + + +$mpdf->WriteHTML($html); +$mpdf->WriteHTML($html); + + +$mpdf->Output('mpdf.pdf','I'); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php b/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php new file mode 100644 index 000000000..1cbbfdad8 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php @@ -0,0 +1,200 @@ +mPDF +

      Page Orientation

      + +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      +

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      +

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + +'; + +$htmlL = ' +
      Table in Landscape
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      TypeDetailsNotes
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti. Fusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti. Fusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti. Fusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti. Fusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti. Fusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      +'; + +//============================================================== + +$loremH = "

      Lectus facilisis

      +

      Sed auctor viverra diam. In lacinia lectus.

      +

      Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum. In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.

      +
      Nunc tincidunt
      +

      Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.

      +

      Pede quis ante tincidunt blandit. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante.

      Suspendisse potenti. Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend. Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.

      Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.
      Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. Nullam ultrices leo volutpat magna. Mauris blandit purus nec turpis. Curabitur nunc. Aliquam condimentum eleifend32 lectus. Praesent vitae nibh et libero ullamcorper scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.

      + +
      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      +"; + +//============================================================== +$header = ' + + + + +
      Left header p {PAGENO}Right header
      +'; +$headerE = ' + + + + +
      Outer headerInner header p {PAGENO}
      +'; +$header = '
      {DATE j-m-Y} » {PAGENO} » My document
      My document
      See documentation manual
      My document
      '; +$headerE = '
      Even page footer - {PAGENO} -
      My document
      My document
      My document
      '; +$footer = '
      {DATE j-m-Y} » {PAGENO} » My document
      My document
      See documentation manual
      My document
      '; +$footerE = '
      Even page footer - {PAGENO} -
      My document
      My document
      My document
      '; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + + +$mpdf=new mPDF('c','A4','','',42,15,57,57,20,17); + +$mpdf->displayDefaultOrientation = true; + +$mpdf->forcePortraitHeaders = true; +$mpdf->forcePortraitMargins = true; + +$mpdf->SetDisplayMode('fullpage','two'); + +$mpdf->mirrorMargins = 1; + +$stylesheet = file_get_contents('mpdfstyletables.css'); +$mpdf->WriteHTML($stylesheet,1); + +$mpdf->SetHTMLHeader($header); +$mpdf->SetHTMLHeader($headerE,'E'); +$mpdf->SetHTMLFooter($footer); +$mpdf->SetHTMLFooter($footerE,'E'); + +$mpdf->WriteHTML($html); + +$mpdf->AddPage('L'); + +$mpdf->WriteHTML($htmlL); +$mpdf->WriteHTML($htmlL); + +// Columns +$mpdf->AddPage('L'); +$mpdf->SetColumns(3,'J'); +$mpdf->WriteHTML($loremH); + +$mpdf->SetColumns(0); +$mpdf->WriteHTML('
      '); + + +$mpdf->SetColumns(2,'J'); +$mpdf->WriteHTML($loremH); +$mpdf->WriteHTML('
      '); +$mpdf->SetColumns(0); + +$mpdf->AddPage('L'); + +$mpdf->WriteHTML($htmlL); +$mpdf->WriteHTML($htmlL); + +$mpdf->AddPage(); + +$mpdf->WriteHTML($html); +$mpdf->WriteHTML($html); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php b/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php new file mode 100644 index 000000000..631024076 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php @@ -0,0 +1,316 @@ +mPDF +

      RTL Languages

      + +

      English

      +

      Please note that I do not understand any of the scripts below. The texts are borrowed from News websites, and I have used words and bits of phrases just to demonstrate the program.

      + +

      Hebrew (pangram)

      +

      \xd7\x93\xd7\x92 \xd7\xa1\xd7\xa7\xd7\xa8\xd7\x9f \xd7\xa9\xd7\x98 \xd7\x91\xd7\x99\xd7\x9d \xd7\x9e\xd7\x90\xd7\x95\xd7\x9b\xd7\x96\xd7\x91 \xd7\x95\xd7\x9c\xd7\xa4\xd7\xaa\xd7\xa2 \xd7\x9e\xd7\xa6\xd7\x90 \xd7\x97\xd7\x91\xd7\xa8\xd7\x94

      + +

      \xd7\x90\xd7\x95 \xd7\x94\xd7\xa0\xd7\xa1\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9d, \xd7\x9c\xd7\x91\xd7\x95\xd7\x90 \xd7\x9c\xd7\xa7\xd7\x97\xd7\xaa \xd7\x9c\xd7\x95 \xd7\x92\xd7\x95\xd7\x99 \xd7\x9e\xd7\xa7\xd7\xa8\xd7\x91 \xd7\x92\xd7\x95\xd7\x99, \xd7\x91\xd7\x9e\xd7\xa1\xd7\xaa \xd7\x91\xd7\x90\xd7\xaa\xd7\xaa \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa4\xd7\xaa\xd7\x99\xd7\x9d \xd7\x95\xd7\x91\xd7\x9e\xd7\x9c\xd7\x97\xd7\x9e\xd7\x94 \xd7\x95\xd7\x91\xd7\x99\xd7\x93 \xd7\x97\xd7\x96\xd7\xa7\xd7\x94 \xd7\x95\xd7\x91\xd7\x96\xd7\xa8\xd7\x95\xd7\xa2 \xd7\xa0\xd7\x98\xd7\x95\xd7\x99\xd7\x94, \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa8\xd7\x90\xd7\x99\xd7\x9d \xd7\x92\xd7\x93\xd7\x9c\xd7\x99\xd7\x9d: \xd7\x9b\xd7\x9b\xd7\x9c \xd7\x90\xd7\xa9\xd7\xa8-\xd7\xa2\xd7\xa9\xd7\x94 \xd7\x9c\xd7\x9b\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9b\xd7\x9d, \xd7\x91\xd7\x9e\xd7\xa6\xd7\xa8\xd7\x99\xd7\x9d--\xd7\x9c\xd7\xa2\xd7\x99\xd7\xa0\xd7\x99\xd7\x9a

      + +

      \xd7\x9c\xd7\x9b\xd7\x9f \xd7\x97\xd7\x9b\xd7\x95 \xd7\x9c\xd7\x99 \xd7\xa0\xd7\x90\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x9c\xd7\x99\xd7\x95\xd7\x9d \xd7\xa7\xd7\x95\xd7\x9e\xd7\x99 \xd7\x9c\xd7\xa2\xd7\x93, \xd7\x9b\xd7\x99 \xd7\x9e\xd7\xa9\xd7\xa4\xd7\x98\xd7\x99 \xd7\x9c\xd7\x90\xd7\xa1\xd7\xa3 \xd7\x92\xd7\x95\xd7\x99\xd7\x9d \xd7\x9c\xd7\xa7\xd7\x91\xd7\xa6\xd7\x99 \xd7\x9e\xd7\x9e\xd7\x9c\xd7\x9b\xd7\x95\xd7\xaa, \xd7\x9c\xd7\xa9\xd7\xa4\xd7\x9a \xd7\xa2\xd7\x9c\xd7\x99\xd7\x94\xd7\x9d \xd7\x96\xd7\xa2\xd7\x9e\xd7\x99 \xd7\x9b\xd7\x9c \xd7\x97\xd7\xa8\xd7\x95\xd7\x9f \xd7\x90\xd7\xa4\xd7\x99, \xd7\x9b\xd7\x99 \xd7\x91\xd7\x90\xd7\xa9 \xd7\xa7\xd7\xa0\xd7\x90\xd7\xaa\xd7\x99 \xd7\xaa\xd7\x90\xd7\x9b\xd7\x9c \xd7\x9b\xd7\x9c \xd7\x94\xd7\x90\xd7\xa8\xd7\xa5

      + +

      \xd7\xa9\xd7\xa4\xd7\x9f \xd7\x90\xd7\x9b\xd7\x9c \xd7\xa7\xd7\xa6\xd7\xaa \xd7\x92\xd7\x96\xd7\xa8 \xd7\x91\xd7\x98\xd7\xa2\xd7\x9d \xd7\x97\xd7\xa1\xd7\x94, \xd7\x95\xd7\x93\xd7\x99.

      + + + + + +

      Arabic

      +

      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 + \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.

      + +

      \xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f

      + +

      \xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 "\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9" \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 "\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86\xd8\xaa\xd9\x87\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xaf\xd9\x8a\xd8\xaf\xd8\xa9" \xd9\x84\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab" \xd9\x88\xd8\xa7\xd8\xb5\xd9\x81\xd8\xa9 \xd8\xa7\xd9\x8a\xd8\xa7\xd9\x87 \xd8\xa8\xd9\x80"\xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81" \xd8\xa7\xd9\x84\xd8\xb0\xd9\x8a \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x87\xd8\xaf\xd9\x81 "\xd9\x85\xd8\xaf\xd9\x86\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x85\xd8\xb3\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd9\x86".

      + +

      \xd9\x88\xd8\xa7\xd8\xb6\xd8\xa7\xd9\x81\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd9\x87\xd8\xa7: "\xd9\x85\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xb3\xd9\x81 \xd8\xa7\xd9\x86 \xd9\x8a\xd8\xa3\xd8\xaa\xd9\x8a \xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab \xd8\xa8\xd9\x8a\xd9\x86\xd9\x85\xd8\xa7 \xd8\xaa\xd8\xa8\xd8\xb0\xd9\x84 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd9\x84\xd8\xaa\xd8\xae\xd8\xb7\xd9\x8a \xd8\xa7\xd9\x84\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa7\xd8\xae\xd9\x84\xd9\x8a\xd8\xa9".

      + +

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84 \xd8\xa7\xd8\xad\xd8\xaa\xd9\x88\xd8\xa7\xd8\xa1 \xd9\x85\xd8\xb8\xd8\xa7\xd9\x87\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd9\x85\xd8\xa8\xd8\xb1\xd8\xb1 \xd9\x84\xd9\x87\xd8\xa7 \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd8\xaa\xd9\x81\xd9\x8a\xd8\xaf \xd9\x85\xd8\xb5\xd8\xa7\xd9\x84\xd8\xad \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb9\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xb7\xd9\x88\xd9\x8a\xd9\x84".

      + +

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84

      +\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84

      + + +

      \xd9\x83\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd9\x81\xd8\xa7\xd8\xb1\xd9\x88 \xd8\xaf\xd9\x8a \xd8\xb3\xd9\x88\xd8\xaa\xd9\x88 \xd9\x85\xd8\xa8\xd8\xb9\xd9\x88\xd8\xab \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x85 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xad\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb1\xd9\x82 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd8\xb3\xd8\xb7 \xd8\xa7\xd9\x84\xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa9 \xd9\x88\xd9\x82\xd8\xa7\xd9\x84 "\xd8\xa7\xd9\x86\xd9\x87 \xd9\x83\xd8\xa7\xd9\x86 \xd9\x87\xd8\xac\xd9\x88\xd9\x85\xd8\xa7 \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd8\xb4\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xb9\xd8\xa7\xd8\xaf\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x83\xd8\xa7\xd9\x86\xd9\x88\xd8\xa7 \xd9\x8a\xd9\x82\xd9\x88\xd9\x85\xd9\x88\xd9\x86 \xd8\xa8\xd9\x86\xd8\xb4\xd8\xa7\xd8\xb7\xd9\x87\xd9\x85 \xd8\xa7\xd9\x84\xd9\x8a\xd9\x88\xd9\x85\xd9\x8a \xd9\x88\xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x85\xd8\xb1 \xd9\x84\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd8\xaa\xd8\xa8\xd8\xb1\xd9\x8a\xd8\xb1\xd9\x87".

      + +

      Farsi / Persian (fa)

      +

      \xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.

      + +

      \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4\xd8\x8c \xd8\xaf\xd8\xb1 \xda\x86\xd9\x87\xd8\xa7\xd8\xb1\xd9\x85\xdb\x8c\xd9\x86 \xd8\xb3\xd8\xa7\xd9\x84\xda\xaf\xd8\xb1\xd8\xaf \xd8\xa7\xd8\xb4\xd8\xba\xd8\xa7\xd9\x84 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd9\x85\xdb\x8c \xda\xaf\xd9\x88\xdb\x8c\xd8\xaf \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xb1\xd8\xa7\xd8\xaa\xda\x98\xdb\x8c \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x82\xd8\xb1\xd8\xa7\xd8\xb1 \xd9\x86\xdb\x8c\xd8\xb1\xd9\x88\xd9\x87\xd8\xa7\xdb\x8c \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7\xdb\x8c\xdb\x8c \xd8\xa8\xdb\x8c\xd8\xb4\xd8\xaa\xd8\xb1\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xa8\xd8\xba\xd8\xaf\xd8\xa7\xd8\xaf\xd8\x8c \xd9\x85\xd8\xaf\xd8\xaa\xdb\x8c \xd8\xb7\xd9\x88\xd9\x84 \xd8\xae\xd9\x88\xd8\xa7\xd9\x87\xd8\xaf \xda\xa9\xd8\xb4\xdb\x8c\xd8\xaf.

      + +

      \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7 \xd9\x88\xdb\x8c\xd8\xb2\xd8\xa7\xdb\x8c \xd8\xb1\xd8\xa6\xdb\x8c\xd8\xb3 \xd8\xac\xd9\x85\xd9\x87\xd9\x88\xd8\xb1 \xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd9\x85\xd9\x86\xd8\xb8\xd9\x88\xd8\xb1 \xd8\xad\xd8\xb6\xd9\x88\xd8\xb1 \xd9\x88\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xac\xd9\x84\xd8\xb3\xd9\x87 \xd8\xb1\xd8\xa7\xdb\x8c \xda\xaf\xdb\x8c\xd8\xb1\xdb\x8c \xd8\xb4\xd9\x88\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xa7\xd9\x85\xd9\x86\xdb\x8c\xd8\xaa \xd8\xa8\xd8\xb1\xd8\xa7\xdb\x8c \xd9\x82\xd8\xb7\xd8\xb9\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd8\xb9\xd9\x84\xdb\x8c\xd9\x87 \xd8\xa7\xdb\x8c\xd9\x86 \xda\xa9\xd8\xb4\xd9\x88\xd8\xb1 \xd8\xb5\xd8\xa7\xd8\xaf\xd8\xb1 \xda\xa9\xd8\xb1\xd8\xaf.

      + + +

      Urdu

      +

      \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94

      + +

      \xda\x86\xdb\x8c\xd9\x81 \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xda\xa9\xdb\x8c \xd8\xb3\xd8\xb1\xda\xaf\xd8\xb1\xd9\x85\xdb\x8c\xd8\xa7\xda\xba \xd9\x85\xd8\xad\xd8\xaf\xd9\x88\xd8\xaf \xda\xa9\xd8\xb1\xd9\x86\xdb\x92 \xd8\xa7\xd9\x88\xd8\xb1 \xd9\xbe\xd9\x88\xd9\x84\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb9\xdb\x8c\xd9\x86\xd8\xa7\xd8\xaa\xdb\x8c \xda\xa9\xdb\x92 \xd8\xad\xda\xa9\xd9\x85 \xd9\x86\xd8\xa7\xd9\x85\xdb\x92 \xd9\xbe\xd8\xb1 \xd8\xaf\xd8\xb3\xd8\xaa\xd8\xae\xd8\xb7 \xda\xa9\xd8\xb1\xda\xa9\xdb\x92 \xd8\xba\xd9\x84\xd8\xb7 \xda\xa9\xdb\x8c\xd8\xa7: \xd8\xac\xd9\x86\xd8\xb1\xd9\x84 \xd9\x85\xd8\xb4\xd8\xb1\xd9\x81

      + +

      Pashto (ps)

      +

      \xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.

      + +

      \xd9\x87 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xda\xa9\xdb\x90 \xd9\x8a\xd9\x88\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd9\x86\xd8\xb8\xd8\xb1 \xd8\xb4\xd9\x85\xdb\x90\xd8\xb1\xd9\x86\xd9\x87 \xda\x9a\xd9\x8a\xd9\x8a \xda\x86\xdb\x90 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\xa7\xd9\x86 \xd9\xbe\xd9\x87 \xd8\xb2\xd9\x8a\xd8\xa7\xd8\xaa\xdb\x90\xd8\xaf\xd9\x88\xd9\x86\xda\xa9\xd9\x8a \xd8\xaa\xd9\x88\xda\xaf\xd9\x87 \xd8\xaf \xd8\xad\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\xd9\x88 \xd9\xbe\xd9\x87 \xd8\xa7\xda\x93\xd9\x87 \xd8\xa8\xd8\xaf\xd8\xa8\xd9\x8a\xd9\x86\xd9\x87 \xd8\xaf\xd9\x8a \xd8\xa7\xd9\x88 \xd8\xaf \xd8\xa8\xdb\x90 \xd8\xa8\xd8\xa7\xd9\x88\xd8\xb1\xd9\x8a \xd8\xa7\xd8\xad\xd8\xb3\xd8\xa7\xd8\xb3 \xda\xa9\xd9\x88\xd9\x8a\xd8\x8c \xd8\xae\xd9\x88 \xd8\xae\xd9\xbe\xd9\x84 \xd9\x87\xd9\x8a\xd9\x88\xd8\xa7\xd8\xaf \xd9\x8a\xd9\x88\xd9\x85\xd9\x88\xd9\xbc\xd9\x89 \xd8\xba\xd9\x88\xd8\xa7\xda\x93\xd9\x8a.

      + + +

      Symbols

      +

      \xc2\xa9\xc2\xae\xe2\x84\xa2\xc2\xb5\xe2\x80\xa2\xe2\x80\xa6\xe2\x80\xb2\xe2\x80\xb3\xc2\xa7<>\xe2\x89\xa4\xe2\x89\xa5\xc2\xb0\xe2\x88\x92\xc2\xb1\xc3\xb7\xe2\x81\x84\xc3\x97\xc6\x92\xe2\x88\xab\xe2\x88\x91\xe2\x88\x9e\xe2\x88\x9a\xe2\x89\x88\xe2\x89\xa0\xe2\x89\xa1\xe2\x88\x8f\xc2\xac\xe2\x88\xa9\xe2\x88\x82

      +

      \xce\x92\xce\x93\xce\x94\xce\x95\xce\x96\xce\x97\xce\x98\xce\x99\xce\x9a\xce\x9b\xce\x9c\xce\x9d\xce\x9e\xce\x9f\xce\xa0\xce\xa1\xce\xa3\xce\xa4\xce\xa5\xce\xa6\xce\xa7\xce\xa8\xce\xa9

      +

      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xce\xb5\xce\xb6\xce\xb7\xce\xb8\xce\xb9\xce\xba\xce\xbb\xce\xbc\xce\xbd\xce\xbe\xce\xbf\xcf\x80\xcf\x81\xcf\x82\xcf\x83\xcf\x84\xcf\x85\xcf\x86\xcf\x87\xcf\x88\xcf\x89

      +

      \xe2\x86\x90\xe2\x86\x91\xe2\x86\x92\xe2\x86\x93\xe2\x86\x94\xe2\x97\x8a\xe2\x99\xa3\xe2\x99\xa5\xe2\x99\xa6

      + +

      Dingbats

      +

      \xc2\xa7<>\xe2\x86\x92\xe2\x86\x94\xe2\x99\xa3\xe2\x99\xa5\xe2\x99\xa6

      + +

      win-1252

      +

      \xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e<>\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1

      +

      \xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8

      +

      \xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf

      + +

      Bidirectional text

      +

      Text alignment, unless specified, is neutral and therefore dictated by the 'direction' of the paragraph.

      + +

      All text is analysed chunk by chunk (between tags) and at the end of every block (div, p, td). If the text contains RTL characters, those characters and words are reversed.

      + +

      \xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 "\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9" \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 with some english in the middle \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9

      + +

      To set the 'directionality' of the whole document e.g. to reverse default alignment, tables, lists etc. you can set the dir attribute or the direction CSS property on the HTML or BODY tag to 'rtl' e.g.

      +

      <body style=\"direction: rtl\">

      +

      <body dir=\"rtl\">

      +

      or you can use \$mpdf->SetDirectionality('rtl');

      + +
      +- the document now has a baseline direction; this determines the 
      +	- behaviour of blocks for which text-align has not been specifically set
      +	- layout of mirrored page-margins, columns, ToC and Indexes, headers and footers
      +	- base direction can be set by any of:
      +		- \$mpdf->SetDirectionality('rtl');
      +		- <html dir=\"rtl\" or style=\"direction: rtl;\">
      +		- <body dir=\"rtl\" or style=\"direction: rtl;\">
      +	- base direction is an inherited CSS property, so will affect all content, unless...
      +- direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using
      +	- CSS property < style=\"direction: rtl;\"> 
      +	- direction can only be set on the top-level element of nested lists
      +	- direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
      +	- nested tables CAN have different directions
      +- NOTE that block/table margins/paddings are NOT reversed by direction
      +	NB mPDF <5.1 reversed the margins/paddings for blocks when RTL set.
      +- language (either CSS \"lang\", using Autofont, or through initial set-up e.g. \$mpdf = new mPDF('ar') ) 
      +	no longer affects direction in any way.
      +	NB config_cp.php has been changed as a result; any values of \"dir\" set here are now ineffective
      +- default text-align is now as per CSS spec: \"a nameless value which is dependent on direction\" 
      +	NB default text-align removed in default stylesheet in config.php 
      +- once text-align is specified, it is respected and inherited
      +	NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
      +- the configurable value $rtlcss is depracated, as it is no longer required
      +- improved algorithm for dtermining text direction
      +	- english word blocks are handled in text reversal as one block i.e. dir=\"rtl\"
      +	[arabic text] this will not be reversed [arabic text]
      +	- arabic numerals 0-9 handled correctly
      +
      +Although the control of direction for block elements is now more configurable, the control of 
      +text direction (RTL arabic characters) remains fully automatic and unconfigurable. 
      +<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.
      +	content<span>[arabic text]</span>content
      +
      +
      + + +

      Tables

      +

      Tables are automatically transposed when the direction is rtl:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a +

      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a

      +
      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84 +

      \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2

      +
      +

      \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2

      +
      +

      \xd9\x82\xd8\xa7\xd9\x84

      +
      +

      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3

      +
      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      +

      \xd9\x82\xd8\xa7\xd9\x84

      +

      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3

      +
      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 +

      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3

      +
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      +

       

      +

      Lists

      +

      Lists will automatically reverse as well (note the use of list-style to set numbering):

      +
      +
        +
      1. \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      2. +
      3. \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a +
        • \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac
        • +
        • \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 +
            +
          • \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9
          • +
          • \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a
          • +
          +
        • +
      4. +
      5. \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7
      6. +
      7. \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82
      8. +
      +
      +"; + +//============================================================== + // Set Header and Footer + $h = array ( + 'odd' => + array ( + 'R' => + array ( + 'content' => '{PAGENO}', + 'font-size' => 8, + 'font-style' => 'B', + ), + 'L' => + array ( + 'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", + 'font-size' => 8, + 'font-style' => 'B', + ), + 'line' => 1, + ), + 'even' => + array ( + 'L' => + array ( + 'content' => '{PAGENO}', + 'font-size' => 8, + 'font-style' => 'B', + ), + 'R' => + array ( + 'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", + 'font-size' => 8, + 'font-style' => 'B', + ), + 'line' => 1, + ), +); + + $f = array ( + 'odd' => + array ( + 'L' => + array ( + 'content' => '{DATE Y-m-d}', + 'font-size' => 8, + 'font-style' => 'BI', + ), + 'C' => + array ( + 'content' => '- {PAGENO} -', + 'font-size' => 8, + ), + 'R' => + array ( + 'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", + 'font-size' => 8, + ), + 'line' => 1, + ), + 'even' => + array ( + 'L' => + array ( + 'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", + 'font-size' => 8, + 'font-style' => 'B', + ), + 'C' => + array ( + 'content' => '- {PAGENO} -', + 'font-size' => 8, + ), + 'R' => + array ( + 'content' => '{DATE Y-m-d}', + 'font-size' => 8, + 'font-style' => 'BI', + ), + 'line' => 1, + ), +); + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + + +$mpdf=new mPDF('ar','A4','','',32,25,27,25,16,13); + +// From mPDF 5.1 onwards you must set: +$mpdf->SetDirectionality('rtl'); +$mpdf->mirrorMargins = true; +$mpdf->SetDisplayMode('fullpage','two'); + + +$mpdf->setHeader($h); +$mpdf->setFooter($f); + + +$stylesheet = file_get_contents('mpdfstyletables.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); +$mpdf->AddPage(); + +$mpdf->SetColumns(2,'J'); +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php new file mode 100644 index 000000000..c46245f9c --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php @@ -0,0 +1,91 @@ + +p { text-align: justify; } +td { text-align: justify; } + +

      mPDF

      +

      CJK Languages

      + + + + +

      Japanese (pangrams)

      +
      Iroha Uta
      + +

      \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99

      + +

      \xe8\x89\xb2\xe3\x81\xaf\xe5\x8c\x82\xe3\x81\xb8\xe3\x81\xa9\xe3\x80\x80\xe6\x95\xa3\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe6\x88\x91\xe3\x81\x8c\xe4\xb8\x96\xe8\xaa\xb0\xe3\x81\x9e\xe3\x80\x80\xe5\xb8\xb8\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe6\x9c\x89\xe7\x82\xba\xe3\x81\xae\xe5\xa5\xa5\xe5\xb1\xb1\xe3\x80\x80\xe4\xbb\x8a\xe6\x97\xa5\xe8\xb6\x8a\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb5\x85\xe3\x81\x8d\xe5\xa4\xa2\xe8\xa6\x8b\xe3\x81\x98\xe3\x80\x80\xe9\x85\x94\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x9a\xef\xbc\x88\xe3\x82\x93\xef\xbc\x89

      + +
      Tori Naku Uta
      + +

      \xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1

      + +

      \xe9\xb3\xa5\xe5\x95\xbc\xe3\x81\x8f\xe5\xa3\xb0\xe3\x81\x99\xe3\x80\x80\xe5\xa4\xa2\xe8\xa6\x9a\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe8\xa6\x8b\xe3\x82\x88\xe6\x98\x8e\xe3\x81\x91\xe6\xb8\xa1\xe3\x82\x8b\xe3\x80\x80\xe6\x9d\xb1\xe3\x82\x92\xe3\x80\x80\xe7\xa9\xba\xe8\x89\xb2\xe6\xa0\x84\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb2\x96\xe3\x81\xa4\xe8\xbe\xba\xe3\x81\xab\xe3\x80\x80\xe5\xb8\x86\xe8\x88\xb9\xe7\xbe\xa4\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe9\x9d\x84\xe3\x81\xae\xe4\xb8\xad

      + +
      Ametsuchi No Uta
      + +

      \xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6

      + +

      \xe5\xa4\xa9 \xe5\x9c\xb0 \xe6\x98\x9f \xe7\xa9\xba / \xe5\xb1\xb1 \xe5\xb7\x9d \xe5\xb3\xb0 \xe8\xb0\xb7 / \xe9\x9b\xb2 \xe9\x9c\xa7 \xe5\xae\xa4 \xe8\x8b\x94 / \xe4\xba\xba \xe7\x8a\xac \xe4\xb8\x8a \xe6\x9c\xab / \xe7\xa1\xab\xe9\xbb\x84 \xe7\x8c\xbf \xe7\x94\x9f\xe3\x81\xb5 \xe7\x82\xba\xe3\x82\x88 / \xe6\xa6\x8e\xe3\x81\xae \xe6\x9e\x9d\xe3\x82\x92 \xe9\xa6\xb4\xe3\x82\x8c \xe5\xb1\x85\xe3\x81\xa6

      + +
      Taini no Uta
      + +

      \xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac

      + +

      \xe7\x94\xb0\xe5\xb1\x85\xe3\x81\xab\xe5\x87\xba\xe3\x81\xa7\xe3\x80\x80\xe8\x8f\x9c\xe6\x91\x98\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9e\xe3\x80\x80\xe5\x90\x9b\xe5\x8f\xac\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe6\xb1\x82\xe9\xa3\x9f\xe3\x82\x8a\xe8\xbf\xbd\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe5\xb1\xb1\xe5\x9f\x8e\xe3\x81\xae\xe3\x80\x80\xe6\x89\x93\xe9\x85\x94\xe3\x81\xb8\xe3\x82\x8b\xe5\xad\x90\xe3\x82\x89\xe3\x80\x80\xe8\x97\xbb\xe8\x91\x89\xe5\xb9\xb2\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe8\x88\x9f\xe7\xb9\x8b\xe3\x81\x91\xe3\x81\xac

      + + + +

      Chinese (simplified) GB2312

      + +

      \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82

      + + + +

      Chinese (Traditional - Hong Kong)

      + +

      \xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82

      + + + + +

      Korean

      +

      \xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4.

      + + + + +"; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('+aCJK','A4','','',32,25,27,25,16,13); +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->SetTitle($utxt['zh-CN']); +$mpdf->SetAuthor($utxt['zh-CN']); + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyleA4.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php new file mode 100644 index 000000000..8fb5b6178 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php @@ -0,0 +1,89 @@ + +p { text-align: justify; } +td { text-align: justify; } + +

      mPDF

      +

      CJK Languages

      + + + + +

      Japanese (pangrams)

      +
      Iroha Uta
      + +

      \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99

      + +

      \xe8\x89\xb2\xe3\x81\xaf\xe5\x8c\x82\xe3\x81\xb8\xe3\x81\xa9\xe3\x80\x80\xe6\x95\xa3\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe6\x88\x91\xe3\x81\x8c\xe4\xb8\x96\xe8\xaa\xb0\xe3\x81\x9e\xe3\x80\x80\xe5\xb8\xb8\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe6\x9c\x89\xe7\x82\xba\xe3\x81\xae\xe5\xa5\xa5\xe5\xb1\xb1\xe3\x80\x80\xe4\xbb\x8a\xe6\x97\xa5\xe8\xb6\x8a\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb5\x85\xe3\x81\x8d\xe5\xa4\xa2\xe8\xa6\x8b\xe3\x81\x98\xe3\x80\x80\xe9\x85\x94\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x9a\xef\xbc\x88\xe3\x82\x93\xef\xbc\x89

      + +
      Tori Naku Uta
      + +

      \xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1

      + +

      \xe9\xb3\xa5\xe5\x95\xbc\xe3\x81\x8f\xe5\xa3\xb0\xe3\x81\x99\xe3\x80\x80\xe5\xa4\xa2\xe8\xa6\x9a\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe8\xa6\x8b\xe3\x82\x88\xe6\x98\x8e\xe3\x81\x91\xe6\xb8\xa1\xe3\x82\x8b\xe3\x80\x80\xe6\x9d\xb1\xe3\x82\x92\xe3\x80\x80\xe7\xa9\xba\xe8\x89\xb2\xe6\xa0\x84\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb2\x96\xe3\x81\xa4\xe8\xbe\xba\xe3\x81\xab\xe3\x80\x80\xe5\xb8\x86\xe8\x88\xb9\xe7\xbe\xa4\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe9\x9d\x84\xe3\x81\xae\xe4\xb8\xad

      + +
      Ametsuchi No Uta
      + +

      \xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6

      + +

      \xe5\xa4\xa9 \xe5\x9c\xb0 \xe6\x98\x9f \xe7\xa9\xba / \xe5\xb1\xb1 \xe5\xb7\x9d \xe5\xb3\xb0 \xe8\xb0\xb7 / \xe9\x9b\xb2 \xe9\x9c\xa7 \xe5\xae\xa4 \xe8\x8b\x94 / \xe4\xba\xba \xe7\x8a\xac \xe4\xb8\x8a \xe6\x9c\xab / \xe7\xa1\xab\xe9\xbb\x84 \xe7\x8c\xbf \xe7\x94\x9f\xe3\x81\xb5 \xe7\x82\xba\xe3\x82\x88 / \xe6\xa6\x8e\xe3\x81\xae \xe6\x9e\x9d\xe3\x82\x92 \xe9\xa6\xb4\xe3\x82\x8c \xe5\xb1\x85\xe3\x81\xa6

      + +
      Taini no Uta
      + +

      \xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac

      + +

      \xe7\x94\xb0\xe5\xb1\x85\xe3\x81\xab\xe5\x87\xba\xe3\x81\xa7\xe3\x80\x80\xe8\x8f\x9c\xe6\x91\x98\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9e\xe3\x80\x80\xe5\x90\x9b\xe5\x8f\xac\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe6\xb1\x82\xe9\xa3\x9f\xe3\x82\x8a\xe8\xbf\xbd\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe5\xb1\xb1\xe5\x9f\x8e\xe3\x81\xae\xe3\x80\x80\xe6\x89\x93\xe9\x85\x94\xe3\x81\xb8\xe3\x82\x8b\xe5\xad\x90\xe3\x82\x89\xe3\x80\x80\xe8\x97\xbb\xe8\x91\x89\xe5\xb9\xb2\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe8\x88\x9f\xe7\xb9\x8b\xe3\x81\x91\xe3\x81\xac

      + + + +

      Chinese (simplified) GB2312

      + +

      \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82

      + + + +

      Chinese (Traditional - Hong Kong)

      + +

      \xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82

      + + + + +

      Korean

      +

      \xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4.

      + + +"; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('-aCJK','A4','','',32,25,27,25,16,13); +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->SetTitle($utxt['zh-CN']); +$mpdf->SetAuthor($utxt['zh-CN']); + +// LOAD a stylesheet +$stylesheet = file_get_contents('mpdfstyleA4.css'); +$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php b/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php new file mode 100644 index 000000000..1ca99f25a --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php @@ -0,0 +1,400 @@ + + +body { font-family: sans; text-align: justify; } +p { font-family: sans; } +div { font-family: sans; } + + + +

      This document includes many languages. Selection of appropriate fonts is done automatically by using AutoFont.

      +

      Pangrams - (from Wikipedia)

      +

      The quick brown fox jumps over a lazy dog

      + +

      Bulgarian

      +

      \xd0\x96\xd1\x8a\xd0\xbb\xd1\x82\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb4\xd1\x8e\xd0\xbb\xd1\x8f \xd0\xb1\xd0\xb5\xd1\x88\xd0\xb5 \xd1\x89\xd0\xb0\xd1\x81\xd1\x82\xd0\xbb\xd0\xb8\xd0\xb2\xd0\xb0, \xd1\x87\xd0\xb5 \xd0\xbf\xd1\x83\xd1\x85\xd1\x8a\xd1\x82, \xd0\xba\xd0\xbe\xd0\xb9\xd1\x82\xd0\xbe \xd1\x86\xd1\x8a\xd1\x84\xd0\xbd\xd0\xb0, \xd0\xb7\xd0\xb0\xd0\xbc\xd1\x80\xd1\x8a\xd0\xb7\xd0\xbd\xd0\xb0 \xd0\xba\xd0\xb0\xd1\x82\xd0\xbe \xd0\xb3\xd1\x8c\xd0\xbe\xd0\xbd.

      + +

      \xd0\x97\xd0\xb0 \xd0\xbc\xd0\xb8\xd0\xb3 \xd0\xb1\xd1\x8f\xd1\x85 \xd0\xb2 \xd1\x87\xd1\x83\xd0\xb6\xd0\xb4 \xd0\xbf\xd0\xbb\xd1\x8e\xd1\x88\xd0\xb5\xd0\xbd \xd1\x81\xd0\xba\xd1\x8a\xd1\x80\xd1\x86\xd0\xb0\xd1\x89 \xd1\x84\xd0\xbe\xd1\x82\xd1\x8c\xd0\xbe\xd0\xb9\xd0\xbb.

      + +

      Catalan

      +

      Jove xef, porti whisky amb quinze gla\xc3\xa7ons d'hidrogen, coi!

      + +

      Aqueix betzol, Jan, comprava whisky de figa

      + +

      Czech

      +

      P\xc5\x99\xc3\xadli\xc5\xa1 \xc5\xbelu\xc5\xa5ou\xc4\x8dk\xc3\xbd k\xc5\xaf\xc5\x88 \xc3\xbap\xc4\x9bl \xc4\x8f\xc3\xa1belsk\xc3\xa9 \xc3\xb3dy

      + +

      Danish

      +

      H\xc3\xb8j bly gom vandt fr\xc3\xa6k sexquiz p\xc3\xa5 wc

      + +

      Dutch

      +

      Doch Bep, flink sexy qua vorm, zwijgt

      + +

      Pa's wijze lynx bezag vroom het fikse aquaduct

      + +

      Finnish

      +

      T\xc3\xb6rkylempij\xc3\xa4 vongahdus

      + +

      French

      +

      Portez ce vieux whisky au juge blond qui fume

      + +

      B\xc3\xa2chez la queue du wagon-taxi avec les pyjamas du fakir

      + +

      Voyez le brick g\xc3\xa9ant que j'examine pr\xc3\xa8s du wharf

      + +

      German

      +

      Victor jagt zw\xc3\xb6lf Boxk\xc3\xa4mpfer quer \xc3\xbcber den gro\xc3\x9fen Sylter Deich

      + +

      \"Fix, Schwyz!\" qu\xc3\xa4kt J\xc3\xbcrgen bl\xc3\xb6d vom Pa\xc3\x9f

      + +

      \"Falsches \xc3\x9cben von Xylophonmusik qu\xc3\xa4lt jeden gr\xc3\xb6\xc3\x9feren Zwerg\"

      + +

      Hungarian

      +

      Egy h\xc5\xb1tlen vej\xc3\xa9t f\xc3\xbcl\xc3\xb6ncs\xc3\xadp\xc5\x91, d\xc3\xbch\xc3\xb6s mexik\xc3\xb3i \xc3\xbar Wessel\xc3\xa9nyin\xc3\xa9l m\xc3\xa1zol Quit\xc3\xb3ban.

      + +

      Icelandic

      +

      K\xc3\xa6mi n\xc3\xbd \xc3\xb6xi h\xc3\xa9r ykist \xc3\xbej\xc3\xb3fum n\xc3\xba b\xc3\xa6\xc3\xb0i v\xc3\xadl og \xc3\xa1drepa

      + +

      Irish

      +

      D'fhuascail \xc3\x8dosa \xc3\x9armhac na h\xc3\x93ighe Beannaithe p\xc3\xb3r \xc3\x89ava agus \xc3\x81dhaimh

      + +

      D'\xe1\xb8\x9fuascail \xc3\x8dosa \xc3\x9ar\xe1\xb9\x81ac na h\xc3\x93i\xc4\xa1e Beannai\xe1\xb9\xabe p\xc3\xb3r \xc3\x89a\xe1\xb8\x83a agus \xc3\x81\xe1\xb8\x8bai\xe1\xb9\x81

      + +

      Italian

      +

      \"Quel fez sghembo copre davanti\"

      + +

      \"Ma la volpe col suo balzo ha raggiunto il quieto Fido\"

      + +

      \"Quel vituperabile xenofobo zelante assaggia il whisky ed esclama: alleluja!\"

      + +

      Lithuanian

      +

      \xc4\xaelinkdama fechtuotojo \xc5\xa1paga sublyk\xc4\x8diojusi pragr\xc4\x99\xc5\xbe\xc4\x97 apval\xc5\xb3 arb\xc5\xabz\xc4\x85

      + +

      Norwegian

      +

      V\xc3\xa5r s\xc3\xa6re Zulu fra bade\xc3\xb8ya spilte jo whist og quickstep i min taxi.

      + +

      H\xc3\xb8vdingens kj\xc3\xa6re squaw f\xc3\xa5r litt pizza i Mexico by

      + +

      Polish

      +

      P\xc3\xb3jd\xc5\xba\xc5\xbce, ki\xc5\x84 t\xc4\x99 chmurno\xc5\x9b\xc4\x87 w g\xc5\x82\xc4\x85b flaszy!

      + +

      Pchn\xc4\x85\xc4\x87 w t\xc4\x99 \xc5\x82\xc3\xb3d\xc5\xba je\xc5\xbca lub o\xc5\x9bm skrzy\xc5\x84 fig.

      + +

      M\xc4\x99\xc5\xbcny b\xc4\x85d\xc5\xba, chro\xc5\x84 pu\xc5\x82k tw\xc3\xb3j i sze\xc5\x9b\xc4\x87 flag.

      + +

      Portuguese

      +

      Blitz prende ex-vesgo com cheque fajuto.

      + +

      Gazeta publica hoje no jornal uma breve nota de faxina na quermesse.

      + +

      \xc3\x80 noite, vov\xc3\xb4 Kowalsky v\xc3\xaa o \xc3\xadm\xc3\xa3 cair no p\xc3\xa9 do ping\xc3\xbcim queixoso e vov\xc3\xb3 p\xc3\xb5e a\xc3\xa7\xc3\xbacar no ch\xc3\xa1 de t\xc3\xa2maras do jabuti feliz.

      + +

      Lu\xc3\xads arg\xc3\xbcia \xc3\xa0 J\xc3\xbalia que \xc2\xabbra\xc3\xa7\xc3\xb5es, f\xc3\xa9, ch\xc3\xa1, \xc3\xb3xido, p\xc3\xb4r, z\xc3\xa2ng\xc3\xa3o\xc2\xbb eram palavras do portugu\xc3\xaas.

      + +

      Romanian

      +

      Gheorghe, obezul, a reu\xc5\x9fit s\xc4\x83 ob\xc5\xa3in\xc4\x83 juc\xc3\xa2ndu-se un flux \xc3\xaen Quebec de o mie kilowa\xc5\xa3ior\xc4\x83.

      + +

      Russian

      +

      \xd0\x92 \xd1\x87\xd0\xb0\xd1\x89\xd0\xb0\xd1\x85 \xd1\x8e\xd0\xb3\xd0\xb0 \xd0\xb6\xd0\xb8\xd0\xbb \xd0\xb1\xd1\x8b \xd1\x86\xd0\xb8\xd1\x82\xd1\x80\xd1\x83\xd1\x81? \xd0\x94\xd0\xb0, \xd0\xbd\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb8\xd0\xb2\xd1\x8b\xd0\xb9 \xd1\x8d\xd0\xba\xd0\xb7\xd0\xb5\xd0\xbc\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x80!

      + +

      (Using quasiobsolete spelling for last word to include \xd1\x8a) \xd0\x92 \xd1\x87\xd0\xb0\xd1\x89\xd0\xb0\xd1\x85 \xd1\x8e\xd0\xb3\xd0\xb0 \xd0\xb6\xd0\xb8\xd0\xbb \xd0\xb1\xd1\x8b \xd1\x86\xd0\xb8\xd1\x82\xd1\x80\xd1\x83\xd1\x81? \xd0\x94\xd0\xb0, \xd0\xbd\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb8\xd0\xb2\xd1\x8b\xd0\xb9 \xd1\x8d\xd0\xba\xd0\xb7\xd0\xb5\xd0\xbc\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x80\xd1\x8a!

      + +

      \xd0\xad\xd1\x85, \xd1\x87\xd1\x83\xd0\xb6\xd0\xb0\xd0\xba! \xd0\x9e\xd0\xb1\xd1\x89\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x8a\xd1\x91\xd0\xbc \xd1\x86\xd0\xb5\xd0\xbd \xd1\x88\xd0\xbb\xd1\x8f\xd0\xbf (\xd1\x8e\xd1\x84\xd1\x82\xd1\x8c) \xe2\x80\x94 \xd0\xb2\xd0\xb4\xd1\x80\xd1\x8b\xd0\xb7\xd0\xb3!

      + +

      \xd0\xad\xd0\xba\xd1\x81-\xd0\xb3\xd1\x80\xd0\xb0\xd1\x84? \xd0\x9f\xd0\xbb\xd1\x8e\xd1\x88 \xd0\xb8\xd0\xb7\xd1\x8a\xd1\x8f\xd1\x82. \xd0\x91\xd1\x8c\xd1\x91\xd0\xbc \xd1\x87\xd1\x83\xd0\xb6\xd0\xb4\xd1\x8b\xd0\xb9 \xd1\x86\xd0\xb5\xd0\xbd \xd1\x85\xd0\xb2\xd0\xbe\xd1\x89!

      + +

      \xd0\xa1\xd1\x8a\xd0\xb5\xd1\x88\xd1\x8c \xd0\xb5\xd1\x89\xd1\x91 \xd1\x8d\xd1\x82\xd0\xb8\xd1\x85 \xd0\xbc\xd1\x8f\xd0\xb3\xd0\xba\xd0\xb8\xd1\x85 \xd1\x84\xd1\x80\xd0\xb0\xd0\xbd\xd1\x86\xd1\x83\xd0\xb7\xd1\x81\xd0\xba\xd0\xb8\xd1\x85 \xd0\xb1\xd1\x83\xd0\xbb\xd0\xbe\xd0\xba, \xd0\xb4\xd0\xb0 \xd0\xb2\xd1\x8b\xd0\xbf\xd0\xb5\xd0\xb9 \xd0\xb6\xd0\xb5 \xd1\x87\xd0\xb0\xd1\x8e.

      + +

      \xd0\xa8\xd0\xb8\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0\xd1\x8f \xd1\x8d\xd0\xbb\xd0\xb5\xd0\xba\xd1\x82\xd1\x80\xd0\xb8\xd1\x84\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f \xd1\x8e\xd0\xb6\xd0\xbd\xd1\x8b\xd1\x85 \xd0\xb3\xd1\x83\xd0\xb1\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb8\xd0\xb9 \xd0\xb4\xd0\xb0\xd1\x81\xd1\x82 \xd0\xbc\xd0\xbe\xd1\x89\xd0\xbd\xd1\x8b\xd0\xb9 \xd1\x82\xd0\xbe\xd0\xbb\xd1\x87\xd0\xbe\xd0\xba \xd0\xbf\xd0\xbe\xd0\xb4\xd1\x8a\xd1\x91\xd0\xbc\xd1\x83 \xd1\x81\xd0\xb5\xd0\xbb\xd1\x8c\xd1\x81\xd0\xba\xd0\xbe\xd0\xb3\xd0\xbe \xd1\x85\xd0\xbe\xd0\xb7\xd1\x8f\xd0\xb9\xd1\x81\xd1\x82\xd0\xb2\xd0\xb0.

      + +

      Serbian

      +

      \xd0\x89\xd1\x83\xd0\xb1\xd0\xb0\xd0\xb7\xd0\xbd\xd0\xb8 \xd1\x84\xd0\xb5\xd1\x9a\xd0\xb5\xd1\x80\xd1\x9f\xd0\xb8\xd1\x98\xd0\xb0 \xd1\x87\xd0\xb0\xd1\x92\xd0\xb0\xd0\xb2\xd0\xbe\xd0\xb3 \xd0\xbb\xd0\xb8\xd1\x86\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x9b\xd0\xb5 \xd0\xb4\xd0\xb0 \xd0\xbc\xd0\xb8 \xd0\xbf\xd0\xbe\xd0\xba\xd0\xb0\xd0\xb6\xd0\xb5 \xd1\x88\xd1\x82\xd0\xbe\xd1\x81.

      + +

      Ljubazni fenjerd\xc5\xbeija \xc4\x8da\xc4\x91avog lica ho\xc4\x87e da mi poka\xc5\xbee \xc5\xa1tos.

      + +

      Slovene

      +

      \xc5\xa0erif bo za vajo spet kuhal doma\xc4\x8de \xc5\xbegance

      + +

      Pi\xc5\xa1kur mol\xc4\x8de grabi fi\xc5\xbeol z dna cezijeve hoste

      + +

      Spanish

      +

      El veloz murci\xc3\xa9lago hind\xc3\xba com\xc3\xada feliz cardillo y kiwi. La cig\xc3\xbce\xc3\xb1a tocaba el saxof\xc3\xb3n detr\xc3\xa1s del palenque de paja.

      + +

      El ping\xc3\xbcino Wenceslao hizo kil\xc3\xb3metros bajo exhaustiva lluvia y fr\xc3\xado, a\xc3\xb1oraba a su querido cachorro.

      + +

      Jovencillo emponzo\xc3\xb1ado de whisky: \xc2\xa1qu\xc3\xa9 figurota exhibe!

      + +

      Ese libro explica en su ep\xc3\xadgrafe las haza\xc3\xb1as y aventuras de Don Quijote de la Mancha en Kuwait.

      + +

      Queda gazpacho, fibra, l\xc3\xa1tex, jam\xc3\xb3n, kiwi y vi\xc3\xb1as.

      + +

      Whisky bueno: \xc2\xa1excitad mi fr\xc3\xa1gil peque\xc3\xb1a vejez!

      + +

      Swedish

      +

      Flygande b\xc3\xa4ckasiner s\xc3\xb6ka hwila p\xc3\xa5 mjuka tuvor.

      + +

      Yxskaftbud, ge v\xc3\xa5r wczonm\xc3\xb6 iqhj\xc3\xa4lp.

      + +

      Ukrainian

      +

      \xd0\xa7\xd1\x83\xd1\x94\xd1\x88 \xd1\x97\xd1\x85, \xd0\xb4\xd0\xbe\xd1\x86\xd1\x8e, \xd0\xb3\xd0\xb0? \xd0\x9a\xd1\x83\xd0\xbc\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb0 \xd0\xb6 \xd1\x82\xd0\xb8, \xd0\xbf\xd1\x80\xd0\xbe\xd1\x89\xd0\xb0\xd0\xb9\xd1\x81\xd1\x8f \xd0\xb1\xd0\xb5\xd0\xb7 \xd2\x91\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x84\xd1\x96\xd0\xb2!

      + +

      \xd0\x96\xd0\xb5\xd0\xb1\xd1\x80\xd0\xb0\xd0\xba\xd1\x83\xd1\x8e\xd1\x82\xd1\x8c \xd1\x84\xd1\x96\xd0\xbb\xd0\xbe\xd1\x81\xd0\xbe\xd1\x84\xd0\xb8 \xd0\xbf\xd1\x80\xd0\xb8 \xd2\x91\xd0\xb0\xd0\xbd\xd0\xba\xd1\x83 \xd1\x86\xd0\xb5\xd1\x80\xd0\xba\xd0\xb2\xd0\xb8 \xd0\xb2 \xd0\x93\xd0\xb0\xd0\xb4\xd1\x8f\xd1\x87\xd1\x96, \xd1\x89\xd0\xb5 \xd0\xb9 \xd1\x88\xd0\xb0\xd1\x82\xd1\x80\xd0\xbe \xd1\x97\xd1\x85\xd0\xbd\xd1\x94 \xd0\xbf'\xd1\x8f\xd0\xbd\xd0\xb5 \xd0\xb7\xd0\xbd\xd0\xb0\xd1\x94\xd0\xbc\xd0\xbe.

      + +

      Turkish (pangram)

      +

      Pijamal\xc4\xb1 hasta ya\xc4\x9f\xc4\xb1z \xc5\x9fof\xc3\xb6re \xc3\xa7abucak g\xc3\xbcvendi.

      + +

      Greek

      +
      Monotonic
      +

      \xce\xa0\xce\xac\xcf\x84\xce\xb5\xcf\x81 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd \xce\xbf \xce\xb5\xce\xbd \xcf\x84\xce\xbf\xce\xb9\xcf\x82 \xce\xbf\xcf\x85\xcf\x81\xce\xb1\xce\xbd\xce\xbf\xce\xaf\xcf\x82 \xce\xb1\xce\xb3\xce\xb9\xce\xb1\xcf\x83\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xce\xbf \xcf\x8c\xce\xbd\xce\xbf\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb5\xce\xbb\xce\xb8\xce\xad\xcf\x84\xcf\x89 \xce\xb7 \xce\xb2\xce\xb1\xcf\x83\xce\xb9\xce\xbb\xce\xb5\xce\xaf\xce\xb1 \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb3\xce\xb5\xce\xbd\xce\xb7\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xce\xbf \xce\xb8\xce\xad\xce\xbb\xce\xb7\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85, \xcf\x89\xcf\x82 \xce\xb5\xce\xbd \xce\xbf\xcf\x85\xcf\x81\xce\xb1\xce\xbd\xcf\x8e \xce\xba\xce\xb1\xce\xb9 \xce\xb5\xcf\x80\xce\xaf \xcf\x84\xce\xb7\xcf\x82 \xce\xb3\xce\xb7\xcf\x82\xc2\xb7 \xcf\x84\xce\xbf\xce\xbd \xce\xac\xcf\x81\xcf\x84\xce\xbf\xce\xbd \xce\xb7\xce\xbc\xcf\x8e\xce\xbd \xcf\x84\xce\xbf\xce\xbd \xce\xb5\xcf\x80\xce\xb9\xce\xbf\xcf\x8d\xcf\x83\xce\xb9\xce\xbf\xce\xbd \xce\xb4\xce\xbf\xcf\x82 \xce\xb7\xce\xbc\xce\xaf\xce\xbd \xcf\x83\xce\xae\xce\xbc\xce\xb5\xcf\x81\xce\xbf\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xce\xb9 \xce\xac\xcf\x86\xce\xb5\xcf\x82 \xce\xb7\xce\xbc\xce\xaf\xce\xbd \xcf\x84\xce\xb1 \xce\xbf\xcf\x86\xce\xb5\xce\xbb\xce\xae\xce\xbc\xce\xb1\xcf\x84\xce\xb1 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd, \xcf\x89\xcf\x82 \xce\xba\xce\xb1\xce\xb9 \xce\xb7\xce\xbc\xce\xb5\xce\xaf\xcf\x82 \xce\xb1\xcf\x86\xce\xaf\xce\xb5\xce\xbc\xce\xb5\xce\xbd \xcf\x84\xce\xbf\xce\xb9\xcf\x82 \xce\xbf\xcf\x86\xce\xb5\xce\xb9\xce\xbb\xce\xad\xcf\x84\xce\xb1\xce\xb9\xcf\x82 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xce\xb9 \xce\xbc\xce\xb7 \xce\xb5\xce\xb9\xcf\x83\xce\xb5\xce\xbd\xce\xad\xce\xb3\xce\xba\xce\xb7\xcf\x82 \xce\xb7\xce\xbc\xce\xac\xcf\x82 \xce\xb5\xce\xb9\xcf\x82 \xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xb1\xcf\x83\xce\xbc\xcf\x8c\xce\xbd, \xce\xb1\xce\xbb\xce\xbb\xce\xac \xcf\x81\xcf\x8d\xcf\x83\xce\xb1\xce\xb9 \xce\xb7\xce\xbc\xce\xac\xcf\x82 \xce\xb1\xcf\x80\xcf\x8c \xcf\x84\xce\xbf\xcf\x85 \xcf\x80\xce\xbf\xce\xbd\xce\xb7\xcf\x81\xce\xbf\xcf\x8d. \xce\xb1\xce\xbc\xce\xae\xce\xbd.

      + +
      Polytonic
      +

      \xce\xa0\xce\xac\xcf\x84\xce\xb5\xcf\x81 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd \xe1\xbd\x81 \xe1\xbc\x90\xce\xbd \xcf\x84\xce\xbf\xe1\xbf\x96\xcf\x82 \xce\xbf\xe1\xbd\x90\xcf\x81\xce\xb1\xce\xbd\xce\xbf\xe1\xbf\x96\xcf\x82 \xe1\xbc\x81\xce\xb3\xce\xb9\xce\xb1\xcf\x83\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xe1\xbd\xb8 \xe1\xbd\x84\xce\xbd\xce\xbf\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xe1\xbc\x90\xce\xbb\xce\xb8\xce\xad\xcf\x84\xcf\x89 \xe1\xbc\xa1 \xce\xb2\xce\xb1\xcf\x83\xce\xb9\xce\xbb\xce\xb5\xce\xaf\xce\xb1 \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb3\xce\xb5\xce\xbd\xce\xb7\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xe1\xbd\xb8 \xce\xb8\xce\xad\xce\xbb\xce\xb7\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85, \xe1\xbd\xa1\xcf\x82 \xe1\xbc\x90\xce\xbd \xce\xbf\xe1\xbd\x90\xcf\x81\xce\xb1\xce\xbd\xe1\xbf\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\x90\xcf\x80\xe1\xbd\xb6 \xcf\x84\xe1\xbf\x86\xcf\x82 \xce\xb3\xe1\xbf\x86\xcf\x82\xc2\xb7 \xcf\x84\xe1\xbd\xb8\xce\xbd \xe1\xbc\x84\xcf\x81\xcf\x84\xce\xbf\xce\xbd \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd \xcf\x84\xe1\xbd\xb8\xce\xbd \xe1\xbc\x90\xcf\x80\xce\xb9\xce\xbf\xcf\x8d\xcf\x83\xce\xb9\xce\xbf\xce\xbd \xce\xb4\xe1\xbd\xb8\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\x96\xce\xbd \xcf\x83\xce\xae\xce\xbc\xce\xb5\xcf\x81\xce\xbf\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\x84\xcf\x86\xce\xb5\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\x96\xce\xbd \xcf\x84\xe1\xbd\xb0 \xe1\xbd\x80\xcf\x86\xce\xb5\xce\xbb\xce\xae\xce\xbc\xce\xb1\xcf\x84\xce\xb1 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd, \xe1\xbd\xa1\xcf\x82 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\xa1\xce\xbc\xce\xb5\xe1\xbf\x96\xcf\x82 \xe1\xbc\x80\xcf\x86\xce\xaf\xce\xb5\xce\xbc\xce\xb5\xce\xbd \xcf\x84\xce\xbf\xe1\xbf\x96\xcf\x82 \xe1\xbd\x80\xcf\x86\xce\xb5\xce\xb9\xce\xbb\xce\xad\xcf\x84\xce\xb1\xce\xb9\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xce\xbc\xe1\xbd\xb4 \xce\xb5\xe1\xbc\xb0\xcf\x83\xce\xb5\xce\xbd\xce\xad\xce\xb3\xce\xba\xe1\xbf\x83\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbe\xb6\xcf\x82 \xce\xb5\xe1\xbc\xb0\xcf\x82 \xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xb1\xcf\x83\xce\xbc\xcf\x8c\xce\xbd, \xe1\xbc\x80\xce\xbb\xce\xbb\xe1\xbd\xb0 \xcf\x81\xe1\xbf\xa6\xcf\x83\xce\xb1\xce\xb9 \xe1\xbc\xa1\xce\xbc\xe1\xbe\xb6\xcf\x82 \xe1\xbc\x80\xcf\x80\xe1\xbd\xb8 \xcf\x84\xce\xbf\xe1\xbf\xa6 \xcf\x80\xce\xbf\xce\xbd\xce\xb7\xcf\x81\xce\xbf\xe1\xbf\xa6. \xe1\xbc\x80\xce\xbc\xce\xae\xce\xbd.

      + + +

      Languages

      +

      (The following are used for demonstration purposes only. Some of the following excerpts are taken from web pages from the BBC Foreign News just to show the script - I have no idea what they actually say!!)

      + +

      Latvian

      +

      Latvijas instit\xc5\xabts veic konsultat\xc4\xabvi koordin\xc4\x93jo\xc5\xa1as funkcijas Latvijas starptautisk\xc4\x81s atpaz\xc4\xabstam\xc4\xabbas jom\xc4\x81; +gatavo un izplata pla\xc5\xa1ai sabiedr\xc4\xabbai pieejamu, svar\xc4\xabgu pamatinform\xc4\x81ciju saturo\xc5\xa1u, viegli izprotamu un iegaum\xc4\x93jamu, k\xc4\x81 ar\xc4\xab pozit\xc4\xabvu iespaidu izraiso\xc5\xa1u visp\xc4\x81r\xc4\x93ju pamatinform\xc4\x81ciju par Latviju, Latvijas dabu, sabiedr\xc4\xabbu, kult\xc5\xabru un v\xc4\x93sturi;

      + +

      Azeri (az)

      +

      Qaz k\xc9\x99m\xc9\x99rinin a\xc3\xa7\xc4\xb1l\xc4\xb1\xc5\x9f\xc4\xb1nda \xc4\xb0ran v\xc9\x99 Erm\xc9\x99nistan\xc4\xb1n prezidentl\xc9\x99ri i\xc5\x9ftirak edibl\xc9\x99r.

      + +

      \xc4\xb0ran qaz\xc4\xb1n\xc4\xb1 Erm\xc9\x99nistana n\xc9\x99ql ed\xc9\x99c\xc9\x99k bu k\xc9\x99m\xc9\x99r Yerevan \xc3\xbc\xc3\xa7\xc3\xbcn x\xc3\xbcsusi \xc3\xb6n\xc9\x99m da\xc5\x9f\xc4\xb1y\xc4\xb1r, bel\xc9\x99 ki, b\xc3\xb6y\xc3\xbck etnik az\xc9\x99rbaycanl\xc4\xb1 toplumuna malik \xc4\xb0ran t\xc9\x99lat\xc3\xbcml\xc3\xbc regionda \xc3\xb6z maraqlar\xc4\xb1n\xc4\xb1 qorumaq \xc3\xbc\xc3\xa7\xc3\xbcn \xc3\xa7ox vaxt Erm\xc9\x99nistan\xc4\xb1n m\xc3\xbctt\xc9\x99fiqi kimi g\xc3\xb6r\xc3\xbcn\xc3\xbcb.

      + +

      Bulgarian

      +

      \xd0\x9f\xd0\xbe\xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb4\xd0\xbe\xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd1\x86\xd0\xb8 \xd0\xb2 \xd0\xb1\xd1\x8a\xd0\xbb\xd0\xb3\xd0\xb0\xd1\x80\xd1\x81\xd0\xba\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb0\xd1\x80\xd0\xbc\xd0\xb8\xd1\x8f \xd1\x89\xd0\xb5 \xd1\x81\xd0\xbb\xd1\x83\xd0\xb6\xd0\xb0\xd1\x82 9 \xd0\xbc\xd0\xb5\xd1\x81\xd0\xb5\xd1\x86\xd0\xb0, \xd0\xba\xd0\xb0\xd0\xba\xd1\x82\xd0\xbe \xd0\xbf\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2\xd1\x8f\xd0\xb2\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xba\xd0\xbe\xd0\xbd\xd0\xb0 6 \xd0\xbc\xd0\xb5\xd1\x81\xd0\xb5\xd1\x86\xd0\xb0 \xd0\xb5 \xd1\x81\xd1\x8a\xd0\xba\xd1\x80\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f\xd1\x82 \xd1\x81\xd1\x80\xd0\xbe\xd0\xba \xd1\x81\xd0\xb0\xd0\xbc\xd0\xbe \xd0\xb7\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xb2\xd1\x8a\xd1\x80\xd1\x88\xd0\xb8\xd0\xbb\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb2\xd0\xb8\xd1\x81\xd1\x88\xd0\xb5 \xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 - \xd1\x82\xd0\xb0\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x81\xd1\x82\xd1\x8a\xd1\x80 \xd0\x92\xd0\xb5\xd1\x81\xd0\xb5\xd0\xbb\xd0\xb8\xd0\xbd \xd0\x91\xd0\xbb\xd0\xb8\xd0\xb7\xd0\xbd\xd0\xb0\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xbe\xd1\x82\xd1\x85\xd0\xb2\xd1\x8a\xd1\x80\xd0\xbb\xd0\xb8 \xd1\x80\xd0\xb0\xd0\xb7\xd0\xbb\xd0\xb8\xd1\x87\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbf\xd1\x80\xd0\xb5\xd1\x82\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8 \xd0\xb2 \xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x87\xd0\xbd\xd0\xbe\xd1\x82\xd0\xbe \xd0\xbf\xd1\x80\xd0\xbe\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd0\xbd\xd1\x81\xd1\x82\xd0\xb2\xd0\xbe \xd0\xbf\xd0\xbe \xd1\x82\xd0\xb5\xd0\xbc\xd0\xb0\xd1\x82\xd0\xb0. \xd0\x9c\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x81\xd1\x82\xd1\x8a\xd1\x80\xd1\x8a\xd1\x82 \xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xb1\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb0\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb0\xd0\xb7\xd1\x84\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0 \xd0\xb2 \xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbb\xd1\x8a\xd0\xba \xd0\x92\xd1\x82\xd0\xbe\xd1\x80\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xbd\xd0\xb8 \xd1\x80\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xbe\xd1\x82 \xd0\x90\xd1\x88\xd1\x80\xd0\xb0\xd1\x84 \xd0\xb8 \xd0\x92\xd1\x82\xd0\xbe\xd1\x80\xd0\xb8 \xd0\xbf\xd0\xb5\xd1\x85\xd0\xbe\xd1\x82\xd0\xb5\xd0\xbd \xd0\xb2\xd0\xb7\xd0\xb2\xd0\xbe\xd0\xb4, \xd0\xb7\xd0\xb0\xd0\xb2\xd1\x8a\xd1\x80\xd0\xbd\xd0\xb0\xd0\xbb \xd1\x81\xd0\xb5 \xd0\xbe\xd1\x82 \xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd1\x82\xd0\xb2\xd0\xbe\xd1\x80\xd1\x87\xd0\xb5\xd1\x81\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xb8\xd1\x81\xd0\xb8\xd1\x8f \xd0\xbe\xd1\x82 \xd0\x91\xd0\xb0\xd0\xbd\xd1\x8f \xd0\x9b\xd1\x83\xd0\xba\xd0\xb0 \xd0\xb2 \xd0\x91\xd0\xbe\xd1\x81\xd0\xbd\xd0\xb0 \xd0\xb8 \xd0\xa5\xd0\xb5\xd1\x80\xd1\x86\xd0\xb5\xd0\xb3\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xbd\xd0\xb0.

      + +

      Macedonian (mk)

      +

      \xd0\x91\xd1\x83\xd1\x88 \xd1\x80\xd0\xb5\xd1\x87\xd0\xb5 \xd0\xbe\xd1\x82\xd0\xb8 \xd0\xb5 \xd1\x81\xd1\x83\xd1\x88\xd1\x82\xd0\xb8\xd0\xbd\xd1\x81\xd0\xba\xd0\xb8 \xd0\xb4\xd0\xb0 \xd1\x81\xd0\xb5 \xd0\xbe\xd1\x81\xd0\xb8\xd0\xb3\xd1\x83\xd1\x80\xd0\xb8 \xd0\xb1\xd0\xb5\xd0\xb7\xd0\xb1\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0 \xd0\xbd\xd0\xb0 \xd0\x91\xd0\xb0\xd0\xb3\xd0\xb4\xd0\xb0\xd0\xb4 \xd0\xb8 \xd0\xb4\xd0\xb0 \xd1\x81\xd0\xb5 \xd0\xbe\xd0\xb1\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb8 \xd0\xbd\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb0\xd0\xbb\xd0\xbd\xd0\xb8\xd0\xbe\xd1\x82 \xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb2\xd0\xbe \xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd1\x82\xd0\xbe\xd0\xba\xd0\xbe\xd1\x82 \xd0\xbe\xd0\xb4 \xd0\xb7\xd0\xb5\xd0\xbc\xd1\x98\xd0\xb0\xd1\x82\xd0\xb0.

      + +

      \xd0\x9c\xd0\xb8\xd1\x82\xd1\x80\xd0\xb5\xd0\xb2\xd0\xb0 \xd1\x98\xd0\xb0 \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb7\xd0\xb2\xd0\xb0 \xd0\xb2\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xb8\xd0\xbd\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xbd\xd1\x82\xd0\xb5\xd0\xbd \xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x81 \xd0\xba\xd0\xbe\xd0\xbd \xd0\xbe\xd0\xb2\xd0\xb0 \xd0\xb1\xd0\xb8\xd1\x82\xd0\xba\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xb7\xd0\xb0\xd1\x87\xd1\x83\xd0\xb2\xd0\xb8\xd0\xb2\xd0\xb0\xd1\x9a\xd0\xb5 \xd0\xbd\xd0\xb0 \xd1\x83\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xbd\xd0\xbe\xd1\x82\xd0\xbe \xd0\xb8\xd0\xbc\xd0\xb5 \xd0\xbd\xd0\xb0 \xd0\xb7\xd0\xb5\xd0\xbc\xd1\x98\xd0\xb0\xd1\x82\xd0\xb0.

      + +

      Uzbek (uz)

      +

      \xd0\x98\xd1\x80\xd0\xbe\xd2\x9b\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbb\xd0\xb0\xd1\x80 \xd0\xbe\xd1\x80\xd0\xb0\xd1\x81\xd0\xb8\xd0\xb4\xd0\xb0 \xd1\x82\xd1\x83\xd1\x88\xd0\xba\xd1\x83\xd0\xbd\xd0\xbb\xd0\xb8\xd0\xba \xd0\xbe\xd1\x80\xd1\x82\xd0\xb8\xd0\xb1 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0\xd1\x8f\xd0\xbf\xd1\x82\xd0\xb8

      + +

      \xd0\x98\xd1\x80\xd0\xbe\xd2\x9b\xd0\xb4\xd0\xb0 \xd1\x9e\xd1\x82\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb8\xd0\xbb\xd0\xb3\xd0\xb0\xd0\xbd \xd1\x81\xd1\x9e\xd0\xbd\xd0\xb3\xd0\xb3\xd0\xb8 \xd0\xb6\xd0\xb0\xd0\xbc\xd0\xbe\xd0\xb0\xd1\x82\xd1\x87\xd0\xb8\xd0\xbb\xd0\xb8\xd0\xba \xd1\x84\xd0\xb8\xd0\xba\xd1\x80\xd0\xb8\xd0\xbd\xd0\xb8 \xd1\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x88 \xd0\xbd\xd0\xb0\xd1\x82\xd0\xb8\xd0\xb6\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x80\xd0\xb8\xd0\xb3\xd0\xb0 \xd0\xba\xd1\x9e\xd1\x80\xd0\xb0, \xd0\xbc\xd0\xb0\xd0\xbc\xd0\xbb\xd0\xb0\xd0\xba\xd0\xb0\xd1\x82 \xd0\xba\xd0\xb5\xd0\xbb\xd0\xb0\xd0\xb6\xd0\xb0\xd0\xb3\xd0\xb8 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0\xd1\x81\xd0\xb8\xd0\xb4\xd0\xb0 \xd1\x82\xd1\x83\xd1\x88\xd0\xba\xd1\x83\xd0\xbd \xd0\xba\xd0\xb0\xd0\xb9\xd1\x84\xd0\xb8\xd1\x8f\xd1\x82\xd0\xb4\xd0\xb0 \xd0\xb1\xd1\x9e\xd0\xbb\xd0\xb3\xd0\xb0\xd0\xbd \xd0\xb8\xd1\x80\xd0\xbe\xd2\x9b\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbb\xd0\xb0\xd1\x80 \xd1\x81\xd0\xbe\xd0\xbd\xd0\xb8 \xd1\x82\xd0\xbe\xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0 \xd0\xbe\xd1\x80\xd1\x82\xd0\xb8\xd0\xb1 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xbc\xd0\xbe\xd2\x9b\xd0\xb4\xd0\xb0.

      + +

      Kyrgyz (ky)

      +

      \xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xba\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xb4\xd0\xb0 \xd0\xb0\xd0\xb9\xd1\x8b\xd0\xbb \xd1\x82\xd1\x83\xd1\x80\xd0\xb3\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd1\x80\xd1\x8b \xd1\x83\xd1\x80\xd1\x83\xd1\x88\xd0\xb0 \xd0\xba\xd0\xb5\xd1\x82\xd0\xb8\xd0\xbf 3 \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0 \xd1\x82\xd0\xb0\xd0\xbf\xd1\x82\xd1\x8b +\xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xba\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xb4\xd1\x8b\xd0\xbd \xd0\x90\xd0\xbb\xd0\xbc\xd0\xb0\xd1\x82\xd1\x8b \xd1\x88\xd0\xb0\xd0\xb0\xd1\x80\xd1\x8b\xd0\xbd\xd1\x8b\xd0\xbd \xd1\x82\xd1\x83\xd1\x88\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb3\xd1\x8b \xd0\xb0\xd0\xb9\xd1\x8b\xd0\xbb\xd0\xb4\xd0\xb0 \xd1\x8d\xd0\xba\xd0\xb8 \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xbe\xd1\x80\xd1\x82\xd0\xbe\xd1\x81\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb3\xd1\x8b \xd1\x87\xd0\xb0\xd1\x82\xd0\xb0\xd0\xba \xd1\x87\xd0\xbe\xd2\xa3 \xd1\x83\xd1\x80\xd1\x83\xd1\x88\xd0\xba\xd0\xb0 \xd0\xb0\xd0\xb9\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x8b\xd0\xbf, \xd0\xb0\xd0\xb3\xd0\xb0 \xd1\x8d\xd0\xbb\xd2\xaf\xd2\xaf \xd1\x87\xd0\xb0\xd0\xba\xd1\x82\xd1\x8b \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xb0\xd1\x80\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x88\xd0\xba\xd0\xb0\xd0\xbd.

      + + + +

      Albanian (sq)

      +

      Nj\xc3\xab anket\xc3\xab sugjeron se irakian\xc3\xabt kan\xc3\xab nj\xc3\xab pesimiz\xc3\xabm n\xc3\xab rritje p\xc3\xabr t\xc3\xab ardhmen e vendit t\xc3\xab tyre.

      + +

      Presidenti shqiptar Alfred Moisiu dekretoi t\xc3\xab h\xc3\xabn\xc3\xabn ndryshimet e propozuara nga kryeministri Sali Berisha n\xc3\xab kabinetin e tij, pas zgjedhjeve lokale.

      + + +

      Vietnamese (vi)

      +

      M\xc3\xb4\xcc\xa3t kha\xcc\x89o sa\xcc\x81t m\xc6\xa1\xcc\x81i cho bi\xc3\xaa\xcc\x81t ng\xc6\xb0\xc6\xa1\xcc\x80i d\xc3\xa2n Iraq nga\xcc\x80y ca\xcc\x80ng ca\xcc\x89m th\xc3\xa2\xcc\x81y bi quan va\xcc\x80 kh\xc3\xb4ng tin t\xc6\xb0\xc6\xa1\xcc\x89ng va\xcc\x80o chi\xcc\x81nh phu\xcc\x89 cu\xcc\x83ng nh\xc6\xb0 li\xc3\xaan qu\xc3\xa2n

      + +

      Nga \xc4\x91ang th\xc6\xb0\xcc\xa3c hi\xc3\xaa\xcc\xa3n chi\xc3\xaa\xcc\x81n di\xcc\xa3ch c\xc6\xb0\xcc\x81u h\xc3\xb4\xcc\xa3 sau khi co\xcc\x81 vu\xcc\xa3 n\xc3\xb4\xcc\x89 khi\xcc\x81 methane ta\xcc\xa3i m\xc3\xb4\xcc\xa3t mo\xcc\x89 than \xc6\xa1\xcc\x89 Siberia la\xcc\x80m i\xcc\x81t nh\xc3\xa2\xcc\x81t 61 ng\xc6\xb0\xc6\xa1\xcc\x80i thi\xc3\xaa\xcc\xa3t ma\xcc\xa3ng

      + +

      Thai (pangram)

      +

      \xe0\xb9\x80\xe0\xb8\x9b\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa1\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa9\xe0\xb8\xa2\xe0\xb9\x8c\xe0\xb8\xaa\xe0\xb8\xb8\xe0\xb8\x94\xe0\xb8\x9b\xe0\xb8\xa3\xe0\xb8\xb0\xe0\xb9\x80\xe0\xb8\xaa\xe0\xb8\xa3\xe0\xb8\xb4\xe0\xb8\x90\xe0\xb9\x80\xe0\xb8\xa5\xe0\xb8\xb4\xe0\xb8\xa8\xe0\xb8\x84\xe0\xb8\xb8\xe0\xb8\x93\xe0\xb8\x84\xe0\xb9\x88\xe0\xb8\xb2 \xe0\xb8\x81\xe0\xb8\xa7\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9a\xe0\xb8\xa3\xe0\xb8\xa3\xe0\xb8\x94\xe0\xb8\xb2\xe0\xb8\x9d\xe0\xb8\xb9\xe0\xb8\x87\xe0\xb8\xaa\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xa7\xe0\xb9\x8c\xe0\xb9\x80\xe0\xb8\x94\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x88\xe0\xb8\x89\xe0\xb8\xb2\xe0\xb8\x99 \xe0\xb8\x88\xe0\xb8\x87\xe0\xb8\x9d\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9f\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x9e\xe0\xb8\xb1\xe0\xb8\x92\xe0\xb8\x99\xe0\xb8\xb2\xe0\xb8\xa7\xe0\xb8\xb4\xe0\xb8\x8a\xe0\xb8\xb2\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3 \xe0\xb8\xad\xe0\xb8\xa2\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\xa5\xe0\xb9\x89\xe0\xb8\xb2\xe0\xb8\x87\xe0\xb8\x9c\xe0\xb8\xa5\xe0\xb8\xb2\xe0\xb8\x8d\xe0\xb8\xa4\xe0\xb9\x85\xe0\xb9\x80\xe0\xb8\x82\xe0\xb9\x88\xe0\xb8\x99\xe0\xb8\x86\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9a\xe0\xb8\xb5\xe0\xb8\x91\xe0\xb8\xb2\xe0\xb9\x83\xe0\xb8\x84\xe0\xb8\xa3 \xe0\xb9\x84\xe0\xb8\xa1\xe0\xb9\x88\xe0\xb8\x96\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb9\x82\xe0\xb8\x97\xe0\xb8\xa9\xe0\xb9\x82\xe0\xb8\x81\xe0\xb8\xa3\xe0\xb8\x98\xe0\xb9\x81\xe0\xb8\x8a\xe0\xb9\x88\xe0\xb8\x87\xe0\xb8\x8b\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\xae\xe0\xb8\xb6\xe0\xb8\x94\xe0\xb8\xae\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\x94\xe0\xb9\x88\xe0\xb8\xb2 \xe0\xb8\xab\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\xad\xe0\xb8\xa0\xe0\xb8\xb1\xe0\xb8\xa2\xe0\xb9\x80\xe0\xb8\xab\xe0\xb8\xa1\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\x81\xe0\xb8\xb5\xe0\xb8\xac\xe0\xb8\xb2\xe0\xb8\xad\xe0\xb8\xb1\xe0\xb8\x8a\xe0\xb8\x8c\xe0\xb8\xb2\xe0\xb8\xaa\xe0\xb8\xb1\xe0\xb8\xa2 \xe0\xb8\x9b\xe0\xb8\x8f\xe0\xb8\xb4\xe0\xb8\x9a\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x9b\xe0\xb8\xa3\xe0\xb8\xb0\xe0\xb8\x9e\xe0\xb8\xa4\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x81\xe0\xb8\x8e\xe0\xb8\x81\xe0\xb8\xb3\xe0\xb8\xab\xe0\xb8\x99\xe0\xb8\x94\xe0\xb9\x83\xe0\xb8\x88 \xe0\xb8\x9e\xe0\xb8\xb9\xe0\xb8\x94\xe0\xb8\x88\xe0\xb8\xb2\xe0\xb9\x83\xe0\xb8\xab\xe0\xb9\x89\xe0\xb8\x88\xe0\xb9\x8a\xe0\xb8\xb0\xe0\xb9\x86 \xe0\xb8\x88\xe0\xb9\x8b\xe0\xb8\xb2 \xe0\xb8\x99\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9f\xe0\xb8\xb1\xe0\xb8\x87\xe0\xb9\x80\xe0\xb8\xad\xe0\xb8\xa2\xe0\xb8\xaf

      + + + +
      + +

      Hebrew (pangram)

      +

      \xd7\x93\xd7\x92 \xd7\xa1\xd7\xa7\xd7\xa8\xd7\x9f \xd7\xa9\xd7\x98 \xd7\x91\xd7\x99\xd7\x9d \xd7\x9e\xd7\x90\xd7\x95\xd7\x9b\xd7\x96\xd7\x91 \xd7\x95\xd7\x9c\xd7\xa4\xd7\xaa\xd7\xa2 \xd7\x9e\xd7\xa6\xd7\x90 \xd7\x97\xd7\x91\xd7\xa8\xd7\x94

      + +

      \xd7\x90\xd7\x95 \xd7\x94\xd7\xa0\xd7\xa1\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9d, \xd7\x9c\xd7\x91\xd7\x95\xd7\x90 \xd7\x9c\xd7\xa7\xd7\x97\xd7\xaa \xd7\x9c\xd7\x95 \xd7\x92\xd7\x95\xd7\x99 \xd7\x9e\xd7\xa7\xd7\xa8\xd7\x91 \xd7\x92\xd7\x95\xd7\x99, \xd7\x91\xd7\x9e\xd7\xa1\xd7\xaa \xd7\x91\xd7\x90\xd7\xaa\xd7\xaa \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa4\xd7\xaa\xd7\x99\xd7\x9d \xd7\x95\xd7\x91\xd7\x9e\xd7\x9c\xd7\x97\xd7\x9e\xd7\x94 \xd7\x95\xd7\x91\xd7\x99\xd7\x93 \xd7\x97\xd7\x96\xd7\xa7\xd7\x94 \xd7\x95\xd7\x91\xd7\x96\xd7\xa8\xd7\x95\xd7\xa2 \xd7\xa0\xd7\x98\xd7\x95\xd7\x99\xd7\x94, \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa8\xd7\x90\xd7\x99\xd7\x9d \xd7\x92\xd7\x93\xd7\x9c\xd7\x99\xd7\x9d: \xd7\x9b\xd7\x9b\xd7\x9c \xd7\x90\xd7\xa9\xd7\xa8-\xd7\xa2\xd7\xa9\xd7\x94 \xd7\x9c\xd7\x9b\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9b\xd7\x9d, \xd7\x91\xd7\x9e\xd7\xa6\xd7\xa8\xd7\x99\xd7\x9d--\xd7\x9c\xd7\xa2\xd7\x99\xd7\xa0\xd7\x99\xd7\x9a

      + + + + +

      Arabic

      +

      \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.

      + +

      \xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f

      + + +

      Persian / Farsi

      +

      \xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.

      + + + +

      Urdu

      +

      تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہی۔ اسلۓ انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہیۓ۔ +

      + +

      Pashto (ps)

      +

      \xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a. +

      + + +

      Sindhi (sd)

      +

      +واشنگٽن (م ڊ) آمريڪا چيو آهي ته ڪيري لوگربل تي پاڪ فوج جي تحفظات سان پاڪستان ۾ جمهوري طور آيل زرداري جي حڪومت کي ڪوبه خطرو ناهي، ان سوال تي تي ڪيري لوگربل ۾ پاڪستان کي غير مشروط امداد ڏيڻ جي ڳالهه ڪئي وئي آهي، جڏهن ته فوجي امداد تي شرط لاڳو ڪيا +

      + +
      + + +

      Indic Scripts

      + +

      +Malayalam +

      +

      സംസ്ഥാനത്ത് രാഷ്ട്രീയ പുകമറ സൃഷ്ടിക്കാനാണ് വോട്ടര്‍പട്ടിക വിവാദത്തിലൂടെ കോണ്‍ഗ്രസ് ശ്രമിക്കുന്നതെന്ന് സിപി‌എം സംസ്ഥാന സെക്രട്ടറി പിണറായി വിജയന്‍ കുറ്റപ്പെടുത്തി. ഉദ്യോഗസ്ഥരെ ഭീഷണിപ്പെടുത്തി വരുതിയില്‍ നിര്‍ത്താനാണ് വയലാര്‍ രവി ഉള്‍പ്പെടെയുള്ളവര്‍ ശ്രമിക്കുന്നതെന്നും പിണറാ‍യി പ്രസ്താവനയില്‍ ആരോപിച്ചു. +

      + +

      Kannada

      +

      +ತಮ್ಮದೇ ಕುಟುಂಬದ ಯುವತಿಯೊಬ್ಬಳನ್ನು ಸತತ ಹಲವಾರು ವರ್ಷ ಭೋಗಿಸಿದ ಭಾರತೀಯ ಮೂಲದ ಮೂವರು ದುರುಳ ಸಂಬಂಧಿಕರು ಅಪರಾಧಿಗಳೆಂದು ಸಾಬೀತಾಗಿದ್ದು, ಇಂಗ್ಲೆಂಡ್ ನ್ಯಾಯಾಲಯವು ದೀರ್ಘಾವಧಿ ಕಠಿಣ ಶಿಕ್ಷೆ ವಿಧಿಸಿದೆ. +

      + +

      Telegu

      +

      ఆగ్నేయ ఇరాన్‌లో ఆదివారం నాడు ఓ ఆత్మాహుతి దాడి జరగడంతో ఇరవై మంది మృతి చెందారు. +
      + +ఆగ్నేయ ఇరాన్‌లో ఆత్మాహుతి దాడి జరగడంతో ఐదుగురు ఎలిట్ రెవల్యూషనరీ గార్డ్‌లతో సహా ప్రముఖ కమాండర్‌లతోసహా మొత్తం ఇరవై మంది మృతి చెందినట్లు ఇరాన్ లోక్‌సభ స్పీకర్ అలీ లారిజానీ తెలిపారు. +

      + + + +

      Tamil (ta)

      +

      \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xae\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xa8\xe0\xae\xae\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d, \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\xb0\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xa3\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81 \xe0\xae\x92\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81.

      + + +

      Oriya

      +

      ଓଡ଼ିଆ ଉଇକିପେଡିଆ ଆପଣଙ୍କୁ ସ୍ବାଗତ କରୁଛି। ଏହି ଉନ୍ମୁକ୍ତ ଜ୍ଞାନକୋଷଟି ଇଣ୍ଟରନେଟ ଉପରେ ଆଧାରିତ ଏବଂ ଏହା ବିଶ୍ବର ୫୦ଟି ଭାଷାରେ ଉପଲବ୍ଧ । ଏହାକୁ ଆପଣ ମଧ୍ୟ ବର୍ଦ୍ଧିତ ଓ ପରିବର୍ତିତ କରିପାରିବେ ଏବଂ ଏହାକୁ ଉନ୍ନତ କରିବା ପାଇଁ ନିଜର ଅବଦାନ ଦେଇ ପାରିବେ । ଆପଣଙ୍କ ପସନ୍ଦର ବିଷୟ ଗୁଡିକୁ ଆପଣ ନୂତନ ଭାବେରେ ଯୋଗ କରିପାରିବେ କିମ୍ବା ଏହି ପୃଷ୍ଠାକୁ ସମ୍ପାଦନ କରି ଏହା ସହିତ ଯୋଗ କରିପାରିବ । ସମସ୍ତ ପାଠ ଗୁଡିକ GNU ମୁକ୍ତ ଦଲିଲକରଣ ଲାଇସେନ୍ସର ସର୍ତ୍ତ ଅଧୀନରେ ଉପଲବ୍ଧ । ତଥାପି, ଆପଣ ଏହାକୁ ମୁକ୍ତ ଭାବେର ଇଲେକ୍ଟ୍ରୋନିକ୍ସ ପ୍ରିଣ୍ଟ୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ପ୍ରିଣ୍ଟର ମାଧ୍ୟମରେ ବ୍ୟବହାର କରିପାରିବ । +

      + +

      Punjabi

      +

      ਕੇਂਦਰੀ ਗ੍ਰਹਿਮੰਤਰੀ ਪੀ.ਚਿਦੰਬਰਮ ਨੇ ਐਤਵਾਰ ਨੂੰ ਤਮਿਲਨਾਢੂ ਦੇ ਮੁੱਖਮੰਤਰੀ ਐਮ.ਕਰੁਣਾਨਿਧੀ ਨਾਲ ਮੁਲਾਕਾਤ ਕੀਤੀ।ਉਨ੍ਹਾ ਨੇ ਸ਼੍ਰੀਲੰਕਾ 'ਚ ਲਿੱਟੇ ਦੇ ਖਿਲਾਫ਼ ਯੁੱਧ ਦੌਰਾਨ ਉੱਝੜੇ ਹੋਏ ਲੱਗਭਗ ਢਾਈ ਲੱਖ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ 'ਤੇ ਚਰਚਾ ਕੀਤੀ। +

      + +

      Gujarati (gu)

      +

      +આ વાત હજાર વાર કહેવામાં આવી છે કે ફિલ્મ બનાવતી વખેત હંમેશા સૌથી વધુ ધ્યાન વાર્તા અને સ્ક્રીનપ્લે પર આપવુ જોઈએ. કારણ કે આ કોઈ પણ ફિલ્મની સફળતાનો મુખ્ય આધાર હોય છે. +
      +મોટા ફિલ્મ સ્ટાર્સ સાઈન કરવાથી, સ્ટંટ અને ગીતોથી પાણીની અંદર કે આકાશમાં કરોડો રૂપિયા ખર્ચ કરી ફિલ્માવેલા દ્રશ્યોથી કશુ જ નથી થતુ. પરંતુ આ બુનિયાદી વાત અત્યાર સુધી કોઈ લોકોને સમજાતી નથી. +

      + + +

      Hindi (hi)

      +

      \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa5\x80\xe0\xa4\x9a \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa3 \xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa5\x88\xe0\xa4\x9a \xe0\xa4\xa6\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa1 414 \xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xb0\xe0\xa4\x96\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x87\xe0\xa4\x9f \xe0\xa4\x96\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\xb9\xe0\xa5\x88\xe0\xa4\x82.

      + + +

      Nepali (ne) - Devanagari

      +

      \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa2\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa5\x88 \xe0\xa4\x86\xe0\xa4\x89\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa5\x87\xe0\xa4\xa0 \xe0\xa4\xae\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xad\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb9\xe0\xa4\xb8 \xe0\xa4\x9a\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x95\xe0\xa5\x80\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5\xe0\xa4\x95\xe0\xa5\x88 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb7\xe0\xa4\xaf\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8 \xe0\xa4\x86\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x97 \xe0\xa4\xb0 \xe0\xa4\x86\xe0\xa4\xa0 \xe0\xa4\xa6\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa4\xbe, \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa5\x88 \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9b\xe0\xa5\xa4

      + + +

      Bengali (bn)

      +

      +দক্ষিণ ওয়াজিরিস্থানে কর্মরত স্বেচ্ছাসেবী ও ত্রাণ সংস্থাগুলো ধারণা করছে সেনা অভিযানের তীব্রতা বাড়লে এই সংখ্যাটা আরও অনেক বেড়ে যাবে +
      +শরণার্থীদের স্রোত সামলাতে তারা ইতিমধ্যেই হিমশিম খাচ্ছেন, ফলে লড়াই থেকে পালিয়ে আসা বেসামরিক মানুষজনের সংখ্যা আরও বাড়লে স্বভাবতই সঙ্কট আরও জটিল হয়ে উঠবে +

      + + +

      Assamese

      +

      অসমীয়া ৱিকিপিডিয়াৰ উদ্দেশ্য হ'ল সম্পূৰ্ণ অসমীয়া ভাষাত এখনি বিশ্বকোষ প্ৰণয়ন কৰা। অন্য কোনো ভাষাৰ প্ৰবন্ধ এই বিশ্বকোষৰ বাবে গ্ৰহন কৰা নহ'ব। বিশ্বকোষৰ অৱদানকাৰীসকললৈ সাদৰেৰে অনুৰোধ জনোৱা হ'ল যাতে তেখেতসকলে অসমীয়া ভাষাৰ প্ৰচলিত বানান পদ্ধতি মানি চলে। বিদেশী শব্দৰ অসমীয়া প্ৰতিৰূপৰ ক্ষেত্ৰত যিহেতু অসমীয়া সাহিত্যিকসকল এতিয়াও ঐক্যমতত উপনীত হ'ব পৰা নাই, ৱিকিপিডিয়াত বিদেশী শব্দৰ যিকোনো ধৰনৰ অসমীয়া ৰূপ গ্ৰাহ্য কৰা হ'ব। +

      + + + + +

      Japanese (pangrams)

      +
      Iroha Uta SJIS
      + +

      \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99

      + +
      Tori Naku Uta
      + +

      \xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1

      + +
      Ametsuchi No Uta
      + +

      \xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6

      + +
      Taini no Uta
      + +

      \xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac

      + +

      Chinese (simplified) GB2312 GB

      + +

      \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82

      + + +

      Chinese (Traditional - Hong Kong) Big5

      + +

      \xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82

      + + + +

      Korean UHC

      + +

      \xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4.

      + + +

      Mixed

      +

      Distinguishes multiple languages enclosed in same element (tags): Arabic \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 +English Cat sat on the large mat +Tamil \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe +Hindi \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 +Japanese \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80 +Chinese \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac +Thai \xe0\xb9\x80\xe0\xb8\x9b\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa1\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa9\xe0\xb8\xa2 +Viet M\xc3\xb4\xcc\xa3t kha\xcc\x89o sa\xcc\x81t m\xc6\xa1\xcc\x81i cho bi\xc3\xaa\xcc\x81t ng\xc6\xb0\xc6\xa1\xcc\x80i d\xc3\xa2n +Tamil \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe +Chinese \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac +English Cat sat on the large mat +

      + + +

      Unicode Plane 2

      +
      +Unicode Plane 0 (BMP U+0000 - U+FFFF): +\xe9\xbc\x82 \xe9\xbc\x88 \xe9\xbc\x97 \xe9\xbc\xa6 \xe9\xbc\xa7 \xe9\xbc\xb9 \xe9\xbd\x84 \xe9\xbd\x85 \xe9\xbd\x90 \xe9\xbd\x93 \xe9\xbd\x9a \xe9\xbd\xa2 \xe9\xbd\xa9 \xe9\xbd\xbf \xe9\xbe\x8e \xe9\xbe\x99 \xe9\xbe\x9f \xe9\xbe\xa5 +------- +Unicode Plane 2 (SIP characters > U+20000): +\xf0\xa0\x80\xa1 \xf0\xa0\x80\xbe \xf0\xa0\x81\x86 \xf0\xa0\x81\x8e \xf0\xa0\x81\xa8 \xf0\xa0\x82\x86 \xf0\xa0\x82\x87 \xf0\xa0\x82\x8a \xf0\xa0\x82\x94 \xf0\xa0\x83\x8a \xf0\xa0\x83\x8b \xf0\xa0\x83\x8c \xf0\xa0\x83\x8d \xf0\xa0\x83\x91 \xf0\xa0\x83\xae \xf0\xa0\x84\x8c \xf0\xa0\x84\x8e \xf0\xa0\x84\x98 \xf0\xa0\x86\xa4 \xf0\xa0\x86\xa9 \xf0\xa0\x86\xab \xf0\xa0\x87\x81 \xf0\xa0\x87\x94 \xf0\xa0\x87\xb2 \xf0\xa0\x88\x84 \xf0\xa0\x88\x8c \xf0\xa0\x88\x94 \xf0\xa0\x88\xb9 \xf0\xa0\x89\x9b \xf0\xa0\x89\xb4 \xf0\xa0\x89\xb5 \xf0\xa0\x8a\x99 \xf0\xa0\x8a\x9e \xf0\xa0\x8a\xa0 \xf0\xa0\x8a\xb7 \xf0\xa0\x8a\xbf \xf0\xa0\x8b\x80 \xf0\xa0\x8b\xa5 \xf0\xa0\x8c\x8a +------- +Unicode Plane 0 (BMPU+0000 - U+FFFF): +\xe9\xbc\x82 \xe9\xbc\x88 \xe9\xbc\x97 \xe9\xbc\xa6 \xe9\xbc\xa7 \xe9\xbc\xb9 \xe9\xbd\x84 \xe9\xbd\x85 \xe9\xbd\x90 \xe9\xbd\x93 \xe9\xbd\x9a \xe9\xbd\xa2 \xe9\xbd\xa9 \xe9\xbd\xbf \xe9\xbe\x8e \xe9\xbe\x99 \xe9\xbe\x9f \xe9\xbe\xa5
      +
      + + +"; + + + + + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->useAdobeCJK = true; // Default setting in config.php + // You can set this to false if you have defined other CJK fonts + +$mpdf->SetAutoFont(AUTOFONT_ALL); // AUTOFONT_CJK | AUTOFONT_THAIVIET | AUTOFONT_RTL | AUTOFONT_INDIC // AUTOFONT_ALL + // () = default ALL, 0 turns OFF (default initially) + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php b/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php new file mode 100644 index 000000000..0793ac12e --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php @@ -0,0 +1,384 @@ + +body, p { direction: rtl; font-family: 'XB Zar'; font-size: 15pt; } + + +

      Arabic Languages and Fonts

      + + + + +

      Arabic
      +٠.١.٢.٣.٤.٥.٦.٧.٨.٩ +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +\xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e<>\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c +\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1 +
      +\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8 +
      +\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf +
      +الحمد لله رب العالمين والصلاة والسلام على سيد المرسلين سيدنا ومولانا محمد وعلى آله وصحبه صلاة وسلاماً دائمين إلى يوم الدين. +
      +٠.١.٢.٣.٤.٥.٦.٧.٨.٩ +

      + + + +

      Arabic
      +٠.١.٢.٣.٤.٥.٦.٧.٨.٩ +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +\xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e<>\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c +\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1 +
      +\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8 +
      +\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf +
      +الحمد لله رب العالمين والصلاة والسلام على سيد المرسلين سيدنا ومولانا محمد وعلى آله وصحبه صلاة وسلاماً دائمين إلى يوم الدين. +
      +٠.١.٢.٣.٤.٥.٦.٧.٨.٩ +

      + + + + + + +

      Farsi
      +همهٔ افراد بشر آزاد به دنیا می‌آیند و از دید حیثیت و حقوق با هم برابرند، همه دارای اندیشه و وجدان هستند و باید در برابر یکدیگر با روح برادری رفتار کنند. +
      +٠.١.٢.٣.٤.٥.٦.٧.٨.٩ +

      + + + + + +

      Urdu
      +\xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94 +
      +\xda\x86\xdb\x8c\xd9\x81 \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xda\xa9\xdb\x8c \xd8\xb3\xd8\xb1\xda\xaf\xd8\xb1\xd9\x85\xdb\x8c\xd8\xa7\xda\xba \xd9\x85\xd8\xad\xd8\xaf\xd9\x88\xd8\xaf \xda\xa9\xd8\xb1\xd9\x86\xdb\x92 \xd8\xa7\xd9\x88\xd8\xb1 \xd9\xbe\xd9\x88\xd9\x84\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb9\xdb\x8c\xd9\x86\xd8\xa7\xd8\xaa\xdb\x8c \xda\xa9\xdb\x92 \xd8\xad\xda\xa9\xd9\x85 \xd9\x86\xd8\xa7\xd9\x85\xdb\x92 \xd9\xbe\xd8\xb1 \xd8\xaf\xd8\xb3\xd8\xaa\xd8\xae\xd8\xb7 \xda\xa9\xd8\xb1\xda\xa9\xdb\x92 \xd8\xba\xd9\x84\xd8\xb7 \xda\xa9\xdb\x8c\xd8\xa7: \xd8\xac\xd9\x86\xd8\xb1\xd9\x84 \xd9\x85\xd8\xb4\xd8\xb1\xd9\x81 +

      + + + +

      Pashto
      +\xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a. +
      +\xd9\x87 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xda\xa9\xdb\x90 \xd9\x8a\xd9\x88\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd9\x86\xd8\xb8\xd8\xb1 \xd8\xb4\xd9\x85\xdb\x90\xd8\xb1\xd9\x86\xd9\x87 \xda\x9a\xd9\x8a\xd9\x8a \xda\x86\xdb\x90 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\xa7\xd9\x86 \xd9\xbe\xd9\x87 \xd8\xb2\xd9\x8a\xd8\xa7\xd8\xaa\xdb\x90\xd8\xaf\xd9\x88\xd9\x86\xda\xa9\xd9\x8a \xd8\xaa\xd9\x88\xda\xaf\xd9\x87 \xd8\xaf \xd8\xad\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\xd9\x88 \xd9\xbe\xd9\x87 \xd8\xa7\xda\x93\xd9\x87 \xd8\xa8\xd8\xaf\xd8\xa8\xd9\x8a\xd9\x86\xd9\x87 \xd8\xaf\xd9\x8a \xd8\xa7\xd9\x88 \xd8\xaf \xd8\xa8\xdb\x90 \xd8\xa8\xd8\xa7\xd9\x88\xd8\xb1\xd9\x8a \xd8\xa7\xd8\xad\xd8\xb3\xd8\xa7\xd8\xb3 \xda\xa9\xd9\x88\xd9\x8a\xd8\x8c \xd8\xae\xd9\x88 \xd8\xae\xd9\xbe\xd9\x84 \xd9\x87\xd9\x8a\xd9\x88\xd8\xa7\xd8\xaf \xd9\x8a\xd9\x88\xd9\x85\xd9\x88\xd9\xbc\xd9\x89 \xd8\xba\xd9\x88\xd8\xa7\xda\x93\xd9\x8a. +

      + + + + +

      Sindhi
      +فوج طرفان ڪيري لوگربل جي مخالفت سبب زرداري حڪومت کي خطرو ناهي:آمريڪا +
      +واشنگٽن (م ڊ) آمريڪا چيو آهي ته ڪيري لوگربل تي پاڪ فوج جي تحفظات سان پاڪستان ۾ جمهوري طور آيل زرداري جي حڪومت کي ڪوبه خطرو ناهي، ان سوال تي تي ڪيري لوگربل ۾ پاڪستان کي غير مشروط امداد ڏيڻ جي ڳالهه ڪئي وئي آهي، جڏهن ته فوجي امداد تي شرط لاڳو ڪيا +
      +٠.١.٢.٣.٤.٥.٦.٧.٨.٩ +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +

      + + + + +From http://titus.uni-frankfurt.de/unicode/alphabet/arabtest.htm +
      + +1. Arabic: +
      +ا ـا ـاـ اـ +
      +ب ـب ـبـ بـ +
      +ت ـت ـتـ تـ +
      +ج ـج ـجـ جـ +
      +ح ـح ـحـ حـ +
      +خ ـخ ـخـ خـ +
      +د ـد ـد د +
      +ذ ـذ ـذ ذ +
      +ر ـر ـر ر +
      +ز ـز ـز ز +
      +س ـس ـسـ سـ +
      +ش ـش ـشـ شـ +
      +ص ـص ـصـ صـ +
      +ض ـض ـضـ ضـ +
      +ط ـط ـطـ طـ +
      +ظ ـظ ـظـ ظـ +
      +ع ـع ـعـ عـ +
      +غ ـغ ـغـ غـ +
      +ف ـف ـفـ فـ +
      +ق ـق ـقـ قـ +
      +ك ـك ـكـ كـ +
      +ل ـل ـلـ لـ +
      +م ـم ـمـ مـ +
      +ن ـن ـنـ نـ +
      +ه ـه ـهـ هـ +
      +و ـو ـوـ وـ +
      +ي ـي ـيـ يـ +
      +
      + +2. Persian: +
      +Four extra letters: پ چ ژ گ +
      +ـپ ـپـ پـ +
      +ـچ ـچـ پچ +
      +ـژ ـژـ ژـ +
      +ـگ ـگـ گـ +
      +Original Arabic letter ك +modified Persian letter ک +
      +Original Arabic letter ي +modified Persian letter ى
      +
      +همهٔ افراد بشر آزاد به دنیا می‌آیند و از دید حیثیت و حقوق با هم برابرند، همه دارای اندیشه و وجدان هستند و باید در برابر یکدیگر با روح برادری رفتار کنند. +
      +
      + +3. Pashto: +
      +
      +ا ـا ـاـ اـ +ب ـب ـبـ بـ +پ ـپ ـپـ پـ +ت ـت ـتـ تـ +ټ ـټ ـټـ ټـ +ث ـث ـثـ ثـ +ج ـج ـجـ جـ +ځ ـځ ـځـ ځـ +چ ـچ ـچـ چـ +څ ـڅ ـڅـ څـ +ح ـح ـحـ حـ +خ ـخ ـخـ خـ + +د ـد ـدـ دـ +ډ ـډ ـډـ ډـ +ذ ـذ ـذـ ذـ +ر ـر ـرـ رـ +ړ ـړ ـړـ ړـ +ز ـز ـزـ زـ +ژ ـژ ـژـ ژـ +ږ ـږ ـږـ ږـ +س ـس ـسـ سـ +ش ـش ـشـ شـ +ښ ـښ ـښـ ښـ + +ص ـص ـصـ صـ +ض ـض ـضـ ضـ +ط ـط ـطـ طـ +ظ ـظ ـظـ ظـ +ع ـع ـعـ عـ +غ ـغ ـغـ غـ +ف ـف ـفـ فـ +ق ـق ـقـ قـ +ک ـک ـکـ کـ +ګ ـګ ـګـ ګـ +ل ـل ـلـ لـ +م ـم ـمـ مـ + +ن ـن ـنـ نـ +ڼ ـڼ ـڼـ ڼـ +ڼ ـڼ ـڼـ ڼـ +ؤ ـؤ ـؤـ ؤـ +ه ـه ـهـ هـ +ۀ ـۀ ـۀـ ۀـ +ی ـی ـیـ یـ +ي ـي ـيـ يـ +ې ـې ـېـ ېـ +ۍ ـۍ ـۍـ ۍـ +ئ ـئ ـئـ ئـ +
      +
      +
      + + +4. Urdu: +
      +
      +ا ـا ـاـ اـ +ب ـب ـبـ بـ +پ ـپ ـپـ پـ +ت ـت ـتـ تـ +ٹ ـٹ ـٹـ ٹـ +ث ـث ـثـ ثـ +ج ـج ـجـ جـ +ح ـح ـحـ حـ +خ ـخ ـخـ خـ +د ـد ـدـ دـ +ڈ ـڈ ـڈـ ڈـ +ذ ـذ ـذـ ذـ +ر ـر ـرـ رـ +ڑ ـڑ ـڑـ ڑـ +ژ ـژ ـژـ ژـ +س ـس ـسـ سـ +ش ـش ـشـ شـ +ص ـص ـصـ صـ +ض ـض ـضـ ضـ +ط ـط ـطـ طـ +ظ ـظ ـظـ ظـ +ع ـع ـعـ عـ +غ ـغ ـغـ غـ +ف ـف ـفـ فـ +ق ـق ـقـ قـ +ک ـک ـکـ کـ +گ ـگ ـگـ گـ +ل ـل ـلـ لـ +م ـم ـمـ مـ +ن ـن ـنـ نـ +و ـو ـوـ وـ +ہ ﮩ ﮨ +ھ ـھ ـھـ ھـ +ء ـء ـءـ ءـ +ی ـی ـیـ یـ +ے ـے ـےـ ےـ +
      +تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہی۔ اسلۓ انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہیۓ۔ +
      +
      +
      + + +5. Sindhi: +
      +
      + ڄ ـڄ ـڄـ ڄـ + ٺ ـٺ ـٺـ ٺـ + ٽ ـٽ ـٽـ ٽـ + ٿ ـٿ ـٿـ ٿـ + ڀ ـڀ ـڀـ ڀـ + ٻ ـٻ ـٻـ ٻـ + ڙ ـڙ ـڙـ ڙـ + ڍ ـڍ ـڍـ ڍـ + ڊ ـڊ ـڊـ ڊـ + ڏ ـڏ ـڏـ ڏـ + ڌ ـڌ ـڌـ ڌـ + ڇ ـڇ ـڇـ ڇـ + ڃ ـڃ ـڃـ ڃـ + ڦ ـڦ ـڦـ ڦـ + ڻ ـڻ ـڻـ ڻـ + ڱ ـڱ ـڱـ ڱـ + ڳ ـڳ ـڳـ ڳـ + ڪ ـڪ ـڪـ ڪـ +
      + +ج ھ ڄ ج پ ث ٺ ٽ ٿ ت ڀ ٻ ب ا +ڙ ر ذ ڍ ڊ ڏ ڌ د خ ح ڇ چ ڃ +ق ڦ ف غ ع ظ ط ض ص ش س ز ڙھ +ي ه و ڻ ن م ل ڱ گھ ڳ گ ک ڪ +
      +
      +
      + + + +

      Arabic

      +

      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 + \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.

      + +

      \xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f

      + +

      \xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 "\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9" \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 "\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86\xd8\xaa\xd9\x87\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xaf\xd9\x8a\xd8\xaf\xd8\xa9" \xd9\x84\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab" \xd9\x88\xd8\xa7\xd8\xb5\xd9\x81\xd8\xa9 \xd8\xa7\xd9\x8a\xd8\xa7\xd9\x87 \xd8\xa8\xd9\x80"\xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81" \xd8\xa7\xd9\x84\xd8\xb0\xd9\x8a \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x87\xd8\xaf\xd9\x81 "\xd9\x85\xd8\xaf\xd9\x86\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x85\xd8\xb3\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd9\x86".

      + +

      \xd9\x88\xd8\xa7\xd8\xb6\xd8\xa7\xd9\x81\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd9\x87\xd8\xa7: "\xd9\x85\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xb3\xd9\x81 \xd8\xa7\xd9\x86 \xd9\x8a\xd8\xa3\xd8\xaa\xd9\x8a \xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab \xd8\xa8\xd9\x8a\xd9\x86\xd9\x85\xd8\xa7 \xd8\xaa\xd8\xa8\xd8\xb0\xd9\x84 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd9\x84\xd8\xaa\xd8\xae\xd8\xb7\xd9\x8a \xd8\xa7\xd9\x84\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa7\xd8\xae\xd9\x84\xd9\x8a\xd8\xa9".

      + +

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84 \xd8\xa7\xd8\xad\xd8\xaa\xd9\x88\xd8\xa7\xd8\xa1 \xd9\x85\xd8\xb8\xd8\xa7\xd9\x87\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd9\x85\xd8\xa8\xd8\xb1\xd8\xb1 \xd9\x84\xd9\x87\xd8\xa7 \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd8\xaa\xd9\x81\xd9\x8a\xd8\xaf \xd9\x85\xd8\xb5\xd8\xa7\xd9\x84\xd8\xad \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb9\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xb7\xd9\x88\xd9\x8a\xd9\x84".

      + +

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84

      + +

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84

      + + +

      \xd9\x83\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd9\x81\xd8\xa7\xd8\xb1\xd9\x88 \xd8\xaf\xd9\x8a \xd8\xb3\xd9\x88\xd8\xaa\xd9\x88 \xd9\x85\xd8\xa8\xd8\xb9\xd9\x88\xd8\xab \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x85 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xad\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb1\xd9\x82 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd8\xb3\xd8\xb7 \xd8\xa7\xd9\x84\xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa9 \xd9\x88\xd9\x82\xd8\xa7\xd9\x84 "\xd8\xa7\xd9\x86\xd9\x87 \xd9\x83\xd8\xa7\xd9\x86 \xd9\x87\xd8\xac\xd9\x88\xd9\x85\xd8\xa7 \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd8\xb4\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xb9\xd8\xa7\xd8\xaf\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x83\xd8\xa7\xd9\x86\xd9\x88\xd8\xa7 \xd9\x8a\xd9\x82\xd9\x88\xd9\x85\xd9\x88\xd9\x86 \xd8\xa8\xd9\x86\xd8\xb4\xd8\xa7\xd8\xb7\xd9\x87\xd9\x85 \xd8\xa7\xd9\x84\xd9\x8a\xd9\x88\xd9\x85\xd9\x8a \xd9\x88\xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x85\xd8\xb1 \xd9\x84\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd8\xaa\xd8\xa8\xd8\xb1\xd9\x8a\xd8\xb1\xd9\x87".

      + +

      Farsi / Persian (fa)

      +

      \xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.

      + +

      \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4\xd8\x8c \xd8\xaf\xd8\xb1 \xda\x86\xd9\x87\xd8\xa7\xd8\xb1\xd9\x85\xdb\x8c\xd9\x86 \xd8\xb3\xd8\xa7\xd9\x84\xda\xaf\xd8\xb1\xd8\xaf \xd8\xa7\xd8\xb4\xd8\xba\xd8\xa7\xd9\x84 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd9\x85\xdb\x8c \xda\xaf\xd9\x88\xdb\x8c\xd8\xaf \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xb1\xd8\xa7\xd8\xaa\xda\x98\xdb\x8c \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x82\xd8\xb1\xd8\xa7\xd8\xb1 \xd9\x86\xdb\x8c\xd8\xb1\xd9\x88\xd9\x87\xd8\xa7\xdb\x8c \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7\xdb\x8c\xdb\x8c \xd8\xa8\xdb\x8c\xd8\xb4\xd8\xaa\xd8\xb1\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xa8\xd8\xba\xd8\xaf\xd8\xa7\xd8\xaf\xd8\x8c \xd9\x85\xd8\xaf\xd8\xaa\xdb\x8c \xd8\xb7\xd9\x88\xd9\x84 \xd8\xae\xd9\x88\xd8\xa7\xd9\x87\xd8\xaf \xda\xa9\xd8\xb4\xdb\x8c\xd8\xaf.

      + +

      \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7 \xd9\x88\xdb\x8c\xd8\xb2\xd8\xa7\xdb\x8c \xd8\xb1\xd8\xa6\xdb\x8c\xd8\xb3 \xd8\xac\xd9\x85\xd9\x87\xd9\x88\xd8\xb1 \xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd9\x85\xd9\x86\xd8\xb8\xd9\x88\xd8\xb1 \xd8\xad\xd8\xb6\xd9\x88\xd8\xb1 \xd9\x88\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xac\xd9\x84\xd8\xb3\xd9\x87 \xd8\xb1\xd8\xa7\xdb\x8c \xda\xaf\xdb\x8c\xd8\xb1\xdb\x8c \xd8\xb4\xd9\x88\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xa7\xd9\x85\xd9\x86\xdb\x8c\xd8\xaa \xd8\xa8\xd8\xb1\xd8\xa7\xdb\x8c \xd9\x82\xd8\xb7\xd8\xb9\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd8\xb9\xd9\x84\xdb\x8c\xd9\x87 \xd8\xa7\xdb\x8c\xd9\x86 \xda\xa9\xd8\xb4\xd9\x88\xd8\xb1 \xd8\xb5\xd8\xa7\xd8\xaf\xd8\xb1 \xda\xa9\xd8\xb1\xd8\xaf.

      + + +

      Urdu

      +

      \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94

      + + +

      Pashto (ps)

      +

      \xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.

      + +"; +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; + +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example32_indic.php b/inc/3rdparty/libraries/mpdf/examples/example32_indic.php new file mode 100644 index 000000000..9bfdee78c --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example32_indic.php @@ -0,0 +1,219 @@ + +body, p { font-size: 15pt;} +h3 { font-size: 15pt; margin-bottom:0; } + + +

      Indic Fonts and Languages

      + +

      +Malayalam +

      +

      സംസ്ഥാനത്ത് രാഷ്ട്രീയ പുകമറ സൃഷ്ടിക്കാനാണ് വോട്ടര്‍പട്ടിക വിവാദത്തിലൂടെ കോണ്‍ഗ്രസ് ശ്രമിക്കുന്നതെന്ന് സിപി‌എം സംസ്ഥാന സെക്രട്ടറി പിണറായി വിജയന്‍ കുറ്റപ്പെടുത്തി. ഉദ്യോഗസ്ഥരെ ഭീഷണിപ്പെടുത്തി വരുതിയില്‍ നിര്‍ത്താനാണ് വയലാര്‍ രവി ഉള്‍പ്പെടെയുള്ളവര്‍ ശ്രമിക്കുന്നതെന്നും പിണറാ‍യി പ്രസ്താവനയില്‍ ആരോപിച്ചു. +
      + +വയലാര്‍ രവിക്കെതിരെ ഇതിന് നടപടി സ്വീകരിക്കണമെന്നും പിണറായി ആവശ്യപ്പെട്ടു. അക്രമപ്രവര്‍ത്തനങ്ങളെ പ്രോത്സാഹിപ്പിക്കുന്നതാണ് രവിയുടെ വാക്കുകള്‍. അധികാരത്തിന്‍റെ മത്ത് തലയ്ക്ക് പിടിച്ചിരിക്കുന്നത് കൊണ്ടാണ് കോണ്‍ഗ്രസുകാര്‍ ഇങ്ങനെ പെരുമാറുന്നതെന്നും പിണറായി ചൂണ്ടിക്കാട്ടി. +
      + +സ്വതന്ത്രമായി നടക്കുന്ന കണ്ണൂരിലെ തെരഞ്ഞെടുപ്പിനെ അട്ടിമറിക്കാനാണ് യു‌ഡി‌എഫ് ശ്രമിക്കുന്നതെന്നും പിണറായി ആരോപിച്ചു. +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +൦൧൨൩൪൫൬൭൮൯ +

      + +

      Kannada

      +

      +ತಮ್ಮದೇ ಕುಟುಂಬದ ಯುವತಿಯೊಬ್ಬಳನ್ನು ಸತತ ಹಲವಾರು ವರ್ಷ ಭೋಗಿಸಿದ ಭಾರತೀಯ ಮೂಲದ ಮೂವರು ದುರುಳ ಸಂಬಂಧಿಕರು ಅಪರಾಧಿಗಳೆಂದು ಸಾಬೀತಾಗಿದ್ದು, ಇಂಗ್ಲೆಂಡ್ ನ್ಯಾಯಾಲಯವು ದೀರ್ಘಾವಧಿ ಕಠಿಣ ಶಿಕ್ಷೆ ವಿಧಿಸಿದೆ. +
      + +27ರ ಹರೆಯದ ಯುವತಿಯನ್ನು ಆಕೆಯ ಮಲತಂದೆ, ಮಲದೊಡ್ಡಪ್ಪ ಮತ್ತು ಭಾವ ಅತ್ಯಾಚಾರ ನಡೆಸಿದ್ದು ಕಾರ್ಡಿಫ್ ಕ್ರೌನ್ ನ್ಯಾಯಾಲಯದಲ್ಲಿ ರುಜುವಾತಾದ ಕಾರಣ ಶಿಕ್ಷೆ ಘೋಷಿಸಲಾಗಿದೆ. ಅಪರಾಧಿಗಳಲ್ಲಿ ಮಲತಂದೆ ಮತ್ತು ಮಲದೊಡ್ಡಪ್ಪ ಅಕ್ರಮ ವಲಸಿಗರಾಗಿದ್ದು, ಶಿಕ್ಷೆಯ ಅವಧಿ ಮುಗಿದ ನಂತರ ಅವರನ್ನು ಭಾರತಕ್ಕೆ ಗಡಿಪಾರು ಮಾಡಲಾಗುತ್ತದೆ. +
      + +55ರ ಹರೆಯದ ಮಲದೊಡ್ಡಪ್ಪ ಮತ್ತು 50ರ ಹರೆಯದ ಮಲತಂದೆಗೆ ಕ್ರಮವಾಗಿ 20 ಮತ್ತು 15 ವರ್ಷಗಳ ಕಾಲ ಜೈಲು ಶಿಕ್ಷೆ ವಿಧಿಸಲಾಗಿದೆ. 27ರ ಹರೆಯದ ಆಕೆಯ ಭಾವನಿಗೆ 12 ವರ್ಷಗಳ ದಂಡನೆ ನೀಡಲಾಗಿದೆ. +
      + +ಬಾಲಕಿಯನ್ನೇ ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದರು.. +ಯುವತಿಗೆ 14 ವರ್ಷವಿದ್ದಾಗ ಆಕೆಯ ಗರ್ಭಕ್ಕೆ ತಾನೇ ಕಾರಣವಾಗಿರುವುದನ್ನೂ ಮಲ ದೊಡ್ಡಪ್ಪ ವಿಚಾರಣೆ ಅವಧಿಯಲ್ಲಿ ಒಪ್ಪಿಕೊಂಡಿದ್ದಾನೆ. ಆತ ಏಳು ಬಾರಿ ಆಕೆಯನ್ನು ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದು, ಮೂರು ಬಾರಿ ಮಗುವಾಗಿದ್ದಾಗ ಅನುಚಿತ ವರ್ತನೆ ತೋರಿಸಿದ್ದ. ಅಲ್ಲದೆ ಹಲ್ಲೆ ಕೂಡ ನಡೆಸಿದ್ದ ಎಂದು ನ್ಯಾಯಾಲಯ ವಿವರಣೆ ನೀಡಿದೆ. +
      + +ಯುವತಿಗೆ ಆಕೆ ಬಾಲಕಿಯಾಗಿದ್ದಾಗಲೇ ಇವರು ಲೈಂಗಿಕ ಹಿಂಸೆ ನೀಡಲು ಆರಂಭಿಸಿದ್ದನ್ನು ನ್ಯಾಯಾಲಯ ಹೊರಗೆಳೆದಿತ್ತು. ಆಕೆ ಐದರ ಹರೆಯದ ಬಾಲಕಿಯಾಗಿದ್ದಾಗ ಮಲದೊಡ್ಡಪ್ಪ ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದ. 14ನೇ ವರ್ಷದಲ್ಲಿ ಆಕೆ ಗರ್ಭಿಣಿಯಾಗಿದ್ದಳು. ಆ ಸಂದರ್ಭದಲ್ಲಿ ಆಕೆಯನ್ನು ಕೂಡಿ ಹಾಕಿದ್ದ ಕಾರಣ ಮನೆಗೆ ಭೇಟಿ ನೀಡುವವರಿಗೆ ಯಾವುದೇ ವಿಚಾರಗಳು ತಿಳಿಯುತ್ತಿರಲಿಲ್ಲ. +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +೦೧೨೩೪೫೬೭೮೯ +

      + +

      Telegu

      +

      ఆగ్నేయ ఇరాన్‌లో ఆదివారం నాడు ఓ ఆత్మాహుతి దాడి జరగడంతో ఇరవై మంది మృతి చెందారు. +
      + +ఆగ్నేయ ఇరాన్‌లో ఆత్మాహుతి దాడి జరగడంతో ఐదుగురు ఎలిట్ రెవల్యూషనరీ గార్డ్‌లతో సహా ప్రముఖ కమాండర్‌లతోసహా మొత్తం ఇరవై మంది మృతి చెందినట్లు ఇరాన్ లోక్‌సభ స్పీకర్ అలీ లారిజానీ తెలిపారు. +
      + +ఆదివారం జరిగిన దాడుల్లో భద్రతాదళాలకు చెందిన కమాండర్ జనరల్ నూర్ అలీ శుశాత్రీ, మరో కమాండర్ రజబ్ అలీ మొహమ్మద్‌ జాదేహ్ తదితరులున్నారని, వీరితోపాటు పలువురు తీవ్రగాయాలపాలైనారని ఆయన చెప్పారు. +
      + +మృతి చెందిన కమాండర్లు పాకిస్థాన్‌ సరిహద్దుల్లోనున్న పిశిన్ ప్రాంతంలో ఓ సమావేశంలో పాల్గొనేందుకు కారులో బయలు దేరి వెళ్ళారని, ఆ సమయంలో ఆత్మాహుతి దళానికి చెందిన సభ్యుడు తనను తాను పేల్చేసుకోవడంతో ఈ దుర్ఘటన జరిగిందని ఆయన వివరించారు. +
      + +ఇదిలావుండగా ఇప్పటివరకు ఈ దాడులకు బాధ్యత వహిస్తూ ఏ సంస్థ ప్రకటించలేదు. కాని ఈ దుర్ఘటన వెనుక సున్నీ ఉగ్రవాద సంస్థ జుందల్లా హస్తం ఉండొచ్చని, ఈ సంస్థ ఆగ్నేయ ఇరాన్‌లో రెవల్యూషనరీ గార్డ్, షియాలపై దాడులు చేసేందుకు పూనుకునుంటుందని భద్రతా దళాలు అనుమానం వ్యక్తం చేసాయి. +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +౦౧౨౩౪౫౬౭౮౯ +

      + + + +

      Tamil (ta)

      +

      \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xae\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xa8\xe0\xae\xae\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d, \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\xb0\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xa3\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81 \xe0\xae\x92\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81.

      + +

      \xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88 \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb1\xe0\xae\xb5\xe0\xaf\x81 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xb0\xe0\xaf\x8b\xe0\xae\xb9\xe0\xae\xbf\xe0\xae\xa4 \xe0\xae\xaa\xe0\xaf\x8b\xe0\xae\x95\xe0\xaf\x8a\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb2\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xae \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d, \xe0\xae\x87\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\xaa\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb2\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb1\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb1\xe0\xaf\x88 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xa3\xe0\xae\xbe\xe0\xae\xaa\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x9c\xe0\xae\xbf \xe0\xae\x89\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f \xe0\xae\xae\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d \xe0\xae\x9a\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d \xe0\xae\xaa\xe0\xaf\x87\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xaf\x81 \xe0\xae\xa8\xe0\xae\x9f\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3\xe0\xae\xbe\xe0\xae\xb0\xe0\xaf\x8d.

      + +

      \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95 \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xb7\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xaf\x8a\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1 \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xae\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x8a\xe0\xae\xb4\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\xa8\xe0\xaf\x81\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x89\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f \xe0\xae\xaa\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb5\xe0\xaf\x87\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x89\xe0\xae\xa4\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88 \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x89\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3 \xe0\xae\xa4\xe0\xaf\x80\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xb5\xe0\xae\xbe\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x81 \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xb5\xe0\xae\xb4\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xa4\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbe\xe0\xae\xa9 \xe0\xae\x86\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\xb0\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81 \xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xa4\xe0\xaf\x88 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbe \xe0\xae\x95\xe0\xae\xb5\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81 \xe0\xae\x8e\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95 \xe0\xae\x85\xe0\xae\xb0\xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb1\xe0\xaf\x88\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xa3\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x86\xe0\xae\xaf\xe0\xae\xb2\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb2\xe0\xae\xb8\xe0\xaf\x8d \xe0\xae\xaa\xe0\xaf\x87\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xb8\xe0\xaf\x8d \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xbe\xe0\xae\xb0\xe0\xaf\x8d. +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +௦௧௨௩௪௫௬௭௮௯ +

      + + +

      Oriya

      +

      ଓଡ଼ିଆ ଉଇକିପେଡିଆ ଆପଣଙ୍କୁ ସ୍ବାଗତ କରୁଛି। ଏହି ଉନ୍ମୁକ୍ତ ଜ୍ଞାନକୋଷଟି ଇଣ୍ଟରନେଟ ଉପରେ ଆଧାରିତ ଏବଂ ଏହା ବିଶ୍ବର ୫୦ଟି ଭାଷାରେ ଉପଲବ୍ଧ । ଏହାକୁ ଆପଣ ମଧ୍ୟ ବର୍ଦ୍ଧିତ ଓ ପରିବର୍ତିତ କରିପାରିବେ ଏବଂ ଏହାକୁ ଉନ୍ନତ କରିବା ପାଇଁ ନିଜର ଅବଦାନ ଦେଇ ପାରିବେ । ଆପଣଙ୍କ ପସନ୍ଦର ବିଷୟ ଗୁଡିକୁ ଆପଣ ନୂତନ ଭାବେରେ ଯୋଗ କରିପାରିବେ କିମ୍ବା ଏହି ପୃଷ୍ଠାକୁ ସମ୍ପାଦନ କରି ଏହା ସହିତ ଯୋଗ କରିପାରିବ । ସମସ୍ତ ପାଠ ଗୁଡିକ GNU ମୁକ୍ତ ଦଲିଲକରଣ ଲାଇସେନ୍ସର ସର୍ତ୍ତ ଅଧୀନରେ ଉପଲବ୍ଧ । ତଥାପି, ଆପଣ ଏହାକୁ ମୁକ୍ତ ଭାବେର ଇଲେକ୍ଟ୍ରୋନିକ୍ସ ପ୍ରିଣ୍ଟ୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ପ୍ରିଣ୍ଟର ମାଧ୍ୟମରେ ବ୍ୟବହାର କରିପାରିବ । +
      + +ଓଡ଼ିଆ ଉଇକିପେଡିଆରେ ଏ ପର୍ଯ୍ୟନ୍ତ ୫୫୩ଟି ପ୍ରସଙ୍ଗ ଯୋଗ କରାଯାଇଛି। +
      + +ଉଇକିପେଡିଆର ଓଡ଼ିଆ ସଂସ୍କରଣର କାର୍ଯ୍ୟ ପ୍ରଥମ ଥର ପାଇଁ ୨୦୦୪ ମସିହାରେ ପ୍ରାରମ୍ଭ ହୋଇଥିଲା ଏହା ଏବେ ମଧ୍ୟ ନିର୍ମାଣଧୀନ । ଆମେ ଏହା ଆଶା କରୁଛୁ ଯେ ବ୍ୟବାହାରକାରୀ ମାନେ ଏହାକୁ ସମୃଦ୍ଧ କରିପାରିବେ । ଓଡ଼ିଆ ଉଇକିପେଡିଆରେ ଆପଣ କିଛି ଯୋଗ କିମ୍ବା ସମ୍ପାଦନା କରିବା ପାଇଁ ଚାହିଁଲେ, ସର୍ବ ପ୍ରଥମେ ଆପଣଙ୍କ ନିକଟରେ ଗୋଟିଏ ୟୁନିକୋଡ୍ ଭିତ୍ତିକ ଓଡ଼ିଆ ଅନ୍ତରା ପୃଷ୍ଠ ଥିବା ଉଚିତ୍ । ଏହା ମୁକ୍ତ ସଙ୍କେତ ହୋଇଥିବାରୁ ଏହାକୁ ଆପଣ ଇଣ୍ଟରନେଟରୁ ମାଗଣାରେ ପାଇପାରିବେ । ଆପଣ ଇଂରାଜୀ ଉଇକିପେଡିଆକୁ ଅନୁବାଦ କରି କିମ୍ବା ନିକଟ ଅତୀତରେ ହୋଇଥିବା ଗୁରୁତ୍ଵପୂର୍ଣ୍ଣ ଘଟଣା ମାନଙ୍କୁ ଯୋଗ କରି, ଓଡ଼ିଆ ୱିକିପେଡିଆକୁ ସମୃଦ୍ଧ କରିପାରିବ । କୌଣସି ନୂତନ ପାଠ୍ୟ ଯୋଗ କରିବା ପୂର୍ବରୁ ଆପଣଙ୍କୁ ଏହା ଧ୍ୟାନ ରଖିବା ପାଇଁ ହେବ ଯେ, ଏହି ପୃଷ୍ଠାରେ ଅନ୍ୟ ବ୍ୟବାହାରକାରୀ ମାନଙ୍କ ପାଇଁ ସମ୍ପାଦନର ସୁଯୋଗ ରହିବା ଉଚିତ । କୌଣସି ବିଷୟବସ୍ତୁର ସ୍ବତଃ ସଂରକ୍ଷଣ ଉଇକିପେଡିଆର ନିୟମକୁ ଅବମାନନା କରିଥାଏ । ବ୍ୟବାହାରକାରୀ ମାନେ କେବଳ ତାଙ୍କର ନିଜ ଲେଖାକୁ ସମ୍ପାଦନ କରିପାରିବେ । ଉଇକିପେଡିଆର ନିୟମ, କର୍ମ ପଦ୍ଧତି ଏବଂ ଅନ୍ୟାନ୍ୟ ସୂଚନା ପାଇଁ Wikipedia:ଆଲୋଚନା ସଭା-- କୁ ଯାଇ ଆଲୋଚନା କରନ୍ତୁ। +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +୦୧୨୩୪୫୬୭୮୯ +

      + +

      Punjabi

      +

      ਕੇਂਦਰੀ ਗ੍ਰਹਿਮੰਤਰੀ ਪੀ.ਚਿਦੰਬਰਮ ਨੇ ਐਤਵਾਰ ਨੂੰ ਤਮਿਲਨਾਢੂ ਦੇ ਮੁੱਖਮੰਤਰੀ ਐਮ.ਕਰੁਣਾਨਿਧੀ ਨਾਲ ਮੁਲਾਕਾਤ ਕੀਤੀ।ਉਨ੍ਹਾ ਨੇ ਸ਼੍ਰੀਲੰਕਾ 'ਚ ਲਿੱਟੇ ਦੇ ਖਿਲਾਫ਼ ਯੁੱਧ ਦੌਰਾਨ ਉੱਝੜੇ ਹੋਏ ਲੱਗਭਗ ਢਾਈ ਲੱਖ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ 'ਤੇ ਚਰਚਾ ਕੀਤੀ। +
      + +ਦ੍ਰਮੁਕ ਨੇਤਾ ਦੇ ਨਾਲ ਸੰਖੇਪ ਮੁਲਾਕਾਤ ਬਾਅਦ ਚਿਦੰਬਰਮ ਨੇ ਕਿਹਾ ਹੈ ਕਿ ਕੇਂਦਰ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ ਲਈ ਜਰੂਰਤ ਪੈਣ 'ਤੇ ਸ਼੍ਰੀਲੰਕਾ ਨੂੰ ਹੋਰ ਜ਼ਿਆਦਾ ਧਨ ਦੇਵੇਗਾ।ਅਸੀਂ ਪਹਿਲਾ ਹੀ 500 ਕਰੋੜ ਰੁੱਪਏ ਦੇ ਚੁੱਕੇ ਹਾਂ। +
      + +ਚਿਦੰਬਰਮ ਨੇ ਕਿਹਾ ਹੈ ਕਿ ਕਰੁਣਾਨਿਧੀ ਦੇ ਨਾਲ ਉਨ੍ਹਾ ਦੀ ਚਰਚਾ ਪਿੱਛਲੇ ਹਫ਼ਤੇ ਦਸ ਸਾਂਸਦਾਂ ਦੇ ਪ੍ਰਤਿਨਿਧੀਮੰਡਲ ਦੇ ਸ਼੍ਰੀਲੰਕਾ ਦੌਰੇ 'ਤੇ ਕੇਂਦਰਤ ਸੀ,ਜੋ ਜਾਤੀ ਤਮਿਲਾ ਨੂੰ ਮਿਲੀ ਅਤੇ ਉਨ੍ਹਾ ਦੀ ਦਸ਼ਾ ਬਾਰੇ ਜਾਣਿਆ। +
      + +ਉਨ੍ਹਾ ਨੇ ਕਿਹਾ ਕਿ ਸ਼੍ਰੀਲਕਾ ਦੇ ਤਮਿਲਾਂ ਨੂੰ ਉਨ੍ਹਾ ਦੇ ਮੂਲ ਸਥਾਨਾਂ 'ਤੇ ਬਸਾਉਣ ਦੇ ਤੌਰ ਤਰੀਕਿਆਂ 'ਤੇ ਚਰਚਾ ਹੋਈ ਅਤੇ ਸਾਂਸਦਾ ਦੀ ਟੀਮ ਨੂੰ ਦਿੱਤੇ ਭਰੋਸੇ ਬਾਅਦ ਕੋਲੰਬੋ ਦੁਆਰਾ ਪਿੱਛਲੇ ਹਫ਼ਤੇ ਮੁੜ ਰਿਹਾਇਸ਼ ਪ੍ਰਕ੍ਰਿਆ ਸ਼ੁਰੂ ਕੀਤੇ ਜਾਣ ਬਾਅਦ ਤੋਂ ਲੱਗਭਗ ਪੰਜ ਹਜ਼ਾਰ ਲੋਕਾਂ ਨੂੰ ਉਨ੍ਹਾ ਦੇ ਘਰਾਂ ਨੂੰ ਵਾਪਸ ਭੇਜਿਆ ਜਾ ਚੁੱਕਿਆ ਹੈ।ਚਿਦੰਬਰਮ ਨੇ ਕਿਹਾ ਹੈ ਕਿ ਹਾਲਾਂਕਿ ਪ੍ਰਕ੍ਰਿਆ ਧੀਮੀ ਹੈ,ਲੇਕਿਨ ਗਤੀ ਪਕੜ ਲਵੇਗੀ। +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +੦੧੨੩੪੫੬੭੮੯ + +

      + +

      Gujarati (gu)

      +

      Examples at: http://in.gujarati.yahoo.com/

      +

      http://gujarati.webdunia.com/entertainment/bollywood/filmreview/0910/17/1091017017_1.htm

      +

      +આ વાત હજાર વાર કહેવામાં આવી છે કે ફિલ્મ બનાવતી વખેત હંમેશા સૌથી વધુ ધ્યાન વાર્તા અને સ્ક્રીનપ્લે પર આપવુ જોઈએ. કારણ કે આ કોઈ પણ ફિલ્મની સફળતાનો મુખ્ય આધાર હોય છે. +
      +મોટા ફિલ્મ સ્ટાર્સ સાઈન કરવાથી, સ્ટંટ અને ગીતોથી પાણીની અંદર કે આકાશમાં કરોડો રૂપિયા ખર્ચ કરી ફિલ્માવેલા દ્રશ્યોથી કશુ જ નથી થતુ. પરંતુ આ બુનિયાદી વાત અત્યાર સુધી કોઈ લોકોને સમજાતી નથી. +
      + +કરોડો રૂપિયાના ખર્ચ પર બનાવેલ 'બ્લૂ' આનુ તાજુ ઉદાહરણ છે. પૈસા એના પર ખર્ચ કરવામાં આવે જ્યા બચાવી શકાતો હતો અને ત્યાં બચાવ્યો જ્યા ખર્ચ કરવો જોઈતો હતો. એક સારી વાર્તા તેની સાથે સંકળાયેલા નિર્માતા-નિર્દેશક ન શોધી શક્યા. +
      + +વર્ષો પહેલા ખજાનાથી લદાયેલુ એક જહાજ ડૂબી ગયુ હતુ. આરવ (અક્ષય કુમાર)તેને શોધીને શ્રીમંત બનવા માંગે છે. આ કામમાં તેને સાગર (સંજય દત્ત)ની મદદ જોઈએ, જે તેને માતે કામ કરે છે. સાગર એ માટે તૈયાર નથી. બાળપણમાં સાગર અને તેના પિતાએ એ ડૂબેલા જહાજને શોધી લીધુ હતુ, પરંતુ સાગરની ભૂલથી તેના પિતાનુ મૃત્યુ થઈ ગયુ હતુ. સાગર એ આધાતથી બહાર ન આવી શક્યો. સાગરનો એક ભાઈ સૈમ(જાયદ ખાન) છે, જેને રિસ્ક લેવાનો નશો છે. ગેરકાયદેસર કામ દરમિયાન એ ફંસાય જાય છે અને કેટલાક લોકો તેના જીવના દુશ્મન બની જાય છે. તેઓ તેની પાસે પૈસા માંગે છે. પોતાના ભાઈને મુસીબતમાં જોઈએ આરવની વાત સાગર માની લે છે અને તે એ છુપા ખજાનાને શોધવા નીકળે છે. છેવટે એ રહસ્ય બહાર પડે છે કે સૈમને ફસાવવા પાછળ આરવનો જ હાથ હતો, જેથી સાગર ખજાનાની શોધ કાઢવામાં તેની મદદ કરે. +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +૦૧૨૩૪૫૬૭૮૯ +

      + + +

      Hindi (hi)

      +

      \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa5\x80\xe0\xa4\x9a \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa3 \xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa5\x88\xe0\xa4\x9a \xe0\xa4\xa6\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa1 414 \xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xb0\xe0\xa4\x96\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x87\xe0\xa4\x9f \xe0\xa4\x96\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\xb9\xe0\xa5\x88\xe0\xa4\x82.

      + +

      \xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\xb8\xe0\xa5\x81\xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa5\x80\xe0\xa4\xae \xe0\xa4\x95\xe0\xa5\x8b\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x9f \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xae\xe0\xa5\x81\xe0\xa4\x96\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xa7\xe0\xa5\x80\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\x82\xe0\xa4\xac\xe0\xa4\xbf\xe0\xa4\xa4 \xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa7 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\x88 \xe0\xa4\x9c\xe0\xa4\x9c\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x85\xe0\xa4\xaa\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xaa\xe0\xa4\xa6 \xe0\xa4\xb8\xe0\xa5\x87 \xe0\xa4\x87\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa5\x80\xe0\xa4\xab\xe0\xa4\xbc\xe0\xa4\xbe \xe0\xa4\xa6\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88.

      + +

      \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\x98\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xb2 \xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xa4 \xe0\xa4\xae\xe0\xa4\xa7\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb0\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\xbf \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa1\xe0\xa4\xbc \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa7\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb2 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x82\xe0\xa4\xa4\xe0\xa4\xbf \xe0\xa4\x96\xe0\xa4\xa1\xe0\xa4\xbc\xe0\xa4\xbe \xe0\xa4\xa5\xe0\xa4\xbe\xe0\xa5\xa4 \xe0\xa4\x89\xe0\xa4\xb8 \xe0\xa4\xaa\xe0\xa4\xb0 \xe0\xa4\x89\xe0\xa4\x97\xe0\xa5\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\x8f \xe0\xa4\x9b\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa5\x87-\xe0\xa4\x9b\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa5\x87 \xe0\xa4\xb5\xe0\xa5\x83\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7 \xe0\xa4\x87\xe0\xa4\xb8 \xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\xa6\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa4\xbf\xe0\xa4\x97\xe0\xa5\x8b\xe0\xa4\x9a\xe0\xa4\xb0 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xa4\xe0\xa5\x87 \xe0\xa4\xa5\xe0\xa5\x87, \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa5\x8b \xe0\xa4\xaf\xe0\xa5\x87 \xe0\xa4\x89\xe0\xa4\xb8\xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\x9c\xe0\xa4\x9f\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82 \xe0\xa4\xb9\xe0\xa5\x88 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\x85\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa4\xad\xe0\xa5\x81\xe0\xa4\x9c\xe0\xa4\xbe \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb0 \xe0\xa4\x9c\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xb2\xe0\xa4\xb6 \xe0\xa4\xaa\xe0\xa4\xb0 \xe0\xa4\xb6\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa5\x87\xe0\xa4\xa4 \xe0\xa4\xaa\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82 \xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xaf\xe0\xa5\x81 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6-\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6 \xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\x82\xe0\xa4\x97\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\xb2\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x80 \xe0\xa4\xa5\xe0\xa5\x80\xe0\xa4\x82, \xe0\xa4\x89\xe0\xa4\xb8 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\x95 \xe0\xa4\xb9\xe0\xa5\x88 \xe0\xa4\xae\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb0 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x8f\xe0\xa4\x95 \xe0\xa4\x9d\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\xae\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\x86 \xe0\xa4\xa6\xe0\xa5\x80\xe0\xa4\xaa\xe0\xa4\x95 \xe0\xa4\xa5\xe0\xa4\xbe, \xe0\xa4\x9c\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\x95\xe0\xa4\xb0 \xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x80 \xe0\xa4\xa7\xe0\xa5\x81\xe0\xa4\x82\xe0\xa4\xa7\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa4\xbe \xe0\xa4\xa5\xe0\xa4\xbe\xe0\xa5\xa4 +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      +०१२३४५६७८९ +

      + +

      Nepali (ne) - Devanagari

      +

      \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa2\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa5\x88 \xe0\xa4\x86\xe0\xa4\x89\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa5\x87\xe0\xa4\xa0 \xe0\xa4\xae\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xad\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb9\xe0\xa4\xb8 \xe0\xa4\x9a\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x95\xe0\xa5\x80\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5\xe0\xa4\x95\xe0\xa5\x88 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb7\xe0\xa4\xaf\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8 \xe0\xa4\x86\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x97 \xe0\xa4\xb0 \xe0\xa4\x86\xe0\xa4\xa0 \xe0\xa4\xa6\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa4\xbe, \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa5\x88 \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9b\xe0\xa5\xa4

      + +

      \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x97\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xaa\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\x93\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa6\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x88 \xe0\xa4\xb8\xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x9f\xe0\xa5\x87\xe0\xa4\xb0 \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa4\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x80 \xe0\xa4\xad\xe0\xa5\x88\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa4\x81\xe0\xa4\xa6\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\x93\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa6\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\x95\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa5\x82\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\x8f\xe0\xa4\x95\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa4\xb2 \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xb2\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa4\xbf \xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x85\xe0\xa4\xad\xe0\xa4\xa6\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb5\xe0\xa4\xb9\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa7\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x80\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb6\xe0\xa5\x8d\xe0\xa4\x9a\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb2\xe0\xa4\xbf\xe0\xa4\xa8 \xe0\xa4\xb9\xe0\xa4\xa1\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb2 \xe0\xa4\x86\xe0\xa4\xb9\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\x9b\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa5\xa4

      + +

      Bengali (bn)

      +

      +দক্ষিণ ওয়াজিরিস্থানে কর্মরত স্বেচ্ছাসেবী ও ত্রাণ সংস্থাগুলো ধারণা করছে সেনা অভিযানের তীব্রতা বাড়লে এই সংখ্যাটা আরও অনেক বেড়ে যাবে +
      +শরণার্থীদের স্রোত সামলাতে তারা ইতিমধ্যেই হিমশিম খাচ্ছেন, ফলে লড়াই থেকে পালিয়ে আসা বেসামরিক মানুষজনের সংখ্যা আরও বাড়লে স্বভাবতই সঙ্কট আরও জটিল হয়ে উঠবে +
      +দক্ষিণ ওয়াজিরিস্তান থেকে পাওয়া খবরে বলা হচ্ছে সেনাবাহিনী সেখানে তিনদিক থেকে আক্রমণ চালাচ্ছে এবং ওই অঞ্চলে প্রবেশ করা আর বেরোনোর পথ তারাই নিয়ন্ত্রণ করছে - আর তালেবানের ঘাঁটিগুলোর ওপর হামলা চালানো হচ্ছে আকাশপথে এবং অর্টিলারি বাহিনীর সাহায্যে +
      +তালেবান জঙ্গীরা ইতিমধ্যেই হুঁশিয়ারি দিয়েছে এক ইঞ্চি জমিও তারা বিনা যুদ্ধে ছেড়ে দেবে না - আর ইসলামাবাদ থেকে বিবিসির ওরলা গুয়েরিন বলছেন তারা সে-কথা অক্ষরে অক্ষরে পালন করছে +
      +!\"#$%&'()*+,-./0123456789:;<=>?
      +@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      +`abcdefghijklmnopqrstuvwxyz{|}~ +
      ০১২৩৪৫৬৭৮৯ +

      + + +

      Assamese

      +

      অসমীয়া ৱিকিপিডিয়াৰ উদ্দেশ্য হ'ল সম্পূৰ্ণ অসমীয়া ভাষাত এখনি বিশ্বকোষ প্ৰণয়ন কৰা। অন্য কোনো ভাষাৰ প্ৰবন্ধ এই বিশ্বকোষৰ বাবে গ্ৰহন কৰা নহ'ব। বিশ্বকোষৰ অৱদানকাৰীসকললৈ সাদৰেৰে অনুৰোধ জনোৱা হ'ল যাতে তেখেতসকলে অসমীয়া ভাষাৰ প্ৰচলিত বানান পদ্ধতি মানি চলে। বিদেশী শব্দৰ অসমীয়া প্ৰতিৰূপৰ ক্ষেত্ৰত যিহেতু অসমীয়া সাহিত্যিকসকল এতিয়াও ঐক্যমতত উপনীত হ'ব পৰা নাই, ৱিকিপিডিয়াত বিদেশী শব্দৰ যিকোনো ধৰনৰ অসমীয়া ৰূপ গ্ৰাহ্য কৰা হ'ব। +
      + +গণবিশ্বকোষৰ সফলতাৰ নেপথ্যৰ আটাইতকৈ শক্তিশালী ধাৰণাটো হৈছে সহযোগিতামূলক সংকলন, যি মানৱ জাতিৰ সাফল্যৰ মূল চাবিকাঠি পাৰস্পৰিক সহযোগিতাক আৰু এখোপ ওপৰলৈ উঠাই নিছে| এই গণবিশ্বকোষবিলাকৰ বিভিন্ন নিবন্ধৰ লেখকসকল সম্পূৰ্ণ অপেচাদাৰী ইন্টাৰনেট ব্যৱহাৰকৰোঁতা। এই লেখকসকলে নিজৰ নিজৰ ৰাপ বা পাৰদৰ্শীতা থকা বিষয় সম্পৰ্কে বিভিন্ন নিবন্ধ লিখি আন পাঠকক উপকৃত কৰে আৰু নিজেও উপকৃত হয়। +
      + +অসমীয়া গণবিশ্বকোষ (যাৰ মুখ্য পৃষ্ঠাটো বৰ্তমান আপুনি পঢ়ি আছে) হৈছে এখন অসমীয়া বিশ্বকোষ প্ৰস্তুত কৰাৰ এক অভূতপূৰ্ব তথা অভিনৱ প্ৰয়াস, যাক যিকোনো পাঠকে পৃথিৱীৰ যিকোনো ঠাইৰ পৰা ইন্টাৰনেটৰ জৰিয়তে বিনামূল্যে ব্যৱহাৰ কৰিব পাৰিব। এই প্ৰকল্প আচলতে \"ৱিকিপেডিয়া\" নামৰ এক বৃহত্তৰ প্ৰকল্পৰ অংশ| পৃথিবীৰ বিভিন্ন ভাষাত সকলোৱে বিনামূল্যে ব্যৱহাৰ তথা সম্পাদনা কৰিব পৰা বিশ্বকোষ প্ৰস্তুত কৰাৰ উদ্দেশ্যেৰে ৱিকিপিডিয়া নামৰ ইন্টাৰনেট-পৃষ্ঠাত ২০০১ চনত আৰম্ভ কৰা মুখ্য প্ৰকল্পৰ অধীনত বৰ্ত্তমান প্ৰায় শতাধিক ভাষাৰ যোগদানেৰে সম্বৃদ্ধ হোৱা এইলানি গণবিশ্বকোষে আজি প্ৰায় পাঁচলাখতকৈও অধিক প্ৰবন্ধৰে পৃথিৱীৰ বিভিন্ন প্ৰান্তৰ পাঠকক ইন্টাৰনেটৰ জৰিয়তে বিশ্বকোষ সেৱা আগবঢ়াইছে। +

      + + +"; + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('-s','A4','','',32,25,27,25,16,13); + +$mpdf->SetDisplayMode('fullpage'); + +//$mpdf->useSubstitutionsMB = true; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php b/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php new file mode 100644 index 000000000..02337f8b7 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php @@ -0,0 +1,59 @@ +mPDF +

      Watermarks

      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +
      + +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      + +
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      + +
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      + +'; + + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('c'); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->SetWatermarkText('DRAFT'); +$mpdf->watermark_font = 'DejaVuSansCondensed'; +$mpdf->showWatermarkText = true; + + +$mpdf->WriteHTML($html); +$mpdf->AddPage(); + +$mpdf->SetWatermarkImage('tiger.wmf', 1, '', array(160,10)); +$mpdf->showWatermarkImage = true; + +$mpdf->WriteHTML('

      Using a Watermark as a Header

      '); +$mpdf->WriteHTML($html); +$mpdf->AddPage(); + +$mpdf->SetWatermarkImage('tiger.wmf', 0.15, 'F'); + +$mpdf->WriteHTML('

      Using a Watermark Image as Background

      '); +$mpdf->WriteHTML($html); + + +$mpdf->Output(); +exit; + +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php b/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php new file mode 100644 index 000000000..63e8c5d21 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php @@ -0,0 +1,36 @@ +mPDF +

      Annotations

      +
      Heading 5
      +
      Heading 6
      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +'; +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('c'); + +$mpdf->title2annots = true; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php b/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php new file mode 100644 index 000000000..34ec8829e --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php @@ -0,0 +1,437 @@ + + + + + + + + +

      mPDF

      +

      Barcodes

      +

      NB Quiet zones - The barcode object includes space to the right/left or top/bottom only when the specification states a \'quiet zone\' or \'light margin\'. All the examples below also have CSS property set on the barcode object i.e. padding: 1.5mm;

      + +

      EAN-13 Barcodes (EAN-2 and EAN-5)

      +

      NB EAN-13, UPC-A, UPC-E, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      +

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      EAN13Standard EAN-13 barcode. Accepts 12 or 13 characters (creating checksum digit if required). [0-9] numeric only.
      ISBNStandard EAN-13 barcode with \'ISBN\' number shown above [shown at height="0.66"]
      ISSNStandard EAN-13 barcode with \'ISSN\' number shown above [shown at size="0.8"]
      + +

      EAN-8, UPC-A and UPC-E Barcodes

      +

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      +

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      UPCAUPC-A barcode. This is a subset of the EAN-13. (098277211236) Accepts 11 or 12 characters (creating checksum digit if required). [0-9] numeric only
      UPCEUPC-E barcode. Requires the UPC-A code to be entered as above (e.g. 042100005264 to give 425261). NB mPDF will die with an error message if the code is not valid, as only some UPC-A codes can be converted into valid UPC-E codes. UPC-E doesn\'t have a check digit encoded explicity, rather the check digit is encoded in the parity of the other six characters. The check digit that is encoded is the check digit from the original UPC-A barcode.
      EAN8EAN-8. Accepts 7 or 8 characters (creating checksum digit if required). [0-9] numeric only
      + +

      EAN-2 and EAN-5 supplements, and combined forms

      +

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      EAN2EAN-2 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Used to denote an issue of a periodical. EAN-2 supplement accepts 2 digits [0-9] only, EAN-5 five.
      EAN5EAN-5 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Usually used in conjunction with EAN-13 for the price of books. 90000 is the code for no price.
      EAN13P2Standard EAN-13 barcode with 2-digit UPC supplement (07)
      ISBNP2Standard EAN-13 barcode with \'ISBN\' number shown above, and 2-digit EAN-2 supplement
      ISSNP2Standard EAN-13 barcode with \'ISSN\' number shown above, and 2-digit EAN-2 supplement
      UPCAP2UPC-A barcode with 2-digit EAN-2 supplement. This is a subset of the EAN-13.
      UPCEP2UPC-E barcode with 2-digit EAN-2 supplement.
      EAN8P2EAN-8 barcode with 2-digit EAN-2 supplement
      EAN13P5Standard EAN-13 barcode with 5-digit UPC supplement (90000)
      ISBNP5Standard EAN-13 barcode with \'ISBN\' number shown above, and 5-digit EAN-5 supplement
      ISSNP5Standard EAN-13 barcode with \'ISSN\' number shown above, and 5-digit EAN-5 supplement
      UPCAP5UPC-A barcode with 5-digit EAN-5 supplement. This is a subset of the EAN-13
      UPCEP5UPC-E barcode with 5-digit EAN-5 supplement. (042100005264 90000)
      EAN8P5EAN-8 barcode with 5-digit EAN-5 supplement (55123457 90000)
      + +

      Postcode Barcodes

      +

      These all have sizes fixed by their specification. Although they can be altered using \'size\' it is not recommended. \'height\' is ignored.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      IMBIntelligent Mail Barcode - also known as: USPS OneCode 4-State Customer Barcode, OneCode 4CB, USPS 4CB, 4-CB, 4-State Customer Barcode, USPS OneCode Solution Barcode. (01234567094987654321-01234567891) Accepts: Up to 31 digits (required 20-digit Tracking Code, and up to 11-digit Routing Code; this may be 0, 5, 9, or 11 digits). If the Routing code is included, it should be spearated by a hyphen - like this example.
      RM4SCCRoyal Mail 4-state Customer barcode (SN34RD1A). Accepts: max. 9 characters. Valid characters: [A-Z,0-9] Checksum digit: automatic.
      KIXDutch KIX version of Royal Mail 4-state Customer barcode (SN34RD1A). Valid characters: [A-Z,0-9]. Checksum digit: automatic.
      POSTNETPOSTNET barcode. Accepts 5, 9 or 11 digits. Valid characters: [0-9]. Checksum digit: automatic.
      PLANETPLANET barcode. Accepts 11 or 13 digits. Valid characters: [0-9]. Checksum digit: automatic.
      + + +

      Variable width Barcodes

      +

      These barcodes are all of variable length depending on the code entered. There is no recommended maximum size for any of these specs, but all recommend a minimum X-dimension (width of narrowest bar) as 7.5mil (=0.19mm). The default used here is twice the minimum i.e. X-dim = 0.38mm.

      +

      The specifications give a minimum height of 15% of the barcode length (which can be variable). The bar height in mPDF is set to a default value of 10mm.

      +

      \'size\' will scale the barcode in both dimensions. mPDF will accept any number, but bear in mind that size="0.5" will set the bar width to the minimum. The \'height\' attribute further allows scaling - this factor is applied to already scaled barcode. Thus size="2" height="0.5" will give a barcode twice the default width (X-dim=0.76mm) and at the default height set in mPDF i.e. 10mm.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      C128ACODE 128 A. Valid characters: [A-Z uppercase and control chars ASCII 0-31]. Checksum digit: automatic.
      C128BCODE 128 B. Valid characters: [Upper / Lower Case + All ASCII Printable Characters]. Checksum digit: automatic.
      C128CCODE 128 C. Valid characters: [0-9]. Must be an even number of digits. Checksum digit: automatic.
      EAN128C [A/B/C]EAN128 (A, B, and C). Specified variant of Code 128, utilising an FNC1 start code. Also known as UCC/EAN-128 or GS1-128. Valid characters: [cf. Code 128]. Checksum digit: automatic.
      C39CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. Valid characters: [0-9 A-Z \'-\' . Space $/+%]
      C39+CODE 39 + CHECKSUM. Checksum digit: automatic.
      C39ECODE 39 EXTENDED. Valid characters: [ASCII-characters between 0..127]
      C39E+CODE 39 EXTENDED + CHECKSUM. Checksum digit: automatic.
      S25Standard 2 of 5. Valid characters: [0-9]
      S25+Standard 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25Interleaved 2 of 5. Valid characters: [0-9]
      I25+Interleaved 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25BInterleaved 2 of 5 with bearer bars. Valid characters: [0-9]
      I25B+Interleaved 2 of 5 + CHECKSUM with bearer bars. Valid characters: [0-9]. Checksum digit: automatic.
      C93CODE 93 - USS-93 (extended). Valid characters: [ASCII-characters between 0..127]. Checksum digits: automatic.
      MSIMSI. Modified Plessey. Valid characters: [0-9]
      MSI+MSI + CHECKSUM (module 11). Checksum digit: automatic.
      CODABARCODABAR. Valid characters: [0-9 \'-\' $:/.+ ABCD] ABCD are used as stop and start characters e.g. A34698735B
      CODE11CODE 11. Valid characters: [0-9 and \'-\']. Checksum digits: 1 (or 2 if length of code is > 10 characters) - automatic.
      + + + + +
      + +
      +
      Useful links
      +

      http://www.adams1.com

      +

      http://www.tec-it.com/Download/PDF/Barcode_Reference_EN.pdf

      +

      http://www.tec-it.com/en/support/knowbase/symbologies/barcode-overview/linear/Default.aspx

      +

      http://www.gs1uk.org/downloads/bar_code/Bar%20coding%20getting%20it%20right.pdf

      +

      http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm (EAN2 and EAN5)

      +

      http://www.barcodeisland.com/ean13.phtml (UPC-A)

      +

      http://www.idautomation.com/fonts/postnet/#Specifications

      +

      http://www.outputlinks.com/sites/AFP/ibm_bcocafaq.pdf

      +

      https://ribbs.usps.gov/intelligentmail_mailpieces/documents/tech_guides/USPSIMB_Tech_Resource_Guide.pdf (Intelligent Mail)

      +

      http://www.mailsorttechnical.com/downloads_mailsort_user_guide.cfm

      + +

      http://www.mailsorttechnical.com/docs/mug_jun_2009/MUG_10_2008_Mailsort_700.pdf page 20

      + + +
      + + +
      +

      Human-readable text

      +Human-readable text is only produced as part of the barcode object in EAN-13, ISBN, ISSN, EAN-8, UPC-A and UPC-E. Here is an example to add text to a barcode: +
      + +
      + +<div style="position:fixed; right: 50mm; top: 60mm; border: 0.2mm solid #000000; text-align: center; padding: 0.5mm; padding-top: 2mm;">
      +<barcode code="00034698735346987355" type="EAN128C" /><br />
      +<div style="font-family: ocrb;">(00) 0346987 35346987 355</div>
      +</div> + +
      + +
      +
      +
      (00) 0346987 35346987 355
      +
      + + + +'; +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('','','','',20,15,25,25,10,10); +$mpdf->WriteHTML($html); +$mpdf->Output(); + +exit; + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php b/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php new file mode 100644 index 000000000..7342cc828 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php @@ -0,0 +1,43 @@ + +dottab.menu { + outdent: 4em; +} +p.menu { + text-align: left; + padding-right: 4em; +} + + +

      Menu

      + +
      + + + + + + + + + +
      +'; + + +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; + + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php b/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php new file mode 100644 index 000000000..f43b0231c --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php @@ -0,0 +1,31 @@ +mPDF +

      PDFA Compliance

      +

      PDF/A1-b is a file format for the long-term archiving of electronic documents. This is an example of a PDF/A1-b compliant files.

      +'; +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->PDFA = true; +$mpdf->PDFAauto = true; +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php b/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php new file mode 100644 index 000000000..709ea8d13 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php @@ -0,0 +1,20 @@ +SetImportUse(); + +$mpdf->Thumbnail('sample_orientation2.pdf', 4, 5); // number per row // spacing in mm + +$mpdf->WriteHTML('
      Now with rotated pages
      '); + +$mpdf->Thumbnail('sample_orientation3.pdf', 4); // number per row // spacing in mm + + +$mpdf->Output(); + +exit; + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php b/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php new file mode 100644 index 000000000..12f592db8 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php @@ -0,0 +1,36 @@ +SetImportUse(); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->SetCompression(false); + +// Add First page +$pagecount = $mpdf->SetSourceFile('sample_basic.pdf'); + +$crop_x = 50; +$crop_y = 50; +$crop_w = 100; +$crop_h = 100; + +$tplIdx = $mpdf->ImportPage(2, $crop_x, $crop_y, $crop_w, $crop_h); + +$x = 50; +$y = 50; +$w = 100; +$h = 100; + +$mpdf->UseTemplate($tplIdx, $x, $y, $w, $h); + +$mpdf->Rect($x, $y, $w, $h); + +$mpdf->Output('newpdf.pdf', 'I'); + +exit; + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php b/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php new file mode 100644 index 000000000..2b670ca39 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php @@ -0,0 +1,35 @@ +SetImportUse(); + +$mpdf->SetDocTemplate('sample_logoheader2.pdf',1); // 1|0 to continue after end of document or not - used on matching page numbers + +//=================================================== +$mpdf->AddPage(); +$mpdf->WriteHTML('Hallo World'); +$mpdf->AddPage(); +$mpdf->WriteHTML('Hallo World'); +$mpdf->AddPage(); +$mpdf->WriteHTML('Hallo World'); +//=================================================== + +$mpdf->RestartDocTemplate(); + +//=================================================== +$mpdf->AddPage(); +$mpdf->WriteHTML('Hallo World'); +$mpdf->AddPage(); +$mpdf->WriteHTML('Hallo World'); +$mpdf->AddPage(); +$mpdf->WriteHTML('Hallo World'); +//=================================================== + + +$mpdf->Output(); + +exit; + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php b/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php new file mode 100644 index 000000000..8144a3a02 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php @@ -0,0 +1,121 @@ + + + + + + + +

      mPDF Example Booklet

      +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + +

      Little Women - Chapter One - Playing Pilgrims

      + +

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      + +

      Little Women - Chapter One - Playing Pilgrims

      + +

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      + +'; + +//============================================================== +//============================================================== +//============================================================== + + +include("../mpdf.php"); + +$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); + +$mpdf->mirrorMargins = 1; +$mpdf->SetDisplayMode('fullpage','two'); +$mpdf->useOnlyCoreFonts = true; +$mpdf->defaultfooterfontsize = 13; +$mpdf->AddPage(); +$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture +$mpdf->y = 70; +$mpdf->Shaded_box('mPDF Example File', 'Arial', '', 28, '70%', 'DF', 3, '#FFFFFF', '#000044', 10); + +$mpdf->AddPage(); +$mpdf->SetFooter('{PAGENO}'); +$mpdf->WriteHTML($html); + + +$mpdf->AddPage('','NEXT-EVEN'); +$mpdf->SetFooter(); +$mpdf->SetAlpha(0.5); +$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture +$mpdf->SetAlpha(1); + +$mpdf->writeBarcode('978-0-9542246-0-8', 1, 130, 230, 1,0, 3,3,4,4); + +// Save the pages to a file +$mpdf->Output('test.pdf','F'); +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + +function GetBookletPages($np, $backcover=true) { + $lastpage = $np; + $np = 4*ceil($np/4); + $pp = array(); + for ($i=1; $i<=$np/2; $i++) { + $p1 = $np - $i + 1; + if ($backcover) { + if ($i == 1) { $p1 = $lastpage; } + else if ($p1 >= $lastpage) { $p1 = 0; } + } + if ($i % 2 == 1) { + $pp[] = array( $p1, $i ); + } + else { + $pp[] = array( $i, $p1 ); + } + } + return $pp; +} + + + +$mpdf=new mPDF('','A4-L','','',0,0,0,0,0,0); +$mpdf->SetImportUse(); +$ow = $mpdf->h; +$oh = $mpdf->w; +$pw = $mpdf->w / 2; +$ph = $mpdf->h; + +$mpdf->SetDisplayMode('fullpage'); + +$pagecount = $mpdf->SetSourceFile('test.pdf'); +$pp = GetBookletPages($pagecount); + +foreach($pp AS $v) { + $mpdf->AddPage(); + if ($v[0]>0 && $v[0]<=$pagecount) { + $tplIdx = $mpdf->ImportPage($v[0], 0,0,$ow,$oh); + $mpdf->UseTemplate($tplIdx, 0, 0, $pw, $ph); + } + if ($v[1]>0 && $v[1]<=$pagecount) { + $tplIdx = $mpdf->ImportPage($v[1], 0,0,$ow,$oh); + $mpdf->UseTemplate($tplIdx, $pw, 0, $pw, $ph); + } +} + +$mpdf->Output(); + +exit; + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php b/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php new file mode 100644 index 000000000..2420b9f36 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php @@ -0,0 +1,150 @@ + +div { text-align: justify; } + +

      Joanne Smith 2002-2007

      This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, risus at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      +'; + +$html2 = ' + +

      Tim Another 2001-2007

      This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, risus at eleifend lacus sapien et risus. Phasellus metus, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      +Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      +'; + +for($i=1; $i<=10; $i++) { + // $html = $html; + if ($i % 3 == 1) { $html = $html2; } + else { $html = $html1; } + $pph[$i] = SinglePage($html, $pw, $ph, $minK) ; // $pph saves the actual height of each page +} +//============================================================== +// Save the pages to a file +$mpdf->Output('test.pdf','F'); + +// Now collate those pages using IMPORT - 4 pages to one page + +$mpdf=new mPDF(); +$mpdf->SetImportUse(); +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->SetHeader('{DATE j-m-Y}|My Yearbook 2005|{PAGENO}'); +$mpdf->SetFooter('|Printed using mPDF|'); + +$pagecount = $mpdf->SetSourceFile('test.pdf'); +for($i=1; $i<=$pagecount; $i++) { + if ($i % 4 == 1) { $mpdf->AddPage(); } + $pgheight = $mpdf->h - $mpdf->tMargin - $mpdf->bMargin; + $hspacing = min($spacing,($mpdf->pgwidth - $pw*2) ); + $vspacing = min($spacing,($pgheight - $ph*2) ); + $x1 = $mpdf->lMargin + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2; + $x2 = $mpdf->lMargin + $mpdf->pgwidth/2 + $hspacing/2 + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2; + $y1 = $mpdf->tMargin + ($pgheight /2 - $vspacing/2 - $ph)/2; + $y2 = $mpdf->tMargin + $pgheight /2 + $vspacing/2 + ($pgheight /2 - $vspacing/2 - $ph)/2; + if ($i % 4 == 1) { $x = $x1; $y = $y1; } + else if ($i % 4 == 2) { $x = $x2; $y = $y1; } + else if ($i % 4 == 3) { $x = $x1; $y = $y2; } + else if ($i % 4 == 0) { $x = $x2; $y = $y2; } + $tplIdx = $mpdf->ImportPage($i, 0,0,$pw,$pph[$i]); + + if ($align=='T') { $mpdf->UseTemplate($tplIdx, $x, $y, $pw, $pph[$i]); } + else { $mpdf->UseTemplate($tplIdx, $x, ($y + (($ph - $pph[$i])/2)), $pw, $pph[$i]); } + + if ($border >= 0) { $mpdf->Rect($x-$border, $y-$border, $pw+2*$border, $ph+2*$border); } +} + +$mpdf->Output(); + +exit; + +//============================================================== +function SinglePage($html, $pw, $ph, $minK=1, $inc=0.1) { +// returns height of page +global $mpdf; + $mpdf->AddPage('','','','','','',($mpdf->w - $pw),'',($mpdf->h - $ph),0,0); + $k = 1; + + $currpage = $mpdf->page; + $mpdf->WriteHTML($html); + + $newpage = $mpdf->page; + while($currpage != $newpage) { + for($u=0;$u<=($newpage-$currpage);$u++) { + // DELETE PAGE - the added page + unset($mpdf->pages[$mpdf->page]); + if (isset($mpdf->ktAnnots[$mpdf->page])) { unset( $mpdf->ktAnnots[$mpdf->page] ); } + if (isset($mpdf->tbrot_Annots[$mpdf->page])) { unset( $mpdf->tbrot_Annots[$mpdf->page] ); } + if (isset($mpdf->kwt_Annots[$mpdf->page])) { unset( $mpdf->kwt_Annots[$mpdf->page] ); } + if (isset($mpdf->PageAnnots[$mpdf->page])) { unset( $mpdf->PageAnnots[$mpdf->page] ); } + if (isset($mpdf->ktBlock[$mpdf->page])) { unset( $mpdf->ktBlock[$mpdf->page] ); } + if (isset($mpdf->PageLinks[$mpdf->page])) { unset( $mpdf->PageLinks[$mpdf->page] ); } + if (isset($mpdf->pageoutput[$mpdf->page])) { unset( $mpdf->pageoutput[$mpdf->page] ); } + // Go to page before - so can addpage + $mpdf->page--; + } + // mPDF 2.4 Float Images + if (count($mpdf->floatbuffer)) { + $mpdf->objectbuffer[] = $mpdf->floatbuffer['objattr']; + $mpdf->printobjectbuffer(false); + $mpdf->objectbuffer = array(); + $mpdf->floatbuffer = array(); + $mpdf->float = false; + } + + + $k += $inc; + if ((1/$k) < $minK) { die("Page no. ".$mpdf->page." is too large to fit"); } + $w = $pw * $k; + $h = $ph * $k; + $mpdf->_beginpage('','',($mpdf->w - $w),'',($mpdf->h - $h)); + $currpage = $mpdf->page; + + $mpdf->_out('2 J'); + $mpdf->_out(sprintf('%.2f w',0.1*$mpdf->k)); + $mpdf->SetFont($mpdf->default_font,'',$mpdf->default_font_size ,true,true); // forces write + $mpdf->SetDrawColor(0); + $mpdf->SetFillColor(255); + $mpdf->SetTextColor(0); + $mpdf->ColorFlag=false; + + // Start Transformation + $mpdf->StartTransform(); + $mpdf->transformScale((100/$k), (100/$k), 0, 0); + + $mpdf->WriteHTML($html); + + $newpage = $mpdf->page; + + //Stop Transformation + $mpdf->StopTransform(); + } + return ($mpdf->y / $k); +} +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php b/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php new file mode 100644 index 000000000..a0bddac8e --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php @@ -0,0 +1,1595 @@ + + + + + + + + +
      mPDF Example File
      +
      + +
      mPDF Example File
      +
      + +
      {PAGENO}/{nbpg}
      +
      + +
      {PAGENO}/{nbpg}
      +
      + + + + + + + +
      + +
      + +
      +
      +mPDF Example File +
      +
      + + + +

      The front cover can also be produced like this:

      + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); +// the last "false" allows a full page picture + +$mpdf->y = 70; +$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); +')) .'
      + + + + + + + + + + + + + +

      (H1) mPDF

      +

      (H2) Section 1

      +

      (H3) HTML Markup

      + + + + +

      Heading 4

      +
      Heading 5
      +
      Heading 6
      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +
      + +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      + +
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      + +
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      + +
      PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
      +nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
      +dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
      +sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
      +Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
      +ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
      + + + +
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      +code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color +
      + +

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      + + +

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      +

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      + +

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      + +

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      This tests underline and strikethrough when they are used together as they both use text-decoration

      + + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +
        +
      1. Item 1
      2. +
      3. Item 232
      4. +
      5. Item 3
      6. +
      7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. +
          +
        • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
        • +
        • Subitem 2 +
            +
          • +Level 3 subitem +
          • +
          +
        • +
        +
      8. +
      9. Item 5
      10. +
      + +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DataDataDataData
      2nd line
      More DataMore DataMore DataData
      2nd line
      DataDataDataData
      2nd line
      DataDataDataData
      2nd line
      + +This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + + + + + +

      Hyphenation

      + +

      Little Women - Chapter One - Playing Pilgrims

      + + +

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      + + + + + + + + + + +

      Lists

      +
      +
        +
      1. Text here lorem ipsum ibisque totum.
      2. +
      3. Text here lorem ipsum ibisque totum.
      4. +
      5. Text here lorem ipsum ibisque totum.
      6. +
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. +
      9. Text here lorem ipsum ibisque totum.
      10. +
      11. Text here lorem ipsum ibisque totum. +
          +
        1. Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum.
        6. +
        7. Text here lorem ipsum ibisque totum.
        8. +
        9. Text here lorem ipsum ibisque totum.
        10. +
        11. Text here lorem ipsum ibisque totum. +
            +
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum. +
          4. +
          5. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum. +
                +
              1. Text here lorem ipsum ibisque totum.
              2. +
              3. Text here lorem ipsum ibisque totum.
              4. +
              5. Text here lorem ipsum ibisque totum.
              6. +
              7. Text here lorem ipsum ibisque totum.
              8. +
              9. Text here lorem ipsum ibisque totum.
              10. +
              +
            10. +
            11. Text here lorem ipsum ibisque totum.
            12. +
            13. Text here lorem ipsum ibisque totum.
            14. +
            15. Text here lorem ipsum ibisque totum.
            16. +
            17. Text here lorem ipsum ibisque totum.
            18. +
            +
          6. +
          7. Text here lorem ipsum ibisque totum.
          8. +
          +
        12. +
        13. Text here lorem ipsum ibisque totum.
        14. +
        15. Text here lorem ipsum ibisque totum.
        16. +
        17. Text here lorem ipsum ibisque totum.
        18. +
        19. Text here lorem ipsum ibisque totum.
        20. +
        +
      12. +
      13. Text here lorem ipsum ibisque totum.
      14. +
      15. Text here lorem ipsum ibisque totum. +
          +
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum. +
            +
          1. Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum.
          4. +
          5. Text here lorem ipsum ibisque totum.
          6. +
          7. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          8. +
          9. Text here lorem ipsum ibisque totum.
          10. +
          11. Text here lorem ipsum ibisque totum.
          12. +
          13. Text here lorem ipsum ibisque totum. +
              +
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          14. +
          +
        6. +
        +
      16. +
      17. Text here lorem ipsum ibisque totum.
      18. +
      19. Text here lorem ipsum ibisque totum.
      20. +
      21. Text here lorem ipsum ibisque totum.
      22. +
      23. Text here lorem ipsum ibisque totum.
      24. +
      25. Text here lorem ipsum ibisque totum.
      26. +
      27. Text here lorem ipsum ibisque totum.
      28. +
      29. Text here lorem ipsum ibisque totum.
      30. +
      +
      + + + +

      Tables

      +

      mPDF supports all in-line properties inside tables.

      + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +This is data out of p +

      This is bold data p

      +This is bold data out of p
      +This is normal data after br +

      Heading 3 inside a table

      +Text here lorem ipsum ibisque totum.32 +
      This is data div
      +This is data out of div +
      This is data div (bold)
      +This is data out of div +
      Also data
      + +

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      + + + + +
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      + + +

      Tables

      +

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      +

      bpmTopic Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      More data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      + +

       

      + +

      bpmTopicC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      bpmTopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      +

       

      +

      bpmTopnTailC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      TopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2Bottom right align +

      This is data. Can use

      +

      bold italic sub or sup text

      +
      +

      Bottom right align

      +
      +

      This is data. This cell

      +

      uses Cell Styles to set

      +

      the borders.

      +

      All borders are collapsible

      +

      in mPDF.

      +
      This is data
      Row header 4 +

      This is data p

      +
      More data
      Row header 5Also data merged and centered
      + +

       

      + +

      Lists in a Table

      + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2 +
        +
      1. Item 1
      2. +
      3. Item 2 +
          +
        1. Subitem of ordered list
        2. +
        3. Subitem 2 +
            +
          1. Level 3 subitem
          2. +
          3. Level 3 subitem
          4. +
          +
        4. +
        +
      4. +
      5. Item 3
      6. +
      7. Another Item
      8. +
      9. Subitem +
          +
        1. Level 3 subitem
        2. +
        +
      10. +
      11. Another Item
      12. +
      +
      +Unordered list: +
        +
      • Item 1
      • +
      • Item 2 +
          +
        • Subitem of unordered list
        • +
        • Subitem 2 +
            +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          +
        • +
        +
      • +
      • Item 3
      • +
      +
      +

       

      + + +

      Automatic Column Width

      + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      + + +

      Column span

      + + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      + + + +

      Header & Footer Rows

      +

      A table using a header or footer row should repeat the header/footer row across pages:

      +

      bpmTopicC Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second column header

      +
      Third column header
      Col and Row Footer +

      Second column footer

      +
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data +

      This is data

      +
      +

      Row header 3

      +
      +

      This is data

      +
      This is data
      Row header 4This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      +

       

      + +

      Autosizing Tables

      +

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      + + + +

      Rotated Tables

      +

      This is set to rotate -90 degrees (counterclockwise).

      + +
      Periodic Table
      +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      +

       

      + + +

      Rotated text in Tables

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      + + + + + + +

      Nested Tables

      + +
      +Text before table + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      + +
      + + + +

      Text before table

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is data +Text before table + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +

      Text after table

      +
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      +
      C4
      Row DD2D3D4
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +
      This is data
      Row 4This is data + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      +
      C4
      Row DD2D3D4
      +
      This is data
      + + +
      + + + + +

      Forms

      +
      +Textarea + +

      +Select + followed by text +

      +Input Radio + No      Keep      Choice +

      +Input Text + +

      +Input Password + +

      + Checkboxes
      + Not selected
      + Disabled
      + Selected +

      + + + + +

      +
      + + + + +

      Annotations

      +

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + + + +

      Full Images & Barcode

      +

      On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

      + + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->SetAlpha(0.5); +$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); +// the last "false" allows a full page picture +$mpdf->SetAlpha(1); +')) .'
      + + +

      The back cover also has an ISBN barcode

      + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); +')) .'
      + + +

      But next is inserted the Index, which can also be done like this:

      + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); +$mpdf->WriteHTML(\'

      Index

      \'); +$mpdf->WriteHTML(\'\'); +')) .'
      + + + + + + +

      Index

      + + + + + + +
      + +
      + +
      + +
      + + + +'; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); + +$mpdf->StartProgressBarOutput(); + +$mpdf->mirrorMargins = 1; +$mpdf->SetDisplayMode('fullpage','two'); +$mpdf->list_number_suffix = ')'; +$mpdf->hyphenate = true; + +$mpdf->debug = true; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php b/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php new file mode 100644 index 000000000..69f11e8cd --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php @@ -0,0 +1,1609 @@ + + + + + + + + +
      mPDF Example File
      +
      + +
      mPDF Example File
      +
      + +
      {PAGENO}/{nbpg}
      +
      + +
      {PAGENO}/{nbpg}
      +
      + + + + + + + +
      + +
      + +
      +
      +mPDF Example File +
      +
      + + + +

      The front cover can also be produced like this:

      + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); +// the last "false" allows a full page picture + +$mpdf->y = 70; +$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); +')) .'
      + + + + + + + + + + + + + +

      (H1) mPDF

      +

      (H2) Section 1

      +

      (H3) HTML Markup

      + + + + +

      Heading 4

      +
      Heading 5
      +
      Heading 6
      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +
      + +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      + +
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      + +
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      + +
      PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
      +nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
      +dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
      +sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
      +Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
      +ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
      + + + +
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      +code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color +
      + +

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      + + +

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      +

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      + +

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      + +

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      This tests underline and strikethrough when they are used together as they both use text-decoration

      + + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +
        +
      1. Item 1
      2. +
      3. Item 232
      4. +
      5. Item 3
      6. +
      7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. +
          +
        • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
        • +
        • Subitem 2 +
            +
          • +Level 3 subitem +
          • +
          +
        • +
        +
      8. +
      9. Item 5
      10. +
      + +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DataDataDataData
      2nd line
      More DataMore DataMore DataData
      2nd line
      DataDataDataData
      2nd line
      DataDataDataData
      2nd line
      + +This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + + + + + +

      Hyphenation

      + +

      Little Women - Chapter One - Playing Pilgrims

      + + +

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      + + + + + + + + + + +

      Lists

      +
      +
        +
      1. Text here lorem ipsum ibisque totum.
      2. +
      3. Text here lorem ipsum ibisque totum.
      4. +
      5. Text here lorem ipsum ibisque totum.
      6. +
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. +
      9. Text here lorem ipsum ibisque totum.
      10. +
      11. Text here lorem ipsum ibisque totum. +
          +
        1. Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum.
        6. +
        7. Text here lorem ipsum ibisque totum.
        8. +
        9. Text here lorem ipsum ibisque totum.
        10. +
        11. Text here lorem ipsum ibisque totum. +
            +
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum. +
          4. +
          5. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum. +
                +
              1. Text here lorem ipsum ibisque totum.
              2. +
              3. Text here lorem ipsum ibisque totum.
              4. +
              5. Text here lorem ipsum ibisque totum.
              6. +
              7. Text here lorem ipsum ibisque totum.
              8. +
              9. Text here lorem ipsum ibisque totum.
              10. +
              +
            10. +
            11. Text here lorem ipsum ibisque totum.
            12. +
            13. Text here lorem ipsum ibisque totum.
            14. +
            15. Text here lorem ipsum ibisque totum.
            16. +
            17. Text here lorem ipsum ibisque totum.
            18. +
            +
          6. +
          7. Text here lorem ipsum ibisque totum.
          8. +
          +
        12. +
        13. Text here lorem ipsum ibisque totum.
        14. +
        15. Text here lorem ipsum ibisque totum.
        16. +
        17. Text here lorem ipsum ibisque totum.
        18. +
        19. Text here lorem ipsum ibisque totum.
        20. +
        +
      12. +
      13. Text here lorem ipsum ibisque totum.
      14. +
      15. Text here lorem ipsum ibisque totum. +
          +
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum. +
            +
          1. Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum.
          4. +
          5. Text here lorem ipsum ibisque totum.
          6. +
          7. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          8. +
          9. Text here lorem ipsum ibisque totum.
          10. +
          11. Text here lorem ipsum ibisque totum.
          12. +
          13. Text here lorem ipsum ibisque totum. +
              +
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          14. +
          +
        6. +
        +
      16. +
      17. Text here lorem ipsum ibisque totum.
      18. +
      19. Text here lorem ipsum ibisque totum.
      20. +
      21. Text here lorem ipsum ibisque totum.
      22. +
      23. Text here lorem ipsum ibisque totum.
      24. +
      25. Text here lorem ipsum ibisque totum.
      26. +
      27. Text here lorem ipsum ibisque totum.
      28. +
      29. Text here lorem ipsum ibisque totum.
      30. +
      +
      + + + +

      Tables

      +

      mPDF supports all in-line properties inside tables.

      + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +This is data out of p +

      This is bold data p

      +This is bold data out of p
      +This is normal data after br +

      Heading 3 inside a table

      +Text here lorem ipsum ibisque totum.32 +
      This is data div
      +This is data out of div +
      This is data div (bold)
      +This is data out of div +
      Also data
      + +

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      + + + + +
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      + + +

      Tables

      +

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      +

      bpmTopic Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      More data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      + +

       

      + +

      bpmTopicC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      bpmTopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      +

       

      +

      bpmTopnTailC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      TopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2Bottom right align +

      This is data. Can use

      +

      bold italic sub or sup text

      +
      +

      Bottom right align

      +
      +

      This is data. This cell

      +

      uses Cell Styles to set

      +

      the borders.

      +

      All borders are collapsible

      +

      in mPDF.

      +
      This is data
      Row header 4 +

      This is data p

      +
      More data
      Row header 5Also data merged and centered
      + +

       

      + +

      Lists in a Table

      + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2 +
        +
      1. Item 1
      2. +
      3. Item 2 +
          +
        1. Subitem of ordered list
        2. +
        3. Subitem 2 +
            +
          1. Level 3 subitem
          2. +
          3. Level 3 subitem
          4. +
          +
        4. +
        +
      4. +
      5. Item 3
      6. +
      7. Another Item
      8. +
      9. Subitem +
          +
        1. Level 3 subitem
        2. +
        +
      10. +
      11. Another Item
      12. +
      +
      +Unordered list: +
        +
      • Item 1
      • +
      • Item 2 +
          +
        • Subitem of unordered list
        • +
        • Subitem 2 +
            +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          +
        • +
        +
      • +
      • Item 3
      • +
      +
      +

       

      + + +

      Automatic Column Width

      + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      + + +

      Column span

      + + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      + + + +

      Header & Footer Rows

      +

      A table using a header or footer row should repeat the header/footer row across pages:

      +

      bpmTopicC Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second column header

      +
      Third column header
      Col and Row Footer +

      Second column footer

      +
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data +

      This is data

      +
      +

      Row header 3

      +
      +

      This is data

      +
      This is data
      Row header 4This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      +

       

      + +

      Autosizing Tables

      +

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      + + + +

      Rotated Tables

      +

      This is set to rotate -90 degrees (counterclockwise).

      + +
      Periodic Table
      +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      +

       

      + + +

      Rotated text in Tables

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      + + + + + + +

      Nested Tables

      + +
      +Text before table + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      + +
      + + + +

      Text before table

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is data +Text before table + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +

      Text after table

      +
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      +
      C4
      Row DD2D3D4
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +
      This is data
      Row 4This is data + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      +
      C4
      Row DD2D3D4
      +
      This is data
      + + +
      + + + + +

      Forms

      +
      +Textarea + +

      +Select + followed by text +

      +Input Radio + No      Keep      Choice +

      +Input Text + +

      +Input Password + +

      + Checkboxes
      + Not selected
      + Disabled
      + Selected +

      + + + + +

      +
      + + + + +

      Annotations

      +

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + + + +

      Graphs

      + + +
      FemaleMale
      35 - 4442
      45 - 5457
      55 - 642118
      65 - 741114
      75 - 841010
      85 - 9421
      95 - 1041
      TOTAL5452
      + +
      Subscriptions for 2008-09
      + + + + + + +

      Full Images & Barcode

      +

      On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

      + + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->SetAlpha(0.5); +$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); +// the last "false" allows a full page picture +$mpdf->SetAlpha(1); +')) .'
      + + +

      The back cover also has an ISBN barcode

      + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); +')) .'
      + + +

      But next is inserted the Index, which can also be done like this:

      + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); +$mpdf->WriteHTML(\'

      Index

      \'); +$mpdf->WriteHTML(\'\'); +')) .'
      + + + + + + +

      Index

      + + + + + + +
      + +
      + +
      + +
      + + + +'; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); +$mpdf->progbar_altHTML = ' +
      Creating PDF file. Please wait...
      '; +$mpdf->StartProgressBarOutput(); + +$mpdf->mirrorMargins = 1; +$mpdf->SetDisplayMode('fullpage','two'); +$mpdf->useGraphs = true; +$mpdf->list_number_suffix = ')'; +$mpdf->hyphenate = true; + +$mpdf->debug = true; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php b/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php new file mode 100644 index 000000000..898fa6b7c --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php @@ -0,0 +1,1609 @@ + + + + + + + + +
      mPDF Example File
      +
      + +
      mPDF Example File
      +
      + +
      {PAGENO}/{nbpg}
      +
      + +
      {PAGENO}/{nbpg}
      +
      + + + + + + + +
      + +
      + +
      +
      +mPDF Example File +
      +
      + + + +

      The front cover can also be produced like this:

      + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); +// the last "false" allows a full page picture + +$mpdf->y = 70; +$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); +')) .'
      + + + + + + + + + + + + + +

      (H1) mPDF

      +

      (H2) Section 1

      +

      (H3) HTML Markup

      + + + + +

      Heading 4

      +
      Heading 5
      +
      Heading 6
      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + +
      + +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      +
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      + +
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      + +
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      + +
      PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
      +nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
      +dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
      +sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
      +Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
      +ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
      + + + +
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      +code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color +
      + +

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      + + +

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      +

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      + +

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      + +

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      + +

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      + +

      This tests underline and strikethrough when they are used together as they both use text-decoration

      + + +

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      + +
        +
      1. Item 1
      2. +
      3. Item 232
      4. +
      5. Item 3
      6. +
      7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. +
          +
        • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
        • +
        • Subitem 2 +
            +
          • +Level 3 subitem +
          • +
          +
        • +
        +
      8. +
      9. Item 5
      10. +
      + +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      DataDataDataData
      2nd line
      More DataMore DataMore DataData
      2nd line
      DataDataDataData
      2nd line
      DataDataDataData
      2nd line
      + +This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. +

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      + + + + + +

      Hyphenation

      + +

      Little Women - Chapter One - Playing Pilgrims

      + + +

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      + + + + + + + + + + +

      Lists

      +
      +
        +
      1. Text here lorem ipsum ibisque totum.
      2. +
      3. Text here lorem ipsum ibisque totum.
      4. +
      5. Text here lorem ipsum ibisque totum.
      6. +
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. +
      9. Text here lorem ipsum ibisque totum.
      10. +
      11. Text here lorem ipsum ibisque totum. +
          +
        1. Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum.
        6. +
        7. Text here lorem ipsum ibisque totum.
        8. +
        9. Text here lorem ipsum ibisque totum.
        10. +
        11. Text here lorem ipsum ibisque totum. +
            +
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum. +
          4. +
          5. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum. +
                +
              1. Text here lorem ipsum ibisque totum.
              2. +
              3. Text here lorem ipsum ibisque totum.
              4. +
              5. Text here lorem ipsum ibisque totum.
              6. +
              7. Text here lorem ipsum ibisque totum.
              8. +
              9. Text here lorem ipsum ibisque totum.
              10. +
              +
            10. +
            11. Text here lorem ipsum ibisque totum.
            12. +
            13. Text here lorem ipsum ibisque totum.
            14. +
            15. Text here lorem ipsum ibisque totum.
            16. +
            17. Text here lorem ipsum ibisque totum.
            18. +
            +
          6. +
          7. Text here lorem ipsum ibisque totum.
          8. +
          +
        12. +
        13. Text here lorem ipsum ibisque totum.
        14. +
        15. Text here lorem ipsum ibisque totum.
        16. +
        17. Text here lorem ipsum ibisque totum.
        18. +
        19. Text here lorem ipsum ibisque totum.
        20. +
        +
      12. +
      13. Text here lorem ipsum ibisque totum.
      14. +
      15. Text here lorem ipsum ibisque totum. +
          +
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. +
        3. Text here lorem ipsum ibisque totum.
        4. +
        5. Text here lorem ipsum ibisque totum. +
            +
          1. Text here lorem ipsum ibisque totum.
          2. +
          3. Text here lorem ipsum ibisque totum.
          4. +
          5. Text here lorem ipsum ibisque totum.
          6. +
          7. Text here lorem ipsum ibisque totum. +
              +
            1. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          8. +
          9. Text here lorem ipsum ibisque totum.
          10. +
          11. Text here lorem ipsum ibisque totum.
          12. +
          13. Text here lorem ipsum ibisque totum. +
              +
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. +
            3. Text here lorem ipsum ibisque totum.
            4. +
            5. Text here lorem ipsum ibisque totum.
            6. +
            7. Text here lorem ipsum ibisque totum.
            8. +
            9. Text here lorem ipsum ibisque totum.
            10. +
            +
          14. +
          +
        6. +
        +
      16. +
      17. Text here lorem ipsum ibisque totum.
      18. +
      19. Text here lorem ipsum ibisque totum.
      20. +
      21. Text here lorem ipsum ibisque totum.
      22. +
      23. Text here lorem ipsum ibisque totum.
      24. +
      25. Text here lorem ipsum ibisque totum.
      26. +
      27. Text here lorem ipsum ibisque totum.
      28. +
      29. Text here lorem ipsum ibisque totum.
      30. +
      +
      + + + +

      Tables

      +

      mPDF supports all in-line properties inside tables.

      + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +This is data out of p +

      This is bold data p

      +This is bold data out of p
      +This is normal data after br +

      Heading 3 inside a table

      +Text here lorem ipsum ibisque totum.32 +
      This is data div
      +This is data out of div +
      This is data div (bold)
      +This is data out of div +
      Also data
      + +

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      + + + + +
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      + + +

      Tables

      +

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      +

      bpmTopic Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      More data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      + +

       

      + +

      bpmTopicC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      bpmTopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is dataThis is data
      Row 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row 3

      +
      +

      This is long data

      +
      This is data
      +

      Row 4 <td> cell

      +
      This is data +

      This is data

      +
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      +

       

      +

      bpmTopnTailC Class (centered) Odd and Even rows

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col/Row Header +

      Second column header p

      +
      Third column header
      Row header 1This is dataThis is data
      Row header 2 +

      This is data p

      +
      +

      This is data

      +
      +

      Row header 3

      +
      +

      This is long data

      +
      This is data
      +

      Row header 4

      +

      <th> cell acting as header

      +
      This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      + +

       

      + +

      TopnTail Class

      + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2Bottom right align +

      This is data. Can use

      +

      bold italic sub or sup text

      +
      +

      Bottom right align

      +
      +

      This is data. This cell

      +

      uses Cell Styles to set

      +

      the borders.

      +

      All borders are collapsible

      +

      in mPDF.

      +
      This is data
      Row header 4 +

      This is data p

      +
      More data
      Row header 5Also data merged and centered
      + +

       

      + +

      Lists in a Table

      + + + + + + + + + + + + + + +
      Col and Row Header +

      Second

      +

      column

      +
      Top right align
      +

      Row header 1 p

      +
      This is dataThis is data
      Row header 2 +
        +
      1. Item 1
      2. +
      3. Item 2 +
          +
        1. Subitem of ordered list
        2. +
        3. Subitem 2 +
            +
          1. Level 3 subitem
          2. +
          3. Level 3 subitem
          4. +
          +
        4. +
        +
      4. +
      5. Item 3
      6. +
      7. Another Item
      8. +
      9. Subitem +
          +
        1. Level 3 subitem
        2. +
        +
      10. +
      11. Another Item
      12. +
      +
      +Unordered list: +
        +
      • Item 1
      • +
      • Item 2 +
          +
        • Subitem of unordered list
        • +
        • Subitem 2 +
            +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          • Level 3 subitem
          • +
          +
        • +
        +
      • +
      • Item 3
      • +
      +
      +

       

      + + +

      Automatic Column Width

      + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      + + +

      Column span

      + + + + + + + + + + +
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      +Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      +Suspendisse potenti
      MechanismsFusce eleifend neque sit amet erat.
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      +Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      + + + +

      Header & Footer Rows

      +

      A table using a header or footer row should repeat the header/footer row across pages:

      +

      bpmTopicC Class

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Col and Row Header +

      Second column header

      +
      Third column header
      Col and Row Footer +

      Second column footer

      +
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data +

      This is data

      +
      +

      Row header 3

      +
      +

      This is data

      +
      This is data
      Row header 4This is data +

      This is data

      +
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      +

       

      + +

      Autosizing Tables

      +

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      + + + +

      Rotated Tables

      +

      This is set to rotate -90 degrees (counterclockwise).

      + +
      Periodic Table
      +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      +

       

      + + +

      Rotated text in Tables

      + +
      Periodic Table
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      + + + + + + +

      Nested Tables

      + +
      +Text before table + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is data + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      +
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      + +
      + + + +

      Text before table

      + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is data +Text before table + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +

      Text after table

      +
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      +
      C4
      Row DD2D3D4
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      +
      This is data
      Row 4This is data + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row AA2A3A4
      Row BB2B4
      Row CC2 + + + + + + + + + + +
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      +
      C4
      Row DD2D3D4
      +
      This is data
      + + +
      + + + + +

      Forms

      +
      +Textarea + +

      +Select + followed by text +

      +Input Radio + No      Keep      Choice +

      +Input Text + +

      +Input Password + +

      + Checkboxes
      + Not selected
      + Disabled
      + Selected +

      + + + + +

      +
      + + + + +

      Annotations

      +

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      +

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + + + +

      Graphs

      + + +
      FemaleMale
      35 - 4442
      45 - 5457
      55 - 642118
      65 - 741114
      75 - 841010
      85 - 9421
      95 - 1041
      TOTAL5452
      + +
      Subscriptions for 2008-09
      + + + + + + +

      Full Images & Barcode

      +

      On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

      + + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->SetAlpha(0.5); +$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); +// the last "false" allows a full page picture +$mpdf->SetAlpha(1); +')) .'
      + + +

      The back cover also has an ISBN barcode

      + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); +')) .'
      + + +

      But next is inserted the Index, which can also be done like this:

      + + +
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ +$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); +$mpdf->WriteHTML(\'

      Index

      \'); +$mpdf->WriteHTML(\'\'); +')) .'
      + + + + + + +

      Index

      + + + + + + +
      + +
      + +
      + +
      + + + +'; + +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); + +$mpdf->progbar_heading = 'mPDF file progress (Advanced)'; +$mpdf->StartProgressBarOutput(2); + +$mpdf->mirrorMargins = 1; +$mpdf->SetDisplayMode('fullpage','two'); +$mpdf->useGraphs = true; +$mpdf->list_number_suffix = ')'; +$mpdf->hyphenate = true; + +$mpdf->debug = true; + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php b/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php new file mode 100644 index 000000000..279979dba --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php @@ -0,0 +1,41 @@ +tabSpaces = 6; + +$mpdf->allow_charset_conversion=true; +$mpdf->charset_in='windows-1252'; + + +//============================================================== + +$html = ' +

      mPDF

      +

      ChangeLog

      +
      +'; +$lines = file('../CHANGELOG.txt'); + +$html .= '
      ';
      +foreach($lines AS $line) {
      +	$html .= htmlspecialchars($line);
      +}
      +$html .= '
      '; +$html .= '
      '; + +//============================================================== + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php b/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php new file mode 100644 index 000000000..903d34978 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php @@ -0,0 +1,1905 @@ + +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; +} +.radialgradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65; + margin: auto; +} +.rounded { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + border-radius: 2mm; + background-clip: border-box; +} +h4 { + font-family: sans; + font-weight: bold; + margin-top: 1em; + margin-bottom: 0.5em; +} +div { + padding:1em; + margin-bottom: 1em; + text-align:justify; +} +.example pre { + background-color: #d5d5d5; + margin: 1em 1cm; + padding: 0 0.3cm; +} + +pre { text-align:left } +pre.code { font-family: monospace } + +table.html4colortable {margin:auto; width:80%; border:none } +table.html4colortable TD {border:none; padding:0} +td .colorsquare { display:block;width:16px;height:16px;border:2px solid black } + +table.x11colortable td {text-align:center; background: white; } +table.x11colortable td.c { text-transform:uppercase } +table.x11colortable td:first-child, table.x11colortable td:first-child+td { border:1px solid black } +table.x11colortable th {text-align:center; background:black; color:white } + +table.tprofile th.title {background:gray; color:white} +table.tprofile th { width:29%;padding:2px } +table.tprofile td { width:71%;padding:2px } + +table.hslexample { background: #808080; padding:1em; margin:0; float:left; } +table.hslexample td,table.hslexample th { font-size:smaller;width:3em } + + + +

      mPDF Version 3.0

      +

      New Features

      + +
      +

      Page background

      +
      +The background colour can now be set by CSS styles on the <body> tag. This will set the background for the whole page. In this document, the background has been set as a gradient (see below). +
      + +

      Background Gradients

      +
      +Background can be set as a linear or radial gradient between two colours. The background has been set on this <div> element to a linear gradient. CSS style used here is:
      +background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
      +The four numbers are coordinates in the form (x1, y1, x2, y2) which defines the gradient vector. x and y are values from 0 to 1, where 1 represents the height or width of the box as it is printed. +
      +
      +Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. +
      +
      +The background has been set on this <div> element to a radial gradient. CSS style used here is:
      +background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;
      +The five numbers are coordinates in the form (x1, y1, x2, y2, r) where (x1, y1) is the starting point of the gradient with color1, +(x2, y2) is the center of the circle with color2, and r is the radius of the circle. +(x1, y1) should be inside the circle, otherwise some areas will not be defined. +
      +
      +Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. +
      + +

      Background Images

      +
      +The CSS properties background-image, background-position, and background-repeat are supported as defined in CSS2, as well as the shorthand form "background". +
      +The background has been set on this <div> element to:
      +background: transparent url(\'bg.jpg\') repeat fixed right top;
      +Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. +
      + +

      Rounded Borders

      +
      +Rounded corners to borders can be added using border-radius as defined in the draft spec. of CSS3.
      + +The two length values of the border-*-radius properties define the radii of a quarter ellipse that defines the shape of the corner of the outer border edge. +The first value is the horizontal radius.
      +border-top-left-radius: 55pt 25pt; 55pt is radius of curve from top end of left border starting to go round to the top.
      + +If the second length is omitted it is equal to the first (and the corner is thus a quarter circle). If either length is zero, the corner is square, not rounded.
      + +The border-radius shorthand sets all four border-*-radius properties. If values are given before and after a slash, then the values before the slash set the horizontal radius and the values after the slash set the vertical radius. If there is no slash, then the values set both radii equally. The four values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If bottom-left is omitted it is the same as top-right. If bottom-right is omitted it is the same as top-left. If top-right is omitted it is the same as top-left. +
      +
      +border-radius: 4em;
      + +would be equivalent to
      + +border-top-left-radius: 4em;
      +border-top-right-radius: 4em;
      +border-bottom-right-radius: 4em;
      +border-bottom-left-radius: 4em;

      +
      +and
      +border-radius: 2em 1em 4em / 0.5em 3em;
      +would be equivalent to
      +border-top-left-radius: 2em 0.5em;
      +border-top-right-radius: 1em 3em;
      +border-bottom-right-radius: 4em 0.5em;
      +border-bottom-left-radius: 1em 3em;
      +
      + +

      Interlaced and alpha-channel-set PNG images supported

      +
      +Prior to version 3.0, mPDF has not supported PNG images which are interlaced, or images with transparency - now it does. +
      With a blue background-color set, this PNG image with transparency appears like this: +
      +
      +
      With a different background-color set, the same image appears like this: +
      +
      +
      This will not work with background-gradient or background-image (the background-color is used to paint the transparent parts of the image).
      +
      + + +
      + + +

      CSS "Float"

      +
      +Block elements can be positioned alongside each other using the CSS property float: left or right. The clear property can also be used, set as left|right|both. Float is only supported on block elements (i.e. not SPAN etc.) and is not fully compliant with the CSS specification. +Float only works properly if a width is set for the float, otherwise the width is set to the maximum available (full width, or less if floats already set). +
      +Margin-right can still be set for a float:right and vice-versa. +
      +A block element next to a float has the padding adjusted so that content fits in the remaining width. Text next to a float should wrap correctly, but backgrounds and borders will overlap and/or lie under the floats in a mess. +
      +NB The width that is set defines the width of the content-box. So if you have two floats with width=50% and either of them has padding, margin or border, they will not fit together on the page. +
      +
      +This is text in a <div> element that is set to float:right and width:28%. +
      +
      +This is text in a <div> element that is set to float:left and width:54%. +
      + +
      +This is text that follows a <div> element that is set to clear:both. + + + +

      HTML Headers now support hyperlinks

      +
      +Hyperlinks can now be included in HTML headers and footers. See the link to the documentation manual in the footer of this document. +
      + + +contd... + + +

      Resetting Page Numbering

      +
      +Page numbers can now be reset to any value (rather than just 1) during the document i.e. in any function/tag that supports resetting the numbering: AddPage(), <pagebreak> etc. +
      +Note that the page number has been reset to 20 from this page. +
      + +

      Page Numbering - additional text

      +
      +Text can be defined to appear before and after page numbers ($pagenumPrefix; $pagenumSuffix; $nbpgPrefix; $nbpgSuffix;) +
      +This document has a non-HTML header defined with the right content as \'{PAGENO}{nbpg}\'.
      +The following values have been set:
      +$mpdf->pagenumPrefix = \'Page \';
      +$mpdf->pagenumSuffix = \'\';
      +$mpdf->nbpgPrefix = \' of \';
      +$mpdf->nbpgSuffix = \' pages.\';
      +
      +
      + +This is only recommended in non-HTML headers and footers. Although the text is added correctly in HTML headers & footers, the text alignment is not readjusted after substitution e.g. if it used in the right margin. +
      + +

      Other New features

      +
      +- internal links supported in Indexes (parameter added to CreateIndex() and CreateReference()
          $useLinking=true;)
      +- improved handling of <br>, block elements, and text lines inside tables
      +- borders of block-level elements & table cell borders supported (partially) in columns
      +- optional error reporting for problems with Images ($showImageErrors=true;)
      +- ToC will word-wrap long entries
      +- internal links (Bookmarks, IndexEntry and ToCEntry) rewritten to give more accurate positioning
          (when used as <tag>)
      +- autofont algorithm improved for CJK languages
      +
      + + +

      All SVG color keywords supported

      +

      This table provides a list of all the named colors supported by mPDF. The + list is precisely the same as the SVG 1.0 color + keyword names. + The two color swatches on the left illustrate setting the background color + of a table cell in two ways: The first column uses the named color value, + and the second column uses the respective numeric color value. +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Named + Numeric + Color name + + Hex rgb + + Decimal + +
        + +   + + aliceblue + + #f0f8ff + + 240,248,255 + +
        + +   + + antiquewhite + + #faebd7 + + 250,235,215 + +
        + +   + + aqua + + #00ffff + + 0,255,255 + +
        + +   + + aquamarine + + #7fffd4 + + 127,255,212 + +
        + +   + + azure + + #f0ffff + + 240,255,255 + +
        + +   + + beige + + #f5f5dc + + 245,245,220 + +
        + +   + + bisque + + #ffe4c4 + + 255,228,196 + +
        + +   + + black + + #000000 + + 0,0,0 + +
        + +   + + blanchedalmond + + #ffebcd + + 255,235,205 + +
        + +   + + blue + + #0000ff + + 0,0,255 + +
        + +   + + blueviolet + + #8a2be2 + + 138,43,226 + +
        + +   + + brown + + #a52a2a + + 165,42,42 + +
        + +   + + burlywood + + #deb887 + + 222,184,135 + +
        + +   + + cadetblue + + #5f9ea0 + + 95,158,160 + +
        + +   + + chartreuse + + #7fff00 + + 127,255,0 + +
        + +   + + chocolate + + #d2691e + + 210,105,30 + +
        + +   + + coral + + #ff7f50 + + 255,127,80 + +
        + +   + + cornflowerblue + + #6495ed + + 100,149,237 + +
        + +   + + cornsilk + + #fff8dc + + 255,248,220 + +
        + +   + + crimson + + #dc143c + + 220,20,60 + +
        + +   + + cyan + + #00ffff + + 0,255,255 + +
        + +   + + darkblue + + #00008b + + 0,0,139 + +
        + +   + + darkcyan + + #008b8b + + 0,139,139 + +
        + +   + + darkgoldenrod + + #b8860b + + 184,134,11 + +
        + +   + + darkgray + + #a9a9a9 + + 169,169,169 + +
        + +   + + darkgreen + + #006400 + + 0,100,0 + +
        + +   + + darkgrey + + #a9a9a9 + + 169,169,169 + +
        + +   + + darkkhaki + + #bdb76b + + 189,183,107 + +
        + +   + + darkmagenta + + #8b008b + + 139,0,139 + +
        + +   + + darkolivegreen + + #556b2f + + 85,107,47 + +
        + +   + + darkorange + + #ff8c00 + + 255,140,0 + +
        + +   + + darkorchid + + #9932cc + + 153,50,204 + +
        + +   + + darkred + + #8b0000 + + 139,0,0 + +
        + +   + + darksalmon + + #e9967a + + 233,150,122 + +
        + +   + + darkseagreen + + #8fbc8f + + 143,188,143 + +
        + +   + + darkslateblue + + #483d8b + + 72,61,139 + +
        + +   + + darkslategray + + #2f4f4f + + 47,79,79 + +
        + +   + + darkslategrey + + #2f4f4f + + 47,79,79 + +
        + +   + + darkturquoise + + #00ced1 + + 0,206,209 + +
        + +   + + darkviolet + + #9400d3 + + 148,0,211 + +
        + +   + + deeppink + + #ff1493 + + 255,20,147 + +
        + +   + + deepskyblue + + #00bfff + + 0,191,255 + +
        + +   + + dimgray + + #696969 + + 105,105,105 + +
        + +   + + dimgrey + + #696969 + + 105,105,105 + +
        + +   + + dodgerblue + + #1e90ff + + 30,144,255 + +
        + +   + + firebrick + + #b22222 + + 178,34,34 + +
        + +   + + floralwhite + + #fffaf0 + + 255,250,240 + +
        + +   + + forestgreen + + #228b22 + + 34,139,34 + +
        + +   + + fuchsia + + #ff00ff + + 255,0,255 + +
        + +   + + gainsboro + + #dcdcdc + + 220,220,220 + +
        + +   + + ghostwhite + + #f8f8ff + + 248,248,255 + +
        + +   + + gold + + #ffd700 + + 255,215,0 + +
        + +   + + goldenrod + + #daa520 + + 218,165,32 + +
        + +   + + gray + + #808080 + + 128,128,128 + +
        + +   + + green + + #008000 + + 0,128,0 + +
        + +   + + greenyellow + + #adff2f + + 173,255,47 + +
        + +   + + grey + + #808080 + + 128,128,128 + +
        + +   + + honeydew + + #f0fff0 + + 240,255,240 + +
        + +   + + hotpink + + #ff69b4 + + 255,105,180 + +
        + +   + + indianred + + #cd5c5c + + 205,92,92 + +
        + +   + + indigo + + #4b0082 + + 75,0,130 + +
        + +   + + ivory + + #fffff0 + + 255,255,240 + +
        + +   + + khaki + + #f0e68c + + 240,230,140 + +
        + +   + + lavender + + #e6e6fa + + 230,230,250 + +
        + +   + + lavenderblush + + #fff0f5 + + 255,240,245 + +
        + +   + + lawngreen + + #7cfc00 + + 124,252,0 + +
        + +   + + lemonchiffon + + #fffacd + + 255,250,205 + +
        + +   + + lightblue + + #add8e6 + + 173,216,230 + +
        + +   + + lightcoral + + #f08080 + + 240,128,128 + +
        + +   + + lightcyan + + #e0ffff + + 224,255,255 + +
        + +   + + lightgoldenrodyellow + + #fafad2 + + 250,250,210 + +
        + +   + + lightgray + + #d3d3d3 + + 211,211,211 + +
        + +   + + lightgreen + + #90ee90 + + 144,238,144 + +
        + +   + + lightgrey + + #d3d3d3 + + 211,211,211 + +
        + +   + + lightpink + + #ffb6c1 + + 255,182,193 + +
        + +   + + lightsalmon + + #ffa07a + + 255,160,122 + +
        + +   + + lightseagreen + + #20b2aa + + 32,178,170 + +
        + +   + + lightskyblue + + #87cefa + + 135,206,250 + +
        + +   + + lightslategray + + #778899 + + 119,136,153 + +
        + +   + + lightslategrey + + #778899 + + 119,136,153 + +
        + +   + + lightsteelblue + + #b0c4de + + 176,196,222 + +
        + +   + + lightyellow + + #ffffe0 + + 255,255,224 + +
        + +   + + lime + + #00ff00 + + 0,255,0 + +
        + +   + + limegreen + + #32cd32 + + 50,205,50 + +
        + +   + + linen + + #faf0e6 + + 250,240,230 + +
        + +   + + magenta + + #ff00ff + + 255,0,255 + +
        + +   + + maroon + + #800000 + + 128,0,0 + +
        + +   + + mediumaquamarine + + #66cdaa + + 102,205,170 + +
        + +   + + mediumblue + + #0000cd + + 0,0,205 + +
        + +   + + mediumorchid + + #ba55d3 + + 186,85,211 + +
        + +   + + mediumpurple + + #9370db + + 147,112,219 + +
        + +   + + mediumseagreen + + #3cb371 + + 60,179,113 + +
        + +   + + mediumslateblue + + #7b68ee + + 123,104,238 + +
        + +   + + mediumspringgreen + + #00fa9a + + 0,250,154 + +
        + +   + + mediumturquoise + + #48d1cc + + 72,209,204 + +
        + +   + + mediumvioletred + + #c71585 + + 199,21,133 + +
        + +   + + midnightblue + + #191970 + + 25,25,112 + +
        + +   + + mintcream + + #f5fffa + + 245,255,250 + +
        + +   + + mistyrose + + #ffe4e1 + + 255,228,225 + +
        + +   + + moccasin + + #ffe4b5 + + 255,228,181 + +
        + +   + + navajowhite + + #ffdead + + 255,222,173 + +
        + +   + + navy + + #000080 + + 0,0,128 + +
        + +   + + oldlace + + #fdf5e6 + + 253,245,230 + +
        + +   + + olive + + #808000 + + 128,128,0 + +
        + +   + + olivedrab + + #6b8e23 + + 107,142,35 + +
        + +   + + orange + + #ffa500 + + 255,165,0 + +
        + +   + + orangered + + #ff4500 + + 255,69,0 + +
        + +   + + orchid + + #da70d6 + + 218,112,214 + +
        + +   + + palegoldenrod + + #eee8aa + + 238,232,170 + +
        + +   + + palegreen + + #98fb98 + + 152,251,152 + +
        + +   + + paleturquoise + + #afeeee + + 175,238,238 + +
        + +   + + palevioletred + + #db7093 + + 219,112,147 + +
        + +   + + papayawhip + + #ffefd5 + + 255,239,213 + +
        + +   + + peachpuff + + #ffdab9 + + 255,218,185 + +
        + +   + + peru + + #cd853f + + 205,133,63 + +
        + +   + + pink + + #ffc0cb + + 255,192,203 + +
        + +   + + plum + + #dda0dd + + 221,160,221 + +
        + +   + + powderblue + + #b0e0e6 + + 176,224,230 + +
        + +   + + purple + + #800080 + + 128,0,128 + +
        + +   + + red + + #ff0000 + + 255,0,0 + +
        + +   + + rosybrown + + #bc8f8f + + 188,143,143 + +
        + +   + + royalblue + + #4169e1 + + 65,105,225 + +
        + +   + + saddlebrown + + #8b4513 + + 139,69,19 + +
        + +   + + salmon + + #fa8072 + + 250,128,114 + +
        + +   + + sandybrown + + #f4a460 + + 244,164,96 + +
        + +   + + seagreen + + #2e8b57 + + 46,139,87 + +
        + +   + + seashell + + #fff5ee + + 255,245,238 + +
        + +   + + sienna + + #a0522d + + 160,82,45 + +
        + +   + + silver + + #c0c0c0 + + 192,192,192 + +
        + +   + + skyblue + + #87ceeb + + 135,206,235 + +
        + +   + + slateblue + + #6a5acd + + 106,90,205 + +
        + +   + + slategray + + #708090 + + 112,128,144 + +
        + +   + + slategrey + + #708090 + + 112,128,144 + +
        + +   + + snow + + #fffafa + + 255,250,250 + +
        + +   + + springgreen + + #00ff7f + + 0,255,127 + +
        + +   + + steelblue + + #4682b4 + + 70,130,180 + +
        + +   + + tan + + #d2b48c + + 210,180,140 + +
        + +   + + teal + + #008080 + + 0,128,128 + +
        + +   + + thistle + + #d8bfd8 + + 216,191,216 + +
        + +   + + tomato + + #ff6347 + + 255,99,71 + +
        + +   + + turquoise + + #40e0d0 + + 64,224,208 + +
        + +   + + violet + + #ee82ee + + 238,130,238 + +
        + +   + + wheat + + #f5deb3 + + 245,222,179 + +
        + +   + + white + + #ffffff + + 255,255,255 + +
        + +   + + whitesmoke + + #f5f5f5 + + 245,245,245 + +
        + +   + + yellow + + #ffff00 + + 255,255,0 + +
        + +   + + yellowgreen + + #9acd32 + + 154,205,50 +
      + + +'; + + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + + +$mpdf=new mPDF('c','A4','','',15,15,20,20,5,5); + +//============================================================== + +$mpdf->pagenumPrefix = 'Page '; +$mpdf->pagenumSuffix = ''; +$mpdf->nbpgPrefix = ' of '; +$mpdf->nbpgSuffix = ' pages.'; +$header = array( + 'L' => array( + ), + 'C' => array( + ), + 'R' => array( + 'content' => '{PAGENO}{nbpg}', + 'font-family' => 'sans', + 'font-style' => '', + 'font-size' => '9', /* gives default */ + ), + 'line' => 1, +); +$footer = ' + + + +
      See documentation manual for further details
      +'; + +$mpdf->SetHeader($header,'O'); +$mpdf->SetHTMLFooter($footer); +//============================================================== + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php b/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php new file mode 100644 index 000000000..8882ad241 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php @@ -0,0 +1,615 @@ + +body { font-family: sans; } +h4, p { margin: 0pt; +} +h5 { margin-bottom: 0; } +table.items { + font-size: 9pt; + border-collapse: collapse; + border: 3px solid #880000; + background-color: #FFFFFF; +} +td { vertical-align: top; +} +table thead td { background-color: #EEEEEE; + text-align: center; +} +table tfoot td { background-color: #AAFFEE; + text-align: center; +} +.barcode { + padding: 1.5mm; + margin: 0; + vertical-align: top; + color: #000000; +} +.barcodecell { + text-align: center; + vertical-align: middle; + padding: 0; +} + +@page { + background-gradient: linear #00FFFF #FFFF00 0 0.5 1 0.5; + odd-header-name: html_myHTMLHeaderOdd; + even-header-name: html_myHTMLHeaderEven; + odd-footer-name: html_myHTMLFooterOdd; + even-footer-name: html_myHTMLFooterEven; +} +#myfixed { + position: fixed; + overflow: auto; + height: 60mm; + margin-left: auto; + right: 30mm; + top: 150mm; + border: 1px solid #880000; + background-color: #EEDDFF; + padding: 3em; + text-align: justify; + text-indent: 3em; + font-size: 10pt; + font-family:sans; + font-style: italic; + line-height: 1.8; + color: red; +} +.myfixed2 { position: absolute; + overflow: visible; + left: 0; + right: 0; + width: 100mm; + top: 40mm; + margin-left: auto; + margin-right: auto; + border: 1px solid #000088; + background-color: #EEDDFF; + background: transparent url(\'bg.jpg\') repeat scroll right top; + padding: 1.5em; + font-family:sans; +} +.myfixed3 { position: absolute; + overflow: visible; + right: 0; + bottom: 0; + border: 1px solid #000088; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 1.5em; + font-family:sans; +} +.myfixed4 { position: absolute; + overflow: auto; + left: 150mm; + right: 0; + top: 100mm; + height: 10mm; + border: 1px solid #000088; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.5em; + font-family:sans; +} +.myfixed5 { position: absolute; + overflow: visible; + left: 150mm; + right: 0; + top: 125mm; + height: 10mm; + border: 1px solid #000088; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.5em; + font-family:sans; +} +.myfixed6 { position: absolute; + overflow: hidden; + right: 150mm; + left: 0; + top: 110mm; + height: 10mm; + border: 1px solid #000088; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.5em; + font-family:sans; +} +.myfixed7 { position: absolute; + right: 140mm; + top: 130mm; + width: auto; + border: 1px solid #000088; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.5em; + font-family:sans; +} +div.indic, div.arabic { + font-size: 14pt; +} +div.indic h5, div.arabic h5 { + margin: 0; +} +div.indic p, div.arabic p, div.arabic li { + margin: 0; + margin-botom: 1em; + line-height: 1.8; +} +div.arabic p, div.arabic h5, div.arabic h4, div.arabic td { + text-align: right; +} +div.arabic td { + text-align: right; + font-size: 14pt; + padding: 1em; +} +h2 { color: #880000; margin-bottom: 0.2em; } +h4 { margin-bottom: 0.2em; } + + +
      Page {PAGENO} of {nb}
      +
      + +
      {PAGENO}
      +
      + +
      {PAGENO}
      +
      + +
      {PAGENO}
      +
      + + +

      mPDF Version 4.0 New features

      +
      • Ability to embed font subsets (much smaller files)
      • +
      • Support for Fixed position block elements
      • +
      • Support for Indic languages including consonant conjuncts
      • +
      • Much improved support for Arabic languages
      • +
      • New utility to help create your own fonts
      • +
      • Increased support for barcodes
      • +
      + +

      Indic Fonts/Languages

      +
      From BBC World Service Hindi News (http://www.bbc.co.uk/hindi/)
      +
      +

      कुछ और तथ्य पॉप

      +

      जैक्सन मामले से जुड़े नए तथ्य सामने आए.

      +
      + + +
      From BBC World Service Tamil News (http://www.bbc.co.uk/tamil/)
      +
      +

      செய்தியரங்கம்

      +

      இலங்கையில் சிறுபான்மைக் கட்சிகளுக்கிடையில் பொது இணக்கப்பாட்டை எட்டும் முயற்சியில் ...

      +
      + +
      From Yahoo Indian- Malayalam (http://in.malayalam.yahoo.com/)
      +
      +

      പഴശ്ശിരാജ മെഗാഹിറ്റ്; ‘സ്വ.ലേ’ മുന്നേറുന്നു

      +

      പഴശ്ശിരാജ മലയാള സിനിമയുടെ ചരിത്രത്തിലെ ഏറ്റവും വലിയ വിജയമാകുകയാണ്. 30 ദിവസങ്ങള്‍ പിന്നിട്ടപ്പോള്‍ ചിത്രത്തിന്‍റെ കളക്ഷന്‍ 12 കോടി...

      +
      + +
      From Yahoo Indian- Punjabi (http://in.punjabi.yahoo.com/)
      +
      +

      ਚਾਂਸ ਪੇ ਡਾਂਸ ਸ਼ਾਹਿਦ ਦੀ ਕਹਾਣੀ

      +

      ਕੇਨ ਘੋਸ਼ ਦੀ ਫ਼ਿਲਮ ਚਾਂਸ ਪੇ ਡਾਂਸ ਫ਼ਿਲਮ ਵਿੱਚ ਸ਼ਾਹਿਦ ਕਪੂਰ ਮੁੱਖ ਭੂਮਿਕਾ ਵਿੱਚ ਹਨ। ਫ਼ਿਲਮ ਦੇ ਬਾਰੇ ਵਿੱਚ ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਆਪ ਸ਼ਾਹਿਦ ਦੀ ਕਹਾਣੀ ਹੈ। ਫ਼ਿਲਮ ਦਾ ਨਾਇਕ ਮੱਧਮ ਪਰਿਵਾਰ ਦਾ ਦੱਸਿਆ ਗਿਆ ਹੈ ਅਤੇ ਕਈ...

      +
      + +
      From Yahoo Indian- Gujarati (http://in.gujarati.yahoo.com/)
      +
      +

      શિલ્પા અને રાજ આજે સાત ફેરા લેશે

      +

      બોલીવુડ સુંદરી શિલ્પા શેટ્ટી પોતાના મંગેતર ભારતીય મૂળના બ્રિટિશ ઉદ્યોગપતિ રાજ કુંદ્રા સાથે આજે લગ્ન બંધનમાં બંધાય જશે. વિવાહ સમારંભ રાજના મિત્ર કિરણ બાવાના ખંડાલામાં આવેલ ફાર્મ...

      +
      + + +

      Arabic Fonts/Languages

      +
      From BBC World Service Arabic News (http://www.bbc.co.uk/arabic/)
      +
      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع القفاز الجلدي المرصع الذي ارتداه مايكل جاكسون للمرة الاولى عام 1983 خلال اول خطوة من رقصته الشهيرة "السير على القمر (مون ووك)" بسعر 350 الف دولار السبت في نيويورك خلال مزاد لمقتنيات المغني الامريكي الراحل.

      +
      + +
      In alternative fonts (available with mPDF):
      +
      +
      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +
      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      +
      +
      + + + +
      From BBC World Service Persian News (http://www.bbc.co.uk/persian/)
      +
      +

      \'طبق نظرسنجی دولت انتخابات به دور دوم کشیده می شد\'

      +

      علیرضا زاکانی نماینده تهران در مجلس گفته که یک روز پیش از برگزاری انتخابات ریاست جمهوری در ایران، نظرسنجی وزارت کشور و وزارت اطلاعات ایران نشان می داد که انتخابات به دور دوم کشیده می شود.

      +
      + + +
      From BBC World Service Urdu News (http://www.bbc.co.uk/urdu/)
      +
      +

      جیکسن کا دستانہ 35 لاکھ ڈالر کا

      +

      امریکی پاپ سنگر مائیکل جیکسن کا دستانہ جس پر نقلی ہیرے جڑے ہوئے تھے اور جو انھیں پہلی مرتبہ ’مون واک‘ پیش کیئے جانے پر ملا تھا پینتیس لاکھ ڈالر میں نیلام ہو گیا ہے۔

      +
      + + +
      From BBC World Service Pashto News (http://www.bbc.co.uk/pashto/)
      +
      +

      ستاسي پيغامونه اود خوښى سندرې

      +

      د موسيقۍ داخپرونې په افغانستان کې داېف اېم په څپود سهار په لسو بجو اوريدلى شى

      +
      + + + +

      Fixed-position block elements

      +mPDF 4.0 supports fixed-position block elements (at least partially). This page has some examples of fixed-position elements. +
      +
      #1. Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula eros vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula eros vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio.

      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt eros turpis, vel aliquam quam eros odio et sapien. +
      +Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt eros turpis, vel aliquam quam eros odio et sapien. +
      +Mauris ante pede, eros auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      +
      + +
      #2. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna.
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      + +
      #3. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      + +
      #4. overflow: auto
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.
      + +
      #5. overflow: visible
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.
      + +
      #6. overflow: hidden
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.
      + +
      #7. width: auto
      Shrink-to-fit
      + + +

      Barcodes

      +

      NB Quiet zones - The barcode object includes space to the right/left or top/bottom only when the specification states a \'quiet zone\' or \'light margin\'. All the examples below also have CSS property set on the barcode object i.e. padding: 1.5mm;

      + +

      EAN-13 Barcodes (EAN-2 and EAN-5)

      +

      NB EAN-13, UPC-A, UPC-E, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      +

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      EAN13Standard EAN-13 barcode. Accepts 12 or 13 characters (creating checksum digit if required). [0-9] numeric only.
      ISBNStandard EAN-13 barcode with \'ISBN\' number shown above [shown at height="0.66"]
      ISSNStandard EAN-13 barcode with \'ISSN\' number shown above [shown at size="0.8"]
      + +

      EAN-8, UPC-A and UPC-E Barcodes

      +

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      +

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      UPCAUPC-A barcode. This is a subset of the EAN-13. (098277211236) Accepts 11 or 12 characters (creating checksum digit if required). [0-9] numeric only
      UPCEUPC-E barcode. Requires the UPC-A code to be entered as above (e.g. 042100005264 to give 425261). NB mPDF will die with an error message if the code is not valid, as only some UPC-A codes can be converted into valid UPC-E codes. UPC-E doesn\'t have a check digit encoded explicity, rather the check digit is encoded in the parity of the other six characters. The check digit that is encoded is the check digit from the original UPC-A barcode.
      EAN8EAN-8 (5512345) Accepts 7 or 8 characters (creating checksum digit if required). [0-9] numeric only
      + +

      EAN-2 and EAN-5 supplements, and combined forms

      +

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      EAN2EAN-2 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Used to denote an issue of a periodical. EAN-2 supplement accepts 2 digits [0-9] only, EAN-5 five.
      EAN5EAN-5 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Usually used in conjunction with EAN-13 for the price of books. 90000 is the code for no price.
      EAN13P2Standard EAN-13 barcode with 2-digit UPC supplement (07)
      ISBNP2Standard EAN-13 barcode with \'ISBN\' number shown above, and 2-digit EAN-2 supplement
      ISSNP2Standard EAN-13 barcode with \'ISSN\' number shown above, and 2-digit EAN-2 supplement
      UPCAP2UPC-A barcode with 2-digit EAN-2 supplement. This is a subset of the EAN-13. (075678164125 07)
      UPCEP2UPC-E barcode with 2-digit EAN-2 supplement. (042100005264 07)
      EAN8P2EAN-8 barcode with 2-digit EAN-2 supplement (55123457 07)
      EAN13P5Standard EAN-13 barcode with 5-digit UPC supplement (90000)
      ISBNP5Standard EAN-13 barcode with \'ISBN\' number shown above, and 5-digit EAN-5 supplement
      ISSNP5Standard EAN-13 barcode with \'ISSN\' number shown above, and 5-digit EAN-5 supplement
      UPCAP5UPC-A barcode with 5-digit EAN-5 supplement. This is a subset of the EAN-13. (075678164125 90000)
      UPCEP5UPC-E barcode with 5-digit EAN-5 supplement. (042100005264 90000)
      EAN8P5EAN-8 barcode with 5-digit EAN-5 supplement (55123457 90000)
      + + +

      Postcode Barcodes

      +

      These all have sizes fixed by their specification. Although they can be altered using \'size\' it is not recommended. \'height\' is ignored.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      IMBIntelligent Mail Barcode - also known as: USPS OneCode 4-State Customer Barcode, OneCode 4CB, USPS 4CB, 4-CB, 4-State Customer Barcode, USPS OneCode Solution Barcode. (01234567094987654321-01234567891) Accepts: Up to 31 digits (required 20-digit Tracking Code, and up to 11-digit Routing Code; this may be 0, 5, 9, or 11 digits). If the Routing code is included, it should be spearated by a hyphen - like this example.
      RM4SCCRoyal Mail 4-state Customer barcode (SN34RD1A). Accepts: max. 9 characters. Valid characters: [A-Z,0-9] Checksum digit: automatic.
      KIXDutch KIX version of Royal Mail 4-state Customer barcode (SN34RD1A). Valid characters: [A-Z,0-9]. Checksum digit: automatic.
      POSTNETPOSTNET barcode. Accepts 5, 9 or 11 digits. Valid characters: [0-9]. Checksum digit: automatic.
      PLANETPLANET barcode. Accepts 11 or 13 digits. Valid characters: [0-9]. Checksum digit: automatic.
      + + +

      Variable width Barcodes

      +

      These barcodes are all of variable length depending on the code entered. There is no recommended maximum size for any of these specs, but all recommend a minimum X-dimension (width of narrowest bar) as 7.5mil (=0.19mm). The default used here is twice the minimum i.e. X-dim = 0.38mm.

      +

      The specifications give a minimum height of 15% of the barcode length (which can be variable). The bar height in mPDF is set to a default value of 10mm.

      +

      \'size\' will scale the barcode in both dimensions. mPDF will accept any number, but bear in mind that size="0.5" will set the bar width to the minimum. The \'height\' attribute further allows scaling - this factor is applied to already scaled barcode. Thus size="2" height="0.5" will give a barcode twice the default width (X-dim=0.76mm) and at the default height set in mPDF i.e. 10mm.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      CODEDESCRIPTIONBARCODE
      C128ACODE 128 A. Valid characters: [A-Z uppercase and control chars ASCII 0-31]. Checksum digit: automatic.
      C128BCODE 128 B. Valid characters: [Upper / Lower Case + All ASCII Printable Characters]. Checksum digit: automatic.
      C128CCODE 128 C. Valid characters: [0-9]. Must be an even number of digits. Checksum digit: automatic.
      EAN128C [A/B/C]EAN128 (A, B, and C). Specified variant of Code 128, utilising an FNC1 start code. Also known as UCC/EAN-128 or GS1-128. Valid characters: [cf. Code 128]. Checksum digit: automatic.
      C39CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. Valid characters: [0-9 A-Z \'-\' . Space $/+%]
      C39+CODE 39 + CHECKSUM. Checksum digit: automatic.
      C39ECODE 39 EXTENDED. Valid characters: [ASCII-characters between 0..127]
      C39E+CODE 39 EXTENDED + CHECKSUM. Checksum digit: automatic.
      S25Standard 2 of 5. Valid characters: [0-9]
      S25+Standard 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25Interleaved 2 of 5. Valid characters: [0-9]
      I25+Interleaved 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25BInterleaved 2 of 5 with bearer bars. Valid characters: [0-9]
      I25B+Interleaved 2 of 5 + CHECKSUM with bearer bars. Valid characters: [0-9]. Checksum digit: automatic.
      C93CODE 93 - USS-93 (extended). Valid characters: [ASCII-characters between 0..127]. Checksum digits: automatic.
      MSIMSI. Modified Plessey. Valid characters: [0-9]
      MSI+MSI + CHECKSUM (module 11). Checksum digit: automatic.
      CODABARCODABAR. Valid characters: [0-9 \'-\' $:/.+ ABCD] ABCD are used as stop and start characters e.g. A34698735B
      CODE11CODE 11. Valid characters: [0-9 and \'-\']. Checksum digits: 1 (or 2 if length of code is > 10 characters) - automatic.
      + +'; + + +//============================================================== +//============================================================== +//============================================================== +include("../mpdf.php"); + +$mpdf=new mPDF('s'); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); + +exit; + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm b/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm new file mode 100644 index 000000000..73eca93a2 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm @@ -0,0 +1,36 @@ + + + + + +

      Line-height & vertical alignment

      +
      In these examples, top and bottom padding are set to 0, so the block height = line height.
      +
      The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.
      +Line-height: "normal" (set in mPDF by default as 1.33).
      +

      Normal text 16pt font-size  and normal again

      + +
      Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.
      +

      Normal text 16pt font-size  and normal again

      + +
      Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).
      +When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.
      +This means that as far as possible, multiple lines will remain equally spaced
      +Line-height: 200%
      +

      Normal text 16pt font-size  and normal again

      + +
      If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height. +
      Line-height: 2em
      +

      Normal text 18pt font-size  and normal again

      + +
      If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.
      +Line-height: 2em
      +

      Normal text 24pt font-size  and normal again

      + + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php b/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php new file mode 100644 index 000000000..fb30356f5 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php @@ -0,0 +1,492 @@ + +body { + font-family: sans-serif; +} +@page { + margin-top: 2.0cm; + margin-bottom: 2.0cm; + margin-left: 2.3cm; + margin-right: 1.7cm; + margin-header: 8mm; + margin-footer: 8mm; + footer: html_myHTMLFooter; + background-color:#ffffff; +} + +@page :first { + margin-top: 6.5cm; + margin-bottom: 2cm; + header: html_myHTMLHeader; + footer: _blank; + resetpagenum: 1; + background-gradient: linear #FFFFFF #FFFF44 0 0.5 1 0.5; + background: #ccffff url(bgbarcode.png) repeat-y fixed left top; +} +@page letterhead { + margin-top: 2.0cm; + margin-bottom: 2.0cm; + margin-left: 2.3cm; + margin-right: 1.7cm; + margin-header: 8mm; + margin-footer: 8mm; + footer: html_myHTMLFooter; + background-color:#ffffff; +} + +@page letterhead :first { + margin-top: 6.5cm; + margin-bottom: 2cm; + header: html_myHTMLHeader; + footer: _blank; + resetpagenum: 1; +} +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; +} +.rounded { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + border-radius: 2mm; + background-clip: border-box; +} +h4 { + font-weight: bold; + margin-top: 1em; + margin-bottom: 0.3em; +} +div.text { + padding:1em; + margin-bottom: 0.25em; + text-align:justify; +} +div.artificial { + font-family: arialuni; /* custom font using MS Arial Unicode */ +} +p { margin-top: 0; } +.code { + font-family: mono; + font-size: 9pt; + background-color: #d5d5d5; + margin: 1em 1cm; + padding: 0 0.3cm; +} + + + + + + + + +

      mPDF Version 4.2

      +

      New Features

      + +
      +
        +
      • image handling improved
      • +
      • table layout - additional control over resizing
      • +
      • vertical-alignment of images - better support for all CSS types
      • +
      • top and bottom margins collapse between block elements
      • +
      • improved support for CSS line-height
      • +
      • display progress bar whilst generating file
      • +
      • CSS @page selector can be specified when adding a pagebreak
      • +
      • CSS @page selector allows different margins, backgrounds, headers/footers on :first :left and :right pages
      • +
      • PNG images with alpha channel fully supported
      • +
      • ability to generate italic and bold font variants from base font file
      • +
      • CJK fonts to embed as subsets
      • +
      • "double" border on block elements
      • +
      • character substitution for missing characters in UTF-8 fonts
      • +
      • direct passing of dynamically produced image data
      • +
      • background-gradient and background-image can now co-exist
      • +
      + +Note: automatic top- and bottom-margin to accomodate varying header/footer size was introduced in v4.0 but was not highlighted cf. AutoHeaderMargin in the Manual. + +
      +
      + +
      +

      Page backgrounds

      +Background images, gradients and/or colours can be used together on the same page. On this page, the bars on the left hand side are created using a background-image, whilst a background-gradient sets the background to the whole page. +
      +
      + +
      +

      CSS "double" border

      +Block elements can now use the CSS property: border(style) = double. See also the tiger logo in the header of this page. +
      +
      + +
      +

      CJK fonts to embed as subsets

      +When writing documents with Chinese, Japanese or Korean characters, mPDF has previously required the end-user to download Adobe\'s free CJK font pack. +The ability to embed font subsets now makes it feasible to use open license CJK fonts. 2 fonts are now available to download as an additional font-pack: +
        +
      • zn_hannom_a - contains all characters in the SJIS, BIG-5, and GBK codepages; original file was Han Nom A font (Hi-res version) from http://vietunicode.sourceforge.net/fonts/fonts_hannom.html
      • +
      • unbatang_0613 - contains all the (Korean) characters in the UHC codepage; original file from from http://kldp.net/projects/unfonts/download
      • +
      +The following characters only added an extra 15kB to the size of this PDF file, and approximately 0.15 seconds extra to compile:
      +Chinese (traditional) '."\xe6\x86\x82\xe9\xac\xb1".' ; chinese (simplified) '."\xe6\x9d\xa5\xe8\x87\xaa".' ; japanese '."\xe3\x81\x9f\xe3\x82\x90".' ; korean '."\xed\x82\xa4\xec\x8a\xa4".' +
      +
      + +
      +

      Artificial Bold and Italic

      +The text in this block is in ArialUnicodeMS font. Using embedded subsets it covers most characters you want to print - BUT it does not have bold, italic, or bold-italic forms.
      +From version 4.2, mPDF will create "artificial" font styles if they are not available as separate font files:
      +

      The quick brown fox jumps over a lazy dog

      +

      The quick brown fox jumps over a lazy dog

      +

      The quick brown fox jumps over a lazy dog

      +
      +
      + +
      +

      Character substitution in UTF-8 files

      +This paragraph has the font-family set to Trebuchet MS, and the document has the default font set as DejaVuSansCondensed. +The following characters are not present in the Trebuchet font, and are substituted from the core Adobe Zapfdingbats font:
      + +✐ ✑ ✒ ✓ ✔ ✕ ✖ ✗ ✘ ✙ ✚ ✛ ✜ ✝ ✞ ✟
      +The characters are not present in the Trebuchet font, and are substituted from the (default) DejaVuSansCondensed font:
      +ʀ ʁ ʂ ʃ ʄ ʅ ʆ ʇ ʈ ʉ ʊ ʋ ʌ ʍ ʎ ʏ
      +Character substitution in UTF-8 files is enabled by setting: +

      +$mpdf->useSubstitutionsMB = true; +

      +
      NB In mPDF 5.0 this has changed to +

      +$mpdf->useSubstitutions = true; +

      +
      +It is not recommended to enable this for regular use, as it will add to the processing time. +
      + + + + + +

      Margin-collapse

      +

      mPDF has always allowed margins to be collapsed at the top and bottom of pages. This is specified by the custom CSS property "margin-collapse: collapse"

      + +

      mPDF 4.2 also allows margins to collapse between block elements on the page. This is the default behaviour in browsers, and has been enabled in mPDF 4.2 by default.

      + +

      In the next 2 paragraphs, the first one has the margin-bottom set to 3em, and the second has the margin-top set to 0em. So the vertical-space between paragraphs is 3em:

      + +

      The quick brown fox jumps over a lazy dog

      +

      The quick brown fox jumps over a lazy dog

      + +

      In the next 2 paragraphs, the first one has the margin-bottom set to 2em, and the second has the margin-top set to 1em. The margins collapse to the larger of the adjoining margins i.e. 2em:

      + +

      The quick brown fox jumps over a lazy dog

      +

      The quick brown fox jumps over a lazy dog

      + + + + +

      Images

      + +

      PNG Alpha channel

      +PNG alpha channel transparency is now fully supported, and works against solid backgrounds, gradients or background images: + + + + + + + + +
      + +
      + +

      Image Border and padding

      +Image padding is now supported as well as border and margin: + +
      + +

      Vertical alignment

      +
      From mPDF version 4.2 onwards, most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom.
      +Note: The default value for vertical alignment has been changed to baseline, and the default padding to 0, consistent with most browsers. +
      +
      +
      +baseline: +text-bottom: +middle: +bottom: +text-top: +top: +
      + + + +

      Image Alignment

      +
      From mPDF version 4.2 onwards, in-line images can be individually aligned (vertically). +
      + +
      +These images +are +top +aligned +
      + +
      +These images +are +text-top +aligned +
      + +
      +These images +are +bottom +aligned +
      + +
      +These images +are +text-bottom +aligned +
      + +
      +These images +are +baseline +aligned +
      + +
      +These images +are +middle +aligned +
      + + + +

      Images from PHP

      + +
      + +
      +This image was created with the following code: + +

      + $img = imagecreatetruecolor(200, 200);
      + $white = imagecolorallocate($img, 255, 255, 255);
      + $red = imagecolorallocate($img, 255, 0, 0);
      + $green = imagecolorallocate($img, 0, 255, 0);
      + $blue = imagecolorallocate($img, 0, 0, 255);
      + imagearc($img, 100, 100, 200, 200, 0, 360, $white);
      + imagearc($img, 100, 100, 150, 150, 25, 155, $red);
      + imagearc($img, 60, 75, 50, 50, 0, 360, $green);
      + imagearc($img, 140, 75, 50, 50, 0, 360, $blue);
      + ob_start();
      + imagejpeg($img);
      + $mpdf->smileyface = ob_get_clean();
      + imagedestroy($img);
      +

      +and written to the document using: +

      +<img src="var:smileyface" /> +

      + + + +

      Line-height inheritance

      +Line-height inheritance has been altered to follow the CSS2 recommendation: +
        +
      • normal is inherited as "normal"
      • +
      • 1.2 is inherited as a factor
      • +
      • 120% is converted to an actual value and then inherited as the computed value
      • +
      • em is converted to an actual value and then inherited as the computed value
      • +
      • px pt mm are inherited as fixed values
      • +
      + +
      Relative values (e.g. 1.3, normal)
      +
      +This DIV has the line-height set as "2.0" and font-size as 12pt. The line-height is therefore 24pt, but the factor of 2 is inherited...
      +Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse... +
      +This DIV has the font-size set as 8pt. The line-height of 2 is inherited...
      +Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. +
      +This DIV has the font-size set as 18pt. The line-height of 2 is inherited...
      +Nulla felis erat, imperdiet eu, ullamcorper non... +
      +
      +
      +
      +
      Absolute values (e.g. 130%, 1.3em, 18pt)
      +
      +This DIV has the line-height set as "200%" and font-size as 12pt. The computed line-height of 24pt is inherited...
      +Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse... +
      +This DIV has the font-size set as 8pt. The computed line-height of 24pt is inherited...
      +Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. +
      +This DIV has the font-size set as 18pt. The computed line-height of 24pt is inherited...
      +Nulla felis erat, imperdiet eu, ullamcorper non... +
      +
      +
      + + + +

      Line-height & vertical alignment

      +
      In these examples, top and bottom padding are set to 0, so the block height = line height.
      +
      The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.
      +Line-height: "normal" (set in mPDF by default as 1.33).
      +

      Normal text 16pt font-size  and normal again

      + +
      Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.
      +

      Normal text 16pt font-size  and normal again

      + +
      Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).
      +When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.
      +This means that as far as possible, multiple lines will remain equally spaced
      +Line-height: 200%
      +

      Normal text 16pt font-size  and normal again

      + +
      If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height. +
      Line-height: 2em
      +

      Normal text 18pt font-size  and normal again

      + +
      If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.
      +Line-height: 2em
      +

      Normal text 24pt font-size  and normal again

      + +
      +This broadly reflects the behaviour of IE and Firefox. Note that tall characters such as  may fall outside the computed line-heights. See the same in an HTML page. + + + +

      Extended use of CSS @page selectors

      +The CSS @page selector, together with the pseudo-selectors :first :left :right have increased support in mPDF 4.2
      +A named @page can be selected when forcing a new page, e.g. this page was started with:
      +<pagebreak page-selector="letterhead" /> +
      +The header and background on this page (and page 1 of the document) are set by the CSS selector: @page letterhead :first {} whilst subsequent pages have no header, a footer, and no background. +
      +CSS @page selectors allow different margins, backgrounds, headers/footers to be set on :first :left and :right pages. Only fixed or mirrored left- and right-margins are supported (i.e. cannot specify different margins for :left and :right). +
      +This layout can be used to produce company letters with only the first page on letterheaded paper. + + +

      Table Layout control

      +

      mPDF attempts to layout tables according to HTML and CSS specifications. However, because of the difference between screen and paged media, mPDF resizes tables when necessary to make them fit the page. This will happen if the minimum table-width is greater than the page-width. Minimum table-width is defined as the minimum width to accomodate the longest word in each column i.e. words will never be split. +

      +

      This resizing (minimum-width) can be disabled using a custom CSS property "overflow" on the TABLE tag. There are 4 options:

      +<table style="overflow: auto"> (this is the default, using resizing) + + + + +
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      +
      +<table style="overflow: visible"> (disables resizing, but allows overflow to show) + + + + +
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      +
      + +<table style="overflow: hidden"> (disables resizing, and hides/clips any overflow) + + + + +
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      +
      + +<table style="overflow: wrap"> (forces words to break as necessary) + + + + +
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      +
      + + + +'; +if ($_REQUEST['html']) { echo $html; exit; } + + +//============================================================== +//============================================================== +//============================================================== +define('_MPDF_URI','../'); // required for the progress bar + +include("../mpdf.php"); + +$mpdf=new mPDF('','A4','','',15,15,20,20,5,5); + +$mpdf->StartProgressBarOutput(2); // 2 => advanced mode + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->useSubstitutions = true; + +// Dynamically create image in var:smileyface + $img = imagecreatetruecolor(200, 200); + $white = imagecolorallocate($img, 255, 255, 255); + $red = imagecolorallocate($img, 255, 0, 0); + $green = imagecolorallocate($img, 0, 255, 0); + $blue = imagecolorallocate($img, 0, 0, 255); + imagearc($img, 100, 100, 200, 200, 0, 360, $white); + imagearc($img, 100, 100, 150, 150, 25, 155, $red); + imagearc($img, 60, 75, 50, 50, 0, 360, $green); + imagearc($img, 140, 75, 50, 50, 0, 360, $blue); + ob_start(); + imagejpeg($img); + $mpdf->smileyface = ob_get_clean(); + imagedestroy($img); + + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php new file mode 100644 index 000000000..ab0c2b652 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php @@ -0,0 +1,431 @@ + +body { + font-family: sans-serif; + font-size: 10pt; +} +h4 { + font-variant: small-caps; +} +h5 { + margin-bottom: 0; + color: #110044; +} +dl { + margin: 0; +} + +

      mPDF

      +

      Fonts in mPDF Version 5.x

      +

      Note: This example will only display correctly if you have all the fonts installed in mPDF

      + +

      mPDF version 5 supports Truetype fonts, reading and embedding directly from the .ttf font files. Fonts must follow the Truetype specification and use Unicode mapping to the characters. Truetype collections (.ttc files) and Opentype files (.otf) in Truetype format are also supported.

      + +

      Easy to add new fonts

      +
        +
      1. Upload the Truetype font file to the fonts directory (/ttfonts)
      2. +
      3. Define the font file details in the configuration file (config_fonts.php)
      4. +
      5. Access the font by specifying it in your HTML code as the CSS font-family
      6. +
      + +
      These are some examples of Windows fonts:
      +
      +
      Arial - The quick, sly fox jumped over the lazy brown dog.
      +
      Comic Sans MS - The quick, sly fox jumped over the lazy brown dog.
      +
      Trebuchet - The quick, sly fox jumped over the lazy brown dog.
      +
      Calibri - The quick, sly fox jumped over the lazy brown dog.
      +
      QuillScript - The quick, sly fox jumped over the lazy brown dog.
      +
      Lucidaconsole - The quick, sly fox jumped over the lazy brown dog.
      +
      Tahoma - The quick, sly fox jumped over the lazy brown dog.
      +
      + +

      Full Unicode support

      + +

      The DejaVu fonts distributed with mPDF contain an extensive set of characters, but it is easy to add fonts to access uncommon characters.

      + +
      +
      +
      Georgian (DejaVuSansCondensed)
      +
      Ⴀ Ⴁ Ⴂ Ⴃ Ⴄ Ⴅ Ⴆ Ⴇ Ⴈ Ⴉ Ⴊ Ⴋ Ⴌ Ⴍ Ⴎ Ⴏ Ⴐ Ⴑ Ⴒ Ⴓ
      +
      Runic (Junicode)
      +
      ᚠ ᚡ ᚢ ᚣ ᚤ ᚥ ᚦ ᚧ ᚨ ᚩ ᚪ ᚫ ᚬ ᚭ ᚮ ᚯ ᚰ ᚱ ᚲ ᚳ ᚴ ᚵ ᚶ ᚷ ᚸ ᚹ ᚺ ᚻ ᚼ
      +
      Greek Extended (Quivira)
      +
      ἀ ἁ ἂ ἃ ἄ ἅ ἆ ἇ Ἀ Ἁ Ἂ Ἃ Ἄ Ἅ Ἆ Ἇ ἐ ἑ ἒ ἓ ἔ ἕ
      +
      IPA Extensions (Quivira)
      +
      ɐ ɑ ɒ ɓ ɔ ɕ ɖ ɗ ɘ ə ɚ ɛ ɜ ʣ ʤ ʥ ʦ ʧ ʨ ʩ ʪ ʫ
      +
      Letterlike Symbols (Symbola)
      +
      ℀ ℁ ℂ ℃ ℄ ℅ ℆ ℇ ℈ ℉ ℊ ℋ ℌ ℍ ℎ ℏ ℐ ℑ ℒ ℓ ℔ ℕ № ℗ ℘ ℙ ℚ ℛ ℜ
      +
      Mathematical Operators (Symbola)
      +
      ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏ ∐ ∑ − ∓ ∔ ∕ ∖ ∗ ∘ ∙ √ ∛ ∜ ∝ ∞
      +
      Miscellaneous Technical (Symbola)
      +
      ⌀ ⌁ ⌂ ⌃ ⌄ ⌅ ⌆ ⌇⌎ ⌏ ⌐ ⌑ ⌒ ⌓ ⌔ ⌕ ⌖ ⌗ ⌘ ⌙ ⌚ ⌛ ⌠ ⌡ ⌢ ⌣ ⌤ ⌥ ⌦ ⌧
      +
      Enclosed Alphanumerics (Quivira)
      +
      ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯
      +
      Miscellaneous Symbols (DejaVuSansCondensed)
      +
      ☀ ☁ ☂ ☃ ☄ ★ ☆ ☇ ☈ ☉ ☊ ☋ ☌ ☍ ☎ ☏ ☐ ☑ ☒
      +
      Supplemental Arrows-B (Symbola)
      +
      ⤀ ⤁ ⤂ ⤃ ⤄ ⤅ ⤆ ⤇ ⤈ ⤉ ⤊ ⤋ ⤐ ⤑ ⤔ ⤕ ⤖ ⤗ ⤘ ⥶ ⥷ ⥸ ⥹ ⥺ ⥻ ⥼ ⥽
      +
      +
      +The online manual lists a number of open-source fonts available to cover uncommon characters: http://mpdf1.com/manual/index.php?tid=451 + + +

      Complex scripts

      + +

      Although all characters may be displayed, there are various reasons why a script may not appear as expected.

      + +

      Right-to-left languages (Hebrew, Arabic etc.)

      +Arabic languages and Hebrew are written in a right-to-left direction (RTL). mPDF recognises both Arabic and Hebrew languages and reverses text direction automatically. + +
      +ألسّلام عليكم     שלום +
      + +Arabic languages (but not Hebrew) also change the form of the letter depending on its position in the text e.g. these are the initial, medial, final, and isolated forms of arabic letter \'ain\': + +
      ع ـع ـعـ عـ
      +The isolated characters are contained in the Unicode block \'Arabic\' U+0600 - U+06FF.
      +The initial, medial and final forms are contained in Unicode Blocks \'Arabic Presentation Forms\' A and B (U+FB50 - U+FDFF, U+FE70 - U+FEFE). Note that quite a large number of fonts contain the isolated characters but not the presentation forms. Fonts used with mPDF must contain the \'Arabic Presentation Forms\' in order to display arabic text correctly. mPDF automatically converts letters to their initial/medial/final forms in several languages: arabic, persian/farsi, urdu, sindhi and pashto. + +

      Arabic text is used for many different languages e.g. persian/farsi, urdu, pashto etc. These languages often contain letters unique to that language. \'Arabic\' fonts do not always contain the full set of arabic charcters necessary for all languages.

      + +

      Other RTL languages (using other alphabets) are reversed in order, but not otherwise processed, by mPDF e.g. Syriac, Thaana, N\'Ko, and Samaritan.

      + + +

      Indic languages

      +Indic languages are also complex scripts which require some processing of characters before display. For example some vowels consist of 2 characters, to be placed before and after the adjacent consonant e.g. +
      +
      U+0D1C + U+0D4C [vowel AU] = [written together as &#x0D1C;&#x0D4C;]
      + ജ + ൌ = ജൌ
      +

      Consonant conjuncts are where two adjacent characters are written as a single \'conjunct\' form e.g.

      +
      प + ॡ = पॣ
      +

      mPDF can support some of these languages, but requires specially prepared font files that are unique to mPDF.
      +Supported languages: Bengali, Devanāgarī, Gujarāti, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu

      + +
      + আসসালামু আলাইকুম + નમસ્તે + നമസ്കാരം + नमस्ते + வணக்கம்! +
      +Complex scripts not supported: Khmer, Sinhala, Tibetan, Myanmar (Burmese), Balinese + +

      Vertical writing

      +
      Vertical writing is not supported by mPDF (e.g. Mongolian and Phags-pa) although the individual characters can be displayed using suitable fonts.
      + + + +

      Combining diacritics

      +

      In Unicode, letters with diacritics (e.g. ÁáȦȧÄä) are usually represented as a single character e.g. Unicode U+0196 is an A Umlaut. There are 4 blocks in Unicode of diacritics or \'marks\' which can be used to combine with adjacent letters: Combining Diacritical Marks (U+0300 - U+036F), Combining Diacritical Marks Supplement (U+1DC0 - U+1DFF), Combining Marks for Symbols(U+20D0 - U+20FF) and Combining Half Marks (U+FE20 - U+FE2F).

      + + +

      Software applications use special positioning information stored in OpenType font files to resposition the diacritic/mark depending on the context. mPDF does not support this repositioning and is dependent on the font design and original placement of the diacritic: +

      + + +
      +
      Á á Ȧ ȧ Ä ä ï (Precomposed characters: DejaVu Sans Condensed)
      +
      Á á Ȧ ȧ Ä ä ï (Using diacritics: DejaVu Sans Condensed)
      +
      Á á Ȧ ȧ Ä ä ï (Arial Unicode MS)
      +
      Á á Ȧ ȧ Ä ä ï (Times New Roman)
      +
      Á á Ȧ ȧ Ä ä ï (Courier New)
      +
      +

      It is recommended to use precomposed characters whenever possible with mPDF.

      + + + + +

      Unicode Supplementary Planes

      +

      The original Unicode allocated characters between x0000 and xFFFF (65,536 characters). This \'Basic Multilingual Plane\' supported most characters in common use, including a large number of Unified Chinese-Japanese-Korean characters (CJK). Later the Unicode standard was extended to 16 Planes.

      + +

      The first plane (plane 0), the Basic Multilingual Plane (BMP), is where most characters have been assigned so far.

      +

      Plane 1, the Supplementary Multilingual Plane (SMP), is mostly used for historic scripts such as Linear B, but is also used for musical and mathematical symbols.

      +

      Plane 2, the Supplementary Ideographic Plane (SIP), is used for about 40,000 Unified Han (CJK) Ideographs.

      + +

      mPDF version 5 supports fonts containing characters from all Unicode Planes. By choosing the correct font, almost every single character from Unicode 5 can be displayed in a PDF file.

      + +

      Unicode Supplementary Multilingual Plane (SMP or Plane 1) U+10000 - U+1FFFF

      +
      Gothic text
      +
      +This paragraph shows Gothic text. These characters lie in the Unicode Supplementary Multilingual Plane U+10330 - U+1034F. +
      +
      +
      +𐌰 𐌱 𐌲 𐌳 𐌴 𐌵 𐌶 𐌷 𐌸 𐌹 𐌺 𐌻 𐌼 𐌽 𐌾 𐌿 𐍀 𐍁 𐍂 𐍃 𐍄 𐍅 𐍆 𐍇 𐍈 𐍉 𐍊 +
      +
      +
      +Font: MPH2BDamase (damase_v.2.ttf) available from: http://www.wazu.jp/gallery/views/View_MPH2BDamase.html +
      + +
      Egyptian Hieroglyphics
      +
      +This paragraph shows Egyptian Hieroglyphics. These characters lie in the Unicode Supplementary Multilingual Plane U+13000 - U+1342F. +
      +
      +
      +𓀀 𓀁 𓀂 𓀃 𓀄 𓀅 𓀆 𓀇 𓀈 𓀉 𓀊 𓀋 𓀌 𓀍 𓀎 𓀏 𓀐 𓀑 +
      +
      +
      +Font: Aegyptus.otf available from: http://users.teilar.gr/~g1951d/ +
      + +

      SMP contains mainly ancient scripts - see http://mpdf1.com/manual/index.php?tid=451 for full list.

      + +

      mPDF uses a different method to embed fonts in the PDF file if they include characters from SMP or SIP, because the characters cannot be represented by a 4 character hex code 0000-FFFF. This method is less eficient than the default method, and it can be suppressed by adding the font name to the array \'BMPonly\' in the config_fonts.php configuration file.

      + +

      Note that the DejaVu fonts distributed with mPDF and (GNU)FreeSans and FreeSerif fonts do contain a few characters in the SMP plane, but most users will not require them and by default they have been added to the array \'BMPonly\'.

      + + + +

      CJK characters

      +

      Below are examples of all the CJK Unicode blocks contained in the Basic Multilingual Plane and Supplemental Ideographic Plane

      + +
      +
      Plane 0 (BMP)
      +
      +
      CJK Radicals Supplement
      +
      ⺎ ⺏ ⺐ ⺑ ⺒ ⺓ ⺔ ⺕ ⺖ ⺗ ⺘ ⺙ ⺛ ⺜ ⺝ ⺞ ⺟ ⺠ ⺡ ⺢ ⺣ ⺤ ⺥ ⺦ ⺧ ⺨ ⺩ ⺪
      +
      Kangxi Radicals
      +
      ⼳ ⼴ ⼵ ⼶ ⼷ ⼸ ⼹ ⼺ ⼻ ⼼ ⼽ ⼾ ⼿ ⽀ ⽁ ⽂ ⽃ ⽄ ⽅ ⽆ ⽇ ⽈ ⽉ ⽊ ⽋ ⽌ ⽍
      +
      Ideographic Description Characters
      +
      ⿰ ⿱ ⿲ ⿳ ⿴ ⿵ ⿶ ⿷ ⿸ ⿹ ⿺ ⿻
      +
      CJK Symbols and Punctuation
      +
       〈 〉 《 》 「 」 『 』 【 】 〒 〓 〔 〕 〖 〗 〘 〙 〚 〛 〜 〝 〞 〦 〧 〨 〩 〪
      +
      Hiragana
      +
      ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く ぐ け げ こ ご さ ざ
      +
      Katakana
      +
      ゠ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ
      +
      Bopomofo
      +
      ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ
      +
      Hangul Compatibility Jamo
      +
      ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄸ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ
      +
      Kanbun
      +
      ㆐ ㆑ ㆒ ㆓ ㆔ ㆕ ㆖ ㆗ ㆘ ㆙ ㆚ ㆛ ㆜ ㆝ ㆞ ㆟
      +
      Bopomofo Extended
      +
      ㆠ ㆡ ㆢ ㆣ ㆤ ㆥ ㆦ ㆧ ㆨ ㆩ ㆪ ㆫ ㆬ ㆭ ㆮ ㆯ ㆰ ㆱ ㆲ ㆳ ㆴ ㆵ ㆶ ㆷ
      +
      Katakana Phonetic Extensions
      +
      ㇰ ㇱ ㇲ ㇳ ㇴ ㇵ ㇶ ㇷ ㇸ ㇹ ㇺ ㇻ ㇼ ㇽ ㇾ ㇿ
      +
      Enclosed CJK Letters and Months
      +
      ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍ ㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛ ㈜
      +
      CJK Compatibility
      +
      ㌀ ㌁ ㌂ ㌃ ㌄ ㌅ ㌆ ㌇ ㌈ ㌉ ㌊ ㌋ ㌌ ㌍ ㌎ ㌏ ㌐ ㌑ ㌒ ㌓ ㌔ ㌕ ㌖ ㌗ ㌘
      +
      CJK Unified Ideographs Extension A
      +
      㐀 㐁 㐂 㐃 㐄 㐅 㐆 㐇 㐈 㐉 㐊 㐋 㐌 㐍 㐎 㐏 㐐 㐑 㐒 㐓 㐔 㐕 㐖 㐗 㐘
      +
      CJK Unified Ideographs
      +
      一 丁 丂 七 丄 丅 丆 万 丈 三 上 下 丌 不 与 丏 丐 丑 丒 专 且 丕 世 丗 丘
      +
      Yi Syllables
      +
      ꀀ ꀁ ꀂ ꀃ ꀄ ꀅ ꀆ ꀇ ꀈ ꀉ ꀊ ꀋ ꀌ ꀍ ꀎ ꀏ ꀐ ꀑ ꀒ ꀓ ꀔ ꀕ ꀖ ꀗ ꀘ ꀙ ꀚ
      +
      Yi Radicals
      +
      ꒐ ꒑ ꒒ ꒓ ꒔ ꒕ ꒖ ꒗ ꒘ ꒙ ꒚ ꒛ ꒜ ꒝ ꒞ ꒟ ꒠ ꒡ ꒢ ꒣ ꒤ ꒥ ꒦ ꒧ ꒨ ꒩
      +
      Hangul Syllables
      +
      가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘
      +
      CJK Compatibility Ideographs
      +
      豈 更 車 賈 滑 串 句 龜 契 金 喇 奈 懶 癩 羅 蘿 螺 裸 邏 樂 洛 烙 珞 落 酪
      +
      + +
      Plane 2 (SIP)
      +
      +
      CJK Unified Ideographs Extension B
      +
      𠀀 𠀁 𠀂 𠀃 𠀄 𠀅 𠀆 𠀇 𠀈 𠀉 𠀊 𠀋 𠀌 𠀍 𠀎 𠀏 𠀐 𠀑 𠀒 𠀓
      + +
      CJK Unified Ideographs Extension C
      +
      𪜀 𪜁 𪜂 𪜃 𪜄 𪜅 𪜆 𪜇 𪜈 𪜉 𪜊 𪜋 𪜌 𪜍 𪜎 𪜏 𪜐 𪜑 𪜒 𪜓
      + +
      CJK Compatibility Ideographs Supplement
      +
      丽 丸 乁 𠄢 你 侮 侻 倂 偺 備 僧 像 㒞 𠘺 免 兔 兤 具 𠔜 㒹
      +
      + +
      + + + +

      Using CJK fonts in mPDF

      + +

      Fonts containing CJK characters are large files, typically 10-30MB. Adobe provides a free download of an \'Asian font pack\' allowing you to create PDF files without including (embedding) the font information in the file. This keeps the file size to a minimum and minimises resource usage on your website generating the PDF file. However, users will have to download the Adobe font packs to read the file, and other PDF software will not display the text correctly.

      + +

      mPDF allows you to embed subsets of CJK fonts keeping file size down, although there is increased memory usage to generate these files.

      + +

      Some CJK fonts are broken up into 2 files because of the size of the files. One freely available font with almost complete coverage of all CJK characters (in both BMP and SIP) is \'Sun\' available from Alan Wood\'s excellent website: http://www.alanwood.net/unicode/fonts-east-asian.html. This comes as 2 files, Sun-ExtA and Sun-ExtB (both about 20MB in size) containing the characters from BMP and SIP respectively. +

      + +

      mPDF allows you to treat these as one font by defining the second file as an SIP-extension of the first in the config_fonts.php configuration file. The following text includes random characters from the BMP and SIP mixed together:

      + +
      +
      +鼂 鼈 鼗 𣈏 𣈥 鼦 鼧 𣈯 𣈱 鼹 齄 𣈲 𣈳 齅 齐 𣈴 𣉖 齓 齚 𣉢 𣊁 齢 齩 𣊉 𣊊 +
      +
      + +

      This is the entry in the config_fonts.php configuration file:

      +
      +$this->fontdata = array(
      +...
      +       "sun-exta" => array(
      +             \'R\' => "Sun-ExtA.ttf",
      +             \'sip-ext\' => \'sun-extb\',
      +       ),
      +       "sun-extb" => array(
      +             \'R\' => "Sun-ExtB.ttf",
      +       ),
      +
      +...
      +); +
      + + +

      This is the HTML code - note only the sun-exta font-family needs to be referenced:

      +
      +<div style="font-family:sun-extA;"> +&#40706; &#40712; &#40727; &#x2320f; &#x23225; &#40742; &#40743; &#x2322f; &#x23231; &#40761; &#40772; &#x23232; &#x23233; &#40773; &#40784; &#x23234; &#x23256; &#40787; &#40794; &#x23262; &#x23281; &#40802; &#40809; &#x23289; &#x2328a; +</div> +
      + +

      NB You may also need to edit the value $this->useAdobeCJK=false in config.php or use new mPDF(\'-aCJK\'), and edit the config_cp.php configuration file.

      + + + + +

      TrueType Collections

      + +

      TrueType Collections (.ttc files) contain more than one font. mPDF treats each font separately by defining the TTCfontID array in the config_fonts.php configuration file.

      + +

      This example uses the Windows MingLiU fonts, which consist of 2 files containing 6 fonts (note that mingliub is not a Bold variant):

      + +

      Font collection file (mingliu.ttc) contains the following fonts:
      +[1] MingLiU (mingliu) Regular
      +[2] PMingLiU (pmingliu) Regular (Proportional)
      +[3] MingLiU_HKSCS (mingliu_hkscs) Regular
      +

      + +

      Font collection file (mingliub.ttc) contains the following fonts:
      +[1] MingLiU-ExtB (mingliu-extb) Regular
      +[2] PMingLiU-ExtB (pmingliu-extb) Regular (Proportional)
      +[3] MingLiU_HKSCS-ExtB (mingliu_hkscs-extb) Regular
      +

      + +

      The following text includes characters from both BMP and SIP:

      + +
      +
      +鼂 鼦 齄 齐 齢 齩 𣊉 𣊊 +
      +
      +鼂 鼦 齄 齐 齢 齩 𣊉 𣊊 +
      +
      +鼂 鼦 齄 齐 齢 齩 𣊉 𣊊 +
      +
      + +

      This is the entry in the config_fonts.php configuration file:

      +
      +$this->fontdata = array(
      +...
      +       "mingliu" => array(
      +             \'R\' => "mingliu.ttc",
      +             \'TTCfontID\' => array (
      +                 \'R\' => 1,
      +             ),
      +             \'sip-ext\' => \'mingliu-extb\',
      +       ),
      + +       "pmingliu" => array(
      +             \'R\' => "mingliu.ttc",
      +             \'TTCfontID\' => array (
      +                 \'R\' => 2,
      +             ),
      +             \'sip-ext\' => \'pmingliu-extb\',
      +       ),
      + +       "mingliu_hkscs" => array(
      +             \'R\' => "mingliu.ttc",
      +             \'TTCfontID\' => array (
      +                 \'R\' => 3,
      +             ),
      +             \'sip-ext\' => \'mingliu_hkscs-extb\',
      +       ),
      + +       "mingliu-extb" => array(
      +             \'R\' => "mingliub.ttc",
      +             \'TTCfontID\' => array (
      +                 \'R\' => 1,
      +             ),
      +       ),
      + +       "pmingliu-extb" => array(
      +             \'R\' => "mingliub.ttc",
      +             \'TTCfontID\' => array (
      +                 \'R\' => 2,
      +             ),
      +       ),
      + +       "mingliu_hkscs-extb" => array(
      +             \'R\' => "mingliub.ttc",
      +             \'TTCfontID\' => array (
      +                 \'R\' => 3,
      +             ),
      +       ),
      +
      +...
      +); +
      + + +

      This is the HTML code:

      +
      +<div style="font-family:mingliu;"> +&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; +</div> +
      +<div style="font-family:mingliu_hkscs;"> +&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; +</div> +
      +<div style="font-family:pmingliu;"> +&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; +</div> +
      + + +'; + +//============================================================== +//============================================================== +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} +//============================================================== +//============================================================== +//============================================================== +//============================================================== +//============================================================== + +include("../mpdf.php"); + +$mpdf=new mPDF(); + +$mpdf->WriteHTML($html); + +$mpdf->Output(); +exit; + +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php b/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php new file mode 100644 index 000000000..758f81566 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php @@ -0,0 +1,498 @@ + +body { + font-family: sans-serif; + font-size: 10pt; +} +h4 { + font-variant: small-caps; +} +h5 { + margin-bottom: 0; + color: #110044; +} +p { margin-top: 0; } +dl { + margin: 0; +} +table { + border-spacing: 0.5em; + border: 7px dashed teal; +} +.table1 { + background-image: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); +} +.table1 tr.thisrow1 { + background-image-resolution: 300dpi; + background: transparent url(\'bayeux1.jpg\') repeat scroll left top; +} +.table1 tr.thisrow1 td { + height: 28mm; +} +.table1 tr.thisrow2 { + background-image: none; + background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); + background: -webkit-gradient(linear, left bottom, left top, color-stop(0.29, rgb(90,83,12)), color-stop(0.65, rgb(117,117,39)), color-stop(0.83, rgb(153,153,67))); +} +.table3 { + border-collapse: collapse; + /* background-gradient: linear #07cdde #00f200 1 0 0.5 1; */ + background: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); +} +tr.thisrow { + border: 3px dashed red; + background: transparent url(\'bayeux1.jpg\') repeat scroll left top; +} +.table3 tr.thisrow { + border: 3px dashed orange; + background: transparent url(\'bgrock.jpg\') repeat scroll left top; +} +tfoot tr { + border: 5px dashed blue; + /* background-gradient: linear #c7Fdde #FF0000 1 0 0.5 0; */ + background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); +} +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background: linear-gradient(top, #c7cdde, #f0f2ff); +} +.rounded { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background: linear-gradient(top, #c7cdde, #f0f2ff); + border-radius: 2mm; + background-clip: border-box; +} +div.text { + padding:1em; + margin: 1em 0; + text-align:justify; +} +.code { + font-family: mono; + font-size: 9pt; + background-color: #d5d5d5; + margin: 1em 1cm; + padding: 0 0.3cm; +} + + + +
      + +

      mPDF

      +

      New features in mPDF Version 5.1

      + +
      +
        +
      • CSS background (images, colours or gradients) on <TR> and <TABLE>
      • +
      • CSS border on <TR> (only in border-collapsed mode)
      • +
      • support for Mozilla and CSS3 gradient syntax: +
          +
        • -moz-linear-gradient, linear-gradient
        • +
        • -moz-radial-gradient, radial-gradient
        • +
        • -moz-repeating-linear-gradient, linear-repeating-gradient
        • +
        • -moz-repeating-radial-gradient, radial-repeating-gradient
        • +
        +
      • +
      • expanded support for gradients (including in SVG images): +
          +
        • multiple colour \'stops\'
        • +
        • opacity (transparency)
        • +
        • angle and/or position can be specified
        • +
        +
      • +
      • gradient can be used as an image mask (custom mPDF styles: gradient-mask)
      • +
      • CSS3 image-orientation supported for <IMG> (similar to existing custom mPDF attribute: rotate)
      • +
      • CSS3 image-resolution supported for <IMG>
      • +
      • background-image-resolution (custom mPDF CSS-type style) to define resolution of background images
      • +
      • improved support for SVG images
      • +
      • SVG and WMF images supported in background-image
      • +
      • file attachments (embedded in PDF file) → → → → →
      • +
      +
      + +
      Tables: borders, background images & gradients
      + +
      Background images or gradients can be set on whole tables or table rows (as well as individual table cells)
      + + + + + + + +
      Row 1This is dataThis is data
      This row hasa background-imageof the bayeux tapestry

      Row 3

      This is long data

      This is data
      This row hasa gradient setwhich spans all 3 cells
      Row 5Also dataAlso data
      + + +
      Border can be set on table rows (only when border-collapse is set to collapse)
      + + + + + +
      Row 1This is dataThis is data
      Row 2This is data
      This is data
      This is data
      This is data
      Also data

      Row 3

      This is long data

      This is data
      + + + + + +
      + +
      Mozilla and CSS3 gradient syntax
      + +
      +

      Linear gradients

      +

      Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...

      + + + + + + + + + + + + + + + + + + + + + +
      top right 210 degrees   
      30% 80% 60 degrees   
      10px 40px 325 degrees   
      bottom left 135deg   
      + + +

      Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...

      + + + + + + + + + + + + + + + + + + + + + + +
      bottom right  
      top  
      10px 40px  
      30% 10%  
      + + + +

      Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...

      + + + + + + + + + + + + + + + + + + + + + + +
      90 degrees   
      120 degrees   
      180 degrees   
      210 degrees   
      + + + +
      +

      Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.

      +

      Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification:

      +
        +
      • -moz-linear-gradient
      • +
      • -moz-repeating-linear-gradient
      • +
      • -moz-radial-gradient and
      • +
      • -moz-repeating-radial-gradient
      • +
      +

      WebKit (Safari, Chrome etc.) have a separate way of defining gradients using -webkit-gradient

      +

      Microsoft (IE) does not support any such method of specifying gradients, but does have a function filter: progid:DXImageTransform.Microsoft.gradient()

      +

      When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:

      +

      +background: #999999; /* for non-css3 browsers */
      +filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */
      +background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */
      +background: -moz-linear-gradient(top, #cccccc, #000000); /* for firefox 3.6+ */
      +

      + + + +

      mPDF versions <= 5.0 supported a custom style property background-gradient which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:

      +
        +
      • mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image
      • +
      • CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)
      • +
      + +

      mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:

      +
        +
      • parse and support -moz type gradients
      • +
      • parse and support CSS3 gradient syntax
      • +
      • ignore -webkit syntax gradients
      • +
      + + +

      More details can be found at:

      + +
      + + + +
      Repeating gradients
      + +

      +background: repeating-linear-gradient(red, blue 20px, red 40px); +

      +background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px); +

      + +
       
      + +
       
      +
      +
      +
      + +

      +background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px); +

      +background: repeating-radial-gradient(red, blue 20px, red 40px); +

      +
       
      + +
       
      +
      + + + + + +

      Radial gradients

      + +
       
      + + +
       
      +
      + + +
       
      + +
       
      +
      + +
       
      + +
       
      +
      + +
       
      + +
       
      +
      + + +

       
       
       
       
       
       
       

      + +

       
       
       
       
       
       

      + + + + + + + +
      Gradient Image mask
      + +
      Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: gradient-mask. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.
      + +

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> +

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> +

      <img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /> +

      + + + + + + +
      + + + + + + +
      Image orientation
      + +
      Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.
      +

      <img src="tiger2.png" style="image-orientation: -90deg" width="100" /> +
      +<img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /> +

      + + + + + + + +
      + +
      +
      +
      + +
      Image resolution
      + + +
      Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to <IMG> or background-images. +
      +The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi. +
      +NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution in the file.
      + +

      <img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> +
      <img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> +
      <img src="tiger300px96dpi.png" style="image-resolution: from-image;" />

      + + + + +

      + + + + + +
      Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'
      + +

      <div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      +
      Hallo
      world +
      + +
      + +

      <div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      +
      +
      + + + +
      + + + + + + +
      Mixed effects
      + + +
      +
      +
      +
      +
      +
      +Hallo World +
      +
      +Hallo World +
      +
      +
      +
      +
      +
      + +
      + +
      + +
      + +'; + +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} +//============================================================== +$mpdf->WriteHTML($html); + +//============================================================== +//============================================================== +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php b/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php new file mode 100644 index 000000000..1cd5bca04 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php @@ -0,0 +1,456 @@ +useKerning=true; + +$mpdf->restrictColorSpace=3; // forces everything to convert to CMYK colors + +$mpdf->AddSpotColor('PANTONE 534 EC',85,65,47,9); + +//============================================================== +$html = ' + + + +
      + +

      mPDF

      +

      Other new features in mPDF Version 5.1

      + +
      +
        +
      • Kerning
      • +
      • Letter- and word-spacing
      • +
      • Small-caps improved to work with justified text, and now with kerning, letter- and word-spacing
      • +
      • Bleed area on @page media
      • +
      • Colorspace and colour conversion (almost everything except BMP images)
      • +
      • Spot colours
      • +
      • PDF/X files
      • +
      • dir="rtl"
      • +
      • numeric list-styles for arabic and indic
      • +
      +
      + + + +
      Kerning
      + +
      Font kerning is supported. This corrects the inter-character spacing between specific pairs of letters. It is dependent on kerning information being available in the original font file. +
      +You need to set $mpdf->useKerning=true; either in the config.php configuration file, or at runtime. This causes the kerning information to be loaded when fonts are accessed (and will therefore increase memory usage). +
      +You can then set kerning on or off using the draft CSS3 style property "font-kerning". Values of normal or auto will turn kerning on; "none" will turn kerning off. +
      + +
      +Off: AWAY To War. +
      + +
      +On: AWAY To War. +
      + + + +
      Letter and word spacing & text justification
      + +
      Letter- and word-spacing can be set on almost all block and in-line style elements, using the CSS properties letter-spacing and word-spacing. Values of normal or a length can be specified (em or ex recommended). +Note that setting the letter-spacing value (including setting it to zero) will prevent any additional letter-spacing to be added when full-justifying text. The word-spacing value, however, is a minimum value, and can be increased in order to justify text. +
      +
      +Text-align: justify - no longer uses configurable variable $jSpacing= C | W | \'\' +
      +The default value is for mixed letter- and word-spacing, set by jSWord and jSmaxChar +
      +If a line contains a cursive script (RTL or Indic [devanagari, punjabi, bengali]) then it prevents letter-spacing +for justification on that line - effectively the same as setting letter-spacing:0 +
      +Spacing values have been removed from the config_cp.php configuration file, so the "lang" property +(in config_cp) no longer determines justification behaviour (this includes the use of Autofont()). +
      +When using RTL or Indic [devanagari, punjabi, bengali] scripts, you should set CSS letter-spacing:0 +whenever you use text-align:justify. +
      + +

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Letter spacing set at 0.2em. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Word spacing set at 1em. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      + + + + +
      Colours
      + +
      Whenever a colour can be specified in a style, additional formats are now supported: rgb(), rgba(), hsl(), hsla(), cmyk(), cmyka(), or spot(). +
      +Spot colours need to be defined at the start of the script using e.g. $mpdf->AddSpotColor(\'PANTONE 534 EC\',85,65,47,9); +
      +The four values define the CMYK values used when the spot colour is not available. A tint % can be specified when using the spot colour in the document. +
      + +
      background-color: rgba(150,150,255, 0.5); color: rgb(0,150,150);
      +
      background-color: rgba(60%,60%,100%, 0.5); color: rgb(0,60%,60%);
      +
      background-color: hsla(180,30%,25%, 0.5); color: hsl(360,100%,50%);
      +
      background-color: cmyka(85,65,0,30, 0.3); color: spot(PANTONE 300 EC,80%);
      +
      +
      + + +
      @page media
      + +
      When using @page to create a print publication with page-size less than sheet-size, the bleed margin is now configurable. +Backgrounds/gradients/images now use the bleed box as their "container box", rather than the whole page. (See this document as an example.) +
      +Crop- and cross-marks can now both be used together, and are more configurable. +Also, background-image-opacity and background-image-resize have been extended to work with @page CSS. +
      +The following values can be set in the configuration file, config.php: +$this->bleedMargin
      +$this->crossMarkMargin
      +$this->cropMarkMargin
      +$this->cropMarkLength
      +$this->nonPrintMargin
      +
      + + + +
      Colorspace and colour conversion
      + +
      PDF files can contain objects using different colorSpaces e.g. Grayscale, RGB and CMYK. By default, +mPDF creates PDF files using the colours as they are specified: font colour may be set (e.g. #880000) as an RGB colour, and the +file may contain JPG images in RGB or CMYK format. +
      +In some circumstances, you may wish to create a PDF file with restricted colorSpaces e.g. printers will often want files +which contain only CMYK, spot colours, or grayscale, but not RGB. +
      +Additional methods for defining colours can be used (see above), but alternatively you can set mPDF to restrict the colorSpace by setting +the value for $mpdf->restrictColorSpace: +
      +1 - allow GRAYSCALE only [converts CMYK/RGB->gray] +
      +2 - allow RGB / SPOT COLORS / Grayscale [converts CMYK->RGB] +
      +3 - allow CMYK / SPOT COLORS / Grayscale [converts RGB->CMYK] +
      +This will attempt to convert every colour value used in the document to the permitted colorSpace(s). Almost everything including images +will be converted (except BMP images), and the conversion of images may take significant time. +
      +This example file is set to (3) CMYK; compare the appearance of the Tux penguin in this file and in the previous example file (RGB). +
      +
      +
      + + +
      PDF/A and PDF/X files
      + +
      mPDF can produce files which (attempt to) meet the PDF/A and PDF/X specifications. In addition to restricted colorSpace, +PDF/A and /X files cannot contain images or colour values with "transparency". +
      +Please note that full compliance with the PDF/A or /X specification is not guaranteed. +
      + + + +
      RTL (right-to-left) text
      + +
      Handling of RTL (right-to-left) languages has been significantly rewritten, and is likely to cause +changes to the resulting files if you have previously been using mPDF. The changes have made mPDF +act more like a browser, respecting the HTML/CSS rules. +Changes include:
      +
        +
      • the document now has a baseline direction; this determines the +
          +
        • behaviour of blocks for which text-align has not been specifically set
        • +
        • layout of mirrored page-margins, columns, ToC and Indexes, headers / footers
        • +
        • base direction can be set by any of: +
            +
          • $mpdf->SetDirectionality(\'rtl\');
          • +
          • <html dir="rtl" or style="direction: rtl;">
          • +
          • <body dir="rtl" or style="direction: rtl;">
          • +
        • +
        • base direction is an inherited CSS property, so will affect all content, unless...
        • +
      • +
      • direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using +
          +
        • CSS property <style="direction: rtl;">
        • +
        • direction can only be set on the top-level element of nested lists
        • +
        • direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
        • +
        • nested tables CAN have different directions
        • +
      • +
      • NOTE that block/table margins/paddings are NOT reversed by direction
      • +
      • language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF(\'ar\') ) + no longer affects direction in any way.
        + NB config_cp.php has been changed as a result; any values of "dir" set here are now ineffective
      • +
      • default text-align is now as per CSS spec: "a nameless value which is dependent on direction"
        + NB default text-align removed in default stylesheet in config.php
      • +
      • once text-align is specified, it is respected and inherited
        + NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
      • +
      • the configurable value $rtlcss is depracated, as it is no longer required
      • +
      • improved algorithm for dtermining text direction +
          +
        • english word blocks are handled in text reversal as one block i.e. dir="rtl"
          + [arabic text] this will not be reversed [arabic text]
        • +
        • arabic numerals 0-9 handled correctly
        • +
      • +
      +Although the control of direction for block elements is now more configurable, the control of +text direction (RTL arabic characters) remains fully automatic and unconfigurable. +<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.: + content<span>[arabic text]</span>content +
      + + + + +
      List styles
      +
      Additional numerical list-styles are supported. All of these (except Tamil) are consistent with the draft CSS3 specification:
      +list-style: arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya | persian | telugu | thai | urdu | tamil + +
      + + + +
        + + +
      • Arabic +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        11. Six
        12. +
        +
      • +
      • Persian +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        11. Six
        12. +
        +
      • +
      • Urdu +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        11. Six
        12. +
        +
      • + +
      + +
        + +
      • Bengali +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Devanagari +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Gujarati +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Gurmukhi +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Kannada +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Malayalam +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Oriya +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Tamil +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • +
      • Telugu +
          +
        1. One
        2. +
        3. Two
        4. +
        5. Three
        6. +
        7. Four
        8. +
        9. Five
        10. +
        +
      • + +
      + +'; + +//============================================================== +$mpdf->WriteHTML($html); + +//============================================================== +//============================================================== +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php b/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php new file mode 100644 index 000000000..7d87cc0c1 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php @@ -0,0 +1,497 @@ +restrictColorSpace = 1; // forces to grayscale +//============================================================== +$html = ' + + + +
      + +

      mPDF

      +

      New features in mPDF Version 5.1

      + +
      +

      This is a copy of Example 54, but all object colours are converted to grayscale using simply:

      +

      $mpdf->restrictColorSpace = 1;

      +
      + +
      +
        +
      • CSS background (images, colours or gradients) on <TR> and <TABLE>
      • +
      • CSS border on <TR> (only in border-collapsed mode)
      • +
      • support for Mozilla and CSS3 gradient syntax: +
          +
        • -moz-linear-gradient, linear-gradient
        • +
        • -moz-radial-gradient, radial-gradient
        • +
        • -moz-repeating-linear-gradient, linear-repeating-gradient
        • +
        • -moz-repeating-radial-gradient, radial-repeating-gradient
        • +
        +
      • +
      • expanded support for gradients (including in SVG images): +
          +
        • multiple colour \'stops\'
        • +
        • opacity (transparency)
        • +
        • angle and/or position can be specified
        • +
        +
      • +
      • etc...
      • +
      +
      + +
      Tables: borders, background images & gradients
      + +
      Background images or gradients can be set on whole tables or table rows (as well as individual table cells)
      + + + + + + + +
      Row 1This is dataThis is data
      This row hasa background-imageof the bayeux tapestry

      Row 3

      This is long data

      This is data
      This row hasa gradient setwhich spans all 3 cells
      Row 5Also dataAlso data
      + + +
      Border can be set on table rows (only when border-collapse is set to collapse)
      + + + + + +
      Row 1This is dataThis is data
      Row 2This is data
      This is data
      This is data
      This is data
      Also data

      Row 3

      This is long data

      This is data
      + + + + + +
      + +
      Mozilla and CSS3 gradient syntax
      + +
      +

      Linear gradients

      +

      Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...

      + + + + + + + + + + + + + + + + + + + + + +
      top right 210 degrees   
      30% 80% 60 degrees   
      10px 40px 325 degrees   
      bottom left 135deg   
      + + +

      Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...

      + + + + + + + + + + + + + + + + + + + + + + +
      bottom right  
      top  
      10px 40px  
      30% 10%  
      + + + +

      Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...

      + + + + + + + + + + + + + + + + + + + + + + +
      90 degrees   
      120 degrees   
      180 degrees   
      210 degrees   
      + + + +
      +

      Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.

      +

      Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification:

      +
        +
      • -moz-linear-gradient
      • +
      • -moz-repeating-linear-gradient
      • +
      • -moz-radial-gradient and
      • +
      • -moz-repeating-radial-gradient
      • +
      +

      WebKit (Safari, Chrome etc.) have a separate way of defining gradients using -webkit-gradient

      +

      Microsoft (IE) does not support any such method of specifying gradients, but does have a function filter: progid:DXImageTransform.Microsoft.gradient()

      +

      When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:

      +

      +background: #999999; /* for non-css3 browsers */
      +filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */
      +background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */
      +background: -moz-linear-gradient(top, #cccccc, #000000); /* for firefox 3.6+ */
      +

      + + + +

      mPDF versions <= 5.0 supported a custom style property background-gradient which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:

      +
        +
      • mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image
      • +
      • CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)
      • +
      + +

      mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:

      +
        +
      • parse and support -moz type gradients
      • +
      • parse and support CSS3 gradient syntax
      • +
      • ignore -webkit syntax gradients
      • +
      + + +

      More details can be found at:

      + +
      + + + +
      Repeating gradients
      + +

      +background: repeating-linear-gradient(red, blue 20px, red 40px); +

      +background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px); +

      + +
       
      + +
       
      +
      +
      +
      + +

      +background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px); +

      +background: repeating-radial-gradient(red, blue 20px, red 40px); +

      +
       
      + +
       
      +
      + + + + + +

      Radial gradients

      + +
       
      + + +
       
      +
      + + +
       
      + +
       
      +
      + +
       
      + +
       
      +
      + +
       
      + +
       
      +
      + + +

       
       
       
       
       
       
       

      + +

       
       
       
       
       
       

      + + + + + + + +
      Gradient Image mask
      + +
      Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: gradient-mask. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.
      + +

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> +

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> +

      <img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /> +

      + + + + + + +
      + + + + + + +
      Image orientation
      + +
      Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.
      +

      <img src="tiger2.png" style="image-orientation: -90deg" width="100" /> +
      +<img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /> +

      + + + + + + + +
      + +
      +
      +
      + +
      Image resolution
      + + +
      Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to <IMG> or background-images. +
      +The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi. +
      +NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution in the file.
      + +

      <img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> +
      <img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> +
      <img src="tiger300px96dpi.png" style="image-resolution: from-image;" />

      + + + + +

      + + + + + +
      Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'
      + +

      <div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      +
      Hallo
      world +
      + +
      + +

      <div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      +
      +
      + + + +
      + + + + + + +
      Mixed effects
      + + +
      +
      +
      +
      +
      +
      +Hallo World +
      +
      +Hallo World +
      +
      +
      +
      +
      +
      + +
      + +
      + +
      + +'; + +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} + +//============================================================== +$mpdf->WriteHTML($html); + +//============================================================== +//============================================================== +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php new file mode 100644 index 000000000..2427f5a6f --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php @@ -0,0 +1,233 @@ + +textarea { +} +input { +} +select { + font-family: arialunicodems +} + + +

      Active Forms

      + +
      +Input Text + +

      + +Readonly + +

      + +Disabled + +

      + +Required + +

      + +Hidden + +

      + +Input Password + +

      + +Calculations + + + = + +

      + + +Textarea + +

      + + +First language + +     + +You have selected: + +

      + + +
      +Spoken language(s)
      + +
      +

      + + + +How many languages do you speak?      + One      + Two      + Three      + Four      + Five + + +

      + + + Please send me regular information by e-mail
      + Please phone me (not available at present)
      + Please subscribe me to the Newsletter +

      + +

      + +Click this button to see Javascript in action: + + +

      + + + + + + + + + + +

      + + +
      +'; + + +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} + +//============================================================== +$mpdf->useActiveForms = true; + +/* +// Try playing around with these (these are also in config.php) +$mpdf->formUseZapD = false; +$mpdf->formSubmitNoValueFields = true; + +$mpdf->formExportType = 'xfdf'; // 'html' or 'xfdf' +$mpdf->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected, + // this determines whether to select 1st option (as per browser) + // - affects whether "required" attribute is relevant +$mpdf->form_border_color = '0.0 0.820 0.0'; +$mpdf->form_background_color = '0.941 0.941 0.941'; +$mpdf->form_border_width = '1'; +$mpdf->form_border_style = 'S'; + +$mpdf->form_radio_color = '0.0 0.820 0.0'; +$mpdf->form_radio_background_color = '0.941 0.5 0.5'; + +$mpdf->form_button_border_color = '0.0 0.820 0.0'; +$mpdf->form_button_background_color = '0.941 0.941 0.941'; +$mpdf->form_button_border_width = '1'; +$mpdf->form_button_border_style = 'S'; +*/ + +$mpdf->WriteHTML($html); + +//============================================================== +// JAVASCRIPT FOR WHOLE DOCUMENT +$mpdf->SetJS(' +var dialogTitle = "Enter details"; +var defaultAnswer = ""; +var reply = app.response("This is javascript set to run when the document opens. Enter value for first field", dialogTitle, defaultAnswer); +if (reply != null) { +this.getField("inputfield").value = reply; +} +'); +//============================================================== +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php new file mode 100644 index 000000000..0d6522276 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php @@ -0,0 +1,234 @@ + +textarea { +} +input { +} +select { + font-family: arialunicodems +} + + +

      Active Forms

      + +
      +Input Text + +

      + +Readonly + +

      + +Disabled + +

      + +Required + +

      + +Hidden + +

      + +Input Password + +

      + +Calculations + + + = + +

      + + +Textarea + +

      + + +First language + +     + +You have selected: + +

      + + +
      +Spoken language(s)
      + +
      +

      + + + +How many languages do you speak?      + One      + Two      + Three      + Four      + Five + + +

      + + + Please send me regular information by e-mail
      + Please phone me (not available at present)
      + Please subscribe me to the Newsletter +

      + +

      + +Click this button to see Javascript in action: + + +

      + + + + + + + + + + +

      + + +
      +'; + + +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} + +//============================================================== +$mpdf->useActiveForms = true; +$mpdf->formUseZapD = false; + +/* +// Try playing around with these (these are also in config.php) +$mpdf->formUseZapD = false; +$mpdf->formSubmitNoValueFields = true; + +$mpdf->formExportType = 'xfdf'; // 'html' or 'xfdf' +$mpdf->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected, + // this determines whether to select 1st option (as per browser) + // - affects whether "required" attribute is relevant +$mpdf->form_border_color = '0.0 0.820 0.0'; +$mpdf->form_background_color = '0.941 0.941 0.941'; +$mpdf->form_border_width = '1'; +$mpdf->form_border_style = 'S'; + +$mpdf->form_radio_color = '0.0 0.820 0.0'; +$mpdf->form_radio_background_color = '0.941 0.5 0.5'; + +$mpdf->form_button_border_color = '0.0 0.820 0.0'; +$mpdf->form_button_background_color = '0.941 0.941 0.941'; +$mpdf->form_button_border_width = '1'; +$mpdf->form_button_border_style = 'S'; +*/ + +$mpdf->WriteHTML($html); + +//============================================================== +// JAVASCRIPT FOR WHOLE DOCUMENT +$mpdf->SetJS(' +var dialogTitle = "Enter details"; +var defaultAnswer = ""; +var reply = app.response("This is javascript set to run when the document opens. Enter value for first field", dialogTitle, defaultAnswer); +if (reply != null) { +this.getField("inputfield").value = reply; +} +'); +//============================================================== +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php b/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php new file mode 100644 index 000000000..6772fa950 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php @@ -0,0 +1,547 @@ + +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + box-shadow: 0.3em 0.3em #888888; +} +.rounded { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + border-radius: 2mm; + background-clip: border-box; +} +h4 { + font-weight: bold; + margin-top: 1em; + margin-bottom: 0.3em; + margin-top: 0; +} +div.text { + padding:0.8em; + margin-bottom: 0.7em; +} +p { margin: 0.25em 0; } +.code { + font-family: monospace; + font-size: 9pt; + background-color: #d5d5d5; + margin: 1em 1cm; + padding: 0 0.3cm; + border:0.2mm solid #000088; + box-shadow: 0.3em 0.3em #888888; +} +table { + overflow: visible; + empty-cells: hide; + border:1px solid #000000; + font-family: sans-serif; + font-size: 10pt; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; +} +td, th { + border:1px solid #000000; + text-align: left; + font-weight: normal; +} +td.markedcell { + text-decoration: line-through; + color: #CC0000; +} +td.underlinedcell { + text-decoration: underline; + color: #CC0000; +} +td.rotatedcell { + text-decoration: line-through; + color: #CC0000; + text-rotate: 45; +} +td.cost { text-align: right; } +caption.tablecaption { + font-family: sans-serif; + font-weight: bold; + border: none; + caption-side: top; + margin-bottom: 0; + text-align: center; +} +u.doubleu { + text-decoration: none; + border-bottom: 3px double #000088; +} +a.reddashed { + text-decoration: none; + border: 1px dashed #880000; +} +.shadowtitle { + height: 8mm; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.8em; + padding-left: 3em; + font-family:sans; + font-size: 26pt; + font-weight: bold; + border: 0.2mm solid white; + border-radius: 0.2em; + box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9); + color: #AAAACC; + text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; +} +h3 { + margin: 3em 0 2em -15mm; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.5em; + padding-left: 3em; + width: 50%; + font-family:sans; + font-size: 16pt; + font-weight: bold; + border-left: none; + border-radius: 0 2em 2em 0; + box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); + text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); +} +.css { + font-family: arial; + font-style: italic; + color: #000088; +} +table.zebra tbody tr:nth-child(2n+1) td { background-color: rgba(255,255,127,0.6); } +table.zebra tbody tr:nth-child(2n+1) th { background-color: rgba(255,255,127,0.6); } +table.zebra thead tr { background-color: #FFBBFF; } +table.zebra tfoot tr { background-color: #BBFFFF; } + + + + + + +
      New Features in mPDF v5.4
      + + +

      Bookmark styles

      +
      +

      Bookmarks can be styled by adding code as below to your script. You can define a colour (array of RGB) and/or a font-style (B, I, or BI) for each level (starting at 0). Results may depend on the PDF Reader you are using.

      +

      +$this->bookmarkStyles = array(
      +       0 => array(\'color\'=> array(0,64,128), \'style\'=>\'B\'),
      +       1 => array(\'color\'=> array(128,0,0), \'style\'=>\'\'),
      +       2 => array(\'color\'=> array(0,128,0), \'style\'=>\'I\'),
      +); +

      +
      + +

      Embedded SVG code

      +

      SVG Images can be embedded in your HTML code. This is formally part of the XHTML specification and is supported by IE9+ and most other browsers.

      + + + + +

      +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 200 200" width="200" height="200">
      +  <circle cx="100" cy="50" r="40" stroke="black" stroke-width="1" fill="red" />
      +  <circle cx="130" cy="50" r="40" stroke="black" stroke-width="1" fill="blue" />
      +</svg> +

      + + +

      Improved CSS support

      +
      +

      border-radius is now supported on fixed/absolute-positioned block elements.

      +

      visibility can be set on any block-style element e.g. DIV,P or images IMG as: visible|hidden|printonly|screenonly

      +

      background-color now supports rgba() and cmyka() alpha transparency formats in tables.

      +

      Color, underline and strike-through are now supported in table cells, including with rotated text (see example below of spread table)

      +

      page-break-after: left|right|always is supported on all block-style elements and tables

      +

      text-transform: capitalize|uppercase|lowercase is supported in table cells

      +
      + + +
      +

      Zebra stripes in Tables

      +
      +

      :nth-child() selector can be used in tables (on TR, TD or TH) to stripe rows or columns. Both the an+b and odd/even forms are supported e.g.

      + +

      +tr:nth-child(2n+1) { background-color: rgba(255,255,127,0.6); } or
      +tr:nth-child(odd) { background-color: rgba(255,255,127,0.6); } +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Row 1This is data167.00
      Row 2 +

      This is data p

      +
      +

      444.53

      +
      +

      Row 3

      +
      +

      This is long data

      +
      14.00
      +

      Row 4

      +
      This is data +

      0.88

      +
      Row 5Also data144.00
      Row 6Also data8089.00
      + +

      Note: mPDF does NOT correctly apply specificity to all CSS. The following stylesheet:

      +

      +table.zebra tbody tr:nth-child(2n+1) td { background-color: yellow; }
      +table.zebra tbody td:nth-child(odd) { background-color: blue; } +

      +

      should make every odd row yellow, and every odd column blue, but with the row/yellow overriding the column/blue. +In mPDF the td:nth-child(odd) trumps the plain td, so the column colour wins out. You can force the effect you want by using:

      +

      +table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: yellow; } +

      +

      The :nth-child(1n+0) selector just selects every td cell.

      + +
      +
      + + +
      +

      border can now be defined on in-line elements eg SPAN

      + +

      Note: Remember that in mPDF, inside table cells, properties set on block elements are set when possible as in-line properties - so a P element inside a table with border set, will appear with a border around the text line as though it had been set on SPAN

      +
      + + + + +
      +

      Shadows

      +

      box-shadow can be defined on any block-level element (P, DIV etc). It follows the CSS3 recommendation, but inset is not supported.

      +

      text-shadow can be defined on any element. It follows the CSS3 recommendation, but blur is not supported.

      +

      +<span style="text-shadow: 0.03em 0.03em #666, -0.015em -0.015em white;">
      +<div style="box-shadow: 0.3em 0.3em #888888;"> +

      +
      + + +

      Other Enhancements

      + +

      Column Totals (Tables)

      +

      {colsum} placed in the footer of a table will automatically display the sum of that column. If the table breaks across more than one page, the sum of the values on that page will be displayed. A number following the colsum e.g. {colsum2} will force that number of decimal places to be displayed.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Table caption goes here
      Header RowHeader RowHeader Row
      Column total: (using colsum2 in {}){colsum2}
      Row 1This is data167.00
      Row 2 +

      This is data p

      +
      +

      444.53

      +
      +

      Row 3

      +
      +

      This is long data

      +
      14.00
      +

      Row 4

      +
      This is data +

      0.88

      +
      Row 5Also data144.00
      Row 6Also data8089.00
      Row 7Also data3.00
      Row 8Also data23.00
      +
      + +

      Table caption

      +

      The caption element for tables is partially supported (see example above).

      +

      +<caption align="top|bottom" style="caption-side: top|bottom"> +

      +
        +
      • The caption must come immediately after <table>.
      • +
      • The CSS caption-side or HTML align attribute of top|bottom supported
      • +
      • Left or right placement are not supported.
      • +
      • The caption is handled as a separate block element brought outside the table, so: +
          +
        • CSS will not cascade correctly from the table
        • +
        • the width of the caption block is that of page or of the block element containing the table
        • +
        • text alignment will be to the page-width not the table width
        • +
        • if table page-break-after: always, the caption will follow the pagebreak
        • +
      • +
      + + +

      Core fonts in non-core font document

      + +

      Core fonts, which do not need to be embedded in a PDF, can now be included in a document which uses non-core fonts. The pseudo font-family names: chelvetica, ctimes and ccourier should be used.

      +

      +<div style="font-family: chelvetica"> +

      +

      NB You could force mPDF to always use core fonts when Arial/Helvetica/Courier are specified, by editing $this->fonttrans in config_fonts.php:

      +

      +$this->fonttrans = array(
      + \'arial\' => \'chelvetica\',
      + \'helvetica\' => \'chelvetica\',
      + \'timesnewroman\' => \'ctimes\',
      + \'times\' => \'ctimes\',
      + \'couriernew\' => \'ccourier\',
      + \'courier\' => \'ccourier\',
      +... +

      +
      + +

      Javascript in Forms

      + +

      Javascript used in (active) forms has been altered to reflect the Adobe Acrobat specification for Javascript in PDF documents.

      +

      textarea and input (text-types) now accept javascript as: onKeystroke, onValidate, onCalculate and onFormat. onChange is depracated but is not ignored; it works as though for onCalculate. (PS Select still accepts onChange)

      + + +
      + + + +

      Overlapping Rows in Tables

      +

      Support for overlapping rowspans in tables has been improved (although probably not foolproof!)

      + + + + + + + + + + + + +
         
       
       
      + +
      + + + +

      Circular Text

      +

      Circular Text can be included in a PDF document as a custom HTML tag (or a function)

      +
        +
      • top-text and/or bottom-text can be specified
      • +
      • Radius (r) and font-size (using CSS) are user-defined
      • +
      • Width and height are calculated from radius and font-size
      • +
      • Other CSS styles supported on Circular Text: border, margin, padding, color, background-color, font-family, font-size, font-weight, font-style, display, visibility, and opacity
      • +
      • space-width should be specified as an integer defining the letter-spacing as a percentage of normal (default 120)
      • +
      • char-width should be specified as an integer defining the width of each character as a percentage of normal (default 100)
      • +
      • Circular Text is displayed as though an in-line element
      • +
      +

      NB If $mpdf->useKerning is true then automatic kerning will be used on Circular Text.

      + +

      +<textcircle r="30mm" top-text="Circular Text Circular Text" style="color: blue; font-size: 34pt; font-style: italic" />

      +<textcircle r="30mm" space-width="120" char-width="150" top-text="&bull; Circular Text &bull;" bottom-text="Circular Text" style="background-color: #FFAAAA; border:1px solid red; padding: 0.3em; margin: 0.3em; color: #000000; font-size: 21pt; font-weight:bold; font-family: Arial" /> +

      + + + + + + + + + +

      Spread tables

      +
      +Setting the CSS property "overflow: visible" on a table now has the effect of cancelling resizing, and allowing tables to split columns across multiple pages. +The maximum width for a column (or group of columns set by colspan) is the page width. It is recommended to specify absolute values of width on each column (not percentages). +
      +
      + + + + +

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Periodic Table (table caption)
      123456789101112131415161718
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba Lu Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra
      + +

      + +
      +

      Limitations of Spread tables

      +Spread tables cannot be used with: keep-headings-with-table ($mpdf->use_kwt), table rotate, table page-break-inside:avoid, columns, +CJK (chinese-japanese-korean) or RTL (right-to-left) languages. +They will also cause problems with $mpdf->forcePortraitHeaders or $mpdf->forcePortraitMargins.
      +Warning: If a table row is too tall to fit on a page, mPDF will crash with an error message.
      +If the width settings within the table cause conflicts, it will override some of these settings. +
      +
      + + +'; + +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} + +//============================================================== +$mpdf->useActiveForms = true; + +$mpdf->bookmarkStyles = array( + 0 => array('color'=> array(0,64,128), 'style'=>'B'), + 1 => array('color'=> array(128,0,0), 'style'=>''), + 2 => array('color'=> array(0,128,0), 'style'=>'I'), +); + +$mpdf->useKerning=true; // set this to improve appearance of Circular text + // must be set before the font is first loaded + +$mpdf->WriteHTML($html); + +// JAVASCRIPT FOR WHOLE DOCUMENT +$mpdf->SetJS(' +function TwoPages() { + this.layout="TwoColumnRight"; + this.zoomType = zoomtype.fitW; +} +function OnePage() { + this.layout="SinglePage"; + this.zoom = 100; +} +'); + +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php b/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php new file mode 100644 index 000000000..fc908d5e2 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php @@ -0,0 +1,387 @@ + +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + box-shadow: 0.3em 0.3em #888888; +} +.rounded { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + border-radius: 2mm; + background-clip: border-box; +} +h4 { + font-weight: bold; + margin-top: 1em; + margin-bottom: 0.3em; + margin-top: 0; +} +div.text { + padding:0.8em; + margin-bottom: 0.7em; +} +p { margin: 0.25em 0; } +.code { + font-family: monospace; + font-size: 9pt; + background-color: #d5d5d5; + margin: 1em 1cm; + padding: 0 0.3cm; + border:0.2mm solid #000088; + box-shadow: 0.3em 0.3em #888888; +} +table { + border:1px solid #000000; + font-family: sans-serif; + font-size: 10pt; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; +} +td, th { + border:1px solid #000000; + text-align: left; + font-weight: normal; +} +.shadowtitle { + height: 8mm; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.8em; + padding-left: 3em; + font-family:sans; + font-size: 26pt; + font-weight: bold; + border: 0.2mm solid white; + border-radius: 0.2em; + box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9); + color: #AAAACC; + text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; +} +h3 { + margin: 3em 0 2em -15mm; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.5em; + padding-left: 3em; + width: 50%; + font-family:sans; + font-size: 16pt; + font-weight: bold; + border-left: none; + border-radius: 0 2em 2em 0; + box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); + text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); +} +.css { + font-family: arial; + font-style: italic; + color: #000088; +} +table.pop { + border-collapse: collapse; +} +table.pop td { + font-family: arial; + font-size: 10px; + border: 1px solid #888888; +} +meter.pop { + margin: 3px; +} +fieldset { border: 1px solid #000000; border-radius: 5px; padding: 10px; } +div.folder { + background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center; + padding: 5px 0 5px 25px; + border: 1px solid #000000; +} + + + + +
      New Features in mPDF v5.6
      + +

      HTML5 tags

      +
      +

      New tags introduced in HTML5 now have basic support in mPDF, and will thus support CSS style references.

      +

      The following are treated as block elements similar to <div>:

      +

      <article> <aside> <details> <figure> <figcaption> <footer> <header> <hgroup> <nav> <section> <summary>

      +

      The following are treated as in-line elements:

      +

      <time> <mark>

      +

      Mark is set by default to highlight in yellow in config.php using $defaultCSS e.g. mark

      +

      Progress and meter are discussed below:

      +
      + +

      <progress>

      +
      +

      Progress: accepts the attributes value and max. A progress element without a value is called an indeterminate progress bar. +Text between the opening and closing tags is not displayed.

      +

      CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity. +HTML attributes width and height are supported, although not officially part of the spec.

      +

      Example:

      +

      <progress value="5" max="10">50%</progress>

      + +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      +
      + +

      <meter>

      +
      +

      Meter: accepts the attributes min, max, value, optimum, low, and high. +Text between the opening and closing tags is not displayed.

      +

      CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity. +HTML attributes width and height are supported, although not officially part of the spec.

      +

      Example:

      +

      <meter value="5" max="10" min="1" low="2" high="8" optimum="5.6">5</meter>

      + + + +
        +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      • + + +
      • +
      +
      + +
      +

      Custom appearances for <meter> and <progress>

      +

      Meter (and to a lesser extent progress) can be used with custom appearances e.g. by using optimum to display the average, and low/high to indicate 90th centiles

      + +

      Custom appearances can be written by editing the script in classes/meter.php - Use a custom attribute of type="anyname" which is passed to the class as a variable e.g.

      +

      <meter type="2" value="612.7" optimum="580.4" min="517.0 " max="642.7" low="542" high="600">612.7</meter>

      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Domain

      Indicator

      LHB

      number

      LHB

      Indicator

      +

      value

      +

      Wales

      average

      +

      Wales range

      Comparison

      Deaths

      Death Rates per 100,000 population

      3046

      612.7

      580.4

      517.0 - 642.7

      612.7

      Death Rates per 100,000 from cancer

      789

      178.2

      172.7

      159.5 - 182.2

      178.2

      Death Rates per 100,000 from respiratory disease

      505

      60.5

      72.11

      54.41 - 95.5

      60.5

      Death Rates per 100,000 from cardiovascular disease

      913

      178.2

      165.0

      151.8 - 179.9

      160.2
      + + +

      Fieldset and Legend

      +
      +
      + Fieldset and legend +

      Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

      + + +
      + + +
      +
      + + +

      CSS styles

      +
      +

      +

      min-height, min-width, max-height and max-width are now supported in CSS style sheets for <img> (only).

      +

      background: url(data:image/gif;base64,...) is now supported in CSS style sheets (gif, png and jpeg).

      +
      + +
      This <div> has the folder icon set as an embedded image in the CSS
      +

      div.folder { + background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center; + padding: 5px 0 5px 25px; + border: 1px solid #000000; +} +

      + + + +

      Arabic text

      + + + +

      + +
      + +

      The script handling Arabic text (RTL) was rewritten in mPDF 5.5 with improved support for Pashto/Sindhi/Urdu/Kurdish, especially for joining characters and added new presentation forms.

      +

      Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters. However, some fonts include glyphs for these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).

      +

      By editing config_fonts.php and adding:

      +

      + \'unAGlyphs\' => true, +

      +

      to appropriate fonts, this will force mPDF to use unmapped glyphs. It requires the font file to include a Format 2.0 POST table which references the glyphs by name as e.g. uni067C.med or uni067C.medi

      +

      XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS) all contain this table. NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med" - if it exists, it may work!

      +

      Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).

      +

      mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use +if the font already utilises these codes (unlikely).

      +
      + + +

      Using Arial MS font:

      +'; +//============================================================== +// Test for all Arabic characters which may need joining +//============================================================== +$mpdf->cacheTables = true; +$html .=' + +
      +'; + + +$ranges = array(0=>array(0x0621, 0x063a), 1=>array(0x0640, 0x064a), 2=>array(0x0671, 0x0672), 3=>array(0x0674, 0x06d3)); + +foreach($ranges AS $r) { + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + for($n=$r[0];$n<=$r[1];$n++) { + + $html .= ''; + $html .= ''; + + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + } + $html .='
      IsolatedFinalMedialInitial
      U+0'.strtoupper(dechex($n)) .'�'.dechex($n) .';ئ�'.dechex($n) .';ـ�'.dechex($n) .';ـ�'.dechex($n) .';ـ�'.dechex($n) .';ـ�'.dechex($n) .';ه
      '; +$html .='
      '; +} + + + +$html .='
      '; +//============================================================== + +$html .=' +
      + + +'; + +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} + +//============================================================== + +$mpdf->WriteHTML($html); + +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php b/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php new file mode 100644 index 000000000..658dc9ac8 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php @@ -0,0 +1,595 @@ + +.gradient { + border:0.1mm solid #220044; + background-color: #f0f2ff; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + box-shadow: 0.3em 0.3em #888888; +} +h4 { + font-weight: bold; + margin-top: 1em; + margin-bottom: 0.3em; + margin-top: 0; +} +div.text { + padding:0.8em; + margin-bottom: 0.7em; +} +p { margin: 0.25em 0; } +p.code { + background-color: #d5d5d5; + margin: 1em 1cm; + padding: 0 0.3cm; + border:0.2mm solid #000088; + box-shadow: 0.3em 0.3em #888888; +} +.code { + font-family: monospace; + font-size: 9pt; +} +.shadowtitle { + height: 8mm; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.8em; + padding-left: 3em; + font-family:sans; + font-size: 26pt; + font-weight: bold; + border: 0.2mm solid white; + border-radius: 0.2em; + box-shadow: 0 0 1em 0.5em rgba(0,0,255,0.5); + color: #AAAACC; + text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; +} +h3 { + margin: 3em 0 2em -15mm; + background-color: #EEDDFF; + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + padding: 0.5em; + padding-left: 3em; + width: 50%; + font-family:sans; + font-size: 16pt; + font-weight: bold; + border-left: none; + border-radius: 0 2em 2em 0; + box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); + text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); +} +.css { + font-family: arial; + font-style: italic; + color: #000088; +} + +.aBDP { text-align: "." center; } +.arBDP { text-align: "\66B" center; } +.middot { text-align: "\B7" center ; } + +p.menu { + text-align: justify; + padding-right: 4em; +} +dottab.menu { + outdent: 4em; +} + + +.outlined { + text-outline: 0.1mm 0.1mm #FF0000; + font-weight: bold; + font-size: 20pt; + color: #FFFFFF; +} + +/* For background-clip and -origin */ +.divclip { + border: 10px dashed #000000; + border-radius: 3em; + padding: 20px; + background:yellow; + background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet); + width: 300px; + height: 50px; + margin-bottom: 1em; + background-repeat: no-repeat ; + background-size: 100% 100%; +} +.divpic { + background:yellow; + background: yellow url("bayeux1.jpg") no-repeat scroll left top; + background-size: 100% 100%; +} +.div1 { + background-clip: content-box; + background-origin: content-box; +} +.div2 { + background-clip: padding-box; + background-origin: padding-box; +} +.div3 { + background-clip: border-box; + background-origin: border-box; +} +.div4 { + background-clip: content-box; + background-origin: border-box; +} +.div5 { + background-clip: border-box; + background-origin: content-box; +} + + +/* For Table of Contents */ +div.mpdf_toc { + font-family: sans-serif; + font-size: 11pt; +} +a.mpdf_toc_a { + text-decoration: none; + color: black; +} +div.mpdf_toc_level_0 { /* Whole line level 0 */ + line-height: 1.5; + margin-left: 0; + padding-right: 2em; /* should match e.g 0 is default */ +} +span.mpdf_toc_t_level_0 { /* Title level 0 - may be inside */ + font-weight: bold; +} +span.mpdf_toc_p_level_0 { /* Page no. level 0 - may be inside */ +} +div.mpdf_toc_level_1 { /* Whole line level 1 */ + margin-left: 2em; + text-indent: -2em; + padding-right: 2em; /* should match 2em is default */ +} +span.mpdf_toc_t_level_1 { /* Title level 1 */ + font-style: italic; + font-weight: bold; +} +span.mpdf_toc_p_level_1 { /* Page no. level 1 - may be inside */ +} +div.mpdf_toc_level_2 { /* Whole line level 2 */ + margin-left: 4em; + text-indent: -2em; + padding-right: 2em; /* should match 2em is default */ +} +span.mpdf_toc_t_level_2 { /* Title level 2 */ +} +span.mpdf_toc_p_level_2 { /* Page no. level 2 - may be inside */ +} + + + + + + + +

      ToC Layout and styling

      +
      +

      Table of Contents styling

      +

      When a Table of Contents is generated by mPDF using e.g. <tocpagebreak>, mPDF 5.7 will generate the ToC as HTML. This means that a CSS stylesheet can be used to format its appearance.

      +
      + +
      + +
      +

      This will result in the following HTML code generated (internally):

      +

      +<div class="mpdf_toc" id="mpdf_toc_0">
      +  <div class="mpdf_toc_level_0">
      +    <a class="mpdf_toc_a" href="#__mpdfinternallink_1">
      +      <span class="mpdf_toc_t_level_0">Section 1</span>
      +    </a>
      +    <dottab outdent="2em" />
      +    <a class="mpdf_toc_a" href="#__mpdfinternallink_1">
      +      <span class="mpdf_toc_p_level_0">5</span>
      +    </a>
      +  </div>
      +  <div class="mpdf_toc_level_1">
      +    <a class="mpdf_toc_a" href="#__mpdfinternallink_2">
      +      <span class="mpdf_toc_t_level_1">Chapter 1</span>
      +    </a>
      +    <dottab outdent="2em" />
      +    <a class="mpdf_toc_a" href="#__mpdfinternallink_2">
      +      <span class="mpdf_toc_p_level_1">6</span>
      +    </a>
      +  </div>
      +  <div class="mpdf_toc_level_2">
      +    <a class="mpdf_toc_a" href="#__mpdfinternallink_3">
      +      <span class="mpdf_toc_t_level_2">Topic 1</span>
      +    </a>
      +    <dottab outdent="2em" />
      +    <a class="mpdf_toc_a" href="#__mpdfinternallink_3">
      +      <span class="mpdf_toc_p_level_2">7</span>
      +    </a>
      +  </div>
      +</div> +

      + +

      NB The id is "0" (mpdf_toc_0) for root/un-named ToC; otherwise it is lowercase of the name="" used for the ToC

      +
      + +
      + +

      Example Styling using CSS

      +

      The following CSSwill format the ToC as it appears in this document:

      +

      +/* For Table of Contents */
      +div.mpdf_toc {
      +  font-family: sans-serif;
      +  font-size: 11pt;
      +}
      +a.mpdf_toc_a {
      +  text-decoration: none;
      +  color: black;
      +}

      +/* Whole line level 0 */
      +div.mpdf_toc_level_0 {
      +  line-height: 1.5;
      +  margin-left: 0;
      +  padding-right: 2em;
      +}

      +/* Title level 0 - may be inside <a> */
      +span.mpdf_toc_t_level_0 {
      +  font-weight: bold;
      +}

      +/* Page no. level 0 - may be inside <a> */
      +span.mpdf_toc_p_level_0 { }

      +/* Whole line level 1 */
      +div.mpdf_toc_level_1 {
      +  margin-left: 2em;
      +  padding-right: 2em;
      +}

      +/* Title level 1 */
      +span.mpdf_toc_t_level_1 {
      +  font-style: italic;
      +  font-weight: bold;
      +}

      +/* Page no. level 1 - may be inside <a> */
      +span.mpdf_toc_p_level_1 { }

      +/* Whole line level 2 */
      +div.mpdf_toc_level_2 {
      +  margin-left: 4em;
      +  padding-right: 2em;
      +}

      +/* Title level 2 */
      +span.mpdf_toc_t_level_2 { }

      +/* Page no. level 2 - may be inside <a> */
      +span.mpdf_toc_p_level_2 { }

      +

      +

      NB padding-right should match <dottab> "outdent" (0 is default). See <dottab> for more details

      +
      + +
      +

      The functions TOCpagebreakByArray() and TOCpagebreak() have a new final parameter, and HTML tags <TOC> and <TOCpagebreak> have a new attribute "tocoutdent". This should be blank or a valid CSS length e.g. "2em". See <dottab> for more details.

      +
      + + + + + +

      Text-align on decimal point

      +
      +

      Text inside a table column can be aligned on a decimal point (or any other character) by using either HTML attribute or CSS.

      +

      This example table uses the following CSS stylesheet:

      +

      +<style>
      +.aBDP { text-align: "." center; }
      +.arBDP { text-align: "\66B" center; }
      +.middot { text-align: "\B7" center ; }
      +</style> +

      +

      + + + + + + + + + + + + + + + + + + + + + + + +
      <TD> elementColumn
      align="left"Left text
      align="right"Right text
      align="center"Center text
      align="char"

      1000.0001

      align="char" char=","

      1000,0001

      align="char" char="&middot;"

      1000·0001

      align="char" char="&#183;"

      1000·0001

      style="text-align: \'.\' center"100.001
      style="text-align: \'.\' center"DP aligned text
      style="text-align: \',\' center"

      1.000,0001

      class="aBDP"10.01
      class="aBDP"1000
      class="aBDP"

      1000.0001

      class="middot"1 000·0001
      class="aBDP"

      1,000,000.00001

      class="aBDP"1.000000001
      class="aBDP"1.000.000.001
      class="arBDP"

      ١٬٥٦٧٬٢٣٤٫٢٣٤٧

      class="aBDP"(GBP) 1,000,000.00001
      1,000,000.00001 (EUR)
      1,000,000.00001
      + +
      + + + + + + +

      Automatic ToC and Bookmarks

      +
      +

      A Table of Contents and/or Bookmarks can be generated automatically from any of the heading tags H1 - H6. This example will generate ToC and bookmarks from all <h3> tags (top level) and <h4> tags (next level)

      +

      + $mpdf->h2toc = array(\'H3\'=>0, \'H4\'=>1);
      + $mpdf->h2bookmarks = array(\'H3\'=>0, \'H4\'=>1); +

      +
      + + + + + + +

      Improved line-breaking

      +

      mPDF will now avoid line-breaks in the middle of words even between <tags>

      +
      +

      +<b>Na<sub>2</sub>HCO<sub>3</sub></b> +

      +

      Pellentesque purus feugiat semper. Donec nunc odio, et vitae pellentesque. Pellentesque Na2HCO3 velit lacus.

      +
      + + +

      CSS hyphens

      +
      +

      The CSS property hyphens is now supported on all block elements

      +

      +hyphens: manual | auto | none +

      +

      In the following example, the word interdependent contains no soft hyphen or similar characters, and is moved to the next line.

      + +

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (no characters suggesting line-break).

      + +

      manual (default) + Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities. Characters can be explicit ("-" hard hyphen) or conditional (&shy; &#173; <wbr>).

      +

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter­dependent (uses soft hyphen &shy;).

      + +

      none - Words are not broken at line breaks, even if characters inside the word suggest line break points.

      +

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter-dependent (hard hyphen).

      + +

      auto + Words can be broken at appropriate hyphenation points, as determined by characters inside the word.

      +

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (No characters suggesting line-break).

      +

      SHY inside the word take priority over hyphenation points determined by other resources.

      +

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter­dependent (uses soft hyphen &shy;).

      + +

      The configurable variables $this->hyphenate and $this->hyphenateTables are henceforth redundant and have no effect.

      +

      NB Support for <wbr> is new in mPDF 5.7

      +
      + + + + + +

      Text circle

      +
      +

      Added in mPDF 5.6 but not included in New Features example - transparent background and Divider were new. Now also added support for font-size:auto

      +

      +<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular" divider="&bull;" style="font-size: auto" /> +

      +

      +
      +
      + + +

      List numbering

      +
      +

      This list is set to start numbering at 5

      +

      <ol start="5">

      +
        +
      1. List item number 1
      2. +
      3. List item number 2
      4. +
      5. List item number 3
      6. +
      +
      + + + + +

      <dottab> and outdent

      +
      +

      <dottab> now supports a custom CSS property "outdent", which can also be used as an HTML attribute i.e. <dottab outdent="2em">

      +

      The first item uses <dottab outdent="4em"> whereas the following items have <dottab class="menu"> (with CSS dottab.menu{outdent: 4em;} ) and all have padding-right="4em" on the <div> element

      +
      + + + + + + + + + +
      +

      +

      +p.menu { text-align: justify; padding-right: 4em; }
      +dottab.menu { outdent: 4em; } +

      +

      NB It is recommended to use &nbsp; after the dottab if a space is required before the following content.

      +

      NB This (outdent) is also used in the Table of Contents (see earlier in this document).

      +
      + + + +

      Layers

      +
      +

      mPDF 5.7 will create layers in the document using the CSS property z-index. All layers are visible by default.

      +

      This demonstrates layers in a PDF document. Select the layers named "Correct Answers" or "Wrong Answers" in your PDF viewer (the layers pane should be open already in Adobe Acrobat)

      +
      What is the name of the Prime Minister of Britain?
      +
      David Cameron
      +
      Rupert Murdoch
      +
      What is the name of the David Beckham\'s bulldog?
      +
      Scarlet
      +
      Victoria
      +

      To open/close/select layers in Adobe Reader (10):
      +

      +

      The layer names and initial state can be set (optionally) e.g.

      +

      + $mpdf->layerDetails[1][\'state\']=\'hidden\'; // Set initial state of layer - "hidden" or ""
      + $mpdf->layerDetails[1][\'name\']=\'Correct Answers\';
      + $mpdf->layerDetails[2][\'state\']=\'hidden\';
      + $mpdf->layerDetails[2][\'name\']=\'Wrong Answers\';
      +

      +

      This is the code used in the example above:

      +

      + <div style="z-index:1;color: green;float: left; width:30%;">Scarlet</div>
      + <div style="z-index:2;color: red;">Victoria</div> +

      +
      To force the PDF reader to open with the layers tab open, set: +

      $mpdf->open_layer_pane = true;

      +
      + +
      + + + +

      CSS visibility on <span>

      +

      CSS visibility:hidden is now supported on inline elements e.g. <span>

      +
      +

      This next bit of text is hidden - Hidden text - and this isn\'t.

      +

      style="visibility:hidden;"

      +

      This next bit of text is only visible in print - Hidden text - and this isn\'t.

      +

      style="visibility:printonly;"

      +

      This next bit of text is only visible on screen - Hidden text - and this isn\'t.

      +

      style="visibility:screenonly;"

      +

      You can show or hide these elements as for layers (above).

      +
      + + + +

      CSS "rem" unit

      +
      + +
      This line has the font-size set as 1rem +
      This line has the font-size set as 0.5rem +
      This line has the font-size set as 1.5rem +
      +
      +
      +
      This line has the font-size set as 1em +
      This line has the font-size set as 0.5em +
      This line has the font-size set as 1.5em +
      +
      +
      + +
      + + + + +

      CSS outline

      +
      +
      This is text with an outline set by CSS
      +

      +.outlined { text-outline: 0.1mm 0.1mm #FF0000; } +

      +
      + + + + + +

      CSS background-clip, background-origin & background-size

      +
      +

      CSS background-clip, background-origin & background-size are now supported for most block level elements. (Not supported in tables, nor on page/body backgrounds).

      + + +
      background-clip: border-box[default value]
      background-origin: padding-box[default value]
      +
      background-clip: content-box;
      background-origin: content-box
      +
      background-clip: padding-box;
      background-origin: padding-box
      +
      background-clip: border-box;
      background-origin: border-box
      +
      background-clip: content-box;
      background-origin: border-box
      +
      background-clip: border-box;
      background-origin: content-box
      + +
      background-clip: border-box[default value]
      background-origin: padding-box[default value]
      +
      background-clip: content-box;
      background-origin: content-box
      +
      background-clip: padding-box;
      background-origin: padding-box
      +
      background-clip: border-box;
      background-origin: border-box
      +
      background-clip: content-box;
      background-origin: border-box
      +
      background-clip: border-box;
      background-origin: content-box
      + + +
      + + +'; + +$mpdf->h2toc = array('H3'=>0, 'H4'=>1); +$mpdf->h2bookmarks = array('H3'=>0, 'H4'=>1); + +$mpdf->open_layer_pane = false; +$mpdf->layerDetails[1]['state']='hidden'; // Set initial state of layer - "hidden" or nothing +$mpdf->layerDetails[1]['name']='Correct Answers'; +$mpdf->layerDetails[2]['state']='hidden'; // Set initial state of layer - "hidden" or nothing +$mpdf->layerDetails[2]['name']='Wrong Answers'; + +//============================================================== +if ($_REQUEST['html']) { echo $html; exit; } +if ($_REQUEST['source']) { + $file = __FILE__; + header("Content-Type: text/plain"); + header("Content-Length: ". filesize($file)); + header("Content-Disposition: attachment; filename='".$file."'"); + readfile($file); + exit; +} + +//============================================================== + +$mpdf->WriteHTML($html); + +// OUTPUT +$mpdf->Output(); exit; + + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/firefox-48.png b/inc/3rdparty/libraries/mpdf/examples/firefox-48.png new file mode 100644 index 0000000000000000000000000000000000000000..b982cf97903836a406b640bc76ca4de112f1d788 GIT binary patch literal 5640 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 + + + + + +

      Submitted data from PDF Form

      +

      (See formsubmit.php in the Examples folder for details)

      +'; + + +if (count($_POST)) { + // To display HTML output from PDF form + echo '

      HTML format data sent as POST

      '; + foreach($_POST AS $name=>$val) { + $t = mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' ); // If from core fonts doc + echo '

      PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'

      '; + } +} +else if (count($_GET)) { + // To display HTML output from PDF form + echo '

      HTML format data sent as GET

      '; + foreach($_GET AS $name=>$val) { + $t = mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' ); // If from core fonts doc + echo '

      PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'

      '; + } +} + +else { + $postdata = file_get_contents("php://input"); + + if ($postdata) { + echo '

      XFDF format data detected

      '; + // To parse XFDF + if (preg_match_all('/\s*((.*?)<\/value\s*>)\s*<\/field\s*>/s', $postdata, $m)) { + for($i=0; $i(.*?)<\/value\s*>/s', $m[2][$i], $v); + if (count($v[0])>1) { + $values = array(); + foreach($v[1] AS $val) { $values[] = $val; } + //foreach($v[1] AS $val) { $values[] = htmlspecialchars_decode($val); } + echo '

      Field: '.$m[1][$i].' => [array of values] ('.implode(', ',$values).')

      '; + } + else { + //echo '

      Field: '.$m[1][$i].' => '.htmlspecialchars_decode($m[3][$i]).'

      '; + echo '

      Field: '.$m[1][$i].' => '.$m[3][$i].'

      '; + } + } + } + if (preg_match_all('/\s*\s*<\/field\s*>/s', $postdata, $m)) { + for($i=0; $iField: '.$m[1][$i].' => [blank]

      '; + } + } + if (preg_match_all('//s', $postdata, $m)) { + for($i=0; $iField: '.$m[1][$i].' => [no value]

      '; + } + } + + + // To display whole XFDF + //$postdata = preg_replace("/[\n\r]/", "", $postdata); + //$postdata = preg_replace('/>\s*\n<", $postdata); + //echo nl2br(htmlspecialchars($postdata)); + } + else { echo "No form data detected"; } +} + + + +echo ''; + +exit; + +function PDFDocEncodingToWin1252($txt) { + $Win1252ToPDFDocEncoding = array( + chr(0200) => chr(0240), chr(0214) => chr(0226), chr(0212) => chr(0227), chr(0237) => chr(0230), + chr(0225) => chr(0200), chr(0210) => chr(0032), chr(0206) => chr(0201), chr(0207) => chr(0202), + chr(0205) => chr(0203), chr(0227) => chr(0204), chr(0226) => chr(0205), chr(0203) => chr(0206), + chr(0213) => chr(0210), chr(0233) => chr(0211), chr(0211) => chr(0213), chr(0204) => chr(0214), + chr(0223) => chr(0215), chr(0224) => chr(0216), chr(0221) => chr(0217), chr(0222) => chr(0220), + chr(0202) => chr(0221), chr(0232) => chr(0235), chr(0230) => chr(0037), chr(0231) => chr(0222), + chr(0216) => chr(0231) + ); + return strtr($txt, array_flip($Win1252ToPDFDocEncoding) ); +} + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/goto.gif b/inc/3rdparty/libraries/mpdf/examples/goto.gif new file mode 100644 index 0000000000000000000000000000000000000000..e7de2b10654bd86af090b4794f36befd473930cc GIT binary patch literal 132 zcmZ?wbhEHb)MDUcn8?8J|Ns9p3?T52kxB6<3#$kNGlLF@50YnK3Z2rw^0YMn;yGK~ zk~g2L2zO`<6K7oZb52s%w6`vsihi$pSIsHJ`)R_d%}>jeru3__tdrZ=@cxC(-Dwlj iLaJhu>USh|&R)38!Yb+d=8cQ4Pip(kD=xyoU=0Amr!+JG literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/img1.png b/inc/3rdparty/libraries/mpdf/examples/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3f4ded8b2ac7e76734ffb9bf72524a0ebfd511 GIT binary patch literal 1000 zcmZ9KZAepL6vzMfW#wzsgR3DGCLtu4a~qLThB;GvSz<%ePqwr$vMfhIUToYJy)aBa z1Tg~r5D^hk(uY-I5z?n&C5D!(MCPVpA~iH(^mOhWL+HSLo^${F?>WEcJoiS8qcSrs zI}Jc)b(OuA_7v?&k!bz(!SS3np`*5PFCLF^v*BL+xOXryN5$xLxV2{txTlD&Y6rT&C5qh`O z6}B!L5CO@r$#$m@GXi$!;v#s4%p>3o)R(^x^Ib9@2X6%W=V1Q^>lnyXNH?HYrzKa* z5)A$zYl!rLd1xwC`!Mq!Y=VxC!hWo=L$zwNnl!AYJ4(#0--iqlH9A`00bJ!~!Mcg6 zonFC&*N<>Rf*!V}73SYpu$&L37c#-LfW97h6e#WB2Jl{R1zewAABTrSX+wcQK(BsZ z`=bR*`S7Sv2*?{kz5N|m0IaIRq0N_fV3nrg{s5UH$p>C8;Ks`W*spqGcc+|t0 z!qI-cGZI~7%t4mGa=)uIYE&6{7TxW^q`rL;sAR%^0{0Zw4Z>&>3X< zJ~>-y{Sfw)Le)W&qQ(F}%nf=1&7Ta(SP8rYXhr4bylb>Ecdg?H|35JO>XinO+FsSr z0i;u&&VIcd+l{WaI{q%7No^=V$nrruclRr#dehzT}!A%i%P)i)Sfk- z5nY$5wF(lmwP+C)5gF=&##*LU&>*!I8f|o<`S7C)egqve`ug65P}m>teP14)`~QFM zbN6$V)ndq;k_o_2Ss^WFd!G8F^K6xRI|cwARZDBi1)U%$f~&*jzvFl6oMW*uX_0h& z-}T_5pzo3|p%Z$oz0(V(Cq5;bnw!p?J`)-U#oxq-PYjPe7z_RpJl}FYhvazN9zmCg zzlhh=*7)82lG!D#n_ELeq4<+{urKIq_bGtP2IDSJ%3%bkuN9rDpp{YF8$vF@1E#Mw zh$$I!4MkyaB&7wRbR$%kq(@2PIP<@| z@V*d4Yh;8mhVBD!$dK)zdeBZ#8B|NJo5DdMug5GshfeK#EsoB5R|tm!nE^S2i2NfG z4dO3~LJEc1sTZ)N?ggWZLsSimRo_0C15lQ*%dDX5-qEOo5}Crjw=EKVMTnJIyzhH# z=BTI;<`IH@_|FWh3d)}=1$l;LS|9e$aB9ZD4mh(Bc?OL^VDG20<#YS6zzjtLO^GT4 z+$gTo4p9B6;zbK^8DJ|cU(eXXHqyG>T2237cyjfs3Xx&2sM`o+v2zyTh90&jnCPjL zzOUKh`L%1*(4Uvhp9*n-9k*OnuhX|Su6f(`P2R=+>e#MHX6H7?F~wdM$@syWKlQ?7 zZ~oI4uP4}+n*R(K!k3!of2eue3Dm&)V?I YZQtx8ix+P0Fs3t3RF+$%vkM!Q&q=XJvj6}9 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/img3.png b/inc/3rdparty/libraries/mpdf/examples/img3.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a94872b3d55e6845d00b1c97f44c1b6be37ff8 GIT binary patch literal 1087 zcmZ8fe@q)?7=G@0b)}_%-#FGSn?fbqLYz#Ci5SE&$|!EuhBYX}I3&3E1CkoisXJLY zuW{36!X`>e16@Qz+_DfuVx7p`B>GQd7_vY{hdPgT8rB$7H)A?Kzq_U(@lEdg-aL8k zd7t;WJLYjWTFslx0IW?eXEVD?*|W=JVCOzhAPgAb+2?H#ctMbb;Jd-t4>5&TR#U6a zJ0s2JI{P}M*U7r|Cyfubbj^9YW(x~1*lubbP9JN(Ll07?*%*4hukAi>PRTUN-TliV}h= z41dll=3qQzty}>|vYa;uQ+d_>MGMkko9}Sc$kz`99FhTaLy&@}AQb54#*L^SfP>8v zi;Nx9pO&}gt+xtDfWhA|+E67{ zI6Pv)p=GsXTxSHbxkZA==i$+v%%fVgC%LWegmFl8?l7=pF?2elA->$uu6Vg{&LR zftm+|u(MTfpz(8M5F3H70CuABuC4E|i}W%6ar2QSwZ%#@mpv-gF3fo1w(>fm?_*FXA@VA&JZjO_$_Un?h#-N4S^`=`0Urz^qC%UoC{VIC23Qdg z4Olk~RD#4p)v74gSRR5EWY<^&MtLN)C?TK)d<>?oWx0D3hH+>AnS0JZ-}%n}f9JdB z9EuU}>}}m_0oX_Kx$EdTg#N^DFzK;mYt=@8iI|UL!&wX#OTsECDpCKe&S&J0j*oI9 zxHn2~=pX2ter%d#u#^I&kC)Hn)MQF(%GuLr4IPGw7ZciVwWIx``iuI8T@6m8Q>DC; z#h9FUG7%dWtCp(+mIP$(%QSQwCLT@bTl7u)n(Jp zQux!oI8HiSxJl3>LINDky{79X5d%zg1K~8%YmJ?Nr=`B?jgn+AIIwiHd97`K0AK_S zx6(A(Vhj;j>4hv%b}Y&WiUi%4(io^97S#hP0Z=>!_gDC9L6a5(grzz?c$u?l4RSRZ zZ>$0-rd{DjU`PY9mp(ccE8xI|#NX_dj&02brhQYCz>a|!i!@aolEeH6e-FA^`fHiU zm%|W0tsVhMuQmUXhu;^1v=nlI%Q&izLM(zv2#O6#3Q7dZ;$9U6F$GZu7O@FPE&uDI z;YFr}5KADU1?B5u9OIA{5!Wd!q#&W`lnO|mITu_?2n?IeqNAl0!M%{Ip%1fxN;gr% zVu}<|5EkYdho6z8fTpN^S0o1yb0j3qVd-1&Di{K@Q09d|kRyn;)S>STVfGmK68Uy8 zj=-XUMem>SmN};dtAZi12%Q1V8X$*Xyd{B|KNCz24`>AF5xlwc57HBvxlZs2_5XoK z*RGjG*a-RYp962w`I{us{mcGI`uSu=azkUYE5~HTr4@d&!w()!_i`GpU%!6ml}YMg z&YH_b`)sN+6!tN?q-_byd}hEw_1?UU z`-LfmUv6)_?R*}4sjewm-$Gfl^VGHu@g-L)`7GvJw!RPYmbarl-B%G(qpZ6tJJD(C z6?_oFemi=DF5qlgHLl9;Y`xaLU$`7)188^Uob3!}QFg7SyJ!B&;C9$Cri z!P>Caz4u(oa+azXZySI3o4t7Zqp*#|X@&o}?rxXuS+)6_4({QeJRsSm#R z(mHY~CFSetkGg%HiYKIFFMJc1{)?S-&!@I6<*rgk9$UlIv!2K~Dx26l3uM2@nc{!+ zeILkBe|p<7Y2WTrTuS_$MZ?~$qxat;Qm+_sp>gR=+gF1QDmTS$-MXCA$FpMn6p6ct zJy}}S@8ddeFE7OXA$O+Dl}f<)huyfL!7U&&wGiTP3a;qgB@Y=l?kymteUuDr-EJQLkBh4{7bystSgosioIz;rFZ6jcRY$gQ)^b_`ZVy@ z`Vs>Uhk02hewy@T45QV9>iQ*^g9pWD*5l|5;tPcA<7&BjHi%}+TpT);iII!W?hvT~;s literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/img5.png b/inc/3rdparty/libraries/mpdf/examples/img5.png new file mode 100644 index 0000000000000000000000000000000000000000..1e4c5ec54291e1d57b196bba43cf7a0123ccecc6 GIT binary patch literal 1802 zcmZ8g4K!3~7=G`}9e<(R4AN4{&WWwWj8bg*8ATZX%Jioes~WOpn>7Yw8u}YWKPtqe z+9V;hF_K2xDHSC(D@DqRaehLFGrUzCKRLR5S}-1?|hL=p|X9b&Fz-Z^wf@lw&) z(5NAy=UC_L=h$n$YGUJKD=R9Mca z*1}eX3nOKBin2pF@_Izkq-e}&6aw&x!SDoNDFU4U>?o>83+T#kY(PfJ6n|G{bM+G8h0VAYd6mI~fms z2>fUVT)>S{Tm?7=#9X{xiF=@UC*W)V$sjOa0sR>eq<8>Cr%o((+HS%_VJjA`Dg{hH zq~f;{`q}||P8=PaBw)$}AzhnQ4@I8>Fp--?48|k~(OIi6hb=yU&`%K3oNqQkR0zuG z3HQK=`Q~|S4}5Y2OebUoR&Sv+4+MPRCj(9aJRfjA;JWlmaS-6ZPXs3l0{OcCwYuMF z)DZ+i;1h;K3Q!GGF`bFqI5^@UBosX~n4po%8=vK&}iqvRTQzy=^#rvr}x(Pj*g2_j=q z4S>!AN_;<=E!m<8RxAgh&gdkl^#FyiC|cKmmOoi!>MDR60K^KC@J3H!!&1Un;rRax zUf;T`*XnU)afoP^ z*|42+Y(tynW02!#KReUo7NrL$oI*{DSXOJvSj%C;XGtY)9uO|eg?2{@1>qhX83 zThNx-)E9An8cruwLi;%0pVrG8M`}JE$}7%qKC+RS{1`;R)uVN04*K@XW?f5MhU=~Q z$42&Nn7Ha>mhnMuiJsv4qMc*rwZS{;pVTr0uAZ9p^B8O&kHO+*mtTCE#@2t?JDp1j zaYfh1=59T~z#o9y{!d+j!R=t-ZmIERrZ@T(KboPDl%_v1DYvd(MlPxQx8>>XlDd-3 zWx1Q4EP3O0D|yHT`{26TD{XF%Q&|xw!Tmmu?D39D>;9OSH1}!v@aHiyObt>z$=O2My@BW$(^GA}}FbQ{i0o+`76&-j{ z_`N3qBfPqJ!}c4lQv_X?qvP9cxiVkm=59ZgvFWLMMJ0l>ocV~NqB$n-oyfpRd`0^H z%+UoAHnPj?E7RHM92>rKtPA-S>b5OxrT@HQs#$)vvoor;s4(q~GI{zbhUT%(>_J{_ zb_K%AHtLOPyO$C^hk#6cf*?sgD&2I}l7k(+aJVtwC!Ww46u!KAtmJ)tZf0ug+`WOY zRX#f?^y^sO`;$v{`n~X$(+8+rS)^l6%jzQKjw+XIR`)#UIOBDm$8;T-rhMi1ups?` zT14tK4T=wqI$UnOd4=PGnQtn$&oJ0a^S)@?cD32`Y)7qBnj)`4xCwKPsm+{{10Lq= z8mu6#-b*W!@=~^SnG2E==BVX!w{{t&R**zK(?hFm{U2V}kBmk=-5AarwQmJ3ee5;J z?K6hbd{&S}eZa%J$EHLg@`Q`F@(Urk1?o_D$$4HZQj_c6iz8O*N0|JzAR>ycZ~2qxMia# literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/index.php b/inc/3rdparty/libraries/mpdf/examples/index.php new file mode 100644 index 000000000..869bab8cd --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/index.php @@ -0,0 +1,40 @@ +

      mPDF Example Files

      '; + +foreach($files AS $n=>$f) { + echo '

      '.$n.') '.$f[0].'   PDF   PHP

      '; +} + +echo ''; +exit; + + +// For PHP4 compatability +if (!function_exists('scandir')) { + function scandir($dir = './', $sort = 0) { + $dir_open = @ opendir($dir); + if (! $dir_open) + return false; + while (($dir_content = readdir($dir_open)) !== false) + $files[] = $dir_content; + if ($sort == 1) + rsort($files, SORT_STRING); + else + sort($files, SORT_STRING); + return $files; + } +} + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/klematis.jpg b/inc/3rdparty/libraries/mpdf/examples/klematis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b87e920c171d2cdddc91492f10a910b07c534ed2 GIT binary patch literal 10937 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 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/loading.gif b/inc/3rdparty/libraries/mpdf/examples/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..e846e1d6c58796558015ffee1fdec546bc207ee8 GIT binary patch literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css new file mode 100644 index 000000000..90036e2a8 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css @@ -0,0 +1,89 @@ + body { font-family: DejaVuSansCondensed, sans-serif; font-size: 11pt; } + p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } + + hr { width: 70%; height: 1px; + text-align: center; color: #999999; + margin-top: 8pt; margin-bottom: 8pt; } + + a { color: #000066; font-style: normal; text-decoration: underline; + font-weight: normal; } + + ul { text-indent: 5mm; margin-bottom: 9pt; } + ol { text-indent: 5mm; margin-bottom: 9pt; } + + pre { font-family: DejaVuSansMono, monospaced; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } + + h1 { font-weight: normal; font-size: 26pt; color: #000066; + font-family: DejaVuSansCondensed, sans-serif; margin-top: 18pt; margin-bottom: 6pt; + border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; + text-align: ; page-break-after:avoid; } + h2 { font-weight: bold; font-size: 12pt; color: #000066; + font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: 6pt; + border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; + text-align: ; text-transform: uppercase; page-break-after:avoid; } + h3 { font-weight: normal; font-size: 26pt; color: #000000; + font-family: DejaVuSansCondensed, sans-serif; margin-top: 0pt; margin-bottom: 6pt; + border-top: 0; border-bottom: 0; + text-align: ; page-break-after:avoid; } + h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; + font-family: DejaVuSansCondensed, sans-serif; margin-top: 10pt; margin-bottom: 7pt; + font-variant: small-caps; + text-align: ; margin-collapse:collapse; page-break-after:avoid; } + h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; + font-family: DejaVuSansCondensed, sans-serif; margin-top: 8pt; margin-bottom: 4pt; + text-align: ; page-break-after:avoid; } + h6 { font-weight: bold; font-size: 9.5pt; color: #333333; + font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: ; + text-align: ; page-break-after:avoid; } + + + .breadcrumb { + text-align: right; font-size: 8pt; font-family: DejaVuSerifCondensed, serif; color: #666666; + font-weight: bold; font-style: normal; margin-bottom: 6pt; } + + .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; } + + .big { font-size: 1.5em; } + .red { color: #880000; } + .slanted { font-style: italic; } + +/* For Table of Contents */ +div.mpdf_toc { + font-family: sans-serif; + font-size: 11pt; +} +a.mpdf_toc_a { + text-decoration: none; + color: black; +} +div.mpdf_toc_level_0 { /* Whole line level 0 */ + line-height: 1.5; + margin-left: 0; + padding-right: 2em; /* should match e.g 0 is default */ +} +span.mpdf_toc_t_level_0 { /* Title level 0 - may be inside */ + font-weight: bold; +} +span.mpdf_toc_p_level_0 { /* Page no. level 0 - may be inside */ +} +div.mpdf_toc_level_1 { /* Whole line level 1 */ + margin-left: 2em; + text-indent: -2em; + padding-right: 2em; /* should match 2em is default */ +} +span.mpdf_toc_t_level_1 { /* Title level 1 */ + font-style: italic; + font-weight: bold; +} +span.mpdf_toc_p_level_1 { /* Page no. level 1 - may be inside */ +} +div.mpdf_toc_level_2 { /* Whole line level 2 */ + margin-left: 4em; + text-indent: -2em; + padding-right: 2em; /* should match 2em is default */ +} +span.mpdf_toc_t_level_2 { /* Title level 2 */ +} +span.mpdf_toc_p_level_2 { /* Page no. level 2 - may be inside */ +} + diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css new file mode 100644 index 000000000..4c5ff6cf5 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css @@ -0,0 +1,123 @@ + @page { + size: 15cm 17cm; /* width height {1,2} | auto | portrait | landscape NB 'em' and 'ex' % are not allowed */ + margin: 10%; /* % of page-box width for LR, height for TB */ + margin-header: 5mm; + margin-footer: 5mm; + margin-left: 4cm; + margin-right: 2cm; + odd-header-name: myHeader2Odd; + even-header-name: html_myHTMLHeaderEven; + odd-footer-name: html_myHTMLFooterOdd; + even-footer-name: myFooter2Even; + marks: crop; /* crop | cross | none */ + } + + @page :first { + margin-top: 5cm; /* Top margin on first page 10cm */ + } + + @page standard { + size: auto; /* auto is the default mPDF value */ + margin: 10%; /* % of page-box width for LR, height for TB */ + marks: none; /* crop | cross | none */ + } + + @page standard :first { + margin-top: 7cm; /* Top margin on first page 10cm */ + } + + @page bigsquare { + size: 15cm 20cm; + margin-left: 4cm; + marks: crop cross; /* crop | cross | none */ + background: transparent url('bg.jpg') repeat scroll 5mm 5mm; /* position inset by bleedMargin */ + } + + @page bigsquare :right { + header: html_myHTMLHeaderOdd; + footer: html_myHTMLFooterOdd; + } + + @page bigsquare :left { /* left is what mPDF calls EVEN page - right=ODD */ + header: html_myHTMLHeaderEven; + footer: html_myHTMLFooterEven; + } + + @page smallsquare { + size: 25cm 15cm; + margin-left: 4cm; + marks: crop; /* crop | cross | none */ + background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; + } + + @page rotated { + size: landscape; + marks: none; /* crop | cross | none */ + background-color: #fff0f2; + margin-left: 3cm; + margin-right: 3cm; + } + @page rotated :first { + margin-top: 7cm; /* Top margin on first page 10cm */ + } + + h1.heading1 { color: #1188FF; + } + + h1.heading2 { color: #88FF11; + page-break-before: always; + page: standard; + } + h1.heading3 { color: #FF1188; + page-break-before: right; + } + h1.heading4 { color: #FF8811; + page-break-before: left; + page: bigsquare; + } + h1.heading5 { color: #11FF88; + page: smallsquare; + } + h1.heading6 { color: #8811FF; + page: rotated; + } + + br.paging { page-break-after: always; } + + body { font-family: DejaVuSansCondensed; font-size: 11pt; } + p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } + + hr { width: 70%; height: 1px; + text-align: center; color: #999999; + margin-top: 8pt; margin-bottom: 8pt; } + + a { color: #000066; font-style: normal; text-decoration: underline; + font-weight: normal; } + + ul { text-indent: 5mm; margin-bottom: 9pt; } + ol { text-indent: 5mm; margin-bottom: 9pt; } + + pre { font-family: DejaVuSansMono; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } + + h1 { font-weight: normal; font-size: 26pt; color: #000066; + font-family: DejaVuSansCondensed; margin-top: 18pt; margin-bottom: 6pt; + border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; + text-align: ; page-break-after:avoid; } + h2 { font-weight: bold; font-size: 12pt; color: #000066; + font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: 6pt; + border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; + text-align: ; text-transform: uppercase; page-break-after:avoid; } + h3 { font-weight: normal; font-size: 26pt; color: #000000; + font-family: DejaVuSansCondensed; margin-top: 0pt; margin-bottom: 6pt; + border-top: 0; border-bottom: 0; + text-align: ; page-break-after:avoid; } + h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; + font-family: DejaVuSansCondensed; margin-top: 10pt; margin-bottom: 7pt; + text-align: ; margin-collapse:collapse; page-break-after:avoid; } + h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; + font-family: DejaVuSansCondensed; margin-top: 8pt; margin-bottom: 4pt; + text-align: ; page-break-after:avoid; } + h6 { font-weight: bold; font-size: 9.5pt; color: #333333; + font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: ; + text-align: ; page-break-after:avoid; } + diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css new file mode 100644 index 000000000..b36d69824 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css @@ -0,0 +1,124 @@ + + body { font-family: DejaVuSansCondensed; font-size: 11pt; } + p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } + + table {font-family: DejaVuSansCondensed; font-size: 9pt; line-height: 1.2; + margin-top: 2pt; margin-bottom: 5pt; + border-collapse: collapse; } + + thead { font-weight: bold; vertical-align: bottom; } + tfoot { font-weight: bold; vertical-align: top; } + thead td { font-weight: bold; } + tfoot td { font-weight: bold; } + + thead td, thead th, tfoot td, tfoot th { font-variant: small-caps; } + + .headerrow td, .headerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2; } + .footerrow td, .footerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2; } + + th { font-weight: bold; + vertical-align: top; + text-align:left; + padding-left: 2mm; + padding-right: 2mm; + padding-top: 0.5mm; + padding-bottom: 0.5mm; + } + + td { padding-left: 2mm; + vertical-align: top; + text-align:left; + padding-right: 2mm; + padding-top: 0.5mm; + padding-bottom: 0.5mm; + } + + th p { text-align: left; margin:0pt; } + td p { text-align: left; margin:0pt; } + + table.widecells td { + padding-left: 5mm; + padding-right: 5mm; + } + table.tallcells td { + padding-top: 3mm; + padding-bottom: 3mm; + } + + hr { width: 70%; height: 1px; + text-align: center; color: #999999; + margin-top: 8pt; margin-bottom: 8pt; } + + a { color: #000066; font-style: normal; text-decoration: underline; + font-weight: normal; } + + ul { text-indent: 5mm; margin-bottom: 9pt; } + ol { text-indent: 5mm; margin-bottom: 9pt; } + + pre { font-family: DejaVuSansMono; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } + + h1 { font-weight: normal; font-size: 26pt; color: #000066; + font-family: DejaVuSansCondensed; margin-top: 18pt; margin-bottom: 6pt; + border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; + text-align: ; page-break-after:avoid; } + h2 { font-weight: bold; font-size: 12pt; color: #000066; + font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: 6pt; + border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; + text-align: ; text-transform:uppercase; page-break-after:avoid; } + h3 { font-weight: normal; font-size: 26pt; color: #000000; + font-family: DejaVuSansCondensed; margin-top: 0pt; margin-bottom: 6pt; + border-top: 0; border-bottom: 0; + text-align: ; page-break-after:avoid; } + h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; + font-family: DejaVuSansCondensed; margin-top: 10pt; margin-bottom: 7pt; + font-variant: small-caps; + text-align: ; margin-collapse:collapse; page-break-after:avoid; } + h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; + font-family: DejaVuSansCondensed; margin-top: 8pt; margin-bottom: 4pt; + text-align: ; page-break-after:avoid; } + h6 { font-weight: bold; font-size: 9.5pt; color: #333333; + font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: ; + text-align: ; page-break-after:avoid; } + + .breadcrumb { + text-align: right; font-size: 8pt; font-family: DejaVuSerifCondensed; color: #666666; + font-weight: bold; font-style: normal; margin-bottom: 6pt; } + + .evenrow td, .evenrow th { background-color: #f5f8f5; } + .oddrow td, .oddrow th { background-color: #e3ece4; } + + .bpmTopic { background-color: #e3ece4; } + .bpmTopicC { background-color: #e3ece4; } + .bpmNoLines { background-color: #e3ece4; } + .bpmNoLinesC { background-color: #e3ece4; } + .bpmClear { } + .bpmClearC { text-align: center; } + .bpmTopnTail { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;} + .bpmTopnTailC { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;} + .bpmTopnTailClear { topntail: 0.02cm solid #495b4a; } + .bpmTopnTailClearC { topntail: 0.02cm solid #495b4a; } + + .bpmTopicC td, .bpmTopicC td p { text-align: center; } + .bpmNoLinesC td, .bpmNoLinesC td p { text-align: center; } + .bpmClearC td, .bpmClearC td p { text-align: center; } + .bpmTopnTailC td, .bpmTopnTailC td p { text-align: center; } + .bpmTopnTailClearC td, .bpmTopnTailClearC td p { text-align: center; } + + .pmhMiddleCenter { text-align:center; vertical-align:middle; } + .pmhMiddleRight { text-align:right; vertical-align:middle; } + .pmhBottomCenter { text-align:center; vertical-align:bottom; } + .pmhBottomRight { text-align:right; vertical-align:bottom; } + .pmhTopCenter { text-align:center; vertical-align:top; } + .pmhTopRight { text-align:right; vertical-align:top; } + .pmhTopLeft { text-align:left; vertical-align:top; } + .pmhBottomLeft { text-align:left; vertical-align:bottom; } + .pmhMiddleLeft { text-align:left; vertical-align:middle; } + + .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; } + + .bpmTopic td, .bpmTopic th { border-top: 1px solid #FFFFFF; } + .bpmTopicC td, .bpmTopicC th { border-top: 1px solid #FFFFFF; } + .bpmTopnTail td, .bpmTopnTail th { border-top: 1px solid #FFFFFF; } + .bpmTopnTailC td, .bpmTopnTailC th { border-top: 1px solid #FFFFFF; } + + diff --git a/inc/3rdparty/libraries/mpdf/examples/quran282.jpg b/inc/3rdparty/libraries/mpdf/examples/quran282.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c888872dc7b4d114f85e79b4ac121b5d84060d4f GIT binary patch literal 175840 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

      Gcxgaqk5vmRlMv4nUs3PFbyr%TNwIh{{jq$2 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

      u{*Ne1`xj;VACZ@b zR^X4NV0I?0Z~LDPyT^2q-Bv6Lm?@O^6>Kt^YQcW^NXNvK*1mWzta9& zjelDEzia$2%6AzQKB9x8HOc@KP@W6zAO3k%W7M52VXw{qI%I43m*uo5UUgTLNB`WV zV(NuLbVWJe!x4qK>IQ{@|M2Skw}yGbEv@iT-Vnm)`9B|8AwfZuv#n_VOUEZF%7=32 zpARkUZ=DdI=%2^&A3D?zfq(0G`A|mv=Y4$qf+%ZIX6eab7sFZ{1MLZk*AFqhW zKW*Vd9mW5bP5_nrANKJH@QM6OCnSi9l>cl8AIkUt(uoL){xc5vM1+L@spIG2<^5+J zC|Fei}_)%v*|D9Lpf6xj459Nvc5A}-j{?qsTygYpWvKiHk zf5w3jKd<0F{UXHAC-mQZ;0iajb+Cm0HS%cMdRzYKtK48mM_1ZEz3tBkpaipWr2T7z c`fEIMaW#dz{?)IA`1yr|@fjKA)aCL27h8nl9{>OV literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c23ca314e2ec50320b117a500ecab0058d5d9d0d GIT binary patch literal 64260 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 W?($c=7UJg<6vby`lvR_%|Nj6imczCH literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/show_code.php b/inc/3rdparty/libraries/mpdf/examples/show_code.php new file mode 100644 index 000000000..32bc76251 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/examples/show_code.php @@ -0,0 +1,48 @@ +debug=true; +$mpdf->tabSpaces = 6; + +$mpdf->allow_charset_conversion=true; +$mpdf->charset_in='windows-1252'; + +//============================================================== +preg_match('/example[0]{0,1}(\d+)_(.*?)\.php/',$filename,$m); +$num = intval($m[1]); +$title = ucfirst(preg_replace('/_/',' ',$m[2])); + +if (!$num || !$title) { die("Invalid file"); } +if (preg_match('/\//', $filename) || !preg_match('/\.php$/',$filename)) { die("Hacking attempt"); } + +$html = ' +

      mPDF

      +

      Example '.$num.'. '.$title.'

      +
      +'; +$lines = file($filename); + +$html .= '
      ';
      +foreach($lines AS $line) {
      +	$html .= htmlspecialchars($line);
      +}
      +$html .= '
      '; +$html .= '
      '; + +$mpdf->WriteHTML($html,2); // The 2 is important to prevent '; } // stylesheet only + + if ($this->allow_charset_conversion) { + if ($sub < 1) { + $this->ReadCharset($html); + } + if ($this->charset_in && $sub!=4) { // mPDF 5.4.14 + $success = iconv($this->charset_in,'UTF-8//TRANSLIT',$html); + if ($success) { $html = $success; } + } + } + $html = $this->purify_utf8($html,false); + if ($init) { + $this->blklvl = 0; + $this->lastblocklevelchange = 0; + $this->blk = array(); + $this->initialiseBlock($this->blk[0]); + $this->blk[0]['width'] =& $this->pgwidth; + $this->blk[0]['inner_width'] =& $this->pgwidth; + $this->blk[0]['blockContext'] = $this->blockContext; + } + + $zproperties = array(); + if ($sub < 2) { + $this->ReadMetaTags($html); + + // mPDF 5.6.18 + if (preg_match('/]*href=["\']([^"\'>]*)["\']/i', $html, $m)) { + $this->SetBasePath($m[1]); + } + // NB default stylesheet now in mPDF.css - read on initialising class + $html = $this->cssmgr->ReadCSS($html); + + if ($this->useLang && !$this->usingCoreFont && preg_match('/]*lang=[\'\"](.*?)[\'\"]/ism',$html,$m)) { + $html_lang = $m[1]; + } + + if (preg_match('/]*dir=[\'\"]\s*rtl\s*[\'\"]/ism',$html)) { + $zproperties['DIRECTION'] = 'rtl'; + } + + // allow in-line CSS for body tag to be parsed // Get tag inline CSS + if (preg_match('/]*)>(.*?)<\/body>/ism',$html,$m) || preg_match('/]*)>(.*)$/ism',$html,$m)) { + $html = $m[2]; + // Changed to allow style="background: url('bg.jpg')" + if (preg_match('/style=[\"](.*?)[\"]/ism',$m[1],$mm) || preg_match('/style=[\'](.*?)[\']/ism',$m[1],$mm)) { + $zproperties = $this->cssmgr->readInlineCSS($mm[1]); + } + if (preg_match('/dir=[\'\"]\s*rtl\s*[\'\"]/ism',$m[1])) { + $zproperties['DIRECTION'] = 'rtl'; + } + if (isset($html_lang) && $html_lang) { $zproperties['LANG'] = $html_lang; } + if ($this->useLang && !$this->onlyCoreFonts && preg_match('/lang=[\'\"](.*?)[\'\"]/ism',$m[1],$mm)) { + $zproperties['LANG'] = $mm[1]; + } + + } + } + $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); + if ($zproperties) { $properties = $this->cssmgr->array_merge_recursive_unique($properties,$zproperties); } + + if (isset($properties['DIRECTION']) && $properties['DIRECTION']) { + $this->cssmgr->CSS['BODY']['DIRECTION'] = $properties['DIRECTION']; + } + if (!isset($this->cssmgr->CSS['BODY']['DIRECTION'])) { + $this->cssmgr->CSS['BODY']['DIRECTION'] = $this->directionality; + } + else { $this->SetDirectionality($this->cssmgr->CSS['BODY']['DIRECTION']); } + + $this->setCSS($properties,'','BODY'); + $this->blk[0]['InlineProperties'] = $this->saveInlineProperties(); + + if ($sub == 1) { return ''; } + if (!isset($this->cssmgr->CSS['BODY'])) { $this->cssmgr->CSS['BODY'] = array(); } + +/*-- BACKGROUNDS --*/ + if (isset($properties['BACKGROUND-GRADIENT'])) { + $this->bodyBackgroundGradient = $properties['BACKGROUND-GRADIENT']; + } + + if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE']) { + $ret = $this->SetBackground($properties, $this->pgwidth); + if ($ret) { $this->bodyBackgroundImage = $ret; } + } +/*-- END BACKGROUNDS --*/ + +/*-- CSS-PAGE --*/ + // If page-box is set + if ($this->state==0 && isset($this->cssmgr->CSS['@PAGE']) && $this->cssmgr->CSS['@PAGE'] ) { + $this->page_box['current'] = ''; + $this->page_box['using'] = true; + list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', false, 'O'); + $this->DefOrientation = $this->CurOrientation = $pborientation; + $this->orig_lMargin = $this->DeflMargin = $pbmgl; + $this->orig_rMargin = $this->DefrMargin = $pbmgr; + $this->orig_tMargin = $this->tMargin = $pbmgt; + $this->orig_bMargin = $this->bMargin = $pbmgb; + $this->orig_hMargin = $this->margin_header = $pbmgh; + $this->orig_fMargin = $this->margin_footer = $pbmgf; + list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', true, 'O'); // first page + $this->show_marks = $marks; + if ($hname && !preg_match('/^html_(.*)$/i',$hname)) $this->firstPageBoxHeader = $hname; + if ($fname && !preg_match('/^html_(.*)$/i',$fname)) $this->firstPageBoxFooter = $fname; + } +/*-- END CSS-PAGE --*/ + + $parseonly = false; + $this->bufferoutput = false; + if ($sub == 3) { + $parseonly = true; + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + // Output any text left in buffer + if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); } + $this->textbuffer=array(); + } + else if ($sub == 4) { + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + // Output any text left in buffer + if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); } + $this->bufferoutput = true; + $this->textbuffer=array(); + $this->headerbuffer=''; + $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); + $this->setCSS($properties,'','BODY'); + } + + mb_internal_encoding('UTF-8'); + + $html = $this->AdjustHTML($html, $this->tabSpaces); //Try to make HTML look more like XHTML + + if ($this->autoFontGroups) { $html = $this->AutoFont($html); } + +/*-- HTMLHEADERS-FOOTERS --*/ + preg_match_all('/]*)>(.*?)<\/htmlpageheader>/si',$html,$h); + for($i=0;$ipageHTMLheaders[$n[1]]['html'] = $h[2][$i]; + $this->pageHTMLheaders[$n[1]]['h'] = $this->_gethtmlheight($h[2][$i]); + } + } + preg_match_all('/]*)>(.*?)<\/htmlpagefooter>/si',$html,$f); + for($i=0;$ipageHTMLfooters[$n[1]]['html'] = $f[2][$i]; + $this->pageHTMLfooters[$n[1]]['h'] = $this->_gethtmlheight($f[2][$i]); + } + } +/*-- END HTMLHEADERS-FOOTERS --*/ + $html = preg_replace('//si','',$html); + $html = preg_replace('//si','',$html); + + if($this->state==0 && $sub!=1 && $sub!=3 && $sub!=4) { + $this->AddPage($this->CurOrientation); + } + + +/*-- HTMLHEADERS-FOOTERS --*/ + + if (isset($hname) && preg_match('/^html_(.*)$/i',$hname,$n)) $this->SetHTMLHeader($this->pageHTMLheaders[$n[1]],'O',true); + if (isset($fname) && preg_match('/^html_(.*)$/i',$fname,$n)) $this->SetHTMLFooter($this->pageHTMLfooters[$n[1]],'O'); + +/*-- END HTMLHEADERS-FOOTERS --*/ + + $html=str_replace('checkSIP = false; + $this->checkSMP = false; + $this->checkCJK = false; + if ($this->onlyCoreFonts) { $html = $this->SubstituteChars($html); } + else { + if (preg_match("/([".$this->pregRTLchars."])/u", $html)) { $this->biDirectional = true; } // *RTL* + if (preg_match("/([\x{20000}-\x{2FFFF}])/u", $html)) { $this->checkSIP = true; } + if (preg_match("/([\x{10000}-\x{1FFFF}])/u", $html)) { $this->checkSMP = true; } +/*-- CJK-FONTS --*/ + if (preg_match("/([".$this->pregCJKchars."])/u", $html)) { $this->checkCJK = true; } +/*-- END CJK-FONTS --*/ + } + + // Don't allow non-breaking spaces that are converted to substituted chars or will break anyway and mess up table width calc. + $html = str_replace('160',chr(32),$html); + $html = str_replace('','|',$html); + $html = str_replace('','|',$html); + $html = str_replace('','|',$html); + + //Add new supported tags in the DisableTags function + $html=strip_tags($html,$this->enabledtags); //remove all unsupported tags, but the ones inside the 'enabledtags' string + + //Explode the string in order to parse the HTML code + $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE); + // ? more accurate regexp that allows e.g.
      + // if changing - also change in fn.SubstituteChars() + // $a = preg_split ('/<((?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+)>/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE); + + if ($this->mb_enc) { + mb_internal_encoding($this->mb_enc); + } + $pbc = 0; + if ($this->progressBar) { $this->UpdateProgressBar(1,0); } // *PROGRESS-BAR* + $this->subPos = -1; + $cnt = count($a); + for($i=0;$i<$cnt; $i++) { + $e = $a[$i]; + if($i%2==0) { + //TEXT + if ($this->blk[$this->blklvl]['hide']) { continue; } + if ($this->inlineDisplayOff) { continue; } + if ($this->inMeter) { continue; } // mPDF 5.5.09 + + if ($this->inFixedPosBlock) { $this->fixedPosBlock .= $e; continue; } // *CSS-POSITION* + if (strlen($e) == 0) { continue; } + + $e = strcode2utf($e); + $e = $this->lesser_entity_decode($e); + + if ($this->usingCoreFont) { + // If core font is selected in document which is not onlyCoreFonts - substitute with non-core font + if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->subPos<$i && !$this->specialcontent) { + $cnt += $this->SubstituteCharsNonCore($a, $i, $e); + } + // CONVERT ENCODING + $e = mb_convert_encoding($e,$this->mb_enc,'UTF-8'); + // mPDF 5.6.41 + if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); } + if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); } + if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); } + } + else { + if ($this->checkSIP && $this->CurrentFont['sipext'] && $this->subPos<$i && !$this->specialcontent) { + $cnt += $this->SubstituteCharsSIP($a, $i, $e); + } + + if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->CurrentFont['type']!='Type0' && $this->subPos<$i && !$this->specialcontent) { + // mPDF 5.6.62 removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner + $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e); + $cnt += $this->SubstituteCharsMB($a, $i, $e); + } + if ($this->biDirectional) { // *RTL* + $e = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $e); // *RTL* + } // *RTL* + // Font-specific ligature substitution for Indic fonts + if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($e); // *INDIC* + + // mPDF 5.6.62 removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner + $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e); + + if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); } + if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); } + if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); } + } + if (($this->tts) || ($this->ttz) || ($this->tta)) { + $es = explode('|',$e); + $e = ''; + foreach($es AS $val) { + $e .= chr($val); + } + } + //Adjust lineheight + + // FORM ELEMENTS + if ($this->specialcontent) { +/*-- FORMS --*/ + //SELECT tag (form element) + if ($this->specialcontent == "type=select") { + $e = ltrim($e); + $stringwidth = $this->GetStringWidth($e); + if (!isset($this->selectoption['MAXWIDTH']) || $stringwidth > $this->selectoption['MAXWIDTH']) { $this->selectoption['MAXWIDTH'] = $stringwidth; } + if (!isset($this->selectoption['SELECTED']) || $this->selectoption['SELECTED'] == '') { $this->selectoption['SELECTED'] = $e; } + // mPDD 1.4 Active Forms + if (isset($this->selectoption['ACTIVE']) && $this->selectoption['ACTIVE']) { + $this->selectoption['ITEMS'][]=array('exportValue'=>$this->selectoption['currentVAL'], 'content'=>$e, 'selected'=>$this->selectoption['currentSEL']); + } + } + // TEXTAREA + else { + $objattr = unserialize($this->specialcontent); + $objattr['text'] = $e; + $te = "\xbb\xa4\xactype=textarea,objattr=".serialize($objattr)."\xbb\xa4\xac"; + if ($this->tdbegin) { + $this->_saveCellTextBuffer($te, $this->HREF); + } + else { + $this->_saveTextBuffer($te, $this->HREF); + } + } +/*-- END FORMS --*/ + } + + // TABLE + else if ($this->tableLevel) { +/*-- TABLES --*/ + if ($this->tdbegin) { + if (($this->ignorefollowingspaces) && !$this->ispre) { $e = ltrim($e); } + if ($e || $e==='0') { + if (($this->blockjustfinished || $this->listjustfinished) && $this->cell[$this->row][$this->col]['s']>0) { + $this->_saveCellTextBuffer("\n"); + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0;// reset + } + $this->blockjustfinished=false; + $this->listjustfinished=false; + + $this->_saveCellTextBuffer($e, $this->HREF); + + if (!isset($this->cell[$this->row][$this->col]['R']) || !$this->cell[$this->row][$this->col]['R']) { + if (isset($this->cell[$this->row][$this->col]['s'])) { + $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($e, false); + } + else { $this->cell[$this->row][$this->col]['s'] = $this->GetStringWidth($e, false); } + if (!empty($this->spanborddet)) { + $this->cell[$this->row][$this->col]['s'] += $this->spanborddet['L']['w'] + $this->spanborddet['R']['w']; + } + } + + if ($this->checkCJK && preg_match("/([".$this->pregCJKchars."])/u", $e)) { $this->tableCJK = true; } // *CJK-FONTS* + + // mPDF 5.6.13 Decimal mark alignment + if (substr($this->cell[$this->row][$this->col]['a'],0,1) == 'D') { + $dp = $this->decimal_align[substr($this->cell[$this->row][$this->col]['a'],0,2)]; + $s = preg_split('/'.preg_quote($dp,'/').'/', $e, 2); // ? needs to be /u if not core + $s0 = $this->GetStringWidth($s[0], false); + if ($s[1]) { $s1 = $this->GetStringWidth(($s[1].$dp), false); } + else $s1 = 0; + if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'])) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = $s0; + } + else { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = max($s0, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0']); + } + if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'])) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = $s1; + } + else { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = max($s1, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1']); + } + } + + if ($this->tableLevel==1 && $this->useGraphs) { + $this->graphs[$this->currentGraphId]['data'][$this->row][$this->col] = $e; + } + $this->nestedtablejustfinished = false; + $this->linebreakjustfinished=false; + } + } +/*-- END TABLES --*/ + } + // ALL ELSE + else { + if ($this->ignorefollowingspaces and !$this->ispre) { $e = ltrim($e); } + if ($e || $e==='0') $this->_saveTextBuffer($e, $this->HREF); + } + } + + + else { // TAG ** + + if($e[0]=='/') { +/*-- PROGRESS-BAR --*/ + if ($this->progressBar) { // 10% increments + if (intval($i*10/$cnt) != $pbc) { $pbc = intval($i*10/$cnt); $this->UpdateProgressBar(1,$pbc*10,$tag); } + } +/*-- END PROGRESS-BAR --*/ + + + // Check for tags where HTML specifies optional end tags, + // and/or does not allow nesting e.g. P inside P, or + $endtag = trim(strtoupper(substr($e,1))); // mPDF 5.4.20 + if($this->blk[$this->blklvl]['hide']) { + if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { + unset($this->blk[$this->blklvl]); + $this->blklvl--; + } + continue; + } + +/*-- CSS-POSITION --*/ + if ($this->inFixedPosBlock) { + if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { $this->fixedPosBlockDepth--; } + if ($this->fixedPosBlockDepth == 0) { + $this->fixedPosBlockSave[] = array($this->fixedPosBlock, $this->fixedPosBlockBBox, $this->page); + $this->fixedPosBlock = ''; + $this->inFixedPosBlock = false; + continue; + } + $this->fixedPosBlock .= '<'.$e.'>'; + continue; + } +/*-- END CSS-POSITION --*/ + if ($this->allow_html_optional_endtags && !$parseonly) { + if (($endtag == 'DIV' || $endtag =='FORM' || $endtag =='CENTER') && $this->lastoptionaltag == 'P') { $this->CloseTag($this->lastoptionaltag ); } + if ($this->lastoptionaltag == 'LI' && $endtag == 'OL') { $this->CloseTag($this->lastoptionaltag ); } + if ($this->lastoptionaltag == 'LI' && $endtag == 'UL') { $this->CloseTag($this->lastoptionaltag ); } + if ($this->lastoptionaltag == 'DD' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); } + if ($this->lastoptionaltag == 'DT' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); } + if ($this->lastoptionaltag == 'OPTION' && $endtag == 'SELECT') { $this->CloseTag($this->lastoptionaltag ); } +/*-- TABLES --*/ + if ($endtag == 'TABLE') { + if ($this->lastoptionaltag == 'THEAD' || $this->lastoptionaltag == 'TBODY' || $this->lastoptionaltag == 'TFOOT') { + $this->CloseTag($this->lastoptionaltag); + } + if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); } + if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); } + } + if ($endtag == 'THEAD' || $endtag == 'TBODY' || $endtag == 'TFOOT') { + if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); } + if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); } + } + if ($endtag == 'TR') { + if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); } + } +/*-- END TABLES --*/ + } + $this->CloseTag($endtag); + } + + else { // OPENING TAG + if($this->blk[$this->blklvl]['hide']) { + if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); } + else { $te = strtoupper($e); } + if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { + $this->blklvl++; + $this->blk[$this->blklvl]['hide']=true; + } + continue; + } + +/*-- CSS-POSITION --*/ + if ($this->inFixedPosBlock) { + if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); } + else { $te = strtoupper($e); } + $this->fixedPosBlock .= '<'.$e.'>'; + if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { $this->fixedPosBlockDepth++; } + continue; + } +/*-- END CSS-POSITION --*/ + $regexp = '|=\'(.*?)\'|s'; // eliminate single quotes, if any + $e = preg_replace($regexp,"=\"\$1\"",$e); + // changes anykey=anyvalue to anykey="anyvalue" (only do this inside [some] tags) + if (substr($e,0,10)!='pageheader' && substr($e,0,10)!='pagefooter' && substr($e,0,12)!='tocpagebreak') { // mPDF 5.6.69 + $regexp = '| (\\w+?)=([^\\s>"]+)|si'; + $e = preg_replace($regexp," \$1=\"\$2\"",$e); + } + + $e = preg_replace('/ (\\S+?)\s*=\s*"/i', " \\1=\"", $e); + + //Fix path values, if needed + $orig_srcpath = ''; + if ((stristr($e,"href=") !== false) or (stristr($e,"src=") !== false) ) { + $regexp = '/ (href|src)\s*=\s*"(.*?)"/i'; + preg_match($regexp,$e,$auxiliararray); + if (isset($auxiliararray[2])) { $path = $auxiliararray[2]; } + else { $path = ''; } + if (trim($path) != '' && !(stristr($e,"src=") !== false && substr($path,0,4)=='var:')) { + $orig_srcpath = $path; + $this->GetFullPath($path); + $regexp = '/ (href|src)="(.*?)"/i'; + $e = preg_replace($regexp,' \\1="'.$path.'"',$e); + } + }//END of Fix path values + + + //Extract attributes + $contents=array(); + $contents1=array(); // mPDF 5.5.17 + $contents2=array(); + // Changed to allow style="background: url('bg.jpg')" + // mPDF 5.5.17 Changed to improve performance; maximum length of \S (attribute) = 16 + // mPDF 5.6.30 Increase allowed attribute name to 32 - cutting off "toc-even-header-name" etc. + preg_match_all('/\\S{1,32}=["][^"]*["]/',$e,$contents1); + preg_match_all('/\\S{1,32}=[\'][^\']*[\']/i',$e,$contents2); + + $contents = array_merge($contents1, $contents2); + preg_match('/\\S+/',$e,$a2); + $tag=strtoupper($a2[0]); + $attr=array(); + if ($orig_srcpath) { $attr['ORIG_SRC'] = $orig_srcpath; } + if (!empty($contents)) { + foreach($contents[0] as $v) { + // Changed to allow style="background: url('bg.jpg')" + if(preg_match('/^([^=]*)=["]?([^"]*)["]?$/',$v,$a3) || preg_match('/^([^=]*)=[\']?([^\']*)[\']?$/',$v,$a3)) { + if (strtoupper($a3[1])=='ID' || strtoupper($a3[1])=='CLASS') { // 4.2.013 Omits STYLE + $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2])); + } + // includes header-style-right etc. used for + else if (preg_match('/^(HEADER|FOOTER)-STYLE/i',$a3[1])) { + $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2])); + } + else { + $attr[strtoupper($a3[1])]=trim($a3[2]); + } + } + } + } + $this->OpenTag($tag,$attr); +/*-- CSS-POSITION --*/ + if ($this->inFixedPosBlock) { + $this->fixedPosBlockBBox = array($tag,$attr, $this->x, $this->y); + $this->fixedPosBlock = ''; + $this->fixedPosBlockDepth = 1; + } +/*-- END CSS-POSITION --*/ + // mPDF 5.5.09 + if (preg_match('/\/$/',$e)) { $this->closeTag($tag); } + + } + + } // end TAG + } //end of foreach($a as $i=>$e) + + if ($close) { + + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + + // Output any text left in buffer + if (count($this->textbuffer) && !$parseonly) { $this->printbuffer($this->textbuffer); } + if (!$parseonly) $this->textbuffer=array(); + +/*-- CSS-FLOAT --*/ + // If ended with a float, need to move to end page + $currpos = $this->page*1000 + $this->y; + if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) { + $old_page = $this->page; + $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000); + if ($old_page != $new_page) { + $s = $this->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pageBackgrounds = array(); + $this->page = $new_page; + $this->ResetMargins(); + $this->Reset(); + $this->pageoutput[$this->page] = array(); + } + $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000; // mod changes operands to integers before processing + } +/*-- END CSS-FLOAT --*/ + +/*-- CSS-IMAGE-FLOAT --*/ + $this->printfloatbuffer(); +/*-- END CSS-IMAGE-FLOAT --*/ + + //Create Internal Links, if needed + if (!empty($this->internallink) ) { + foreach($this->internallink as $k=>$v) { + if (strpos($k,"#") !== false ) { continue; } //ignore + $ypos = $v['Y']; + $pagenum = $v['PAGE']; + $sharp = "#"; + while (array_key_exists($sharp.$k,$this->internallink)) { + $internallink = $this->internallink[$sharp.$k]; + $this->SetLink($internallink,$ypos,$pagenum); + $sharp .= "#"; + } + } + } + + $this->linemaxfontsize = ''; + $this->lineheight_correction = $this->default_lineheight_correction; + + $this->bufferoutput = false; + +/*-- CSS-POSITION --*/ + if (count($this->fixedPosBlockSave) && $sub != 4) { + foreach($this->fixedPosBlockSave AS $fpbs) { + $old_page = $this->page; + $this->page = $fpbs[2]; + $this->WriteFixedPosHTML($fpbs[0], 0, 0, 100, 100,'auto', $fpbs[1]); // 0,0,10,10 are overwritten by bbox + $this->page = $old_page; + } + } +/*-- END CSS-POSITION --*/ + + } +} + +/*-- CSS-POSITION --*/ + +function WriteFixedPosHTML($html='',$x, $y, $w, $h, $overflow='visible', $bounding=array()) { + // $overflow can be 'hidden', 'visible' or 'auto' - 'auto' causes autofit to size + // Annotations disabled - enabled in mPDF 5.0 + // Links do work + // Will always go on current page (or start Page 1 if required) + // Probably INCOMPATIBLE WITH keep with table, columns etc. + // Called externally or interally via
      + // When used internally, $x $y $w $h and $overflow are all overridden by $bounding + + $overflow = strtolower($overflow); + if($this->state==0) { + $this->AddPage($this->CurOrientation); + } + $save_y = $this->y; + $save_x = $this->x; + $this->fullImageHeight = $this->h; + $save_cols = false; +/*-- COLUMNS --*/ + if ($this->ColActive) { + $save_cols = true; + $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off + $this->SetColumns(0); + } +/*-- END COLUMNS --*/ + $save_annots = $this->title2annots; // *ANNOTATIONS* + $this->writingHTMLheader = true; // a FIX to stop pagebreaks etc. + $this->writingHTMLfooter = true; + $this->InFooter = true; // suppresses autopagebreaks + $save_bgs = $this->pageBackgrounds; + $checkinnerhtml = preg_replace('/\s/','',$html); + + if ($w > $this->w) { $x = 0; $w = $this->w; } + if ($h > $this->h) { $y = 0; $h = $this->h; } + if ($x > $this->w) { $x = $this->w - $w; } + if ($y > $this->h) { $y = $this->h - $h; } + + if (!empty($bounding)) { + // $cont_ containing block = full physical page (position: absolute) or page inside margins (position: fixed) + // $bbox_ Bounding box is the
      which is positioned absolutely/fixed + // top/left/right/bottom/width/height/background*/border*/padding*/margin* are taken from bounding + // font*[family/size/style/weight]/line-height/text*[align/decoration/transform/indent]/color are transferred to $inner + // as an enclosing
      (after having checked ID/CLASS) + // $x, $y, $w, $h are inside of $bbox_ = containing box for $inner_ + // $inner_ InnerHTML is the contents of that block to be output + $tag = $bounding[0]; + $attr = $bounding[1]; + $orig_x0 = $bounding[2]; + $orig_y0 = $bounding[3]; + + // As in WriteHTML() initialising + $this->blklvl = 0; + $this->lastblocklevelchange = 0; + $this->blk = array(); + $this->initialiseBlock($this->blk[0]); + + $this->blk[0]['width'] =& $this->pgwidth; + $this->blk[0]['inner_width'] =& $this->pgwidth; + + $this->blk[0]['blockContext'] = $this->blockContext; + + $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); + $this->setCSS($properties,'','BODY'); + $this->blklvl = 1; + $this->initialiseBlock($this->blk[1]); + $this->blk[1]['tag'] = $tag; + $this->blk[1]['attr'] = $attr; + $this->Reset(); + $p = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr); + if (isset($p['ROTATE']) && ($p['ROTATE']==90 || $p['ROTATE']==-90)) { $rotate = $p['ROTATE']; } + else { $rotate = 0; } + if (isset($p['OVERFLOW'])) { $overflow = strtolower($p['OVERFLOW']); } + if (strtolower($p['POSITION']) == 'fixed') { + $cont_w = $this->pgwidth; // $this->blk[0]['inner_width']; + $cont_h = $this->h - $this->tMargin - $this->bMargin; + $cont_x = $this->lMargin; + $cont_y = $this->tMargin; + } + else { + $cont_w = $this->w; // ABSOLUTE; + $cont_h = $this->h; + $cont_x = 0; + $cont_y = 0; + } + + // Pass on in-line properties to the innerhtml + $css = ''; + if (isset($p['TEXT-ALIGN'])) { $css .= 'text-align: '.strtolower($p['TEXT-ALIGN']).'; '; } + if (isset($p['TEXT-TRANSFORM'])) { $css .= 'text-transform: '.strtolower($p['TEXT-TRANSFORM']).'; '; } + if (isset($p['TEXT-INDENT'])) { $css .= 'text-indent: '.strtolower($p['TEXT-INDENT']).'; '; } + if (isset($p['TEXT-DECORATION'])) { $css .= 'text-decoration: '.strtolower($p['TEXT-DECORATION']).'; '; } + if (isset($p['FONT-FAMILY'])) { $css .= 'font-family: '.strtolower($p['FONT-FAMILY']).'; '; } + if (isset($p['FONT-STYLE'])) { $css .= 'font-style: '.strtolower($p['FONT-STYLE']).'; '; } + if (isset($p['FONT-WEIGHT'])) { $css .= 'font-weight: '.strtolower($p['FONT-WEIGHT']).'; '; } + if (isset($p['FONT-SIZE'])) { $css .= 'font-size: '.strtolower($p['FONT-SIZE']).'; '; } + if (isset($p['LINE-HEIGHT'])) { $css .= 'line-height: '.strtolower($p['LINE-HEIGHT']).'; '; } + if (isset($p['TEXT-SHADOW'])) { $css .= 'text-shadow: '.strtolower($p['TEXT-SHADOW']).'; '; } + if (isset($p['LETTER-SPACING'])) { $css .= 'letter-spacing: '.strtolower($p['LETTER-SPACING']).'; '; } + if (isset($p['FONT-VARIANT'])) { $css .= 'font-variant: '.strtolower($p['FONT-VARIANT']).'; '; } + if (isset($p['COLOR'])) { $css .= 'color: '.strtolower($p['COLOR']).'; '; } + if (isset($p['Z-INDEX'])) { $css .= 'z-index: '.$p['Z-INDEX'].'; '; } // mPDF 5.6.01 + if ($css) { + $html = '
      '.$html.'
      '; + } + // Copy over (only) the properties to set for border and background + $pb = array(); + $pb['MARGIN-TOP'] = $p['MARGIN-TOP']; + $pb['MARGIN-RIGHT'] = $p['MARGIN-RIGHT']; + $pb['MARGIN-BOTTOM'] = $p['MARGIN-BOTTOM']; + $pb['MARGIN-LEFT'] = $p['MARGIN-LEFT']; + $pb['PADDING-TOP'] = $p['PADDING-TOP']; + $pb['PADDING-RIGHT'] = $p['PADDING-RIGHT']; + $pb['PADDING-BOTTOM'] = $p['PADDING-BOTTOM']; + $pb['PADDING-LEFT'] = $p['PADDING-LEFT']; + $pb['BORDER-TOP'] = $p['BORDER-TOP']; + $pb['BORDER-RIGHT'] = $p['BORDER-RIGHT']; + $pb['BORDER-BOTTOM'] = $p['BORDER-BOTTOM']; + $pb['BORDER-LEFT'] = $p['BORDER-LEFT']; + $pb['BORDER-TOP-LEFT-RADIUS-H'] = $p['BORDER-TOP-LEFT-RADIUS-H']; + $pb['BORDER-TOP-LEFT-RADIUS-V'] = $p['BORDER-TOP-LEFT-RADIUS-V']; + $pb['BORDER-TOP-RIGHT-RADIUS-H'] = $p['BORDER-TOP-RIGHT-RADIUS-H']; + $pb['BORDER-TOP-RIGHT-RADIUS-V'] = $p['BORDER-TOP-RIGHT-RADIUS-V']; + $pb['BORDER-BOTTOM-LEFT-RADIUS-H'] = $p['BORDER-BOTTOM-LEFT-RADIUS-H']; + $pb['BORDER-BOTTOM-LEFT-RADIUS-V'] = $p['BORDER-BOTTOM-LEFT-RADIUS-V']; + $pb['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-H']; + $pb['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-V']; + if (isset($p['BACKGROUND-COLOR'])) { $pb['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; } + if (isset($p['BOX-SHADOW'])) { $pb['BOX-SHADOW'] = $p['BOX-SHADOW']; } +/*-- BACKGROUNDS --*/ + if (isset($p['BACKGROUND-IMAGE'])) { $pb['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; } + if (isset($p['BACKGROUND-IMAGE-RESIZE'])) { $pb['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; } + if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $pb['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; } + if (isset($p['BACKGROUND-REPEAT'])) { $pb['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; } + if (isset($p['BACKGROUND-POSITION'])) { $pb['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; } + if (isset($p['BACKGROUND-GRADIENT'])) { $pb['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; } + if (isset($p['BACKGROUND-SIZE'])) { $pb['BACKGROUND-SIZE'] = $p['BACKGROUND-SIZE']; } // mPDF 5.6.12 + if (isset($p['BACKGROUND-ORIGIN'])) { $pb['BACKGROUND-ORIGIN'] = $p['BACKGROUND-ORIGIN']; } // mPDF 5.6.12 + if (isset($p['BACKGROUND-CLIP'])) { $pb['BACKGROUND-CLIP'] = $p['BACKGROUND-CLIP']; } // mPDF 5.6.12 + +/*-- END BACKGROUNDS --*/ + + $this->setCSS($pb,'BLOCK',$tag); + + //================================================================ + $bbox_br = $this->blk[1]['border_right']['w']; + $bbox_bl = $this->blk[1]['border_left']['w']; + $bbox_bt = $this->blk[1]['border_top']['w']; + $bbox_bb = $this->blk[1]['border_bottom']['w']; + $bbox_pr = $this->blk[1]['padding_right']; + $bbox_pl = $this->blk[1]['padding_left']; + $bbox_pt = $this->blk[1]['padding_top']; + $bbox_pb = $this->blk[1]['padding_bottom']; + $bbox_mr = $this->blk[1]['margin_right']; + if (strtolower($p['MARGIN-RIGHT'])=='auto') { $bbox_mr = 'auto'; } + $bbox_ml = $this->blk[1]['margin_left']; + if (strtolower($p['MARGIN-LEFT'])=='auto') { $bbox_ml = 'auto'; } + $bbox_mt = $this->blk[1]['margin_top']; + if (strtolower($p['MARGIN-TOP'])=='auto') { $bbox_mt = 'auto'; } + $bbox_mb = $this->blk[1]['margin_bottom']; + if (strtolower($p['MARGIN-BOTTOM'])=='auto') { $bbox_mb = 'auto'; } + if (isset($p['LEFT']) && strtolower($p['LEFT'])!='auto') { $bbox_left = $this->ConvertSize($p['LEFT'], $cont_w, $this->FontSize,false); } + else { $bbox_left = 'auto'; } + if (isset($p['TOP']) && strtolower($p['TOP'])!='auto') { $bbox_top = $this->ConvertSize($p['TOP'], $cont_h, $this->FontSize,false); } + else { $bbox_top = 'auto'; } + if (isset($p['RIGHT']) && strtolower($p['RIGHT'])!='auto') { $bbox_right = $this->ConvertSize($p['RIGHT'], $cont_w, $this->FontSize,false); } + else { $bbox_right = 'auto'; } + if (isset($p['BOTTOM']) && strtolower($p['BOTTOM'])!='auto') { $bbox_bottom = $this->ConvertSize($p['BOTTOM'], $cont_h, $this->FontSize,false); } + else { $bbox_bottom = 'auto'; } + if (isset($p['WIDTH']) && strtolower($p['WIDTH'])!='auto') { $inner_w = $this->ConvertSize($p['WIDTH'], $cont_w, $this->FontSize,false); } + else { $inner_w = 'auto'; } + if (isset($p['HEIGHT']) && strtolower($p['HEIGHT'])!='auto') { $inner_h = $this->ConvertSize($p['HEIGHT'], $cont_h, $this->FontSize,false); } + else { $inner_h = 'auto'; } + + // If bottom or right pos are set and not left / top - save this to adjust rotated block later + if ($rotate) { + if ($bbox_left === 'auto' && $bbox_right !== 'auto') { $rot_rpos = $bbox_right; } + else { $rot_rpos = false; } + if ($bbox_top === 'auto' && $bbox_bottom !== 'auto') { $rot_bpos = $bbox_bottom; } + else { $rot_bpos = false; } + } + + //================================================================ + if ($checkinnerhtml=='' && $inner_h==='auto') { $inner_h = 0.0001; } + if ($checkinnerhtml=='' && $inner_w==='auto') { $inner_w = 2*$this->GetCharWidth('W',false); } + //================================================================ + // Algorithm from CSS2.1 See http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height + // mPD 5.3.14 + // Special case (not CSS) if all not specified, centre vertically on page + if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto' && $bbox_mt==='auto' && $bbox_mb==='auto') { + $bbox_top_orig = $bbox_top; + if ($bbox_mt==='auto') { $bbox_mt = 0; } + if ($bbox_mb==='auto') { $bbox_mb = 0; } + $bbox_top = $orig_y0 - $bbox_mt - $cont_y; + // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto' + } + // mPD 5.3.14 + else if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto') { + $bbox_top_orig = $bbox_top = $orig_y0 - $cont_y; + if ($bbox_mt==='auto') { $bbox_mt = 0; } + if ($bbox_mb==='auto') { $bbox_mb = 0; } + // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto' + } + else if ($bbox_top!=='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') { + if ($bbox_mt==='auto' && $bbox_mb==='auto') { + $x = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom; + $bbox_mt = $bbox_mb = ($x/2); + } + else if ($bbox_mt==='auto') { + $bbox_mt = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + } + else if ($bbox_mb==='auto') { + $bbox_mb = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom; + } + else { + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt; + } + } + else { + if ($bbox_mt==='auto') { $bbox_mt = 0; } + if ($bbox_mb==='auto') { $bbox_mb = 0; } + if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom!=='auto') { + // solve for $bbox_top when content_h known - $inner_h=='auto' && $bbox_top =='auto' + } + else if ($bbox_top==='auto' && $bbox_bottom==='auto' && $inner_h!=='auto') { + $bbox_top = $orig_y0 - $bbox_mt - $cont_y; + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt; + } + else if ($inner_h==='auto' && $bbox_bottom==='auto' && $bbox_top!=='auto') { + // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto' + } + else if ($bbox_top==='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') { + $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom; + } + else if ($inner_h==='auto' && $bbox_top!=='auto' && $bbox_bottom!=='auto') { + $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom; + } + else if ($bbox_bottom==='auto' && $bbox_top!=='auto' && $inner_h!=='auto') { + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt; + } + } + + // THEN DO SAME FOR WIDTH + // http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width + if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right==='auto') { + if ($bbox_ml==='auto') { $bbox_ml = 0; } + if ($bbox_mr==='auto') { $bbox_mr = 0; } + // IF containing element RTL, should set $bbox_right + $bbox_left = $orig_x0 - $bbox_ml - $cont_x; + // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto' + } + else if ($bbox_left!=='auto' && $inner_w!=='auto' && $bbox_right!=='auto') { + if ($bbox_ml==='auto' && $bbox_mr==='auto') { + $x = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right; + $bbox_ml = $bbox_mr = ($x/2); + } + else if ($bbox_ml==='auto') { + $bbox_ml = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right; + } + else if ($bbox_mr==='auto') { + $bbox_mr = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right; + } + else { + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } + } + else { + if ($bbox_ml==='auto') { $bbox_ml = 0; } + if ($bbox_mr==='auto') { $bbox_mr = 0; } + if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right!=='auto') { + // solve for $bbox_left when content_w known - $inner_w=='auto' && $bbox_left =='auto' + } + else if ($bbox_left==='auto' && $bbox_right==='auto' && $inner_w!=='auto') { + // IF containing element RTL, should set $bbox_right + $bbox_left = $orig_x0 - $bbox_ml - $cont_x; + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } + else if ($inner_w==='auto' && $bbox_right==='auto' && $bbox_left!=='auto') { + // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto' + } + else if ($bbox_left==='auto' && $inner_w!=='auto' && $bbox_right!=='auto') { + $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right; + } + else if ($inner_w==='auto' && $bbox_left!=='auto' && $bbox_right!=='auto') { + $inner_w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right; + } + else if ($bbox_right==='auto' && $bbox_left!=='auto' && $inner_w!=='auto') { + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } + } + + //================================================================ + //================================================================ +/*-- BACKGROUNDS --*/ + if (isset($pb['BACKGROUND-IMAGE']) && $pb['BACKGROUND-IMAGE']) { + $ret = $this->SetBackground($pb, $this->blk[1]['inner_width']); + if ($ret) { $this->blk[1]['background-image'] = $ret; } + } +/*-- END BACKGROUNDS --*/ + + //================================================================ + $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt; + $h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl; + $w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right; + // Set (temporary) values for x y w h to do first paint, if values are auto + if ($inner_h==='auto' && $bbox_top==='auto') { + $y = $cont_y + $bbox_mt + $bbox_bt + $bbox_pt; + $h = $cont_h - ($bbox_bottom + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb); + } + else if ($inner_h==='auto' && $bbox_bottom==='auto') { + $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt; + $h = $cont_h - ($bbox_top + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb); + } + if ($inner_w==='auto' && $bbox_left==='auto') { + $x = $cont_x + $bbox_ml + $bbox_bl + $bbox_pl; + $w = $cont_w - ($bbox_right + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr); + } + else if ($inner_w==='auto' && $bbox_right==='auto') { + $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl; + $w = $cont_w - ($bbox_left + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr); + } + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $bbox_x = $cont_x + $bbox_left + $bbox_ml; + $saved_block1 = $this->blk[1]; + unset($p); + unset($pb); + //================================================================ + if ($inner_w==='auto') { // do a first write + $this->lMargin=$x; + $this->rMargin=$this->w - $w - $x; + // SET POSITION & FONT VALUES + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->pageoutput[$this->page]=array(); + $this->x = $x; + $this->y = $y; + $this->HTMLheaderPageLinks = array(); + $this->HTMLheaderPageAnnots = array(); + $this->HTMLheaderPageForms = array(); + $this->pageBackgrounds = array(); + $this->maxPosR = 0; + $this->maxPosL = $this->w; // For RTL + $this->WriteHTML($html , 4); + $inner_w = $this->maxPosR - $this->lMargin; + if ($bbox_right==='auto') { + $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml; + } + else if ($bbox_left==='auto') { + $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right; + $bbox_x = $cont_x + $bbox_left + $bbox_ml ; + $inner_x = $bbox_x + $bbox_bl + $bbox_pl; + $x = $inner_x; + } + $w = $inner_w; + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $bbox_x = $cont_x + $bbox_left + $bbox_ml; + } + + if ($inner_h==='auto') { // do a first write + $this->lMargin=$x; + $this->rMargin=$this->w - $w - $x; + // SET POSITION & FONT VALUES + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->pageoutput[$this->page]=array(); + $this->x = $x; + $this->y = $y; + $this->HTMLheaderPageLinks = array(); + $this->HTMLheaderPageAnnots = array(); + $this->HTMLheaderPageForms = array(); + $this->pageBackgrounds = array(); + $this->WriteHTML($html , 4); + $inner_h = $this->y - $y; + if ($overflow!='hidden' && $overflow!='visible') { // constrained + if (($this->y + $bbox_pb + $bbox_bb) > ($cont_y + $cont_h)) { + $adj = ($this->y + $bbox_pb + $bbox_bb) - ($cont_y + $cont_h); + $inner_h -= $adj; + } + } + if ($bbox_bottom==='auto' && $bbox_top_orig==='auto') { + $bbox_bottom = $bbox_top = ($cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb)/2; + if ($overflow!='hidden' && $overflow!='visible') { // constrained + if ($bbox_top < 0) { + $bbox_top = 0; + $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + } + } + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $inner_y = $bbox_y + $bbox_bt + $bbox_pt; + $y = $inner_y; + + } + else if ($bbox_bottom==='auto') { + $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb; + } + else if ($bbox_top==='auto') { + $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + if ($overflow!='hidden' && $overflow!='visible') { // constrained + if ($bbox_top < 0) { + $bbox_top = 0; + $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom; + } + } + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $inner_y = $bbox_y + $bbox_bt + $bbox_pt; + $y = $inner_y; + } + $h = $inner_h; + $bbox_y = $cont_y + $bbox_top + $bbox_mt; + $bbox_x = $cont_x + $bbox_left + $bbox_ml; + } + $inner_w = $w; + $inner_h = $h; + + } + $this->lMargin=$x; + $this->rMargin=$this->w - $w - $x; + // SET POSITION & FONT VALUES + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->pageoutput[$this->page]=array(); + $this->x = $x; + $this->y = $y; + $this->HTMLheaderPageLinks = array(); + $this->HTMLheaderPageAnnots = array(); + $this->HTMLheaderPageForms = array(); + $this->pageBackgrounds = array(); + $this->WriteHTML($html , 4); // parameter 4 saves output to $this->headerbuffer + $actual_h = $this->y - $y; + $use_w = $w; + $use_h = $h; + $ratio = $actual_h / $use_w; + + if ($overflow!='hidden' && $overflow!='visible') { + $target = $h/$w; + if (($ratio / $target ) > 1) { + $nl = CEIL($actual_h / $this->lineheight); + $l = $use_w * $nl; + $est_w = sqrt(($l * $this->lineheight) / $target) * 0.8; + $use_w += ($est_w - $use_w) - ($w/100); + } + $bpcstart = ($ratio / $target); + $bpcctr = 1; + while(($ratio / $target ) > 1) { + + if ($this->progressBar) { $this->UpdateProgressBar(4,intval(100/($ratio/$target)),('Auto-sizing fixed-position block: '.$bpcctr++)); } // *PROGRESS-BAR* + + $this->x = $x; + $this->y = $y; + + if (($ratio / $target) > 1.5 || ($ratio / $target) < 0.6) { + $use_w += ($w/$this->incrementFPR1); + } + else if (($ratio / $target) > 1.2 || ($ratio / $target) < 0.85) { + $use_w += ($w/$this->incrementFPR2); + } + else if (($ratio / $target) > 1.1 || ($ratio / $target) < 0.91) { + $use_w += ($w/$this->incrementFPR3); + } + else { + $use_w += ($w/$this->incrementFPR4); + } + + $use_h = $use_w * $target ; + $this->rMargin=$this->w - $use_w - $x; + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->HTMLheaderPageLinks = array(); + $this->HTMLheaderPageAnnots = array(); + $this->HTMLheaderPageForms = array(); + $this->pageBackgrounds = array(); + $this->WriteHTML($html , 4); // parameter 4 saves output to $this->headerbuffer + $actual_h = $this->y - $y; + $ratio = $actual_h / $use_w; + } + if ($this->progressBar) { $this->UpdateProgressBar(4,'100',' '); } // *PROGRESS-BAR* + } + $shrink_f = $w/$use_w; + + //================================================================ + + $this->pages[$this->page] .= '___BEFORE_BORDERS___'; + $block_s = $this->PrintPageBackgrounds(); // Save to print later inside clipping path + $this->pageBackgrounds = array(); + + //================================================================ + + if ($rotate) { + $prerotw = $bbox_bl + $bbox_pl + $inner_w + $bbox_pr + $bbox_br; + $preroth = $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb; + $rot_start = " q\n"; + if ($rotate == 90) { + if ($rot_rpos !== false) { $adjw = $prerotw; } // width before rotation + else { $adjw = $preroth; } // height before rotation + if ($rot_bpos !== false) { $adjh = -$prerotw + $preroth; } + else { $adjh = 0; } + } + else { + if ($rot_rpos !== false) { $adjw = $prerotw - $preroth; } + else { $adjw = 0; } + if ($rot_bpos !== false) { $adjh = $preroth; } // height before rotation + else { $adjh = $prerotw; } // width before rotation + } + $rot_start .= $this->transformTranslate($adjw, $adjh, true)."\n"; + $rot_start .= $this->transformRotate($rotate, $bbox_x, $bbox_y, true)."\n"; + $rot_end = " Q\n"; + } + else { + $rot_start = ''; + $rot_end = ''; + } + + //================================================================ + if (!empty($bounding)) { + // WHEN HEIGHT // BOTTOM EDGE IS KNOWN and $this->y is set to the bottom + // Re-instate saved $this->blk[1] + $this->blk[1] = $saved_block1; + + // These are only needed when painting border/background + $this->blk[1]['width'] = $bbox_w = $cont_w - $bbox_left - $bbox_ml - $bbox_mr - $bbox_right; + $this->blk[1]['x0'] = $bbox_x; + $this->blk[1]['y0'] = $bbox_y; + $this->blk[1]['startpage'] = $this->page; + $this->blk[1]['y1'] = $bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ; + $this->_out($rot_start); // mPDF 5.0 + $this->PaintDivBB('',0,1); // Prints borders and sets backgrounds in $this->pageBackgrounds + $this->_out($rot_end); + } + + $s = $this->PrintPageBackgrounds(); + $s = $rot_start.$s.$rot_end; + $this->pages[$this->page] = preg_replace('/___BEFORE_BORDERS___/', "\n".$s."\n", $this->pages[$this->page]); + $this->pageBackgrounds = array(); + + $this->_out($rot_start); + + // Clipping Output + if ($overflow=='hidden') { + //Bounding rectangle to clip + $clip_y1 = $this->y; + if (!empty($bounding) && ($this->y + $bbox_pb + $bbox_bb) > ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb )) { + $clip_y1 = ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ) - ($bbox_pb + $bbox_bb); + } + //$op = 'W* n'; // Clipping + $op = 'W n'; // Clipping alternative mode + $this->_out("q"); + $ch = $clip_y1 - $y; + $this->_out(sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op)); + if (!empty($block_s)) { + $tmp = "q\n".sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op); + $tmp .= "\n".$block_s."\nQ"; + $block_s = $tmp ; + } + } + + + if (!empty($block_s)) { + if ($shrink_f != 1) { // i.e. autofit has resized the box + $tmp = "q\n".$this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y, true); + $tmp .= "\n".$block_s."\nQ"; + $block_s = $tmp ; + } + $this->_out($block_s); + } + + + + if ($shrink_f != 1) { // i.e. autofit has resized the box + $this->StartTransform(); + $this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y); + } + + $this->_out($this->headerbuffer); + + if ($shrink_f != 1) { // i.e. autofit has resized the box + $this->StopTransform(); + } + + if ($overflow=='hidden') { + //End clipping + $this->_out("Q"); + } + + $this->_out($rot_end); + + + // Page Links + foreach($this->HTMLheaderPageLinks AS $lk) { + if ($rotate) { + $tmp = $lk[2]; // Switch h - w + $lk[2] = $lk[3]; + $lk[3] = $tmp; + + $lx1 = (($lk[0]/_MPDFK)); + $ly1 = (($this->h-($lk[1]/_MPDFK))); + if ($rotate == 90) { + $adjx = -($lx1-$bbox_x) + ($preroth - ($ly1-$bbox_y)); + $adjy = -($ly1-$bbox_y) + ($lx1-$bbox_x); + $lk[2] = -$lk[2]; + } + else if ($rotate == -90) { + $adjx = -($lx1-$bbox_x) + ($ly1-$bbox_y); + $adjy = -($ly1-$bbox_y) - ($lx1-$bbox_x) + $prerotw; + $lk[3] = -$lk[3]; + } + if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; } + if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; } + $lx1 += $adjx; + $ly1 += $adjy; + + $lk[0] = $lx1*_MPDFK; + $lk[1] = ($this->h-$ly1)*_MPDFK; + } + if ($shrink_f != 1) { // i.e. autofit has resized the box + $lx1 = (($lk[0]/_MPDFK)-$x); + $lx2 = $x + ($lx1 * $shrink_f); + $lk[0] = $lx2*_MPDFK; + $ly1 = (($this->h-($lk[1]/_MPDFK))-$y); + $ly2 = $y + ($ly1 * $shrink_f); + $lk[1] = ($this->h-$ly2)*_MPDFK; + $lk[2] *= $shrink_f; // width + $lk[3] *= $shrink_f; // height + } + $this->PageLinks[$this->page][]=$lk; + } + + foreach($this->HTMLheaderPageForms AS $n=>$f) { + if ($shrink_f != 1) { // i.e. autofit has resized the box + $f['x'] = $x + (($f['x'] -$x) * $shrink_f); + $f['y'] = $y + (($f['y'] -$y) * $shrink_f); + $f['w'] *= $shrink_f; + $f['h'] *= $shrink_f; + $f['style']['fontsize'] *= $shrink_f; + } + $this->form->forms[$f['n']] = $f; + } + // Page Annotations + foreach($this->HTMLheaderPageAnnots AS $lk) { + if ($rotate) { + if ($rotate == 90) { + $adjx = -($lk['x']-$bbox_x) + ($preroth - ($lk['y']-$bbox_y)); + $adjy = -($lk['y']-$bbox_y) + ($lk['x']-$bbox_x); + } + else if ($rotate == -90) { + $adjx = -($lk['x']-$bbox_x) + ($lk['y']-$bbox_y); + $adjy = -($lk['y']-$bbox_y) - ($lk['x']-$bbox_x) + $prerotw; + } + if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; } + if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; } + $lk['x'] += $adjx; + $lk['y'] += $adjy; + } + if ($shrink_f != 1) { // i.e. autofit has resized the box + $lk['x'] = $x + (($lk['x']-$x) * $shrink_f); + $lk['y'] = $y + (($lk['y']-$y) * $shrink_f); + } + $this->PageAnnots[$this->page][]=$lk; + } + + // Restore + $this->headerbuffer = ''; + $this->HTMLheaderPageLinks = array(); + $this->HTMLheaderPageAnnots = array(); + $this->HTMLheaderPageForms = array(); + $this->pageBackgrounds = $save_bgs; + $this->writingHTMLheader = false; + + $this->writingHTMLfooter = false; + $this->fullImageHeight = false; + $this->ResetMargins(); + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->SetXY($save_x,$save_y) ; + $this->title2annots = $save_annots; // *ANNOTATIONS* + $this->InFooter = false; // turns back on autopagebreaks + $this->pageoutput[$this->page]=array(); + $this->pageoutput[$this->page]['Font']=''; +/*-- COLUMNS --*/ + if ($save_cols) { + $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap); + } +/*-- END COLUMNS --*/ +} +/*-- END CSS-POSITION --*/ + + + +function initialiseBlock(&$blk) { + $blk['margin_top'] = 0; + $blk['margin_left'] = 0; + $blk['margin_bottom'] = 0; + $blk['margin_right'] = 0; + $blk['padding_top'] = 0; + $blk['padding_left'] = 0; + $blk['padding_bottom'] = 0; + $blk['padding_right'] = 0; + $blk['border_top']['w'] = 0; + $blk['border_left']['w'] = 0; + $blk['border_bottom']['w'] = 0; + $blk['border_right']['w'] = 0; + $blk['hide'] = false; + $blk['outer_left_margin'] = 0; + $blk['outer_right_margin'] = 0; + $blk['cascadeCSS'] = array(); + $blk['block-align'] = false; + $blk['bgcolor'] = false; + $blk['page_break_after_avoid'] = false; + $blk['keep_block_together'] = false; + $blk['float'] = false; + $blk['line_height'] = ''; + $blk['margin_collapse'] = false; +} + + +function border_details($bd) { + $prop = preg_split('/\s+/',trim($bd)); + + if (isset($this->blk[$this->blklvl]['inner_width'])) { $refw = $this->blk[$this->blklvl]['inner_width']; } + else if (isset($this->blk[$this->blklvl-1]['inner_width'])) { $refw = $this->blk[$this->blklvl-1]['inner_width']; } + else { $refw = $this->w; } + if ( count($prop) == 1 ) { + $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false); + if ($bsize > 0) { + return array('s' => 1, 'w' => $bsize, 'c' => $this->ConvertColor(0), 'style'=>'solid'); + } + else { return array('w' => 0, 's' => 0); } + } + + else if (count($prop) == 2 ) { + // 1px solid + if (in_array($prop[1],$this->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden' ) { $prop[2] = ''; } + // solid #000000 + else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $prop[0] = ''; $prop[1] = $prop[0]; $prop[2] = $prop[1]; } + // 1px #000000 + else { $prop[1] = ''; $prop[2] = $prop[1]; } + } + else if ( count($prop) == 3 ) { + // Change #000000 1px solid to 1px solid #000000 (proper) + if (substr($prop[0],0,1) == '#') { $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $prop[2]; $prop[2] = $tmp; } + // Change solid #000000 1px to 1px solid #000000 (proper) + else if (substr($prop[0],1,1) == '#') { $tmp = $prop[1]; $prop[0] = $prop[2]; $prop[1] = $prop[0]; $prop[2] = $tmp; } + // Change solid 1px #000000 to 1px solid #000000 (proper) + else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { + $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $tmp; + } + } + else { return array(); } + // Size + $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false); + //color + $coul = $this->ConvertColor($prop[2]); // returns array + // Style + $prop[1] = strtolower($prop[1]); + if (in_array($prop[1],$this->borderstyles) && $bsize > 0) { $on = 1; } + else if ($prop[1] == 'hidden') { $on = 1; $bsize = 0; $coul = ''; } + else if ($prop[1] == 'none') { $on = 0; $bsize = 0; $coul = ''; } + else { $on = 0; $bsize = 0; $coul = ''; $prop[1] = ''; } + return array('s' => $on, 'w' => $bsize, 'c' => $coul, 'style'=> $prop[1] ); +} + + + +/*-- END HTML-CSS --*/ + + +// Return either a number (factor) - based on current set fontsize (if % or em) - or exact lineheight (with 'mm' after it) +function fixLineheight($v) { + $lh = false; + if (preg_match('/^[0-9\.,]*$/',$v) && $v >= 0) { return ($v + 0); } + else if (strtoupper($v) == 'NORMAL') { + return $this->normalLineheight; + } + else { + $tlh = $this->ConvertSize($v,$this->FontSize,$this->FontSize,true); + if ($tlh) { return ($tlh.'mm'); } + } + return $this->normalLineheight; +} + + +/*-- BORDER-RADIUS --*/ +function _borderPadding($a, $b, &$px, &$py) { + // $px and py are padding long axis (x) and short axis (y) + $added = 0; // extra padding + + $x = $a-$px; + $y = $b-$py; + // Check if Falls within ellipse of border radius + if ( ( (($x+$added)*($x+$added))/($a*$a) + (($y+$added)*($y+$added))/($b*$b) ) <=1 ) { return false; } + + $t = atan2($y,$x); + + $newx = $b / sqrt((($b*$b)/($a*$a)) + ( tan($t) * tan($t) ) ); + $newy = $a / sqrt((($a*$a)/($b*$b)) + ( (1/tan($t)) * (1/tan($t)) ) ); + $px = max($px, $a - $newx + $added); + $py = max($py, $b - $newy + $added); +} +/*-- END BORDER-RADIUS --*/ + + + +/*-- HTML-CSS --*/ + + +/*-- CSS-PAGE --*/ +function SetPagedMediaCSS($name='', $first, $oddEven) { + if ($oddEven == 'E') { + if ($this->directionality=='rtl') { $side = 'R'; } + else { $side = 'L'; } + } + else { + if ($this->directionality=='rtl') { $side = 'L'; } + else { $side = 'R'; } + } + $name = strtoupper($name); + $p = array(); + $p['SIZE'] = 'AUTO'; + + // Uses mPDF original margins as default + $p['MARGIN-RIGHT'] = strval($this->orig_rMargin).'mm'; + $p['MARGIN-LEFT'] = strval($this->orig_lMargin).'mm'; + $p['MARGIN-TOP'] = strval($this->orig_tMargin).'mm'; + $p['MARGIN-BOTTOM'] = strval($this->orig_bMargin).'mm'; + $p['MARGIN-HEADER'] = strval($this->orig_hMargin).'mm'; + $p['MARGIN-FOOTER'] = strval($this->orig_fMargin).'mm'; + + // Basic page + selector + if (isset($this->cssmgr->CSS['@PAGE'])) { $zp = $this->cssmgr->CSS['@PAGE']; } + else { $zp = array(); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + + if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') { + $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']); + } + if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') { + $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']); + } + if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') { + $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']); + } + if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') { + $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']); + } + + // If right/Odd page + if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT']) && $side=='R') { + $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT']; + } + else { $zp = array(); } + if (isset($zp['SIZE'])) { unset($zp['SIZE']); } + if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } + if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + + // If left/Even page + if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT']) && $side=='L') { + $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT']; + } + else { $zp = array(); } + if (isset($zp['SIZE'])) { unset($zp['SIZE']); } + if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } + if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + + // If first page + if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']; } + else { $zp = array(); } + if (isset($zp['SIZE'])) { unset($zp['SIZE']); } + if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + + // If named page + if ($name) { + if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name])) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name]; } + else { $zp = array(); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + + if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') { + $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']); + } + if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') { + $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']); + } + if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') { + $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']); + } + if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') { + $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']); + } + + // If named right/Odd page + if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']) && $side=='R') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']; } + else { $zp = array(); } + if (isset($zp['SIZE'])) { unset($zp['SIZE']); } + if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } + if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + + // If named left/Even page + if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']) && $side=='L') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']; } + else { $zp = array(); } + if (isset($zp['SIZE'])) { unset($zp['SIZE']); } + if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } + // Disallow margin-left or -right on :LEFT or :RIGHT + if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } + if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + + // If named first page + if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']; } + else { $zp = array(); } + if (isset($zp['SIZE'])) { unset($zp['SIZE']); } + if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } + if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); } + } + + $orientation = $mgl = $mgr = $mgt = $mgb = $mgh = $mgf = ''; + $header = $footer = ''; + $resetpagenum = $pagenumstyle = $suppress = ''; + $marks = ''; + $bg = array(); + + $newformat = ''; + + + if (isset($p['SHEET-SIZE']) && is_array($p['SHEET-SIZE'])) { + $newformat = $p['SHEET-SIZE']; + if ($newformat[0] > $newformat[1]) { // landscape + $newformat = array_reverse($newformat); + $p['ORIENTATION'] = 'L'; + } + else { $p['ORIENTATION'] = 'P'; } + $this->_setPageSize($newformat, $p['ORIENTATION']); + } + + if (isset($p['SIZE']) && is_array($p['SIZE']) && !$newformat) { + if ($p['SIZE']['W'] > $p['SIZE']['H']) { $p['ORIENTATION'] = 'L'; } + else { $p['ORIENTATION'] = 'P'; } + } + if (is_array($p['SIZE'])) { + if ($p['SIZE']['W'] > $this->fw) { $p['SIZE']['W'] = $this->fw; } // mPD 4.2 use fw not fPt + if ($p['SIZE']['H'] > $this->fh) { $p['SIZE']['H'] = $this->fh; } + if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) { + $outer_width_LR = ($this->fw - $p['SIZE']['W'])/2; + $outer_width_TB = ($this->fh - $p['SIZE']['H'])/2; + } + else { + $outer_width_LR = ($this->fh - $p['SIZE']['W'])/2; + $outer_width_TB = ($this->fw - $p['SIZE']['H'])/2; + } + $pgw = $p['SIZE']['W']; + $pgh = $p['SIZE']['H']; + } + else { // AUTO LANDSCAPE PORTRAIT + $outer_width_LR = 0; + $outer_width_TB = 0; + if (!$newformat) { + if (strtoupper($p['SIZE']) == 'AUTO') { $p['ORIENTATION']=$this->DefOrientation; } + else if (strtoupper($p['SIZE']) == 'LANDSCAPE') { $p['ORIENTATION']='L'; } + else { $p['ORIENTATION']='P'; } + } + if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) { + $pgw = $this->fw; + $pgh = $this->fh; + } + else { + $pgw = $this->fh; + $pgh = $this->fw; + } + } + + if (isset($p['HEADER']) && $p['HEADER']) { $header = $p['HEADER']; } + if (isset($p['FOOTER']) && $p['FOOTER']) { $footer = $p['FOOTER']; } + if (isset($p['RESETPAGENUM']) && $p['RESETPAGENUM']) { $resetpagenum = $p['RESETPAGENUM']; } + if (isset($p['PAGENUMSTYLE']) && $p['PAGENUMSTYLE']) { $pagenumstyle = $p['PAGENUMSTYLE']; } + if (isset($p['SUPPRESS']) && $p['SUPPRESS']) { $suppress = $p['SUPPRESS']; } + + if (preg_match('/cross/i', $p['MARKS']) && preg_match('/crop/i', $p['MARKS'])) { $marks = 'CROPCROSS'; } + else if (strtoupper($p['MARKS']) == 'CROP') { $marks = 'CROP'; } + else if (strtoupper($p['MARKS']) == 'CROSS') { $marks = 'CROSS'; } + + + if (isset($p['BACKGROUND-COLOR']) && $p['BACKGROUND-COLOR']) { $bg['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; } +/*-- BACKGROUNDS --*/ + if (isset($p['BACKGROUND-GRADIENT']) && $p['BACKGROUND-GRADIENT']) { $bg['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; } + if (isset($p['BACKGROUND-IMAGE']) && $p['BACKGROUND-IMAGE']) { $bg['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; } + if (isset($p['BACKGROUND-REPEAT']) && $p['BACKGROUND-REPEAT']) { $bg['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; } + if (isset($p['BACKGROUND-POSITION']) && $p['BACKGROUND-POSITION']) { $bg['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; } + if (isset($p['BACKGROUND-IMAGE-RESIZE']) && $p['BACKGROUND-IMAGE-RESIZE']) { $bg['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; } + if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $bg['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; } +/*-- END BACKGROUNDS --*/ + + if (isset($p['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($p['MARGIN-LEFT'],$pgw) + $outer_width_LR; } + if (isset($p['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($p['MARGIN-RIGHT'],$pgw) + $outer_width_LR; } + if (isset($p['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($p['MARGIN-BOTTOM'],$pgh) + $outer_width_TB; } + if (isset($p['MARGIN-TOP'])) { $mgt = $this->ConvertSize($p['MARGIN-TOP'],$pgh) + $outer_width_TB; } + if (isset($p['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($p['MARGIN-HEADER'],$pgh) + $outer_width_TB; } + if (isset($p['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($p['MARGIN-FOOTER'],$pgh) + $outer_width_TB; } + + if (isset($p['ORIENTATION']) && $p['ORIENTATION']) { $orientation = $p['ORIENTATION']; } + $this->page_box['outer_width_LR'] = $outer_width_LR; // Used in MARKS:crop etc. + $this->page_box['outer_width_TB'] = $outer_width_TB; + + return array($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$header,$footer,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat); +} +/*-- END CSS-PAGE --*/ + + + +/*-- CSS-FLOAT --*/ +// Added mPDF 3.0 Float DIV - CLEAR +function ClearFloats($clear, $blklvl=0) { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($blklvl,true); + $end = $currpos = ($this->page*1000 + $this->y); + if ($clear == 'BOTH' && ($l_exists || $r_exists)) { + $this->pageoutput[$this->page] = array(); + $end = max($l_max, $r_max, $currpos); + } + else if ($clear == 'RIGHT' && $r_exists) { + $this->pageoutput[$this->page] = array(); + $end = max($r_max, $currpos); + } + else if ($clear == 'LEFT' && $l_exists ) { + $this->pageoutput[$this->page] = array(); + $end = max($l_max, $currpos); + } + else { return; } + $old_page = $this->page; + $new_page = intval($end/1000); + if ($old_page != $new_page) { + $s = $this->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pageBackgrounds = array(); + $this->page = $new_page; + } + $this->ResetMargins(); + $this->pageoutput[$this->page] = array(); + $this->y = (($end*1000) % 1000000)/1000; // mod changes operands to integers before processing +} + + +// Added mPDF 3.0 Float DIV +function GetFloatDivInfo($blklvl=0,$clear=false) { + // If blklvl specified, only returns floats at that level - for ClearFloats + $l_exists = false; + $r_exists = false; + $l_max = 0; + $r_max = 0; + $l_width = 0; + $r_width = 0; + if (count($this->floatDivs)) { + $currpos = ($this->page*1000 + $this->y); + foreach($this->floatDivs AS $f) { + if (($clear && $f['blockContext'] == $this->blk[$blklvl]['blockContext']) || (!$clear && $currpos >= $f['startpos'] && $currpos < ($f['endpos']-0.001) && $f['blklvl'] > $blklvl && $f['blockContext'] == $this->blk[$blklvl]['blockContext'])) { + if ($f['side']=='L') { + $l_exists= true; + $l_max = max($l_max, $f['endpos']); + $l_width = max($l_width , $f['w']); + } + if ($f['side']=='R') { + $r_exists= true; + $r_max = max($r_max, $f['endpos']); + $r_width = max($r_width , $f['w']); + } + } + } + } + return array($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width); +} +/*-- END CSS-FLOAT --*/ + + + + +function OpenTag($tag,$attr) +{ + + // What this gets: < $tag $attr['WIDTH']="90px" > does not get content here + // Correct tags where HTML specifies optional end tags, + // and/or does not allow nesting e.g. P inside P, or + if ($this->allow_html_optional_endtags) { + if (($tag == 'P' || $tag == 'DIV' || $tag == 'H1' || $tag == 'H2' || $tag == 'H3' || $tag == 'H4' || $tag == 'H5' || $tag == 'H6' || $tag == 'UL' || $tag == 'OL' || $tag == 'TABLE' || $tag=='PRE' || $tag=='FORM' || $tag=='ADDRESS' || $tag=='BLOCKQUOTE' || $tag=='CENTER' || $tag=='DL' || $tag == 'HR' ) && $this->lastoptionaltag == 'P') { $this->CloseTag($this->lastoptionaltag ); } + if ($tag == 'DD' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); } + if ($tag == 'DD' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); } + if ($tag == 'DT' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); } + if ($tag == 'DT' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); } + if ($tag == 'LI' && $this->lastoptionaltag == 'LI') { $this->CloseTag($this->lastoptionaltag ); } + if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag ); } // *TABLES* + if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); } // *TABLES* + if ($tag == 'TR' && $this->lastoptionaltag == 'TR') { $this->CloseTag($this->lastoptionaltag ); } // *TABLES* + if ($tag == 'TR' && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); $this->CloseTag('THEAD'); } // *TABLES* + if ($tag == 'TR' && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); $this->CloseTag('THEAD'); } // *TABLES* + if ($tag == 'OPTION' && $this->lastoptionaltag == 'OPTION') { $this->CloseTag($this->lastoptionaltag ); } + } + + $align = array('left'=>'L','center'=>'C','right'=>'R','top'=>'T','text-top'=>'TT','middle'=>'M','baseline'=>'BS','bottom'=>'B','text-bottom'=>'TB','justify'=>'J'); + + $this->ignorefollowingspaces=false; + + //Opening tag + switch($tag){ + + case 'DOTTAB': + $objattr = array(); + $objattr['type'] = 'dottab'; + $dots=str_repeat('.', 3)." "; // minimum number of dots + $objattr['width'] = $this->GetStringWidth($dots); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['height'] = 0; + $objattr['colorarray'] = $this->colorarray; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + + // mPDF 5.6.19 + $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr); // mPDF 5.6.33 + if (isset($properties['OUTDENT'])) { // mPDF 5.6.33 + $objattr['outdent'] = $this->ConvertSize($properties['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + else if (isset($attr['OUTDENT'])) { + $objattr['outdent'] = $this->ConvertSize($attr['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + else { $objattr['outdent'] = 0; } + + $objattr['fontfamily'] = $this->FontFamily; + $objattr['fontsize'] = $this->FontSizePt; + + $e = "\xbb\xa4\xactype=dottab,objattr=".serialize($objattr)."\xbb\xa4\xac"; +/*-- TABLES --*/ + // Output it to buffers + if ($this->tableLevel) { + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0 ;// reset + $this->_saveCellTextBuffer($e); + } + else { +/*-- END TABLES --*/ + $this->_saveTextBuffer($e); + } // *TABLES* + break; + + case 'PAGEHEADER': + case 'PAGEFOOTER': + $this->ignorefollowingspaces = true; + if ($attr['NAME']) { $pname = $attr['NAME']; } + else { $pname = '_default'; } + + if ($tag=='PAGEHEADER') { $p = &$this->pageheaders[$pname]; } + else { $p = &$this->pagefooters[$pname]; } + + $p['L']=array(); + $p['C']=array(); + $p['R']=array(); + $p['L']['font-style'] = ''; + $p['C']['font-style'] = ''; + $p['R']['font-style'] = ''; + + if (isset($attr['CONTENT-LEFT'])) { + $p['L']['content'] = $attr['CONTENT-LEFT']; + } + if (isset($attr['CONTENT-CENTER'])) { + $p['C']['content'] = $attr['CONTENT-CENTER']; + } + if (isset($attr['CONTENT-RIGHT'])) { + $p['R']['content'] = $attr['CONTENT-RIGHT']; + } + + if (isset($attr['HEADER-STYLE']) || isset($attr['FOOTER-STYLE'])) { // font-family,size,weight,style,color + if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE']); } + else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE']); } + if (isset($properties['FONT-FAMILY'])) { + $p['L']['font-family'] = $properties['FONT-FAMILY']; + $p['C']['font-family'] = $properties['FONT-FAMILY']; + $p['R']['font-family'] = $properties['FONT-FAMILY']; + } + if (isset($properties['FONT-SIZE'])) { + $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; + $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; + $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; + } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { + $p['L']['font-style'] = 'B'; + $p['C']['font-style'] = 'B'; + $p['R']['font-style'] = 'B'; + } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { + $p['L']['font-style'] .= 'I'; + $p['C']['font-style'] .= 'I'; + $p['R']['font-style'] .= 'I'; + } + if (isset($properties['COLOR'])) { + $p['L']['color'] = $properties['COLOR']; + $p['C']['color'] = $properties['COLOR']; + $p['R']['color'] = $properties['COLOR']; + } + } + if (isset($attr['HEADER-STYLE-LEFT']) || isset($attr['FOOTER-STYLE-LEFT'])) { + if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-LEFT']); } + else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-LEFT']); } + if (isset($properties['FONT-FAMILY'])) { $p['L']['font-family'] = $properties['FONT-FAMILY']; } + if (isset($properties['FONT-SIZE'])) { $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['L']['font-style'] ='B'; } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['L']['font-style'] .='I'; } + if (isset($properties['COLOR'])) { $p['L']['color'] = $properties['COLOR']; } + } + if (isset($attr['HEADER-STYLE-CENTER']) || isset($attr['FOOTER-STYLE-CENTER'])) { + if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-CENTER']); } + else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-CENTER']); } + if (isset($properties['FONT-FAMILY'])) { $p['C']['font-family'] = $properties['FONT-FAMILY']; } + if (isset($properties['FONT-SIZE'])) { $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['C']['font-style'] = 'B'; } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['C']['font-style'] .= 'I'; } + if (isset($properties['COLOR'])) { $p['C']['color'] = $properties['COLOR']; } + } + if (isset($attr['HEADER-STYLE-RIGHT']) || isset($attr['FOOTER-STYLE-RIGHT'])) { + if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-RIGHT']); } + else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-RIGHT']); } + if (isset($properties['FONT-FAMILY'])) { $p['R']['font-family'] = $properties['FONT-FAMILY']; } + if (isset($properties['FONT-SIZE'])) { $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; } + if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['R']['font-style'] = 'B'; } + if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['R']['font-style'] .= 'I'; } + if (isset($properties['COLOR'])) { $p['R']['color'] = $properties['COLOR']; } + } + if (isset($attr['LINE']) && $attr['LINE']) { // 0|1|on|off + if ($attr['LINE']=='1' || strtoupper($attr['LINE'])=='ON') { $lineset=1; } + else { $lineset=0; } + $p['line'] = $lineset; + } + break; + + +/*-- HTMLHEADERS-FOOTERS --*/ + case 'SETHTMLPAGEHEADER': + case 'SETHTMLPAGEFOOTER': + $this->ignorefollowingspaces = true; + if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; } + else { $pname = '_default'; } + if (isset($attr['PAGE']) && $attr['PAGE']) { // O|odd|even|E|ALL|[blank] + if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; } + else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; } + else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; } + else { $side='odd'; } + } + else { $side='odd'; } + if (isset($attr['VALUE']) && $attr['VALUE']) { // -1|1|on|off + if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; } + else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; } + else { $set=1; } + } + else { $set=1; } + if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETHTMLPAGEHEADER') { $write = 1; } + else { $write = 0; } + if ($side=='odd' || $side=='both') { + if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'O',$write); } + else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'O'); } + else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','O'); } + else { $this->SetHTMLFooter('','O'); } + } + if ($side=='even' || $side=='both') { + if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'E',$write); } + else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'E'); } + else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','E'); } + else { $this->SetHTMLFooter('','E'); } + } + break; +/*-- END HTMLHEADERS-FOOTERS --*/ + + case 'SETPAGEHEADER': + case 'SETPAGEFOOTER': + $this->ignorefollowingspaces = true; + if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; } + else { $pname = '_default'; } + if (isset($attr['PAGE']) && $attr['PAGE']) { // O|odd|even|E|ALL|[blank] + if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; } + else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; } + else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; } + else { $side='odd'; } + } + else { $side='odd'; } + if (isset($attr['VALUE']) && $attr['VALUE']) { // -1|1|on|off + if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; } + else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; } + else { $set=1; } + } + else { $set=1; } + if ($side=='odd' || $side=='both') { + if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = $this->pageheaders[$pname]; } + else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['odd'] = $this->pagefooters[$pname]; } + else if ($tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = array(); } + else { $this->footerDetails['odd'] = array(); } + if (!$this->mirrorMargins || ($this->page)%2!=0) { // ODD + if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['odd'],$this->HTMLHeader); } + if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['odd'],$this->HTMLFooter); } + } + } + if ($side=='even' || $side=='both') { + if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['even'] = $this->pageheaders[$pname]; } + else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['even'] = $this->pagefooters[$pname]; } + else if ($tag=='SETPAGEHEADER') { $this->headerDetails['even'] = array(); } + else { $this->footerDetails['even'] = array(); } + if ($this->mirrorMargins && ($this->page)%2==0) { // EVEN + if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['even'],$this->HTMLHeaderE); } + if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['even'],$this->HTMLFooterE); } + } + } + if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETPAGEHEADER') { + $this->Header(); + } + break; + + +/*-- TOC --*/ + case 'TOC': //added custom-tag - set Marker for insertion later of ToC + if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); } + if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); } + $this->tocontents->openTagTOC($attr); + break; + + + + case 'TOCPAGEBREAK': // custom-tag - set Marker for insertion later of ToC AND adds PAGEBREAK + if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); } + if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); } + list($isbreak,$toc_id) = $this->tocontents->openTagTOCPAGEBREAK($attr); + if ($isbreak) break; + // No break - continues as PAGEBREAK... +/*-- END TOC --*/ + + + case 'PAGE_BREAK': //custom-tag + case 'PAGEBREAK': //custom-tag + case 'NEWPAGE': //custom-tag + case 'FORMFEED': //custom-tag + + $save_blklvl = $this->blklvl; + $save_blk = $this->blk; + $save_silp = $this->saveInlineProperties(); + $save_spanlvl = $this->spanlvl; + $save_ilp = $this->InlineProperties; + + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + if(!empty($this->textbuffer)) { //Output previously buffered content + $this->printbuffer($this->textbuffer); + $this->textbuffer=array(); + } + $this->ignorefollowingspaces = true; + $save_cols = false; +/*-- COLUMNS --*/ + if ($this->ColActive) { + $save_cols = true; + $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off + $this->SetColumns(0); + } +/*-- END COLUMNS --*/ + + + if (isset($attr['SHEET-SIZE']) && $tag != 'FORMFEED' && !$this->restoreBlockPageBreaks) { + // Convert to same types as accepted in initial mPDF() A4, A4-L, or array(w,h) + $prop = preg_split('/\s+/',trim($attr['SHEET-SIZE'])); + if (count($prop) == 2 ) { + $newformat = array($this->ConvertSize($prop[0]), $this->ConvertSize($prop[1])); + } + else { $newformat = $attr['SHEET-SIZE']; } + } + else { $newformat = ''; } + + $mgr = $mgl = $mgt = $mgb = $mgh = $mgf = ''; + if (isset($attr['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($attr['MARGIN-RIGHT'],$this->w,$this->FontSize,false); } + if (isset($attr['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($attr['MARGIN-LEFT'],$this->w,$this->FontSize,false); } + if (isset($attr['MARGIN-TOP'])) { $mgt = $this->ConvertSize($attr['MARGIN-TOP'],$this->w,$this->FontSize,false); } + if (isset($attr['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($attr['MARGIN-BOTTOM'],$this->w,$this->FontSize,false); } + if (isset($attr['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($attr['MARGIN-HEADER'],$this->w,$this->FontSize,false); } + if (isset($attr['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($attr['MARGIN-FOOTER'],$this->w,$this->FontSize,false); } + $ohname = $ehname = $ofname = $efname = ''; + if (isset($attr['ODD-HEADER-NAME'])) { $ohname = $attr['ODD-HEADER-NAME']; } + if (isset($attr['EVEN-HEADER-NAME'])) { $ehname = $attr['EVEN-HEADER-NAME']; } + if (isset($attr['ODD-FOOTER-NAME'])) { $ofname = $attr['ODD-FOOTER-NAME']; } + if (isset($attr['EVEN-FOOTER-NAME'])) { $efname = $attr['EVEN-FOOTER-NAME']; } + $ohvalue = $ehvalue = $ofvalue = $efvalue = 0; + if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='1' || strtoupper($attr['ODD-HEADER-VALUE'])=='ON')) { $ohvalue = 1; } + else if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='-1' || strtoupper($attr['ODD-HEADER-VALUE'])=='OFF')) { $ohvalue = -1; } + if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='ON')) { $ehvalue = 1; } + else if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='OFF')) { $ehvalue = -1; } + if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='ON')) { $ofvalue = 1; } + else if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='OFF')) { $ofvalue = -1; } + if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='ON')) { $efvalue = 1; } + else if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='OFF')) { $efvalue = -1; } + + if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='L' || strtoupper($attr['ORIENTATION'])=='LANDSCAPE')) { $orient = 'L'; } + else if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='P' || strtoupper($attr['ORIENTATION'])=='PORTRAIT')) { $orient = 'P'; } + else { $orient = $this->CurOrientation; } + + if (isset($attr['PAGE-SELECTOR']) && $attr['PAGE-SELECTOR']) { $pagesel = $attr['PAGE-SELECTOR']; } + else { $pagesel = ''; } + + $resetpagenum = ''; + $pagenumstyle = ''; + $suppress = ''; + if (isset($attr['RESETPAGENUM'])) { $resetpagenum = $attr['RESETPAGENUM']; } + if (isset($attr['PAGENUMSTYLE'])) { $pagenumstyle = $attr['PAGENUMSTYLE']; } + if (isset($attr['SUPPRESS'])) { $suppress = $attr['SUPPRESS']; } + + if ($tag == 'TOCPAGEBREAK') { $type = 'NEXT-ODD'; } + else if(isset($attr['TYPE'])) { $type = strtoupper($attr['TYPE']); } + else { $type = ''; } + + if ($type == 'E' || $type == 'EVEN') { $this->AddPage($orient,'E', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); } + else if ($type == 'O' || $type == 'ODD') { $this->AddPage($orient,'O', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); } + else if ($type == 'NEXT-ODD') { $this->AddPage($orient,'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); } + else if ($type == 'NEXT-EVEN') { $this->AddPage($orient,'NEXT-EVEN', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); } + else { $this->AddPage($orient,'', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); } + +/*-- TOC --*/ + if ($tag == 'TOCPAGEBREAK') { + if ($toc_id) { $this->tocontents->m_TOC[$toc_id]['TOCmark'] = $this->page; } + else { $this->tocontents->TOCmark = $this->page; } + } +/*-- END TOC --*/ + +/*-- COLUMNS --*/ + if ($save_cols) { + // Restore columns + $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap); + } +/*-- END COLUMNS --*/ + if (($tag == 'FORMFEED' || $this->restoreBlockPagebreaks) && !$this->tableLevel && !$this->listlvl) { + $this->blk = $save_blk; + // Re-open block tags + $t = $this->blk[0]['tag']; + $a = $this->blk[0]['attr']; + $this->blklvl = 0; + for ($b=0; $b<=$save_blklvl;$b++) { + $tc = $t; + $ac = $a; + $t = $this->blk[$b+1]['tag']; + $a = $this->blk[$b+1]['attr']; + unset($this->blk[$b+1]); + $this->OpenTag($tc,$ac); + } + $this->spanlvl = $save_spanlvl; + $this->InlineProperties = $save_ilp; + $this->restoreInlineProperties($save_silp); + } + + break; + + +/*-- TOC --*/ + case 'TOCENTRY': + if (isset($attr['CONTENT']) && $attr['CONTENT']) { + $objattr = array(); + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); + $objattr['type'] = 'toc'; + if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['toclevel'] = $attr['LEVEL']; } else { $objattr['toclevel'] = 0; } + if (isset($attr['NAME']) && $attr['NAME']) { $objattr['toc_id'] = $attr['NAME']; } else { $objattr['toc_id'] = 0; } + $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac"; + if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES* + else { // *TABLES* + $this->textbuffer[] = array($e); + } // *TABLES* + } + break; +/*-- END TOC --*/ + +/*-- INDEX --*/ + case 'INDEXENTRY': + if (isset($attr['CONTENT']) && $attr['CONTENT']) { + if (isset($attr['XREF']) && $attr['XREF']) { + $this->IndexEntry(htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES),$attr['XREF']); + break; + } + $objattr = array(); + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); + $objattr['type'] = 'indexentry'; + $e = "\xbb\xa4\xactype=indexentry,objattr=".serialize($objattr)."\xbb\xa4\xac"; + if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES* + else { // *TABLES* + $this->textbuffer[] = array($e); + } // *TABLES* + } + break; + + + case 'INDEXINSERT': + if (isset($attr['FONT-SIZE'])) { $reffontsize = $attr['FONT-SIZE']; } else { $reffontsize = ''; } + if (isset($attr['LINE-SPACING']) && $attr['LINE-SPACING']) { $linespacing = $attr['LINE-SPACING']; } else { $linespacing = ''; } + if (isset($attr['DIV-FONT-SIZE']) && $attr['DIV-FONT-SIZE']) { $divlettfontsize = $attr['DIV-FONT-SIZE']; } else { $divlettfontsize = ''; } + if (isset($attr['FONT']) && $attr['FONT']) { $reffont = $attr['FONT']; } else { $reffont = ''; } + if (isset($attr['DIV-FONT']) && $attr['DIV-FONT']) { $divlettfont = $attr['DIV-FONT']; } else { $divlettfont = ''; } + if (isset($attr['COLS']) && $attr['COLS']) { $cols = $attr['COLS']; } else { $cols = 1; } + if (isset($attr['OFFSET']) && $attr['OFFSET']) { $offset = $attr['OFFSET']; } else { $offset = 3; } + if (isset($attr['GAP']) && $attr['GAP']) { $gap = $attr['GAP']; } else { $gap = 5; } + + if (isset($attr['USEDIVLETTERS']) && (strtoupper($attr['USEDIVLETTERS'])=='OFF' || $attr['USEDIVLETTERS']==-1 || $attr['USEDIVLETTERS']==='0')) { $usedivletters = 0; } + else { $usedivletters = 1; } + + if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $links = true; } + else { $links = false; } + $this->CreateIndex($cols, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont,$divlettfont, $links); + break; +/*-- END INDEX --*/ + +/*-- WATERMARK --*/ + + case 'WATERMARKTEXT': + if (isset($attr['CONTENT']) && $attr['CONTENT']) { $txt = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); } else { $txt = ''; } + if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; } + $this->SetWatermarkText($txt, $alpha); + break; + + + case 'WATERMARKIMAGE': + if (isset($attr['SRC'])) { $src = $attr['SRC']; } else { $src = ''; } + if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; } + if (isset($attr['SIZE']) && $attr['SIZE']) { + $size = $attr['SIZE']; + if (strpos($size,',')) { $size = explode(',',$size); } + } + else { $size = 'D'; } + if (isset($attr['POS']) && $attr['POS']) { + $pos = $attr['POS']; + if (strpos($pos,',')) { $pos = explode(',',$pos); } + } + else { $pos = 'P'; } + $this->SetWatermarkImage($src, $alpha, $size, $pos); + break; +/*-- END WATERMARK --*/ + +/*-- BOOKMARKS --*/ + case 'BOOKMARK': + if (isset($attr['CONTENT'])) { + $objattr = array(); + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); + $objattr['type'] = 'bookmark'; + if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; } + $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac"; + if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES* + else { // *TABLES* + $this->textbuffer[] = array($e); + } // *TABLES* + } + break; +/*-- END BOOKMARKS --*/ + +/*-- ANNOTATIONS --*/ + case 'ANNOTATION': + + //if (isset($attr['CONTENT']) && !$this->writingHTMLheader && !$this->writingHTMLfooter) { // Stops annotations in FixedPos + if (isset($attr['CONTENT'])) { + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); + $objattr['type'] = 'annot'; + $objattr['POPUP'] = ''; + } + else { break; } + if (isset($attr['POS-X'])) { $objattr['POS-X'] = $attr['POS-X']; } else { $objattr['POS-X'] = 0; } + if (isset($attr['POS-Y'])) { $objattr['POS-Y'] = $attr['POS-Y']; } else { $objattr['POS-Y'] = 0; } + if (isset($attr['ICON'])) { $objattr['ICON'] = $attr['ICON']; } else { $objattr['ICON'] = 'Note'; } + if (isset($attr['AUTHOR'])) { $objattr['AUTHOR'] = $attr['AUTHOR']; } + else if (isset($attr['TITLE'])) { $objattr['AUTHOR'] = $attr['TITLE']; } else { $objattr['AUTHOR'] = ''; } + if (isset($attr['FILE'])) { $objattr['FILE'] = $attr['FILE']; } else { $objattr['FILE'] = ''; } + if (isset($attr['SUBJECT'])) { $objattr['SUBJECT'] = $attr['SUBJECT']; } else { $objattr['SUBJECT'] = ''; } + if (isset($attr['OPACITY']) && $attr['OPACITY']>0 && $attr['OPACITY']<=1) { $objattr['OPACITY'] = $attr['OPACITY']; } + else if ($this->annotMargin) { $objattr['OPACITY'] = 1; } + else { $objattr['OPACITY'] = $this->annotOpacity; } + if (isset($attr['COLOR'])) { + $cor = $this->ConvertColor($attr['COLOR']); + if ($cor) { $objattr['COLOR'] = $cor; } + else { $objattr['COLOR'] = $this->ConvertColor('yellow'); } + } + else { $objattr['COLOR'] = $this->ConvertColor('yellow'); } + + if (isset($attr['POPUP']) && !empty($attr['POPUP'])) { + $pop = preg_split('/\s+/',trim($attr['POPUP'])); + if (count($pop)>1) { $objattr['POPUP'] = $pop; } + else { $objattr['POPUP'] = true; } + } + $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac"; + if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); } // *TABLES* + else { // *TABLES* + $this->textbuffer[] = array($e); + } // *TABLES* + break; +/*-- END ANNOTATIONS --*/ + + +/*-- COLUMNS --*/ + case 'COLUMNS': //added custom-tag + if (isset($attr['COLUMN-COUNT']) && ($attr['COLUMN-COUNT'] || $attr['COLUMN-COUNT']==='0')) { + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + if(!empty($this->textbuffer)) { //Output previously buffered content + $this->printbuffer($this->textbuffer); + $this->textbuffer=array(); + } + + if (isset($attr['VALIGN']) && $attr['VALIGN']) { + if ($attr['VALIGN'] == 'J') { $valign = 'J'; } + else { $valign = $align[$attr['VALIGN']]; } + } + else { $valign = ''; } + if (isset($attr['COLUMN-GAP']) && $attr['COLUMN-GAP']) { $this->SetColumns($attr['COLUMN-COUNT'],$valign,$attr['COLUMN-GAP']); } + else { $this->SetColumns($attr['COLUMN-COUNT'],$valign); } + } + $this->ignorefollowingspaces = true; + break; + + case 'COLUMN_BREAK': //custom-tag + case 'COLUMNBREAK': //custom-tag + case 'NEWCOLUMN': //custom-tag + $this->ignorefollowingspaces = true; + $this->NewColumn(); + $this->ColumnAdjust = false; // disables all column height adjustment for the page. + break; + +/*-- END COLUMNS --*/ + + + case 'BDO': + // $this->biDirectional = true; + break; + + + case 'TTZ': + $this->ttz = true; + $this->InlineProperties[$tag] = $this->saveInlineProperties(); + $this->setCSS(array('FONT-FAMILY'=>'czapfdingbats','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE'); + break; + + case 'TTS': + $this->tts = true; + $this->InlineProperties[$tag] = $this->saveInlineProperties(); + $this->setCSS(array('FONT-FAMILY'=>'csymbol','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE'); + break; + + case 'TTA': + $this->tta = true; + $this->InlineProperties[$tag] = $this->saveInlineProperties(); + + if (in_array($this->FontFamily,$this->mono_fonts)) { + $this->setCSS(array('FONT-FAMILY'=>'ccourier'),'INLINE'); + } + else if (in_array($this->FontFamily,$this->serif_fonts)) { + $this->setCSS(array('FONT-FAMILY'=>'ctimes'),'INLINE'); + } + else { + $this->setCSS(array('FONT-FAMILY'=>'chelvetica'),'INLINE'); + } + break; + + + + // INLINE PHRASES OR STYLES + case 'SUB': + case 'SUP': + case 'ACRONYM': + case 'BIG': + case 'SMALL': + case 'INS': + case 'S': + case 'STRIKE': + case 'DEL': + case 'STRONG': + case 'CITE': + case 'Q': + case 'EM': + case 'B': + case 'I': + case 'U': + case 'SAMP': + case 'CODE': + case 'KBD': + case 'TT': + case 'VAR': + case 'FONT': + case 'MARK': // mPDF 5.5.09 + case 'TIME': + + case 'SPAN': +/*-- ANNOTATIONS --*/ + if ($this->title2annots && isset($attr['TITLE'])) { + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + + $objattr['CONTENT'] = $attr['TITLE']; + $objattr['type'] = 'annot'; + $objattr['POS-X'] = 0; + $objattr['POS-Y'] = 0; + $objattr['ICON'] = 'Comment'; + $objattr['AUTHOR'] = ''; + $objattr['SUBJECT'] = ''; + $objattr['OPACITY'] = $this->annotOpacity; + $objattr['COLOR'] = $this->ConvertColor('yellow'); + $annot = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac"; + } +/*-- END ANNOTATIONS --*/ + + if ($tag == 'SPAN') { + $this->spanlvl++; + $this->InlineProperties['SPAN'][$this->spanlvl] = $this->saveInlineProperties(); + if (isset($annot)) { $this->InlineAnnots[$tag][$this->spanlvl] = $annot; } // *ANNOTATIONS* + } + else { + if (!isset($this->InlineProperties[$tag])) $this->InlineProperties[$tag] = $this->saveInlineProperties(); // mPDF 5.4.13 + if (isset($annot)) { $this->InlineAnnots[$tag] = $annot; } // *ANNOTATIONS* + } + $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr); + if (!empty($properties)) $this->setCSS($properties,'INLINE'); + break; + + + case 'A': + if (isset($attr['NAME']) and $attr['NAME'] != '') { + $e = ''; +/*-- BOOKMARKS --*/ + if ($this->anchor2Bookmark) { + $objattr = array(); + $objattr['CONTENT'] = htmlspecialchars_decode($attr['NAME'],ENT_QUOTES); + $objattr['type'] = 'bookmark'; + if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; } + $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac"; + } +/*-- END BOOKMARKS --*/ + if($this->tableLevel) { // *TABLES* + $this->_saveCellTextBuffer($e, '', $attr['NAME']); // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->_saveTextBuffer($e, '', $attr['NAME']); //an internal link (adds a space for recognition) + } // *TABLES* + } + if (isset($attr['HREF'])) { + $this->InlineProperties['A'] = $this->saveInlineProperties(); + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if (!empty($properties)) $this->setCSS($properties,'INLINE'); + $this->HREF=htmlspecialchars_decode(urldecode($attr['HREF'])); + } + break; + + case 'LEGEND': // mPDF 5.4.18 + $this->InlineProperties['LEGEND'] = $this->saveInlineProperties(); + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if (!empty($properties)) $this->setCSS($properties,'INLINE'); + break; + + + + case 'PROGRESS': // mPDF 5.5.09 + case 'METER': // mPDF 5.5.09 + $this->inMeter = true; // mPDF 5.5.09 + + if (isset($attr['MAX']) && $attr['MAX']) { $max = $attr['MAX']; } + else { $max = 1; } + if (isset($attr['MIN']) && $attr['MIN'] && $tag=='METER') { $min = $attr['MIN']; } + else { $min = 0; } + if ($max < $min) { $max = $min; } + + if (isset($attr['VALUE']) && ($attr['VALUE'] || $attr['VALUE']==='0')) { + $value = $attr['VALUE']; + if ($value < $min) { $value = $min; } + else if ($value > $max) { $value = $max; } + } + else { $value = ''; } + + if (isset($attr['LOW']) && $attr['LOW']) { $low = $attr['LOW']; } + else { $low = $min; } + if ($low < $min) { $low = $min; } + else if ($low > $max) { $low = $max; } + if (isset($attr['HIGH']) && $attr['HIGH']) { $high = $attr['HIGH']; } + else { $high = $max; } + if ($high < $low) { $high = $low; } + else if ($high > $max) { $high = $max; } + if (isset($attr['OPTIMUM']) && $attr['OPTIMUM']) { $optimum = $attr['OPTIMUM']; } + else { $optimum = $min + (($max-$min)/2); } + if ($optimum < $min) { $optimum = $min; } + else if ($optimum > $max) { $optimum = $max; } + if (isset($attr['TYPE']) && $attr['TYPE']) { $type = $attr['TYPE']; } + else { $type = ''; } + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { + return; + } + $objattr['visibility'] = 'visible'; + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { + $objattr['visibility'] = $v; + } + } + + if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); } + if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); } + if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); } + if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); } + + if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; } + $w = 0; + $h = 0; + if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + + if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + + if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; } + if ($this->HREF) { + if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) { + $href = $this->HREF; + while(array_key_exists($href,$this->internallink)) $href="#".$href; + $this->internallink[$href] = $this->AddLink(); + $objattr['link'] = $this->internallink[$href]; + } + else { $objattr['link'] = $this->HREF; } + } + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + // Image file + if (!class_exists('meter', false)) { + include(_MPDF_PATH.'classes/meter.php'); + } + $this->meter = new meter(); + $svg = $this->meter->makeSVG(strtolower($tag), $type, $value, $max, $min, $optimum, $low, $high); + //Save to local file + $srcpath= _MPDF_TEMP_PATH.'_tempSVG'.RAND(1,10000).'_'.strtolower($tag).'.svg'; + file_put_contents($srcpath, $svg); + $orig_srcpath = $srcpath; + $this->GetFullPath($srcpath); + + $info=$this->_getImage($srcpath, true, true, $orig_srcpath); + if(!$info) { + $info = $this->_getImage($this->noImageFile); + if ($info) { + $srcpath = $this->noImageFile; + $w = ($info['w'] * (25.4/$this->dpi)); + $h = ($info['h'] * (25.4/$this->dpi)); + } + } + if(!$info) break; + + $objattr['file'] = $srcpath; + //Default width and height calculation if needed + if($w==0 and $h==0) { + // SVG units are pixels + $w = $this->FontSize/(10/_MPDFK) * abs($info['w'])/_MPDFK; // mPDF 5.5.21 + $h = $this->FontSize/(10/_MPDFK) * abs($info['h'])/_MPDFK; + } + // IF WIDTH OR HEIGHT SPECIFIED + if($w==0) $w=abs($h*$info['w']/$info['h']); + if($h==0) $h=abs($w*$info['h']/$info['w']); + + // Resize to maximum dimensions of page + $maxWidth = $this->blk[$this->blklvl]['inner_width']; + $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ; + if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; } + if ($w + $extrawidth > $maxWidth ) { + $w = $maxWidth - $extrawidth; + $h=abs($w*$info['h']/$info['w']); + } + + if ($h + $extraheight > $maxHeight ) { + $h = $maxHeight - $extraheight; + $w=abs($h*$info['w']/$info['h']); + } + $objattr['type'] = 'image'; + $objattr['itype'] = $info['type']; + + $objattr['orig_h'] = $info['h']; + $objattr['orig_w'] = $info['w']; + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['image_height'] = $h; + $objattr['image_width'] = $w; + $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac"; + $properties = array(); + if ($this->tableLevel) { + $this->_saveCellTextBuffer($e, $this->HREF); + $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; + } + else { + $this->_saveTextBuffer($e, $this->HREF); + } + + break; + + + case 'BR': + // Added mPDF 3.0 Float DIV - CLEAR + if (isset($attr['STYLE'])) { + $properties = $this->cssmgr->readInlineCSS($attr['STYLE']); + if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); } // *CSS-FLOAT* + } + + +/*-- TABLES --*/ + if($this->tableLevel) { + + if ($this->blockjustfinished || $this->listjustfinished) { + $this->_saveCellTextBuffer("\n"); + } + + $this->_saveCellTextBuffer("\n"); + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0 ;// reset + } + else { +/*-- END TABLES --*/ + if (count($this->textbuffer)) { + $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/ $/','',$this->textbuffer[count($this->textbuffer)-1][0]); + } + $this->_saveTextBuffer("\n"); + } // *TABLES* + $this->ignorefollowingspaces = true; + $this->blockjustfinished=false; + $this->listjustfinished=false; + + $this->linebreakjustfinished=true; + break; + + + // *********** BLOCKS ******************** + + + case 'PRE': + $this->ispre=true; // ADDED - Prevents left trim of textbuffer in printbuffer() + + case 'DIV': + case 'FORM': + case 'CENTER': + + case 'BLOCKQUOTE': + case 'ADDRESS': + + case 'CAPTION': + case 'P': + case 'H1': + case 'H2': + case 'H3': + case 'H4': + case 'H5': + case 'H6': + case 'DL': + case 'DT': + case 'DD': + case 'FIELDSET': + // mPDF 5.5.22 + case 'DETAILS': + case 'SUMMARY': + // mPDF 5.5.09 + case 'ARTICLE': + case 'ASIDE': + case 'FIGURE': + case 'FIGCAPTION': + case 'FOOTER': + case 'HEADER': + case 'HGROUP': + case 'NAV': + case 'SECTION': + $p = $this->cssmgr->PreviewBlockCSS($tag,$attr); + if(isset($p['DISPLAY']) && strtolower($p['DISPLAY'])=='none') { + $this->blklvl++; + $this->blk[$this->blklvl]['hide'] = true; + return; + } + if($tag == 'CAPTION') { + // position is written in AdjstHTML + if (isset($attr['POSITION']) && strtolower($attr['POSITION'])=='bottom') { $divpos = 'B'; } + else { $divpos = 'T'; } + if (isset($attr['ALIGN']) && strtolower($attr['ALIGN'])=='bottom') { $cappos = 'B'; } + else if (isset($p['CAPTION-SIDE']) && strtolower($p['CAPTION-SIDE'])=='bottom') { $cappos = 'B'; } + else { $cappos = 'T'; } + if (isset($attr['ALIGN'])) { unset($attr['ALIGN']); } + if ($cappos != $divpos) { + $this->blklvl++; + $this->blk[$this->blklvl]['hide'] = true; + return; + } + } + +/*-- FORMS --*/ + if($tag == 'FORM') { + if (isset($attr['METHOD']) && strtolower($attr['METHOD'])=='get') { $this->form->formMethod = 'GET'; } + else { $this->form->formMethod = 'POST'; } + if (isset($attr['ACTION'])) { $this->form->formAction = $attr['ACTION']; } + else { $this->form->formAction = ''; } + } +/*-- END FORMS --*/ + + +/*-- CSS-POSITION --*/ + if ((isset($p['POSITION']) && (strtolower($p['POSITION'])=='fixed' || strtolower($p['POSITION'])=='absolute')) && $this->blklvl==0) { + if ($this->inFixedPosBlock) { + $this->Error("Cannot nest block with position:fixed or position:absolute"); + } + $this->inFixedPosBlock = true; + return; + } +/*-- END CSS-POSITION --*/ + // Start Block + $this->ignorefollowingspaces = true; + + if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; } + else { $lastbottommargin = 0; } + $this->lastblockbottommargin = 0; + $this->blockjustfinished=false; + +/*-- LISTS --*/ + if ($this->listlvl>0) { return; } +/*-- END LISTS --*/ + + $this->InlineProperties = array(); + $this->spanlvl = 0; + $this->listjustfinished=false; + $this->divbegin=true; + + $this->linebreakjustfinished=false; + +/*-- TABLES --*/ + if ($this->tableLevel) { + + // If already something on the line + if ($this->cell[$this->row][$this->col]['s'] > 0 && !$this->nestedtablejustfinished ) { + $this->_saveCellTextBuffer("\n"); + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0 ;// reset + } + // Cannot set block properties inside table - use Bold to indicate h1-h6 + if ($tag == 'CENTER' && $this->tdbegin) { $this->cell[$this->row][$this->col]['a'] = $align['center']; } + + $this->InlineProperties['BLOCKINTABLE'] = $this->saveInlineProperties(); + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if (!empty($properties)) $this->setCSS($properties,'INLINE'); + + + break; + } +/*-- END TABLES --*/ + + if ($tag == 'P' || $tag == 'DT' || $tag == 'DD') { $this->lastoptionaltag = $tag; } // Save current HTML specified optional endtag + else { $this->lastoptionaltag = ''; } + + if ($this->lastblocklevelchange == 1) { $blockstate = 1; } // Top margins/padding only + else if ($this->lastblocklevelchange < 1) { $blockstate = 0; } // NO margins/padding + $this->printbuffer($this->textbuffer,$blockstate); + $this->textbuffer=array(); + + $save_blklvl = $this->blklvl; + $save_blk = $this->blk; + $save_silp = $this->saveInlineProperties(); + $save_spanlvl = $this->spanlvl; + $save_ilp = $this->InlineProperties; + + $this->blklvl++; + + $currblk =& $this->blk[$this->blklvl]; + $this->initialiseBlock($currblk); + $prevblk =& $this->blk[$this->blklvl-1]; + + $currblk['tag'] = $tag; + $currblk['attr'] = $attr; + + $this->Reset(); + $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr); + $pagesel = ''; +/*-- CSS-PAGE --*/ + + if (isset($properties['PAGE'])) { $pagesel = $properties['PAGE']; } +/*-- END CSS-PAGE --*/ + + // If page-box has changed AND/OR PAGE-BREAK-BEFORE + $save_cols = false; + if (($pagesel && $pagesel != $this->page_box['current']) || (isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) { + if ($this->blklvl>1) { + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + // Output any text left in buffer + if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); } + } +/*-- COLUMNS --*/ + if ($this->ColActive) { + $save_cols = true; + $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off + $this->SetColumns(0); + } +/*-- END COLUMNS --*/ + + + // Must Add new page if changed page properties + if (isset($properties['PAGE-BREAK-BEFORE'])) { + if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'ALWAYS') { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + else if ($this->page_box['current'] != $pagesel) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } // *CSS-PAGE* + } +/*-- CSS-PAGE --*/ + else if ($pagesel != $this->page_box['current']) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } +/*-- END CSS-PAGE --*/ + + // if using htmlheaders, the headers need to be rewritten when new page + // done by calling WriteHTML() within resethtmlheaders + // so block is reset to 0 - now we need to resurrect it + // As in WriteHTML() initialising + if (!($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) { + $this->blklvl = 0; + $this->lastblocklevelchange = 0; + $this->blk = array(); + $this->initialiseBlock($this->blk[0]); + $this->blk[0]['width'] =& $this->pgwidth; + $this->blk[0]['inner_width'] =& $this->pgwidth; + $this->blk[0]['blockContext'] = $this->blockContext; + $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); + $this->setCSS($properties,'','BODY'); + $this->blklvl++; + $currblk =& $this->blk[$this->blklvl]; + $prevblk =& $this->blk[$this->blklvl-1]; + + $this->initialiseBlock($currblk); + $currblk['tag'] = $tag; + $currblk['attr'] = $attr; + + $this->Reset(); + $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr); + } +/*-- COLUMNS --*/ + if ($save_cols) { + // Restore columns + $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap); + } +/*-- END COLUMNS --*/ + if ($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE']) { + $this->blk = $save_blk; + // Re-open block tags + $t = $this->blk[0]['tag']; + $a = $this->blk[0]['attr']; + $this->blklvl = 0; + for ($b=0; $b<=$save_blklvl;$b++) { + $tc = $t; + $ac = $a; + $t = $this->blk[$b+1]['tag']; + $a = $this->blk[$b+1]['attr']; + unset($this->blk[$b+1]); + $this->OpenTag($tc,$ac); + } + $this->spanlvl = $save_spanlvl; + $this->InlineProperties = $save_ilp; + $this->restoreInlineProperties($save_silp); + } + } + + if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE']) == 'AVOID' && !$this->ColActive && !$this->keep_block_together) { + $currblk['keep_block_together'] = 1; + $this->kt_y00 = $this->y; + $this->kt_p00 = $this->page; + $this->keep_block_together = 1; + $this->divbuffer = array(); + $this->ktLinks = array(); + $this->ktAnnots = array(); + $this->ktForms = array(); + $this->ktBlock = array(); + $this->ktReference = array(); + $this->ktBMoutlines = array(); + $this->_kttoc = array(); + } + if ($lastbottommargin && isset($properties['MARGIN-TOP']) && $properties['MARGIN-TOP'] && empty($properties['FLOAT'])) { $currblk['lastbottommargin'] = $lastbottommargin; } + + // mPDF 5.6.01 - LAYERS + if (isset($properties['Z-INDEX']) && $this->currentlayer==0) { + $v = intval($properties['Z-INDEX']); + if ($v > 0) { + $currblk['z-index'] = $v; + $this->BeginLayer($v); + } + } + + $this->setCSS($properties,'BLOCK',$tag); //name(id/class/style) found in the CSS array! + $currblk['InlineProperties'] = $this->saveInlineProperties(); + + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible' && !$this->tableLevel) { + $currblk['visibility'] = $v; + $this->SetVisibility($v); + } + } + + if(isset($attr['DIR']) && $attr['DIR']) { $currblk['direction'] = strtolower($attr['DIR']); } + if(isset($attr['ALIGN']) && $attr['ALIGN']) { $currblk['block-align'] = $align[strtolower($attr['ALIGN'])]; } + + if (isset($properties['HEIGHT'])) { + $currblk['css_set_height'] = $this->ConvertSize($properties['HEIGHT'],($this->h - $this->tMargin - $this->bMargin),$this->FontSize,false); + if (($currblk['css_set_height'] + $this->y) > $this->PageBreakTrigger && $this->y > $this->tMargin+5 && $currblk['css_set_height'] < ($this->h - ($this->tMargin + $this->bMargin))) { $this->AddPage($this->CurOrientation); } + } + else { $currblk['css_set_height'] = false; } + + + // Added mPDF 3.0 Float DIV + if (isset($prevblk['blockContext'])) { $currblk['blockContext'] = $prevblk['blockContext'] ; } // *CSS-FLOAT* + + if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']), $this->blklvl-1); } // *CSS-FLOAT* + + $container_w = $prevblk['inner_width']; + $bdr = $currblk['border_right']['w']; + $bdl = $currblk['border_left']['w']; + $pdr = $currblk['padding_right']; + $pdl = $currblk['padding_left']; + + if (isset($currblk['css_set_width'])) { $setwidth = $currblk['css_set_width']; } + else { $setwidth = 0; } + +/*-- CSS-FLOAT --*/ + if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'RIGHT' && !$this->ColActive) { + // Cancel Keep-Block-together + $currblk['keep_block_together'] = false; + $this->kt_y00 = ''; + $this->keep_block_together = 0; + + $this->blockContext++; + $currblk['blockContext'] = $this->blockContext; + + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1); + + // DIV is too narrow for text to fit! + $maxw = $container_w - $l_width - $r_width; + if (($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('LEFT', $this->blklvl-1); + } + else if ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('RIGHT', $this->blklvl-1); + } + else { $this->ClearFloats('BOTH', $this->blklvl-1); } + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1); + } + + if ($r_exists) { $currblk['margin_right'] += $r_width; } + + $currblk['float'] = 'R'; + $currblk['float_start_y'] = $this->y; + if ($currblk['css_set_width']) { + $currblk['margin_left'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']); + $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']); + } + else { + // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width + // and do borders and backgrounds - For now - just set to maximum width left + + if ($l_exists) { $currblk['margin_left'] += $l_width; } + $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr); + + $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']); + } + } + else if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'LEFT' && !$this->ColActive) { + // Cancel Keep-Block-together + $currblk['keep_block_together'] = false; + $this->kt_y00 = ''; + $this->keep_block_together = 0; + + $this->blockContext++; + $currblk['blockContext'] = $this->blockContext; + + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1); + + // DIV is too narrow for text to fit! + $maxw = $container_w - $l_width - $r_width; + if (($setwidth + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('LEFT', $this->blklvl-1); + } + else if ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('RIGHT', $this->blklvl-1); + } + else { $this->ClearFloats('BOTH', $this->blklvl-1); } + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1); + } + + if ($l_exists) { $currblk['margin_left'] += $l_width; } + + $currblk['float'] = 'L'; + $currblk['float_start_y'] = $this->y; + if ($setwidth) { + $currblk['margin_right'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']); + $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']); + } + else { + // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width + // and do borders and backgrounds - For now - just set to maximum width left + + if ($r_exists) { $currblk['margin_right'] += $r_width; } + $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr); + + $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']); + } + } + + else { + // Don't allow overlap - if floats present - adjust padding to avoid overlap with Floats + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1); + $maxw = $container_w - $l_width - $r_width; + if (($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('LEFT', $this->blklvl-1); + } + else if ($r_max < $l_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('RIGHT', $this->blklvl-1); + } + else { $this->ClearFloats('BOTH', $this->blklvl-1); } + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1); + } + if ($r_exists) { $currblk['padding_right'] = max(($r_width-$currblk['margin_right']-$bdr), $pdr); } + if ($l_exists) { $currblk['padding_left'] = max(($l_width-$currblk['margin_left']-$bdl), $pdl); } + } +/*-- END CSS-FLOAT --*/ + + +/*-- BORDER-RADIUS --*/ + // Automatically increase padding if required for border-radius + if ($this->autoPadding && !$this->ColActive && !$this->keep_block_together) { + if ($currblk['border_radius_TL_H']>$currblk['padding_left'] && $currblk['border_radius_TL_V']>$currblk['padding_top']) { + if ($currblk['border_radius_TL_H']>$currblk['border_radius_TL_V']) { + $this->_borderPadding($currblk['border_radius_TL_H'],$currblk['border_radius_TL_V'], $currblk['padding_left'], $currblk['padding_top']); + } + else { + $this->_borderPadding($currblk['border_radius_TL_V'],$currblk['border_radius_TL_H'], $currblk['padding_top'], $currblk['padding_left']); + } + } + if ($currblk['border_radius_TR_H']>$currblk['padding_right'] && $currblk['border_radius_TR_V']>$currblk['padding_top']) { + if ($currblk['border_radius_TR_H']>$currblk['border_radius_TR_V']) { + $this->_borderPadding($currblk['border_radius_TR_H'],$currblk['border_radius_TR_V'], $currblk['padding_right'], $currblk['padding_top']); + } + else { + $this->_borderPadding($currblk['border_radius_TR_V'],$currblk['border_radius_TR_H'], $currblk['padding_top'], $currblk['padding_right']); + } + } + if ($currblk['border_radius_BL_H']>$currblk['padding_left'] && $currblk['border_radius_BL_V']>$currblk['padding_bottom']) { + if ($currblk['border_radius_BL_H']>$currblk['border_radius_BL_V']) { + $this->_borderPadding($currblk['border_radius_BL_H'],$currblk['border_radius_BL_V'], $currblk['padding_left'], $currblk['padding_bottom']); + } + else { + $this->_borderPadding($currblk['border_radius_BL_V'],$currblk['border_radius_BL_H'], $currblk['padding_bottom'], $currblk['padding_left']); + } + } + if ($currblk['border_radius_BR_H']>$currblk['padding_right'] && $currblk['border_radius_BR_V']>$currblk['padding_bottom']) { + if ($currblk['border_radius_BR_H']>$currblk['border_radius_BR_V']) { + $this->_borderPadding($currblk['border_radius_BR_H'],$currblk['border_radius_BR_V'], $currblk['padding_right'], $currblk['padding_bottom']); + } + else { + $this->_borderPadding($currblk['border_radius_BR_V'],$currblk['border_radius_BR_H'], $currblk['padding_bottom'], $currblk['padding_right']); + } + } + } +/*-- END BORDER-RADIUS --*/ + + + // Hanging indent - if negative indent: ensure padding is >= indent + if(!isset($currblk['text_indent'])) { $currblk['text_indent'] = null; } + if(!isset($currblk['inner_width'])) { $currblk['inner_width'] = null; } + $cbti = $this->ConvertSize($currblk['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if ($cbti < 0) { + $hangind = -($cbti); + if ($currblk['direction'] == 'rtl') { // *RTL* + $currblk['padding_right'] = max($currblk['padding_right'],$hangind); // *RTL* + } // *RTL* + else { // *RTL* + $currblk['padding_left'] = max($currblk['padding_left'],$hangind); + } // *RTL* + } + + if (isset($currblk['css_set_width'])) { + if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') { + // Try to reduce margins to accomodate - if still too wide, set margin-right/left=0 (reduces width) + $anyextra = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']); + if ($anyextra>0) { + $currblk['margin_left'] = $currblk['margin_right'] = $anyextra /2; + } + else { + $currblk['margin_left'] = $currblk['margin_right'] = 0; + } + } + else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { + // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width) + $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_right']); + if ($currblk['margin_left'] < 0) { + $currblk['margin_left'] = 0; + } + } + else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { + // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width) + $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_left']); + if ($currblk['margin_right'] < 0) { + $currblk['margin_right'] = 0; + } + } + else { + if ($currblk['direction'] == 'rtl') { // *RTL* + // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width) + $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_right']); // *RTL* + if ($currblk['margin_left'] < 0) { // *RTL* + $currblk['margin_left'] = 0; // *RTL* + } // *RTL* + } // *RTL* + else { // *RTL* + // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width) + $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_left']); + if ($currblk['margin_right'] < 0) { + $currblk['margin_right'] = 0; + } + } // *RTL* + } + } + + $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left']; + $currblk['outer_right_margin'] = $prevblk['outer_right_margin'] + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right']; + + $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']); + $currblk['inner_width'] = $currblk['width'] - ($currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']); + + // Check DIV is not now too narrow to fit text + $mw = 2*$this->GetCharWidth('W',false); + if ($currblk['inner_width'] < $mw) { + $currblk['padding_left'] = 0; + $currblk['padding_right'] = 0; + $currblk['border_left']['w'] = 0.2; + $currblk['border_right']['w'] = 0.2; + $currblk['margin_left'] = 0; + $currblk['margin_right'] = 0; + $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left']; + $currblk['outer_right_margin'] = $prevblk['outer_right_margin'] + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right']; + $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']); + $currblk['inner_width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']); +// if ($currblk['inner_width'] < $mw) { $this->Error("DIV is too narrow for text to fit!"); } + } + + $this->x = $this->lMargin + $currblk['outer_left_margin']; + +/*-- BACKGROUNDS --*/ + if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive && !$this->keep_block_together) { + $ret = $this->SetBackground($properties, $currblk['inner_width']); + if ($ret) { $currblk['background-image'] = $ret; } + } +/*-- END BACKGROUNDS --*/ + +/*-- TABLES --*/ + if ($this->use_kwt && isset($attr['KEEP-WITH-TABLE']) && !$this->ColActive && !$this->keep_block_together) { + $this->kwt = true; + $this->kwt_y0 = $this->y; + $this->kwt_x0 = $this->x; + $this->kwt_height = 0; + $this->kwt_buffer = array(); + $this->kwt_Links = array(); + $this->kwt_Annots = array(); + $this->kwt_moved = false; + $this->kwt_saved = false; + $this->kwt_Reference = array(); + $this->kwt_BMoutlines = array(); + $this->kwt_toc = array(); + } + else { +/*-- END TABLES --*/ + $this->kwt = false; + } // *TABLES* + + //Save x,y coords in case we need to print borders... + $currblk['y0'] = $this->y; + $currblk['x0'] = $this->x; + $currblk['startpage'] = $this->page; + $this->oldy = $this->y; + + $this->lastblocklevelchange = 1 ; + + break; + + case 'HR': + // Added mPDF 3.0 Float DIV - CLEAR + if (isset($attr['STYLE'])) { + $properties = $this->cssmgr->readInlineCSS($attr['STYLE']); + if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); } // *CSS-FLOAT* + } + + $this->ignorefollowingspaces = true; + + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['WIDTH'])) { $objattr['width'] = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']); } + else if(isset($attr['WIDTH']) && $attr['WIDTH'] != '') $objattr['width'] = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width']); + if (isset($properties['TEXT-ALIGN'])) { $objattr['align'] = $align[strtolower($properties['TEXT-ALIGN'])]; } + else if(isset($attr['ALIGN']) && $attr['ALIGN'] != '') $objattr['align'] = $align[strtolower($attr['ALIGN'])]; + + if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { + $objattr['align'] = 'R'; + } + if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { + $objattr['align'] = 'L'; + if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto' && isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { + $objattr['align'] = 'C'; + } + } + if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); } + else if(isset($attr['COLOR']) && $attr['COLOR'] != '') $objattr['color'] = $this->ConvertColor($attr['COLOR']); + if (isset($properties['HEIGHT'])) { $objattr['linewidth'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + +/*-- TABLES --*/ + if ($this->tableLevel) { + $objattr['W-PERCENT'] = 100; + if (isset($properties['WIDTH']) && stristr($properties['WIDTH'],'%')) { + $properties['WIDTH'] += 0; //make "90%" become simply "90" + $objattr['W-PERCENT'] = $properties['WIDTH']; + } + if (isset($attr['WIDTH']) && stristr($attr['WIDTH'],'%')) { + $attr['WIDTH'] += 0; //make "90%" become simply "90" + $objattr['W-PERCENT'] = $attr['WIDTH']; + } + } +/*-- END TABLES --*/ + + $objattr['type'] = 'hr'; + $objattr['height'] = $objattr['linewidth'] + $objattr['margin_top'] + $objattr['margin_bottom']; + $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac"; + + // Clear properties - tidy up + $properties = array(); + +/*-- TABLES --*/ + // Output it to buffers + if ($this->tableLevel) { + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0 ;// reset + $this->_saveCellTextBuffer($e, $this->HREF); + } + else { +/*-- END TABLES --*/ + $this->_saveTextBuffer($e, $this->HREF); + } // *TABLES* + + break; + + +/*-- BARCODES --*/ + + case 'BARCODE': + if(isset($attr['CODE']) && $attr['CODE']) { + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['code'] = $attr['CODE']; + + if(isset($attr['TYPE'])) { + $objattr['btype'] = trim(strtoupper($attr['TYPE'])); + } + else { $objattr['btype'] = 'EAN13'; } // default + if (preg_match('/^(EAN13|ISBN|ISSN|EAN8|UPCA|UPCE)P([25])$/',$objattr['btype'],$m)) { + $objattr['btype'] = $m[1]; + $objattr['bsupp'] = $m[2]; + if (preg_match('/^(\S+)\s+(.*)$/',$objattr['code'],$mm)) { + $objattr['code'] = $mm[1]; + $objattr['bsupp_code'] = $mm[2]; + } + } + else { $objattr['bsupp'] = 0; } + + if(isset($attr['TEXT']) && $attr['TEXT']==1) { $objattr['showtext'] = 1; } + else { $objattr['showtext'] = 0; } + if(isset($attr['SIZE']) && $attr['SIZE']>0) { $objattr['bsize'] = $attr['SIZE']; } + else { $objattr['bsize'] = 1; } + if(isset($attr['HEIGHT']) && $attr['HEIGHT']>0) { $objattr['bheight'] = $attr['HEIGHT']; } + else { $objattr['bheight'] = 1; } + if(isset($attr['PR']) && $attr['PR']>0) { $objattr['pr_ratio'] = $attr['PR']; } + else { $objattr['pr_ratio'] = ''; } + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { + return; + } + if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); } + if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); } + if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); } + if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); } + + if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; } + if (isset($properties['COLOR']) && $properties['COLOR'] != '') { $objattr['color'] = $this->ConvertColor($properties['COLOR']); } + else { $objattr['color'] = false; } + if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); } + else { $objattr['bgcolor'] = false; } + + if (!class_exists('PDFBarcode', false)) { + include(_MPDF_PATH.'classes/barcode.php'); + } + $this->barcode = new PDFBarcode(); + + if ($objattr['btype'] == 'EAN13' || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN' || $objattr['btype'] == 'UPCA' || $objattr['btype'] == 'UPCE' || $objattr['btype'] == 'EAN8') { + $code = preg_replace('/\-/','',$objattr['code']); + if ($objattr['btype'] == 'ISSN' || $objattr['btype'] == 'ISBN') { + $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13'); + } + else { $arrcode = $this->barcode->getBarcodeArray($code, $objattr['btype'] ); } + if ($arrcode === false) { $this->Error('Error in barcode string.'); } + + if ($objattr['bsupp'] == 2 || $objattr['bsupp'] == 5) { // EAN-2 or -5 Supplement + $supparrcode = $this->barcode->getBarcodeArray($objattr['bsupp_code'], 'EAN'.$objattr['bsupp'] ); + $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR'] + $supparrcode["maxw"] + $supparrcode['sepM']) * $arrcode['nom-X'] * $objattr['bsize']; + } + else { + $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize']; + } + $h = $arrcode['nom-H'] * $objattr['bsize'] * $objattr['bheight']; + // Add height for ISBN string + margin from top of bars + if (($objattr['showtext'] && $objattr['btype'] == 'EAN13') || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN') { + $tisbnm = 1.5 * $objattr['bsize']; // Top margin between TOP TEXT (isbn - if shown) & bars + $isbn_fontsize = 2.1 * $objattr['bsize']; + $h += $isbn_fontsize + $tisbnm ; + } + } + // QR-code + else if ($objattr['btype'] == 'QR') { + $w = $h = $objattr['bsize']*25; // Factor of 25mm (default) + $objattr['errorlevel'] = 'L'; + if (isset($attr['ERROR'])) { $objattr['errorlevel'] = $attr['ERROR']; } + } + else if ($objattr['btype'] == 'IMB' || $objattr['btype'] == 'RM4SCC' || $objattr['btype'] == 'KIX' || $objattr['btype'] == 'POSTNET' || $objattr['btype'] == 'PLANET') { + $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'] ); + if ($arrcode === false) { $this->Error('Error in barcode string.'); } + $w = ($arrcode["maxw"] * $arrcode['nom-X'] * $objattr['bsize']) + $arrcode['quietL'] + $arrcode['quietR']; + $h = ($arrcode['nom-H'] * $objattr['bsize']) + (2*$arrcode['quietTB']); + } + else if (in_array($objattr['btype'], array('C128A','C128B','C128C','EAN128A','EAN128B','EAN128C','C39','C39+','C39E','C39E+','S25','S25+','I25','I25+','I25B','I25B+','C93','MSI','MSI+','CODABAR','CODE11'))) { + $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'], $objattr['pr_ratio'] ); + if ($arrcode === false) { $this->Error('Error in barcode string.'); } + $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize']; + $h = ((2*$arrcode['lightTB'] * $arrcode['nom-X']) + $arrcode['nom-H']) * $objattr['bsize'] * $objattr['bheight']; + } + else { break; } + + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + $objattr['type'] = 'barcode'; + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['barcode_height'] = $h; + $objattr['barcode_width'] = $w; +/*-- CSS-IMAGE-FLOAT --*/ + if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) { + if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) { + $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1); + } + } +/*-- END CSS-IMAGE-FLOAT --*/ + + $e = "\xbb\xa4\xactype=barcode,objattr=".serialize($objattr)."\xbb\xa4\xac"; + + // Clear properties - tidy up + $properties = array(); + +/*-- TABLES --*/ + // Output it to buffers + if ($this->tableLevel) { + $this->_saveCellTextBuffer($e, $this->HREF); + $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; + } + else { +/*-- END TABLES --*/ + $this->_saveTextBuffer($e, $this->HREF); + + } // *TABLES* + } + break; +/*-- END BARCODES --*/ + + + // *********** FORM ELEMENTS ******************** + +/*-- FORMS --*/ + case 'SELECT': + $this->lastoptionaltag = ''; // Save current HTML specified optional endtag + $this->InlineProperties[$tag] = $this->saveInlineProperties(); + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if (isset($properties['FONT-FAMILY'])) { + $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false); + } + if (isset($properties['FONT-SIZE'])) { + $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK); + $this->SetFontSize($mmsize*_MPDFK,false); + } + if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { + $this->selectoption['SPELLCHECK'] = true; + } + + if (isset($properties['COLOR'])) { $this->selectoption['COLOR'] = $this->ConvertColor($properties['COLOR']); } + $this->specialcontent = "type=select"; + if(isset($attr['DISABLED'])) { $this->selectoption['DISABLED'] = $attr['DISABLED']; } + if(isset($attr['READONLY'])) { $this->selectoption['READONLY'] = $attr['READONLY']; } + if(isset($attr['REQUIRED'])) { $this->selectoption['REQUIRED'] = $attr['REQUIRED']; } + if(isset($attr['EDITABLE'])) { $this->selectoption['EDITABLE'] = $attr['EDITABLE']; } + if(isset($attr['TITLE'])) { $this->selectoption['TITLE'] = $attr['TITLE']; } + if(isset($attr['MULTIPLE'])) { $this->selectoption['MULTIPLE'] = $attr['MULTIPLE']; } + if(isset($attr['SIZE']) && $attr['SIZE']>1) { $this->selectoption['SIZE'] = $attr['SIZE']; } + if ($this->useActiveForms) { + if(isset($attr['NAME'])) { $this->selectoption['NAME'] = $attr['NAME']; } + if (isset($attr['ONCHANGE'])) { $this->selectoption['ONCHANGE'] = $attr['ONCHANGE']; } + } + + $properties = array(); + break; + + case 'OPTION': + $this->lastoptionaltag = 'OPTION'; // Save current HTML specified optional endtag + $this->selectoption['ACTIVE'] = true; + $this->selectoption['currentSEL'] = false; + if (empty($this->selectoption)) { + $this->selectoption['MAXWIDTH'] = ''; + $this->selectoption['SELECTED'] = ''; + } + if (isset($attr['SELECTED'])) { + $this->selectoption['SELECTED'] = ''; + $this->selectoption['currentSEL'] = true; + } + if(isset($attr['VALUE'])) { + $attr['VALUE'] = strcode2utf($attr['VALUE']); + $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']); + if ($this->onlyCoreFonts) + $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8'); + } + $this->selectoption['currentVAL'] = $attr['VALUE']; + break; + + case 'TEXTAREA': + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; } + if(isset($attr['READONLY'])) { $objattr['readonly'] = true; } + if(isset($attr['REQUIRED'])) { $objattr['required'] = true; } + if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; } + if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; } + if ($this->onlyCoreFonts) + $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8'); + if ($this->useActiveForms) { + if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; } + $this->form->form_element_spacing['textarea']['outer']['v'] = 0; + $this->form->form_element_spacing['textarea']['inner']['v'] = 0; + if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; } + else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; } + if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; } + if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; } + if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; } + } + $this->InlineProperties[$tag] = $this->saveInlineProperties(); + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if (isset($properties['FONT-FAMILY'])) { + $this->SetFont($properties['FONT-FAMILY'],'',0,false); + } + if (isset($properties['FONT-SIZE'])) { + $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK); + $this->SetFontSize($mmsize*_MPDFK,false); + } + if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); } + $objattr['fontfamily'] = $this->FontFamily; + $objattr['fontsize'] = $this->FontSizePt; + if ($this->useActiveForms) { + if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; } + else if(isset($attr['ALIGN'])) { $objattr['text_align'] = $align[strtolower($attr['ALIGN'])]; } + if (isset($properties['OVERFLOW']) && strtolower($properties['OVERFLOW'])=='hidden') { $objattr['donotscroll'] = true; } + if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); } + if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); } + } + $this->SetLineHeight('',$this->form->textarea_lineheight); + $formLineHeight = $this->lineheight; + + $w = 0; + $h = 0; + if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; } + + $colsize = 20; //HTML default value + $rowsize = 2; //HTML default value + if (isset($attr['COLS'])) $colsize = intval($attr['COLS']); + if (isset($attr['ROWS'])) $rowsize = intval($attr['ROWS']); + + $charsize = $this->GetCharWidth('w',false); + if ($w) { $colsize = round(($w-($this->form->form_element_spacing['textarea']['outer']['h']*2)-($this->form->form_element_spacing['textarea']['inner']['h']*2))/$charsize); } + if ($h) { $rowsize = round(($h-($this->form->form_element_spacing['textarea']['outer']['v']*2)-($this->form->form_element_spacing['textarea']['inner']['v']*2))/$formLineHeight); } + + $objattr['type'] = 'textarea'; + $objattr['width'] = ($colsize * $charsize) + ($this->form->form_element_spacing['textarea']['outer']['h']*2)+($this->form->form_element_spacing['textarea']['inner']['h']*2); + $objattr['height'] = ($rowsize * $formLineHeight) + ($this->form->form_element_spacing['textarea']['outer']['v']*2)+($this->form->form_element_spacing['textarea']['inner']['v']*2); + $objattr['rows'] = $rowsize; + $objattr['cols'] = $colsize; + + $this->specialcontent = serialize($objattr); + + if ($this->tableLevel) { // *TABLES* + $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES* + } // *TABLES* + + // Clear properties - tidy up + $properties = array(); + break; + + + + // *********** FORM - INPUT ******************** + + case 'INPUT': + if (!isset($attr['TYPE'])) $attr['TYPE'] == 'TEXT'; + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['type'] = 'input'; + if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; } + if(isset($attr['READONLY'])) { $objattr['readonly'] = true; } + if(isset($attr['REQUIRED'])) { $objattr['required'] = true; } + if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; } + if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; } + else if(isset($attr['ALT'])) { $objattr['title'] = $attr['ALT']; } + else $objattr['title'] = ''; + $objattr['title'] = strcode2utf($objattr['title']); + $objattr['title'] = $this->lesser_entity_decode($objattr['title']); + if ($this->onlyCoreFonts) + $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8'); + if ($this->useActiveForms) { + if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; } + } + if(isset($attr['VALUE'])) { + $attr['VALUE'] = strcode2utf($attr['VALUE']); + $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']); + if ($this->onlyCoreFonts) + $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8'); + $objattr['value'] = $attr['VALUE']; + } + + $this->InlineProperties[$tag] = $this->saveInlineProperties(); + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + $objattr['vertical-align'] = ''; + + if (isset($properties['FONT-FAMILY'])) { + $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false); + } + if (isset($properties['FONT-SIZE'])) { + $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK)); + $this->SetFontSize($mmsize*_MPDFK,false); + } + if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); } + $objattr['fontfamily'] = $this->FontFamily; + $objattr['fontsize'] = $this->FontSizePt; + if ($this->useActiveForms) { + if(isset($attr['ALIGN'])) { $objattr['text_align'] = $align[strtolower($attr['ALIGN'])]; } + else if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; } + if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); } + if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); } + } + + $type = ''; + $texto=''; + $height = $this->FontSize; + $width = 0; + $spacesize = $this->GetCharWidth(' ',false); + + $w = 0; + if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']); + + if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; } + + switch(strtoupper($attr['TYPE'])){ + case 'HIDDEN': + $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + if ($this->useActiveForms) { + $this->form->SetFormText( 0, 0, $objattr['fieldname'], $objattr['value'], $objattr['value'], '', 0, '', true ); + } + if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); } + unset($this->InlineProperties[$tag]); + break 2; + case 'CHECKBOX': //Draw Checkbox + $type = 'CHECKBOX'; + if (isset($attr['CHECKED'])) { $objattr['checked'] = true; } + else { $objattr['checked'] = false; } + $width = $this->FontSize; + $height = $this->FontSize; + break; + + case 'RADIO': //Draw Radio button + $type = 'RADIO'; + if (isset($attr['CHECKED'])) $objattr['checked'] = true; + $width = $this->FontSize; + $height = $this->FontSize; + break; + +/*-- IMAGES-CORE --*/ + case 'IMAGE': // Draw an Image button + if(isset($attr['SRC'])) { + $type = 'IMAGE'; + $srcpath = $attr['SRC']; + $orig_srcpath = $attr['ORIG_SRC']; + // VSPACE and HSPACE converted to margins in MergeCSS + if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + + if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); } + if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); } + if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); } + if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); } + + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + + if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; } + + $w = 0; + $h = 0; + if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']); + if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width']); + + $extraheight = $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + // Image file + $info=$this->_getImage($srcpath, true, true, $orig_srcpath); + if(!$info) { + $info = $this->_getImage($this->noImageFile); + if ($info) { + $srcpath = $this->noImageFile; + $w = ($info['w'] * (25.4/$this->dpi)); + $h = ($info['h'] * (25.4/$this->dpi)); + } + } + if(!$info) break; + if ($info['cs']=='Indexed') { $objattr['Indexed'] = true; } + $objattr['file'] = $srcpath; + //Default width and height calculation if needed + if($w==0 and $h==0) { +/*-- IMAGES-WMF --*/ + if ($info['type']=='wmf') { + // WMF units are twips (1/20pt) + // divide by 20 to get points + // divide by k to get user units + $w = abs($info['w'])/(20*_MPDFK); + $h = abs($info['h']) / (20*_MPDFK); + } + else +/*-- END IMAGES-WMF --*/ + if ($info['type']=='svg') { + // SVG units are pixels + $w = abs($info['w'])/_MPDFK; + $h = abs($info['h'])/_MPDFK; + } + else { + //Put image at default image dpi + $w=($info['w']/_MPDFK) * (72/$this->img_dpi); + $h=($info['h']/_MPDFK) * (72/$this->img_dpi); + } + if (isset($properties['IMAGE-RESOLUTION'])) { + if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) { + $w *= $this->img_dpi / $info['set-dpi']; + $h *= $this->img_dpi / $info['set-dpi']; + } + else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) { + $dpi = $m[1]; + if ($dpi > 0) { + $w *= $this->img_dpi / $dpi; + $h *= $this->img_dpi / $dpi; + } + } + } + } + // IF WIDTH OR HEIGHT SPECIFIED + if($w==0) $w=$h*$info['w']/$info['h']; + if($h==0) $h=$w*$info['h']/$info['w']; + // Resize to maximum dimensions of page + $maxWidth = $this->blk[$this->blklvl]['inner_width']; + $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10) ; + if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; } + if ($w + $extrawidth > $maxWidth ) { + $w = $maxWidth - $extrawidth; + $h=$w*$info['h']/$info['w']; + } + if ($h + $extraheight > $maxHeight ) { + $h = $maxHeight - $extraheight; + $w=$h*$info['w']/$info['h']; + } + $height = $h + $extraheight; + $width = $w + $extrawidth; + $objattr['type'] = 'image'; + $objattr['itype'] = $info['type']; + $objattr['orig_h'] = $info['h']; + $objattr['orig_w'] = $info['w']; +/*-- IMAGES-WMF --*/ + if ($info['type']=='wmf') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } + else +/*-- END IMAGES-WMF --*/ + if ($info['type']=='svg') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + + $objattr['image_height'] = $h; + $objattr['image_width'] = $w; + $objattr['ID'] = $info['i']; + $texto = 'X'; + if ($this->useActiveForms) { + if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; } + $objattr['type'] = 'input'; + $type = 'IMAGE'; + } + break; + } +/*-- END IMAGES-CORE --*/ + + case 'BUTTON': // Draw a button + case 'SUBMIT': + case 'RESET': + $type = strtoupper($attr['TYPE']); + if ($type=='IMAGE') { $type = 'BUTTON'; } // src path not found + if(isset($attr['NOPRINT'])) { $objattr['noprint'] = true; } + if (!isset($attr['VALUE'])) { + $objattr['value'] = ucfirst(strtolower($type)); + } + + $texto = " " . $objattr['value'] . " "; + $width = $this->GetStringWidth($texto) + ($this->form->form_element_spacing['button']['outer']['h']*2)+($this->form->form_element_spacing['button']['inner']['h']*2); + $height = $this->FontSize + ($this->form->form_element_spacing['button']['outer']['v']*2)+($this->form->form_element_spacing['button']['inner']['v']*2); + if ($this->useActiveForms) { + if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; } + } + break; + + case 'PASSWORD': + case 'TEXT': + default: + if ($type == '') { $type = 'TEXT'; } + if(strtoupper($attr['TYPE'])=='PASSWORD') { $type = 'PASSWORD'; } + if (isset($attr['VALUE'])) { + if ($type == 'PASSWORD') { + $num_stars = mb_strlen($attr['VALUE'],$this->mb_enc ); + $texto = str_repeat('*',$num_stars); + } + else { $texto = $attr['VALUE']; } + } + $xw = ($this->form->form_element_spacing['input']['outer']['h']*2)+($this->form->form_element_spacing['input']['inner']['h']*2); + $xh = ($this->form->form_element_spacing['input']['outer']['v']*2)+($this->form->form_element_spacing['input']['inner']['v']*2); + if ($w) { $width = $w + $xw; } + else { $width = (20 * $spacesize) + $xw; } // Default width in chars + if (isset($attr['SIZE']) and ctype_digit($attr['SIZE']) ) $width = ($attr['SIZE'] * $spacesize) + $xw; + $height = $this->FontSize + $xh; + if (isset($attr['MAXLENGTH']) and ctype_digit($attr['MAXLENGTH']) ) $objattr['maxlength'] = $attr['MAXLENGTH']; + if ($this->useActiveForms) { + if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; } + else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; } + if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; } + if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; } + if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; } + } + break; + } + + $objattr['subtype'] = $type; + $objattr['text'] = $texto; + $objattr['width'] = $width; + $objattr['height'] = $height; + $e = "\xbb\xa4\xactype=input,objattr=".serialize($objattr)."\xbb\xa4\xac"; + + // Clear properties - tidy up + $properties = array(); + +/*-- TABLES --*/ + // Output it to buffers + if ($this->tableLevel) { + $this->_saveCellTextBuffer($e, $this->HREF); + $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; + + } + else { +/*-- END TABLES --*/ + $this->_saveTextBuffer($e, $this->HREF); + } // *TABLES* + + if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); } + unset($this->InlineProperties[$tag]); + + break; // END of INPUT +/*-- END FORMS --*/ + + + // *********** GRAPH ******************** + case 'JPGRAPH': + if (!$this->useGraphs) { break; } + if ($attr['TABLE']) { $gid = strtoupper($attr['TABLE']); } + else { $gid = '0'; } + if (!is_array($this->graphs[$gid]) || count($this->graphs[$gid])==0 ) { break; } + include_once(_MPDF_PATH.'graph.php'); + $this->graphs[$gid]['attr'] = $attr; + + + if (isset($this->graphs[$gid]['attr']['WIDTH']) && $this->graphs[$gid]['attr']['WIDTH']) { + $this->graphs[$gid]['attr']['cWIDTH']=$this->ConvertSize($this->graphs[$gid]['attr']['WIDTH'],$pgwidth); + } // mm + if (isset($this->graphs[$gid]['attr']['HEIGHT']) && $this->graphs[$gid]['attr']['HEIGHT']) { + $this->graphs[$gid]['attr']['cHEIGHT']=$this->ConvertSize($this->graphs[$gid]['attr']['HEIGHT'],$pgwidth); + } + + $graph_img = print_graph($this->graphs[$gid],$this->blk[$this->blklvl]['inner_width']); + if ($graph_img) { + if(isset($attr['ROTATE'])) { + if ($attr['ROTATE']==90 || $attr['ROTATE']==-90) { + $tmpw = $graph_img['w']; + $graph_img['w']= $graph_img['h']; + $graph_img['h']= $tmpw; + } + } + $attr['SRC'] = $graph_img['file']; + $attr['WIDTH'] = $graph_img['w']; + $attr['HEIGHT'] = $graph_img['h']; + } + else { break; } + + // *********** IMAGE ******************** +/*-- IMAGES-CORE --*/ + case 'IMG': + if ($this->progressBar) { $this->UpdateProgressBar(1,'','IMG'); } // *PROGRESS-BAR* + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + if(isset($attr['SRC'])) { + $srcpath = $attr['SRC']; + $orig_srcpath = $attr['ORIG_SRC']; + $properties = $this->cssmgr->MergeCSS('',$tag,$attr); + if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { + return; + } + // mPDF 5.6.01 - LAYERS + if (isset($properties['Z-INDEX']) && $this->currentlayer==0) { + $v = intval($properties['Z-INDEX']); + if ($v > 0) { + $objattr['z-index'] = $v; + } + } + + $objattr['visibility'] = 'visible'; + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { + $objattr['visibility'] = $v; + } + } + + // VSPACE and HSPACE converted to margins in MergeCSS + if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); } + if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); } + if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); } + if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); } + + if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; } + $w = 0; + $h = 0; + if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + // mPDF 5.5.15 // mPDF 5.6.60 + $maxw=$maxh=$minw=$minh=false; + if(isset($properties['MAX-WIDTH'])) $maxw = $this->ConvertSize($properties['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['MAX-WIDTH'])) $maxw = $this->ConvertSize($attr['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if(isset($properties['MAX-HEIGHT'])) $maxh = $this->ConvertSize($properties['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['MAX-HEIGHT'])) $maxh = $this->ConvertSize($attr['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if(isset($properties['MIN-WIDTH'])) $minw = $this->ConvertSize($properties['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['MIN-WIDTH'])) $minw = $this->ConvertSize($attr['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if(isset($properties['MIN-HEIGHT'])) $minh = $this->ConvertSize($properties['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + else if(isset($attr['MIN-HEIGHT'])) $minh = $this->ConvertSize($attr['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + + if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; } + if ($this->HREF) { + if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) { + $href = $this->HREF; + while(array_key_exists($href,$this->internallink)) $href="#".$href; + $this->internallink[$href] = $this->AddLink(); + $objattr['link'] = $this->internallink[$href]; + } + else { $objattr['link'] = $this->HREF; } + } + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + +/*-- BACKGROUNDS --*/ + if(isset($properties['GRADIENT-MASK']) && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/',$properties['GRADIENT-MASK'])) { + $objattr['GRADIENT-MASK'] = $properties['GRADIENT-MASK']; + } +/*-- END BACKGROUNDS --*/ + + // Image file + $info=$this->_getImage($srcpath, true, true, $orig_srcpath); + if(!$info) { + $info = $this->_getImage($this->noImageFile); + if ($info) { + $srcpath = $this->noImageFile; + $w = ($info['w'] * (25.4/$this->dpi)); + $h = ($info['h'] * (25.4/$this->dpi)); + } + } + if(!$info) break; + + if(isset($attr['ROTATE'])) { $image_orientation = $attr['ROTATE']; } + else if(isset($properties['IMAGE-ORIENTATION'])) { $image_orientation = $properties['IMAGE-ORIENTATION']; } + else { $image_orientation = 0; } + if($image_orientation) { + if ($image_orientation==90 || $image_orientation==-90 || $image_orientation==270) { + $tmpw = $info['w']; + $info['w'] = $info['h']; + $info['h'] = $tmpw; + } + $objattr['ROTATE'] = $image_orientation; + } + + $objattr['file'] = $srcpath; + //Default width and height calculation if needed + if($w==0 and $h==0) { +/*-- IMAGES-WMF --*/ + if ($info['type']=='wmf') { + // WMF units are twips (1/20pt) + // divide by 20 to get points + // divide by k to get user units + $w = abs($info['w'])/(20*_MPDFK); + $h = abs($info['h']) / (20*_MPDFK); + } + else +/*-- END IMAGES-WMF --*/ + if ($info['type']=='svg') { + // SVG units are pixels + $w = abs($info['w'])/_MPDFK; + $h = abs($info['h'])/_MPDFK; + } + else { + //Put image at default image dpi + $w=($info['w']/_MPDFK) * (72/$this->img_dpi); + $h=($info['h']/_MPDFK) * (72/$this->img_dpi); + } + if (isset($properties['IMAGE-RESOLUTION'])) { + if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) { + $w *= $this->img_dpi / $info['set-dpi']; + $h *= $this->img_dpi / $info['set-dpi']; + } + else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) { + $dpi = $m[1]; + if ($dpi > 0) { + $w *= $this->img_dpi / $dpi; + $h *= $this->img_dpi / $dpi; + } + } + } + } + // IF WIDTH OR HEIGHT SPECIFIED + if($w==0) $w=abs($h*$info['w']/$info['h']); + if($h==0) $h=abs($w*$info['h']/$info['w']); + + // mPDF 5.5.15 + if ($minw && $w<$minw) { $w = $minw; $h=abs($w*$info['h']/$info['w']); } + if ($maxw && $w>$maxw) { $w = $maxw; $h=abs($w*$info['h']/$info['w']); } + if ($minh && $h<$minh) { $h = $minh; $w=abs($h*$info['w']/$info['h']); } + if ($maxh && $h>$maxh) { $h = $maxh; $w=abs($h*$info['w']/$info['h']); } + + // Resize to maximum dimensions of page + $maxWidth = $this->blk[$this->blklvl]['inner_width']; + $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ; + if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; } + if ($w + $extrawidth > $maxWidth ) { + $w = $maxWidth - $extrawidth; + $h=abs($w*$info['h']/$info['w']); + } + + if ($h + $extraheight > $maxHeight ) { + $h = $maxHeight - $extraheight; + $w=abs($h*$info['w']/$info['h']); + } + $objattr['type'] = 'image'; + $objattr['itype'] = $info['type']; + + $objattr['orig_h'] = $info['h']; + $objattr['orig_w'] = $info['w']; +/*-- IMAGES-WMF --*/ + if ($info['type']=='wmf') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } + else +/*-- END IMAGES-WMF --*/ + if ($info['type']=='svg') { + $objattr['wmf_x'] = $info['x']; + $objattr['wmf_y'] = $info['y']; + } + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['image_height'] = $h; + $objattr['image_width'] = $w; +/*-- CSS-IMAGE-FLOAT --*/ + if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) { + if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) { + $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1); + } + } +/*-- END CSS-IMAGE-FLOAT --*/ + + $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac"; + + // Clear properties - tidy up + $properties = array(); + +/*-- TABLES --*/ + // Output it to buffers + if ($this->tableLevel) { + $this->_saveCellTextBuffer($e, $this->HREF); + $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; + } + else { +/*-- END TABLES --*/ + $this->_saveTextBuffer($e, $this->HREF); + } // *TABLES* +/*-- ANNOTATIONS --*/ + if ($this->title2annots && isset($attr['TITLE'])) { + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['CONTENT'] = $attr['TITLE']; + $objattr['type'] = 'annot'; + $objattr['POS-X'] = 0; + $objattr['POS-Y'] = 0; + $objattr['ICON'] = 'Comment'; + $objattr['AUTHOR'] = ''; + $objattr['SUBJECT'] = ''; + $objattr['OPACITY'] = $this->annotOpacity; + $objattr['COLOR'] = $this->ConvertColor('yellow'); + $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac"; + if($this->tableLevel) { // *TABLES* + $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->textbuffer[] = array($e); + } // *TABLES* + } +/*-- END ANNOTATIONS --*/ + } + break; +/*-- END IMAGES-CORE --*/ + + + // *********** CIRCULAR TEXT = TEXTCIRCLE ******************** + case 'TEXTCIRCLE': + $objattr = array(); + $objattr['margin_top'] = 0; + $objattr['margin_bottom'] = 0; + $objattr['margin_left'] = 0; + $objattr['margin_right'] = 0; + $objattr['padding_top'] = 0; + $objattr['padding_bottom'] = 0; + $objattr['padding_left'] = 0; + $objattr['padding_right'] = 0; + $objattr['width'] = 0; + $objattr['height'] = 0; + $objattr['border_top']['w'] = 0; + $objattr['border_bottom']['w'] = 0; + $objattr['border_left']['w'] = 0; + $objattr['border_right']['w'] = 0; + $objattr['top-text'] = ''; + $objattr['bottom-text'] = ''; + $objattr['r'] = 20; // radius (default value here for safety) + $objattr['space-width'] = 120; + $objattr['char-width'] = 100; + + $this->InlineProperties[$tag] = $this->saveInlineProperties(); + $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr); + + if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { + return; + } + if (isset($attr['R'])) { $objattr['r']=$this->ConvertSize($attr['R'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if(isset($attr['TOP-TEXT'])) { + $objattr['top-text'] = strcode2utf($attr['TOP-TEXT']); + $objattr['top-text'] = $this->lesser_entity_decode($objattr['top-text']); + if ($this->onlyCoreFonts) + $objattr['top-text'] = mb_convert_encoding($objattr['top-text'], $this->mb_enc,'UTF-8'); + } + if(isset($attr['BOTTOM-TEXT'])) { + $objattr['bottom-text'] = strcode2utf($attr['BOTTOM-TEXT']); + $objattr['bottom-text'] = $this->lesser_entity_decode($objattr['bottom-text']); + if ($this->onlyCoreFonts) + $objattr['bottom-text'] = mb_convert_encoding($objattr['bottom-text'], $this->mb_enc,'UTF-8'); + } + if(isset($attr['SPACE-WIDTH']) && $attr['SPACE-WIDTH']) { $objattr['space-width'] = $attr['SPACE-WIDTH']; } + if(isset($attr['CHAR-WIDTH']) && $attr['CHAR-WIDTH']) { $objattr['char-width'] = $attr['CHAR-WIDTH']; } + + // VISIBILITY + $objattr['visibility'] = 'visible'; + if (isset($properties['VISIBILITY'])) { + $v = strtolower($properties['VISIBILITY']); + if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { + $objattr['visibility'] = $v; + } + } + // mPDF 5.5.23 + if (isset($properties['FONT-SIZE'])) { + if (strtolower($properties['FONT-SIZE'])=='auto') { + if ($objattr['top-text'] && $objattr['bottom-text']) { + $objattr['fontsize'] = -2; + } + else { + $objattr['fontsize'] = -1; + } + } + else { + $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK)); + $this->SetFontSize($mmsize*_MPDFK,false); + $objattr['fontsize'] = $this->FontSizePt; + } + } + // mPDF 5.5.23 + if(isset($attr['DIVIDER'])) { + $objattr['divider'] = strcode2utf($attr['DIVIDER']); + $objattr['divider'] = $this->lesser_entity_decode($objattr['divider']); + if ($this->onlyCoreFonts) + $objattr['divider'] = mb_convert_encoding($objattr['divider'], $this->mb_enc,'UTF-8'); + + } + + if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); } + + $objattr['fontstyle'] = ''; + if (isset($properties['FONT-WEIGHT'])) { + if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $objattr['fontstyle'] .= 'B'; } + } + if (isset($properties['FONT-STYLE'])) { + if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $objattr['fontstyle'] .= 'I'; } + } + + if (isset($properties['FONT-FAMILY'])) { + $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false); + } + $objattr['fontfamily'] = $this->FontFamily; + + // VSPACE and HSPACE converted to margins in MergeCSS + if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); } + if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); } + if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); } + if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); } + + if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; } + if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); } + else { $objattr['bgcolor'] = false; } + if ($this->HREF) { + if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) { + $href = $this->HREF; + while(array_key_exists($href,$this->internallink)) $href="#".$href; + $this->internallink[$href] = $this->AddLink(); + $objattr['link'] = $this->internallink[$href]; + } + else { $objattr['link'] = $this->HREF; } + } + $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w']; + $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w']; + + + $w = $objattr['r']*2; + $h = $w; + $objattr['height'] = $h + $extraheight; + $objattr['width'] = $w + $extrawidth; + $objattr['type'] = 'textcircle'; + + $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac"; + + // Clear properties - tidy up + $properties = array(); + +/*-- TABLES --*/ + // Output it to buffers + if ($this->tableLevel) { + $this->_saveCellTextBuffer($e, $this->HREF); + $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; + } + else { +/*-- END TABLES --*/ + $this->_saveTextBuffer($e, $this->HREF); + } // *TABLES* + + if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); } + unset($this->InlineProperties[$tag]); + + break; + + +/*-- TABLES --*/ + + case 'TABLE': // TABLE-BEGIN + $this->tdbegin = false; + $this->lastoptionaltag = ''; + // Disable vertical justification in columns + if ($this->ColActive) { $this->colvAlign = ''; } // *COLUMNS* + if ($this->lastblocklevelchange == 1) { $blockstate = 1; } // Top margins/padding only + else if ($this->lastblocklevelchange < 1) { $blockstate = 0; } // NO margins/padding + // called from block after new div e.g.
      ... ... Outputs block top margin/border and padding + if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) { + $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']); + $this->finishFlowingBlock(true); // true = END of flowing block + } + else if (!$this->tableLevel && count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); } + + $this->textbuffer=array(); + $this->lastblocklevelchange = -1; + if ($this->tableLevel) { // i.e. now a nested table coming... + // Save current level table + // mPDF 5.4.10 + $this->cell['PARENTCELL'] = $this->saveInlineProperties(); + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties']= $this->base_table_properties; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow'] = $this->row; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol'] = $this->col; + } + $this->tableLevel++; + $this->cssmgr->tbCSSlvl++; + + if ($this->tableLevel>1) { // inherit table properties from cell in which nested + $this->base_table_properties['FONT-KERNING'] = $this->kerning ; + $this->base_table_properties['LETTER-SPACING'] = $this->lSpacingCSS ; + $this->base_table_properties['WORD-SPACING'] = $this->wSpacingCSS ; + } + + if (isset($this->tbctr[$this->tableLevel])) { $this->tbctr[$this->tableLevel]++; } + else { $this->tbctr[$this->tableLevel] = 1; } + + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['level'] = $this->tableLevel; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['levelid'] = $this->tbctr[$this->tableLevel]; + + if ($this->tableLevel > $this->innermostTableLevel) { $this->innermostTableLevel = $this->tableLevel; } + if ($this->tableLevel > 1) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nestedpos'] = array($this->row,$this->col,$this->tbctr[($this->tableLevel-1)]); + } + //++++++++++++++++++++++++++++ + + $this->cell = array(); + $this->col=-1; //int + $this->row=-1; //int + $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]; + + // New table - any level + if ($this->cacheTables) { + $this->packTableData = true; // required for cacheTables + $this->simpleTables = false; // Cannot co-exist with cacheTables + $table['cache'] = _MPDF_TEMP_PATH.'_tempTblCache'.RAND(1,1000000).'.dat'; + $fh = fopen($table['cache'] , "wb") or $this->Error("When using cacheTables, you must have read/write access to cache files (".$table['cache'] .")"); + fwrite($fh, "\x00"); + fclose($fh); + $table['ptr'] = 1 ; // Must not be 0 + } + + $table['direction'] = $this->directionality; + $table['bgcolor'] = false; + $table['va'] = false; + $table['txta'] = false; + $table['topntail'] = false; + $table['thead-underline'] = false; + $table['border'] = false; + $table['border_details']['R']['w'] = 0; + $table['border_details']['L']['w'] = 0; + $table['border_details']['T']['w'] = 0; + $table['border_details']['B']['w'] = 0; + $table['border_details']['R']['style'] = ''; + $table['border_details']['L']['style'] = ''; + $table['border_details']['T']['style'] = ''; + $table['border_details']['B']['style'] = ''; + $table['max_cell_border_width']['R'] = 0; + $table['max_cell_border_width']['L'] = 0; + $table['max_cell_border_width']['T'] = 0; + $table['max_cell_border_width']['B'] = 0; + $table['padding']['L'] = false; + $table['padding']['R'] = false; + $table['padding']['T'] = false; + $table['padding']['B'] = false; + $table['margin']['L'] = false; + $table['margin']['R'] = false; + $table['margin']['T'] = false; + $table['margin']['B'] = false; + $table['a'] = false; + $table['border_spacing_H'] = false; + $table['border_spacing_V'] = false; + $table['decimal_align'] = false; // mPDF 5.6.13 + $this->Reset(); + $this->InlineProperties = array(); + $this->spanlvl = 0; + $table['nc'] = $table['nr'] = 0; + $this->tablethead = 0; + $this->tabletfoot = 0; + $this->tabletheadjustfinished = false; + + + if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins && $this->tableLevel==1) { $lastbottommargin = $this->lastblockbottommargin; } + else { $lastbottommargin = 0; } + $this->lastblockbottommargin = 0; + $this->blockjustfinished=false; + + if ($this->tableLevel==1) { + $this->tableCJK = false; + $this->table_lineheight = $this->normalLineheight; + $table['headernrows'] = 0; + $table['footernrows'] = 0; + $this->base_table_properties = array(); + } + + // ADDED CSS FUNCIONS FOR TABLE + if ($this->cssmgr->tbCSSlvl==1) { + $properties = $this->cssmgr->MergeCSS('TOPTABLE',$tag,$attr); + } + else { + $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr); + } + $w = ''; + if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; } + else if (isset($attr['WIDTH']) && $attr['WIDTH']) { $w = $attr['WIDTH']; } + + + if(isset($properties['DIRECTION']) && $properties['DIRECTION']) { $table['direction'] = strtolower($properties['DIRECTION']); } + else if(isset($attr['DIR']) && $attr['DIR']) { $table['direction'] = strtolower($attr['DIR']); } + else if (!isset($table['direction'])){ $table['direction'] = $this->blk[$this->blklvl]['direction']; } + + if (isset($properties['BACKGROUND-COLOR'])) { $table['bgcolor'][-1] = $properties['BACKGROUND-COLOR']; } + else if (isset($properties['BACKGROUND'])) { $table['bgcolor'][-1] = $properties['BACKGROUND']; } + else if (isset($attr['BGCOLOR'])) { $table['bgcolor'][-1] = $attr['BGCOLOR']; } + if (isset($properties['VERTICAL-ALIGN'])) { $table['va'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; } + if (isset($properties['TEXT-ALIGN'])) { $table['txta'] = $align[strtolower($properties['TEXT-ALIGN'])]; } + if (isset($attr['ALIGN'])) { $table['a'] = $align[strtolower($attr['ALIGN'])]; } + if (!$table['a']) { + if ($table['direction'] == 'rtl' ) { $table['a'] = 'R'; } + else { $table['a'] = 'L'; } + } + + if (isset($properties['AUTOSIZE']) && $properties['AUTOSIZE'] && $this->tableLevel ==1) { + $this->shrink_this_table_to_fit = $properties['AUTOSIZE']; + if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 0; } + } + if (isset($properties['ROTATE']) && $properties['ROTATE'] && $this->tableLevel ==1) { + $this->table_rotate = $properties['ROTATE']; + } + if (isset($properties['TOPNTAIL'])) { $table['topntail'] = $properties['TOPNTAIL']; } + if (isset($properties['THEAD-UNDERLINE'])) { $table['thead-underline'] = $properties['THEAD-UNDERLINE']; } + + if (isset($properties['BORDER'])) { + $bord = $this->border_details($properties['BORDER']); + if ($bord['s']) { + $table['border'] = _BORDER_ALL; + $table['border_details']['R'] = $bord; + $table['border_details']['L'] = $bord; + $table['border_details']['T'] = $bord; + $table['border_details']['B'] = $bord; + } + } + if (isset($properties['BORDER-RIGHT'])) { + if ($table['direction'] == 'rtl') { // *RTL* + $table['border_details']['R'] = $this->border_details($properties['BORDER-LEFT']); // *RTL* + } // *RTL* + else { // *RTL* + $table['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']); + } // *RTL* + $this->setBorder($table['border'], _BORDER_RIGHT, $table['border_details']['R']['s']); + } + if (isset($properties['BORDER-LEFT'])) { + if ($table['direction'] == 'rtl') { // *RTL* + $table['border_details']['L'] = $this->border_details($properties['BORDER-RIGHT']); // *RTL* + } // *RTL* + else { // *RTL* + $table['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']); + } // *RTL* + $this->setBorder($table['border'], _BORDER_LEFT, $table['border_details']['L']['s']); + } + if (isset($properties['BORDER-BOTTOM'])) { + $table['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']); + $this->setBorder($table['border'], _BORDER_BOTTOM, $table['border_details']['B']['s']); + } + if (isset($properties['BORDER-TOP'])) { + $table['border_details']['T'] = $this->border_details($properties['BORDER-TOP']); + $this->setBorder($table['border'], _BORDER_TOP, $table['border_details']['T']['s']); + } + if ($table['border']){ + $this->table_border_css_set = 1; + } + else { + $this->table_border_css_set = 0; + } + + if (isset($properties['FONT-FAMILY'])) { + $this->default_font = $properties['FONT-FAMILY']; + $this->SetFont($this->default_font,'',0,false); + } + $this->base_table_properties['FONT-FAMILY'] = $this->FontFamily; // mPDF 5.4.10 + + if (isset($properties['FONT-SIZE'])) { + // mPDF 5.4.10 + if ($this->tableLevel>1) { $mmsize = $this->ConvertSize($properties['FONT-SIZE'], $this->base_table_properties['FONT-SIZE']); } + else { $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK); } + if ($mmsize) { + $this->default_font_size = $mmsize*(_MPDFK); + $this->SetFontSize($this->default_font_size,false); + } + } + $this->base_table_properties['FONT-SIZE'] = $this->FontSize.'mm'; // mPDF 5.4.10 + + if (isset($properties['FONT-WEIGHT'])) { + if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->base_table_properties['FONT-WEIGHT'] = 'BOLD'; } + } + if (isset($properties['FONT-STYLE'])) { + if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->base_table_properties['FONT-STYLE'] = 'ITALIC'; } + } + if (isset($properties['COLOR'])) { + $this->base_table_properties['COLOR'] = $properties['COLOR']; + } + if (isset($properties['FONT-KERNING'])) { + $this->base_table_properties['FONT-KERNING'] = $properties['FONT-KERNING']; + } + if (isset($properties['LETTER-SPACING'])) { + $this->base_table_properties['LETTER-SPACING'] = $properties['LETTER-SPACING']; + } + if (isset($properties['WORD-SPACING'])) { + $this->base_table_properties['WORD-SPACING'] = $properties['WORD-SPACING']; + } + + if (isset($properties['PADDING-LEFT'])) { + $table['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['PADDING-RIGHT'])) { + $table['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['PADDING-TOP'])) { + $table['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['PADDING-BOTTOM'])) { + $table['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + + if (isset($properties['MARGIN-TOP'])) { + if ($lastbottommargin) { + $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; } + else { $properties['MARGIN-TOP'] = 0; } + } + $table['margin']['T'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + + if (isset($properties['MARGIN-BOTTOM'])) { + $table['margin']['B'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['MARGIN-LEFT'])) { + $table['margin']['L'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + + if (isset($properties['MARGIN-RIGHT'])) { + $table['margin']['R'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') { + $table['a'] = 'C'; + } + else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { + $table['a'] = 'R'; + } + else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { + $table['a'] = 'L'; + } + + if (isset($properties['LINE-HEIGHT']) && $this->tableLevel==1) { + $this->table_lineheight = $this->fixLineheight($properties['LINE-HEIGHT']); + if (!$this->table_lineheight) { $this->table_lineheight = $this->normalLineheight; } + } + + if (isset($properties['BORDER-COLLAPSE']) && strtoupper($properties['BORDER-COLLAPSE'])=='SEPARATE') { + $table['borders_separate'] = true; + } + else { + $table['borders_separate'] = false; + } + + if (!$table['borders_separate']) { $table['border_spacing_H'] = $table['border_spacing_V'] = 0; } + else if (isset($attr['CELLSPACING'])) { + $table['border_spacing_H'] = $table['border_spacing_V'] = $this->ConvertSize($attr['CELLSPACING'],$this->blk[$this->blklvl]['inner_width']); + } + if (isset($properties['BORDER-SPACING-H'])) { + $table['border_spacing_H'] = $this->ConvertSize($properties['BORDER-SPACING-H'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['BORDER-SPACING-V'])) { + $table['border_spacing_V'] = $this->ConvertSize($properties['BORDER-SPACING-V'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + + if (isset($properties['EMPTY-CELLS'])) { + $table['empty_cells'] = strtolower($properties['EMPTY-CELLS']); // 'hide' or 'show' + } + else { $table['empty_cells'] = ''; } + + if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE'])=='AVOID' && $this->tableLevel==1 && !$this->writingHTMLfooter) { + $this->table_keep_together = true; + } + else if ($this->tableLevel==1) { + $this->table_keep_together = false; + } + if (isset($properties['PAGE-BREAK-AFTER']) && $this->tableLevel==1) { + $table['page_break_after'] = strtoupper($properties['PAGE-BREAK-AFTER']); + } + +/*-- BACKGROUNDS --*/ + if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $table['gradient'] = $properties['BACKGROUND-GRADIENT']; } + + if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) { + $ret = $this->SetBackground($properties, $currblk['inner_width']); + if ($ret) { $table['background-image'] = $ret; } + } +/*-- END BACKGROUNDS --*/ + + if (isset($properties['OVERFLOW'])) { + $table['overflow'] = strtolower($properties['OVERFLOW']); // 'hidden' 'wrap' or 'visible' or 'auto' + if (($this->ColActive || $this->tableLevel>1) && $table['overflow']=='visible') { unset($table['overflow']); } + } + + $properties = array(); + + + + if (isset($attr['CELLPADDING'])) { + $table['cell_padding'] = $attr['CELLPADDING']; + } + else { + $table['cell_padding'] = false; + } + + if (isset($attr['BORDER']) && $attr['BORDER']=='1') { // mPDF 5.5.08 + $this->table_border_attr_set = 1; // mPDF 5.5.08 + $bord = $this->border_details('#000000 1px solid'); + if ($bord['s']) { + $table['border'] = _BORDER_ALL; + $table['border_details']['R'] = $bord; + $table['border_details']['L'] = $bord; + $table['border_details']['T'] = $bord; + $table['border_details']['B'] = $bord; + } + } + else { + $this->table_border_attr_set = 0; + } + + if ($w) { + $maxwidth = $this->blk[$this->blklvl]['inner_width']; + if ($table['borders_separate']) { + $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['border_details']['L']['w']/2 + $table['border_details']['R']['w']/2; + } + else { + $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2; + } + if (strpos($w,'%') && $this->tableLevel == 1 && !$this->ignore_table_percents ) { + // % needs to be of inner box without table margins etc. + $maxwidth -= $tblblw ; + $wmm = $this->ConvertSize($w,$maxwidth,$this->FontSize,false); + $table['w'] = $wmm + $tblblw ; + } + if (strpos($w,'%') && $this->tableLevel > 1 && !$this->ignore_table_percents && $this->keep_table_proportions) { + $table['wpercent'] = $w + 0; // makes 80% -> 80 + } + if (!strpos($w,'%') && !$this->ignore_table_widths ) { + $wmm = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + $table['w'] = $wmm + $tblblw ; + } + if (!$this->keep_table_proportions) { + if (isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width']) { $table['w'] = $this->blk[$this->blklvl]['inner_width']; } + } + } + + if (isset($attr['AUTOSIZE']) && $this->tableLevel==1) { + $this->shrink_this_table_to_fit = $attr['AUTOSIZE']; + if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 1; } + } + if (isset($attr['ROTATE']) && $this->tableLevel==1) { + $this->table_rotate = $attr['ROTATE']; + } + + //++++++++++++++++++++++++++++ + // keeping block together on one page + // Autosize is now forced therefore keep block together disabled + if ($this->keep_block_together) { + $this->keep_block_together = 0; + $this->printdivbuffer(); + $this->blk[$this->blklvl]['keep_block_together'] = 0; + } + if ($this->table_rotate) { + $this->tbrot_Links = array(); + $this->tbrot_Annots = array(); + $this->tbrotForms = array(); + $this->tbrot_Reference = array(); + $this->tbrot_BMoutlines = array(); + $this->tbrot_toc = array(); + } + + if ($this->kwt) { + if ($this->table_rotate) { $this->table_keep_together = true; } + $this->kwt = false; + $this->kwt_saved = true; + } + + if ($this->tableLevel==1 && $this->useGraphs) { + if (isset($attr['ID']) && $attr['ID']) { $this->currentGraphId = strtoupper($attr['ID']); } + else { $this->currentGraphId = '0'; } + $this->graphs[$this->currentGraphId] = array(); + } + //++++++++++++++++++++++++++++ + $this->plainCell_properties = array(); + unset($table); + break; + + case 'THEAD': + $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag + $this->cssmgr->tbCSSlvl++; + $this->tablethead = 1; + $this->tabletfoot = 0; + $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr); + if (isset($properties['FONT-WEIGHT'])) { + if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->thead_font_weight = 'B'; } + else { $this->thead_font_weight = ''; } + } + + if (isset($properties['FONT-STYLE'])) { + if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->thead_font_style = 'I'; } + else { $this->thead_font_style = ''; } + } + if (isset($properties['FONT-VARIANT'])) { + if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->thead_font_smCaps = 'S'; } + else { $this->thead_font_smCaps = ''; } + } + + if (isset($properties['VERTICAL-ALIGN'])) { + $this->thead_valign_default = $properties['VERTICAL-ALIGN']; + } + if (isset($properties['TEXT-ALIGN'])) { + $this->thead_textalign_default = $properties['TEXT-ALIGN']; + } + $properties = array(); + break; + + case 'TFOOT': + $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag + $this->cssmgr->tbCSSlvl++; + $this->tabletfoot = 1; + $this->tablethead = 0; + $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr); + if (isset($properties['FONT-WEIGHT'])) { + if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->tfoot_font_weight = 'B'; } + else { $this->tfoot_font_weight = ''; } + } + + if (isset($properties['FONT-STYLE'])) { + if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->tfoot_font_style = 'I'; } + else { $this->tfoot_font_style = ''; } + } + if (isset($properties['FONT-VARIANT'])) { + if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->tfoot_font_smCaps = 'S'; } + else { $this->tfoot_font_smCaps = ''; } + } + + if (isset($properties['VERTICAL-ALIGN'])) { + $this->tfoot_valign_default = $properties['VERTICAL-ALIGN']; + } + if (isset($properties['TEXT-ALIGN'])) { + $this->tfoot_textalign_default = $properties['TEXT-ALIGN']; + } + $properties = array(); + break; + + + case 'TBODY': + $this->tablethead = 0; + $this->tabletfoot = 0; + $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag + $this->cssmgr->tbCSSlvl++; + $this->cssmgr->MergeCSS('TABLE',$tag,$attr); + break; + + + case 'TR': + $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag + $this->cssmgr->tbCSSlvl++; + $this->row++; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']++; + $this->col = -1; + $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr); + + if (!$this->simpleTables && (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate']) || !$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate'])) { + if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row] = $properties['BORDER-LEFT']; } + if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row] = $properties['BORDER-RIGHT']; } + if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-top'][$this->row] = $properties['BORDER-TOP']; } + if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-bottom'][$this->row] = $properties['BORDER-BOTTOM']; } + } + + if (isset($properties['BACKGROUND-COLOR'])) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $properties['BACKGROUND-COLOR']; } + else if (isset($attr['BGCOLOR'])) $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $attr['BGCOLOR']; + +/*-- BACKGROUNDS --*/ + if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$this->row] = $properties['BACKGROUND-GRADIENT']; } + + if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) { + $ret = $this->SetBackground($properties, $currblk['inner_width']); + if ($ret) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$this->row] = $ret; } + } +/*-- END BACKGROUNDS --*/ + + + if (isset($properties['TEXT-ROTATE'])) { + $this->trow_text_rotate = $properties['TEXT-ROTATE']; + } + if (isset($attr['TEXT-ROTATE'])) $this->trow_text_rotate = $attr['TEXT-ROTATE']; + + if ($this->tablethead) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true; } + if ($this->tabletfoot) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true; } + $properties = array(); + break; + + + case 'TH': + case 'TD': + $this->ignorefollowingspaces = true; + $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag + $this->cssmgr->tbCSSlvl++; + $this->InlineProperties = array(); + $this->spanlvl = 0; + $this->tdbegin = true; + $this->col++; + while (isset($this->cell[$this->row][$this->col])) { $this->col++; } + + //Update number column + if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] < $this->col+1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] = $this->col+1; } + + $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]; + + $c = array('a' => false, + 'R' => false, + 'nowrap' => false, + 'bgcolor' => false, + 'padding' => array('L' => false, + 'R' => false, + 'T' => false, + 'B' => false + ) + ); + + if ($this->simpleTables && $this->row==0 && $this->col==0){ + $table['simple']['border'] = false; + $table['simple']['border_details']['R']['w'] = 0; + $table['simple']['border_details']['L']['w'] = 0; + $table['simple']['border_details']['T']['w'] = 0; + $table['simple']['border_details']['B']['w'] = 0; + $table['simple']['border_details']['R']['style'] = ''; + $table['simple']['border_details']['L']['style'] = ''; + $table['simple']['border_details']['T']['style'] = ''; + $table['simple']['border_details']['B']['style'] = ''; + } + else if (!$this->simpleTables) { + $c['border'] = false; + $c['border_details']['R']['w'] = 0; + $c['border_details']['L']['w'] = 0; + $c['border_details']['T']['w'] = 0; + $c['border_details']['B']['w'] = 0; + $c['border_details']['mbw']['BL'] = 0; + $c['border_details']['mbw']['BR'] = 0; + $c['border_details']['mbw']['RT'] = 0; + $c['border_details']['mbw']['RB'] = 0; + $c['border_details']['mbw']['TL'] = 0; + $c['border_details']['mbw']['TR'] = 0; + $c['border_details']['mbw']['LT'] = 0; + $c['border_details']['mbw']['LB'] = 0; + $c['border_details']['R']['style'] = ''; + $c['border_details']['L']['style'] = ''; + $c['border_details']['T']['style'] = ''; + $c['border_details']['B']['style'] = ''; + $c['border_details']['R']['s'] = 0; + $c['border_details']['L']['s'] = 0; + $c['border_details']['T']['s'] = 0; + $c['border_details']['B']['s'] = 0; + $c['border_details']['R']['c'] = $this->ConvertColor(0); + $c['border_details']['L']['c'] = $this->ConvertColor(0); + $c['border_details']['T']['c'] = $this->ConvertColor(0); + $c['border_details']['B']['c'] = $this->ConvertColor(0); + $c['border_details']['R']['dom'] = 0; + $c['border_details']['L']['dom'] = 0; + $c['border_details']['T']['dom'] = 0; + $c['border_details']['B']['dom'] = 0; + } + + + if ($table['va']) { $c['va'] = $table['va']; } + if ($table['txta']) { $c['a'] = $table['txta']; } + if ($this->table_border_attr_set) { + if ($table['border_details']) { + if (!$this->simpleTables){ + $c['border_details']['R'] = $table['border_details']['R']; + $c['border_details']['L'] = $table['border_details']['L']; + $c['border_details']['T'] = $table['border_details']['T']; + $c['border_details']['B'] = $table['border_details']['B']; + $c['border'] = $table['border']; + $c['border_details']['L']['dom'] = 1; + $c['border_details']['R']['dom'] = 1; + $c['border_details']['T']['dom'] = 1; + $c['border_details']['B']['dom'] = 1; + } + else if ($this->simpleTables && $this->row==0 && $this->col==0){ + $table['simple']['border_details']['R'] = $table['border_details']['R']; + $table['simple']['border_details']['L'] = $table['border_details']['L']; + $table['simple']['border_details']['T'] = $table['border_details']['T']; + $table['simple']['border_details']['B'] = $table['border_details']['B']; + $table['simple']['border'] = $table['border']; + } + } + } + // INHERITED THEAD CSS Properties + if ($this->tablethead) { + if ($this->thead_valign_default) $c['va'] = $align[strtolower($this->thead_valign_default)]; + if ($this->thead_textalign_default) $c['a'] = $align[strtolower($this->thead_textalign_default)]; + if ($this->thead_font_weight == 'B') { $this->SetStyle('B',true); } + if ($this->thead_font_style == 'I') { $this->SetStyle('I',true); } + if ($this->thead_font_smCaps == 'S') { $this->SetStyle('S',true); } + } + + // INHERITED TFOOT CSS Properties + if ($this->tabletfoot) { + if ($this->tfoot_valign_default) $c['va'] = $align[strtolower($this->tfoot_valign_default)]; + if ($this->tfoot_textalign_default) $c['a'] = $align[strtolower($this->tfoot_textalign_default)]; + if ($this->tfoot_font_weight == 'B') { $this->SetStyle('B',true); } + if ($this->tfoot_font_style == 'I') { $this->SetStyle('I',true); } + if ($this->tfoot_font_style == 'S') { $this->SetStyle('S',true); } + } + + + if ($this->trow_text_rotate){ + $c['R'] = $this->trow_text_rotate; + } + + $this->cell_border_dominance_L = 0; + $this->cell_border_dominance_R = 0; + $this->cell_border_dominance_T = 0; + $this->cell_border_dominance_B = 0; + + $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr); + $properties = $this->cssmgr->array_merge_recursive_unique($this->base_table_properties, $properties); + + if (isset($properties['FONT-KERNING']) && (strtoupper($properties['FONT-KERNING'])=='NORMAL' || strtoupper($properties['FONT-KERNING'])=='AUTO')) { + $this->kerning = true; + } + else { $this->kerning = false; } + + if (isset($properties['LETTER-SPACING']) && ($properties['LETTER-SPACING'] || $properties['LETTER-SPACING']==='0') && strtoupper($properties['LETTER-SPACING']) != 'NORMAL') { + $this->lSpacingCSS = strtoupper($properties['LETTER-SPACING']); + $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); + } + else { + $this->lSpacingCSS = ''; + $this->fixedlSpacing = false; + } + if (isset($properties['WORD-SPACING']) && strtoupper($properties['WORD-SPACING']) != 'NORMAL') { + $this->wSpacingCSS = strtoupper($properties['WORD-SPACING']); + $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); + } + else { + $this->minwSpacing = 0; + $this->wSpacingCSS = ''; + } + // mPDF 5.6.08 + if (isset($properties['HYPHENS']) && $properties['HYPHENS']) { + if (strtoupper($properties['HYPHENS']) == 'NONE') { $this->textparam['hyphens'] = 2; } + else if (strtoupper($properties['HYPHENS']) == 'AUTO') { $this->textparam['hyphens'] = 1; } + else if (strtoupper($properties['HYPHENS']) == 'MANUAL') { $this->textparam['hyphens'] = 0; } + } + + if (isset($properties['BACKGROUND-COLOR'])) { $c['bgcolor'] = $properties['BACKGROUND-COLOR']; } + else if (isset($properties['BACKGROUND'])) { $c['bgcolor'] = $properties['BACKGROUND']; } + else if (isset($attr['BGCOLOR'])) $c['bgcolor'] = $attr['BGCOLOR']; + + + +/*-- BACKGROUNDS --*/ + if (isset($properties['BACKGROUND-GRADIENT'])) { $c['gradient'] = $properties['BACKGROUND-GRADIENT']; } + else { $c['gradient'] = false; } + + if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->keep_block_together) { + $ret = $this->SetBackground($properties, $this->blk[$this->blklvl]['inner_width']); + if ($ret) { $c['background-image'] = $ret; } + } +/*-- END BACKGROUNDS --*/ + if (isset($properties['VERTICAL-ALIGN'])) { $c['va']=$align[strtolower($properties['VERTICAL-ALIGN'])]; } + else if (isset($attr['VALIGN'])) $c['va'] = $align[strtolower($attr['VALIGN'])]; + + + // mPDF 5.6.13 + if (isset($properties['TEXT-ALIGN']) && $properties['TEXT-ALIGN']) { + if (substr($properties['TEXT-ALIGN'],0,1)=='D') { $c['a'] = $properties['TEXT-ALIGN']; } + else { $c['a'] = $align[strtolower($properties['TEXT-ALIGN'])]; } + } + // mPDF 5.6.13 + if (isset($attr['ALIGN']) && $attr['ALIGN']) { + if (strtolower($attr['ALIGN']) == 'char') { + if (isset($attr['CHAR']) && $attr['CHAR']) { + $char = html_entity_decode($attr['CHAR']); + $char = strcode2utf($char); + $d = array_search($char,$this->decimal_align); + if ($d !== false) { $c['a'] = $d.'R'; } + } + else { $c['a'] = 'DPR'; } + } + else { $c['a'] = $align[strtolower($attr['ALIGN'])]; } + } + + if (!$c['a']) { + if (isset($table['direction']) && $table['direction'] == 'rtl' ) { $c['a'] = 'R'; } + else { $c['a'] = 'L'; } + } + + + if (isset($properties['TEXT-ROTATE']) && ($properties['TEXT-ROTATE'] || $properties['TEXT-ROTATE']==="0")){ + $c['R'] = $properties['TEXT-ROTATE']; + } + if (isset($properties['BORDER'])) { + $bord = $this->border_details($properties['BORDER']); + if ($bord['s']) { + if (!$this->simpleTables){ + $c['border'] = _BORDER_ALL; + $c['border_details']['R'] = $bord; + $c['border_details']['L'] = $bord; + $c['border_details']['T'] = $bord; + $c['border_details']['B'] = $bord; + $c['border_details']['L']['dom'] = $this->cell_border_dominance_L; + $c['border_details']['R']['dom'] = $this->cell_border_dominance_R; + $c['border_details']['T']['dom'] = $this->cell_border_dominance_T; + $c['border_details']['B']['dom'] = $this->cell_border_dominance_B; + } + else if ($this->simpleTables && $this->row==0 && $this->col==0){ + $table['simple']['border'] = _BORDER_ALL; + $table['simple']['border_details']['R'] = $bord; + $table['simple']['border_details']['L'] = $bord; + $table['simple']['border_details']['T'] = $bord; + $table['simple']['border_details']['B'] = $bord; + } + } + } + if (!$this->simpleTables){ + if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) { + $c['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']); + $this->setBorder($c['border'], _BORDER_RIGHT, $c['border_details']['R']['s']); + $c['border_details']['R']['dom'] = $this->cell_border_dominance_R; + } + if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { + $c['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']); + $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']); + $c['border_details']['L']['dom'] = $this->cell_border_dominance_L; + } + if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) { + $c['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']); + $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']); + $c['border_details']['B']['dom'] = $this->cell_border_dominance_B; + } + if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) { + $c['border_details']['T'] = $this->border_details($properties['BORDER-TOP']); + $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']); + $c['border_details']['T']['dom'] = $this->cell_border_dominance_T; + } + } + else if ($this->simpleTables && $this->row==0 && $this->col==0){ + if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { + $bord = $this->border_details($properties['BORDER-LEFT']); + if ($bord['s']) { $table['simple']['border'] = _BORDER_ALL; } + else { $table['simple']['border'] = 0; } + $table['simple']['border_details']['R'] = $bord; + $table['simple']['border_details']['L'] = $bord; + $table['simple']['border_details']['T'] = $bord; + $table['simple']['border_details']['B'] = $bord; + } + } + + if ($this->simpleTables && $this->row==0 && $this->col==0 && !$table['borders_separate'] && $table['simple']['border'] ){ + $table['border_details'] = $table['simple']['border_details']; + $table['border'] = $table['simple']['border']; + } + + // Border set on TR (if collapsed only) + if (!$table['borders_separate'] && !$this->simpleTables && isset($table['trborder-left'][$this->row])) { + if ($this->col==0) { + $left = $this->border_details($table['trborder-left'][$this->row]); + $c['border_details']['L'] = $left; + $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']); + } + $c['border_details']['B'] = $this->border_details($table['trborder-bottom'][$this->row]); + $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']); + $c['border_details']['T'] = $this->border_details($table['trborder-top'][$this->row]); + $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']); + } + + if ($this->packTableData && !$this->simpleTables) { + $c['borderbin'] = $this->_packCellBorder($c); + unset($c['border']); + unset($c['border_details']); + } + + if (isset($properties['PADDING-LEFT'])) { + $c['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['PADDING-RIGHT'])) { + $c['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['PADDING-BOTTOM'])) { + $c['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + if (isset($properties['PADDING-TOP'])) { + $c['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + + $w = ''; + if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; } + else if (isset($attr['WIDTH'])) { $w = $attr['WIDTH']; } + if ($w) { + if (strpos($w,'%') && !$this->ignore_table_percents ) { $c['wpercent'] = $w + 0; } // makes 80% -> 80 + else if (!strpos($w,'%') && !$this->ignore_table_widths ) { $c['w'] = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + } + + if (isset($properties['HEIGHT']) && !strpos($properties['HEIGHT'],'%')) { $c['h'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + else if (isset($attr['HEIGHT']) && !strpos($attr['HEIGHT'],'%')) $c['h'] = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + + + if (isset($properties['COLOR'])) { + $cor = $this->ConvertColor($properties['COLOR']); + if ($cor) { + $this->colorarray = $cor; + $this->SetTColor($cor); + } + } + if (isset($properties['FONT-FAMILY'])) { + $this->SetFont($properties['FONT-FAMILY'],'',0,false); + } + if (isset($properties['FONT-SIZE'])) { + $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK); + if ($mmsize) { + $this->SetFontSize($mmsize*(_MPDFK),false); + } + } + $c['dfs'] = $this->FontSize; // Default Font size + if (isset($properties['FONT-WEIGHT'])) { + if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD') { $this->SetStyle('B',true); } + } + if (isset($properties['FONT-STYLE'])) { + if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->SetStyle('I',true); } + } + if (isset($properties['FONT-VARIANT'])) { + if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->SetStyle('S',true); } + } + if (isset($properties['TEXT-DECORATION'])) { + if (strtoupper($properties['TEXT-DECORATION']) == 'LINE-THROUGH') { $this->strike = true; } + else if (strtoupper($properties['TEXT-DECORATION']) == 'UNDERLINE') { $this->SetStyle('U',true); } + } + if (isset($properties['TEXT-SHADOW'])) { + $ts = $this->cssmgr->setCSStextshadow($properties['TEXT-SHADOW']); + if ($ts) { $this->textshadow = $ts; } + } + if (isset($properties['TEXT-TRANSFORM'])) { + if (strtoupper($properties['TEXT-TRANSFORM']) == 'CAPITALIZE') { $this->capitalize = true; } + else if (strtoupper($properties['TEXT-TRANSFORM']) == 'UPPERCASE') { $this->toupper = true; } + else if (strtoupper($properties['TEXT-TRANSFORM']) == 'LOWERCASE') { $this->tolower = true; } + } + if (isset($properties['WHITE-SPACE'])) { + if (strtoupper($properties['WHITE-SPACE']) == 'NOWRAP') { $c['nowrap']= 1; } + } + $properties = array(); + + if (isset($attr['TEXT-ROTATE'])) { + $c['R'] = $attr['TEXT-ROTATE']; + } + if (isset($attr['NOWRAP']) && $attr['NOWRAP']) $c['nowrap']= 1; + + $this->cell[$this->row][$this->col] = $c; + unset($c); + $this->cell[$this->row][$this->col]['s'] = 0 ; + + $cs = $rs = 1; + if (isset($attr['COLSPAN']) && $attr['COLSPAN']>1) $cs = $this->cell[$this->row][$this->col]['colspan'] = $attr['COLSPAN']; + if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] < $this->col+$cs) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] = $this->col+$cs; + } // following code moved outside if... + for($l=$this->col; $l < $this->col+$cs ;$l++) { + if ($l-$this->col) $this->cell[$this->row][$l] = 0; + } + if (isset($attr['ROWSPAN']) && $attr['ROWSPAN']>1) $rs = $this->cell[$this->row][$this->col]['rowspan'] = $attr['ROWSPAN']; + for ($k=$this->row ; $k < $this->row+$rs ;$k++) { + for($l=$this->col; $l < $this->col+$cs ;$l++) { + if ($k-$this->row || $l-$this->col) $this->cell[$k][$l] = 0; + } + } + unset($table); + break; +/*-- END TABLES --*/ + + +/*-- LISTS --*/ + // *********** LISTS ******************** + case 'OL': + case 'UL': + $this->listjustfinished = false; + + if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; } + else { $lastbottommargin = 0; } + $this->lastblockbottommargin = 0; + $this->blockjustfinished=false; + + $this->linebreakjustfinished=false; + $this->lastoptionaltag = ''; // Save current HTML specified optional endtag + $this->cssmgr->listCSSlvl++; + if((!$this->tableLevel) && ($this->listlvl == 0)) { + $blockstate = 0; + //if ($this->lastblocklevelchange == 1) { $blockstate = -1; } // Top margins/padding only + //else if ($this->lastblocklevelchange < 1) { $blockstate = 0; } // NO margins/padding + // called from block after new div e.g.
      ...
        ... Outputs block top margin/border and padding + if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) { + $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']); + $this->finishFlowingBlock(true); // true = END of flowing block + } + else if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); } + $this->textbuffer=array(); + $this->lastblocklevelchange = -1; + } + // ol and ul types are mixed here + if ($this->listlvl == 0) { + $this->list_indent = array(); + $this->list_align = array(); + $this->list_lineheight = array(); + $this->InlineProperties['LIST'] = array(); + $this->InlineProperties['LISTITEM'] = array(); + } + +/*-- TABLES --*/ + // A simple list for inside a table + if($this->tableLevel) { + $this->list_indent[$this->listlvl] = 0; // mm default indent for each level + if ($tag == 'OL') $this->listtype = '1'; + else if ($tag == 'UL') $this->listtype = 'disc'; + if ($this->listlvl > 0) { + $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum + } + $this->listlvl++; + // mPDF 5.6.15 + if (isset($attr['START'])) { $this->listnum = intval($attr['START']); } + else { $this->listnum = 0; } + $this->listlist[$this->listlvl] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum); + break; + } +/*-- END TABLES --*/ + + + if (($this->PDFA || $this->PDFX) && $tag == 'UL') { + if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "List bullets cannot use core font Zapfdingbats in PDFA1-b or PDFX/1-a. (Substitute characters from current font used if available, otherwise substitutes hyphen '-')"; } + } + + if ($this->cssmgr->listCSSlvl==1) { + $properties = $this->cssmgr->MergeCSS('TOPLIST',$tag,$attr); + } + else { + $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr); + } + if (!empty($properties)) $this->setCSS($properties,'LIST'); + // List-type + + $this->listtype = ''; + if (isset($properties['LIST-STYLE-TYPE'])) { + $this->listtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']); + } + else if (isset($properties['LIST-STYLE'])) { + $this->listtype = $this->_getListStyle($properties['LIST-STYLE']); + } + else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listtype = $attr['TYPE']; } + if (!$this->listtype) { + if ($tag == 'OL') $this->listtype = '1'; + if ($tag == 'UL') { + if ($this->listlvl % 3 == 0) $this->listtype = 'disc'; + elseif ($this->listlvl % 3 == 1) $this->listtype = 'circle'; + else $this->listtype = 'square'; + } + } + if ($this->listlvl == 0) { + $this->inherit_lineheight = 0; + $this->listlvl++; // first depth level + // mPDF 5.6.15 + if (isset($attr['START'])) { $this->listnum = intval($attr['START']); } + else { $this->listnum = 0; } + $this->listDir = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : null); + $occur = $this->listoccur[$this->listlvl] = 1; + $this->listlist[$this->listlvl][1] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum); + } + else { + if (!empty($this->textbuffer)) + { + $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype); + $this->listnum++; + } + // Save current lineheight to inherit + $this->textbuffer = array(); + $occur = $this->listoccur[$this->listlvl]; + $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum + $this->listlvl++; + // mPDF 5.6.15 + if (isset($attr['START'])) { $this->listnum = intval($attr['START']); } + else { $this->listnum = 0; } + + + if (!isset($this->listoccur[$this->listlvl]) || $this->listoccur[$this->listlvl] == 0) $this->listoccur[$this->listlvl] = 1; + else $this->listoccur[$this->listlvl]++; + $occur = $this->listoccur[$this->listlvl]; + $this->listlist[$this->listlvl][$occur] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum); + } + + + // TOP LEVEL ONLY + if ($this->listlvl == 1) { + if (isset($properties['MARGIN-TOP'])) { + if ($lastbottommargin) { + $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; } + else { $properties['MARGIN-TOP'] = 0; } + } + $this->DivLn($this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false),$this->blklvl,true,1); // collapsible + } + if (isset($properties['MARGIN-BOTTOM'])) { + $this->list_margin_bottom = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); + } + + if (isset($this->blk[$this->blklvl]['line_height'])) { + $this->list_lineheight[$this->listlvl][$occur] = $this->blk[$this->blklvl]['line_height']; + } + + if (isset($properties['DIRECTION']) && $properties['DIRECTION']) { $this->listDir = strtolower($properties['DIRECTION']); } + else if (isset($attr['DIR']) && $attr['DIR']) { $this->listDir = strtolower($attr['DIR']); } + + } + $this->list_indent[$this->listlvl][$occur] = 5; // mm default indent for each level + if (isset($properties['TEXT-INDENT'])) { $this->list_indent[$this->listlvl][$occur] = $this->ConvertSize($properties['TEXT-INDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); } + + if (isset($properties['TEXT-ALIGN'])) { + $this->list_align[$this->listlvl][$occur] = $align[strtolower($properties['TEXT-ALIGN'])]; + } + + + if (isset($properties['LINE-HEIGHT'])) { + $this->list_lineheight[$this->listlvl][$occur] = $this->fixLineheight($properties['LINE-HEIGHT']); + } + else if ($this->listlvl>1 && isset($this->list_lineheight[($this->listlvl - 1)][1])) { + $this->list_lineheight[$this->listlvl][$occur] = end($this->list_lineheight[($this->listlvl - 1)]); + } + if (!isset($this->list_lineheight[$this->listlvl][$occur]) || !$this->list_lineheight[$this->listlvl][$occur]) { + $this->list_lineheight[$this->listlvl][$occur] = $this->normalLineheight; + } + + $this->InlineProperties['LIST'][$this->listlvl][$occur] = $this->saveInlineProperties(); + $properties = array(); + break; + + + + case 'LI': + // Start Block + $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag + $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces +/*-- TABLES --*/ + // A simple list for inside a table + if($this->tableLevel) { + $this->blockjustfinished=false; + + // If already something in the Cell + if ((isset($this->cell[$this->row][$this->col]['maxs']) && $this->cell[$this->row][$this->col]['maxs'] > 0 ) || $this->cell[$this->row][$this->col]['s'] > 0 ) { + $this->_saveCellTextBuffer("\n"); + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0 ; + } + if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)

      1. Content
      2. Paragraph1

        (...) + $this->listlvl++; // first depth level + $this->listnum = 0; // reset + $this->listlist[$this->listlvl] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum); + } + + $this->listnum++; + switch($this->listlist[$this->listlvl]['TYPE']) { + case 'A': + $blt = $this->dec2alpha($this->listnum,true).$this->list_number_suffix; + break; + case 'a': + $blt = $this->dec2alpha($this->listnum,false).$this->list_number_suffix; + break; + case 'I': + $blt = $this->dec2roman($this->listnum,true).$this->list_number_suffix; + break; + case 'i': + $blt = $this->dec2roman($this->listnum,false).$this->list_number_suffix; + break; + case '1': + $blt = $this->listnum.$this->list_number_suffix; + break; + default: + if ($this->listlvl % 3 == 1 && $this->_charDefined($this->CurrentFont['cw'],8226)) { $blt = "\xe2\x80\xa2"; } // • + else if ($this->listlvl % 3 == 2 && $this->_charDefined($this->CurrentFont['cw'],9900)) { $blt = "\xe2\x9a\xac"; } // ⚬ + else if ($this->listlvl % 3 == 0 && $this->_charDefined($this->CurrentFont['cw'],9642)) { $blt = "\xe2\x96\xaa"; } // ▪ + else { $blt = '-'; } + break; + } + + // change to   spaces + if ($this->usingCoreFont) { + $ls = str_repeat(chr(160).chr(160),($this->listlvl-1)*2) . $blt . ' '; + } + else { + $ls = str_repeat("\xc2\xa0\xc2\xa0",($this->listlvl-1)*2) . $blt . ' '; + } + + $this->_saveCellTextBuffer($ls, $this->HREF); + $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($ls); + break; + } +/*-- END TABLES --*/ + //Observation: is ignored + if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)

      3. Content
      4. Paragraph1

        (...) + //First of all, skip a line + $this->listlvl++; // first depth level + $this->listnum = 0; // reset + $this->listoccur[$this->listlvl] = 1; + $this->listlist[$this->listlvl][1] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum); + } + if ($this->listnum == 0) { + $this->listnum++; + $this->textbuffer = array(); + } + else { + if (!empty($this->textbuffer)) { + if (!$this->listjustfinished) { + $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype); + $this->listnum++; + } + else { + $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype, true); + } + } + $this->textbuffer = array(); + } + $this->listjustfinished = false; + + $this->cssmgr->listCSSlvl++; + $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr); + if (!empty($properties)) $this->setCSS($properties,'LIST'); + $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listoccur[$this->listlvl]][$this->listnum] = $this->saveInlineProperties(); + + // List-type + if (isset($properties['LIST-STYLE-TYPE'])) { + $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']); + } + else if (isset($properties['LIST-STYLE'])) { + $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE']); + } + else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listitemtype = $attr['TYPE']; } + else $this->listitemtype = ''; + break; +/*-- END LISTS --*/ + + }//end of switch +} + +/*-- LISTS --*/ + +function _getListStyle($ls) { + if (stristr($ls,'decimal')) { return '1'; } +/* CSS3 list-styles numeric (selected) + I added tamil +arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya | persian | telugu | thai | urdu +*/ + else if (preg_match('/(disc|circle|square|arabic-indic|bengali|devanagari|gujarati|gurmukhi|kannada|malayalam|oriya|persian|tamil|telugu|thai|urdu)/i',$ls,$m)) { + return strtolower(trim($m[1])); + } + else if (stristr($ls,'lower-roman')) { return 'i'; } + else if (stristr($ls,'upper-roman')) { return 'I'; } + else if (stristr($ls,'lower-latin')|| stristr($ls,'lower-alpha')) { return 'a'; } + else if (stristr($ls,'upper-latin') || stristr($ls,'upper-alpha')) { return 'A'; } + else if (stristr($ls,'none')) { return 'none'; } + else if (preg_match('/U\+([a-fA-F0-9]+)/i',$ls)) { return $ls; } + else { return ''; } +} +/*-- END LISTS --*/ + + + +function CloseTag($tag) +{ + $this->ignorefollowingspaces = false; //Eliminate exceeding left-side spaces + //Closing tag + if($tag=='OPTION') { $this->selectoption['ACTIVE'] = false; $this->lastoptionaltag = ''; } + + if($tag=='TTS' or $tag=='TTA' or $tag=='TTZ') { + if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); } + unset($this->InlineProperties[$tag]); + $ltag = strtolower($tag); + $this->$ltag = false; + } + + + if($tag=='FONT' || $tag=='SPAN' || $tag=='CODE' || $tag=='KBD' || $tag=='SAMP' || $tag=='TT' || $tag=='VAR' + || $tag=='INS' || $tag=='STRONG' || $tag=='CITE' || $tag=='SUB' || $tag=='SUP' || $tag=='S' || $tag=='STRIKE' || $tag=='DEL' + || $tag=='Q' || $tag=='EM' || $tag=='B' || $tag=='I' || $tag=='U' | $tag=='SMALL' || $tag=='BIG' || $tag=='ACRONYM' + || $tag=='MARK' || $tag=='TIME' || $tag=='PROGRESS' || $tag=='METER' + ) { // mPDF 5.5.09 + + if ($tag == 'SPAN') { + if (isset($this->InlineProperties['SPAN'][$this->spanlvl]) && $this->InlineProperties['SPAN'][$this->spanlvl]) { $this->restoreInlineProperties($this->InlineProperties['SPAN'][$this->spanlvl]); } + unset($this->InlineProperties['SPAN'][$this->spanlvl]); + if (isset($this->InlineAnnots['SPAN'][$this->spanlvl]) && $this->InlineAnnots['SPAN'][$this->spanlvl]) { $annot = $this->InlineAnnots['SPAN'][$this->spanlvl]; } // *ANNOTATIONS* + unset($this->InlineAnnots['SPAN'][$this->spanlvl]); // *ANNOTATIONS* + $this->spanlvl--; + } + else { + if (isset($this->InlineProperties[$tag]) && $this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); } + unset($this->InlineProperties[$tag]); + if (isset($this->InlineAnnots[$tag]) && $this->InlineAnnots[$tag]) { $annot = $this->InlineAnnots[$tag]; } // *ANNOTATIONS* + unset($this->InlineAnnots[$tag]); // *ANNOTATIONS* + } + +/*-- ANNOTATIONS --*/ + if (isset($annot)) { + if($this->tableLevel) { // *TABLES* + $this->cell[$this->row][$this->col]['textbuffer'][] = array($annot); // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->textbuffer[] = array($annot); + } // *TABLES* + } +/*-- END ANNOTATIONS --*/ + } + + if($tag=='METER' || $tag=='PROGRESS') { + $this->inMeter = false; // mPDF 5.5.09 + } + + + if($tag=='A') { + $this->HREF=''; + if (isset($this->InlineProperties['A'])) { $this->restoreInlineProperties($this->InlineProperties['A']); } + unset($this->InlineProperties['A']); + } + + if($tag=='LEGEND') { // mPDF 5.4.18 + if (count($this->textbuffer) && !$this->tableLevel) { + $leg = $this->textbuffer[(count($this->textbuffer)-1)]; + unset($this->textbuffer[(count($this->textbuffer)-1)]); + $this->textbuffer = array_values($this->textbuffer); + $this->blk[$this->blklvl]['border_legend'] = $leg; + $this->blk[$this->blklvl]['margin_top'] += ($leg[11]/2)/_MPDFK; + $this->blk[$this->blklvl]['padding_top'] += ($leg[11]/2)/_MPDFK; + } + if (isset($this->InlineProperties['LEGEND'])) { $this->restoreInlineProperties($this->InlineProperties['LEGEND']); } + unset($this->InlineProperties['LEGEND']); + $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + } + + + +/*-- FORMS --*/ + // *********** FORM ELEMENTS ******************** + + if($tag=='TEXTAREA') { + $this->specialcontent = ''; + if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); } + unset($this->InlineProperties[$tag]); + } + + + if($tag=='SELECT') { + $this->lastoptionaltag = ''; + $texto = ''; + if (isset($this->selectoption['SELECTED'])) { $texto = $this->selectoption['SELECTED']; } + + if ($this->useActiveForms) { $w = $this->selectoption['MAXWIDTH']; } + else { $w = $this->GetStringWidth($texto); } + if ($w == 0) { $w = 5; } + $objattr['type'] = 'select'; + $objattr['text'] = $texto; + if (isset($this->selectoption['NAME'])) { $objattr['fieldname'] = $this->selectoption['NAME']; } + if (isset($this->selectoption['READONLY'])) { $objattr['readonly'] = true; } + if (isset($this->selectoption['REQUIRED'])) { $objattr['required'] = true; } + if (isset($this->selectoption['SPELLCHECK'])) { $objattr['spellcheck'] = true; } + if (isset($this->selectoption['EDITABLE'])) { $objattr['editable'] = true; } + if (isset($this->selectoption['ONCHANGE'])) { $objattr['onChange'] = $this->selectoption['ONCHANGE']; } + if (isset($this->selectoption['ITEMS'])) { $objattr['items'] = $this->selectoption['ITEMS']; } + if (isset($this->selectoption['MULTIPLE'])) { $objattr['multiple'] = $this->selectoption['MULTIPLE']; } + if (isset($this->selectoption['DISABLED'])) { $objattr['disabled'] = $this->selectoption['DISABLED']; } + if (isset($this->selectoption['TITLE'])) { $objattr['title'] = $this->selectoption['TITLE']; } + if (isset($this->selectoption['COLOR'])) { $objattr['color'] = $this->selectoption['COLOR']; } + if (isset($this->selectoption['SIZE'])) { $objattr['size'] = $this->selectoption['SIZE']; } + if (isset($objattr['size']) && $objattr['size']>1) { $rows=$objattr['size']; } else { $rows = 1; } + + $objattr['fontfamily'] = $this->FontFamily; + $objattr['fontsize'] = $this->FontSizePt; + + $objattr['width'] = $w + ($this->form->form_element_spacing['select']['outer']['h']*2)+($this->form->form_element_spacing['select']['inner']['h']*2) + ($this->FontSize*1.4); + $objattr['height'] = ($this->FontSize*$rows) + ($this->form->form_element_spacing['select']['outer']['v']*2)+($this->form->form_element_spacing['select']['inner']['v']*2); + $e = "\xbb\xa4\xactype=select,objattr=".serialize($objattr)."\xbb\xa4\xac"; + + // Clear properties - tidy up + $properties = array(); + + // Output it to buffers + if ($this->tableLevel) { // *TABLES* + $this->_saveCellTextBuffer($e, $this->HREF); + $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES* + } // *TABLES* + else { // *TABLES* + $this->_saveTextBuffer($e, $this->HREF); + } // *TABLES* + + $this->selectoption = array(); + $this->specialcontent = ''; + + if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); } + unset($this->InlineProperties[$tag]); + + } +/*-- END FORMS --*/ + + + // *********** BLOCKS ******************** + // mPDF 5.4.18 + if($tag=='P' || $tag=='DIV' || $tag=='H1' || $tag=='H2' || $tag=='H3' || $tag=='H4' || $tag=='H5' || $tag=='H6' || $tag=='PRE' + || $tag=='FORM' || $tag=='ADDRESS' || $tag=='BLOCKQUOTE' || $tag=='CENTER' || $tag=='DT' || $tag=='DD' || $tag=='DL' + || $tag=='CAPTION' || $tag=='FIELDSET' + || $tag=='ARTICLE' || $tag=='ASIDE' || $tag=='FIGURE' || $tag=='FIGCAPTION' || $tag=='FOOTER' || $tag=='HEADER' || $tag=='HGROUP' + || $tag=='NAV' || $tag=='SECTION' || $tag=='DETAILS' || $tag=='SUMMARY' + ) { // mPDF 5.5.09 // mPDF 5.5.22 + + $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + $this->blockjustfinished=true; + + $this->lastblockbottommargin = $this->blk[$this->blklvl]['margin_bottom']; +/*-- LISTS --*/ + if ($this->listlvl>0) { return; } +/*-- END LISTS --*/ + + // mPDF 5.6.34 + if (preg_match('/^H\d/',$tag) && !$this->tableLevel && !$this->writingToC) { // mPDF 5.6.38 + if (isset($this->h2toc[$tag]) || isset($this->h2bookmarks[$tag])) { + $content = ''; + if (count($this->textbuffer)==1) { $content = $this->textbuffer[0][0]; } + else { + for ($i=0;$itextbuffer);$i++) { + if (substr($this->textbuffer[$i][0],0,3) != "\xbb\xa4\xac") { //inline object + $content .= $this->textbuffer[$i][0]; + } + } + } +/*-- TOC --*/ + if (isset($this->h2toc[$tag])) { + $objattr = array(); + $objattr['type'] = 'toc'; + $objattr['toclevel'] = $this->h2toc[$tag]; + $objattr['CONTENT'] = htmlspecialchars($content); // mPDF 5.6.37 + $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac"; + array_unshift($this->textbuffer,array($e)); + } +/*-- END TOC --*/ +/*-- BOOKMARKS --*/ + if (isset($this->h2bookmarks[$tag])) { + $objattr = array(); + $objattr['type'] = 'bookmark'; + $objattr['bklevel'] = $this->h2bookmarks[$tag]; + $objattr['CONTENT'] = $content; + $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac"; + array_unshift($this->textbuffer,array($e)); + } +/*-- END BOOKMARKS --*/ + } + } + +/*-- TABLES --*/ + if($this->tableLevel) { + if ($this->linebreakjustfinished) { $this->blockjustfinished=false; } + if (isset($this->InlineProperties['BLOCKINTABLE'])) { + if ($this->InlineProperties['BLOCKINTABLE']) { $this->restoreInlineProperties($this->InlineProperties['BLOCKINTABLE']); } + unset($this->InlineProperties['BLOCKINTABLE']); + } + if($tag=='PRE') { $this->ispre=false; } + return; + } +/*-- END TABLES --*/ + $this->lastoptionaltag = ''; + $this->divbegin=false; + + $this->linebreakjustfinished=false; + + $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin']; + +/*-- CSS-FLOAT --*/ + // If float contained in a float, need to extend bottom to allow for it + $currpos = $this->page*1000 + $this->y; + if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) { + $old_page = $this->page; + $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000); + if ($old_page != $new_page) { + $s = $this->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pageBackgrounds = array(); + $this->page = $new_page; + $this->ResetMargins(); + $this->Reset(); + $this->pageoutput[$this->page] = array(); + } + $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000; // mod changes operands to integers before processing + } +/*-- END CSS-FLOAT --*/ + + + //Print content + if ($this->lastblocklevelchange == 1) { $blockstate = 3; } // Top & bottom margins/padding + else if ($this->lastblocklevelchange == -1) { $blockstate = 2; } // Bottom margins/padding only + else { $blockstate = 0; } + // called from after e.g.
      ... Outputs block margin/border and padding + if (count($this->textbuffer) && $this->textbuffer[count($this->textbuffer)-1]) { + if (substr($this->textbuffer[count($this->textbuffer)-1][0],0,3) != "\xbb\xa4\xac") { // not special content + if ($this->usingCoreFont) { + $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/', '', $this->textbuffer[count($this->textbuffer)-1][0]); + } + else { + $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/u', '', $this->textbuffer[count($this->textbuffer)-1][0]); } + } + } + + if (count($this->textbuffer) == 0 && $this->lastblocklevelchange != 0) { + //$this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,2,true, $this->blk[$this->blklvl]['direction']); + $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,$blockstate,true, $this->blk[$this->blklvl]['direction']); + $this->finishFlowingBlock(true); // true = END of flowing block + $this->PaintDivBB('',$blockstate); + } + else { + $this->printbuffer($this->textbuffer,$blockstate); + } + + + $this->textbuffer=array(); + + if ($this->blk[$this->blklvl]['keep_block_together']) { + $this->printdivbuffer(); + } + + if ($this->kwt) { + $this->kwt_height = $this->y - $this->kwt_y0; + } + +/*-- CSS-IMAGE-FLOAT --*/ + $this->printfloatbuffer(); +/*-- END CSS-IMAGE-FLOAT --*/ + + if($tag=='PRE') { $this->ispre=false; } + +/*-- CSS-FLOAT --*/ + if ($this->blk[$this->blklvl]['float'] == 'R') { + // If width not set, here would need to adjust and output buffer + $s = $this->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pageBackgrounds = array(); + $this->Reset(); + $this->pageoutput[$this->page] = array(); + + for($i=($this->blklvl-1); $i >= 0; $i--) { + if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); } + else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; } + } + + $this->floatDivs[] = array( + 'side'=>'R', + 'startpage'=>$this->blk[$this->blklvl]['startpage'] , + 'y0'=>$this->blk[$this->blklvl]['float_start_y'] , + 'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']), + 'endpage'=>$this->page , + 'y1'=>$this->y , + 'endpos'=> ($this->page*1000 + $this->y), + 'w'=> $this->blk[$this->blklvl]['float_width'], + 'blklvl'=>$this->blklvl, + 'blockContext' => $this->blk[$this->blklvl-1]['blockContext'] + ); + + $this->y = $this->blk[$this->blklvl]['float_start_y'] ; + $this->page = $this->blk[$this->blklvl]['startpage'] ; + $this->ResetMargins(); + $this->pageoutput[$this->page] = array(); + } + if ($this->blk[$this->blklvl]['float'] == 'L') { + // If width not set, here would need to adjust and output buffer + $s = $this->PrintPageBackgrounds(); + // Writes after the marker so not overwritten later by page background etc. + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pageBackgrounds = array(); + $this->Reset(); + $this->pageoutput[$this->page] = array(); + + for($i=($this->blklvl-1); $i >= 0; $i--) { + if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); } + else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; } + } + + $this->floatDivs[] = array( + 'side'=>'L', + 'startpage'=>$this->blk[$this->blklvl]['startpage'] , + 'y0'=>$this->blk[$this->blklvl]['float_start_y'] , + 'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']), + 'endpage'=>$this->page , + 'y1'=>$this->y , + 'endpos'=> ($this->page*1000 + $this->y), + 'w'=> $this->blk[$this->blklvl]['float_width'], + 'blklvl'=>$this->blklvl, + 'blockContext' => $this->blk[$this->blklvl-1]['blockContext'] + ); + + $this->y = $this->blk[$this->blklvl]['float_start_y'] ; + $this->page = $this->blk[$this->blklvl]['startpage'] ; + $this->ResetMargins(); + $this->pageoutput[$this->page] = array(); + } +/*-- END CSS-FLOAT --*/ + + if (isset($this->blk[$this->blklvl]['visibility']) && $this->blk[$this->blklvl]['visibility']!='visible') { + $this->SetVisibility('visible'); + } + + if (isset($this->blk[$this->blklvl]['page_break_after'])) { $page_break_after = $this->blk[$this->blklvl]['page_break_after']; } + else { $page_break_after = ''; } + + //Reset values + $this->Reset(); + + // mPDF 5.6.01 - LAYERS + if (isset($this->blk[$this->blklvl]['z-index']) && $this->blk[$this->blklvl]['z-index'] > 0) { + $this->EndLayer(); + } + + if ($this->blklvl > 0) { // ==0 SHOULDN'T HAPPEN - NOT XHTML + if ($this->blk[$this->blklvl]['tag'] == $tag) { + unset($this->blk[$this->blklvl]); + $this->blklvl--; + } + //else { echo $tag; exit; } // debug - forces error if incorrectly nested html tags + } + + $this->lastblocklevelchange = -1 ; + // Reset Inline-type properties + if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']); } + + $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin']; + + if ($page_break_after) { + $save_blklvl = $this->blklvl; + $save_blk = $this->blk; + $save_silp = $this->saveInlineProperties(); + $save_spanlvl = $this->spanlvl; + $save_ilp = $this->InlineProperties; + if ($this->blklvl>1) { + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + // Output any text left in buffer + if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); } + } +/*-- COLUMNS --*/ + $save_cols = false; + if ($this->ColActive) { + $save_cols = true; + $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off + $this->SetColumns(0); + } +/*-- END COLUMNS --*/ + if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + if (!$this->restoreBlockPagebreaks) { + $this->blklvl = 0; + $this->lastblocklevelchange = 0; + $this->blk = array(); + $this->initialiseBlock($this->blk[0]); + $this->blk[0]['width'] =& $this->pgwidth; + $this->blk[0]['inner_width'] =& $this->pgwidth; + $this->blk[0]['blockContext'] = $this->blockContext; + $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); + $this->setCSS($properties,'','BODY'); + $this->blklvl++; + $currblk =& $this->blk[$this->blklvl]; + $prevblk =& $this->blk[$this->blklvl-1]; + + $this->initialiseBlock($currblk); + $currblk['tag'] = $tag; + $currblk['attr'] = $attr; + + $this->Reset(); + $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr); + } +/*-- COLUMNS --*/ + if ($save_cols) { + // Restore columns + $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap); + } +/*-- END COLUMNS --*/ + if ($this->restoreBlockPagebreaks && !$this->tableLevel && !$this->listlvl) { + $this->blk = $save_blk; + // Re-open block tags + $t = $this->blk[0]['tag']; + $a = $this->blk[0]['attr']; + $this->blklvl = 0; + for ($b=0; $b<=$save_blklvl;$b++) { + $tc = $t; + $ac = $a; + $t = $this->blk[$b+1]['tag']; + $a = $this->blk[$b+1]['attr']; + unset($this->blk[$b+1]); + $this->OpenTag($tc,$ac); + } + $this->spanlvl = $save_spanlvl; + $this->InlineProperties = $save_ilp; + $this->restoreInlineProperties($save_silp); + } + } + + } + + +/*-- TABLES --*/ + + if($tag=='TH') $this->SetStyle('B',false); + + if(($tag=='TH' or $tag=='TD') && $this->tableLevel) { + $this->lastoptionaltag = 'TR'; + unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]); + $this->cssmgr->tbCSSlvl--; + if (!$this->tdbegin) { return; } + $this->tdbegin = false; + // Added for correct calculation of cell column width - otherwise misses the last line if not end

      etc. + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + if (!is_array($this->cell[$this->row][$this->col])) { $this->Error("You may have an error in your HTML code e.g. </td></td>"); } + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + + // Remove last
      if at end of cell + if (isset($this->cell[$this->row][$this->col]['textbuffer'])) { $ntb = count($this->cell[$this->row][$this->col]['textbuffer']); } + else { $ntb = 0; } + if ($ntb>1 && $this->cell[$this->row][$this->col]['textbuffer'][$ntb-1][0] == "\n") { + unset($this->cell[$this->row][$this->col]['textbuffer'][$ntb-1]); + } + + if ($this->cacheTables) { + $clen = $this->_cacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache']); + $this->cell[$this->row][$this->col] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr']; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr'] += $clen; + } + + if ($this->tablethead) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true; + if ($this->tableLevel==1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] = max($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] , ($this->row+1)); } + } + if ($this->tabletfoot) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true; + if ($this->tableLevel==1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['footernrows'] = max($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['footernrows'] , ($this->row+1 - $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] )); } + } + $this->Reset(); + } + + if($tag=='TR' && $this->tableLevel) { + // If Border set on TR - Update right border + if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row])) { + if ($this->cacheTables) { + $c = $this->_uncacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], null); + } + else { $c =& $this->cell[$this->row][$this->col]; } + if ($c) { + if ($this->packTableData) { + $cell = $this->_unpackCellBorder($c['borderbin'] ); + } + else { $cell = $c; } + $cell['border_details']['R'] = $this->border_details($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row]); + $this->setBorder($cell['border'], _BORDER_RIGHT, $cell['border_details']['R']['s']); + if ($this->packTableData) { + $c['borderbin'] = $this->_packCellBorder($cell); + unset($c['border']); + unset($c['border_details']); + } + else { $c = $cell; } + } + if ($this->cacheTables) { + $fh = fopen($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], "r+b"); + $this->_cacheUpdateBorder($c, $fh, $this->cell[$this->row][$this->col]); + fclose($fh); + } + } + $this->lastoptionaltag = ''; + unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]); + $this->cssmgr->tbCSSlvl--; + $this->trow_text_rotate = ''; + $this->tabletheadjustfinished = false; + } + + if($tag=='TBODY') { + $this->lastoptionaltag = ''; + unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]); + $this->cssmgr->tbCSSlvl--; + } + + if($tag=='THEAD') { + $this->lastoptionaltag = ''; + unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]); + $this->cssmgr->tbCSSlvl--; + $this->tablethead = 0; + $this->tabletheadjustfinished = true; + $this->ResetStyles(); + $this->thead_font_weight = ''; + $this->thead_font_style = ''; + $this->thead_font_smCaps = ''; + + $this->thead_valign_default = ''; + $this->thead_textalign_default = ''; + } + + if($tag=='TFOOT') { + $this->lastoptionaltag = ''; + unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]); + $this->cssmgr->tbCSSlvl--; + $this->tabletfoot = 0; + $this->ResetStyles(); + $this->tfoot_font_weight = ''; + $this->tfoot_font_style = ''; + $this->tfoot_font_smCaps = ''; + + $this->tfoot_valign_default = ''; + $this->tfoot_textalign_default = ''; + } + + if($tag=='TABLE') { // TABLE-END ( + if ($this->progressBar) { $this->UpdateProgressBar(1,'','TABLE'); } // *PROGRESS-BAR* + if ($this->progressBar) { $this->UpdateProgressBar(7,0,''); } // *PROGRESS-BAR* + $this->lastoptionaltag = ''; + unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]); + $this->cssmgr->tbCSSlvl--; + $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['wc'] = array_pad(array(),$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'],array('miw'=>0,'maw'=>0)); + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['hr'] = array_pad(array(),$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr'],0); + + // Move table footer row to end of table + if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot']) && count($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'])) { + $tfrows = array(); + foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] AS $r=>$val) { + if ($val) { $tfrows[] = $r; } + } + $temp = array(); + $temptf = array(); + foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] AS $k=>$row) { + if (in_array($k,$tfrows)) { + $temptf[] = $row; + } + else { + $temp[] = $row; + } + } + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] = array(); + for($i=count($temp) ; $i<(count($temp)+count($temptf)); $i++) { + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$i] = true; + } + // Update nestedpos row references + if (count($this->table[($this->tableLevel+1)])) { + foreach($this->table[($this->tableLevel+1)] AS $nid=>$nested) { + $this->table[($this->tableLevel+1)][$nid]['nestedpos'][0] -= count($temptf); + } + } + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = array_merge($temp, $temptf); + + // Update other arays set on row number + // [trbackground-images] [trgradients] + $temptrbgi = array(); + $temptrbgg = array(); + $temptrbgc = array(); + $temptrbgc[-1] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][-1]; + for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) { + if (!in_array($k,$tfrows)) { + $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k]; + $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k]; + $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k]; + } + } + for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) { + if (in_array($k,$tfrows)) { + $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k]; + $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k]; + $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k]; + } + } + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'] = $temptrbgi; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'] = $temptrbgg; + $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'] = $temptrbgc ; + // Should Update all other arays set on row number, but cell properties have been set so not needed + // [bgcolor] [trborder-left] [trborder-right] [trborder-top] [trborder-bottom] + } + + if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']=='rtl') { + $this->_reverseTableDir($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]); + } + + // Fix Borders ********************************************* + $this->_fixTableBorders($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]); + + if ($this->progressBar) { $this->UpdateProgressBar(7,10,' '); } // *PROGRESS-BAR* + + if ($this->ColActive) { $this->table_rotate = 0; } // *COLUMNS* + if ($this->table_rotate <> 0) { + $this->tablebuffer = ''; + // Max width for rotated table + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 1); + $this->tbrot_maxh = $this->blk[$this->blklvl]['inner_width'] ; // Max width for rotated table + $this->tbrot_align = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['a'] ; + } + $this->shrin_k = 1; + + if ($this->shrink_tables_to_fit < 1) { $this->shrink_tables_to_fit = 1; } + if (!$this->shrink_this_table_to_fit) { $this->shrink_this_table_to_fit = $this->shrink_tables_to_fit; } + + if ($this->tableLevel>1) { + // deal with nested table + + $this->_tableColumnWidth($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]],true); + + $tmiw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['miw']; + $tmaw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['maw']; + $tl = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['tl']; + + // Go down to lower table level + $this->tableLevel--; + + // Reset lower level table + $this->base_table_properties = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties']; + $this->cell = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells']; + // mPDF 5.4.10 + if (isset($this->cell['PARENTCELL'])) { + if ($this->cell['PARENTCELL']) { $this->restoreInlineProperties($this->cell['PARENTCELL']); } + unset($this->cell['PARENTCELL']); + } + $this->row = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow']; + $this->col = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol']; + $objattr = array(); + $objattr['type'] = 'nestedtable'; + $objattr['nestedcontent'] = $this->tbctr[($this->tableLevel+1)]; + $objattr['table'] = $this->tbctr[$this->tableLevel]; + $objattr['row'] = $this->row; + $objattr['col'] = $this->col; + $objattr['level'] = $this->tableLevel; + $e = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac"; + $this->_saveCellTextBuffer($e); + $this->cell[$this->row][$this->col]['s'] += $tl ; + if (!isset($this->cell[$this->row][$this->col]['maxs'])) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) { + $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; + } + $this->cell[$this->row][$this->col]['s'] = 0;// reset + if ((isset($this->cell[$this->row][$this->col]['nestedmaw']) && $this->cell[$this->row][$this->col]['nestedmaw'] < $tmaw) || !isset($this->cell[$this->row][$this->col]['nestedmaw'])) { $this->cell[$this->row][$this->col]['nestedmaw'] = $tmaw ; } + if ((isset($this->cell[$this->row][$this->col]['nestedmiw']) && $this->cell[$this->row][$this->col]['nestedmiw'] < $tmiw) || !isset($this->cell[$this->row][$this->col]['nestedmiw'])) { $this->cell[$this->row][$this->col]['nestedmiw'] = $tmiw ; } + $this->tdbegin = true; + $this->nestedtablejustfinished = true; + $this->ignorefollowingspaces = true; + return; + } + $this->cMarginL = 0; + $this->cMarginR = 0; + $this->cMarginT = 0; + $this->cMarginB = 0; + $this->cellPaddingL = 0; + $this->cellPaddingR = 0; + $this->cellPaddingT = 0; + $this->cellPaddingB = 0; + + if (isset($this->table[1][1]['overflow']) && $this->table[1][1]['overflow']=='visible') { + if ($this->kwt || $this->table_rotate || $this->table_keep_together || $this->ColActive) { + $this->kwt = false; + $this->table_rotate = 0; + $this->table_keep_together = false; + //die("mPDF Warning: You cannot use CSS overflow:visible together with any of these functions: 'Keep-with-table', rotated tables, page-break-inside:avoid, or columns"); + } + $this->_tableColumnWidth($this->table[1][1],true); + $this->_tableWidth($this->table[1][1]); + } + else { + if (!$this->kwt_saved) { $this->kwt_height = 0; } + + list($check,$tablemiw) = $this->_tableColumnWidth($this->table[1][1],true); + $save_table = $this->table; + if ($this->cacheTables) { $this->_backupCacheFiles(); } + $reset_to_minimum_width = false; + $added_page = false; + + if ($check > 1) { + if ($check > $this->shrink_this_table_to_fit && $this->table_rotate) { + if ($this->y != $this->tMargin) { + $this->AddPage($this->CurOrientation); + $this->kwt_moved = true; + } + $added_page = true; + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height; + //$check = $tablemiw/$this->tbrot_maxw; // undo any shrink + $check = 1; // undo any shrink + } + $reset_to_minimum_width = true; + } + + if ($reset_to_minimum_width) { + + $this->shrin_k = $check; + + $this->default_font_size /= $this->shrin_k; + $this->SetFontSize($this->default_font_size, false ); + + $this->shrinkTable($this->table[1][1],$this->shrin_k); + + $this->_tableColumnWidth($this->table[1][1],false); // repeat + + // Starting at $this->innermostTableLevel + // Shrink table values - and redo columnWidth + for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) { + for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) { + $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k); + $this->_tableColumnWidth($this->table[$lvl][$nid],false); + } + } + } + + // Set table cell widths for top level table + // Use $shrin_k to resize but don't change again + $this->SetLineHeight('',$this->table_lineheight); + + // Top level table + $this->_tableWidth($this->table[1][1]); + + } + + + // Now work through any nested tables setting child table[w'] = parent cell['w'] + // Now do nested tables _tableWidth + for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) { + for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) { + // HERE set child table width = cell width + + list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos']; + + if ($this->cacheTables) { + $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null); + } + else + $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol]; + + if (isset($c['colspan']) && $c['colspan']> 1) { + $parentwidth = 0; + for($cs=0;$cs<$c['colspan'] ; $cs++) { + $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs]; + } + } + else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; } + + + //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell + if (!$this->simpleTables){ + if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']); + } + else { + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($this->table[$lvl-1][$parentnid]['borders_separate']) { + $parentwidth -= $br + $bl + + $c['padding']['L'] + + $c['padding']['R'] + + $this->table[($lvl-1)][$parentnid]['border_spacing_H']; + } + else { + $parentwidth -= $br/2 + $bl/2 + + $c['padding']['L'] + + $c['padding']['R']; + } + } + else if ($this->simpleTables){ + if ($this->table[$lvl-1][$parentnid]['borders_separate']) { + $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w'] + + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w'] + + $c['padding']['L'] + + $c['padding']['R'] + + $this->table[($lvl-1)][$parentnid]['border_spacing_H']; + } + else { + $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']/2 + + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']/2 + + $c['padding']['L'] + + $c['padding']['R']; + } + } + if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) { + $this->table[$lvl][$nid]['w'] = $parentwidth; + } + else if ($parentwidth > $this->table[$lvl][$nid]['maw']) { + $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw']; + } + else { + $this->table[$lvl][$nid]['w'] = $parentwidth; + } + unset($c); + $this->_tableWidth($this->table[$lvl][$nid]); + } + } + + // Starting at $this->innermostTableLevel + // Cascade back up nested tables: setting heights back up the tree + for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) { + for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) { + list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]); } + } + if ($this->progressBar) { $this->UpdateProgressBar(7,20,' '); } // *PROGRESS-BAR* + if ($this->table[1][1]['overflow']=='visible') { + if ($maxrowheight > $fullpage) { die("mPDF Warning: A Table row is greater than available height. You cannot use CSS overflow:visible"); } + if ($maxfirstrowheight > $remainingpage) { $this->AddPage($this->CurOrientation); } + $r = 0; $c = 0; $p = 0; $y = 0; + while (!$finished) { + list($finished,$r,$c,$p,$y,$y0) = $this->_tableWrite($this->table[1][1],true,$r,$c,$p,$y); + if (!$finished) { + $this->AddPage($this->CurOrientation); + // If printed something on first spread, set same y + if ($r==0 && $y0 > -1) { $this->y = $y0; } + } + } + } + else { + $recalculate = 1; + $forcerecalc = false; + // RESIZING ALGORITHM + if ($maxrowheight > $fullpage) { + $recalculate = $this->tbsqrt($maxrowheight / $fullpage, 1); + $forcerecalc = true; + } + else if ($this->table_rotate) { // NB $remainingpage == $fullpage == the width of the page + if ($tableheight > $remainingpage) { + // If can fit on remainder of page whilst respecting autsize value.. + if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); + } + else if (!$added_page) { + if ($this->y != $this->tMargin) { + $this->AddPage($this->CurOrientation); + $this->kwt_moved = true; + } + $added_page = true; + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height; + // 0.001 to force it to recalculate + $recalculate = (1 / $this->shrin_k) + 0.001; // undo any shrink + } + } + else { $recalculate = 1; } + } + else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) { + if ($tableheight > $fullpage) { + if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, 1)) <= $this->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); + } + else if ($this->tableMinSizePriority) { + $this->table_keep_together = false; + $recalculate = 1.001; + } + else { + if ($this->y != $this->tMargin) { // mPDF 5.1 + $this->AddPage($this->CurOrientation); + $this->kwt_moved = true; + } + $added_page = true; + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height; + $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); + } + } + else if ($tableheight > $remainingpage) { + // If can fit on remainder of page whilst respecting autsize value.. + if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); + } + else { + if ($this->y != $this->tMargin) { + $this->AddPage($this->CurOrientation); + $this->kwt_moved = true; + } + $added_page = true; + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height; + $recalculate = 1.001; + } + } + else { $recalculate = 1; } + } + else { $recalculate = 1; } + + if ($recalculate > $this->shrink_this_table_to_fit && !$forcerecalc) { $recalculate = $this->shrink_this_table_to_fit; } + + $iteration = 1; + + // RECALCULATE + while($recalculate <> 1) { + $this->shrin_k1 = $recalculate ; + $this->shrin_k *= $recalculate ; + $this->default_font_size /= ($this->shrin_k1) ; + $this->SetFontSize($this->default_font_size, false ); + $this->SetLineHeight('',$this->table_lineheight); + $this->table = $save_table; + if ($this->cacheTables) { $this->_restoreCacheFiles(); } + if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[1][1],$this->shrin_k); } + $this->_tableColumnWidth($this->table[1][1],false); // repeat + + // Starting at $this->innermostTableLevel + // Shrink table values - and redo columnWidth + for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) { + for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) { + if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k); } + $this->_tableColumnWidth($this->table[$lvl][$nid],false); + } + } + // Set table cell widths for top level table + + // Top level table + $this->_tableWidth($this->table[1][1]); + + // Now work through any nested tables setting child table[w'] = parent cell['w'] + // Now do nested tables _tableWidth + for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) { + for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) { + // HERE set child table width = cell width + + list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos']; + if ($this->cacheTables) { + $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null); + } + else + $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol]; + + if (isset($c['colspan']) && $c['colspan']> 1) { + $parentwidth = 0; + for($cs=0;$cs<$c['colspan'] ; $cs++) { + $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs]; + } + } + else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; } + + //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell + if (!$this->simpleTables){ + if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']); + } + else { + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($this->table[$lvl-1][$parentnid]['borders_separate']) { + $parentwidth -= $br + $bl + + $c['padding']['L'] + + $c['padding']['R'] + + $this->table[($lvl-1)][$parentnid]['border_spacing_H']; + } + else { + $parentwidth -= $br/2 + $bl/2 + + $c['padding']['L'] + + $c['padding']['R']; + } + } + else if ($this->simpleTables){ + if ($this->table[$lvl-1][$parentnid]['borders_separate']) { + $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w'] + + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w'] + + $c['padding']['L'] + + $c['padding']['R'] + + $this->table[($lvl-1)][$parentnid]['border_spacing_H']; + } + else { + $parentwidth -= ($this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w'] + + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']) /2 + + $c['padding']['L'] + + $c['padding']['R']; + } + } + if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) { + $this->table[$lvl][$nid]['w'] = $parentwidth; + } + else if ($parentwidth > $this->table[$lvl][$nid]['maw']) { + $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw'] ; + } + else { + $this->table[$lvl][$nid]['w'] = $parentwidth; + } + unset($c); + $this->_tableWidth($this->table[$lvl][$nid]); + } + } + + // Starting at $this->innermostTableLevel + // Cascade back up nested tables: setting heights back up the tree + for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) { + for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) { + list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]); } + } + + // RESIZING ALGORITHM + + if ($maxrowheight > $fullpage) { $recalculate = $this->tbsqrt($maxrowheight / $fullpage, $iteration); $iteration++; } + else if ($this->table_rotate && $tableheight > $remainingpage && !$added_page) { + // If can fit on remainder of page whilst respecting autosize value.. + if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); $iteration++; + } + else { + if (!$added_page) { + $this->AddPage($this->CurOrientation); + $added_page = true; + $this->kwt_moved = true; + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height; + } + // 0.001 to force it to recalculate + $recalculate = (1 / $this->shrin_k) + 0.001; // undo any shrink + } + } + else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) { + if ($tableheight > $fullpage) { + if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, $iteration)) <= $this->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; + } + else if ($this->tableMinSizePriority) { + $this->table_keep_together = false; + $recalculate = (1 / $this->shrin_k) + 0.001; + } + else { + if (!$added_page && $this->y != $this->tMargin) { + $this->AddPage($this->CurOrientation); + $added_page = true; + $this->kwt_moved = true; + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height; + } + $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; + } + } + else if ($tableheight > $remainingpage) { + // If can fit on remainder of page whilst respecting autosize value.. + if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) { + $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); $iteration++; + } + else { + if (!$added_page) { + $this->AddPage($this->CurOrientation); + $added_page = true; + $this->kwt_moved = true; + $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height; + } + + //$recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; + $recalculate = (1 / $this->shrin_k) + 0.001; // undo any shrink + } + } + else { $recalculate = 1; } + } + else { $recalculate = 1; } + } + + + if ($maxfirstrowheight > $remainingpage && !$added_page && !$this->table_rotate && !$this->ColActive && !$this->table_keep_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) { + $this->AddPage($this->CurOrientation); + $this->kwt_moved = true; + } + + // keep-with-table: if page has advanced, print out buffer now, else done in fn. _Tablewrite() + if ($this->kwt_saved && $this->kwt_moved) { + $this->printkwtbuffer(); + $this->kwt_moved = false; + $this->kwt_saved = false; + } + + if ($this->progressBar) { $this->UpdateProgressBar(7,30,' '); } // *PROGRESS-BAR* + // Recursively writes all tables starting at top level + $this->_tableWrite($this->table[1][1]); + + if ($this->table_rotate && $this->tablebuffer) { + $this->PageBreakTrigger=$this->h-$this->bMargin; + $save_tr = $this->table_rotate; + $save_y = $this->y; + $this->table_rotate = 0; + $this->y = $this->tbrot_y0; + $h = $this->tbrot_w; + $this->DivLn($h,$this->blklvl,true); + + $this->table_rotate = $save_tr; + $this->y = $save_y; + + $this->printtablebuffer(); + } + $this->table_rotate = 0; + } + + + $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin']; + + $this->maxPosR = max($this->maxPosR , ($this->x + $this->table[1][1]['w'])); + + $this->blockjustfinished=true; + $this->lastblockbottommargin = $this->table[1][1]['margin']['B']; + //Reset values + + if (isset($this->table[1][1]['page_break_after'])) { $page_break_after = $this->table[1][1]['page_break_after']; } + else { $page_break_after = ''; } + + // Keep-with-table + $this->kwt = false; + $this->kwt_y0 = 0; + $this->kwt_x0 = 0; + $this->kwt_height = 0; + $this->kwt_buffer = array(); + $this->kwt_Links = array(); + $this->kwt_Annots = array(); + $this->kwt_moved = false; + $this->kwt_saved = false; + + $this->kwt_Reference = array(); + $this->kwt_BMoutlines = array(); + $this->kwt_toc = array(); + + $this->shrin_k = 1; + $this->shrink_this_table_to_fit = 0; + + unset($this->table); + $this->table=array(); //array + $this->tableLevel=0; + $this->tbctr=array(); + $this->innermostTableLevel=0; + $this->cssmgr->tbCSSlvl = 0; + $this->cssmgr->tablecascadeCSS = array(); + + unset($this->cell); + $this->cell=array(); //array + + $this->col=-1; //int + $this->row=-1; //int + $this->Reset(); + + $this->cellPaddingL = 0; + $this->cellPaddingT = 0; + $this->cellPaddingR = 0; + $this->cellPaddingB = 0; + $this->cMarginL = 0; + $this->cMarginT = 0; + $this->cMarginR = 0; + $this->cMarginB = 0; + $this->default_font_size = $this->original_default_font_size; + $this->default_font = $this->original_default_font; + $this->SetFontSize($this->default_font_size, false); + $this->SetFont($this->default_font,'',0,false); + $this->SetLineHeight(); + if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);} + if ($this->progressBar) { $this->UpdateProgressBar(7,100,' '); } // *PROGRESS-BAR* + + if ($page_break_after) { + $save_blklvl = $this->blklvl; + $save_blk = $this->blk; + $save_silp = $this->saveInlineProperties(); + $save_spanlvl = $this->spanlvl; + $save_ilp = $this->InlineProperties; + if ($this->blklvl>1) { + // Close any open block tags + for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); } + // Output any text left in buffer + if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); } + } +/*-- COLUMNS --*/ + $save_cols = false; + if ($this->ColActive) { + $save_cols = true; + $save_nbcol = $this->NbCol; // other values of gap and vAlign will not change by setting Columns off + $this->SetColumns(0); + } +/*-- END COLUMNS --*/ + if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); } + if (!$this->restoreBlockPagebreaks) { + $this->blklvl = 0; + $this->lastblocklevelchange = 0; + $this->blk = array(); + $this->initialiseBlock($this->blk[0]); + $this->blk[0]['width'] =& $this->pgwidth; + $this->blk[0]['inner_width'] =& $this->pgwidth; + $this->blk[0]['blockContext'] = $this->blockContext; + $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); + $this->setCSS($properties,'','BODY'); + } + +/*-- COLUMNS --*/ + if ($save_cols) { + // Restore columns + $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap); + } +/*-- END COLUMNS --*/ + if ($this->restoreBlockPagebreaks) { + $this->blk = $save_blk; + // Re-open block tags + $t = $this->blk[0]['tag']; + $a = $this->blk[0]['attr']; + $this->blklvl = 0; + for ($b=0; $b<=$save_blklvl;$b++) { + $tc = $t; + $ac = $a; + $t = $this->blk[$b+1]['tag']; + $a = $this->blk[$b+1]['attr']; + unset($this->blk[$b+1]); + $this->OpenTag($tc,$ac); + } + $this->spanlvl = $save_spanlvl; + $this->InlineProperties = $save_ilp; + $this->restoreInlineProperties($save_silp); + } + } + + } +/*-- END TABLES --*/ + +/*-- LISTS --*/ + // *********** LISTS ******************** + + if($tag=='LI') { + $this->lastoptionaltag = ''; + unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]); + $this->cssmgr->listCSSlvl--; + if (isset($this->listoccur[$this->listlvl]) && isset($this->InlineProperties['LIST'][$this->listlvl][$this->listoccur[$this->listlvl]])) { $this->restoreInlineProperties($this->InlineProperties['LIST'][$this->listlvl][$this->listoccur[$this->listlvl]]); } + } + + + if(($tag=='UL') or ($tag=='OL')) { + $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces + unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]); + $this->cssmgr->listCSSlvl--; + + $this->lastoptionaltag = ''; +/*-- TABLES --*/ + // A simple list for inside a table + if($this->tableLevel) { + $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum + unset($this->listlist[$this->listlvl]); + $this->listlvl--; + if (isset($this->listlist[$this->listlvl]['MAXNUM'])) { $this->listnum = $this->listlist[$this->listlvl]['MAXNUM']; } // restore previous levels + if ($this->listlvl == 0) { $this->listjustfinished = true; } + return; + } +/*-- END TABLES --*/ + + if ($this->listlvl > 1) { // returning one level + $this->listjustfinished=true; + if (!empty($this->textbuffer)) { + $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype); + } + else { + $this->listnum--; + } + + $this->textbuffer = array(); + $occur = $this->listoccur[$this->listlvl]; + $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum + $this->listlvl--; + $occur = $this->listoccur[$this->listlvl]; + $this->listnum = $this->listlist[$this->listlvl][$occur]['MAXNUM']; // recover previous level's number + $this->listtype = $this->listlist[$this->listlvl][$occur]['TYPE']; // recover previous level's type + if ($this->InlineProperties['LIST'][$this->listlvl][$occur]) { $this->restoreInlineProperties($this->InlineProperties['LIST'][$this->listlvl][$occur]); } + + } + else { // We are closing the last OL/UL tag + if (!empty($this->textbuffer)) { + $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype); + } + else { + $this->listnum--; + } + + $occur = $this->listoccur[$this->listlvl]; + $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; + $this->textbuffer = array(); + $this->listlvl--; + + $this->printlistbuffer(); + unset($this->InlineProperties['LIST']); + // SPACING AFTER LIST (Top level only) + $this->Ln(0); + if ($this->list_margin_bottom) { + $this->DivLn($this->list_margin_bottom,$this->blklvl,true,1); // collapsible + } + if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);} + $this->listjustfinished = true; + $this->cssmgr->listCSSlvl = 0; + $this->cssmgr->listcascadeCSS = array(); + $this->blockjustfinished=true; + $this->lastblockbottommargin = $this->list_margin_bottom; + } + } +/*-- END LISTS --*/ + + +} + + +/*-- TABLES --*/ +// This function determines the shrink factor when resizing tables +// val is the table_height / page_height_available +// returns a scaling factor used as $shrin_k to resize the table +// Overcompensating will be quicker but may unnecessarily shrink table too much +// Undercompensating means it will reiterate more times (taking more processing time) +function tbsqrt($val, $iteration=3) { + $k = 4; // Alters number of iterations until it returns $val itself - Must be > 2 + // Probably best guess and most accurate + if ($iteration==1) return sqrt($val); + // Faster than using sqrt (because it won't undercompensate), and gives reasonable results + //return 1+(($val-1)/2); + $x = 2-(($iteration-2)/($k-2)); + if ($x == 0) { $ret = $val+0.00001; } + else if ($x < 0) { $ret = 1 + ( pow(2, ($iteration-2-$k))/1000 ); } + else { $ret = 1+(($val-1)/$x); } + return $ret; +} +/*-- END TABLES --*/ + + +/*-- LISTS --*/ +function printlistbuffer() { + //Save x coordinate + $x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin']; + $this->cMarginL = 0; + $this->cMarginR = 0; + $currIndentLvl = -1; + $lastIndent = array(); + $bak_page = $this->page; + $indent = 0; + foreach($this->listitem as $item) + { + // COLS + $oldcolumn = $this->CurrCol; + + $this->bulletarray = array(); + //Get list's buffered data + $this->listlvl = $lvl = $item[0]; + $num = $item[1]; + $this->textbuffer = $item[2]; + $occur = $item[3]; + if ($item[4]) { $type = $item[4]; } // listitemtype + else { $type = $this->listlist[$lvl][$occur]['TYPE']; } + $maxnum = $this->listlist[$lvl][$occur]['MAXNUM']; + $this->restoreInlineProperties($this->InlineProperties['LIST'][$lvl][$occur]); + $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); // force to write + $clh = $this->FontSize; + + $this->SetLineHeight($this->FontSizePt,$this->list_lineheight[$lvl][$occur]); + $this->listOcc = $occur; + $this->listnum = $num; + + if (isset($this->list_align[$this->listlvl][$occur])) { $this->divalign = $this->list_align[$this->listlvl][$occur]; } + else { + if (isset($this->blk[$this->blklvl]['direction']) && $this->blk[$this->blklvl]['direction']=='rtl') { $this->divalign = 'R'; } + else { $this->divalign = 'L'; } + } + + // Set the bullet fontsize + $bullfs = $this->InlineProperties['LISTITEM'][$lvl][$occur][$num]['size']; + + $space_width = $this->GetCharWidth(' ',false) * 1.5; + + //Set default width & height values + $this->divwidth = $this->blk[$this->blklvl]['inner_width']; + $this->divheight = $this->lineheight; + $typefont = $this->FontFamily; + if (preg_match('/U\+([a-fA-F0-9]+)/i',$type,$m)) { + if ($this->_charDefined($this->CurrentFont['cw'],hexdec($m[1]))) { $list_item_marker = codeHex2utf($m[1]); } + else { $list_item_marker = '-'; } + $blt_width = $this->GetStringWidth($list_item_marker); + $typefont = ''; + if (preg_match('/rgb\(.*?\)/',$type,$m)) { + $list_item_color = $this->ConvertColor($m[0]); + } + } + else { + $list_item_color = false; + + switch($type) //Format type + { + case '1': + if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; } + else { $list_item_marker = $num . $this->list_number_suffix; } + $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix); + break; + case 'none': + $list_item_marker = ''; + $blt_width = 0; + break; + case 'A': + $anum = $this->dec2alpha($num,true); + $maxnum = $this->dec2alpha($maxnum,true); + if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; } + else { $list_item_marker = $anum . $this->list_number_suffix; } + $blt_width = $this->GetStringWidth(str_repeat('W',strlen($maxnum)).$this->list_number_suffix); + break; + case 'a': + $anum = $this->dec2alpha($num,false); + $maxnum = $this->dec2alpha($maxnum,false); + if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; } + else { $list_item_marker = $anum . $this->list_number_suffix; } + $blt_width = $this->GetStringWidth(str_repeat('m',strlen($maxnum)).$this->list_number_suffix); + break; + case 'I': + $anum = $this->dec2roman($num,true); + if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; } + else { $list_item_marker = $anum . $this->list_number_suffix; } + + if ($maxnum>87) { $bbit = 87; } + else if ($maxnum>86) { $bbit = 86; } + else if ($maxnum>37) { $bbit = 38; } + else if ($maxnum>36) { $bbit = 37; } + else if ($maxnum>27) { $bbit = 28; } + else if ($maxnum>26) { $bbit = 27; } + else if ($maxnum>17) { $bbit = 18; } + else if ($maxnum>16) { $bbit = 17; } + else if ($maxnum>7) { $bbit = 8; } + else if ($maxnum>6) { $bbit = 7; } + else if ($maxnum>3) { $bbit = 4; } + else { $bbit = $maxnum; } + $maxlnum = $this->dec2roman($bbit,true); + $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix); + break; + case 'i': + $anum = $this->dec2roman($num,false); + if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; } + else { $list_item_marker = $anum . $this->list_number_suffix; } + + if ($maxnum>87) { $bbit = 87; } + else if ($maxnum>86) { $bbit = 86; } + else if ($maxnum>37) { $bbit = 38; } + else if ($maxnum>36) { $bbit = 37; } + else if ($maxnum>27) { $bbit = 28; } + else if ($maxnum>26) { $bbit = 27; } + else if ($maxnum>17) { $bbit = 18; } + else if ($maxnum>16) { $bbit = 17; } + else if ($maxnum>7) { $bbit = 8; } + else if ($maxnum>6) { $bbit = 7; } + else if ($maxnum>3) { $bbit = 4; } + else { $bbit = $maxnum; } + $maxlnum = $this->dec2roman($bbit,false); + + $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix); + break; + case 'disc': + if ($this->PDFA || $this->PDFX) { + if ($this->_charDefined($this->CurrentFont['cw'],8226)) { $list_item_marker = "\xe2\x80\xa2"; } // • + else { $list_item_marker = '-'; } + $blt_width = $this->GetCharWidth($list_item_marker); + break; + } + $list_item_marker = chr(108); // bullet disc in Zapfdingbats 'l' + $typefont = 'czapfdingbats'; + $blt_width = (0.791 * $this->FontSize/2.5); + break; + case 'circle': + if ($this->PDFA || $this->PDFX) { + if ($this->_charDefined($this->CurrentFont['cw'],9900)) { $list_item_marker = "\xe2\x9a\xac"; } // ⚬ + else { $list_item_marker = '-'; } + $blt_width = $this->GetCharWidth($list_item_marker); + break; + } + $list_item_marker = chr(109); // circle in Zapfdingbats 'm' + $typefont = 'czapfdingbats'; + $blt_width = (0.873 * $this->FontSize/2.5); + break; + case 'square': + if ($this->PDFA || $this->PDFX) { + if ($this->_charDefined($this->CurrentFont['cw'],9642)) { $list_item_marker = "\xe2\x96\xaa"; } // ▪ + else { $list_item_marker = '-'; } + $blt_width = $this->GetCharWidth($list_item_marker); + break; + } + $list_item_marker = chr(110); //black square in Zapfdingbats font 'n' + $typefont = 'czapfdingbats'; + $blt_width = (0.761 * $this->FontSize/2.5); + break; + +/* CSS3 list-styles numeric + I added tamil +arabic-indic | bengali | cambodian | devanagari | gujarati | gurmukhi | kannada | khmer | lao | malayalam | mongolian | myanmar | oriya | persian | telugu | tibetan | thai | urdu +*/ + case 'arabic-indic': + $cp = 0x0660; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $this->list_number_suffix . $rnum; // RTL + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'persian': + case 'urdu': + $cp = 0x06F0; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $this->list_number_suffix . $rnum; // RTL + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'bengali': + $cp = 0x09E6; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'devanagari': + $cp = 0x0966; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'gujarati': + $cp = 0x0AE6; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'gurmukhi': + $cp = 0x0A66; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'kannada': + $cp = 0x0CE6; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'malayalam': + $cp = 0x0D66; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(6, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'oriya': + $cp = 0x0B66; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'telugu': + $cp = 0x0C66; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'tamil': + $cp = 0x0BE6; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(9, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'thai': + $cp = 0x0E50; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(5, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + default: + if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; } + else { $list_item_marker = $num . $this->list_number_suffix; } + $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix); + break; + } + } + + if (isset($item[5]) && $item[5]) { $list_item_marker = ''; } + + if ($currIndentLvl < $lvl) { + if ($lvl > 1 || $this->list_indent_first_level) { + $indent += $this->list_indent[$lvl][$occur]; + $lastIndent[$lvl] = $this->list_indent[$lvl][$occur]; + } + } + else if ($currIndentLvl > $lvl) { + while ($currIndentLvl > $lvl) { + $indent -= $lastIndent[$currIndentLvl]; + $currIndentLvl--; + } + } + $currIndentLvl = $lvl; + + +/*-- RTL --*/ + + if ($this->listDir == 'rtl') { + // list_align_style Determines alignment of numbers in numbered lists + if ($this->list_align_style == 'L') { $lalign = 'R'; } + else { $lalign = 'L'; } + $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ; + $xb = $this->blk[$this->blklvl]['inner_width'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left'] - $indent - $blt_width; //Bullet position (relative) + //Output bullet + $this->bulletarray = array('w'=>$blt_width,'h'=>$clh,'txt'=>$list_item_marker,'x'=>$xb,'align'=>$lalign,'font'=>$typefont,'level'=>$lvl, 'occur'=>$occur, 'num'=>$num, 'fontsize'=>$bullfs, 'col'=>$list_item_color ); + $this->x = $x; + } + else { +/*-- END RTL --*/ + + if ($this->list_align_style == 'L') { $lalign = 'L'; } + else { $lalign = 'R'; } + $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ; + $xb = $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] - $blt_width - $space_width; + //Output bullet + $this->bulletarray = array('w'=>$blt_width,'h'=>$clh,'txt'=>$list_item_marker,'x'=>$xb,'align'=>$lalign,'font'=>$typefont,'level'=>$lvl, 'occur'=>$occur, 'num'=>$num, 'fontsize'=>$bullfs, 'col'=>$list_item_color ); + $this->x = $x + $indent + $blt_width + $space_width; + } // *RTL* + + //Print content + $this->printbuffer($this->textbuffer,'',false,true); + $this->textbuffer=array(); + + // Added to correct for OddEven Margins + if ($this->page != $bak_page) { + if (($this->page-$bak_page) % 2 == 1) { + $x += $this->MarginCorrection; + } + $bak_page = $this->page; + } +/*-- COLUMNS --*/ + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *RTL* + $x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL* + } // *RTL* + else { // *RTL* + $x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); + } // *RTL* + $oldcolumn = $this->CurrCol; + } +/*-- END COLUMNS --*/ + + } + + //Reset all used values + $this->listoccur = array(); + $this->listitem = array(); + $this->listlist = array(); + $this->listlvl = 0; + $this->listnum = 0; + $this->listtype = ''; + $this->textbuffer = array(); + $this->divwidth = 0; + $this->divheight = 0; + $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin']; +} +/*-- END LISTS --*/ + +function _saveTextBuffer($t, $link = '', $intlink = '') { +// $this->textbuffer[] = array($t,$link,$this->currentfontstyle,$this->colorarray,$this->currentfontfamily,$this->SUP,$this->SUB,$intlink,$this->strike,$this->textparam,$this->spanbgcolorarray,$this->currentfontsize,$this->ReqFontStyle,$this->kerning,$this->lSpacingCSS,$this->wSpacingCSS,$this->spanborddet, $this->textshadow); + // mPDF 5.6.14 + $arr = array(); + $arr[0] = $t; + if (isset($link) && $link) $arr[1] = $link; + $arr[2] = $this->currentfontstyle; + if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray; + $arr[4] = $this->currentfontfamily; + if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP; + if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB; + if (isset($intlink) && $intlink) $arr[7] = $intlink; + if (isset($this->strike) && $this->strike) $arr[8] = $this->strike; + if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam; + if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray; + $arr[11] = $this->currentfontsize; + if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle; + if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning; + if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS; + if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS; + if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet; + if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow; + $this->textbuffer[] = $arr; +} + +function _saveCellTextBuffer($t, $link = '', $intlink = '') { +// $this->cell[$this->row][$this->col]['textbuffer'][] = array($t,$link,$this->currentfontstyle,$this->colorarray,$this->currentfontfamily,$this->SUP,$this->SUB,$intlink,$this->strike,$this->textparam,$this->spanbgcolorarray,$this->currentfontsize,$this->ReqFontStyle,$this->kerning,$this->lSpacingCSS,$this->wSpacingCSS,$this->spanborddet, $this->textshadow); + // mPDF 5.6.14 + $arr = array(); + $arr[0] = $t; + if (isset($link) && $link) $arr[1] = $link; + $arr[2] = $this->currentfontstyle; + if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray; + $arr[4] = $this->currentfontfamily; + if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP; + if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB; + if (isset($intlink) && $intlink) $arr[7] = $intlink; + if (isset($this->strike) && $this->strike) $arr[8] = $this->strike; + if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam; + if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray; + $arr[11] = $this->currentfontsize; + if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle; + if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning; + if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS; + if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS; + if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet; + if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow; + $this->cell[$this->row][$this->col]['textbuffer'][] = $arr; +} + + +function printbuffer($arrayaux,$blockstate=0,$is_table=false,$is_list=false) +{ +// $blockstate = 0; // NO margins/padding +// $blockstate = 1; // Top margins/padding only +// $blockstate = 2; // Bottom margins/padding only +// $blockstate = 3; // Top & bottom margins/padding + $this->spanbgcolorarray = ''; + $this->spanbgcolor = false; + $this->spanborder = false; + $this->spanborddet = array(); + $paint_ht_corr = 0; + +/*-- CSS-FLOAT --*/ + if (count($this->floatDivs)) { + list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl); + if (($this->blk[$this->blklvl]['inner_width']-$l_width-$r_width) < (2*$this->GetCharWidth('W',false))) { + // Too narrow to fit - try to move down past L or R float + if ($l_max < $r_max && ($this->blk[$this->blklvl]['inner_width']-$r_width) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('LEFT', $this->blklvl); + } + else if ($r_max < $l_max && ($this->blk[$this->blklvl]['inner_width']-$l_width) > (2*$this->GetCharWidth('W',false))) { + $this->ClearFloats('RIGHT', $this->blklvl); + } + else { $this->ClearFloats('BOTH', $this->blklvl); } + } + } +/*-- END CSS-FLOAT --*/ + $bak_y = $this->y; + $bak_x = $this->x; + $align = ''; + if (!$is_table && !$is_list) { + if (isset($this->blk[$this->blklvl]['align']) && $this->blk[$this->blklvl]['align']) { $align = $this->blk[$this->blklvl]['align']; } + // Block-align is set by e.g. <.. align="center"> Takes priority for this block but not inherited + if (isset($this->blk[$this->blklvl]['block-align']) && $this->blk[$this->blklvl]['block-align']) { $align = $this->blk[$this->blklvl]['block-align']; } + if (isset($this->blk[$this->blklvl]['direction'])) $blockdir = $this->blk[$this->blklvl]['direction']; + else $blockdir = ""; + $this->divwidth = $this->blk[$this->blklvl]['width']; + } + else { + $align = $this->divalign; + if ($is_table) { $blockdir = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']; } + else { $blockdir = $this->listDir; } + } + $oldpage = $this->page; + + // ADDED for Out of Block now done as Flowing Block + if ($this->divwidth == 0) { + $this->divwidth = $this->pgwidth; + } + + if (!$is_table && !$is_list) { $this->SetLineHeight($this->FontSizePt,$this->blk[$this->blklvl]['line_height']); } + $this->divheight = $this->lineheight; + $old_height = $this->divheight; + + // As a failsafe - if font has been set but not output to page + $this->SetFont($this->default_font,'',$this->default_font_size,true,true); // force output to page + + $array_size = count($arrayaux); + $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,true,$blockdir); + + // Added - Otherwise

      did not output top margins/padding for 1st/2nd div + if ($array_size == 0) { $this->finishFlowingBlock(true); } // true = END of flowing block + + for($i=0;$i < $array_size; $i++) + { + // COLS + $oldcolumn = $this->CurrCol; + + $vetor = $arrayaux[$i]; + if ($i == 0 and $vetor[0] != "\n" and !$this->ispre) { + $vetor[0] = ltrim($vetor[0]); + } + + // FIXED TO ALLOW IT TO SHOW '0' + if (empty($vetor[0]) && !($vetor[0]==='0') && empty($vetor[7])) { //Ignore empty text and not carrying an internal link + //Check if it is the last element. If so then finish printing the block + if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block + continue; + } + + + //Activating buffer properties + if(isset($vetor[11]) and $vetor[11] != '') { // Font Size + if ($is_table && $this->shrin_k) { + $this->SetFontSize($vetor[11]/$this->shrin_k,false); + } + else { + $this->SetFontSize($vetor[11],false); + } + } + + if(isset($vetor[17]) && !empty($vetor[17])) { //TextShadow + $this->textshadow = $vetor[17]; + } + if(isset($vetor[16]) && !empty($vetor[16])) { //Border + $this->spanborddet = $vetor[16]; + $this->spanborder = true; + } + + if(isset($vetor[15])) { // Word spacing + $this->wSpacingCSS = $vetor[15]; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); + } + } + if(isset($vetor[14])) { // Letter spacing + $this->lSpacingCSS = $vetor[14]; + if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); + } + } + if(isset($vetor[13])) { // Font Kerning + $this->kerning = $vetor[13]; + } + + + if(isset($vetor[10]) and !empty($vetor[10])) //Background color + { + $this->spanbgcolorarray = $vetor[10]; + $this->spanbgcolor = true; + } + if(isset($vetor[9]) and !empty($vetor[9])) // Text parameters - Outline + hyphens + { + $this->textparam = $vetor[9] ; // mPDF 5.6.14 + $this->SetTextOutline($this->textparam); // mPDF 5.6.07 + } + if(isset($vetor[8]) and $vetor[8] === true) // strike-through the text + { + $this->strike = true; + } + if(isset($vetor[7]) and $vetor[7] != '') // internal target: + { + $ily = $this->y; + if ($this->keep_block_together) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); } + else if ($this->table_rotate) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); } + else if ($this->kwt) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); } + else if ($this->ColActive) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); } + else + $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page ); + if (empty($vetor[0])) { //Ignore empty text + //Check if it is the last element. If so then finish printing the block + if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block + continue; + } + } + if(isset($vetor[6]) and $vetor[6] === true) // Subscript + { + $this->SUB = true; + } + if(isset($vetor[5]) and $vetor[5] === true) // Superscript + { + $this->SUP = true; + } + if(isset($vetor[4]) and $vetor[4] != '') { // Font Family + $font = $this->SetFont($vetor[4],$this->FontStyle,0,false); + } + if (!empty($vetor[3])) //Font Color + { + $cor = $vetor[3]; + $this->SetTColor($cor); + } + if(isset($vetor[2]) and $vetor[2] != '') //Bold,Italic,Underline styles + { + $this->SetStyles($vetor[2]); + } + + if(isset($vetor[12]) and $vetor[12] != '') { //Requested Bold,Italic,Underline + $this->ReqFontStyle = $vetor[12]; + } + if(isset($vetor[1]) and $vetor[1] != '') //LINK + { + if (strpos($vetor[1],".") === false && strpos($vetor[1],"@") !== 0) //assuming every external link has a dot indicating extension (e.g: .html .txt .zip www.somewhere.com etc.) + { + //Repeated reference to same anchor? + while(array_key_exists($vetor[1],$this->internallink)) $vetor[1]="#".$vetor[1]; + $this->internallink[$vetor[1]] = $this->AddLink(); + $vetor[1] = $this->internallink[$vetor[1]]; + } + $this->HREF = $vetor[1]; // HREF link style set here ****** + } + + // SPECIAL CONTENT - IMAGES & FORM OBJECTS + //Print-out special content + + if (substr($vetor[0],0,3) == "\xbb\xa4\xac") { //identifier has been identified! + + $objattr = $this->_getObjAttr($vetor[0]); + +/*-- TABLES --*/ + if ($objattr['type'] == 'nestedtable') { + if ($objattr['nestedcontent']) { + $level = $objattr['level']; + $table = &$this->table[$level][$objattr['table']]; + if ($this->cacheTables) { + $fh = fopen($table['cache'], "r+b"); + $cell = $this->_uncacheCell($table['cells'][$objattr['row']][$objattr['col']], '', $fh); + } + else { + $fh = null; + $cell = &$table['cells'][$objattr['row']][$objattr['col']]; + } + $this->finishFlowingBlock(false,'nestedtable'); + $save_dw = $this->divwidth ; + $save_buffer = $this->cellBorderBuffer; + $this->cellBorderBuffer = array(); + $ncx = $this->x; + list($dummyx,$w) = $this->_tableGetWidth($table, $objattr['row'], $objattr['col'], $fh); + $ntw = $this->table[($level+1)][$objattr['nestedcontent']]['w']; // nested table width + if (!$this->simpleTables){ + if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cell['borderbin']); + } + else { + $br = $cell['border_details']['R']['w']; + $bl = $cell['border_details']['L']['w']; + } + if ($table['borders_separate']) { + $innerw = $w - $bl - $br - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H']; + } + else { + $innerw = $w - $bl/2 - $br/2 - $cell['padding']['L'] - $cell['padding']['R']; + } + } + else if ($this->simpleTables){ + if ($table['borders_separate']) { + $innerw = $w - $table['simple']['border_details']['L']['w'] - $table['simple']['border_details']['R']['w'] - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H']; + } + else { + $innerw = $w - $table['simple']['border_details']['L']['w']/2 - $table['simple']['border_details']['R']['w']/2 - $cell['padding']['L'] - $cell['padding']['R']; + } + } + if ($cell['a']=='C' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='C') { + $ncx += ($innerw-$ntw)/2; + } + elseif ($cell['a']=='R' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='R') { + $ncx += $innerw- $ntw; + } + $this->x = $ncx ; + if ($this->cacheTables) { fclose($fh); } + + $this->_tableWrite($this->table[($level+1)][$objattr['nestedcontent']]); + $this->cellBorderBuffer = $save_buffer; + $this->x = $bak_x ; + $this->divwidth = $save_dw; + $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir); + } + } + else { +/*-- END TABLES --*/ + if ($is_table) { // *TABLES* + $maxWidth = $this->divwidth; // *TABLES* + } // *TABLES* + else { // *TABLES* + $maxWidth = $this->divwidth - ($this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_right'] + $this->blk[$this->blklvl]['border_right']['w']); + } // *TABLES* + +/*-- CSS-IMAGE-FLOAT --*/ + // If float (already) exists at this level + if (isset($this->floatmargins['R']) && $this->y <= $this->floatmargins['R']['y1'] && $this->y >= $this->floatmargins['R']['y0']) { $maxWidth -= $this->floatmargins['R']['w']; } + if (isset($this->floatmargins['L']) && $this->y <= $this->floatmargins['L']['y1'] && $this->y >= $this->floatmargins['L']['y0']) { $maxWidth -= $this->floatmargins['L']['w']; } +/*-- END CSS-IMAGE-FLOAT --*/ + + list($skipln) = $this->inlineObject($objattr['type'], '', $this->y, $objattr,$this->lMargin, ($this->flowingBlockAttr['contentWidth']/_MPDFK), $maxWidth, $this->flowingBlockAttr['height'], false, $is_table); + // 1 -> New line needed because of width + // -1 -> Will fit width on line but NEW PAGE REQUIRED because of height + // -2 -> Will not fit on line therefore needs new line but thus NEW PAGE REQUIRED + $iby = $this->y; + $oldpage = $this->page; + $oldcol = $this->CurrCol; + if (($skipln == 1 || $skipln == -2) && !isset($objattr['float'])) { + $this->finishFlowingBlock(false,$objattr['type']); + $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir); + } + $thispage = $this->page; + if ($this->CurrCol!=$oldcol) { $changedcol = true; } + else { $changedcol=false; } + + // the previous lines can already have triggered page break or column change + if (!$changedcol && $skipln <0 && $this->AcceptPageBreak() && $thispage==$oldpage) { + + $this->AddPage($this->CurOrientation); + + // Added to correct Images already set on line before page advanced + // i.e. if second inline image on line is higher than first and forces new page + if (count($this->objectbuffer)) { + $yadj = $iby - $this->y; + foreach($this->objectbuffer AS $ib=>$val) { + if ($this->objectbuffer[$ib]['OUTER-Y'] ) $this->objectbuffer[$ib]['OUTER-Y'] -= $yadj; + if ($this->objectbuffer[$ib]['BORDER-Y']) $this->objectbuffer[$ib]['BORDER-Y'] -= $yadj; + if ($this->objectbuffer[$ib]['INNER-Y']) $this->objectbuffer[$ib]['INNER-Y'] -= $yadj; + } + } + } + + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page-$oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr ; + $this->oldy = $this->tMargin - $paint_ht_corr ; + $old_height = 0; + } + $this->x = $bak_x; +/*-- COLUMNS --*/ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *RTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL* + } // *RTL* + else { // *RTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); + } // *RTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr ; + $this->oldy = $this->y0 - $paint_ht_corr ; + $old_height = 0; + } +/*-- END COLUMNS --*/ + +/*-- CSS-IMAGE-FLOAT --*/ + if ($objattr['type'] == 'image' && isset($objattr['float'])) { + $fy = $this->y; + + // DIV TOP MARGIN/BORDER/PADDING + if ($this->flowingBlockAttr['newblock'] && ($this->flowingBlockAttr['blockstate']==1 || $this->flowingBlockAttr['blockstate']==3) && $this->flowingBlockAttr['lineCount']== 0) { + $fy += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; + } + + if ($objattr['float']=='R') { + $fx = $this->w - $this->rMargin - $objattr['width'] - ($this->blk[$this->blklvl]['outer_right_margin'] + $this->blk[$this->blklvl]['border_right']['w'] + $this->blk[$this->blklvl]['padding_right']); + + + } + else if ($objattr['float']=='L') { + $fx = $this->lMargin + ($this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left']); + } + $w = $objattr['width']; + $h = abs($objattr['height']); + + $widthLeft = $maxWidth - ($this->flowingBlockAttr['contentWidth']/_MPDFK); + $maxHeight = $this->h - ($this->tMargin + $this->margin_header + $this->bMargin + 10) ; + // For Images + $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left']+ $objattr['margin_right']); + $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top']+ $objattr['margin_bottom']); + + if ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg') { + $file = $objattr['file']; + $info=$this->formobjects[$file]; + } + else { + $file = $objattr['file']; + $info=$this->images[$file]; + } + $img_w = $w - $extraWidth ; + $img_h = $h - $extraHeight ; + if ($objattr['border_left']['w']) { + $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w'] + $objattr['border_right']['w'])/2) ; + $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w'] + $objattr['border_bottom']['w'])/2) ; + $objattr['BORDER-X'] = $fx + $objattr['margin_left'] + (($objattr['border_left']['w'])/2) ; + $objattr['BORDER-Y'] = $fy + $objattr['margin_top'] + (($objattr['border_top']['w'])/2) ; + } + $objattr['INNER-WIDTH'] = $img_w; + $objattr['INNER-HEIGHT'] = $img_h; + $objattr['INNER-X'] = $fx + $objattr['margin_left'] + ($objattr['border_left']['w']); + $objattr['INNER-Y'] = $fy + $objattr['margin_top'] + ($objattr['border_top']['w']) ; + $objattr['ID'] = $info['i']; + $objattr['OUTER-WIDTH'] = $w; + $objattr['OUTER-HEIGHT'] = $h; + $objattr['OUTER-X'] = $fx; + $objattr['OUTER-Y'] = $fy; + if ($objattr['float']=='R') { + // If R float already exists at this level + $this->floatmargins['R']['skipline'] = false; + if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) { + $this->WriteFlowingBlock($vetor[0]); + } + // If L float already exists at this level + else if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) { + // Final check distance between floats is not now too narrow to fit text + $mw = 2*$this->GetCharWidth('W',false); + if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['L']['w']) < $mw) { + $this->WriteFlowingBlock($vetor[0]); + } + else { + $this->floatmargins['R']['x'] = $fx; + $this->floatmargins['R']['w'] = $w; + $this->floatmargins['R']['y0'] = $fy; + $this->floatmargins['R']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['R']['skipline'] = true; + $this->floatmargins['R']['id'] = count($this->floatbuffer)+0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } + else { + $this->floatmargins['R']['x'] = $fx; + $this->floatmargins['R']['w'] = $w; + $this->floatmargins['R']['y0'] = $fy; + $this->floatmargins['R']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['R']['skipline'] = true; + $this->floatmargins['R']['id'] = count($this->floatbuffer)+0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } + else if ($objattr['float']=='L') { + // If L float already exists at this level + $this->floatmargins['L']['skipline'] = false; + if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) { + $this->floatmargins['L']['skipline'] = false; + $this->WriteFlowingBlock($vetor[0]); + } + // If R float already exists at this level + else if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) { + // Final check distance between floats is not now too narrow to fit text + $mw = 2*$this->GetCharWidth('W',false); + if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['R']['w']) < $mw) { + $this->WriteFlowingBlock($vetor[0]); + } + else { + $this->floatmargins['L']['x'] = $fx + $w; + $this->floatmargins['L']['w'] = $w; + $this->floatmargins['L']['y0'] = $fy; + $this->floatmargins['L']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['L']['skipline'] = true; + $this->floatmargins['L']['id'] = count($this->floatbuffer)+0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } + else { + $this->floatmargins['L']['x'] = $fx + $w; + $this->floatmargins['L']['w'] = $w; + $this->floatmargins['L']['y0'] = $fy; + $this->floatmargins['L']['y1'] = $fy + $h; + if ($skipln == 1) { + $this->floatmargins['L']['skipline'] = true; + $this->floatmargins['L']['id'] = count($this->floatbuffer)+0; + $objattr['skipline'] = true; + } + $this->floatbuffer[] = $objattr; + } + } + } + else { +/*-- END CSS-IMAGE-FLOAT --*/ + $this->WriteFlowingBlock($vetor[0]); +/*-- CSS-IMAGE-FLOAT --*/ + } +/*-- END CSS-IMAGE-FLOAT --*/ + } // *TABLES* + + } // END If special content + else { //THE text + if ($this->tableLevel) { $paint_ht_corr = 0; } // To move the y up when new column/page started if div border needed + else { $paint_ht_corr = $this->blk[$this->blklvl]['border_top']['w']; } + + if ($vetor[0] == "\n") { //We are reading a
      now turned into newline ("\n") + if ($this->flowingBlockAttr['content']) { + $this->finishFlowingBlock(false,'br'); + } + else if ($is_table) { + $this->y+= $this->_computeLineheight($this->table_lineheight); + } + else if (!$is_table) { + $this->DivLn($this->lineheight); + if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS* + } + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page-$oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr ; + $this->oldy = $this->tMargin - $paint_ht_corr ; + $old_height = 0; + } + $this->x = $bak_x; +/*-- COLUMNS --*/ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *RTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL* + } // *RTL* + else { // *RTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); + } // *RTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr ; + $this->oldy = $this->y0 - $paint_ht_corr ; + $old_height = 0; + } +/*-- END COLUMNS --*/ + $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir); + } + else { + $this->WriteFlowingBlock( $vetor[0]); + + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page-$oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + $this->x = $bak_x; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr ; + $this->oldy = $this->tMargin - $paint_ht_corr ; + $old_height = 0; + } +/*-- COLUMNS --*/ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *RTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL* + } // *RTL* + else { // *RTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); + } // *RTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr ; + $this->oldy = $this->y0 - $paint_ht_corr ; + $old_height = 0; + } +/*-- END COLUMNS --*/ + } + + + } + + //Check if it is the last element. If so then finish printing the block + if ($i == ($array_size-1)) { + $this->finishFlowingBlock(true); // true = END of flowing block + // Added to correct for OddEven Margins + if ($this->page != $oldpage) { + if (($this->page-$oldpage) % 2 == 1) { + $bak_x += $this->MarginCorrection; + $this->x = $bak_x; + } + $oldpage = $this->page; + $y = $this->tMargin - $paint_ht_corr ; + $this->oldy = $this->tMargin - $paint_ht_corr ; + $old_height = 0; + } + +/*-- COLUMNS --*/ + // COLS + // OR COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + if ($this->directionality == 'rtl') { // *RTL* + $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); // *RTL* + } // *RTL* + else { // *RTL* + $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap); + } // *RTL* + $this->x = $bak_x; + $oldcolumn = $this->CurrCol; + $y = $this->y0 - $paint_ht_corr ; + $this->oldy = $this->y0 - $paint_ht_corr ; + $old_height = 0; + } +/*-- END COLUMNS --*/ + + } + + // RESETTING VALUES + $this->SetTColor($this->ConvertColor(0)); + $this->SetDColor($this->ConvertColor(0)); + $this->SetFColor($this->ConvertColor(255)); + $this->colorarray = ''; + $this->spanbgcolorarray = ''; + $this->spanbgcolor = false; + $this->spanborder = false; + $this->spanborddet = array(); + $this->HREF = ''; + $this->textparam = array(); + $this->SetTextOutline(); + $this->SUP = false; + $this->SUB = false; + + $this->strike = false; + $this->textshadow = ''; + + $this->currentfontfamily = ''; + $this->currentfontsize = ''; + $this->currentfontstyle = ''; +/*-- TABLES --*/ + if ($this->tableLevel) { + $this->SetLineHeight('',$this->table_lineheight); // *TABLES* + } + else +/*-- END TABLES --*/ +/*-- LISTS --*/ + if ($is_list && $this->list_lineheight[$this->listlvl][$this->listOcc]) { + $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->listOcc]); // sets default line height + } + else +/*-- END LISTS --*/ + if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) { + $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']); // sets default line height + } + $this->ResetStyles(); + $this->toupper = false; + $this->tolower = false; + $this->capitalize = false; + $this->kerning = false; + $this->lSpacingCSS = ''; + $this->wSpacingCSS = ''; + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + $this->SetDash(); + $this->dash_on = false; + $this->dotted_on = false; + + }//end of for(i=0;iblk[$this->blklvl]['border']) || isset($this->blk[$this->blklvl]['bgcolor']) || isset($this->blk[$this->blklvl]['box_shadow'])) && $blockstate && ($this->y != $this->oldy)) { + $bottom_y = $this->y; // Does not include Bottom Margin + if (isset($this->blk[$this->blklvl]['startpage']) && $this->blk[$this->blklvl]['startpage'] != $this->page && $blockstate != 1) { + $this->PaintDivBB('pagetop',$blockstate); + } + + else if ($blockstate != 1) { + $this->PaintDivBB('',$blockstate); + } + $this->y = $bottom_y; + $this->x = $bak_x; + } + + // Reset Font + $this->SetFontSize($this->default_font_size,false); + + +} + +function _setDashBorder($style, $div, $cp, $side) { + if ($style == 'dashed' && (($side=='L' || $side=='R') || ($side=='T' && $div != 'pagetop' && !$cp) || ($side=='B' && $div!='pagebottom') )) { + $dashsize = 2; // final dash will be this + 1*linewidth + $dashsizek = 1.5; // ratio of Dash/Blank + $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2)); + } + else if ($style == 'dotted' || ($side=='T' && ($div == 'pagetop' || $cp)) || ($side=='B' && $div == 'pagebottom')) { + //Round join and cap + $this->SetLineJoin(1); + $this->SetLineCap(1); + $this->SetDash(0.001,($this->LineWidth*3)); + } +} + +function _setBorderLine($b, $k=1) { + $this->SetLineWidth($b['w']/$k); + $this->SetDColor($b['c']); + if ($b['c'][0]==5) { // RGBa + $this->SetAlpha($b['c'][4], 'Normal', false, 'S')."\n"; + } + else if ($b['c'][0]==6) { // CMYKa + $this->SetAlpha($b['c'][5], 'Normal', false, 'S')."\n"; + } +} + +// mPDF 5.6.52 +function PaintDivBB($divider='',$blockstate=0,$blvl=0) { + // Borders & backgrounds are done elsewhere for columns - messes up the repositioning in printcolumnbuffer + if ($this->ColActive) { return ; } // *COLUMNS* + $save_y = $this->y; + if (!$blvl) { $blvl = $this->blklvl; } + $x0 = $x1 = $y0 = $y1 = 0; + + // Added mPDF 3.0 Float DIV + if (isset($this->blk[$blvl]['bb_painted'][$this->page]) && $this->blk[$blvl]['bb_painted'][$this->page]) { return; } // *CSS-FLOAT* + + if (isset($this->blk[$blvl]['x0'])) { $x0 = $this->blk[$blvl]['x0']; } // left + if (isset($this->blk[$blvl]['y1'])) { $y1 = $this->blk[$blvl]['y1']; } // bottom + + // Added mPDF 3.0 Float DIV - ensures backgrounds/borders are drawn to bottom of page + if ($y1==0) { + if ($divider=='pagebottom') { $y1 = $this->h-$this->bMargin; } + else { $y1 = $this->y; } + } + + if (isset($this->blk[$blvl]['startpage']) && $this->blk[$blvl]['startpage'] != $this->page) { $continuingpage = true; } else { $continuingpage = false; } + + if (isset($this->blk[$blvl]['y0'])) { $y0 = $this->blk[$blvl]['y0']; } + $h = $y1 - $y0; + $w = $this->blk[$blvl]['width']; + $x1 = $x0 + $w; + + // Set border-widths as used here + $border_top = $this->blk[$blvl]['border_top']['w']; + $border_bottom = $this->blk[$blvl]['border_bottom']['w']; + $border_left = $this->blk[$blvl]['border_left']['w']; + $border_right = $this->blk[$blvl]['border_right']['w']; + if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) { + $border_top = 0; + } + if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { + $border_bottom = 0; + } + + $brTL_H = 0; + $brTL_V = 0; + $brTR_H = 0; + $brTR_V = 0; + $brBL_H = 0; + $brBL_V = 0; + $brBR_H = 0; + $brBR_V = 0; + + $brset = false; +/*-- BORDER-RADIUS --*/ + if (isset($this->blk[$blvl]['border_radius_TL_H'])) { $brTL_H = $this->blk[$blvl]['border_radius_TL_H']; $brset = true; } + if (isset($this->blk[$blvl]['border_radius_TL_V'])) { $brTL_V = $this->blk[$blvl]['border_radius_TL_V']; $brset = true; } + if (isset($this->blk[$blvl]['border_radius_TR_H'])) { $brTR_H = $this->blk[$blvl]['border_radius_TR_H']; $brset = true; } + if (isset($this->blk[$blvl]['border_radius_TR_V'])) { $brTR_V = $this->blk[$blvl]['border_radius_TR_V']; $brset = true; } + if (isset($this->blk[$blvl]['border_radius_BR_H'])) { $brBR_H = $this->blk[$blvl]['border_radius_BR_H']; $brset = true; } + if (isset($this->blk[$blvl]['border_radius_BR_V'])) { $brBR_V = $this->blk[$blvl]['border_radius_BR_V']; $brset = true; } + if (isset($this->blk[$blvl]['border_radius_BL_H'])) { $brBL_H = $this->blk[$blvl]['border_radius_BL_H']; $brset = true; } + if (isset($this->blk[$blvl]['border_radius_BL_V'])) { $brBL_V = $this->blk[$blvl]['border_radius_BL_V']; $brset = true; } + + // mPDF 5.4.17 + //if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage || $this->keep_block_together) { + if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) { + $brTL_H = 0; + $brTL_V = 0; + $brTR_H = 0; + $brTR_V = 0; + } + // mPDF 5.4.17 + //if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom' || $this->keep_block_together) { + if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { + $brBL_H = 0; + $brBL_V = 0; + $brBR_H = 0; + $brBR_V = 0; + } + + // Disallow border-radius if it is smaller than the border width. + if ($brTL_H < min($border_left, $border_top)) { $brTL_H = $brTL_V = 0; } + if ($brTL_V < min($border_left, $border_top)) { $brTL_V = $brTL_H = 0; } + if ($brTR_H < min($border_right, $border_top)) { $brTR_H = $brTR_V = 0; } + if ($brTR_V < min($border_right, $border_top)) { $brTR_V = $brTR_H = 0; } + if ($brBL_H < min($border_left, $border_bottom)) { $brBL_H = $brBL_V = 0; } + if ($brBL_V < min($border_left, $border_bottom)) { $brBL_V = $brBL_H = 0; } + if ($brBR_H < min($border_right, $border_bottom)) { $brBR_H = $brBR_V = 0; } + if ($brBR_V < min($border_right, $border_bottom)) { $brBR_V = $brBR_H = 0; } + + // CHECK FOR radii that sum to > width or height of div ******** + $f = min($h/($brTL_V + $brBL_V + 0.001), $h/($brTR_V + $brBR_V + 0.001), $w/($brTL_H + $brTR_H + 0.001), $w/($brBL_H + $brBR_H + 0.001)); + if ($f < 1) { + $brTL_H *= $f; + $brTL_V *= $f; + $brTR_H *= $f; + $brTR_V *= $f; + $brBL_H *= $f; + $brBL_V *= $f; + $brBR_H *= $f; + $brBR_V *= $f; + } +/*-- END BORDER-RADIUS --*/ + + $tbcol = $this->ConvertColor(255); + for($l=0; $l <= $blvl; $l++) { + if ($this->blk[$l]['bgcolor']) { + $tbcol = $this->blk[$l]['bgcolorarray']; + } + } + + // BORDERS + if (isset($this->blk[$blvl]['y0']) && $this->blk[$blvl]['y0']) { $y0 = $this->blk[$blvl]['y0']; } + $h = $y1 - $y0; + $w = $this->blk[$blvl]['width']; + + //if ($this->blk[$blvl]['border_top']) { + // Reinstate line above for dotted line divider when block border crosses a page + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $tbd = $this->blk[$blvl]['border_top']; + + // mPDF 5.4.18 + $legend = ''; + if (isset($this->blk[$blvl]['border_legend']) && $this->blk[$blvl]['border_legend']) { + $legend = $this->blk[$blvl]['border_legend']; // Same structure array as textbuffer + $txt = ltrim($legend[0]); + + //Set font, size, style, color + $this->SetFont($legend[4],$legend[2],$legend[11]); + if ($legend[3]) { + $cor = $legend[3]; + $this->SetTColor($cor); + } + $stringWidth = $this->GetStringWidth($txt ); + $save_x = $this->x; + $save_y = $this->y; + $save_currentfontfamily = $this->FontFamily; + $save_currentfontsize = $this->FontSizePt; + $save_currentfontstyle = $this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : ''); + $this->y = $y0 - $this->FontSize/2 + $this->blk[$blvl]['border_top']['w']/2; + $this->x = $x0 + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_left']['w']; + + // Set the distance from the border line to the text ? make configurable variable + $gap = 0.2 * $this->FontSize; + + $legbreakL = $this->x - $gap; + $legbreakR = $this->x + $stringWidth + $gap; + + $this->Cell( $stringWidth, $this->FontSize, $txt , '', 0, 'C', $fill, '', 0, 0,0,'M', $fill); + // Reset + $this->x = $save_x; + $this->y = $save_y; + $this->SetFont($save_currentfontfamily,$save_currentfontstyle,$save_currentfontsize); + $this->SetTColor($this->ConvertColor(0)); + } + + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { + $this->_out('q'); + $this->SetLineWidth(0); + $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK)); + $this->_out(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { + $legbreakL -= $border_top/2; // because line cap different + $legbreakR += $border_top/2; + $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'T'); + } +/*-- BORDER-RADIUS --*/ + else if (($brTL_V && $brTL_H) || ($brTR_V && $brTR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58 + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brTR_H && $brTR_V) { + $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_top/2 , $brTR_V - $border_top/2 , 1, 2, true))."\n"; + } + else +/*-- END BORDER-RADIUS --*/ + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } +/*-- BORDER-RADIUS --*/ + if ($brTL_H && $brTL_V ) { + // mPDF 5.4.18 + if ($legend) { + if ($legbreakR < ($x0 + $w - $brTR_H)) { + $s .= (sprintf('%.3F %.3F l ', $legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + if ($legbreakL > ($x0 + $brTL_H )) { + $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK)."\n"); + } + else { + $s .= (sprintf('%.3F %.3F m ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + } + else { + $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_top/2 , $brTL_V - $border_top/2 , 2, 1))."\n"; + } + else { +/*-- END BORDER-RADIUS --*/ + // mPDF 5.4.18 + if ($legend) { + if ($legbreakR < ($x0 + $w)) { + $s .= (sprintf('%.3F %.3F l ',$legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + if ($legbreakL > ($x0)) { + $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + } + else if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F m ', ($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F m ', ($x0 + $border_top/2)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + } + else if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n"; + } +/*-- BORDER-RADIUS --*/ + } +/*-- END BORDER-RADIUS --*/ + $s .= 'S'."\n"; + $this->_out($s); + + if ($tbd['style']=='double') { + $this->SetLineWidth($tbd['w']/3); + $this->SetDColor($tbcol); + $this->_out($s); + } + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); } + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); // mPDF 5.6.57 + $this->SetDColor($this->ConvertColor(0)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + //if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1) { + // Reinstate line above for dotted line divider when block border crosses a page + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $tbd = $this->blk[$blvl]['border_bottom']; + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { + $this->_out('q'); + $this->SetLineWidth(0); + $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK)); + $this->_out(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'B'); } +/*-- BORDER-RADIUS --*/ + else if (($brBL_V && $brBL_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58 + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brBL_H && $brBL_V) { + $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_bottom/2 , $brBL_V - $border_bottom/2 , 3, 2, true))."\n"; + } + else +/*-- END BORDER-RADIUS --*/ + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n"; + } +/*-- BORDER-RADIUS --*/ + if ($brBR_H && $brBR_V ) { + $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2) - $brBR_H )*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n"; + $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_bottom/2 , $brBR_V - $border_bottom/2 , 4, 1))."\n"; + } + else +/*-- END BORDER-RADIUS --*/ + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n"; + } + $s .= 'S'."\n"; + $this->_out($s); + + if ($tbd['style']=='double') { + $this->SetLineWidth($tbd['w']/3); + $this->SetDColor($tbcol); + $this->_out($s); + } + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); } + + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); // mPDF 5.6.57 + $this->SetDColor($this->ConvertColor(0)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_left']) { + $tbd = $this->blk[$blvl]['border_left']; + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { + $this->_out('q'); + $this->SetLineWidth(0); + $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK)); + $this->_out(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'L'); } +/*-- BORDER-RADIUS --*/ + else if (($brTL_V && $brTL_H) || ($brBL_V && $brBL_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58 + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brTL_V && $brTL_H) { + $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_left/2 , $brTL_V - $border_left/2, 2, 2, true))."\n"; + } + else +/*-- END BORDER-RADIUS --*/ + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + ($border_left/2)))*_MPDFK))."\n"; + } +/*-- BORDER-RADIUS --*/ + if ($brBL_V && $brBL_H ) { + $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)- $brBL_V) )*_MPDFK))."\n"; + $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_left/2 , $brBL_V - $border_left/2, 3, 1))."\n"; + } + else +/*-- END BORDER-RADIUS --*/ + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h) )*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)) )*_MPDFK))."\n"; + } + $s .= 'S'."\n"; + $this->_out($s); + + if ($tbd['style']=='double') { + $this->SetLineWidth($tbd['w']/3); + $this->SetDColor($tbcol); + $this->_out($s); + } + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); } + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); // mPDF 5.6.57 + $this->SetDColor($this->ConvertColor(0)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_right']) { + $tbd = $this->blk[$blvl]['border_right']; + if (isset($tbd['s']) && $tbd['s']) { + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { + $this->_out('q'); + $this->SetLineWidth(0); + $this->_out(sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK)); + $this->_out(' h W n '); // Ends path no-op & Sets the clipping path + } + + $this->_setBorderLine($tbd); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'R'); } +/*-- BORDER-RADIUS --*/ + else if (($brTR_V && $brTR_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58 + $this->SetLineJoin(0); + $this->SetLineCap(0); + } + $s = ''; + if ($brBR_V && $brBR_H) { + $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_right/2 , $brBR_V - $border_right/2, 4, 2, true))."\n"; + } + else +/*-- END BORDER-RADIUS --*/ + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h))*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h - ($border_right/2)))*_MPDFK))."\n"; + } +/*-- BORDER-RADIUS --*/ + if ($brTR_V && $brTR_H ) { + $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2) + $brTR_V) )*_MPDFK))."\n"; + $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_right/2 , $brTR_V - $border_right/2, 1, 1))."\n"; + } + else +/*-- END BORDER-RADIUS --*/ + if ($tbd['style']=='solid' || $tbd['style']=='double') { + $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0) )*_MPDFK))."\n"; + } + else { + $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2)) )*_MPDFK))."\n"; + } + $s .= 'S'."\n"; + $this->_out($s); + + if ($tbd['style']=='double') { + $this->SetLineWidth($tbd['w']/3); + $this->SetDColor($tbcol); + $this->_out($s); + } + if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); } + + // Reset Corners and Dash off + $this->SetLineWidth(0.1); // mPDF 5.6.57 + $this->SetDColor($this->ConvertColor(0)); + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + + + $this->SetDash(); + $this->y = $save_y; + + + // BACKGROUNDS are disabled in columns/kbt/headers - messes up the repositioning in printcolumnbuffer + if ($this->ColActive || $this->kwt || $this->keep_block_together) { return ; } + + + $bgx0 = $x0; + $bgx1 = $x1; + $bgy0 = $y0; + $bgy1 = $y1; + + // Defined br values represent the radius of the outer curve - need to take border-width/2 from each radius for drawing the borders + if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'padding-box') { + $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w']); + $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w']); + $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w']); + $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w']); + $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w']); + $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w']); + $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w']); + $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w']); + $bgx0 += $this->blk[$blvl]['border_left']['w']; + $bgx1 -= $this->blk[$blvl]['border_right']['w']; + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $bgy0 += $this->blk[$blvl]['border_top']['w']; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $bgy1 -= $this->blk[$blvl]['border_bottom']['w']; + } + } + // mPDF 5.6.09 + else if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'content-box') { + $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']); + $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']); + $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']); + $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']); + $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']); + $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']); + $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']); + $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']); + $bgx0 += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left']; + $bgx1 -= $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']; + if (($this->blk[$blvl]['border_top']['w'] || $this->blk[$blvl]['padding_top']) && $divider != 'pagetop' && !$continuingpage) { + $bgy0 += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top']; + } + if (($this->blk[$blvl]['border_bottom']['w'] || $this->blk[$blvl]['padding_bottom']) && $blockstate != 1 && $divider != 'pagebottom') { + $bgy1 -= $this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']; + } + } + else { + $brbgTL_H = $brTL_H; + $brbgTL_V = $brTL_V; + $brbgTR_H = $brTR_H; + $brbgTR_V = $brTR_V; + $brbgBL_H = $brBL_H; + $brbgBL_V = $brBL_V; + $brbgBR_H = $brBR_H; + $brbgBR_V = $brBR_V; + } + + // Set clipping path + $s = ' q 0 w '; // Line width=0 + $s .= sprintf('%.3F %.3F m ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK); // start point TL before the arc +/*-- BORDER-RADIUS --*/ + if ($brbgTL_H || $brbgTL_V) { + $s .= $this->_EllipseArc($bgx0+$brbgTL_H, $bgy0+$brbgTL_V, $brbgTL_H , $brbgTL_V , 2); // segment 2 TL + } +/*-- END BORDER-RADIUS --*/ + $s .= sprintf('%.3F %.3F l ', ($bgx0)*_MPDFK, ($this->h-($bgy1-$brbgBL_V ))*_MPDFK); // line to BL +/*-- BORDER-RADIUS --*/ + if ($brbgBL_H || $brbgBL_V) { + $s .= $this->_EllipseArc($bgx0+$brbgBL_H, $bgy1-$brbgBL_V, $brbgBL_H , $brbgBL_V , 3); // segment 3 BL + } +/*-- END BORDER-RADIUS --*/ + $s .= sprintf('%.3F %.3F l ', ($bgx1-$brbgBR_H )*_MPDFK, ($this->h-($bgy1))*_MPDFK); // line to BR +/*-- BORDER-RADIUS --*/ + if ($brbgBR_H || $brbgBR_V) { + $s .= $this->_EllipseArc($bgx1-$brbgBR_H, $bgy1-$brbgBR_V, $brbgBR_H , $brbgBR_V , 4); // segment 4 BR + } +/*-- END BORDER-RADIUS --*/ + $s .= sprintf('%.3F %.3F l ', ($bgx1)*_MPDFK, ($this->h-($bgy0+$brbgTR_V))*_MPDFK); // line to TR +/*-- BORDER-RADIUS --*/ + if ($brbgTR_H || $brbgTR_V) { + $s .= $this->_EllipseArc($bgx1-$brbgTR_H, $bgy0+$brbgTR_V, $brbgTR_H , $brbgTR_V , 1); // segment 1 TR + } +/*-- END BORDER-RADIUS --*/ + $s .= sprintf('%.3F %.3F l ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK); // line to TL + + + // Box Shadow + $shadow = ''; + if (isset($this->blk[$blvl]['box_shadow']) && $this->blk[$blvl]['box_shadow'] && $h > 0) { + foreach($this->blk[$blvl]['box_shadow'] AS $sh) { + // Colors + if ($sh['col']{0}==1) { + $colspace = 'Gray'; + if ($sh['col']{2}==1) { $col1 = '1'.$sh['col'][1].'1'.$sh['col'][3]; } + else { $col1 = '1'.$sh['col'][1].'1'.chr(100); } + $col2 = '1'.$sh['col'][1].'1'.chr(0); + } + else if ($sh['col']{0}==4) { // CMYK + $colspace = 'CMYK'; + $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(100); + $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0); + } + else if ($sh['col']{0}==5) { // RGBa + $colspace = 'RGB'; + $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4]; + $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0); + } + else if ($sh['col']{0}==6) { // CMYKa + $colspace = 'CMYK'; + $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].$sh['col'][5]; + $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0); + } + else { + $colspace = 'RGB'; + $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(100); + $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0); + } + + // Use clipping path as set above (and rectangle around page) to clip area outside box + $shadow .= $s; // Use the clipping path with W* + $shadow .= sprintf('0 %.3F m %.3F %.3F l ', $this->h*_MPDFK, $this->w*_MPDFK, $this->h*_MPDFK); + $shadow .= sprintf('%.3F 0 l 0 0 l 0 %.3F l ', $this->w*_MPDFK, $this->h*_MPDFK); + $shadow .= 'W n'."\n"; + + $sh['blur'] = abs($sh['blur']); // cannot have negative blur value + // Ensure spread/blur do not make effective shadow width/height < 0 + // Could do more complex things but this just adjusts spread value + if (-$sh['spread'] + $sh['blur']/2 > min($w/2, $h/2)) { + $sh['spread'] = $sh['blur']/2 - min($w/2, $h/2) + 0.01; + } + // Shadow Offset + if ($sh['x'] || $sh['y']) $shadow .= sprintf(' q 1 0 0 1 %.4F %.4F cm', $sh['x']*_MPDFK, -$sh['y']*_MPDFK)."\n"; + + // Set path for INNER shadow + $shadow .= ' q 0 w '; + $shadow .= $this->SetFColor($col1, true)."\n"; + if ($col1{0}==5 && ord($col1{4})<100) { // RGBa + $shadow .= $this->SetAlpha(ord($col1{4})/100, 'Normal', true, 'F')."\n"; + } + else if ($col1{0}==6 && ord($col1{5})<100) { // CMYKa + $shadow .= $this->SetAlpha(ord($col1{5})/100, 'Normal', true, 'F')."\n"; + } + else if ($col1{0}==1 && $col1{2}==1 && ord($col1{3})<100) { // Gray + $shadow .= $this->SetAlpha(ord($col1{3})/100, 'Normal', true, 'F')."\n"; + } + + // Blur edges + $mag = 0.551784; // Bezier Control magic number for 4-part spline for circle/ellipse + $mag2 = 0.551784; // Bezier Control magic number to fill in edge of blurred rectangle + $d1 = $sh['spread']+$sh['blur']/2; + $d2 = $sh['spread']-$sh['blur']/2; + $bl = $sh['blur']; + $x00 = $x0 - $d1; + $y00 = $y0 - $d1; + $w00 = $w + $d1*2; + $h00 = $h + $d1*2; + + // If any border-radius is greater width-negative spread(inner edge), ignore radii for shadow or screws up + $flatten = false; + if (max($brbgTR_H, $brbgTL_H, $brbgBR_H, $brbgBL_H) >= $w+$d2) { $flatten = true; } + if (max($brbgTR_V, $brbgTL_V, $brbgBR_V, $brbgBL_V) >= $h+$d2) { $flatten = true; } + + + // TOP RIGHT corner + $p1x = $x00+$w00-$d1-$brbgTR_H; $p1c2x = $p1x +($d2+$brbgTR_H)*$mag; + $p1y = $y00+$bl; + $p2x = $x00+$w00-$d1-$brbgTR_H; $p2c2x = $p2x + ($d1+$brbgTR_H)*$mag; + $p2y = $y00; $p2c1y = $p2y + $bl/2; + $p3x = $x00+$w00; $p3c2x = $p3x - $bl/2; + $p3y = $y00+$d1+$brbgTR_V; $p3c1y = $p3y - ($d1+$brbgTR_V)*$mag; + $p4x = $x00+$w00-$bl; + $p4y = $y00+$d1+$brbgTR_V; $p4c2y = $p4y - ($d2+$brbgTR_V)*$mag; + if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) { + $p1x = $x00+$w00-$bl; $p1c2x = $p1x; + $p2x = $x00+$w00-$bl; $p2c2x = $p2x + $bl*$mag2; + $p3y = $y00+$bl; $p3c1y = $p3y - $bl*$mag2; + $p4y = $y00+$bl; $p4c2y = $p4y ; + } + + $shadow .= sprintf('%.3F %.3F m ', ($p1x )*_MPDFK, ($this->h-($p1y ))*_MPDFK); + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x)*_MPDFK, ($this->h-($p1y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4c2y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK); + $patch_array[0]['f']=0; + $patch_array[0]['points']=array($p1x,$p1y, $p1x,$p1y, + $p2x,$p2c1y, $p2x,$p2y, $p2c2x,$p2y, + $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y, + $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y, + $p1c2x,$p1y); + $patch_array[0]['colors'] = array($col1,$col2,$col2,$col1); + + + // RIGHT + $p1x = $x00+$w00; // control point only matches p3 preceding + $p1y = $y00+$d1+$brbgTR_V; + $p2x = $x00+$w00-$bl; // control point only matches p4 preceding + $p2y = $y00+$d1+$brbgTR_V; + $p3x = $x00+$w00-$bl; + $p3y = $y00+$h00-$d1-$brbgBR_V; + $p4x = $x00+$w00; $p4c1x = $p4x-$bl/2; + $p4y = $y00+$h00-$d1-$brbgBR_V; + if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) { + $p1y = $y00+$bl; + $p2y = $y00+$bl; + } + if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) { + $p3y = $y00+$h00-$bl; + $p4y = $y00+$h00-$bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK); + $patch_array[1]['f']=2; + $patch_array[1]['points']=array($p2x,$p2y, + $p3x,$p3y, $p3x,$p3y, $p3x,$p3y, + $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y, + $p1x,$p1y); + $patch_array[1]['colors'] = array($col1,$col2); + + + // BOTTOM RIGHT corner + $p1x = $x00+$w00-$bl; // control points only matches p3 preceding + $p1y = $y00+$h00-$d1-$brbgBR_V; $p1c2y = $p1y + ($d2+$brbgBR_V)*$mag; + $p2x = $x00+$w00; // control point only matches p4 preceding + $p2y = $y00+$h00-$d1-$brbgBR_V; $p2c2y = $p2y + ($d1+$brbgBR_V)*$mag; + $p3x = $x00+$w00-$d1-$brbgBR_H; $p3c1x = $p3x + ($d1+$brbgBR_H)*$mag; + $p3y = $y00+$h00; $p3c2y = $p3y - $bl/2; + $p4x = $x00+$w00-$d1-$brbgBR_H; $p4c2x = $p4x + ($d2+$brbgBR_H)*$mag; + $p4y = $y00+$h00-$bl; + + if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) { + $p1y = $y00+$h00-$bl; $p1c2y = $p1y; + $p2y = $y00+$h00-$bl; $p2c2y = $p2y + $bl*$mag2; + $p3x = $x00+$w00-$bl; $p3c1x = $p3x + $bl*$mag2; + $p4x = $x00+$w00-$bl; $p4c2x = $p4x; + } + + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x)*_MPDFK, ($this->h-($p1c2y))*_MPDFK, ($p4c2x)*_MPDFK, ($this->h-($p4y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK); + $patch_array[2]['f']=2; + $patch_array[2]['points']=array($p2x,$p2c2y, + $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y, + $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y, + $p1x,$p1c2y); + $patch_array[2]['colors'] = array($col2,$col1); + + + + // BOTTOM + $p1x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p3 preceding + $p1y = $y00+$h00; + $p2x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p4 preceding + $p2y = $y00+$h00-$bl; + $p3x = $x00+$d1+$brbgBL_H; + $p3y = $y00+$h00-$bl; + $p4x = $x00+$d1+$brbgBL_H; + $p4y = $y00+$h00; $p4c1y = $p4y - $bl/2; + + if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) { + $p1x = $x00+$w00-$bl; + $p2x = $x00+$w00-$bl; + } + if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) { + $p3x = $x00+$bl; + $p4x = $x00+$bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK); + $patch_array[3]['f']=2; + $patch_array[3]['points']=array($p2x,$p2y, + $p3x,$p3y, $p3x,$p3y, $p3x,$p3y, + $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y, + $p1x,$p1y); + $patch_array[3]['colors'] = array($col1,$col2); + + // BOTTOM LEFT corner + $p1x = $x00+$d1+$brbgBL_H; $p1c2x = $p1x - ($d2+$brbgBL_H)*$mag; // control points only matches p3 preceding + $p1y = $y00+$h00-$bl; + $p2x = $x00+$d1+$brbgBL_H; $p2c2x = $p2x - ($d1+$brbgBL_H)*$mag; // control point only matches p4 preceding + $p2y = $y00+$h00; + $p3x = $x00; $p3c2x = $p3x + $bl/2; + $p3y = $y00+$h00-$d1-$brbgBL_V; $p3c1y = $p3y + ($d1+$brbgBL_V)*$mag; + $p4x = $x00+$bl; + $p4y = $y00+$h00-$d1-$brbgBL_V; $p4c2y = $p4y + ($d2+$brbgBL_V)*$mag; + if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) { + $p1x = $x00+$bl; $p1c2x = $p1x; + $p2x = $x00+$bl; $p2c2x = $p2x - $bl*$mag2; + $p3y = $y00+$h00-$bl; $p3c1y = $p3y + $bl*$mag2; + $p4y = $y00+$h00-$bl; $p4c2y = $p4y; + } + + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x)*_MPDFK, ($this->h-($p1y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4c2y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK); + $patch_array[4]['f']=2; + $patch_array[4]['points']=array($p2c2x,$p2y, + $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y, + $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y, + $p1c2x,$p1y); + $patch_array[4]['colors'] = array($col2,$col1); + + + // LEFT - joins on the right (C3-C4 of previous): f = 2 + $p1x = $x00; // control point only matches p3 preceding + $p1y = $y00+$h00-$d1-$brbgBL_V; + $p2x = $x00+$bl; // control point only matches p4 preceding + $p2y = $y00+$h00-$d1-$brbgBL_V; + $p3x = $x00+$bl; + $p3y = $y00+$d1+$brbgTL_V; + $p4x = $x00; $p4c1x = $p4x + $bl/2; + $p4y = $y00+$d1+$brbgTL_V; + if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) { + $p1y = $y00+$h00-$bl; + $p2y = $y00+$h00-$bl; + } + if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) { + $p3y = $y00+$bl; + $p4y = $y00+$bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK); + $patch_array[5]['f']=2; + $patch_array[5]['points']=array($p2x,$p2y, + $p3x,$p3y, $p3x,$p3y, $p3x,$p3y, + $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y, + $p1x,$p1y); + $patch_array[5]['colors'] = array($col1,$col2); + + // TOP LEFT corner + $p1x = $x00+$bl; // control points only matches p3 preceding + $p1y = $y00+$d1+$brbgTL_V; $p1c2y = $p1y - ($d2+$brbgTL_V)*$mag; + $p2x = $x00; // control point only matches p4 preceding + $p2y = $y00+$d1+$brbgTL_V; $p2c2y = $p2y - ($d1+$brbgTL_V)*$mag; + $p3x = $x00+$d1+$brbgTL_H; $p3c1x = $p3x - ($d1+$brbgTL_H)*$mag; + $p3y = $y00; $p3c2y = $p3y + $bl/2; + $p4x = $x00+$d1+$brbgTL_H; $p4c2x = $p4x - ($d2+$brbgTL_H)*$mag; + $p4y = $y00+$bl; + + if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) { + $p1y = $y00+$bl; $p1c2y = $p1y; + $p2y = $y00+$bl; $p2c2y = $p2y - $bl*$mag2; + $p3x = $x00+$bl; $p3c1x = $p3x - $bl*$mag2; + $p4x = $x00+$bl; $p4c2x = $p4x ; + } + + $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x)*_MPDFK, ($this->h-($p1c2y))*_MPDFK, ($p4c2x)*_MPDFK, ($this->h-($p4y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK); + $patch_array[6]['f']=2; + $patch_array[6]['points']=array($p2x,$p2c2y, + $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y, + $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y, + $p1x,$p1c2y); + $patch_array[6]['colors'] = array($col2,$col1); + + + // TOP - joins on the right (C3-C4 of previous): f = 2 + $p1x = $x00+$d1+$brbgTL_H; // control point only matches p3 preceding + $p1y = $y00; + $p2x = $x00+$d1+$brbgTL_H; // control point only matches p4 preceding + $p2y = $y00+$bl; + $p3x = $x00+$w00-$d1-$brbgTR_H; + $p3y = $y00+$bl; + $p4x = $x00+$w00-$d1-$brbgTR_H; + $p4y = $y00; $p4c1y = $p4y + $bl/2; + if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) { + $p1x = $x00+$bl; + $p2x = $x00+$bl; + } + if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) { + $p3x = $x00+$w00-$bl; + $p4x = $x00+$w00-$bl; + } + + $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK); + $patch_array[7]['f']=2; + $patch_array[7]['points']=array($p2x,$p2y, + $p3x,$p3y, $p3x,$p3y, $p3x,$p3y, + $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y, + $p1x,$p1y); + $patch_array[7]['colors'] = array($col1,$col2); + + $shadow .= ' h f Q '."\n"; // Close path and Fill the inner solid shadow + + if ($bl) $shadow .= $this->grad->CoonsPatchMesh($x00,$y00,$w00,$h00,$patch_array,$x00,$x00+$w00,$y00,$y00+$h00, $colspace, true); + + if ($sh['x'] || $sh['y']) $shadow .= ' Q'."\n"; // Shadow Offset + $shadow .= ' Q'."\n"; // Ends path no-op & Sets the clipping path + + } + } + + $s .= ' W n '; // Ends path no-op & Sets the clipping path + + if ($this->blk[$blvl]['bgcolor']) { + $this->pageBackgrounds[$blvl][] = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h, 'col'=>$this->blk[$blvl]['bgcolorarray'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'shadow'=>$shadow, 'z-index'=>$this->current_layer); // mPDF 5.6.01 + } + else if ($shadow) { + $this->pageBackgrounds[$blvl][] = array('shadowonly'=>true, 'col'=>'', 'clippath'=>'', 'visibility'=>$this->visibility, 'shadow'=>$shadow, 'z-index'=>$this->current_layer); // mPDF 5.6.01 + } + +/*-- BACKGROUNDS --*/ + if (isset($this->blk[$blvl]['gradient'])) { + $g = $this->grad->parseBackgroundGradient($this->blk[$blvl]['gradient']); + if ($g) { + $gx = $x0; + $gy = $y0; + $this->pageBackgrounds[$blvl][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$w, 'h'=>$h, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer); // mPDF 5.6.01 + } + } + if (isset($this->blk[$blvl]['background-image'])) { + if ($this->blk[$blvl]['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->blk[$blvl]['background-image']['gradient'] )) { + $g = $this->grad->parseMozGradient( $this->blk[$blvl]['background-image']['gradient'] ); + if ($g) { + $gx = $x0; + $gy = $y0; + // mPDF 5.6.11 + // origin specifies the background-positioning-area (bpa) + if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') { + $gx += $this->blk[$blvl]['border_left']['w']; + $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $gy += $this->blk[$blvl]['border_top']['w']; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $gy1 = $y1 - $this->blk[$blvl]['border_bottom']['w']; + } + else { $gy1 = $y1; } + $h = $gy1 - $gy; + } + else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') { + $gx += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left']; + $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $gy += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top']; + } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $gy1 = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']); + } + else { $gy1 = $y1 - $this->blk[$blvl]['padding_bottom']; } + $h = $gy1 - $gy; + } + + if (isset($this->blk[$blvl]['background-image']['size']['w']) && $this->blk[$blvl]['background-image']['size']['w']) { + $size = $this->blk[$blvl]['background-image']['size']; + if ($size['w']!='contain' && $size['w']!='cover') { + if (stristr($size['w'] ,'%')) { + $size['w'] += 0; + $size['w'] /= 100; + $w *= $size['w']; + } + else if ($size['w']!='auto') { + $w = $size['w']; + } + if (stristr($size['h'] ,'%')) { + $size['h'] += 0; + $size['h'] /= 100; + $h *= $size['h']; + } + else if ($size['h']!='auto') { + $h = $size['h']; + } + } + } + $this->pageBackgrounds[$blvl][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$w, 'h'=>$h, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer); // mPDF 5.6.01 + } + } + else { + $image_id = $this->blk[$blvl]['background-image']['image_id']; + $orig_w = $this->blk[$blvl]['background-image']['orig_w']; + $orig_h = $this->blk[$blvl]['background-image']['orig_h']; + $x_pos = $this->blk[$blvl]['background-image']['x_pos']; + $y_pos = $this->blk[$blvl]['background-image']['y_pos']; + $x_repeat = $this->blk[$blvl]['background-image']['x_repeat']; + $y_repeat = $this->blk[$blvl]['background-image']['y_repeat']; + $resize = $this->blk[$blvl]['background-image']['resize']; + $opacity = $this->blk[$blvl]['background-image']['opacity']; + $itype = $this->blk[$blvl]['background-image']['itype']; + $size = $this->blk[$blvl]['background-image']['size']; // mPDF 5.6.10 + // mPDF 5.6.10 + // origin specifies the background-positioning-area (bpa) + $bpa = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h); + if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') { + $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w']; + $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w']; + } + else { $bpa['y'] = $y0; } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $bpay = $y1 - $this->blk[$blvl]['border_bottom']['w']; + } + else { $bpay = $y1; } + $bpa['h'] = $bpay - $bpa['y']; + } + // mPDF 5.6.09 + else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') { + $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left']; + $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']); + if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) { + $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top']; + } + else { $bpa['y'] = $y0 + $this->blk[$blvl]['padding_top']; } + if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { + $bpay = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']); + } + else { $bpay = $y1 - $this->blk[$blvl]['padding_bottom']; } + $bpa['h'] = $bpay - $bpa['y']; + } + $this->pageBackgrounds[$blvl][] = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer, 'size'=>$size, 'bpa'=>$bpa ); // mPDF 5.6.01 5.6.10 + } + } +/*-- END BACKGROUNDS --*/ + + // Float DIV + $this->blk[$blvl]['bb_painted'][$this->page] = true; + +} + +/*-- BORDER-RADIUS --*/ + +function _EllipseArc($x0, $y0, $rx, $ry, $seg = 1, $part=false, $start=false) { // Anticlockwise segment 1-4 TR-TL-BL-BR (part=1 or 2) + $s = ''; + if ($rx<0) { $rx = 0; } + if ($ry<0) { $ry = 0; } + $rx *= _MPDFK; + $ry *= _MPDFK; + $astart = 0; + if ($seg == 1) { // Top Right + $afinish = 90; + $nSeg = 4; + } + else if ($seg == 2) { // Top Left + $afinish = 180; + $nSeg = 8; + } + else if ($seg == 3) { // Bottom Left + $afinish = 270; + $nSeg = 12; + } + else { // Bottom Right + $afinish = 360; + $nSeg = 16; + } + $astart = deg2rad((float) $astart); + $afinish = deg2rad((float) $afinish); + $totalAngle = $afinish - $astart; + $dt = $totalAngle / $nSeg; // segment angle + $dtm = $dt/3; + $x0 *= _MPDFK; + $y0 = ($this->h - $y0) * _MPDFK; + $t1 = $astart; + $a0 = $x0 + ($rx * cos($t1)); + $b0 = $y0 + ($ry * sin($t1)); + $c0 = -$rx * sin($t1); + $d0 = $ry * cos($t1); + $op = false; + for ($i = 1; $i <= $nSeg; $i++) { + // Draw this bit of the total curve + $t1 = ($i * $dt) + $astart; + $a1 = $x0 + ($rx * cos($t1)); + $b1 = $y0 + ($ry * sin($t1)); + $c1 = -$rx * sin($t1); + $d1 = $ry * cos($t1); + if ($i>($nSeg-4) && (!$part || ($part == 1 && $i<=$nSeg-2) || ($part == 2 && $i>$nSeg-2))) { + if ($start && !$op) { + $s .= sprintf('%.3F %.3F m ', $a0, $b0); + } + $s .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($a0 + ($c0 * $dtm)), ($b0 + ($d0 * $dtm)), ($a1 - ($c1 * $dtm)) , ($b1 - ($d1 * $dtm)), $a1 , $b1 ); + $op = true; + } + $a0 = $a1; + $b0 = $b1; + $c0 = $c1; + $d0 = $d1; + } + return $s; +} +/*-- END BORDER-RADIUS --*/ + + + +function PaintDivLnBorder($state=0,$blvl=0,$h) { + // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom + $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y + $h; + + $save_y = $this->y; + + $w = $this->blk[$blvl]['width']; + $x0 = $this->x; // left + $y0 = $this->y; // top + $x1 = $this->x + $w; // bottom + $y1 = $this->y + $h; // bottom + + if ($this->blk[$blvl]['border_top'] && ($state==1 || $state==3)) { + $tbd = $this->blk[$blvl]['border_top']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + $this->y = $y0 + ($tbd['w']/2); + // mPDF 5.6.56 + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { + $this->_setDashBorder($tbd['style'],'',$continuingpage,'T'); + $this->Line($x0 + ($tbd['w']/2) , $this->y , $x0 + $w - ($tbd['w']/2), $this->y); + } + else { + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0, $this->y , $x0 + $w, $this->y); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_left']) { + $tbd = $this->blk[$blvl]['border_left']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + // mPDF 5.6.56 + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { + $this->y = $y0 + ($tbd['w']/2); + $this->_setDashBorder($tbd['style'],'',$continuingpage,'L'); + $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h -($tbd['w']/2)); + } + else { + $this->y = $y0; + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_right']) { + $tbd = $this->blk[$blvl]['border_right']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + // mPDF 5.6.56 + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { + $this->y = $y0 + ($tbd['w']/2); + $this->_setDashBorder($tbd['style'],'',$continuingpage,'R'); + $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h - ($tbd['w']/2)); + } + else { + $this->y = $y0; + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($this->blk[$blvl]['border_bottom'] && $state > 1) { + $tbd = $this->blk[$blvl]['border_bottom']; + if (isset($tbd['s']) && $tbd['s']) { + $this->_setBorderLine($tbd); + $this->y = $y0 + $h - ($tbd['w']/2); + // mPDF 5.6.56 + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { + $this->_setDashBorder($tbd['style'],'',$continuingpage,'B'); + $this->Line($x0 + ($tbd['w']/2) , $this->y, $x0 + $w - ($tbd['w']/2), $this->y); + } + else { + $this->SetLineJoin(0); + $this->SetLineCap(0); + $this->Line($x0, $this->y, $x0 + $w, $this->y); + } + $this->y += $tbd['w']; + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + $this->SetDash(); + $this->y = $save_y; +} + + +function PaintImgBorder($objattr,$is_table) { + // Borders are disabled in columns - messes up the repositioning in printcolumnbuffer + if ($this->ColActive) { return ; } // *COLUMNS* + if ($is_table) { $k = $this->shrin_k; } else { $k = 1; } + $h = (isset($objattr['BORDER-HEIGHT']) ? $objattr['BORDER-HEIGHT'] : 0); + $w = (isset($objattr['BORDER-WIDTH']) ? $objattr['BORDER-WIDTH'] : 0); + $x0 = (isset($objattr['BORDER-X']) ? $objattr['BORDER-X'] : 0); + $y0 = (isset($objattr['BORDER-Y']) ? $objattr['BORDER-Y'] : 0); + + // BORDERS + if ($objattr['border_top']) { + $tbd = $objattr['border_top']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd,$k); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','T'); } + $this->Line($x0, $y0, $x0 + $w, $y0); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($objattr['border_left']) { + $tbd = $objattr['border_left']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd,$k); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','L'); } + $this->Line($x0, $y0, $x0, $y0 + $h); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($objattr['border_right']) { + $tbd = $objattr['border_right']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd,$k); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','R'); } + $this->Line($x0 + $w, $y0, $x0 + $w, $y0 + $h); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + if ($objattr['border_bottom']) { + $tbd = $objattr['border_bottom']; + if (!empty($tbd['s'])) { + $this->_setBorderLine($tbd,$k); + if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','B'); } + $this->Line($x0, $y0 + $h, $x0 + $w, $y0 + $h); + // Reset Corners and Dash off + $this->SetLineJoin(2); + $this->SetLineCap(2); + $this->SetDash(); + } + } + $this->SetDash(); + $this->SetAlpha(1); +} + +/*-- END HTML-CSS --*/ + + + + +function Reset() { + $this->SetTColor($this->ConvertColor(0)); + $this->SetDColor($this->ConvertColor(0)); + $this->SetFColor($this->ConvertColor(255)); + $this->SetAlpha(1); + $this->colorarray = ''; + + $this->spanbgcolorarray = ''; + $this->spanbgcolor = false; + $this->spanborder = false; + $this->spanborddet = array(); + + $this->ResetStyles(); + + $this->HREF = ''; + $this->textparam = array(); + $this->SetTextOutline(); + + $this->SUP = false; + $this->SUB = false; + $this->strike = false; + $this->textshadow = ''; + + $this->SetFont($this->default_font,'',0,false); + $this->SetFontSize($this->default_font_size,false); + + $this->currentfontfamily = ''; + $this->currentfontsize = ''; + +/*-- TABLES --*/ + if ($this->tableLevel) { + $this->SetLineHeight('',$this->table_lineheight); // *TABLES* + } + else +/*-- END TABLES --*/ +/*-- LISTS --*/ + + if ($this->listlvl && $this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]) { + $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]); // sets default line height + } + else +/*-- END LISTS --*/ + if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) { + $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']); // sets default line height + } + + $this->toupper = false; + $this->tolower = false; + $this->kerning = false; + $this->lSpacingCSS = ''; + $this->wSpacingCSS = ''; + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + $this->capitalize = false; + $this->SetDash(); //restore to no dash + $this->dash_on = false; + $this->dotted_on = false; + $this->divwidth = 0; + $this->divheight = 0; + $this->divalign = ''; + $this->divrevert = false; + $this->oldy = -1; + + $bodystyle = array(); + if (isset($this->cssmgr->CSS['BODY']['FONT-STYLE'])) { $bodystyle['FONT-STYLE'] = $this->cssmgr->CSS['BODY']['FONT-STYLE']; } + if (isset($this->cssmgr->CSS['BODY']['FONT-WEIGHT'])) { $bodystyle['FONT-WEIGHT'] = $this->cssmgr->CSS['BODY']['FONT-WEIGHT']; } + if (isset($this->cssmgr->CSS['BODY']['COLOR'])) { $bodystyle['COLOR'] = $this->cssmgr->CSS['BODY']['COLOR']; } + if (isset($bodystyle)) { $this->setCSS($bodystyle,'BLOCK','BODY'); } + +} + +/*-- HTML-CSS --*/ +function ReadMetaTags($html) { + // changes anykey=anyvalue to anykey="anyvalue" (only do this when this happens inside tags) + $regexp = '/ (\\w+?)=([^\\s>"]+)/si'; + $html = preg_replace($regexp," \$1=\"\$2\"",$html); + if (preg_match('/(.*?)<\/title>/si',$html,$m)) { + $this->SetTitle($m[1]); + } + preg_match_all('/<meta [^>]*?(name|content)="([^>]*?)" [^>]*?(name|content)="([^>]*?)".*?>/si',$html,$aux); + $firstattr = $aux[1]; + $secondattr = $aux[3]; + for( $i = 0 ; $i < count($aux[0]) ; $i++) { + + $name = ( strtoupper($firstattr[$i]) == "NAME" )? strtoupper($aux[2][$i]) : strtoupper($aux[4][$i]); + $content = ( strtoupper($firstattr[$i]) == "CONTENT" )? $aux[2][$i] : $aux[4][$i]; + switch($name) { + case "KEYWORDS": $this->SetKeywords($content); break; + case "AUTHOR": $this->SetAuthor($content); break; + case "DESCRIPTION": $this->SetSubject($content); break; + } + } +} + + +function ReadCharset($html) { + // Charset conversion + if ($this->allow_charset_conversion) { + if (preg_match('/<head.*charset=([^\'\"\s]*).*<\/head>/si',$html,$m)) { + if (strtoupper($m[1]) != 'UTF-8') { + $this->charset_in = strtoupper($m[1]); + } + } + } +} + +function setCSS($arrayaux,$type='',$tag='') { // type= INLINE | BLOCK | LIST // tag= BODY + if (!is_array($arrayaux)) return; //Removes PHP Warning + // Set font size first so that e.g. MARGIN 0.83em works on font size for this element + if (isset($arrayaux['FONT-SIZE'])) { + $v = $arrayaux['FONT-SIZE']; + if(is_numeric($v[0])) { + if ($type == 'BLOCK' && $this->blklvl>0 && isset($this->blk[$this->blklvl-1]['InlineProperties']) && isset($this->blk[$this->blklvl-1]['InlineProperties']['size'])) { + $mmsize = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['InlineProperties']['size']); + } + else { + $mmsize = $this->ConvertSize($v,$this->FontSize); + } + $this->SetFontSize( $mmsize*(_MPDFK),false ); //Get size in points (pt) + } + else{ + $v = strtoupper($v); + if (isset($this->fontsizes[$v])) { + $this->SetFontSize( $this->fontsizes[$v]* $this->default_font_size,false); + } + } + if ($tag == 'BODY') { $this->SetDefaultFontSize($this->FontSizePt); } + } + + + if ($this->useLang && !$this->usingCoreFont) { + if (isset($arrayaux['LANG']) && $arrayaux['LANG'] && $arrayaux['LANG'] != $this->default_lang && ((strlen($arrayaux['LANG']) == 5 && $arrayaux['LANG'] != 'UTF-8') || strlen($arrayaux['LANG']) == 2)) { + list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($arrayaux['LANG'], $this->useAdobeCJK); + if ($mpdf_pdf_unifonts) { $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); } + else { $this->RestrictUnicodeFonts($this->default_available_fonts ); } + if ($tag == 'BODY') { + $this->currentLang = $arrayaux['LANG']; + $this->default_lang = $arrayaux['LANG']; + if ($mpdf_pdf_unifonts) { $this->default_available_fonts = $mpdf_pdf_unifonts; } + } + } + else { + $this->RestrictUnicodeFonts($this->default_available_fonts ); + } + } + + // FOR INLINE and BLOCK OR 'BODY' + if (isset($arrayaux['FONT-FAMILY'])) { + $v = $arrayaux['FONT-FAMILY']; + //If it is a font list, get all font types + $aux_fontlist = explode(",",$v); + $found = 0; + foreach($aux_fontlist AS $f) { + $fonttype = trim($f); + $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype); + $fonttype = preg_replace('/ /','',$fonttype); + $v = strtolower(trim($fonttype)); + if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; } + if ((!$this->onlyCoreFonts && in_array($v,$this->available_unifonts)) || + in_array($v,array('ccourier','ctimes','chelvetica')) || + ($this->onlyCoreFonts && in_array($v,array('courier','times','helvetica','arial'))) || + in_array($v, array('sjis','uhc','big5','gb'))) { + $fonttype = $v; + $found = 1; + break; + } + } + if (!$found) { + foreach($aux_fontlist AS $f) { + $fonttype = trim($f); + $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype); + $fonttype = preg_replace('/ /','',$fonttype); + $v = strtolower(trim($fonttype)); + if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; } + if (in_array($v,$this->sans_fonts) || in_array($v,$this->serif_fonts) || in_array($v,$this->mono_fonts) ) { + $fonttype = $v; + break; + } + } + } + + if ($tag == 'BODY') { + $this->SetDefaultFont($fonttype); + } + $this->SetFont($fonttype,$this->currentfontstyle,0,false); + } + else { + $this->SetFont($this->currentfontfamily,$this->currentfontstyle,0,false); + } + + foreach($arrayaux as $k => $v) { + if ($type != 'INLINE' && $tag != 'BODY' && $type != 'LIST') { + switch($k){ + // BORDERS + case 'BORDER-TOP': + $this->blk[$this->blklvl]['border_top'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_top']['s']) { $this->blk[$this->blklvl]['border'] = 1; } + break; + case 'BORDER-BOTTOM': + $this->blk[$this->blklvl]['border_bottom'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_bottom']['s']) { $this->blk[$this->blklvl]['border'] = 1; } + break; + case 'BORDER-LEFT': + $this->blk[$this->blklvl]['border_left'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_left']['s']) { $this->blk[$this->blklvl]['border'] = 1; } + break; + case 'BORDER-RIGHT': + $this->blk[$this->blklvl]['border_right'] = $this->border_details($v); + if ($this->blk[$this->blklvl]['border_right']['s']) { $this->blk[$this->blklvl]['border'] = 1; } + break; + + // PADDING + case 'PADDING-TOP': + $this->blk[$this->blklvl]['padding_top'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'PADDING-BOTTOM': + $this->blk[$this->blklvl]['padding_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'PADDING-LEFT': + $this->blk[$this->blklvl]['padding_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'PADDING-RIGHT': + $this->blk[$this->blklvl]['padding_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + + // MARGINS + case 'MARGIN-TOP': + $tmp = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + if (isset($this->blk[$this->blklvl]['lastbottommargin'])) { + if ($tmp > $this->blk[$this->blklvl]['lastbottommargin']) { + $tmp -= $this->blk[$this->blklvl]['lastbottommargin']; + } + else { + $tmp = 0; + } + } + $this->blk[$this->blklvl]['margin_top'] = $tmp; + break; + case 'MARGIN-BOTTOM': + $this->blk[$this->blklvl]['margin_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'MARGIN-LEFT': + $this->blk[$this->blklvl]['margin_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'MARGIN-RIGHT': + $this->blk[$this->blklvl]['margin_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + +/*-- BORDER-RADIUS --*/ + case 'BORDER-TOP-LEFT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_TL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'BORDER-TOP-LEFT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_TL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'BORDER-TOP-RIGHT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_TR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'BORDER-TOP-RIGHT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_TR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'BORDER-BOTTOM-LEFT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_BL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'BORDER-BOTTOM-LEFT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_BL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'BORDER-BOTTOM-RIGHT-RADIUS-H': + $this->blk[$this->blklvl]['border_radius_BR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; + case 'BORDER-BOTTOM-RIGHT-RADIUS-V': + $this->blk[$this->blklvl]['border_radius_BR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + break; +/*-- END BORDER-RADIUS --*/ + + case 'BOX-SHADOW': + $bs = $this->cssmgr->setCSSboxshadow($v); + if ($bs) { $this->blk[$this->blklvl]['box_shadow'] = $bs; } + break; + + case 'BACKGROUND-CLIP': + if (strtoupper($v) == 'PADDING-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'padding-box'; } + else if (strtoupper($v) == 'CONTENT-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'content-box'; } // mPDF 5.6.09 + break; + + case 'PAGE-BREAK-AFTER': + if (strtoupper($v) == 'AVOID') { $this->blk[$this->blklvl]['page_break_after_avoid'] = true; } + else if (strtoupper($v) == 'ALWAYS' || strtoupper($v) == 'LEFT' || strtoupper($v) == 'RIGHT') { $this->blk[$this->blklvl]['page_break_after'] = strtoupper($v) ; } + break; + + case 'WIDTH': + if (strtoupper($v) != 'AUTO') { + $this->blk[$this->blklvl]['css_set_width'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); + } + break; + + case 'TEXT-INDENT': + // Left as raw value (may include 1% or 2em) + $this->blk[$this->blklvl]['text_indent'] = $v; + break; + + }//end of switch($k) + } + + + if ($type != 'INLINE' && $type != 'LIST') { // includes BODY tag + switch($k){ + + case 'MARGIN-COLLAPSE': // Custom tag to collapse margins at top and bottom of page + if (strtoupper($v) == 'COLLAPSE') { $this->blk[$this->blklvl]['margin_collapse'] = true; } + break; + + case 'LINE-HEIGHT': + $this->blk[$this->blklvl]['line_height'] = $this->fixLineheight($v); + if (!$this->blk[$this->blklvl]['line_height'] ) { $this->blk[$this->blklvl]['line_height'] = $this->normalLineheight; } + break; + + case 'TEXT-ALIGN': //left right center justify + switch (strtoupper($v)) { + case 'LEFT': + $this->blk[$this->blklvl]['align']="L"; + break; + case 'CENTER': + $this->blk[$this->blklvl]['align']="C"; + break; + case 'RIGHT': + $this->blk[$this->blklvl]['align']="R"; + break; + case 'JUSTIFY': + $this->blk[$this->blklvl]['align']="J"; + break; + } + break; + +/*-- BACKGROUNDS --*/ + case 'BACKGROUND-GRADIENT': + if ($type == 'BLOCK') { + $this->blk[$this->blklvl]['gradient'] = $v; + } + break; +/*-- END BACKGROUNDS --*/ + + case 'DIRECTION': + if ($v) { $this->blk[$this->blklvl]['direction'] = strtolower($v); } + break; + + }//end of switch($k) + } + + // FOR INLINE ONLY + if ($type == 'INLINE' || $type == 'LIST') { + switch($k){ + case 'DISPLAY': // Custom tag to collapse margins at top and bottom of page + if (strtoupper($v) == 'NONE') { $this->inlineDisplayOff = true; } + break; + case 'DIRECTION': + break; + }//end of switch($k) + } + // FOR INLINE ONLY + if ($type == 'INLINE') { + switch($k){ + // BORDERS + case 'BORDER-TOP': + $this->spanborddet['T'] = $this->border_details($v); + $this->spanborder = true; + break; + case 'BORDER-BOTTOM': + $this->spanborddet['B'] = $this->border_details($v); + $this->spanborder = true; + break; + case 'BORDER-LEFT': + $this->spanborddet['L'] = $this->border_details($v); + $this->spanborder = true; + break; + case 'BORDER-RIGHT': + $this->spanborddet['R'] = $this->border_details($v); + $this->spanborder = true; + break; + // mPDF 5.6.26 + case 'VISIBILITY': // block is set in OpenTag + $v = strtolower($v); + if ($v == 'visible' || $v == 'hidden' || $v == 'printonly' || $v == 'screenonly') { + $this->textparam['visibility'] = $v; + } + break; + }//end of switch($k) + } + + + // FOR INLINE and BLOCK + switch($k){ + case 'TEXT-ALIGN': //left right center justify + if (strtoupper($v) == 'NOJUSTIFY' && $this->blk[$this->blklvl]['align']=="J") { + $this->blk[$this->blklvl]['align']=""; + } + break; + // bgcolor only - to stay consistent with original html2fpdf + case 'BACKGROUND': + case 'BACKGROUND-COLOR': + $cor = $this->ConvertColor($v); + if ($cor) { + if ($tag == 'BODY') { + $this->bodyBackgroundColor = $cor; + } + else if ($type == 'INLINE' || $type == 'LIST') { + $this->spanbgcolorarray = $cor; + $this->spanbgcolor = true; + } + else { + $this->blk[$this->blklvl]['bgcolorarray'] = $cor; + $this->blk[$this->blklvl]['bgcolor'] = true; + } + } + else if ($type != 'INLINE' && $type != 'LIST') { + if ($this->ColActive || $this->keep_block_together) { + $this->blk[$this->blklvl]['bgcolorarray'] = $this->blk[$this->blklvl-1]['bgcolorarray'] ; + $this->blk[$this->blklvl]['bgcolor'] = $this->blk[$this->blklvl-1]['bgcolor'] ; + } + } + break; + + // auto | normal | none + case 'FONT-KERNING': + if ((strtoupper($v) == 'NORMAL' || strtoupper($v) == 'AUTO') && $this->useKerning) { $this->kerning = true; } + else if (strtoupper($v) == 'NONE') { $this->kerning = false; } + break; + + + // normal | <length> + case 'LETTER-SPACING': + $this->lSpacingCSS = $v; + if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); + } + break; + + // normal | <length> + case 'WORD-SPACING': + $this->wSpacingCSS = $v; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); + } + break; + + case 'FONT-STYLE': // italic normal oblique + switch (strtoupper($v)) { + case 'ITALIC': + case 'OBLIQUE': + $this->SetStyle('I',true); + break; + case 'NORMAL': + $this->SetStyle('I',false); + break; + } + break; + + case 'FONT-WEIGHT': // normal bold //Does not support: bolder, lighter, 100..900(step value=100) + switch (strtoupper($v)) { + case 'BOLD': + $this->SetStyle('B',true); + break; + case 'NORMAL': + $this->SetStyle('B',false); + break; + } + break; + + case 'VERTICAL-ALIGN': //super and sub only dealt with here e.g. <SUB> and <SUP> + switch (strtoupper($v)) { + case 'SUPER': + $this->SUP=true; + $this->SUB=false; // mPDF 5.6.07 + break; + case 'SUB': + $this->SUB=true; + $this->SUP=false; // mPDF 5.6.07 + break; + case 'BASELINE': // mPDF 5.6.07 + $this->SUB=false; + $this->SUP=false; + break; + } + break; + + case 'TEXT-DECORATION': // none underline line-through (strikeout) //Does not support: overline, blink + if (stristr($v,'LINE-THROUGH')) { + $this->strike = true; + } + else if (stristr($v,'UNDERLINE')) { + $this->SetStyle('U',true); + } + else if (stristr($v,'NONE')) { + $this->SetStyle('U',false); + $this->strike = false; // mPDF 5.6.07 + } + break; + + case 'FONT-VARIANT': + switch (strtoupper($v)) { + case 'SMALL-CAPS': + $this->SetStyle('S',true); + break; + case 'NORMAL': + $this->SetStyle('S',false); + break; + } + break; + + case 'TEXT-TRANSFORM': // none uppercase lowercase //Does support: capitalize + switch (strtoupper($v)) { //Not working 100% + case 'CAPITALIZE': + $this->capitalize=true; + break; + case 'UPPERCASE': + $this->toupper=true; + break; + case 'LOWERCASE': + $this->tolower=true; + break; + case 'NONE': break; + } + break; + + case 'TEXT-SHADOW': + $ts = $this->cssmgr->setCSStextshadow($v); + if ($ts) { $this->textshadow = $ts; } + break; + + case 'HYPHENS': // mPDF 5.6.08 + if (strtoupper($v)=='NONE') { + $this->textparam['hyphens'] = 2; + } + else if (strtoupper($v)=='AUTO') { + $this->textparam['hyphens'] = 1; + } + else if (strtoupper($v)=='MANUAL') { + $this->textparam['hyphens'] = 0; + } + break; + + case 'TEXT-OUTLINE': // mPDF 5.6.07 + if (strtoupper($v)=='NONE') { + $this->textparam['outline-s'] = false; + } + break; + + case 'TEXT-OUTLINE-WIDTH': // mPDF 5.6.07 + case 'OUTLINE-WIDTH': + switch(strtoupper($v)) { + case 'THIN': $v = '0.03em'; break; + case 'MEDIUM': $v = '0.05em'; break; + case 'THICK': $v = '0.07em'; break; + } + $w = $this->ConvertSize($v,$this->blk[$this->blklvl]['inner_width'],$this->FontSize); + if ($w) { + $this->textparam['outline-WIDTH'] = $w; + $this->textparam['outline-s'] = true; + } + else { $this->textparam['outline-s'] = false; } + break; + + case 'TEXT-OUTLINE-COLOR': // mPDF 5.6.07 + case 'OUTLINE-COLOR': + if (strtoupper($v) == 'INVERT') { + if ($this->colorarray) { + $cor = $this->colorarray; + $this->textparam['outline-COLOR'] = $this->_invertColor($cor); + } + else { + $this->textparam['outline-COLOR'] = $this->ConvertColor(255); + } + } + else { + $cor = $this->ConvertColor($v); + if ($cor) { $this->textparam['outline-COLOR'] = $cor ; } + } + break; + + case 'COLOR': // font color + $cor = $this->ConvertColor($v); + if ($cor) { + $this->colorarray = $cor; + $this->SetTColor($cor); + } + break; + + + }//end of switch($k) + + + }//end of foreach +} + +/*-- END HTML-CSS --*/ + + +function SetStyle($tag,$enable) { + $this->$tag=$enable; + $style=''; + foreach(array('B','I','U','S') as $s) { + if($this->$s) { + $style.=$s; + } + } + if ($this->S && empty($this->upperCase)) { @include(_MPDF_PATH.'includes/upperCase.php'); } + $this->currentfontstyle=$style; + $this->SetFont('',$style,0,false); +} + +// Set multiple styles at one $str e.g. "BIS" +function SetStylesArray($arr) { + $style=''; + foreach(array('B','I','U','S') as $s) { + if (isset($arr[$s])) { + if ($arr[$s]) { + $this->$s = true; + $style.=$s; + } + else { $this->$s = false; } + } + else if ($this->$s) { $style.=$s; } + } + $this->currentfontstyle=$style; + $this->SetFont('',$style,0,false); +} + +// Set multiple styles at one $str e.g. "BIS" +function SetStyles($str) { + $style=''; + foreach(array('B','I','U','S') as $s) { + if (strpos($str,$s) !== false) { + $this->$s = true; + $style.=$s; + } + else { $this->$s = false; } + } + $this->currentfontstyle=$style; + $this->SetFont('',$style,0,false); +} + +function ResetStyles() { + foreach(array('B','I','U','S') as $s) { + $this->$s = false; + } + $this->currentfontstyle=''; + $this->SetFont('','',0,false); +} + + +function DisableTags($str='') +{ + if ($str == '') //enable all tags + { + //Insert new supported tags in the long string below. + $this->enabledtags = "<span><s><strike><del><bdo><big><small><ins><cite><acronym><font><sup><sub><b><u><i><a><strong><em><code><samp><tt><kbd><var><q><table><thead><tfoot><tbody><tr><th><td><ol><ul><li><dl><dt><dd><form><input><select><textarea><option><div><p><h1><h2><h3><h4><h5><h6><pre><center><blockquote><address><hr><img><br><indexentry><indexinsert><bookmark><watermarktext><watermarkimage><tts><ttz><tta><column_break><columnbreak><newcolumn><newpage><page_break><pagebreak><formfeed><columns><toc><tocentry><tocpagebreak><pageheader><pagefooter><setpageheader><setpagefooter><sethtmlpageheader><sethtmlpagefooter><annotation><template><jpgraph><barcode><dottab><caption><textcircle><fieldset><legend><article><aside><figure><figcaption><footer><header><hgroup><nav><section><mark><details><summary><meter><progress><time>"; // mPDF 5.5.09 + } + else + { + $str = explode(",",$str); + foreach($str as $v) $this->enabledtags = str_replace(trim($v),'',$this->enabledtags); + } +} + + +/*-- TABLES --*/ + +function finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight) { + $af = 0; // Above font + $bf = 0; // Below font + $mta = 0; // Maximum top-aligned + $mba = 0; // Maximum bottom-aligned + if ($lhxt['BS']) { + $af = max($af, ($lhxt['BS'] - ($maxfontsize * (0.5 + $this->baselineC)))); + } + if ($lhxt['M']) { + $af = max($af, ($lhxt['M'] - $maxfontsize)/2); + $bf = max($bf, ($lhxt['M'] - $maxfontsize)/2); + } + if ($lhxt['TT']) { + $bf = max($bf, ($lhxt['TT'] - $maxfontsize)); + } + if ($lhxt['TB']) { + $af = max($af, ($lhxt['TB'] - $maxfontsize)); + } + if ($lhxt['T']) { + $mta = max($mta, $lhxt['T']); + } + if ($lhxt['B']) { + $mba = max($mba, $lhxt['B']); + } + if ((!$lhfixed || !$forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) { + $maxlineHeight = $maxfontsize + $af + $bf; + } + else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; } + if ($mta > $maxlineHeight) { + $bf += ($mta - $maxlineHeight); + $maxlineHeight = $mta; + } + if ($mba > $maxlineHeight) { + $af += ($mba - $maxlineHeight); + $maxlineHeight = $mba; + } + return $maxlineHeight; +} + +function TableWordWrap($maxwidth, $forcewrap = 0, $textbuffer = '', $def_fontsize, $returnarray=false) { // NB ** returnarray used in flowchart + $biggestword=0; + $toonarrow=false; + + $textbuffer[0][0] = preg_replace('/^[ ]*/','',$textbuffer[0][0]); + if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; } + + $text = ''; + $lhfixed = false; + if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; } + if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);} + else { $def_lineheight = 0; } + // START OF NEW LINE + // Initialise lineheight variables + $maxfontsize = 0; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $def_lineheight ; + $ch = 0; + $width = 0; + $ln = 1; // Counts line number + $mxw = $this->GetCharWidth('W',false); + for($cctr=0;$cctr<count($textbuffer);$cctr++) { // mPDF 5.6.22 + $chunk = $textbuffer[$cctr]; // mPDF 5.6.22 + $line = $chunk[0]; + //IMAGE + if (substr($line,0,3) == "\xbb\xa4\xac") { //identifier has been identified! + $objattr = $this->_getObjAttr($line); + if ($objattr['type'] == 'nestedtable') { + // END OF LINE + // Finalise & add lineheight + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + $level = $objattr['level']; + $ih = $this->table[($level+1)][$objattr['nestedcontent']]['h']; // nested table width + $ch += $ih; + // START OF NEW LINE + // Initialise lineheight variables + $ln++; + $maxfontsize = 0; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $def_lineheight ; + $width = 0; + $text = ""; + continue; + } + + list($skipln,$iw,$ih) = $this->inlineObject((isset($specialcontent['type']) ? $specialcontent['type'] : null),0,0, $objattr, $this->lMargin,$width,$maxwidth,$maxlineHeight,false,true); + if ($objattr['type'] == 'hr') { + // END OF LINE + // Finalise & add lineheight + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + // Add HR height + $ch += $ih; + // START OF NEW LINE + // Initialise lineheight variables + $ln++; + $maxfontsize = 0; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $def_lineheight ; + $width = 0; + $text = ""; + continue; + } + + if ($skipln==1 || $skipln==-2) { + // Finish last line + // END OF LINE + // Finalise & add lineheight + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + // START OF NEW LINE + // Initialise lineheight variables + $maxfontsize = 0; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $def_lineheight ; + $ln++; + $width = 0; + $text = ""; + } + $va = (isset($objattr['vertical-align']) ? $objattr['vertical-align'] : null); + if ($va) { + $lhxt[$va] = max($lhxt[$va], $ih); + } + if ($lhfixed && $ih > $def_fontsize) { $forceExactLineheight = false; } + $maxlineHeight = max($maxlineHeight ,$ih); + $width += $iw; + continue; + } + + // SET FONT SIZE/STYLE from $chunk[n] + // FONTSIZE + if(isset($chunk[11]) and $chunk[11] != '') { + if ($this->shrin_k) { + $this->SetFontSize($chunk[11]/$this->shrin_k,false); + } + else { + $this->SetFontSize($chunk[11],false); + } + } + if ($line == "\n") { + // END OF LINE + $maxfontsize = max($maxfontsize,$this->FontSize); + $fh = $this->_computeLineheight($this->table_lineheight); + if ($lhfixed && $this->FontSize > $def_fontsize) { + $fh = $this->FontSize; + $forceExactLineheight = false; + } + $maxlineHeight = max($maxlineHeight,$fh); + + // Finalise & add lineheight + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + // START OF NEW LINE + // Initialise lineheight variables + $maxfontsize = 0; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $this->_computeLineheight($this->table_lineheight); + $ln++; + $text = ""; + $width = 0; + if(isset($chunk[11]) and $chunk[11] != '') { + $this->SetFontSize($this->default_font_size,false); + } + continue; + } + + $lbw = $rbw = 0; // Border widths + if(isset($chunk[16]) && !empty($chunk[16])) { //Border + $this->spanborddet = $chunk[16]; + if (isset($this->spanborddet['L'])) $lbw = $this->spanborddet['L']['w']; + if (isset($this->spanborddet['R'])) $rbw = $this->spanborddet['R']['w']; + } + if(isset($chunk[15])) { // Word spacing + $this->wSpacingCSS = $chunk[15]; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); + } + } + if(isset($chunk[14])) { // Letter spacing + $this->lSpacingCSS = $chunk[14]; + if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); + } + } + if(isset($chunk[13])) { // Font Kerning + $this->kerning = $chunk[13]; + } + if(isset($chunk[9])) { // Text params - Outline, hyphens // mPDF 5.6.08 + $this->textparam = $chunk[9]; + } + // FONTFAMILY + if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); } + + // FONT STYLE B I U + if(isset($chunk[2]) and $chunk[2] != '') { + $this->SetStyles($chunk[2]); + } + + $space = $this->GetCharWidth(' ',false); + + if (mb_substr($line,0,1,$this->mb_enc ) == ' ') { // line (chunk) starts with a space + $width += $space; + $text .= ' '; + } + + if (mb_substr($line,(mb_strlen($line,$this->mb_enc )-1),1,$this->mb_enc ) == ' ') { $lsend = true; } // line (chunk) ends with a space + else { $lsend = false; } + $line= trim($line); + if ($line == '') { continue; } + + // mPDF ITERATION + if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line); + + $words = explode(' ', $line); + + foreach ($words as $k=>$word) { + $word = trim($word); + $wordwidth = $this->GetStringWidth($word); + if ($k==0) { $wordwidth += $lbw; } + if ($k==(count($words)-1)) { $wordwidth += $rbw; } + //maxwidth is insufficient for one word + if ($wordwidth > $maxwidth + 0.0001) { + $firstchunk=true; + while($wordwidth > $maxwidth + 0.0001) { + $chw = 0; // check width + $oneCJKorphan = false; + $mlen = mb_strlen($word, $this->mb_enc ); + for ( $i = 0; $i < $mlen; $i++ ) { + $chw = $this->GetStringWidth(mb_substr($word,0,$i+1,$this->mb_enc )); + if ($k==0) { $chw += $lbw; } + if ($k==(count($words)-1)) { $chw += $rbw; } + if ($chw > $maxwidth) { + if ($i==0 && $firstchunk) { + // If first letter of line does not fit + $wordwidth = $maxwidth - 0.0001; + if ($this->debug) { $this->Error("Table cell width calculated less than that needed for one character!"); } + break; + } +/*-- CJK-FONTS --*/ + // mPDF 5.6.40 mPDF 5.6.44 + if ($this->checkCJK && !$this->usingCoreFont && preg_match("/[".$this->pregCJKchars."]/u", $word)) { // mPDF 5.6.44 + if (!$oneCJKorphan && preg_match('/['.$this->CJKoverflow.']$/u',mb_substr($word,0,$i+1,$this->mb_enc )) && $this->allowCJKorphans) { + $wordwidth = $maxwidth - 0.0001; + $oneCJKorphan = true; + continue; + } + $cjkfix = 0; + // Last character that fits is not allowed to end a line - move lastchar(s) to start of next line + if ($i>0 && preg_match("/[".$this->CJKleading."$]/u", mb_substr($word,0,$i,$this->mb_enc ))) { + $cjkfix = 1; + } + // Next character is not allowed to start a new line + else if (preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i,1,$this->mb_enc ))) { + // try squeezing another character(s) onto this line = Oikomi + if ($this->allowCJKorphans && !$oneCJKorphan) { + //if lookahead is not another following char + if ($i==($mlen-1) || ($i<($mlen-1) && !preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i+1,1,$this->mb_enc )))) { + $wordwidth = $maxwidth - 0.0001; + $oneCJKorphan = true; + continue; + } + } + // or move lastchar(s) to next line + $cjkfix = 2; + } + // mPDF 5.6.42 + // CJK numerals kept together + else if (preg_match("/([".$this->pregCJKchars."]+[0-9\x{ff10}-\x{ff19}]+$)/u", mb_substr($word,0,$i,$this->mb_enc )) && preg_match("/^([0-9\x{ff10}-\x{ff19}]+[".$this->pregCJKchars."]+)/u", mb_substr($word,$i,16,$this->mb_enc ))) { + $cjkfix = 3; + } + if ($cjkfix) { + //move lastchar(s) to next line + $m0 = mb_substr($word,$i-1,1,$this->mb_enc ); // chars to move + $m1 = mb_substr($word,0,$i-1,$this->mb_enc ); // str after stripped chars to move + $mi = $i - 1; + if ($cjkfix == 3) { $match = "0-9\x{ff10}-\x{ff19}"; } + else { $match = $this->CJKleading; } + while(preg_match("/[".$match."$]/u", $m1) && mb_strlen($m1, $this->mb_enc)>2) { + $m0 = mb_substr($m1,$mi-1,1,$this->mb_enc ).$m0; // chars to move + $m1 = mb_substr($m1,0,$mi-1,$this->mb_enc ); // str after stripped chars to move + $mi--; + } + // Insert $m0 into $word at $i + $word = mb_substr($word,0,$i,$this->mb_enc ) . $m0 . mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc ); + $mlen = mb_strlen($word, $this->mb_enc ); // increment max for loop counter + } + + + + } +/*-- END CJK-FONTS --*/ + + if ($text && $firstchunk) { + // END OF LINE + // Finalise & add lineheight + $maxfontsize = max($maxfontsize,$this->FontSize); + $fh = $this->_computeLineheight($this->table_lineheight); + if ($lhfixed && $this->FontSize > $def_fontsize) { + $fh = $this->FontSize; + $forceExactLineheight = false; + } + $maxlineHeight = max($maxlineHeight,$fh); + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + // START OF NEW LINE + // Initialise lineheight variables + $maxfontsize = $this->FontSize; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $this->_computeLineheight($this->table_lineheight); + $ln++; + } + // END OF LINE + // Finalise & add lineheight + $maxfontsize = max($maxfontsize,$this->FontSize); + $fh = $this->_computeLineheight($this->table_lineheight); + if ($lhfixed && $this->FontSize > $def_fontsize) { + $fh = $this->FontSize; + $forceExactLineheight = false; + } + $maxlineHeight = max($maxlineHeight,$fh); + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + // START OF NEW LINE + // Initialise lineheight variables + $maxfontsize = $this->FontSize; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $this->_computeLineheight($this->table_lineheight); + $ln++; + $mxw = $maxwidth; + $text = mb_substr($word,0,$i,$this->mb_enc ); + $word = mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc ); + $wordwidth = $this->GetStringWidth($word); + $width = 0; + $firstchunk=false; + break; + } + } + if (mb_strlen($word, $this->mb_enc )<2 && $wordwidth > $maxwidth + 0.0001) { + $wordwidth = $maxwidth - 0.0001; + if ($this->debug) { $this->Error("Table cell width calculated less than that needed for single character!"); } + } + $firstchunk=false; + } + } + // Word fits on line... + if ($width + $wordwidth < $maxwidth + 0.0001) { + $mxw = max($mxw, ($width+$wordwidth)); + $width += $wordwidth + $space; + $text .= $word.' '; + } + // Word does not fit on line... + else { + // mPDF 5.6.21 hard hyphens + if ($this->textparam['hyphens'] != 2 && preg_match('/\-/',$word)) { + list($hardsuccess,$pre,$post,$prelength) = $this->hardHyphenate($word, ($maxwidth - $width)-$this->GetCharWidth("-", false)); + if ($hardsuccess) { + $text .= $pre.'-'; + $word = $post; + $wordwidth = $this->GetStringWidth($word); + if ($k==(count($words)-1)) { $wordwidth += $rbw; } + } + } +/*-- HYPHENATION --*/ + // Soft Hyphens chr(173) + else if ($this->textparam['hyphens'] != 2 && (!$this->usingCoreFont && preg_match("/\xc2\xad/",$word)) || ($this->usingCoreFont && preg_match("/".chr(173)."/",$word) && ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats')) ) { // mPDF 5.6.06 5.6.08 + list($success,$pre,$post,$prelength) = $this->softHyphenate($word, ($maxwidth - $width)); + if ($success) { + $text .= $pre.'-'; + $word = $post; + $wordwidth = $this->GetStringWidth($word); + if ($k==(count($words)-1)) { $wordwidth += $rbw; } + } + } + else if ($this->textparam['hyphens'] == 1) { // mPDF 5.6.06 5.6.08 + list($success,$pre,$post,$prelength) = $this->hyphenateWord($word, ($maxwidth - $width)); + if ($success) { + $text .= $pre.'-'; + $word = $post; + $wordwidth = $this->GetStringWidth($word); + if ($k==(count($words)-1)) { $wordwidth += $rbw; } + } + } +/*-- END HYPHENATION --*/ + + + // mPDF 5.6.22 + if ( count($textbuffer)>1 && $cctr > 0 && $k==0 + && (substr($textbuffer[$cctr][0],0,3) != "\xbb\xa4\xac") + && (substr($textbuffer[$cctr-1][0],0,3) != "\xbb\xa4\xac") + && substr($textbuffer[$cctr-1][0],-1,1) != ' ' + && substr($textbuffer[$cctr][0],0,1) != ' ' + ) { + // Go back to find a space in a previous chunk of content + $found = false; + for ($ix=$cctr-1;$ix>=0;$ix--) { + if (preg_match('/[ ]/',$textbuffer[$ix][0])) { $found = $ix; break; } + } + if ($found !== false) { + $charpos = strrpos($textbuffer[$found][0],' '); + // mPDF 5.6.24 + $a1 = $a2 = $textbuffer[$found]; + $a1[0] = "\n"; + $a2[0] = substr($textbuffer[$found][0], $charpos+1, strlen($textbuffer[$found][0])-$charpos); + $textbuffer[$found][0] = substr($textbuffer[$found][0], 0, $charpos); + array_insert($textbuffer, $a1, $found+1); + array_insert($textbuffer, $a2, $found+2); + // Initialise all variables + $biggestword=0; + $toonarrow=false; + $lhfixed = false; + if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; } + if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);} + else { $def_lineheight = 0; } + $maxfontsize = 0; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $def_lineheight ; + $ch = 0; + $width = 0; + $ln = 1; // Counts line number + $mxw = $this->GetCharWidth('W',false); + $text = ''; + + $cctr = -1; + break; + } + } + + // END OF LINE + // Finalise & add lineheight + $maxfontsize = max($maxfontsize,$this->FontSize); + $fh = $this->_computeLineheight($this->table_lineheight); + if ($lhfixed && $this->FontSize > $def_fontsize) { + $fh = $this->FontSize; + $forceExactLineheight = false; + } + $maxlineHeight = max($maxlineHeight,$fh); + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + $mxw = $maxwidth; + // START OF NEW LINE + // Initialise lineheight variables + $maxfontsize = $this->FontSize; + $forceExactLineheight = true; + $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0); + $maxlineHeight = $this->_computeLineheight($this->table_lineheight); + $ln++; + $width = $wordwidth + $space; + $text = $word.' '; + } + $maxfontsize = max($maxfontsize,$this->FontSize); + $fh = $this->_computeLineheight($this->table_lineheight); + if ($lhfixed && $this->FontSize > $def_fontsize) { + $fh = $this->FontSize; + $forceExactLineheight = false; + } + $maxlineHeight = max($maxlineHeight,$fh); + } + + // End of textbuffer chunk + if (!$lsend) { + $width -= $space; + $text = rtrim($text); + } + + // RESET FONT SIZE/STYLE + // RESETTING VALUES + //Now we must deactivate what we have used + if(isset($chunk[2]) and $chunk[2] != '') { + $this->ResetStyles(); + } + if(isset($chunk[4]) and $chunk[4] != '') { + $this->SetFont($this->default_font,$this->FontStyle,0,false); + } + if(isset($chunk[11]) and $chunk[11] != '') { + $this->SetFontSize($this->default_font_size,false); + } + $this->spanborddet = array(); + $this->kerning = false; + $this->lSpacingCSS = ''; + $this->wSpacingCSS = ''; + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + } + // Finalise lineheight if something output on line and add + if ($width) { + $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight); + } + if ($returnarray) { return array($ch,$ln,$mxw); } + else { return $ch; } + +} + + +function TableCheckMinWidth($maxwidth, $forcewrap = 0, $textbuffer) { + $biggestword=0; + $toonarrow=false; + if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; } + + foreach ($textbuffer as $chunk) { + + $line = $chunk[0]; + // mPDF ITERATION + if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line); + + // IMAGES & FORM ELEMENTS + if (substr($line,0,3) == "\xbb\xa4\xac") { //inline object - FORM element or IMAGE! + $objattr = $this->_getObjAttr($line); + if ($objattr['type']!='hr' && isset($objattr['width']) && ($objattr['width']/$this->shrin_k) > ($maxwidth + 0.0001) ) { + if (($objattr['width']/$this->shrin_k) > $biggestword) { $biggestword = ($objattr['width']/$this->shrin_k); } + $toonarrow=true; + } + continue; + } + + if ($line == "\n") { + continue; + } + $line = trim($line ); + // SET FONT SIZE/STYLE from $chunk[n] + + // FONTSIZE + if(isset($chunk[11]) and $chunk[11] != '') { + if ($this->shrin_k) { + $this->SetFontSize($chunk[11]/$this->shrin_k,false); + } + else { + $this->SetFontSize($chunk[11],false); + } + } + // FONTFAMILY + if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); } + // B I U + if(isset($chunk[2]) and $chunk[2] != '') { + $this->SetStyles($chunk[2]); + } + + $lbw = $rbw = 0; // Border widths + if(isset($chunk[16]) && !empty($chunk[16])) { //Border + $this->spanborddet = $chunk[16]; + $lbw = $this->spanborddet['L']['w']; + $rbw = $this->spanborddet['R']['w']; + } + if(isset($chunk[15])) { // Word spacing + $this->wSpacingCSS = $chunk[15]; + if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { + $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); + } + } + if(isset($chunk[14])) { // Letter spacing + $this->lSpacingCSS = $chunk[14]; + if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { + $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); + } + } + if(isset($chunk[13])) { // Font Kerning + $this->kerning = $chunk[13]; + } + + $words = explode(' ', $line); + foreach ($words as $k=>$word) { + $word = trim($word); + $wordwidth = $this->GetStringWidth($word); + if ($k==0) { $wordwidth += $lbw; } + if ($k==(count($words)-1)) { $wordwidth += $rbw; } + + //Warn user that maxwidth is insufficient + if ($wordwidth > $maxwidth + 0.0001) { + if ($wordwidth > $biggestword) { $biggestword = $wordwidth; } + $toonarrow=true; + } + } + + // RESET FONT SIZE/STYLE + // RESETTING VALUES + //Now we must deactivate what we have used + if(isset($chunk[2]) and $chunk[2] != '') { + $this->ResetStyles(); + } + if(isset($chunk[4]) and $chunk[4] != '') { + $this->SetFont($this->default_font,$this->FontStyle,0,false); + } + if(isset($chunk[11]) and $chunk[11] != '') { + $this->SetFontSize($this->default_font_size,false); + } + $this->spanborddet = array(); + $this->kerning = false; + $this->lSpacingCSS = ''; + $this->wSpacingCSS = ''; + $this->fixedlSpacing = false; + $this->minwSpacing = 0; + } + + //Return -(wordsize) if word is bigger than maxwidth + // ADDED + if (($toonarrow) && ($this->table_error_report)) { + $this->Error("Word is too long to fit in table - ".$this->table_error_report_param); + } + if ($toonarrow) return -$biggestword; + else return 1; +} + +function shrinkTable(&$table,$k) { + $table['border_spacing_H'] /= $k; + $table['border_spacing_V'] /= $k; + + $table['padding']['T'] /= $k; + $table['padding']['R'] /= $k; + $table['padding']['B'] /= $k; + $table['padding']['L'] /= $k; + + $table['margin']['T'] /= $k; + $table['margin']['R'] /= $k; + $table['margin']['B'] /= $k; + $table['margin']['L'] /= $k; + + $table['border_details']['T']['w'] /= $k; + $table['border_details']['R']['w'] /= $k; + $table['border_details']['B']['w'] /= $k; + $table['border_details']['L']['w'] /= $k; + + if (isset($table['max_cell_border_width']['T'])) $table['max_cell_border_width']['T'] /= $k; + if (isset($table['max_cell_border_width']['R'])) $table['max_cell_border_width']['R'] /= $k; + if (isset($table['max_cell_border_width']['B'])) $table['max_cell_border_width']['B'] /= $k; + if (isset($table['max_cell_border_width']['L'])) $table['max_cell_border_width']['L'] /= $k; + + if ($this->simpleTables){ + $table['simple']['border_details']['T']['w'] /= $k; + $table['simple']['border_details']['R']['w'] /= $k; + $table['simple']['border_details']['B']['w'] /= $k; + $table['simple']['border_details']['L']['w'] /= $k; + } + + $table['miw'] /= $k; + $table['maw'] /= $k; + + if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); } + + for($j = 0 ; $j < $table['nc'] ; $j++ ) { //columns + + $table['wc'][$j]['miw'] /= $k; + $table['wc'][$j]['maw'] /= $k; + + // mPDF 5.6.13 + if (isset($table['decimal_align'][$j]['maxs0']) && $table['decimal_align'][$j]['maxs0']) { $table['decimal_align'][$j]['maxs0'] /= $k; } + if (isset($table['decimal_align'][$j]['maxs1']) && $table['decimal_align'][$j]['maxs1']) { $table['decimal_align'][$j]['maxs1'] /= $k; } + + if (isset($table['wc'][$j]['absmiw']) && $table['wc'][$j]['absmiw'] ) $table['wc'][$j]['absmiw'] /= $k; + + for($i = 0 ; $i < $table['nr']; $i++ ) { //rows + if ($this->cacheTables) { + $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $c = &$table['cells'][$i][$j]; + if (isset($c) && $c) { + if (!$this->simpleTables){ + if ($this->packTableData) { + $cell = $this->_unpackCellBorder($c['borderbin'] ); + $cell['border_details']['T']['w'] /= $k; + $cell['border_details']['R']['w'] /= $k; + $cell['border_details']['B']['w'] /= $k; + $cell['border_details']['L']['w'] /= $k; + $cell['border_details']['mbw']['TL'] /= $k; + $cell['border_details']['mbw']['TR'] /= $k; + $cell['border_details']['mbw']['BL'] /= $k; + $cell['border_details']['mbw']['BR'] /= $k; + $cell['border_details']['mbw']['LT'] /= $k; + $cell['border_details']['mbw']['LB'] /= $k; + $cell['border_details']['mbw']['RT'] /= $k; + $cell['border_details']['mbw']['RB'] /= $k; + $c['borderbin'] = $this->_packCellBorder($cell); + } + else { + $c['border_details']['T']['w'] /= $k; + $c['border_details']['R']['w'] /= $k; + $c['border_details']['B']['w'] /= $k; + $c['border_details']['L']['w'] /= $k; + $c['border_details']['mbw']['TL'] /= $k; + $c['border_details']['mbw']['TR'] /= $k; + $c['border_details']['mbw']['BL'] /= $k; + $c['border_details']['mbw']['BR'] /= $k; + $c['border_details']['mbw']['LT'] /= $k; + $c['border_details']['mbw']['LB'] /= $k; + $c['border_details']['mbw']['RT'] /= $k; + $c['border_details']['mbw']['RB'] /= $k; + } + } + $c['padding']['T'] /= $k; + $c['padding']['R'] /= $k; + $c['padding']['B'] /= $k; + $c['padding']['L'] /= $k; + $c['maxs'] /= $k; + if (isset($c['w'])) { $c['w'] /= $k; } + $c['s'] /= $k; + $c['maw'] /= $k; + $c['miw'] /= $k; + if (isset($c['absmiw'])) $c['absmiw'] /= $k; + if (isset($c['nestedmaw'])) $c['nestedmaw'] /= $k; + if (isset($c['nestedmiw'])) $c['nestedmiw'] /= $k; + if (isset($c['textbuffer'])) { + foreach($c['textbuffer'] AS $n=>$tb) { + if (!empty($tb[16])) { + $c['textbuffer'][$n][16]['T']['w'] /= $k; + $c['textbuffer'][$n][16]['B']['w'] /= $k; + $c['textbuffer'][$n][16]['L']['w'] /= $k; + $c['textbuffer'][$n][16]['R']['w'] /= $k; + } + } + } + if ($this->cacheTables) { + $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]); + } + unset($c); + } + }//rows + }//columns + if ($this->cacheTables) { fclose($fh); } +} + +function _cacheCell($c, $file, $mode="A", $fh=null, $offset=0) { // mode = Append or (over)Write (needs offset and fh) + // Requires either $file OR $fh (file_handle) + if (!is_array($c) || !isset($c)) { return ''; } + + if(isset($c['w'])) { $cw = $c['w']; } else { $cw = -1; } + if(isset($c['w0'])) { $cw0 = $c['w0']; } else { $cw0 = -1; } + if(isset($c['h0'])) { $ch0 = $c['h0']; } else { $ch0 = -1; } + + $data = pack("n2d19A1A1n2sA32A128", + $c['colspan'], /* n (16 bit; 2 bytes) [pos 0] */ + $c['rowspan'], /* n (16 bit; 2 bytes) [pos 2] */ + $c['s'], /* d NB machine-dependent size (64 bit; 8 bytes on test winOS) [pos 4] */ + $c['maxs'], /* d NB machine-dependent size [pos 4 + 1*D] */ + $c['nestedmaw'], /* d NB machine-dependent size [pos 4 + 2*D] */ + $c['nestedmiw'], /* d NB machine-dependent size [pos 4 + 3*D] */ + $c['padding']['L'], /* d NB machine-dependent size [pos 4 + 4*D] */ + $c['padding']['R'], /* d NB machine-dependent size [pos 4 + 5*D] */ + $c['padding']['T'], /* d NB machine-dependent size [pos 4 + 6*D] */ + $c['padding']['B'], /* d NB machine-dependent size [pos 4 + 7*D] */ + $c['dfs'], /* d NB machine-dependent size [pos 4 + 8*D] */ + $cw, /* d NB machine-dependent size [pos 4 + 9*D] */ + $c['h'], /* d NB machine-dependent size [pos 4 + 10*D] */ + $c['absmiw'], /* d NB machine-dependent size [pos 4 + 11*D] */ + $c['maw'], /* d NB machine-dependent size [pos 4 + 12*D] */ + $c['miw'], /* d NB machine-dependent size [pos 4 + 13*D] */ + $c['mih'], /* d NB machine-dependent size [pos 4 + 14*D] */ + $c['x0'], /* d NB machine-dependent size [pos 4 + 15*D] */ + $cw0, /* d NB machine-dependent size [pos 4 + 16*D] */ + $c['y0'], /* d NB machine-dependent size [pos 4 + 17*D] */ + $ch0, /* d NB machine-dependent size [pos 4 + 18*D] */ + $c['a'], /* A1 (1 byte) [pos 4 + 19*D] */ + $c['va'], /* A1 (1 byte) [pos 5 + 19*D] */ + $c['nowrap'], /* 1 or blank n (16 bit; 2 bytes) [pos 6 + 19*D] */ + $c['wpercent'], /* 0 - 100 n (16 bit; 2 bytes) [pos 8 + 19*D] */ + $c['R'], /* 90 or -90 s (16 bit; 2 bytes) [pos 10 + 19*D] */ + $c['bgcolor'], /* A32 (32 bytes) [pos 12 + 19*D] */ + $c['gradient'] /* A128 (128 bytes) [pos 44 + 19*D] */ + ); + + if ($c['background-image']) { + $data .= pack("n2d2A6A6n3dA4A128", + strlen($data), /* offset in main data to start of bgimage data */ + $c['background-image']['image_id'], /* n */ + $c['background-image']['orig_w'], /* d NB machine-dependent size */ + $c['background-image']['orig_h'], /* d NB machine-dependent size */ + $c['background-image']['x_pos'], /* A6 calc size or "50%" */ + $c['background-image']['y_pos'], /* A6 calc size or "50%" */ + $c['background-image']['x_repeat'], /* n true or false*/ + $c['background-image']['y_repeat'], /* n true or false */ + $c['background-image']['resize'], /* n 0 - 6 */ + $c['background-image']['opacity'], /* d 0-1 */ + $c['background-image']['itype'], /* A4 jpg etc */ + $c['background-image']['gradient'] /* A128 CSS string */ + ); + } + else $data .= pack("n",0); + $tb_offset = 2 + 186 + 2 + strlen($data); + $stb = serialize($c['textbuffer']).' '; // buffer to allow updating in reverseTableDir + $lentb = strlen($stb); + $data2 = pack("nA".$lentb, $lentb, $stb); + + $tempfh = true; + if ($mode=="W" && $offset) { + if (!$fh) { $fh = fopen($file, "r+b"); } // Overwrite (but not truncate) + else $tempfh = false; + fseek($fh, $offset); + } + else { + $fh = fopen($file, "ab"); // APPEND + } + fwrite($fh, pack("n",$tb_offset)); // Offset to Text buffer 2 bytes + fwrite($fh, $c['borderbin']); // border details 186 bytes + fwrite($fh, pack("n",strlen($data))); // Length of Main data + fwrite($fh, $data); // Main data + fwrite($fh, $data2); // Text buffer (starts with "n" length of text buffer) + if ($tempfh) fclose($fh); + return ($tb_offset + 2 + $lentb); +} + +function _cacheUpdateTxB($c, $fh, $offset) { + fseek($fh, $offset); + $tb_offset = $this->read_short($fh); // First entry = Offset to Text buffer 2 bytes + fseek($fh, ($tb_offset-2), SEEK_CUR); + $lentb = $this->read_short($fh); // First entry in textbuffer = Length of serialized textbuffer - do not update + $stb = serialize($c['textbuffer']); + fwrite($fh, pack("A".$lentb, $stb)); +} + +function _cacheUpdateBorder($c, $fh, $offset) { + $offset += 2; + fseek($fh, $offset); + fwrite($fh, $c['borderbin']); +} + +function _cacheUpdateMtx($c, $fh, $offset, $var) { + if ($var=='mih') { $offset += (2 + 186 + 2 + 4 + 14*_DSIZE); } + else if ($var=='x0') { $offset += (2 + 186 + 2 + 4 + 15*_DSIZE); } // x0 and w0 + else if ($var=='y0') { $offset += (2 + 186 + 2 + 4 + 17*_DSIZE); } // y0 and h0 + fseek($fh, $offset); + if ($var=='mih') { fwrite($fh, pack("d",$c['mih'])); } + else if ($var=='x0') { fwrite($fh, pack("d2",$c['x0'],$c['w0'])); } + else if ($var=='y0') { fwrite($fh, pack("d2",$c['y0'],$c['h0'])); } +} + +function _uncacheCell($ptr, $file, $fh) { + // Requires either $file or $fh (file_handle) + if ($ptr==0) { return null; } + if (is_array($ptr)) { $this->Error("Probable cause - missing end tag </td>. You may be able to change the configurable variable: allow_html_optional_endtags "); } + $tempfh = true; + if (!$fh) { $fh = fopen($file, "rb"); } + else $tempfh = false; + fseek($fh, $ptr); + $c = array(); + $tb_offset = $this->read_short($fh); // First entry = Offset to Text buffer 2 bytes + $c['borderbin'] = fread($fh,186); // border details 186 bytes + $maindatalen = $this->read_short($fh); // Length of Main data (2 bytes) + $str = fread($fh,$maindatalen ); // Main data + $data = unpack("ncolspan/nrowspan/ds/dmaxs/dnmaw/dnmiw/dpl/dpr/dpt/dpb/ddfs/dw/dh/dabsmiw/dmaw/dmiw/dmih/dx0/dw0/dy0/dh0/A1a/A1va/nnowrap/nwpercent/sR/A32bgcol/A128grad/nbgimage", $str); + + if ($data['colspan']>0) $c['colspan'] = $data['colspan']; /* n */ + if ($data['rowspan']>0) $c['rowspan'] = $data['rowspan']; /* n */ + $c['s'] = $data['s']; /* d NB machine-dependent size */ + $c['maxs'] = $data['maxs']; /* d NB machine-dependent size */ + if ($data['nmaw']>0) $c['nestedmaw'] = $data['nmaw']; /* d NB machine-dependent size */ + if ($data['nmiw']>0) $c['nestedmiw'] = $data['nmiw']; /* d NB machine-dependent size */ + $c['padding']['L'] = $data['pl']; /* d NB machine-dependent size */ + $c['padding']['R'] = $data['pr']; /* d NB machine-dependent size */ + $c['padding']['T'] = $data['pt']; /* d NB machine-dependent size */ + $c['padding']['B'] = $data['pb']; /* d NB machine-dependent size */ + $c['dfs'] = $data['dfs']; /* d NB machine-dependent size */ + if ($data['w']>=0) $c['w'] = $data['w']; /* d NB machine-dependent size */ + if ($data['h']>0) $c['h'] = $data['h']; /* d NB machine-dependent size */ + if ($data['absmiw']>0) $c['absmiw'] = $data['absmiw']; /* d NB machine-dependent size */ + if ($data['maw']>0) $c['maw'] = $data['maw']; /* d NB machine-dependent size */ + if ($data['miw']>0) $c['miw'] = $data['miw']; /* d NB machine-dependent size */ + if ($data['mih']>0) $c['mih'] = $data['mih']; /* d NB machine-dependent size */ + if ($data['w0']>=0) { $c['w0'] = $data['w0']; /* d NB machine-dependent size */ + $c['x0'] = $data['x0']; } /* d NB machine-dependent size */ + if ($data['h0']>=0) { $c['h0'] = $data['h0']; /* d NB machine-dependent size */ + $c['y0'] = $data['y0']; } /* d NB machine-dependent size */ + $c['a'] = trim($data['a']); /* A1 */ + $c['va'] = trim($data['va']); /* A1 */ + if ($data['nowrap']) $c['nowrap'] = $data['nowrap']; /* 1 or blank n */ + else $c['nowrap'] = false; + if ($data['wpercent']>0) $c['wpercent'] = $data['wpercent']; /* 0 - 100 n */ + if ($data['R']<>0) $c['R'] = $data['R']; /* 90 or -90 s */ + else $c['R'] = false; + $c['bgcolor'] = trim($data['bgcol']); /* A32 */ + if (trim($data['grad'])) + $c['gradient'] = trim($data['grad']); /* A128 */ + else $c['gradient'] = false; + if ($data['bgimage']>0) { + $bgidata = substr($str, ($data['bgimage']+2)); + $c['background-image'] = unpack("nimage_id/dorig_w/dorig_h/A6x_pos/A6y_pos/nx_repeat/ny_repeat/nresize/dopacity/A4itype/A128gradient", $bgidata); + } + + $tblen = $this->read_short($fh); // Length of Textbuffer + $tbsp = fread($fh,$tblen); // Textbuffer (serialised and packed) + $tbs = unpack("A".$tblen."textbuffer",$tbsp); // Textbuffer unpacked + $c['textbuffer'] = unserialize(trim($tbs['textbuffer'])); // Textbuffer unserialized + + if ($tempfh) { fclose($fh); } + return ($c); +} +function read_short(&$fh) { + $s = fread($fh,2); + $a = (ord($s[0])<<8) + ord($s[1]); + if ($a & (1 << 15) ) { + $a = ($a - (1 << 16)); + } + return $a; +} +function _backupCacheFiles() { + foreach($this->table AS $lvl=>$t) { + foreach($this->table[$lvl] AS $c=>$t2) { +///////////////////////////if (!file_exists($t2['cache'])) { echo $lvl; echo $c; print_r($this->table); exit; } + copy( $t2['cache'], $t2['cache'].'.bak'); + } + } +} +function _restoreCacheFiles() { + foreach($this->table AS $lvl=>$t) { + foreach($this->table[$lvl] AS $c=>$t2) { + copy( $t2['cache'].'.bak', $t2['cache']); + } + } +} + + +function _packCellBorder($cell) { + if (!is_array($cell) || !isset($cell)) { return ''; } + + if (!$this->packTableData) { return $cell; } + // = 186 bytes + $bindata = pack("nnda6A10nnda6A10nnda6A10nnda6A10nd9", + $cell['border'], + $cell['border_details']['R']['s'], + $cell['border_details']['R']['w'], + $cell['border_details']['R']['c'], + $cell['border_details']['R']['style'], + $cell['border_details']['R']['dom'], + + $cell['border_details']['L']['s'], + $cell['border_details']['L']['w'], + $cell['border_details']['L']['c'], + $cell['border_details']['L']['style'], + $cell['border_details']['L']['dom'], + + $cell['border_details']['T']['s'], + $cell['border_details']['T']['w'], + $cell['border_details']['T']['c'], + $cell['border_details']['T']['style'], + $cell['border_details']['T']['dom'], + + $cell['border_details']['B']['s'], + $cell['border_details']['B']['w'], + $cell['border_details']['B']['c'], + $cell['border_details']['B']['style'], + $cell['border_details']['B']['dom'], + + $cell['border_details']['mbw']['BL'], + $cell['border_details']['mbw']['BR'], + $cell['border_details']['mbw']['RT'], + $cell['border_details']['mbw']['RB'], + $cell['border_details']['mbw']['TL'], + $cell['border_details']['mbw']['TR'], + $cell['border_details']['mbw']['LT'], + $cell['border_details']['mbw']['LB'], + + $cell['border_details']['cellposdom'] + ); + return $bindata; +} + + + +function _getBorderWidths($bindata) { + if (!$bindata) { return array(0,0,0,0); } + if (!$this->packTableData) { return array($bindata['border_details']['T']['w'], $bindata['border_details']['R']['w'], $bindata['border_details']['B']['w'], $bindata['border_details']['L']['w']); } + + $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata); + $cell['border_details']['R']['w'] = $bd['rw']; + $cell['border_details']['L']['w'] = $bd['lw']; + $cell['border_details']['T']['w'] = $bd['tw']; + $cell['border_details']['B']['w'] = $bd['bw']; + return array($bd['tw'], $bd['rw'], $bd['bw'], $bd['lw']); +} + + +function _unpackCellBorder($bindata) { + if (!$bindata) { return array(); } + if (!$this->packTableData) { return $bindata; } + + $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata); + + $cell['border'] = $bd['bord']; + $cell['border_details']['R']['s'] = $bd['rs']; + $cell['border_details']['R']['w'] = $bd['rw']; + $cell['border_details']['R']['c'] = $bd['rca']; + $cell['border_details']['R']['style'] = trim($bd['rst']); + $cell['border_details']['R']['dom'] = $bd['rd']; + + $cell['border_details']['L']['s'] = $bd['ls']; + $cell['border_details']['L']['w'] = $bd['lw']; + $cell['border_details']['L']['c'] = $bd['lca']; + $cell['border_details']['L']['style'] = trim($bd['lst']); + $cell['border_details']['L']['dom'] = $bd['ld']; + + $cell['border_details']['T']['s'] = $bd['ts']; + $cell['border_details']['T']['w'] = $bd['tw']; + $cell['border_details']['T']['c'] = $bd['tca']; + $cell['border_details']['T']['style'] = trim($bd['tst']); + $cell['border_details']['T']['dom'] = $bd['td']; + + $cell['border_details']['B']['s'] = $bd['bs']; + $cell['border_details']['B']['w'] = $bd['bw']; + $cell['border_details']['B']['c'] = $bd['bca']; + $cell['border_details']['B']['style'] = trim($bd['bst']); + $cell['border_details']['B']['dom'] = $bd['bd']; + + $cell['border_details']['mbw']['BL'] = $bd['mbl']; + $cell['border_details']['mbw']['BR'] = $bd['mbr']; + $cell['border_details']['mbw']['RT'] = $bd['mrt']; + $cell['border_details']['mbw']['RB'] = $bd['mrb']; + $cell['border_details']['mbw']['TL'] = $bd['mtl']; + $cell['border_details']['mbw']['TR'] = $bd['mtr']; + $cell['border_details']['mbw']['LT'] = $bd['mlt']; + $cell['border_details']['mbw']['LB'] = $bd['mlb']; + $cell['border_details']['cellposdom'] = $bd['cpd']; + + return($cell); +} + + +////////////////////////TABLE CODE (from PDFTable)///////////////////////////////////// +////////////////////////TABLE CODE (from PDFTable)///////////////////////////////////// +////////////////////////TABLE CODE (from PDFTable)///////////////////////////////////// +//table Array of (w, h, bc, nr, wc, hr, cells) +//w Width of table +//h Height of table +//nc Number column +//nr Number row +//hr List of height of each row +//wc List of width of each column +//cells List of cells of each rows, cells[i][j] is a cell in the table +function _tableColumnWidth(&$table,$firstpass=false){ + $cs = &$table['cells']; + + $nc = $table['nc']; + $nr = $table['nr']; + $listspan = array(); + + if ($table['borders_separate']) { + $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] + $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H']; + } + else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; } + + if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); } + else { $fh = null; } + + // ADDED table['l'][colno] + // = total length of text approx (using $c['s']) in that column - used to approximately distribute col widths in _tableWidth + // + for($j = 0 ; $j < $nc ; $j++ ) { //columns + $wc = &$table['wc'][$j]; + for($i = 0 ; $i < $nr ; $i++ ) { //rows + if (isset($cs[$i][$j]) && $cs[$i][$j]) { + if ($this->cacheTables) { + $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $c = &$cs[$i][$j]; + + if ($this->simpleTables){ + if ($table['borders_separate']) { // NB twice border width + $extrcw = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H']; + } + else { + $extrcw = $table['simple']['border_details']['L']['w']/2 + $table['simple']['border_details']['R']['w']/2 + $c['padding']['L'] + $c['padding']['R']; + } + } + else { + if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']); + } + else { + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($table['borders_separate']) { // NB twice border width + $extrcw = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H']; + } + else { + $extrcw = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R']; + } + } + + //$mw = $this->GetStringWidth('W') + $extrcw ; + $mw = 0; + // mPDF 5.6.13 Decimal point alignment + if(substr($c['a'],0,1) == 'D') { + $mw = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'] + $extrcw ; + } + + $c['absmiw'] = $mw; + + if (isset($c['R']) && $c['R']) { + $c['maw'] = $c['miw'] = $this->FontSize + $extrcw ; + if (isset($c['w'])) { // If cell width is specified + if ($c['miw'] <$c['w']) { $c['miw'] = $c['w']; } + } + if (!isset($c['colspan'])) { + if ($wc['miw'] < $c['miw']) { $wc['miw'] = $c['miw']; } + if ($wc['maw'] < $c['maw']) { $wc['maw'] = $c['maw']; } + + if ($firstpass) { + if (isset($table['l'][$j]) ) { + $table['l'][$j] += $c['miw'] ; + } + else { + $table['l'][$j] = $c['miw'] ; + } + } + } + if ($c['miw'] > $wc['miw']) { $wc['miw'] = $c['miw']; } + if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; } + continue; + } + + if ($firstpass) { + if (isset($c['s'])) { $c['s'] += $extrcw; } + if (isset($c['maxs'])) { $c['maxs'] += $extrcw; } + if (isset($c['nestedmiw'])) { $c['nestedmiw'] += $extrcw; } + if (isset($c['nestedmaw'])) { $c['nestedmaw'] += $extrcw; } + } + + + // If minimum width has already been set by a nested table or inline object (image/form), use it + if (isset($c['nestedmiw']) && $this->table[1][1]['overflow']!='visible') { $miw = $c['nestedmiw']; } + else { $miw = $mw; } + + if (isset($c['maxs']) && $c['maxs'] != '') { $c['s'] = $c['maxs']; } + + // If maximum width has already been set by a nested table, use it + if (isset($c['nestedmaw'])) { $c['maw'] = $c['nestedmaw']; } + else $c['maw'] = $c['s']; + + if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) { + if (($c['maw'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { + $c['maw'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw; + } + } + + if (isset($c['nowrap']) && $c['nowrap']) { $miw = $c['maw']; } + + if (isset($c['wpercent']) && $firstpass) { + if (isset($c['colspan'])) { // Not perfect - but % set on colspan is shared equally on cols. + for($k=0;$k<$c['colspan'];$k++) { + $table['wc'][($j+$k)]['wpercent'] = $c['wpercent'] / $c['colspan']; + } + } + else { + if (isset($table['w']) && $table['w']) { $c['w'] = $c['wpercent']/100 * ($table['w'] - $tblbw ); } + $wc['wpercent'] = $c['wpercent']; + } + } + + if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) { + if (($c['w'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { + $c['w'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw; + } + } + + + if (isset($c['w'])) { // If cell width is specified + if ($miw<$c['w']) { $c['miw'] = $c['w']; } // Cell min width = that specified + if ($miw>$c['w']) { $c['miw'] = $c['w'] = $miw; } // If width specified is less than minimum allowed (W) increase it + if (!isset($wc['w'])) { $wc['w'] = 1; } // If the Col width is not specified = set it to 1 + + } + else { $c['miw'] = $miw; } // If cell width not specified -> set Cell min width it to minimum allowed (W) + + if ($c['maw'] < $c['miw']) { $c['maw'] = $c['miw']; } // If Cell max width < Minwidth - increase it to = + if (!isset($c['colspan'])) { + if ($wc['miw'] < $c['miw']) { $wc['miw'] = $c['miw']; } // Update Col Minimum and maximum widths + if ($wc['maw'] < $c['maw']) { $wc['maw'] = $c['maw']; } + if ((isset($wc['absmiw']) && $wc['absmiw'] < $c['absmiw']) || !isset($wc['absmiw'])) { $wc['absmiw'] = $c['absmiw']; } // Update Col Minimum and maximum widths + + if (isset($table['l'][$j]) ) { + $table['l'][$j] += $c['s']; + } + else { + $table['l'][$j] = $c['s']; + } + + } + else { + $listspan[] = array($i,$j); + } + + //Check if minimum width of the whole column is big enough for largest word to fit + if (isset($c['textbuffer']) && (!isset($table['overflow']) || $table['overflow']!='wrap')) { // mPDF 5.5.11 + $minwidth = $this->TableCheckMinWidth($wc['miw']- $extrcw ,0,$c['textbuffer']); + } + else { $minwidth = 0; } + if ($minwidth < 0) { + //increase minimum width + if (!isset($c['colspan'])) { + $wc['miw'] = max($wc['miw'],((-$minwidth) + $extrcw) ); + } + else { + $c['miw'] = max($c['miw'],((-$minwidth) + $extrcw) ); + } + } + if (!isset($c['colspan'])) { + if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; } //update maximum width, if needed + } + if ($this->cacheTables) { + $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]); + } + } + unset($c); + }//rows + }//columns + + + // COLUMN SPANS + $wc = &$table['wc']; + foreach ($listspan as $span) { + list($i,$j) = $span; + if ($this->cacheTables) { + $c = $this->_uncacheCell($cs[$i][$j], '', $fh); + } + else + $c = &$cs[$i][$j]; + $lc = $j + $c['colspan']; + if ($lc > $nc) { $lc = $nc; } + $wis = $wisa = 0; + $was = $wasa = 0; + $list = array(); + for($k=$j;$k<$lc;$k++) { + if (isset($table['l'][$k]) ) { + if ($c['R']) { $table['l'][$k] += $c['miw']/$c['colspan'] ; } + else { $table['l'][$k] += $c['s']/$c['colspan']; } + } + else { + if ($c['R']) { $table['l'][$k] = $c['miw']/$c['colspan'] ; } + else { $table['l'][$k] = $c['s']/$c['colspan']; } + } + $wis += $wc[$k]['miw']; + $was += $wc[$k]['maw']; + if (!isset($c['w'])) { + $list[] = $k; + $wisa += $wc[$k]['miw']; + $wasa += $wc[$k]['maw']; + } + } + if ($c['miw'] > $wis) { + if (!$wis) { + for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] = $c['miw']/$c['colspan']; } + } + else if (!count($list)) { + $wi = $c['miw'] - $wis; + for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] += ($wc[$k]['miw']/$wis)*$wi; } + } + else { + $wi = $c['miw'] - $wis; + foreach ($list as $k) { $wc[$k]['miw'] += ($wc[$k]['miw']/$wisa)*$wi; } + } + } + if ($c['maw'] > $was) { + if (!$wis) { + for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] = $c['maw']/$c['colspan']; } + } + else if (!count($list)) { + $wi = $c['maw'] - $was; + for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] += ($wc[$k]['maw']/$was)*$wi; } + } + else { + $wi = $c['maw'] - $was; + foreach ($list as $k) { $wc[$k]['maw'] += ($wc[$k]['maw']/$wasa)*$wi; } + } + } + unset($c); + } + + if ($this->cacheTables) { fclose($fh); } + + $checkminwidth = 0; + $checkmaxwidth = 0; + $totallength = 0; + + for( $i = 0 ; $i < $nc ; $i++ ) { + $checkminwidth += $table['wc'][$i]['miw']; + $checkmaxwidth += $table['wc'][$i]['maw']; + $totallength += $table['l'][$i]; + } + + if (!isset($table['w']) && $firstpass) { + $sumpc = 0; + $notset = 0; + for( $i = 0 ; $i < $nc ; $i++ ) { + if (isset($table['wc'][$i]['wpercent']) && $table['wc'][$i]['wpercent']) { + $sumpc += $table['wc'][$i]['wpercent']; + } + else { $notset++; } + } + + // If sum of widths as % >= 100% and not all columns are set + // Set a nominal width of 1% for unset columns + if ($sumpc >= 100 && $notset) { + for( $i = 0 ; $i < $nc ; $i++ ) { + if ((!isset($table['wc'][$i]['wpercent']) || !$table['wc'][$i]['wpercent']) && + (!isset($table['wc'][$i]['w']) || !$table['wc'][$i]['w'])) { + $table['wc'][$i]['wpercent'] = 1; + } + } + } + + + if ($sumpc) { // if any percents are set + $sumnonpc = (100 - $sumpc); + $sumpc = max($sumpc,100); + $miwleft = 0; + $miwleftcount = 0; + $miwsurplusnonpc = 0; + $maxcalcmiw = 0; + $mawleft = 0; + $mawleftcount = 0; + $mawsurplusnonpc = 0; + $maxcalcmaw = 0; + for( $i = 0 ; $i < $nc ; $i++ ) { + if (isset($table['wc'][$i]['wpercent'])) { + $maxcalcmiw = max($maxcalcmiw, ($table['wc'][$i]['miw'] * $sumpc /$table['wc'][$i]['wpercent']) ); + $maxcalcmaw = max($maxcalcmaw, ($table['wc'][$i]['maw'] * $sumpc /$table['wc'][$i]['wpercent']) ); + } + else { + $miwleft += $table['wc'][$i]['miw']; + $mawleft += $table['wc'][$i]['maw']; + if (!isset($table['wc'][$i]['w'])) { $miwleftcount++; $mawleftcount++; } + } + } + if ($miwleft && $sumnonpc > 0) { $miwnon = $miwleft * 100 / $sumnonpc; } + if ($mawleft && $sumnonpc > 0) { $mawnon = $mawleft * 100 / $sumnonpc; } + if (($miwnon > $checkminwidth || $maxcalcmiw > $checkminwidth) && $this->keep_table_proportions) { + if ($miwnon > $maxcalcmiw) { + $miwsurplusnonpc = round((($miwnon * $sumnonpc / 100) - $miwleft),3); + $checkminwidth = $miwnon; + } + else { $checkminwidth = $maxcalcmiw; } + for( $i = 0 ; $i < $nc ; $i++ ) { + if (isset($table['wc'][$i]['wpercent'])) { + $newmiw = $checkminwidth * $table['wc'][$i]['wpercent']/100; + if ($table['wc'][$i]['miw'] < $newmiw) { + $table['wc'][$i]['miw'] = $newmiw; + } + $table['wc'][$i]['w'] = 1; + } + else if ($miwsurplusnonpc && !$table['wc'][$i]['w']) { + $table['wc'][$i]['miw'] += $miwsurplusnonpc / $miwleftcount; + } + } + } + if (($mawnon > $checkmaxwidth || $maxcalcmaw > $checkmaxwidth )) { + if ($mawnon > $maxcalcmaw) { + $mawsurplusnonpc = round((($mawnon * $sumnonpc / 100) - $mawleft),3); + $checkmaxwidth = $mawnon; + } + else { $checkmaxwidth = $maxcalcmaw; } + for( $i = 0 ; $i < $nc ; $i++ ) { + if (isset($table['wc'][$i]['wpercent'])) { + $newmaw = $checkmaxwidth * $table['wc'][$i]['wpercent']/100; + if ($table['wc'][$i]['maw'] < $newmaw) { + $table['wc'][$i]['maw'] = $newmaw; + } + $table['wc'][$i]['w'] = 1; + } + else if ($mawsurplusnonpc && !$table['wc'][$i]['w']) { + $table['wc'][$i]['maw'] += $mawsurplusnonpc / $mawleftcount; + } + if ($table['wc'][$i]['maw'] < $table['wc'][$i]['miw']) { $table['wc'][$i]['maw'] = $table['wc'][$i]['miw']; } + } + } + if ($checkminwidth > $checkmaxwidth) { $checkmaxwidth = $checkminwidth; } + } + } + + if (isset($table['wpercent']) && $table['wpercent']) { + $checkminwidth *= (100 / $table['wpercent']); + $checkmaxwidth *= (100 / $table['wpercent']); + } + + + $checkminwidth += $tblbw ; + $checkmaxwidth += $tblbw ; + + // Table['miw'] set by percent in first pass may be larger than sum of column miw + if ((isset($table['miw']) && $checkminwidth > $table['miw']) || !isset($table['miw'])) { $table['miw'] = $checkminwidth; } + if ((isset($table['maw']) && $checkmaxwidth > $table['maw']) || !isset($table['maw'])) { $table['maw'] = $checkmaxwidth; } + $table['tl'] = $totallength ; + + + if (!$this->tableCJK) { + if ($this->table_rotate) { + $mxw = $this->tbrot_maxw; + } + else { + $mxw = $this->blk[$this->blklvl]['inner_width']; + } + if(!isset($table['overflow'])) { $table['overflow'] = null; } + if ($table['overflow']=='visible') { + return array(0,0); + } + else if ($table['overflow']=='hidden' && !$this->table_rotate && !$this->ColActive && $checkminwidth > $mxw) { + $table['w'] = $table['miw']; + return array(0,0); + } + else if ($table['overflow']=='wrap') { return array(0,0); } + + if (isset($table['w']) && $table['w'] ) { + if ($table['w'] >= $checkminwidth && $table['w'] <= $mxw) { $table['maw'] = $mxw = $table['w']; } + else if ($table['w'] >= $checkminwidth && $table['w'] > $mxw && $this->keep_table_proportions) { $checkminwidth = $table['w']; } + else { + unset($table['w']); + } + } + $ratio = $checkminwidth/$mxw; + if ($checkminwidth > $mxw) { return array(($ratio +0.001),$checkminwidth); } // 0.001 to allow for rounded numbers when resizing + } + unset($cs); + return array(0,0); +} + + + +function _tableWidth(&$table){ + $widthcols = &$table['wc']; + $numcols = $table['nc']; + $tablewidth = 0; + if ($table['borders_separate']) { + $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] + $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H']; + } + else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; } + + if ($table['level']>1 && isset($table['w'])) { + if (isset($table['wpercent']) && $table['wpercent']) { + $table['w'] = $temppgwidth = (($table['w']-$tblbw) * $table['wpercent'] / 100) + $tblbw ; + } + else { + $temppgwidth = $table['w'] ; + } + } + else if ($this->table_rotate) { + $temppgwidth = $this->tbrot_maxw; + // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin) + // then allow for this + $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']; + if ($enddiv/$temppgwidth <0.05) { $temppgwidth -= $enddiv; } + } + else { + if (isset($table['w']) && $table['w']< $this->blk[$this->blklvl]['inner_width']) { + $notfullwidth = 1; + $temppgwidth = $table['w'] ; + } + else if ($table['overflow']=='visible' && $table['level'] ==1) { + $temppgwidth = null; + } + else if ($table['overflow']=='hidden' && !$this->ColActive && isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width'] && $table['w']==$table['miw']) { + //$temppgwidth = $this->blk[$this->blklvl]['inner_width']; + $temppgwidth = $table['w'] ; + } + else { $temppgwidth = $this->blk[$this->blklvl]['inner_width']; } + } + + + $totaltextlength = 0; // Added - to sum $table['l'][colno] + $totalatextlength = 0; // Added - to sum $table['l'][colno] for those columns where width not set + $percentages_set = 0; + for ( $i = 0 ; $i < $numcols ; $i++ ) { + if (isset($widthcols[$i]['wpercent'])) { $tablewidth += $widthcols[$i]['maw']; $percentages_set = 1; } + else if (isset($widthcols[$i]['w'])) { $tablewidth += $widthcols[$i]['miw']; } + else { $tablewidth += $widthcols[$i]['maw']; } + $totaltextlength += $table['l'][$i]; + } + if (!$totaltextlength) { $totaltextlength =1; } + $tablewidth += $tblbw; // Outer half of table borders + + if ($tablewidth > $temppgwidth) { + $table['w'] = $temppgwidth; + } + // if any widths set as percentages and max width fits < page width + else if ($tablewidth < $temppgwidth && !isset($table['w']) && $percentages_set) { + $table['w'] = $table['maw']; + } + // if table width is set and is > allowed width + if (isset($table['w']) && $table['w'] > $temppgwidth) { $table['w'] = $temppgwidth; } + // IF the table width is now set - Need to distribute columns widths + if (isset($table['w'])) { + $wis = $wisa = 0; + $list = array(); + $notsetlist = array(); + for( $i = 0 ; $i < $numcols ; $i++ ) { + $wis += $widthcols[$i]['miw']; + if (!isset($widthcols[$i]['w']) || ($widthcols[$i]['w'] && $table['w'] > $temppgwidth && !$this->keep_table_proportions && !$notfullwidth )){ + $list[] = $i; + $wisa += $widthcols[$i]['miw']; + $totalatextlength += $table['l'][$i]; + } + } + if (!$totalatextlength) { $totalatextlength =1; } + + // Allocate spare (more than col's minimum width) across the cols according to their approx total text length + // Do it by setting minimum width here + if ($table['w'] > $wis + $tblbw) { + // First set any cell widths set as percentages + if ($table['w'] < $temppgwidth || $this->keep_table_proportions) { + for($k=0;$k<$numcols;$k++) { + if (isset($widthcols[$k]['wpercent'])) { + $curr = $widthcols[$k]['miw']; + $widthcols[$k]['miw'] = ($table['w']-$tblbw) * $widthcols[$k]['wpercent']/100; + $wis += $widthcols[$k]['miw'] - $curr; + $wisa += $widthcols[$k]['miw'] - $curr; + } + } + } + // Now allocate surplus up to maximum width of each column + $surplus = 0; $ttl = 0; // number of surplus columns + if (!count($list)) { + $wi = ($table['w']-($wis + $tblbw)); // i.e. extra space to distribute + for($k=0;$k<$numcols;$k++) { + $spareratio = ($table['l'][$k] / $totaltextlength); // gives ratio to divide up free space + // Don't allocate more than Maximum required width - save rest in surplus + if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) { + $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']); + $widthcols[$k]['miw'] = $widthcols[$k]['maw']; + } + else { + $notsetlist[] = $k; + $ttl += $table['l'][$k]; + $widthcols[$k]['miw'] += ($wi * $spareratio); + } + + } + } + else { + $wi = ($table['w'] - ($wis + $tblbw)); // i.e. extra space to distribute + foreach ($list as $k) { + $spareratio = ($table['l'][$k] / $totalatextlength); // gives ratio to divide up free space + // Don't allocate more than Maximum required width - save rest in surplus + if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) { + $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']); + $widthcols[$k]['miw'] = $widthcols[$k]['maw']; + } + else { + $notsetlist[] = $k; + $ttl += $table['l'][$k]; + $widthcols[$k]['miw'] += ($wi * $spareratio); + } + } + } + // If surplus still left over apportion it across columns + if ($surplus) { + // if some are set only add to remaining - otherwise add to all of them + if (count($notsetlist) && count($notsetlist) < $numcols) { + foreach ($notsetlist AS $i) { + if ($ttl) $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl ; + } + } + // If some widths are defined, and others have been added up to their maxmum + else if (count($list) && count($list) < $numcols) { + foreach ($list AS $i) { + $widthcols[$i]['miw'] += $surplus / count($list) ; + } + } + else if ($numcols) { // If all columns + $ttl = array_sum($table['l']); + for ($i=0;$i<$numcols;$i++) { + $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl; + } + } + } + + } + + // This sets the columns all to minimum width (which has been increased above if appropriate) + for ($i=0;$i<$numcols;$i++) { + $widthcols[$i] = $widthcols[$i]['miw']; + } + + // TABLE NOT WIDE ENOUGH EVEN FOR MINIMUM CONTENT WIDTH + // If sum of column widths set are too wide for table + $checktablewidth = 0; + for ( $i = 0 ; $i < $numcols ; $i++ ) { + $checktablewidth += $widthcols[$i]; + } + if ($checktablewidth > ($temppgwidth + 0.001 - $tblbw)) { + $usedup = 0; $numleft = 0; + for ($i=0;$i<$numcols;$i++) { + if ((isset($widthcols[$i]) && $widthcols[$i] > (($temppgwidth - $tblbw) / $numcols)) && (!isset($widthcols[$i]['w']))) { + $numleft++; + unset($widthcols[$i]); + } + else { $usedup += $widthcols[$i]; } + } + for ($i=0;$i<$numcols;$i++) { + if (!isset($widthcols[$i]) || !$widthcols[$i]) { + $widthcols[$i] = ((($temppgwidth - $tblbw) - $usedup)/ ($numleft)); + } + } + } + + } + else { //table has no width defined + $table['w'] = $tablewidth; + for ( $i = 0 ; $i < $numcols ; $i++) { + if (isset($widthcols[$i]['wpercent']) && $this->keep_table_proportions) { $colwidth = $widthcols[$i]['maw']; } + else if (isset($widthcols[$i]['w'])) { $colwidth = $widthcols[$i]['miw']; } + else { $colwidth = $widthcols[$i]['maw']; } + unset($widthcols[$i]); + $widthcols[$i] = $colwidth; + } + } + + if ($table['overflow']=='visible' && $table['level'] ==1) { + if ($tablewidth > $this->blk[$this->blklvl]['inner_width']) { + if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); } + else { $fh = null; } + for ($j = 0 ; $j < $numcols; $j++) { //columns + for ($i = 0 ; $i < $table['nr']; $i++) { //rows + if (isset($table['cells'][$i][$j]) && $table['cells'][$i][$j]) { + if ($this->cacheTables) { + $cc = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + $colspan = $cc['colspan']; + } + else + $colspan = $table['cells'][$i][$j]['colspan']; + if ($colspan > 1) { + $w = 0; + for ($c = $j; $c < ($j + $colspan); $c++) { + $w += $widthcols[$c]; + } + if ($w > $this->blk[$this->blklvl]['inner_width']) { + $diff = $w - ($this->blk[$this->blklvl]['inner_width'] - $tblbw); + for ($c = $j; $c < ($j + $colspan); $c++) { + $widthcols[$c] -= $diff * ($widthcols[$c]/$w); + } + $table['w'] -= $diff; + $table['csp'][$j] = $w - $diff; + } + } + } + + } + } + if ($this->cacheTables) { fclose($fh); } + } + $pgNo = 0; + $currWc = 0; + for ($i = 0 ; $i < $numcols; $i++) { //columns + if (isset($table['csp'][$i])) { + $w = $table['csp'][$i]; + unset($table['csp'][$i]); + } + else { $w = $widthcols[$i]; } + if (($currWc + $w + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { + $pgNo++; + $currWc = $widthcols[$i] ; + } + else { $currWc += $widthcols[$i] ; } + $table['colPg'][$i] = $pgNo; + } + } +} + + + +function _tableHeight(&$table){ + $level = $table['level']; + $levelid = $table['levelid']; + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; + $listspan = array(); + $checkmaxheight = 0; + $headerrowheight = 0; + $checkmaxheightplus = 0; + $headerrowheightplus = 0; + $firstrowheight = 0; + + $footerrowheight = 0; + $footerrowheightplus = 0; + if ($this->table_rotate) { + $temppgheight = $this->tbrot_maxh; + $remainingpage = $this->tbrot_maxh; + } + else { + $temppgheight = ($this->h - $this->bMargin - $this->tMargin) - $this->kwt_height; + $remainingpage = ($this->h - $this->bMargin - $this->y) - $this->kwt_height; + + // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin) + // then allow for this + $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $table['margin']['B']; + if ($remainingpage > $enddiv && $enddiv/$remainingpage <0.05) { $remainingpage -= $enddiv; } + else if ($remainingpage == 0) { $remainingpage = 0.001; } + if ($temppgheight > $enddiv && $enddiv/$temppgheight <0.05) { $temppgheight -= $enddiv; } + else if ($temppgheight == 0) { $temppgheight = 0.001; } + } + if ($remainingpage < 0) { $remainingpage = 0.001; } // mPDF 5.6.64 + if ($temppgheight < 0) { $temppgheight = 0.001; } // mPDF 5.6.64 + + if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); } + else { $fh = null; } + + for( $i = 0 ; $i < $numrows ; $i++ ) { //rows + $heightrow = &$table['hr'][$i]; + for( $j = 0 ; $j < $numcols ; $j++ ) { //columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + if ($this->cacheTables) { + $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $c = &$cells[$i][$j]; + + if ($this->simpleTables){ + if ($table['borders_separate']) { // NB twice border width + $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w']) + ($c['padding']['L']+$c['padding']['R'])+$table['border_spacing_H']; + $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w']) + ($c['padding']['T']+$c['padding']['B'])+$table['border_spacing_V']; + } + else { + $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w'])/2 + ($c['padding']['L']+$c['padding']['R']); + $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w'])/2 + ($c['padding']['T']+$c['padding']['B']); + } + } + else { + if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']); + } + else { + $bt = $c['border_details']['T']['w']; + $bb = $c['border_details']['B']['w']; + $br = $c['border_details']['R']['w']; + $bl = $c['border_details']['L']['w']; + } + if ($table['borders_separate']) { // NB twice border width + $extraWLR = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H']; + $extrh = $bt + $bb + $c['padding']['T'] + $c['padding']['B'] + $table['border_spacing_V']; + } + else { + $extraWLR = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R']; + $extrh = $bt/2 + $bb/2 + $c['padding']['T']+$c['padding']['B']; + } + } + + if ($table['overflow']=='visible' && $level==1) + list($x,$cw) = $this->_splitTableGetWidth($table, $i,$j, $fh); + else + list($x,$cw) = $this->_tableGetWidth($table, $i,$j, $fh); + + // Get CELL HEIGHT + // ++ extra parameter forces wrap to break word + if ($c['R'] && isset($c['textbuffer'])) { // mPDF 5.4.01 + $str = ''; + foreach($c['textbuffer'] AS $t) { $str .= $t[0].' '; } + $str = trim($str); + $s_fs = $this->FontSizePt; + $s_f = $this->FontFamily; + $s_st = $this->FontStyle; + $this->SetFont($c['textbuffer'][0][4],$c['textbuffer'][0][2],$c['textbuffer'][0][11] / $this->shrin_k,true,true); + $tempch = $this->GetStringWidth($str); + if ($c['R'] >= 45 && $c['R'] < 90) { + $tempch = ((sin(deg2rad($c['R']))) * $tempch ) + ((sin(deg2rad($c['R']))) * (($c['textbuffer'][0][11]/_MPDFK) / $this->shrin_k)); + } + $this->SetFont($s_f,$s_st,$s_fs,true,true); + $ch = ($tempch ) + $extrh ; + } + else { + if (isset($c['textbuffer'])) { + $tempch = $this->TableWordWrap(($cw-$extraWLR),1,$c['textbuffer'], $c['dfs']); + } + else { $tempch = 0; } + + // Added cellpadding top and bottom. (Lineheight already adjusted to table_lineheight) + $ch = $tempch + $extrh ; + } + //If height is defined and it is bigger than calculated $ch then update values + if (isset($c['h']) && $c['h'] > $ch) { + $c['mih'] = $ch; //in order to keep valign working + $ch = $c['h']; + } + else $c['mih'] = $ch; + if ($this->cacheTables) { + $this->_cacheUpdateMtx($c, $fh, $table['cells'][$i][$j], 'mih'); + } + if (isset($c['rowspan'])) $listspan[] = array($i,$j); + elseif ($heightrow < $ch) $heightrow = $ch; + + // this is the extra used in _tableWrite to determine whether to trigger a page change + if ($table['borders_separate']) { + if ($i == ($numrows-1) || (isset($c['rowspan']) && ($i+$c['rowspan']) == ($numrows)) ) { + $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; + } + else { + $extra = $table['border_spacing_V']/2; + } + } + else { + if (!$this->simpleTables){ + $extra = $bb/2; + } + else if ($this->simpleTables){ + $extra = $table['simple']['border_details']['B']['w'] /2; + } + } + if (isset($table['is_thead'][$i]) && $table['is_thead'][$i]) { + if ($j==0) { + $headerrowheight += $ch; + $headerrowheightplus += $ch+$extra; + } + } + else if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) { + if ($j==0) { + $footerrowheight += $ch; + $footerrowheightplus += $ch+$extra; + } + } + else { + $checkmaxheight = max($checkmaxheight,$ch); + $checkmaxheightplus = max($checkmaxheightplus,$ch+$extra); + } + if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($ch,$firstrowheight); } + unset($c); + } + }//end of columns + }//end of rows + + $heightrow = &$table['hr']; + foreach ($listspan as $span) { + list($i,$j) = $span; + if ($this->cacheTables) { + $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $c = &$cells[$i][$j]; + $lr = $i + $c['rowspan']; + if ($lr > $numrows) $lr = $numrows; + $hs = $hsa = 0; + $list = array(); + for($k=$i;$k<$lr;$k++) { + $hs += $heightrow[$k]; + if (!isset($c['h'])) { + $list[] = $k; + $hsa += $heightrow[$k]; + } + } + + if ($table['borders_separate']) { + if ($i == ($numrows-1) || ($i+$c['rowspan']) == ($numrows) ) { + $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; + } + else { + $extra = $table['border_spacing_V']/2; + } + } + else { + if (!$this->simpleTables){ + if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']); + } + else { + $bb = $c['border_details']['B']['w']; + } + $extra = $bb/2; + } + else if ($this->simpleTables){ + $extra = $table['simple']['border_details']['B']['w'] /2; + } + } + if (!empty($table['is_thead'][$i])) { + $headerrowheight = max($headerrowheight,$hs); + $headerrowheightplus = max($headerrowheightplus,$hs+$extra); + } + else if (!empty($table['is_tfoot'][$i])) { + $footerrowheight = max($footerrowheight,$hs); + $footerrowheightplus = max($footerrowheightplus,$hs+$extra); + } + else { + $checkmaxheight = max($checkmaxheight,$hs); + $checkmaxheightplus = max($checkmaxheightplus,$hs+$extra); + } + if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($hs,$firstrowheight); } + + if ($c['mih'] > $hs) { + if (!$hs) { + for($k=$i;$k<$lr;$k++) $heightrow[$k] = $c['mih']/$c['rowspan']; + } + elseif (!count($list)) { + $hi = $c['mih'] - $hs; + for($k=$i;$k<$lr;$k++) $heightrow[$k] += ($heightrow[$k]/$hs)*$hi; + } + else { + $hi = $c['mih'] - $hsa; + foreach ($list as $k) $heightrow[$k] += ($heightrow[$k]/$hsa)*$hi; + } + } + unset($c); + + // If rowspans overlap so that one or more rows do not have a height set... + // i.e. for one or more rows, the only cells (explicit) in that row have rowspan>1 + // so heightrow is still == 0 + if ($heightrow[$i]==0) { + // Get row extent to analyse above and below + $top = $i; + foreach ($listspan as $checkspan) { + list($cki,$ckj) = $checkspan; + if ($this->cacheTables) { + $c = $this->_uncacheCell($table['cells'][$cki][$ckj], '', $fh); + } + else + $c = &$cells[$cki][$ckj]; + if (isset($c['rowspan']) && $c['rowspan']>1) { + if (($cki + $c['rowspan']-1) >= $i) { $top = min($top, $cki); } + } + } + $bottom = $i + $c['rowspan']-1; + // Check for overconstrained conditions + for ($k=$top; $k<=$bottom; $k++) { + // if ['hr'] for any of the others is also 0, then abort (too complicated) + if ($k != $i && $heightrow[$k]==0) { break(1); } + // check again that top and bottom are not crossed by rowspans - or abort (too complicated) + if ($k==$top) { + // ???? take account of colspan as well??? + for( $m = 0 ; $m < $numcols ; $m++ ) { //columns + if (!isset($cells[$k][$m]) || $cells[$k][$m]==0) { + break(2); + } + } + } + else if ($k==$bottom) { + // ???? take account of colspan as well??? + for( $m = 0 ; $m < $numcols ; $m++ ) { //columns + if ($this->cacheTables) { + $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh); + } + else + $c = &$cells[$k][$m]; + if (isset($c['rowspan']) && $c['rowspan']>1) { + break(2); + } + } + } + } + // By columns add up col height using ['h'] if set or ['mih'] if not + // Intentionally do not substract border-spacing + $colH = array(); + $extH = 0; + $newhr = array(); + for( $m = 0 ; $m < $numcols ; $m++ ) { //columns + for ($k=$top; $k<=$bottom; $k++) { + if (isset($cells[$k][$m]) && $cells[$k][$m]!=0) { + if ($this->cacheTables) { + $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh); + } + else + $c = &$cells[$k][$m]; + if (isset($c['h']) && $c['h']) { + $useh = $c['h']; + } + // ???? take account of colspan as well??? + else { + $useh = $c['mih']; + } + $colH[$m] += $useh; + if (!isset($c['rowspan']) || $c['rowspan']<2) { $newhr[$k] = max($newhr[$k], $useh); } + } + } + $extH = max($tabH, $colH[$m]); + } + $newhr[$i] = $extH - array_sum($newhr); + for ($k=$top; $k<=$bottom; $k++) { $heightrow[$k] = $newhr[$k]; } + } + + + unset($c); + } + + $table['h'] = array_sum($heightrow); + unset($heightrow); + + if ($this->cacheTables) { fclose($fh); } + + if ($table['borders_separate']) { + $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['border_details']['T']['w'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] + $table['padding']['T'] + $table['padding']['B']; + } + else { + $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['max_cell_border_width']['T']/2 + $table['max_cell_border_width']['B']/2; + } + + $maxrowheight = $checkmaxheightplus + $headerrowheightplus + $footerrowheightplus; + $maxfirstrowheight = $firstrowheight + $headerrowheightplus + $footerrowheightplus; // includes thead, 1st row and tfoot + return array($table['h'],$maxrowheight,$temppgheight,$remainingpage,$maxfirstrowheight); +} + +function _tableGetWidth(&$table, $i,$j, $fh){ + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $cell = &$table['cells'][$i][$j]; + if ($cell) { + if (isset($cell['x0'])) { return array($cell['x0'], $cell['w0']); } + $x = 0; + $widthcols = &$table['wc']; + for( $k = 0 ; $k < $j ; $k++ ) $x += $widthcols[$k]; + $w = $widthcols[$j]; + if (isset($cell['colspan'])) { + for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- ) $w += $widthcols[$k]; + } + $cell['x0'] = $x; + $cell['w0'] = $w; + if ($this->cacheTables) { + $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0'); + } + return array($x, $w); + } + return array(0,0); +} + +function _splitTableGetWidth(&$table, $i,$j, $fh){ + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $cell = &$table['cells'][$i][$j]; + if ($cell) { + if (isset($cell['x0'])) return array($cell['x0'], $cell['w0']); + $x = 0; + $widthcols = &$table['wc']; + $pg = $table['colPg'][$j]; + for( $k = 0 ; $k < $j ; $k++ ) { + if ($table['colPg'][$k]==$pg) $x += $widthcols[$k]; + } + $w = $widthcols[$j]; + if (isset($cell['colspan'])) { + for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- ) if ($table['colPg'][$k]==$pg) $w += $widthcols[$k]; + } + $cell['x0'] = $x; + $cell['w0'] = $w; + if ($this->cacheTables) { + $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0'); + } + return array($x, $w); + } + return array(0,0); +} + + +function _tableGetHeight(&$table, $i,$j, $fh){ + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $cell = &$table['cells'][$i][$j]; + if ($cell){ + if (isset($cell['y0'])) return array($cell['y0'], $cell['h0']); + $y = 0; + $heightrow = &$table['hr']; + for ($k=0;$k<$i;$k++) $y += $heightrow[$k]; + $h = $heightrow[$i]; + if (isset($cell['rowspan'])){ + for ($k=$i+$cell['rowspan']-1;$k>$i;$k--) + $h += $heightrow[$k]; + } + $cell['y0'] = $y; + $cell['h0'] = $h; + if ($this->cacheTables) { + $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'y0'); + } + return array($y, $h); + } + return array(0,0); +} + +function _tableGetMaxRowHeight($table, $row, $fh) { + if ($row==$table['nc']-1) { return $table['hr'][$row]; } + $maxrowheight = $table['hr'][$row]; + for ($i=$row+1;$i<$table['nr'];$i++) { + $cellsset = 0; + for ($j=0;$j<$table['nc'];$j++) { + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + if ($cell) { + if (isset($cell['colspan'])) { $cellsset += $cell['colspan']; } + else $cellsset += 1; + } + } + else { + if ($table['cells'][$i][$j]) { + if (isset($table['cells'][$i][$j]['colspan'])) { $cellsset += $table['cells'][$i][$j]['colspan']; } + else $cellsset += 1; + } + } + } + if ($cellsset == $table['nc']) { return $maxrowheight; } + else { $maxrowheight += $table['hr'][$i]; } + } + return $maxrowheight; +} + + +// CHANGED TO ALLOW TABLE BORDER TO BE SPECIFIED CORRECTLY - added border_details +function _tableRect($x, $y, $w, $h, $bord=-1, $details=array(), $buffer=false, $bSeparate=false, $cort='cell', $tablecorner='', $bsv=0, $bsh=0) { + $cellBorderOverlay = array(); + + if ($bord==-1) { $this->Rect($x, $y, $w, $h); } + else if ($this->simpleTables && ($cort=='cell')) { + $this->SetLineWidth($details['L']['w']); + if ($details['L']['c']) { + $this->SetDColor($details['L']['c']); + } + else { $this->SetDColor($this->ConvertColor(0)); } + $this->SetLineJoin(0); + $this->Rect($x, $y, $w, $h); + } + else if ($bord){ + if (!$bSeparate && $buffer) { + $priority = 'LRTB'; + for($p=0;$p<strlen($priority);$p++) { + $side = $priority[$p]; + $details['p'] = $side ; + + $dom = 0; + if (isset($details[$side]['w'])) { $dom += ($details[$side]['w'] * 100000); } + if (isset($details[$side]['style'])) { $dom += (array_search($details[$side]['style'],$this->borderstyles)*100) ; } + if (isset($details[$side]['dom'])) { $dom += ($details[$side]['dom']*10); } + + // Precedence to darker colours at joins + $coldom = 0; + if (isset($details[$side]['c']) && is_array($details[$side]['c'])) { + if ($details[$side]['c']{0}==3) { // RGB + $coldom = 10-(((ord($details[$side]['c']{1})*1.00)+(ord($details[$side]['c']{2})*1.00)+(ord($details[$side]['c']{3})*1.00))/76.5); + } + } // 10 black - 0 white + if ($coldom) { $dom += $coldom; } + // Lastly precedence to RIGHT and BOTTOM cells at joins + if (isset($details['cellposdom'])) { $dom += $details['cellposdom']; } + + $save = false; + if ($side == 'T' && $this->issetBorder($bord, _BORDER_TOP)) { $cbord = _BORDER_TOP; $save = true; } + else if ($side == 'L' && $this->issetBorder($bord, _BORDER_LEFT)) { $cbord = _BORDER_LEFT; $save = true; } + else if ($side == 'R' && $this->issetBorder($bord, _BORDER_RIGHT)) { $cbord = _BORDER_RIGHT; $save = true; } + else if ($side == 'B' && $this->issetBorder($bord, _BORDER_BOTTOM)) { $cbord = _BORDER_BOTTOM; $save = true; } + + if ($save) { + $this->cellBorderBuffer[] = pack("A16nCnda6A10d14", + str_pad(sprintf("%08.7f", $dom),16,"0",STR_PAD_LEFT), + $cbord, + ord($side), + $details[$side]['s'], + $details[$side]['w'], + $details[$side]['c'], + $details[$side]['style'], + $x, $y, $w, $h, + $details['mbw']['BL'], + $details['mbw']['BR'], + $details['mbw']['RT'], + $details['mbw']['RB'], + $details['mbw']['TL'], + $details['mbw']['TR'], + $details['mbw']['LT'], + $details['mbw']['LB'], + $details['cellposdom'], + 0 + ); + if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset' || $details[$side]['style'] == 'double' ) { + $details[$side]['overlay'] = true; + $this->cellBorderBuffer[] = pack("A16nCnda6A10d14", + str_pad(sprintf("%08.7f", ($dom+4)),16,"0",STR_PAD_LEFT), + $cbord, + ord($side), + $details[$side]['s'], + $details[$side]['w'], + $details[$side]['c'], + $details[$side]['style'], + $x, $y, $w, $h, + $details['mbw']['BL'], + $details['mbw']['BR'], + $details['mbw']['RT'], + $details['mbw']['RB'], + $details['mbw']['TL'], + $details['mbw']['TR'], + $details['mbw']['LT'], + $details['mbw']['LB'], + $details['cellposdom'], + 1 + ); + } + } + } + return; + } + + if (isset($details['p']) && strlen($details['p'])>1) { $priority = $details['p']; } + else { $priority='LTRB'; } + $Tw = 0; + $Rw = 0; + $Bw = 0; + $Lw = 0; + if (isset($details['T']['w'])) { $Tw = $details['T']['w']; } + if (isset($details['R']['w'])) { $Rw = $details['R']['w']; } + if (isset($details['B']['w'])) { $Bw = $details['B']['w']; } + if (isset($details['L']['w'])) { $Lw = $details['L']['w']; } + + $x2 = $x + $w; $y2 = $y + $h; + $oldlinewidth = $this->LineWidth; + + for($p=0;$p<strlen($priority);$p++) { + $side = $priority[$p]; + $xadj = 0; + $xadj2 = 0; + $yadj = 0; + $yadj2 = 0; + $print = false; + if ($Tw && $side=='T' && $this->issetBorder($bord, _BORDER_TOP)) { // TOP + $ly1 = $y; + $ly2 = $y; + $lx1 = $x; + $lx2 = $x2; + $this->SetLineWidth($Tw); + if ($cort == 'cell' || strpos($tablecorner,'L')!==false) { + if ($Tw > $Lw) $xadj = ($Tw - $Lw)/2; + if ($Tw < $Lw) $xadj = ($Tw + $Lw)/2; + } + else { $xadj = $Tw/2 - $bsh/2; } + if ($cort == 'cell' || strpos($tablecorner,'R')!==false) { + if ($Tw > $Rw) $xadj2 = ($Tw - $Rw)/2; + if ($Tw < $Rw) $xadj2 = ($Tw + $Rw)/2; + } + else { $xadj2 = $Tw/2 - $bsh/2; } + if (!$bSeparate && $details['mbw']['TL']) { + $xadj = ($Tw - $details['mbw']['TL'])/2 ; + } + if (!$bSeparate && $details['mbw']['TR']) { + $xadj2 = ($Tw - $details['mbw']['TR'])/2; + } + $print = true; + } + if ($Lw && $side=='L' && $this->issetBorder($bord, _BORDER_LEFT)) { // LEFT + $ly1 = $y; + $ly2 = $y2; + $lx1 = $x; + $lx2 = $x; + $this->SetLineWidth($Lw); + if ($cort == 'cell' || strpos($tablecorner,'T')!==false) { + if ($Lw > $Tw) $yadj = ($Lw - $Tw)/2; + if ($Lw < $Tw) $yadj = ($Lw + $Tw)/2; + } + else { $yadj = $Lw/2 - $bsv/2; } + if ($cort == 'cell' || strpos($tablecorner,'B')!==false) { + if ($Lw > $Bw) $yadj2 = ($Lw - $Bw)/2; + if ($Lw < $Bw) $yadj2 = ($Lw + $Bw)/2; + } + else { $yadj2 = $Lw/2 - $bsv/2; } + if (!$bSeparate && $details['mbw']['LT']) { + $yadj = ($Lw - $details['mbw']['LT'])/2; + } + if (!$bSeparate && $details['mbw']['LB']) { + $yadj2 = ($Lw - $details['mbw']['LB'])/2; + } + $print = true; + } + if ($Rw && $side=='R' && $this->issetBorder($bord, _BORDER_RIGHT)) { // RIGHT + $ly1 = $y; + $ly2 = $y2; + $lx1 = $x2; + $lx2 = $x2; + $this->SetLineWidth($Rw); + if ($cort == 'cell' || strpos($tablecorner,'T')!==false) { + if ($Rw < $Tw) $yadj = ($Rw + $Tw)/2; + if ($Rw > $Tw) $yadj = ($Rw - $Tw)/2; + } + else { $yadj = $Rw/2 - $bsv/2; } + + if ($cort == 'cell' || strpos($tablecorner,'B')!==false) { + if ($Rw > $Bw) $yadj2 = ($Rw - $Bw)/2; + if ($Rw < $Bw) $yadj2 = ($Rw + $Bw)/2; + } + else { $yadj2 = $Rw/2 - $bsv/2; } + + if (!$bSeparate && $details['mbw']['RT']) { + $yadj = ($Rw - $details['mbw']['RT'])/2; + } + if (!$bSeparate && $details['mbw']['RB']) { + $yadj2 = ($Rw - $details['mbw']['RB'])/2; + } + $print = true; + } + if ($Bw && $side=='B' && $this->issetBorder($bord, _BORDER_BOTTOM)) { // BOTTOM + $ly1 = $y2; + $ly2 = $y2; + $lx1 = $x; + $lx2 = $x2; + $this->SetLineWidth($Bw); + if ($cort == 'cell' || strpos($tablecorner,'L')!==false) { + if ($Bw > $Lw) $xadj = ($Bw - $Lw)/2; + if ($Bw < $Lw) $xadj = ($Bw + $Lw)/2; + } + else { $xadj = $Bw/2 - $bsh/2; } + if ($cort == 'cell' || strpos($tablecorner,'R')!==false) { + if ($Bw > $Rw) $xadj2 = ($Bw - $Rw)/2; + if ($Bw < $Rw) $xadj2 = ($Bw + $Rw)/2; + } + else { $xadj2 = $Bw/2 - $bsh/2; } + if (!$bSeparate && $details['mbw']['BL']) { + $xadj = ($Bw - $details['mbw']['BL'])/2; + } + if (!$bSeparate && $details['mbw']['BR']) { + $xadj2 = ($Bw - $details['mbw']['BR'])/2; + } + $print = true; + } + + // Now draw line + if ($print) { +/*-- TABLES-ADVANCED-BORDERS --*/ + if ($details[$side]['style'] == 'double') { + if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) { + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } + else { $this->SetDColor($this->ConvertColor(0)); } + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); + } + if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) { + if ($bSeparate && $cort=='table') { + if ($side=='T') { + $xadj -= $this->LineWidth/2; + $xadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_LEFT)) { + $xadj += $this->LineWidth/2; + } + if ($this->issetBorder($bord, _BORDER_RIGHT)) { + $xadj2 += $this->LineWidth; + } + } + if ($side=='L') { + $yadj -= $this->LineWidth/2; + $yadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_TOP)) { + $yadj += $this->LineWidth/2; + } + if ($this->issetBorder($bord, _BORDER_BOTTOM)) { + $yadj2 += $this->LineWidth; + } + } + if ($side=='B') { + $xadj -= $this->LineWidth/2; + $xadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_LEFT)) { + $xadj += $this->LineWidth/2; + } + if ($this->issetBorder($bord, _BORDER_RIGHT)) { + $xadj2 += $this->LineWidth; + } + } + if ($side=='R') { + $yadj -= $this->LineWidth/2; + $yadj2 -= $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_TOP)) { + $yadj += $this->LineWidth/2; + } + if ($this->issetBorder($bord, _BORDER_BOTTOM)) { + $yadj2 += $this->LineWidth; + } + } + } + + $this->SetLineWidth($this->LineWidth/3); + + $tbcol = $this->ConvertColor(255); + for($l=0; $l <= $this->blklvl; $l++) { + if ($this->blk[$l]['bgcolor']) { + $tbcol = ($this->blk[$l]['bgcolorarray']); // mPDF 5.6.53 + } + } + + if ($bSeparate) { + $cellBorderOverlay[] = array( + 'x' => $lx1 + $xadj, + 'y' => $ly1 + $yadj, + 'x2' => $lx2 - $xadj2, + 'y2' => $ly2 - $yadj2, + 'col' => $tbcol, + 'lw' => $this->LineWidth, + ); + } + else { + $this->SetDColor($tbcol); + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); + } + } + } + + + else if (isset($details[$side]['style']) && ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset')) { + if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) { + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } + else { $this->SetDColor($this->ConvertColor(0)); } + if ($details[$side]['style'] == 'outset' || $details[$side]['style'] == 'groove') { + $nc = $this->_darkenColor($details[$side]['c']); + $this->SetDColor($nc); + } + else if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') { + $nc = $this->_lightenColor($details[$side]['c']); + $this->SetDColor($nc); + } + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); + } + if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) { + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } + else { $this->SetDColor($this->ConvertColor(0)); } + $doubleadj = ($this->LineWidth)/3; + $this->SetLineWidth($this->LineWidth/2); + $xadj3 = $yadj3 = $wadj3 = $hadj3 = 0; + + if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') { + $nc = $this->_darkenColor($details[$side]['c']); + + if ($bSeparate && $cort=='table') { + if ($side=='T') { + $yadj3 = $this->LineWidth/2; + $xadj3 = -$this->LineWidth/2; + $wadj3 = $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_LEFT)) { + $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; + } + if ($this->issetBorder($bord, _BORDER_RIGHT)) { + $wadj3 -= $this->LineWidth*2; + } + } + if ($side=='L') { + $xadj3 = $this->LineWidth/2; + $yadj3 = -$this->LineWidth/2; + $hadj3 = $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_TOP)) { + $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; + } + if ($this->issetBorder($bord, _BORDER_BOTTOM)) { + $hadj3 -= $this->LineWidth*2; + } + } + if ($side=='B') { + $yadj3 = $this->LineWidth/2; + $xadj3 = -$this->LineWidth/2; + $wadj3 = $this->LineWidth; + } + if ($side=='R') { + $xadj3 = $this->LineWidth/2; + $yadj3 = -$this->LineWidth/2; + $hadj3 = $this->LineWidth; + } + } + + else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; $wadj3 = -$this->LineWidth*2; } + else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; $hadj3 = -$this->LineWidth*2; } + + else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $wadj3 = $this->LineWidth/2; } + else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $hadj3 = $this->LineWidth/2; } + + else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; } + else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; } + } + else { + $nc = $this->_lightenColor($details[$side]['c']); + + if ($bSeparate && $cort=='table') { + if ($side=='T') { + $yadj3 = $this->LineWidth/2; + $xadj3 = -$this->LineWidth/2; + $wadj3 = $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_LEFT)) { + $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; + } + } + if ($side=='L') { + $xadj3 = $this->LineWidth/2; + $yadj3 = -$this->LineWidth/2; + $hadj3 = $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_TOP)) { + $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; + } + } + if ($side=='B') { + $yadj3 = $this->LineWidth/2; + $xadj3 = -$this->LineWidth/2; + $wadj3 = $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_LEFT)) { + $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; + } + } + if ($side=='R') { + $xadj3 = $this->LineWidth/2; + $yadj3 = -$this->LineWidth/2; + $hadj3 = $this->LineWidth; + if ($this->issetBorder($bord, _BORDER_TOP)) { + $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; + } + } + } + + else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; } + else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; } + + else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; } + else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; } + + else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = -$this->LineWidth/2; $wadj3 = $this->LineWidth; } + else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = -$this->LineWidth/2; $hadj3 = $this->LineWidth; } + + } + + if ($bSeparate) { + $cellBorderOverlay[] = array( + 'x' => $lx1 + $xadj + $xadj3, + 'y' => $ly1 + $yadj + $yadj3, + 'x2' => $lx2 - $xadj2 + $xadj3 + $wadj3, + 'y2' => $ly2 - $yadj2 + $yadj3 + $hadj3, + 'col' => $nc, + 'lw' => $this->LineWidth, + ); + } + else { + $this->SetDColor($nc); + $this->Line($lx1 + $xadj + $xadj3, $ly1 + $yadj + $yadj3, $lx2 - $xadj2 + $xadj3 + $wadj3, $ly2 - $yadj2 + $yadj3 + $hadj3); + } + } + } + + + else { +/*-- END TABLES-ADVANCED-BORDERS --*/ + if ($details[$side]['style'] == 'dashed') { + $dashsize = 2; // final dash will be this + 1*linewidth + $dashsizek = 1.5; // ratio of Dash/Blank + $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2)); + } + else if ($details[$side]['style'] == 'dotted') { + $this->SetLineJoin(1); + $this->SetLineCap(1); + $this->SetDash(0.001,($this->LineWidth*2)); + } + if ($details[$side]['c']) { + $this->SetDColor($details[$side]['c']); + } + else { $this->SetDColor($this->ConvertColor(0)); } + $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2); +/*-- TABLES-ADVANCED-BORDERS --*/ + } +/*-- END TABLES-ADVANCED-BORDERS --*/ + + // Reset Corners + $this->SetDash(); + //BUTT style line cap + $this->SetLineCap(2); + } + } + + if ($bSeparate && count($cellBorderOverlay)) { + foreach($cellBorderOverlay AS $cbo) { + $this->SetLineWidth($cbo['lw']); + $this->SetDColor($cbo['col']); + $this->Line($cbo['x'], $cbo['y'], $cbo['x2'], $cbo['y2']); + } + } + + // $this->SetLineWidth($oldlinewidth); + // $this->SetDColor($this->ConvertColor(0)); + } +} + + +/*-- TABLES --*/ +/*-- TABLES-ADVANCED-BORDERS --*/ +function _lightenColor($c) { + if (is_array($c)) { die('Color error in _lightencolor'); } + if ($c{0}==3 || $c{0}==5) { // RGB + list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255); + $l += ((1 - $l)*0.8); + list($r,$g,$b) = $this->hsl2rgb($h,$s,$l); + $ret = array(3,$r,$g,$b); + } + else if ($c{0}==4 || $c{0}==6) { // CMYK + $ret = array(4, max(0,(ord($c{1})-20)), max(0,(ord($c{2})-20)), max(0,(ord($c{3})-20)), max(0,(ord($c{4})-20)) ); + } + else if ($c{0}==1) { // Grayscale + $ret = array(1,min(255,(ord($c{1})+32))); + } + $c = array_pad($ret, 6, 0); + $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); + return $cstr; +} + + +function _darkenColor($c) { + if (is_array($c)) { die('Color error in _darkenColor'); } + if ($c{0}==3 || $c{0}==5) { // RGB + list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255); + $s *= 0.25; + $l *= 0.75; + list($r,$g,$b) = $this->hsl2rgb($h,$s,$l); + $ret = array(3,$r,$g,$b); + } + else if ($c{0}==4 || $c{0}==6) { // CMYK + $ret = array(4, min(100,(ord($c{1})+20)), min(100,(ord($c{2})+20)), min(100,(ord($c{3})+20)), min(100,(ord($c{4})+20)) ); + } + else if ($c{0}==1) { // Grayscale + $ret = array(1,max(0,(ord($c{1})-32))); + } + $c = array_pad($ret, 6, 0); + $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); + return $cstr; +} + +/*-- END TABLES-ADVANCED-BORDERS --*/ + + + +function setBorder(&$var, $flag, $set = true) { + $flag = intval($flag); + if ($set) { $set = true; } + $var = intval($var); + $var = $set ? ($var | $flag) : ($var & ~$flag); +} +function issetBorder($var, $flag) { + $flag = intval($flag); + $var = intval($var); + return (($var & $flag) == $flag); +} + + +function _table2cellBorder(&$tableb, &$cbdb, &$cellb, $bval) { + if ($tableb && $tableb['w'] > $cbdb['w']) { + $cbdb = $tableb; + $this->setBorder($cellb, $bval); + } + else if ($tableb && $tableb['w'] == $cbdb['w'] + && array_search($tableb['style'],$this->borderstyles) > array_search($cbdb['style'],$this->borderstyles)) { + $cbdb = $tableb; + $this->setBorder($cellb, $bval); + } +} + +// FIX BORDERS ******************************************** +function _fixTableBorders(&$table){ + if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); } + else { $fh = null; } + + if (!$table['borders_separate'] && $table['border_details']['L']['w']) { + $table['max_cell_border_width']['L'] = $table['border_details']['L']['w']; + } + if (!$table['borders_separate'] && $table['border_details']['R']['w']) { + $table['max_cell_border_width']['R'] = $table['border_details']['R']['w']; + } + if (!$table['borders_separate'] && $table['border_details']['T']['w']) { + $table['max_cell_border_width']['T'] = $table['border_details']['T']['w']; + } + if (!$table['borders_separate'] && $table['border_details']['B']['w']) { + $table['max_cell_border_width']['B'] = $table['border_details']['B']['w']; + } + if ($this->simpleTables) { return; } + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; +/*-- TABLES-ADVANCED-BORDERS --*/ + if (isset($table['topntail']) && $table['topntail']) { $tntborddet = $this->border_details($table['topntail']); } + if (isset($table['thead-underline']) && $table['thead-underline']) { $thuborddet = $this->border_details($table['thead-underline']); } +/*-- END TABLES-ADVANCED-BORDERS --*/ + + for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows + for( $j = 0 ; $j < $numcols ; $j++ ) { //Columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $cell = &$cells[$i][$j]; + if ($this->packTableData) { // includes $this->cacheTables + $cbord = $this->_unpackCellBorder($cell['borderbin']); + } + else { + $cbord = &$cells[$i][$j]; + } + + if (!$cbord['border'] && isset($table['border']) && $table['border'] && $this->table_border_attr_set) { + $cbord['border'] = $table['border']; + $cbord['border_details'] = $table['border_details']; + } + + if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; } + else { $ccolsp = 1; } + if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; } + else { $crowsp = 1; } + + $cbord['border_details']['cellposdom'] = ((($i+1)/$numrows) / 10000 ) + ((($j+1)/$numcols) / 10 ); + // Inherit Cell border from Table border + if ($this->table_border_css_set && !$table['borders_separate']) { + if ($i == 0) { + $this->_table2cellBorder($table['border_details']['T'], $cbord['border_details']['T'], $cbord['border'], _BORDER_TOP); + } + if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) { + $this->_table2cellBorder($table['border_details']['B'], $cbord['border_details']['B'], $cbord['border'], _BORDER_BOTTOM); + } + if ($j == 0) { + $this->_table2cellBorder($table['border_details']['L'], $cbord['border_details']['L'], $cbord['border'], _BORDER_LEFT); + } + if ($j == ($numcols-1) || ($j+$ccolsp) == ($numcols) ) { + $this->_table2cellBorder($table['border_details']['R'], $cbord['border_details']['R'], $cbord['border'], _BORDER_RIGHT); + } + } + +/*-- TABLES-ADVANCED-BORDERS --*/ + $fixbottom = true; + if (isset($table['topntail']) && $table['topntail']) { + if ($i == 0) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], _BORDER_TOP); + } + if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) { + $cbord['border_details']['B'] = $tntborddet; + $this->setBorder($cbord['border'], _BORDER_BOTTOM); + $fixbottom = false; + } + else if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']) { + if (!$table['borders_separate']) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], _BORDER_TOP); + } + } + if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows']-1)) { + if (!$table['borders_separate']) { + $cbord['border_details']['B'] = $tntborddet; + $this->setBorder($cbord['border'], _BORDER_BOTTOM); + $fixbottom = false; + } + } + else if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows'])) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], _BORDER_TOP); + } + if ($this->tabletheadjustfinished) { // $this->tabletheadjustfinished called from tableheader + if (!$table['borders_separate']) { + $cbord['border_details']['T'] = $tntborddet; + $this->setBorder($cbord['border'], _BORDER_TOP); + } + } + if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) { + $cbord['border_details']['B'] = $tntborddet; + $this->setBorder($cbord['border'], _BORDER_BOTTOM); + } + } + if (isset($table['thead-underline']) && $table['thead-underline']) { + if ($table['borders_separate']) { + if ($i == 0) { + $cbord['border_details']['B'] = $thuborddet; + $this->setBorder($cbord['border'], _BORDER_BOTTOM); + $fixbottom = false; + } + } + else { + if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) { + $cbord['border_details']['T'] = $thuborddet; + $this->setBorder($cbord['border'], _BORDER_TOP); + } + else if ($this->tabletheadjustfinished) { // $this->tabletheadjustfinished called from tableheader + $cbord['border_details']['T'] = $thuborddet; + $this->setBorder($cbord['border'], _BORDER_TOP); + } + } + } + + // Collapse Border - Algorithm for conflicting borders + // Hidden >> Width >> double>solid>dashed>dotted... >> style set on cell>table >> top/left>bottom/right + // Do not turn off border which is overridden + // Needed for page break for TOP/BOTTOM both to be defined in Collapsed borders + // Means it is painted twice. (Left/Right can still disable overridden border) + if (!$table['borders_separate']) { + if (($i < ($numrows-1) || ($i+$crowsp) < $numrows ) && $fixbottom ) { // Bottom + for ($cspi = 0; $cspi<$ccolsp; $cspi++) { + // already defined Top for adjacent cell below + if (isset($cells[($i+$crowsp)][$j+$cspi])) { + if ($this->packTableData) { + if ($this->cacheTables) { + $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j+$cspi], '', $fh); + } + else { $adjc = $cells[($i+$crowsp)][$j+$cspi]; } + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } + else { $celladj =& $cells[($i+$crowsp)][$j+$cspi]; } + } + else { $celladj = false; } + if ($celladj && $celladj['border_details']['T']['s'] == 1) { + $csadj = $celladj['border_details']['T']['w']; + $csthis = $cbord['border_details']['B']['w']; + // Hidden + if ($cbord['border_details']['B']['style']=='hidden') { + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($celladj['border'] , _BORDER_TOP, false); + $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false); + } + else if ($celladj['border_details']['T']['style']=='hidden') { + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false); + $this->setBorder($celladj['border'] , _BORDER_TOP, false); + } + // Width + else if ($csthis > $csadj) { + if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($cbord['border'] , _BORDER_BOTTOM); + } + } + else if ($csadj > $csthis) { + if ($ccolsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($celladj['border'] , _BORDER_TOP); + } + } + + // double>solid>dashed>dotted... + else if (array_search($cbord['border_details']['B']['style'],$this->borderstyles) > array_search($celladj['border_details']['T']['style'],$this->borderstyles)) { + if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($cbord['border'] , _BORDER_BOTTOM ); + } + } + else if (array_search($celladj['border_details']['T']['style'],$this->borderstyles) > array_search($cbord['border_details']['B']['style'],$this->borderstyles)) { + if ($ccolsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($celladj['border'] , _BORDER_TOP); + } + } + + + + // Style set on cell vs. table + else if ($celladj['border_details']['T']['dom'] > $cbord['border_details']['B']['dom']) { + if ($ccolsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['B'] = $celladj['border_details']['T']; + $this->setBorder($celladj['border'] , _BORDER_TOP); + } + } + // Style set on cell vs. table - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT + else { + if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + $this->setBorder($cbord['border'] , _BORDER_BOTTOM ); + } + } + } + else if ($celladj) { + if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['T'] = $cbord['border_details']['B']; + } + } + if ($celladj && $this->packTableData) { + $celladj['borderbin'] = $this->_packCellBorder($celladj); + unset($celladj['border']); + unset($celladj['border_details']); + } + if ($this->cacheTables) { + $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$crowsp][$j+$cspi]); + } + unset($celladj); + } + } + + if ($j < ($numcols-1) || ($j+$ccolsp) < $numcols ) { // Right-Left + for ($cspi = 0; $cspi<$crowsp; $cspi++) { + // already defined Left for adjacent cell to R + if (isset($cells[($i+$cspi)][$j+$ccolsp])) { + if ($this->packTableData) { + if ($this->cacheTables) { + $adjc = $this->_uncacheCell($table['cells'][$i+$cspi][$j+$ccolsp], '', $fh); + } + else { $adjc = $cells[($i+$cspi)][$j+$ccolsp]; } + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } + else { $celladj =& $cells[$i+$cspi][$j+$ccolsp]; } + } + else { $celladj = false; } + if ($celladj && $celladj['border_details']['L']['s'] == 1) { + $csadj = $celladj['border_details']['L']['w']; + $csthis = $cbord['border_details']['R']['w']; + // Hidden + if ($cbord['border_details']['R']['style']=='hidden') { + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($celladj['border'] , _BORDER_LEFT, false); + $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); + } + else if ($celladj['border_details']['L']['style']=='hidden') { + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); + $this->setBorder($celladj['border'] , _BORDER_LEFT, false); + } + // Width + else if ($csthis > $csadj) { + if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($cbord['border'] , _BORDER_RIGHT); + $this->setBorder($celladj['border'] , _BORDER_LEFT, false); + } + } + else if ($csadj > $csthis) { + if ($crowsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($cbord['border'] , _BORDER_RIGHT, false); + $this->setBorder($celladj['border'] , _BORDER_LEFT); + } + } + + // double>solid>dashed>dotted... + else if (array_search($cbord['border_details']['R']['style'],$this->borderstyles) > array_search($celladj['border_details']['L']['style'],$this->borderstyles)) { + if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($celladj['border'] , _BORDER_LEFT, false); + $this->setBorder($cbord['border'] , _BORDER_RIGHT); + } + } + else if (array_search($celladj['border_details']['L']['style'],$this->borderstyles) > array_search($cbord['border_details']['R']['style'],$this->borderstyles)) { + if ($crowsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); + $this->setBorder($celladj['border'] , _BORDER_LEFT); + } + } + + + // Style set on cell vs. table + else if ($celladj['border_details']['L']['dom'] > $cbord['border_details']['R']['dom']) { + if ($crowsp < 2) { // don't overwrite this cell if it spans + $cbord['border_details']['R'] = $celladj['border_details']['L']; + $this->setBorder($celladj['border'] , _BORDER_LEFT); + } + } + // Style set on cell vs. table - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT + else { + if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + $this->setBorder($cbord['border'] , _BORDER_RIGHT); + } + } + } + else if ($celladj) { + // if right-cell border is not set + if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) { // don't overwrite bordering cells that span + $celladj['border_details']['L'] = $cbord['border_details']['R']; + } + } + if ($celladj && $this->packTableData) { + $celladj['borderbin'] = $this->_packCellBorder($celladj); + unset($celladj['border']); + unset($celladj['border_details']); + } + if ($this->cacheTables) { + $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$cspi][$j+$ccolsp]); + } + unset($celladj); + } + } + } + + + // Set maximum cell border width meeting at LRTB edges of cell - used for extended cell border + // ['border_details']['mbw']['LT'] = meeting border width - Left border - Top end + if (!$table['borders_separate']) { + $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $cbord['border_details']['L']['w']); + $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $cbord['border_details']['R']['w']); + $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $cbord['border_details']['T']['w']); + $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $cbord['border_details']['B']['w']); + $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $cbord['border_details']['L']['w']); + $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $cbord['border_details']['R']['w']); + $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $cbord['border_details']['T']['w']); + $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $cbord['border_details']['B']['w']); + if (($i+$crowsp) < $numrows && isset($cells[$i+$crowsp][$j])) { // Has Bottom adjoining cell + if ($this->packTableData) { + if ($this->cacheTables) { + $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j], '', $fh); + } + else { $adjc = $cells[$i+$crowsp][$j]; } + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } + else { $celladj =& $cells[$i+$crowsp][$j]; } + $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['TL']); + $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['TR']); + $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['mbw']['LT']); + $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['mbw']['RT']); + unset($celladj); + } + if (($j+$ccolsp) < $numcols && isset($cells[$i][$j+$ccolsp])) { // Has Right adjoining cell + if ($this->packTableData) { + if ($this->cacheTables) { + $adjc = $this->_uncacheCell($table['cells'][$i][$j+$ccolsp], '', $fh); + } + else { $adjc = $cells[$i][$j+$ccolsp]; } + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } + else { $celladj =& $cells[$i][$j+$ccolsp]; } + $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['LT']); + $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['LB']); + $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['mbw']['TL']); + $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['mbw']['BL']); + unset($celladj); + } + + if ($i > 0 && isset($cells[$i-1][$j]) && (($this->packTableData && $cells[$i-1][$j]['borderbin']) || $cells[$i-1][$j]['border'])) { // Has Top adjoining cell + if ($this->packTableData) { + if ($this->cacheTables) { + $adjc = $this->_uncacheCell($table['cells'][$i-1][$j], '', $fh); + } + else { $adjc = $cells[$i-1][$j]; } + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } + else { $celladj =& $cells[$i-1][$j]; } + $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['BL']); + $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['BR']); + $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['mbw']['LB']); + $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['mbw']['RB']); + + if ($celladj['border_details']['mbw']['BL']) { + $celladj['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['BL']); + } + if ($celladj['border_details']['mbw']['BR'] ) { + $celladj['border_details']['mbw']['BR'] = max($celladj['border_details']['mbw']['BR'], $cbord['border_details']['mbw']['TR']); + } + if ($this->packTableData) { $cells[$i-1][$j]['borderbin'] = $this->_packCellBorder($celladj); } + unset($celladj); + } + if ($j > 0 && isset($cells[$i][$j-1]) && (($this->packTableData && $cells[$i][$j-1]['borderbin']) || $cells[$i][$j-1]['border'])) { // Has Left adjoining cell + if ($this->packTableData) { + if ($this->cacheTables) { + $adjc = $this->_uncacheCell($table['cells'][$i][$j-1], '', $fh); + } + else { $adjc = $cells[$i][$j-1]; } + $celladj = $this->_unpackCellBorder($adjc['borderbin']); + } + else { $celladj =& $cells[$i][$j-1]; } + $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['RT']); + $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['RB']); + $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['mbw']['BR']); + $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['TR']); + + if ($celladj['border_details']['mbw']['RT']) { + $celladj['border_details']['mbw']['RT'] = max($celladj['border_details']['mbw']['RT'], $cbord['border_details']['mbw']['LT']); + } + if ($celladj['border_details']['mbw']['RB']) { + $celladj['border_details']['mbw']['RB'] = max($celladj['border_details']['mbw']['RB'], $cbord['border_details']['mbw']['LB']); + } + if ($this->packTableData) { $cells[$i][$j-1]['borderbin'] = $this->_packCellBorder($celladj); } + unset($celladj); + } + + + // Update maximum cell border width at LRTB edges of table - used for overall table width + if ($j == 0 && $cbord['border_details']['L']['w']) { + $table['max_cell_border_width']['L'] = max($table['max_cell_border_width']['L'],$cbord['border_details']['L']['w']); + } + if (($j == ($numcols-1) || ($j+$ccolsp) == $numcols ) && $cbord['border_details']['R']['w']) { + $table['max_cell_border_width']['R'] = max($table['max_cell_border_width']['R'],$cbord['border_details']['R']['w']); + } + if ($i == 0 && $cbord['border_details']['T']['w']) { + $table['max_cell_border_width']['T'] = max($table['max_cell_border_width']['T'],$cbord['border_details']['T']['w']); + } + if (($i == ($numrows-1) || ($i+$crowsp) == $numrows ) && $cbord['border_details']['B']['w']) { + $table['max_cell_border_width']['B'] = max($table['max_cell_border_width']['B'],$cbord['border_details']['B']['w']); + } + } +/*-- END TABLES-ADVANCED-BORDERS --*/ + + if ($this->packTableData) { $cell['borderbin'] = $this->_packCellBorder($cbord); } + + if ($this->cacheTables) { + $this->_cacheUpdateBorder($cell, $fh, $table['cells'][$i][$j]); + } + unset($cbord ); + unset($cell ); + } + } + } + if ($this->cacheTables) { fclose($fh); } + unset($cell ); +} +// END FIX BORDERS ************************************************************************************ + + +function _reverseTableDir(&$table) { + if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); } + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; + for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows + $row = array(); + for( $j = ($numcols-1) ; $j >= 0 ; $j-- ) { //Columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $cell = &$cells[$i][$j]; + $col = $numcols - $j - 1; + if (isset($cell['colspan']) && $cell['colspan'] > 1) { $col -= ($cell['colspan']-1); } + // Nested content + for ($n=0; $n < count($cell['textbuffer']); $n++) { + $t = $cell['textbuffer'][$n][0]; + if (substr($t,0,19) == "\xbb\xa4\xactype=nestedtable") { + $objattr = $this->_getObjAttr($t); + $objattr['col'] = $col; + $cell['textbuffer'][$n][0] = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac"; + $this->table[($this->tableLevel+1)][$objattr['nestedcontent']]['nestedpos'][1] = $col; + if ($this->cacheTables) { + $this->_cacheUpdateTxB($cell, $fh, $table['cells'][$i][$j]); + } + } + } + $row[$col] = $cells[$i][$j]; + unset($cell); + } + } + for($f=0; $f < $numcols; $f++) { + if (!isset($row[$f])) { $row[$f] = 0; } + } + $table['cells'][$i] = $row; + } + if ($this->cacheTables) { fclose($fh); } +} + + +function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0, $rety = 0){ + $level = $table['level']; + $levelid = $table['levelid']; + + $cells = &$table['cells']; + $numcols = $table['nc']; + $numrows = $table['nr']; + + if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS* + + if (!$split || ($startrow==0 && $splitpg==0) || $startrow>0){ + // TABLE TOP MARGIN + if ($table['margin']['T']) { + if (!$this->table_rotate && $level==1) { + $this->DivLn($table['margin']['T'],$this->blklvl,true,1); // collapsible + } + else { + $this->y += ($table['margin']['T']); + } + } + // Advance down page by half width of top border + if ($table['borders_separate']) { + if ($startrow>0 && (!isset($table['is_thead']) || count($table['is_thead'])==0)) + $adv = $table['border_spacing_V']/2; + else + $adv = $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; + } + else { + $adv = $table['max_cell_border_width']['T']/2; + } + if (!$this->table_rotate && $level==1) { $this->DivLn($adv); } + else { $this->y += $adv; } + } + + if ($level==1) { + $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w']; + $x0 = $this->x; + $y0 = $this->y; + $right = $x0 + $this->blk[$this->blklvl]['inner_width']; + $outerfilled = $this->y; // Keep track of how far down the outer DIV bgcolor is painted (NB rowspans) + $this->outerfilled = $this->y; + $this->colsums = array(); + } + else { + $x0 = $this->x; + $y0 = $this->y; + $right = $x0 + $table['w']; + } + + if ($this->table_rotate) { + $temppgwidth = $this->tbrot_maxw; + $this->PageBreakTrigger = $pagetrigger = $y0 + ($this->blk[$this->blklvl]['inner_width']); + if ($level==1) { + $this->tbrot_y0 = $this->y - $adv - $table['margin']['T'] ; + $this->tbrot_x0 = $this->x; + $this->tbrot_w = $table['w']; + if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; } + else { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['max_cell_border_width']['T']; } + } + } + else { + $this->PageBreakTrigger = $pagetrigger = ($this->h - $this->bMargin); + if ($level==1) { + $temppgwidth = $this->blk[$this->blklvl]['inner_width']; + if (isset($table['a']) and ($table['w'] < $this->blk[$this->blklvl]['inner_width'])) { + if ($table['a']=='C') { $x0 += ((($right-$x0) - $table['w'])/2); } + else if ($table['a']=='R') { $x0 = $right - $table['w']; } + } + } + else { + $temppgwidth = $table['w']; + } + } + if(!isset($table['overflow'])) { $table['overflow'] = null; } + if ($table['overflow']=='hidden' && $level==1 && !$this->table_rotate && !$this->ColActive) { + //Bounding rectangle to clip + $this->tableClipPath = sprintf('q %.3F %.3F %.3F %.3F re W n',$x0*_MPDFK,$this->h*_MPDFK,$this->blk[$this->blklvl]['inner_width']*_MPDFK,-$this->h*_MPDFK); + $this->_out($this->tableClipPath); + } + else { $this->tableClipPath = ''; } + + + if ($table['borders_separate']) { $indent = $table['margin']['L'] + $table['border_details']['L']['w'] + $table['padding']['L'] + $table['border_spacing_H']/2; } + else { $indent = $table['margin']['L'] + $table['max_cell_border_width']['L']/2; } + $x0 += $indent; + + $returny = 0; + $lastCol = 0; + $tableheader = array(); + $tablefooter = array(); + $tableheaderrowheight = 0; + $tablefooterrowheight = 0; + $footery = 0; + + // mPD 3.0 Set the Page & Column where table starts + if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN + $tablestartpage = 'EVEN'; + } + else if (($this->mirrorMargins) && (($this->page)%2==1)) { // ODD + $tablestartpage = 'ODD'; + } + else { $tablestartpage = ''; } + if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; } + else { $tablestartcolumn = ''; } + + if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); } + else { $fh = null; } + + $y = $h = 0; + for( $i = 0; $i < $numrows ; $i++ ) { //Rows + if ($this->progressBar) { $this->UpdateProgressBar(7,intval(30 + ($i*40/$numrows)),' '); } // *PROGRESS-BAR* + if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i] && $level==1) { + $tablefooterrowheight += $table['hr'][$i]; + $tablefooter[$i][0]['trbackground-images'] = $table['trbackground-images'][$i]; + $tablefooter[$i][0]['trgradients'] = $table['trgradients'][$i]; + $tablefooter[$i][0]['trbgcolor'] = $table['bgcolor'][$i]; + for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $cell = &$cells[$i][$j]; + if ($split) { + if ($table['colPg'][$j] != $splitpg) { continue; } + list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh); + $js = $j - $startcol; + } + else { + list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh); + $js = $j; + } + + list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh); + $x += $x0; + $y += $y0; + //Get info of tfoot ==>> table footer + $tablefooter[$i][$js]['x'] = $x; + $tablefooter[$i][$js]['y'] = $y; + $tablefooter[$i][$js]['h'] = $h; + $tablefooter[$i][$js]['w'] = $w; + if (isset($cell['textbuffer'])) { $tablefooter[$i][$js]['textbuffer'] = $cell['textbuffer']; } + else { $tablefooter[$i][$js]['textbuffer'] = ''; } + $tablefooter[$i][$js]['a'] = $cell['a']; + $tablefooter[$i][$js]['R'] = $cell['R']; + $tablefooter[$i][$js]['va'] = $cell['va']; + $tablefooter[$i][$js]['mih'] = $cell['mih']; + $tablefooter[$i][$js]['gradient'] = $cell['gradient']; // *BACKGROUNDS* + $tablefooter[$i][$js]['background-image'] = $cell['background-image']; // *BACKGROUNDS* + //CELL FILL BGCOLOR + if (!$this->simpleTables){ + if ($this->packTableData) { + $c = $this->_unpackCellBorder($cell['borderbin']); + $tablefooter[$i][$js]['border'] = $c['border']; + $tablefooter[$i][$js]['border_details'] = $c['border_details']; + } + else { + $tablefooter[$i][$js]['border'] = $cell['border']; + $tablefooter[$i][$js]['border_details'] = $cell['border_details']; + } + } + else if ($this->simpleTables){ + $tablefooter[$i][$js]['border'] = $table['simple']['border']; + $tablefooter[$i][$js]['border_details'] = $table['simple']['border_details']; + } + $tablefooter[$i][$js]['bgcolor'] = $cell['bgcolor']; + $tablefooter[$i][$js]['padding'] = $cell['padding']; + $tablefooter[$i][$js]['rowspan'] = $cell['rowspan']; + $tablefooter[$i][$js]['colspan'] = $cell['colspan']; + } + } + } + } + + if ($level==1) { $this->_out('___TABLE___BACKGROUNDS'.date('jY')); } + $tableheaderadj = 0; + $tablefooteradj = 0; + + $tablestartpageno = $this->page; + + //Draw Table Contents and Borders + for( $i = 0; $i < $numrows ; $i++ ) { //Rows + if ($split && $startrow > 0) { + $thnr = (isset($table['is_thead']) ? count($table['is_thead']) : 0); + if ($i >= $thnr && $i < $startrow) { continue; } + if ($i == $startrow){ $returny = $rety - $tableheaderrowheight; } + } + + // Get Maximum row/cell height in row - including rowspan>1 + 1 overlapping + $maxrowheight = $this->_tableGetMaxRowHeight($table, $i, $fh); + + $skippage = false; + $newpagestarted = false; + for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns + if ($split) { + if ($table['colPg'][$j] > $splitpg) { break; } + $lastCol = $j; + } + if (isset($cells[$i][$j]) && $cells[$i][$j]) { + if ($this->cacheTables) { + $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh); + } + else + $cell = &$cells[$i][$j]; + if ($split) { + $lastCol = $j + (isset($cell['colspan']) ? ($cell['colspan']-1) : 0) ; + list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh); + } + else { list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh); } + + list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh); + $x += $x0; + $y += $y0; + $y -= $returny; + + if ($table['borders_separate']) { + if (!empty($tablefooter) || $i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows) || (!isset($cell['rowspan']) && ($i+1) == $numrows) ) { + $extra = $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; + //$extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; + } + else { + $extra = $table['border_spacing_V']/2; + } + } + else { $extra = $table['max_cell_border_width']['B']/2; } + + if ($j==$startcol && ((($y + $maxrowheight + $extra ) > ($pagetrigger+0.001)) || (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && ($y + $maxrowheight + $tablefooterrowheight + $extra) > $pagetrigger) && ($this->tableLevel==1 && $i < ($numrows - $table['headernrows']))) && ($y0 >0 || $x0 > 0) && !$this->InFooter && $this->autoPageBreak ) { + + if (!$skippage) { + $finalSpread = true; + $firstSpread = true; + if ($split) { + for($t=$startcol; $t<$numcols; $t++) { + // Are there more columns to print on a next page? + if ($table['colPg'][$t] > $splitpg) { + $finalSpread = false; + break; + } + } + if ($startcol>0) { $firstSpread = false; } + } + + if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) { + $this->y = $y; + $ya = $this->y; + $this->TableHeaderFooter($tablefooter,$tablestartpage,$tablestartcolumn,'F',$level, $firstSpread, $finalSpread); + if ($this->table_rotate) { + $this->tbrot_h += $this->y - $ya ; + } + $tablefooteradj = $this->y - $ya ; + } + $y -= $y0; + $returny += $y; + + $oldcolumn = $this->CurrCol; + if ($this->AcceptPageBreak()) { + $newpagestarted = true; + $this->y = $y + $y0; + + // Move down to account for border-spacing or + // extra half border width in case page breaks in middle + if($i>0 && !$this->table_rotate && $level==1 && !$this->ColActive) { + if ($table['borders_separate']) { + $adv = $table['border_spacing_V']/2; + // If table footer + if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) { + $adv += ($table['padding']['B'] + $table['border_details']['B']['w']); + } + } + else { + $maxbwtop = 0; + $maxbwbottom = 0; + if (!$this->simpleTables){ + if (!empty($tablefooter)) { $maxbwbottom = $table['max_cell_border_width']['B']; } + else { + $brow = $i-1; + for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) { + if (isset($cells[$brow][$ctj]) && $cells[$brow][$ctj]) { + if ($this->cacheTables) { + $cadj = $this->_uncacheCell($table['cells'][$brow][$ctj], '', $fh); + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']); + } + else if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$brow][$ctj]['borderbin']); + } + else { + $bb = $cells[$brow][$ctj]['border_details']['B']['w']; + } + $maxbwbottom = max($maxbwbottom , $bb); + } + } + } + if (!empty($tableheader)) { $maxbwtop = $table['max_cell_border_width']['T']; } + else { + $trow = $i-1; + for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) { + if (isset($cells[$trow][$ctj]) && $cells[$trow][$ctj]) { + if ($this->cacheTables) { + $cadj = $this->_uncacheCell($table['cells'][$trow][$ctj], '', $fh); + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']); + } + else if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$trow][$ctj]['borderbin']); + } + else { + $bt = $cells[$trow][$ctj]['border_details']['T']['w']; + } + $maxbwtop = max($maxbwtop , $bt); + } + } + } + } + else if ($this->simpleTables){ + $maxbwtop = $table['simple']['border_details']['T']['w']; + $maxbwbottom = $table['simple']['border_details']['B']['w']; + } + $adv = $maxbwbottom /2; + } + $this->y += $adv; + } + + // Rotated table split over pages - needs this->y for borders/backgrounds + if($i>0 && $this->table_rotate && $level==1) { + // $this->y = $y0 + $this->tbrot_w; + } + + if ($this->tableClipPath ) { $this->_out("Q"); } + + $bx = $x0; + $by = $y0; + + if ($table['borders_separate']) { + $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2); + if ($tablestartpageno != $this->page) { // IF already broken across a previous pagebreak + $by += $table['max_cell_border_width']['T']/2; + if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); } + } + else { + $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2); + } + } + + else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; } + + $by -= $tableheaderadj; + $bh = $this->y - $by + $tablefooteradj; + if (!$table['borders_separate']) { $bh -= $adv ; } + if ($split) { + $bw = 0; + for($t=$startcol; $t<$numcols; $t++) { + if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; } + if ($table['colPg'][$t] > $splitpg) { break; } + } + if ($table['borders_separate']) { + if ($firstSpread) { + $bw += $table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']; + } + else { + $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); + $bw += $table['border_spacing_H']; + } + if ($finalSpread) { + $bw += $table['padding']['R'] + $table['border_details']['R']['w']/2 + $table['border_spacing_H']; + } + } + } + else { + $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R']; + } + + // mPDF 5.4.16 + if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tablefooter) && $i > 0 && $table['border_details']['B']['w']) { + $prevDrawColor = $this->DrawColor; + $lw = $this->LineWidth; + $this->SetLineWidth($this->splitTableBorderWidth); + $this->SetDColor($table['border_details']['B']['c']); + $this->SetLineJoin(0); + $this->SetLineCap(0); + $blx = $bx; + $blw = $bw; + if (!$table['borders_separate']) { + $blx -= ($table['max_cell_border_width']['L']/2); + $blw += ($table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2); + } + $this->Line($blx,$this->y+($this->splitTableBorderWidth/2),$blx+$blw,$this->y+($this->splitTableBorderWidth/2)); + $this->DrawColor = $prevDrawColor; + $this->_out($this->DrawColor); + $this->SetLineWidth($lw); + $this->SetLineJoin(2); + $this->SetLineCap(2); + } + + if (!$this->ColActive && ($i > 0 || $j > 0)) { + if (isset($table['bgcolor'][-1])) { + $color = $this->ConvertColor($table['bgcolor'][-1]); + if ($color) { + if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; } + $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color); + } + } + +/*-- BACKGROUNDS --*/ + if (isset($table['gradient'])) { + $g = $this->grad->parseBackgroundGradient($table['gradient']); + if ($g) { + $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + + if (isset($table['background-image'])) { + if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) { + $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] ); + if ($g) { + $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + else { + $image_id = $table['background-image']['image_id']; + $orig_w = $table['background-image']['orig_w']; + $orig_h = $table['background-image']['orig_h']; + $x_pos = $table['background-image']['x_pos']; + $y_pos = $table['background-image']['y_pos']; + $x_repeat = $table['background-image']['x_repeat']; + $y_repeat = $table['background-image']['y_repeat']; + $resize = $table['background-image']['resize']; + $opacity = $table['background-image']['opacity']; + $itype = $table['background-image']['itype']; + $this->tableBackgrounds[$level*9+2][] = array('x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype); + } + } +/*-- END BACKGROUNDS --*/ + } + + // $this->AcceptPageBreak() has moved tablebuffer to $this->pages content + if ($this->tableBackgrounds) { + $s = $this->PrintTableBackgrounds(); + if ($this->bufferoutput) { + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->headerbuffer); + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->headerbuffer ); + } + else { + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->pages[$this->page]); + } + $this->tableBackgrounds = array(); + } + + if ($split) { + if ($i == 0 && $j == 0) { $y0 = -1; } + else if ($finalSpread) { + $splitpg = 0; + $startcol = 0; + $startrow = $i; + } + else { + $splitpg++; + $startcol = $t; + $returny -= $y; + } + return array(false, $startrow, $startcol, $splitpg, $returny, $y0); + } + + $this->AddPage($this->CurOrientation); + + $this->_out('___TABLE___BACKGROUNDS'.date('jY')); + + + if ($this->tableClipPath ) { $this->_out($this->tableClipPath); } + + // Added to correct for OddEven Margins + $x= $x + $this->MarginCorrection; + $x0= $x0 + $this->MarginCorrection; + + // mPDF 5.4.16 + if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tableheader) && $i > 0 && $table['border_details']['T']['w'] ) { + $prevDrawColor = $this->DrawColor; + $lw = $this->LineWidth; + $this->SetLineWidth($this->splitTableBorderWidth); + $this->SetDColor($table['border_details']['T']['c']); + $this->SetLineJoin(0); + $this->SetLineCap(0); + $blx += $this->MarginCorrection; + $this->Line($blx,$this->y-($this->splitTableBorderWidth/2),$blx+$blw,$this->y-($this->splitTableBorderWidth/2)); + $this->DrawColor = $prevDrawColor; + $this->_out($this->DrawColor); + $this->SetLineWidth($lw); + $this->SetLineJoin(2); + $this->SetLineCap(2); + } + + // Move down to account for half of top border-spacing or + // extra half border width in case page was broken in middle + if($i>0 && !$this->table_rotate && $level==1 && $table['headernrows']==0) { + if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2; } + else { + $maxbwtop = 0; + for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) { + if (isset($cells[$i][$ctj]) && $cells[$i][$ctj]) { + if (!$this->simpleTables){ + if ($this->cacheTables) { + $celltj = $this->_uncacheCell($table['cells'][$i][$ctj], '', $fh); + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($celltj['borderbin']); + } + else if ($this->packTableData) { + list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$i][$ctj]['borderbin']); + } + else { + $bt = $cells[$i][$ctj]['border_details']['T']['w']; + } + $maxbwtop = max($maxbwtop, $bt); + } + else if ($this->simpleTables){ + $maxbwtop = max($maxbwtop, $table['simple']['border_details']['T']['w']); + } + } + } + $adv = $maxbwtop /2; + } + $this->y += $adv; + } + + + if ($this->table_rotate) { + $this->tbrot_x0 = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w']; + if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; } + else { $this->tbrot_h = $table['margin']['T'] + $table['max_cell_border_width']['T'] ; } + $this->tbrot_y0 = $this->y; + $pagetrigger = $y0 - $tableheaderadj + ($this->blk[$this->blklvl]['inner_width']); + } + else { + $pagetrigger = $this->PageBreakTrigger; + } + + if ($this->kwt_saved && $level==1) { + $this->kwt_moved = true; + } + + + // Disable Table header repeat if Keep Block together + if (!$this->keep_block_together && !empty($tableheader)) { + $ya = $this->y; + $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level); + if ($this->table_rotate) { + $this->tbrot_h = $this->y - $ya ; + } + $tableheaderadj = $this->y - $ya ; + } + + else if ($i==0 && !$this->keep_block_together && !$this->table_rotate && $level==1 && !$this->ColActive) { + // Advance down page + if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T']; } + else { $adv = $table['max_cell_border_width']['T'] /2 ; } + if ($adv) { + if ($this->table_rotate) { + $this->y += ($adv); + } + else { + $this->DivLn($adv,$this->blklvl,true); + } + } + } + + $outerfilled = 0; + $y = $y0 = $this->y; + } + +/*-- COLUMNS --*/ + // COLS + // COLUMN CHANGE + if ($this->CurrCol != $oldcolumn) { + // Added to correct for Columns + $x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap); + $x0 += $this->ChangeColumn * ($this->ColWidth+$this->ColGap); + if ($this->CurrCol == 0) { // just added a page - possibly with tableheader + $y0 = $this->y; // this->y0 is global used by Columns - $y0 is internal to tablewrite + } + else { + $y0 = $this->y0; // this->y0 is global used by Columns - $y0 is internal to tablewrite + } + $y = $y0; + $outerfilled = 0; + if ($this->CurrCol != 0 && ($this->keepColumns && $this->ColActive) && !empty($tableheader) && $i > 0 ) { + $this->x = $x; + $this->y = $y; + $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level); + $y0 = $y=$this->y; + } + } +/*-- END COLUMNS --*/ + } + $skippage = true; + } + + $this->x = $x; + $this->y = $y; + + if ($this->kwt_saved && $level==1) { + $this->printkwtbuffer(); + $x0 = $x = $this->x; + $y0 = $y = $this->y; + $this->kwt_moved = false; + $this->kwt_saved = false; + } + + + // Set the Page & Column where table actually starts + if ($i==0 && $j==0 && $level==1) { + if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN + $tablestartpage = 'EVEN'; + } + else if (($this->mirrorMargins) && (($this->page)%2==1)) { // ODD + $tablestartpage = 'ODD'; + } + else { $tablestartpage = ''; } + $tablestartpageno = $this->page; + if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; } // *COLUMNS* + } + + + //ALIGN + $align = $cell['a']; + + +/*-- COLUMNS --*/ + // If outside columns, this is done in PaintDivBB + if ($this->ColActive) { + //OUTER FILL BGCOLOR of DIVS + if ($this->blklvl > 0 && ($j==0) && !$this->table_rotate && $level==1) { + $firstblockfill = $this->GetFirstBlockFill(); + if ($firstblockfill && $this->blklvl >= $firstblockfill) { + $divh = $maxrowheight; + // Last row + if ((!isset($cell['rowspan']) && $i == $numrows-1) || (isset($cell['rowspan']) && (($i == $numrows-1 && $cell['rowspan']<2) || ($cell['rowspan']>1 && ($i + $cell['rowspan']-1) == $numrows-1)))) { // mPDF 5.6.54 + if ($table['borders_separate']) { + $adv = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; + } + else { + $adv = $table['margin']['B'] + $table['max_cell_border_width']['B']/2; + } + $divh += $adv; //last row: fill bottom half of bottom border (y advanced at end) + } + + if (($this->y + $divh) > $outerfilled ) { // if not already painted by previous rowspan + $bak_x = $this->x; + $bak_y = $this->y; + if ($outerfilled > $this->y) { + $divh = ($this->y + $divh) - $outerfilled; + $this->y = $outerfilled; + } + + $this->DivLn($divh,-3,false); + $outerfilled = $this->y + $divh; + // Reset current block fill + $bcor = $this->blk[$this->blklvl]['bgcolorarray']; + if ($bcor ) $this->SetFColor($bcor); + $this->x = $bak_x; + $this->y = $bak_y; + } + } + } + } + + + //TABLE BACKGROUND FILL BGCOLOR - for cellSpacing + if ($this->ColActive) { + if ($table['borders_separate']) { + $fill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0; + if ($fill) { + $color = $this->ConvertColor($fill); + if ($color) { + $xadj = ($table['border_spacing_H']/2); + $yadj = ($table['border_spacing_V']/2); + $wadj = $table['border_spacing_H']; + $hadj = $table['border_spacing_V']; + if ($i == 0) { // Top + $yadj += $table['padding']['T'] + $table['border_details']['T']['w'] ; + $hadj += $table['padding']['T'] + $table['border_details']['T']['w'] ; + } + if ($j == 0) { // Left + $xadj += $table['padding']['L'] + $table['border_details']['L']['w'] ; + $wadj += $table['padding']['L'] + $table['border_details']['L']['w'] ; + } + if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows) || (!isset($cell['rowspan']) && ($i+1) == $numrows)) { // Bottom + $hadj += $table['padding']['B'] + $table['border_details']['B']['w'] ; + } + if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols) || (!isset($cell['colspan']) && ($j+1) == $numcols)) { // Right + $wadj += $table['padding']['R'] + $table['border_details']['R']['w'] ; + } + $this->SetFColor($color); + $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F'); + } + } + } + } +/*-- END COLUMNS --*/ + + if ($table['empty_cells']!='hide' || !empty($cell['textbuffer']) || (isset($cell['nestedcontent']) && $cell['nestedcontent']) || !$table['borders_separate'] ) { $paintcell = true; } + else { $paintcell = false; } + + //Set Borders + $bord = 0; + $bord_det = array(); + + if (!$this->simpleTables){ + if ($this->packTableData) { + if ($cell['borderbin']) { + $c = $this->_unpackCellBorder($cell['borderbin']); + $bord = $c['border']; + $bord_det = $c['border_details']; + } + } + else if ($cell['border']) { + $bord = $cell['border']; + $bord_det = $cell['border_details']; + } + } + else if ($this->simpleTables){ + if ($table['simple']['border']) { + $bord = $table['simple']['border']; + $bord_det = $table['simple']['border_details']; + } + } + + //TABLE ROW OR CELL FILL BGCOLOR + $fill = 0; + if (isset($cell['bgcolor']) && $cell['bgcolor'] && $cell['bgcolor']!='transparent') { + $fill = $cell['bgcolor']; + $leveladj = 6; + } + else if (isset($table['bgcolor'][$i]) && $table['bgcolor'][$i] && $table['bgcolor'][$i]!='transparent') { // Row color + $fill = $table['bgcolor'][$i]; + $leveladj = 3; + } + if ($fill && $paintcell) { + $color = $this->ConvertColor($fill); + if ($color) { + if ($table['borders_separate']) { + if ($this->ColActive) { + $this->SetFColor($color); + $this->Rect($x+ ($table['border_spacing_H']/2), $y+ ($table['border_spacing_V']/2), $w- $table['border_spacing_H'], $h- $table['border_spacing_V'], 'F'); + } + else { + $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>($x + ($table['border_spacing_H']/2)), 'y'=>($y + ($table['border_spacing_V']/2)), 'w'=>($w - $table['border_spacing_H']), 'h'=>($h - $table['border_spacing_V']), 'col'=>$color); + } + } + else { + if ($this->ColActive) { + $this->SetFColor($color); + $this->Rect($x, $y, $w, $h, 'F'); + } + else { + $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>$x, 'y'=>$y, 'w'=>$w, 'h'=>$h, 'col'=>$color); + } + } + } + } + +/*-- BACKGROUNDS --*/ + if (isset($cell['gradient']) && $cell['gradient'] && $paintcell){ + $g = $this->grad->parseBackgroundGradient($cell['gradient']); + if ($g) { + if ($table['borders_separate']) { + $px = $x+ ($table['border_spacing_H']/2); + $py = $y+ ($table['border_spacing_V']/2); + $pw = $w- $table['border_spacing_H']; + $ph = $h- $table['border_spacing_V']; + } + else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']); + } + else { + $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + } + + if (isset($cell['background-image']) && $paintcell) { + if ($cell['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $cell['background-image']['gradient'] )) { + $g = $this->grad->parseMozGradient( $cell['background-image']['gradient'] ); + if ($g) { + if ($table['borders_separate']) { + $px = $x+ ($table['border_spacing_H']/2); + $py = $y+ ($table['border_spacing_V']/2); + $pw = $w- $table['border_spacing_H']; + $ph = $h- $table['border_spacing_V']; + } + else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']); + } + else { + $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + } + else if ($cell['background-image']['image_id']) { // Background pattern + $n = count($this->patterns)+1; + if ($table['borders_separate']) { + $px = $x+ ($table['border_spacing_H']/2); + $py = $y+ ($table['border_spacing_V']/2); + $pw = $w- $table['border_spacing_H']; + $ph = $h- $table['border_spacing_V']; + } + else { + $px = $x; + $py = $y; + $pw = $w; + $ph = $h; + } + if ($this->ColActive) { + list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($cell['background-image']['orig_w'], $cell['background-image']['orig_h'], $pw, $ph, $cell['background-image']['resize'], $cell['background-image']['x_repeat'], $cell['background-image']['y_repeat']); + $this->patterns[$n] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'pgh'=>$this->h, 'image_id'=>$cell['background-image']['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$cell['background-image']['x_pos'] , 'y_pos'=>$cell['background-image']['y_pos'] , 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat); + if ($cell['background-image']['opacity']>0 && $cell['background-image']['opacity']<1) { $opac = $this->SetAlpha($cell['background-image']['opacity'],'Normal',true); } + else { $opac = ''; } + $this->_out(sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $px*_MPDFK, ($this->h-$py)*_MPDFK, $pw*_MPDFK, -$ph*_MPDFK)); + } + else { + $image_id = $cell['background-image']['image_id']; + $orig_w = $cell['background-image']['orig_w']; + $orig_h = $cell['background-image']['orig_h']; + $x_pos = $cell['background-image']['x_pos']; + $y_pos = $cell['background-image']['y_pos']; + $x_repeat = $cell['background-image']['x_repeat']; + $y_repeat = $cell['background-image']['y_repeat']; + $resize = $cell['background-image']['resize']; + $opacity = $cell['background-image']['opacity']; + $itype = $cell['background-image']['itype']; + $this->tableBackgrounds[$level*9+8][] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype); + } + } + } +/*-- END BACKGROUNDS --*/ + + if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; } + else { $ccolsp = 1; } + if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; } + else { $crowsp = 1; } + + + // but still need to do this for repeated headers... + if (!$table['borders_separate'] && $this->tabletheadjustfinished && !$this->simpleTables){ + if (isset($table['topntail']) && $table['topntail']) { + $bord_det['T'] = $this->border_details($table['topntail']); + $bord_det['T']['w'] /= $this->shrin_k; + $this->setBorder($bord, _BORDER_TOP); + } + if (isset($table['thead-underline']) && $table['thead-underline']) { + $bord_det['T'] = $this->border_details($table['thead-underline']); + $bord_det['T']['w'] /= $this->shrin_k; + $this->setBorder($bord, _BORDER_TOP); + } + } + + + //Get info of first row ==>> table header + //Use > 1 row if THEAD + if (isset($table['is_thead'][$i]) && $table['is_thead'][$i] && $level==1) { + if ($j==0) $tableheaderrowheight += $table['hr'][$i]; + $tableheader[$i][0]['trbackground-images'] = (isset($table['trbackground-images'][$i]) ? $table['trbackground-images'][$i] : null); + $tableheader[$i][0]['trgradients'] = (isset($table['trgradients'][$i]) ? $table['trgradients'][$i] : null); + $tableheader[$i][0]['trbgcolor'] = (isset($table['bgcolor'][$i]) ? $table['bgcolor'][$i] : null); + $tableheader[$i][$j]['x'] = $x; + $tableheader[$i][$j]['y'] = $y; + $tableheader[$i][$j]['h'] = $h; + $tableheader[$i][$j]['w'] = $w; + if (isset($cell['textbuffer'])) { $tableheader[$i][$j]['textbuffer'] = $cell['textbuffer']; } + else { $tableheader[$i][$j]['textbuffer'] = ''; } + $tableheader[$i][$j]['a'] = $cell['a']; + $tableheader[$i][$j]['R'] = $cell['R']; + + $tableheader[$i][$j]['va'] = $cell['va']; + $tableheader[$i][$j]['mih'] = $cell['mih']; + $tableheader[$i][$j]['gradient'] = (isset($cell['gradient']) ? $cell['gradient'] : null); // *BACKGROUNDS* + $tableheader[$i][$j]['background-image'] = (isset($cell['background-image']) ? $cell['background-image'] : null); // *BACKGROUNDS* + $tableheader[$i][$j]['rowspan'] = (isset($cell['rowspan']) ? $cell['rowspan'] : null); + $tableheader[$i][$j]['colspan'] = (isset($cell['colspan']) ? $cell['colspan'] : null); + $tableheader[$i][$j]['bgcolor'] = $cell['bgcolor']; + + if (!$this->simpleTables){ + $tableheader[$i][$j]['border'] = $bord; + $tableheader[$i][$j]['border_details'] = $bord_det; + } + else if ($this->simpleTables){ + $tableheader[$i][$j]['border'] = $table['simple']['border']; + $tableheader[$i][$j]['border_details'] = $table['simple']['border_details']; + } + $tableheader[$i][$j]['padding'] = $cell['padding']; + } + + // CELL BORDER + if ($bord || $bord_det) { + if ($table['borders_separate'] && $paintcell) { + $this->_tableRect($x + ($table['border_spacing_H']/2)+($bord_det['L']['w'] /2), $y+ ($table['border_spacing_V']/2)+($bord_det['T']['w'] /2), $w-$table['border_spacing_H']-($bord_det['L']['w'] /2)-($bord_det['R']['w'] /2), $h- $table['border_spacing_V']-($bord_det['T']['w'] /2)-($bord_det['B']['w']/2), $bord, $bord_det, false, $table['borders_separate']); + } + else if (!$table['borders_separate']) { + $this->_tableRect($x, $y, $w, $h, $bord, $bord_det, true, $table['borders_separate']); // true causes buffer + } + + } + + //VERTICAL ALIGN + if ($cell['R'] && INTVAL($cell['R']) > 0 && INTVAL($cell['R']) < 90 && isset($cell['va']) && $cell['va']!='B') { $cell['va']='B';} + if (!isset($cell['va']) || $cell['va']=='M') $this->y += ($h-$cell['mih'])/2; + elseif (isset($cell['va']) && $cell['va']=='B') $this->y += $h-$cell['mih']; + + // NESTED CONTENT + + // TEXT (and nested tables) + $this->divalign=$align; + + $this->divwidth=$w; + if (!empty($cell['textbuffer'])) { + if ($level==1) { + if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) { + if (preg_match('/{colsum([0-9]*)[_]*}/', $cell['textbuffer'][0][0], $m)) { + $rep = sprintf("%01.".intval($m[1])."f", $this->colsums[$j]); + $cell['textbuffer'][0][0] = preg_replace('/{colsum[0-9_]*}/', $rep ,$cell['textbuffer'][0][0]); + } + } + else if (!isset($table['is_thead'][$i])) { $this->colsums[$j] += floatval(preg_replace('/^[^0-9\.\,]*/','',$cell['textbuffer'][0][0])); } // mPDF 5.6.66 + } + $opy = $this->y; + // mPDF ITERATION + if ($this->iterationCounter) { + foreach($cell['textbuffer'] AS $k=>$t) { + if (preg_match('/{iteration ([a-zA-Z0-9_]+)}/',$t[0], $m)) { + $vname = '__'.$m[1].'_'; + if (!isset($this->$vname)) { $this->$vname = 1; } + else { $this->$vname++; } + $cell['textbuffer'][$k][0] = preg_replace('/{iteration '.$m[1].'}/', $this->$vname, $cell['textbuffer'][$k][0]); + } + } + } + + + if ($cell['R']) { + $cellPtSize = $cell['textbuffer'][0][11] / $this->shrin_k; + if (!$cellPtSize) { $cellPtSize = $this->default_font_size; } + $cellFontHeight = ($cellPtSize/_MPDFK); + $opx = $this->x; + $angle = INTVAL($cell['R']); + // Only allow 45 to 89 degrees (when bottom-aligned) or exactly 90 or -90 + if ($angle > 90) { $angle = 90; } + else if ($angle > 0 && $angle <45) { $angle = 45; } + else if ($angle < 0) { $angle = -90; } + $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight); + if (isset($cell['a']) && $cell['a']=='R') { + $this->x += ($w) + ($offset) - ($cellFontHeight/3) - ($cell['padding']['R'] + ($table['border_spacing_H']/2)); + } + else if (!isset($cell['a']) || $cell['a']=='C') { + $this->x += ($w/2) + ($offset); + } + else { + $this->x += ($offset) + ($cellFontHeight/3)+($cell['padding']['L'] +($table['border_spacing_H']/2)); + } + $str = ''; + foreach($cell['textbuffer'] AS $t) { $str .= $t[0].' '; } + $str = trim($str); + if (!isset($cell['va']) || $cell['va']=='M') { + $this->y -= ($h-$cell['mih'])/2; //Undo what was added earlier VERTICAL ALIGN + if ($angle > 0) { $this->y += (($h-$cell['mih'])/2) + $cell['padding']['T'] + ($cell['mih']-($cell['padding']['T'] + $cell['padding']['B'])); } + else if ($angle < 0) { $this->y += (($h-$cell['mih'])/2)+ ($cell['padding']['T'] + ($table['border_spacing_V']/2)); } + } + elseif (isset($cell['va']) && $cell['va']=='B') { + $this->y -= $h-$cell['mih']; //Undo what was added earlier VERTICAL ALIGN + if ($angle > 0) { $this->y += $h-($cell['padding']['B'] + ($table['border_spacing_V']/2)); } + else if ($angle < 0) { $this->y += $h-$cell['mih'] + ($cell['padding']['T'] + ($table['border_spacing_V']/2)); } + } + elseif (isset($cell['va']) && $cell['va']=='T') { + if ($angle > 0) { $this->y += $cell['mih']-($cell['padding']['B'] + ($table['border_spacing_V']/2)); } + else if ($angle < 0) { $this->y += ($cell['padding']['T'] + ($table['border_spacing_V']/2)); } + } + $this->Rotate($angle,$this->x,$this->y); + $s_fs = $this->FontSizePt; + $s_f = $this->FontFamily; + $s_st = $this->FontStyle; + if (!empty($cell['textbuffer'][0][3])) { //Font Color + $cor = $cell['textbuffer'][0][3]; + $this->SetTColor($cor); + } + $s_str = $this->strike; + $this->strike = $cell['textbuffer'][0][8]; //Strikethrough + $this->SetFont($cell['textbuffer'][0][4],$cell['textbuffer'][0][2],$cellPtSize,true,true); + $this->Text($this->x,$this->y,$str); + $this->Rotate(0); + $this->SetFont($s_f,$s_st,$s_fs,true,true); + $this->SetTColor(0); + $this->strike = $s_str; + $this->x = $opx; + } + else { + + if (!$this->simpleTables){ + if ($bord_det) { + $btlw = $bord_det['L']['w']; + $btrw = $bord_det['R']['w']; + $bttw = $bord_det['T']['w']; + } + else { + $btlw = 0; + $btrw = 0; + $bttw = 0; + } + if ($table['borders_separate']) { + $xadj = $btlw + $cell['padding']['L'] +($table['border_spacing_H']/2); + $wadj = $btlw + $btrw + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H']; + $yadj = $bttw + $cell['padding']['T'] + ($table['border_spacing_H']/2); + } + else { + $xadj = $btlw/2 + $cell['padding']['L']; + $wadj = ($btlw + $btrw)/2 + $cell['padding']['L'] + $cell['padding']['R']; + $yadj = $bttw/2 + $cell['padding']['T']; + } + } + else if ($this->simpleTables){ + if ($table['borders_separate']) { // NB twice border width + $xadj = $table['simple']['border_details']['L']['w'] + $cell['padding']['L'] +($table['border_spacing_H']/2); + $wadj = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H']; + $yadj = $table['simple']['border_details']['T']['w'] + $cell['padding']['T'] + ($table['border_spacing_H']/2); + } + else { + $xadj = $table['simple']['border_details']['L']['w']/2 + $cell['padding']['L']; + $wadj = ($table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'])/2 + $cell['padding']['L'] + $cell['padding']['R']; + $yadj = $table['simple']['border_details']['T']['w']/2 + $cell['padding']['T']; + } + } + // mPDF 5.6.13 + $this->decimal_offset = 0; + if(substr($cell['a'],0,1) == 'D') { + if ($cell['colspan'] > 1) { $this->divalign = $c['a'] = substr($cell['a'],2,1); } + else { + $smax = $table['decimal_align'][$j]['maxs0']; + $d_content = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1']; + $this->decimal_offset = $smax; + $extra = ($w - $d_content - $wadj); + if ($extra > 0) { + if(substr($cell['a'],2,1) == 'R') { $this->decimal_offset += $extra; } + else if(substr($cell['a'],2,1) == 'C') { $this->decimal_offset += ($extra)/2; } + } + } + } + $this->divwidth=$w-$wadj; + if ($this->divwidth == 0) { $this->divwidth = 0.0001; } + $this->x += $xadj; + $this->y += $yadj; + $this->printbuffer($cell['textbuffer'],'',true); + } + $this->y = $opy; + } + +/*-- BACKGROUNDS --*/ + if (!$this->ColActive) { + if (isset($table['trgradients'][$i]) && ($j==0 || $table['borders_separate'])) { + $g = $this->grad->parseBackgroundGradient($table['trgradients'][$i]); + if ($g) { + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $s = ''; + $clx = $x+ ($table['border_spacing_H']/2); + $cly = $y+ ($table['border_spacing_V']/2); + $clw = $w- $table['border_spacing_H']; + $clh = $h- $table['border_spacing_V']; + // Set clipping path + $s = ' q 0 w '; // Line width=0 + $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc + $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL + $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR + $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR + $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL + $s .= ' W n '; // Ends path no-op & Sets the clipping path + $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s); + } + else { + $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + } + if (isset($table['trbackground-images'][$i]) && ($j==0 || $table['borders_separate'])) { + if ($table['trbackground-images'][$i]['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['trbackground-images'][$i]['gradient'] )) { + $g = $this->grad->parseMozGradient( $table['trbackground-images'][$i]['gradient'] ); + if ($g) { + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $s = ''; + $clx = $x+ ($table['border_spacing_H']/2); + $cly = $y+ ($table['border_spacing_V']/2); + $clw = $w- $table['border_spacing_H']; + $clh = $h- $table['border_spacing_V']; + // Set clipping path + $s = ' q 0 w '; // Line width=0 + $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc + $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL + $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR + $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR + $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL + $s .= ' W n '; // Ends path no-op & Sets the clipping path + $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s); + } + else { + $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + } + else { + $image_id = $table['trbackground-images'][$i]['image_id']; + $orig_w = $table['trbackground-images'][$i]['orig_w']; + $orig_h = $table['trbackground-images'][$i]['orig_h']; + $x_pos = $table['trbackground-images'][$i]['x_pos']; + $y_pos = $table['trbackground-images'][$i]['y_pos']; + $x_repeat = $table['trbackground-images'][$i]['x_repeat']; + $y_repeat = $table['trbackground-images'][$i]['y_repeat']; + $resize = $table['trbackground-images'][$i]['resize']; + $opacity = $table['trbackground-images'][$i]['opacity']; + $itype = $table['trbackground-images'][$i]['itype']; + $clippath = ''; + $gx = $x0; + $gy = $y; + $gh = $h; + $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R']; + if ($table['borders_separate']) { + $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); + $s = ''; + $clx = $x + ($table['border_spacing_H']/2); + $cly = $y + ($table['border_spacing_V']/2); + $clw = $w - $table['border_spacing_H']; + $clh = $h - $table['border_spacing_V']; + // Set clipping path + $s = ' q 0 w '; // Line width=0 + $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL + $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BL + $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK); // line to BR + $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TR + $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL + $s .= ' W n '; // Ends path no-op & Sets the clipping path + $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype); + } + else { + $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype); + } + } + } + } + +/*-- END BACKGROUNDS --*/ + + // TABLE BORDER - if separate + if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) { + $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H']/2); + $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H']/2); + $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V']/2); + $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V']/2); + $tbx = $x; + $tby = $y; + $tbw = $w; + $tbh = $h; + $tab_bord = 0; + + $corner = ''; + if ($i == 0) { // Top + $tby -= $halfspaceT + ($table['border_details']['T']['w']/2); + $tbh += $halfspaceT + ($table['border_details']['T']['w']/2); + $this->setBorder($tab_bord , _BORDER_TOP); + $corner .= 'T'; + } + if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)) { // Bottom + $tbh += $halfspaceB + ($table['border_details']['B']['w']/2); + $this->setBorder($tab_bord , _BORDER_BOTTOM); + $corner .= 'B'; + } + if ($j == 0) { // Left + $tbx -= $halfspaceL + ($table['border_details']['L']['w']/2); + $tbw += $halfspaceL + ($table['border_details']['L']['w']/2); + $this->setBorder($tab_bord , _BORDER_LEFT); + $corner .= 'L'; + } + if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols)) { // Right + $tbw += $halfspaceR + ($table['border_details']['R']['w']/2); + $this->setBorder($tab_bord , _BORDER_RIGHT); + $corner .= 'R'; + } + $this->_tableRect($tbx, $tby, $tbw, $tbh, $tab_bord , $table['border_details'], false, $table['borders_separate'], 'table', $corner, $table['border_spacing_V'], $table['border_spacing_H'] ); + } + + unset($cell ); + //Reset values + $this->Reset(); + + }//end of (if isset(cells)...) + }// end of columns + + $newpagestarted = false; + $this->tabletheadjustfinished = false; + + if ($this->ColActive && $i < $numrows-1 && $level==1) { $this->breakpoints[$this->CurrCol][] = $y + $h; } // *COLUMNS* + +/*-- COLUMNS --*/ + if ($this->ColActive) { + if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); } + } +/*-- END COLUMNS --*/ + + if ($i == $numrows-1) { $this->y = $y + $h; } //last row jump (update this->y position) + if ($this->table_rotate && $level==1) { + $this->tbrot_h += $h; + } + + + + }// end of rows + + if ($this->progressBar) { $this->UpdateProgressBar(7,70,' '); } // *PROGRESS-BAR* + + if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); } + + + if ($this->tableClipPath ) { $this->_out("Q"); } + $this->tableClipPath = ''; + + // Advance down page by half width of bottom border + if ($table['borders_separate']) { $this->y += $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; } + else { $this->y += $table['max_cell_border_width']['B']/2; } + + if ($table['borders_separate'] && $level==1) { $this->tbrot_h += $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; } + else if ($level==1) { $this->tbrot_h += $table['margin']['B'] + $table['max_cell_border_width']['B']/2; } + + $bx = $x0; + $by = $y0; + if ($table['borders_separate']) { + $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2); + if ($tablestartpageno != $this->page) { // IF broken across page + $by += $table['max_cell_border_width']['T']/2; + if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); } + } + else if ($split && $startrow > 0 && empty($tableheader)) { + $by -= ($table['border_spacing_V']/2); + } + else { + $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2); + } + } + else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; } + $by -= $tableheaderadj; + $bh = $this->y - $by; + if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; } + + if ($split) { + $bw = 0; + $finalSpread = true; + for($t=$startcol; $t<$numcols; $t++) { + if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; } + if ($table['colPg'][$t] > $splitpg) { $finalSpread = false; break; } + } + if ($startcol==0) { $firstSpread = true; } + else { $firstSpread = false; } + if ($table['borders_separate']) { + $bw += $table['border_spacing_H']; + if ($firstSpread) { + $bw += $table['padding']['L'] + $table['border_details']['L']['w']; + } + else { + $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); + } + if ($finalSpread) { + $bw += $table['padding']['R'] + $table['border_details']['R']['w']; + } + } + } + else { + $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R']; + } + + if (!$this->ColActive) { + if (isset($table['bgcolor'][-1])) { + $color = $this->ConvertColor($table['bgcolor'][-1]); + if ($color) { + $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color); + } + } + +/*-- BACKGROUNDS --*/ + if (isset($table['gradient'])) { + $g = $this->grad->parseBackgroundGradient($table['gradient']); + if ($g) { + $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + + if (isset($table['background-image'])) { + if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) { + $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] ); + if ($g) { + $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>''); + } + } + else { + $image_id = $table['background-image']['image_id']; + $orig_w = $table['background-image']['orig_w']; + $orig_h = $table['background-image']['orig_h']; + $x_pos = $table['background-image']['x_pos']; + $y_pos = $table['background-image']['y_pos']; + $x_repeat = $table['background-image']['x_repeat']; + $y_repeat = $table['background-image']['y_repeat']; + $resize = $table['background-image']['resize']; + $opacity = $table['background-image']['opacity']; + $itype = $table['background-image']['itype']; + $this->tableBackgrounds[$level*9+2][] = array('x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype); + } + } +/*-- END BACKGROUNDS --*/ + } + + if ($this->tableBackgrounds && $level == 1) { + $s = $this->PrintTableBackgrounds(); + if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) { + $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->tablebuffer); + if ($level == 1) { $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->tablebuffer); } + } + else if ($this->bufferoutput) { + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->headerbuffer); + if ($level == 1) { $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->headerbuffer ); } + } + else { + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + if ($level == 1) { $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->pages[$this->page]); } + } + $this->tableBackgrounds = array(); + } + + + // TABLE BOTTOM MARGIN + if ($table['margin']['B']) { + if (!$this->table_rotate && $level==1) { + $this->DivLn($table['margin']['B'],$this->blklvl,true); // collapsible + } + else { + $this->y += ($table['margin']['B']); + } + } + + if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS* + + if ($this->cacheTables) { fclose($fh); } + + if ($split) { + // Are there more columns to print on a next page? + if ($lastCol < $numcols-1) { + $splitpg++; + $startcol = $lastCol + 1; + return array(false, $startrow, $startcol, $splitpg, $returny, $y0); + } + else { + if ($this->cacheTables) { + unlink($table['cache']); + @unlink($table['cache'].'.bak'); + } + return array(true,0,0,0); + } + } + if ($this->cacheTables) { + unlink($table['cache']); + @unlink($table['cache'].'.bak'); + } + +}//END OF FUNCTION _tableWrite() + + +/////////////////////////END OF TABLE CODE////////////////////////////////// +/*-- END TABLES --*/ + +function _putextgstates() { + for ($i = 1; $i <= count($this->extgstates); $i++) { + $this->_newobj(); + $this->extgstates[$i]['n'] = $this->n; + $this->_out('<</Type /ExtGState'); + foreach ($this->extgstates[$i]['parms'] as $k=>$v) + $this->_out('/'.$k.' '.$v); + $this->_out('>>'); + $this->_out('endobj'); + } +} + +function _putocg() { + if ($this->hasOC) { // mPDF 5.6.01 + $this->_newobj(); + $this->n_ocg_print=$this->n; + $this->_out('<</Type /OCG /Name '.$this->_textstring('Print only')); + $this->_out('/Usage <</Print <</PrintState /ON>> /View <</ViewState /OFF>>>>>>'); + $this->_out('endobj'); + $this->_newobj(); + $this->n_ocg_view=$this->n; + $this->_out('<</Type /OCG /Name '.$this->_textstring('Screen only')); + $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /ON>>>>>>'); + $this->_out('endobj'); + $this->_newobj(); + $this->n_ocg_hidden=$this->n; + $this->_out('<</Type /OCG /Name '.$this->_textstring('Hidden')); + $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /OFF>>>>>>'); + $this->_out('endobj'); + } + // mPDF 5.6.01 Add Layers + if (count($this->layers)) { + ksort($this->layers); + foreach($this->layers as $id=>$layer) { + $this->_newobj(); + $this->layers[$id]['n'] = $this->n; + // mPDF 5.6.28 + if (isset($this->layerDetails[$id]['name']) && $this->layerDetails[$id]['name']) { + $name = $this->layerDetails[$id]['name']; + } + else { $name = $layer['name']; } + $this->_out('<</Type /OCG /Name '.$this->_UTF16BEtextstring($name).'>>'); + $this->_out('endobj'); + } + } +} + + +/*-- IMPORTS --*/ + + // from mPDFI + function _putimportedobjects() { + if (is_array($this->parsers) && count($this->parsers) > 0) { + foreach($this->parsers AS $filename => $p) { + $this->current_parser =& $this->parsers[$filename]; + if (is_array($this->_obj_stack[$filename])) { + while($n = key($this->_obj_stack[$filename])) { + $nObj = $this->current_parser->pdf_resolve_object($this->current_parser->c,$this->_obj_stack[$filename][$n][1]); + $this->_newobj($this->_obj_stack[$filename][$n][0]); + if ($nObj[0] == PDF_TYPE_STREAM) { + $this->pdf_write_value($nObj); + } + else { + $this->pdf_write_value($nObj[1]); + } + $this->_out('endobj'); + $this->_obj_stack[$filename][$n] = null; // free memory + unset($this->_obj_stack[$filename][$n]); + reset($this->_obj_stack[$filename]); + } + } + } + } + } + + + function _putformxobjects() { + $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; + reset($this->tpls); + foreach($this->tpls AS $tplidx => $tpl) { + $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer']; + $this->_newobj(); + $this->tpls[$tplidx]['n'] = $this->n; + $this->_out('<<'.$filter.'/Type /XObject'); + $this->_out('/Subtype /Form'); + $this->_out('/FormType 1'); + // Left/Bottom/Right/Top + $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]', + $tpl['box']['x']*_MPDFK, + $tpl['box']['y']*_MPDFK, + ($tpl['box']['x'] + $tpl['box']['w'])*_MPDFK, + ($tpl['box']['y'] + $tpl['box']['h'])*_MPDFK ) + ); + + + if (isset($tpl['box'])) + $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]',-$tpl['box']['x']*_MPDFK, -$tpl['box']['y']*_MPDFK)); + $this->_out('/Resources '); + + if (isset($tpl['resources'])) { + $this->current_parser =& $tpl['parser']; + $this->pdf_write_value($tpl['resources']); + } else { + $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); + if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) { + $this->_out('/Font <<'); + foreach($this->_res['tpl'][$tplidx]['fonts'] as $font) + $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R'); + $this->_out('>>'); + } + if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || + isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) + { + $this->_out('/XObject <<'); + if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) { + foreach($this->_res['tpl'][$tplidx]['images'] as $image) + $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R'); + } + if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) { + foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $itpl) + $this->_out($this->tplprefix.$i.' '.$itpl['n'].' 0 R'); + } + $this->_out('>>'); + } + $this->_out('>>'); + } + + $this->_out('/Length '.strlen($p).' >>'); + $this->_putstream($p); + $this->_out('endobj'); + } + } + +/*-- END IMPORTS --*/ + + +function _putpatterns() { + for ($i = 1; $i <= count($this->patterns); $i++) { + $x = $this->patterns[$i]['x']; + $y = $this->patterns[$i]['y']; + $w = $this->patterns[$i]['w']; + $h = $this->patterns[$i]['h']; + $pgh = $this->patterns[$i]['pgh']; + $orig_w = $this->patterns[$i]['orig_w']; + $orig_h = $this->patterns[$i]['orig_h']; + $image_id = $this->patterns[$i]['image_id']; + $itype = $this->patterns[$i]['itype']; + $bpa = $this->patterns[$i]['bpa']; // mPDF 5.6.10 background positioning area + + if ($this->patterns[$i]['x_repeat']) { $x_repeat = true; } + else { $x_repeat = false; } + if ($this->patterns[$i]['y_repeat']) { $y_repeat = true; } + else { $y_repeat = false; } + $x_pos = $this->patterns[$i]['x_pos']; + if (stristr($x_pos ,'%') ) { + $x_pos += 0; + $x_pos /= 100; + if (isset($bpa['w']) && $bpa['w']) $x_pos = ($bpa['w'] * $x_pos) - ($orig_w/_MPDFK * $x_pos); // mPDF 5.6.10 + else $x_pos = ($w * $x_pos) - ($orig_w/_MPDFK * $x_pos); + } + $y_pos = $this->patterns[$i]['y_pos']; + if (stristr($y_pos ,'%') ) { + $y_pos += 0; + $y_pos /= 100; + if (isset($bpa['h']) && $bpa['h']) $y_pos = ($bpa['h'] * $y_pos) - ($orig_h/_MPDFK * $y_pos); // mPDF 5.6.10 + else $y_pos = ($h * $y_pos) - ($orig_h/_MPDFK * $y_pos); + } + if (isset($bpa['x']) && $bpa['x']) $adj_x = ($x_pos + $bpa['x']) *_MPDFK; // mPDF 5.6.10 + else $adj_x = ($x_pos + $x) *_MPDFK; + if (isset($bpa['y']) && $bpa['y']) $adj_y = (($pgh - $y_pos - $bpa['y'])*_MPDFK) - $orig_h ; // mPDF 5.6.10 + else $adj_y = (($pgh - $y_pos - $y)*_MPDFK) - $orig_h ; + $img_obj = false; + if ($itype == 'svg' || $itype == 'wmf') { + foreach($this->formobjects AS $fo) { + if ($fo['i'] == $image_id) { + $img_obj = $fo['n']; + $fo_w = $fo['w']; + $fo_h = -$fo['h']; + $wmf_x = $fo['x']; + $wmf_y = $fo['y']; + break; + } + } + } + else { + foreach($this->images AS $img) { + if ($img['i'] == $image_id) { $img_obj = $img['n']; break; } + } + } + if (!$img_obj ) { echo "Problem: Image object not found for background pattern ".$img['i']; exit; } + + $this->_newobj(); + $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); + if ($itype == 'svg' || $itype == 'wmf') { + $this->_out('/XObject <</FO'.$image_id.' '.$img_obj.' 0 R >>'); + // ******* ADD ANY ExtGStates, Shading AND Fonts needed for the FormObject + // Set in classes/svg array['fo'] = true + // Required that _putshaders comes before _putpatterns in _putresources + // This adds any resources associated with any FormObject to every Formobject - overkill but works! + if (count($this->extgstates)) { + $this->_out('/ExtGState <<'); + foreach($this->extgstates as $k=>$extgstate) + if (isset($extgstate['fo']) && $extgstate['fo']) { + if (isset($extgstate['trans'])) $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R'); + else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R'); + } + $this->_out('>>'); + } +/*-- BACKGROUNDS --*/ + if (isset($this->gradients) AND (count($this->gradients) > 0)) { + $this->_out('/Shading <<'); + foreach ($this->gradients as $id => $grad) { + if (isset($grad['fo']) && $grad['fo']) { + $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R'); + } + } + $this->_out('>>'); + } +/*-- END BACKGROUNDS --*/ + $this->_out('/Font <<'); + foreach($this->fonts as $font) { + if (!$font['used'] && $font['type']=='TTF') { continue; } + if (isset($font['fo']) && $font['fo']) { + if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) { + foreach($font['n'] AS $k => $fid) { + $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R'); + } + } + else { + $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R'); + } + } + } + $this->_out('>>'); + } + else { + $this->_out('/XObject <</I'.$image_id.' '.$img_obj.' 0 R >>'); + } + $this->_out('>>'); + $this->_out('endobj'); + + $this->_newobj(); + $this->patterns[$i]['n'] = $this->n; + $this->_out('<< /Type /Pattern /PatternType 1 /PaintType 1 /TilingType 2'); + $this->_out('/Resources '. ($this->n-1) .' 0 R'); + + $this->_out(sprintf('/BBox [0 0 %.3F %.3F]',$orig_w,$orig_h)); + if ($x_repeat) { $this->_out(sprintf('/XStep %.3F',$orig_w)); } + else { $this->_out(sprintf('/XStep %d',99999)); } + if ($y_repeat) { $this->_out(sprintf('/YStep %.3F',$orig_h)); } + else { $this->_out(sprintf('/YStep %d',99999)); } + + if ($itype == 'svg' || $itype == 'wmf') { + $this->_out(sprintf('/Matrix [1 0 0 -1 %.3F %.3F]', $adj_x, ($adj_y+$orig_h))); + $s = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q",($orig_w/$fo_w), (-$orig_h/$fo_h), -($orig_w/$fo_w)*$wmf_x, ($orig_w/$fo_w)*$wmf_y, $image_id); + } + else { + $this->_out(sprintf('/Matrix [1 0 0 1 %.3F %.3F]',$adj_x,$adj_y)); + $s = sprintf("q %.3F 0 0 %.3F 0 0 cm /I%d Do Q",$orig_w,$orig_h,$image_id); + } + + if ($this->compress) { + $this->_out('/Filter /FlateDecode'); + $s = gzcompress($s); + } + $this->_out('/Length '.strlen($s).'>>'); + $this->_putstream($s); + $this->_out('endobj'); + } +} + +/*-- BACKGROUNDS --*/ +function _putshaders() { + $maxid = count($this->gradients); //index for transparency gradients + foreach ($this->gradients as $id => $grad) { + if (($grad['type'] == 2 || $grad['type'] == 3) && empty($grad['is_mask'])) { + $this->_newobj(); + $this->_out('<<'); + $this->_out('/FunctionType 3'); + $this->_out('/Domain [0 1]'); + $fn = array(); + $bd = array(); + $en = array(); + for($i=0; $i<(count($grad['stops'])-1); $i++) { + $fn[] = ($this->n+1+$i).' 0 R'; + $en[] = '0 1'; + if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); } + } + $this->_out('/Functions ['.implode(' ',$fn).']'); + $this->_out('/Bounds ['.implode(' ',$bd).']'); + $this->_out('/Encode ['.implode(' ',$en).']'); + $this->_out('>>'); + $this->_out('endobj'); + $f1 = $this->n; + for($i=0; $i<(count($grad['stops'])-1); $i++) { + $this->_newobj(); + $this->_out('<<'); + $this->_out('/FunctionType 2'); + $this->_out('/Domain [0 1]'); + $this->_out('/C0 ['.$grad['stops'][$i]['col'].']'); + $this->_out('/C1 ['.$grad['stops'][$i+1]['col'].']'); + $this->_out('/N 1'); + $this->_out('>>'); + $this->_out('endobj'); + } + } + if ($grad['type'] == 2 || $grad['type'] == 3) { + if (isset($grad['trans']) && $grad['trans']) { + $this->_newobj(); + $this->_out('<<'); + $this->_out('/FunctionType 3'); + $this->_out('/Domain [0 1]'); + $fn = array(); + $bd = array(); + $en = array(); + for($i=0; $i<(count($grad['stops'])-1); $i++) { + $fn[] = ($this->n+1+$i).' 0 R'; + $en[] = '0 1'; + if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); } + } + $this->_out('/Functions ['.implode(' ',$fn).']'); + $this->_out('/Bounds ['.implode(' ',$bd).']'); + $this->_out('/Encode ['.implode(' ',$en).']'); + $this->_out('>>'); + $this->_out('endobj'); + $f2 = $this->n; + for($i=0; $i<(count($grad['stops'])-1); $i++) { + $this->_newobj(); + $this->_out('<<'); + $this->_out('/FunctionType 2'); + $this->_out('/Domain [0 1]'); + $this->_out(sprintf('/C0 [%.3F]', $grad['stops'][$i]['opacity'])); + $this->_out(sprintf('/C1 [%.3F]', $grad['stops'][$i+1]['opacity'])); + $this->_out('/N 1'); + $this->_out('>>'); + $this->_out('endobj'); + } + } + } + + if (empty($grad['is_mask'])) { + $this->_newobj(); + $this->_out('<<'); + $this->_out('/ShadingType '.$grad['type']); + if (isset($grad['colorspace'])) { + $this->_out('/ColorSpace /Device'.$grad['colorspace']); // Can use CMYK if all C0 and C1 above have 4 values + } else { + $this->_out('/ColorSpace /DeviceRGB'); + } + if ($grad['type'] == 2) { + $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3])); + $this->_out('/Function '.$f1.' 0 R'); + $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] '); + $this->_out('>>'); + } + else if ($grad['type'] == 3) { + //x0, y0, r0, x1, y1, r1 + //at this this time radius of inner circle is 0 + $ir = 0; + if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; } + $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4])); + $this->_out('/Function '.$f1.' 0 R'); + $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] '); + $this->_out('>>'); + } + else if ($grad['type']==6) { + $this->_out('/BitsPerCoordinate 16'); + $this->_out('/BitsPerComponent 8'); + if ($grad['colorspace'] == 'CMYK') { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1 0 1]'); } + else if ($grad['colorspace'] == 'Gray') { $this->_out('/Decode[0 1 0 1 0 1]'); } + else { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1]'); } + $this->_out('/BitsPerFlag 8'); + $this->_out('/Length '.strlen($grad['stream'])); + $this->_out('>>'); + $this->_putstream($grad['stream']); + } + $this->_out('endobj'); + } + + $this->gradients[$id]['id'] = $this->n; + + // set pattern object + $this->_newobj(); + $out = '<< /Type /Pattern /PatternType 2'; + $out .= ' /Shading '.$this->gradients[$id]['id'].' 0 R'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + + + $this->gradients[$id]['pattern'] = $this->n; + + if (isset($grad['trans']) && $grad['trans']) { + // luminosity pattern + $transid = $id + $maxid; + $this->_newobj(); + $this->_out('<<'); + $this->_out('/ShadingType '.$grad['type']); + $this->_out('/ColorSpace /DeviceGray'); + if ($grad['type'] == 2) { + $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3])); + $this->_out('/Function '.$f2.' 0 R'); + $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] '); + $this->_out('>>'); + } + else if ($grad['type'] == 3) { + //x0, y0, r0, x1, y1, r1 + //at this this time radius of inner circle is 0 + $ir = 0; + if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; } + $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4])); + $this->_out('/Function '.$f2.' 0 R'); + $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] '); + $this->_out('>>'); + } + else if ($grad['type']==6) { + $this->_out('/BitsPerCoordinate 16'); + $this->_out('/BitsPerComponent 8'); + $this->_out('/Decode[0 1 0 1 0 1]'); + $this->_out('/BitsPerFlag 8'); + $this->_out('/Length '.strlen($grad['stream_trans'])); + $this->_out('>>'); + $this->_putstream($grad['stream_trans']); + } + $this->_out('endobj'); + + $this->gradients[$transid]['id'] = $this->n; + $this->_newobj(); + $this->_out('<< /Type /Pattern /PatternType 2'); + $this->_out('/Shading '.$this->gradients[$transid]['id'].' 0 R'); + $this->_out('>>'); + $this->_out('endobj'); + $this->gradients[$transid]['pattern'] = $this->n; + $this->_newobj(); + // Need to extend size of viewing box in case of transformations + $str = 'q /a0 gs /Pattern cs /p'.$transid.' scn -'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).' re f Q'; + $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; + $p=($this->compress) ? gzcompress($str) : $str; + $this->_out('<< /Type /XObject /Subtype /Form /FormType 1 '.$filter); + $this->_out('/Length '.strlen($p)); + $this->_out('/BBox [-'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).']'); + $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceGray >>'); + $this->_out('/Resources <<'); + $this->_out('/ExtGState << /a0 << /ca 1 /CA 1 >> >>'); + $this->_out('/Pattern << /p'.$transid.' '.$this->gradients[$transid]['pattern'].' 0 R >>'); + $this->_out('>>'); + $this->_out('>>'); + $this->_putstream($p); + $this->_out('endobj'); + $this->_newobj(); + $this->_out('<< /Type /Mask /S /Luminosity /G '.($this->n - 1).' 0 R >>'."\n".'endobj'); + $this->_newobj(); + $this->_out('<< /Type /ExtGState /SMask '.($this->n - 1).' 0 R /AIS false >>'."\n".'endobj'); + if ($grad['fo']) { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id, 'fo'=>true); } + else { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id); } + } + } +} +/*-- END BACKGROUNDS --*/ + +function _putspotcolors() { + foreach($this->spotColors as $name=>$color) { + $this->_newobj(); + $this->_out('[/Separation /'.str_replace(' ','#20',$name)); + $this->_out('/DeviceCMYK <<'); + $this->_out('/Range [0 1 0 1 0 1 0 1] /C0 [0 0 0 0] '); + $this->_out(sprintf('/C1 [%.3F %.3F %.3F %.3F] ',$color['c']/100,$color['m']/100,$color['y']/100,$color['k']/100)); + $this->_out('/FunctionType 2 /Domain [0 1] /N 1>>]'); + $this->_out('endobj'); + $this->spotColors[$name]['n']=$this->n; + } +} + + +function _putresources() { + if ($this->hasOC || count($this->layers)) // mPDF 5.6.01 + $this->_putocg(); + $this->_putextgstates(); + $this->_putspotcolors(); + if ($this->progressBar) { $this->UpdateProgressBar(2,'40','Compiling Fonts'); } // *PROGRESS-BAR* + $this->_putfonts(); + if ($this->progressBar) { $this->UpdateProgressBar(2,'50','Compiling Images'); } // *PROGRESS-BAR* + $this->_putimages(); + $this->_putformobjects(); // *IMAGES-CORE* + +/*-- IMPORTS --*/ + if ($this->enableImports) { + $this->_putformxobjects(); + $this->_putimportedobjects(); + } +/*-- END IMPORTS --*/ + +/*-- BACKGROUNDS --*/ + $this->_putshaders(); + $this->_putpatterns(); +/*-- END BACKGROUNDS --*/ + + + //Resource dictionary + $this->offsets[2]=strlen($this->buffer); + $this->_out('2 0 obj'); + $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); + + $this->_out('/Font <<'); + foreach($this->fonts as $font) { + if (!$font['used'] && $font['type']=='TTF') { continue; } + if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) { + foreach($font['n'] AS $k => $fid) { + $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R'); + } + } + else { + $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R'); + } + } + $this->_out('>>'); + + if (count($this->spotColors)) { + $this->_out('/ColorSpace <<'); + foreach($this->spotColors as $color) + $this->_out('/CS'.$color['i'].' '.$color['n'].' 0 R'); + $this->_out('>>'); + } + + if (count($this->extgstates)) { + $this->_out('/ExtGState <<'); + foreach($this->extgstates as $k=>$extgstate) + if (isset($extgstate['trans'])) $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R'); + else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R'); + $this->_out('>>'); + } + +/*-- BACKGROUNDS --*/ + if (isset($this->gradients) AND (count($this->gradients) > 0)) { + $this->_out('/Shading <<'); + foreach ($this->gradients as $id => $grad) { + $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R'); + } + $this->_out('>>'); + +/* + // ??? Not needed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + $this->_out('/Pattern <<'); + foreach ($this->gradients as $id => $grad) { + $this->_out('/P'.$id.' '.$grad['pattern'].' 0 R'); + } + $this->_out('>>'); +*/ + } +/*-- END BACKGROUNDS --*/ + + if(count($this->images) || count($this->formobjects) || ($this->enableImports && count($this->tpls))) { + $this->_out('/XObject <<'); + foreach($this->images as $image) + $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R'); + foreach($this->formobjects as $formobject) + $this->_out('/FO'.$formobject['i'].' '.$formobject['n'].' 0 R'); +/*-- IMPORTS --*/ + if ($this->enableImports && count($this->tpls)) { + foreach($this->tpls as $tplidx => $tpl) { + $this->_out($this->tplprefix.$tplidx.' '.$tpl['n'].' 0 R'); + } + } +/*-- END IMPORTS --*/ + $this->_out('>>'); + } + +/*-- BACKGROUNDS --*/ + + if (count($this->patterns)) { + $this->_out('/Pattern <<'); + foreach($this->patterns as $k=>$patterns) + $this->_out('/P'.$k.' '.$patterns['n'].' 0 R'); + $this->_out('>>'); + } +/*-- END BACKGROUNDS --*/ + + // mPDF 5.6.01 + if ($this->hasOC || count($this->layers)) { + $this->_out('/Properties <<'); + if ($this->hasOC) { + $this->_out('/OC1 '.$this->n_ocg_print.' 0 R /OC2 '.$this->n_ocg_view.' 0 R /OC3 '.$this->n_ocg_hidden.' 0 R '); + } + if (count($this->layers)) { + foreach($this->layers as $id=>$layer) + $this->_out('/ZI'.$id.' '.$layer['n'].' 0 R'); + } + $this->_out('>>'); + } + + $this->_out('>>'); + $this->_out('endobj'); // end resource dictionary + + $this->_putbookmarks(); // *BOOKMARKS* + + if (isset($this->js) && $this->js) { + $this->_putjavascript(); + } + +/*-- ENCRYPTION --*/ + if ($this->encrypted) { + $this->_newobj(); + $this->enc_obj_id = $this->n; + $this->_out('<<'); + $this->_putencryption(); + $this->_out('>>'); + $this->_out('endobj'); + } +/*-- END ENCRYPTION --*/ +} + + +function _putjavascript() { + $this->_newobj(); + $this->n_js = $this->n; + $this->_out('<<'); + $this->_out('/Names [(EmbeddedJS) '.(1 + $this->n).' 0 R ]'); + $this->_out('>>'); + $this->_out('endobj'); + + $this->_newobj(); + $this->_out('<<'); + $this->_out('/S /JavaScript'); + $this->_out('/JS '.$this->_textstring($this->js)); + $this->_out('>>'); + $this->_out('endobj'); +} + + + + +/*-- ENCRYPTION --*/ +function _putencryption() { + $this->_out('/Filter /Standard'); + if ($this->useRC128encryption) { + $this->_out('/V 2'); + $this->_out('/R 3'); + $this->_out('/Length 128'); + } + else { + $this->_out('/V 1'); + $this->_out('/R 2'); + } + $this->_out('/O ('.$this->_escape($this->Ovalue).')'); + $this->_out('/U ('.$this->_escape($this->Uvalue).')'); + $this->_out('/P '.$this->Pvalue); +} +/*-- END ENCRYPTION --*/ + +function _puttrailer() { + $this->_out('/Size '.($this->n+1)); + $this->_out('/Root '.$this->n.' 0 R'); + $this->_out('/Info '.$this->InfoRoot.' 0 R'); +/*-- ENCRYPTION --*/ + if ($this->encrypted) { + $this->_out('/Encrypt '.$this->enc_obj_id.' 0 R'); + $this->_out('/ID [<'.$this->uniqid.'> <'.$this->uniqid.'>]'); + } + else { +/*-- END ENCRYPTION --*/ + $uniqid = md5(time() . $this->buffer); + $this->_out('/ID [<'.$uniqid.'> <'.$uniqid.'>]'); +/*-- ENCRYPTION --*/ + } +/*-- END ENCRYPTION --*/ +} + +/*-- ENCRYPTION --*/ +function SetProtection($permissions=array(),$user_pass='',$owner_pass=null, $length=40) { + $this->encrypted=false; + if (is_string($permissions) && strlen($permissions)>0) { $permissions = array($permissions); } + else if (!is_array($permissions)) { return 0; } + $this->last_rc4_key=''; + $this->padding="\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08". + "\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A"; + + $options = array( + 'print' => 4, // bit 3 + 'modify' => 8, // bit 4 + 'copy' => 16, // bit 5 + 'annot-forms' => 32, // bit 6 + 'fill-forms' => 256, // bit 9 + 'extract' => 512, // bit 10 + 'assemble' => 1024,// bit 11 + 'print-highres' => 2048 // bit 12 + ); + // bit 31 = 1073741824 + // bit 32 = 2147483648 + // bits 13-31 = 2147479552 + // bits 13-32 = 4294963200 + 192 = 4294963392 + $protection = 4294963392; // bits 7,8,13-32 + foreach ($permissions as $permission) { + if (!isset($options[$permission])) + $this->Error('Incorrect permission: '.$permission); + if ($options[$permission] > 32) { $this->useRC128encryption = true; } + if (isset($options[$permission])) $protection += $options[$permission]; + } + if ($length==128) { $this->useRC128encryption = true; } + if ($owner_pass === null) + $owner_pass = uniqid(rand()); + $this->encrypted = true; + $this->_generateencryptionkey($user_pass, $owner_pass, $protection); +} + + +// Compute key depending on object number where the encrypted data is stored +function _objectkey($n) { + if ($this->useRC128encryption) + $len = 16; + else + $len = 10; + return substr($this->_md5_16($this->encryption_key.pack('VXxx',$n)),0,$len); +} + +// RC4 is the standard encryption algorithm used in PDF format +function _RC4($key, $text) { + if ($this->last_rc4_key != $key) { + $k = str_repeat($key, 256/strlen($key)+1); + $rc4 = range(0,255); + $j = 0; + for ($i=0; $i<256; $i++){ + $t = $rc4[$i]; + $j = ($j + $t + ord($k[$i])) % 256; + $rc4[$i] = $rc4[$j]; + $rc4[$j] = $t; + } + $this->last_rc4_key = $key; + $this->last_rc4_key_c = $rc4; + } else { + $rc4 = $this->last_rc4_key_c; + } + + $len = strlen($text); + $a = 0; + $b = 0; + $out = ''; + for ($i=0; $i<$len; $i++){ + $a = ($a+1)%256; + $t= $rc4[$a]; + $b = ($b+$t)%256; + $rc4[$a] = $rc4[$b]; + $rc4[$b] = $t; + $k = $rc4[($rc4[$a]+$rc4[$b])%256]; + $out.= chr(ord($text[$i]) ^ $k); + } + return $out; +} + +// Get MD5 as binary string +function _md5_16($string) { + return pack('H*',md5($string)); +} + +// Compute O value +function _Ovalue($user_pass, $owner_pass) { + $tmp = $this->_md5_16($owner_pass); + if ($this->useRC128encryption) { + for ($i = 0; $i < 50; ++$i) { + $tmp = $this->_md5_16($tmp); + } + } + if ($this->useRC128encryption) + $keybytelen = (128 / 8); + else + $keybytelen = (40 / 8); + $owner_RC4_key = substr($tmp,0,$keybytelen); + $enc = $this->_RC4($owner_RC4_key, $user_pass); + if ($this->useRC128encryption) { + $len = strlen($owner_RC4_key); + for ($i = 1; $i <= 19; ++$i) { + $key = ''; + for ($j = 0; $j < $len; ++$j) { + $key .= chr(ord($owner_RC4_key{$j}) ^ $i); + } + $enc = $this->_RC4($key, $enc); + } + } + return $enc; +} + +// Compute U value +function _Uvalue() { + if ($this->useRC128encryption) { + $tmp = $this->_md5_16($this->padding.$this->_hexToString($this->uniqid)); + $enc = $this->_RC4($this->encryption_key, $tmp); + $len = strlen($tmp); + for ($i=1; $i<=19; ++$i) { + $key = ''; + for ($j=0; $j<$len; ++$j) { + $key .= chr(ord($this->encryption_key{$j}) ^ $i); + } + $enc = $this->_RC4($key, $enc); + } + $enc .= str_repeat("\x00", 16); + return substr($enc, 0, 32); + } + else { + return $this->_RC4($this->encryption_key, $this->padding); + } +} + +// Compute encryption key +function _generateencryptionkey($user_pass, $owner_pass, $protection) { + // Pad passwords + $user_pass = substr($user_pass.$this->padding,0,32); + $owner_pass = substr($owner_pass.$this->padding,0,32); + $chars = 'ABCDEF1234567890'; + $id = ''; + for ($i=0; $i<32; $i++) { $id .= $chars{rand(0, 15)}; } + $this->uniqid = md5($id); + // Compute O value + $this->Ovalue = $this->_Ovalue($user_pass,$owner_pass); + // Compute encyption key + if ($this->useRC128encryption) + $keybytelen = (128/8); + else + $keybytelen = (40/8); + $prot = sprintf('%032b', $protection); + $perms = chr(bindec(substr($prot,24,8))); + $perms .= chr(bindec(substr($prot,16,8))); + $perms .= chr(bindec(substr($prot,8,8))); + $perms .= chr(bindec(substr($prot,0,8))); + $tmp = $this->_md5_16($user_pass.$this->Ovalue.$perms.$this->_hexToString($this->uniqid)); + if ($this->useRC128encryption) { + for ($i=0; $i<50; ++$i) { + $tmp = $this->_md5_16(substr($tmp, 0, $keybytelen)); + } + } + $this->encryption_key = substr($tmp,0,$keybytelen); + // Compute U value + $this->Uvalue = $this->_Uvalue(); + // Compute P value + $this->Pvalue = $protection; +} + + +function _hexToString($hs) { + $s = ''; + $len = strlen($hs); + if (($len % 2) != 0) { + $hs .= '0'; + ++$len; + } + for ($i = 0; $i < $len; $i += 2) { + $s .= chr(hexdec($hs{$i}.$hs{($i + 1)})); + } + return $s; +} + +/*-- END ENCRYPTION --*/ + +//========================================= +/*-- BOOKMARKS --*/ +// FROM class PDF_Bookmark + +function Bookmark($txt,$level=0,$y=0) { + $txt = $this->purify_utf8_text($txt); + if ($this->text_input_as_HTML) { + $txt = $this->all_entities_to_utf8($txt); + } + if($y==-1) { + if (!$this->ColActive){ $y=$this->y; } + else { $y = $this->y0; } // If columns are on - mark top of columns + } + // else y is used as set, or =0 i.e. top of page + // DIRECTIONALITY RTL + $bmo = array('t'=>$txt,'l'=>$level,'y'=>$y,'p'=>$this->page); + if ($this->keep_block_together) { + $this->ktBMoutlines[]= $bmo; + } +/*-- TABLES --*/ + else if ($this->table_rotate) { + $this->tbrot_BMoutlines[]= $bmo; + } + else if ($this->kwt) { + $this->kwt_BMoutlines[]= $bmo; + } +/*-- END TABLES --*/ + else if ($this->ColActive) { // *COLUMNS* + $this->col_BMoutlines[]= $bmo; // *COLUMNS* + } // *COLUMNS* + else { + $this->BMoutlines[]= $bmo; + } +} + + +function _putbookmarks() +{ + $nb=count($this->BMoutlines); + if($nb==0) + return; + + // mPDF 5.6.36 + $bmo = $this->BMoutlines; + $this->BMoutlines = array(); + $lastlevel = -1; + for($i=0;$i<count($bmo);$i++) { + if ($bmo[$i]['l']>0) { + while($bmo[$i]['l']-$lastlevel > 1) { // If jump down more than one level, insert a new entry + $new = $bmo[$i]; + $new['t']="[".$new['t']."]"; // Put [] around text/title to highlight + $new['l']=$lastlevel+1; + $lastlevel++; + $this->BMoutlines[] = $new; + } + } + $this->BMoutlines[] = $bmo[$i]; + $lastlevel = $bmo[$i]['l']; + } + $nb=count($this->BMoutlines); + + $lru=array(); + $level=0; + foreach($this->BMoutlines as $i=>$o) { + if($o['l']>0) { + $parent=$lru[$o['l']-1]; + //Set parent and last pointers + $this->BMoutlines[$i]['parent']=$parent; + $this->BMoutlines[$parent]['last']=$i; + if($o['l']>$level) { + //Level increasing: set first pointer + $this->BMoutlines[$parent]['first']=$i; + } + } + else { + $this->BMoutlines[$i]['parent']=$nb; + } + if($o['l']<=$level and $i>0) { + //Set prev and next pointers + $prev=$lru[$o['l']]; + $this->BMoutlines[$prev]['next']=$i; + $this->BMoutlines[$i]['prev']=$prev; + } + $lru[$o['l']]=$i; + $level=$o['l']; + } + + + //Outline items + $n=$this->n+1; + foreach($this->BMoutlines as $i=>$o) { + $this->_newobj(); + $this->_out('<_UTF16BEtextstring($o['t'])); + $this->_out('/Parent '.($n+$o['parent']).' 0 R'); + if(isset($o['prev'])) + $this->_out('/Prev '.($n+$o['prev']).' 0 R'); + if(isset($o['next'])) + $this->_out('/Next '.($n+$o['next']).' 0 R'); + if(isset($o['first'])) + $this->_out('/First '.($n+$o['first']).' 0 R'); + if(isset($o['last'])) + $this->_out('/Last '.($n+$o['last']).' 0 R'); + + + if (isset($this->pageDim[$o['p']]['h'])) { $h=$this->pageDim[$o['p']]['h']; } + else { $h = 0; } + + $this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.3F null]',1+2*($o['p']),($h-$o['y'])*_MPDFK)); + if (isset($this->bookmarkStyles) && isset($this->bookmarkStyles[$o['l']])) { + // font style + $bms = $this->bookmarkStyles[$o['l']]['style']; + $style = 0; + if (strpos($bms,'B') !== false) { $style += 2; } + if (strpos($bms,'I') !== false) { $style += 1; } + $this->_out(sprintf('/F %d', $style)); + // Colour + $col = $this->bookmarkStyles[$o['l']]['color']; + if (isset($col) && is_array($col) && count($col)==3) { + $this->_out(sprintf('/C [%.3F %.3F %.3F]', ($col[0]/255), ($col[1]/255), ($col[2]/255))); + } + } + + $this->_out('/Count 0>>'); + $this->_out('endobj'); + } + //Outline root + $this->_newobj(); + $this->OutlineRoot=$this->n; + $this->_out('<_out('/Last '.($n+$lru[0]).' 0 R>>'); + $this->_out('endobj'); +} +/*-- END BOOKMARKS --*/ + + + +//====================================================== + + +// DEPRACATED but included for backwards compatability +function startPageNums() { +} + +//====================================================== +/*-- TOC --*/ +// ToC TABLE OF CONTENTS + +// Initiate, and Mark a place for the Table of Contents to be inserted +function TOC($tocfont='', $tocfontsize=0, $tocindent=0, $resetpagenum='', $pagenumstyle='', $suppress='', $toc_orientation='', $TOCusePaging=true, $TOCuseLinking=false, $toc_id=0, $tocoutdent='') { // mPDF 5.6.19 + if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); } + if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); } + $this->tocontents->TOC($tocfont, $tocfontsize, $tocindent, $resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $TOCusePaging, $TOCuseLinking, $toc_id, $tocoutdent); // mPDF 5.6.19 +} + + +function TOCpagebreakByArray($a) { + if (!is_array($a)) { $a = array(); } + if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); } + if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); } + $tocoutdent = (isset($a['tocoutdent']) ? $a['tocoutdent'] : (isset($a['outdent']) ? $a['outdent'] : '')); + $TOCusePaging = (isset($a['TOCusePaging']) ? $a['TOCusePaging'] : (isset($a['paging']) ? $a['paging'] : true)); + $TOCuseLinking = (isset($a['TOCuseLinking']) ? $a['TOCuseLinking'] : (isset($a['links']) ? $a['links'] : '')); + $toc_orientation = (isset($a['toc_orientation']) ? $a['toc_orientation'] : (isset($a['toc-orientation']) ? $a['toc-orientation'] : '')); + $toc_mgl = (isset($a['toc_mgl']) ? $a['toc_mgl'] : (isset($a['toc-margin-left']) ? $a['toc-margin-left'] : '')); + $toc_mgr = (isset($a['toc_mgr']) ? $a['toc_mgr'] : (isset($a['toc-margin-right']) ? $a['toc-margin-right'] : '')); + $toc_mgt = (isset($a['toc_mgt']) ? $a['toc_mgt'] : (isset($a['toc-margin-top']) ? $a['toc-margin-top'] : '')); + $toc_mgb = (isset($a['toc_mgb']) ? $a['toc_mgb'] : (isset($a['toc-margin-bottom']) ? $a['toc-margin-bottom'] : '')); + $toc_mgh = (isset($a['toc_mgh']) ? $a['toc_mgh'] : (isset($a['toc-margin-header']) ? $a['toc-margin-header'] : '')); + $toc_mgf = (isset($a['toc_mgf']) ? $a['toc_mgf'] : (isset($a['toc-margin-footer']) ? $a['toc-margin-footer'] : '')); + $toc_ohname = (isset($a['toc_ohname']) ? $a['toc_ohname'] : (isset($a['toc-odd-header-name']) ? $a['toc-odd-header-name'] : '')); + $toc_ehname = (isset($a['toc_ehname']) ? $a['toc_ehname'] : (isset($a['toc-even-header-name']) ? $a['toc-even-header-name'] : '')); + $toc_ofname = (isset($a['toc_ofname']) ? $a['toc_ofname'] : (isset($a['toc-odd-footer-name']) ? $a['toc-odd-footer-name'] : '')); + $toc_efname = (isset($a['toc_efname']) ? $a['toc_efname'] : (isset($a['toc-even-footer-name']) ? $a['toc-even-footer-name'] : '')); + $toc_ohvalue = (isset($a['toc_ohvalue']) ? $a['toc_ohvalue'] : (isset($a['toc-odd-header-value']) ? $a['toc-odd-header-value'] : 0)); + $toc_ehvalue = (isset($a['toc_ehvalue']) ? $a['toc_ehvalue'] : (isset($a['toc-even-header-value']) ? $a['toc-even-header-value'] : 0)); + $toc_ofvalue = (isset($a['toc_ofvalue']) ? $a['toc_ofvalue'] : (isset($a['toc-odd-footer-value']) ? $a['toc-odd-footer-value'] : 0)); + $toc_efvalue = (isset($a['toc_efvalue']) ? $a['toc_efvalue'] : (isset($a['toc-even-footer-value']) ? $a['toc-even-footer-value'] : 0)); + $toc_preHTML = (isset($a['toc_preHTML']) ? $a['toc_preHTML'] : (isset($a['toc-preHTML']) ? $a['toc-preHTML'] : '')); + $toc_postHTML = (isset($a['toc_postHTML']) ? $a['toc_postHTML'] : (isset($a['toc-postHTML']) ? $a['toc-postHTML'] : '')); + $toc_bookmarkText = (isset($a['toc_bookmarkText']) ? $a['toc_bookmarkText'] : (isset($a['toc-bookmarkText']) ? $a['toc-bookmarkText'] : '')); + $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : ''); + $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : ''); + $suppress = (isset($a['suppress']) ? $a['suppress'] : ''); + $orientation = (isset($a['orientation']) ? $a['orientation'] : ''); + $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : '')); + $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : '')); + $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : '')); + $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : '')); + $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : '')); + $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : '')); + $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : '')); + $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : '')); + $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : '')); + $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : '')); + $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0)); + $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0)); + $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0)); + $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0)); + $toc_id = (isset($a['toc_id']) ? $a['toc_id'] : (isset($a['name']) ? $a['name'] : 0)); + $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : '')); + $toc_pagesel = (isset($a['toc_pagesel']) ? $a['toc_pagesel'] : (isset($a['toc-pageselector']) ? $a['toc-pageselector'] : '')); + $sheetsize = (isset($a['sheetsize']) ? $a['sheetsize'] : (isset($a['sheet-size']) ? $a['sheet-size'] : '')); + $toc_sheetsize = (isset($a['toc_sheetsize']) ? $a['toc_sheetsize'] : (isset($a['toc-sheet-size']) ? $a['toc-sheet-size'] : '')); + + $this->TOCpagebreak($tocfont, $tocfontsize, $tocindent, $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent); // mPDF 5.6.19 + +} + +function TOCpagebreak($tocfont='', $tocfontsize='', $tocindent='', $TOCusePaging=true, $TOCuseLinking='', $toc_orientation='', $toc_mgl='',$toc_mgr='',$toc_mgt='',$toc_mgb='',$toc_mgh='',$toc_mgf='',$toc_ohname='',$toc_ehname='',$toc_ofname='',$toc_efname='',$toc_ohvalue=0,$toc_ehvalue=0,$toc_ofvalue=0, $toc_efvalue=0, $toc_preHTML='', $toc_postHTML='', $toc_bookmarkText='', $resetpagenum='', $pagenumstyle='', $suppress='', $orientation='', $mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0, $toc_id=0, $pagesel='', $toc_pagesel='', $sheetsize='', $toc_sheetsize='', $tocoutdent='') { // mPDF 5.6.19) { + if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); } + if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); } + //Start a new page + if($this->state==0) $this->AddPage(); + if ($this->y == $this->tMargin && (!$this->mirrorMargins ||($this->mirrorMargins && $this->page % 2==1))) { + // Don't add a page + if ($this->page==1 && count($this->PageNumSubstitutions)==0) { + if (!$suppress) { $suppress = 'off'; } + if (!$resetpagenum) { $resetpagenum= 1; } + //$this->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress); + } + $this->PageNumSubstitutions[] = array('from'=>$this->page, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress); + } + else { + $this->AddPage($orientation,'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$sheetsize); + } + + $this->tocontents->TOCpagebreak($tocfont, $tocfontsize, $tocindent, $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent); // mPDF 5.6.19 +} + +function TOC_Entry($txt, $level=0, $toc_id=0) { + $txt = $this->purify_utf8_text($txt); + if ($this->text_input_as_HTML) { + $txt = $this->all_entities_to_utf8($txt); + } + if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); } + if ($this->ColActive) { $ily = $this->y0; } else { $ily = $this->y; } // use top of columns + + // mPDF 5.6.19 mPDF 5.6.25 mPDF 5.6.37 + if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); } + if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); } + $linkn = $this->AddLink(); + $uid = '__mpdfinternallink_' . $linkn ; + if ($this->keep_block_together) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); } + else if ($this->table_rotate) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); } + else if ($this->kwt) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); } + else if ($this->ColActive) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); } + else $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page ); + $this->internallink['#'.$uid] = $linkn; + $this->SetLink($linkn,$ily,$this->page); + +/*-- RTL --*/ + if ($this->biDirectional) { + $txt = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $txt ); + } +/*-- END RTL --*/ + if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; } + else if (!$toc_id) { $toc_id = 0; } + else { $toc_id = strtolower($toc_id); } + $btoc = array('t'=>$txt,'l'=>$level,'p'=>$this->page, 'link'=>$linkn, 'toc_id'=>$toc_id); + if ($this->keep_block_together) { + $this->_kttoc[]= $btoc; + } +/*-- TABLES --*/ + else if ($this->table_rotate) { + $this->tbrot_toc[]= $btoc; + } + else if ($this->kwt) { + $this->kwt_toc[]= $btoc; + } +/*-- END TABLES --*/ + else if ($this->ColActive) { // *COLUMNS* + $this->col_toc[]= $btoc; // *COLUMNS* + } // *COLUMNS* + else { + $this->tocontents->_toc[]= $btoc; + } +} + +/*-- END TOC --*/ + +//====================================================== +function MovePages($target_page, $start_page, $end_page=-1) { + // move a page/pages EARLIER in the document + if ($end_page<1) { $end_page = $start_page; } + $n_toc = $end_page - $start_page + 1; + + // Set/Update PageNumSubstitutions changes before moving anything + if (count($this->PageNumSubstitutions)) { + $tp_present = false; + $sp_present = false; + $ep_present = false; + foreach($this->PageNumSubstitutions AS $k=>$v) { + if ($this->PageNumSubstitutions[$k]['from']==$target_page) { + $tp_present = true; + if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { + $this->PageNumSubstitutions[$k]['suppress']='off'; + } + } + if ($this->PageNumSubstitutions[$k]['from']==$start_page) { + $sp_present = true; + if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { + $this->PageNumSubstitutions[$k]['suppress']='off'; + } + } + if ($this->PageNumSubstitutions[$k]['from']==($end_page+1)) { + $ep_present = true; + if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { + $this->PageNumSubstitutions[$k]['suppress']='off'; + } + } + } + + if (!$tp_present) { + list($tp_type, $tp_suppress, $tp_reset) = $this->docPageSettings($target_page); + } + if (!$sp_present) { + list($sp_type, $sp_suppress, $sp_reset) = $this->docPageSettings($start_page); + } + if (!$ep_present) { + list($ep_type, $ep_suppress, $ep_reset) = $this->docPageSettings($start_page-1); + } + + } + + $last = array(); + //store pages + for($i = $start_page;$i <= $end_page ;$i++) + $last[]=$this->pages[$i]; + //move pages + for($i=$start_page - 1;$i>=($target_page);$i--) { + $this->pages[$i+$n_toc]=$this->pages[$i]; + } + //Put toc pages at insert point + for($i = 0;$i < $n_toc;$i++) { + $this->pages[$target_page + $i]=$last[$i]; + } + +/*-- BOOKMARKS --*/ + // Update Bookmarks + foreach($this->BMoutlines as $i=>$o) { + if($o['p']>=$target_page) { + $this->BMoutlines[$i]['p'] += $n_toc; + } + } +/*-- END BOOKMARKS --*/ + + // Update Page Links + if (count($this->PageLinks)) { + $newarr = array(); + foreach($this->PageLinks as $i=>$o) { + foreach($this->PageLinks[$i] as $key => $pl) { + if (strpos($pl[4],'@')===0) { + $p=substr($pl[4],1); + if($p>=$start_page && $p<=$end_page) { + $this->PageLinks[$i][$key][4] = '@'.($p + ($target_page - $start_page)); + } + else if($p>=$target_page && $p<$start_page) { + $this->PageLinks[$i][$key][4] = '@'.($p+$n_toc); + } + } + } + if($i>=$start_page && $i<=$end_page) { + $newarr[($i + ($target_page - $start_page))] = $this->PageLinks[$i]; + } + else if($i>=$target_page && $i<$start_page) { + $newarr[($i + $n_toc)] = $this->PageLinks[$i]; + } + else { + $newarr[$i] = $this->PageLinks[$i]; + } + } + $this->PageLinks = $newarr; + } + + // OrientationChanges + if (count($this->OrientationChanges)) { + $newarr = array(); + foreach($this->OrientationChanges AS $p=>$v) { + if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->OrientationChanges[$p]; } + else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->OrientationChanges[$p]; } + else { $newarr[$p] = $this->OrientationChanges[$p]; } + } + ksort($newarr); + $this->OrientationChanges = $newarr; + } + + // Page Dimensions + if (count($this->pageDim)) { + $newarr = array(); + foreach($this->pageDim AS $p=>$v) { + if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->pageDim[$p]; } + else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->pageDim[$p]; } + else { $newarr[$p] = $this->pageDim[$p]; } + } + ksort($newarr); + $this->pageDim = $newarr; + } + + // HTML Headers & Footers + if (count($this->saveHTMLHeader)) { + $newarr = array(); + foreach($this->saveHTMLHeader AS $p=>$v) { + if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLHeader[$p]; } + else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLHeader[$p]; } + else { $newarr[$p] = $this->saveHTMLHeader[$p]; } + } + ksort($newarr); + $this->saveHTMLHeader = $newarr; + } + if (count($this->saveHTMLFooter)) { + $newarr = array(); + foreach($this->saveHTMLFooter AS $p=>$v) { + if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLFooter[$p]; } + else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLFooter[$p]; } + else { $newarr[$p] = $this->saveHTMLFooter[$p]; } + } + ksort($newarr); + $this->saveHTMLFooter = $newarr; + } + + // Update Internal Links + if (count($this->internallink)) { + foreach($this->internallink as $key=>$o) { + if($o['PAGE']>=$start_page && $o['PAGE']<=$end_page) { + $this->internallink[$key]['PAGE'] += ($target_page - $start_page); + } + else if($o['PAGE']>=$target_page && $o['PAGE']<$start_page) { + $this->internallink[$key]['PAGE'] += $n_toc; + } + } + } + + // Update Links + if (count($this->links)) { + foreach($this->links as $key=>$o) { + if($o[0]>=$start_page && $o[0]<=$end_page) { + $this->links[$key][0] += ($target_page - $start_page); + } + if($o[0]>=$target_page && $o[0]<$start_page) { + $this->links[$key][0] += $n_toc; + } + } + } + + // Update Form fields + if (count($this->form->forms)) { + foreach($this->form->forms as $key=>$f) { + if($f['page']>=$start_page && $f['page']<=$end_page) { + $this->form->forms[$key]['page'] += ($target_page - $start_page); + } + if($f['page']>=$target_page && $f['page']<$start_page) { + $this->form->forms[$key]['page'] += $n_toc; + } + } + } + +/*-- ANNOTATIONS --*/ + // Update Annotations + if (count($this->PageAnnots)) { + $newarr = array(); + foreach($this->PageAnnots as $p=>$anno) { + if($p>=$start_page && $p<=$end_page) { + $np = $p + ($target_page - $start_page); + foreach($anno as $o) { + $newarr[$np][] = $o; + } + } + else if($p>=$target_page && $p<$start_page) { + $np = $p + $n_toc; + foreach($anno as $o) { + $newarr[$np][] = $o; + } + } + else { + $newarr[$p] = $this->PageAnnots[$p]; + } + } + $this->PageAnnots = $newarr; + unset($newarr); + } +/*-- END ANNOTATIONS --*/ + + // Update PageNumSubstitutions + if (count($this->PageNumSubstitutions)) { + $newarr = array(); + foreach($this->PageNumSubstitutions AS $k=>$v) { + if($this->PageNumSubstitutions[$k]['from']>=$start_page && $this->PageNumSubstitutions[$k]['from']<=$end_page) { + $this->PageNumSubstitutions[$k]['from'] += ($target_page - $start_page); + $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; + } + else if($this->PageNumSubstitutions[$k]['from']>=$target_page && $this->PageNumSubstitutions[$k]['from']<$start_page) { + $this->PageNumSubstitutions[$k]['from'] += $n_toc; + $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; + } + else { + $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; + } + } + + if (!$sp_present) { + $newarr[$target_page] = array('from'=>$target_page, 'suppress'=>$sp_suppress, 'reset'=>$sp_reset, 'type'=>$sp_type); + } + if (!$tp_present) { + $newarr[($target_page + $n_toc)] = array('from'=>($target_page+$n_toc), 'suppress'=>$tp_suppress, 'reset'=>$tp_reset, 'type'=>$tp_type); + } + if (!$ep_present && $end_page>count($this->pages)) { + $newarr[($end_page+1)] = array('from'=>($end_page+1), 'suppress'=>$ep_suppress, 'reset'=>$ep_reset, 'type'=>$ep_type); + } + ksort($newarr); + $this->PageNumSubstitutions = array(); + foreach($newarr as $v) { + $this->PageNumSubstitutions[] = $v; + } + } +} + +//====================================================== +function DeletePages($start_page, $end_page=-1) { + // move a page/pages EARLIER in the document + if ($end_page<1) { $end_page = $start_page; } + $n_tod = $end_page - $start_page + 1; + $last_page = count($this->pages); + $n_atend = $last_page - $end_page + 1; + + //move pages + for($i=0;$i<$n_atend;$i++) { + $this->pages[$start_page+$i]=$this->pages[$end_page+1+$i]; + } + //delete pages + for($i = 0;$i < $n_tod ;$i++) + unset($this->pages[$last_page-$i]); + + +/*-- BOOKMARKS --*/ + // Update Bookmarks + foreach($this->BMoutlines as $i=>$o) { + if($o['p']>=$end_page) { $this->BMoutlines[$i]['p'] -= $n_tod; } + else if($p<$start_page) { unset($this->BMoutlines[$i]); } + } +/*-- END BOOKMARKS --*/ + + // Update Page Links + if (count($this->PageLinks)) { + $newarr = array(); + foreach($this->PageLinks as $i=>$o) { + foreach($this->PageLinks[$i] as $key => $pl) { + if (strpos($pl[4],'@')===0) { + $p=substr($pl[4],1); + if($p>$end_page) { $this->PageLinks[$i][$key][4] = '@'.($p - $n_tod); } + else if($p<$start_page) { unset($this->PageLinks[$i][$key]); } + } + } + if($i>$end_page) { $newarr[($i - $n_tod)] = $this->PageLinks[$i]; } + else if($p<$start_page) { $newarr[$i] = $this->PageLinks[$i]; } + } + $this->PageLinks = $newarr; + } + + // OrientationChanges + if (count($this->OrientationChanges)) { + $newarr = array(); + foreach($this->OrientationChanges AS $p=>$v) { + if($p>$end_page) { $newarr[($p - $t_tod)] = $this->OrientationChanges[$p]; } + else if($p<$start_page) { $newarr[$p] = $this->OrientationChanges[$p]; } + } + ksort($newarr); + $this->OrientationChanges = $newarr; + } + + // Page Dimensions + if (count($this->pageDim)) { + $newarr = array(); + foreach($this->pageDim AS $p=>$v) { + if($p>$end_page) { $newarr[($p - $n_tod)] = $this->pageDim[$p]; } + else if($p<$start_page) { $newarr[$p] = $this->pageDim[$p]; } + } + ksort($newarr); + $this->pageDim = $newarr; + } + + // HTML Headers & Footers + if (count($this->saveHTMLHeader)) { + foreach($this->saveHTMLHeader AS $p=>$v) { + if($p>end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLHeader[$p]; } + else if($p<$start_page) { $newarr[$p] = $this->saveHTMLHeader[$p]; } + } + ksort($newarr); + $this->saveHTMLHeader = $newarr; + } + if (count($this->saveHTMLFooter)) { + $newarr = array(); + foreach($this->saveHTMLFooter AS $p=>$v) { + if($p>$end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLFooter[$p]; } + else if($p<$start_page) { $newarr[$p] = $this->saveHTMLFooter[$p]; } + } + ksort($newarr); + $this->saveHTMLFooter = $newarr; + } + + // Update Internal Links + foreach($this->internallink as $key=>$o) { + if($o['PAGE']>$end_page) { $this->internallink[$key]['PAGE'] -= $n_tod; } + else if($o['PAGE']<$start_page) { unset($this->internallink[$key]); } + } + + // Update Links + foreach($this->links as $key=>$o) { + if($o[0]>$end_page) { $this->links[$key][0] -= $n_tod; } + else if($o[0]<$start_page) { unset($this->links[$key]); } + } + + // Update Form fields + foreach($this->form->forms as $key=>$f) { + if($f['page']>$end_page) { $this->form->forms[$key]['page'] -= $n_tod; } + else if($f['page']<$start_page) { unset($this->form->forms[$key]); } + } + +/*-- ANNOTATIONS --*/ + // Update Annotations + if (count($this->PageAnnots)) { + $newarr = array(); + foreach($this->PageAnnots as $p=>$anno) { + if($p>$end_page) { foreach($anno as $o) { $newarr[($p - $n_tod)][] = $o; } } + else if($p<$start_page) { $newarr[$p] = $this->PageAnnots[$p]; } + } + ksort($newarr); + $this->PageAnnots = $newarr; + } +/*-- END ANNOTATIONS --*/ + + // Update PageNumSubstitutions + foreach($this->PageNumSubstitutions AS $k=>$v) { + if($this->PageNumSubstitutions[$k]['from']>$end_page) { $this->PageNumSubstitutions[$k]['from'] -= $n_tod; } + else if($this->PageNumSubstitutions[$k]['from']<$start_page) { unset($this->PageNumSubstitutions[$k]); } + } + + unset($newarr); + $this->page = count($this->pages); +} + + +//====================================================== +/*-- INDEX --*/ +// FROM class PDF_Ref == INDEX + +function Reference($txt) { + $this->IndexEntry($txt); +} + + +function IndexEntry($txt, $xref='') { + if ($xref) { + $this->IndexEntrySee($txt,$xref); + return; + } + $txt = strip_tags($txt); + $txt = $this->purify_utf8_text($txt); + if ($this->text_input_as_HTML) { + $txt = $this->all_entities_to_utf8($txt); + } + if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); } + + $Present=0; + $size=sizeof($this->Reference); + + if ($this->directionality == 'rtl') { // *RTL* + $txt = str_replace(':',' - ',$txt); // *RTL* + } // *RTL* + else { // *RTL* + $txt = str_replace(':',', ',$txt); + } // *RTL* + + + //Search the reference (AND Ref/PageNo) in the array + for ($i=0;$i<$size;$i++){ + if ($this->keep_block_together) { + if (isset($this->ktReference[$i]['t']) && $this->ktReference[$i]['t']==$txt){ + $Present=1; + if (!in_array($this->page,$this->ktReference[$i]['p'])) { + $this->ktReference[$i]['op'] = $this->page; + } + } + } +/*-- TABLES --*/ + else if ($this->table_rotate) { + if (isset($this->tbrot_Reference[$i]['t']) && $this->tbrot_Reference[$i]['t']==$txt){ + $Present=1; + if (!in_array($this->page,$this->tbrot_Reference[$i]['p'])) { + $this->tbrot_Reference[$i]['op'] = $this->page; + } + } + } + else if ($this->kwt) { + if (isset($this->kwt_Reference[$i]['t']) && $this->kwt_Reference[$i]['t']==$txt){ + $Present=1; + if (!in_array($this->page,$this->kwt_Reference[$i]['p'])) { + $this->kwt_Reference[$i]['op'] = $this->page; + } + } + } +/*-- END TABLES --*/ +/*-- COLUMNS --*/ + else if ($this->ColActive) { + if (isset($this->col_Reference[$i]['t']) && $this->col_Reference[$i]['t']==$txt){ + $Present=1; + if (!in_array($this->page,$this->col_Reference[$i]['p'])) { + $this->col_Reference[$i]['op'] = $this->page; + } + } + } +/*-- END COLUMNS --*/ + else { + if (isset($this->Reference[$i]['t']) && $this->Reference[$i]['t']==$txt){ + $Present=1; + if (!in_array($this->page,$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $this->page; + } + } + } + } + //If not found, add it + if ($Present==0) { + $opr = array('t'=>$txt, 'op'=>$this->page); + if ($this->keep_block_together) { + $this->ktReference[]= $opr; + } +/*-- TABLES --*/ + else if ($this->table_rotate) { + $this->tbrot_Reference[]= $opr; + } + else if ($this->kwt) { + $this->kwt_Reference[]= $opr; + } +/*-- END TABLES --*/ +/*-- COLUMNS --*/ + else if ($this->ColActive) { + $this->col_Reference[]= $opr; + } +/*-- END COLUMNS --*/ + else { + $this->Reference[]=array('t'=>$txt,'p'=>array($this->page)); + } + } +} + +// Added function to add a reference "Elephants. See Chickens" +function ReferenceSee($txta,$txtb) { + $this->IndexEntrySee($txta,$txtb); +} + +function IndexEntrySee($txta,$txtb) { + $txta = strip_tags($txta); + $txtb = strip_tags($txtb); + $txta = $this->purify_utf8_text($txta); + $txtb = $this->purify_utf8_text($txtb); + if ($this->text_input_as_HTML) { + $txta = $this->all_entities_to_utf8($txta); + $txtb = $this->all_entities_to_utf8($txtb); + } + if ($this->usingCoreFont) { + $txta = mb_convert_encoding($txta,$this->mb_enc,'UTF-8'); + $txtb = mb_convert_encoding($txtb,$this->mb_enc,'UTF-8'); + } + if ($this->directionality == 'rtl') { // *RTL* + $txta = str_replace(':',' - ',$txta); // *RTL* + $txtb = str_replace(':',' - ',$txtb); // *RTL* + } // *RTL* + else { // *RTL* + $txta = str_replace(':',', ',$txta); + $txtb = str_replace(':',', ',$txtb); + } // *RTL* + $this->Reference[]=array('t'=>$txta.' - see '.$txtb,'p'=>array()); +} + +function CreateReference($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) { + $this->CreateIndex($NbCol, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont, $divlettfont, $useLinking); +} + +function CreateIndex($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) { + if (!$reffontsize) { $reffontsize = $this->default_font_size; } + if (!$divlettfontsize) { $divlettfontsize = ($this->default_font_size * 1.8); } + if (!$reffont) { $reffont = $this->default_font; } + if (!$divlettfont) { $divlettfont = $reffont; } + if (!$linespacing) { $linespacing= $this->default_lineheight_correction; } + if ($this->ColActive) { $this->SetColumns(0); } // *COLUMNS* + $size=sizeof($this->Reference); + if ($size == 0) { return false; } + + + if ($NbCol<2) { + $NbCol = 1; + $colWidth = $this->pgwidth; + } + else { + $this->SetColumns($NbCol,'',$gap); + $colWidth = $this->ColWidth; + } + if ($this->directionality == 'rtl') { $align = 'R'; } + else { $align = 'L'; } + $lett = ''; + if (!function_exists('cmp')) { + function cmp ($a, $b) { + return strnatcmp(strtolower($a['t']), strtolower($b['t'])); + } + } + //Alphabetic sort of the references + usort($this->Reference, 'cmp'); + $size=sizeof($this->Reference); + $this->breakpoints[$this->CurrCol][] = $this->y; // *COLUMNS* + + $divlettjuststarted = false; + + $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; ')); + + $last_lett = ''; + for ($i=0;$i<$size;$i++){ + if ($this->Reference[$i]['t']) { + if ($usedivletters) { + + $lett = mb_strtoupper(mb_substr($this->Reference[$i]['t'],0,1,$this->mb_enc ),$this->mb_enc ); + if ($lett != $last_lett) { + + $save_bp = $this->breakpoints[$this->CurrCol]; // *COLUMNS* + $divlettjuststarted = true; + + if ($i>0) { + $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$divlettfont.'; font-size: '.$divlettfontsize.'pt; font-weight: bold; page-break-after: avoid; margin-top: 0.5em; margin-collapse: collapse; ')); + } + else { + $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$divlettfont.'; font-size: '.$divlettfontsize.'pt; font-weight: bold; page-break-after: avoid; ')); + } + $this->_saveTextBuffer($lett); + $this->CloseTag('DIV'); + } + } + + $this->OpenTag('DIV',array('STYLE'=>'text-indent: -'.$offset.'mm; line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; ')); + +/*-- RTL --*/ + // Change Arabic + Persian. to Presentation Forms + if ($this->biDirectional) { + $this->Reference[$i]['t'] = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $this->Reference[$i]['t'] ); + } +/*-- END RTL --*/ + + // Font-specific ligature substitution for Indic fonts + if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($this->Reference[$i]['t']); // *INDIC* + + $this->_saveTextBuffer($this->Reference[$i]['t']); + $ppp = $this->Reference[$i]['p']; // = array of page numbers to point to + if (count($ppp)) { + sort($ppp); + $newarr = array(); + $range_start = $ppp[0]; + $range_end = 0; + + if (!$this->usingCoreFont) { $spacer = "\xc2\xa0 "; } + else { $spacer = chr(160).' '; } + $this->_saveTextBuffer($spacer); + if ($this->directionality == 'rtl') { $sep = '.'; $joiner = '-'; } + else { $sep = ', '; $joiner = '-'; } + for ($zi=1;$zidirectionality == 'rtl') { +/*-- RTL --*/ + if ($zidocPageNum($ppp[$zi]); + if ($useLinking) { $href = '@'.$ppp[$zi]; } + else { $href = ''; } + $this->_saveTextBuffer($txt, $href); + } +/*-- END RTL --*/ + } + + else if ($ppp[$zi] == ($ppp[($zi-1)]+1)) { + $range_end = $ppp[$zi]; + } + else { + if ($range_end) { + if ($range_end == $range_start+1) { + if ($useLinking) { $href = '@'.$range_start; } + else { $href = ''; } + $txt = $this->docPageNum($range_start) . $sep; + $this->_saveTextBuffer($txt, $href); + if ($useLinking) { $href = '@'.$ppp[$zi-1]; } + else { $href = ''; } + $txt = $this->docPageNum($ppp[$zi-1]) . $sep; + $this->_saveTextBuffer($txt, $href); + } + else { + if ($useLinking) { $href = '@'.$range_start; } + else { $href = ''; } + } + } + else { + if ($useLinking) { $href = '@'.$ppp[$zi-1]; } + else { $href = ''; } + $txt = $this->docPageNum($ppp[$zi-1]) . $sep; + $this->_saveTextBuffer($txt, $href); + } + $range_start = $ppp[$zi]; + $range_end = 0; + } + } + + if ($range_end) { + if ($range_end == $range_start+1) { + if ($useLinking) { $href = '@'.$range_start; } + else { $href = ''; } + $txt = $this->docPageNum($range_start) . $sep; + $this->_saveTextBuffer($txt, $href); + if ($useLinking) { $href = '@'.$range_end; } + else { $href = ''; } + $txt = $this->docPageNum($range_end); + $this->_saveTextBuffer($txt, $href); + } + else { + if ($useLinking) { $href = '@'.$range_start; } + else { $href = ''; } + $txt = $this->docPageNum($range_start) . $joiner; + $this->_saveTextBuffer($txt, $href); + if ($useLinking) { $href = '@'.$range_end; } + else { $href = ''; } + $txt = $this->docPageNum($range_end); + $this->_saveTextBuffer($txt, $href); + } + } + else { + if ($useLinking) { $href = '@'.$ppp[(count($ppp)-1)]; } + else { $href = ''; } + $txt = $this->docPageNum($ppp[(count($ppp)-1)]); + $this->_saveTextBuffer($txt, $href); + } + } + } + $this->CloseTag('DIV'); + + if ($divlettjuststarted) { $this->breakpoints[$this->CurrCol] = $save_bp; } // *COLUMNS* + $divlettjuststarted = false; + + $this->breakpoints[$this->CurrCol][] = $this->y; // *COLUMNS* + $last_lett = $lett; + } + $this->CloseTag('DIV'); + $this->breakpoints[$this->CurrCol][] = $this->y; // *COLUMNS* + if ($this->ColActive) { $this->SetColumns(0); } // *COLUMNS* +} +/*-- END INDEX --*/ + + +function AcceptPageBreak() { + if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); } // *TABLES* +/*-- COLUMNS --*/ + if ($this->ColActive==1) { + if($this->CurrCol<$this->NbCol-1) { + //Go to the next column + $this->CurrCol++; + $this->SetCol($this->CurrCol); + $this->y=$this->y0; + $this->ChangeColumn=1; // Number (and direction) of columns changed +1, +2, -2 etc. + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL* + + //Stay on the page + return false; + } + else { + //Go back to the first column - NEW PAGE + if (count($this->columnbuffer)) { $this->printcolumnbuffer(); } + $this->SetCol(0); + $this->y0 = $this->tMargin; + $this->ChangeColumn= -($this->NbCol-1); + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL* + //Page break + return true; + } + } +/*-- END COLUMNS --*/ +/*-- TABLES --*/ + else if ($this->table_rotate) { + if ($this->tablebuffer) { $this->printtablebuffer(); } + return true; + } +/*-- END TABLES --*/ + else { // *COLUMNS* + $this->ChangeColumn=0; + return $this->autoPageBreak; + } // *COLUMNS* + return $this->autoPageBreak; +} + + +//----------- COLUMNS --------------------- +/*-- COLUMNS --*/ + +function SetColumns($NbCol,$vAlign='',$gap=5) { +// NbCol = number of columns +// CurrCol = Number of the current column starting at 0 +// Called externally to set columns on/off and number +// Integer 2 upwards sets columns on to that number +// Anything less than 2 turns columns off + if ($NbCol<2) { // SET COLUMNS OFF + if ($this->ColActive) { + $this->ColActive=0; + if (count($this->columnbuffer)) { $this->printcolumnbuffer(); } + $this->NbCol=1; + $this->ResetMargins(); + $this->pgwidth = $this->w - $this->lMargin - $this->rMargin; + $this->divwidth = 0; + $this->Ln(); + } + $this->ColActive=0; + $this->columnbuffer = array(); + $this->ColDetails = array(); + $this->columnLinks = array(); + $this->columnAnnots = array(); + $this->columnForms = array(); + $this->col_Reference = array(); + $this->col_BMoutlines = array(); + $this->col_toc = array(); + $this->breakpoints = array(); + } + else { // SET COLUMNS ON + if ($this->ColActive) { + $this->ColActive=0; + if (count($this->columnbuffer)) { $this->printcolumnbuffer(); } + $this->ResetMargins(); + } + if (isset($this->y) && $this->y>$this->tMargin) $this->Ln(); + $this->NbCol=$NbCol; + $this->ColGap = $gap; + $this->divwidth = 0; + $this->ColActive=1; + $this->ColumnAdjust = true; // enables column height adjustment for the page + $this->columnbuffer = array(); + $this->ColDetails = array(); + $this->columnLinks = array(); + $this->columnAnnots = array(); + $this->columnForms = array(); + $this->col_Reference = array(); + $this->col_BMoutlines = array(); + $this->col_toc = array(); + $this->breakpoints = array(); + if ((strtoupper($vAlign) == 'J') || (strtoupper($vAlign) == 'JUSTIFY')) { $vAlign = 'J'; } + else { $vAlign = ''; } + $this->colvAlign = $vAlign; + //Save the ordinate + $absL = $this->DeflMargin-($gap/2); + $absR = $this->DefrMargin-($gap/2); + $PageWidth = $this->w-$absL-$absR; // virtual pagewidth for calculation only + $ColWidth = (($PageWidth - ($gap * ($NbCol)))/$NbCol); + $this->ColWidth = $ColWidth; +/*-- RTL --*/ + + if ($this->directionality == 'rtl') { + for ($i=0;$i<$this->NbCol;$i++) { + $this->ColL[$i] = $absL + ($gap/2) + (($NbCol - ($i+1))*($PageWidth/$NbCol)) ; + $this->ColR[$i] = $this->ColL[$i] + $ColWidth; // NB This is not R margin -> R pos + } + } + else { +/*-- END RTL --*/ + for ($i=0;$i<$this->NbCol;$i++) { + $this->ColL[$i] = $absL + ($gap/2) + ($i* ($PageWidth/$NbCol) ); + $this->ColR[$i] = $this->ColL[$i] + $ColWidth; // NB This is not R margin -> R pos + } + } // *RTL* + $this->pgwidth = $ColWidth; + $this->SetCol(0); + $this->y0=$this->y; + } + $this->x = $this->lMargin; +} + +function SetCol($CurrCol) { +// Used internally to set column by number: 0 is 1st column + //Set position on a column + $this->CurrCol=$CurrCol; + $x = $this->ColL[$CurrCol]; + $xR = $this->ColR[$CurrCol]; // NB This is not R margin -> R pos + if (($this->mirrorMargins) && (($this->page)%2==0)) { // EVEN + $x += $this->MarginCorrection ; + $xR += $this->MarginCorrection ; + } + $this->SetMargins($x,($this->w - $xR),$this->tMargin); +} + +function AddColumn() { + $this->NewColumn(); + $this->ColumnAdjust = false; // disables all column height adjustment for the page. +} +function NewColumn() { + if ($this->ColActive==1) { + if($this->CurrCol<$this->NbCol-1) { + //Go to the next column + $this->CurrCol++; + $this->SetCol($this->CurrCol); + $this->y = $this->y0; + $this->ChangeColumn=1; + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL* + //Stay on the page + } + else { + //Go back to the first column + //Page break + if (count($this->columnbuffer)) { $this->printcolumnbuffer(); } + $this->AddPage($this->CurOrientation); + $this->SetCol(0); + $this->y0 = $this->tMargin; + $this->ChangeColumn= -($this->NbCol-1); + // DIRECTIONALITY RTL + if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); } // *RTL* + } + $this->x = $this->lMargin; + } + else { + $this->AddPage($this->CurOrientation); + } +} + +function printcolumnbuffer() { + // Columns ended (but page not ended) -> try to match all columns - unless disabled by using a custom column-break + if (!$this->ColActive && $this->ColumnAdjust && !$this->keepColumns) { + // Calculate adjustment to add to each column to calculate rel_y value + $this->ColDetails[0]['add_y'] = 0; + $last_col = 0; + // Recursively add previous column's height + for($i=1;$i<$this->NbCol;$i++) { + if (isset($this->ColDetails[$i]['bottom_margin']) && $this->ColDetails[$i]['bottom_margin']) { // If any entries in the column + $this->ColDetails[$i]['add_y'] = ($this->ColDetails[$i-1]['bottom_margin'] - $this->y0) + $this->ColDetails[$i-1]['add_y']; + $last_col = $i; // Last column actually printed + } + } + + // Calculate value for each position sensitive entry as though for one column + foreach($this->columnbuffer AS $key=>$s) { + $t = $s['s']; + if ($t == 'ACROFORM') { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + $this->columnbuffer[$key]['s'] = ''; + } + else if (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } + else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } + else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } + else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } + else if (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } + else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) { + $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0; + } + } + foreach($this->internallink AS $key => $f) { + if (is_array($f) && isset($f['col'])) { + $this->internallink[$key]['rel_y'] = $f['Y'] + $this->ColDetails[$f['col']]['add_y'] - $this->y0; + } + } + + $breaks = array(); + foreach($this->breakpoints AS $c => $bpa) { + foreach($bpa AS $rely) { + $breaks[] = $rely + $this->ColDetails[$c]['add_y'] - $this->y0; + } + } + + if (isset($this->ColDetails[$last_col]['bottom_margin'])) { $lcbm = $this->ColDetails[$last_col]['bottom_margin']; } + else { $lcbm = 0; } + $sum_h = $this->ColDetails[$last_col]['add_y'] + $lcbm - $this->y0; + //$sum_h = max($this->ColDetails[$last_col]['add_y'] + $this->ColDetails[$last_col]['bottom_margin'] - $this->y0, end($breaks)); + $target_h = ($sum_h / $this->NbCol); + + $cbr = array(); + for($i=1;$i<$this->NbCol;$i++) { + $th = ($sum_h * $i / $this->NbCol); + foreach($breaks AS $bk=>$val) { + if ($val > $th) { + if (($val-$th) < ($th-$breaks[$bk-1])) { $cbr[$i-1] = $val; } + else { $cbr[$i-1] = $breaks[$bk-1]; } + break; + } + } + } + $cbr[($this->NbCol-1)] = $sum_h; + + // Now update the columns - divide into columns of approximately equal value + $last_new_col = 0; + $yadj = 0; // mm + $xadj = 0; + $last_col_bottom = 0; + $lowest_bottom_y = 0; + $block_bottom = 0; + $newcolumn = 0; + foreach($this->columnbuffer AS $key=>$s) { + if (isset($s['rel_y'])) { // only process position sensitive data + if ($s['rel_y'] >= $cbr[$newcolumn]) { + $newcolumn++; + } + else { + $newcolumn = $last_new_col ; + } + + + $block_bottom = max($block_bottom,($s['rel_y']+$s['h'])); + + if ($this->directionality == 'rtl') { // *RTL* + $xadj = -(($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap)); // *RTL* + } // *RTL* + else { // *RTL* + $xadj = ($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap); + } // *RTL* + + if ($last_new_col != $newcolumn) { // Added new column + $last_col_bottom = $this->columnbuffer[$key]['rel_y']; + $block_bottom = 0; + } + $yadj = ($s['rel_y'] - $s['y']) - ($last_col_bottom)+$this->y0; + // callback function + $t = $s['s']; + $t = preg_replace('/BT (\d+\.\d\d+) (\d+\.\d\d+) Td/e',"\$this->columnAdjustAdd('Td',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t); + $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) ([\-]{0,1}\d+\.\d\d+) re/e',"\$this->columnAdjustAdd('re',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4')",$t); + $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) l/e',"\$this->columnAdjustAdd('l',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t); + $t = preg_replace('/q (\d+\.\d\d+) 0 0 (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) cm \/(I|FO)/e',"\$this->columnAdjustAdd('img',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4','\\5')",$t); + $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) m/e',"\$this->columnAdjustAdd('draw',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t); + $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) c/e',"\$this->columnAdjustAdd('bezier',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4','\\5','\\6')",$t); + + $this->columnbuffer[$key]['s'] = $t; + $this->columnbuffer[$key]['newcol'] = $newcolumn; + $this->columnbuffer[$key]['newy'] = $s['y'] + $yadj; + $last_new_col = $newcolumn; + $clb = $s['y'] + $yadj + $s['h'] ; // bottom_margin of current + if ((isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb > $this->ColDetails[$newcolumn]['max_bottom']) || (!isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb)) { $this->ColDetails[$newcolumn]['max_bottom'] = $clb; } + if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; } + // Adjust LINKS + if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->PageLinks[$this->page][$ref][0] += ($xadj*_MPDFK); + $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK); + unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } + // Adjust FORM FIELDS + if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->form->forms[$ref]['x'] += ($xadj); + $this->form->forms[$ref]['y'] += ($yadj); + unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } +/*-- ANNOTATIONS --*/ + if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + if ($this->PageAnnots[$this->page][$ref]['x'] < 0) { + $this->PageAnnots[$this->page][$ref]['x'] -= ($xadj); + } + else { + $this->PageAnnots[$this->page][$ref]['x'] += ($xadj); + } + $this->PageAnnots[$this->page][$ref]['y'] += ($yadj); // unlike PageLinks, Page annots has y values from top in mm + unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } +/*-- END ANNOTATIONS --*/ + } + } + +/*-- BOOKMARKS --*/ + // Adjust Bookmarks + foreach($this->col_BMoutlines AS $v) { + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']); + } +/*-- END BOOKMARKS --*/ + +/*-- INDEX --*/ + // Adjust Reference (index) + foreach($this->col_Reference AS $v) { + $Present=0; + //Search the reference (AND Ref/PageNo) in the array + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($v['op'],$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $v['op']; + } + } + } + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op'])); + } + } +/*-- END INDEX --*/ + +/*-- TOC --*/ + + // Adjust ToC + foreach($this->col_toc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']); + $this->links[$v['link']][1] = $this->y0; + } +/*-- END TOC --*/ + + // Adjust column length to be equal + if ($this->colvAlign == 'J') { + foreach($this->columnbuffer AS $key=>$s) { + if (isset($s['rel_y'])) { // only process position sensitive data + // Set ratio to expand y values or heights + if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom'] && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0)); + } + else { $ratio = 1; } + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + $yadj = ($s['newy'] - $this->y0) * ($ratio - 1); + + // Adjust LINKS + if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK); // y value + $this->PageLinks[$this->page][$ref][3] *= $ratio; // height + unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } + // Adjust FORM FIELDS + if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->form->forms[$ref]['x'] += ($xadj); + $this->form->forms[$ref]['y'] += ($yadj); + unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } +/*-- ANNOTATIONS --*/ + if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->PageAnnots[$this->page][$ref]['y'] += ($yadj); + unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } +/*-- END ANNOTATIONS --*/ + } + } + } + foreach($this->internallink AS $key => $f) { + if (is_array($f) && isset($f['col'])) { + $last_col_bottom = 0; + for ($nbc=0; $nbc<$this->NbCol; $nbc++) { + if ($f['rel_y'] >= $cbr[$nbc]) { $last_col_bottom = $cbr[$nbc]; } + } + $yadj = ($f['rel_y'] - $f['Y']) - $last_col_bottom + $this->y0; + $f['Y'] += $yadj; + unset($f['col']); + unset($f['rel_y']); + $this->internallink[$key] = $f; + } + } + + $last_col = -1; + $trans_on = false; + foreach($this->columnbuffer AS $key=>$s) { + if (isset($s['rel_y'])) { // only process position sensitive data + // Set ratio to expand y values or heights + if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom'] && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0)); + } + else { $ratio = 1; } + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + //Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true)."\n"; + $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n"; + $trans_on = true; + } + } + // Now output the adjusted values + $this->pages[$this->page] .= $s['s']."\n"; + if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) { // only process position sensitive data + //Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true)."\n"; + $trans_on = false; + } + } + if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; } + } + else { // if NOT $this->colvAlign == 'J' + // Now output the adjusted values + foreach($this->columnbuffer AS $s) { + $this->pages[$this->page] .= $s['s']."\n"; + } + } + if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; } + } + + // Columns not ended but new page -> align columns (can leave the columns alone - just tidy up the height) + else if ($this->colvAlign == 'J' && $this->ColumnAdjust && !$this->keepColumns) { + // calculate the lowest bottom margin + $lowest_bottom_y = 0; + foreach($this->columnbuffer AS $key=>$s) { + // Only process output data + $t = $s['s']; + if ($t == 'ACROFORM' || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) || + (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) { + + $clb = $s['y'] + $s['h']; + if ((isset($this->ColDetails[$s['col']]['max_bottom']) && $clb > $this->ColDetails[$s['col']]['max_bottom']) || !isset($this->ColDetails[$s['col']]['max_bottom'])) { $this->ColDetails[$s['col']]['max_bottom'] = $clb; } + if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; } + $this->columnbuffer[$key]['rel_y'] = $s['y']; // Marks position sensitive data to process later + if ($t == 'ACROFORM') { $this->columnbuffer[$key]['s'] = ''; } + } + } + // Adjust column length equal + foreach($this->columnbuffer AS $key=>$s) { + // Set ratio to expand y values or heights + if (isset($this->ColDetails[$s['col']]['max_bottom']) && $this->ColDetails[$s['col']]['max_bottom']) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0)); + } + else { $ratio = 1; } + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + $yadj = ($s['y'] - $this->y0) * ($ratio - 1); + + // Adjust LINKS + if (isset($s['rel_y'])) { // only process position sensitive data + // otherwise triggers for all entries in column buffer (.e.g. formatting) and makes below adjustments more than once + if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK); // y value + $this->PageLinks[$this->page][$ref][3] *= $ratio; // height + unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } + // Adjust FORM FIELDS + if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->form->forms[$ref]['x'] += ($xadj); + $this->form->forms[$ref]['y'] += ($yadj); + unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } +/*-- ANNOTATIONS --*/ + if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) { + $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]; + $this->PageAnnots[$this->page][$ref]['y'] += ($yadj); + unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); + } +/*-- END ANNOTATIONS --*/ + } + } + } + +/*-- BOOKMARKS --*/ + + // Adjust Bookmarks + foreach($this->col_BMoutlines AS $v) { + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']); + } +/*-- END BOOKMARKS --*/ + +/*-- INDEX --*/ + + // Adjust Reference (index) + foreach($this->col_Reference AS $v) { + $Present=0; + //Search the reference (AND Ref/PageNo) in the array + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($v['op'],$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $v['op']; + } + } + } + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op'])); + } + } +/*-- END INDEX --*/ + +/*-- TOC --*/ + + // Adjust ToC + foreach($this->col_toc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']); + $this->links[$v['link']][1] = $this->y0; + } +/*-- END TOC --*/ + $trans_on = false; + foreach($this->columnbuffer AS $key=>$s) { + if (isset($s['rel_y'])) { // only process position sensitive data + // Set ratio to expand y values or heights + if ($this->ColDetails[$s['col']]['max_bottom']) { + $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0)); + } + else { $ratio = 1; } + if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + //Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true)."\n"; + $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n"; + $trans_on = true; + } + } + // Now output the adjusted values + $this->pages[$this->page] .= $s['s']."\n"; + if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) { + //Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true)."\n"; + $trans_on = false; // mPDF 5.1.001 + } + } + if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; } + + if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; } + } + + + // Just reproduce the page as it was + else { + // If page has not ended but height adjustment was disabled by custom column-break - adjust y + $lowest_bottom_y = 0; + if (!$this->ColActive && (!$this->ColumnAdjust || $this->keepColumns)) { + // calculate the lowest bottom margin + foreach($this->columnbuffer AS $key=>$s) { + // Only process output data + $t = $s['s']; + if ($t == 'ACROFORM' || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) || + (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) || + (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) { + + $clb = $s['y'] + $s['h']; + if ($clb > $this->ColDetails[$s['col']]['max_bottom']) { $this->ColDetails[$s['col']]['max_bottom'] = $clb; } + if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; } + } + } + } + foreach($this->columnbuffer AS $key=>$s) { + if ($s['s'] != 'ACROFORM') + $this->pages[$this->page] .= $s['s']."\n"; + } + if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; } +/*-- INDEX --*/ + + // Output Reference (index) + foreach($this->col_Reference AS $v) { + $Present=0; + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($v['op'],$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $v['op']; + } + } + } + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op'])); + } + } +/*-- END INDEX --*/ +/*-- BOOKMARKS --*/ + // Output Bookmarks + foreach($this->col_BMoutlines AS $v) { + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']); + } +/*-- END BOOKMARKS --*/ +/*-- TOC --*/ + // Output ToC + foreach($this->col_toc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']); + } +/*-- END TOC --*/ + } + foreach($this->internallink AS $key => $f) { + if (isset($this->internallink[$key]['col'])) unset($this->internallink[$key]['col']); + if (isset($this->internallink[$key]['rel_y'])) unset($this->internallink[$key]['rel_y']); + } + + $this->columnbuffer = array(); + $this->ColDetails = array(); + $this->columnLinks = array(); + $this->columnAnnots = array(); + $this->columnForms = array(); + + $this->col_Reference = array(); + $this->col_BMoutlines = array(); + $this->col_toc = array(); + $this->breakpoints = array(); +} + +/*-- END COLUMNS --*/ + + +//================================================================== +/*-- TABLES --*/ +function printcellbuffer() { + if (count($this->cellBorderBuffer )) { + sort($this->cellBorderBuffer); + foreach($this->cellBorderBuffer AS $cbb) { + $cba = unpack("A16dom/nbord/A1side/ns/dbw/a6ca/A10style/dx/dy/dw/dh/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd/dover/", $cbb); + $side = $cba['side']; + $details = array(); + $details[$side]['dom'] = (float) $cba['dom']; + $details[$side]['s'] = $cba['s']; + $details[$side]['w'] = $cba['bw']; + $details[$side]['c'] = $cba['ca']; + $details[$side]['style'] = trim($cba['style']); + $details['mbw']['BL'] = $cba['mbl']; + $details['mbw']['BR'] = $cba['mbr']; + $details['mbw']['RT'] = $cba['mrt']; + $details['mbw']['RB'] = $cba['mrb']; + $details['mbw']['TL'] = $cba['mtl']; + $details['mbw']['TR'] = $cba['mtr']; + $details['mbw']['LT'] = $cba['mlt']; + $details['mbw']['LB'] = $cba['mlb']; + $details['cellposdom'] = $cba['cpd']; + $details['p'] = $side; + if ($cba['over']==1) { $details[$side]['overlay'] = true; } + else { $details[$side]['overlay'] = false; } + $this->_tableRect($cba['x'],$cba['y'],$cba['w'],$cba['h'],$cba['bord'],$details, false, false); + + } + $this->cellBorderBuffer = array(); + } +} +//================================================================== +function printtablebuffer() { + + if (!$this->table_rotate) { + $this->pages[$this->page] .= $this->tablebuffer; + foreach($this->tbrot_Links AS $p => $l) { + foreach($l AS $v) { + $this->PageLinks[$p][] = $v; + } + } + $this->tbrot_Links = array(); +/*-- ANNOTATIONS --*/ + foreach($this->tbrot_Annots AS $p => $l) { + foreach($l AS $v) { + $this->PageAnnots[$p][] = $v; + } + } + $this->tbrot_Annots = array(); +/*-- END ANNOTATIONS --*/ + +/*-- INDEX --*/ + // Output Reference (index) + foreach($this->tbrot_Reference AS $v) { + $Present=0; + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($v['op'],$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $v['op']; + } + } + } + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op'])); + } + } + $this->tbrot_Reference = array(); +/*-- END INDEX --*/ + +/*-- BOOKMARKS --*/ + // Output Bookmarks + foreach($this->tbrot_BMoutlines AS $v) { + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']); + } + $this->tbrot_BMoutlines = array(); +/*-- END BOOKMARKS --*/ + +/*-- TOC --*/ + // Output ToC + foreach($this->tbrot_toc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']); + } + $this->tbrot_toc = array(); +/*-- END TOC --*/ + + return; + } + // else if rotated + $lm = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left']; + $pw = $this->blk[$this->blklvl]['inner_width']; + //Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true)."\n"; + + if ($this->table_rotate > 1) { // clockwise + if ($this->tbrot_align == 'L') { + $xadj = $this->tbrot_h ; // align L (as is) + } + else if ($this->tbrot_align == 'R') { + $xadj = $lm-$this->tbrot_x0+($pw) ; // align R + } + else { + $xadj = $lm-$this->tbrot_x0+(($pw + $this->tbrot_h)/2) ; // align C + } + $yadj = 0; + } + else { // anti-clockwise + if ($this->tbrot_align == 'L') { + $xadj = 0 ; // align L (as is) + } + else if ($this->tbrot_align == 'R') { + $xadj = $lm-$this->tbrot_x0+($pw - $this->tbrot_h) ; // align R + } + else { + $xadj = $lm-$this->tbrot_x0+(($pw - $this->tbrot_h)/2) ; // align C + } + $yadj = $this->tbrot_w; + } + + + $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n"; + $this->pages[$this->page] .= $this->transformRotate($this->table_rotate, $this->tbrot_x0 , $this->tbrot_y0 , true)."\n"; + + // Now output the adjusted values + $this->pages[$this->page] .= $this->tablebuffer; + + + foreach($this->tbrot_Links AS $p => $l) { + foreach($l AS $v) { + $w = $v[2]/_MPDFK; + $h = $v[3]/_MPDFK; + $ax = ($v[0]/_MPDFK) - $this->tbrot_x0; + $ay = (($this->hPt-$v[1])/_MPDFK) - $this->tbrot_y0; + if ($this->table_rotate > 1) { // clockwise + $bx = $this->tbrot_x0+$xadj-$ay-$h; + $by = $this->tbrot_y0+$yadj+$ax; + } + else { + $bx = $this->tbrot_x0+$xadj+$ay; + $by = $this->tbrot_y0+$yadj-$ax-$w; + } + $v[0] = $bx*_MPDFK; + $v[1] = ($this->h-$by)*_MPDFK; + $v[2] = $h*_MPDFK; // swap width and height + $v[3] = $w*_MPDFK; + $this->PageLinks[$p][] = $v; + } + } + $this->tbrot_Links = array(); + foreach($this->internallink AS $key => $f) { + if (is_array($f) && isset($f['tbrot'])) { + $f['Y'] = $this->tbrot_y0; + $f['PAGE'] = $this->page; + unset($f['tbrot']); + $this->internallink[$key] = $f; + } + } +/*-- ANNOTATIONS --*/ + foreach($this->tbrot_Annots AS $p => $l) { + foreach($l AS $v) { + $ax = abs($v['x']) - $this->tbrot_x0; // abs because -ve values are internally set and held for reference if annotMargin set + $ay = $v['y'] - $this->tbrot_y0; + if ($this->table_rotate > 1) { // clockwise + $bx = $this->tbrot_x0+$xadj-$ay; + $by = $this->tbrot_y0+$yadj+$ax; + } + else { + $bx = $this->tbrot_x0+$xadj+$ay; + $by = $this->tbrot_y0+$yadj-$ax; + } + if ($v['x'] < 0) { + $v['x'] = -$bx; + } + else { + $v['x'] = $bx; + } + $v['y'] = ($by); + $this->PageAnnots[$p][] = $v; + } + } + $this->tbrot_Annots = array(); +/*-- END ANNOTATIONS --*/ + + +/*-- BOOKMARKS --*/ + + // Adjust Bookmarks + foreach($this->tbrot_BMoutlines AS $v) { + $v['y'] = $this->tbrot_y0; + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page); + } +/*-- END BOOKMARKS --*/ + +/*-- INDEX --*/ + + // Adjust Reference (index) + foreach($this->tbrot_Reference AS $v) { + $Present=0; + //Search the reference (AND Ref/PageNo) in the array + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($this->page,$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $this->page; + } + } + } + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page)); + } + } +/*-- END INDEX --*/ + +/*-- TOC --*/ + + // Adjust ToC - uses document page number + foreach($this->tbrot_toc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']); + $this->links[$v['link']][1] = $this->tbrot_y0; + } +/*-- END TOC --*/ + + + + $this->tbrot_Reference = array(); + $this->tbrot_BMoutlines = array(); + $this->tbrot_toc = array(); + + //Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true)."\n"; + + + $this->y = $this->tbrot_y0 + $this->tbrot_w; + $this->x = $this->lMargin; + + $this->tablebuffer = ''; +} + +//================================================================== +// Keep-with-table This buffers contents of h1-6 to keep on page with table +function printkwtbuffer() { + if (!$this->kwt_moved) { + foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; } + foreach($this->kwt_Links AS $p => $l) { + foreach($l AS $v) { + $this->PageLinks[$p][] = $v; + } + } + $this->kwt_Links = array(); +/*-- ANNOTATIONS --*/ + foreach($this->kwt_Annots AS $p => $l) { + foreach($l AS $v) { + $this->PageAnnots[$p][] = $v; + } + } + $this->kwt_Annots = array(); +/*-- END ANNOTATIONS --*/ + +/*-- INDEX --*/ + // Output Reference (index) + foreach($this->kwt_Reference AS $v) { + $Present=0; + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($v['op'],$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $v['op']; + } + } + } + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op'])); + } + } + $this->kwt_Reference = array(); +/*-- END INDEX --*/ + +/*-- BOOKMARKS --*/ + // Output Bookmarks + foreach($this->kwt_BMoutlines AS $v) { + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']); + } + $this->kwt_BMoutlines = array(); +/*-- END BOOKMARKS --*/ + +/*-- TOC --*/ + // Output ToC + foreach($this->kwt_toc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']); + } + $this->kwt_toc = array(); +/*-- END TOC --*/ + + return; + } + + //Start Transformation + $this->pages[$this->page] .= $this->StartTransform(true)."\n"; + $xadj = $this->lMargin - $this->kwt_x0 ; + //$yadj = $this->y - $this->kwt_y0 ; + $yadj = $this->tMargin - $this->kwt_y0 ; + + $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n"; + + // Now output the adjusted values + foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; } + + // Adjust hyperLinks + foreach($this->kwt_Links AS $p => $l) { + foreach($l AS $v) { + $bx = $this->kwt_x0+$xadj; + $by = $this->kwt_y0+$yadj; + $v[0] = $bx*_MPDFK; + $v[1] = ($this->h-$by)*_MPDFK; + $this->PageLinks[$p][] = $v; + } + } + foreach($this->internallink AS $key => $f) { + if (is_array($f) && isset($f['kwt'])) { + $f['Y'] += $yadj; + $f['PAGE'] = $this->page; + unset($f['kwt']); + $this->internallink[$key] = $f; + } + } +/*-- ANNOTATIONS --*/ + foreach($this->kwt_Annots AS $p => $l) { + foreach($l AS $v) { + $bx = $this->kwt_x0+$xadj; + $by = $this->kwt_y0+$yadj; + if ($v['x'] < 0) { + $v['x'] = -$bx; + } + else { + $v['x'] = $bx; + } + $v['y'] = $by; + $this->PageAnnots[$p][] = $v; + } + } +/*-- END ANNOTATIONS --*/ + +/*-- BOOKMARKS --*/ + + // Adjust Bookmarks + foreach($this->kwt_BMoutlines AS $v) { + if ($v['y'] != 0) { $v['y'] += $yadj; } + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page); + } +/*-- END BOOKMARKS --*/ + +/*-- INDEX --*/ + + // Adjust Reference (index) + foreach($this->kwt_Reference AS $v) { + $Present=0; + //Search the reference (AND Ref/PageNo) in the array + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($this->page,$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $this->page; + } + } + } + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page)); + } + } +/*-- END INDEX --*/ + +/*-- TOC --*/ + + // Adjust ToC + foreach($this->kwt_toc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']); + $this->links[$v['link']][0] = $this->page; + $this->links[$v['link']][1] += $yadj; + } +/*-- END TOC --*/ + + + $this->kwt_Links = array(); + $this->kwt_Annots = array(); + + $this->kwt_Reference = array(); + $this->kwt_BMoutlines = array(); + $this->kwt_toc = array(); + //Stop Transformation + $this->pages[$this->page] .= $this->StopTransform(true)."\n"; + + $this->kwt_buffer = array(); + + $this->y += $this->kwt_height; +} + +/*-- END TABLES --*/ + + +//================================================================== + +function printfloatbuffer() { + if (count($this->floatbuffer)) { + $this->objectbuffer = $this->floatbuffer; + $this->printobjectbuffer(false); + $this->objectbuffer = array(); + $this->floatbuffer = array(); + $this->floatmargins = array(); + } +} +//================================================================== + +function printdivbuffer() { + $p1 = $this->blk[$this->blklvl]['startpage']; + $p2 = $this->page; + $bottom[$p1] = $this->ktBlock[$p1]['bottom_margin']; + $bottom[$p2] = $this->y; // $this->ktBlock[$p2]['bottom_margin']; + $top[$p1] = $this->kt_y00; + + $top2 = $this->h; + foreach($this->divbuffer AS $key=>$s) { + if ($s['page'] == $p2) { + $top2 = MIN($s['y'], $top2); + } + } + $top[$p2] = $top2; + $height[$p1] = ($bottom[$p1] - $top[$p1]); + $height[$p2] = ($bottom[$p2] - $top[$p2]); + $xadj[$p1] = $this->MarginCorrection; + $yadj[$p1] = -($top[$p1] - $top[$p2]); + $xadj[$p2] = 0; + $yadj[$p2] = $height[$p1]; + + // Output without any transformation + if ($this->ColActive || !$this->keep_block_together || $this->blk[$this->blklvl]['startpage'] == $this->page || ($this->page - $this->blk[$this->blklvl]['startpage']) > 1 || ($height[$p1]+$height[$p2]) > $this->h) { + foreach($this->divbuffer AS $s) { $this->pages[$s['page']] .= $s['s']."\n"; } + foreach($this->ktLinks AS $p => $l) { + foreach($l AS $v) { + $this->PageLinks[$p][] = $v; + } + } + foreach($this->ktForms AS $key => $f) { + $this->form->forms[$f['n']] = $f; + } +/*-- ANNOTATIONS --*/ + foreach($this->ktAnnots AS $p => $l) { + foreach($l AS $v) { + $this->PageAnnots[$p][] = $v; + } + } +/*-- END ANNOTATIONS --*/ +/*-- INDEX --*/ + // Adjust Reference (index) + foreach($this->ktReference AS $v) { + $Present=0; + //Search the reference (AND Ref/PageNo) in the array + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($p2,$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $p2; + } + } + } + //If not found, add it + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2)); + } + } +/*-- END INDEX --*/ + +/*-- BOOKMARKS --*/ + // Adjust Bookmarks + foreach($this->ktBMoutlines AS $v) { + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']); + } +/*-- END BOOKMARKS --*/ + +/*-- TOC --*/ + // Adjust ToC + foreach($this->_kttoc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']); + } +/*-- END TOC --*/ + + $this->divbuffer = array(); + $this->ktLinks = array(); + $this->ktAnnots = array(); + $this->ktForms = array(); + $this->ktBlock = array(); + $this->ktReference = array(); + $this->ktBMoutlines = array(); + $this->_kttoc = array(); + $this->keep_block_together = 0; + return; + } + else { + // Output with transformation + // mPDF 5.6.17 + $np = ''; + $lastpage = -1; + foreach($this->divbuffer AS $key=>$s) { + // callback function + $t = $s['s']; + $p = $s['page']; + if ($p != $lastpage) { + $q = ''; + if ($lastpage != -1) { $q = ' Q'."\n"; } + $t = $q . $this->StartTransform(true)."\n" . $this->transformTranslate($xadj[$p], $yadj[$p] , true)."\n" . $t; + $lastpage = $p; + } + $np .= $t."\n"; + } + if ($lastpage != -1) { $np .= ' Q'."\n"; } + + $this->pages[$this->page] .= $np; + + // Adjust hyperLinks + foreach($this->ktLinks AS $p => $l) { + foreach($l AS $v) { + $v[0] += ($xadj[$p]*_MPDFK); + $v[1] -= ($yadj[$p]*_MPDFK); + $this->PageLinks[$p2][] = $v; + } + } + foreach($this->ktForms AS $key => $f) { + $p = $f['page']; + $f['x'] += ($xadj[$p]); + $f['y'] += ($yadj[$p]); + $f['page'] = $p2; + $this->form->forms[$f['n']] = $f; + } + foreach($this->internallink AS $key => $f) { + if (is_array($f) && isset($f['kt'])) { + $f['Y'] += ($yadj[$f['PAGE']]); + $f['PAGE'] = $p2; + unset($f['kt']); + $this->internallink[$key] = $f; + } + } +/*-- ANNOTATIONS --*/ + foreach($this->ktAnnots AS $p => $l) { + foreach($l AS $v) { + if ($v['x']>0) { $v['x'] += $xadj[$p]; } + else if ($v['x']<0) { $v['x'] -= $xadj[$p]; } + $v['y'] += $yadj[$p]; + $this->PageAnnots[$p2][] = $v; + } + } +/*-- END ANNOTATIONS --*/ + +/*-- BOOKMARKS --*/ + // Adjust Bookmarks + foreach($this->ktBMoutlines AS $v) { + if ($v['y'] != 0) { $v['y'] += ($yadj[$v['p']]); } + $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$p2); + } +/*-- END BOOKMARKS --*/ + +/*-- INDEX --*/ + // Adjust Reference (index) + foreach($this->ktReference AS $v) { + $Present=0; + //Search the reference (AND Ref/PageNo) in the array + for ($i=0;$iReference);$i++){ + if ($this->Reference[$i]['t']==$v['t']){ + $Present=1; + if (!in_array($p2,$this->Reference[$i]['p'])) { + $this->Reference[$i]['p'][] = $p2; + } + } + } + //If not found, add it + if ($Present==0) { + $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2)); + } + } +/*-- END INDEX --*/ + +/*-- TOC --*/ + // Adjust ToC + foreach($this->_kttoc AS $v) { + $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$p2,'link'=>$v['link'],'toc_id'=>$v['toc_id']); + $this->links[$v['link']][0] = $p2; + $this->links[$v['link']][1] += $yadj[$v['p']]; + } +/*-- END TOC --*/ + + $this->y = $top[$p2] + $height[$p1] + $height[$p2]; + $this->x = $this->lMargin; + + $this->divbuffer = array(); + $this->ktLinks = array(); + $this->ktAnnots = array(); + $this->ktForms = array(); + $this->ktBlock = array(); + $this->ktReference = array(); + $this->ktBMoutlines = array(); + $this->_kttoc = array(); + $this->keep_block_together = 0; + } +} + + +//================================================================== +// Added ELLIPSES and CIRCLES +function Circle($x,$y,$r,$style='S') { + $this->Ellipse($x,$y,$r,$r,$style); +} + +function Ellipse($x,$y,$rx,$ry,$style='S') { + if($style=='F') { $op='f'; } + elseif($style=='FD' or $style=='DF') { $op='B'; } + else { $op='S'; } + $lx=4/3*(M_SQRT2-1)*$rx; + $ly=4/3*(M_SQRT2-1)*$ry; + $h=$this->h; + $this->_out(sprintf('%.3F %.3F m %.3F %.3F %.3F %.3F %.3F %.3F c', ($x+$rx)*_MPDFK,($h-$y)*_MPDFK, ($x+$rx)*_MPDFK,($h-($y-$ly))*_MPDFK, ($x+$lx)*_MPDFK,($h-($y-$ry))*_MPDFK, $x*_MPDFK,($h-($y-$ry))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x-$lx)*_MPDFK,($h-($y-$ry))*_MPDFK, ($x-$rx)*_MPDFK,($h-($y-$ly))*_MPDFK, ($x-$rx)*_MPDFK,($h-$y)*_MPDFK)); + $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x-$rx)*_MPDFK,($h-($y+$ly))*_MPDFK, ($x-$lx)*_MPDFK,($h-($y+$ry))*_MPDFK, $x*_MPDFK,($h-($y+$ry))*_MPDFK)); + $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c %s', ($x+$lx)*_MPDFK,($h-($y+$ry))*_MPDFK, ($x+$rx)*_MPDFK,($h-($y+$ly))*_MPDFK, ($x+$rx)*_MPDFK,($h-$y)*_MPDFK, $op)); +} + +/*-- DIRECTW --*/ +// Added adaptation of shaded_box = AUTOSIZE-TEXT +function AutosizeText($text,$w,$font,$style,$szfont=72) { + $text = $this->purify_utf8_text($text); + if ($this->text_input_as_HTML) { + $text = $this->all_entities_to_utf8($text); + } + if ($this->usingCoreFont) { $text = mb_convert_encoding($text,$this->mb_enc,'UTF-8'); } + $text = ' '.$text.' '; + $width = $this->ConvertSize($w); + $loop = 0; + while ( $loop == 0 ) { + $this->SetFont($font,$style,$szfont); + $sz = $this->GetStringWidth( $text ); + if ( $sz > $w ) { $szfont --; } + else { $loop ++; } + } + $this->SetFont($font,$style,$szfont); + $this->Cell($w, 0, $text, 0, 0, "C"); +} +/*-- END DIRECTW --*/ + + + + + +// ==================================================== +// ==================================================== +/*-- RTL --*/ +function reverse_letters($str) { + $str = strtr($str, '{}[]()', '}{][)('); + return $this->mb_strrev($str, $this->mb_enc); +} + +function magic_reverse_dir(&$chunk, $join=true, $dir) { + if ($this->usingCoreFont) { return 0; } + if ($this->biDirectional) { + // mPDF 5.4.05 Include PUA for non-indexed Arabic glyphs + $pregRTLchars = $this->pregRTLchars; + if ($this->CurrentFont['unAGlyphs']) { $pregRTLchars .= "\x{F500}-\x{F7FF}"; } + + // Change Arabic + Persian. to Presentation Forms + if ($join) { + $chunk = preg_replace("/([".$pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $chunk ); + } + $contains_rtl = false; + $all_rtl = true; + $initSpace = false; + $endSpace = false; + $nonDirchars = "\x{A0}\"\'\(\)\{\}\[\].,:\\/-="; // mPDF 5.6.32 + // mPDF 5.6.43 + $bdo=array(); + preg_match_all('/([\x{202A}\x{202B}])(.*?)([\x{202C}])/u',$chunk,$m); + if (count($m[0])) { + for($i=0;$ireverse_letters($m[2][$i]); + } + else if ($m[1][$i]=="\xe2\x80\xaa") { // Left-to-Right Embedding [LRE] U+202A ‪ + $mark = code2utf(0xf880+$i); + $bdo[$i] = $m[2][$i]; + } + $chunk = preg_replace('/'.preg_quote($m[0][$i],'/').'/u',$mark,$chunk); + } + $pregRTLchars .= "\x{F800}-\x{F87F}"; + } + if (preg_match("/[".$pregRTLchars."]/u",$chunk)) { // Chunk contains RTL characters + if (preg_match("/^[ ]/",$chunk)) { $initSpace = true; $chunk = preg_replace("/^[ ]/",'',$chunk); } + if (preg_match("/[ ]$/",$chunk)) { $endSpace = true; $chunk = preg_replace("/[ ]$/",'',$chunk); } + + if (preg_match("/[^".$pregRTLchars.$nonDirchars." ]/u",$chunk)) { // Chunk also contains LTR characters + $all_rtl = false; + if ($dir == 'rtl') { + $chunk = preg_replace("/([^".$pregRTLchars.$nonDirchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[^".$pregRTLchars.$nonDirchars."])/u","\\1\x07\\2",$chunk); + } + $chunk = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$chunk); + $bits = explode(' ',$chunk); + foreach($bits AS $bitkey=>$bit) { + $bit = preg_replace("/\x07/"," ",$bit); + if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$bit)) { + $bits[$bitkey] = $this->reverse_letters($bit); + } + else if (preg_match("/[".$pregRTLchars."]/u",$bit)) { + if ($dir == 'rtl') { + $bit = preg_replace("/([^".$pregRTLchars.$nonDirchars." ])([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$bit ); + $bit = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*)([^".$pregRTLchars.$nonDirchars." ])/u","\\1\x07\\2",$bit ); + } + else { + $bit = preg_replace("/([^".$pregRTLchars." ][".$nonDirchars."]*)([".$pregRTLchars." ])/u","\\1\x07\\2",$bit ); + $bit = preg_replace("/([".$pregRTLchars." ])([".$nonDirchars."]*[^".$pregRTLchars." ])/u","\\1\x07\\2",$bit ); + } + $sbits = explode("\x07",$bit ); + foreach($sbits AS $sbitkey=>$sbit) { + $sbit = preg_replace("/\x07/","",$sbit); + if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$sbit)) { + $sbits[$sbitkey] = $this->reverse_letters($sbit); + } + else if (preg_match("/[".$pregRTLchars."]/u",$sbit) && $dir=='rtl') { + $sbits[$sbitkey] = $this->reverse_letters($sbit); + } + else { + // Reverse numerals only to RTL + $sbit = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $sbit ); // mPDF 5.6.32 // mPDF 5.6.46 + $sbits[$sbitkey] = $sbit; + } + } + if ($dir == 'rtl') { $sbits = array_reverse($sbits,false); } + $bits[$bitkey] = implode('',$sbits); + } + else if (preg_match("/[".$pregRTLchars."]/u",$bit) && $dir=='rtl') { + $bits[$bitkey] = $this->reverse_letters($bit); + } + else { + // Reverse numerals only to RTL + $bit = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $bit ); // mPDF 5.6.32 // mPDF 5.6.46 + $bits[$bitkey] = $bit; + } + } + if ($dir == 'rtl') { $bits = array_reverse($bits,false); } + $chunk = implode(' ',$bits); + } + else { $chunk = $this->reverse_letters($chunk); } + $contains_rtl = true; + + // Un-Reverse numerals back to ltr + $chunk = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $chunk ); // mPDF 5.6.13 // mPDF 5.6.32 // mPDF 5.6.46 + if ($dir == 'rtl') { + if ($endSpace) { $chunk = ' '.$chunk; } + if ($initSpace) { $chunk .= ' '; } + } + else { + if ($initSpace) { $chunk = ' '.$chunk; } + if ($endSpace) { $chunk .= ' '; } + } + } + else { $all_rtl = false; } + + // mPDF 5.6.43 + if (count($bdo)) { + for($i=0;$isubstitute = array(); + foreach($subsarray AS $key => $val) { + $this->substitute[code2utf($key)] = $val; + } +} + + +function SubstituteChars($html) { + // only substitute characters between tags + if (count($this->substitute)) { + $a=preg_split('/(<.*?>)/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE); + $html = ''; + foreach($a as $i => $e) { + if($i%2==0) { + $e = strtr($e, $this->substitute); + } + $html .= $e; + } + } + return $html; +} + + +function SubstituteCharsSIP(&$writehtml_a, &$writehtml_i, &$writehtml_e) { + if (preg_match("/^(.*?)([\x{20000}-\x{2FFFF}]+)(.*)/u", $writehtml_e, $m)) { + if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) { + $font = $this->CurrentFont['sipext']; + if (!in_array($font, $this->available_unifonts)) { return 0; } + $writehtml_a[$writehtml_i] = $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3])); + $this->subPos = $writehtml_i; + return 4; + } + } + return 0; +} + +// If core font is selected in document which is not onlyCoreFonts - substitute with non-core font +function SubstituteCharsNonCore(&$writehtml_a, &$writehtml_i, &$writehtml_e) { + if (mb_convert_encoding(mb_convert_encoding($writehtml_e, $this->mb_enc, "UTF-8"), "UTF-8", $this->mb_enc) == $writehtml_e) { + return 0; + } + $cw = &$this->CurrentFont['cw']; + $unicode = $this->UTF8StringToArray($writehtml_e, false); + $start = -1; + $end = 0; + $flag = 0; + $ftype = ''; + $u = array(); + if (!$this->subArrMB) { + include(_MPDF_PATH.'includes/subs_core.php'); + $this->subArrMB['a'] = $aarr; + $this->subArrMB['s'] = $sarr; + $this->subArrMB['z'] = $zarr; + } + foreach($unicode AS $c => $char) { + if (($char> 127 || ($flag==1 && $char==32)) && $char != 173 && (!isset($this->subArrMB['a'][$char]) || ($flag==1 && $char==32)) && ($char<1536 || ($char>1791 && $char < 2304) || $char>3455)) { + if ($flag==0) { $start=$c; } + $flag=1; + $u[] = $char; + } + else if ($flag>0) { $end=$c-1; break; } + } + if ($flag>0 && !$end) { $end=count($unicode)-1; } + if ($start==-1) { return 0; } + // TRY IN BACKUP SUBS FONT + if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); } + foreach($this->backupSubsFont AS $bsfctr=>$bsf) { + if ($this->fonttrans[$bsf] == 'chelvetica' || $this->fonttrans[$bsf] == 'ctimes' || $this->fonttrans[$bsf] == 'ccourier') { continue; } + $font = $bsf; + unset($cw); + $cw = ''; + if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; } + else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); } + else { + + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($bsf, '', '', false); + $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + } + if (!$cw) { continue; } + $l = 0; + foreach($u AS $char) { + if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) { + $l++; + } + else { + if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) { // Not found even in last backup font + $cont = mb_substr($writehtml_e, $start+1); + $writehtml_e = mb_substr($writehtml_e, 0, $start+1, 'UTF-8'); + array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont)); + $this->subPos = $writehtml_i+1; + return 2; + } + else { break; } + } + } + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l, 'UTF-8'); + if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3])); + $this->subPos = $writehtml_i+3; + return 4; + } + } + } + + unset($cw); + return 0; +} + + +function SubstituteCharsMB(&$writehtml_a, &$writehtml_i, &$writehtml_e) { + $cw = &$this->CurrentFont['cw']; + $unicode = $this->UTF8StringToArray($writehtml_e, false); + $start = -1; + $end = 0; + $flag = 0; + $ftype = ''; + $u = array(); + foreach($unicode AS $c => $char) { + if (($flag == 0 || $flag==2) && (!$this->_charDefined($cw,$char) || ($flag==2 && $char==32)) && $this->checkSIP && $char > 131071) { // Unicode Plane 2 (SIP) + if (in_array($this->FontFamily ,$this->available_CJK_fonts)) { return 0; } + if ($flag==0) { $start=$c; } + $flag=2; + $u[] = $char; + } + //else if (($flag == 0 || $flag==1) && $char != 173 && !$this->_charDefined($cw,$char) && ($char<1423 || ($char>3583 && $char < 11263))) { + else if (($flag == 0 || $flag==1) && $char != 173 && (!$this->_charDefined($cw,$char) || ($flag==1 && $char==32)) && ($char<1536 || ($char>1791 && $char < 2304) || $char>3455)) { + if ($flag==0) { $start=$c; } + $flag=1; + $u[] = $char; + } + else if ($flag>0) { $end=$c-1; break; } + } + if ($flag>0 && !$end) { $end=count($unicode)-1; } + if ($start==-1) { return 0; } + if ($flag == 2) { // SIP + // Check if current CJK font has a ext-B related font + if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) { + $font = $this->CurrentFont['sipext']; + unset($cw); + $cw = ''; + if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; } + else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); } + else { + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($font, '', '', false); + $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + } + if (!$cw) { return 0; } + $l = 0; + foreach($u AS $char) { + if ($this->_charDefined($cw,$char) || $char > 131071) { + $l++; + } + else { break; } + } + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l); + if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3])); + $this->subPos = $writehtml_i+3; + return 4; + } + } + } + // Check Backup SIP font (defined in config_fonts.php) + if (isset($this->backupSIPFont) && $this->backupSIPFont) { + if ($this->currentfontfamily != $this->backupSIPFont) { $font = $this->backupSIPFont; } + else { unset($cw); return 0; } + unset($cw); + $cw = ''; + if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; } + else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); } + else { + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($this->backupSIPFont, '', '', false); + $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + } + if (!$cw) { return 0; } + $l = 0; + foreach($u AS $char) { + if ($this->_charDefined($cw,$char) || $char > 131071) { + $l++; + } + else { break; } + } + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l); + if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3])); + $this->subPos = $writehtml_i+3; + return 4; + } + } + } + return 0; + } + + + // FIRST TRY CORE FONTS + if (!$this->PDFA && !$this->PDFX) { + $repl = array(); + if (!$this->subArrMB) { + include(_MPDF_PATH.'includes/subs_core.php'); + $this->subArrMB['a'] = $aarr; + $this->subArrMB['s'] = $sarr; + $this->subArrMB['z'] = $zarr; + } + if (isset($this->subArrMB['a'][$u[0]])) { + $font = 'tta'; $ftype = 'C'; + foreach($u AS $char) { + if ($this->subArrMB['a'][$char]) { $repl[] = $this->subArrMB['a'][$char]; } + else { break; } + } + } + else if (isset($this->subArrMB['z'][$u[0]])) { + $font = 'ttz'; $ftype = 'C'; + foreach($u AS $char) { + if ($this->subArrMB['z'][$char]) { $repl[] = $this->subArrMB['z'][$char]; } + else { break; } + } + } + else if (isset($this->subArrMB['s'][$u[0]])) { + $font = 'tts'; $ftype = 'C'; + foreach($u AS $char) { + if ($this->subArrMB['s'][$char]) { $repl[] = $this->subArrMB['s'][$char]; } + else { break; } + } + } + if ($ftype=='C') { + $patt = mb_substr($writehtml_e, $start, count($repl)); + if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i+1, 0, array($font, implode('|', $repl), '/'.$font, $m[3])); // e.g. + $this->subPos = $writehtml_i+3; + return 4; + } + return 0; + } + } + + // FIND IN DEFAULT FONT - removed mPDF 5.0 + + // LASTLY TRY IN BACKUP SUBS FONT + if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); } + foreach($this->backupSubsFont AS $bsfctr=>$bsf) { + if ($this->currentfontfamily != $bsf) { $font = $bsf; } + else { continue; } + unset($cw); + $cw = ''; + if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; } + else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); } + else { + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->currentfontstyle; + $prevFontSizePt = $this->FontSizePt; + $this->SetFont($bsf, '', '', false); + $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false); + } + if (!$cw) { continue; } + $l = 0; + foreach($u AS $char) { + if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) { // Arabic and Indic + $l++; + } + else { + if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) { // Not found even in last backup font + $cont = mb_substr($writehtml_e, $start+1); + $writehtml_e = mb_substr($writehtml_e, 0, $start+1); + array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont)); + $this->subPos = $writehtml_i+1; + return 2; + } + else { break; } + } + } + if ($l > 0) { + $patt = mb_substr($writehtml_e, $start, $l); + if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) { + $writehtml_e = $m[1]; + array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3])); + $this->subPos = $writehtml_i+3; + return 4; + } + } + } + + unset($cw); + return 0; +} + + +function setHiEntitySubstitutions() { + $entarr = array ( + 'nbsp' => '160', 'iexcl' => '161', 'cent' => '162', 'pound' => '163', 'curren' => '164', 'yen' => '165', 'brvbar' => '166', 'sect' => '167', + 'uml' => '168', 'copy' => '169', 'ordf' => '170', 'laquo' => '171', 'not' => '172', 'shy' => '173', 'reg' => '174', 'macr' => '175', + 'deg' => '176', 'plusmn' => '177', 'sup2' => '178', 'sup3' => '179', 'acute' => '180', 'micro' => '181', 'para' => '182', 'middot' => '183', + 'cedil' => '184', 'sup1' => '185', 'ordm' => '186', 'raquo' => '187', 'frac14' => '188', 'frac12' => '189', 'frac34' => '190', + 'iquest' => '191', 'Agrave' => '192', 'Aacute' => '193', 'Acirc' => '194', 'Atilde' => '195', 'Auml' => '196', 'Aring' => '197', + 'AElig' => '198', 'Ccedil' => '199', 'Egrave' => '200', 'Eacute' => '201', 'Ecirc' => '202', 'Euml' => '203', 'Igrave' => '204', + 'Iacute' => '205', 'Icirc' => '206', 'Iuml' => '207', 'ETH' => '208', 'Ntilde' => '209', 'Ograve' => '210', 'Oacute' => '211', + 'Ocirc' => '212', 'Otilde' => '213', 'Ouml' => '214', 'times' => '215', 'Oslash' => '216', 'Ugrave' => '217', 'Uacute' => '218', + 'Ucirc' => '219', 'Uuml' => '220', 'Yacute' => '221', 'THORN' => '222', 'szlig' => '223', 'agrave' => '224', 'aacute' => '225', + 'acirc' => '226', 'atilde' => '227', 'auml' => '228', 'aring' => '229', 'aelig' => '230', 'ccedil' => '231', 'egrave' => '232', + 'eacute' => '233', 'ecirc' => '234', 'euml' => '235', 'igrave' => '236', 'iacute' => '237', 'icirc' => '238', 'iuml' => '239', + 'eth' => '240', 'ntilde' => '241', 'ograve' => '242', 'oacute' => '243', 'ocirc' => '244', 'otilde' => '245', 'ouml' => '246', + 'divide' => '247', 'oslash' => '248', 'ugrave' => '249', 'uacute' => '250', 'ucirc' => '251', 'uuml' => '252', 'yacute' => '253', + 'thorn' => '254', 'yuml' => '255', 'OElig' => '338', 'oelig' => '339', 'Scaron' => '352', 'scaron' => '353', 'Yuml' => '376', + 'fnof' => '402', 'circ' => '710', 'tilde' => '732', 'Alpha' => '913', 'Beta' => '914', 'Gamma' => '915', 'Delta' => '916', + 'Epsilon' => '917', 'Zeta' => '918', 'Eta' => '919', 'Theta' => '920', 'Iota' => '921', 'Kappa' => '922', 'Lambda' => '923', + 'Mu' => '924', 'Nu' => '925', 'Xi' => '926', 'Omicron' => '927', 'Pi' => '928', 'Rho' => '929', 'Sigma' => '931', 'Tau' => '932', + 'Upsilon' => '933', 'Phi' => '934', 'Chi' => '935', 'Psi' => '936', 'Omega' => '937', 'alpha' => '945', 'beta' => '946', 'gamma' => '947', + 'delta' => '948', 'epsilon' => '949', 'zeta' => '950', 'eta' => '951', 'theta' => '952', 'iota' => '953', 'kappa' => '954', + 'lambda' => '955', 'mu' => '956', 'nu' => '957', 'xi' => '958', 'omicron' => '959', 'pi' => '960', 'rho' => '961', 'sigmaf' => '962', + 'sigma' => '963', 'tau' => '964', 'upsilon' => '965', 'phi' => '966', 'chi' => '967', 'psi' => '968', 'omega' => '969', + 'thetasym' => '977', 'upsih' => '978', 'piv' => '982', 'ensp' => '8194', 'emsp' => '8195', 'thinsp' => '8201', 'zwnj' => '8204', + 'zwj' => '8205', 'lrm' => '8206', 'rlm' => '8207', 'ndash' => '8211', 'mdash' => '8212', 'lsquo' => '8216', 'rsquo' => '8217', + 'sbquo' => '8218', 'ldquo' => '8220', 'rdquo' => '8221', 'bdquo' => '8222', 'dagger' => '8224', 'Dagger' => '8225', 'bull' => '8226', + 'hellip' => '8230', 'permil' => '8240', 'prime' => '8242', 'Prime' => '8243', 'lsaquo' => '8249', 'rsaquo' => '8250', 'oline' => '8254', + 'frasl' => '8260', 'euro' => '8364', 'image' => '8465', 'weierp' => '8472', 'real' => '8476', 'trade' => '8482', 'alefsym' => '8501', + 'larr' => '8592', 'uarr' => '8593', 'rarr' => '8594', 'darr' => '8595', 'harr' => '8596', 'crarr' => '8629', 'lArr' => '8656', + 'uArr' => '8657', 'rArr' => '8658', 'dArr' => '8659', 'hArr' => '8660', 'forall' => '8704', 'part' => '8706', 'exist' => '8707', + 'empty' => '8709', 'nabla' => '8711', 'isin' => '8712', 'notin' => '8713', 'ni' => '8715', 'prod' => '8719', 'sum' => '8721', + 'minus' => '8722', 'lowast' => '8727', 'radic' => '8730', 'prop' => '8733', 'infin' => '8734', 'ang' => '8736', 'and' => '8743', + 'or' => '8744', 'cap' => '8745', 'cup' => '8746', 'int' => '8747', 'there4' => '8756', 'sim' => '8764', 'cong' => '8773', + 'asymp' => '8776', 'ne' => '8800', 'equiv' => '8801', 'le' => '8804', 'ge' => '8805', 'sub' => '8834', 'sup' => '8835', 'nsub' => '8836', + 'sube' => '8838', 'supe' => '8839', 'oplus' => '8853', 'otimes' => '8855', 'perp' => '8869', 'sdot' => '8901', 'lceil' => '8968', + 'rceil' => '8969', 'lfloor' => '8970', 'rfloor' => '8971', 'lang' => '9001', 'rang' => '9002', 'loz' => '9674', 'spades' => '9824', + 'clubs' => '9827', 'hearts' => '9829', 'diams' => '9830', + ); + foreach($entarr AS $key => $val) { + $this->entsearch[] = '&'.$key.';'; + $this->entsubstitute[] = code2utf($val); + } +} + +function SubstituteHiEntities($html) { + // converts html_entities > ASCII 127 to unicode + // Leaves in particular < to distinguish from tag marker + if (count($this->entsearch)) { + $html = str_replace($this->entsearch,$this->entsubstitute,$html); + } + return $html; +} + + +// Edited v1.2 Pass by reference; option to continue if invalid UTF-8 chars +function is_utf8(&$string) { + if ($string === mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) { + return true; + } + else { + if ($this->ignore_invalid_utf8) { + $string = mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") ; + return true; + } + else { + return false; + } + } +} + + +function purify_utf8($html,$lo=true) { + // For HTML + // Checks string is valid UTF-8 encoded + // converts html_entities > ASCII 127 to UTF-8 + // Only exception - leaves low ASCII entities e.g. < & etc. + // Leaves in particular < to distinguish from tag marker + if (!$this->is_utf8($html)) { + echo "

      HTML contains invalid UTF-8 character(s)

      "; + while (mb_convert_encoding(mb_convert_encoding($html, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") != $html) { + $a = iconv('UTF-8', 'UTF-8', $html); + echo ($a); + $pos = $start = strlen($a); + $err = ''; + while ( ord(substr($html,$pos,1)) > 128 ) { + $err .= '[[#'.ord(substr($html,$pos,1)).']]'; + $pos++; + } + echo ''.$err.''; + $html = substr($html, $pos); + } + echo $html; + $this->Error(""); + } + $html = preg_replace("/\r/", "", $html ); + + // converts html_entities > ASCII 127 to UTF-8 + // Leaves in particular < to distinguish from tag marker + $html = $this->SubstituteHiEntities($html); + + // converts all &#nnn; or &#xHHH; to UTF-8 multibyte + // If $lo==true then includes ASCII < 128 + $html = strcode2utf($html,$lo); + return ($html); +} + +function purify_utf8_text($txt) { + // For TEXT + // Make sure UTF-8 string of characters + if (!$this->is_utf8($txt)) { $this->Error("Text contains invalid UTF-8 character(s)"); } + + $txt = preg_replace("/\r/", "", $txt ); + + return ($txt); +} +function all_entities_to_utf8($txt) { + // converts txt_entities > ASCII 127 to UTF-8 + // Leaves in particular < to distinguish from tag marker + $txt = $this->SubstituteHiEntities($txt); + + // converts all &#nnn; or &#xHHH; to UTF-8 multibyte + $txt = strcode2utf($txt); + + $txt = $this->lesser_entity_decode($txt); + return ($txt); +} + + +// ==================================================== +/*-- BARCODES --*/ +// UPC/EAN barcode +// EAN13, EAN8, UPCA, UPCE, ISBN, ISSN +// Accepts 12 or 13 digits with or without - hyphens +function WriteBarcode($code, $showtext=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2, $height=1, $bgcol=false, $col=false, $btype='ISBN', $supplement='0', $supplement_code='', $k=1) { + if (empty($code)) { + return; + } + $codestr = $code; + $code = preg_replace('/\-/','',$code); + + if (!class_exists('PDFBarcode', false)) { + include(_MPDF_PATH.'classes/barcode.php'); + } + $this->barcode = new PDFBarcode(); + if ($btype == 'ISSN' || $btype == 'ISBN') { + $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13'); + } + else { $arrcode = $this->barcode->getBarcodeArray($code, $btype); } + + if ($arrcode === false) { $this->Error('Error in barcode string: '.$codestr); } + if((($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') && strlen($code) == 12) || ($btype=='UPCA' && strlen($code) == 11) + || ($btype=='UPCE' && strlen($code) == 11) || ($btype=='EAN8' && strlen($code) == 7)) { + $code .= $arrcode['checkdigit']; + if (stristr($codestr,'-')) { $codestr .= '-' . $arrcode['checkdigit']; } + else { $codestr .= $arrcode['checkdigit']; } + } + if ($btype == 'ISBN') { $codestr = 'ISBN '.$codestr; } + if ($btype == 'ISSN') { $codestr = 'ISSN '.$codestr; } + + if (empty($x)) { + $x = $this->x; + } + if (empty($y)) { + $y = $this->y; + } + // set foreground color + $prevDrawColor = $this->DrawColor; + $prevTextColor = $this->TextColor; + $prevFillColor = $this->FillColor; + $lw = $this->LineWidth; + $this->SetLineWidth(0.01); + + $size /= $k; // in case resized in a table + + $xres = $arrcode['nom-X'] * $size; + $llm = $arrcode['lightmL'] * $arrcode['nom-X'] * $size; // Left Light margin + $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin + + $bcw = ($arrcode["maxw"] * $xres); // Barcode width = Should always be 31.35mm * $size + + $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins + $ow = $fbw + $paddingL + $paddingR; // Full overall width incl. user-defined padding + + $fbwi = $fbw - 2; // Full barcode width incl. light margins - 2mm - for isbn string + + // cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf + $num_height = 3 * $size; // Height of numerals + $fbh = $arrcode['nom-H'] * $size * $height; // Full barcode height incl. numerals + $bch = $fbh - (1.5 * $size); // Barcode height of bars (3mm for numerals) + + if (($btype=='EAN13' && $showtext) || $btype == 'ISSN' || $btype == 'ISBN') { // Add height for ISBN string + margin from top of bars + $tisbnm = 1.5 * $size; // Top margin between isbn (if shown) & bars + $codestr_fontsize = 2.1 * $size; + $paddingT += $codestr_fontsize + $tisbnm ; + } + $oh = $fbh + $paddingT + $paddingB; // Full overall height incl. user-defined padding + + // PRINT border background color + $xpos = $x; + $ypos = $y; + if ($col) { + $this->SetDColor($col); + $this->SetTColor($col); + } + else { + $this->SetDColor($this->ConvertColor(0)); + $this->SetTColor($this->ConvertColor(0)); + } + if ($bgcol) { + $this->SetFColor($bgcol); + } + else { $this->SetFColor($this->ConvertColor(255)); } + if (!$bgcol && !$col) { // fn. called directly - not via HTML + if ($border) { $fillb = 'DF'; } else { $fillb = 'F'; } + $this->Rect($xpos, $ypos, $ow, $oh, $fillb); + } + + + // PRINT BARS + $xpos = $x + $paddingL + $llm ; + $ypos = $y + $paddingT; + if ($col) { $this->SetFColor($col); } + else { $this->SetFColor($this->ConvertColor(0)); } + if ($arrcode !== false) { + foreach ($arrcode["bcode"] AS $v) { + $bw = ($v["w"] * $xres); + if ($v["t"]) { + // draw a vertical bar + $this->Rect($xpos, $ypos, $bw, $bch, 'F'); + } + $xpos += $bw; + } + } + + + // print text + $prevFontFamily = $this->FontFamily; + $prevFontStyle = $this->FontStyle; + $prevFontSizePt = $this->FontSizePt; + + // ISBN string + if (($btype=='EAN13' && $showtext) || $btype=='ISBN' || $btype=='ISSN') { + if ($this->onlyCoreFonts) { + $this->SetFont('chelvetica'); + } + else { + $this->SetFont('sans'); + } + + if ($bgcol) { $this->SetFColor($bgcol); } + else { $this->SetFColor($this->ConvertColor(255)); } + $this->x = $x + $paddingL + 1; // 1mm left margin (cf. $fbwi above) + // max width is $fbwi + $loop = 0; + while ( $loop == 0 ) { + $this->SetFontSize($codestr_fontsize*1.4*_MPDFK, false); // don't write + $sz = $this->GetStringWidth( $codestr ); + if ($sz > $fbwi) + $codestr_fontsize -= 0.1; + else + $loop ++; + } + $this->SetFont('','',$codestr_fontsize*1.4*_MPDFK, true, true); // * 1.4 because font height is only 7/10 of given mm + // WORD SPACING + if ($fbwi > $sz) { + $xtra = $fbwi - $sz; + $charspacing = $xtra / (strlen($codestr)-1); + if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); } + } + $this->y = $y + $paddingT - ($codestr_fontsize ) - $tisbnm ; + $this->Cell($fbw , $codestr_fontsize, $codestr); + if ($charspacing) { $this->_out('BT 0 Tc ET'); } + } + + + // Bottom NUMERALS + if ($this->onlyCoreFonts) { + $this->SetFont('mono'); + } + else { + if (in_array('ocrb',$this->available_unifonts)) { $this->SetFont('ocrb'); } + else { $this->SetFont('mono'); } + } + if (isset($this->CurrentFont['desc']['CapHeight'])) { $fh = (1000/$this->CurrentFont['desc']['CapHeight']); } + else if (isset($this->CurrentFont['desc']['Ascent'])) { $fh = (1000/$this->CurrentFont['desc']['Ascent']); } + else { $fh = 1.2; } + + $charRO = ''; + if ($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') { + $outerfontsize = 3; // Inner fontsize = 3 + $outerp = $xres * 4; + $innerp = $xres * 2.5; + $textw = ($bcw*0.5) - $outerp - $innerp; + $chars = 6; // number of numerals in each half + $charLO = substr($code,0,1); // Left Outer + $charLI = substr($code,1,6); // Left Inner + $charRI = substr($code,7,6); // Right Inner + if (!$supplement) $charRO = '>'; // Right Outer + } + else if ($btype=='UPCA') { + $outerfontsize = 2.3; // Inner fontsize = 3 + $outerp = $xres * 10; + $innerp = $xres * 2.5; + $textw = ($bcw*0.5) - $outerp - $innerp; + $chars = 5; + $charLO = substr($code,0,1); // Left Outer + $charLI = substr($code,1,5); // Left Inner + $charRI = substr($code,6,5); // Right Inner + $charRO = substr($code,11,1); // Right Outer + } + else if ($btype=='UPCE') { + $outerfontsize = 2.3; // Inner fontsize = 3 + $outerp = $xres * 4; + $innerp = 0; + $textw = ($bcw*0.5) - $outerp - $innerp; + $chars = 3; + $upce_code = $arrcode['code']; + $charLO = substr($code,0,1); // Left Outer + $charLI = substr($upce_code,0,3); // Left Inner + $charRI = substr($upce_code,3,3); // Right Inner + $charRO = substr($code,11,1); // Right Outer + } + else if ($btype=='EAN8') { + $outerfontsize = 3; // Inner fontsize = 3 + $outerp = $xres * 4; + $innerp = $xres * 2.5; + $textw = ($bcw*0.5) - $outerp - $innerp; + $chars = 4; + $charLO = '<'; // Left Outer + $charLI = substr($code,0,4); // Left Inner + $charRI = substr($code,4,4); // Right Inner + if (!$supplement) $charRO = '>'; // Right Outer + } + + $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters) + + if (!$this->usingCoreFont) { $cw = $this->_getCharWidth($this->CurrentFont['cw'],32)*3*$fh*$size/1000; } // character width at 3mm + else { $cw = $this->_getCharWidth($this->CurrentFont['cw'],48)*3*$fh*$size/1000; } // 48 == char "0" + + // Outer left character + $y_text = $y + $paddingT + $bch - ($num_height/2); + $y_text_outer = $y + $paddingT + $bch - ($num_height*($outerfontsize/3)/2); + + $this->x = $x + $paddingL - ($cw*($outerfontsize/3)*0.1); // 0.1 is correction as char does not fill full width; + $this->y = $y_text_outer; + $this->Cell($cw, $num_height, $charLO ); + + // WORD SPACING for inner chars + $xtra = $textw - ($cw*$chars); + $charspacing = $xtra / ($chars-1); + if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); } + + if ($bgcol) { $this->SetFColor($bgcol); } + else { $this->SetFColor($this->ConvertColor(255)); } + + $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters) + + // Inner left half characters + $this->x = $x + $paddingL + $llm + $outerp; + $this->y = $y_text; + $this->Cell($textw, $num_height, $charLI , 0, 0, '', 1); + + // Inner right half characters + $this->x = $x + $paddingL + $llm + ($bcw*0.5) + $innerp; + $this->y = $y_text; + $this->Cell($textw, $num_height, $charRI , 0, 0, '', 1); + + if ($charspacing) { $this->_out('BT 0 Tc ET'); } + + // Outer Right character + $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters) + + $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*($outerfontsize/3)*0.9); // 0.9 is correction as char does not fill full width + $this->y = $y_text_outer; + $this->Cell($cw*($outerfontsize/3), $num_height, $charRO , 0, 0, 'R'); + + if ($supplement) { // EAN-2 or -5 Supplement + // PRINT BARS + $supparrcode = $this->barcode->getBarcodeArray($supplement_code, 'EAN'.$supplement); + if ($supparrcode === false) { $this->Error('Error in barcode string (supplement): '.$codestr.' '.$supplement_code); } + if(strlen($supplement_code) != $supplement) { + $this->Error('Barcode supplement incorrect: '.$supplement_code); + } + $llm = $fbw - (($arrcode['lightmR'] - $supparrcode['sepM']) * $arrcode['nom-X'] * $size); // Left Light margin + $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin + + $bcw = ($supparrcode["maxw"] * $xres); // Barcode width = Should always be 31.35mm * $size + + $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins + $ow = $fbw + $paddingL + $paddingR; // Full overall width incl. user-defined padding + $bch = $fbh - (1.5 * $size) - ($num_height + 0.5); // Barcode height of bars (3mm for numerals) + + $xpos = $x + $paddingL + $llm ; + $ypos = $y + $paddingT + $num_height + 0.5; + if ($col) { $this->SetFColor($col); } + else { $this->SetFColor($this->ConvertColor(0)); } + if ($supparrcode !== false) { + foreach ($supparrcode["bcode"] AS $v) { + $bw = ($v["w"] * $xres); + if ($v["t"]) { + // draw a vertical bar + $this->Rect($xpos, $ypos, $bw, $bch, 'F'); + } + $xpos += $bw; + } + } + + // Characters + if ($bgcol) { $this->SetFColor($bgcol); } + else { $this->SetFColor($this->ConvertColor(255)); } + $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters) + $this->x = $x + $paddingL + $llm; + $this->y = $y + $paddingT; + $this->Cell($bcw, $num_height, $supplement_code, 0, 0, 'C'); + + // Outer Right character (light margin) + $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters) + $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*0.9); // 0.9 is correction as char does not fill full width + $this->y = $y + $paddingT; + $this->Cell($cw*($outerfontsize/3), $num_height, '>', 0, 0, 'R'); + } + + + + // Restore ************** + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt); + $this->DrawColor = $prevDrawColor; + $this->TextColor = $prevTextColor; + $this->FillColor = $prevFillColor; + $this->SetLineWidth($lw); + $this->SetY($y); +} + + + +// ==================================================== +// POSTAL and OTHER barcodes +function WriteBarcode2($code, $x='', $y='', $size=1, $height=1, $bgcol=false, $col=false, $btype='IMB', $print_ratio='', $k=1) { + if (empty($code)) { return; } + if (!class_exists('PDFBarcode', false)) { + include(_MPDF_PATH.'classes/barcode.php'); + } + $this->barcode = new PDFBarcode(); + $arrcode = $this->barcode->getBarcodeArray($code, $btype, $print_ratio); + + if ($arrcode === false) { $this->Error('Error in barcode string: '.$code); } + if (empty($x)) { $x = $this->x; } + if (empty($y)) { $y = $this->y; } + $prevDrawColor = $this->DrawColor; + $prevTextColor = $this->TextColor; + $prevFillColor = $this->FillColor; + $lw = $this->LineWidth; + $this->SetLineWidth(0.01); + $size /= $k; // in case resized in a table + $xres = $arrcode['nom-X'] * $size; + + if ($btype == 'IMB' || $btype == 'RM4SCC' || $btype == 'KIX' || $btype == 'POSTNET' || $btype == 'PLANET') { + $llm = $arrcode['quietL'] / $k; // Left Quiet margin + $rlm = $arrcode['quietR'] / $k; // Right Quiet margin + $tlm = $blm = $arrcode['quietTB'] / $k; + $height=1; // Overrides + } + else if (in_array($btype, array('C128A','C128B','C128C','EAN128A','EAN128B','EAN128C','C39','C39+','C39E','C39E+','S25','S25+','I25','I25+','I25B','I25B+','C93','MSI','MSI+','CODABAR','CODE11'))) { + $llm = $arrcode['lightmL'] * $xres; // Left Quiet margin + $rlm = $arrcode['lightmR'] * $xres; // Right Quiet margin + $tlm = $blm = $arrcode['lightTB'] * $xres * $height; + } + + + $bcw = ($arrcode["maxw"] * $xres); + $fbw = $bcw + $llm + $rlm; // Full barcode width incl. light margins + + $bch = ($arrcode["nom-H"] * $size * $height); + $fbh = $bch + $tlm + $blm; // Full barcode height + + // PRINT border background color + $xpos = $x; + $ypos = $y; + if ($col) { + $this->SetDColor($col); + $this->SetTColor($col); + } + else { + $this->SetDColor($this->ConvertColor(0)); + $this->SetTColor($this->ConvertColor(0)); + } + if ($bgcol) { + $this->SetFColor($bgcol); + } + else { $this->SetFColor($this->ConvertColor(255)); } + + // PRINT BARS + if ($col) { $this->SetFColor($col); } + else { $this->SetFColor($this->ConvertColor(0)); } + $xpos = $x + $llm ; + + if ($arrcode !== false) { + foreach ($arrcode["bcode"] AS $v) { + $bw = ($v["w"] * $xres); + if ($v["t"]) { + $ypos = $y + $tlm + ($bch * $v['p'] / $arrcode['maxh']); + $this->Rect($xpos, $ypos, $bw, ($v['h'] * $bch / $arrcode['maxh']), 'F'); + } + $xpos += $bw; + } + } + + // PRINT BEARER BARS + if ($btype == 'I25B' || $btype == 'I25B+') { + $this->Rect($x, $y, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F'); + $this->Rect($x, $y+$tlm+$bch, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F'); + } + + // Restore ************** + $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt); + $this->DrawColor = $prevDrawColor; + $this->TextColor = $prevTextColor; + $this->FillColor = $prevFillColor; + $this->SetLineWidth($lw); + $this->SetY($y); +} + +/*-- END BARCODES --*/ + +// ==================================================== +// ==================================================== + +function StartTransform($returnstring=false) { + if ($returnstring) { return('q'); } + else { $this->_out('q'); } +} +function StopTransform($returnstring=false) { + if ($returnstring) { return('Q'); } + else { $this->_out('Q'); } +} +function transformScale($s_x, $s_y, $x='', $y='', $returnstring=false) { + if ($x === '') { + $x=$this->x; + } + if ($y === '') { + $y=$this->y; + } + if (($s_x == 0) OR ($s_y == 0)) { + $this->Error('Please do not use values equal to zero for scaling'); + } + $y = ($this->h - $y) * _MPDFK; + $x *= _MPDFK; + //calculate elements of transformation matrix + $s_x /= 100; + $s_y /= 100; + $tm[0] = $s_x; + $tm[1] = 0; + $tm[2] = 0; + $tm[3] = $s_y; + $tm[4] = $x * (1 - $s_x); + $tm[5] = $y * (1 - $s_y); + //scale the coordinate system + if ($returnstring) { return($this->_transform($tm, true)); } + else { $this->_transform($tm); } +} +function transformTranslate($t_x, $t_y, $returnstring=false) { + //calculate elements of transformation matrix + $tm[0] = 1; + $tm[1] = 0; + $tm[2] = 0; + $tm[3] = 1; + $tm[4] = $t_x * _MPDFK; + $tm[5] = -$t_y * _MPDFK; + //translate the coordinate system + if ($returnstring) { return($this->_transform($tm, true)); } + else { $this->_transform($tm); } +} +function transformRotate($angle, $x='', $y='', $returnstring=false) { + if ($x === '') { + $x=$this->x; + } + if ($y === '') { + $y=$this->y; + } + $angle = -$angle; + $y = ($this->h - $y) * _MPDFK; + $x *= _MPDFK; + //calculate elements of transformation matrix + $tm[0] = cos(deg2rad($angle)); + $tm[1] = sin(deg2rad($angle)); + $tm[2] = -$tm[1]; + $tm[3] = $tm[0]; + $tm[4] = $x + $tm[1] * $y - $tm[0] * $x; + $tm[5] = $y - $tm[0] * $y - $tm[1] * $x; + //rotate the coordinate system around ($x,$y) + if ($returnstring) { return($this->_transform($tm, true)); } + else { $this->_transform($tm); } +} +function _transform($tm, $returnstring=false) { + if ($returnstring) { return(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); } + else { $this->_out(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); } +} + + + +/*-- INDIC --*/ +// INDIC ============================ +// This conversion can only be done when font is set +function ConvertIndic(&$str) { + if (preg_match('/^ind_([a-z]{2})_/',$this->currentfontfamily, $m)) { + if (!class_exists('indic', false)) { include(_MPDF_PATH.'classes/indic.php'); } + if (empty($this->indic)) { $this->indic = new indic($this); } + $earr = $this->UTF8StringToArray($str, false); + $str = $this->indic->substituteIndic($earr, $m[1], $this->currentfontfamily); + } +} +/*-- END INDIC --*/ + +// AUTOFONT ========================= +function AutoFont($html) { + if ($this->onlyCoreFonts) { return $html; } + $this->useLang = true; + if ($this->autoFontGroupSize == 1) { $extra = $this->pregASCIIchars1; } + else if ($this->autoFontGroupSize == 3) { $extra = $this->pregASCIIchars3; } + else { $extra = $this->pregASCIIchars2; } + $n = ''; + $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE); + foreach($a as $i => $e) { + if($i%2==0) { + $e = strcode2utf($e); + $e = $this->lesser_entity_decode($e); + + // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring + // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag## + +/*-- CJK-FONTS --*/ + if ($this->autoFontGroups & AUTOFONT_CJK) { + $e = preg_replace("/([".$this->pregCJKchars.$extra."]*[".$this->pregCJKchars."][".$this->pregCJKchars.$extra."]*)/ue", '$this->replaceCJK(stripslashes(\'\\1\'))', $e); + } +/*-- END CJK-FONTS --*/ + +/*-- RTL --*/ + if ($this->autoFontGroups & AUTOFONT_RTL) { + // HEBREW + $e = preg_replace("/([".$this->pregHEBchars .$extra."]*[".$this->pregHEBchars ."][".$this->pregHEBchars .$extra."]*)/u", "\xef\xbf\xb0span lang=\"he\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // All Arabic + $e = preg_replace("/([".$this->pregARABICchars .$extra."]*[".$this->pregARABICchars ."][".$this->pregARABICchars .$extra."]*)/ue", '$this->replaceArabic(stripslashes(\'\\1\'))', $e); + } +/*-- END RTL --*/ + +/*-- INDIC --*/ + // INDIC + if ($this->autoFontGroups & AUTOFONT_INDIC) { + // Bengali + $e = preg_replace("/([".$this->pregBNchars .$this->pregINDextra."]*[".$this->pregBNchars ."][".$this->pregBNchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"bn\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Devanagari (= script for Hindi, Nepali + Sindhi) + $e = preg_replace("/([".$this->pregHIchars .$this->pregINDextra."]*[".$this->pregHIchars ."][".$this->pregHIchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"hi\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Gujarati + $e = preg_replace("/([".$this->pregGUchars .$this->pregINDextra."]*[".$this->pregGUchars ."][".$this->pregGUchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"gu\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Malayalam + $e = preg_replace("/([".$this->pregMLchars .$this->pregINDextra."]*[".$this->pregMLchars ."][".$this->pregMLchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"ml\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Kannada + $e = preg_replace("/([".$this->pregKNchars .$this->pregINDextra."]*[".$this->pregKNchars ."][".$this->pregKNchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"kn\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Oriya + $e = preg_replace("/([".$this->pregORchars .$this->pregINDextra."]*[".$this->pregORchars ."][".$this->pregORchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"or\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Punjabi ?= Gurmuhki + $e = preg_replace("/([".$this->pregPAchars .$this->pregINDextra."]*[".$this->pregPAchars ."][".$this->pregPAchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"pa\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Tamil + $e = preg_replace("/([".$this->pregTAchars .$this->pregINDextra."]*[".$this->pregTAchars ."][".$this->pregTAchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"ta\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Telugu + $e = preg_replace("/([".$this->pregTEchars .$this->pregINDextra."]*[".$this->pregTEchars ."][".$this->pregTEchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"te\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + } +/*-- END INDIC --*/ + + + if ($this->autoFontGroups & AUTOFONT_THAIVIET) { + // THAI + $e = preg_replace("/([\x{0E00}-\x{0E7F}".$extra."]*[\x{0E00}-\x{0E7F}][\x{0E00}-\x{0E7F}".$extra."]*)/u", "\xef\xbf\xb0span lang=\"th\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + // Vietnamese + $e = preg_replace("/([".$this->pregVIETchars .$this->pregVIETPluschars ."]*[".$this->pregVIETchars ."][".$this->pregVIETchars .$this->pregVIETPluschars ."]*)/u", "\xef\xbf\xb0span lang=\"vi\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); + } + + $e = preg_replace('/[&]/','&',$e); + $e = preg_replace('/[<]/','<',$e); + $e = preg_replace('/[>]/','>',$e); + $e = preg_replace("/(\xef\xbf\xb0span lang=\"([a-z\-A-Z]{2,5})\"\xef\xbf\xb1)\s+/",' \\1',$e); + $e = preg_replace("/[ ]+(\xef\xbf\xb0\/span\xef\xbf\xb1)/",'\\1 ',$e); + + $e = preg_replace("/\xef\xbf\xb0span lang=\"([a-z\-A-Z]{2,5})\"\xef\xbf\xb1/","\xef\xbf\xb0span lang=\"\\1\" class=\"lang_\\1\"\xef\xbf\xb1",$e); + + $e = preg_replace("/\xef\xbf\xb0/",'<',$e); + $e = preg_replace("/\xef\xbf\xb1/",'>',$e); + + $a[$i] = $e; + } + else { + $a[$i] = '<'.$e.'>'; + } + } + $n = implode('',$a); + return $n; +} + + +/*-- CJK-FONTS --*/ +function replaceCJK($str) { + // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring + // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag## + if (preg_match("/[".$this->pregUHCchars."]/u", $str)) { + return "\xef\xbf\xb0span lang=\"ko\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + else if (preg_match("/[".$this->pregSJISchars."]/u", $str)) { + return "\xef\xbf\xb0span lang=\"ja\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + // if in Unicode Plane 2, probably HKCS (incl in BIG5) if not Japanese + else if (preg_match("/[\x{20000}-\x{2FFFF}]/u", $str)) { + return "\xef\xbf\xb0span lang=\"zh-HK\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + else{ + return "\xef\xbf\xb0span lang=\"zh-CN\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + return $str; +} +/*-- END CJK-FONTS --*/ + +/*-- RTL --*/ +function replaceArabic($str) { + // PASHTO, SINDHI, URDU, ARABIC, PERSIAN + $persian = "\x{067E}\x{0686}\x{0698}\x{06AF}"; + + $urdu = "\x{0679}\x{0688}\x{0691}\x{06BA}\x{06BE}\x{06C1}\x{06D2}"; + $pashto = "\x{067C}\x{0681}\x{0685}\x{0689}\x{0693}\x{0696}\x{069A}\x{06BC}\x{06D0}"; // ? and U+06AB, U+06CD + $sindhi = "\x{067A}\x{067B}\x{067D}\x{067F}\x{0680}\x{0684}\x{068D}\x{068A}\x{068F}\x{068C}\x{0687}\x{0683}\x{0699}\x{06AA}\x{06A6}\x{06BB}\x{06B1}\x{06B3}"; + // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring + // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag## + + if (preg_match("/[".$this->pregNonARABICchars ."]/u", $str) ) { + if (preg_match("/[".$sindhi ."]/u", $str) ) { + return "\xef\xbf\xb0span lang=\"sd\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + else if (preg_match("/[".$urdu ."]/u", $str) ) { + return "\xef\xbf\xb0span lang=\"ur\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + else if (preg_match("/[".$pashto ."]/u", $str) ) { + return "\xef\xbf\xb0span lang=\"ps\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + else if (preg_match("/[".$persian ."]/u", $str) ) { + return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + else { + return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + } + if (preg_match("/[".$persian ."]/u", $str) ) { + return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + else { + return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1"; + } + return $str; +} + +// ARABIC =========================== +// mPDF 5.4.08 +function InitArabic() { + + // JOIN TO FOLLOWING LETTER IN LOGICAL ORDER (i.e. AS INITIAL) + $this->arabPrevLink = ""; + // U+060c; U+061b; U+061f; U+0626; U+0628; + $this->arabPrevLink .= "\xd8\x8c\xd8\x9b\xd8\x9f\xd8\xa6\xd8\xa8"; + // U+062a; U+062b; U+062c; U+062d; U+062e; + $this->arabPrevLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae"; + // U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063a; + $this->arabPrevLink .= "\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba"; + // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0649; U+064a; + $this->arabPrevLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x89\xd9\x8a"; + // U+0678; U+0679; U+067a; U+067b; U+067c; U+067d; U+067e; U+067f; + $this->arabPrevLink .= "\xd9\xb8\xd9\xb9\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf"; + // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687; + $this->arabPrevLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87"; + // U+069a; U+069b; U+069c; U+069d; U+069e; U+069f; + $this->arabPrevLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f"; + // U+06a0; U+06a1; U+06a2; U+06a3; U+06a4; U+06a5; U+06a6; U+06A7; U+06A8; + $this->arabPrevLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8"; + // U+06a9; U+06aa; U+06ab; U+06ac; U+06ad; U+06ae; U+06af; + $this->arabPrevLink .= "\xda\xa9\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf"; + // U+06b0; U+06b1; U+06b2; U+06b3; U+06b4; U+06b5; U+06b6; U+06b7; U+06b8; U+06b9; + $this->arabPrevLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9"; + // U+06ba; U+06bb; U+06bc; U+06be; U+06bf; + $this->arabPrevLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf"; + // U+06c1; U+06cc; U+06ce; U+06d0; U+06d1; + $this->arabPrevLink .= "\xdb\x81\xdb\x8c\xdb\x8e\xdb\x90\xdb\x91"; + + + + + // JOIN TO PREVIOUS LETTER IN LOGICAL ORDER (i.e. AS FINAL FORM) + $this->arabNextLink = ""; + // U+0622; U+0623; U+0624; U+0625; U+0626; U+0627; U+0628; U+0629; + $this->arabNextLink .= "\xd8\xa2\xd8\xa3\xd8\xa4\xd8\xa5\xd8\xa6\xd8\xa7\xd8\xa8\xd8\xa9"; + // U+062A; U+062B; U+062C; U+062D; U+062E; U+062F; + $this->arabNextLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae\xd8\xaf"; + // U+0630; U+0631; U+0632; U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063A; + $this->arabNextLink .= "\xd8\xb0\xd8\xb1\xd8\xb2\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba"; + // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0648; U+0649; U+064A; + $this->arabNextLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x88\xd9\x89\xd9\x8a"; + // U+0671; U+0672; U+0675; U+0676; U+0677; U+0678; U+0679; + $this->arabNextLink .= "\xd9\xb1\xd9\xb2\xd9\xb5\xd9\xb6\xd9\xb7\xd9\xb8\xd9\xb9"; + // U+067A; U+067B; U+067C; U+067D; U+067E; U+067F; + $this->arabNextLink .= "\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf"; + // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687; U+0688; U+0689; + $this->arabNextLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87\xda\x88\xda\x89"; + // U+068A; U+068B; U+068C; U+068D; U+068F;U+068F; + $this->arabNextLink .= "\xda\x8a\xda\x8b\xda\x8c\xda\x8d\xda\x8e\xda\x8f"; + // U+0690; U+0691; U+0692; U+0693; U+0694; U+0695; U+0696; U+0697; U+0698; U+0699; + $this->arabNextLink .= "\xda\x90\xda\x91\xda\x92\xda\x93\xda\x94\xda\x95\xda\x96\xda\x97\xda\x98\xda\x99"; + // U+069A; U+069B; U+069C; U+069D; U+069E; U+069F; + $this->arabNextLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f"; + // U+06A0; U+06A1; U+06A2; U+06A3; U+06A4; U+06A5; U+06A6; U+06A7; U+06A8; U+06A9; + $this->arabNextLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8\xda\xa9"; + // U+06AA; U+06AB; U+06AC; U+06AD; U+06AE; U+06AF; + $this->arabNextLink .= "\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf"; + // U+06B0; U+06B1; U+06B2; U+06B3; U+06B4; U+06B5; U+06B6; U+06B7; U+06B8; U+06B9; + $this->arabNextLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9"; + // U+06BA; U+06BB; U+06BC; U+06BE; U+06BF; + $this->arabNextLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf"; + // U+06C0; U+06C1; U+06C2; U+06C3; U+06C4; U+06C5; U+06C6; U+06C7; U+06C8; U+06C9; + $this->arabNextLink .= "\xdb\x80\xdb\x81\xdb\x82\xdb\x83\xdb\x84\xdb\x85\xdb\x86\xdb\x87\xdb\x88\xdb\x89"; + // U+06CA; U+06CB; U+06CC; U+06CD; U+06CE; U+06CF; + $this->arabNextLink .= "\xdb\x8a\xdb\x8b\xdb\x8c\xdb\x8d\xdb\x8e\xdb\x8f"; + // U+06D0; U+06d1; U+06D2; U+06D3; + $this->arabNextLink .= "\xdb\x90\xdb\x91\xdb\x92\xdb\x93"; + + + // VOWELS ++ + + // U+064b U+064c; U+064d; U+064e; U+064f; U+0650; U+0651; U+0652; + $this->arabVowels = "\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f\xd9\x90\xd9\x91\xd9\x92"; + + // Added chars that may not be vowels but should not interrupt joining + // U+0670; U+0653; + $this->arabVowels .= "\xd9\xb0\xd9\x93"; + // ? should also add - U+615, 616, 617-61A, 653-65E, 6D6-6DC, 6DF-6E4, 6E7, 6E8, 6EA-6ED + + + + // ISOLATED FORM :: FINAL :: INITIAL :: MEDIAL + // FB** - FE** = Arabic presentation Forms + // F5** F6** F7** = Private use area used by unAGlyphs in mPDF + $this->arabGlyphs = array( + "\xd8\x8c"=>array("\xd8\x8c", "\xd8\x8c", "\xd8\x8c", "\xd8\x8c"), /* 060C, 060C, 060C, 060C */ + "\xd8\x9b"=>array("\xd8\x9b", "\xd8\x9b", "\xd8\x9b", "\xd8\x9b"), /* 061B, 061B, 061B, 061B */ + "\xd8\x9f"=>array("\xd8\x9f", "\xd8\x9f", "\xd8\x9f", "\xd8\x9f"), /* 061F, 061F, 061F, 061F */ + "\xd8\xa1"=>array("\xd8\xa1", "\xd8\xa1", "\xd8\xa1", "\xd8\xa1"), /* 0621, 0621, 0621, 0621 */ + "\xd8\xa2"=>array("\xd8\xa2", "\xef\xba\x82", "\xd8\xa2", "\xef\xba\x82"), /* 0622, FE82, 0622, FE82 */ + "\xd8\xa3"=>array("\xd8\xa3", "\xef\xba\x84", "\xd8\xa3", "\xef\xba\x84"), /* 0623, FE84, 0623, FE84 */ + "\xd8\xa4"=>array("\xd8\xa4", "\xef\xba\x86", "\xd8\xa4", "\xef\xba\x86"), /* 0624, FE86, 0624, FE86 */ + "\xd8\xa5"=>array("\xd8\xa5", "\xef\xba\x88", "\xd8\xa5", "\xef\xba\x88"), /* 0625, FE88, 0625, FE88 */ + "\xd8\xa6"=>array("\xd8\xa6", "\xef\xba\x8a", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0626, FE8A, FE8B, FE8C */ + "\xd8\xa7"=>array("\xd8\xa7", "\xef\xba\x8e", "\xd8\xa7", "\xef\xba\x8e"), /* 0627, FE8E, 0627, FE8E */ + "\xd8\xa8"=>array("\xd8\xa8", "\xef\xba\x90", "\xef\xba\x91", "\xef\xba\x92"), /* 0628, FE90, FE91, FE92 */ + "\xd8\xa9"=>array("\xd8\xa9", "\xef\xba\x94", "\xd8\xa9", "\xef\xba\x94"), /* 0629, FE94, 0629, FE94 */ + "\xd8\xaa"=>array("\xd8\xaa", "\xef\xba\x96", "\xef\xba\x97", "\xef\xba\x98"), /* 062A, FE96, FE97, FE98 */ + "\xd8\xab"=>array("\xd8\xab", "\xef\xba\x9a", "\xef\xba\x9b", "\xef\xba\x9c"), /* 062B, FE9A, FE9B, FE9C */ + "\xd8\xac"=>array("\xd8\xac", "\xef\xba\x9e", "\xef\xba\x9f", "\xef\xba\xa0"), /* 062C, FE9E, FE9F, FEA0 */ + "\xd8\xad"=>array("\xd8\xad", "\xef\xba\xa2", "\xef\xba\xa3", "\xef\xba\xa4"), /* 062D, FEA2, FEA3, FEA4 */ + "\xd8\xae"=>array("\xd8\xae", "\xef\xba\xa6", "\xef\xba\xa7", "\xef\xba\xa8"), /* 062E, FEA6, FEA7, FEA8 */ + "\xd8\xaf"=>array("\xd8\xaf", "\xef\xba\xaa", "\xd8\xaf", "\xef\xba\xaa"), /* 062F, FEAA, 062F, FEAA */ + "\xd8\xb0"=>array("\xd8\xb0", "\xef\xba\xac", "\xd8\xb0", "\xef\xba\xac"), /* 0630, FEAC, 0630, FEAC */ + "\xd8\xb1"=>array("\xd8\xb1", "\xef\xba\xae", "\xd8\xb1", "\xef\xba\xae"), /* 0631, FEAE, 0631, FEAE */ + "\xd8\xb2"=>array("\xd8\xb2", "\xef\xba\xb0", "\xd8\xb2", "\xef\xba\xb0"), /* 0632, FEB0, 0632, FEB0 */ + "\xd8\xb3"=>array("\xd8\xb3", "\xef\xba\xb2", "\xef\xba\xb3", "\xef\xba\xb4"), /* 0633, FEB2, FEB3, FEB4 */ + "\xd8\xb4"=>array("\xd8\xb4", "\xef\xba\xb6", "\xef\xba\xb7", "\xef\xba\xb8"), /* 0634, FEB6, FEB7, FEB8 */ + "\xd8\xb5"=>array("\xd8\xb5", "\xef\xba\xba", "\xef\xba\xbb", "\xef\xba\xbc"), /* 0635, FEBA, FEBB, FEBC */ + "\xd8\xb6"=>array("\xd8\xb6", "\xef\xba\xbe", "\xef\xba\xbf", "\xef\xbb\x80"), /* 0636, FEBE, FEBF, FEC0 */ + "\xd8\xb7"=>array("\xd8\xb7", "\xef\xbb\x82", "\xef\xbb\x83", "\xef\xbb\x84"), /* 0637, FEC2, FEC3, FEC4 */ + "\xd8\xb8"=>array("\xd8\xb8", "\xef\xbb\x86", "\xef\xbb\x87", "\xef\xbb\x88"), /* 0638, FEC6, FEC7, FEC8 */ + "\xd8\xb9"=>array("\xd8\xb9", "\xef\xbb\x8a", "\xef\xbb\x8b", "\xef\xbb\x8c"), /* 0639, FECA, FECB, FECC */ + "\xd8\xba"=>array("\xd8\xba", "\xef\xbb\x8e", "\xef\xbb\x8f", "\xef\xbb\x90"), /* 063A, FECE, FECF, FED0 */ + "\xd9\x80"=>array("\xd9\x80", "\xd9\x80", "\xd9\x80", "\xd9\x80"), /* 0640, 0640, 0640, 0640 */ + "\xd9\x81"=>array("\xd9\x81", "\xef\xbb\x92", "\xef\xbb\x93", "\xef\xbb\x94"), /* 0641, FED2, FED3, FED4 */ + "\xd9\x82"=>array("\xd9\x82", "\xef\xbb\x96", "\xef\xbb\x97", "\xef\xbb\x98"), /* 0642, FED6, FED7, FED8 */ + "\xd9\x83"=>array("\xd9\x83", "\xef\xbb\x9a", "\xef\xbb\x9b", "\xef\xbb\x9c"), /* 0643, FEDA, FEDB, FEDC */ + "\xd9\x84"=>array("\xd9\x84", "\xef\xbb\x9e", "\xef\xbb\x9f", "\xef\xbb\xa0"), /* 0644, FEDE, FEDF, FEE0 */ + "\xd9\x85"=>array("\xd9\x85", "\xef\xbb\xa2", "\xef\xbb\xa3", "\xef\xbb\xa4"), /* 0645, FEE2, FEE3, FEE4 */ + "\xd9\x86"=>array("\xd9\x86", "\xef\xbb\xa6", "\xef\xbb\xa7", "\xef\xbb\xa8"), /* 0646, FEE6, FEE7, FEE8 */ + "\xd9\x87"=>array("\xd9\x87", "\xef\xbb\xaa", "\xef\xbb\xab", "\xef\xbb\xac"), /* 0647, FEEA, FEEB, FEEC */ + "\xd9\x88"=>array("\xd9\x88", "\xef\xbb\xae", "\xd9\x88", "\xef\xbb\xae"), /* 0648, FEEE, 0648, FEEE */ + +/* 0649 Alef Maksura should only appear at end of word (in Arabic) So Initial and medial are shown as isolated/final */ + "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xd9\x89", "\xef\xbb\xb0"), /* 0649, FEF0, 0649, FEF0 */ + +/* 0649 Alef Maksura Initial and Medial forms as given in Unicode FBE8 and FBE9 for Uighur Kazakh (not in some fonts) */ + "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xef\xaf\xa8", "\xef\xaf\xa9"), /* 0649, FEF0, FBE8, FBE9 not in most fonts */ + + "\xd9\x8a"=>array("\xd9\x8a", "\xef\xbb\xb2", "\xef\xbb\xb3", "\xef\xbb\xb4"), /* 064A, FEF2, FEF3, FEF4 */ + "\xd9\x8b"=>array("\xd9\x8b", "\xd9\x8b", "\xd9\x8b", "\xd9\x8b"), /* 064B, 064B, 064B, 064B */ + "\xd9\x8c"=>array("\xd9\x8c", "\xd9\x8c", "\xd9\x8c", "\xd9\x8c"), /* 064C, 064C, 064C, 064C */ + "\xd9\x8d"=>array("\xd9\x8d", "\xd9\x8d", "\xd9\x8d", "\xd9\x8d"), /* 064D, 064D, 064D, 064D */ + "\xd9\x8e"=>array("\xd9\x8e", "\xd9\x8e", "\xd9\x8e", "\xd9\x8e"), /* 064E, 064E, 064E, 064E */ + "\xd9\x8f"=>array("\xd9\x8f", "\xd9\x8f", "\xd9\x8f", "\xd9\x8f"), /* 064F, 064F, 064F, 064F */ + "\xd9\x90"=>array("\xd9\x90", "\xd9\x90", "\xd9\x90", "\xd9\x90"), /* 0650, 0650, 0650, 0650 */ + "\xd9\x91"=>array("\xd9\x91", "\xd9\x91", "\xd9\x91", "\xd9\x91"), /* 0651, 0651, 0651, 0651 */ + "\xd9\x92"=>array("\xd9\x92", "\xd9\x92", "\xd9\x92", "\xd9\x92"), /* 0652, 0652, 0652, 0652 */ + "\xd9\xb1"=>array("\xd9\xb1", "\xef\xad\x91", "\xd9\xb1", "\xef\xad\x91"), /* 0671, FB51, 0671, FB51 */ + "\xd9\xb2"=>array("\xd9\xb2", "\xef\x95\xb2", "\xd9\xb2", "\xef\x95\xb2"), /* 0672, F572, 0672, F572 */ + "\xd9\xb5"=>array("\xd9\xb5", "\xef\x95\xb5", "\xd9\xb5", "\xef\x95\xb5"), /* 0675, F575, 0675, F575 */ + "\xd9\xb8"=>array("\xd9\xb8", "\xef\x95\xb8", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0678, F578, FE8B, FE8C ( as 0626 ) */ + "\xd9\xb9"=>array("\xd9\xb9", "\xef\xad\xa7", "\xef\xad\xa8", "\xef\xad\xa9"), /* 0679, FB67, FB68, FB69 */ + "\xd9\xba"=>array("\xd9\xba", "\xef\xad\x9f", "\xef\xad\xa0", "\xef\xad\xa1"), /* 067A, FB5F, FB60, FB61 */ + "\xd9\xbb"=>array("\xd9\xbb", "\xef\xad\x93", "\xef\xad\x94", "\xef\xad\x95"), /* 067B, FB53, FB54, FB55 */ + "\xd9\xbc"=>array("\xd9\xbc", "\xef\x95\xbc", "\xef\x99\xbc", "\xef\x9d\xbc"), /* 067C, F57C, F67C, F77C */ + "\xd9\xbd"=>array("\xd9\xbd", "\xef\x95\xbd", "\xef\x99\xbd", "\xef\x9d\xbd"), /* 067D, F57D, F67D, F77D */ + "\xd9\xbe"=>array("\xd9\xbe", "\xef\xad\x97", "\xef\xad\x98", "\xef\xad\x99"), /* 067E, FB57, FB58, FB59 */ + "\xd9\xbf"=>array("\xd9\xbf", "\xef\xad\xa3", "\xef\xad\xa4", "\xef\xad\xa5"), /* 067F, FB63, FB64, FB65 */ + "\xda\x80"=>array("\xda\x80", "\xef\xad\x9b", "\xef\xad\x9c", "\xef\xad\x9d"), /* 0680, FB5B, FB5C, FB5D */ + "\xda\x81"=>array("\xda\x81", "\xef\x96\x81", "\xef\x9a\x81", "\xef\x9e\x81"), /* 0681, F581, F681, F781 */ + "\xda\x82"=>array("\xda\x82", "\xef\x96\x82", "\xef\x9a\x82", "\xef\x9e\x82"), /* 0682, F582, F682, F782 */ + "\xda\x83"=>array("\xda\x83", "\xef\xad\xb7", "\xef\xad\xb8", "\xef\xad\xb9"), /* 0683, FB77, FB78, FB79 */ + "\xda\x84"=>array("\xda\x84", "\xef\xad\xb3", "\xef\xad\xb4", "\xef\xad\xb5"), /* 0684, FB73, FB74, FB75 */ + "\xda\x85"=>array("\xda\x85", "\xef\x96\x85", "\xef\x9a\x85", "\xef\x9e\x85"), /* 0685, F585, F685, F785 */ + "\xda\x86"=>array("\xda\x86", "\xef\xad\xbb", "\xef\xad\xbc", "\xef\xad\xbd"), /* 0686, FB7B, FB7C, FB7D */ + "\xda\x87"=>array("\xda\x87", "\xef\xad\xbf", "\xef\xae\x80", "\xef\xae\x81"), /* 0687, FB7F, FB80, FB81 */ + "\xda\x88"=>array("\xda\x88", "\xef\xae\x89", "\xda\x88", "\xda\x88"), /* 0688, FB89, 0688, 0688 */ + "\xda\x89"=>array("\xda\x89", "\xef\x96\x89", "\xda\x89", "\xda\x89"), /* 0689, F589, 0689, 0689 */ + "\xda\x91"=>array("\xda\x91", "\xef\xae\x8d", "\xda\x91", "\xef\xae\x8d"), /* 0691, FB8D, 0691, FB8D */ + "\xda\x93"=>array("\xda\x93", "\xef\x96\x93", "\xda\x93", "\xda\x93"), /* 0693, F593, 0693, 0693 */ + "\xda\x96"=>array("\xda\x96", "\xef\x96\x96", "\xda\x96", "\xda\x96"), /* 0696, F596, 0696, 0696 */ + "\xda\x98"=>array("\xda\x98", "\xef\xae\x8b", "\xda\x98", "\xef\xae\x8b"), /* 0698, FB8B, 0698, FB8B */ + "\xda\x9a"=>array("\xda\x9a", "\xef\x96\x9a", "\xef\x9a\x9a", "\xef\x9e\x9a"), /* 069A, F59A, F69A, F79A */ + "\xda\x9b"=>array("\xda\x9b", "\xef\x96\x9b", "\xef\x9a\x9b", "\xef\x9e\x9b"), /* 069B, F59B, F69B, F79B */ + "\xda\x9c"=>array("\xda\x9c", "\xef\x96\x9c", "\xef\x9a\x9c", "\xef\x9e\x9c"), /* 069C, F59C, F69C, F79C */ + "\xda\x9d"=>array("\xda\x9d", "\xef\x96\x9d", "\xef\x9a\x9d", "\xef\x9e\x9d"), /* 069D, F59D, F69D, F79D */ + "\xda\x9e"=>array("\xda\x9e", "\xef\x96\x9e", "\xef\x9a\x9e", "\xef\x9e\x9e"), /* 069E, F59E, F69E, F79E */ + "\xda\xa0"=>array("\xda\xa0", "\xef\x96\xa0", "\xef\x9a\xa0", "\xef\x9e\xa0"), /* 06A0, F5A0, F6A0, F7A0 */ + "\xda\xa1"=>array("\xda\xa1", "\xef\x96\xa1", "\xef\x9a\xa1", "\xef\x9e\xa1"), /* 06A1, F5A1, F6A1, F7A1 */ + "\xda\xa2"=>array("\xda\xa2", "\xef\x96\xa2", "\xef\x9a\xa2", "\xef\x9e\xa2"), /* 06A2, F5A2, F6A2, F7A2 */ + "\xda\xa3"=>array("\xda\xa3", "\xef\x96\xa3", "\xef\x9a\xa3", "\xef\x9e\xa3"), /* 06A3, F5A3, F6A3, F7A3 */ + "\xda\xa4"=>array("\xda\xa4", "\xef\xad\xab", "\xef\xad\xac", "\xef\xad\xad"), /* 06A4, FB6B, FB6C, FB6D */ + "\xda\xa5"=>array("\xda\xa5", "\xef\x96\xa5", "\xef\x9a\xa5", "\xef\x9e\xa5"), /* 06A5, F5A5, F6A5, F7A5 */ + "\xda\xa6"=>array("\xda\xa6", "\xef\xad\xaf", "\xef\xad\xb0", "\xef\xad\xb1"), /* 06A6, FB6F, FB70, FB71 */ + "\xda\xa9"=>array("\xda\xa9", "\xef\xae\x8f", "\xef\xae\x90", "\xef\xae\x91"), /* 06A9, FB8F, FB90, FB91 */ + "\xda\xaa"=>array("\xda\xaa", "\xef\x96\xaa", "\xef\x9a\xaa", "\xef\x9e\xaa"), /* 06AA, F5AA, F6AA, F7AA */ + "\xda\xab"=>array("\xda\xab", "\xef\x96\xab", "\xef\x9a\xab", "\xef\x9e\xab"), /* 06AB, F5AB, F6AB, F7AB */ + "\xda\xac"=>array("\xda\xac", "\xef\x96\xac", "\xef\x9a\xac", "\xef\x9e\xac"), /* 06AC, F5AC, F6AC, F7AC */ + "\xda\xad"=>array("\xda\xad", "\xef\xaf\x94", "\xef\xaf\x95", "\xef\xaf\x96"), /* 06AD, FBD4, FBD5, FBD6 */ + "\xda\xae"=>array("\xda\xae", "\xef\x96\xae", "\xef\x9a\xae", "\xef\x9e\xae"), /* 06AE, F5AE, F6AE, F7AE */ + "\xda\xaf"=>array("\xda\xaf", "\xef\xae\x93", "\xef\xae\x94", "\xef\xae\x95"), /* 06Af, FB93, FB94, FB95 */ + "\xda\xb0"=>array("\xda\xb0", "\xef\x96\xb0", "\xef\x9a\xb0", "\xef\x9e\xb0"), /* 06B0, F5B0, F6B0, F7B0 */ + "\xda\xb1"=>array("\xda\xb1", "\xef\xae\x9b", "\xef\xae\x9c", "\xef\xae\x9d"), /* 06B1, FB9B, FB9C, FB9D */ + "\xda\xb2"=>array("\xda\xb2", "\xef\x96\xb2", "\xef\x9a\xb2", "\xef\x9e\xb2"), /* 06B2, F5B2, F6B2, F7B2 */ + "\xda\xb3"=>array("\xda\xb3", "\xef\xae\x97", "\xef\xae\x98", "\xef\xae\x99"), /* 06B3, FB97, FB98, FB99 */ + "\xda\xb4"=>array("\xda\xb4", "\xef\x96\xb4", "\xef\x9a\xb4", "\xef\x9e\xb4"), /* 06B4, F5B4, F6B4, F7B4 */ + "\xda\xb5"=>array("\xda\xb5", "\xef\x96\xb5", "\xef\x9a\xb5", "\xef\x9e\xb5"), /* 06B5, F5B5, F6B5, F7B5 */ + "\xda\xb6"=>array("\xda\xb6", "\xef\x96\xb6", "\xef\x9a\xb6", "\xef\x9e\xb6"), /* 06B6, F5B6, F6B6, F7B6 */ + "\xda\xb7"=>array("\xda\xb7", "\xef\x96\xb7", "\xef\x9a\xb7", "\xef\x9e\xb7"), /* 06B7, F5B7, F6B7, F7B7 */ + "\xda\xb8"=>array("\xda\xb8", "\xef\x96\xb8", "\xef\x9a\xb8", "\xef\x9e\xb8"), /* 06B8, F5B8, F6B8, F7B8 */ + "\xda\xb9"=>array("\xda\xb9", "\xef\x96\xb9", "\xef\x9a\xb9", "\xef\x9e\xb9"), /* 06B9, F5B9, F6B9, F7B9 */ + "\xda\xba"=>array("\xda\xba", "\xef\xae\x9f", "\xda\xba", "\xda\xba"), /* 06BA, FB9F, 06BA, 06BA */ + "\xda\xbb"=>array("\xda\xbb", "\xef\xae\xa1", "\xef\xae\xa2", "\xef\xae\xa3"), /* 06BB, FBA1, FBA2, FBA3 */ + "\xda\xbc"=>array("\xda\xbc", "\xef\x96\xbc", "\xef\x9a\xbc", "\xef\x9e\xbc"), /* 06BC, F5BC, F6BC, F7BC */ + "\xda\xbe"=>array("\xda\xbe", "\xef\xae\xab", "\xef\xae\xac", "\xef\xae\xad"), /* 06BE, FBAB, FBAC, FBAD */ + "\xda\xbf"=>array("\xda\xbf", "\xef\x96\xbf", "\xef\x9a\xbf", "\xef\x9e\xbf"), /* 06BF, F5BF, F6BF, F7BF */ + "\xdb\x80"=>array("\xdb\x80", "\xef\xae\xa5", "\xdb\x80", "\xef\xae\xa5"), /* 06C0, FBA5, 06C0, FBA5 */ + "\xdb\x81"=>array("\xdb\x81", "\xef\xae\xa7", "\xef\xae\xa8", "\xef\xae\xa9"), /* 06C1, FBA7, FBA8, FBA9 */ + "\xdb\x8c"=>array("\xdb\x8c", "\xef\xaf\xbd", "\xef\xaf\xbe", "\xef\xaf\xbf"), /* 06CC, FBFD, FBFE, FBFF */ + "\xdb\x8d"=>array("\xdb\x8d", "\xef\x97\x8d", "\xdb\x8d", "\xef\x97\x8d"), /* 06CD, F5CD, 06CD, F5CD */ + "\xdb\x8e"=>array("\xdb\x8e", "\xef\x97\x8e", "\xef\x9b\x8e", "\xef\x9f\x8e"), /* 06CE, F5CE, F6CE, F7CE */ + "\xdb\x90"=>array("\xdb\x90", "\xef\xaf\xa5", "\xef\xaf\xa6", "\xef\xaf\xa7"), /* 06D0, FBE5, FBE6, FBE7 */ + "\xdb\x91"=>array("\xdb\x91", "\xef\x97\x91", "\xef\xad\x98", "\xef\xad\x99"), /* 06D1, F5D1, FB58, FB59 Fudge borrows from 067E */ + "\xdb\x92"=>array("\xdb\x92", "\xef\xae\xaf", "\xdb\x92", "\xef\xae\xaf"), /* 06D2, FBAF, 06D2, FBAF */ + "\xdb\x93"=>array("\xdb\x93", "\xef\xae\xb1", "\xdb\x93", "\xef\xae\xb1"), /* 06D3, FBB1, 06D3, FBB1 */ + ); + + + // LAM with ALEF ligatures (Mandatory ligatures) + + // U+0644; U+0622; U+0644; U+0623; U+0644; U+0625; U+0644; U+0627; + $this->arabLigGlyphs = "\xd9\x84\xd8\xa2\xd9\x84\xd8\xa3\xd9\x84\xd8\xa5\xd9\x84\xd8\xa7"; + $this->arabLigHex = 'FEF5FEF6FEF5FEF6FEF7FEF8FEF7FEF8FEF9FEFAFEF9FEFAFEFBFEFCFEFBFEFC'; + +} + +// mPDF 5.4.08 +function ArabJoin($str) { + if (!$this->arabGlyphs) { $this->InitArabic(); } + $crntChar = null; + $prevChar = null; + $nextChar = null; + $output = array(); + $chars = preg_split('//u', $str); + $max = count($chars); + for ($i = $max - 1; $i >= 0; $i--) { + $crntChar = $chars[$i]; + if ($i > 0){ $prevChar = $chars[$i - 1]; } + else{ $prevChar = NULL; } + if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) { + $prevChar = $chars[$i - 2]; + if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) { + $prevChar = $chars[$i - 3]; + } + } + if ($crntChar && mb_strpos($this->arabVowels, $crntChar, 0, 'utf-8') !== false) { + // If next_char = nextLink && prev_char = prevLink: + // Added && $prevchar (defined) else error on mb_strpos() + if ($chars[$i + 1] && (mb_strpos($this->arabNextLink, $chars[$i + 1], 0, 'utf-8') !== false) && $prevChar && (mb_strpos($this->arabPrevLink, $prevChar, 0, 'utf-8') !== false)) { + $output[] = $this->get_arab_glyphs($crntChar, 1); // form + } + else { + $output[] = $this->get_arab_glyphs($crntChar, 0); // form + } + continue; + } + // NB = آ أ إ ا ل + if (isset($chars[$i + 1]) && in_array($chars[$i + 1], array("\xd8\xa2","\xd8\xa3","\xd8\xa5","\xd8\xa7")) && $crntChar == "\xd9\x84"){ + continue; + } + if (ord($crntChar) < 128) { + $output[] = $crntChar; + $nextChar = $crntChar; + continue; + } + $form = 0; + if ($prevChar == "\xd9\x84" && ($crntChar == "\xd8\xa2" || $crntChar == "\xd8\xa3" || $crntChar == "\xd8\xa5" || $crntChar == "\xd8\xa7")) { + if ($chars[$i - 2] && mb_strpos($this->arabPrevLink, $chars[$i - 2], 0, 'utf-8') !== false) { + $form++; // form + } + $pos = mb_strpos($this->arabLigGlyphs, ($prevChar . $crntChar), 0, 'utf-8'); + $pos = $pos*8 + $form*4; + $pres = (mb_substr($this->arabLigHex, $pos, 4, 'utf-8')); + // If presentation forms for mandatory ligatures with diacritics not present (even if remapped from e.g. uni0644uni0625) + // try replacing with mandatory ligature Alef/lam isolated/final FEFB/FEFC + diacritic glyph + if (!$this->_charDefined($this->CurrentFont['cw'], hexdec($pres)) && $this->_charDefined($this->CurrentFont['cw'], hexdec('FEFB'))) { + if ($pres=='FEF5') { $output[] = strcode2utf('ﻻٓ'); } + else if ($pres=='FEF6') { $output[] = strcode2utf('ﻼٓ'); } + else if ($pres=='FEF7') { $output[] = strcode2utf('ﻻٔ'); } + else if ($pres=='FEF8') { $output[] = strcode2utf('ﻼٔ'); } + else if ($pres=='FEF9') { $output[] = strcode2utf('ﻻٕ'); } + else if ($pres=='FEFA') { $output[] = strcode2utf('ﻼٕ'); } + } + else { + $output[] = strcode2utf('&#x' . $pres . ';'); + } + $nextChar = $prevChar; + continue; + } + if ($prevChar && mb_strpos($this->arabPrevLink, $prevChar, 0, 'utf-8') !== false) { + $form++; + } + if ($nextChar && mb_strpos($this->arabNextLink, $nextChar, 0, 'utf-8') !== false) { + $form += 2; + } + $output[] = $this->get_arab_glyphs($crntChar, $form) ; + $nextChar = $crntChar; + } + $ra = array_reverse($output); + $s = implode($ra); + return $s; +} + +// mPDF 5.4.08 +function get_arab_glyphs($char, $type) { + if ($type>0 && isset($this->arabGlyphs[$char])) { + // If presentation form specified FB** - FE** = Arabic presentation Forms + if (preg_match("/[\x{FB50}-\x{FEFF}]/u",$this->arabGlyphs[$char][$type])) { + $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false); + if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; } + else if (isset($this->CurrentFont['unAGlyphs'])) { + $uni = $this->UTF8StringToArray($char, false); + $pua = $uni[0] - 1536 + 62464 + 256*$type ; + if ($this->_charDefined($this->CurrentFont['cw'], $pua)) { return strcode2utf('&#x' . dechex($pua) . ';'); } + else return $char; + } + else return $char; + } + // If PUA form specified and unAGlphs font set F5** F6** F7** = Private use area used by unAGlyphs in mPDF + if (preg_match("/[\x{F500}-\x{F7FF}]/u",$this->arabGlyphs[$char][$type]) && isset($this->CurrentFont['unAGlyphs'])) { + $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false); + if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; } + else return $char; + } + return $this->arabGlyphs[$char][$type]; + } + else return $char; +} +/*-- END RTL --*/ + + + +//=========================== +// Functions originally in htmltoolkit - moved mPDF 4.0 + +// Call-back function Used for usort in fn _tableWrite + +function _cmpdom($a, $b) { + return ($a["dom"] < $b["dom"]) ? -1 : 1; +} + +function mb_strrev($str, $enc = 'utf-8'){ + $ch = array(); + $ch = preg_split('//u',$str); + $revch = array_reverse($ch); + return implode('',$revch); +} + +/*-- COLUMNS --*/ +// Callback function from function printcolumnbuffer in mpdf +function columnAdjustAdd($type,$k,$xadj,$yadj,$a,$b,$c=0,$d=0,$e=0,$f=0) { + if ($type == 'Td') { // xpos,ypos + $a += ($xadj * $k); + $b -= ($yadj * $k); + return 'BT '.sprintf('%.3F %.3F',$a,$b).' Td'; + } + else if ($type == 're') { // xpos,ypos,width,height + $a += ($xadj * $k); + $b -= ($yadj * $k); + return sprintf('%.3F %.3F %.3F %.3F',$a,$b,$c,$d).' re'; + } + else if ($type == 'l') { // xpos,ypos,x2pos,y2pos + $a += ($xadj * $k); + $b -= ($yadj * $k); + return sprintf('%.3F %.3F l',$a,$b); + } + else if ($type == 'img') { // width,height,xpos,ypos + $c += ($xadj * $k); + $d -= ($yadj * $k); + return sprintf('q %.3F 0 0 %.3F %.3F %.3F',$a,$b,$c,$d).' cm /'.$e; + } + else if ($type == 'draw') { // xpos,ypos + $a += ($xadj * $k); + $b -= ($yadj * $k); + return sprintf('%.3F %.3F m',$a,$b); + } + else if ($type == 'bezier') { // xpos,ypos,x2pos,y2pos,x3pos,y3pos + $a += ($xadj * $k); + $b -= ($yadj * $k); + $c += ($xadj * $k); + $d -= ($yadj * $k); + $e += ($xadj * $k); + $f -= ($yadj * $k); + return sprintf('%.3F %.3F %.3F %.3F %.3F %.3F',$a,$b,$c,$d,$e,$f).' c'; + } +} +/*-- END COLUMNS --*/ + + + +function ConvertColor($color="#000000"){ + $color = trim(strtolower($color)); + $c = false; + if ($color=='transparent') { return false; } + else if ($color=='inherit') { return false; } + else if (isset($this->SVGcolors[$color])) $color = $this->SVGcolors[$color]; + + if (preg_match('/^[\d]+$/',$color)) { $c = (array(1,$color)); } // i.e. integer only + else if ($color[0] == '#') { //case of #nnnnnn or #nnn + $cor = preg_replace('/\s+.*/','',$color); // in case of Background: #CCC url() x-repeat etc. + if (strlen($cor) == 4) { // Turn #RGB into #RRGGBB + $cor = "#" . $cor[1] . $cor[1] . $cor[2] . $cor[2] . $cor[3] . $cor[3]; + } + $r = hexdec(substr($cor, 1, 2)); + $g = hexdec(substr($cor, 3, 2)); + $b = hexdec(substr($cor, 5, 2)); + $c = array(3,$r,$g,$b); + } + else if (preg_match('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\((.*?)\)/',$color,$m)) { // mPDF 5.6.05 + $type= $m[1]; + $cores = explode(",", $m[2]); + $ncores = count($cores); + if (stristr($cores[0],'%') ) { + $cores[0] += 0; + if ($type=='rgb' || $type=='rgba') { $cores[0] = intval($cores[0]*255/100); } + } + if ($ncores>1 && stristr($cores[1],'%') ) { + $cores[1] += 0; + if ($type=='rgb' || $type=='rgba') { $cores[1] = intval($cores[1]*255/100); } + if ($type=='hsl' || $type=='hsla') { $cores[1] = $cores[1]/100; } + } + if ($ncores>2 && stristr($cores[2],'%') ) { + $cores[2] += 0; + if ($type=='rgb' || $type=='rgba') { $cores[2] = intval($cores[2]*255/100); } + if ($type=='hsl' || $type=='hsla') { $cores[2] = $cores[2]/100; } + } + if ($ncores>3 && stristr($cores[3],'%') ) { + $cores[3] += 0; + } + + if ($type=='rgb') { $c = array(3,$cores[0],$cores[1],$cores[2]); } + else if ($type=='rgba') { $c = array(5,$cores[0],$cores[1],$cores[2],$cores[3]*100); } + else if ($type=='cmyk' || $type=='device-cmyk') { $c = array(4,$cores[0],$cores[1],$cores[2],$cores[3]); } // mPDF 5.6.05 + else if ($type=='cmyka' || $type=='device-cmyka') { $c = array(6,$cores[0],$cores[1],$cores[2],$cores[3],$cores[4]*100); } // mPDF 5.6.05 + else if ($type=='hsl' || $type=='hsla') { + $conv = $this->hsl2rgb($cores[0]/360,$cores[1],$cores[2]); + if ($type=='hsl') { $c = array(3,$conv[0],$conv[1],$conv[2]); } + else if ($type=='hsla') { $c = array(5,$conv[0],$conv[1],$conv[2],$cores[3]*100); } + } + else if ($type=='spot') { + $name = strtoupper(trim($cores[0])); + // mPDF 5.6.59 + if(!isset($this->spotColors[$name])) { + if (isset($cores[5])) { $this->AddSpotColor($cores[0],$cores[2],$cores[3],$cores[4],$cores[5]); } + else { $this->Error('Undefined spot color: '.$name); } + } + $c = array(2,$this->spotColors[$name]['i'],$cores[1]); + } + } + + + // $this->restrictColorSpace + // 1 - allow GRAYSCALE only [convert CMYK/RGB->gray] + // 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB] + // 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK] + if ($this->PDFA || $this->PDFX || $this->restrictColorSpace) { + if ($c[0]==1) { // GRAYSCALE + } + else if ($c[0]==2) { // SPOT COLOR + if (!isset($this->spotColorIDs[$c[1]])) { die('Error: Spot colour has not been defined - '.$this->spotColorIDs[$c[1]]); } + if ($this->PDFA) { + if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "Spot color specified '".$this->spotColorIDs[$c[1]]."' (converted to process color)"; } + if ($this->restrictColorSpace!=3) { + $sp = $this->spotColors[$this->spotColorIDs[$c[1]]]; + $c = $this->cmyk2rgb(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k'])); + } + } + else if ($this->restrictColorSpace==1) { + $sp = $this->spotColors[$this->spotColorIDs[$c[1]]]; + $c = $this->cmyk2gray(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k'])); + } + } + else if ($c[0]==3) { // RGB + if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { + if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color specified '".$color."' (converted to CMYK)"; } + $c = $this->rgb2cmyk($c); + } + else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); } + else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); } + } + else if ($c[0]==4) { // CMYK + if ($this->PDFA && $this->restrictColorSpace!=3) { + if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "CMYK color specified '".$color."' (converted to RGB)"; } + $c = $this->cmyk2rgb($c); + } + else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); } + else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); } + } + else if ($c[0]==5) { // RGBa + if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { + if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to CMYK without transparency)"; } + $c = $this->rgb2cmyk($c); + $c = array(4, $c[1], $c[2], $c[3], $c[4]); + } + else if ($this->PDFA && $this->restrictColorSpace!=3) { + if (!$this->PDFAauto) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to RGB without transparency)"; } + $c = $this->rgb2cmyk($c); + $c = array(4, $c[1], $c[2], $c[3], $c[4]); + } + else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); } + else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); } + } + else if ($c[0]==6) { // CMYKa + if ($this->PDFA && $this->restrictColorSpace!=3) { + if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to RGB without transparency)"; } + $c = $this->cmyk2rgb($c); + $c = array(3, $c[1], $c[2], $c[3]); + } + else if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { + if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to CMYK without transparency)"; } + $c = $this->cmyk2rgb($c); + $c = array(3, $c[1], $c[2], $c[3]); + } + else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); } + else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); } + } + } + if (is_array($c)) { + $c = array_pad($c, 6, 0); + $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); + } + return $cstr; +} + +function rgb2gray($c) { + if (isset($c[4])) { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07)), ord(1), $c[4]); } + else { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07))); } +} + +function cmyk2gray($c) { + $rgb = $this->cmyk2rgb($c); + return $this->rgb2gray($rgb); +} + +function rgb2cmyk($c) { + $cyan = 1 - ($c[1] / 255); + $magenta = 1 - ($c[2] / 255); + $yellow = 1 - ($c[3] / 255); + $min = min($cyan, $magenta, $yellow); + + if ($min == 1) { + if ($c[0]==5) { return array (6,100,100,100,100, $c[4]); } + else { return array (4,100,100,100,100); } + // For K-Black + //if ($c[0]==5) { return array (6,0,0,0,100, $c[4]); } + //else { return array (4,0,0,0,100); } + } + $K = $min; + $black = 1 - $K; + if ($c[0]==5) { return array (6,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100, $c[4]); } + else { return array (4,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100); } +} + + +function cmyk2rgb($c) { + $rgb = array(); + $colors = 255 - ($c[4]*2.55); + $rgb[0] = intval($colors * (255 - ($c[1]*2.55))/255); + $rgb[1] = intval($colors * (255 - ($c[2]*2.55))/255); + $rgb[2] = intval($colors * (255 - ($c[3]*2.55))/255); + if ($c[0]==6) { return array (5,$rgb[0],$rgb[1],$rgb[2], $c[5]); } + else { return array (3,$rgb[0],$rgb[1],$rgb[2]); } +} + +function rgb2hsl($var_r, $var_g, $var_b) { + $var_min = min($var_r,$var_g,$var_b); + $var_max = max($var_r,$var_g,$var_b); + $del_max = $var_max - $var_min; + $l = ($var_max + $var_min) / 2; + if ($del_max == 0) { + $h = 0; + $s = 0; + } + else { + if ($l < 0.5) { $s = $del_max / ($var_max + $var_min); } + else { $s = $del_max / (2 - $var_max - $var_min); } + $del_r = ((($var_max - $var_r) / 6) + ($del_max / 2)) / $del_max; + $del_g = ((($var_max - $var_g) / 6) + ($del_max / 2)) / $del_max; + $del_b = ((($var_max - $var_b) / 6) + ($del_max / 2)) / $del_max; + if ($var_r == $var_max) { $h = $del_b - $del_g; } + elseif ($var_g == $var_max) { $h = (1 / 3) + $del_r - $del_b; } + elseif ($var_b == $var_max) { $h = (2 / 3) + $del_g - $del_r; }; + if ($h < 0) { $h += 1; } + if ($h > 1) { $h -= 1; } + } + return array($h,$s,$l); +} + + +function hsl2rgb($h2,$s2,$l2) { + // Input is HSL value of complementary colour, held in $h2, $s, $l as fractions of 1 + // Output is RGB in normal 255 255 255 format, held in $r, $g, $b + // Hue is converted using function hue_2_rgb, shown at the end of this code + if ($s2 == 0) { + $r = $l2 * 255; + $g = $l2 * 255; + $b = $l2 * 255; + } + else { + if ($l2 < 0.5) { $var_2 = $l2 * (1 + $s2); } + else { $var_2 = ($l2 + $s2) - ($s2 * $l2); } + $var_1 = 2 * $l2 - $var_2; + $r = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 + (1 / 3))); + $g = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2)); + $b = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 - (1 / 3))); + } + return array($r,$g,$b); +} + +function hue_2_rgb($v1,$v2,$vh) { + // Function to convert hue to RGB, called from above + if ($vh < 0) { $vh += 1; }; + if ($vh > 1) { $vh -= 1; }; + if ((6 * $vh) < 1) { return ($v1 + ($v2 - $v1) * 6 * $vh); }; + if ((2 * $vh) < 1) { return ($v2); }; + if ((3 * $vh) < 2) { return ($v1 + ($v2 - $v1) * ((2 / 3 - $vh) * 6)); }; + return ($v1); +} + +function _invertColor($cor) { + if ($cor[0]==3 || $cor[0]==5) { // RGB + return array(3, (255-$cor[1]), (255-$cor[2]), (255-$cor[3])); + } + else if ($cor[0]==4 || $cor[0]==6) { // CMYK + return array(4, (100-$cor[1]), (100-$cor[2]), (100-$cor[3]), (100-$cor[4])); + } + else if ($cor[0]==1) { // Grayscale + return array(1, (255-$cor[1])); + } + // Cannot cope with non-RGB colors at present + die('Error in _invertColor - trying to invert non-RGB color'); +} + +function _colAtoString($cor) { + $s = ''; + if ($cor{0}==1) $s = 'rgb('.ord($cor{1}).','.ord($cor{1}).','.ord($cor{1}).')'; + else if ($cor{0}==2) $s = 'spot('.ord($cor{1}).','.ord($cor{2}).')'; // SPOT COLOR + else if ($cor{0}==3) $s = 'rgb('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).')'; + else if ($cor{0}==4) $s = 'cmyk('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.ord($cor{4}).')'; + else if ($cor{0}==5) $s = 'rgba('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.sprintf('%0.2F',ord($cor{4})/100).')'; + else if ($cor{0}==6) $s = 'cmyka('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.ord($cor{4}).','.sprintf('%0.2F',ord($cor{5})/100).')'; + return $s; +} + +function ConvertSize($size=5,$maxsize=0,$fontsize=false,$usefontsize=true){ +// usefontsize - setfalse for e.g. margins - will ignore fontsize for % values +// Depends of maxsize value to make % work properly. Usually maxsize == pagewidth +// For text $maxsize = Fontsize +// Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize + //Identify size (remember: we are using 'mm' units here) + $size = trim(strtolower($size)); + + if ( $size == 'thin' ) $size = 1*(25.4/$this->dpi); //1 pixel width for table borders + elseif ( stristr($size,'px') ) $size *= (25.4/$this->dpi); //pixels + elseif ( stristr($size,'cm') ) $size *= 10; //centimeters + elseif ( stristr($size,'mm') ) $size += 0; //millimeters + elseif ( stristr($size,'pt') ) $size *= 25.4/72; //72 pts/inch + elseif ( stristr($size,'rem') ) { // mPDF 5.6.12 + $size += 0; //make "0.83rem" become simply "0.83" + $size *= ($this->default_font_size / _MPDFK); + } + elseif ( stristr($size,'em') ) { + $size += 0; //make "0.83em" become simply "0.83" + if ($fontsize) { $size *= $fontsize; } + else { $size *= $maxsize; } + } + elseif ( stristr($size,'%') ) { + $size += 0; //make "90%" become simply "90" + if ($fontsize && $usefontsize) { $size *= $fontsize/100; } + else { $size *= $maxsize/100; } + } + elseif ( stristr($size,'in') ) $size *= 25.4; //inches + elseif ( stristr($size,'pc') ) $size *= 38.1/9; //PostScript picas + elseif ( stristr($size,'ex') ) { // Approximates "ex" as half of font height + $size += 0; //make "3.5ex" become simply "3.5" + if ($fontsize) { $size *= $fontsize/2; } + else { $size *= $maxsize/2; } + } + elseif ( $size == 'medium' ) $size = 3*(25.4/$this->dpi); //3 pixel width for table borders + elseif ( $size == 'thick' ) $size = 5*(25.4/$this->dpi); //5 pixel width for table borders + elseif ($size == 'xx-small') { + if ($fontsize) { $size *= $fontsize*0.7; } + else { $size *= $maxsize*0.7; } + } + elseif ($size == 'x-small') { + if ($fontsize) { $size *= $fontsize*0.77; } + else { $size *= $maxsize*0.77; } + } + elseif ($size == 'small') { + if ($fontsize) { $size *= $fontsize*0.86; } + else { $size *= $maxsize*0.86; } + } + elseif ($size == 'medium') { + if ($fontsize) { $size *= $fontsize; } + else { $size *= $maxsize; } + } + elseif ($size == 'large') { + if ($fontsize) { $size *= $fontsize*1.2; } + else { $size *= $maxsize*1.2; } + } + elseif ($size == 'x-large') { + if ($fontsize) { $size *= $fontsize*1.5; } + else { $size *= $maxsize*1.5; } + } + elseif ($size == 'xx-large') { + if ($fontsize) { $size *= $fontsize*2; } + else { $size *= $maxsize*2; } + } + else $size *= (25.4/$this->dpi); //nothing == px + + return $size; +} + + +function lesser_entity_decode($html) { + //supports the most used entity codes (only does ascii safe characters) + //$html = str_replace(" "," ",$html); // mPDF 5.3.59 + $html = str_replace("<","<",$html); + $html = str_replace(">",">",$html); + + $html = str_replace("'","'",$html); + $html = str_replace(""",'"',$html); + $html = str_replace("&","&",$html); + return $html; +} + +function AdjustHTML($html, $tabSpaces=8) { + //Try to make the html text more manageable (turning it into XHTML) + if (PHP_VERSION_ID < 50307) { + if (strlen($html) > 100000) { + if (PHP_VERSION_ID < 50200) $this->Error("The HTML code is more than 100,000 characters. You should use WriteHTML() with smaller string lengths."); + else ini_set("pcre.backtrack_limit","1000000"); + } + } + +/*-- ANNOTATIONS --*/ + preg_match_all("/()/si", $html, $m); + if (count($m[1])) { + for($i=0;$i)/si", $html, $svgi); + if (count($svgi[0])) { + for($i=0;$i', $html); // mPDF 5.5.18 + } + } + + //Remove javascript code from HTML (should not appear in the PDF file) + $html = preg_replace('//is','',$html); + + //Remove special comments + $html = preg_replace('//i','',$html); + + //Remove comments from HTML (should not appear in the PDF file) + $html = preg_replace('//s','',$html); + + $html = preg_replace('/\f/','',$html); //replace formfeed by nothing + $html = preg_replace('/\r/','',$html); //replace carriage return by nothing + + // Well formed XHTML end tags + $html = preg_replace('/<(br|hr)\/>/i',"<\\1 />",$html); + // Get rid of empty + $html = preg_replace('/\s*<\/thead>/i','',$html); + $html = preg_replace('/\s*<\/tfoot>/i','',$html); + $html = preg_replace('/]*>\s*<\/table>/i','',$html); + $html = preg_replace('/\s*<\/tr>/i','',$html); + + // Remove spaces at end of table cells + $html = preg_replace("/[ \n\r]+<\/t(d|h)/",'[ ]*/",'',$html); + + // Concatenates any Substitute characters from symbols/dingbats + $html = str_replace('','|',$html); + $html = str_replace('','|',$html); + $html = str_replace('','|',$html); + + $html = preg_replace('/
      \s*/is',"
      ",$html); + + $html = preg_replace('/\s*/is',"­",$html); // mPDF 5.6.04 + + // Preserve '\n's in content between the tags
       and 
      + if (preg_match('/
      ]*\>)/', $html, -1, 2);
      +		$h = array();
      +		$c=0;
      +		foreach($html_a AS $s) {
      +			if ($c>1 && preg_match('/^<\/pre/i',$s)) { $c--; $s=preg_replace('/<\/pre/i','0 && preg_match('/^
      (.*?)
      #si',$html,$temp); + // Preserve '\n's in content between the tags + $thereistextarea = preg_match_all('#(.*?)#si',$html,$temp2); + $html = preg_replace('/[\n]/',' ',$html); //replace linefeed by spaces + $html = preg_replace('/[\t]/',' ',$html); //replace tabs by spaces + + // Converts < to < when not a tag + $html = preg_replace('/<([^!\/a-zA-Z])/i','<\\1',$html); + $html = preg_replace("/[ ]+/",' ',$html); + + $html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li>\s+<\/li/i','/\\1l>\s+<\/(u|o)l/i','/li>\s+
    1. ]*)>[ ]+/i','<\\1l\\2>',$html); + $html = preg_replace('/[ ]+<(u|o)l/i','<\\1l',$html); + + $iterator = 0; + while($thereispre) //Recover
      content
      + { + $temp[2][$iterator] = preg_replace("/^([^\n\t]*?)\t/me", "stripslashes('\\1') . str_repeat(' ', ( $tabSpaces - (mb_strlen(stripslashes('\\1')) % $tabSpaces)) )",$temp[2][$iterator]); + $temp[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp[2][$iterator]); + + $temp[2][$iterator] = preg_replace('/\n/',"
      ",$temp[2][$iterator]); + $temp[2][$iterator] = str_replace('\\',"\\\\",$temp[2][$iterator]); + $html = preg_replace('#(.*?)
    2. #si',''.$temp[2][$iterator].'',$html,1); + $thereispre--; + $iterator++; + } + $iterator = 0; + while($thereistextarea) //Recover + { + $temp2[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp2[2][$iterator]); + $temp2[2][$iterator] = str_replace('\\',"\\\\",$temp2[2][$iterator]); // mPDF 5.3.88 + $html = preg_replace('#(.*?)#si',''.trim($temp2[2][$iterator]) .'',$html,1); + $thereistextarea--; + $iterator++; + } + //Restore original tag names + $html = str_replace("","",$html); + $html = str_replace("","",$html); + $html = str_replace("]*)><\/textarea>/si',' ',$html); + $html = preg_replace('/(]*>)\s*()(.*?<\/table>)/si','\\2 position="top"\\3\\1\\4\\2 position="bottom"\\3',$html); // *TABLES* + $html = preg_replace('/<(h[1-6])([^>]*)(>(?:(?!h[1-6]).)*?<\/\\1>\s*_charDefined($this->CurrentFont['cw'],$cp+intval($nstr[$i]))) { // contains arabic-indic numbers + $rnum .= code2utf($cp+intval($nstr[$i])); + } + else { $rnum .= $nstr[$i]; } + } + return $rnum; +} + +function dec2alpha($valor,$toupper="true"){ +// returns a string from A-Z to AA-ZZ to AAA-ZZZ +// OBS: A = 65 ASCII TABLE VALUE + if (($valor < 1) || ($valor > 18278)) return "?"; //supports 'only' up to 18278 + $c1 = $c2 = $c3 = ''; + if ($valor > 702) // 3 letters (up to 18278) + { + $c1 = 65 + floor(($valor-703)/676); + $c2 = 65 + floor((($valor-703)%676)/26); + $c3 = 65 + floor((($valor-703)%676)%26); + } + elseif ($valor > 26) // 2 letters (up to 702) + { + $c1 = (64 + (int)(($valor-1) / 26)); + $c2 = (64 + (int)($valor % 26)); + if ($c2 == 64) $c2 += 26; + } + else // 1 letter (up to 26) + { + $c1 = (64 + $valor); + } + $alpha = chr($c1); + if ($c2 != '') $alpha .= chr($c2); + if ($c3 != '') $alpha .= chr($c3); + if (!$toupper) $alpha = strtolower($alpha); + return $alpha; +} + + +function dec2roman($valor,$toupper=true){ + //returns a string as a roman numeral + $r1=$r2=$r3=$r4=''; + if (($valor >= 5000) || ($valor < 1)) return "?"; //supports 'only' up to 4999 + $aux = (int)($valor/1000); + if ($aux!==0) + { + $valor %= 1000; + while($aux!==0) + { + $r1 .= "M"; + $aux--; + } + } + $aux = (int)($valor/100); + if ($aux!==0) + { + $valor %= 100; + switch($aux){ + case 3: $r2="C"; + case 2: $r2.="C"; + case 1: $r2.="C"; break; + case 9: $r2="CM"; break; + case 8: $r2="C"; + case 7: $r2.="C"; + case 6: $r2.="C"; + case 5: $r2="D".$r2; break; + case 4: $r2="CD"; break; + default: break; + } + } + $aux = (int)($valor/10); + if ($aux!==0) + { + $valor %= 10; + switch($aux){ + case 3: $r3="X"; + case 2: $r3.="X"; + case 1: $r3.="X"; break; + case 9: $r3="XC"; break; + case 8: $r3="X"; + case 7: $r3.="X"; + case 6: $r3.="X"; + case 5: $r3="L".$r3; break; + case 4: $r3="XL"; break; + default: break; + } + } + switch($valor){ + case 3: $r4="I"; + case 2: $r4.="I"; + case 1: $r4.="I"; break; + case 9: $r4="IX"; break; + case 8: $r4="I"; + case 7: $r4.="I"; + case 6: $r4.="I"; + case 5: $r4="V".$r4; break; + case 4: $r4="IV"; break; + default: break; + } + $roman = $r1.$r2.$r3.$r4; + if (!$toupper) $roman = strtolower($roman); + return $roman; +} +/*-- END LISTS --*/ + + +//=========================== +/*-- IMPORTS --*/ +function SetImportUse() { + $this->enableImports = true; + ini_set('auto_detect_line_endings',1); + require_once(_MPDF_PATH."mpdfi/pdf_context.php"); + require_once(_MPDF_PATH."mpdfi/pdf_parser.php"); + require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php"); +} + +// from mPDFI +function hex2str($hex) { + return pack("H*", str_replace(array("\r","\n"," "),"", $hex)); +} + +function str2hex($str) { + return current(unpack("H*",$str)); +} + + +function pdf_write_value(&$value) { + switch ($value[0]) { + case PDF_TYPE_NUMERIC : + case PDF_TYPE_TOKEN : + // A numeric value or a token. + // Simply output them + $this->_out($value[1]." ", false); + break; + + case PDF_TYPE_ARRAY : + // An array. Output the proper + // structure and move on. + $this->_out("[",false); + for ($i = 0; $i < count($value[1]); $i++) { + $this->pdf_write_value($value[1][$i]); + } + $this->_out("]"); + break; + + case PDF_TYPE_DICTIONARY : + // A dictionary. + $this->_out("<<",false); + reset ($value[1]); + while (list($k, $v) = each($value[1])) { + $this->_out($k . " ",false); + $this->pdf_write_value($v); + } + $this->_out(">>"); + break; + + case PDF_TYPE_OBJREF : + // An indirect object reference + // Fill the object stack if needed + $cpfn =& $this->current_parser->filename; + if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) { + $this->_newobj(false,true); + $this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value); + $this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value); + } + $objid = $this->_don_obj_stack[$cpfn][$value[1]][0]; + $this->_out("{$objid} 0 R"); //{$value[2]} + break; + + case PDF_TYPE_STRING : + if ($this->encrypted) { + $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]); + $value[1] = $this->_escape($value[1]); + } + // A string. + $this->_out('('.$value[1].')'); + break; + + case PDF_TYPE_STREAM : + // A stream. First, output the + // stream dictionary, then the + // stream data itself. + $this->pdf_write_value($value[1]); + if ($this->encrypted) { + $value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]); + } + $this->_out("stream"); + $this->_out($value[2][1]); + $this->_out("endstream"); + break; + + case PDF_TYPE_HEX : + if ($this->encrypted) { + $value[1] = $this->hex2str($value[1]); + $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]); + // remake hexstring of encrypted string + $value[1] = $this->str2hex($value[1]); + } + $this->_out("<".$value[1].">"); + break; + + case PDF_TYPE_NULL : + // The null object. + $this->_out("null"); + break; + } +} + +// ========== OVERWRITE SEARCH STRING IN A PDF FILE ================ +function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) { + $pdf = file_get_contents($file_in); + + if (!is_array($search)) { + $x = $search; + $search = array($x); + } + if (!is_array($replacement)) { + $x = $replacement; + $search = array($x); + } + + if (!$this->onlyCoreFonts && !$this->usingCoreFont) { + foreach($search AS $k=>$val) { + $search[$k] = $this->UTF8ToUTF16BE($search[$k] , false); + $search[$k] = $this->_escape($search[$k]); + $replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false); + $replacement[$k] = $this->_escape($replacement[$k]); + } + } + else { + foreach($replacement AS $k=>$val) { + $replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_enc,'utf-8'); + $replacement[$k] = $this->_escape($replacement[$k]); + } + } + + // Get xref into array + $xref = array(); + preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m); + $xref_objid = $m[1]; + preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x); + for($i=0; $icompress) { + preg_match("/".($obj+1)." 0 obj\n<<\s*\/Filter\s*\/FlateDecode\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m); + } + else { + preg_match("/".($obj+1)." 0 obj\n<<\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m); + } + $s = $m[2]; + if (!$s) { continue; } + $oldlen = $m[1]; + if ($this->encrypted) { + $s = $this->_RC4($this->_objectkey($obj+1), $s); + } + if ($this->compress) { + $s = gzuncompress($s); + } + foreach($search AS $k=>$val) { + $s = str_replace($search[$k],$replacement[$k],$s); + } + if ($this->compress) { + $s = gzcompress($s); + } + if ($this->encrypted) { + $s = $this->_RC4($this->_objectkey($obj+1), $s); + } + $newlen = strlen($s); + $changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen )); + if ($this->compress) { + $newstr = ($obj+1) . " 0 obj\n<>\nstream\n".$s."\nendstream\n"; + } + else { + $newstr = ($obj+1) . " 0 obj\n<>\nstream\n".$s."\nendstream\n"; + } + $pdf = str_replace($m[0],$newstr,$pdf); + } + + // Update xref in PDF + krsort($changes); + $newxref = "xref\n0 ".$xref_objid."\n"; + foreach($xref AS $v) { + foreach($changes AS $ck => $cv) { + if ($v[0] > $ck) { $v[0] += $cv; } + } + $newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n"; + } + $newxref .= "trailer"; + $pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf); + + // Update startxref in PDF + preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m); + $startxref = $m[1]; + $startxref += array_sum($changes); + $pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf); + + // OUTPUT + switch($dest) { + case 'I': + //Send to standard output + if(isset($_SERVER['SERVER_NAME'])) + { + //We send to a browser + Header('Content-Type: application/pdf'); + Header('Content-Length: '.strlen($pdf)); + Header('Content-disposition: inline; filename='.$file_out); + } + echo $pdf; + break; + case 'F': + //Save to local file + if (!$file_out) { $file_out = 'mpdf.pdf'; } + $f=fopen($file_out,'wb'); + if(!$f) die('Unable to create output file: '.$file_out); + fwrite($f,$pdf,strlen($pdf)); + fclose($f); + break; + case 'S': + //Return as a string + return $pdf; + case 'D': + default: + //Download file + if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) + Header('Content-Type: application/force-download'); + else + Header('Content-Type: application/octet-stream'); + Header('Content-Length: '.strlen($pdf)); + Header('Content-disposition: attachment; filename='.$file_out); + echo $pdf; + break; + } +} + + +function GetTemplateSize($tplidx, $_w=0, $_h=0) { + if (!$this->tpls[$tplidx]) + return false; + $w = $this->tpls[$tplidx]['box']['w']; + $h = $this->tpls[$tplidx]['box']['h']; + if ($_w == 0 and $_h == 0) { + $_w = $w; + $_h = $h; + } + if($_w==0) + $_w=$_h*$w/$h; + if($_h==0) + $_h=$_w*$h/$w; + return array("w" => $_w, "h" => $_h); +} + +// Thumbnails +function Thumbnail($file, $npr=3, $spacing=10) { //$npr = number per row + $w = (($this->pgwidth + $spacing)/$npr) - $spacing; + $oldlinewidth = $this->LineWidth; + $this->SetLineWidth(0.02); + $this->SetDColor($this->ConvertColor(0)); + $h = 0; + $maxh = 0; + $x = $_x = $this->lMargin; + $_y = $this->tMargin; + if ($this->y==0) { $y = $_y; } else { $y = $this->y; } + $pagecount = $this->SetSourceFile($file); + for ($n = 1; $n <= $pagecount; $n++) { + $tplidx = $this->ImportPage($n); + $size = $this->useTemplate($tplidx, $x, $y, $w); + $this->Rect($x, $y, $size['w'], $size['h']); + $h = max($h, $size['h']); + $maxh = max($h, $maxh); + if ($n % $npr == 0) { + if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) { + $this->AddPage(); + $x = $_x; + $y = $_y; + } + else { + $y += $h+$spacing ; + $x = $_x; + $h = 0; + } + } + else { + $x += $w+$spacing ; + } + } + $this->SetLineWidth($oldlinewidth); +} + +function SetSourceFile($filename) { + $this->current_filename = $filename; + $fn =& $this->current_filename; + if (!isset($this->parsers[$fn])) + // $this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this); + $this->parsers[$fn] = new fpdi_pdf_parser($fn,$this); + if (!$this->parsers[$fn]->success) { + $this->Error($this->parsers[$fn]->errormsg); // Delete this line to return false on fail + return false; + } + $this->current_parser =& $this->parsers[$fn]; + return $this->parsers[$fn]->getPageCount(); +} +function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') { + $fn =& $this->current_filename; + $parser =& $this->parsers[$fn]; + $parser->setPageno($pageno); + + $this->tpl++; + $this->tpls[$this->tpl] = array(); + $tpl =& $this->tpls[$this->tpl]; + $tpl['parser'] =& $parser; + $tpl['resources'] = $parser->getPageResources(); + $tpl['buffer'] = $parser->getContent(); + if (!in_array($boxName, $parser->availableBoxes)) + return $this->Error(sprintf("Unknown box: %s", $boxName)); + $pageboxes = $parser->getPageBoxes($pageno); + /** + * MediaBox + * CropBox: Default -> MediaBox + * BleedBox: Default -> CropBox + * TrimBox: Default -> CropBox + * ArtBox: Default -> CropBox + */ + if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox")) + $boxName = "/CropBox"; + if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox") + $boxName = "/MediaBox"; + if (!isset($pageboxes[$boxName])) + return false; + $box = $pageboxes[$boxName]; + + $tpl['box'] = $box; + // To build an array that can be used by useTemplate() + $this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box); + // An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects() + $tpl['x'] = 0; + $tpl['y'] = 0; + $tpl['w'] = $tpl['box']['w'] ; + $tpl['h'] = $tpl['box']['h'] ; + if ($crop_w) { $tpl['box']['w'] = $crop_w; } + if ($crop_h) { $tpl['box']['h'] = $crop_h; } + if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; } + if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y - $crop_h ; } + + $page =& $parser->pages[$parser->pageno]; + // fix for rotated pages + $rotation = $parser->getPageRotation($pageno); + + if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) { + $steps = $angle / 90; + + $_w = $tpl['w']; + $_h = $tpl['h']; + $tpl['w'] = $steps % 2 == 0 ? $_w : $_h; + $tpl['h'] = $steps % 2 == 0 ? $_h : $_w; + if ($steps % 2 != 0) { + $x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w']; + } else { + $x = $tpl['w']; + $y = $tpl['h']; + } + $cx=($x/2+$tpl['box']['x'])*_MPDFK; + $cy=($y/2+$tpl['box']['y'])*_MPDFK; + $angle*=-1; + $angle*=M_PI/180; + $c=cos($angle); + $s=sin($angle); + $tpl['box']['w'] = $tpl['w'] ; + $tpl['box']['h'] = $tpl['h'] ; + $tpl['buffer'] = sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm %s Q',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy, $tpl['buffer']); + } + return $this->tpl; +} +function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) { + if (!isset($this->tpls[$tplidx])) + $this->Error("Template does not exist!"); + if($this->state==0) { $this->AddPage(); } + $out = 'q 0 J 1 w 0 j 0 G'."\n"; // reset standard values + $x = $this->tpls[$tplidx]['x']; + $y = $this->tpls[$tplidx]['y']; + $w = $this->tpls[$tplidx]['w']; + $h = $this->tpls[$tplidx]['h']; + if ($_x == null) { $_x = $x; } + if ($_y == null) { $_y = $y; } + if ($_x === -1) { $_x = $this->x; } + if ($_y === -1) { $_y = $this->y; } + + $wh = $this->getTemplateSize($tplidx,$_w,$_h); + $_w = $wh['w']; + $_h = $wh['h']; + $out .= sprintf("q %.4F 0 0 %.4F %.2F %.2F cm", ($_w/$this->tpls[$tplidx]['box']['w']), ($_h/$this->tpls[$tplidx]['box']['h']), $_x*_MPDFK, ($this->h-($_y+$_h))*_MPDFK)."\n"; + $out .= $this->tplprefix.$tplidx." Do Q\n"; + + $s = array("w" => $_w, "h" => $_h); + $out .= "Q\n"; + $this->pages[$this->page] = $out . $this->pages[$this->page]; + return $s; +} +function SetPageTemplate($tplidx='') { + if (!isset($this->tpls[$tplidx])) { + $this->pageTemplate = ''; + return false; + } + $this->pageTemplate = $tplidx; +} +function SetDocTemplate($file='', $continue=0) { + $this->docTemplate = $file; + $this->docTemplateContinue = $continue; +} +/*-- END IMPORTS --*/ + + +/* ---------------------------------------------- */ +/* ---------------------------------------------- */ +/* ---------------------------------------------- */ +/* ---------------------------------------------- */ +/* ---------------------------------------------- */ + +// JAVASCRIPT +function _set_object_javascript ($string) { + $this->_newobj(); + $this->_out('<<'); + $this->_out('/S /JavaScript '); + $this->_out('/JS '.$this->_textstring($string)); + $this->_out('>>'); + $this->_out('endobj'); +} + +function SetJS($script) { + $this->js = $script; +} + + + + +}//end of Class + + + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php new file mode 100644 index 000000000..fc42d5742 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php @@ -0,0 +1,98 @@ + ORD_u) { + $this->error('Illegal character in ASCII85Decode.'); + } + + $chn[$state++] = $ch - ORD_exclmark; + + if ($state == 5) { + $state = 0; + $r = 0; + for ($j = 0; $j < 5; ++$j) + $r = $r * 85 + $chn[$j]; + $out .= chr($r >> 24); + $out .= chr($r >> 16); + $out .= chr($r >> 8); + $out .= chr($r); + } + } + $r = 0; + + if ($state == 1) + $this->error('Illegal length in ASCII85Decode.'); + if ($state == 2) { + $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85; + $out .= chr($r >> 24); + } + else if ($state == 3) { + $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85; + $out .= chr($r >> 24); + $out .= chr($r >> 16); + } + else if ($state == 4) { + $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ; + $out .= chr($r >> 24); + $out .= chr($r >> 16); + $out .= chr($r >> 8); + } + + return $out; + } + + function encode($in) { + $this->error("ASCII85 encoding not implemented."); + } +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php new file mode 100644 index 000000000..5867603fc --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php @@ -0,0 +1,154 @@ +error('LZW flavour not supported.'); + } + + $this->initsTable(); + + $this->data = $data; + $this->dataLength = strlen($data); + + // Initialize pointers + $this->bytePointer = 0; + $this->bitPointer = 0; + + $this->nextData = 0; + $this->nextBits = 0; + + $oldCode = 0; + + $string = ''; + $uncompData = ''; + + while (($code = $this->getNextCode()) != 257) { + if ($code == 256) { + $this->initsTable(); + $code = $this->getNextCode(); + + if ($code == 257) { + break; + } + + $uncompData .= $this->sTable[$code]; + $oldCode = $code; + + } else { + + if ($code < $this->tIdx) { + $string = $this->sTable[$code]; + $uncompData .= $string; + + $this->addStringToTable($this->sTable[$oldCode], $string[0]); + $oldCode = $code; + } else { + $string = $this->sTable[$oldCode]; + $string = $string.$string[0]; + $uncompData .= $string; + + $this->addStringToTable($string); + $oldCode = $code; + } + } + } + + return $uncompData; + } + + + /** + * Initialize the string table. + */ + function initsTable() { + $this->sTable = array(); + + for ($i = 0; $i < 256; $i++) + $this->sTable[$i] = chr($i); + + $this->tIdx = 258; + $this->bitsToGet = 9; + } + + /** + * Add a new string to the string table. + */ + function addStringToTable ($oldString, $newString='') { + $string = $oldString.$newString; + + // Add this new String to the table + $this->sTable[$this->tIdx++] = $string; + + if ($this->tIdx == 511) { + $this->bitsToGet = 10; + } else if ($this->tIdx == 1023) { + $this->bitsToGet = 11; + } else if ($this->tIdx == 2047) { + $this->bitsToGet = 12; + } + } + + // Returns the next 9, 10, 11 or 12 bits + function getNextCode() { + if ($this->bytePointer == $this->dataLength) { + return 257; + } + + $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); + $this->nextBits += 8; + + if ($this->nextBits < $this->bitsToGet) { + $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); + $this->nextBits += 8; + } + + $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9]; + $this->nextBits -= $this->bitsToGet; + + return $code; + } + + function encode($in) { + $this->error("LZW encoding not implemented."); + } +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php new file mode 100644 index 000000000..e0f023917 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php @@ -0,0 +1,363 @@ +fpdi =& $fpdi; + $this->filename = $filename; + + parent::pdf_parser($filename); + if ($this->success == false) { return false; } + + // resolve Pages-Dictonary + $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']); + if ($this->success == false) { return false; } + + // Read pages + $this->read_pages($this->c, $pages, $this->pages); + if ($this->success == false) { return false; } + + // count pages; + $this->page_count = count($this->pages); + } + + + /** + * Get pagecount from sourcefile + * + * @return int + */ + function getPageCount() { + return $this->page_count; + } + + + /** + * Set pageno + * + * @param int $pageno Pagenumber to use + */ + function setPageno($pageno) { + $pageno = ((int) $pageno) - 1; + + if ($pageno < 0 || $pageno >= $this->getPageCount()) { + $this->fpdi->error("Pagenumber is wrong!"); + } + + $this->pageno = $pageno; + } + + /** + * Get page-resources from current page + * + * @return array + */ + function getPageResources() { + return $this->_getPageResources($this->pages[$this->pageno]); + } + + /** + * Get page-resources from /Page + * + * @param array $obj Array of pdf-data + */ + function _getPageResources ($obj) { // $obj = /Page + $obj = $this->pdf_resolve_object($this->c, $obj); + + // If the current object has a resources + // dictionary associated with it, we use + // it. Otherwise, we move back to its + // parent object. + if (isset ($obj[1][1]['/Resources'])) { + $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']); + if ($res[0] == PDF_TYPE_OBJECT) + return $res[1]; + return $res; + } else { + if (!isset ($obj[1][1]['/Parent'])) { + return false; + } else { + $res = $this->_getPageResources($obj[1][1]['/Parent']); + if ($res[0] == PDF_TYPE_OBJECT) + return $res[1]; + return $res; + } + } + } + + + /** + * Get content of current page + * + * If more /Contents is an array, the streams are concated + * + * @return string + */ + function getContent() { + $buffer = ""; + + if (isset($this->pages[$this->pageno][1][1]['/Contents'])) { + $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']); + foreach($contents AS $tmp_content) { + $buffer .= $this->_rebuildContentStream($tmp_content).' '; + } + } + + return $buffer; + } + + + /** + * Resolve all content-objects + * + * @param array $content_ref + * @return array + */ + function _getPageContent($content_ref) { + $contents = array(); + + if ($content_ref[0] == PDF_TYPE_OBJREF) { + $content = $this->pdf_resolve_object($this->c, $content_ref); + if ($content[1][0] == PDF_TYPE_ARRAY) { + $contents = $this->_getPageContent($content[1]); + } else { + $contents[] = $content; + } + } else if ($content_ref[0] == PDF_TYPE_ARRAY) { + foreach ($content_ref[1] AS $tmp_content_ref) { + $contents = array_merge($contents,$this->_getPageContent($tmp_content_ref)); + } + } + + return $contents; + } + + + /** + * Rebuild content-streams + * + * @param array $obj + * @return string + */ + function _rebuildContentStream($obj) { + $filters = array(); + + if (isset($obj[1][1]['/Filter'])) { + $_filter = $obj[1][1]['/Filter']; + + if ($_filter[0] == PDF_TYPE_TOKEN) { + $filters[] = $_filter; + } else if ($_filter[0] == PDF_TYPE_ARRAY) { + $filters = $_filter[1]; + } + } + + $stream = $obj[2][1]; + + foreach ($filters AS $_filter) { + switch ($_filter[1]) { + case "/FlateDecode": + if (function_exists('gzuncompress')) { + $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : ''; + } else { + $this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1])); + } + if ($stream === false) { + $this->fpdi->error("Error while decompressing stream."); + } + break; + // mPDF 4.2.003 + case '/LZWDecode': + include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php'); + // mPDF 5.0 Removed pass by reference =& + $decoder = new FilterLZW(); + $stream = $decoder->decode($stream); + break; + case '/ASCII85Decode': + include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php'); + // mPDF 5.0 Removed pass by reference =& + $decoder = new FilterASCII85(); + $stream = $decoder->decode($stream); + break; + case null: + $stream = $stream; + break; + default: + $this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1])); + } + } + + return $stream; + } + + + /** + * Get a Box from a page + * Arrayformat is same as used by fpdf_tpl + * + * @param array $page a /Page + * @param string $box_index Type of Box @see $availableBoxes + * @return array + */ + function getPageBox($page, $box_index) { + $page = $this->pdf_resolve_object($this->c,$page); + $box = null; + if (isset($page[1][1][$box_index])) + $box =& $page[1][1][$box_index]; + + if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) { + $tmp_box = $this->pdf_resolve_object($this->c,$box); + $box = $tmp_box[1]; + } + + if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) { + $b =& $box[1]; + return array("x" => $b[0][1]/_MPDFK, + "y" => $b[1][1]/_MPDFK, + "w" => abs($b[0][1]-$b[2][1])/_MPDFK, + "h" => abs($b[1][1]-$b[3][1])/_MPDFK); // mPDF 5.3.90 + } else if (!isset ($page[1][1]['/Parent'])) { + return false; + } else { + return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index); + } + } + + function getPageBoxes($pageno) { + return $this->_getPageBoxes($this->pages[$pageno-1]); + } + + /** + * Get all Boxes from /Page + * + * @param array a /Page + * @return array + */ + function _getPageBoxes($page) { + $boxes = array(); + + foreach($this->availableBoxes AS $box) { + if ($_box = $this->getPageBox($page,$box)) { + $boxes[$box] = $_box; + } + } + + return $boxes; + } + + function getPageRotation($pageno) { + return $this->_getPageRotation($this->pages[$pageno-1]); + } + + function _getPageRotation ($obj) { // $obj = /Page + $obj = $this->pdf_resolve_object($this->c, $obj); + if (isset ($obj[1][1]['/Rotate'])) { + $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']); + if ($res[0] == PDF_TYPE_OBJECT) + return $res[1]; + return $res; + } else { + if (!isset ($obj[1][1]['/Parent'])) { + return false; + } else { + $res = $this->_getPageRotation($obj[1][1]['/Parent']); + if ($res[0] == PDF_TYPE_OBJECT) + return $res[1]; + return $res; + } + } + } + + /** + * Read all /Page(es) + * + * @param object pdf_context + * @param array /Pages + * @param array the result-array + */ + function read_pages (&$c, &$pages, &$result) { + // Get the kids dictionary + $kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']); + + if (!is_array($kids)) { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("Cannot find /Kids in current /Page-Dictionary"); + return false; + } + foreach ($kids[1] as $v) { + $pg = $this->pdf_resolve_object ($c, $v); + if ($pg[1][1]['/Type'][1] === '/Pages') { + // If one of the kids is an embedded + // /Pages array, resolve it as well. + $this->read_pages ($c, $pg, $result); + } else { + $result[] = $pg; + } + } + } + + + + +} + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php new file mode 100644 index 000000000..6cf4bdcc2 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php @@ -0,0 +1,78 @@ +file = $f; + $this->reset(); + } + + // Optionally move the file + // pointer to a new location + // and reset the buffered data + + function reset($pos = null, $l = 100) { + if (!is_null ($pos)) { + fseek ($this->file, $pos); + } + + $this->buffer = $l > 0 ? fread($this->file, $l) : ''; + $this->offset = 0; + $this->length = strlen($this->buffer); + $this->stack = array(); + } + + // Make sure that there is at least one + // character beyond the current offset in + // the buffer to prevent the tokenizer + // from attempting to access data that does + // not exist + + function ensure_content() { + if ($this->offset >= $this->length - 1) { + return $this->increase_length(); + } else { + return true; + } + } + + // Forcefully read more data into the buffer + + function increase_length($l=100) { + if (feof($this->file)) { + return false; + } else { + $this->buffer .= fread($this->file, $l); + $this->length = strlen($this->buffer); + return true; + } + } + +} +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php new file mode 100644 index 000000000..c7d69e2c5 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php @@ -0,0 +1,690 @@ +filename = $filename; + // mPDF 4.0 + $this->success = true; + + $this->f = @fopen($this->filename, "rb"); + + if (!$this->f) { + $this->success = false; + $this->errormsg = sprintf("Cannot open %s !", $filename); + return false; + } + // mPDF 5.0 Removed pass by reference =& + $this->c = new pdf_context($this->f); + // Read xref-Data + $offset = $this->pdf_find_xref(); + if ($offset===false) { + $this->success = false; + $this->errormsg = sprintf("Cannot open %s !", $filename); + return false; + } + $this->pdf_read_xref($this->xref, $offset); + if ($this->success == false) { return false; } + + // Check for Encryption + $this->getEncryption(); + if ($this->success == false) { return false; } + + // Read root + $this->pdf_read_root(); + if ($this->success == false) { return false; } + } + + /** + * Close the opened file + */ + function closeFile() { + if (isset($this->f)) { + fclose($this->f); + unset($this->f); + } + } + + /** + * Print Error and die + * + * @param string $msg Error-Message + */ + function error($msg) { + die("PDF-Parser Error: ".$msg); + } + + /** + * Check Trailer for Encryption + */ + function getEncryption() { + if (isset($this->xref['trailer'][1]['/Encrypt'])) { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("File is encrypted!"); + return false; + } + } + + /** + * Find/Return /Root + * + * @return array + */ + function pdf_find_root() { + if ($this->xref['trailer'][1]['/Root'][0] != PDF_TYPE_OBJREF) { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("Wrong Type of Root-Element! Must be an indirect reference"); + return false; + } + return $this->xref['trailer'][1]['/Root']; + } + + /** + * Read the /Root + */ + function pdf_read_root() { + // read root + $root = $this->pdf_find_root(); + if ($root ===false) { + $this->success = false; + return false; + } + $this->root = $this->pdf_resolve_object($this->c, $root); + } + + /** + * Find the xref-Table + */ + function pdf_find_xref() { + fseek ($this->f, -min(filesize($this->filename),1500), SEEK_END); + $data = fread($this->f, 1500); + + $pos = strlen($data) - strpos(strrev($data), strrev('startxref')); + $data = substr($data, $pos); + + if (!preg_match('/\s*(\d+).*$/s', $data, $matches)) { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("Unable to find pointer to xref table"); + return false; + } + + return (int) $matches[1]; + } + + /** + * Read xref-table + * + * @param array $result Array of xref-table + * @param integer $offset of xref-table + * @param integer $start start-position in xref-table + * @param integer $end end-position in xref-table + */ + function pdf_read_xref(&$result, $offset, $start = null, $end = null) { + if (is_null ($start) || is_null ($end)) { + fseek($this->f, $o_pos = $offset); + $data = trim(fgets($this->f,1024)); + + if (strlen($data) == 0) + $data = trim(fgets($this->f,1024)); + + if ($data !== 'xref') { + fseek($this->f, $o_pos); + $data = trim(_fgets($this->f, true)); + if ($data !== 'xref') { + if (preg_match('/(.*xref)(.*)/m', $data, $m)) { // xref 0 128 - in one line + fseek($this->f, $o_pos+strlen($m[1])); + } elseif (preg_match('/(x|r|e|f)+/', $data, $m)) { // correct invalid xref-pointer + $tmpOffset = $offset-4+strlen($m[0]); + $this->pdf_read_xref($result, $tmpOffset, $start, $end); + return; + } else { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'"); + return; + } + } + } + + $o_pos = ftell($this->f); + $data = explode(' ', trim(fgets($this->f,1024))); + if (count($data) != 2) { + fseek($this->f, $o_pos); + $data = explode(' ', trim(_fgets($this->f, true))); + + if (count($data) != 2) { + if (count($data) > 2) { // no lineending + $n_pos = $o_pos+strlen($data[0])+strlen($data[1])+2; + fseek($this->f, $n_pos); + } else { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("Unexpected header in xref table"); + return; + } + } + } + $start = $data[0]; + $end = $start + $data[1]; + } + + if (!isset($result['xref_location'])) { + $result['xref_location'] = $offset; + } + + if (!isset($result['max_object']) || $end > $result['max_object']) { + $result['max_object'] = $end; + } + + for (; $start < $end; $start++) { + $data = ltrim(fread($this->f, 20)); // Spezifications says: 20 bytes including newlines + $offset = substr($data, 0, 10); + $generation = substr($data, 11, 5); + + if (!isset ($result['xref'][$start][(int) $generation])) { + $result['xref'][$start][(int) $generation] = (int) $offset; + } + } + + $o_pos = ftell($this->f); + $data = fgets($this->f,1024); + if (strlen(trim($data)) == 0) + $data = fgets($this->f, 1024); + + if (preg_match("/trailer/",$data)) { + if (preg_match("/(.*trailer[ \n\r]*)/",$data,$m)) { + fseek($this->f, $o_pos+strlen($m[1])); + } + + // mPDF 5.0 Removed pass by reference =& + $c = new pdf_context($this->f); + $trailer = $this->pdf_read_value($c); + + if (isset($trailer[1]['/Prev'])) { + $this->pdf_read_xref($result, $trailer[1]['/Prev'][1]); + $result['trailer'][1] = array_merge($result['trailer'][1], $trailer[1]); + } else { + $result['trailer'] = $trailer; + } + } else { + $data = explode(' ', trim($data)); + + if (count($data) != 2) { + fseek($this->f, $o_pos); + $data = explode(' ', trim (_fgets ($this->f, true))); + + if (count($data) != 2) { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("Unexpected data in xref table"); + return; + } + } + + $this->pdf_read_xref($result, null, (int) $data[0], (int) $data[0] + (int) $data[1]); + } + } + + + /** + * Reads an Value + * + * @param object $c pdf_context + * @param string $token a Token + * @return mixed + */ + function pdf_read_value(&$c, $token = null) { + if (is_null($token)) { + $token = $this->pdf_read_token($c); + } + + if ($token === false) { + return false; + } + + switch ($token) { + case '<': + // This is a hex string. + // Read the value, then the terminator + + $pos = $c->offset; + + while(1) { + + $match = strpos ($c->buffer, '>', $pos); + + // If you can't find it, try + // reading more data from the stream + + if ($match === false) { + if (!$c->increase_length()) { + return false; + } else { + continue; + } + } + + $result = substr ($c->buffer, $c->offset, $match - $c->offset); + $c->offset = $match+1; + + return array (PDF_TYPE_HEX, $result); + } + + break; + case '<<': + // This is a dictionary. + + $result = array(); + + // Recurse into this function until we reach + // the end of the dictionary. + while (($key = $this->pdf_read_token($c)) !== '>>') { + if ($key === false) { + return false; + } + + if (($value = $this->pdf_read_value($c)) === false) { + return false; + } + $result[$key] = $value; + } + + return array (PDF_TYPE_DICTIONARY, $result); + + case '[': + // This is an array. + + $result = array(); + + // Recurse into this function until we reach + // the end of the array. + while (($token = $this->pdf_read_token($c)) !== ']') { + if ($token === false) { + return false; + } + + if (($value = $this->pdf_read_value($c, $token)) === false) { + return false; + } + + $result[] = $value; + } + + return array (PDF_TYPE_ARRAY, $result); + + case '(' : + // This is a string + + $pos = $c->offset; + + while(1) { + + // Start by finding the next closed + // parenthesis + + $match = strpos ($c->buffer, ')', $pos); + + // If you can't find it, try + // reading more data from the stream + + if ($match === false) { + if (!$c->increase_length()) { + return false; + } else { + continue; + } + } + + // Make sure that there is no backslash + // before the parenthesis. If there is, + // move on. Otherwise, return the string. + $esc = preg_match('/([\\\\]+)$/', $tmpresult = substr($c->buffer, $c->offset, $match - $c->offset), $m); + + if ($esc === 0 || strlen($m[1]) % 2 == 0) { + $result = $tmpresult; + $c->offset = $match + 1; + return array (PDF_TYPE_STRING, $result); + } else { + $pos = $match + 1; + + if ($pos > $c->offset + $c->length) { + $c->increase_length(); + } + } + } + + case "stream": + $o_pos = ftell($c->file)-strlen($c->buffer); + $o_offset = $c->offset; + + $c->reset($startpos = $o_pos + $o_offset); + + $e = 0; // ensure line breaks in front of the stream + if ($c->buffer[0] == chr(10) || $c->buffer[0] == chr(13)) + $e++; + if ($c->buffer[1] == chr(10) && $c->buffer[0] != chr(10)) + $e++; + + if ($this->actual_obj[1][1]['/Length'][0] == PDF_TYPE_OBJREF) { + // mPDF 5.0 Removed pass by reference =& + $tmp_c = new pdf_context($this->f); + $tmp_length = $this->pdf_resolve_object($tmp_c,$this->actual_obj[1][1]['/Length']); + $length = $tmp_length[1][1]; + } else { + $length = $this->actual_obj[1][1]['/Length'][1]; + } + + if ($length > 0) { + $c->reset($startpos+$e,$length); + $v = $c->buffer; + } else { + $v = ''; + } + $c->reset($startpos+$e+$length+9); // 9 = strlen("endstream") + + return array(PDF_TYPE_STREAM, $v); + + default : + if (is_numeric ($token)) { + // A numeric token. Make sure that + // it is not part of something else. + if (($tok2 = $this->pdf_read_token ($c)) !== false) { + if (is_numeric ($tok2)) { + + // Two numeric tokens in a row. + // In this case, we're probably in + // front of either an object reference + // or an object specification. + // Determine the case and return the data + if (($tok3 = $this->pdf_read_token ($c)) !== false) { + switch ($tok3) { + case 'obj' : + return array (PDF_TYPE_OBJDEC, (int) $token, (int) $tok2); + case 'R' : + return array (PDF_TYPE_OBJREF, (int) $token, (int) $tok2); + } + // If we get to this point, that numeric value up + // there was just a numeric value. Push the extra + // tokens back into the stack and return the value. + array_push ($c->stack, $tok3); + } + } + + array_push ($c->stack, $tok2); + } + + return array (PDF_TYPE_NUMERIC, $token); + } else { + + // Just a token. Return it. + return array (PDF_TYPE_TOKEN, $token); + } + + } + } + + /** + * Resolve an object + * + * @param object $c pdf_context + * @param array $obj_spec The object-data + * @param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para + */ + function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) { + // Exit if we get invalid data + if (!is_array($obj_spec)) { + return false; + } + + if ($obj_spec[0] == PDF_TYPE_OBJREF) { + + // This is a reference, resolve it + if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) { + + // Save current file position + // This is needed if you want to resolve + // references while you're reading another object + // (e.g.: if you need to determine the length + // of a stream) + + $old_pos = ftell($c->file); + + // Reposition the file pointer and + // load the object header. + + $c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]); + + $header = $this->pdf_read_value($c,null,true); + + if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) { + // mPDF 4.0 + $this->success = false; + $this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location"); + return false; + } + + // If we're being asked to store all the information + // about the object, we add the object ID and generation + // number for later use + $this->actual_obj =& $result; + if ($encapsulate) { + $result = array ( + PDF_TYPE_OBJECT, + 'obj' => $obj_spec[1], + 'gen' => $obj_spec[2] + ); + } else { + $result = array(); + } + + // Now simply read the object data until + // we encounter an end-of-object marker + while(1) { + $value = $this->pdf_read_value($c); + if ($value === false || count($result) > 4) { + // in this case the parser coudn't find an endobj so we break here + break; + } + + if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') { + break; + } + + $result[] = $value; + } + + $c->reset($old_pos); + + if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) { + $result[0] = PDF_TYPE_STREAM; + } + + return $result; + } + } else { + return $obj_spec; + } + } + + + + /** + * Reads a token from the file + * + * @param object $c pdf_context + * @return mixed + */ + function pdf_read_token(&$c) + { + // If there is a token available + // on the stack, pop it out and + // return it. + + if (count($c->stack)) { + return array_pop($c->stack); + } + + // Strip away any whitespace + + do { + if (!$c->ensure_content()) { + return false; + } + $c->offset += _strspn($c->buffer, " \n\r\t", $c->offset); + } while ($c->offset >= $c->length - 1); + + // Get the first character in the stream + + $char = $c->buffer[$c->offset++]; + + switch ($char) { + + case '[' : + case ']' : + case '(' : + case ')' : + + // This is either an array or literal string + // delimiter, Return it + + return $char; + + case '<' : + case '>' : + + // This could either be a hex string or + // dictionary delimiter. Determine the + // appropriate case and return the token + + if ($c->buffer[$c->offset] == $char) { + if (!$c->ensure_content()) { + return false; + } + $c->offset++; + return $char . $char; + } else { + return $char; + } + + default : + + // This is "another" type of token (probably + // a dictionary entry or a numeric value) + // Find the end and return it. + + if (!$c->ensure_content()) { + return false; + } + + while(1) { + + // Determine the length of the token + + $pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset); + if ($c->offset + $pos <= $c->length - 1) { + break; + } else { + // If the script reaches this point, + // the token may span beyond the end + // of the current buffer. Therefore, + // we increase the size of the buffer + // and try again--just to be safe. + + $c->increase_length(); + } + } + + $result = substr($c->buffer, $c->offset - 1, $pos + 1); + + $c->offset += $pos; + return $result; + } + } + + +} + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt b/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt new file mode 100644 index 000000000..7ba83e4a6 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt @@ -0,0 +1,5 @@ +Alternative sources of Hyphenation programs or TEX files: + +OpenOffice: http://wiki.services.openoffice.org/wiki/Dictionaries + +Hyphenator4PHP- alternative PHP hyphenator scripts: http://apps.sourceforge.net/trac/hyphenator4php/ \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/de.php b/inc/3rdparty/libraries/mpdf/patterns/de.php new file mode 100644 index 000000000..21643404e --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/de.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt b/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt new file mode 100644 index 000000000..e9a1bceac --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt @@ -0,0 +1 @@ +dis/es/tab/lish/men/tar/i/an/ism diff --git a/inc/3rdparty/libraries/mpdf/patterns/en.php b/inc/3rdparty/libraries/mpdf/patterns/en.php new file mode 100644 index 000000000..a02b63fd0 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/en.php @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/es.php b/inc/3rdparty/libraries/mpdf/patterns/es.php new file mode 100644 index 000000000..da8f75644 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/es.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/fi.php b/inc/3rdparty/libraries/mpdf/patterns/fi.php new file mode 100644 index 000000000..5be3124bb --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/fi.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/fr.php b/inc/3rdparty/libraries/mpdf/patterns/fr.php new file mode 100644 index 000000000..335f85bcd --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/fr.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/it.php b/inc/3rdparty/libraries/mpdf/patterns/it.php new file mode 100644 index 000000000..bdda023cf --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/it.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/nl.php b/inc/3rdparty/libraries/mpdf/patterns/nl.php new file mode 100644 index 000000000..06a342ded --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/nl.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/pl.php b/inc/3rdparty/libraries/mpdf/patterns/pl.php new file mode 100644 index 000000000..f53110587 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/pl.php @@ -0,0 +1,9 @@ + diff --git a/inc/3rdparty/libraries/mpdf/patterns/ru.php b/inc/3rdparty/libraries/mpdf/patterns/ru.php new file mode 100644 index 000000000..6202773d4 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/ru.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/sv.php b/inc/3rdparty/libraries/mpdf/patterns/sv.php new file mode 100644 index 000000000..b01ce72d9 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/patterns/sv.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/progbar.css b/inc/3rdparty/libraries/mpdf/progbar.css new file mode 100644 index 000000000..78afc319c --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/progbar.css @@ -0,0 +1,66 @@ +body { + margin : 0 auto; + width:100%; + font-family: "Verdana"; + color: #40454b; + font-size: 12px; + text-align:center; +} +.main { + width:540px; + margin: 0 auto; + text-align:left; +} +.heading { + font-size:14px; + font-weight:bold; + color:#CC0000; + padding:5px; + margin-left:10px; + border-bottom:solid; + border-bottom-width:1px; + border-bottom-color:#333333; + /* Use this to suppress the horizontal line under the heading */ + /* border-bottom: 0px solid #000000; */ +} +table { + font-family: "Verdana"; + color: #40454b; + font-size: 12px; +} +.demo { + margin : 0 auto; + width:100%; + margin:20px; + /* Use this to suppress all the bars and text */ + /* display: none; */ +} +td { + vertical-align: top; + padding: 0 0.5em 0 0; +} +.code { + font-family: "Courier New", Courier, monospace; + font-size: 10px; +} +.code2 { + font-family: "Courier New", Courier, monospace; + font-size: 11px; font-weight: bold; color: red; +} +.barheading { + color:#006600; + font-weight:bold; +} +.progressBar { + border: 1px solid #000000; + background-color: #EEEEEE; + width: 200px; + font-size: 6px; +} +.innerBar { + background-color:#00CC00; + width: 0%; +} +#box3 { + font-weight: bold; +} diff --git a/inc/3rdparty/libraries/mpdf/tmp/dummy.txt b/inc/3rdparty/libraries/mpdf/tmp/dummy.txt new file mode 100644 index 000000000..41234966d --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/tmp/dummy.txt @@ -0,0 +1,2 @@ +This is just a placeholder file so that the folder is created on install. +It can be deleted once installed. \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt b/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt new file mode 100644 index 000000000..41234966d --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt @@ -0,0 +1,2 @@ +This is just a placeholder file so that the folder is created on install. +It can be deleted once installed. \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7b29accc1319396989cd62666c21943e311b489e GIT binary patch literal 584396 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 vE~I_h^)&i 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

      1uY>F`d+<#TZMA+WiEjskxM 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 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b5440d95e79b7ae5ef1d5b665c40bc023a61d3a4 GIT binary patch literal 524624 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

    3. UdO1)Y+)>Q6Z1! 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

      @*xmTw_#oVzDfrK( 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

      x>GtP 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
      o&H3#}_eK?iryfFMo%+z$ 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Ĉlt#k5BcyC`=6Tkq;&x?RETdawp4h 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 F{vQOtTEPGS literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4bb3ae18f5f77c314f4858e81c141b4f0b22d81b GIT binary patch literal 493756 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

      5(C- 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

      o~-e(<{@`0|M;XgO(H* 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

      NMIANqrh8GnS;az2NjzMb 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 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1f680bd8de1e2c48aa177cd4cdb683473cf85982 GIT binary patch literal 489032 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

      *aZa&KTbLcZT~ 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

      3#*EWFuYx#U$J1xdHYS4s!WW{K(Pzw4R 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%0Aeq!Mm;ze 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 G$NXQT<$L)6 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..98bb6f62e21a97a4719c3b6689ed9b4507580c6a GIT binary patch literal 302868 zcmeFacYIXE_dh%{ckbPqE$MYjHkCjU0s(@7EQoX=LO?npgb;cNEdlAEf+E-u5djea z5fu^nAo8JT#0J=~qtpb&7!?62*}Kns?uHorl;`*Ty`J*N^JKYaXXoCXa?Y7Er_Dkr zAtV@p6Ia)+1$W;YQ

      PnHfTx^gHdYz(qwhVHNG16qa+-s-4f3Ka! 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 YjpsSaN+ts?8ZS)iXL$WWQ<%smzi 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

      }1 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 AZA5@Nd<{c5IG;*C(-mQI*%0hu{*3hv|u$js) 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

      Nz=FzljA*=EeXpvz9=oV05h?JYHic1uq_f@ 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 UmE(9oBhQdJJ`kYd8$+& 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%0DHOKUtV|vXoz2=x+b4;%}rq>+Pdc^daV|vXo zz2=x+b4+Uz(`%0DHOKUtV_KP*-f~PU6VuAX^qOOO%`v^^m{upI*BsMpj?Jo9Ha4qX z$T{w2)eAJooz^O*wTjK^0IqYq&FTPXW4&Tpub9>=Ht!$dy0P9dR|{gU7Q|dFh`Cx2 zb9Er*>Of5E7t{L1w0<$IUrehPb5$Vbsz6LD7}E;Iw1P3MU`#6*(+b916^OYi5YsBg zw2CpUVoa+Tb5$Vbsz6LD8PiI}Tm^`^3J}vS#*F@BM*lJGV_dV3jQ(Rr|1qQg*gU<+ z#^&h-UPMZsnjlZS5ah}DAy1+`s12ERzf~-iu;0j9J3_QCVlG zG^}4+t>6jwFiRU_gsW_%F-D-9(#1`^cy0zRre0%ia3yg@@tzg$FwQ?{cFUL((Cn6h zb-aH?aT!4tb!(g1FN9P-@qzp@;9&wn*0r%;{7tJg@IGh91jDhc<-!Xa&H+=euwa8 zceOCO*+{wBw+Bn31rii-bE7kYFB0HUXQBlL@K6IK+}v#U;Wbn{8XGOM1Z85N4kf7* z2I}yx8{1}}4m8_lpboTQoTW-}21=uS>FP#ox`Bg=VQTyeKWqF7{o=Va5k7|=Ob`piy2xBKfbC9V#St?JK%9Ew? zWT`w^Do?g0oPzg8M@!gSXtY?xMp}lQF`ItYm`&tnUS*Bh1WnyAW)n1JVaz6I%EFjU zKWoe;a>~M(P0*BuF`J+%3u8V(b1aPc1kJH9<`XoW?WMGeY$vpq7Yq{EfKJ=*CVyjo zL6g5R!=TCEm|@W5Z_F@g@;7D}H2KpE!yc!BirNAejHQB^oK)O|mu~Pgn9}xhp;sIl zscr^}dWe;=J~CW&@dl3G^sdgljH3^erUNg%%2+R81HY5eh|8CPksIE=2~~YyO??4; zMoX3Tz$`PszKK_H(R2hFY%0mN)?>e*kuo+DDi0S1>u@ljf0cGf z^iNFEJS>mam#`loj5~JqDGw_&2EP$Xnq;C--}m!ry~B_G?ueP+K25n#Q|_C%()UeV ziJa{+aV6*$w}LJC1`DI6W*U0m#E-sj;z#6WApI~*!++=>9osH1x&S_10H3DcH<2Xn zqy$VP37TRw&jCOi74l7F>H8+KL~cyBZz4<3#$@}n06r~%PYdAF0{FB5zF8;4edKS} z2|<&;StkS?Pb!{1R@#6aoQ8WTMH6-UzKJ@Ko9XJCC=;}SG2cX)pjoGhCPA}LbbEZd zJ-&%1ecwcr$k`{lK|b9epKg#(H^`?OV+xoHMhE8Q>Y-Bjc^OOB2veG6C;>W1J{=^V4w7%;OW&tM#Mf~_ z`*r$9HiN~H!Lf>|YJTGsb82X8uv!`!+|1MDK(omgaZv-ulV+1I;^Mq96?_rb_h~kL zm`%L2I6gyZ5`03uPpI_?wLYQNC)D!AQ%p6EDWR4xp!$3P6**@Jq1GqV`h;4aQ0o(F z`2s5LGxY|HD1wHp!cLjA*8$^+fbj%hIQ99$DRLvFfN?~?ID)U3;<_=Ye8m*BkrG}p zos7tVNQ3cDWX=~&eZFXl-1Lbrnu0d)%@<2S8#LjIq@c|_;ESZ7<2nstz}&&=$o9h? zax-giKHnHcZj1rn7zJ%cns0Xce4`UN`%En38=W{`E6+X?%lJm89}v?5VjAD<#CbCd z10qd1)@+u6bj557p}AaM5TbJ6cCjHqEbK<;+w266|9#i6cB|1qEJ8-;+w80 z&(S8z1PrzU23rAxt$@K)K&%Le6#=m#Fl$RNO&mYY?0^n&z?mJ;Ar3gR13JV39pZov zaX^PSphFzcAr8!%ksmOG3g`<5^o0ZZ!U28ZfWB}*UpSyM7?`ybm`04tNY7xocYQK@ za_oPO{m-HQ@VqBnH}cIf*v!pqQWLKl?Z{C&IY?)4?ZoRw+Bt@rIUww4)m$H};ulkW zMV0(@`_`LWdkQ%QoH@!k$KWK#;3UW3BuA9ZF*wO_EOH!+9LFNZvB=Gj)7U6@5bF@- zP0nICM^vU92P4P9$Z;@o9E=DB*%~>$B-n)kR*qYB)NZZt!WQKk{s<%jv+~oAxW-vzGKWFi4L#V-7Iq&;6Is#{=4c6Xw1hcY z!W@H+94%pvmN3VlBgdd4M@yKaCCo*+I=CCdhNvA4kz?GEW89Hr+>vA4kz?GEW89Hr+>vA4kz?GEW89H5 zFE9IzG}?_cNsYn$bOqjYvIjG~_YK<#Ss63Fdt(qgYw^4LLE~yRhFN<8VUWI&7O9cT zY>o7>8^b158Np0XgxF}Fk-$0iZEUmM!;_&JC}R6xx35&d>QW!i8q?a?IDgX6SVadK zI_#M;;kdTc*GTKpNbAu^>(NN-(L_CNq8>L<3z|5TO&rSk9K!h&>3oW`nM;x_=E()x2x|KdP-zS0FXJ%Z)rB=QNg7c>Rk$E!M++;j7MgB(2ys7VRMsN5k{Vb*2ojS$P-;bp3HRQ318$%tb&~NnehQWs9xx|uNLWFU)8m4-`hg9>WwQVuf-k($u{fyXTkNbX;{n7&gm^wiiT)t zoJcfHBw8jCu_3UQIE-(rVx6%(%nHKfikGadV>be`$c}?K8%uq~DYescDww8&a$UK) zGiH|gWzU?-=AoYQV8z9T40GV(V%ynA#MXt?o3_at9+lTWDzAH8Ui-Sd=ITZ2nn&f; zi{w?lyz)kQg)cAflb78nFTG@%x^%s~WSYEan!IqEyx{!F>Vnth`IF^&=U$=C+a}L@ z+&*{f8g=d!^4zWV)^iS4Ti3{~3+;0bmS_9&tZnklUF8{D7O69~$uk~#^E(UQw6|<- zR$CUy&CPPtMqh1OFE{#f!!|j#O;%r*mDlCyHhKCka^xUco*@Uf$@S|dt96rQX{s!3 zwFmllQv-X+fvtA`ZnA%&y>^={Zj*frrmDWPWN*)O)w`SQDNI#8(`8|*JnhJR)oH#w z^^~2|se8y%c9JLK#L0c~qvZeV^)v`@CFFaW_KPsEI+6#|9NG&{B zE?j6IyIvjx;+RL}(Fe(+P}@;`@<>#F$=o&>^vP_)bd}vE z8>Y*-+vJ=hCaF17}~S!!}`?WH_F5Mr8EV=(QnVBK?@#Wro?XLE|QSPM>a<8rSo|ELB3++AjlQVXoqGt5T z-KWUicCAyp`Eu7fIepp;HGPSkCU#NNX2@N34%IHl$els$9LlLnYP*O{LWGZp@a|%UIgMEJUD;kgs9u`gwSNPMh_V{XmH9|?`eDO_6vO9Z5A4|{kb&4oeRh3*je+Ju5eXa%J8`tA=ZQQ%1eqvZg*Qv zxX->J#5Z()@rs2Zp9m7+X*#ZVFDRa0`pJUiY<$im#8bAge96*?KlS{9@GCrw#()D)#vcx&-~|n#f>zMtOeg4Z z9wJ2IJW6wvP|X{fV}#Qj*IdRu1?3lkyK6}wGJ^0WD;Lirwt2 zTX8MBo}IC0ww>eG^NSbHC2F*>c6L|x9YqVJAJ9{TqkkfL5=9n}rDPR(glr^FlI>&{ zd6DcV2gwm~jGQFzk`Krq$yM@a@&#!kx5y9VM

      !YN?5a(P$b&6KE>!O0%h-4yGgM z7+OH5(iwCPT}YSF)$~!iiEgD&(^|Th*3m;4a|!E%I8504(0Q@aK169xlWn-BLOGwR zv=3Cy)0OsR%6XB}K3F-Qp_~u@xAxA;^~?Y5n(4~*LzVW9{pqQ+&yh^%+gRnihjLBF z_P}og{qNXbrd&U=!}YV3`xGnffpK*_@7U)d$~7spgH9OH4_WE|6RJ`3*)@V*qsDjbjC*ofmv9NR(h!vek$Rtw92 z_4NvVO@+YgBkW4isI+VsiqO76Sc}&umDfjbiO$Z$aZ1Crg9sE3Um=_b8$l-Ci;>&V;@ZZde3ay}*(-wqy|GZxp3Ra)9-0=ol; zyWn&A&$<74y%R(Yaj4}#J+`;!Q!S`;# zS(S}n7>GdM$J{zkKg72JbyE+GrExfyB*qKM&tT{326j%N0dQY7A2}isJ)8d|SMvs5 zN3ie7Fh*_q6cM2>GsNdeH|k{Xt%LYaNf~Fsz;u#^hc4lSCc?Gmk(Kw+UpEetS2l<} z$=%u_*<>57Rn4bg6%o4U#;5FC{9z+yM>MX&AL&VaVrS7rkQNd`cj1Eyx`2?i^gVi= zenr2d_vlZYi}P^(xIx@V?oI9tcb>b*ea!tg_c!h~_b5tazg3$F-&5Z)3Rgb##|gr7vS=rBBLc-*kb@Pwh-@T_5v;bp@shF1;0 zHN0s!X}D-=c5n`j!{)F%T#i)7BuA-Zg`?83!ExO2j??N)agKDBI9EEKb3X5U$@!Y| z_s%z+Z#&<2UUXh}-gN%MdDr=qE7aw14RVciO>j+gO>#|ft#KW7HMl-@eeU|sb;l*U zweC>2*B$T9a%a2yxQDr?xfi*&x}SEx;o&@@$LO(pB0UaIj3?F;?@98cdZxvM#290& zF`+T;n3R~_F|%W~#B7gwDdt?v#hAaveCL(Cq236u$D80y@@9Jbcn5lic}IHly!qbA z-Xd?QceZz-ca?XI_c8Al?=#-R-b=CGcoN?$en|Yx_;TMl-xt2WCH^Dvey6mg$mAKx z3zL^8uS#B*8lD=Ln)+(ktFBjluU6kXd!K7nbQzpcgEL_cha=gM?wIaau5jjg$D2;#40onG z^PRJttHGH)&O^>4&STD#&U4NWoquwE;rzyV+xer5xWZj-*HBkpkTcUie|cqe$LdP}^symP%vz?nz9 zo4}dpy?>1L#*z5$@qOcq;%EELf-~QMGe3hf7I0>Maz*mW+7w*Z~a~C;nqW~2V3{I?rVLi^@Y~wTc2xvwsmLg_SUVf zkG8IBo!eT{I=Xda>+se=tpi&JwDxc9*P7AVxz*dMYNc|E{D0(s$^VqUlfRWel`q|$ zcX#gH*>`8%ExTKEciP>lcc%m|5`#S6EZeMr)I_~S(ubp3q ze69PMYx=h7R@0%T15I^Jdz*GQ)iyoXw6p2SrYD*wCx)5NBNrU^~soAR5+HjQb@YszgJ*)*alr)hB0pr!#$J)5$ddNgG;Ihzbk z`X*fyxq0;F>oI1T@lNA+jW-(qyYVlLe{TG=@mk|YjTaivH@@F^uCbxGn=ep;5#P!hY zw(Hiqkpz+me4Rv+NeW3NX(XL=CS6Dd=}Iz5HkeGw}`CbmU4?Z;9=^eUR+gAF5ozbqn=c8>&Pj(nVvvf9cf0($K-vy76=~P zdpADeD*P^ue1zt>agggxD!DQ|rIysv$H+CZ1mbm#YH{_KToUee6we2)7O#oBSU>T8 zP5d4d+mBX#Mrt?@Uqt4ROX4+BqwV%H3_K?{Oo4vtE(I`9`%KS)xl3NBpA;+#gKzq$EG| z(QQ(>kC410AuHYWt*vC zZEOJ^fPbtRPa8Ba1;YY2fvRDRd7RCXcM7w_{Ww>VNWWhAoJgNjwV2BZB(34f|eOCmJOM1LxVDsrMoM9RRq zTGU7yl_+Vl`Fv?C8Lbv1wTkE2msH|3TGQ3WI}N8T_8#UQok?0_^R0CBS|xs~GCerV z_8t>sXoik@t$c>c%kBJdeZjsiOD=TzP`uW%NPeD{w$#hY$mkgUAP;F%#^dlCL^@8u zGl|4WlAy*|{=$ZIr`N46>D261{_^V%Upb8XT;r110m}Rg$L5N73ioi4Jbz}CjubdF zqTOmNhzQ|SLa5p0bVNr*M%cqbZB~ofWHf~6bsDuQ$YrNn8}2q;{Rq9rh<6XIe8 zRkBVM)mf2+)2GegR*+u}T^erPxn;V2?%r*)1uX2rzBBhor+k-gnO)<3Rs#*Sg<*K9 z)R*O?cD!eHjqOV_RQRAmBk#loLK5XF#;@Nq^>E(uXY;wzp3_cG^NxOdR^gF7RC6VL zM%uXDL*4yqCyqY+x_tXjT5g0qXxq|J<1W%#_2!a6!|xxXDST?u(O&&Udd0hK&1+4n zfBZvog};`Nrk2OY)ID1NJ%mGq9V5aK=p!BMn-eyy2N~~Ab7nabVxo;vyk?3qW=hu7 zgej?$jZ^t4;n7h^;IpI&)e?<9PSaKE(j@7#O_&tT7_fYsjkO2k@a^08@X>VJjDe%c zg3;T;GL-RqV};5lHzuC?s6FmKf6dj;9yN0Ayb+^jSJiLyFG)@9a-wR} zF?pz0up~CyXXlQbH*e&~xmER5{)&{8&L=ij)ziMC=FA;Aa^9TWsyEY9)0Xz#aN;

      Z{5IYHWGsLFh*45?)6C)X<19Ac(VUztHC>Nj`j4Q8T+*vY22gl!jD+?2tN@B70y&7MDdc`V7|} zFt3_h`F_u7AIy61AMc-ZIPP8Qx4MV7)2b1RHYZQ3+Hz=pzwJZ#EiE7SzqsXq{I9a> zi-rvOUotiAvHD?WE0*u=(G9euoQXfkol^9TH+b=Z=nSdMKs$i zc5ghFX(Cp^a_hUEz4qn~r(CmSkw0#ELH@7p@_+4nn`UpNY1{-F3ij-jf8aBed%OKc zGD`~HTdN~HZr*SU;@Wn1Ya}&y<$M`omQWMncPcj@l_Sf|@((nbE1_xIY3ja{^4YEO zm6qSg|4{l)>bT)T66D5AM){LXAvz-HH7bD<)ckDGte>r=hGL6aujMt8nWsEQ^hQCa z(T7MD(^V+Izu;ipXRJ5fVJ!`;0iV-p2vx;F8H>IYnkAYu%yB}JTuaM($VZmQM|#jQ zxwZ$*TSD`M8}Gh1{eoOYS6-O@-n%6i=t{Zj0;4NX<04_Dumf}3=eLph8ahv$uj2Jw zh(L_$5Ur$VeQ55b7&PSs%z>+nhk7zSX6__?TOM#g9!O6LJLG`}*~vkA68F6zf646z zf)YulKSHr=CT7`8M9k*P$pVRru#^(0+ju&_w+GfskyU6qSS`A@IZ^)SbBAc!C3!tv z2RTTiH~2#CF=%PqagGQqYzesm|8bYAAEi?m2b#xeJuUaR$M)m;>6o~+=m$^I{GpIK z!lMs_&n62v01LvgUpJagvuPEuph5G=>?ZG}FE;mTrfISgpCqQ%{(@JLS(jg*P3UNW zqdd|YtOK`9Y#fkXjALSqon}xIpZ`wt!Bf(XpXTG~)1f=cAp<&i2WjM8e;BWEmRNix zQN@(HcSJY~!Fb zpish5{AC*f7y(15LqI%Okif$aQuHJa>e)Y_vC+Q1EYPXb4 z+agbUyZQ-5hAY9)kHHr$$@h2Cs5zBLIVy=@a5i5ea3$hs6)DkZBsBzv=d~)T##dUM z>FU)6(`jf`MYk#v(B%#TZA=t{VqotwF$Mrb%!s2 zERYf|?G~PWr$IpiJ<>%#CWEAuLLiBvEDhmRD5#w{hr57R@3->IMi7Mt}t> zs^<>5n-_R!mXC{gWbx#yYZDhpdC1$7^9&cz*7Ki1(x!|TWaWM zyZ?6Tob&y`=LWTGj1{>SiNDyKv0vUzXS@@z4Fc$%k3PG}9DjEpVO}kWZsO+Q0=TmU zmD^FG0?eFlFEMc?WVESN<#F2(lZdo(T8dX1Y1LXij0r%O4B&+|aStB0~vK zZ45#y^E4nfn7I!)#AYll;_i4_&JInRn0&Hnc2U7sHS^vYnwWoN>WMoqZOwfpN4$1W z-exj>_2%lokI&2VxGrXN`TOBVwkO16P#l?zG0jqRT_@7h@79#K_!4W_VpGTj{d7}F zLb0nf$qH<(C)Nnb8k5wHjxjTs)A1cVu+2Pz9cF5A~V>m~OGqH~i$K zbGM&cHTS7^sXjJ)Q_h+DSp(l%^!k~+fur7Eb>aG`fzxT{OF3J)F^g6;pIW(@>IL74 zIG_Bbe6wu!`}NCjk1a0x`=@oZZ2PC5x)hyq7_xK{e36*_5=D;ZcoAZgErJWY2s0v4 zNl-!Y2i=uBzfco5du?cb+7IMod@e5Fttn4!atlrs*5dch?cKxKx^foKTx&Sy8 zr9he;fK>8xd)`K0g0PBzA69{!AcT7K_1-B(8u3gSosEfQAp`xJUcAwDus;^q;xNCg6t z!MDeK0s#^RCUGG4#%^=}2B$y7^@llqxIa*h91(@(bQ$nOm_S&6dfjU8k2RCB4k@?c z$M9#4$y4j(smEz=@OCifauMXx0Z(?Fe<&;fN10`fik8A03?{fmkJIB4ot|t*BnT@- z7>UzVV$_#di=AWLZkHnx^rl3kF?k}K8cUeb$$5-1aA_M&pI|b=cU1)7_C5LPZPQuB z%qyIDAOwo#7QY1}ypZI+aKs+A-bM=Ztwd>xPDNWsE}A=T$ikA`v$JF8e^~n5nc_!h z=l3$+yU_U}-Bvs4(W#S$mUkaMW=Q{&J-WZVcIr#>#t$wVFaHpT<+Oe!zbBj$E1+Ba zq}-pG+PPDtKguo{^h8==CoA;kluj!;+dV5fXZQ2>jtbH9f*~>`Rd8y;ZBBb{n=ia~ z*M1N!=6OQbu$YD7{wOVS!?gz1su&x^l~4C;o~BQ8JNcc009e>&+@ZEbZ&q;nGIeCf zz?DG@3=o>o)Gf=7@7;u^$xWpZGUvD z{L{4j0?K{aW5s}!{#(b&U&yc2tX@Fl_q_duMni> zlDDgI?UTD}*2vdhkXz+HM?^m6a?(oL`#i1L_Sn`dN1P*3+tZ3jGJ=K-J7~!=e}4rY z5D@@Q#OxOZiNOVp$ZOR&sHo+&>`Q=2KnPU{T?qssvPhN^uGHv6hAtZvNR-wKYP!t^ z2T=p$A}AW{tpj}EGZ54AKvUe1pQeZR-K#tAZTYeOGcl$4Xa4ZdNpyo;i5X=_Uu)1; zH9Sf;sqp)WXtB7d=(f0ZRIe2+ZZkD$SX*`kDbZ?5ETd_Oc9n~|wLr&2)S0ajF3}=d zq74yY7U~9mXbhsb0ISn(DIl&L?l9?nSfTJi7>Af#faP(X4kjm&()n|LtbcD)O=ZEI zXJ0E{g9zJO7cSTDUb8_yBVU($apzmEAKpK=j4PA-Y+E-qziv-$?IoN2#npe8o7vo7 z0$XwtbJj(=_@i8_No8~iZ(41vw3g_L`BJybM2ry;MhWr428OGd9tc1OK+p6zCU#sq zIA8&@c0YuP9e*VMx09M$o?JYaaf2}Z*h=}4Gq2VAdn>WB^yS0~_L5L1^eF$W2e-V$MzR;|-&0>M~Ra}lb8@88ITIM7{1B-#y3y9g^# zClHWjzIOp%;c3Yq&sDoy7SG~Nd776qtT^~!%U1!Nj;bNyHu|F>WBtj9aTCP2i3a`A zu>NS;`Xj7TtAl-!SYMQQ_k+GLaQi=Y#Y@-m<(`(wAi3@`|?y1SNFr=&rkq z7k@DNw1f_(kMEiKnJgC#AyxfwqvaqqYEVDpM1u1vreHm`t(1yQ4gOlY;5Y^@@pLWuqNOTGXF~vY!E^4?E)5FR6$gj8$;b`RLcWhjK6is=dz#<%&>mmN=O7LD*Bv}4 ztXH1f`ZeTX6rO7)_s zc_(-CK+AjJ*(mT#i$02^yFcffk{Kp!+oAdH&U_zRfKo~T6a7JVqo z+!arAsdz0APiZ}ijCUZs*0=aU0)1q=ylO-aS{ zB^&V?fD$xofvYf1Wvq(6{N;=Vcn=OVh(dzEqiw(#p;}@i)QMClh0;hVQ4*(M1em}c z3Sn?S539d>Prlwt!bI^J(V_m^6UlUwx*4kJe&JJDM^k2 zzJfn*JO6G{@a)6)s>-Hqqq|RS#rqC<)~T9Je8mD;-ZXi8&vh#iK`bY&f%Ch8zM{** zQP5e93XWO+ZWd8vHBqBkv}&vf>Qa1!pG6QbvS!l~6T*k1Ef%X;&3qy)uvJ8ehFWb8 zS@b&{f`@GKw?n4D2S|DwXbNB@;z6W{BlG|M%GuSA%JXUcAO8d=>YKk+ToBV*F1@p7 z-psoC!#~M?ZDB+sgX1)f=`NxFeOC@sfurf zr!rU+2nAvGr;E@$fe3AYuECfg43S-hyyL?G+aI-`o_#=HN3_!)*X_yN+S-%9;6~JK zDm@@>>)5m9OAig0w#jpHGJWP@mS7Be(4FO(t*DcE&Oe5k87*v*0IMVjyiN?kRMv;+ z!>BzJ=g~CECWeIQvn4ouybxNVv6Y03)(L_+8sQC5i&qzilYGAcII*N& z3z!>wFMV}MPAvQU<@eTZ;?5Z6{9c|#SMHwPvRSk25VJ${oIz)Hx}0har_!2TE@!q@=X41)bhT|!c!`;=Ms}touGn0f;MBTwQOGYx zSqv&mOu~bh*+bYDBMxY@jtN0b?e0({Q~bSrNQC>iL~EigF*GqOiy)57X|*t?S}uY_ z&P-%fE97__qekHbxv?mKafm}kRZ}j0Q zuUwwKe&x&0%17ldXPuvsIQ{&>SN>SAp|pMn9Zt1*Z;1OY_UyHP-H?I=UzbRpE5oSZ=ow+DM^0)bA3+%>0S^3pO$p4Qx*hysl`~GV)}Lb*Emn(K zqt)p{3`R8+rPXRtiWV3G01(le09sK|CL-6HZAEekYZyu*O3ie%i$t4E08s1(Dpf?Z z3k)-zX5|`89!-saEbW{M*c^OhnmG72F@^>s8pB5*t^{YBoNs;o;Ci<8jD7w1ce<)-nhm6v!3F%s8Jx zWp4bZEuCd~$GKCY9kvZ#2;<=xJd@SB=*idq;kqb1QyZnx;+fhgoff8C6UDr2L4^oB z(%)*eii0Z+!w!Q6yN*7pc?ou%xhMe$Na4vaiypv$y_$Qq8*)a^2R#dzw+Ejw7gRbn z7bY9EE^SY-LW|Ux7HKfJKN?XNr3u&CbcrY&ir01Ly9rrhhPs<>urOF0pdO?vT$Zce3@9Ho~13-t>Tvn%hW416}rdOo3)SWcBr4zKCO#m=0Af+xeBPl%>TA`3hA(q zjdbNXnS0kIS0l81e=zTE{%_&r&q;h)b1k#|fTLm$&`1Z_8>&GJ0nrAPTF2fVV84z? zfPp_?zyN;NsS&yY7|=+%0Qw_py`Tk34o0YzH1Y$a^ME4%P9ZDncL2B0A3pek)_>h{ zhz>k2%hK1}HlUVUoUNsE^UvIjmfgG~z~A@K_krlUnw0r7AMT?X&EU;PIxL2d4#3kv48MfY6!em`RAPZtOuSz@Q<`iCvY1TXV%PooGwc7jT2Wy3G;2l-NHrr4$q#{F@?*drJ{8?4DuvS{f zttB(nJh%fu0fSwk%}>oW z?0GX<`*Wxb1P)F2hhnM%v;gp9y~t?H8+^~IDU|Fcv`ru@9kg*1V?)g6t3J)ljrB< zDbJ&4h1+}{DoJ_7k~H*DvL4O=%lii&cPpLb9MRy{at9+w`U>Dx>8 z(!JbXey^}szc=KS@VyaxBlkub>rh@=$JOz5LY=-Y#9(iPP!T7(G zS8m|P?gpczN)4FO#RqYzAm-o?4STili>A4grrg*tu`V~R|C8eu9PHJ-@8(TK zzaN|7OZ@UL&rsL&lIclF$FjRkoH*v=Sx;^2(--_%j(*+j$R8t53}UDa4B|B*IEe`7 zBJFq&6GKr`fRorb&TA2Ep|)(hMMJ8*nyScB??&sEP^&G>C|PWFDb!(;bPn+67Q9-_ z18_t^c>l(qfZQuKql4fFxCC|HL3#t?YG?7Owme0!dWAb&uralBx3bc4o6|dYpMP*k zy?muUs^2R!UVbBQP|k(b#oPHC6DAbiT=K{xg#{D7Uc6$XfgAACt?K;o|8=s4dgd)# zF@eb`tNAGt*1-P6qaq}RY>w7Wh@a@K3Wye4(d7;;tHo&-IV6!3d>9-E^YA=v zvo(u9C<%`)t-O%TRm}ci=8bPw%o%%r{)rn}ee-9MRJ)_#%3^Lul-IOkm%qvW1 z$U~9atVB(IDyj2N0z%?7qL^w-MW_$BT{Nb;oSfT%_sA$N0=nFont~6Bos#&3WOiM4 zw9)NI){xK%VG*Rt9Z_Y`Kx?}#TT`mjQlw}{vQbFY>r%bY*2qY}^=7uLv9Tebs7=>c zd>G)reQ*!tG;sFdHQ)vOLYJ@tD&PmOHW*9n`w*k;Ss7U8xgoW4*1{RJA1~&tneyHL zGiFat+^`q&p4lH4o_%;h?XkR}!!MVY?uv=3-&UAk_{E&%8|2@$F0UFU|MQ>GQOA-~ z_nxSjFzM6!Ez~+^;p*aX&oUi@HTS|$@H&!g_m2s>Jt~$v2)aE6(PRwHYop1C+02Jo z&}4>07_&nxtlmyr6}r*1#Xt=vBMCQ$Ag(N0Ow<*QcuQ1J-!d^!a8Oz=;2=i5|76hG zz#y){YzF*8*dmxpg{Pj;ULPW4pxBpk#wiolz3!>3r)l*|bAC5{ORbJO)-s$sE@+4N zMo&0#pruN(wd^mRzU@)>RK>O+#lzpicr~!@v;0{QYP~LmMS+pK=BSEgi?j7lY1Nxa zwZv`K)(8S429s>b5TXS@qI$Ou#Y2sNcZ}f}S-_64`mPR1i*`&K0GX_yT?tmBdWe?M zPfyYLj^+gpI{zj4ue7ESru0*g$Mc_~pCPb&K<#W1&b{d=gSJXdH}lo%t%e$l*}%Lg_zv))EP}}`7!k+DWK^=)?PVoQUfa09 zg!30Y7L{1G0r3%5&IOq2r9UA5A5HIFPyFx=+4Z++3+Qlk+s5Clx&P#~GrN~dzeUF> z*2f_3hJNcvr9WHkVTlP3eEGJBb|9eL?$a>P&R3Hy2x$kMnqLiRH?{>mg03I@gf^Ff zk@xlG80nPb%eXZ>)&@acPJy622y$uShQFyea;)z=8z?U>Vh|il`H#WZG=0kv6N%78^0@tq5%CSt*A}&omu; ze^eRO`P(Xn#(P}=H8yr}hyUW|n zGHmGXb&o~orSkuJiuJMe2hg?_IxdM^^_MCuEktLy7#bF87sJ9rmGu_LTCltd64Y8v ztQZ#)=M`gO;<7#Aq3{(+e5^+6v{WVX8)K_u!nCn5;r6&NjilG%D^E;RTxgh4OT3ax z8)u6lE^Syc({(6dZ}2v=ZM=N!@J z1BoXqNIV$}=7LDPyjHM!iMGnv0VaM=9G-8Ri_S$vsBi|oC#m;bG0olsQN zt8Y%59t3UwvmS&f1Qp@`qz9{iMGxA3O%KBQgBtBKup`XuI28jFdq@vjgH(X|e@G90 zUhn>OH7FDv2x>u&Q~!xTl8pD~D5F`Ion8Vjw;@!H~^Ndrs{ZWq{&Pojb4kx9I2B609u)$ z%KQXE`QHW}%wczM6qtK&{Wl=ZOTAwy+h0FsXwH>KXHg8+o!Z^jxDI4=d7x+2A z$CuvPN@Er-TQP22%}@8l%>@B3XVQdm|5#Z07_$$bL5IDEv6`9nRk5mFWMUECMYIO1 z#dxC*CrTY}wgebL%zTMqqo!H~4J8R?mBy^GsbS0-KY}(=0y-ES3kW~R%s)JlfFe?r z>JZGKAVclK-jwAd_WwP8ZvAKV2?MTG4Ox=FuS`z9`F_jiLeb|d*2b|FrGXliO!PI8 z{K?raa69aozsP2T#}sC>Cy^xT3-yKdAU)_X zGK>xk9T+x|Or#UJiHWnxY&x5pow$;$q$|0lp-aP7CbG4swOnnYJKBc*EW)DfKH?@m z>ZWO-X2B>O%R=#7?Vq zn?vkjkrCmcHnymcMfNB$aAtF)3AUF--I+1Eb*C5B&UBpQ!ATv&HVjb$h#}7YZ#LM< zliu{DXnE>#Ng7pl$#LV=7u1^N^0jE1)JJ?#ez&G&uQMa8f98(zWf23@xS|@`N0E^= ztv7}FLJ`KY%|AMXMT3w|;MIDBgRlmY4{eVN1u_bf_5rlc)|(l8MvSO5gjO3v5LmLC z^vDT|W@@wW?Dg4??b6VL3_QmT49^|+=5M%__xB!{Uc6(iZwi|W$H22w7^jj`;61>g zoJYx4V>L3z%1As|*3DwR)hvAj#VrsP@C(e*wpecvz6BH0Z82W&vDa(qy>l(Kw*i6& z@+a@_#q&@{Bzo~YJ^APVkWcWicr!Y~@(Jh%%O`j`x~^IfWA4N`8gNG766&qwt9CIsRF3hx!2jvig8_ zug;@n77(6q%PdSjVx;(OaJF^vcG5 z#iSi_3yodcG}W)i>)WV?@G!^nAsRLS0gI1mpR;%5X@BLq%AYrUMi&W1E!SJ#qbKEo zTt26lE9e&V{WI9V^XR)3d6B^e56c}Xkt7eSyv1WBSY!BD9!3+m_E>u zEPphVjasE<1IlI&CBL~XC!wSy0+RS^d4aZ!L|;DD)BGJ*;b?x#!<$<61H?6dzT*HN z7kE~^{JO9UzE)TAnm;NrA+u|$+Z7RR4>K9{8de@;BC#pR!)KbV!aE7%CZR+8u55Rv zFGZx9M5BrGg-NN2G;D47w#2o*Z4~K%Ow@rlH^X~Tz&`Wbl@n#I_&Z^u;od2!DZId; zSS2+zMOo`DhM7d{&I7)M7(|UxL{W7cpfUw=o)2CpGUo@O9%MU})xXMF2cM`f4fyl=vyzVR4J6xPG8i=(Rs3rdWb0xT!3IH&<0A>wF=4w8Q1aE0{ZxalJ!ho9WX zC{MN17lQInt#hYEGRi+Lzy6d$d7HItM0mgWf5l{k`+L;Pt8^=r@0>DzIHUaPt-cs1 z=1T#+g>?jMN5Oc%h3W(&F$nV_EM%T8nixW(P0bA$>(%C7SK0C`HbShs1Dx~4`vRyg zQ*j6FD9^>Xgq1lpxrK|ubR%bG(GwS8>njN$swrBeoP=JkhrW@TsvPk7J1hkJDk zbBWq4wsrsjoL{2k*)(LTAM06}-egfAr4B)*<|K_$i=ZN7k$O{OxtU6kP(Xw$5Y>Qx zjMX85nW7+&JI%@p(RSH?-~~gwcp0!}d4InDh0dsxynx*rIt!o5sFAFpr83s(aimgy zA8Xup!841+D*OzmT676Om=guf1ocF*N-tDJM1^lO>Pti7Tu$t@05rt%oHT?O!%0kx z&JqXApvZ|LB@K;T7$yp)1cDR<=JO$tmIYOZB0y#90p`kO0U|glwJOUwg}(02l|v8q z+mhqS+1xj)EbI73`>F>&KfZfeRP4l#X}y22nguS9E=Bo0f){$x9BS49^O>_% zVbr4CY*Xv$1XRaVMHHL#B?eP8Hk1fs(2p4??5BdvL8#ftmR%~VJRcw=Wu4_MtU>wJ zP;+obfEfYc8wfbF;2bLRvof+Q3e>$A*KK9rEw%AUbaAv?UC4#In=?G$7M_cIKP`hw zjlCWfkJTro96bM7jhu!xmse_TQ{fKNBOJL%-V;U${b7gG$QpltH_*2sAtfZ-8Kvo@ zPw{y|jRLRvz-5m*&wr2@l9KL9jCF_DEe4M-Rx*ZKIyuAjfmOY?rQ3>W_^C#Y?@&zPdxb z))Y=!9bQ*h=X5w-2d37gPU@0gl)is*9k#^_e9lOn$~{(CSy?!F&04y&Zc1I}Dd}A% zrPNJ*mF@oVa$#M@l+-R$QtGB1z-L8Qf)Ygd5pyh@?DJ1CiRLh~5kNVNy_v8GU2Q-K zm>RVXYGjGkyd4J;M`3C;pN)irK#tfYi|&X`V+t9~h1-FujhMF@vswxfk(7uqu*LQw zZ^rczpa)j`f>2B?2C*kw*~yM}^%#gAKA4#u;Q$1~gDHVnZI%x*p&$U3q=%dcdU^Tu z_ovHC;EhOG@`bQ_7cbqQ7e1EfHHXO`EYQ-;oWA7_r!V(DTh4WEnZ@mDxm5nFmvFEx z`>+?nF4z_oiS~zxmjrT&qAEf{Z3J6>-@aIi*%@oV)*Lz{?rPC;_nHZNWpw1ojMgk6 zMf@7}zCYHm42q3&_3za)GhQ!Q;*xa&jV_3K*0n1fOWmFoc6BKZ9}pXtsnc78n9yEv z@ySA3|DG}MNsX$ww3xWi?s3MnzHx~Ipe?W<9V+8Clm=5|jC$-~Hm0F%u`lS!nxTCk z_7?+75LwN0`wG)EPT6y!edmcl_9`t9`Lqiuo*|pFXFk5sWgfqJ+~bQA6aV%8;OEAA zhCkJN;fCWO!`I|JvMe#~`x8TU$PM`gb9dy889#2VczAz&!t|lJg*JW9@fCwgk7jxc zvtDR$I9`hNO&v9TwI*X+`LLoxedF>npLs9({<)0utjvW|GrBI!$|xGkXh)BVgM}3A zt;%??zz-c)hpH6RBe7LJs7;_eIPn*h(gbG_Gdf^Qy5H>Q{JdZCtMa%!6dB~fYoa+v zLRkD#jpbL^5QeB*Pb-xKC^OLhT04uL$FT_d=NEhz=wZA_rVl^-knxnqu?BnUjDr8z z8T)??^!q|yHfUcqzY_mKANn#8UbgRxe4)?oF15o|DYg)jmYmSt=1%C|X<%BDeAXo2 z>|(l&uHLzYdI9iIZn^ylmRW`>rV&=0t%Xs{B?~pfhxfGwb+GLU`%VdF!H^=X7ubje z7J+dxz&|XoF3K*?uBdwQ(e5+5bY0y0=%vel=)JgM&Ko&7BS+?pcw_dQH%5%e8IhCo z#@uy(E-aipY0{)WuU+$JyiG1F{IifYFFNX(M;_lA5jo2q_Q9doJ`8(lcur3JoLR?n zMzBBleSJ>O@R@~$ll~I;8N0!nwSSpZh%5qVbAw(J^spCNM7-0m(ycE_pX>&Sq@GMB z$L-!XW9nVf@#GVFyZM;wczkiXJ~c%rBu1wtr`y6&8csxm-OESE*!bvfiF`L3+kD|F zgS8NEMVf;;0_3~X&~WRP32F1d(l@1!w0%8o$0~?!J!#kWgcO6NfznYJ5bm?5w+!o5 z{%n-Adwfk;=F{WnKXT*!!;~*58nkJsJ!gBrr?-i~^84*AlZCvz@mc*hu6Fd6{R{gJ zTv7Jq9!?b%GNix9yDmC<%{qHVOI;=A`*5t+93yz)bBC~cU=61e&Zw!06Op?6sXRo}*)P5p(KbC)#?;fH1#?XE3 zr=UHA*)}7ZNIuk*Vu?)A^2tLIyq3hC3Eoa=m?Jk4Xk+Ucnf8bER4@@{3-a#YV(NTy zn{oO9Y{pJH%uRt2Xj|&$qF&5~B&L|{-cZaLm>h)JC^@Vx4wNc>G)rpI5U53 zih(cn;&kj$a}TpB%&*}-dU$6QlvP27={0V=qvfD@?`iObqe@+?@ilf54Qmn&`6wN65V2H> zTAkhe4U91ywGNs19DZ36NtpdIt3S3|u#HE!Xdst4!)2rHGIzyN9AOXV*w!C}H-_`- zoKS{2F!cgEe?XKNIT{sv8USk#gbRYzmRw-8?#smn^V)4{1Xk!4-C}R~IP@TvF%9pV zv1)91{+i5Xo8${N-mrMVlTj_RGkV7*u5(0{Pu=n_BWOjbi>u~8MgJ4XP=6<4y&S5& ztog5y%b}9%virZHFH2Xv#esc2g4=rJ@DVv3xAh3jh(@;f?_9@SJ$_-)0fc{TR}Wqo zI_mQ8`mgI5K44atg^!M#I5c!<@v`ybJC*hd8?q{E5yDDcplI#c%msuGq~g_i!&I zj#P!%OFVhiKUs;z21@i0E{aEiV{j25Og5|S7P0uOt+YGb7)m2t(Q#0#p@_$Zmc&G} zkSy5>H!~vKVhmwXS&bo%xC~gRNl?er2(+Xal3;cTUe>KZ#3UFkX?Mkg`G{bgHh?;r zC@2wHWT^weXl9M!eziwy1BN&=V2*hoO?hjRB+W0|yx+6#!~vd<2-jfMdcttefZWV2 z(ZRn{85Y-9fIpd7mXxhYj~ao({8*8#ZRd*s(1anY@rStv!VbVDS(# z)1R(|Nl_M^LE5n*j;C0nk*&tg1EVF*pwdZL-=)UlDy3bNSlI*0T7j^c4P|f;|G=n* zE_Xg^&%XrLRIzncI0Cwq73AZu;%5@>2Hh#61SRbq`AYTv-+x34#cMy6Nv@y1NiAZ$Za>ouGx1>%$UU3+BKeZCi~BJY zl`g^m{~&R{QSLn%bG}x*0bEhwPi6ZFVfQd94QHhvDsoxFUluf1xXWS@c1lWiT*pYmAi zn7Gu}lC&U*ZxS(g&C1RNS$>E6r1M1RadIr`xTZM9ZE=O`J*9QzAb?n80BmIYuqWQB|{OQ@*D?V*Gh@F?9kH-Lq6n4ZRDsomQbi^SQr^ZS(WyUs>0^fcwv+0QDfIdgdFmK>YWpen;Y>r#^?a$) zGUI@*4Zan-cm zv=%hJKGH6AxeNcz?QytnfRP)=fKhvRogKBDf z`#T-lN2o@%x4+HW2_Jm!e8fZyp!C!J(RwWXii(ahh|y6_91bx$I?62?u|O#Ht@SA_VrJg z;O{%}ZMJvA`HYM`OBTPBH@G&ig@aVscjAP8eG3Y1V=IRu@7zI)UwUcr=ymR&cPg7Y zuzA#4j+_?Tg94lWkj?%)o-H2Y*qS310vVEsg&-k<5hF7i%mT}E2rSPbmhid~vx#C& zgQ~>*D!(d3qwK93421|9$f2kLHi#l23MIh~Wf`{} zyIhG;9{KQin&FWz&Y?3rEq~3C_a3R|PEN+oR+&57SNzj;@_Kw|ZbpRy=Gzjvg6-)5 z{$rmgrfp|n*l1VwC{W}pAt-l6Oz!@z{S@ig&g3p|{h431Gx-X%za4Dv0lc_Nxj+6# z4n?keDEEK3{S@-&?74wo3(>)EN;p6gD|2Jd#=ByPQ;2nt%%ip zMlmuf(jZ1fMP^5ZY}RQ?OxPE~p^ISK;35YS2v-tSgvljESY0&I9V~}rQmV)(!g>H+ zzce3=D*?{5ub{;$MaCieV7myW4y+HhjF?1q4*A~Phc=Gbyw0({vVHFeIq8{}FCT0l z!JT~u+ch)(1lA-g^SQG^zjv@7A)}MB-dCY(mmpn}ezpA+>JuJZ&*&Ps{>(4hnZ5|L zzw?WBM(;rT+pHZJWhXf-^c3=;FH-%{TA(#%^4aPwJ`nz8$$yQ6wWja@lq4E^?}7xS zRYS8h)ULq}N^~ckD(_oLr_yOl<$ZMWQu$?hKaHc4>C_5*W-s#ou#gC5Uu>r+GoO`_z?a0DOEQXMOM4{tNa&Pe&x&#?S7>}G z_HLT)nh2*oBBh67sR0ieOafA9tC<5-QfhHdD*y_5s{PCKxIjEc*-_D_2^OrdIJ`Yf zS%=xaxF8U;4OV~Kv+T6LZEF98FZD)^CdJbIGRLIui(cy0B^ybMSV#2iu?641IJ&Ca z)RN^l z?Tq(<_P2xWu;AiA<^H{t`zv!6wwkTyuEHGDV>kXSh!Ieeft7@XQd>w{p_rcPlrk|a zIulWX5GWGE-bW=Qq(l@((@+E!um%wudUBGUw?t@=#R+Shk%7o3JjpvsH1u>kpzD}E z3mT3fd=H>o)QQ=#>>J55;%VP2hYlWkfqE}w{PWUh@+tY7qS=4ne{S`obiTYpyvE75 zkGy(I{tmSkU)S%NIi1NLC0T4O0rH8N;f`u=!-mW65b~<{FboNu3a-@eO{wmPcpEpWTvlEipl+dDfJR);%K9-Alc~MdqJ5f0drD`!FxsMhs4~Gkj(|G;9pj`Z9nI~sTFZ7W`}Ak?3Jt6s zvdq*3rb%%vFkL0H=;g!)9E)E9IJbOc)XC7`UF+doy>yA`U0|cSoy?Q1lDEh=3 z5Em6^KwMO>&~E;^^i-F4SR7L9W&U|R?3c3|<;!$SgHlUVmi2L2>Pc1&>en0*RGpuf z4Sm&K?g?*qd>qK8m36w8e}JclCbUPY+}g{-Guzq_ozEx~G&x`}Xp|%|br}7b#}K(1 zeZZJlA`vW!3{iMb*16+ifK7E?1jevTpUg&%)XHRivVU?wR7zCpQ2kKB%_K0QRvLA%+JZJ+Wb$5b-g>gnG)ID zIuMzB?GQa@oL-~P?LD+wNODvv`u8rXb$24ysFTWZX|(_G`Q8zFD)gx-?l}DdF2dWw?mdf?icV3)$N!pRU_da z&pG1wnjzsgLo@V$ynWigw@pZ z;ynSSk86O3%qL)}bLdi=YGuKde;wd zU~vtA^I8dWJL8vNgyEt;YJGRcG&52a8-sWPctsS307I->fE(w>EJX)(N)ZGtj%jMh zO3(Rx^;_>|56u3$*(u7!P8AnSZ)k|~>T5N`*SlR7kRSH)oyj%(uR1FtpQG2GTuIw& zrp&l;Y3^_1>YEUn6Ijx#qP*n76J_PpPUTE57-uXdeF;geW@pKAa!NSuDd1-h+XX*k z9=FZUps>r?vv%0faF$ZL`RpI--*NU*JELv9KeLTkjL&dF8i(TqWTP_KX4qrv@i!~T zWQJ6ga9$=que6>ZLmepv=?_;X6UE*}jy_}@@E7P}a6`qq=$-JRU?$lgf5$(xmKA^` zD}NVn{;`*p3&V(!?Yrfh<*y@N$^Z{oU1~2wjGw!!Dmn-`x*oQn0rEgUHbhnu%mKty*}D|f4I-Vxop$5@D6oT_orOR~=~G;oC6#dsW75gFY> z5;7CJ*pc$W7M)TR_my|bT+;a?2;NOxYy3`=+vDj^)cpK4#D3!Rss8@UbJoYqFP1{$0|HiO zizmH3Xe<3qZE$Ai&tppYd6r4%+$NpRgfNvRX*Tk<11~>Wl8N)e}-3ld||n%ox$@tUoY!#WpmmB zp4LuygenOhNw4Pp4W|Af9DeW!#WzZ|<5-*5gtiz-11O_gsb$n)On<)Zc8s0p45o=XfvmUuJLFpW&G_{<$vw8J1mvFq4#;;=KBhjDNk2KvASb#82 z2yf>(#?n3Eqi3SKx&JF1kI@hJk96ce!Ewkvqh2JZw|G6&x*?Oh^%gz0b zXIMQ;tgBTvzy1DW@Z_R>qpW~LpdH^c-I1Fn__H|tC`yiX@myc2y*-S#vy02^TZ$gg ztyQe@EQ@wZFku(72Qo{O8=8pc#ZVz6^kV2z?a~_;R~WCaxOk&k+k7BQ2nkbMyLazi z%cB=qsYiK1OUu1`7#GiaL5@Lb5E;;dU?BL;4S{+;DY8GNknWIY&Fk?YJ8msinJ;`&Cpl9!w5k`3b_YzR_vH1BaEpU|cHyqh;2t z7J9leCb}VQTo%?S+4d?xvK@{3CbRU>Tjm$tiMFlrT*r#9uAy*1GtL*{tO2iCrI=5rBlV9LE{2t*>c{_ zeBT}Lv%4UTe~!(Iy~Oz95Abc;$oi%FS>!645|!mVy#&Q>1UOLf_ytq*L555e2&u`I zY8$8uH}~>{X3G3(w2; zf}K@n0V0c?`e#0J_`hUPljZ-Gq%0rVkz4)n4aDP(li=5^Wr_K97_zlze!XeYt# zuXc`){&=|%{Jc<3n^&GHIZ34DAmhdSvoipE|5&) zsdja7c9MIe1cJ!&!adb$I|L`gSleA9e$>Nhq?@U@owgkjG@|1CXUJ%jT9!>m(;C03uH%HOi91l!( z{zi^BgUD>06YTxKGsYK2C>c$g_BY-pz`LWS{=g^HDrNW-#PA8drT%EoV73XNwScvE z^v5_%z6@kNx%{`7^I10jT+V0F6Ev_YN*ezz+RyMiGn@`$zmXNdBY|htkPoy;@eBO2 zsHbJ6*bv16!LvC^BmS+(j%n)W}YMI@l3vu`kQ$U>;G4W-$rS3 zo-G&ivi|SzbCCM4X6>N!;LnN-&j0;nqf!%83Z0+MS>dO1z>mGc&rjFOX|#j7`{-^3 zTG?m^;)f?{OwT(Kyz(M+v-9zBR_G!AcH|vIA`O#!AUoI&FulXAWrY`mOvT$xj>m42 zm@66bdJ~mAUuSH&bv-Svgt+`H6zb@Rp9(aWW$+Q}x|c0imMzTDQORK3h;sk`l}xTPUtv&Ox;AT2Qx zX;0m(a#5dDX745Ds$&ewT!XHFTOjydhYgBbpqMe$T;&Jizx1E$W;Ly7o3C9+{dyy9XKM zpj4(M6^-|x34JPkoP%6c&Kdpsj_`I3a&}T@ift*WTb6__DjwQt=NypQxBtHF@y)q2 zUmG}Pe1BS!?VIR1Fn9iZJNH^nzM`^&0+Kiy?J{q+L3F{+M8KBdQ1KJ_>4}WC#O?s zoK9hU&?9C?Lr+GhOnNh~>1t(3H{{#B-NcGIb>zADCn zT44mp_AcLAlP<-wM(}DKsM@+lBU6?jM)2 z`m5Ym&2uPJx>NGWIvPHS*y!k=lP*o7f9iaUt!V;*En4wb%za*2r$kh)2()-JB8`r?8mwoPE9uR8JKU?H% zf4k<}=zyM@=nX}2)x9$D30d3NSIH+S=?L&r;w0dMM7v~P<2phc_Jhd?d&v{dSw6}lUKGOuh zMBgQN%=Dd&FVS~td`{n4e_G9I-kRYT8t?ujt(Q(_xvCxGH+Fy3Tl8nXU#UNjvp|2a zW%d)>y>)&~Ar2g#Q zOa1x1K@6fb=4Exz9Av2E&8;rUL`sab62dL2kx5m`q*7$4O9tpVYZ$WEAdv(uk!+~G z_?P*jtSmHOl{pim!<9u|;uQmfgEMmK>ZF>1f3DK5azEit3bgcvs4mq7#Vfpa;JUSS zlT%YrJW$e!A1&`%VUXF{nH=^G?x{6ySqQslEb0_ORYDAV6Bb5qL|W)|1RA;nt{Py* ztI|>rVO8mrjr-hOXK#%9`l_GTuK8={_!#KfM|2kv;szwT+HSYk-o#_05;Pq+PMyt8!WswFsAHQ>P;v5ra+_Dt+q z80c3v_S>0BetgfIQR`INE*3H^bLIk|5`Gx6x6kuqEJw01mgrbVa9~sHPTeq)W{e&Tqz^t`+H;TP0=`QUC zgv@xDC=9W3H&=F2!9;~>n%in094;;O@<~f;z5G3yk?Q9gv~?@}o2DP1MP6X<+$1Nh zUf+K}i^H2$doGQw5s!R9fL|DY9M&@t>#<{0jRVgHWtpnnlI`Y-WKv)Qf{cL<1|lvf zs#x4SY)D9OWK{FwAA27hb8&DOUh?^gBihb120Ox`9#u!6dY*RD>SC>9o$J++-J zZ|9ECu%gv$-r1N3juXrqjkr=znJgiStL-ubnlbERhpJ_p3JFXeoV2~{tgO9HpXFyu zj+F!tJ}`{VpEB%ALb>BHEc(v zdH-!%>@qeP)AlcVrjWLMGoFkh^7Pc;%zDfUUBSbr&$8jqe;FLK_F!d8PS4O#k|+d` zM90Q~OkJ3}v2U+?A6&lQ8@%El_T~)J9dd@Y2#sFaOnv8_QEB5<&Vf4AK)CTODKTbd z(P{L+w?v4?EwS0&U4L(+to>1H>Xvqy=Vyv*bR(Tl7t&1~x8vcJMEE9P`DUynbG|PV z-dVnWb(4JgzK5ZgFYT#%(}A4ExP7sPd;i{#9#P{et6s~`9RgBgYj`B;NqC&KG~vz7T@~h>b2Ws z&T*99EGh-*b-}wx31x*S8o_Ze*0c`TR`4_@vu5!h`KR=5+jO1q<~U=cPFPc7EY{)4 zkl)z4q0zv+b=87;XB0{Yq3%u#P)4^5MN7H?y$3;f@oT4|pNsxnnTv*@C zQK&(!-WnV<7BxM+u2)uWkBZ(3LtXBXa)S$~81B6R_dXT$2772pZ(JXzI7rav6o;EB zw^rVoM!)z^#z01ODheDO)t;aLzQrl=p31bRMx3SXy_1%l>o-0s_okL?Ys$(YPm+2v zk!c|uO7+oJo3l*akgJ9Qk0cg&mQm0LDM#U5SNAPfH zY)pc)(Ed|?G#yQA>|If6@RgfL#k+sAt&RSb=zi@z&m>_5O`%hN_yKc$DI7Om6GGee z(U0isD^?I@BfyzK2axZ3N-)q@(9w@X+dpp3vSrkTJlZ2t9D1 zZPvV`(dPF!$_-o4cD zDk=GmmYiKQpfucben9c|3G(f9kFW(57cyFmYH{+x$quTtfX3KHXDFQvUM3?Q#=g7Z z0~?XwPOxoD+pW8|WOh2iSc#%iNMd%}>5?5+{BEP^x=^Ps_FRnpCWNpjU}t1wo9=xe zS8CXe5iwIJ_=J1fkQtX_N%AgUL)*Z*Y?gD z?8AqEwF>(H`IH18>XjAVVNoj(?1Y_UWiMJzeBL}kBiWM8A8i*{Q{Y%bkO#Iw0kiSpCNjUP7BzD?aNtv9Anx45dJ@I_&*$7Q~ zeo^?@*0YiN%s~a=XZO>)`<=rkrDT^jW(>GObRuoD{m{{Ju(H5bzX z|0vKBR^#3o0K{TGqVLAakAN=4VC%`uuWmeef!_W4`mcf2)tkJ03wrbbN$Pl%$hVU$ z0sc9(P(B=X9!BGsuZdH1{KZuAOaGI_!pLsxD8Okgz$xAL}K#g{DWW9J1;!= z=*5k+=SDF~w_?TN)YN{PGpnrF#h%A>+30<>L=C-&2{v%G&bi9;P$7$4ObcFM4>TY1q{EP zs)(o_f%rK3$;C0tyz5U8uU@zN=f3BAqBRa>ts?32 z7^_>?$zFTdr*11}N3OFgdrF)@GTXgXl*9pW2n9iF_7oKR2P z&z>>bGo0eZ5BgVq!IGPcDuf}%ABlBF?xbG-+P*p4J?-_GSw#gA5$sNW1srT=`l;|GI|pJ1+(-s*VEVI+FijEo7^|@4 ziYmP}As%{=E9_Uo+oZeu#Mutrr<0)%)V@Adhc$;z_Z^`B_9Xo!ID|wVNe!02sZq$o z-J<%&ZhMq8HaKW&N%;}^p$|W@$n!K*Zx#5XVyKZpa2 zpNd{Ei+Q1hp?lWU%ieMeCM6HLyuyHLhF+c33}=tpU~-SlRqwlGDrm^wQIqjl07uLR zPHHj)fM0{P2=NOFO)0kBVl=m;v!hd%k z_O#dK4ftJIJ9IJrJEmb{S+X3=>!LVm-tAlw>WIh3jF!6Pw zTXOJVHa&LtEBYs~`RXnilzk9$!m1|^!kS^N&~X_MjF}N$K2I!z0c4=&*^B{!S1(<0 zhfucdD-1vG*2wsPK1WVKAd{y&`e1HyvS~nLllARoU(`4k$$-sBMzjCJIR3n9)uRn0cO zj_%;`U*epG$}1Vn9lktdG_t}vTwcTAR)WinqQSE__)N$il^gxw%n`CHbI9=8umZ1K z|C&p^lD1_uvl4q7h1cc=hXy-su=Rx{fSrLY#_TTP0Pu_juIL%QB|zDPicI>6?`Wv- z4W!C^x<~ZWwRO{w>LWVhN4_#beB5R{%%sX~WIvNC*?4S!XUa!$c?9EODARbrDvXyU zhU@5IlITl!4y9LxMXV|xai_m)$r@5++$0~>N)NTr4>unmo-Jf7)_$-33;73t&lg-1 z2L;N&%uBep98C#}GKQH+uG9J_9Pl1Im^3v`_V&!pd*+aioHzR7!B{Pg88>Zc-z2Y4 zx`%#4KcVfRT8TNWyOh zR87eS1z^M@@33({!N~2Qo?~jquNp`1YQ=YSMqlEiJM_%>T2B*HJHRnTPfl;E(0XhiyRK5DnFGMzM%F%(a_L27AXtsPg_M6GVUFS@QH_z#3NN^?V zNJ6z+H-^IW>P~Kt9nv~>Mh61Fb}sNq`p22@I5t(-aT*I1Q$pU%Go!JeecL}5KQZw- zeobRRgx@^Ty*mvVzFXW{3!5}>#8 zAOL3I5U%w;LBdby`fnWi;qin3+oHBD!l@`*?~rNoPj08pq8})252WWtPs$t?6-P_y z7i8VvF+l@@`aYm9K!Cz7G8^ag)DCcn>IKvmjNqS2@%Bg6_TLswn!Y=K+KZBp_ zX6+rZ_`E-ZpFpDNgkR#tmh%!gyRi?9wryniC~)|N9$nTu9`N%F)PJs*-B9y-K_g$l zKEH_j3ThGn^2Dqskj9vD3BnA-OK@D8HwIx~20RtKa#c>zRx)a{5wAwF$JE=V(g!QS^#C{XmEPbnK2ogJ zDOq|)tW^fTUp&@I*3WbvOs?;P{#Xy(E6nGObH_ORym^0VJ&ati^Wgc=Qh%0}jsDws zJI~kQ{a@wl$G7-6jGh=cJpTMVE||vQxe>g7e|{cMSoAOD^g-(Xc9;I0xe*&o?Qt0Y zJwAR=m+>FVdlR0p#}@#<)Svl!rT*serT%RE3=Yo*Q-5yj>Gx(+c=J6ko`7)0$ z#munrv2xsp3-3$&a1-!!#Zr_W~iyVCQ{{gL{2#z2_i_b`4Y#lRrOo!zT=)A*Co&SPMN)_B%lVrt)Q{7i~z zG4+Qw$JccR{aH*4i~`9Y5J}kO7Uib7`LZHOL~d_@I%aam4j0+PY6!(weLN2+mc>W^7Q=@dxyqof}M1r4WQw2DUaZ^ z?BDYUP6J{_8(1EJ*#1ZR1jqtv)GG{P5ugFC%#Q14P`W`3wgUVHrIkJbDdCXF;q%7J zB`hie@AJV`$ioc$M45HJCY|H_9d1^8YMu%0^Kf89xMun|9~YbOe#5HvCMU8s+3KU2kse|&^<|z7E6CdUggWZmK#N=&fG~z9;JwB=r zFI0X%k98rL{mCu+G4+4jli4!g_& zRC>obFxu+H^F{pm-GgI=2{!_Vr1rV@$Yqy zrkimTtA(8zcZIz%%jKf3H-$YyV7e;?_=g^IWw5A`2iE;&`8m#i-nIL4V|V)#(&tfn zM7ZztS_Vi&gzwNn1z~gc-`cMVuTNPL;NMfaB8?Gkg7CglNiPs~OBh(+GsleS5v+05 z^b^2!25?nF2UD`B;I43W++fpgK%RkCB2-wXu{*onO}S@WOGwhgf#Dn!ox6X%WN!MlW@B13-u+~DA#{QTU|iAgi_;^N<# z)hDZ)_e8JIx<0e=;^W?#nUrlislFpT!8pqlQ^ewNEW(W}A{H0{VsJh|Gv#Y>=GM^a z04KoXe*YMYPzjYKU`UW+W_L5#qF(&W45;zr|0|$8Vu;022+bgYEcmJIP+=KtP)?wZ zy%84$Klwyfo-4fg!NT7j0_h)t_(ogunF%Qu~ecXj=9#1q~`NdG; z5E0A$`@?b)dJHMqYj5w+cE`qk0E;IQ1kqoqr617u<{B>s2Vd&eo=zfPCRWVFuXgaP z$~-!#yItE{gLVsoi-h)*?Yk9L$VIneGNTRip@Do`fR(^wjs5}FbRn~62BL`^g*+Z^ zG)4JS4zUgKk0&FEykJmZz|`E8p58vj8XLQTEZ&H0780EAeNaS)hlXyq`6inPi{Bt> zlIYUSsWGQ{iN@79&&9c+cQP;pwinR;Z15`F3CRw??i{-u zf7g+2P!n94Q4?{sSkF3~;}D#qz$}{Vxo!46wx@b-;WY>kN&K($)g~IQlUw&LiE+uK z)*COCQ=g&Y2V|IWu`v5UT4rLc@jat8xo-R-o!!wL)KOju9EQ|rss#>r46FRYSe=zG zafPu4N>3!gf6O|>4lX`YU=)9aM4;xVZM zPX<>+1T@w3O`f&Y+5LO#v~9h5q4xg8p}X*~R76BUQC6nj-gEn$eHDeaTju(2O9~wJ zYnX7embG2webddXyy8k@<`lUySg$)}+tw zp&7;jh#smD&7Am>la~HvnkHqtJ(w}!e#xsi4^ONgrc|?kgc<+j$j4P-y@*mIU$b~G zvlsH=^^j2d(W9vsH(gxyYLEG=JKT?--@fyiu~k4lIol05uRlS@5T}bf2crv|jgs|? z>5bS_1ZXN@L`7U&LcB_+%vWmW=;o}u^n~ED?$WyXy7{3aGB?rM%ja(&ED4J>e(y(; znwB3BzB9VAp96Q_?>+rU>+$KSL~P-BwGViOTrtpjju|?YUiip(;D&IS2pi5R+#Y_* zY*c`$9sTB^pS5J&#qwD8fJ#H$KoD4EWUQINspA!s1^t*Oo<1{oS$;-o{LFW1!|EnZ zYq~V+iuTG9q>o+=&KBnFs~Yjv-q%k1 zG|!Chaok`iER4aq%60&TJ%GUxHGpKOq-#psHU-0h`fC|fTJb$EyhrD44ucE4SiRi% zad8E)eI+=!lKvrHS^22NlB>}B9Wt%J;xXmSN6+U7Ks>3LcklpOuo~>8(p5|3mUGZs zm_rCEuAqOgIf(7*mGW{+en5P|+!*t~*$60f|GC^AeAbp(-YuCc!0+^nV{X{wI~?Pp zt}`O{$3DfSU7~hR`vlfaYGDagh@|11iZLi~(y%ZKR%(u^=`$bG0!Ib|4o|Gr9Unkc zw9Y)9)%5;=biP)^qi|m#k$*Fu?xbx6>jwlRNfDpx4pu&$BM%4-Ma`9u>4lK6xB8lb zJ=xfT>^S6~jq>T>0k8uE04oyWnd{#H-YTZDI7{ALH!FN#t`rz_+~Q-k%rGtZBxbGe z)_qa+a;NUw)IKqRQ+vc6JxY{=b8`mh(layjU!FNLKS!>d_BIKP)YF#=*Qk1C(f{=9 zFV+<6WA_j{;=E&rle7L{sH;muBOTLdWp((EHyBLIp;t`i@(tww4rNJ!a2y!k#s>Pv4H%Gr^oh85V)t^v_zp3~ z9uJ&<4Bz1P+Hq(06orMFqb*A@e*yNJ#dTUU+hWK30bNenEK*7Foun6=KO`9Qr~3pB z8@@PEqsWMg^!W6cSKP|{BkSVgFnj)ZRmb$*%(~R0g_bB@#LomVzswd2ngHvXDjpG} zrV!?i$Fg+^Q3`&q7e$lE>py+gBaZH%kA}TA(tp&^vO{0#g|^SH3d0>%ELrxFQ1OWP z!M64r{SQ4K8hWf};)P?%b!7Wtc&)Kklid|_!P^1Toe7;f0;jRX2@PZ7Vfd!IeL9rN(K zw9{CVtqc~&0Nj@ZNz5Ux%!|u|Y9RUqa<0lbClC$tVCR7+koIwb-9_V9Hmb0(^T|qu zTl~6pZ$3XT)>hbI-QBROFt4E4uV`PvyF=97UtHy*QLFNGzR`=L!VT9~Tux4;+Xv`} z3hOGT(f{n-^TgQgCo$_V4&Rtx>pdjFHE~ z3ITAWI{>sZAtC=8yD*YNj(MmN$9l0bF4ozTsIC;04Xx6SE-ubq@r=D)YRb}m-n%xx z;i$^be}43ciekSp!z)VY%o$pj7ljcXeN!u%ciP#x@Av9%SCW|&8n$j?!6>8*I{7{C zZEruUd|%y0z?BBL`eF~EMY7FfdxcmCIEa|o!LXA%Tg`vvo=?_l^3;j$^ZN90(eBvZ zKKSr3zX4^XRnJ#fs~ociZQkkq%(8-fJNv%~=O+r1k|WL3XliNR53(aEOa`*345Wi_`pK`u5FQkejD+i0jcX&3pEkkx?~?{reT^iUtns zvm+;2d1i%=My1NrYN8fJh8cb)%B24T{CR!HEHa<{UZRArOm?{aI_}?0+=)=EM2iP1 zyXDJZj93c4(&r0HNzt^vIra|Go-3DWmahy<_lb?9=Z9~4zPQLo z-8^=9p4w;Xw1XQn|C5$0eoQN98i`NM%#GLV&?Ib2ik}=#N=i45UE}4wX6(k2QX%;? zDMMv;zQ2EfF3yC$$YceG31)3k3Wj0ox_qXV?ko?u^9=R<4k^3kbb*%4OJ~oR|2|5n zX`w-9KH5HK4*9r+j9W{sF(%&Jpc(Q%K*ctA31rEp_r4yemq<<|vo?o?W-b?eM>AkPB_vHEyd9vT8R=|{epziJG zW5YJBy+FPddYY%AciL#%W3YVw^bXuPcunMZUWn&k@EB{pD_}eSWQ<628I|yq7wJ1T zcUa*?;}3D19VS;*PtuL6EgA@Rn3t3D^7Ahd&sD~s{M63i<@SsRIy+?@%<*zXSEV;UT=kN)ExGD2EtZ{B~v_Y zi+I;BP)_9)DFD_iWF^n#bLHZ0MPROQi@Calogvl<5|ENX&}HH?V!zkf#1lQb1fY3L z^vP{l@B*^sA@g+@K0VA}T%6xw^qeom{{te(o>;pT;1T(4hd!i0!~-rpe$0{NLd)@p zV-y*Md*6rDdACjUCUt#G*Z#gz{p}@c-9j&|T}$F{=dm;bTdnvS&fP&K({ZjF zB^ml4SBX2{dnSE=p`PCNA~#lerVV8wRIpbWea>JL!g&V>n^R|@u4c%T895|O-9rxD^OW#!DSF$ayxRPw%5R`&2@pHEPokJLf z*R}1BOG?J;hd4?>wwJA!*ShdyvrFP5voa>I$VKpVJ~j5&0J#@EQ6jA0A}Uy0%|;?_Qh*ry3?9Ltxiy!klom zDNHj$HXt}SK`Vv3@5&x%KqwUpc2^_Hy|(It;^}pKuP)PU`TO{8gax!x4H{VP%@Hr` z;3U$=P|*}(MV7lq4LqoMZSmNEb3b^Kd8NW@Iy$Vld|+fa;;HW5%f=&CfjyrreR4#F zw`cD@i&yE$3FG&sg}`7-`?gYlQ*f2DD&S0X48pD!XCdtBSDYaXdh(m#?bt<@kMdvQ z<;?}U$la)EEM9(Y>zoK*#LI`x!CzRse21MjyL2@Vmlu{B=P|3Su)sKvh06;I9_{Ag z@|d#@bWr?X=QNWR!J5rEu;;(cN#EN)0mk9%vi~;e-#3I{7NpP5KnGfI4D&|f44`kt zxOU^#o(_kJ1r6$;38uJv(OX)0wRganF`HlY-Cr2j!(C4P`!0w-VjJkE#y>ZnuI0&i zYGHw7r4|;j{V-Xp0U42b0IrpQOUv-8!_k5y8FR@FGkJt$NOpzf?P$ zVqBU8?K4>=ToHEPp^FJSn|*zKhfl(wO-FAY)eYE&sglE&LIzKfYkDjT4pR#+?aIr; z&?pX4aj?3I&6dFh?n=ys^~hhuTsD|kN0^x%Ru)-1aU>BhynUA+41wK0Kn%cyDoDU0ojN$N<2I z_qt(Ogigk!FB1V|0S}M`V%_)#@ja3MsG%czl64w7DV;p0F+Tg-s8R88TetqE^g2>s z9}+TPz!5Kb;?Vrh`ur>|LCSrOnQ#lw% z#tSRvze*P$&Rb`NT;=M9E^t=_ayviMSirqs?5Pas=IP`bKPI! zcNWwEEj#FsYe+un?W7cJoWhSy%*j(kHs{nE!eW%c8quy&Jt=K}%HX`v6R*5-A~bJs z(zDLH-G=Ypjbv4UZkQod5BZAzwr0_yHO-rDsGehF9%nL|mdfWSRgjfJxNldV&|8o~ z*;s6d1Aq?|P|*M?72C1|Hb=kSo=7++f5GB_C;Lad*nzNMwjbLx}q{5DVZ{HdkoKW&IStec1M~V*@6i zxOKuWcg)x&*k-ST&ek^7V@?XWk9Hp#6B7;90AsDdSeZ(^(b{D!MCF>tI^^xA58G8W z&j0KQdKH6>9kT@HS!u9wuZe&C{fBul>?4tl#ofCK*x-?}gbm_I$CYDgROZoFdi(i@ zZ68wuNZ<01YkYjhMf;{7O->1xlde-SxZAYz)zZbguI`+aa9{2~;2e`UaX_Z)-Wet6 zCfBn?Y#&<_aP|ZV>s*9*MB0)zYo%?+fJAm3w2F;~HCT+tu(!j2gHT5^;lk)0+bv)T z-s8U2(4)zzAwJ}-&dryms(#b>l6eUm#d{WWLWALUM<>h)#NrbHu_T#E2oA2UK5|9# zT5VLgrqLuTjT64SIttmBFI)sFnYxzP~>C$()SEqo}J^^ zJtSmJpV#~K_tLCh{qfKdYC+@e!!aTyC8V2^y1b%dJ7*rF4q@0m23;{m1e+u}$0YA_GQE>5?ArFLQMtUGV>tZc;iyVA;x|PlBi6O4P z9@V^QNUJ_duY?2>`;*`5$MKD;!p3cj?HlEG{;B%Z%8x&kA39QwZ3{;3fNUQ<4SG?@ z+1Y7dP%K1%3?KVH?oT6Wy8bo9unZ*2<~grAM)eIp`gZyHy@ z{Wa8@{Ka&$J_o@@e)`&0+?Ag3?n z7qsNn&{@T$UcM`dcKmpaPh@miC^@42p~6q+89|?;$&C$RJ{egn#n)Rt88EJX>8{fw zN9|l+RiE-nOI5?fW#7|Jo>>3IhVgYZIEVG1p$(W@i@noH^B^c3GfBn|H`f#?3lRzk z%1n_o(;WBHkK%6DKjlq|R^ln`u|3vtKoSf3i?>X3AnBSblUwny2jKurPk_$>c0*Wt z#syn3Eqd>MN%noV`JVY@D2! z2WMV3{&_}z;leDIh4bhoaYEZhHn;2=zJFUjhw0@i#0SJeLRDSA`7T*{)A;$AOQ^z2 z6UhbRI^(Y>`pEjv1x--_R>n_x%vI;5Oo1jybY#4+Ukj1jL+jJcuD6#4)z(6T<;HJy zLJRGN?A*57`^|j16`oi|-}|>eA>WHJ)y!6}L!eGP?Db5oL@p3gUtzsTh+;^nR|*;3 z?Y7!=r<-+RzLfCMcKFbg+n-1H)0b@2hiskGhs5^j-2($}z(hp*#~T~shY0{xiVwyd zT6{38n=JY2AL=G%6`E?Nb|gDgR921-%sN?jvSG5fM-EHs5gd%w-eRqme3BSa$5M74 z(<(Q#VoiGJyW=sRKexO9$rZfBfk~%jOEW=X<%;zhqO6n&TsXlxNj81a5JQ6hSg&R| z9~LuG>v7YDr6zf~CKhP7I{LUD>N(}?B1fB@CmU$?8;=z7-XYOTGMQqFG#94wj$PR> zxVoh<(P`$xkgUioES(r|-q}iLo&#cLnOrDh*DzKqF*a74@pQ_m34>G~VL3177Z;Z3 ziUt=CCaMX={JoZT@8rB=&Z`F|PuCcya2%nSW2Dcrg7>ZHd1; zxyy1M-RrWASeC3p7A~JGPlLSW#k}2&7cnW#O36th=4F0n2@E&$@9Y^ds|Y!9{Ns=2 zGzEvyO*DVboO|Ad1;q0QZ?A%a6{}~=xL^|$6dB>=Wn+_9;pHX7UERK8$M&lq(+{?6 zxw(4u=yR)AjKM$4BmD4BL}Z#y2UtepENws^Y;il8ovTy4V~->;qzTjqAZUP7bJHmx zZ)<(}o#Ban?40%f6)WOD92^^CXVb5QHj~vaJ?*7VN*X;eI?7EmbLLxgwBSs)#KxzT zN5_)W^qbI-l!%gNH!d5OlI-A-n>%$|aWPN|_h}Y<7y1t0g&!nMlf*5_WU>A#X9FVY z6iNdl>L`!M3be3&6P8Ztm#r~7Ee1F^#D-5L#ia!!|Hw(B=SQ!9zNpyjzL+-k;AZjT z_@r$Ka9YIYW~Rmya+2(w{3M-0TTdqor6q7+czeNtQHt<;u*ok9I#bDW&qxdnl^* zNXbMbwr{zhjX#4n+TsH;RQ0Uh3hwaf6E7R*d@mfQHb0T~$Dg3t;*-=zuoH@ncLa6? zWk{V9*FYXuNb5p^aMi^(1RtHz16GvC0~}BMAlvo9nfS1q!z}(x>2;PakQ>7Y(|K4C zy)94(3qdIeB!^8*$<7{rC@**H>eVj{@7dEmkR8OEzVq?|1AXZGuRh2N3c6h~I4>yp z_Tbj4sOY_W1;@R6qob`3J3K<^vXR zgy5V1k>-Yc?fZ57#kengzx;RFd$ooBK-ApEWv0JuULNy`Wp^cBoN2S8`!BFxeF_}10;k2H@fc3TMHOTt=mndF0O296{rYRN z`Rh=jf@XumZ)hDE8%_EPj--EdR8HF?5vU=^T!3Fc0EX_&y6eoZ8$V|3eSlfI?L-O* zG6o9MU;otveI(D@tE@CLBhSmHv@C<1d%YgzSd%kng-4978$T;EEYxvYeF@4g(L*U| zu|7Utp92wCT+Xa>Qn!vaJRj2?NmN`OB z`ik#uH$=6>TI{Z9DJ_M2}19450j2zol%Td>83k1Joi zEYklSxV_6Atv(*Ei=UGNYA0X89_%PmvdCtr{sE z!pJJ2;^90lasmJM02f9;Ur7cYT18-MnY=G)&!&w=j3Jl6P1&Jbp)u8`2ZM`bRkpaH zT3(?uRKypKay=yW z=-{RvrLRo(@NI2M8p~Da;^NdnI{UCJDA2DsIq3p-eaNdNAZXdRdwFh7T-*@o(Eh;= z{+qZ8Ey!+w9{!H~4&Yu35ium4MVvutnPecuCKC?_eNoPag_^~g z{(`E+ljaC_sBRv~U7w3VZ6@ zZG?9+Wbm^JOhBOnRu)KbNdCfe=8o9#h(KLnSV+`_g2KE2K^#2wNR zS?xQ!{^ZLi>rd8tk8|{2(NN=4+dEmUJ|fil^+`z?I61&yXfbA(C^t;_J5R!ZFJ5Vj zWVJtEdv0rf&1lJYfUO2SLEMyRhb#ZY@APhhZf1fHJ=H%iNh#FtLR^*g8IM8Fp_ha3>!b1zQ zg7hIU0`=u^_Xp8P0Nl16QO6Pi#!H1{@`}O28l7>tVC7?MR8J!VHw(*^YKf?d@8RuZ zD6MSm&CuD;Dzwl|J(z|F-#7ka1)ktCvG}lbO7u_5Vt$%J-&@|JZF%;TmPEh0KgQL9V5EwquAlilTG{i+yYvO$fF{eN70aK=;>$&AV~yiu*WT^;8%8Zd zQIJRSM(O|1Z89LQuflqnu)uH{ZdX?7ido?qSx->GJ=$S5av(y=1WoerNzZ7TR?-hw zPEXIyDSIL|HoVSFsZptO12l2VLPCO-;&;aD3_;++|3Mffd6a~xDO!^ftHrz#uu=Vp zdEr;nnXT84O(t}}BU)Gt6NG1gkg4fY{Qdc~_T5u7z9AFvqjVe35P6lhss5(i*MYa! zX}p6D{u6*HX80cMRd0-ksdmU6+^HXgRpJuGZ<4LZ!m$@CJ-#I_$(%CCIVrbdf%AZ= z2d1R;n4LLuwA_j=A=8Hp8DCC!ieu?>iHXfP8#dMojP(nTR{&XKaaTB>4i}*%StREP zAIigG_&O)I8;+N`Oisxi`yK&)+31#smV&g)FuY?T4x~C`{xSd;K zIRMq<#B>uYox{9G&2veeI%}#bYJQO&;Mrws(=eXCB1|6HGeHpf7{i6x;xtGS%vP?! zav2(#J-`Oi@Q*QsAJ`Zq)3_RApsEyuBLwT{hcQ@;N5>eCdpZ~w3^b5r^N17d1t*nr zKaEpZV^FZ0Kva?Qi|xFfJI243(XGVGt1Lc#MmK3DLG~Ngdk6DKHhIZ59?GO?Mtrzm zt*dSPaB4y~=j@#2zs;HwTbmpl++#`8+OR+aZJCo57H(ss*JsTUZ#v}m9u^)hOs0Rj zs8jYl7pKv*%iP=}Bium)fDi8qs}M^rWA>^pMBrWXwSR9}592a<`#-KZzS~B2$kq5R zvsak|y`(ZSvBHpn<8#X$`$r{3YW6kFA$^*J!bt;4gR&xpanzN3$8yBTYw{_gH}ZIu z!dbr0m&NnqZrnYEtY@kh-WyQ}jtZHAI6^h+C94<5Dv1&?M=~Ye@c4qiS=ZL(2_5ON z4n67)io&Hf7R*b#6$QF0D#Rv3RCAXbs$2**lu>IwRUy`Q|;^~_e}{KF+zNhlw6jY zQkImQpZ8UMKE7Xq@9#8yA2f^cI3>c;SYW$SjFrAM+0HI?oSj{Is-5^CKmV(|{N$vv zl+-dNW|1x8Tyc}~%l~5E0lVaiI_x{`K{NY>b+h-0X^6pt!w7+li#s$R(Z#u-sD9u) zMN(==LY6<^bgxv~*p{W&j7aV0L^oiGm}4I1IAxjxx65ST;nKWW$L01N;d<%(fn$3m zs?$s_0LKONo8}ahF4my z90S{FVXD1cAuN_1cvX5V91m0UjFM#?wkgg!Y+pRA>uaaJxMc`1vvb5J(<`$Axk|I6E#Oya>o864o}7YI>>>J#T`D8R#q6|LelXVsGA$ z^%64Bh5eS@K|w*Nm@C&Kt9(TJE{dBBIDbc55^t-N+Av0>tX+Is9L(dY;9UU$N5-B$ zK?o1s9C}Z4kN+u5y?1Xj{$po8lYA-;5vF2oGN#Xny=k(BoF<=c#`xD1!Ten={`wkV zn6BtA)+rrL*|Gxp3%~cV%Eer6vYJ#!af8eIHX9t=Wqx*plzz_cc+sQn2ll8b{ujm3 zBI~eS@vyAJ|BtlqfRC!^`rf(s?rwVTbvI>GAw2<72>}8G2oOj@?}T1Luc3$DtCWb; zs0fGsQ|O$tP04mN5v#9k{F=&xs_t&=mKgui!z&3 zc<^%NaTGb#$NjBH2)bgEMx|y%)zW9`JOdgBbQ{pDUN1wi!QOtll~r!zq|t=aMQU%V zK?_Ub#SFd5)5*?SVHR51)5+diaa!W3EOE8=K|ysbQ)%2RQ0d6Dv@WNh_NypzQe7{a z7McxEVkr>eBNmzuxQuC`Wu#iFtgNi8t!%7p?VV9-$<^M?-rY;(#k?dh*-P=Z^0xN2 z@wWB0^S1YP@OJce@^@Q0OESyhgGbc)~_JE%7B9uE5%-x(ga<9%hB{73_PtqhcXsRdBV>KAD)4 z)O@crr^1&G^k4b$XP;!%4>69Cdv1K=a4pta6#GzN&_zu7g^BYj(3J#hAnzBF(9*dn zfu6tdKRko(ADOk}hgrP%V{h9TB@RCFt(Ute%ks>l&sfx*JAC%`mCc*a#eA-j*2r~m z-s21a-z}>lPO_v98e6wIrH+e>YU#9t_uI4D@+5D!0Jp&Wl+X;{0I6Opv=M+dW~-xw zzkN-HUE^RI+nFS>gMk1tZ(vBxBOWi$cCHl{Ten?ww58VDyD(&Qc%;2!LH?{dDarL+ zlao_YTX(mx@b>5*QWO$u=a`#2B_k{qM4gsKsn9{uj~I`Hf^!I{aNSd6)$gV=J(y3Rf2p z_cVoXN-LjodoO7W|5Le8`f4k|(82tS*8B`MA=1j-c#1tsDMbL-no<@|PtvpGLrU%8 zS!iw0G4x4t_-H&;I+~h&DiyujDixIqoc!?5XQd~*>Dd%&{Ghz%)m9d7dUnfOID^ry zK1tg36i*swdX*{{UTrNU+3=lw68@_$P8v;j;^C^#xs^1figX#gjrH)Q@RXFKwR?r==`?1{d`C1KAkgT5z}Nl*3W91GjDOpNECnr+N)&=;0(&J zk~XW(RRelf0E(iEstn5vDMQYca%H6x8EmDpb7AK+4rj%jLp^;|?&53fgIwPoozF>e` zv`a!~-BfsP0MBOG2D}bM`%*QZ0=!yPc7}~cnxd#CTd1{6ws5$7ixdh6RI7@O&It2Y z{MG&%e{GZ!rH;}>X=7EfELMqCXCgaQrjn^{r)tC6Ds9y+;J_e0`j&Pa;+JMhIbZUF zGf6RGqj@P{FzZEtp{E$*pUM;Is-|4XYEn9`v@30=Dd$=2AU?+P;h>!jnsVfCSx^;E z*&L(=Dqsu$BvyjYkc&sa52{B%I=-dYX)`~OR3m0BukMwNMmwhYzlFR`gGDPtaN2Sf z>t;RVJ@WGiJ)77+6&{7vljO0Mm4)nIxTt=dJc_k$n?J})9kyU$cHQ3IzBx^s=HT5c z(Cd4_ra^iJHiy#jU-@GBBrBx#c-W-R(|I_P0+ZY*cvrd?`+$IC&Nf z?DVWz_ZQC!?~yod0DBtqEM~Cx5cl8kET1usn!&n}KNRD|K0*$ZE_{1I=$ycl6k@E9 zcU46r8%G0G_ZO!H?!GftD2li@vT7aOLtiCECjH4D2|ghrPoYOO3n=YU8o0xY*W1b6 zc8Yb6_--cWn4c5Tqj6ekGCdct!`rxPC;Qp_T&a47JYPFRXn~|_1xksj2tTnRbbXnGT4D1x$MJ^guDI!^7RhNkz>zc`B#!S+c5_xVz~ z*M0uyHZ^Q$C|PQb<0L%ja8l}46$Ll~z)Ls3;iV=P1zuW{L#e@`SoXP)a~HAXBvlvQ zQ@T-ATdcRV3}=nBSy5SN6s=lP$?PrL02`&kb|zj*?87kwJTF6&p(VbTtI5?`baF?_ zP=x|#o(Vm}cAO49ed+XR5U5lwJAeyMmG5Vc(89G|&?e71fE#`00KXchqXL(J=ECYXJn3Zvn@A={j z+FUW!e|TNRzp4PI?a=Q61CR+kjub_t0mTpGlaV^*48LhWvZkWmks}@Z_Nq0q@vY%} zPHQOI^77@&*m8c4Q9Dz)w=7pJ!9La}!&dBL#rCcB<_7l8@(1yFZ6} zv(bP2LGRb&-qQXz@6-PK@7wRowEb3_cG7Gt-kID6)qi8RMJyw>0flSZBy`QPcJAA$5ne}BQ=FBe_Ykp8ZvJYkq*Tn$Ja$|$ zNJX^9nX5iQF;o`8Q*@)~SB1|mnm%(((7P%Z;eEIfeqPnNU+|852y?e-uDoo~HAlJ7 z9G_L^tHEbld=}MSUEHowBaM4gtX&JpC>OJg!oG}>W1yTGbP7!%^Nx#1ij8ybRM;b@ z6CV&%3w)^i;50BMycf?)u&z&=^>-?wEwcoyYvzh|jRHbVzxV?76p8s8Eg|QLe+v$v zcZT6bmUs3u-ss0#B=Sdz7mYV11Mkk<_|HU}yLessp@|QuvF(yIu7Px32Ujuta7v1m zhW`s6c-5N!WM%`{3=^K%Fy)NgMKe>#JLLQcNpeqe*Sc$^cFUVD>p85K_^EC(q3eVR z-6l@#Heo_nyt5TLP?+YDhzJoUuoS&Ua*DRt^e6e(U|Sd>dH6V~9X^=p*1Cm8vaqm^ zdiPR&(kI#{x0N(V^7gT^vA2tO_tHd9${C^W8%W=G(9+K;2k3ofJq)~c89k?#)LH5m z(6P1fN}hv}VQl<&^;7jaZ4&7fssObD*3t ziqEsT9s3QRErA>_tlB8zdjbQ5u|1hdInxS)e3$85;#_#Uy(=~rp&6{3GyJX`sDxl0 z`O)=1_ENNmIIq19efcX@UpCCNm#EGehdmeWbErhX$7On-os^;^E_cOqW9YhSD)xKl zOwSp!#B`{@7;vl+)o}f||i0fc+-4Ok#=~`}t z7bHj^uS*xPb3au^?`M|Sv<+|{cNXJq8A zTFoxLQ!Yk2SY_^sT~ zSJu}{9gWxYQdoWZ8zq^_D}O6D)-5kbTc&!}$lYts`&Zo-=AyNLKMrm07JcC_!21)f ztI!wvLESd=U`Z;nUUo8mB~zMyy_Cqy_3|J3%I~E|#v|oOXC-BzE9$EZXczlL0rf`eGc(gcBNv@)&T# zuEWR~fP%%%L1K^%bEqWQFc(dHGe{iX*I4+&Q=?KS16j=0dDPwWwo(ZH)n$$wYb;=zD}O zl(R^bbb!OjU7KYpW5N2oDPzH70z?@Le%4gR;-eW%caSBq!Kf5@>L9;OMJ!m8?|)*J z{I8$B=X+7aLd=<vX)dXPO$D=vZ;iNd}3cou$UoCfK#_qmEtPgt)FW$hU7^z4Gn1 zSFYa7u?$V^Sh~?B=wlCiM~O)hJ|4C8&K|C|OkOHNCaXhUR~Tr_L}N{rfvOB#XtZ#* zrxR7A{~$v=fD~?j0(vsiC9@>c4LU-{e`L3XKXG6HG8fP|*sj8cL2cdqu7BV8WcQ%N zaTeMVo#*Hbtu`KIwXH&I!;3~v)J-aC5~j7%TKY$3HurC}xgfCb=FAiPxtCLHXn?1b z>zw4*Y{=>zKHi_XdP>Y!T}!PFk8<}*^t1BH{2pmD_^@C$VNNM;GVjH_K5+1_mcYhD&km4(qjVAMeK7^S;y{t-+4) zxpl?`^q)6QA7+;dQID-UBgD-Ly+~GpdTeD%*MHVy6S2+eTdtWUhfY4GP_is-Gm?h`9I}NvgMR}Ggqyed9UKmtktV$ zDRuZLK9A4lV^E%LB@&^h!&_yfI((4>PBIcA=Zr}uyYzd^e*(!&Q`@=>}P zBNo-BK*!67<^h?5FHHhJxrw^k8hIdYh?oOqoW_;xJ!G|ny%d}zFv(q!r@T0}%J|(e z>0qGy>KOlq%u(Iz)q8SE<#8qU#3Z&(0w;p3z5!g$r1n&!M0AjVs9w_ei4Fy^2UEOc}POfQBw=Y4{LG!lOKnR z_U3{%_JcM+@c&91D64`_NMP!adqt~gCF$V55Xs_>wcxAzYnDkq1uj)$g67Sz3r@1HrS%GK9y~NNU<%LMvwP11rE7&TH#=R;rrX*~-65^1 zERZS2CK&h}3)&R5^H`#p!5Bi&801~e#CE<9+qFdrw{NM0+n{|1Q%g6n>^2>zn+w+} zOCFTd_i<2e4eVpaNrk2)d+vD2_B%;V)0lbHrER+bX^PX4&-ND+1-kfqY3npR=Zw z<5W>${9zH{i)8Usw1M4Du<*Upqx2@pTsi^;&>=B_W-6D02Y7q>%;Up+E)5D#&)Cg0 z+qXpexwyvf&sD3v<6BQy6J2|ebY+3@ON2DDZ_eCZT|BP+)KMk94~+cOgqz`@gY8NY z{2bx)k8GYYHt?bkI<17#L*Ao+K?LU$;)LvXc9JL7_nqFkZ`bg!I`Ovi3%e%7y}#j5 zi@hyQcJ2~iZ`Gu=y2fcegF+MQ_L-h6pIKyVUDWCJcRf0+oi>l(;6E*2$p^7TtKNe| zkDNBp=L7Gi#fPu=>LY!^kl_U5XMpLViQd)3DP$pNbwbcO3#96#u?_j$Ba&5t`+JC8 zWlYzQjXYv}Uf{k4mz=+1V~tm3OLiX;m`{@;E1z?}iR-BC_t5rzwCxSt64SuGl}3e8 zk_4kGNGY6atZC4+mwx=diQ(&(EWo%Hbm<*Fao>1-gV^N5d*`}kEO94k~0S7n`xv`QG z3%o0saVHAy5QI)t?hY`>wLmTl^$qX+VOqkt%#-}vE*DzhH0;C9g?V{fcK!JIh`|Go zHLsi3dCb%zdB~Abn-$Ibv&Pjgw`#WWHJf<(6f$s4IC165DfWo*HvQJDod{eoQ7hv^ z>}^1IOaqbw!6k-B00aqw6&Wm-^bvSEA1RsANH_7!MEGCi^_!q?wU}v?BfpMFENUA) zthL&)C4V(g<&=b-zTr=eIAeE}Qg+zkPIVl9XjkM#iZB=i7I`U39W>=Px+ik6?` z_NkMwarm)@6%9XbT~sGw)5y6yQ68SS~rz44$c2WK|&tUM$)a6>MReY3MLXP$udTdW^j;(|<%eDHCxSS?sG z(Acz6u)$e^#+E1~vb@u{qd|P5ydC-FU3RppAG6Onydz3pyYzU%9}bUekr||P36i%i zH1ZGGH#|aOEYG-b(O<^fjIlU=R?_{ts-gm&RH2N7+6{eT&#ab$wIE1mq1>8=P8Dwj z29O7p&P<7r5qX;EOm55a$T|F>|C%j#77nR9Ut>9?Y)lIq&vkc}UdphrdpfRDB;B=| z`sQw=rL7fTURKt=d2dNKplI8f@ze6M78Q=?e+?Ki_ep?b>YW-lndN{UYn}op#Ji@V zeuouN5rT8xSX+p9iKM5<2@0TOdB`MTZApi*Y2_9-drnG89zJ<&lZGB{g>SS45BIu1kLr}$_~gedmi5xBBSx*{=TN@< zLf*Ry`IIOTnR{vLn6@#DIQ z4-eFH_psK6#Aeysf6%SHn|oHqwC+u^!@`CYel8zhGr5#s=Z`7NZbEQiq&lZres1yT zmQBH|2VJ~8pe?P-j-d4?>MKqflEI)usxN;Ox+q`);S15BCI2k+Y)XRw0IIiDm~NKg z*0W`Pbf*YiSogXgkN(JK7OU^WkEFPDXf!%9$6puSC8oUi1KrRr&Gh~o-CT<|EtWoC zz>)^HO7r#E=;YLMei_CeQ&p*;CL8IP41$y7lNP8>a<(LfsZGK}NbyJIc6?S{r&_av ze#&Z@_*dm&7Fm6z%;X)|L}O&v@Bx8`8nxcTZt_LaLh}{chu4eJ4S9gH=3Lv@Gb`PA zN(Bz74eU?_e@`A#xllSGH#c@79H=$|2ctmidV+_-5D*29jlC?fK$Lo>m~XJqXlEy+ zj6>1^zp>@RdiF4U!W342?VOO2sGZ@Cv9vJy5Sogt95E$K}wUYS6iZXE?dR_8eh05D{tEPGuw&=+(~uRJ)Jvb0JHq(O~53n zJ_XKcPvEN3VW)xq;{b{(s}b{u$F(fH)H-c0H)!< z1<@bPJNOahVHcB;j#5dQK&09LibQOv(k39VbHBY~hQ>*oe2g9Jo446p(z>O-^??5T z`NT;B4(w+(z4{q~LxPHt<~NTF-ixLLqDfo@bu=+hE?1_1lf zg3W-~Kpgr2)DbW#CP?l;Y0L6*H+Ri^#Nj=ec{1-C`}Xp$S1sXx?t`L>*I$>(yTt1o(Z5u6(M+Qr#2uZ5 zPjuYhNEN}dUgp9TQ0AVy?Q`p^?>jwh=7uXZs5Ob*)gO3ErToN@A?4CXEN$95r20d- zw4|C+QJV$0hyhRXg4HovIQ3waKni2A!i`E~o6`pvl(5t_1z)PFQc`Ap*=}#UFjVPa zzP~ok=EM2j4yzN+r)IEd2&Om|osoJzER6SorFbFlN30+7QH^hd90|=$ixa9j;=Z|W zhY;16svbh86K5Eva~thF+;5PXZ%NEaz^BiqF?)OvWvmn!b&{!@HSNfyIF?1Y+ zaEtgHvP%h014}9yIP_$D7vu+~4_;)}juY92W;Qkp=7+RGGSz-vV!iVNTAX3hpL%(s zo;T=SDna95v>AM(NKTIJ=&-@`o| zErYG3JX?n$Kk`QW;iwUkWEwy8Rkd1-XQXO^7!P;?;HI496(-y>jSDj0KrZS~whXp< zEJ3Y-BsLB+S~v`3W4DKu@8EYo_ZB5lcFYc&#HWqx*hDHu#nAi{&nBF2&6*r3p3Mfc zRjtoYSUH?mK?5M%)A`*vafXv9u1R06apq*McW1(BqQEJhz?yl0_gaW^j9O?&sv>#5 z3TwoYxJNMII58euSZBl)k$VMdEg+$R6<7#jTwuGEcDS}*Vy}Mb+Z@u%51ZF{*?IPV_b{CvW?tlX4t~!Ap>$nuMbtYIK-;Y}&<@@0-m>%-+ue_K#w7M(rQr`f2w>hX_Dm z>e3h{ovbdrXxut9V@zi2TR({T0FP2qK}Yy4&T4AXi^$}%=Ac*I6$1o($SBYnvmu>g67^p)|uaq||>l6vzr`y)NyKSKpj06TQCx97Wn zS*#6wq$ZfLP8q#T6^%Jg5>a@bXm2RS^#IS<(c3cO)`O7B%q32bUm9sam*&wG z@$Kb2UNxpmd0OR{X$(Yp@ea?d8@UeyeJtf5O~$2HSGWty#5H$PCi81|j8idWz$JK# zzyZ#R!PBwBRcE44>?X<6oDS)LPFQ(qmy5!_?7Q;wTZbPQ&K92M1Ezl2bwc|C?GyM$ zd7RYV_%W(a)A#1e>C)`|JepnDZyX6cKM`w+&QpO`^daUKeOOW-Xdi;dnQ2(Sv0tSJ z5IEl-`_<^FzVbRwIrl0;Irlp5EltqegBGgi9&O_+`<=7nV&EC)z$PEdx9bvJFsV&U z`q-C7(=wE6^Y1~cwE7Nk>CNhcfQt}(0JQba`SLqw=D?e%;Z}V{j4}O%e(Ag!Ix&q$ ze0#}9L?^~;yy}cNx{i2t1@Draesg||YqOjHen8>4E<@jM&V)fLg6`2a=+k8JG&@*g zol@QTIB84!4)xmRbX=+*i1hu@E*{rzEN54)ux;xGH;oASD5`dIUAU4^`GuSY^g{=O zv{AO9J!eQia5bm+Brg^W4@||$1*}XBL2Phxf#nQY4AYnsd;p_e<6bgrk24<3vd}&5 z1^?amjPHwH&Sl#_EN02&!yCA)XP?{}428Xo)!4CC{N;^Nypn%pwQ{8uJ2i8jmpsnv zmJ#199~YRj$rxXav*N1nLFY#R57sZ}fk<2sc|eWzTQvi;ZC<{Dl7R}<7L0@Tm{=Vc z1KImx;EOcA!d!FfH;}bP-L`l&&uz@orli!=TH%q#^xw*u+XZ>Lwp}q~J z(XS$;#r52~V;=9K&1WW9u-u8Ah%fnkr4tw{ue!sS`DZmWL@=!CG{!*lZ*LmI+ZVw= z|Mnt(XE2~Z(|{z^LiC-CHncR;#P^*bY2Z-+w`7Vn2D4`qXV2RgS2A}t--en#ul4Nw zh}o~Nq9DhmSDTkGtEI*;bws&w>%H&3{Q)^hJ^`LpXitXa#Y3ecyrNa&?xJ0iBBE6p zLj!Iq4|V9>v9X_L$59>7e8A}u9lj7ve@>*kxoMr{)2aO{=H|gKiH=S1!dCSb-Z$+s zzn=xPKbxBS`EQWEX^G~NbfO&S1ULm&2ZSVvba^2!0rXwGn~*6IFSY=U;-O6 zVSKEyR4)}<_-650JE0^n-_gyyp_utX4_LDFL3x*}87rY4oGm$8Jc}=a2?VvD(8pis z!-{&TX>*A)ISB|y7Z}MweLs|h4(PuuBO|o`0Pa7yDN+WV9+%S$HRT43s55xV85RgV zsHWjXI>Z{VzPyBw5&MsRthuo_FfUad0FJnz3s0hq+Ngp`C&R?@^p++jPJ6J1?6;ny zt;1N%pX?H-bQ}a05{N%%_I>!vg}Xd0q}3tIdPUc}^gSqblyR1PJj z8B-Rj)dOjy)WfF31D7hf=*yPHm^wQ_ssTl~j7 z=azGsFK@Jv9bDytyvn@Rdpg5l50=1hUMwtJ>A2;v*Rm%2+Sa#`9Om1qJ**;zuO{Bp6Zo*hp1}dU2U8~`3ECdspSH4Oed9tLzI?9yAMx^}MHa4qXJAS(#b%)@F?owI`AbiA9L=*h||6L}8v!{uo=IiCO4^RI>A>!Mb(G68%ZdOdi?*MR9M`uiVb zZ7iE#cJjl#t$D1?N&dy?PYdQ`ZOv-PZ%Sv`Ql86pi0=W$c*$WWf1h>PX?%)4%r#_C zXPr|YR9~3RT1nPoa|a$ttW{oY9A9y>Vy!d{KjpB>YdA{1CWpN)!z*Y*yhAmg<^CjV zrBd9c`)|&HRq!YS{5#EUWA!uI{2`SkcDO<~!O@0|lpSwY9O7M~gWL6Mzdy-0uka`GU-`-gL2&Zv z<)ApyYv?TeD{&T%od(uN6I@S(y-))hg!Yfz01`wo&Qs&P7>PJP=3)hNDOQIN%~Iin z(x!>Ue%FV$d3`UpBKKx-p7BnL3U+$)gjr3Km_>@&6JlD8gyvMdPYd4sY`nX-V z$6N6~+<39Nq;i|*1~y^EU;)d1z+E9==|JyJ2cN)LS}dZeFr9 zE4m&Wtrq!t&2kB0f4pADF1bdut|Q=ZK$~Bf;0Qx-Aaown_ruE2n_CY(JtV%X0g+GB zJ1~CSL(X~O^FUNz{feNjw=W%9SYrrphXEcs2z~a!`?jRBf(r;f1qqB0Ehf&sknDL5 z+fl$&7e5W&-m{9WM56Zh@MOM@74B8Y$YF6>!Ah$!#)*1cq(hxXRSF45~)6 z_$R3f(1$%PC_2!*cZ9GftYHKaG>Fe|dFPVf)SnMow*S z;XBAYgSqSmIg$t)7Nli5qhyODkSWCA9f_S?z4TX@g-~8B>Pm zIwtb<*YZY4gZm!YgyM~erJ%=q*o`3 zR>Ti@{(1iuTiI)zKeLCw@OJ#c?4B#@)#q?;0gjS^qlWm)o~%D{CYcPQ53w-R6m`L= zG_v~vhGaG{dYqO1)p9luoaA%9>2zMwkBxt*Gu2tmZo3WY6du2I_3JWrlGl~)CO2UN z+ja96{6O$|4b`G=a8C?8ZbE}`cZSRL11W0g@EZi&L8`+BB>rLpAH z6GhX*hrLZi;Y~#Gkl8z@?Mt)$Wb*cR3F60Qoyqc1KX%t!S`aebL<`YG3j@(J;aJE+ z6Afq3eP{x7-z2YuZZPt#ZUEXD27dbi@KHln5C(>ktatz^%FF7kFbfN~P~L;EkW`>M zv45}-9vmif3oxfOZ%bg`0LOvbu2yV&ygae*X&OG;yo=x;UE{BH*ubBTU_*7AmrS3& zl#RViJ0GRh#yfX5qJ84wU4cI*YTxImemse^_Hz$HzF_C`GWTC+Y_G5=NV2K)=l8eT(`tYBVktx zyflPvlcCjuHp$LI6hW3A>9_PPolLeK7R!Uk+=FLnU9M5Dre{eA(9@E%2U=>K)P3FM zt(65zS5{91WW2Q>+2UC;^McwjKr$qKBL(V>-@Sk4{VDn>U4=$M6s9{fFKYKoYYj=iB;E4pIujq#cCet1eWoh2Tmx|=~f$YOBq{jo)P|4>ZbnaR?NUyKdQxgV<|J>F=nz|Ox&T4}`W(ELo|kI5(W-F85*urbI#%xJ$i zF`Qr8kbn5*;SN&T9pfJrJf68onUi@sRE#Kgk+%mdFZd~nL!mbGAoptHw%DQUIX%aC zWfnHtr$mCZX6@fUXV0i&b$JkuOub4>Tw;6Bb!aeuh!zEB{Tstj`nyCCscJ(iw0-oZGf^t0H5N9dK|dLD5b zc!CY6{PiTl5MvR*5A8+7J7Oy$cC=EDioN_RR4obQUo8P*HhT^fm^C zsdk$7D3En;bK~zkwx0cd%s8>#(RR?hm&yZP?=mMn5V0SE#(*1BE`2&}C58ree(c&~ z_UMLjvOTlX^FLdkK`BQ)v#BM?2NBn%W5T4J$JVju z$BYxKPWhgSIvRzaR@HDMEPwWFc>?CP1o(=sN$WVySVUG~9y|19VQX+A{{Q^9ncm@%a@ZzCU#2U;V^~S~8g(Z5P$KFmg zS$(76x_+I;uUIgwnxn`=|H1AjRr3}!55Ce)@D5oe4%Gjjs3a4F9{RYQ`gt z`UlT9RI{KrV-t2;SMbA{qk6-QkbAtP74!2s=9s5A;g^W_K$F5oY4T4+ z0%r}qMfa-)14pJaI8Ym|FQVPUVo$JDyqAFf&x!uCP5onAOYNEVSY)FrGWBm~x^LFU zVE<|*o-^0K#x+KQ_r&LB_#y;+IO)NC@mvl6*%M~?CIY@p^Yi)Qd8`@0X<94757(W> zgB2t0i?c5C^FiWy$Yr!I>~f~|pVRY@%HsJuRX-{h==_b15!cU=vwJDoU?jnd&1a#} z7$?>;*6L}~dnWx{{U`4C7vrB{Zto@Vb^V?3nRtLnpBM1b^YoU0OPpi9^SlXf!ai05 zA4AR0zrn8@BHlOayMPxO&cEXK%G>8^w0G6qp0N9y`mcH^@YPj3FKiE{=bsV0CFbW1 zm=9+y;R7Rjix1PjMBrm&O?;Toj7_n538Hp)?*1nyyHdtUVj{`%vv zkFp~#%p`-!C(p_BoBV)*Vbd>&GniS(|CO=|TuryJP0zHko;A_dCOy;ICiKKlp&@@{ zySttaHJo1L)A0~no?cc_roT6<__>r>pRx2bSysd!Mt1J2(;7C!;=++ut@z=}lXBhi z`PhTTR(+=|QRafb!Usqdpo!H|=ZQ%{rpP1YG)V*uTDa|KsNz;IeF&j}9V$Cg;#t!5 zQl$6SU$12M>(}Cwzu=c_?H@Mzt>wCIt8y~pejLC%M;qArL-##{`H7|l@ebkg;F6_3 z&g#}3`rx)-MkIG^(|i7vZi^UkcuI(9k=Z|Y*Q;4G3&Zlb)7=&EUjZdJR1^t7HMO;x;VkH z$bm(N1TZ=3)})femfzgK(dHd~)p$e#hWE;HMKdS1X_Iwuhq|@ro%)P1z%Qweau3B7 z@OuicK62TzW)jgfA{nuQoSgyzBuY=xoMTL^pL@l3tXJzkw`eLK~#Mkq1oa zqO68a4eF{H_vwtCFlxyn8bEk>Vq%?00Wc>$lZFKWC~sXb9D%(WzUeVpX*!l;}?3nd)Zgm>%*5xU3I!(?*PAGZ>ipx(fo#SB4c6mTW@C4-lIiqnOd3Q zH=|jz^0Zq7PhaeBcPmo>4>Y}+@W_}!s=Y$gW=pOE#9L_IoTIgpvqlest3`)^W`ZjV z3eZ>pJ{TIk3(to!Z$9NTJDnQJhw`6yJ35^Fv?O}WitwmLW&P9h`9?k|I+C?v&cD0r z`Mu&saSqw?;A)`xV~2|pn?4}}gn01k#KO8mdhN}+{yYDy73;woee>epfczGNw#lqk zQoDmDoTgU&s+?AqVGLL&OxR^Y41m~82ACpLoPzc+7=(GKu{toh77>(`h%45o#KyM7mR)@>grDYT40+5q-0m z*37yjmR^InSfjCN_KCIHGEYPJmDgb<4St(y2nd=o{kH}mRIH0ga$EPTdZO4XX1L39 zkKeo`Ek`K*9fWo8ZIyfE=x_NQOpL5r!CepoHx7Sk>AV)Gj+OB3ED9tXIz~17Cfs4*p;c`j%8_!1*@8$3s992GdHWEHE(N30ihWybbv!C4wGg z2?XMl6u_2dTH7~hU}?{P3OIdTAIh(Vg_rLN8WvLt$N23Vx4ZUe?NXe{KjJ$YCI5L9 z#d0$n$XMOYc7A;N&gJU|rKX&**OimyN&RHGmvJxu7-UhzqF2Mtd=2m%0nbsB^j5{v zSXmOyjx**S9^SGWenEyy$c?HAWEmx%8EJNWw$Ip3eG$m^pU{YVPr@gqj9wM6u3}w% zzI%IG=?%HKB%?BVL9aEekHy*V82i>Z0-hZ^<*3Swe3vMn13Wax+Bm9=#~gT~Utk|= z7HB7*G!+$<96)wyaf(73w_+Hp;erLIZw5%AU~aRWU?OnL}5XvEv0B@v=c zC;;N&ERwA6C6yUjNCOG|g+dTIzoL z%aiVWaPqWi2oE?jN3EX1&RT4}h{WS=xry~V_vvtKFxPC%Z9;Tx0ldBfUW3T@C z_`wB5*mg;Oj*As?N-TaTd0O<>TgHydIbfsPoIGasIry-|(&OUTh${)3h;<-*2k@;H@YVjC z{8X%&CfI-~XQW(%ryyF?iP(sf9@1PJ0zSgDLWj@^5ZQi7YBC^(KYys1o#p#OaOC+{ zQO#M4hw9#~^lcLPiTkOcZlC)2j(VZ@7w~z@%NU*;k`7M$Ukk)q!< zfE{Ab>kX~T1D^6%-eLD|hFIr$Ok#fF`JwzQ|4)6ES5m^hW`+Ekv4Y=_*qR03uxqJJ zEUvTTXR!q*SuSHO4N|Yc+{LP}b4sc)d%@5K(KV*820#5Lwq$6GfJyVjpu;Tc#NwCQ z2IzJ>DxKq#0^0{Y-`1*BJ3*b)alY4;;w{zul`5t@c zH<(LhtL#|ie^$phmEVC01|r5PCKOdRqN-TUJ)$RX?2<@~-J=A58TRI&nD2 z^IpTi+jj$dx%x_bgY=s>1hmP2k+HdAvwv24#;6R%3;J75NhL&PLzcEJY87@QyC$6F z>-VtFBnwN;-fca)GllQ3+$QI*ZEsx7KNYxd0J_{D=rUM%<<-PJU{;%`6J#mGx@r0~ zLcyd6>)K*bi=Bfv9P_j(DeNVCl{_|vTYa^5TwwUEU&8Gg)~mz90_t{JJw6T1!axj@dWsN={l8t1;2Sa#j=Ym8lQ92WQq3rb{3YZzO-9!dcINys<qGjdqtnslWQrV=T5LV#wXT|g-a z2KIK+pqR9b)R~Tbq_wPdjLVYK>#p%1(iLSvhy^SkJY`CH0}T{5;txmQ~$X`za+3A&OPiWa9`2 zt%5N2S6>l~Y^B-! zuB*>{9W1jq&NJHDWY&SHB3a|htG4#P!LH{9DXeYnMza?*PiJYVVj?9L3j51W@EHg4 zXJo?4;e^>TsqRkBv}mBi%1zkbmJ2K9Bvox}anoS9f7g)L+A6t$m33MMN@MmjdP`@R zXS>f&o@Cp3>!hS4456wDdlj^;8HVwBy^bP_n_`U*m?{t0pQ!CiIWw3>uN5Kz3UQKP z9Lynz1$%Jcv{cC;DXD2Z-Gf2Lnj^KP4?noiSDt5Oa4-f6WOLUMlpFHo`z5lHvCEW+xE?1=b;Cpn>EHbIi+eBDj))O1?(=7qPs{%7W|Er zU}^Of&-$4wHzT+bnO}yRzI5?T{^MgA$Is~oT-=f2u5m!ZfA;$UgbXf1i zo|f8!x<}S2kYg;Fd&CVW+w5MXg}bZb|GTeS(`+aApWSSy+uBZ9=a?}q!>}vTmFF)m zPP6JTW<>h9hM5Jd5#N6d%>ySHI2oM{I(HFtZj!OV0VIA+206V>B?vuEneBLda1To- zzNvnI-aF~WPvQ3S<{*=A-OBZzDd{%WDD==}!R$u0+cG69e+OeX^15{8+d(g>)KAr2 z<4NTwc%y1*Z|*FJ8Y~I>W%LBxkf6uV+%@k-TUtg(SXxTEZw#$y=Vmxw0Yb|8?t^Zf z&JKCPTSQ0Ij_C_S(y$|2SOb3H#IUC-hODm7r2Cq7;3qhb!dYv~?uNTH?f82%zJ|&j zWvf<)erX-MVF!p+8;rsjpA8`(hveUTL+RoVpgdyJaUUr{KNiK83OR>DMNvDz*+qQ#uAs z@87*ny=2B}HCp(-)TKS^-#Zq*6f8x#BQMkXL2jt9FNWui>A04qcwY~nAAVi@R9DQu zejWeGZhTkmuKc8B;EgUSm6pzY!5fu7jN{=_dO&v)+CWOHA6x$VYScLyz990QXTwRo)Zajw1 zv~%roxX97wTjp5bV%~j=&omvGFZ-1{vh?(3eY^L_PmjCCT80I!NNIN=G*a(7D0I-T z5j5wpY%4ArH=KpSK4b3930B*hy}$*`o+sWoLwN+z}+LQf*7Ix(iGa9!@ zdm!^=g^m6M9FaUIhD@kUUVZL3 zU@%}>ob*t`;)Gu#$_~;@K?sw#UI3~Ax;iLkM?)+haTBYDoQFroSf>A^Simmam0U19Svy*)aKR&QKyheXK#kN@F%JSuUk#qL^l^(N|WDek-2)sges{c+) zP{{v|UE!iBKWo98@FHuU4F|V)Xcf?C`S6W=kd3-bTkqvCx>h3;GpL z578fbCT)xf`Rx1P;KmJD?W~A6Hk5x~hm6Zi)du~KLI1GH|D%61vXYV+cpM;sGJ|;z zG|w~W%{xiHOx4VZ1Y@7RQc;M#KhKPC%6B>uqVg>x?xRi?>T>^K9Vp~Of zi2|$xJM2?Eal#h+b|qk*-=R9wB8Xt-Rp1D)LrmnEC>wk51U}0#<9hngv|wBw1G(OQcYH7(xZGqpvG877ba#F#RrHE zL2}9#+bsTc!=LHy4xROF0wcQeGyIyXrVE>}IL@x~@Ji#*MwT)8?9+r`yYU}M*$w!H zE!$bgJ)d4gx7kLW31r%l;Npmh{8;d27_#s}>WY_hd<@SoDJhWR}Cs2CO;z+K2ni z3#c1dSi#1hwnHB8ruJ7P#$2T!<1N;*QCn#b>#$%4zgfcgM~w@!>)q$mTctk|_$T_` zE%-0AQ7VH?V~&u}sqh;H%Z0(z%stYXc_k1ol=-zEe0n1^$#Rs`EF(0rEYUu!`O?TZ z%c)`GKqghEi8xtaX3BhTVPYy(GqGTg`NDN|+G+)npu zeJxb_^R@C3yNU4okQ2%_M(*gmzfH4t)iy@#^#bvBy6}Y)Ro9a2oc$!CF z^JHOc#$fk*g_}m=bS6L=(Hdrr*J-><-^s>Qc7Dk0$vyd2DRpEQRx8hVU-BA6;~Rkf zHYhd}@BRlVIS0XaM??rC1Q7qRHXSc`qCP4WDlCuzZQb>O~g4 zro~53_jPERR*;rmzgFr+!r6K_^6 zfoGQdHMA*6F=wS+V;*0JFSglhaWRUyML638<@)9(`2<;Kw@G#n?ZgjD{Gy#_E*mvF z+Oc@feTSG&1$(C`BLT?TQ5|<{rg@iAz8@Ew{%avu)gC?a~*R@ z$u425d-Qmf)%JCsOU@8Ccj?0jT}S?Ebdx$;83HW{?_n6*6VMe-b%RZlTTMr_)+jbL zfWB&KGHzhdaq{J^Jdby?@ml@KQa8)jjAbSJ;7D1K5BuAOf9hwO%!ba-cbxKZ1Blzi zgtTcr*_fdb!KYYf7P_b})4!jQ(6wGx+oW_PEjuKwGQrXeek4DD24KPv8fk*SA-YRU z0__PuoHtm0cUd~1h=xe5GN(y>g?Q=0TDJmd)5m`DNFf3 zti1<(l*RTpzVkfK?xtt6o8C8@?2^9ey;njSAwU9wB&55Z75i1MUdvA}7wc8YK6$@0&$F8i=>PM3-_M`0$?nmj81bxe}j$g*iQywS-l(qQ>b`xv$mT&|6ZWy{D;MU%}3&|Rqk(M zom6SLNyd+w$ob9Zst3GB=l@4sP?h}!Xioxd5p57j7Mm`nuL{kyv&K; z3h$8oXP&uQ+*p+~7|j&XDAw=4rS96A9Nksga}liF~KLzGC=>zQ!F|&y;646!E+7S?#@^Fb$e#~=%5#!C*)qxUhQk`+gi+nko$^Ft#E7JvsgtLMk2LBZ z!NofMe#^#89$uWQ~BuUBY3Brcq*RZsl3EmR%#m%p2|F7ywyk`tx389sZ;a z$$wFbY=DbgbQg3^pAs*VL*31wo9(_r-Ob?NCkBx3E~$=le>|rQ*oTR>-@QUF=@#!I zu_?J79r31%??i=kkUdMhJu2^7qf}M}2ks9HadPPP_1^C5e@DD$T(_s!@=VX#nO@*o zfDF%r=Lt4VV^cZY3`j?0>OJWt3qXf&Y6@)JM{|E>9EMlJ>i<5Fg@G{FHEVi_>*J2a zlZu^4$ju;!t_=Yj)&;1hZwlD7CPbLcZ3x`3E|46XtvXJQFA?;Q3p)hkd10$E4i}$6(e19m$u#nqI)`j{{+jPK7+q7e=N;NV#U~!N^ zsVq#4oa^m(EX*@(k(ck2!JeW00U6n_$01aIu%Fkm!IOk>mj2s(k_ zlyIGr)YvSbW<84ad_(BGJ6kWfP9s;yB3-WdeCb*Tb>ts&zxtj;y1YgV+0^=EH?IFO zyNGim;=R=^;-yoKZ*hUnP@*MDyd5Uyj5=2i4Uu@NfveJf^yKV>2yQZsTye z=*R|XeUh3*X`l$W(Lzn9HT<(R)Sx(D1UIfp&Z_SY1Ro&Yqt|S65EnUCk{9_v@kO(e zXs?S&mEvQ9Vo>FY`GqMlI~rU$q=f}NaE~)N7(tvy#FI5!fA#e~dQ$vN?49bFaxnzn z0%9|8v4xZ1FGwEAWv^Nrfde?dZ)0*p0 zf)?`#LE@9eP6c!-?hrLE2*NY4H1U6oP<~GwBgGxce-e)<d4Koehl5}D^V#<{-xlP5@B6;qcS479#0KFz=ui~fw@7zQ8Ng~9Rv{=4 zh{mufYLYr!a@5#x!&;PnZ=Jy+SaZ5sd~Lbl9yDHjB=E8Dy-q2uWL|i#b4#Eox?;^f z;js~#3Fm%s9~`ZoSvfMa!eQM4Tn{*{=Pq&S)~|WTG~-xuL3}24MBi@i_sr58Zk z?}>Ng%wl@u7bEmfVqJRs92~v?o4jE=B#NWHHEvtg(;*hi#ZWi^ zl}u3j(EI9-62=qMOq{T?W0xjM+X2mTfP0gz(%pboTux-wxGBZ zAEr~RTPAXwk2$AZJLZxf{`hxrU`sW@FF3T$iEwIIqzpeDn=XDq9yVu_%17(C(FdO$ z5i;|MMB`j=6EOG%a;o$(Kd=Ty3x}#xk=c?a)(KP5%j+D9XZ<)06t{*<@)e6Gcs)V(bhMG<3bqhig@2Fk8&BKE`S{`E3Pf5zIStrh^ z2uKetty!_EZrj9Jfz=I}iKio@$5hqU?(BQ-dH$6*{hWE6_sU{;EblE#P%|tFKd9f7xL)7z9lC=Kfzuz3)FrhuP zt-ii;(=j)f{JizY1Ml7Qltx!u`#@Xs)|BCXSE&kf#!UAkFJ-p`X-9bJwBu)nQ}XifS{vP8KVhiN zO7aVej~_@~SH1Yjvd-znq%9UJuSz*kb(`Kv>t*S36P1)TtZfE%D@yxdV z!o>@ZqP|%5L(&Q4UzP8${#8ypemSyZ3zCv^@wj@C6fEAx8RZ`4(puaTgdeh%pPQAMk_d_nV(4WFVUfqs*BNpH);c} zcT@@7=a!0a?%dwLdHWr>-?Bbjm>hm`e6e?!D01g#%vrtZ{Q1O_^G=^+?WGtuC@RDG z@yrec(0nOLY91?~;*wWi zB^zFT*)lM!806zo5ak#FHy@)vvkNG(&^*NTaQ5AZFt5<;=Kr<$sb!&_TlMc{Ztk=H zWmyr*t-7()&20|e>V+14OKOa(J7Vl%Q!CcbKABQln{_gyVr0gN6Z*Ei$`081`?&-B zTIFYW=Y&#u96i(-Opp+F`~%`LWB>9s{^Ge=Ym`gHv7GzBg%3ZZzTr{sfS|`S?o_gb zc^SA~7uT<0Oea2|An3L4nxEA@oAtR?JQexL)E;s)^X+Hrm7g{L)-1l+eC--v+)T4u zL7HEo{1c$%ga|sF`6Gu1nu(e*o|!cEHbT#`h(XU;8Zq=0J$X25@9gOsVdS*>ggYlT zyYV@bM3H!JU#xU*A3LE`>HXAk@qdJ9@%54#Z_mU+(lC%$s&N~UFlkDumrqrLi_4UB z-+*~NXk3o*a8l+$I-7vHVjVaKCSPtU9B1 zHg0(M`c!Y$$ZN0g#Z*^_;wI|!3g|iG15R_Y)6w`%?&0FJVy&4R(24C?_d z%*uWb?dJ#%(7Jt#x_vG4D4lhcPWEqJSx6=qEiRQyuEMhjb<)%UXu&-zx04sNmdBN! zSpqPF2mO~pUkx0(n}KCh#oeg}Y(pe7PSyVR)REq8mX`W$y&#WUR`-VRO-6nyM;iJ$EcN&MM5hCgzP|t%6pKgR^3WT!Iyn%eMr>V7Nez>QprFH&& zQO}FdHfp1;klYDEPIp=A+=J)4OH=3GbN<8kPPSG|{^-5?+D4-9Tt^)s4)k9i&>!l( zwl0f)WFVHD-3{~Ih4Mymkm&ANtnz*G;O>GI%6{?rF%>$Ggz`zVYXd_2R)`NlE;#!I znkzt)<+g_<3?T-r3R6Nlt0Ax}iQ5^M5mvvkEVL+hN%6`fM0NL4m1eQ{S?1=ZZa1NH zqF{2)oAl+|6OzSy`Qn+?{y}59Nv-(a$Wb~?d=YI2Qh+uLMR|xp(*8<|A!E4LwBm=` zS8f+Sph_9Q{fo6334%Po04~;*Xwoe=;uDOXMqMu&rnQdHU^gY1nA=y(a^cjjrKxG7 z16@6wXRmDc%ScL?TU6L#h;ZaT!D7lwImvE%{Bujr=F%;el{3Qip`m(1u_g_Cg@CVI zl*M!lxrea*oMp}sMBHKgDf+y3*#y z{XhHZ#~eedi@bH-i4p1f;$A0#kB&$#a(5QrC+RLuIVmv{^2_a+5-ihPFlSb)68xpG~I6DhIkymD8N>oZxWi!c}>#*OqYOJ@2;$Dl`4JZyCYWXd{(Y-^aSifo3` zq(g34gm03#%9L?IA>sLXDdR$eBZ_!acYfFWfCxSP4Cma+!smaKH4Y@%3G{u;FBmIdSE5U3!c*$ho>M6h?=Z9geae zfKCN7k136Xbm)da>23ol;UMLM?Te!mc4q5IoHO~AsP*QV=_@L|%U5O`8=2^&|77p_ zY|}!ePx#pS)j|A|iM&2A+n62_+Ue^%KD#N(yyub8sWp)vLH!& zW^*!@@b)%mgI%UKG|Whi&ITH~HJ$f(pg(DDo>%TP^SEwDGIH!xZTsX!PF&N>+=VIL z`3q7HZ4lgM^Ece`46bgY8eH8bxx1O8l*+)E(YdkCj*%&zx>k+*#3B#RoH4iZV|5TQ znU!4zI_6pDh;l1g8wY%GZ~U+Mx%j{1hr>$IaripHSo@~7*RC%>GnGt1WZv>_Q5T=I zB+i^TCMd*Eme;zroYaJ!Jdo6G_Kj;xoZRK>9xG)_wS_m#AVrq zqn_GUSQ)u@y}Ns-um6PZf`r6HUDf-u@=8+8W0}6>kyHFmrH3?EMUpalaRi(Pbc`hK zn)v?0uXJ3#?yHWoH+uqmxPzRbwpNT4FZ8pvcEVWv0{R#AWs~@bBqiJqEEJL#7f&Y> z_KJ^xx9-_#X^T|6==00>xRSJV)J>)%iXZUYXOID6Y3Lnt-^a*m>nXRqm&XC_O~2}d z)B+NsqpEoDNLHUjZ?H~4PqUZv~F zD0d(4U@RX!%d4tqV~@d?|S7OYH;PuwEBaB0`ba{3y- zXnxhcoWjB-^D6h|6-YixGU(p}`qYb)3L{{g{+UvfoP-$j%BsA^ok?Q@LktCy zWiREv6QAX$)W#+BOszefTUZ=FBGH_*D!;5OF)?9fe(@+&l@voywJ@ zGkHdHTcCIDj4pEwsnO&X0k?H>Sc6`F?TnU zDV8mh(^BioyfM%c#XHrNP^;6`O)6&7UBHe?azh{%vhL@M)bS41X(+rbG-L6+brE zt9DwAw`)vdGCF6Cms@;XQegGejZ<9$%S`4p?z<7D(Z=j{GF{x)7VSQwWF_em_q9fQ zuy>X%=%RG{ATgl)2O%pJJ|yX=lS>S9TS@jZaoHZFyX9NX$Fc?c$w?j@s-1k7My*<* zP*~dOITbQ-@CM(*&DW?o*g6>&J@^BEoWgLX+6se~^A9qZ{4C}fBgJy$mg|%4^pNkM z^++~GXv2pl&~yhQGhv+E=MW!xwt8KhIekw1{&(hCzE34izttVAG?pK%-F?*PoB80Z z{pV`SE8dvZc~_YKc`k86{e;h^EnJJ7MS~01k0kCt1O}Xoi97T}@A!%Do!>0}d)l0( ztz-A1KGyj)&f8!IE_l2bv2GWE=68c%&t@l>p`;<+h><*vEarCxio1@GnE?Z{0?5oG z;x4`>WS}clXhE!T+cv&X+Ar&b*d4~_#Sa3>r)1C4<$)_bFHfCzAUAip=R42xzi)@_ z8}3h2*G_FUAxxdvv=ic$+-h?4R)3l-wE5HAch%fn>QC1sX2YK*e(BMPcK$RDxxo$| zgsz659-BFy8bw_>r)I{IN#*~s75#gqBQWDK-5#FK>FKqW zPv8c{%)k-^=;UH-+6DWB4LF!BvJeyqVXZ;xKxP$=b2gA4W*@Uqpbd+E9T~rplD7r$$bMeV;`o|R`(EVCU)x(jbYf?c`1cE20oHHwr8xvh|;>5Ue!HM z^;SeLESr(XZzOBQK0}}p?hlzVa1W_TO>fUa9Z)ADWPLwm%_C|9D-QAK5fY{g(0WLl zO5DJ`(i7D48i~yP)axI{ue6p++OLd1c>WOcsES`bPyDLs0W8Nfy$t?#gH{gYO??rm z{!HeS&n&`6uj(#$EPd32M2=U7X7q3eS~B$`NPew2C)hV6jn+@V^RMA~>a#LWm-2vE z;}$Mo`>(FAJWw+JDBa=a*4C1@SsPoQk#xnLZR#wm`5m6$7^NqT-*|o#`;`Z!70dr3 zb6s2eGVKFAveP`kA7OIvWWE|?K;|C>#7uV6%;)A?wv5j+q}&x25`eWP)bA;j;i+Vxx?Sy6j(>l`1Agg_ARm2NLrb>a#E%%wp1%vvXW)72OUln%by*$^thAab zEid1aQnEYq-TyS@}!_vn=mtPU&6PiASsqh*bHue|VT?YkXgW1}(6fmsX93Egb2uzs50kz$ z%+My2_ti0%nT?Iy)0#pjC(q2XGbFVG(wVwTS$p9 z%jg>3+_HODR)nje<+Fw?1YJ8+9-*G%VNM&`(3lma46aWdlaO_|zP>(XOhWddv3yQS zTSQ2bK1aOjp-BqM$%&yn1d|6@JWP)jUTT!soLh}mYlsY-(4mMLMw>T*VHyfe9StNk z(*Z;BD7f8sd66TYdqbwgQHCm}2H)i+PWIdzG}TN$SI=(gj5lQYyJ&Tyr7Oim-+3ud zG&OB;FQD8Vt}k$3*VMGuwOHb{*maT^?-r4}5L36X2r-LXbB)YdloFL3M$dOfpuOq% zT?&4O92+0+5F+tSN27QaqxFFyhRvbPorfz+sPH7#<8j=ZS|X|*-u!8=n54vvapnXk z2mgRZ zQ+%AAeSG7?y*#xJzR|&Eo%i@oM_wHh6yOT&&}T%%hb3eL1^f9SC=}@7?d9MZ6&$1U zZfMak{Z)vl&)cxY=(R+P$b%e}vV{T2GnHjNEBa>XX6I(P?(ttfFV-`-D2v;HjXYHy zZDV6IEfutbu)eU8^|@!*?3B$Dnbv?J8p_U%W|e0S2KUb}qSlDN7b-Qr6|1#g#YNq# zJ$f_33~roXe@w8t@Pg(-m^6R%(;2jZldL8vE;J`3LY_x*is!jI1ZRw8{xr_0!!RZ- zy3wK4kcP75M!=B?FPk1e?>RHKCzo{LSFdMpT8~#+ZcfD#bFdTg?uh#wv_aLA3$yrr zO~haPioTjGEg69UMN!2jvyuxBjP{RBjhFh}X7oFE7U9Gwh{X*QVGWF%=(srK<*_zT zBZ)Xn98fhwqZ)Z`ohS0+1Q4Cq?kv4J=)J95mO5xBH3*M1^_dor3iL~9n%Ni}7}sLx zYf7IoB3R#l^o}v1;dP6#Vt}$qD*F5Zl#O{CNlK8*!Hy?3%t<~A7BA!=J#Llmc_mx# z5Oi&8%)C6O@jc_60&<1WiR*Q$k`U>@sRGfP2w;0O%)&NBRlWm4sdRkAG!IIr$FF63Os6u^jP|*GcY|l%MmY} z72Be-{NP2di~UOX$zo33WOA9+qZWFz3eV7a7kdVNBegd}{Rh){Q27@*;E6TDGOWPD zNGAH|^yB>9TsiR}PjX6pPNHeGi-9rGSgHdr+4(e95TcpSze@4Dw;nL>eGoO>ZR+wJZA<3*4Jt^i6bWw-#QwU;N|%GmsnTyWcwk827jeq zx&{#Tn%#CLuVJS0Mi-ZWhQ|E#P*NoxaCWBeGoB*GF#J}={EVb4lE@^c&M?GV7fI_j*r;J?g*9fxnov*!0qv^a3AsRVfb*~ z8J#S^?eVQ}ns5G+db-Bscv0~na^V_j&qew7Ayh)kr+McusgUDVv0#D%ze}ZWyYU^p zXH%HQ>Vl9At;_4uGYe6df3dohNp+Fn$Qj-yOhb-VBi)^dGLBjC0k_AO>jM0{hv7dW z<97pYk1y9{@FaKzeXT@a&D|&d$m*~VaNq+j@pIqzj8D)H7)Jk$Og|HFd-`X9PGyk- z_-l-RcnIMCj8=k|1Kx={+>G=NHwt&N;`Ja_C(iWHCgaw(~}cKS*UXM4!S> zGx%?i_Yl5{qdNu|eZYtChu~(w>AlcKdO{6+J}lz{&h8>I(vt~8aOu8T^dTc%yV0o8 zlN6*E{7-;<&N6tl1RtD7;Z#0KLr&?@mBJu*ZKy zZpUiSabol_BoEOcp<)~VrYZ#G)<|%S)d%5Y3b*DHr}#4b6MHz$Cf+@azO`KR z%VG4bd{(1>*zm0AX=tbl5=28lPibEF2i3oW-#XO8NF5i%#`_iJWEcBBiRtk?$Pw>o zdkiilOQFXi;=|plPQb^o`uEHFB;nKcp!h@WA>q^Zknm-B(Y-3d3MOB~PAUHDteq4e z0DhU}3P+rNNWKae$Z-XeFT=NuBOd^MnaNkem*p$rGyO(OQvJ5lr})&~30Qyxec9dt z|L$S*ACc=t#~pk6Ryey?p79UAf2h9FU1m)G#tq}&59QK(=#BKu9POVn{rP~?yU&a? zlfNCD;Zyn))A|(k9ME>`87d?BJ6lQk?hxJc&iKM?(vB~9nL;~*j~@mOzE@N-<2 zQ#0T*k=xx!GmhB7sol26e^|z+aC>|!oR({kZ!MR??eVSfTJ)2v=qJ=y8s3kE5(Pml*w9@#(lV9DhO0 z?fA(W6GmdB-2^3+W2GL!dRgs29qLPS_{;bC5=`eg>X{9b@>)ry+lakJ_QdQ7`lpWig|V zkkSzUcK1X;vP1l{yL|po_ka!}l#u^3iZ~`ujOM~j)l9%AG5j_UH7l2n6MxY9a>oJ{ z@OtnRE0>PPO#irJeiV+UWc<4&d`4fzS^E_ok0pJT=v(1z{IK)4tZ>%I%&+YEJ*W@8 z&&4`Nvg&I&;P!JQYr8UhDo16iEJsN%89tSxQnF8N-$-)Y1Np9D{qmBc9^;!_4(>2o z$>hoIrBNS2y{=Gt+-m4~HtI#o!96x|Ikr2GFn0rAbiN>$Gy9uY8J!fs?fw5_TB*IJ z0B-NkA9Iu77@gqHPX<5Klc)W?p818+JvC{7OJ4kZpi_Ng^jW=g<$C)v{bBT3z4HK9 zacyC&-ii#AYwxF8<(dOOkKUPS^;4~I^e=XY2FuO_I#zfu;1k%m1B+k>XZVbtQkfsA z9T-02r%d99?t+Cpkqcd^RZrI%$rOfvac~E#uQT-FGW8Qk8^u>F*vsmB8~&xgz%Lqx zKiNkA>0$V3R{Gq0D?aRoR^=t*qrN*NIXk1i7{_h+$0U43E#UU!fmJ@s0Jk3xWcc6} z)Hj{gcdlID1XyKgTZ`hEMA&(SLdvKCLgK&&{{u zqrT~^z6_r`Hn@P5`#Jc(Ak4MlACvH9`$oqLYTs<*g>2v0UA1hyK(A-|2|s|{0Vmi=WxxG4}95Sa+FDs0DSh;t%%O;IYHttX%MKQt5B!hr#3Q`BAVt zckJZNj|s3 zCHdSAm*is)x0lcDa7jM)@B?=GX%FAc;F5mI@IlCs^)KkBMe-CrWco?vO#7WlRbdae zV4RfUAp=s)7{2AK4IVQL{*?_LIO_8$8Y)PSzvH zyUI@fHzoPo!6h!OaCqgokB-_CN&Z&&G#gx!zdhVu{#H236(qPMe|xyS{O#fP@|WRE zpYLLF*2;SOF_S;lX9;fAX9l-Wc}nn*0oV%YCxeT=Hh9c1IBGBBTlHDOr}`|>vFfu_ zZYPDy@|XIT1V=PohR50S$>IbPhUCu^S^uSb;i#OM{Qm^b)2?Slj#w85?Rfx*SkZ17Oo4oh&+29LFeE7m}6 z{dV$!S48=-gG=(c9WKe|cDN)Td$_%PZih?qv4`8~CvOk8(@!g$jxWk$CeMli*bK) zV{j2Nm+6Pf{Z69qV}r*Iga4hv<^C(_zl2ZwuLQUDUj|o5{uN!zDPpY!yTkO;3RiL0 zC4I$xQxz=ED&g6W)182;xc@LbY1|v4Cyz61oRsixP(0Z_58>I{NeS-v@)jydZ*zX~HJNQ%yj(O}j<`)`O9+Zx9+F!t@ zOK|bQTkvPda2z-tMrWo>XOb1JoJHx=QYb%zeKz>)VQ|I|>pv1d@Oc^jt?;=LTrm-J zs9$B`UZA!EHCWE-dpmr^U%*%X1$>na&g_D6HK?nlQec-UeF@%w8=TsOA%0-lWqfKk zhu~`|d~h4+Nb?q{zU$=rK649vy#%+cz6HKPhM&C!F2}_zUs>VGP4;pY1si;`J$x{L z!tLaLhs=-e7Wftku1Ex&*=6npN=JF_FW`^;1^oP9z%f2Bxl#I(oS&fdX(_kBpS%su z?6S-c?5ho**<~62lms8V0Q%I@(VdwL9c#KQ9^_EyGpZ>kRKV+J1KOgl|CMBwcux z&4=(jjnLpsjCN2Ze>V-^Nxsv_cIlgR_RM>LGg}B*m6H9owty{@?)v61nnSX(&eE}7 zh-Nw~!DXFg@L2WxXya^#k8c@$ihmVw75BF7Gi@uYPTJ$qHZvke5-m@L)0Gs=RS>J9 zbE6@hl;LI@+^Ulp(=ZoeI%zq{DB(G@0hKj{tGKI-4=Rre=IdEyRbi9WhFfG+F&NIC zxe7QNA0Vq-CaVexm;DlYFS(kPXzkw^RfK*jD;aL>-wZw^t6~0)B-3YYv5@z>U zyo~21nJR|hC?8&q70&1m$#xiBJK5Ucmzf_=W&8Co*-CIKTM2HJE%X!f1WC5Vtfu%L z_7nY?!ByOw^fQa!oMp1L&dWz|scSX3)*V4A4ek|lG zjbF?j(o&Ug$#P(D8kdyD3#%W0D?arCB|2<=V$;1_@R>cN^i_ot{$M?u2TJwb#_Ib| zMu)BkuVA|L2K_u(k9J-o%SFQbj=?dmF}R8Y$G~IbnDVU64g!n9xjf;z>{&!$R}h_C8@)>j<6rXwuWre{iwWr=FC0q5FpMKe9BM2IzD!@KE^3<0RZ6z%{$L! zWF#mw@4RZJn-NJZ=cKp%%Jm$=3kse?rZ`H( zBSTBc418~+w}(Ic9nmDKLk6YRAl4_;LbuNr%@`D1ZtwpRLthPR79oZ1ceG>_|htcQDYj^ z8s)#~%flz5F$|lxaaxFbWgwEc?LW=GaFr|Ul(0Qr zgXce^JL`W*mmHGllK867Phf$z;r5xM?IF`%a6l116%` z|DY`EtCGYif1iNA#WH`*`R3sq*>kJRbmV8N6cT&RoRdmWatbSRmu_Lr)+oa{W9<{c zev^kG%^&xlCO=Dmtum9^j2pZmevV_iw9T9q{~Nw$F|qx>@rCo1&>M-bD+4C+Kl@IT zpYZnv*pnLjs?_8-mlX+l1<3M}Tiw9gUI>Wt*grq&D*HXGHqZm2xICC8%vQdO+BD^x zIVE=MDRGCBN~u<;mGoVvgRtI-Q;b&ac5!raQK_Ak0!I`o-oe3BO{J{4^!Gj-&+k**;7n}Co{F^XoA38I5%944~ zDK_R;x+z_FSEY*!uT}Ccya#>90YvDhOpU{OC#`C|!p+G=P;k3lMtkbC9vU}S7iR@= za(8fYRH_8z{O5Sy-NAwPMCaFB()whew|n3Zl=jP?pG(x>|8@G`roEDySak$lxiKt) zr3<15a`BQXqvu}|cho&tEA9v(v!}6|)X6pLCbK>jo5<1qT*y9h6t%N_4m*-Z-sE=( zddOP)nBzX)MP;Ol`aRfq=Swq5#x`!88o^F~Bgs3xZ0Q3JE?as(_s7!vPxmc-;C{#j z&#&S?7v`dOD2N9>a!1H2?uH20gdfEGNr;4AO8F}n=4U%;oE@AUH4YBWDjbkjD>Z_k z<}^6CM{OdHW>w5`QgPUY?(F2~fCh*Bc!5(paL&Ao=DByiMALqyxkURmdnG91v$L-! z4#`M1oHilhb7L4yHi4#QFV#Ty06%*mYd}1VUnE|9)B1v1(S{b@RNe)C>7IF-sXh-o zMrY<{6SSFGn{O>0U`wzdX{9FXb|maT{WwCNr$GEIBOSDa^Y} z2-Adx#g%CS!}3SOKllA}KYy>e{_A!60_)5+d7z==!Ta^ZU$2Y!CQ$-sm~|%NLs)_= zIo*I=6X^Z|{#W?r5rU^_puD-HcuHGQN%P`kixwR}v2gLx%GQ#SRzO-8A78xa`0+)H zkK<@-NomWJVhMEO1VCI`E4jDDQc>30R#Mc~TC(^U5KkWG-!5rwWq?H#?c@ndSXpap z8O30vPM)A*WHUV`OJ|nFIiAU~0y`aBpeKJ(jflU1^e3g<(sY>57r z3NE?jGeH9VKarH+yNOBaxGX3t7s9PWX6sVeHXa|4HlJJf%PZnu0lSsO&D2LDH}L(( zm~)v_GY6+pZ$dRwf%RAR-2|aUIgic9F#Dhw)FY-C1o3OoeqCtcMVU6uu_BKD;1x=m z`hMx4yPMISBh#H@qk9B&qonT`MU!d{rHFBM4y8*{6kGV2f&ph#0`uKC;fkVHjnR%* z6e-m(70hP+{C$R*sEH1j*7Gx?#lyep#Xb+g@HVnX|MCzyQpf1zfX;jy9mN$vqN6NQ z45Jf~M)))k%ZVnLR|H_(~$KZA+~P(K~vig^(Tm0}d{R;tLt+EiH#D3ksXY71rliu85+tP^^p1 ziit^RObd~CR4AVm-c&hD-k|y*fJoCX{)qei=>6LY_{?Y__R@1R$%()l8*T*NSbqZ{ zHy;c>7T55ktIIn(+ZLAd$3Lu?4bV?kUN9#DtTCt3M} zUqKGvDSyBo!pPw%_rpCqS<3mF9`ttOcxKO+^gbDdLPwDLw8shC0b8h-? zRW(LqN%8g>eM@R;j1eWpmeqj)>D4{++sB!Vfk7$NJ-yRvOh)j|VPHDI?^N-yOs?RZ zo)2f|vf<7c$W1Z=d5A2Rta*r#_u~_KIGYr&X3u)!*;C3-aURH3(UYI+;-qkLc143Y zIaDa&l~kxyO6Lj}T(M1DD{!GuYLCTwPxuk&u;FxuCEhz&|dfu&8ch1vDtOu(NA(qS?%Un}@UDrPGT{#ywnpx2Jb) z?V+52p!Brvywak$H2;8t!bOwXJL(o?XFEDbGHOMRLnQ zxboAKfgiaqq4x#0`oz#3s6#dKria_)Q>T)rgo?5AsBysGl>XN#Q^bsTYdkZ2W($mIel_n(< zcdrqVSsmr&owYRu`92zR+^F8WGBVmH6&4aColVP6NGMGV38wP5_ER@@qbnU%hnks} zvR9)^vd&76G+Og^&{Q6B59Yk8%Uggi`S{)D&o3gHM z!>CcoafMx-cO=Ef3%l}*A^H-danvZw>26PF=i1tPk@s*;S5aY6Txx1z!J^48)-BA* zc7S6*&oX|*pHs##JLsjyk0C{mAMPOW6~CD#enWhfF~2wej{j0S1@iCk=Y%9SW&$10 z@3(XcNzJsbfqW~zJH~uWw4#^Z!-hez_-9&3aWl%?!zuYJ6~}tNibIq5;KD#;)=uNI zcJGZab|l3A?VyS~DV{nt`o4+N&eWbFHFr~9>2ulgbE(MjZZsv)!-t%j?Ad*n(b#D= zA3ew^Pm*z`MxUB6^`Y8R;@{bG9Bc;7{e><;bBD5w@hp=-lBD_G{IOB1MtNk_PRPpC z6|Y*nN*kM>U%O~Ba((rYwe_{hNphC2z<}k{FK8Y7LGb76G1@P;FE0u_1uIc_`3K$KFZ7f90ib7U`I>xW>9E5LIE3{wdiZ_nUVK8x=J zY~wIkHiK=l!6K2D=_I!rQ;aSfECR68Tt8s&on(4(fc=f(EwI8A??NuuSxzSyQW-BC zcn>hVSrQE6GL4l#qrAq>2-Ab8oIgEvF6RN_(B)E*)ChS<U>YH##+bI3Q{kYn+)NmYH zPNF>=Cud=eVYhI$ogKPLw@w^;9>X@iO7#m9RzloS0V8^BuI%< zZ)DPxvN~DwEOGZ%lud6pwY}8wZ}I2O<_^N2p8ix_Snc1tx4c)Cm^{98@s>>iX?u|V z!OPDpHF)OHfIFOmV<>+l-O5*4*}JWik5a~7oj%Tk@3^O7l1hEl&F!U==&~&CzZbqV zR$>D%I7kgi9X6W6=cn`B_d%BDMsdm@%gy8`{hx?=DE6=)?w8IvC6=EOukIEHh_D;R zi?I7r9zi_~)DD0S%i$v>rP0zML#~lKEdxJXNFn)8@W6_Y_X{uhgK)s(4(1=O<*&-u zr!UUju)!#hjsWq1KWX#FG3s5XPLY}0?%WnfR6hm>pBoW%?;Ae&$jXfyEEGn<{zN0# zXdt+%fDO9fp4lIorHQ@+11!6V?OQUYgXFt<`<2ya=jcYxT0P4vAuDrxOrU#DM^#Q) z_gMexSyj5k(y{E@u#5bnEoD{Btw${Dg_Z|96BBZcxuoP;(yyOenz)094>UI)wX7#W zU}5kB^q1ctPY$DP7`&25$it-8nULNFu?s0Z4ZSK0S>PoZGZ`s;lG1peH1d&Y#Oi<* zfe}R0{nhm6rXTS=5{TDy@rM0JauX>1rV;#^*IyTZ+_j5OwtUDLEg$yn>XY7ZM!fCY z1(*7D#F=<-^##sty^HvF9z6l1qZy>>WRgx9SjK0F$4lbPuBoUa6M`HYEG%N8J&awR zfE3IIWOrbBf~2&FDar919b^8L(pTS@llrzMrD}6u#*{5zv~^_!HwHhV%$*!lKf=RM z6InL8S7`C+jw!60;TTe!r;N8;edy@a9`VS| z$r~*vmG54BjO2>X##aOfKR9AU+t{`gfzu|GpmwQ zdm3A^l$waelVRR5b}AfE|0Afsnw}MBS*^83B+)k@X_qzOH98>j-m@ee)Uc!)<8jS_ zlwrf#7gbCetp6f?h)34W`u5%Nh(W7c3+{5o&eeg7^dwqTWNWELszKsXYY2n?e5c5~iIW001NZJ-l z&rm|$(vpyu484%PsJ_t`5-+eLimM@4A#ZTBCZcnoLZ;Q$?E6*JVU# zbM!UZF7f8^pq1j_aecRzcl5pVxjjn4TZO^iQ+j_SRtmIeH z*S2kzE^Z$YdV9qI>$_eI%G}@wI0H}ueqCv{23`EA(JlJop055#K9qqi5?N|rPJ`F5CTKM){Of(hKwS$h|oX$ zW-hcmNN^r0Xhq~aH>6#kL@K|j*jsKY?JwK(X&Lz-QA~HyIgqc<&U9-sU89PX80EM~+|L%8J6ET6A>d`&mj$NDUrxn9fKc@|&p zJxe6_%{*p@?**-R(8At3LgTa;Nz#1WNtzF}yJ}M&QJXmTb}>dT%nlXfN1aqX?f;nS z^~J9=A67l?_mGN@;8dqhiOXB7X04l6wa~JId^f3T`r1x}Ig|<~(S-AUDupkiYcmx6 ziXAA!q_d_Z95%Hw>FAsbKk_t;PRXT7feELh(pZp0r8d#avZ?%8ehtY}pbueEkDPw! z`_g-Bk{!aU)EG#-nPnKFN2JljQ!0vAHQl3+4r@p&aq4!X!NtKj$UojcH#{mb#T4q} z7w;aVQoFh)#^>n$Ima=nM$&NBPpdWh1_Y*0jtmL#al-9h-YH_Zho8>Tfpc)y_==_| z?jLtgA2T~EIlac5wxn}vdVZ*H635L5NH^qpc?J5VMd$<4k}^#pMt@IN=O-hR_{mOQ z-eEymsr4(v3zyGsKa*Tp-LrM=s?uI_ieHeUQ=HD^YNjk6B3iV*)gP{b?LOSNT4uh;v{rNW7x(w?jxavEZtjta z>|L&I)ve3BOFx)#CQ5Jc%gZy5*M}^FJ`2z^g;EcF4n!|uc^QbFIuo#>Dr!ohAbPv; zn?|c>4fN^=BQorhape5#GbXyt(M{wWTXdZx#vBsA`L_3!N7{959uCu-uxEF{hF#aOo)q~&{?s~a+2RWp>cxv)4rdg;u{~?yczP$9-JubQ7r;5 zu?(n(LY? zjHQjETi+|oDb6aJg`05ZOzrKM(frnmi7QgQqf(A-3pvsM{H)bv)@#Q@wrvzb!b{(4 zHpd7z^EeN!iR?ITSurLmLiw<8B6P++@y!+On;T(Luom(>gm;bEfdJ%ASLo98NH>ch zAe9`JLt*CW^-UO)^zktDOTCFF(u0pAUf$OOAMjpV{&cRG_{+0IvDW)^*F#fCzwgzj zO?+J+=V1A*?`ogrH~NNi=(~FLY9E1O5jvj0-@3sfFs!dbdE_`K4TI9AVm>D%!TK*7 zzl~@ra6$3)X?%yXOM%Y&j%|~#beZNpKkn0inA}6}_WgGDyOCU`@4$&Po$t1N-5;%r z>iJ~qz{ioA;Cp;OaCRQQQ!Mu7&!`=f+vcv#&U(#c`r*Y4#uq6Ni1)H}>HcHp zeY1Fxquc2MAB3U$)AD2bm6h*od}jJmGLPJu9K1Rz(_HP~_ON)Sx8ukH4+I&}=g8ny z;YF1IU&er}u*FnHG>9h6<816mUMNd`7J)Rz5q6)YB(1#t`Uk;3{5zQzChOnb*PO;l7}9z2*hrzKm3-b28u6=*GVVYhamUeVi)|Dxqtkm zbfvF$%LZ=IAJN=LmIxZNt_MAue?>*}yI}m5KeHT@Fsam*LW@#uS=Z^Xo1~8LQIZ$- zUfI0gYyJ84+DYSAJgo0K|Ls4V#f0x zZeDDh(uQ(4n%zcN%j$ucas)9THp}WlJPbmprR+TS_`p9&Id{BDJa3s$)y{aIdox7% z{Euki^P6;`Ko~@nK{yT?&TPfP4EEWbeFmDhQ%h3?vSgh|iVDvG3r0Lr$zhic>lT=8 zV0=gwf;Qs*QM~ph`a6au1vrYYk|{yrLCeIie+hcfZ}G?BV-uZ+-tsPo;&Q}a@QXOF z+GL)vDLyzyblgo6grhe{^UM1mJfE9&vq?BJu$sQ5JmR$sYkAc;#T^Cv4;Tq^V<9w} zeJ__wNsi-?X`VR^Zk!=34iM^u=se{4lyn~trc@pVu6x>}d#b8NRX#d(+M{=ks@(JF z^c5dYn9wxw+=t7TeRytS(}W2h8h6z-G}MW|5r>_3-nnyEukdxnp7YbX9~)I!S$P+p zJHMx*Yr=$yAF~JW;Iic(Pnn@LgG9*3 zNGq8_j)@b+gW`a=)j2UycrP*W<}{%`DB_&uz@rgD%FQ!D;pe!vbK&q4VYP&(AO}Z` zJT$iuVlFgj9gXl0G%A=N;TxOs(ay(ui;BoX@{#$AfY|tR1(}(h#)5H+@B1vaCFKEe z^O3v-ogU)-T)_v|+9NGL5>GFk&TCa#MCGV(OX6v=Vy`(N{w48WT#etFu4C3g*IBZ$3*?>bY&sv2 z*IKZ)BFHbc#^Po0z)y-EQ!Ttf6av4=xg+zAaA!9zJ3a3}+VQ#nhqgC?kFrSqho}2_ zW+n;2WHL++a*#V*fiRO~a&VIn2zNjTA>6legCL-ypxlar3y3U6h=^I#fQk`N5j?oO zm339X`$S<~4lSSXJ!(>|GJ;wn=oW%p6=?Z>gwvM>gsOuhoeLs`)bq`C>ifd z>-*|YE;X&p{G3kqwp7CH+GpRoq4#v(t}VnU1*?KQz3=hw}dn3EuUZcK}b zm@r+Cs>D0yI;H}KC9Z!lDBMT z$vZr*@NoWFcwWE7ciy$QpZlwRt|3D@j=8m@;u+TM=~`C&)KlU>t-ZJ1&SnjCl?}=s z05qU`+lw!8CI!x#2|faUGQ+f32-8+XpKmd(@(lGoU+a55?;6i{TwNa#Xn*}3maFPt z_xUYX;;8*b&wcn=?)>xT2L6_%4chnDze}%wo#(##cQ>f-$KSxO;q$BEU+?)cjei#3 zb9OO+|5yp2=Mc~Crmxj?%I%biVb5VvaG{f;tle2kMU^tkbAMF@4=SS%)m0TV=CCG% zQTLqMkIDzbCxz@=GZjDe% zAo_$>#ObTrNrD#)z2c5yysP+BD|NMFje6j2rab5 z&e9u68$Bz-R}JU`oHVqULT!UW7x~}&QSwX~p@6!nWkmDos{mI?{7rQjhcU`n$yYa4 zuHe)-QtArW)-U;tdEWI)l#GHU-u3hNj4!V$kLfQ5xhzmIYK&fnZB;VFgfC@xe4uV2yw;4#Q{TGlKH0Sw#m*m zdAXUcq&Bvu4$#sfDJC&u68~aJftc{woo!;GqvJCQ+9no+-f)9GvQ0#f!rYc|QBkq2 z+*uis@u6X15sn3o`$dlRj1+yexZF{ED#gL8DlTs{`gh}HBy?j~UiNoy!*N3W3n9tT z$A}|}bOMjmYG`BRGKMTq*PzO=R|Tk5-jAgm8~TUfWVoYTx{#!h;N|csSJ&c@8DL`w z31AZ(pI#z35H^QCc5?vJ=Aw~Hb+o}N@yXC2Yg&Qu;gtX3msyA5VzNJMz^sF=>mCbWTy^vPF}ftfsa9!fMGPMfA^ zDUe9N%CrXD*;FmwGWY{;G_qA@R)>6B^T>#>(BPR3xT>Z!VAqEq`WSY5VYVB%H`@W) z!eS$v-`M}eJCf)lyq%Y(@7*UblIWr^=}a&l$wgQ2ui}tWDU26Tdiu7$f)MA zm?;wMkxdk<)fQp1CP0M349YE`mSAhFBervFY-CIjN(2YlgMzG9C8)V0u6gHJ01C!V z3cZ*4G9}!W9NeTyaA+vvz2P>SBOx^-G?cz+9UQ7EKGnd?=8&|eHd{nuMjDc|&B%NU z2?|TgNQ|)A!jnVHaLDu_qw(ck*q{$+_k}4LZevDDvO@_NHk|mb<67s}K6$g?(;qq+ z?5y}D@n-{K6}y2xXi7@*eKu^dG3LKfP7iE4a|Tvc?93jeFlA(2sn|2<{N%eAc{^=_ zv3unGyQiFQ$_AFcz&{W}mD>}%=U9z|fxXDc0h=guk&HQk9KQ$A(iyS@`SNPz4Id8m ze^cJLs$LQ*==wnEC=#pr-6)?5ds2DBlds;~0O!E=DCni@EA}A!qT0JiZaOH^M#@tA8!;t&EKu| ztf5b^rBMwsjS;D?S4K*{1mYRT-@`hG4^Q^8_wNnx9K_1iJC(1cj=X9Jr08Q+lY2yP z_351TVJtPFV}5DLkYPoA-35sWY%^W*n$^;s->O|&YBL)*P~|z%{Rj6dL~>btQf@)- zo%UY+N($|NX z?$E)du(>Ga2#M7luy3S0bW)p=tE&}rbu}q8Z#K>M$}{v7b|2Yme6!~fmg1eF*>3of z`W-qjtD?eG_Y-B94N7q7*v((o{lMBl-<<zbD?3QmKo9pb< zxo6R0XItE{5!>FmxTt66UKw#;8g_Xgo;2C%cKKCUWw@_L1nVe)C1obWI58I&-k;Yk z)9H+f&R(D)+-pSnlxc%U7xl_WPfzcyEFy#a%eahQ607#HF);~kC03oBbNdY&F?r&M z;eARn($d=W=v7%hW%7s-z2!LS&dy3d966@CAFey$?CfIM7smX7{gqTk+U~5o+K-%c z^br~9y1&gMbsrt&q~l5k`EAleH@tI_GiiJA1Muak93%s#7vE1{;KbKI<8$CKZ~1X! zhVyO|fYV0pYcx(Lik2-bXm2Q;S9yhcmC6lyK3p;#q8gu3^*Kf=N3 zgnIRH8Q%a*U*sWJ=OcKeIDIh)s;S34Bu-ja7(Av%iQYzd>YTwmkmehmfp~gOX#{G( z*e%k`0C!&TjY#65k9O%d`2shZROGNG$9zEaI1WUl^D&)JZD7Mq2ONW5={Hf7LkfZ> z4K6;#piovxEmQ73MtqauoxmVZLwus7n@>?5O({78_-LJ=#eJ^ACk+`ldgMow z608awmEo7_Dp}=B*|BTTY4E%oWFrZ(O`eoQs1uhAH<+z)2*XPvQLT?Mt-k{5Y9kFx zHZp4E8*u(1B1Zsxo)-E*&~0wS)EtPqnsC#IbY&>A2B%iHZOlp5s3bOX_p*4e zf~^$AL&xNP*p4PAMPrgURGVUvtU|(!^bECqZG}qSDwad0}`5`{SUWWn~%KqvNFD`tn7FCmingu zw!}M(cKd&vD1NO*<5$r~R3X9x1`(y2(UFE0law)HB+J0gXP{I83I)Wo2R` zyElM7-K`}0{I)Xr;b0YwW_?_<7G-4^#9tVwD+z>inGa7XN4|If)z_t23b#FjM^afC zn&@A~29rKe5)7tzzEEae)xIvp+RW)z_Fh#12>4h==m+@XXg^JnI!+hnD1LxZX&H;? zUsiUyAuXQ!slK1bW=N5VdN;}49zi}S$VNl}aZPmChO%k{dtoz}B3Xj(^?vj*hhY17 zqruLw+M?WcpWm)I;QYYgva-R0e0Ulh19!?~tKIxQbI>T>L+T&zm#Egn}hJyTH3% zwjWqu21+xukg0>+*QhuGs5&{bcn+%1qxwcXi{j8yVrkfu_$E2n%i7@P?|9BEP#*G3 zUZ5niF8Z)8TY%q2^=U+r?9pHJyb|HfQj!;VCMypu@SNfA$Z^cN$eLP52h_(L%jjZN z{JI?04EptXh<6oi+PHCJVNxaj-!x(jO@dH{d|8ht@zbOFCi-)e&sz7>L@*7XR0El# zH=*p+OvQ?-F(U|eWl|x*E(nNKXi%%QHe_G>Qem_Uno$64^u;fXG8-pUsmpa@kPLZJE;YG z{*V9-9ZPE?O)1BZ`IL~EpyNe4)u_al99VonH^a1fwi-XcOYz}lz%hbcc576M+wMql z2gK))5BnI~QO)=a246-qxrMm>zyWdmzyY7$_v3^~R#OUXK(ZMm^4e=u4Cn`m)HQH2 z;&!-?*P-AQ5W8cndIzh9m+dE(10$9TjKCJ3%#*j`vuU7oU5$JU4tfH-ipF&t`X?0c zq?uWBNT_N94}^4NjOie3=AHT+Z;hheLH1yDlP!sLIeb_N@%%nOtYNn(%yWhRdgRE+ zlOm1X!frVxkh+ih|3T-RQRnORY02LOjf2(g6vlQ|o*eZmn}1yFI?CoL13kYhA&13z z&lRkyQywm8KB&InYg_J4!V(Nx&SA=Wt@H(tP&k{%e;s*pd@ zY0$2VDQ!octUN5%9%bdn#cGyLG#q9&qJZkE0XT<1$I;vXq^+(P27#o+m>5bgNwM*_ zM!kBt@+1;t$|VJ$gnh4X7r(4s+Y_6owy?>xn^-*5fEOVI6U+F3X-h%qIL#*E z5q28PqkNP|1y2C+xHs}We#ha%-lc%ZzL(IVXj>NK)ZlFsV2Sa~kU%ZrK`L-PBi76b zO9}O}3#F9+dVJJvy-Ftf04rNc2`s;3aY>1{UjyL4*AJiUyJ*1Iz}vxp>FN5x_pGWs z%0hdx(Bq@T{eJN09|3sf3C}Pz;XV3i@Iz%>N-_kOV1Rf2jCro?2i`Id&Fd*oMBCqu$2_I4qXZa=aMzA9%hMp z6Gx3kzkFYv2H9_v-H1Wo=v1`W?+EnrGC^)}e!~ zS+(8PJ}Vr2H+(foukIDYZnGO+8)H?vdsK1Qa7e$?AsDN>=tj7#X zBa&uovFHe_C{j8sr5ax(Jx5SvtIG+F)-c(2 z8a%?Aa@}?#4~t{BKJxF9?389r2W?FGPz)U*-0x1~O=i3++)A+x?Ju)4N%``H;K!{o`LFob~~Bthp~z0HJ-%2&B@IoXiw3a`|&|UD`#_ z+-hN1+R|6(q#oj-_f}3HGk)(amAPq66H5-3%$PTYh0e)|>9XTa@k-nFy}G)3<+P0) zzUA(M)c6}GKL65#n|rtEHK=k$|0mn-YVrHLCuc7cbz2v)!4q=xGdoWlJp7+eQA#>! z-V0vEgI8D^aFd0jzxMKHy?yDW-0b;V4LeuEeyjnH6w}@-+tqkW4x(~V@=jSB^4Ad} z0E1zl;pKLPVHcSVsc$wl-n%+>OY@4=Ys8PNXti)M5&Ljl`_&(c`qgZm`NPX?Mvc-z zj~P=V9PCH$&7v7Q2fP$hZ__w+wYmfGk1P|d3`S{t>JhQOfl(M5feG}DT-WT(X!n7I z*3IOm)=1jc8bxb~{=l@FK7M{?^Nfs)0Rvt-J-Tb&{PDMB#u^{H75uTIq`06kKhD;i zw@hvMwD+Tw^pYJtd(v0o>h|&T^SX|nHGTBx0sRNIY@Ug_1>HtZpM}o@2DXgDP8J0C z*A5=ovt=r8+1z%Y_oJBb1o_>-!96puuM5KoXK1biRTk5LuC3MXbP@!&bXRaSFt^&Kbu;G&mXpCmZ2NqhOw7;g)xi{=ZJ# z&p$V>yF6PxQvW^mZ^O1t3U)BzdR&Wo)_d{YDQvd41rS5Yr ztJdP$V?whGFOHW2 zv|?)+(28@`raNmhoP_C~=6I#zm4?SrwJ~@c?W~P=)+RV>TQ~{lJvO`|@N(c4iBduB zYwhhp3DW(E3|;0x3pPMq)R7o*-A#m4u&Xx2Wpv3ND==lXX3)c(k`Gb%BBIuWFYM0RW=^9^h&<{R zhcs!3pmr=AndI~iy`uK_{1n+~{5`T$zFEHf8`&xMjPDf5Pu29!A5pX9Q^r4CQZphS ziyDn&LHr2-BF>`{^wTiRB zxG+Qo``(BOgl0%zffVd`q7bUokJwwR5#@G4cV+N<9Fas!`^LF+hrC8iaaLwvF#X(d@<$KU}u04P_J>d*3jLKksuja1!$vN9_*2O9{$9P)Z$BdH7P&#Fn@ zheZ)PxQo3gdMMx5)K6!w^;a`Cz^7;A&@K?#H&2l&{WLaF;KI=Sc z{7ZWZ<`fps&YU=Z#`Nx`Bgc&y)^=85@h#2=c9l11o`2w&Ht@FPj%EvEn-3}~?K`bY z$Gk4lQ44Jm^T(Hrq&Y#-Z=DF-926@Ez|M}44IV=`-)Du4>UFMmX*k`Y6CcAt78 zuM+PD7xlR5j`kZyEZDu{j=^{K?{@c%x9|KrNa1r=PFOze<~whhrxRkja?6rWsviHq zM-F83cGf~2qW*^6CnhF`hC0O4x<+ZsS}3PH9}u05%3viniOML^HQrggI3$j%i+)Kl;Y0H`R2{kB{CR8e)y_Q_^>6$H9)K zYUq=^=$mnq3-S`<3kqG+Du4DK1+C=kefqa zVIrpP!0dqE>L)|hrjEfKhxRS$6K@R(-5njD-@WFhsW*n56i_u$W!(_DoG@rii_lgDX1zDulv-E@&+U1pmk7CT~*y&;>kAUgu#jnGlu z9$0?gO_lv`9jU)rP-IEIX+p8pGJAFp#k~H~8UF|9gf8MX^#Ldsl1>dOoEZsK0TG~p zpr#RPjqj;7{d@jZevj!lRrKglki)ch{jze!K>dA>f?VUv9N;jna%%pP^pN0(FP)KZ z+l1LRT=QEwZgOyv;@>SlNW73|U~Yyctw04^rfu0k#SOwiI{S;?D`j!c`Z5@ z{-%RCc#ZG&`yTrqF6n>6eesN!4w`8hslOdO{nC#A{#)8(bHKD*jZyCo&#<0g*V4?J$q%lrp#Bzs=G ztqAe6ci1bFnA>&2s25d-lRz=8-{a@lRI_+Nv*_# z2pmZp1{*#XD%;Ul@z8?kA+rQc$GiC3bxA%+(??B`%t{(OzC-_eO9!kk8?%%p%^O*? zTG?JxU0ayv3QLXZ*zKv#Zg-fw6WK^?4B#IDd^AY#*`M@8U<=pk4j#IjkH1!rP`=tY zb&>iZBD*-jhQ_)>_CSV_mVu}QSc!3;12y2zZNcrz8;?&Keq(XY&AkVuRnFk8y|-?j zGyHotXnnt#y?a)698o-^XW7!G@vp11#b@@^bY=|I#E^fq`_OLX?FN)L z2~O68k?c_PA=<^3N5r~d>=?Nk+R`-ETd%=$9|mmDC3ediVd9IY%x-&0tXacN-n%Ey zR)$<3pF==rU0EmjzZ!aNv}pWczFuf%+B4lf;;x^FC)% zVjciPLg2rnQU9>yQ;^ zYJEc<`4vv>s)LSjSe&1B^x#Bs?GR@=wmSlr)-~8{^t1gM&!Q+v{Ld8-4P;VHfy1o{ zR1?PAkp_I%RFimzhG2-<7=z{z3_|=+Ut~c>j+pZBAwZ+hpzx3L#`-0oXWBC*gPqRG z(guA&Nv=D?&^tNKto|cckInC(^+=b}>^UQfR`&ts6DGG9x0>x}A{9cjy^+C&E<)m6 zEAe8O?3kFRb2@b;w8O>0RsrK^gX|w@#Q&A8GVQ6OU>9 z{|!9W@E&|^yp1lumN@(+QMp(ZY4!dlGv2cV3y>t6;6ZK891{It4F59v>Y|c zndUGhnjNVb$>toTgP0}uv5LAE*idgvc0cPa9fx zcnLEgq%Dmmk6c>x!~~)*5T<89smkur4@kmV6%_()QjKEa3gZX|NKft1x=pM@WkWv? zj)@&sTGqc`Sz=7^=WLkjXx=udpdhJjbB8LP_}mf~S=noF-+}$oqMCdzYLv*>Hm%Pp z$dxV_waZ!1t)t78TauT(Yg9q6j0B~tnvl_}%kW)^eLHn^x!U*7>L?$;7uDxi4R^{C zlqgd|)U~jq@xZ74DGuJ3q~xbur$z5qHDssBIo%vXb{Xug7qAySQL_iHd=GsegEPhO zSw3an{nENbDXMqnoP16;=}gqq%E2;a4|-oD`w!0-X>i31?~8%Y*$c>xC}r)`6^eFV zNE3>=kW~qfDaEWyUFkXesGU6ZirG`oJBthaadF{=-MiVwnwo3X$C@%$q_L(A&QQ=s zU4iV99frYb8n25rKdpGY+cB;>&*^U*lSmHVMAh~jLu-pI$2$o?z0)G%;#p$qV z*{%n&S@yjwul_9S91|-J;at~a&H3f5-X&RCB_+-aH8oxGIv4KR)qFHGGjNo=wK${= zVIw}06+yUZ2M9ZHdWmty1{s(*VM8~X5S6m^o-kqkgo(Whre(Bl{luch)w{@G>R!Wl zkLy`HX3Uy#v)i<6IiXj+V6AeIROC(;+vq z(2sBY^phbvDNi!f71OpWrbixOe*V`=S||g@2Mw!P3PKY;P&|Ai%RDxbsoo7bMh>xv zxAaa0OJM&MgSTrf@e)of>@v5h#55oPngg>gcHm(LCVsIVjB5)NM-pjG-MFW&h3eE# z_{oraMahRrmtR}x!h`JeWFIC=03>C&a>C-IJ2+C9A_HMLLr*x5Ia7&N*& zE9{Wh-TX$69*!=Vy(=qwXLdQ+acakoQ+3o+-SKIuE>XqCxZ;XBiJHWsUiOI2Vd1mJ zjGs5PXKuGH`BOjkzSAi+W!_7-q)gs0c<_e7zJ6;aX>1)pn{%aF?9d3nWyhPw-j1`QwH;>Nr`;-Oz|A+HK5;HL&lff#Nt% zyV03NhK(^^K9)E%p>v~*-Y4E7=$?%Oz-V8J-^#(b)DHj0LZJ^2c4X3|@nhmLGvi~r z<+dE&q5W7_<*d}qw$XMKD|B)cv8hXr_IGw`(>At!bf!BcX;fU?*a7LqZQ4Y|HVsK= zE^Vwd%t@zVhj;9n*fbQ8Sk*Mm5_&_(v8|rba)W#j(jY!!X)tOo#ZqWAvJFFk_hr&%KJS6-bsrX*6U9o-vrgsW zX7+Wt_XuBef4m|@bt8`TxUjhlv|{sOfNVtyf}mR%z)W`!fp|CIWqby^S>tW1%?+|fkd@8qPb zRL=d1dnjOtQ`VE2K_9CNNcniqDuB%P?PGm+u|9R*iV#c)_%UMmKKQikYBF1%QUE`g z1*wr%Zj$g3O!dRJXUeQ9BB5MK@tig^9NYK9w{_yVUEHXrTGuz*jVE*|p*CFpzK9 zfI$QG5reHqexxdA+jLlZZbU)I!4G4RF!!tqo#O|$o@c)(K4T+3I=p4+qAee7ANLY# zAs+kal`VJOw)vAP{z=5jy){8>Nk1W4_1-%<<*@uL?&`;Q%hJ75Qb-n%pRv%K2+IQN zF)S@74dXD)VOGqJG_+xkVxNlz+&Sl=KCHc1KY_jH74shYO8o14_Ta-i&#>uP|GstK zYH{GH=TC?=S^V@&h;Cz;WQw*3*foBk)qfePRO2J?SKpkBx(A5SkFTY}X{|)gg>oHo4;$7xG z+Ki(E@Q~L8Z-faW7^B+n(d$-lF7Rz=$%f{sVG`w!Yzi->O@m$S+awP6rJ5gFY z4zn+q;vyQ{8V%Tb@)>)`d!j#I<}Dtuz4J3a7Kl&Sq`sm*`)1yw?_7LKnRn-|J^u#C zmumJ_?wfM%_PWh%Y>xMyULDcK&?_Iv@g0XV?T{r-GaM}Gz~GbLEs}z&F1X6i@x@6> zHDUd&fdiulN|?zfwNkI>?Iy|dx%6O>G~#8zpQ1#%aUV&+J*G)98t+x2d08&FzdcKO z_wU_%aE^gMQL(3$A<#e~HjYAvp`q~!2p-18YKSBxFq2QbiT#|N?}L`wJQc#2;do?l|z= zgMs|ivR%)y(K+YJ>&E|r{(d_sELZyC!1snG;%tucL?1fxP4%x5E!I%Ad+{HF|-z<#oD}z}@#ib>EH69M^IC=YxE#irZIR(k$BR09e z=)=C7_b4A;Qn-1^u03_;7Km{rBy@Q?FM)WO+El!O{A+8dWN0(wMi(f7Vj<}bfPpL(Igc2fuZh0Wiz~LN?4)gyd5=>}tlYJ9%$m9f9(i=%L2*+S+dOL5ve9ez zZP->-chK`fUIHKQP9WVq^ve6-MSIME_+VC8Zmn{^Q{c+>eA) zMp1a4jT(!og2t38`5#QH!D%#OM5%CT?6UoI`Xbex>gLs-iS=yO85VS6&mM7FOvBnj z%Jbr@Kg1Jk>`yH2`G>dU9?e^}^;6H=>Ur_bfRW^I<*me-JttVu88%C-_x5|9#r?#_iYNXMUpDkJQ^n-B6e=1io$@T)B^;K5!m#;cx?5W zHLH(e1^D2qmqw3S$%}TZS#$LDd)I6{v~u;RF(f+;;J9Vt4!J_G7ZA9jE&VCwylCZ^ z(J!sSa&-~zy<4;T*p7{3My+0XXyclDUq6bYmC@JbS6;<9?2K4jB0!Q$N6Xe$%tMrW zDHGv<870Cc<6I}cq!j41ab*oDBJ}R)^JqS^i~Xm0iuc8kkUra$V}xFt==)QOCAMdC zYBqXjZ9EGVepOrWhUK{~Zb&$xD>JFc+93+C^Ocuf)t2~)^*rr8&3jN=EdT1Z`2D`N zq+LlGoAdFaQs)c!TNT~kxDr4hq*e*(!42Fy;JvZWd^odTd&@twdmV!h-?Tk!rA zVw3443ECcGSn+|(NBB|CLezSOr}7)Ub4nh`{gTBN%pOj?u(xDe&KKg`r|g3F^r$81 zpH5{pH6P?WQnNd8xa@^fIge5=DCvh*t{l@TO79D;?Ic(y@?0Lh3;bA6SNO8s{B7C$+L#lYEZ6 zR?0cd>R^O9;M99oDdgm?squCtrbb*`1jSXWx@w!ajNH$x4n{m6AVQ%LR9B;ZQ{&xCBsFTg)KsfcMMO}huUWS3 z&nT@8uC=1=5UuSdM5aucHOMqjLRv3IeIUtX9unDgH8pBSPf-n@BHLFGyPK*mRkvYZ z0Nn;_GGS3e*GWj$!9u@29^JXBk%KM^Xn6q`{wRPgY>-pL`yjgP^68fb3_$X^Oh)&; zWp`*v==p^O#d`8N-u67RmNgUS)a->q7Uqk_gWTuCp`mwEzZO-GSBIK zr1)_yrMRsnJ~pJo{lC#+C!YN!{11Ek{bjtxhilh1!uNmVyV)IuP!va@$WBF@MJ*c|0~|NVAv}Emw4ZHyoetEmvQeywF2dZ@_SO~sX7%mocC)YkDwVXpV9*(Z88L&h zLrtA%-{$r8lG#QZ8Z*+Ha#$luhE1*znr)gdpUE+M+RZk(et13knq;~X7E#bMlUc+$ zW{(>pI%M`Nu;J+OFk3-!J5diS?_BI))0GbGiVGsHD{^Y8#neGI7l3P zNW5pYC*(&gW9=S_h`@s%H*PE*G>{c-VIAlJ%@)Mh!(8Hnqs;O4^VR30{|pa1F2Ie#0o8Pdh_C+c@vI389gl!#(0E)p{rh+p;sd9o zjK}%A^iW(Jj~kf(7|(*QffwmFvq39#7H^`{Nc!jpgEpK+@jY+PzgEV8vWVyT3|u@N zZo)=^bJ|7$fBjJ1@j;H5Psc)@z;lom_Wg`U$&3PFRF z6|ib?9N{z8XBYNngc^Y~ETG^Aetp3DkBLc$EC&XZxx!1S5Cg2zHUS( zt`TLZsIB;EYc_n9K@9sH%R!CeMl2P`yz|FC z*L&g@1jw?dCy&3W+|tVR+u)JsSBwxpPkikB3+o=2Qow8N_EDuT*)GuNE~4V-z~WzELft(gmq32&cJ;FJ@dUXmzJ6Y1<#$a^Q;T zMA5t0Mz{X6$VayiTTrp~iT>YiJ&83O@%1NQPMh}A&Bwr#A#Cnw*s*ezeg1IM#kJ-+))}scD9x^;cUG z_Kw(;f!l_EB|Z}0@b2D4bMT%o7u#8LF~$6N7i_`mS|h&da$0TX*~kxhyIu#TO~Qlq z4*`xcU~14sWQTK*vftOq- z@m^vX8{_kUCwup(zmg->e3Eo}?*wuUVEO%NpryHg4Ln-_ke*-?0j|?vkYnU2YCcKA z8Y+I0YdC4p>##6<`Gkkk9+O&X7LWmrX^k*#>RK#a_&uMF*;#Q|Wd%5#Umyx_2 z8T#Jia^3caeT&Z;8O#@uP>lGp-Zr8m+Nvy;!^pn#Wk@47*8n54z7!z36n746tVd&% zjK$o0!^KbjHd%%rsSh3p`BI+y$oOmvTEj61wg(@vamKb51@~!`KvrBUf%}DP1#0aE z4p(P&TgtB!uN8j<$3_wCfbO~mj$-rGaoaz|(9ns#@GaQ~><4v;5-aTu*awu^C1+9m z9f*n4*Cu{`!o?1GiSVYYj9YNeUYP`JHT6>;>^cou%2jOVbH|?78?w zc~&a}BC%~;c}8rjVf$GmJP%Mo@UypKCSeS^Z+A-_|WtG7uq=a=A1c7k2xbmBJrxJ zX(Qicl#{$dxu#T%M+cPSY5ZOFY4aU^csP)t0X+UB00JI=mv1u45j>K*KzOno^d*~% zeGH={zhn>xw#0$s+Go9u@U+~-C>0_Lg@c%rg>~4>Iy}Uj^@o%Ltq(2wb09$@UmIj|0OAn?E`876Y5k&C7{4L6(OEaYk{>Z_|)ys`G@ZBuh{Kl=NU zktYYe+5MDqY}FepRvlpxGhO%e-+Ze0 z3~^|j4JlhP*Ad6O%M3Utj)$k5IcH=utO+=@eT>QJotU2K1s5NC^5N40vmDB)L#iAS z(X`K40O9QIx0gPD*ImPJy><9qcRj!K?WJ{h-dS<$trd6PS+`UiEAG&~xH#*UTe6Ca z#}u~{8e3dEwy3y0-~Ns`x}f6DyDBS|zO!`SU3XS2pileop`wyLu_~>W7*pK7 z1AuS`Kon|HU|hA~?<&thF6H>7n4$8V_q#cK zwK>%L8h=tN6NfT8^)i^bk;fXxSI;qr&hZZBg#_cueadrq2N)1+B+3HD{5f;@lit^4 z8*zBPQ+wWu;c*h`N6+!j=Y`(Ez=1PiQu|u8^S!WVP~L2B+;&YF8VYx0**H@|UphW; zLRWX|_~GHn1Kg?7yT7L+fh9X)ymStS4TK0vTnln8HEg*_K1v>m<_zC;tr`t23VIy+=Lhx?W$J<p>a_|&klso|d2G%zR=@Nh(fPnA0C2GFQA zd~d)unh(T6ucsrbw?M7nU&Ho{7On}!*AUgaHM}4!tRNgelOhtrI%^e1YJa@L!@}5; zVPR@=r9h@Nd%hBXTeM)$w-93_TQo?0C5~E^|NehjOGjQK;m`l?C&~QtGJ#L~{7+bE z_*aH43=8XgLs&vMf(6to8lgIOuA^t|nx1vp>3aL9G^kr_#>lX+rcC`ibsct7jK zK4KsB%H)})bZuiP<_aYJXDjbo9@Xqax+qLR)DL&>{v_;k_`4OBRhP`x=@-d1RZW&F z+3E?stlW1Jg|c)QCk3L&WwxlV)jz3x?rCAXPEy@DZ2xYoo!$!=m}45jpeO@n|Kr7c z&@co4{2P8mbRa-==IGF& z%I6|XgsX$=3kf8FyT_m-60%bobYK9wCGU0hyXJj(l;b-H)g=pwuy&AtUL zI7LfrS5H`7m`7tNb2I|hFz&vyMMkONW{VZJ5YE;Cc2Phnjn+DVA}r)Nb2rbK%ben^ zxpOwpo%8&!L-5184jJ;>Z$sE^{7`Lo8~as++Pc?zyW+iQ#r|pQuCxM99m158VI8`9 zvcozMave1L+%!);VJ-^K2u=h}M|DmCH(y^{$fJ|e!r+?eax&cWIOJrTGEPd#>z15u zm+CZ{8rIXL(rQamPf+*G@jSj#R=PCYsMA$;q?7)CPX2j%pgbknzqKU*Fza5~19* z*0VRh98MS;P<#0)yc1R8>00r<`itjpYnhqF+*=}fl?GYf4OynMbipe!#j(?fjDFmm ztR%S<9=EwYJ0^lQi(q!F-S6za-+woM$VQ3nm)jr)ISR+#@9#_zPW7eCcMqxNBrITtrT4V?4DC|`SS0U*C@!Se)ez$}f# z0Gcl+3mE{oZzf4uEzaQgkfE;F($j3Ir$r62M^=c{Qejn$FfY2i-2B1S{b)zukrrjv z426!&hWY@ULjEj!M3k^*+DX#QL@&#u(504D;#@`53EZ;*Qhe4iZ~) z8?bGuWSjW|Fm2I@itCIec@JNb4Q?CVVFJE+&tn{&V=s7L6yq>of>&~MTIw(3);Vzw z^VtGoDd{b3?!&oL>6DcVt@S3MZS)Vu1@$+cqy;lG!XXr_R%*mc;w5Ey{X%x^H})NA zBiY9_<_|B8p5vP{%w3=haf7VXg-|L+Tgvyi_ZPE>(H6xvNY^#cowB^4JB_)A@E|x> z&Y3FIug#+Xzes~`C8gz;QSGb|#9qjul5;uYIFN=E^qr^0955&W$BuY>6TA8!@vg|n z@*HrK>vQJF@N|M1ZVi4LEn4t>7xsbjfVr2ByY_t^;ZAzrveT#cP;-e-_ioM%6-InQ$3h9R< z0osTGJh({kkT|ZF1_BbT2zMG~JV9Sd#9Z8wve4!JS8kT zIw~r7)?$&oXlhuLe9xxdTb$E0HZErZD491h+@^HzDJqm6#rNLVGrMVIRK;u%FxeGl zzVPbf;vHMFry{~c?X$1Gx{GzNIq-oEd?t1C+_#iS(B|eWZT)8NQt`?9&G?RE&p=W% zFh|S{zyS`lvQ8H1en z6>YXScD+KK3g`3y{C@xwt1jk*48oOKH!Dxpq*Y4LlH|^49yBI zvD~OgTR2AuiLN#ZcjubIsZ-?vZT#-<=FR)=_@sy0zA$4M`)b8K%U7>nevi7CZTq|U zL7W%Ih7I-}Q(k8sm;c>!hVB0NlMg@m6tdD2`@q%$FRUrC2;3n~u(gdz;dU3dS)w9o z@4wAO_9fnCgez+BGH0LtH!gKFyR&?MALp`{?qCtEx(-c_sfkG*+O<^#yF(o#E_z>H z{KDkEy>5PCG4F;HgrCIcUvz$e^O2v*@4(<-uub<8OL?(&z~On0G|P z=t6xd)?`dpsn4+ zKBLc}Q~zD#(R2AEgWC{X3OA|R*B^^Mh$6YYgd`M?)5qI?^yRJ z5B~NXV>4Gh|LN45Kg8kZFS0c6qn~tWm9=$9>+Y$9xh#FUI<9&De#!Dh0T*~~XYJNEIDB8`3Wq(IjznlGsqzPr<;E#v=gzH}J6G(UJC`@3sonGZ^|76m92vptme7yb zF^4^VU3A;E1GWuuwIk2DlW7Dj3nXFyMThcV<7oDkbmuhUIz^%}6KT0IVEV&63r1wt zv;PkomL$s_8ONqhO`h0$>|AsS>pNKQ6Qc6tIr!l*e@fu(fBMt}``f~9MqjOlr_ma# z!%p0%Sb&>)yQ9DUTz0HJg0ZOKNb4li-LQQt6Z@LwQXg&OntdHQ>rabiy^=(tOsiUa~`ISRV6{a!h z(G(njLBHDCkDKo0hK|H94$Ft=;+Jx8X%h!sAxvELhRs3S8Stxp9c9bWvJx}g z84%$#YZNjT`IZT;_C@*juszP&xVTyz)*O*v)ZR5AyIpa91bxZk;+}Ta;@jeO*)8Io zt%I$*c3Fd4JL8wNh{LC#UAuztDemACPlWT3xn z##C^BM!43 zbRDxNnF0}wXh!HnAuGp?^~QEMj0ET+!qb`Km`pz9KccyKw*js(XfN9>o>i56UTd=# z0_8$Ge^)%~&IU5c3hReua&JRq*ArQhL40aZ@OX#4u&AieKH0m8Fs|A=5P=lZ$$nge z?TB2X0gipXp=l zP-XD?xCJ6&DEoO6JKj@_9$rNZBQ_V!^pi#NuRpe9_1jH`HRdyY2v^3Uy%&@^>vEcJ zaM4+~J;LrXDcr_BIa0NMXO-|&Eb(6WLD|H<;8{%Z{zokL{_Ocl*7LAWtgAq+v?5vb zkt5bszt7cRie`YhO2Tvy$P^qSZ_8nyEZK0P>Ye+mtgC+TJSK*TW?~{MW*lF(=>#9Hc9|@+gMI-n!pNan_ zQh1fu6ZF)P-`B}9{5OfiB7?{LH}H7T?@I%Cyh!4QRneRzJoS!Yr%_-F@Z+K0AJkWX ze^ZG+9d8O6-~>7N>-%Re+>boyZzmSzdw;Ora`u63wUdTD1e?<4_3+ohe|RGd+7Q<` zQBWxj=ei`ib7SBvz|Lgeg4PrF&*&rSJ9T18zZv@{w&brQcG@6%c)#PJ?D^5%RCb_v zJbMNhd?$Ks?nth0#P;j3MvnK6%N=6Rg~G zg`M{vrklo29+Vf0;hcjo7D2Zr@rgt;MM_MV-(S_mC>+Vh@$qC!@hYBL-;rG; zz81j#90~gqnuE+=Tt}i5+_9^Y52@UB2Tp!iL8hm7q2%S2bL@ipHK+V*lLAYrnR~Mpe@IjpVga4_F5NHZ$rqpi=7&liG+@>FN5Z4WPKH%Dj;~y>DGK z(f{VT>|Y|oEB~iHR~ykT;pmiKg9F5g>w=RqB4x{`LwPiR)BC=6quH{%ey5Z%!duFi zRt9bO%2bM7^>jg(l&6Mp*ij`OYCHfA;oT69uZ$1Qm2)Jskaevs3_-O10Y8bF6}#ni zM<%A1`9&`y@zKkutX#WKipnTKfpFMSk*dTshJ!KzaC~KaaG-ZE_ApK)KD6NhQpq#f z1@lLjKiExUjO0GxIY}*^Z?UwiZ!NDLB;EwVz^HK0Xk(`hAR7My;n2v@%lH9-ZgxSA zXW#-o0Lg2{+g3qF&22BYL?4iR`kn)V{v5KXp1Sm&e11WWdA&Zg1^X0;=m2DW-*ePA zo*MuNPfZp;FZ34aQcQLl#UwHzPVhtu&DG@qO>#ynN4z1y(d7p4VA7FILENE|1BpRY zR;`en2GmAnY1~m+c61;Zu1Ojgp&{TeEAiBzY8<7KK1BWH{OwCj{q3t-Pf9VrCJrbc zfJ3EvN+-?_+rUAVB*HWtjB=Vh8$5-U1!Yp|+d}t2?9FXSWgBwuD+g$SKx#OMInq0MYUl{eVWEzpO@&gi9p}Y5=1Ca+0UidgJyb zu9x1^dD;jENmm0LWbyje7}1rKE8ugln zgR0e$ysB-$qjJ8IA|(*fhBV3kM(G?Ks^`l8_@*Vz9jxao2)$=5~Sr_Ha%P3sB0j-14#PBnPes2%dnK!^NA zPy2NtjT};Pk|q*OIVbseC+nr?d5V9NCc$l-0h)=t6Ds5PO?;97D>Jj+ z%G+x0l5V4Oj1R+S0z3xp`0R523o-w4wW@0K7H?pOOSnu@sCga@iW3e+>emXL#--!Q z2v7A=y;Z%$x8i{7UF2kNb}Q`Ga*QWgj@p;=@vYJiBHvB--w00$Pn)+$%FrX4U9Jso z^Ij0|!6E@8n36|ES?C<(hu^A97jwzIl9s+&LH#D%mvC`S6wyymHEl!Xy)H7f{y)~v z1+J=MU;Hy`?afBy{SZ);H>jB)DBzn64HXp?74t=Eg>OPjRD6`0XqK2BGqc39;;5OL z8F{QMtvqU_Wu<9lWo74BhjX$HDSPezch=e)!8-Te|NUGR-@Vsf^P8F9JlD*unOU>3 zvX{m<`O$P=l^3msuvzY_@VUB9kMdr#X;ZMuY% z^jdbct#v=lG27!-Sj|{5+vH}oEpt%Aw&b^R6;|@TtTof!9WPe8hsxDfyeK_@R=yc8 zGRKrPb+PWAS5K3v>}Qk@*W2S}s(Ru@r4lLX{K(2OK51s$kf`o_ zVCF-&4J&r2ldSkrxxmVg)SG5~t6TXDJ9c8<-Mh77$@Gs@vtr83L+;4BdQ~~%&Pne4 zVaA!2``mfS)6O*`j!dDllWhr&U3VVAPtPcT84p&OG3J=jN9MQM&{ok=V-@Z)rsB`+ z{j0d6W#P7K#=6Q{Ri1dfdezKcmIJ1rW*NEeXBhE9c~*JeY+-ih(^Ql9$$C++-E|xJ zo^YvJO0|g9K@Fe^q00NjVngOPb#&JkW?U*eltxoSWgC0->r5S0fm9WUTSqG@-Sv$p z{Y=|#yVz9Ko@%*~17#r*NveDDpy&Q?XYalHmn%6jssJMBFg)zbUAJB{^jh-0@7 zo``lACY5bH5zg3-+YOZ`f|%vvuKQxmIBy&(b>A>%yX&6QZl}#WRzJ+lB_y~id!Ar= z${uO&t6cRA5wiqIix@hlT0QR{J%-#;v~}@=I~SGLS9!u@j)RzOf+pjx5gl(HZB)pz z>M=u=twlY1?|iVV+O%fXBWC%*FXDm~PpVpA9zdup8$G5<`B#f4wzO;SSC>6#)|XbB zS?Ol(EvMwwo^szBEAXLe%xEU-)Z&4%QohL4Z5?%PFEej35SK1z*nZo4&EXzB#2Hs3 zbLP0E+k0WWSD805Q{`JNmt-ZRdMg_;&hyUC_i78BOZRH=TEbrEG9q=-wI}V7_Q-2b z+9qB7-ijB-K+1_r&seBdsfrFpDlA$*GwhymUh1}f_6M$_wA9KQ+6jWx48x5nZi{B! zNL=?*ZmK$+IuWmTU(4sGYC9l%eS8)FXv?b(2mO1k-;HCaZV#1zo;HWdNkOK6mPK=1 zfN>|cf2x&d_Mer9rhjIC)M_PAnpCf-Qk&v@40Y*TjId@v9?OU(5fe!Dp3_+^3`{>G= zuy0*N3G{sA~;o%w$vP<-IDJqT3 zbo)wMsIrCdHPg)smo<)Uy}LV_x%0{F?w3NePzqE%9^(G~?|$pgRn=eIvSmyCw@>L& ze{^c)3zawI4D(Z+&1^XPFRv+`sh_QI@KidH_ZAIQI;z~-i2~B-_+MVK^{Zkg-kXhx z+rqvQZ#5$R#tU&zH8NF_B$ayiWaHz1cZKje8p0dNUR!E@S3B0hc2Z@+J(bm+GS)qg zPxXMUVU>L2^U$Z%pZsDA|2$VEm9+AzD&ws!TNDlFLM04~-Azaw`@he4lE=Q^I&(fO z?aoK8pIdWr?eXsX^$BXnt82Etq}4?;&t0^d@>coOiW`+{mG8}R?a8BBD0R!#YdYgT=uuDSDalDfvsGb#mUnEhz!(O}ka^@i(~9i*}IuN%yioh0Rw$4r~jP~V}G zs_%a1zv;>!T=(dOA3W#ta_!-n;9OO|sC5s_&K_(#a;*nuYW{%7jG8=?e5`6p&-{S| z{lc|fZqY`vYHg)nNmAlF0U9~2^F}VBH%$et>PUZiL>C^eN9Mmt=$20|_B!*8_t^q#;`ValDM1rRO`xb;Q#uX+DWQxYQx|8=?#BhG+b0+_57Wm z+3;5%WqVuSG}U-@no%>&cy+3=f2QvJzyEo`%2muqYm&}EtaXlL&JVMqRZf**G|R$R z8O*m@;Nd2mO(KRKK0j}54wzE%6#x$S9rz&QEzBlXdbnu(>QK4iS7 z{j$MXCG`sf>Zj)E>z)3OX=99j56P5A9;x5^C~5cK=#i+r4!68#!Gu~gp~$4N>w+H6 zldEKBXY)U4MfK4G^v4F(PuG5a%(+b-SY@1i%)`d zgZOZmXAaKvCco4b^J=;!(rSUhGyO?6vFCw3K{VKoAoyq>5Fd)9ZPh4K?ps2il zaWbH9UaJwW_08+|dVJr3t+iY7`o@lUWnf<3_lmrMc{KwP2FB}i2F4BAKd|q>uk!{D zyoAYj0|(|^;J5bXfYxze56rVJ4#>;9kTAH-KrNwfeCzM~4($7Vo52Zvoto|K+=RS% zJvlBf##r1suWy|6@0-^WPy0HL#PuB*W%~LGPF@1#sq?VuXZ0O=k%5<^p^GC zk#<@mGwM>cl1SC1a*&qcJXWf={EhEIw=8wCsI?tun>E}~lGci`S}oVClN-!%N8*NB zVP+d$A8jpAloRD-V{@sJl`_Y*M}OF=+f{1F94*((_PEo?tg$}(-L@N7?ll6~JvlJ&*zvG~D_(AO(OSZ9I4dt4J8|;hcrKX>F^lD_rQ{c?lX8Im| zmXYgxN(m+CGwWl_$i5!exWUTVa}0<*?2hc~an0LzR1E6PH2I)B^0hHrN&O~|IFGrb zy3zel>0+)xL=)#zs=Qsl|C#RKiyp)vw?i^L52G=O< zO?TL04tL}rdBo^J%FDE`zjm(GTUxRzu2+!uTd_qRQY#_}mB*dyW`v6!q)dG>>W`sM zBWJGP({Y1^oXqTI?H0lMeV7u>NkHrfR8zlJzM{l7=rh$_UFqEM#DXcRm_^1 zcb!kFFgc$h+g#5x=JGcWhzW-9|LNozT?al6|FP3DF?uk17@Wt;h2rSmbs}GcTOzq}DpCCCF+Gv`mr5O1pL~H8S|r?s1-2?OFU>f0gCP?A^mc z(JRR3Dp+nEio4d8we(aFYF8R(*={ILiYPjeO>5$Md?#}kzZq9tQM_G?H z12+uRO8xxi1_m05?%&Qe=I^U1No^vh#w4b8>l@i7F1_C^?Gt14_KhzlrQFsnH8G|> zG$?3pSeQK5by3$gw>@>6R%-q>65YQk%c?!?iQ8~;Pa-|+bRjaDVXud_SN)|JCtjCCKf>^anKKZ))=44US8t=QVL!1+|u zBuKXQC#Zj^QDmF-w?`M#P055{RYfE;Npt1q72@DVH*NB^)hd(^|0g%SMGI~p)Z9~nS6|T&0swcHME6i_OZG2}`HFdU8**D#FuYk`8Y8nCVVt?)B8{IX&Q}q;+ zi~qB`zUF&a+;Kqk2E{gY+Y=E)u@U~CV&lK@!)`uBz>hz4TweMkXMZ0VQf9h#>YJ$N zX|>te06@j9zG>4&nKj*I18-HCL`zjBm5cvX?abT%err-g_cL!OW{?VhJ8zA8QXV{Gy*#g=Jg9bb zyybz7HRkSe&sc9u>$YWlU>jJUVije^Oc<*5Y&2))xQCT{Dh!PMxZO*4Yt0arjJ0l{ zNue!0`Ksl$C-hTR9>!XzQKjyDvgq1n&e=)fwudQRD*m-lGo5%|DpewdtE8v5N(Ctw z%)3Hagi6;%6Gc(K)=+FfP7Cv9jCHIz>kkt*(}C#`WO)h0LF zjPBmSjb@(qy4jq(!JfHkhuP?D;vV}r&<3^LhZT)A^QZK+wpjAMdY;xO?>o%*)|%VL zCCT|KCrw`c(4@($y6;?A{=%+>vlbRe>9FIdTR3P!C6^@hh$|9GCsK8X_Hg41`W!} z96X4PH9g(8M)75~*%Ps?dLh5>=#d{9ht2F0vfITT)mv%WB{b`@M{VEQHkfr0HIcjS zG1~)8EA(l?wP?xWC5$ohxyX1x_Ij#{cPcZ)zGX|*Q+hY&zIFZkuha7QtUsfDQ8Q*t zjWdqV8`|oA?vW_s&pOCj>{~?i=@(Q)n%P#{MDL1tbTa<@$M#hks0V58eP)z>t(|-@x%fLgojwv7Q=TUqlT{8n~1zkX|c5gwf-JL{S#T^f8wu-S?T~UIu?Hrzpt2e>$z~}SL4TNpS3uDL-eYxp>Dfv z(N9{uUxx8$?V=1nV~Fzi#`0y>9c8*TuJArx;9b^uzzuSA*2%c+I%)QiZMOPjdPb?L ziEoh0jBPwlk$}5})_9r5=%k-*md)Bnx#9W3M|%7EPfBh6i}{{x^S`DZQ&6{Gmo>-M z?y&j$xeYb(q8MX~)!!oq8;@nhYL7VCWw-P_zJ*>||A^_%by?G$7xmIHZnGQoCU6AN z6TU`zHxqGU8~gQk!Z%-9b#bhgPGhC?E$r_sWO{gzBR)CE9v+xF~f(Naxu zaK8Y|9*bFQGB0qmz8&ejiO<3BbkCRRf;PB^&DO&%4|IGh)%pC96z$1)`SLS;eb#3t ztjvpA)7g1ZdfV+ron4C9vKfHV3x*r^3|FAQTLY(=~C#<&Z z=lQfhtHE>F={BD?9gGzd*~4_Ex^ITl>os3}r?z*nCuOFyOqxzI%c(QMSx-$L+0i0A zy@ey*%R$eXh0|eP$*jP3(0xuyrU-L|YJ+o16X%K6IRa+a8h6+vjZd~~=ZgGWQbKWJ zLSkZi=Y%Aq(@i%Oh7G@^`QYrLjXirlGObs>->t)16mm6S^sRpRy{0|Vv**Lpd*}J} z9vUVeY8lmRR-U{mCVb7{nZ|F9pe@~lwfqqKCjq^k^?}}}gSu-`Ucpt_e#Y^Zt$k(= zGCpb%jih!lJ(0ik&WTA$iL-n5TvOD0fN!t-@KGH)j0zgnyZON06DoW5TzOaTT<_l2 z)!-4my>okyU;DQJ?+=4|EcXt0qGzD7wRPC?fp^{%(b9WTp0Oh$#&5>0ueWaXV1Cgw zfA5bYdfe{_c&tZ+%IkK<^tUllqBBpn+K9HSaL%GFrKaV0-h)U+%5?X3yL1*R)@70- zJ~+`95}!mgW)S0~gY_M|W5+*#-m!iAj-UUzW5<0fD-ONM-p)V0d8lHg{AgRxi~#8? zZ2?^dCy&%^V}{#oM#m90`!QzR=#mq23AxUU-+Dmf&Rh9 zFUMZA6^^kxMvk$$zyFuIx5!M_>VDYcB;NPUhc2X^?5ui>ER)**Jn7t zkAxqP8R}T&Q#NNy9`9DWxl=hAum!c}8ac+C^qpYG%aije@-<8J7Q%$_) zDzb&zcQEgu5Ai_DL%s9S5tbR|2#@a)-zA-UB)gq(%jCN!tG+2S;Z#m+GQv5MR7lr@ z%(#(0Bq?rT`CThcoRst5ctd;W?u85ElDPEXh@mqRW(*zi;KI182{VU|7&&r5*~pP2 zhT3{W#w~bh&%NXQ-`2*w3bL&AUqdRX&r}z?HQR3VUanntO`8J5b4Hp!64tCM;Vq zVZ!SxmQ5&f&U$Fos<+>wc;2(_%Zt1L;M6JkxIS&gxbfr1t$1+n=+ST9fB5Z+l`AXW zK74<1z*%{>cIu9+s?j#89#2xqWFM?d)4T_1fYi?z=Jitj&sM5%G)@cmO& z*u%so+d+FOZFS{03FKgmv_*Q0%#5TEwn${*op4zoPG7 zdcVVKs0`F*7)wfIyz!5My?a!BD;eQ!&tC4k%>A}hf7+cAt!2Em(Ko?YbJ*f(rprsS z^GU-wr9<-{x$?rEdGqi7WX+oTJS|!d9ePnEZmG8G*98l9ZJDF5xmqsorqLnAF5HjD z{WyLQuWAu5i#*)*xtH=r-9J@(l1Z2GGI;XjHPzKqDxbgSo@Hxp?eplAyZiTFW4m|F z_U&tob$8F7w`ateQf*;LNzRCMsAQXrtiW5FKM;vd6~6#>51swe8ib_wAz=^-50v@!I0W*M2Pj@#?~bSAUep zV`FYk$&QIhxj80wd_Z#V!qL5ZFB)CgyRE&a> znjCRU!CYBZURE|ddz9pC;eGd&Pp+tx(VI4vmj>UtU{BwBXD?bb``*4<`N&%WwSjX= z7cVZI0rA%Lt6X5-L{2=?Tw{vg5HY(8hfn$NUw|({k zqxbyCflp)wk|&lBA4Ba!)PArkXNU8W0IQJ2Q%%Kpp$d*yWiExCnleRisZATS=de9y zd56x62gl{?>8Hgc^_%i|Z^tI74bbdER(^9arC*=el|zE}`~0xLUj8?||BRhIk~Taq zdsZ-tLYVyV@34K4`KCd^h+vB_f}pAwhjEpC%UJcz0KR+efZ`zg>CGEzU~v+&DfRQ$LHhM zjP99Q@uM4FxGT{(>9_AM>}}C&d3p3BW5bQg=&ZChxtSjcH`_i;-96k#pVUd~**Ea; zkdU1*-QOLq-MYixPaAgZ$%4>h8STCMW$S$-I_>UmA9CQPjz!Blg+G^(Rz1?k{z*~HkMFZ1nSiePc#Fk@wqf>s>Vh8DT}xUiuc|yx(v$L5 z4VX#d2WPU^tEz-iGE*g(`nD2CPftqbQOA^G*}dQTsJ6j#hmtjJi|g2LRPfSUL$yEu zWAI(Z-}-pZ3y$-fIAnuY%bXDb_jK`o?zMY6H}|#s+4EmDDoST*JG1>>YX03~d-*?x z7p=+Y++5rCqD=0w&3I+n%*Q)8Ug|b)Wo%^R+U=L?vqJ{t5C+M3*>c-E#IYJRQ*o^B zsqQ-!Q(w%CB)dO9Azss34;(#fXK~9N#vr?qwrX2n`;a&D+AS{}U6a$}{R7TlwTwT% zM9xrdUQd7CXV4-{CXo`P{Zn0yc0NYhSW^7^zRjImytFaROI18}A|9*kBT4TfHABiu zU|!7iKS}DOWYsFrL!)_H8WA0!x-e$fnx2?>LN-WYr!KXVrKe*P!abl%QWtH;b0fpX z2S=vGoyhZhA*#na1=_7URn9p6Hf|`K81HUj;48)q-DP_-Y?jz zP0oM^R`v5a*};BC;nbF4kKY`-G3QKpTDX1WpSz~as0gv|>6rS$FdwgP9L7cNT~lR< z{@wFkQ{KAO$3Av#%=04yjDIY7-beR-F>~Ia=$~73nK*04=A?N0E6KXIUNWY4!iL-Y zpRIp5e26}jfmfnKmWo(?f_=NSyCZKy2p~KuvU6{h(}VP|9Isbzjy=lztfR-#;NR}J z)^F2I`oh)=!ficl<~{3a5o=4qJ~bdMOm`!IVq?BDn;HA@al|2s9;9Uq^NxJxo7uLg zuAhzyKi%cqqbB=!}Qik-oH94|AxU&6I+ijw|I3&) zT(dt=A870uFQcFFHr?C9JtxNgBKL2%dx`FWgm^W}Igw_;etI0;HCvM1cuPx@(oeI$ zXgB(A)UG{8oBG&ewp`~yW8Df#>q_aDiF=!HudV1{>6aNE#$My_6|0q)}CyiKVK`G&$kRTYGt7E_p7ejaz~a?)p?1n zw{eLP25p(~DqksGAN1-f@9eU)mkiMLy2Y}a^HpQ>Qb{94iVuyw`nz69=DSqd%jATR z43U{ZF{9U);qVd+9<*RX#S6`fyBLMpv09q1@Az)Hi^hHYMcZg+U3{kWAKW+0*xP)# z9JWjUW$2KVoz6&kVrzZgn)A6~Qr+h8W0A4f7G(JmlG#RPCQzT7%}9sYz6y3|cCWZa zQ6YUt%J$J=8>8EP@o}?9gS(9n4y}&QF|xWA8++GiGA#G}8hzi^6H=b(v~tMM`sTZg zUBj80p*Nb_VD6XR%&xZ4VeHzRw;+EuHnMNnV{(c!#p_;c?t0SQ_Q@NykkRkAT zuV6JRNv$afiI*$n@$E*J;_cc4dS!h{eTfx@kC7Ybk&9<5Q+r*usuOD5GRX@!!d$##iYB^`Q)yP@XY3B8A5W8&MZ3Tf| z;&D8=KJI3Y-!(iBaqoqkAZvMmVogcDQC98B-S|NV&!lP_o>yFVmoxS3gmK6}dM0v% zT%zTqno`&FY0Qms&Fmz5qsch~n5%PrMo!~!nf|N!P5M*p>t;T;FlPc~=<6G1@cdq$ zeAP_Df;@ihBlW1mvLcUpCJx=8Pe^Pt+f(|V8c!B#q7F5c=ee3%|ES)g8pg<;nt^Q1 z-KWKrNXtCEO9-C|9pb@koHtyxTJP$*8_sOU-@AP_e^+*G+E+XBsM?Iu_V(=CH}P}R z$kIh8N^h6ByLQRJFTLapRED?TUV6fFMNT|AQe7)89eI>zIR7^CZ1=OrbPOv!M0jX- zNnM@H)EOD;X~MC&Ur4;(k+%ZrUX+cP5bGBG_QS8X`SRJmH~aH;%Bo*yX28)<*-U%0( zkniL~)fivYB&|2P7p6t)`DfQpo7O${%=%Be$J$29O)sv$defUB#DOs74irq;2SAx%Q=w{$yfHyh&~FLj9nlBumT zroY!{S46cH1|yR zA+2$k3GK|>OP5#WRAc1EU!Fe|r!}uRwO6ZWS?I^c0=e9b1J_yNpu`gg-ZCbc?n1hQ zH@dY5bVw`gUEEP&Yi{f`x)BL7j!2Mi6AAUZ&#wPO#ldu9LM}A!dU3t|V-*R;*{#M! zci`u_BLfemtB!%ViRj5_zS?@s5v#|`mdEF6S7M#Mt9TiLbMtm*SL(Ns$aS<8nQ}TC zSR*P+C)a#dGg{lyTGO3QHZtzI!3={K#Qwf3Y{iVGsqqG00HUHYgApRKm9Ej%qJ5AQ z63j&ghB#;lh6L-QZfU)I?9>SzZtB*>ch$JbT{AatdGnQb#}{?!{@9`|G5vZ^N^IY? z+nvk1>&MqRhZT?e^7Bb!o?P~@an|^5!$$e|6EakGST-Z-nU(`*zkcS|$&dzE?_BITbQq()zQ_N>u zR&+2Zk|I0O1s1XF*zPcQ&t+UAns@1#;{n>d>@7nhV$)l+?A@_%W_HUxUDEEH+-~Au zOP+ndaQU4z>*N6GlmGIB|QbK_I9z|*3J7|Mz&3QuX~Sei*GAzo1FIi{eNFoVyz|o4PCF2CuvR65{b&vd8^!iYcTy(K%Y5>1&h z#FI<4HLt%C6JIndamumc17pWT2XyRMGG$nXuk4(5Jk2EvG6qD)HVev(w&m0h_x6of zTbmaZZOyx-kGZ+I*4;3!zAks&+`U7GPNOrKz@yUdFWORD==Jw)>hanP`FvFEpVaF% z>kUihoVHZ2a?8YLQbM)kwXJ3K-WvPzHTAPB8E@Vk`kuB_wRi044pq^7&Z{;@zErb# zjlP!jUx)cmmN_w+&VJ?Hjl$No8`P^db+bLENk&F(_mW3+6(fm`_}*GC$)2t%TV!S= zsEz!sY~k=SvqgZ^wi58T2p=y^Z=G~o|BeCC(q41-{^5xQ&kmXXcu=#Ll>YsrL)#dJ zv2H=<9$}GPQbvwknYZPwtgZ)d?Kg9Dr}14zk9^?HP1Kk2G5l_CFT`)NCUU67z*6qn z-g3K?(x<}s)m~U}E!AFl)vUWU$%dhSAb+ot?`g{05-RE^UzaDk|3JR0lAmYFYqb^5 zjScd=6R(kcNV=tuQ;EN9ipzr)#tBng<4t;vWEsh&#+LDKBCB0P@rsIyKa!(X=hdm? zyCn!Z|5|~o?jVw&rknatjpM_V%|X_%D_M8&8f5qWPS#t=-lAmPL2Hn`??zeegpysT zWZmIvknQG?O+?>V^wlbr?5j#v1x(c~p74|Rkl-F7Q!v)%wKM_<5>8n%W_UGhFN3?Y+?pkl)c;+laij!#To~*W{<#X6-lR&G-1KbjO0KSpK!7)sm-| z+?IYPrZ(y#zGbE$`7sbl=rn<80Z2&gmg8xTW2YIRjsu_|T^2KB0#{+I&?zZu7YoEqT)nxwe&C*<4t6l>)keP6#{881H*8Q1 z5GlWvU+G1Joivx}&1HOuw&B?Qg-@puuzQRru1sPogzaqs@COK=iz|)sI ziNGsIQrTxaM7uJ5*K}-rtlgy6N2)yjvHjy zOKcYL|l~d$Nl(yDoG|z;%CnbKmBEc3{IZkb2YCUiLckZ{@2#;1}44v z7q8GCet3NNos+Ir>8I*b^iyjFzxgb6hbJz=#LDb}HanaB>UJJlG_!~JGp#|ldD}xm z{Qd0y!T!GX;9&o5-XXSt<|~`oR)~j!nmz2N1-9@D3ef#Sh_YthY-P|a*rv%~{}zF# zkDNc!B&-+H>M#FKLP`i@B~_vsK-IQ(2T!Y$|1eI~$YA3m6+qdpwQ;r~cwV8uUA8YE zcxxKMrn|m$71%y-M9_mwX7#sF`Kq^?5v9fm)q4(7tp=z0@F_rbVFL8@%n+$JlOfuj zVF5h~raaIowdjt=?>sgmValY5Lnf8PCybbOPf~J7RDAk-o&G9cIpTcC=zm16T`=;l zej}&n4;{Z~=rC^7ec}^_4amyM%pEiSmRrVbT4xwuEsgMcen?-(SCdtCe_N#etXXbXX9wBDb6y(DQyg|pkUDC8%K6hLx~jZH zCJH>=<8oSRcF+(pL=LeHu}=^a_0G4a56h8z(2S-Yj|{rZCzON;B}FXsIUNk2Lll; zyra;>TGZ2{o*1KWspw11p6@Gs8LMpW?-Sq?=o91<>=P0Y8W0xH!l$KAt4N>7=8?XU zev$sI0$K&O3ThSHDkM5IIxM@%tNG-8kpBLQbY{Fhge`{QJGtM-JP4jYiyzX&?WC&3?Bfw_HnN8)66kD@~+~F{D2TuWS z$Q}G9dve_qVZ5lEno)cB!wRhttFE3E3XB%QS2elBRV=**5lrIv$N@t zU&Zg2F}HTr=GsOMA2uu8YeCuko?XTT1!rY;%|KiW#O^Y4|M^zgz7An)?(fL;mbt>8 z8@GAuK7Ia3TB=NMlDUHB%F)AyPj5Ll{*}tg2OTpqx@Kn0T`*s{_p;YgeY+!{FvMjy z6VIt2nAyl3gv+Vf%~VaKY9ZS=b*s`of3NL(j{Nt8#>n<0Tb*N?S+7y+sgAddxAi<= zT-tP-`fyBBSw@v>O>Rauxj~jprAC9ak&kZLD}Up|BT5d_WJ@ycEB1f#Bq0?Q;~RRS z*2ADUH3;TV7u7RB>sdKfy{hjWrh+MNwF!xh$sO1^wV5rVbuXJeEjfEo`@ua2=K1-T zr^WgP#KsR9&^V`O>{v*+43 zxqVOLFg;NzfAQLEo8m|%%q_B;X(!ml+*9n#B)^=h+WuOIHnO#IyCZeInNQ63Qn{YP zj<7TH+SWzAQ0hdfX=c7Nqmh~UHdD*YdKck!GyRk^MLT7hX>vU8-ObTs7G=%c^w`&%%M0cWE4UBu ziR<3>e)?LkKu;QmaX;X#yS;T7$e=0qDth8cf~N*{o=6es`QqV z#X6CT!f*50U2Nu!^ApM2-PtFhCqCWIdZ~YLey__wgR|_Ha9Av4ymYMVfa|OnENZl1 z%vHy7xmbX2?}-#GSWK4t2-ug*h%MxfD_9bK6KCn%m3m`qp?p{Dmt!#>#)?XHtZ{8< zbf{e!y10+7jDc~u>dY_H~7A}F@$Qa0*xmAj={uKBakbA4(QyofpN@$R=+h`6W>D}Z(CX{2J?~(CShBdywOw` zl=9u4voiYG;mr4b-u1oo6<@H!#-Bx%>mAouVi37xtLr<)nG0QC@mnJ=+c^70+~WF5 zmWpa|pPa4Iz>F&u?mr4ci94NUk;=ro8JF%jGTlY86L#ldG&yzBqn6+Z` zY=dtqMpZ1vQASj1{+qXCtuXacE_iHtzKKiOo-iLK*7`7Sv5eyl*DtQM;z{v{D0BVW z^&I`t`-q1piB)egLez+rVko=Wl(?=@qWic$6ua?bfOuHU6Vt>;;skxv!NOaHGlL^q zJS|6y50IWgKR%Mwh{1MWv7X&;UJ|RA-?2h`g1c(Apr0re?OdDgC>#4^wXDOn zPvx(&J<=b`E$}-2_12Pk1H%$_ysD7v80?%bw=(7JF4;xo%NX_rdXu_wzxb#8O?DPP z5Q=W(q-e3-OaCd%asKKr^p zA^j$Bwoa6bm0VjavM7lc#A-CmCDnf*KU~6m4)>5JM4D;qUVf*M-W8&&u?!dQ5s~Dl zCs^6>fH*=eoXdQl`@}ZkM+tn1ddr6Gr>PIqsjp|F+YjU~8#&r$)~EUCQ$jvcHR|`S zvEpVsRJwLkJJ^WP zzYv1ks4v!&`zDh2`tS^Dq*(0QLn$0d_(r17X4#4G_IDlN3FhY_kZ{bT3=}dt^A)wI zssbul!foC_PDN68EL@!cm5HTJ@ZIC8>TyHQF=VqRsWU{~Q z_muP~YJopdqT1HKi`M2rnMoGe)RLFcdxGr2*+%lpcc7Nz*KcAv{C~z&?Jvg^v7--zV~FLVizLu44`?20%h{x1G5dGaHE5{Kk1vNbP0ZO06?XmO5C zqb?I=0;RXT3}*PlhcbB+<+ZbU*kulBbXxq(fJ<*`f}3PK+Wa84$VYJ_o$<5w*iNU{ z5zJYVTrX`LDe^U9W{&t7dp>fE_zk%>GEo?EiFk)!8LUf+lKHZkxFQqHIy;=4<$;_* z`kVK1zKdPe=6N?#J{NkKIbbaJLhHVw?&B7{T@%&0s%QDW-2->;7z^r_!J-=_i$lSZMeIm z`C;Z;ZPgq1qB>$(KzI)tWP2G`@0; zca^Ji%0$EAddqdi`Mx2HfyNYS!X}5S()E^esqowPFrY=`q5!6-V%}^*!(MtJe zx~_gJTTMbpeSTvY$56T&9XE!hsm~(q5B+ZN<9d6TIc@7;t=#8!yR)0f$xC*$p6ez8@$4;h9 z|G^(6Fvazrb#T}G0QZk;t;Db5b62fwhuhsL&AnZ(TUNCPWv#qjdtb|vPcxIFCq0%y z*zy+ZXa|-Fp6$vzkPoFsn8?{J5M>@4S<3dWw3)Wh-VCDN>p{-_jCPK?w|1jM6o>(?d1%=O(?q^g33na&w7I)S zV)aX!e)gfJ^H4)OP91$XMss+stKaT(CEe(_N4(-b4iNI89BG)U-WyU{3rm{s+xXqy zw5L9;Gq*d9{C|QrfI1pX8kwnUk<^iWR6W_~=ws$!b-jtJrnIt=NN(Rx-(fHJXzu>v zevSv+pBu#*Q`bP+mN&`X)T-(@z`aHFqqez^`w3YW@fUGWUgEQmyZ0#5mf1)B!?VWb zqmZY^*yQNj4ewC5# z^9b!18KL=#AkCN0K&?42BL$n?)Sf6>ggn~t{dem(`*(BIx^9{M@oy#5SWe0QUmccS zvW)LCS!TKVpU!{prxu~E@wv`CIAh;$uCY^ixeAwu-`i|_MVsRJW$TM;4Zl3+?$~dd z%IDYtkt?)^avIFt*Dx{7%C%~^oPeC zx^tW!MHTkJnLVtTL`FSz5=vvW9meLcMD%f3-C!m?) zL;9fi$_MF--fQO64Zrt`mQ|kXZLy#B3$1xt$-eZH=FfgBka`{%I?ZBPzLlg9msey zTHI_k3s|x1gB#7)v$=P!5Pr0z{VoXMj~fA)1z;A)^}y3Y1mQ-|WZ21U%gsWBU=~^~ zL|75j3(*3%!?WO^5D`^EL>9maHb=!yD{tUCs!)j5xZC=W5N+lN5siEd#7>7ZOpU{C ze5w!$*i8(CZ9*jRowNjSE4c@7o{SF3_}Q*pi1y2bxG74A4hg`un|BM*@sbcJxR;7- zC*1E;D@59QA=3Hod|rqy=#qh-nT3KEkqgmvtPtJW3eg?Ex?`sYZuG>w7j}DX6QVcv zvSWm}r5JEq(Wgv^ThTKInZ9{K^i$x+Z6}4uMXvucAqK!e0muyGS{`PD@NZB#;Ktx; zA%<{$$UY(R&j>LTzlWXxbR0HWh~d6~8^gE35x6Ks!D+ZG#0VQiL1)14kp)7G;(Qe6 zqb37>j9L#n0lTAcbJP_f3Vq?S5Tmg_8vCQMGa5Uiu`?PwqY3Mn2uOuoD1tJm6k=?N z5aVj#B%uFz!Zse+@yL!xwg~-;Ho|T=3KyVGh&uwIEo4KX5EJodBDzgPw~6RB5#1)D z+az?GR4l|~%qL?$8S}}QPsV&Q=6BW$aaSmGfE*YLb6_=WgM)AyE(>wD4WghkBmqM$S6!DJ{0?3Ip%Ij|bG!9l=YDfVU`72;mx?p+T%;Ru|ED?;4o3klEz z3Sc@cgUzrHPQXQ|7h-NGbO6FL7yEOuUxxiM?3ZD`4Etr+FT;Kr_RFwehW#?^mtlV% z_UB=LUJi_fIj|bG!9h3;mxY*b1M<*(elM5|$St@iM0pM%w=f1a3bDu=h|fjK;Jgrv zJHs~Md`TXh5aNE!?RU2+ja<>ycZZ z3b?br7?waKRKroY0Lc9bxj(gqY{0!gl|ThlK@FUQOM*us5CN%x*#^uuV737>^#toN z%pSw+v0NyEGN^=VI0R>)R)~$>5Cd6|55=$qHo|T=3KyVGh{pq=Eo4I>lt2YkK@FS~ zV$*aXp0Gg_bcXXnZ0372>9lzp9E8(wS%@cz-zSOdCv#vd%mL({+zCejyH8#b;;ACQ z|1Fqr!K|tP>V?>fovoNZjSf#E|4alN5@H+Q+mPLML5OF)p$v`+@mwAdrsqRpGvH=5 z{{7h()HlDkxFo&01gT9I$?Qz37in(4Rm`0yN8fJg!_l^>(B)u-i!gRh_|!hs1Warg)2h5+X2=CZoi9eM{)Bg*Z*1qd>`Zbaju=f{t4W95BJ~C zfqEf6z^xCe;j$1XCqtbOr!YIU8*uBx&VU{tUJ&A=0;q(O!0*$zce)5lU^mnX@i8(V z*9h@RDpbNDI4Nj;LLg)TGM^R$I(@nm2+OBu;F1t$HVYn|3GrD6!2QpV`3(E#LIHQr z)e3PwALc+65VrGmLVO+t*!dhgpXb3?m=4(gd^e!S7YRTZzrgMnN8mIML35!H%3wVp z_vINOE`&lV;Le3*fL|B(0lHp5hp!?4zrMokE9`uQ?q3H&Hely#-1-{XZ){KuxcSW$ zAueKe5xp)}0D4`l6XM$}C5;g{XPokh4@Y3Xy7HXLjQw(KL0bJKh;38aMk`=S8Y@tv9>xHxj!W>u)ypP#_5Kar} z#WgRkdEuUeu8adYM_b5(oeb7R0rtJs`4KoTWV296fF)1~`-Jp~0POjc1Mc}8f-`VQ z$mXe#4f#+6m^a@HxY_)mkiNdaHD9jzo)*#%cl?m^Lr=deLi!g#m0+3{5Z-|EaGC8x zD}>sJO9r7!&@xyL_!m?sWN-(_0qoLWlELT_LfArLAP>gEbl3>hbmMR%v@;aLL8xUr z4)hMg-7ws2fmsV=!+imJ;am^L-3We1U^fE4BeualI05H{j3m5~{B9WmxYaTj2v-WT?qV+-U&yb zPRN)J&;zE!KESV7e#b6@%TO<5oG&B**W;?0yo6iv$j2W9WD@wDkOlacfQ|`EU?U)# zPy;9764VKq=nXM|d?NCR$R{G7htfCxy1Tqp$O>0`=Ovv`Q(f*{6H{}7>J5&jIGw$77 zEo8?mAdXUU0K2KgN$P4LJC!q8DGF+sFjfG_cFu)MyoL_*3>%zaYVQ&uvpN9RyP{iH z%(@ca-SVLraJ#!V6u}W8dxXLqK#!jI-Ln7=F}-dwtcPmAtamP;b2e_?(iXVh2RHlF z3VADj+119uCVmjL)V2tVit z%fUIo_YlnTv7cWhE#yedMqU(hR3V_xs9GTl&j>lX z1a=E~J8s<0?=hiJ1V@A%n+4OMM#ynJ0DI%OKCWKK@x_3h@wh!90t%oE_5uDBajl5o zCMS4sfc-nLa|iMh1A#D3>Hr&soV*0;guD}7?z}AIUDE+S?p`fqaTF9nrI1r10NE)Q zgq)fUoKHO@U~w9e<`D1az2=n=^bN208qBcNY7=jB{qi2OqQUN{GEd*L=X2&Vz}7ug^I&|^^{lmPlHs)8E8 zjYWiKv499jgkPpSM1UABMI0_e_PRON!&=#_x5K5o|s-Ol=!X+V>c>{9GkXwe_ zGUS#aw+y*u$Sp%|8FI@7L_jL!LJ^cfB~-%^xBzuRJ{SmXAsY&z1S+5kYTzVX5d zS&$FKumm>3Za4}TpiaojKxhluPzWVZ0aZ`~C*hKiYXw9=D&#^DltCp_!yz~WwL(7X z4Ka`f`A`f?U?c2?qi_N0gj^R0Z6O;9p#&V$k8JCDae7UTo+k0by1M%WEU0oliq z-4qCIAsY&z1S+5kYTzVX67mTF5s(VGPy}UA3Ds~2&Ooh@o4p|hvLGLdVF_%6-Eb5x zK%J0J20~lNhC(QT3aEk_I0=`8d`dtBq(UwfK^Y+X6tYk4hC`ra>xA4A2yG!73ZVp$ z-Gb~EWValJGf*pJ759NE>gy`%d&WIv)pS?}>w$W>in^%kJX{fSE3#XoAPe%L7?!|B zz}>CruoZW=;_lPl5Ch0QjqKCNK3xWtPz^P36fQuWkk14{TgZk&K>nE}fc!JaKZE=; z$o~JZ4L7&N0PbzWoo)E{tbhoZ11E%hj<7$M3zvj^9{;K_tImguLjIZi+Mnx%+|IS_ z*j4Nd74n4+kO#$30o&jZTo7_sTPT6mLcWOXi~N3ZEUbs!fS)g3ve=Ei-PqZK+1@~? z0e-(!DdfIXD1vf8Zr^z!U&g(cCqo(F{>xRc4~~K|uN88?4bXRg2grs3C-$3q-G9ll@ zpEoZH`4;XU#?E16kKpeS+R) z54iRL*G_hZ^Fp3l1}B94Fch%!A?6=m6!N14ARHfUhBHE*#{4wDPm_ip&k^#IEFnJ? zLY|2L+&yy;t_XRy155_&ojon&XTGpe$a8Ih>*w(6JoXv?k)LM+Y4ka9^mz?j5b_J+ z<_p~Tg1Gr&8`KH;Wge`D^Fm%guM5+m8ZHU>6=q)@74mEBe9iT*cfw^Mzv1^c6>w3= zi`cn18MXnxzvcJ0{Qed{zY7Gy_1$j3ukUkUHJlOhQYfIurAjy<+Q)`O8?S74lcy{da|sb(q(oe;wv^T>mW<@b|X@D26gP zFXUCeubvU|TE39=p^ydGtH+J{-9kDOU^C!`!8I3Vu4PaSxb3PH)_RO=zDuAIE(=ZO z!akvCp-?U~T|k*&Juy@Z&AwS^UdTAO?zkc}@99t@v}SYQlF)p(?h^yqPy|)L_2xOS z8|sASn+3S(dqik{zECSPf9wYcSO&Nki2s2Fuuo_~_#MP~(E9(^+nd1IQB-Z?eXF{9 znJfeddw@$I5FjLTdzncPA+vNR1KF5N2!Q~(nYo!6G8?mGVGR)WeGB`(@B1b@0-_>< zqN1XrqN1Xrq9Wqud#dZXnPGW-zyJIDzhB@?_35szb836esndO{K_6IRvx7m;T4M9@ zpbpS$mKYy_?y|%dNVj;y5?ihVq5Q2p(Ak#Q8hN)~06HB6dE20jZQirQwy5K_?^t5H zIiQO{Z(3qPBj`R$Y;S{FKq!BQr682IV>Jk6?D)1N@;H}&%Mv@?WQmE$w{sr!h9!1c zZ;44=me>{7cbfou#S)W|PDY-|4}l z#9re-%RqO5KD5NtK@ieuS6QNZ9}xIz$gDbn&yDoKyQOSw8Z}7K-YnAAD)YgIgmA1(>s=!k90odEI|GR;15LJ z180N49|#!-z5#mQ63vrAINyx(&8LIz0=*1+*Afe%*TO*%&Mm~b7UyYq5o3kUyAcfasDura~R4wYyk-Q55xJxUITq#iNo`tIiNw%RiKwaIDf^?z|0zdpbY1#F3DBXdKUBs=simu<$-nq;r^p=?WiX$(LWx9`~%<-ml1;x zSz;B+ScP+|AZyiQpm!{>+5+MF>N%ieL6?D0_UgARu?FR?LAh&CE}pxKHMq70<*d=y zKD5MITw4p>)^>o_gYE;p0{XxbM~?$d2OSJL8}ynbj#&yqo@2*b;<(Wu$T@xxbeAPg zfF38bfN;Fd2BFM#kAdE{#EH=3#Mz)HEpZa=J82o{e30hfwZzFN?_|h1`6>|ZIr$CH zdzM&_a@H>Z9Sgb*1Rd6YXo*uI&^i!gor1ilP6w?4Jp}r|5~tz%X~=*21klBnI0G`z zz_~M)f>6&hP=_;K0imoj$Ak8<#931;arRY~KrBFDy)Vv1+2_4riSv>F0_br8xQ8`fCjQj~Woc&tsuWp7*J@;vBR5RR{y3Bt82 zaD3$;2=`ny9faenApa`Jyy_iGV4Wwf#ywY`4SEcObJsxrHK@lmZJ>)m$a~EPmbmsZ zOI(Ni*Xb1e^;1A7>v~+j9=hFta&CCd5;x8UEd{N)&8lyUO}5Olg3W!{YQH>2IK z#u2x)fWY7K5D2>7>VYEAG7xmS6*}FD^S9X`$h!^sZ-boMt^+~V?G^|!Zb$yx2SG1e z;tt$@MNPx6FS}1VTrqO?Q;YfcYkb&d+xIY)<)vK7SJn}xPJ}^_dYNh zG#iAvKLGwg$bAs{JP3IY;=YHr21TF+Amn-ISxY=T&dOPq|GMz3J*^H)!6O@I&9q$0 zl8@yUfVVBn+A=p*=gR&aVLi*^oHZ_2&tv?IKG(`)X>Famn#VSd-{rBgM&rG7Q;uV8 zDGuVXhxc0b4qN))C~JH1GaireFWPbvkH=b3erHQsIon6Br$Od8hu^~Gd5nF-a|?Ma zt?HcqZMn{m-%jQp;jyx|#+$R|ykkuflX>h}6Gbb*6P^t zalBXAYxUuGf&KXXP&-;|(8^nr@!P-Mkp`CjT}X(d<;ao8Til(vJ^<>sN_f|?+nR#2 zO?bJf)tZWjE04Q7aNGm=I%gio zy8Jv!>A~MVr*x3UCpVo9?rl;0%F7)UDSuAE@v1cGZx3>pp=2P9Hpm+%^3Os5E2mf7B z`On_@*`o9R8$}%i9sAMjomqu+r%y$f7cA?bQvX0_Z%;m$8iE_Ce5DmCZLrrDE3TVF zx5!@qh1x4JiF!cgF{I3Zsx;?{-X3(;AiB`X2BrSl+}_y_C)$ux51mzL-Kn^@7im9+ zMhQRP>&1~CL{rfbL}pATp~HLAW~n&mN3bT1VlX{64dpS)H0iOT={ zKP~<9W&ZC2!WTiy$U1jsV?@_pLr)PPP|84{A3tQwqZd}-@8|n#Bsl4sEy&ui8zX%H z|5e7jDZ3-PRwB@~XHxW!K{a6Ma#rAs>3Ji~K$aP8`uZTW(7@G`0cBrSnjV`PzY zAg*aR)6|~j)T6{eZ>0u<80mU!jhq)nc z2IczRwoIcV+FODE&J(Q#Np9zXEZZ8C_t zVCImPINT<>-TKgay^ucyxmv@DHf>oAbf0#jjfPN$zFLt{8R?&wpi9^7&mIIATXf55|CQn6<9>==A8YL?|q-(B6qV5wj z!UllrdUm#Cl60FbM;`4e4EMosPgUAf%lbSLXoIZF)uT+;W4N^{b7i>2Mq6+%D&*wF$^v)M+ z@@aXWZI|I1SNdTfn-jX{YJHPRa&S^%bnF$7& zb^BCiQwc|=rAGF^>TImFWs)X-fnA)4a!p@XTDfvZ9+soxX-tG)Q<;|r73M&i9)}e> zqsNx9O=hl*2P>%)J>is{*}t&MJ7jWok;ThY04 z=JQs;^oX`y`D_O3_R~6QjrHjH^c)x-FQ#^1gyFhRhH$qY(<58>i&}NqU(xMb>D7S| zt*C4DpS1tq%|@^{mtFpvRT=hRod492yeuGrX8v+*Nh-BR=Mlj{~7EyPiZqs3TYHfPuL zrV@GhbIrJN5Eh_~INOLb6Olt-F`G_k1`}Dughr0UtRVRoY7_LrR%(m zI{^9Tp)7rGVjY~xNKmFObw2LXWzWUgIY_lkoloDPf1bDqygr_VbM=%r4|i#~I{#cy z3pH)Q`C+M_)=HOb@IzuZaJ-K9cTgmHbZI? zN?3%uG^fulLb?F?7UC|Whi*Tu?L6e2hccS8bQZ2_4NOm%wrW7G1(2oQ!5UPo!!Mi1To2eCXo26X-B;6L5Ax*Zp0 z5)z!9i*u%2Q)(Vs>6&Q0O=~Oy--w*L9dr$K8Ty*;72Te5Hs&<#X2yc7wC439W7 z?sa=t@|srA{WCA?*#ptfrbkS9dYwA57P_p(Sx*f2hv@;Wp&l1nVx`T7dtb}cI#=}3 zqgju#NR@Q&U&JX)I z#`cW#KXq$V?BuW&sbKUhSQfn+EM=`$$v1pfx2j(KXqz>>iqmCQZ1U&V$-0&%gs1b3 z^nNSehw&oK+DO|(qrdiuw4ZK#LGAOIwXN|jv?p#>)!O?vE7QuVMXv_6J^u81ZvZ-K z+po1SvMM%zxGcTa(vc$VEof=Fg^e~^nrY4dWMeeZyqb2RwMn#IHebRCBK>c8uQN?rcD_SZh)07j5mQ*~x7to_NUkfm#;H8tzAO8c4? zSdm@RK14-J-HyYfPy5(=XZMcuL-jb-p1K)RCK8~}X*ungOvFIbEEuN)q&mpDF}Rwa zJWwj-mzTPFSMNSG|9=rqomy2jd^5s}#k?tbV-UA$umAY3s%m4-|Igvx5o%|WI}!2C z5B3+^O5Mf&mHFNk!x>D_xTkNY(C>=59 zQqKSycw*Kh6L&{pZTaHBKyPbj5%Lg_ZXN0_^$ZpVbxd|eXBR@&lXZ#N4f%z=D+X7i zhbHcxY0_Wn>+fwFYAt2Ov~?mH-no2eu$1YbC2YK53WDCPT|;eJlhvJr9lb+?P^P<+ zg0zGzzK&pQZ+>V171h<5lJ72Mwa&uj107TH!!o95nbUgv^8+P>-I2Q!sIM+0#Gs@$BJ=#$V5t>q96(Kqst25jj`i5D_ zyrj8q&XoMZ1xZ7bK0rG*H750ql+CXJ;8+gp1)ZizK6Xv7=0gUKbJ(#%W zTy}{0h?$j{ID>E-aUgq+3#8BBSHlM&64uDTZ`-O8P;fvaKIU|<29wpDFs9nH^!Il6 z((VluyC4jAZOoN#D;2wN8-Wp%{L_F?F^GNrohW#9f9D{;BwrkYne6X8nx+^MvRZw% z23pEz_3tkY^ubbft}1n{oeE+7+Ma2Bfy{U=+0CkF*w{L_cg0;8%(v^7g1rM`^tVsV z!zt5`>i=g?MWkP zn2Z-1@aBbu{eZ1cj>lfq7T8oQc}#TNm_ zVduQfu&4QW>;bhU_SoDSdxUL^{h=n{8$df)JHk!f2_c`ItzEFM+^*O;dNLk7?Sc0` zrr;6iR8*uIkFf(h%#N^Q96onzO~(#?dt*E`Vu`8)4T}(p(7VAcL0t~DmSTs~!?A1TGC13JSvOkity8S0uuaCh*vt4_ z>n!ZUe7kj1PGI-sA6X}3FW$dkhrDyJRmSPqz3`{jpRH@GJF=Zm|8Cu2-EDmxyKUZs z&|E9tA8x~L>m}=D?0Wib>lN&D{wjVLzry;i^_ulMcE@VB-p8(2-?!et4p$xc+4~=` zPwbKC!j)KvbfF`!gWG--x==sP*MYuO=;+^JNqRJv56561xMQuytn0CN*74Rl>qNY% z{6~Dp65nXZshpE@bDs5Y>~iX3*V9qC(bgx}nQBaKY;F^LZfzX)JlzaCvX0Mfk=ru2 z6?Spk2K!fSXMKqMP$ytNx*f2CVm`N1Zenid+%CCExm|O+;X|PKEJ|)q>m%z2xhdE! zOMf=5I#O0vf0OIU_2&9=M`4HNf!ttj z2)jJ5#@=pgu_M?qxnpz3<&MX$)9bJw;fcAEawq53=T6C;ik-Yp&z+GwGj~?*Z0sj} zZtlF?`Pe!0LhKZMF?OrofStqe`N`ZBxht{D*VVaeu&eZS*gyJ)+>N=LayRF0$=!;5 zr*F^Qk-IZ@SMKiIJ-K^x_hI+42XYT$ugr&YkK`W3p45-$zJk5Tp2S|XPv@S=J)3(j z_k8ZFxfgOT=3dHu4g1@DU4NQ3_e$vkbTZk>iR@m8Y8?mj}PD~Kniyg#{A}@9l6UEMA7coifDs~f-#qMGcv8R|K z_7YRYG*K-IA`qd7L@e;dXfa*P5POR+iG9SE#lF}nbf%~i^`b#EibSMhmY6M?#Qx#{ zF-Oc5^Td3yKpZHV#X`{{7KwwzVsWroA`TIUilyQ(akw}_EE7e6kNAo|; ziX+8J(IvV?kLVSB;waHC2E?Ek605{&u|}*FM~h>yKi_fUcyWSQCr%V6iIc^8af&!q zoF+~eXNWV!S@=BqIpSRFP3!04JaN9bKwKy;5*Le0#0GJxxD5O1y@frS-^NxTKNFXW zE5w!f>f6=g8gZ?-PFyc;5I2gO#LeOsajUpZ+%E1AcZ$2j-Qpf`ueeX#FCGvNiifaQ z+#}*q@tAmAd__DVo)k}sr^PekS@E2BUVK%&AYK$NiLZ&5#n;6*#5ct&_~PTM;@jdi z@w)hq_^x~-ttRwANgguuiQ`0 zly$ORHpoVq$W+dfvt^UqUmhUm$hmT!oG%y117)*ZC|l$rd651}s$3!uk%!8q@-TV0 zJVGv$MY&wI$~IY&D`dOuke%{Kxl(q?ZrLMyWuH7s_T#G}gK|i&!k6aO$hGold5k<( z9w(2NC&+d3M0t`tS+19-$W!HM@^pEIJX4+}&z9%NbLDyXQ1}J%LV1zASY9GG$V=sA z@^X2Fyi#5zua?)yYvpzFdU=DqQQjnPmbb`TyEpmj9Mz`3XK-m9vE{ZQE8h zKHp_~wr^M2qwLZ47<;U}i9OEV)ZWbA+#YXlVQ*<~Wp8b7V{dD3XHT%Vw|B62wDa~( z_C$MUdl!3>y{o;OJ=xyf-oxJ0o?`E1PqnAn)po%S?9h(v*sif_?dkRmdvAQXd>{ME z_P+Lh_Ds9ZuD2WPMmw=ndltUG+hp%=A7Ib1=i2k^`St?)K)cyqXt&sl?1SvZ_QCcN z`w;t3d#QbxeYkyuz05A!%k5UX%`Vw1>~_1u?zE4zSK3{6x7}m++I{v>cE3Gf586Za zDtooP248bO+CIiU);`WY-af%zXP;=FWS?xWw@H9 zw=b|Sv@fzRwlA?a*q7Ru*_Yc_*jL(D*;m`w*w@~Ib*!SA^+4tKI*bmwd*$>-~*pJ$e*^k>_v7fM?w4bt{wx6+|wV$(}x4&w? zV83X;WPix7e{28F{=NO4{Reze>QDCj_Mh#)*nhP@u>WTN z-TsIDq5V($Bl}RkPG=)ui@U2dFt}u9~Oj zs|D&n)vOk(7PUwnq!z1#)e?1xI#exHhpEHW5o(z#s^zLxwW*R?q1si4>QqOnm8wg1 zs~**>`qWXXUk#{1HKbOl)oP7etBzL3sAJV}>Ued6TBlA_C#jRwdUc9ARh_0zS7)d* z)miFnb&fh$ou|%M7pM!>Me1U8iQ1qpRhOyD)fMVWb(OkWU8Am5*Qx8(4eCa9le$^m zqHa~UsoT{Z>P~f+x?A0&?p61x`_%*LLG_S&SUsX1RgbC1)mPLL>PhvKdRjfBo>kAO z=hau$3+hGnlKPr@S$$o7Lw!@dqQ0eGRo_;xsn^wa)OXbz>U-+@>Idpg^+WX|^<(vx z`ic6f`k8uL{apP*{ZhT7ex-h`exu%1zg53ezgO?6Kd3*dKdJZCpVeQ~U)2ZdZ|d*r zAL>K(PxX=dm-<-!Tb0!(*v2*I2z-Ctc9i4bb5owg?uBc6N96aQ1YjID0u$ zooPwCI}J{wlQ^j}%bD#oIr}>Y zICGr2&OB$nv%opfX?7MmEzTn6AZM|2u(QND#5vSi>Kx`A?i}GPbBfM#r`2h5O3n(W z-RW>Tog#*7o6j) zhpdOK7oFp=hxPN;Y0e4Ooz6PzCFexvBp6ls&g9N?taEO-8sWK(>cpI+d0QM z*E!EQ-?_lK(7DLD*tx{n;9Tll=3MSv;aurlM zi}P3K1Ltqf-<^LrA3FbZK63u$eC+(&DLbFw({(vlxYD&4npUhY(P8oqE@a054VBR6(y+*)_KJHy@E{gS(n`(<}ucRzQgTj$oh4Q`{G zxT!nKo$WTc`@09YbKJS^Ja@jkz&+4yb{D!W?jrXf>oRw-d$7C2y3IYrJ=9(59_AkI z9^o#tuCOk*{^SU?{V*S?{n{WA8;RZA95ddA8{XbA9Ejfzv4dOKIuN?KJ7l^ zKI=Z`KJR|jeZhUveaZcr`?C9W_Z#jv-B;Xixv#q4c3*Q}cfaF)*L}nNp8I|G2kx8h z58WTRKX%`8f8zes{h9l=`*Zgf?l0YU++VrBc7Nl(>;BgLo%?(DJ@*gpAKgE>@4J6? z|Kk4D{lNX3`*-&r?uYI_-H+UVxgWd#cFXQ3_)KTc6Q1<&`Bl&HT+j1-ugV+cjrPWP zW4%qhao(ohX5QxBcy9}DOK&T0Yi}EGTW>pWg15c5gSVrX_jd9odOLf&c$2(cz1_UY z-tOKW-k#nRZ!d4EH_fZ|3SQuaUgX7IjaTbU_hxu|dtdVQ@xJWs>+R>w^y<8Nufc2d z5-;^;d9%GHZ-4IqZ;m(Do9E5<7I+7G&E7(<#arYZ+-t29Rskt?p@(s>0RYr?Oo$t>s{wv@7>_t=-uSq?A_ws>fPqu?%mD}es?cL+u>)q$w z?>*o>=sn~;>^OJN??tR63!h6zt%6r;-#(UO#&U@bbs`rBTqW6;bHScBb>)toK zZ+fqI-|}AdzU{r{z3zR-`>ywf_dW0X-VeMty&rl%@_y{S<^9C_srNJQZSUvaFT7uR z?|8rRe(n9nd)ND|_dD^4|CU?ES_2tM`HTH}CJ>KfDjUe|jHz|MEWe z{_T~$PkhVI`NEgJ?JM8$UElM4zseuwkM_s-WBpD1asHcz+9jOMfeWYkwPm zTYo!$g1^1LgTJGn_jmFq`a4^X`@8s){9XOs{K@|A{vQ6G{uF;Nf2u#tul5Um;D>(X z$9|1p>reM*_^85V(f6yQDSNW^`HU3)vX#W`hSpPWxc>e@{oqwW#l7F(l-ao}Z)j!QY z-9N)W(?82U+ds!Y*FVoc-@m}W(7(vP*uTWz;9u%r=3nk#;a}-ry?hTk|n=RfX$ z#ec$o(tpZ-+JDA>)_=}_-v6rqg8!oblK(aTW&i8`H~eqw4SqbYi7jH0h{@*3N!BuUyepS~IG3 z__(S85zJyM9(4{@wQf9g8e5Af+G#UMBjgkZ-Gl=1d{zr~5+ksbB~{7ByQ@kY58Z@n zluYU*ro>W~jG8s9$f)+=3?Gkf8BxIK!4Ztp zVu~5e61zor>7ee?MW#!KOqVWVt%g{uMW$9mS)vy8Z zBc?Ia8m6^Or!$?ww2o;#(*~xEOcSQ5NoP?049cHDxictt2IbD6+!>TRgK}q3?hMME zLAf(1cLwFopxha$nvVxHSk39bMu$4qxsI~yD7%ib>nOX9vg;_jjk_pnlQ}djv!3;>r|f#luBYsJ%C4vEddjY+?0U+sr|f#luBYsJ%C2X<>)GB7Z0`oj zZ=n1J%5UI(4ZN>`_cijqM&8%R`x<#)BlT{i-i_3|k$N{$??&p~NWB}WcO&&~r2Iz8 zO(-{^+=OzI(3xdsWqX#Go=hkup_GJD5=u!ZC83mrwM-~2Wi3+HB4sU7mYdFS>ym6{ zxy6z}llcQ(MLdDj&^oGj_&C!CKRsn?v=6F{_Cd92wV>L_3#yI0pxVd_s!gi})kbbm zZR!(LoB9ORranQnsZUUC>JwC(`UKUcK0$%<3zT1=`~u|{D8E4Y1BgsgE$ zc_C{Yvc@6hhm;@Ic)&%xI5lvjsaQw_LMjkafshJ>R3M}RAr%OzKtu&1DiBd%M1c|S zk9dE~{4w*#R5+%>G4GFgf6NAp*7v2VL(F|&=3YRgaHj3|Zh5?OXKw}ut7zQ+k0gYimV;ImF26e1|9p%?kJ`G|(gBZ{t z1~iBP4Prop7|8EWVn9O}&=3YRgaHjrYpaBeM@B$jVppo^Y0Sjor0vfO&;rL28z7meFgySpW_@YS*Xwm|jtRM}2ymq=u zzvi~w&&-cL$}lXf4*bj|9dX7;32A6T8k&%XCaj)5rlYraW%erMh`Y>K4ry*enwya3 zCZxFuX>LNAn~>%vq`3)cZbF)ykme?&xd{uVu3^FSL0B+-5YotmG%_KLOh_XW(#V7~ zGGSoGQb=PH2Ek~6d-gK&aHVL0LRz4Z7AT|z3Tc5tTA+{?D5M1nX@NpoppX_Qqy-9T zfkIlKkQOMU1qx|_LRz3OG#ws>Yy=vhkOnBE0Sak=LK>iu1}LNf3Tc4C$PBEIh9M-d zhXm4)KpGM#!`eg*Vnc?3F>RfArE~zV1#7OVuB#7kKI%iihU8THHMI$m-&F?O?n@pQ_BKxOgsZ5q#Um7f`Sw$?c%_s)) zQJ#GWE=kB!Egd+rwLo)cNb+# zamb}MazRI@Yyd47=p3!fsc5nZGgSDh;>HFTT^dmn4+@xS>w08IU4uoJW!XpLg47rBrWdND3sWnzDs^R5GHp=bAbN(xnohUZ)Jyhv^g4K* zx4T$SSt18fH_DfNs8=fp>L|P#)?OT~i>;`&$!F9Y%`#1I@nXhQWjAMsMvca5CsVWF zEizR##v&y6g^iI7*##%NuX2s!nVx@0&p)K+AJX#=>G_BB{6hj~$Q3|H01XMCVaiFK zQch|NW|(r^(}xe~!-w?Y!<72amk;5~>lJXA668{2u*1{+4 zK{g`DMg-Z2AR7^6BZ6#1kc|kk5kWR0$VLR&h#(sgWFvxX6qxpp0@MBx@iij8M#R^M z_!<#kBjRgBe2s{&5%D!5zDC5?i1->2UnAmcM0|~iuMzPzBECk%*NFHU5nm(XYeamF zh_4axH6p%7#Mg-U8qvXz=-@{Y>rdQ`=>3=tO$5f=;*7Yq>>3=tO$5$!_61w+IIL&OC`#05jd z1w#~5J{JrT7YGp-2oW9jhz@&1hc==^8_}VS=+H)VXd^nb5gpoy4sAq-Hljlt(V>m# z&_;AnBRZ%N9n^>pYD5P#q5~Sy0gdQ@Msz?UI-n69(1;FbLpYD5P$qJtXIL5=93Ms!dkI;at2E)ioc z5o0b9V=fUL*oZNgh<7|p{vgd3 zL`XCIM4HVfq#1r9&F~XxCJ$*gzmR738);_0k!JXXG{etAwHfb7Dc_8D@RV=HJ9x@B z;~hNZoAC~w^38Y$Px)rNgQt8m-oaD88SjN^Gv1N1{${*`XZ_812haMO@eZE#H{%^V z>u>xQ@TUHa#xE%}8h-<+(YMj~2ZcuC7a%qDYBci!ylJmSWA6)%#vUUz^=UNrxX@_q zFjCWwjm8dxH|^MH>@axKj*Z3+gQq-Whrv@XV~4?;c5F0u7(C?~I}F~mW23Rdg+^nC zk(zdFGu>BZc-G(8VeqWKv9pCnV`q`FJ|+-XXfy#Zq^yStcoiB=psLVl z@CGUCVeke#>tXPw&}afcNLdeqJK$LlV_(6u9wq<;p7k&RAn>e*!6oplhq1rl*^dUF zz_T9>J{1}bJ|Sg48hirJdK-KK&we!c1fFt@od!?22A{xFt_c8vH*yo>#}^Xg$0Idz z6XVB&H*yo>$AdR=6XVB&H|?HqUM0ql$9W?^F@8LFBR?^IJb21CcB+sVJB5_;jUNx5 z@C!F62=Xb*Sop639oZkuO zcf$Fd7(cs^7(W}SnU{(2vkQp{%p*1PG9ex$#Dl~H-f`WG|HK5|!E^kXz&m)3KNENd z&+%sh?}fw!-jQ;A7(X67$A^g*f#>)j?j*#W#01`Po#Vj-+QG9vwW+f>i&Q$RO|m$P zRywP*#9v$qPxz}VM|xdeNKBv|slgfgVc=O`4f@T{-#=fJbR#-9Vv`C$Ay@RUm&O^BoP-wFwFkA7K!ei%~rCvl8^7S6ML;u-xb zoM(L+sE=7!6zFFmr5?u50?+*PlM?z#3H_vmeo{g|DWRW~&@W2p7bWzI68c36{i1|^ zQ9?f`p&yjc4@&3j|`aKE#o+K?eOUyu6nGdS^dJ=j$3B8<@Xq^(RQ=)ZB zv`&fEDbYG5TBk(olxUq2ty7|PO0-Ui)+y0CC0eIM>y&7n60K9BbxO2O=~bmB>QYFF z-YL;LC3>es@094B61`KRbxO2OiPkC6Iwe}CMC+7jof556qIF8NPKnkj(K;nsr$pN-YL;LC0eIM>y&7n60K9BbxO2O>8+*o)>3+FDZRCnXr2(jb4sr{rPrJi?Ng$CO0PMk*PPO8PU$tL^qNz8%_+U+ zlwNa6uQ{dHoYHGfX+2VU%_+U+lwNa6uQ{bPN$EAG^qNz8%_*%+N^d!(l}Tx3QhLoP zz2=l&b4sg|(rZrXHK!)}RY*eLZK4F=jrB@ty;54Q z)VzO$>&AMgj2fhj8l;RGq>LJ*j1r`b5~Q?#DXm{h>zC5{rL=k}qXQ|U11YUwN-LPs z3Z}GzDXm~iE0{7mkTN=u(kiC3iYcvPN~@SMI*>9tkkU$~w2~>K0V$&aDeYp)C_u_6 zKuY_VR_r6A04bvYDWd?Xd5Td;%~K4#kd!?=L7I6XNVEP!nyvPbX8ngWTkRpuybh$9 z7lt&$DWq9HBF$C>LA9}uNDEafI@^b^Hx1s3(xx4!;xXCQD0qnor&$~EQ& zS2AZ5?_2Q>Sf+W!TVm6XJ8dPyT`yPc*-}h3ZC)}tb(U}1FPUE-@qz($~UkIp7ITx;yp7C z3j?R%*&hZ@@%~x$nAToA0q(||-GjycwWgKp0=uiTzet8nTvy}t;kycWmm@rU>ciyO*fjaQi%|IP^Be=jJUEmN#1$u~aZ75W|= zF`G!uyeb&837%uam`(6(3u89Hvn`C-3<}0!Bf65x8Nz?EJ_2c*Nl8)e!)||F~8s`-cX@+5s zeW0SYfJI}eU?xYE*5KtE{0ydZs4Gd6~PELg%lb_W4olj zUhJjR+f(eS!a;}rWkRt_;S)JsrK+ypcI=_1e`4bEu(yA7C$>X`amS`cy*&!b;5R~< zN@f)r1VN*(H#pLtT`}`JpeYY%$^)~m3<9&RL`uEPx)OZ7JAfStyNdm$WE%RwtRI8G ztRIn@jtrv6hyT#tKeVyE=mG?E0Ro!-z^o*3CtJX*B*C*8&2s?oW(WmlWf=r!Wr@_7 z?7*xn!5fnu&;kUs00AvPKnoDi0t6;bi2Eqt#0kMuzKIipPe+xG8tPny4Xk=v*@|Y> z83bn4iPTKjz^pRC8yE}BDib`*G^4GQQ61$2V~x|vAk+qg+JI2Y7g2GaDL3SbBCIYbY!pg+9dbPp zay`KpPXoSqiqy1H$aO@>bp&5E#dTv)`Kl>+(@J>NbPQGwL>lye*5-WSG~f%TNKKvi z!YOzI-+aLoyg?JbPzv761HMoSKCRLa2F&dm?Av&_oYG7TF5sJ^NR2Vzo1@@OPxB4W zfNyppWu1v-e6thhEBRSxVj17;3_@aBNKE4!o;Yu2VMqiExrhmgWFZkOB!Y!Ru#kuq z5~)HWRY;@?iA;Qh6wu7pA~J;80sgPI^ z5-UPtMQCD6Fiq?~&g_s5ambk+(jg8xvqL(>Asyn74sl3_IHW@y(jg8_%qR%CgbL{k zhxCO*`obZ7;gG&?NMAUlGZ>m!3QS|@Ekr#(KsDtz$Lf3mY?-PL8=+ ziwm_n1K!5mn8A!vzVCyQG99Lm$Uq&;gHmKL02Z6jJM6ac0b>(-2cM}hW4Hj$`{0KKG`UQ$diDJHVS zM3$IdQXFO)#3Krz28@TqCj1T`g(HDb6BBA;x=%5oCT9F3rt=gNdSXIPOz4T}M8$-l zm=F{bf?_&RaiqrqUg^X?90XZ+;s7sknKS4da}Z|zpz~DD;Kyy|558JG4eWx zCPPv&JhA>kbG>U2zp!j8sqC-Yw$h|}MG-SF6%&hN1~Fm=F=7TWVtQjSgBUR}J0@nw z#O#=u9nVO8?5Ey^cxCSzXEp|1rLhUxF+n>fXvYNYn4ldKv}1yHTsOm+U6_sul_jwb zlj`F8u}CtlOVo~u+A$*-F(Vi;A{f}Pz1Tj~XYwm4qW1cr+u|q&I@qX~M3ntzV-uON-0~0X=6LDj$-`TTjId=WV`T$2G zMbcxA=`qLjm}7d(F@qB^J?5AmbIjmG%-}>!k2$8t94B!VmL)w#sHq*D=9o@%%=kpi z_(aV3M9la^%=kpi_(V+SI%a$#W_%)Md?IFiB4&IdW_%)Md?IFiB4&IdW_%)Md?IFi zB4&IdW_%)Md?GeKcF-7^)u)CArY4->4`9`uZB>s|{;G|P92hcd{F*RzR$zaQF0&-9 zi3;`z#`qOAG$%DQCp9!DHBqe^=)+7mLd~;OEMfy2Un5w~lacBuVV88bt+R+IbQ{ka z7rdrs#;ES00UeOg;gPW;jw_D@YUpLw5N&ISwlzfCT8`sdj^kR6f?9TEExU3CyKn}Z zbOxKWjz+zno=iR0BK77CfuNpik$O5Z^$a`LGXhi3wMjk0&kgjR8>nvs^=+WO4YUpo zME?e&e*@9KfvDd=)Ndf#HxTU`i1rO!d-J_BEDz0$OZZ5J?~CEQLHWcuF?F@Z2Sl3T zJJKvPiZt_zk!BMeX@>7evy~ju%=xLSHBXL^X3h`NOfJ%FtRT&1I?_xo(k!Ndl;xW@ zDZsOQIMhhBd>}uENyT z;y}qT)iooT+L28CNG3H5o;LL0lhSw+(c8lUqU?&7J$=J|CFU_44yLZ|Y%7heoSr&> z3ECx(>>b<`bISY%aO%L??&ZB*11`2~nTka)w&i|ItebhkkIV8$W%+-th1kfYFG9268ZE@`>9>!lTS=jPktny zm?pncmX8PWvGMZJ4f2t)d>AqxM)KGvuh0C%erT3_@PRh<;0F0Xo4mg)@4I(9bzfQD zyPdqJEbm?^?<&hXpOAOlzKy!$BYFEa^0p1~*3INCWqI>WTd14M@}@21jT__**KeV2 zD9h`Yj8fNcA+I}5Uc0xv2Fx{k%d5-ssw=D1Rb_c)mAs-XFE7i>4%$>*HbGvxrQA@K zmu!$1m*qtpBZ%5o|ArBBF1C&@!_$06h8 zl2P(t)bZdtxfsp0c#=G5Q@N-tTgq}_^QLNHSvGGf4=l?CWjVhr=WSZA<}H+S%W}>d zdBFb1sRPP#|KnuSSUG!xoK=>MW!X@c^?|ILS+D9+Idi|g)XaLh-@Y?H8K?H!OYS>P zez`37Da$XF<=!(Es=YVJ8Pg}L84Km~$+EUAYsxbINJdY{uq=bJERW+>xd{YrQkG-oI5l<~Ii@T}m*ptr z9koGLm8FkT{Ic}6#BPc+ciBt1Wo*2meszgZKnIX^i>l3|A zK11Y+WrWn+GPKXw;a;ztPULo*5Z^zn&(Qw8zrQpMpN|oe6g~Xek)yhGz1f7w!!8gq z`m5n1`VVjT=^mti4*6*n@eJ1%*>|GGQXcLPoZfdg>cnM*jDf#uz!Hx#XbRF#EQW0WqZNzlPeJ_ zC&-nFBv+B21wULK4*ofL1o)BiMDUXgKcPmFkxZBoFfN1t$+!Xj7sp_fAFYYfSv9ef zP2?s~`;6$*m!$O@H)05>lRIF@DAMwo5&Z{~4nz7p>nGiZ^cgjb3=+?gP)Iy05j&wz zb!_HG$Yr!VUCwh$!hgS$GCU`fIz(^%R69SZ^SGdG1#S04TS(dqzT*@8+ov9Xic=xE zo02lL&xpaqFK9JE>kJ({bTDZ+VpQK;(oE#bh=g1e@QkS3j!-ULe6s3Gi47%=AwH5u zYLL35328|>kQ~w*v3VUjmWN}J2LHSVsUf5V)@R!U>$Ck$gvi4?rQ%$CkF>L3Ga?*- z&pM&?jv}mtoG3{q4p5}Sh6m4qqp&|tlR*j3kLB?vQ6e8`CSvol;~CaZLmbvmJp(zD z19BQdN%qT0ati8cSz8psc*N=<54ubHa-M7>8$drsN;>h96x6mA=}Lx>m&p7(IY?(v zdn!%9H|2RsnIYuH)`w2rmE0evQD_F@bO=qk8)qG<1}*u6zdh9{)Eg2%8vl^@pYsj)$OV*ZkWI3!S%VmSua5jcbV6U(lY%W{G3fM~Y#r146+lF3O#167! z>`Qiv{lG4;%j_DvB@s!L9FkXxlYCN&^pKP()s-4a&7@XRd#RJuRq8DbkcLPjq_NUV z(iCZyG+$aQEtghF>!c0R7HNmHN7^SHmOhuhmcEnDNtdK6(haFhX0k3jL?ABY^9~rR_UnZC_R;2Wsovl8KX>4 zUQuQ!bCpF(fwEFrqpVjpE8CP^N|AC-}yRbNu4sI%1h>SA@dx=LNAZcw+VJJdbuKJ~Er zx%##GoqA5aq+U^PsAU?{bj_(nY4Mt0OVg@pwY2(L6Ro+{M(dz;*1E&aa(M4xxxv%0 zrxR=f=R=!8^Gt4qncU9Us8G%wO3Q+W!8?M-KpO==0M$eMDLpg?G&6Wc&{EJmvn}XK za|*1mvUv*BZ|*@ZokGJwhlIxB+xa5386vgbLeePI9P-L0C@l-+f{!wJ`c@g*n%%+I z4^;;30PCkL+uXvb$TzHxj|kkNANso9r0|Apshrl8hrF%p5R%o2T_Ks z5byJy1nnK_1wO(=$=Sf*I?$GaJ{|l9yhW!9Nw%P!g#1ZCbA+U!pv{D&x1g_xl-mm0 zEwl{jbPX*B?It9x1$|mbItgmUtRv))3rP=7QCjGkE(&FXUK8JT=9HcZ)d!s+s3q?! zz8xh>(w$Sf-gF?x96>t?c`G5G65=Cgj-Zyjeh@P$-6phT#m^J*b4C23-{kZfPwjrn znu=2G6SUfI6dHzZ>E+)fRD26LZ+$`OHo?0EZOdDME)i|}qOwc`;5x6CP4SHD6 zxX?r{5!Rb4tZS3Sn|Y8|612HF2Yim8)wm|v5RANcsIXPmNJw&oom=0w5-GP5l1`yf zh);s^?^0d#9fvvOu0(uGMLL%KhsUQAcxtqHs5|1<|L>IU4D!A+CkVf#oL?T?DfGa# zonyK|tA&sw6)Wwr6eP_}&+p`IMGF3~_%ct8ToLr^F#Z_tzvc2{ zA!xFkKP7S>AN&d_Tl7q5A!^h!^y*!SC0`I)A>eNgy*bQ6!s+`-TJx50~`a_~544f8e7O2Ky!X8~^o z*3g^{+R>Z}I#!Hk)>zb>+abLsBz43%(}It*OgAyNmXBb3RAD4Sx+%fS#+-$A!z|T` zB*VMxNopH?j9l`p@r*Huj5Nj@hcfArz(oL)IJIOK)-mv9kNu5+~Lshj~cO}+S zri; zxJP$CFMPav;^fJj;0;aC;6-W+ps63|K6;pbPQRw#(R1_?y+Uu$GRBzBoGgmPGe1jX z)mSZ7pEY64SsT`Yb!OdJUzW#)u~BS1o5-fIIcx!6v#`~ykZodH*-rK`+s}@&6YLvy zhLx~Vc9q>^rX)*t$t}f5m84{;vQ$H=BQ=z=rIu1#siTx5^^|g@LDFz(j5I-dMVcYa zl@>__(n@KKv|idQZIgCMMbbg(nDnJ|O8P;%AYGQONw;JotFlA(%5l(Oiu{nADc6-7 z$<5?ea(lUx+*R%^50Hn*BjmC2OY#(XmONixEH9T=$?N0|@)miAyhq+AAC^Ctzm~s~ z&&ikMEAkDwOks+yIF%?RUhykwN;RdHQeSDJG*{Xv9hA;WccrhArwmg@DdUxi$~0w; zvOrm)ys4~K3YAUDR%NI1v9ez|s+>^1QO+nON~v;Hxv7|{tlCw#8lzTHlhw*<4YiKi zP|a3bs%_PdYL41d%~c1f!__hB1oahlhB{YWq!y?v)ivsRb+fun-K7?(2i0Thm+C3? z2law_S-qy-!ZKLJN*QZLnUD6lIv>N2DSq_U!}2!pc`D{dc(P@n_2reI6QmQMDV(R* zMVH7(jdhoD?DX3O4>;k z!zZC}%2?11oU&fLoOFf6>pM`o0NPT}r^Dz}!DkEFDU5a#d_zH-3EErGS9pC{TS2=i zk>I;3QJ~%AH$Yp<8$q8Il1_rQm4ASwj-Zb#h2VQ|O6M!QF7;*9onBM3A@3>Ve$f`X zeD1EiuaJMvbEi85T`x+KBlyjNt`T&~ee%W9c|5f(OukRV{8-SU-{kCBxgE-|Q6RW)RgY$V zU*TFM`&C|xDGIOkI-UY8QjjLg6ZM^H43x?r*yyS2H#fA1Qd$jkUs zbPa0`i6Z5JAI^G#uOhVu^@}vEG4NR#)+=4o>p*^jTM?ZO8(_p$?!(-YZsYqPJQ)cy zN;49WTVTvf5&leN;m_m>e?0{F&3jpFtat z|Ho&0{ifcMP~9XBs{QZ%j{h(0cW8aJJZ+dZN*k|D)TU{3v<2D{?M-d9R;X>#wrV@I zkG1{UQSF5Gjdn&W(Mq+e+D*;WW!0LQ?*$#bYNOanAh~hhjhePRjS>a^DV}w2;TVCytflzTZ+{*m=K`8XFVF z=b7+=rCq;C=ytQqozx^z7r7$;_MSNL;;D~0rD3^P@yoR#$|;TH&st@p;wkG}OY+B* zjTfc5pWdf|@*L}ma)#+Jyd?iqp4Jh$TWN|qN`FYpwQA`$oIa?umVUxC|359E72nco zI1SgTRc0nEvz%I%U`g)hMSaUl63$z#VAbo-@C8D9!n)Xlc+2)gzp$*!>LcNn_CL^x z$R*r*t$fREQhfWzyw&^4OCqeu;^hWmb+Kynhiz(=x!mT3&4lxRzDD7_DV+cFDTK$g zMhUAwTJrGzc&Cj-P0QQsKK@VCx;#gmS7EdXw=v6>!Y!&iH9m&0&X$IMdx|EDvE@Gd zfj{!wI41aetlb)~bRGv@2k4zP6}gD`^j9vY`~688znj;nz>?ghj3kg0(inL(Cp~bM^a`1dbGlh%328_Q$Xe2x6k`A7X|e-n zNdrg`*-M@!`|_Tx znbt~cuXWP8YQ41q+7NAoHdcE{o1)Fq=4*?!<=QH3owh;SqV2#b(?0F6_PO@8_MLW4 zyQE#wZfIpX({9zFwdK105-bU}BcheRZ^{J`5P8kJl&a)ATv| z0)2`8roLJ))Hmr{^_}|1`hNYWenS67KckoErTSI)bEZwU*==rHjIEL_*;d(B!-mn` z))2@BS^{l>jzEsBr!Chu2(>4+;Q&TJoKF(lE5Hn3F0cqFu&uPMLAV~+3~U21w%dw; zgSKO~FA<&sFxuHJ0GEMlwp(^$SM3f$>|P)a@Bt|RW`BF8y{^5Hy&2Ej-U?_BbOO2p zy@3J15MTrV%eTJ-OaW#A^MS>{a{DU#I)od5Ex-<753tXE*#0@fuYvCXjCb}+_A8(_ zM1Ez27!1$>ClCe11AZV4sAkkM>Kjdr=HS}^9e~b2cc3qjXAA=!#nZxGC4py8jA_6e zU;(fMcoSG{6pA>Tz;6Y18Xp_`jibg1@ZSJufD)h-xC-1fOdj7MJM0cO!Wf{EBN?}k~XbIX@#O(+!$I;V~>lox1?ik~k;CRI`1G2fmB1Zw}N)c}jxb?th$2P|< zN0H+o_+!AA0NT#+18@Pj?6~H*6+t3YLLwZ1Hv%me;p1sUq(nRvk%_P_&M!Xa;C1O^@eDI5b<-jUn9k2n|0_*_x0Q-Q$5ubyiFTn$~>u9mL0u8yu8S5H^2YmjTWYm94x>lN1w*Id^kSAlD#YmIBYYqM*c zYnQ9Ybj&2b*Jal=*DW`3t8Rze>yC5#+$rvd+?npW?ndrr?pE&h?oRHm z?%wVJ?ji0G?y>Hd+*91M-1FUw-OJsp-0R#M+*{l`+!PD8(-P6~T=NaZ1G{~R-*eP+!t;&ijHkp?>bdH<=`p>s*Y0(DW4x8T$==G|8s0kI zhTd#%OK)3mM{ka|r#II-$UEFS#yi3Lig$*0u6L2Qz`N4B#=G9T*}KiV%Uk3<=so8B z(tFDLgZF~>viF+zRwRj3BOQ_6$hb&fWJ=^ik(rToBO66Fi)OmwB_*Ytgr2NQ@fei1Eh6#rR@UVjhagjHw&bD5hCVtC;pNonpGi z^o|)2GbCn2%-EQhVy48*ikTm?IA(dws+e_126Mi0^0%2kjDJt?mPb=p@O4G}@q&kL z@YI`vhd#g;2)^JC(|k~z2gx5)wg<_>%lV)<|5xPqlvC`1!(O=d#GaMKzbE9D-ooW$ zgnZ0>@$;;7EWar%o${0|-%7|W-PRI3Y?736{fIOzd;T-j8YQe!-J`28yRzEU(!c|Gk-ODv!s8TJy!-{jiX8wn@zQ2_%J1>{tSCV^58(ymWV_J2&zjea(fB&}+ zD*qqLAE3AL(uQft(!V8t5Fb9;-@}KOJe&`&#RKGaA-9WKgwM#~vrKp|3+L~d>B930 zvw_Yc{m$Vn^836b#^XrL(uS3e;P06Yt@4M*xi8Io%45YBamxFP;P08;!pj^MzdRi) zudup=rB8q5@$c+>@Hlt&Kf==qd$v@_ORX}8$;WldB z>>(HDh74Xk`2SL#@MpuzAo#5!{jHp*WimfyP799{{_G#~md@{g){={7>x#VUhR3;& z?S1;nRg? zUX=OUfG=8FQqJ&pVf?(lqu@IVzJ=gh2)?J_dkTJp;7164zToEzK2PvgI^q0IA>S$D zG!=YP!S@k-AHfe4{J=jMrO;xyNjp#aLuqjLL0dXf0HLy z@L58hCHQB;wAWw6=`ZBH1>alncjgi6O$ol@w))yYF{ca^aqjUMtoE|x*1RL^uzb$7 z`c9a<{Moy5hQ0TDci)#__q_l+?vINd_d(ck-%mzjul))cEB4n{kQ>-9e~TW+zgXOP zD4}tD@0?bkKQjl7$J>2gS_g0VJxm+0#_SQ=hds(3qXTd|VHh2ZxA3OYQMjEjo6eG! zNK5G)`2+a_I#=Ez`Lc5 zfM%E>S^@2WPC!?nH-I^V4gp30V*$J^Lh+^wodwJX76a%@6z^`+b-)IIzrC^p*aPeX z4g+}amf}4Z`W^B*2V4TU9sY42|G)iPuA=aBq5n7WzaQU-PUPDe{9W7sYAah|EBqE* zbzvp7q3iv07h%x4gH$BL$S5+NOeE9D9I^l>R&SEkIIY@5wvwGVt=dnHk`v?`a)y+U zQuLjh#H2E{Q#VecD&YjGGOa=D(1tXdwxn%oN18)>(p)--4yR-21o{e{LFdv%w1BRp zYbef}()pafhxK2|`9GB(e?U6_2X%i?UGB;m zO7|4r`r`NVn7Fw}#GOS-@HQRZf~Giwq<9OOk`4f0?O?x`^aany`e6u10eD9YZBEhZ z6zxvY@-*}de`^kUfBwHyJpG$qL`+MY24sDbjT?#9y-d92C%(@q4+oW}#%+N= zcLT5ix2%wl7>?+FXBr-if57I+?EC=tWNi>C~f>#ZG zdjt0u5i1I}cK964>yiWTTp4Lg@Lrfsj#yR7H zamgsfiD{;hVpKNj;QX|e(cEZjbTB#_os33Cj?vxdi&N9y$WNAjl|3-RNW8;PLEHfe zIPx5Muti2Xk#u94F~?Y7EH(;^H;q-s24l0a)!1R|!pZ4A;~>sXKR3QKzA?TtelSXm z0mfycA=A8fwqN|;{6R?4n}^aCHPcsx$<%NIp}#xZ3Q>ksm}_fugCy~ zv4|O}P10q?|PT(;o_{QDzh^(1y~py$L;i8h7}`f4n#I zK3)w#kI}9nPy83T1X9jbLkK&ET-Np@=gSak!oPcoenQWRTPnY@B=!hv!P>Fy>?3x7 z9bsRv@7P7$!~I!mDm{uDC4HpP(syR$GaPEPT2W2Jt&G3mrs`02l=^}?5w}#QtFNg`)Ya8tK*=j-Pi=UeJq=6lQcj_+OHcHcjIpZbpYzV#LRe)L`U{hAn^n2^{av0dWR ziCq%ACH6>sF>y;`QQ{Yg|4RHR@miwkxBH|00e_mmp1+~LiNCeKm;X8cT>m2f`$>4g zKgpF8n-rgvkd&O1l9ZNIHK|5YujGhiS8`->bh1CWdUE6BfyuLz7bL%xyf67k^2Owz z0%{;SP$7^Ms2r#o$O<$GG!L{6vifLcs;No@L5VA zEhBAq+VZrw(%wy%({1VL>5r$kOYfN8IlX84==4SD8`F2C?@K?EezD4rRc=3&Q8m6= zZnfdnp075(+RHWKYNXbvu{LIH;@b4Juin^uo86vt`}Nx^ZohN;;_Z+*$}BTOp&(`( z{-2+$q(`uNxrQ6tWh@1EklNx7(uZsxJ1p*ApAqd%%G-OCXzwX#@43=naaZUHZbpy5 zou5^>3C-{Nd@3K3Kf|5pc-&I9-EHqA+`{2ElSirJa4UJTI_-DueZ@Hm?LA$z_af&~ z=Ubw^3!U#cKXmSQA47ZVXz!SWgoJ7dnF&o2`X)Rt+Iv~Tb|3M@`7(W-e0jbJXzvxi z^}bEMt-hVUeZGUfuYG5H7krm}Hxo%>T%td*Rbq$o_U@H9F>!0+zQivRzfHWFc*9Tp zZhtJ=JHy|=-^kwr?LFK-%0J(~QnYtOQgl*y(b1{puLv` zj-~`sNm~81`DrWDHl@>aHQkY31?~L=+B+w`588W4`n&0S(cTx(-nY=+UbOenYNM-- zt2P1cos9O@*H&Dcwst1ko8Intd)DnYZx`OaaJ$SLZjM2F|H|7tbT;&HXnW{`(3a49 zp?59a$ zx}iFuw2(a{hlqL0ykTB5ubNlPZ_Lkwmx33A7lLPk{|bH`{3`f)@M!Qr@RQ)~;6H*N z26qJC4Za;*8C)LB56%ou2zI&t`Ss)1Kf8YP`r+&QuJ65Gbp4a-A79^defRZU*Wdg3 z-Sg|uuRZ_9`Q_*H&(A(T>-@~~lh2PhKm7bN=R2N%^1SDK#ChYqa-NoiO3aemCI2b; zspQ9!izVNeoGv+8@?-+3$aMsjfxu<*DTH~ zu2EdAxN32g;>yKo#i_-C;-q4Kv9GvNaeQ%1aYV6x?&7({XLp?4e0Iaxx6i(Dw*A?5 zXCFV?=4|V;t^vngkj&ic>BpQS(CI`iw9AJ1$%{pEMBemC{IN#9NU?&VYG zPkndl%YMOrzxMmN--4)aZolie>wxPc*9Wc_U4tFB9k(1e4b0P`cmHql{}&Bl9|mu~ ztuC+bF9`j>O91x+R$`9-1Yuuvt55l%UJMcdv#AyQC4*ojA4}p(>Ucf%!05AYJ44@or5P+Q~#?u=D zV8@AJ7l#c8&HxvIaR7Fn1STWod2mdzswOoBKNb9=7U10z2`dB+o~P8u0{avp)<)83 z$l>$gj*|d8h!A?>V22R$bZ3D_8KpTEc=@Ecz*~@?K=@Yx?=9gD9g$Fe>3bjwxB_yh_s{`p0!gwG7d?{YiRRIk=%BW&psM^6_Md+{~ zT|*dcK|SS3x++f?N+F z+ERT1^7;s&Z*?O0hY_M(Rp?!Af^Zrz9XwC_H4C^KMpWpILq>-cxXXh47((cY18Wna^7=zpa%;TxI0<+K{8I>#KZlI^IFY||2KdehXIa4AK;nGW zg4_k+A|M}eP;ci_U!yipdZR8ZvwL*Z$PL6Hpo%$geVL0y9i@|SjaacMEfV8{p2kO zs{u8@e}FI(Xas%-Lg+oA8~9HV_61OOxftQ|z*z7X5uzL%@{b6oT98W-E(4IB{BMM) zM*_D&*p`m~k(Mp`;=or2pNbIq`r3hi7-1&>eMISk5IXXq-U{^Nn*b~YkNkW{pM$TE ze9*BE`c(=Lt_R)$kFm?Q2|&FS{yqAMZ##Iz^FfzB^bh542=@V~pMrMq9R!Ym|2x93 zfp5VhE#Dac^;XaieHQ@KRY6+5%K-X>g0y@$fnUMzB?M|EiP7MZZX)WKm;fGWCHjFD z;Ljp#1)#pX&n0#Mo(Ati*u{bxi?Evom8a3ef?5G#FW^PQk4HEWKpUzJ5TcHWMc{`a zM7Ci*+JYWI%M1-#cuw@O#;jt~h4 zP&WN>gs`&!^rd$}2%QF!z;{CkeFdNoy$?dvpF{7DFw25I0AW1V`b>m_ zf#Kk1BjkA?4IQ=};Lij4QiKx$q@foeoB<%N{w6}`kV9XEa2c=x{9h5mrURdW|A3H` zfCYU!Ay5NJ%Yb|b!ukNxv0Xw48%SG@Eke{kZ6)v)_{R}$0^S9WI;T@W2LA*?=sw*B z{wahG0Cr$Uz0<1zc+QS`r1NJ0ej6j5KLZ`v^AUEoU`Kh=a{%bbj=aS|)Pyp>>zlsp$s`fm1j4{>F-qpr~{}tf`;AQYgw?>== zdk7)=W(_FYfWB*>-*Fhw-C7-p0k0se2%sPE8zyVh0O-)DfDksZ_Eqrs{s!vEVfYET z4gK?tGVHyP+tB6hN#N18w`T#c0RwGu8#Zx!1^8YF3xRjQ_d$rd-G)w#{s_wel+k#G z5d88EF-L(PjBpHq?+h-(_Z-GASX-l>p&HX$LchY^_*aPIsEM;RJ1R<0 zK>UBte|$&K`tMG7&(~oetS9-&g+lmmD_Z9l262!G>|DBtn|Sa$gOMbPL}O<=7Q6Ws zNIcHyDv<i8|j4D9>!GvM0TOU}Y?71qNk zKm*c{JWLvq#@HooO0vl#_?5>;aYEFBv?Pz=grGG}iXIm`@9oJGI4^h-zu)*2_M!iR zlcT4xSKkG{ci0UlNIghT(u?#aeNdZexZO6B%q9!PY2jbVDx4UuA%DX?x4)COadx<# zyhApU4P+B}m%K;bCtGlqxQ%>(^TZFyKgcfiAa1Tcgu?x9d-KT!4eyn~%w%ewVk7z@T(jNS3-aq*-da8%WIJHRKuO1^)aP~Es zyoy_Q^T>Si8ktL8CyP*#N}bi_{880i8@vl94i@cEtQ%ImxOb)h(z2U!^WrPAW?X^nviCas}VOvBYom zL}>xkg6nP#-AQY*_T&pZ{{rbGb(fx#{za$a_c@=JE|PgT+Ubp7OZ`kaiT8iz!6%rf z4xr=kYeoFu3rOt+_PpGi7LtodvoF>%FJO(k7rFBq6S4*G@3dFiqs{{$TQ2B4i{ec7 zh;$2je~p>6mE02R&w1np{C>z1STTlFXoiqyr7YzBEO|kB)%pjUE+o~JSEa>BUuc8Y zW{t^mHh|7XX>UNA&q~eF-v*Ebj)!l!bO1ODe?WY+>ROVE0gl8XOZ_ul01m*=15o)u^~%iX_Wb=04q z#WCzS@)NT>bFrMKtOl=<#GN?cL&blvt813tQKeJvZPT-C3g3TMy0hHG^j~3 z&XtvB(%K#=AbDy>2bg>)`mN|ghm@1S=geiae{h?LcNaQJg%a#blq(_IsnD4+(!!4z ztFo-4IH!22t|7%t>IsN{(#so;Z$KijRSsd@L_VVI!uXm<+GJ-|iq+;wq=G_y(Y85} zF2fU%=u4HS zZYaCVK6HiIr@-92)a*;&ER1B(BgQjQsXso9O z#C7Xs)sDr7Xb3$%L{K%hW!Qw_-{p-SdLow&IM6ruP`~{Lzu28ipIFuDFK=}?`t`+~ zthw1<8kO7Qnd9^gd3evxxwrSw>Pn3&TbeXu^kCxF#czD*{P9P{7ynMx4B31#@#BJm zqc(0!3g$r~Z^9^JV1D#r4s1X=XJ`28B~(tXb`7VZon(Z+wwAMZldm}H5c((N5#~xRTuRRB&%AT zy0vS?pqi*&AUTbu)7aDpf6cZHY~OD1khbjyPTw{ydt{9owRTLOvDIu9kiAvPVh29a zZpe^!?FLWZHa&ZE_3AZuOq;%qHf=v>aJzOx20bx-duEM{QB9}r_<+XurmK1vKQRzr z3?9@TUsSI?`jKhd;WYA|+8}gR-itBzA&frnW%u>Cnb#HTh;TS#BO)BttFanYW8tsV zs$D0mu2QpJETyDbJ%>%Disq_`i>+0qWUXetH#sRa-?!MiREr>$sisOv4qdKSH7Txg zMOTs>saN(URn#Ng6>E5->$^{t7L^sb_gPBf_8}An6XE*XckagJFONchmd$u#8)RY# z(%jB}gS{Il|JK|Jmvl+CQEpTjv^KYx*g(3I29gOkCt*}v+ps989u}twyF+8tYeMU> z09~1$CehVx9xpuE{;3^^Shst({mUNeUaexlEzJ%d zuemtS-%?9|>*t)}p)H%!h{H24<+hsj*y0Uwu^*(Tc5Ci803e0VOl=YkEw^(833nA~CG6UF8D`ZwpEb&8yOA)r%g9(M?@WmN_FdB6(F3 zXLsVcTBXnx9_FK)%A%vZv4J#}RmWRT8a;LL89UFSL5kw6j!(7WUqmA%SvngmTv7BZ*&yX0(HGvbr|g~(p-tuRd1=;==Aqy zqtXj>-`R6``3_dGhP9Ea!gf5QeRef>gh6D7P2<0&EWM$49B;ibbbwjVfOZ&3JIJR${-p0Ab2=S&sP88q_d7(#nbQw(UBdHxP97&OME_3Djv{Z_ z=t|`+O>(e!nN-r_aT?9bfH4bsTMQZm2YtvCL#>DHr2jAJ+|zPa?YG?Y!o z=uo%Ypac!W8AK?%e$46zYayJQ_=6+qU{W<5(3no z9WVXO=FRsx^5Yi!mZn7eDq^R%VzSGZl$Zj8Lpp8@?e25e5T3Z4nf+x3$)Fi5L&}gd zlngaP%g{4y8TJgLDQQZZvZhi~xvA1rZK^fZo7$S%n;K7$C+HLG3HuXRb@igXSTB1o zV+C13SFjb*3VDUHLS3P)&{x=2*jE@E@e36j*+yxjyiwVxZqzpF8*Lly8;#v$H{H#4 zOS|RW%5HVHwp-tA+il-%w0uxu%CnMs$-R_bYA>yq-pj@_eo#UwJ!lUq#%ODRj!b4A zx3_jJ%-$?r(14K8v+e5E@9;!}`j1b2b@uF6=gyuz_owUEfBNa#HFmjPhYt1Xw{Odq zo5#!p=0Woq&BTvu)T5az&9UYr^A&R}-f4V^zD#F`w!>OkZi%+DleFw8DPLy!$_$O< z+w_3ylh85-8nLJhW|~o2>l$~G;2x z|JV7m1lVEur>aQ(UuRov9-D+ry}nxEDyzW&Zo7kCbV`fnUBCuN=LH|Wurf&aap-7 z7f$T9fA}+>_W2hzy5!bBSy))Om)2-9KL3dq=QexvaLrm5|IvHTs7Fe8d1t~N>!G}r z$zv#QWPY@Lwrx#BzM44Ozot@tV6nP1`tMa@B5}}C!I$RtNy&*(w!|tZFA9936jK4L zvlQmZ4U{_{7)1CqD`T4FPKGrFSEX6M&Bb>ME$IuFn?GKE=F4XW?CZN`^X4T51+$mG zHm%F9ym9|%{S8%SN{Q*8zJBz_w3Gu`br!$+%F;FChmL%qa^)R<|G(aUfiF%lk75lc zKZ|z6Z}gI8*@-kliXf7NA9#=qEnlJ13>$UWiBFeRmm|gLE-T{$o|y8^aSo1xnCIjJ zQ1Ssjt-<@_-m4gp*lDv0{VM6wr=K1OPFE7jew2=s)n08br@6bi?&d*v)sc4sX`G!b zYYFlBnrF6qZd85*{@}%oh^1PgPx2AC9rk46PW16cE-LTOqC-PpW)Vsd$p=8*lq5Qe z+@m<&$e*!m!J?{9SGz#n=GkAK-`l?Xjy`MO|8VV-1+d>j^EJ22ynLzDyyEvCsa12+ zs+F5lQ=yGJ<4hd(92#c_w8RSe_QZU*{cRabpSf~=%wqS_)MWfEh=^oOtwbXeQ~7XH zc8(9sR&y4+g{zQB#YE0T0r?~q@S}5*q*^gl%8pvsAv;#D-tq1`8?c)P zoz6yk@-bBGd|DGA=NO{N? zo#J!Ze9;w?C7&xPF%!*JD%y>Emv_va>!ty0Jxm3ucRU~7AItkd3Ou67Fi(@^O<(x> z)ENt3HxEvF?dq}PS6`d7c!g=6J7u`;L9-rLp5DPO|L(Wz?yqs8b4gI6FB~CHXOLyCY^h=DPEf z)%;3}lb5DOsuE31w)q@s6?ikBgY#V8%%aa;N4+xX9bXv^n zOFxZunzV2snsfU1ytVgc@YeqMJ1So_zcqhsy@)No)0DxPXl|NBE94HQ_G|yaFP+aa zpEakOBNNeQtvOcwl?#nj%#L8I$a;B|s?Y?y7%W^AJ_w>=v6c+L2@#WSS(%(}9yc3^ zsTXMoe*kIlHEC*gqz-?8I|b|Ql1vh)hBX5`Ed1lX0oJAN%Ses82k6}a%SDL5Om2Az z(x)c2S-9`=DtwpcVS7p0UPZ>bUy(Mb?`V{f%5pk4x>~&bua&}8vax8IMdfj28>Ei6 zPs>TtN9G>$lMm>sHMlr|{+C00%j2X~usU8xhrCi{D~Ya9tBOUnkdC$X=6xT)UJ_5{ z_G#u=&zkYcsjRY0czGI?-YrjL7UcyJ$>4{lKiX>cTx0h9fHp>1 zuAxu4VIw~5LB5dP%)n|`Qygk)h4=~*UUXDaAs}kd)ekn1)=f)GfnJg@ag?iJ2e<-Nl6&H37?SY#OZJ)womFCK;25w%^>h=kB~6-#*$ir$yS{Lx<>V z1$}3B?DB9<%`U@QG~d~v{+_qmPVU~hS*OMscp*y61r^PYEsuQ(|krSgPMyuR^;dMgq!GIVU$l`q`4b|l*8)$ZYyT zLvxwggN~(*j^AQQla?);^vbej=7ndQHov-a=hc>tn=ao4|7N@SfjK@ZdU}O8{OtK0 zI*lGRZ=6Bfr=soGi}}$`mSjIdQsMlWpO zsqj`X=6TA!66{x5!(S?nQiEf;+vBvFIWXD%{k8F;~mm=PC zYTmW@zJ|7Z;kxzYn(bC~Gru=Kp-pK*w^i-h z6n5TQRJ1qe@2#_{RH2J;b!Qk|TBXWojkDnbA2E-b$FduXelZg|>sYR{%GuFsK7J!D z-=z|lO_ORlYHB`rrWXY%Y-am=-`16>77eE<8M^# zGz-n+Yi`q4^zqxbpI0)>Mdn1f*{>rb)F0FILHpQMrGOZN7Z@T{~55H8r?J zwH=~aim(pLuo}ejgUZLlz0#OqCpI@Yg6%GQp8Gj13xj9NeQd1JPFU5v*5;IlqloNN6Sw#PgvV+f6#KCKvt66;mJc|%yVWDu3RPb zT;Jiz!d`p#?%wxk|0@5a1us0_j^@*6c>`wE{j6PU^D{Kx0rO;H5`7I84}J1BY$f!G z^@^U)-o>`5U4yuGc9eFVqVE;bPm>@8HuF|pFBYWGY_#UhYkh5;(M{nS?;Z> z?9*TaB#U$pAYE0Yi&@kzT1n2wTwG7`X{4SF%XQv&c(QyQRO_xXu~<(!AT>5Wr47nH zp$*JWq0!qf7Z%FGFQH^;=&ZC8>3T@D>{y4UQ?gmkcj@`|8Lp*Xo8~h}7HkfKtEERc zB1d6;nf1!o3}QFH%{S|YcKbMQ-gD+;_ShG{^xoCD^vNe*KO{9TEc2Qrm+*qX9o-xd zb;!?7(o?b5t14P5mRq{QB#CUXt9$uedPAwT^qBgX)=hd^ z$x(B(r}e>jZ+om3ivbReL2KLKm};Uip8t37L)Q74S)qWpNFG}fe6#FTR=PUKHwP*C z3T?tqAoyN~gEt8_7NnY_jtbMmV3BdoYTf9huMV-}Wx2{pvHBEu#^iB$&OxSTSJUA- zYm&t5lu;XFw3%IFxM%@&7#PxVsG-C*7eE@4R@nS|vOED-hf1Uh4m zXK>$LADTCon%8%r;ySx|tE!S-_HQZj)<02i?)&pKxs43Xt^}`(GF)J2#*4iLO^ToS z_Q*9g56R>mTntv+*!kJRZ)-RiYq-tWEkzrq#j-f93QNNu)p{C#Dq@f}nvK`&aViR| zwxq4qr|B~^Pvz53WD;fq4@h7(E{)v$1TR|apC~79*OrgmswyA3T^sZ0Xp9lvg`bUm zo9swizDvrFUhG;LM`}6hsW(`|N8a^{Lv_p=Vtg2Y{rT=Y8mh?X zM0hen3FbJw^1igyu3YJtd$k4K%!Az=hi)RV>oO?2J{%UwuBPG-vnZ*uEHzVQ5-rIn zH5TSG3|aBS*i`(@77wZ9l(nFEtKL;NyV-tN$3y?z-0p>bA047AZ&3BE;IVICo0~tMeH8WV8Z(cM zd#guqrgHMT&li2jx&$x3GHudK-Unc3ZD42VWJ-492nTZ-slG&?ZeyA~H8IiG%x?G+ zWg7in)Y`aw4}FiUmGe^9wZ z?cU*=`{*`0ieXd_#Ag<=;@1HzVz4}+Jo6me<_!xhM zj9n}D{|A4|32Sm9uR=R&q*At1wFbV1a1|OV{A5sU#@(HQpzsWNq*?utSrs$St&@C( z&&SS%&|hPukpRB~$7EideA@Ekmb&Q-pUdZ|$uI+m8C*DBn9;a0BGLP!`0)_DK)$)g zKk_X#z7e=&=|2s8hZ$v zIu9w8^{Td1Bh8V;8cJDmL*-$;p{85tmI_gi`a*Q61XY@SB zIBASL&Njvfz&Jg%D^mWy6fkID@4Uh<*3a8}diSA&*lWMtTuLrGCGWabReHXR_ba?d zCG#^OgY3(G+?EP`=+Fcd@|(Ya6*k{$VyXBG8$6JhK@2E|7|jfL5;CSCn`%INSYOBw zs~O~BJ9oRzm7RkTSyR!Sb?@&rbnj=Vs2(;KdSus+P-G)cNvD;iDoPq|n~r7Ul;;ft zV;XbmE**cWN>9RCt*V}CWWfvRqURX>@k)!EPpW+*G5ugsu8)7;vVu#pzom2_*5 z4_4Vs=X-ql3VakQXAqUo^Ki5=qwoxWztOi@*I{LRd5QTunjhn2(WK4NfwF68d4v5D zOjJ%5+dM1qvriuh8YIszURD$A1qQIBln*7@YbNIl6P0xzxjcWx{&AH6?wBec}rXA z2MW)dG*)qBhl41w0JQRk+Y6UH3%_HQbLEN}b@RJmd|x%_Ydk@t61{;(8x18p(uZ z@a-|~B|v-f@!J{Z&<-6?Rg^hazRYf@0}wYg+lF_bw#&4UIN9R4J-*4->G4g@PTg|0 zBXV~AE~PwkO24HQ3d|4H0p<)k7B>UqHcVZ$tn<+fI1*+2c!BS~dN2{g3^TJ6G7~fX znMs++D{+-_C0l7L-~Ra*I&ERkJ>3R;m@|8C<1|03{oL^W!@t;3rEPH1n%rI= zt@`leglXgI*4dVx-mzmXv@rM2K0;k#E2wKFl9?SJ=dek0T(&vUOI^DvE~`Mi-pAq` zsv6%i0d=bd7mb^=aFF<_Cw%V++hf+j7oUB&DN2iHOr17s*0iZJf@iBO8*uQ##Y4GE zYi!%bGQRxgUnftT`i70|n1jXQPv(#2-lv~>6@@@se}eL)LiZI&Ms~bocElbxnO$K| z%pA!*$F_@aKzOnJ)iNF@;&=8R+;tsYB|zZCj0{xrZ)ZI@rI!bj_GLb@uG3 zQ)fuW*`vRfzWUVD^kM9Xdj1!4?;RKAvHg!f^E}TsShm5kbQTa$QE4Kel(i!kuq&dm z_ugVJu`7s)Mxr4GjWNa;uh%HSBv*}^#Hi_Na*f`UYr09iH>S!ye&1)F-DNT6^Zk5Z zzkhx)2oAF|XJ*cvbLLc*Jy;36a`oD!%O79$!ZQT>Vh223T}gQBGg!PTwV`!PTM@)w z4X+435ws&(5~GlZUMuv7vROQ^oh3;M*pE}YLC9#i{R4SX(A`nBe%W@f>IMg>Q_)Nw z((vz-hlZS*HtEbT<&JWdId5J0wO)RB{hEUoaYUK+#dA5iFJkj@Suis)m-4UI_B?wS z*>{99ppnVgw_u^ID?(#oMtz-@RltQndpbZ2)(HlUHpm&W4(peWC`Tq69n-V+gUUedIsRk+ zBKiKca)lY-H6`JEttX6+<2|euii5z(yM@qQpqDa6C^g}kSVLF?pe8yty>*bLR zsZ~`{C$TfsUZU`lGDxyuo*-yea$M0Gcydh5tC z7DkS?d@^psO4D%lN{Cjq%W`MEAy6y+{KC`9w`I6iA<`FBcPh?&P_tC~G-jp!yovQ4 z!MuUOYp(WshpJ<7z@}|*NTS}MgGNE)&_ak5Wd|f&RrPXOc-*6VF)*zb&dWyZILxme zap}fA;t~X0Syd%_bTK-TBl~GZy*^Y7(}d}>#I~At`fhOUohQ!MfW+$c;h-U5ns9A| zE==DXIpUh@I!GO0LCn=<>x-oxx}n;kx+&5md6IULZlSb5vrxNG7e#M=KaI@I6YSrg zD%}}$tD`rZ(1tWDX74Fw?rvhIl}aJjUW>H{AQ~?Sz5>ApK?_ZM3+2*w7EZdHR_0PxcAhzGPX=rPI>yTQKf4j5`B&Enaxa zl^kX>8)Tgj9jVpXjTKJmMC9pki%zhb^}V%yti8>BqQZJdbWI@UYXtMPa^@Rx_f*c% zhCHqg;U<{8yc@Uk$iPkSaBQ!udzzf4NzI0m*Y{N(xu0KG+#~XPDB^UE>vOafHle~uvWUTE z?jqUj1!0^asq~(#hhEzbc~bhhq=*wMwrr`W+_I(en_qwV_M2aRkv_S4YYi9g7=|zl5&oZpP{DOE=ZBfDC?7vOVcNmYNT;L03%hf!=qD+Frusw$ za?i@->m=tGpjZ>x;lbm_i6wsZ_4)BT*sXP{+_0|F{iZgcs{df+b>&-#32zQ&KYK(6 zy4%+=v_jvp6O2nKLv_s0H1;iqFoVzTyw`&a!A&m72~lW{jzVV|r* z33U9rK=^J+)ut1M(>kav1wCjRyw-^4K|yno&^^tSh+-AYVs#2m=Cq~>F!);1tS-UD zI$K=UQlXTUT1u_9;m}!-q0YCDp$>UfhebUO)?x2XuIe(sowTq`%a1O)KafX${NVEV zX0%64xD0&J0-j`Hp3BAcG7gVg#sU3Ir|6h4u9>k5o7gEiWRv|=ScO%tNIU`6Oth++ zDT&mYdg!zv@m-s%?6Qe!#-jX8(ign&NWAs)z4R)Z?oq^$YTV~wlPY?B52UwBYWpu; zT>fJ5hRU1o_ph5g;gtc4*8Z&T`s5>5&zJ3!bC0%Z)3<-m;sjGf&C-1@CnTK6${I6t zMY?E;-MW1D-{SaMS7Gn8>!7MsG$Gw3VIK*9GVU4Nx~~EjCkA$>ZkjJRApS z^<>P3HpP$rS>bNKM;S3<-aDVYbAUt-%`WA1mAiJy=&k!Mh$E{Q4$P4EAX z0Cw6)yt)`noAYZ(8C=rw+<#SdL)JT=sF-x7e#*>;HXc8o{_L!S``LbC*u<{Ig?IMs zA2k--n$B}9);LWbiTBhvR}1hEJop{zyC3{a3r~5xn6>m4J`E)bY0KpvLRTGV0_R;f z{z^A zT?4^F0}KJAxep8gSO(}KwBWBg4S*!24d5fCjl)lAbNa88HaHgI0)$RYRS@Luq$+My z#oK3b8C&jF6(_a7~mUG9V%_)|ezfaV{olT4-D767;Q%xkwS6tIgGA z>hp|U^*s#T0*j46)h zxy2Msfmoo)3n&U08ZcR$q?s77SX?eGl$XnkG)n@O2ZUkYygD96I-a^SwNLChQ>XlK z_=O{fv4IbYo!lp+4R>nA@$Q}Kx%R?duEAag3eUQVAd$d!?T}<0eS<r2n@jP8XVYL*hr9QOOG=bJwJ&(^jeZyNDrY(EjPR-Be)x32Yq@uazFC_ zH+EFVttBy#eRSj5B;90pFM1d+zqrnmJlbqxl7tLwDfAl+zg z6Sa5KwPHJHxmae7jl{GF*)rcE>aBWPxG_8^$&_TyvG%a`uni3gAU!g|3ZPL{19cdhS-DTcHfgH5)(bdS3$i;H zgdwgdiSC2mf#r6BpnV#$7<5K5>mg{n1`uuaC=ULtGs+>Ik;~pr%F%a~iuHq~A^LIB zWIYmU=>z=KNdJ~vyO)Zq8eWF(>`{62{)TJY4@gjsVb8BCN2J@3gPRHCU0LB~d!RPa z5Mi-L2Wp&g5{hLRggW-R;SGCT@UcXrAwbhCG+c-d&;*Mif-^inz^qAZe6oSk^B0mT zphH(r4<~Q{dRBV;YG67cIWiwyUfnzV)Q;0uyzaQ48NP*PO1E9VKRczOprCT{v%kB# zRSX<9eMZ^9iW6J5UH`FqZq@AVx2|uk8oc?pCpL#iZm#*QY7nhOv?T z%+F80;Ua$ti6;(fqkn_VNj-zcwNG|s$0kOG8qNC1Ks(&aHBJQJ)I|z)39m=KVXm_t zONccAzgj=v6we-{IY8WL(FiQ??LsImx^Wj$ z*!3=zgUV)1A2z76OTq8^r&PLJl~eZrUT|Va=ZJ%8=xBAEH z+tl?8VK?EUMY&XyTs9Ucn+20x8;;u)7$umJqo93+_;;xx?-Kcm0w}zyNxDfUtAL*l zDbzteKk~w!RV8J!LIZnG$SkSs(dUu=S!0Wh_PN8mZIFzII%H=C$Z=sE3J>MA3yswT zWWz7Z7gr?#t7BmC5Z1EwGTdTB_^|nfRo$l3$b$EpH8?Zaim)n*tCBxdlshfNDmG4e z+&zodBMO(5H{?Xb)|a~2cIa_{`X@`G8d z@)^{%Dbh&e&HDQ9aKFd~JOuWyNTI;x)P*uzKwXI52%l9Ly27_xjMXL~$PlQDF$deN zQFN6^{Xx$B+&=*q=u)0n1HunU)qy}J;fmEv)gw#pQn0-9+U0DHQYnTvWZrz^jgLR+ zxIt4_->TIMr~X-`q#iiH-mCgS`6HU|>s!JZxfimb1j0hK(iPzhjdYlrw+;%6i8Qn{ zwoZ<-n`OyxH`WnZ&jeSpbhkxN>$KPw&746Fn<*~2nbvH#wTuZf%35JTsL8fayP&zV z8N#=qd4t|rwKw_*0pUJjUE?oFhvN6uL|G_hJGiSULU44+gqumoP_2gGWG81k_@hi3 zyJT3|(xqj?mW1sq+ZPiZ6T5%JzBa=$(nhB3E#HTfeCoe5+l&xbl`UReR=#u@o4arL zzVzW~8N*ud8}ST9(>+zTFLQXCjNz^KJ+L4DR_~A3o)9K1cXfe1!N6@N2Kpv}-i44o zA*7S2(^!mO*#aDzuk1QWSZ@krR#-PQ65h{wf!c9FhL}+6I3X|C9FD_-dH~vyjGJCE z$b~&LXV4d6A{UMCWwol+0a|+tP-d~JGUdWgs#U`M z&W!4W8SdMnaYjP*4BSbZvInt4l(A7K#JvLB9Bd$Ba+$;OfJN9H_l$VaTBhIP~mVE zK{jc?an|d5k5-N;pi&(3?I8|N$eW5HO&$!~aN8KHg;yJNn7|jjZl(SGt8zz8c`L$n z>7il6^V?s1zQ^N(2XD(AKkItfl@-H><#jmsOwkUdvLL_m*Mht%P2Jw)oucfHi{c&)Ib_+Ir;A%5$uJ(MyA=a{2)7qQBLM2?4KVZ>jzMc+ zO_oNspV5Bax{8N#CSi+lF0pFHu!p1tTle7?SC z&*BMXWy7wiAEN=5F1t3Ytc>;s2YXq16*vgTPFP{ay4o4ELU?ST1Kg(hPf5b}j->x+ zzc*T)KgRwL^}Y30!uFO)u_1!PAT>`83o=X&oDwTd4w=+abtcHj;4vyhkAQi%Z;)B$ z><`~xA)F+1^zaI=swAJ?V|wBGB9G~XbkpL&ElUO$OUq@Z!|y$9j9ZIcu5 zmP1Uf%V7`$fUUrSq|7reT9AedRQ7>C2EA2>W9z|hGUpba$ygnnoa z`B1P1TX6RQi~6w-|OuNF&pWvZitZVmU3G}d4M#myDq^tq=PPDXex033+Nok zt(nLw1WtP1kk0FdMfo0A;tH%AP2FC+Uff<6*;tkUyywm@js!dI0uhhDxCM^CxHaOC zty_ka2DeX|T{R^=zjgLQUymPOR$ScWK6hc+eeR6hYxKD8!%dpb9bP(A+EV#QtQ+uk zyTXDjHt2pAV#58d4$dTBGg{iJ`3023S_iYR8XxGji~>zrzBtHzK=aEs(5n<=-`$7% zWP+6CbXn~e4R4t*3fm*Y`fCT+`Wquj7fc9%jf7d%yBnarpa$3k)l!6w5+`hwM(GgTZP0=bCdDq*{YeId;7 z??7Fx{O=$Q;u*CpLN7-dg$PrCg>xrjpd=81Q{l(7Y+8cV#}}>j2(RjCB%gq@`G6m@vu}EDVMcBGe(;!v;eW(Mc0#5;_`~0oTrizs=Z^0C-6l zTqfK0a9jqHemSIM39KAa8Fwh=n{fk_mBMFK_U#D^pm-f_xF@F@f7(DU*vN;x)BW04 z0#g9jfIq~=QvpaO1)q33g>C-wD4<9{paI2Xey3WgZ zc>fT2q|`yA=1DT9}tp80J`Lwap*XeK^+hvHXMdlGpw&{@?BI*o(N}@0rD>B2b}OfY8f0JD}`z$gHd8OZH0MLROk-j4Ag6J;eiHctSH#L zTDCZjyWR&HcHl+^*%Y_}grbJin&{kkyn}~9dL&Tmnfe7YmajbSj59<>C3T4}=xJ=T zW@!2HR>}aa(OtB;`oKQ1vZ1y^PC(E$M`%e&X`f!D?#rO5lkaxmzQ{rFu(aZBvR*5i z1l?ebG?=9$V)`0__jtg|*^Jv~@gyShN`JTyn%IqLUQ)oZpClNoE-O2e zdzVap>ys}wUUYvb1&Cu>%uRNuOeZ)c;Wqg7b>K0@2S<`NKH{e^aA?~t;d|rusBp6( z%q|%wo2N*V?UV3A#SBEfRelV82N4}VDg&VecS)r_5;5F~cG%123U4+H^8LQT@ALESMteUG z;`Qp?FR;&-@ls9{9&&ZRe@s-I8WSb(h$ta`Z8L;L?P#_>Nt=MMs9234MYD(mii(Ps zm^nTsA&ESRKyidqcO^`J}m*O%wt*J0in}cK;)Hmh`Uw=4;U`)$VO+pCu*OVl< zLc}J0`}q3i@xD<a099oVK?+W(bZyra%_b}rg8WiTELHG7)q(S%gp}kedQTI0Fs4*hO zhB*z+m{cSfGDmo6kUA#OAho}j1{u@hsK2Hp%@x-aMmi6*ua^eF7mE5?XGSiMNsBCu zaYm-b2$AL(l?E|npgSaYkOzPUwQ)rSP}n4lfiRhBB<@nJLl6=(Xhnf?pm48h`kp}& zm4Rg&n8Uzy2E_4=Q1;A4HLeHdDtlP@T;(ZcFIZ?f8!-?6roWWE4^khX1>^<&-IwIU zS_fni#Dxe`T}gqLRKp-O`PI9oOqXNf>0gHNCG}(q5Kr|Cgi`QJP+ik2<3-?o76>EeHqf& zaIXYXLnet?l*A*{f%HXlVpa{{_EoSCh>Gdk_d>UZ9!$H7qC)zWzFAE4 zfcyM&oXWWer(%6Lb#I?WoVvFU;gmX#7pJVwW{l%hvs9=oAFU73i*Vl5WSDb;k=eqK8H$4=mr|S)IIj1F199Nn#*kITP5{Z+AWM z#4e@Rd6a|u?Ke1co|og?KdoN1Y85-G{P+E6qWZ@#5S7W2O#G}TRG<{a7u_dIURJ}D`dH^RdTs~}1jks{u!r3p&vo61V{Ug(ovFW{ACJx^_cjuAtu)VP{qxyD#pg1{a zP05Pq5~j>vwdoG|?BX1_f3kKw&aVsTu~z6zSL#0P^Y7n|yo&z)v%TXW^Q3>f#oLbD zgnsQht+!pAOYOMJEwJZ@;bRhjyWCl*a`nj1Hm4bFQoF!Jy%5tmki~9_sf^TD#Ak16 zchcM@ur7qXnrW_ZwLj53en%HXC4?pBOR2Ut8oRA`sxU7muy;sjP49LobGoPwCzO7K zTe7%h%3pSP*umIyGXt_I0^e^ps_}T2G?yVQE3I8xc3O@+oMq8L@b{kQwI0nhara29 z>Jt#U4meu-zvxv{gjI}9e|Evp{^iB&``&{G_hR2cE5^pnELoY6y}JAKN1e%QM%6rZ z?&Q2NBXU+3^j@7eY)N9=>Y;}oW-k?$%^Est4XbKfy=MIrDOKi#_}yDFGY_^%>DQ;U z^x)p-UKp}qMN0Digt$Uiey8u1x9J?uKu&-UG|34Q>3rd6#?P00l85kfFH+ClbpQ7G z_iq=+H)*Hy#W+^2Fd6NTrd`o=i!uKZ+~F>Ko}ZfF*S+mtd}-2d)pGnYxHPVSv;fYU z8potLF(%C!hM0|`k|jt>l7h#t4fi%eXd!HJmDn7?HYNm_%of>7P7k3DN0`Iz2(gES zIXXpzhuK4dwV~!1n-CgPVQf~R-C+!Uyrs<^CMAaihe~kFA{t3vIbS?^GLpwxF}agUIJdu;Pv%|!d#P_ot)`NbRZw053@)!_SS24 zcfPoB=gz0`3Ff$>B;}i!@9REZ&f?+@CG>0k$c}C6H*9OKNxh`3J_p_GN2p|JWCqq; z6k88%RX)1(+`}VAD@daE{u@Y9ad!Fz!ULQ`q?YbyUpfch{p3D?{CxT~IiGvmz30=U z-E%&cqvnVhJE*T8iC5!pH( zgr$l^46=;kl3zLtwF!AJ!gfNgz8VO7?1!K6pE8*ej<8KXOaJ_3509;vgw(sW@^<+Z zk32EQRglsuDKUpINRSMXB0{c63aW@Wk+h>#N-M|{7H3QX@1kqrute)( zb+&{q7Mr7>71t%*BU3=M@VtqCu-qe5K)^sG2{)_&6I3%h8K!i2{&-~xvSxW@3~8E@ z-fUdQ$}PsCgfX2rJ!&#-N^bGXH)D6@Z5_V1WvgGlo$y3%ZMkH0zn7Z&@#VHN{+8C} z%K5ap-D|s_nMEF%**S-MpXv1KBJ$GgkoQtAl@4%UG>#WTn&8E~?OwcS((c2Hz|aVi z0yO4OAwtCqwI7``#y!`W<(42 zjm8K&8jMVev~LgSONA1>OGwo_1$Ez4zFvfJ@G=42_l*O7@TumqC0U%u-r&E%NHj0n zXM;~r`%v#E(9UysaJdpMOuQ%ag);u$qjOB;=K_v`@#mAN&DVdfCE4f_ma!%H4L*l< zUw?6YnLi&=$1laYy7r`Y^!DqIy%Z~WJ7)14pX5{Y1Uwz@505y(0}pml?x&l8{>f_p zyGPgzzytoLacb>=vxC_F?%%MZ-7!Is8q4L9mJ1&K<#}@gvPbZHHJ0Z+@D|D`R^&1S z3Gq=n=_>=PXGT|4d_`zfg=I(R3C-hyVyqF-l3IO$wtKiOxG0gR0LYPp=#eMv$ql6e zJtrWiQg}+Hov73Q5bLA7!_w+$KlkTnd7u9LESvTR&LKYv$2q*3RfydYDdOu z&kR2J=_~;`Kl^6hvxF=&3hjU#ylq0l9S%RwX`-9PaS>VyjNg*C^Y|XZU6L-)TI^Y` zw?FP!2DPKNU;oCt)U-ce?|u67^)?;feTH(ZU|r7%EAD=F4?KO)UJW1PHY!9|FX3)c zBmBV86aa+xJ#s=2<#1|KVRJPT<=}8~9^a&YPxKEHdLFj*^+qYWbTfsK$d)e+Ps8t! z=LmDWjW<>>bnS(%IIUP7&ExV8jm0R0pwZ)}($hA3}In9EQYmS#u|a~eo8p?h`&pXoxf7D+ugO-QM{T^%dU z#|LO6Xn^7BhLJQSqDxYFB>%i04`}-NMjoJk-i*Sr{PTL3;P-j;em0#S_X>G#a8K|_ z+>?1kR0&?RBW?@rz0~$ne|R~5^KocCIwuaFJQDIzyvs(;r)q$g8sDXZ*B)ipBPs{~ zSu#;!>$C8;e^i$@q6_08Tl?KF<%^n+kZhi^SwSU?G&$BCaRFh@>OlMY@aXDD7HBZW zM}&q&+hgMp?wfJ#Vg|mcd6W3t4Ue~*$QPQ(Q|DyE6P{+Y=__r4b`0S%jYBCy`%J$H-h$4 z+!^Iv@8L=cs4$#yijj3TYwTH5)Z>!vbVyj8BS11Styzww%n!P z^ucdD@o>O{K;bNMxc@KX;e^xwQ#c%H0(}~DJfQIZ{}009fcW>KyL)9NkpV zg?#0EHXn2WnLFs^>*SIH-_Kg~2~hjo-Oc-ypbybwlOH{P61iJE^cdrQh`mPMBRYfe zw9_;yolPy;5r0SRcc`64qIOT7B$8uGjdoB8-oz>nwu71M5zp#*v6xKHB z{|fa-`-j37&kXD?_%F}H6eMK3VxYoB7Cc0TK`_xi+H(|E#?7<9ZHpXo~T6D?7bOGFQ#sBpZIvX@;%>URkuHd&Kh-0 zNRII1w_1`#=ZEOf+Lyq`9&f@~A%_#4RZBW6^yckn&>qQkG0&w@yRSdi+YR@W+YY!~ z(^8eO(H_ZVZ1g0#=C(Qx)E)A6POtkSh)yStRC?eS$oqm=h8l3KnMspt3JM;P{&V!%s}~vuYc9V&W3B@6i{Lo}c(7hj zb-)u2w?jG9QW1T^aXM66rwi4=VpALvrgd~9Zwp8f|2KGao`AJ>*~lpAKu9uybQ~Zd zGPzqdFvam)Lmul{JTD1}4U96ceZ)c(|vZ&+cOca|Vvkcm%Ug?;>vD?F0utLlUq2D&#i{w~57?s*TowYW;eL zP;LA>%3J8g5OZKm7~UzZLt-=$Ji8~X^AsP?uP81o_8yv%M0=c*^inMt?kU|>xKLOv z2r#h9uezU7{`vE5sF(U75q=Tka+JSs+VuB)IEeRVHEcKQsTwKem0v1*m3?2xDv2P28JOhC%}C{5myRT7V2(p@Zi=l86zUvNffWgkSFPHLtke@N5_aSYQbtmk zp|@#Xtkm1lIiz>1Ik`X%p2Z0lTveKIhOgS6p|VxUjpuKmaa&Kli)cpad@V^(t6?3G z0siEr<5k0Psn9Ar#L_{7dn^0K_bZ(^p|n&wsMyEMEM1k_VQKN`t!Zsn4EV=^1OFJh zA~o@$!GGH#J{*{2czE50T`BHw_y5Qe4n3p%r2O;@TQ}gTEm@fdQ(AQH)TJXsDhNsm zQP8oVBdKHQ9IJ3%@8LZST5|UorzKg`&SO2-gO((tmektBQ})U*Hb%s`;AX;B=jU&a`!B~k{_El&{{3f--468*wFm+z=Q+W>`A3d$4KhVMt19s*h zgKB5S8LdJey>=Pq!lwX32S)Gx#@t+Hp|#5)8>9D0zwj=i`$S(n4TUFZ7xF>>dO`UW-za&P`_uvVNwMPr(S>>V{D?h`6gs(}ayDx0 zb@~uFtS*v;pElN+jpiUx3;m|n9vWf8gz5nQZhlz7E>B zYTk}dfo`aJHGwU$YEc`HcEH4S0qVZ7`Ajj;EP;&K>9dukfFHGlPu;sa>vML?&PbvVs=0%6NPS| zSCsQ8f_C@byhW9%&Y zGPTvt@#p8_zl&pg^=eap8l@nH0^(`YFJGEIUFz3w$m2DX&}!EcDXscf(tJyR(_CK; z-&o3Nr9&>}bioLz4k9hro}txkLQZYu zo-b6+D4!vxc8_O=P)_YZ2Z}YjTC`9mAe-J6Win5yje0T}@Ul*G;Q}(g_D8i7kh?|j z%h>IJd=5r~eTY_lV(etKYL_j2?w7i|ti;i>?CFpJnXUeu!Mi2f5t5mKXGPY!Zj{IS zM_(Fm%sB%4Jx8;dc3YhjMH%3{({xIYi9TC8<(I6hTj$_>Oo{ixJvqC?<}AlDyF0yO zmTl|k&D#Y$g;37*(_Y;_{hM+u+rXIx?`9@g`AX@2_*}_Yw{N`Z!M|yjmsWF%jZrF{EoEh$Njsu zAO6wZRa&cb1B(8VHI6O*PJDC2BbAHg4g3B`dFR6Ju_w*!G!ax$cmjLY7C0I}_e-!) zI2U(JkT7Z!bA!Xm9`I11r^H*TodIc79&aUSlmR?{7+YH3B(d0#eh5pYIo2!ra(Br4 zfdb^JM9&0t4jP08)BQ?_Pi0v=OgJ+e1rYe{LliOoc*`82rh_+;40|THdBOY#UmKrM z-Kks89)fyf=!2*cmr+}-M%HK+?uiCKiP3Hl93v>SYy! zL#QTH_B<(g<96IoTq*ajltlT%if!AL8N_e;>;J>K_1cvL<5 zS^2I;ijCj1_}F!)^QGp^7tfitXy1;9Dz~@Idb3&5cW*!X24F6P9^nz(iC`?iD@yw* zE7%e#)O}1ex^F`vaCjpwIJwOtvwea`4M6KAT?EMjuy!(g3gdT{#_}6S;!HoAXo-kC zapEYbj*%&@Z@**R(kCS)iOPqp`QXI7Zles)KJ94Hobtv+UKu&ECM|sjbg+GnmM7aI zXs)){<0n8Dn|o;#FMEMVR3Dkr@jX)?pzSC?Fiwu?cix*CKWfAvtJQ2T+ZQ|_Gli8N z764wbnv|x6$XKKb^(zp9-kF59&a76rx#V2J4w@ZEIv7O6{dpyvo`_g^; zdRu!Aod1|ur+m62y{#Gj(3FpR@-aSTQfoicZgg zH;sc&DvHV*l#9Pr>$2nQp9ji^YEljyXjrs7zu>va<6r0Zo<0xz2ki)dl5xSzYn`Bb z&6D{fibeTV^rZCvo#}X5f4t9>Nlg z0mOB?C)q=mm8VXQYn^8e?lf($sAjysAlDo)N@Fr-CuYj#IR`z7@1YHyNMql`*pz3^ z0XT`|^Lquc!arS`SNEmyPunJayUm00iq&6VjWKI6CgpF#m_Ds2e+Y7|C}v3U=|xeA z30c|<*RR77muG4_yIFi@OT(L+2{ybm*c1aHx-hCRfvN zWa4}ZyXeVWD(2ijvD$3pRYS!xr6GXwsv!k+0OeJae)%KCn^!FwcRw63+pwRRkp18S z>bdtM1)lhlz5cf^l@5LTZj0>Oyt!Y_`&ho2`KX{s^rIiwWfBd-JN_R1=%4Z<-l>tt zswnKswOkS)Z(ew`Xkq@^43H zC^^@~_4yk&E?l^AW4`!}SUc3TYZa9XsBM^kiY=2yRC+V|SJE7Vu!qkA3f2Ec@#4vFRUtJ7dt{4}RYazrhMKB_fw=-ySxKu?jT8#Su{{>V=-P)4O7QCgF_jA1t5CS zD(_Iv4VpguJV|RKM=nEk-0FV8iu{2qw5D>n>`?ah4t4MMifsM*D%ZLyk35mnWzAOi zJD3jhaepMuV~D(IN%Qe^C|Q=|cv=aFUslSZP}t|K4Dj z@s|Aotb+4ofz~93wq_ix-&PTN;C z;&{1cPjd2q&efhs4R_9;xp+gD9v`-D{psan@27_)OdK<7OK zCVB;ao|}fkjQyr%rqX?7=dV8UWLN#qYZnc8Wy0jT{_o$c+)(^t`QoMhYfI$ZxVXRV zUcNQfB&M$zIwmXYL_)&L`zKLoPX2@z&36ncKPn%3|D%zv8ISY5UWK`!%cNTaA(Yr2xE|8~`0O_fcQ1Ip%%A=Y?4BfeExjpy;J0HKI-zDRB2jp4& zcS}GEb;6LlW9fI8w;1QWPIDCX;vg?3P)G-=QVLd7Jch7l=OvJxRHryOOJ4W$;_1q# zxBjbqGGp;??41Q`kFvHetX-fvdT_1s=_|-e{V-}8<-Ee;)*L+8OL_5MUy|1M%YU&R zy`cK0xprbMIK_}=B90>txF8V_K0Z}Nh9d*}<3M@Y#a6A#b{<{3;Oe63Ted=~kqhs< zi}iX&Q)jDxg^!8-l22(qH;;+U4YW6JdUs7w_zZ_-P(En1Jv(J>D*=82YbDb%N_A2jhKfogPvI$so z#N8Y6i+~4IH5douR8>b zs7CfR;&|R=FI4r!e^qOH6z^ll5A0XE=cG)Xxbgab|9f5CU%$CnraC4hK=3O@0xu=h zRrN~%Li*txhP{S?-|aVW%*sj1dg+|o$z~tgS6;4y!Cs(&H%^?IlEaSgKcIBqSKMPQ z2Y~PMQl%I2u#P0UVz_5`QrOsWz6q+*A-kP8Q$dzE_c(Uw(9^>){E2Dj22371W(3XN zchKk+>>9haf2$I-uej%G%#e|OCNbDXb5CmtR?LLwfj7<6xrpm}2Di3N1d~We!*O7F z%xMRsMtRkj2lOuKJGgYvD8-3bu&D2pf3Yvzm|oe%W+-W&D?ixntzK{jnOOJ_S&5^U zh&fyLD`US&sO+^H;n(#kOdRn+LWsMYyh!#2N> zk_pU^39H}*Z<3eVRMglSMP=Qym0qe)48(Sd2uj4IV%*|FtQ8H<-?y=E|H3K z|AbXz2KFTkeEHG=<(D(9vuKW1^-3mVxhnP*pBaOFI}Lhh_V5|#MoD5qfF%CFc*Id$ zrv-h=;sUDFyLjmH1z&t|{;RK^o;q*(M&*a+9;D2K@Y=tOcVDe$acRU~xMEU%AQpymG zXSqC-x47JiHVJ~)2A_wy9@ zCrZB0?`isZaqT^yzw@Wh1FQar&p&+6=l?uE#DpfFPZn{pSsu>w1c!SO_G7TT*rsJr zp8-zwd>i*6S=|Bj$9d!T{G725$?DqCzOU)$JpJMCF058Rb-&MHzAL;Pn=RMq(y;Cx z!T~xFVLfke0k{r(?V)JhPbiJ~y*|vzux#U`@tc;sz0v1+0w1N=(|-fTe-rrB*k6@* zxelU9dmlc|JlHK!0}kf|izP+}7V`EDXh$w_Upug{u|MGFu@4q4+wI@K5q>Hd%=>fx z=RYr^sA*lC_Hmy@4!@Y~=}*3l7s&Tpgx5F5|I*X0?t|*Hg@}be?*sfSXgB#jfEMIq zKevGvK!!~Oeca%@D{G9GcPO2$iO_3y-Utn7d|0(OTtlT^&n#v7cjI$#~?g zNJjbNO%=WS?_i_1yK|w+XDBU@-6RqgCQI z-rl82f3mTwa5n8vHuddI`o9eLc`gFa_{}}z_+k&mZB63=c>l)noA&49H|bB~Yq4H0 z{Ggy5{v&ATw9^CsPo8!kt@Xg)w0|S~-u^1BZ5-c+>%f&Fj*II4_;4NVZ_x+ zd++cnw5z^4&kd!07)ayB3^CZeLv#jg_DXVQ82{LgO zq=vxycb7$874CJt#BYSbt*gpt==#<7dqUEQgd5UdO2| zV2P11kp?;ZWNt>|fZ#_01jZVa0whSZlBwIwg1AmoAA913M~nCTylYJJ`NKODe)LIv z$H9fIW79i#Oz66QD+^dVvwrRb_Lja&*^tDZ8>f!ymY-~XsLjY>qlaY^bn|5VrVv~Wqfjo15%vb0=}s0E&qy+g}6x{9R|$4%1ALAr;E z#e=fqM=C~ci3TbLXC{;NgCl1*j(|!H5Kl9zxE=*-?mXzlMu?5b)izZgkGBkulxT7j z5L|B2dG10o&s7*jRQ#Xara=_n z)@qe=jIIDd@|{{ihF6Z6G)}n&SXKcR(h+KfgulF%-j(yWj(GCV_mCEk+7$Ivs^ZU= zk7gD-z#kBmE3o-Yt-~abgpCpYRlX`rD8OXm1(=ZQnaTqBiZ3C(0#AR~G}uM-tGd)! za|z>1!UEvxP|zBx_X}EM^O6uhe;|pr)2msx-{Z`X`F-Eo{{3skeSJ&&_UqTT^rwj7 z`HMDHEXpg7oDo@`x2U3WVczhF89wI*_acwO5INuYRg?1%sRY4MVN;6bp*VXFYygRS zcj1oWd91ou1XD6$Zey2QtnN(~`{>t(JljJQrDj?ubQW(dbDwX~;zHov zZY=c$)Hg$Q_z-i%*y3Y7f{YEzlAVu{D-vMx#_a3J>TV!=6%0ruqIDfk82#z4FfLP=o> zzhAzFIOH*U6M2k~h!USfS!MbR?IG0;x3XmMt)G6nptP3tZN?@SEAuWWYbQwWvSIGk z;*tZMigPBr-*W5O759y9fZ?)Yk;8$XkSQDUIIB5kpbU#;p-}2T*PP1me-^Yy9BETU z7&1ujk7CAtMRev*Jp9N;`Vi#_FaIA68+^VLuXBU8Q?ri6T^^3}=dPNv7)ZHMv6^UJ)f z^@7!@{N|aZu*QVS6pTENDRh`e4K0HNO!CO74wt&|~wtOBQT=YT@tm=cy35 z*S7bRTKrp7wy}V%I0-vw5S=CE5`i_I)M4}x@Oz|>&jvW{!rO0O z*g(a()q33aMjN1egZSV+(dMhqy%}>+U8-;ZNO?9u+-G@-FuZhc6KlO%~M@U6n0{tb1){=NyV-4I*>)9(t>A1h}0>x$+W|&oe#M& zm{L%?7nMs7*VpGAS#j`U!+(EU|Hz0_<>Ox&vhnpi)GbZ%)-4s6|7G1$dXG}Q$NSai zJpF&I&k3Ap!gr_^i5L98tj}3_XOBNu@hi^>oI7>*Gw7TaVlVz&NA>jow>qkidP{`5 z|Lv>3jns}^@n z4s3-1RbWqe{A0aEU;peNtMYNJuD-aYACuuHbyaC7 z-PxyTTlt}vUI9~Z$%!c`$~omG{+#nK`YJ*nI!A5~IN}JOHEpxGpCh0R+l9pj=k~;zEylYghs#c+rSVEm8j!9=3u->S(tIKc%bRw2=FH2i z>#>ApMcSOzMcotg^GhjLf8WJE5y^zYvLAU&th@WSO7Rt#B|M>fl#Mw9$TQ4O5K8p7 z0XMxY4%T7X|OqtBObT3++qbX{Z@M5#YrAOa>2h%3_<_+{d%v$9QMhnMu=54LNkO;otS*2+P4W>mL6?(n!_q@_MfAW`*qqZJ*YY^uZ-*U>kReP(ya(O5siAf zR7;n8c0%~QecMwlmwR@Sgu=@JaGz|PLbgiU7D>_GV!2EMl>3y5<>K0+R<7Wym8-k~ zAa5(DSp4gI4xm;pN^oQEUjV)t2;UOPx^;)hP~W8e$2!}q~&44vvR7b*!*Mdmqa=4hj z`d~-b?f3c)E1xuR@St8Bw-ptw+xO)5{bj?RA2V!N?@?vL1}U31ZWA8}@8}w_c9+o@ z_Dp1uaZqu7N~!vs#vqKX~du zkhaLY`cdV(y94V+_Np8E{IO@Z?|ORumPa@Ce177j7fav2{gC*8W81WSFGfW@AD=L3 zbl>S)2Im(K3XgmyENs`>5i3=gbFlY2u=ntQqQh6ct}!!y_QpH#$$iF8AfU(i#<9dF zfo18k;Eb&qlan)X;z`%~qTDWBdOp;-tE+I<{3YYtwL^1G$BunUx^&IkHLR!U*^SXr zCC;=}9rHiXqyx_4;%WQJhY_S!TidMBeY3N-v`Wb@PDwEa0bZlAq~rKi+jgYG(W>m+ z9;WRG;6>r^-OF-3cwPv}@62hn#Nmv|9O!|#Z4$YpVNF_ZC70x8aH!g)JkR>i&+E`3 zZqxepo8mewRQ^72ckP=~MvtCyq4vpv%J4&|R_L)b=s-moLcv%v1?y#!gtTNhYW6_C0>o~1mg)&^EqA{#F%1&b5+D$P0P zVIRR!ph`gobkN-*?rWb!5huw1*XZd*E{BbX;H~-$Y87k+Dd5jW@%y5pwdoPSeJo&K3n5FGu^iWHGs{Gla?sI-M{?wyjkbiH)5`5^!rtx{_N=|v1nlt zd&_*l$S1}HD&4C)vk-*He5 z8^8{Vk;-hg`H$_ry27(08jsNbbmeD{@b6OV_%V+D$-~TIyD05h)yKGm7i4(~HB)kHBtR3S)9}B^}(epI{ z)x>})uhdUP4bS@ejQz8l*6{rOwm3*F;;F{CQH}2y45;IhH>sI??x{Wm)Y{onk&jeA zdG?A5NK<>?eyMDTbUFZeZf-P|^Y*w9FIfioc>F%brW@%UyHWY+=jPpXmh@+5KlkjA zVG!AdAvXU$llh0|Qwj0LIYoiq78#fmH3~2*o>^)l6naGik@%NrtglA_wJU5i{6VIp zO88XeAvkS(t_}I-EhS*Da-ph*>yJw#pzT_dC( z=9R9X^z(7}3@6ipMgo2Szh}|RR3Dgu13>$jo z>!*(uDBt{&)shsPfBaGJ=-#K?%OnS!l zs?|N=QU%i;YJy^KCUe=F$B6yOuN*`H*Ujrzo)JH>c>VPKZM&7`?a$ekvwy#HY(cN_ zmE5ab+~8hLx>j+edpUWPi!1Ncs$S)M9^Bvm#XRb57XRPo`Taw&1uqMZ^-RE7Ou~9# z-BEpB!%_CqBSth{b>E#=-^*|}+Ql8_cW-}bfB!yB%aQkQmF2BRKIZhLnkCD`NAD?0 zK4OHcLjoqGbsoX|y)l0*UNWAE!JGX&cRUnF2O{(B;`Lc#m#CK-1X$H2OikV$6t@}V=%sxJc3jYpeD+4yWg8d{JKr* z@R_cT$Bt#J9fI+rqYLG>>+=di#3N6Zlwd?8`xtR>+*q2Vhzl7b`5Zt|xg+K<(4D3j z0Q{A(g<073v&taaN2Wb+`0xYM+@G#4nKrG2WFK%B zxdM80HU3p4I7D=CQ^-|369F#RT25KymC7bIR;ght-1~o8hW~zYI;zQ|u-YMyJfM94 zxU%=)<|-D#Y@4gLPMq-0yAz2FVvYlMKbMoRo=|R0^=`6-2akMxup-UDk@$Q-y(FLqlI(nzO?KO4|I;SSRy+=FuzNVYcjKcx1fwEHM4fl znDdo#t|aAnUET4N5~hD{{jNnBju?5> zaxXJ-yU@XEhjd+8*ksy(YzKuAkuWHcC_%uAA-BZGZtZ?x$>In0+;UI6b#UzB#bXcF zcWqTv)XH6wUR0E>nXz|oL&UslDnGw{Uc{}ZpZ?ylcsmuLuU_of-*7sj)AY+%rgdug zP$~-RG40Cb={*1!dVRzb+-+B`o}k^ESb8tGqAiF7gL&K^~X<@qe=-~aZr z(#_vL^L}!Z}Uli-S~8{W=hM4mh~C^^b2Z@b`_YArAuo*IP)V_X@5lp zh}OX-V?4EXysD$~yHH-;+&#tK8(L`f|MV1lZ~Q!>K{P&|Mt5G-?(z6F9EF(Bs@1S> zm8W0usP_n_VZ%a}78U>~c{U#pU`?HR5qnz;JkJ0QVt<&wV9fcesPEVB==-lsPHM(x zf~QXuzqm9Sp>-LLxerv4xykSI7W~7*lszSZfe`1|WPEIT(bSjTJ=*X85ceKnQCwa8 z@Z3AIyRfv~g{276i-Jm70Sn67umFmPioN&VHFk{(cB2t7YK$?7A!@7yO`-;k8qp*s znraeFOgB9-d6gahzjJ4o;#;2Y`JVsxd?ICLXKp$7+;dMq`TT2ojrZF*eAn=ig#W~o z_6L0Zg}**FE-6NVUm`4okQ|Z)#YSj&7R7I*r?yNze12bM+qNTKJjEXWc=Dv_j=wI> z%e31w=W#D{TG~+cZ5B2oI!29ChW5;Te!_aTTYWhpp-(}4{J-@_QXsg0p*bem)z=1F zq#kNctvkeC-IzFi(&UfTMWRQZz4K5SyJ<}H3}Q-$ zrlqOr@$m(H66ja}FWFD=18m{5q3QdzeF8k!4!vavN^Z%&l3xkR} zXQd=2w4;fABE1QE>BSy|bG%iSdcpDj$)l`~L zP5_tQ*W{}gk5i%rKOtEul@*6edymuB-}OGuAqFa0cLq9HLudk=O_`OJk4S6nv{oC+ zY!f!*iRK;8)r}80LY!yqkwf8(PASx%zaJMn>iTELUu@odAR#@!T>ZtkCQVBZSIC}= z>_B-MCzl$;hUf$XMvD%1j0h_Qh1ksX@SnFjK6~lZ2+NgM&RSCQPpa3M_nH2^&mTTA zIwo$XtwU14rKhIZhkx{*a`?pHex*&C0vb$uUaeFTaAp9O*b88>oIAnaN;|{MyQxFj zJ}s{cOHgmBm8|_HK3pVqaqQisR#F=))&9a}thGT9bs~r+^*$1TLbz}diZZHiT9GjB->$gVv>AYUU`f6)G4CmKO^aJZQ)Mw4uR(q zbXz2hqz_}Kr(||K!omv+J9Zt-PTZT>Dowqsw%@q1W$HZnwf(ocOqjOj>B;&HlX14q=(*S69QhMx(}-$?@!XMCnw)}!AJp%>bm4%;L=LaD=u1yB zim>u1YcHV2$-YXq|ABn4ntb$Wy?ijHO8o6f&v`KV?`sQYHl=b~#Vdy@Dz^T3=#9!l z^2F-x^o)#%c92|-*bcNi8#sXPhTL8?c4``2Vl?R(hD_P zlz7n&PN4|BHL7Jgy^hspHYj-m{3GIo)?Cla-?b_vhmIOOvEcHQ zGowbsz5XyeOdYaYt>ULp42LF(Ai6^nMYbNm944Tj@t8xjkcxn?$cIoT_|Q~HB|^G7 zf6Ol~$)Hb%$Yy{xA)S4t9_5_H-{0dY;z>kj>X-@3M;G*t8(rGOuf%=vn=9F#Go#d; z*B|PXw(-fUdXNl+Xb2LH#;u#tcg+6$R^|l{;LQ(k-g2n(Lj1cqye z1*)5~Gnr@mw`nu>NM5g=J#%{Z?#q1FPMJKttV#}@nKN=#hnfD?go9CL%kIUe%Vy0B zb&!u7h)QkSKoN1Sq^Hs0TC4Lh5FL;$SIVYOo?6U&`}Xdg)3aC4Jc=7=)9;)dTKy$o zA3ASV+3Cf*E#|0$30D7^9afFZnW^Db{q}8U4Qv#WfK|fX$GZntIXyWWC4jYyAyED>bb zqvS!*awA!iQ6YVNZQFWZ1x=ci!t;P|!~u!!{f{H*)x_rPtq3N1@R8jtQBA zN3%-xyS|w%`n|ZVXu@Kjpj~rz9>BOrC;WlX30sBa3lO;Ih{oI4pa70j%m^8ZBf^YI z)0C2e;Kx&DwYF!3uPrWK8=hfLpTi2~Q#eY$t%pXBo;Y&k#L=S7q|<-2%PZXB3@T-ZM0WH-0@ceRXz^9@(o`XnIa1#q#uC=EZ#W z?zZT4?4zMzfNdq)CdPJjDLereCT+%eNS5^gzG&_Uh*^O&dxbZ?a>eo06-b;N*x84x z$Yf7Ab_Mhpz{6i!j3yWncx2Y+MnG1hA~pQxJ1Z(GPMq;g?R^qx<6Q~P!FF<fzp}re_ZS>>83_J=7C-f+1l{^FZeYg3cLn0bdoIEfi_53_R_)b&uyew*Sgo zomO+?616e+ZQf$HCm7Zpbi;Xn!SDSV0H01EqDO08%9@42}vv%!@&MfWKIOLStG&A$l zO#J&a^T6n&*gJx2WJy1P( zS^PKJ`R%t?zP|gP>F168>OJO1>JY%Bet#qb6M8iuMw%{wmQZxayFEfqkBn{8rvF(H zoy96{{3m*+?yT)lmKuYH+X?(IVE1ELgr6P!*~nNdTxcVpYZ8#>l*tMBZe|BYzdUBl z%gk>o_fSW$ryYNphDNk))pOZ1&n)ZNs?BD$i9b*$e)}!k{%ryus^;ME-FjezEtz%Z zCe}GQDYyEej1|ZF1_N(Spl>g!6ZNd&AeImmF9zj4A6amSz!6s1GzICer%J4MUT;WA zDeP}cNwM`WOhGxnX;G=EJs!)+&CPkNM`~)+G{!yeXXduGC6^y)-8RE+o8Mt(+l=&9 zqsB9?&Y(fpF8#1-TLTOc^T5ISAJ2NsMUm3LuapWndLYBPtsW$O>$n!He*&xpU}fT* zUL#sf7qbnh1rGrIiyCB?%4~x=i@U2MCPY78#4ZQ%!R({KQ4_Nll$I{Yo)|TiC3%jI zPpt*BU$rW87n5Vl=o5@38li!E#ArVB!BQvRQ;M~21wTH!qoq2O}K)rl~S zgn~MKt+ONJuu-#-KEfy5myGM98%g!m@RcDjpPhG*Kg8#9JI$JB2_8uulcrf2y;Ayz$X`r$C4aq!E_y&*>Spqd5naL3-Yv2jF4 zPu5IVEP!1LoCtQn58x4pbuD)T^bMdpei#fAE|b?s9W>!`CtN%Xq*o)b+Sr`C19#h! zlUgJuCMHd8+qSKuq|80eE+;3*gAEZOGYOhZjc(q*SG$|J1)nwVLZe-=+iU@2iGNSP9v-7H;*7I8NeKD?~SD zZMiEpQ|X$VJh^mzW~iLbs?nm2ybVWIk^J^u~z(*G#d6drp_J1&J*ufDc|KnDzT+NYU|{UR-( zP+7=l+P3e|aopJG*r|z6X0#tN=-CcAy*jU5>y};cR8HqkjvuqT^yoe!wPj4?s-$JD zQ-FX?efT)buT>{CTMN{dd_zu{zPMiOs76nW@^7NJ)AYi!1IP-eu2=*ga@JGuGmn} zB0x2)nMurg{s~RbMUS1HzI^T4QH|M$`~sXn&VAtMsGdKwpD*~=JwEa+(cYWD zGf%V^iN;+`=ry$hvFV`M=)|Q@v9dGU29BG?liG*IPf1K+z1IF15Rln8e#%I8PHXt# z#%*JF4IcOH!M8-8LOP^=SO?T1->g@l{|LA1ksIFV;fD;D8Hrc3;pwH{(*$hdIh zDp=Hd22q<<1Vr9EyJyd#ljqE7I-|#e#Yph7ip?7^VA5c9k33F&sa31hS|2;n2N&5? zZ2!Zy3R1*QGSQOOYD?S9y<0m51}XQfhEGTOZ;- zVh$ccGKT@U)~Exz%jeA=H?vt-$E4Y_bv}+2^CuUk^^<3=pmCLA?ya!qq(^N5!q-5z zE2sOm2pKtX_UxEB1)hy9%F9Og8I#mA2a>2JiD~dY|=h zY{2_67w`9Ghva2=pY(9G?;{^ct^WummeN$$thXOVGht3(V8^iLGi^2&J+}`=Rom*# zZXW%DgA3Er=6kr>=PU{Hdj{=mx>`+l3Oy~3Bd~Xw%mxEN1KsJtPF*{9F8*`Q#C9<; zO~x*q8W9npez*wg$0kj(7s=oI^lUq*d2>EX{oCr7`OHhHp`kTWKwx4Eh&fE!#CKu; zm`JD6V23u?lscbB_8ntpz~CI-!>)stUNgo~8Vqb|zBYMCufd&@Qp2t4mkV!wwvdmU z-lcz&>_m9(`m-MZLd2!tQ)XlB$0AbuvbcUnz9ctCPJg|=@{#NF;`&#mlHbw4f#*xb z8hj!D!hgp;BVBmQRL$QMzXSY1+u3btFv} zoSGyu`B_Eyg3XWrK0B{x&%D{xg8WNf-Z#DS+P5prv=@S5pm&GL8|7L0zy6E<0R5Aq zoAd{cCJWM{qubB0C8s1O*=%Wt`giHvb<$E@u01|IJK7E(tl@s{#=@-e!|a{R>effw z#-4R@zJlX)$y7p*$lqT&scYw~euvU*wj?xfo6$ZxI&Fb27h=y8b0_<-@mYmNcfaBA zHL^!%r^nkd?xxDmGHRYc$ChsQRCN5bbjqM`550k;SaRFCm(n^3l{wrCP@SV-P~q#6 zq2?U$!+#Zbt4YNB<#?Yn z{FH;0D4aCl*O?q4`$q8b$Jm(T$JM9!$Dj*wDjs31oPXqej-C>a(8pp-Uoe&bu0$c4 zY@{Tq*fHp*?%pWv9@;>nae15Em*iUb$dNpSh@Pla9=iSZ?d`Yu9Qt{CJBEd4i-5&F z_#DhjBHmi=p|)q0?2GNxcA~DSybtw{^i=x}IU1O*GXkhgxLz;j)K9r1FEr@UPk_|_ zn9pVR3Z~dSt(WCM&pc_NB~Kp+q#*ZY@yoSxo&qZZ1y%&&ymVp(p$xDE*T5FsuQ{h- ziyw|UQc8eRHfW}K;om7Qe0uh*r=OlR`{{*+c6`C>I%Fd!z&{`sJp1%@fko z!rO<%b`E`PR%*M#uof+Rd{!Ba{f8uxQJAqXU1Rx}J{=j~UbRO^7K68k!Yl?K55;md z$e>)cdW0aOmt?T!`5W@wkY^s6A7_1KoUGMIZC}6kLPIcx2rz|!OlV*N_WKZ+aE&?O zz7tILOn1rC=;`6<>EYvH@-h2Ze0+WUe5^kHJ^}8*K`2QOYz+1Y_6+t4_73(5HU*o5 zEy2EFeqq)y|3(2p!6;nKv=W(yC~-nlhzt4I03v`tAKls-;T;>z7qPK};_NZF@`{UQ zi^Y|0V7i}gkKU`dg+#di09b%Oh04!LfS}FLv`9>ShJ7y2Qjj7Z7cs(C4he+Rj;T8J z89u2ZHg>`T^|zP%L(L(N-e2q5h<7=ZA`x_VA9}TtZ*0TR)tSi=fX3N7~TO zhCkk_RnZgUXP#y)?#OS6Lx4`&>-2P+zd?$s5 zrZkU-%HPe}r+eWDGsbH{-)8{>+Sf88B8qI00qOG58s=5}_O)VWc~JD)t2kueQP14J z&$_XMFTS984#j)3z<-gh`v1jwpbYvS=Rq^jwdZt&MAagM{Y-AG`tSwHyG0M6d}Pe^ zxxw{0(k|l(_FIv>tBAG4Lk*rG?t~J@$c>AN(9W-X{DT90e31tGdTlj)j=d)DdT@ZX zeB?QdDF*F{)*Ne!ly@H-C<0ze?}JCE*85rX`bz>&H>gIra}DtXP?Z611C*cneZpJP zrQrHgoO!3k^;~i7JOlAOEIRnyx&LvE&oLk8*#VkrE(iHnQ0`V7H`w_o@( ziXmV=nYt`_3(;s#RBOdM7t;;xqC6B~9mg&pH*+vI+S&_a> z?aW@&#`3c~S6_x)4^K##HqO*1YFgqgj7xeC>%AE~4vkC14@SVpfjxe0%|FObS^R~o zOEw>UYU_0i?U0W1D&{6^EUvRt&=x^Z1EPe8VPJ_Kdp2*`<1x>Bc;EiRJ#(Y4)t0ceh%d1bwm#CC1W50lR{Zju1*$tc~wc+G(#dA3Sqx@{vNcOAqId%0yY702czY%kk1VFW>0SB6n5;OTAw>kZ z5nh029LJ8bADqw3(yf+lFOcLcqYr^8=lx=91m0@|Dfg#l24FRKNkFi#;NlUhAdq=#MZT|I(g)>ilrmF zrr5gDxJNpU$vMt(Yfe-){*;)O+NP-JsAzL2p6TX%M)SLh;yz+p>L}MU!!ZBuc!p>; zmdnMCansSGMfmSHMn9=J^f^l%B@e~3wDx4toXviqhQw$0p$`a_mJvS1kZ4e=ud6HH zwagXUvkk04x!R9^sy$DEE43nJYWXQj^mq-49+z!%1|Xq3&R|A*yCxBR``X<=BkGX| zkQ$wnL|n&K;V5u0T7IIYh1eeZvx@Umrt>1ImTEL+PgtRlg5hvQ5Bbxm80)lB*g1=#4M#aA&rP?P)EU~j4~ z(6j5nD>lVjzEUfsls9^vW+>6ebar>i-Q+8o7Rkgf-neR_0&DlxH^DG6yH|HamQP>{ zpd&41`XLc6q^#uwV&nL0ty1UDZQj3GWOibkcFmf#pO7?Qkf-NLvrkfs(Eb#5jXif5 zeMeD720q6~>k;jk#Se+~5ZT=zTwE8Vi^kd4@wL1NpMg3d^BXWF$}BG`R(~wMu9jC; zlCZ#}x7F5)TvI4K>;Xf$WvUHKQo7AQ06(}Pl8Y}kWcwfki4a7y1 zP-~5KXdn?z(F8)q64fAiUrnq3CugDVf1QPwT}L6tlZg53t7#+XvXdff46nSe!TG5M zyIul+k9UsMq=LU+{eOYK|NoO!R|{PndL63{enpd2X^%AIS8ieF6Ti})_?7G1fTxf# z8!OjUs*l-`@K(F783O+04RKuvjm!es6Q7SD{E;@W3rZ{>kG4T~QSc$QdOUo`_KVLX ze0E*?49UT)%5``z?Z-Q=90YhLAdUsB8>|?I49`*C&BbS~oC(g)rj1iNkIu@{2lT+& z)~E5BCMPw;9~6W=0DZR+omVG!wWV|&xwK*#;bvcT8TQc?aem=sqQbVUZ!xnLtIJrA z%1Q|29DB`O>@~p)AmfG^USim7j*rZ=72W5*NUNajjFT#Mcd@2tPF?#xVCp5gIbylhbpBhViDqM^4v&ICv z<>W~~w|3C_D_qxEc?Z0sfzRS%Iufh#)%~hFV@M~tPm0tjhNzY?X(<5;pcBLQPK9If zpG)Sl>bu{6&8p`vRsYZ*4hq=#YesNz#;+S;6=yCTpTHq_e6o8T&P-Kiv)@$&qtNHy z;H>)^-dVtj7&*$9e~r((sov~&(9uwQ_Mm1z`Kv>a6)xIs8GrD2;gdE$wcjfx`^TdR z%wwy12fCFw;BBb5ew61Yp7^xkBV=TpD7Zx&gls0@0^Ndg5VAom|4_THLcxdjzUPVj zYk4@@TR_(}VR){mcn+2jKV)d>OC^4THY6p3e z^zgKz>*sMjLtNt%Tw|70#}+lGy5j}zdLDnFKI;iNQAskG{=AzkozR`&B}(GGyGc5` ziN)v?ER9~~F)T&_2AJ;M!?)YL79-ps~;|4Z~axKEO@x43@I2ye{Z5c z%G*SFvZ()ExJFK6T;t%xbuq5HiR%QsP*)p32DSxDX*jbK6prD>6#vu^xZR*I&4pvj zWQGcRb{|7Y(Do2k!jFb{p>7Q7pi@~E{D+X18WBKQ=C!Od7TEO#Li~b#GW+K#cb-jF)PMi~8rz@l&m6tx7bjg{NLh zI-w*oCp3@q6FP<(@dQkL3BKoAfdeCi)G1cvb3=OyN z`9O?Gi?ztL`$nedJVM-KrBLtSpk^t4rY1p27-hz-d!`GhN}h26RpKyUzt|=vEKq7x z5?tgJ8du_OGJ2PIC01wL0*j33X7L+<6s`jeVm8P|pAI1pt{Tp`jkvnNjcZ3nELu3? z=vLKd>(LPl7mhr#mHoCgC!tfPgq*6J_|BcFn^jKH0v0;GYe?Fa1?QeJYe{>?k%#b zX!w}Ok&z3la+-J7-K-uI*?$Y`%=)V@s`Jm5gnv+0_Ca{bS!k>2&TCuxN6OD(h`^H` z7$fDE50mWn03I6bZJuEboe}Ia(>l##x->I*nr?D9wls<}-!MxYf@RVC{kY^ep_>-&q9m)2qqI zPrq{~^3xw&&B9+pBB^Pp?{@h$^$W^Q&$@s94VAz7=5zHGWTyvg#lAQ6L`FE^66GM} zpzF9VaIC?7&~Mz&s`*xVQqb-DfHY+CUvw{0BYtiXt zMBv~$RY7Dyw3+oj#jdeU>?P*U6}8cdmwJE2!qp@;=?C>;7uBqn*|%ZA>Q43E$TWC+ zwhPd+85^uYs8G_#zf8}PUib1*Z&RO43P+z)l;ITX>Z{rDk@ib?Yu{=jX$eow$IpXLe4|#|%PXGqUlySIC}daIV>G{4jXi}k&4b-dBh*cD-D_5HXvZpz*8MndOHOx z+SMPw7mM0152wsMG+3ui(mgl*3tap8eP(ac6QC zv*^Y=cuLNwzM!OBT*~%v1GRTvEl~C-#M90b?LmvHbi}x=k_0A>>Q4N&A3@lxrvU zzu+N?93b9@&ckrCpU$cTSY&e@LWZ|?Ji%D5`rWN}WvgQyH#sh$6xX9z$?kkNJ(?+R z<^wT5JL_H+drLh_b92V2Vs80jEO|8_(_EeTN`;%5E9#u`UP7H5m8T?cNKW@@W{Bz$ zGh?t?aAK1(yuy*!EmOx@ z9hAe`sMYGH^%E-%8T#))Zbh{~ojH}RPo3tZi<1CPFYLq=yRos+V(P3|0>nndhCA*Z z9AJW?zjdo>B@R#xvn578p zG}%Y*iBVzWU4S0a?&gE6JC$-dxJ+U)V_c`6i0PsjFaC|T`SR5rl+fU+w)ZUM<&Lkm z0EN)LIAbwqNR*Tdz2WAFA-ksxWTs8cXKx?a*2gUrdnBuQ{IXT*1H@jk_t>V$s9neB zzB+cV2kdaIx9xyve~?wMrQezq+PUFT0lkc3)W^>K_+nX%ufdV$AMc zcq{nEfO|JiB*iU@<3muTIRk(DEc4+*KypoT+{28DIZW>-l)ebnkA;pTw9F z?-pq_W86Y*0K1P!Fq>puhr#`FbGyc`ows!9@;6?&v}nna@jE*t z=j8MpBUf#4L|GZKC`z)LNO5!e1E2+~aW<0B|D^J{=oTb)0 zV2?RIkloqWIGxqUd9&(2)zBq-v^80YwtJ%OV5|vNgrbr)M;qZLLs!I=!tRpUzTnh~ z1)E;kv|z=lg7%rOtoOI~e;)Y@=6|$h4O6GFEo{w}k9d(|>GS>V{_+i4?<~mX6n_r- z#VpW~kU5yl=Ww)#CC3aiH6el7M((ZnGtML{?kiKWPxoD6^;=eWIy+_MnI+89)ZQ;L zs4OV5pS`JtEm4N6|2WPrJT)$-+oV$qc?af(Y*BZu}1f0tKVa}DZ%Q-PQU8Y@}GM-t-n0I!@}Zc^t$IBb39Os?|AxLJjP1c z(knOA71wG)jjCh9Gm5g~FPbcuW@9Y*Vl1F=jE*FX1TZI$0WA=p)8ZiWKmdk9&T#TN zCAG)6gJF%f_WWM`Z0fI#o3s3v)+}>(Usingji;aVI&bJXbLfK6dGhqL^PX4q&lE50 zP-e{D|Bx-YaamoeF1~p4=4JLHQ~ONZwR;K1z{qb?c>%H_@QmqY;aS)+j$%PEIy%Sqq4x@ zB;?a6PHmJtY+FGfgf*kA9AMR*o0N9hQ8h}H9tRoL`DCWy?ZwS>$^2@ z0i^`+eqnASh9c~N^C?}x?=Q>`dM=>r)SIuZ$qK4|UGC(M`~aucf(yYKwFZ24V6S)) zbz~8G14j-c8*oGhbq}z_0AHfQQE5v^zfU-h#K}s*QC*q*a&N|VC+WS_yFbS@`APlO zLrLnO43iIRcBn70_tgZ>Sb<~nmcJceFnAHFS9$m^r4<$E5^K^@U8-zBpOEu)z=?DN z&;Y-%Ck1~;>07ZX>CVL=lmTwgGpUOF`uzxN;OoOLZ;)BL;YEWI8f|PnD1XWQ2;cZe zZpL2QafqcG!++g1YO?zGq5)ev7d*bG>c#PsZ?`i?{=9zrWaeJ)rsMY5+<|-d()hSE z2Wx|xAfV;I8mUg_#E3T4Rd+U+~wJxkWpk%cdaW*(}C1wE>R@8;=u5Q_mQ1r;jlWP zquQuWVOtx`6UiW03oSdx_PI0{)HMVzmjgT_T7a`#j9znUtS4GHPZESR^KU=N9eHH= zV*^~`MR@BUo?iI$I+nu5=o04bP_I$(@`8pEM%5m+n@zoTv<&?{h5njiZK=NqbVxEQ zeUYuSevinWm7dm=DNWU<-snDL$gq*Cde(LMs`}~HwMYm#M!wK@@(nO9ocCzhC2NI4 zt4YyvK~uj64j1Zfg1>Gm<}3lOdho9p1LDX*?p#?aF&sF&0M- zY|;76=C{da9n`byMjmQCwng&jr2h7NWyRi&qb-*GA&uMjo~FLF$&vZQbF-}e`@IqS7AwG+?u+ttL}hSZv#+Mgo9r}aLzm+xW zAhyKOYL#MuAlcwJ3bkFy+hh5a$8SJsb?i#(O_qr=Nv zLfy`!0qSP(2lFLRHU?WNJ&T#=3BH zfe$STXb2KvOF>?2fo32QRys~dIAQmOUrvuqXVLAwi9*;1H40{p8-qmPrh2RHrutQ5 zRtoYE*=r|rU;9{_G|-16B}RQ?P%aS&+*bdtyUj8OZ~&UNmFOycEEz@^RD(trSiLJ9=yHdEbmAacUQ!}QO~)SE>cHmqj79?_gbHpE!mL9+^`u8W2Pu;T+1oxF%D_Fi&b-{d3az zUOjS`QSXjH{5k4<;;0z;@Uxz7=)>_5`mnqZRNFP!D}wb~*mF?W1Gam`wODI?7_QHW z>vfoavhG)0gS*7|`r&!#^M${C1hm}Pd)Ni$sDALG=g6_^^QwBkRQ>BTGSDw%t6&F+ zQ-`y?4?d=MmtxQM0J<1+y!UXgd`!HzpU#cG zc&`9!5GbfDJiy@4A|$XnGz6Km)S)1ocWT0fsVi@~(2(6}>qI~G;`Hfd{2*)pcmo{# zs*G=Sp`cb97jq^XTe_f`TJ9*&7w#?eDCe4~o>%V- z+L!uHJ3C9l`C(&8_IB?yZK{rgf_Aey5wsfccEK}N1~&jtrv(x$B6asoangdCQTRkJ zgA(BWn}9dfV5+S-C1=;WujzGLkzSYX!{&KLjYm!H4@FKULKjNVqG7Gz1&OVRAk{d1 z3D0~A6(V{Q*OIsE>E*d;#>5#D`?v7#QgvTmqIQZ&iuATW*~ouyp|?lhNfZ9=V^;5& z`IA*_Z^_1ZYslc2)M>irWo3>(;sed@F-BhCWtx6h%~HRcH-~c?zp&dmYg%;^5l7<$t7;)PSBeAM5!`%ziyo>zF>U$XOnRs)ilKO$U-ENaV?g3vx#(-3sZhAQV?e{K8DBhX2n zr0Fl{!hVz{u4%v2x1)(` z!S6!9ZZNxPF+U+Z3kykG| z{{DIYCiV>LPwHUo8Il924>zH|COn|fFjOSKhJ|Y?zG?L-x2@=6{xIulbZNf41AX#f$Z%Dc%`jDG5UMUi9^8xhY$!uYlHg@>aoc^#eJC8mF1$27kGZ`i~(qd z=ufeFhHSRrKP60G0D-_!Tm{RaI`<`*EpGyr3F;ZvQM4m$Bx2p7@jiFiqyf_a=#oOD z5>NLM{~}i6>F4L^#uX_*mtsmbN}>KqfdXOgT`&j0g*5Rhp)7Psu2c)4d^Sa65u3uT zgU$Hm$o4%4;Ii1|N49WG>Z(=hztk*wHGj+T*}@G^6!Woad!MtTpQ#!*9)ricpU3=a zZR41i*kkxeCk2-CWF?ff)T4ix$4DzOIJ<>-0bxk=Fqe22u|{qsvO$-4HRWCk%%4dy!eN@QDa99v z8essNDRVF;wg@GCL0R>iWw}Xlp>jc$+A$>9BavM%Q~g*+!1f;aD+x&w-YZi-yp7#> zC&Ud570pY~IstFk+%Yd7%(D{X^Ofe?J={p3cW0qU-fFs)QJry)Kx_Bx=%(YcS(Z-t z81;!6P#~oQv`)(IQ)qX0i*a|;8DO9_=zcP}{WO5teZ3?%#6$Qe^6=UC>bG9<~UiTMc^KXDalO$1x}kviBzQLG@c|^>};`ow#xBgmGD78c?}m{)!O*c zhx6>g7{Jru8Ygj`{T+P@`hm6alQQjI9o{k1-`Ad`ekHvVZM1}Z65 z3kxKhI2pxZ`4pnx0I!i8Pzhi28#QG#vMD1IGY$a#6HG{cN*QgeCbvrg8iem z|2)v7CoxwK;Gjj%i;QkciHAq1n-Z#*LnSz4IEfN`Fs?#X?4sjDjPi(%uZ9PYAmcZQ z+z|XU9O{fVDc0BoR{>@$^73{M^+1D3en6!g_u$`w2H|$-i~S^Q9O?MOna8=fYU-3Z zj}5A-n!A0;D=*78;Ika`Y+mCoeEx$3{zRLA3)IIZbSLMVJgjM_8#OP<|S`_=081a{4yDTw|x*!laB^`kZL@!hZA!bvK0S&@473HCrvH zvr+HPi#*V>H=Q)(0FfcUQrkM_ks(^IgAEm)alwa^R7XBAIM=LFJa$=%#ajw>_wc8! zpOQ#>-_yIq?Wn)8+^a|`ad-LP#MI*|U``N)x|JyQ%i0aQcCTN1MSaNLS^JRKmIu#o zUA1bPqp2>T3>?d6pMC|L?tnh0qE8u`xIn2H{G~!A_Y|vH3H1)b?9i?2=Ar!iRFt=qmWV}2ucEPf~d>NQ7XRTaoU z2F|J{A^&(lM{2i62L||fD<*%r#Izm!PH9LZj54$+L<;o{(S-(iHS!D%38N*uk#Y~e zu#@gq|7^PZ^PdPW#97Sh^obT`YXmM=lcu-~_7M4C-WfJ&(lGjVw3=po^~#lt7q3*E zHcqRm;@>~w*0!H@ViSZ)@i92cPGq@`u|ObKOD$+#vMEM-shkT^Bg$2 zK;J|yUetNilNB6eT@2WEL(HZd{9MxPUXf9f#Ty1mcfDWx1ej%U*54phFd5dHBg>;g z%bW1^9%sy@34{Z55Svhw!UTm2h8WHu!8w8Hn}(zs|d^_{+*I`!MWbNaO9-a$oL-Z3097~F3dmrnAx8>Mo&k|~m& z>rJ=r0kkM-1Wp|5X=SG>_^NI8ecCj`S)GtM@KW|VZ;)nIzNAGRcd+PLVM3V^o z8c{NpdsQ+YxAOnO4_jcXB}vQA;LZGO@-GXvJDP9rlpfCSol+n7bMubeuI8{%L^_;c z7e}+b)oF4|_4m<#Z;oh$VE|`DePw|&-Ef0RZ2{*J%%=e#tpCq^aOJ=A!2!ev2mD{) zgJBbO@xchaVBC5@s=4$FlaHSre_;IC<4peLl2ii)P9896vZEzpjSzY}?5N{cewA%g zHJPo>2MDW#xt+({8ewkkQaig5J}7QXr{`J3^&(Rpxm~(-lynBU(j8o$i~Yr-Vmf+V z0OSaRWcuD<`hEa-bQ}v{*Q4Z-YEVT5`?jJ&Zd&~zj@A$5rVsZLTt#1qE03kPa>#{K zF#@`O4`ZnBuL8@E7?W9ww7V&Y#L=5QV4$b_W*7TKz>PhHU9*<<@_~3WcUPr z3$0wc3O0|;L%D^o=|6mRa{2Lxd->OD7`x*jBTOy)1;540_3lcg5fvgq`rzl5eJ#{V}lf8_h#ivB^cdNt%XO6~HVKK5xtVTNiwLj8 z>go(_=R*g^->p#Jl4Ge0`O0?M{^�q7{BdgK63PIAa*#OS!G$&pKDfCV-R zbPvseM|!W?=1f|18qbaSh~9h{vD|P*ZqPX35~V~|w-6m{rbNC1Dg+rd2Rs1L7xLF2 ze!D67Z43BqeFJ{m!>!z#*zHQGTw}Kza-QV916L^uLuGIOvuJhkf`2OhVMmyB{ip9f z*i|@i;6R58v{u``aNxjxnwKnO+6m}W2E_@G62NckC3lO}r0BgUTZW6@HhPwu07UOf zFOA(szfN|$KDRA;mXB6cpX@`O_bD$QL_HIw+c{v+ph1pmPy<)zT+oIKFjU$)k{xFYrt~HX)O1(={Y$wCid++#?gAC z`Muq{zxZZn>HDUQC?lD9@#8<=c;g55fS4$VPq)tyqSnU9#e?S9PyDhk}NO(z$=rO@+M=`c_X8PT) zTFv~CnNrJcZD$)Q-cVK9cSK({rC;@W_J#k77Y^)vxEBmyYtU`MFX^G*k|)u*E_M3S zAn3WcuRB|Ne`3_jfHf02Nee*N5gX;K2n*e)2$qLN3x;G%T~U^(GZpNdYEM3}=t%j4 zpB5aNxNz;d3gpCNC)Aux>a5|TzWG8up>AyPTo4On{yR3j@{;;cz7BsVa5svF7}EqX zrn$W_rUtl~V-NRQ=Y7sBiQ;s!e|eyJz444(8tyMy11(;XAqxQni04S5xZj4z>2L0S zG$c^iJpwi4jDf!w43VO6v%glN66}AB(@>d~uEb~slDF3Lpd8Z0!h;-Ny7v+Fkz1oI zGP%IJic(JRQ_MCW8BG1@0S{L~Ac6dF8SAH)1QQ@$&bzG|=G=Oz6CI|wp31WJsHC-^9*z6>D{bi$t6@wcX}<3SSp@sefp>GN+AuFlxnQivI&B>VjDqr)FXoCaiL=%Us^i9(MM`a&B}rn z(HqHh;tZ3G)H>SR|GK*EzyUV-KidK7Qan6~NgM=j34 zKV0(_ua7Wy?vj0hJjMxA1ndO=DR5=FhAT-L{%ZUx;Wao_!fU&BU+^jQ_}B%2sK70p zUBpX!G_-G=CuUgP3kibGA%qNk$pCY#K{)0^IuHX@TqeZ^*`dr)1! zp9=P(+Fv`h)NU2pK_*|@N}Fq|`ZmEI$r#@$JTVZ%1r9lN!xlXoA+DW#Ce(x^I63Vg z2FmyaK2z4g_JNch$$HpBgu?hLIDtR!T_szHNW1(Y|6P88>>(^gjTR;mkUZ>L`FGt; zf{EQzrwNY+NRMD6@7S;RV(E0*iU8Z>t#aC3)?vQC7BiP;8EDO=@t5BY{d%xtK%};3xoKd zWvsG7y&P`rRn#v_KRsjG__23$+OKYvzG#tV z*(+1C=FR*WPELO=daNuvyOKpdy$8*K_V-irF&@NbxZ1W+c6st8s%sm%CLu*TEo@@n?28U(j=^_{N0zgB-2iAB@5GPknurdTShl@D~AWZQus5$VJk z_9A)NlG4>BWcoPmDw?(Bew(sjVQ$e(DloJNV~Zn^^q6%97izmL_Q7F{o!TZrRkSTP zXuGW@tO^14TJH9iLW0%AR8oTo0rm<>>2*S^hJ(fG9AU?a8Dh_fVHmav#bp&+&Vd(#O{r>9_ zzRz#oBvT2g&9%;JZN1vqN22dV_4}^(?y2+VD_n9mb1SkM5(7M8IPo#swOwtp`y#YXpA>uuv0} zS!#0u3aF~dj?N?~!h~G;==1N={2@WAZwa`|hmYYzM89=5WB3E${lVBrvoR+(q6N-q zuEFP_+3b#}mUAG<+vLd)k2zCp;Cbi!lowKa9`u)J2hrk~57}fk>0>p58P)q$>OTy& zKF1Wkwfe2RGIcQ9Uj`LR{XXm3KrR%`Z6>w0@5`6ZUB2wb(2-7)2^brOx!!_Gyz8ThMLK{@j!JFd(!b8wX+^L(G|W1P8wI=mj%g% zGa3Ga`x{MmlcfElYQdyDHx^u(9t(8xRKLQMc@hANBvEluGwP! z-okZ#{|;e;uIEbtZbv*PbaM61;K_6!<1Ge?VgnOb16B9G6XS&1{m*9wzB0QWJuaCi z2!TA~-{|pD7fC?-_kd3nBM9CVzDWOpAlK_)Vw*>Z@@H{^R`7ZMMwDY+RKqm~*kmcb zDyIHXLU<@xCZ*f>abJmJ#7REJtG_=cjt@S}Zl2D060lF5RUPfNwe)km3$D!g3*w%j+EY_%p1lhFN(4yYOC*AprM2{tE%c| z8IP`8_`9Hv-JM9m9(&M~yb{ECzf?$PLEI2LO4Eebtg90$vxoN4!>Hg4Ik}*gxvKzw zwZs;UJY;w7G7t4HV(s33xCdO;2RKJBfzeuunsPD#i40RYV zDDZ@@n-pkBuzL-2%aeM!*`-9ca7jOecxYiusE2c73FT_rA)kA+Q0s#fazbZD;>iTN zdAj#fbCP$aIovzZEP4Bw-H?TV-qYG6o_!+mm$Iupw5se9egQ?|xu)R#j|ko$(jVRv zej3`iE%Y9Cj<~PMVM4#^P4_1`@7M8dy~T6RTI}HCRB|g!`>A4 zwLMucrdh_W#JIFQS@*oylekZOV!GCT%`d`#2&XpgYcb8@`QK=~;>^bVMm2YpS7`nW zoHeeUwT2LNk}j^-0X|uVB=}Qw7jWz89GBqNk-IgP7mNEY{j&Ca{qf=rw5##=b>nqC z?}A6HT+m=WJwt;nVm*VGh9(7PhK2_xhDyOcp|155{IH0%L0lurU>KL*37^nlE8cQn z8ah3=SExN$5xC@B6U;hZjK#@IV~)UnjLkKM+PHD~qq^tnt;xsExeME-6UJW%7?0BC z2-wGH&)*{$uXH{?9xz;94~7F=_dzq3*MlKeK(wPhUmu2e1LM?Wp*k2ge0~zv2zvtk zHfW#XR`_Od-}O9JOzGSJ2Zw0m$Nk`X^97HBe~>jmlZeN62d&WP0?ui+4_pMX+8PgW zvrIe-UiwSH+c$icI4EN5#lZ(w8P8%q9njy@2IJ6V9h(1ydgEA5P2+ii+vK0i^2N2& zz5uu_;g>HBtKH^d`;!(F7A`!Eh zh-u@Xr7Bm5wZ&h8?Ak=ULt3g$#2CcE=*ZwEMJeZ)ua1}a7_Bn{!$vF&4e|_ap_6C2 zdo_-=%m`{WvX3=9qA@$W=l)VvpSX>^|0#>o`zNPNtoeE2zH9a_QHmitWXK|KD`QDB zUW&+w3^C}c-%72%r0=})K?nZn$hxsLg(a0(7gtzdfYlj>Ar1z*OCeVxrv=Uoio2;d zLU~b6hkk8Rl3Vrd8XB9}u2rwJ<~{A1!?H3vH%V_E63N)cu53pAK^mG4H8zfk_6rZ@ zgX5#^Eh6H*EP+$~OkP=;gR{HEds~9TqYAo3Jv`rFtcnC^D)V$y!-w*m2x-8XqfX?i zgJtdfi4*D$e0!ZZ!ME*o4Bh(x|8#!%agQ<-igl`c-AlBBkI&5NU{BMH^op>CnG}D&7ss$o>e=p1 z0viS84@v={;acB1Gy2AE0GjyPJVYK)F@pEse_xIf!*Ddm(Lihb3FP9x;fo-Ps9`X% zsOuSvjKOtDZZ&NeMd?z?sm4r}tMq!kTU=t{z;0hujC*6~h~vE`ue7xuIIxwfs#_Pf z%&-QfCid%Bobz;LtJbe|%9=VLd1&f@ek;c8#Cd&8>Z>%DKPTVT7;?Wy2@nl;$XnVP z3#FQ#%HiPy!Yp`2IDsdlTl<2zpYe%od5%}cDy~y>sp09- z@+xC$MT%Qf^&|r7t?ad1Qq9gb-If&1eLTOtdh*aF_ljjtAYYegLoTPb<-S-0J@Q;r z+tI3@vIDudGSM~=RU?9co{a)hojh|~%S2|=!qu?F=@VNDCCI^4wddo+n{2&%tgGk zlyP9_g51HQXWjg6#hv1V32nQjJT~RIp@VhRy)khNt?*y3H-Vi(LgJumHMom2Z+B- zU=jd8fX4X+wBp^CZRkF+NwmG|xSR{w$s2bb99USfbm=EZB9hd?HY#_;phcq(j?YMG z*DQh zlz7Uvqw|l@LMG}?Njfc&s8-v4+Bu2}bO<~voX7fz-8Sg?k^N`n+7b(|E~-91dq`6A z7EPM&QPp4WT|c^KZpEnAroDA^%*r4owAG4tm*&3Mq2>7Opg>EP#ubg8TzP5^#wGgK zWeJ!p#yaa2Xe)rXpg_vkQU%c^idFGb{)H%7z_7e#KWwH~#XPE&G|(7GD`+Q7U98O3 z(fsmwA7u&d4->F;t9eU#8nBHZJgMUi#Ifbv#ZFWZfw-(TSCl?VFW>-#ac&g8ut#j3 zw`b?Eh50=@w(8tGqjg5l9+q&%v-`4_T2}O1(dns*L(hI}s_^DJ7W7}*ex8z(uXu+> zgjh^QpTeo}aUO-nMvX#YoC!&6(K|Mw`g$v7k&jmQQg;q63QFg#b1Je^+cX=}JSrGG z8rG&0=x;X04vHO9Z(QJF5TvXjGOdX`C$u7E@|f-WM$P-3F?&Ua=bLn&P%x@{Yt}@W z_;9=WSl3<2-QxQ(dF|j?vzBx;MK%S_t-$^%;D3PTv_Mya5Qq&Swh*>XES4E^Dy_db z_Xz#8!#+yS3m?mAW=+*w+cs&@Hn{WDlkSdZ`~%) zuh8rn+_`g;H$r+g>IDt$y+dQu+%A?ty6x-i4S|Eu#t zm4x&#KF~ER_~R_xp1ZHb@l$LtjoI>`<+v6L!iv9)iOWr$;c8E3W4wH$nm19(S~tK^ zqPzQpGP24#4O}1_U7Hup`>Ka)Sl;6P7-!*|$&YecTWED?xYZJ^^U#}f zW;tZ6OqluL{hn{8vajRI5=q+Lv3tqTA#Gc`dCx3D_5IF;OQJ&U%N*STOs+mt@}e3O z)jJd7-*6!5$BvrOXGIH>k58BO-a*a6S_RHn9UIyqab9c#Z$&bB#54``9MGzuGsdU^ z?8G&>5uaZ)nxVcbk0TJrB`L?{g@$z^p4Cx=pOg4Wl2XlOQmTIM@ae1#YKUNYJ|Aa`78+P7Xso2-q%VlVidwhq0==zQ}j*da5@P?f- z3dTg)^{D3?61_>0>Uf)6>o^3O^nHDs8SBRsWQRKiM81L1q~Vf2woBH!rlWc{?D))R zbaM4>RJ(p7KL_qAd0&{bys+ZWs=oN~{%Cz+&gjN)wJV4ZMZfiGZFdbzIWE5CGWh^9 zF+*$lT1g8WtMw9|hj%kVq^wl?Q`y7iwH>wo+1fieI(mCHc59w|Va3`7&ROW2gPqp7 z<5HdIUTW7oTkx()a%{6n!-qMH6dkj%vGfeQvM1=*9TDScys{^PSFEZ~>vgl?1+Q+Y z9#YVZ9-nH$OY&h59EPD_1pgoI$u6<=ib;N>skdG4dW1kKG**!cWt)!e>kqJ%Wmo?m z?Hjx4XLb%qBB^cYh+#!jqBFc3xis9}E!Q{lQ;FUk6Vsu1R%A}y+Fpq8Aa`DueO z)t~0)2q?-D*{JrxKfp-3%>&vsi)__wNOq4NiILuGl6LANCv|tKZ`ZWblmvHY@03y= zJ1ZX{cE*}miP9~y#L^XK5iKL%^Ixn$&`v&T^N%xx<6Sb&e&g~BESfw%nLmB{!n3&S zC*{l;cAV=HY5~(H(kIfc*K z$=wc5jP$H^xK^{G7bE1}gGaB&byX_O_4+l^s?78W!`R=TI~#O6fi7QbRHIut@M7r0 zUC5Ha0ego1|=*=@k|pBu8ZDp2Ge=wYAZc<7(AQ z2;KRw27Zzh*z6*^(t2oISUrRy$X{1Hl^^LnMU_83Ov02|A`R3CSJzc&w%UqaE}Sr6 zZhn_8xpPK_v`H(JV@44GPyj_A%Oo+0*Q^M$OZPLia ztNB^KMlMrE?wDQL$<;HYRs8DGc-Z}mSeMk&`{F$l-YV!|VYr78g<}Gs)y_`nH{VMU z9_1jtGb`&2S>GN@h9;?s(q-L8b9!VAWU+%XddyJ<-uQU`xiN`}W6tgWn3m$2nV$}^ zOJkQV9ZM01e&VmFEn^r3StG_LJ4XjcA4!%1xLEl*LSEtLUUW9IaU-d4@xfh(cU;$- zu;u1$_7kq0OQMd{Y+0kw!=ZxCRE$|S(1D(Np+-pnR~?tgCe+QY zLL@1q$GWrIOR_xvq*jEYuou~yU3N1bXN2z4Al!bW864lTYe-8 z?%5pn$ST=hMR4loBBUZftOK@%M^bA}l6}f9J|;%3Fqd^(!Cwf@W{D~k-1e!d7H&@P zKS7>DxV2MZQu*hxI}!&-N}s9A*X5Vm)N%05JDcxotm7R$q)V$-61Dc~{Dzb%+cs_6 zZ_?tTsi?0qZr7aED9Ev$Hqh|wp>29cMYfNLY+N4!t*kqb_Uk}CYJNrJMtEMqFASNL zl*5P3ORKUfT22M^?#-LYW21+Q)vO&~Kj429xqH-*;08{sT|2(9WAKR-{itC} z(%&d7>@s5S=AENb4Vde`;P2dE?|k_sWrFTWeJJeFk7C~Q`~znVLgPo7 z)d>^jq^FZz0_|{BYGialY(!XmqP=^8R|(srU+rM>^=r{9Fo?*rua|>o!_IDX-21Ef zZgoAr7G)~_&^0sfe$6^PM{?%tdTqU*4BxNj0dgd}3d3vQ*|fFr;C78; z+M2naG72$GSLvqo5OnapWsRYSd;lM*)JA`?#=scXso16OiFh1qB|jA7!wM3IEkr_* zoOme?T*IU)O=ScpLKgq6cO%1l9gA}a%93o^!1kUi7Z2>Vz0Z}AL)p>zvbLAr$Qj%w zCNpNx#iaHbjo)ZXi?6XyqJrXmwyqzsacq8RPQ;-Yiqqi{{{Po~B z27&Kne1Vlx#Yts_{2k(}NWL4o3Cb&0u6VIffCh19UHoBlkX5lPfi#7$R4PBU6O~H> zy3g*l8;4bmM~fz{+qbZFXc5vmuzsVO18kjJwMFeBCu(mfs%IbG za;lxt%iTAjlrLzS*R`uVD7i~QM)w}I18hEMclg#<;V}bZM-6@CmXI17^GDk_2DS6>YSSf|_fw0D(LcnR@W+}@#pkBtv*t(f86yIG%}?TUbMaa8Z}=Q2 z#_s@ZgSXyK)SVKdKuo5l^7uGG4o=)4SM!9DpOTY5G$SWJDcYlPgW!GoCpq4>hzI0_Cb1*}bG zjF5|g+eT!!P`tnq9*7$t>5~?r-VScrJ@)5ix!L-K1@>sNY;#aVuS0vceprC?R@jE6 z)MHE9kgVHx9z3{tx6Q1yEmyH=ZNrhti zUA8#bNGr1fPPj`pQmw?{NqxHn%`O_ba6)!gaa>4ZRN#Pxg%3x}j?`5g8IkEX?5zWZ z!z9V;a9D8LqRwGWn;!14=Ga3%7Mfpy>_fy@RDEtKK5Kpg-*dkv>*6YYQu<=wE5HA? znJzA&zK;QK=iN*;24{m^b8Nc0eED9R%a_F|M5E4Gaailu+^)@w%l9rP)UMZ{R+EM9 zUZ(O!4uFM4iOHTR(gJ z!pZ64#btq=PSWbKZ|7ydkP_Px#mC8d?T_*^pI^9Wppmt%e$=%qJ5_#8j@i2yV>`6s zKK2?dL{GS`d7DCwyv4{UUsRkkVzObc8yYrZmhnn4;eOnD=nY0^7ZXh{Els+9;={M- zJKSBq<|zBOtp7gkR{Ey-vj@e8T^_=E5*y1Pv+w=3-*7@E0 zFTUA(*|fhtTihyT`bn9hqBHLZc}{>0P6t0mcr|FBSmFBzcsn|C-|J#>a`wZm)=`m2 zuj0@?Dtr3ljFL-al&2A*3gE68?82BSlpCpc3F$x%)3DQ~WhBnL?r#=|UG;UpBd?Fj zrtNuuz1$4j3+V3{Q)5{&xx91vG8-!unjGwj*-=Px7#RM%ne}r$i<8$Os<|=;;z8fH8qjN;?kCDP|K~yq~f(#?E6 zN98nAs?{PxexU&w9m4}m+-_p<>@Z#icf70M z*@of1jXXX5+&r88J$X_Y^*jI7-4~JU?3GUTWgdg2LjIMvho76&YC;M7%8a0;>EdoX zNjmoNKw70&W_!%;*l};%J+$8&+v6@M)6srRjrP%~c<}%Ys;^!#$XEYPCdUvXYB_p& zMufNEm7#IMQ}WjArSAo??Q9yw5q-zL9UT`( zzVZkQo9wCGHHl_TNq}0NxHUC5W@Nu(Nq2r{N04)+lrR7L?a=Hl!}rM4A}Z?ycpg*n zi;}Ob0?*KO66at8{NewcWs?_%3pIIopWd4_M;I_5!ZGz)H2vfP6nIcau@{l>~h_OuBY5}HZUEH z+*Q+IS6&|C=Z#Vo*b}U`57#SB_P#F8FcS9RzEP3*MEw&I66n8(cP}A5P2c}Sj(0z$ zrau9i@RQv5f-Ik5>2BYgKQAplH$jq0E|;GJFRO50_y}bSU}Cvwka!a_;}DWxU`C{U5UQ zvv;pct5K2u0ZJdTJ>^H`kgwSTSfGZ;?ZrVBJO=jB>3m_0xJ7b=M)P(JKK@*>xD~`c zPSp%b{-vet=hD)hze>{GFTEP?qC?A~CM+Psrm`243htH4J4?;?KREMmse@5Eb&#lE z-)+Qx^vNh2CrN z5huNHUcDc+DP#4RyZo%weEsfO|D$Im>BL*?+V0Cl z0n%Y}Ck7V=l9o0QqrSe4%IW#PXyXzEC<9-v5l!GM9QyEw-VM6#!tXw?wwQV=O~>&w ztRmq`usMqlr6Ish9ZS4b;==Tg3ghk|AwCQK$7|l=r?O> zdZ+7m=-2-9%SIRfPFD}Pc~IK;43gJK`I++H9M#*yw-H%p$ICydLt4fg>!hM@K0W8c zMzo$e6J_@3{4% zn03#UqWsKBuku<}e#6p}Ks57@Tq#e?-&vUFyz~PvLzO9-eYKLRBOG9uy+PAPRP;wI zf%F9YxX>ZQ5=Fd0{DcfIqp<_a*n>d>`YmDqS~Fjg9{mjKeoKf{vhoiQ|m`jnl-(aw_RO~a0UwqdD+(wyc%_A@z3H_AU{r=p`bte%AJSeh@Z z?A!lyUnbuz_y0fovc4GqVX#Maby&w(>zUr)%hS=p%M)=Vk10_J3Fc6YK0-AZDT>vG zU&H&Y&J!f6~F%_+av2~7(Il+3}w5%A-ev+Ic@RRlq0kS8e{harA2-3O*%o+ z{7tYrOW8VXf|vvYbFGWXpRXPetAMYOf-k%?vi57FG$50ozl66Euw_V8pvo~87jSXB z6sj=*-iA`(^|@wJEeS^ZN%n%IdjFQBEBu66mnTL2)7fX=1vHe78SLBt*Q>GUhMT;K z*gW$Mj&fh33_5m;P~>di7lqTzVuyQV1UX z{Cxw$UEuqS&S9RgMqZvqN>4~=Q;WT5N++=~*!wxVN8f#=P)dVoIF5gr{oqO&rKR)* z<+9u6GWL~38_0f=GJE?d9g%9)HXPg2 zr-&4GynK(Gy|IUR9XljsJsx^DSm>P}ubgK+Bci~mUe!LH9}`IpG0X->gmb+5H|29> zg7Up!M*552(RXq0Y@&NV$F_~8rrk5yS@tm$ERot!chxfbHoA(^&B$&NyJlYaQliwD zy|;<(v~TKjfP5n>et$vJCyE1K>n?E9XV8Y7Izt0)fG4r}!PwDiS$o!l=ojaW9!EGv7 zOA9Qa1Z(u;3O&B-;kLCKEkx7oMG+9>aA zOZ4RppMGO{EIcp}W!#kdr7zdcmby^W*aq`HTmi`rqorTmk(JLsKht;PSxJ9#BfEn9 zKpy66U!~M802bxi-xu(X1;5Q>Id3oL>l;<9FxEw$q#;xl%j0{%QRSOFQqmn+* z#cA~KacMseo4#r0!9XXLy?jhuoxBNS<0mC2=1>YdeunEzvc8eB5IQM#V~{g^T12Fu zH+Of!;lbMLpp-7AFl8a_o}Wc*M_aF;I!<4GM>MGfx7x;(KWr0E(S|y`mdsBH$|NNz z`#qwsGI|xV{TO&`PLV2}o6ji^E8fSd4Ll>(!$QQ#q{o^Oz2=$;rwSYGVt6kkq`7qA z?!L18vt`ujU;irXxpVeMtV>96P|HC$3^MwoUDS?U{cQAe9Z5FIuhJPq7UsE5?C-NV zeAtl1_?20xS3lp-P{3_L=2MdqQ8ay_EOI4(+$7#9mnJi zZ_~`gbY-11 zunGJ2?A1=LiAni`edAo0_m2xI94JX~;mUb3k;`;~Ke|0NR;h0{aC*M)tRY3wty<&K zm6WAhq+UH}NdHizdB6^JP#(y0jUKSu*tLM0*PQT@h|htvJB#n!S*$PP|K8!LG`tUZ zu6I!$8nGEfnW)nl(*cxdweqLj+Atcjs|N~viGv{$rh``BxO(I2%uX5lQ-=?qC%dIf zfuP$AEeyl+eD=YjiTxc;+$P}aF#axAQNoC|WU=X|GGS8fPqKT`5t@pdoqu8WbYW0Y zpKNxF-nf<4pG;fArh^5H-zLxuH#p;6AoPV-gOVMvR~2@fzq5Bo)e{FVh1(q^oV8&s z;ZkPMwnay#ZlNJ32%8CiC18&`a`8Yq$umko(V#Kif)reFz8Z{Z66xq(t6F-X5o7H9tNsWd|H;<9+yddgD3uq#> zID{KEk4lt6sm)m+-Js9)-S;eB5Y)U|rxCcQ?(6Ltrs3=eyf8b--LcxgD73v!sjKti zc_suN5h$Lo4|NGc;=*3Yj-TZA#-BQ{;%h`<6nu0iEC}v5$zcDYoV;{Xo4wSZ?PPm9 zG=Ec?Fz{jzcBxppv8w&}<7*!VI@E;(&eLa9RK%K_7|J~T*prBtAM1M^#SVk!BOf%(V17mael8*vZZcv`+> z@R(Wb<*(9qs{gMM{ix$C8cnP(bYl}}qjDX8E1>5BYev<;U( z#O-XagtBnfN|FYBJQ5{TO+R<&@GU)L<GfpHe=+d+I;nd^|rtwVRF~K)S3J0<8{drdB^tS9WrJrl|!^C5}W! zaw%J*c-@e0-Q^=J@mns%_%;+f5b(O)C(=Fw6#)1cqIL9E9c&aA_A&ZnoN*$3-7i~j z%=GHcF0nZ@WqEs>v|?&&-YcbKAKtM~N^Qrs?%Gd@W2wQ>dkiH6Jm_(sKIREDXc@w) zUrw@z=(9Q(xxDT9tijF5GH=b!(Z}BromN7hFTX&jRr&a{mCq21U#ByY58H7b1w0y4 zAGR5<(qCMm9@sW7Xl-J-O1L8NRYx_wh$VCcNhHMh5uWzWxGl_42`AQ$H5vJC5q76b z&)T+q#Ck|Q2(oL4Yl6qqt_A%^m9od>p=7t_v&ZXL>D88|mWyklSq5>c4RwGdoHAKmdyO<(%B>v zd-UW(+D4a7n7<|LyC-h2r210rDJ1<&YmjI5XS2;2^cI`PrlSpP)=@(BFClv#H;5G) z{EZV{o!Mhv!;bKwfE|IFg|b$-PmR7{9*cYu%INbC_?=>8kLwkE&G+a>=_utbd5_&K zB^>P>z-B?;h25Y^z4Ac|CMXpaeMYzzoCz|XXwtwA_9=x_N}oNw`|%ZOaGS2MpUCOTBUXOvnZGtJ=uf!87B)&q z%u(zx7M*}=gSW<=aoim9TN|7Zx3VM_K>ZHnL6>ywX?(Za#C~A+_WeTH$DiOD41YR! ztjE+9>>C^mPMdRnl~?3@?NK@Y<)v8DAho@>p>JV$XXc{nn;d4~i(I`EcB^2!cmN!L zA2&iF2rNG&=xhM%eBb;la-D>0!d5!qK<$WsQ(bv?c$-|D_NQG7N$xoPO_jEokGP+Y zzX?H{<%6S+d^SRGj*<9n4?E}MZyyn^^K((;uqbtMD(kL(dS_-%+s#C2lLtJ$ejRgT zR|B^Cu4~qgRND@lsg;zm_{H_IuTN96T`0L8yNi9jqrB`oxejJv6R)Ses4*l1-`e zc;lEzu|-DKr%24 z@e}tO0Z={+pXLw|22>hTp@>f68(~rHm5nSsnsqz&S1>upq^C#r?cN%`dNGZk-_E{p z0r_m&V%|~EdFy){W7$fY^`C$B+bO+8E012Dbdh-ytu3W>efqFrFEdPei=}sVvA;{$ zZPJVJIaubuh!+B2J%5gA%dS$d8EJMYtEkhSg(b85w%Xjb(_7N&7GD_-KiydD9pFN=!`+Et{2jJdF)d!S zadYPSd&lEVt@hy!S{XMy|ADZhpJ0QB4=i>qqBqIw=5;ThtKZVl)2ES!2&P%wu2#jG zCalTb(N$+hN$=x}DdmgBGoMcCdu49J^^tOCq$$`B2cfd;Z+8EnL?daM2W|KG>WoJ` z`9;fj2cmjF*@<)17S&rF*{9|s$|=fX=L$Q2bc;PI^_UG=W)YvX_Vp(71)6?$ZrS+Ypm(PPVG3FL$!!qNJ_!HB*Da89nCh9}`obg@ zj8XgScBtv#ak!*E@jlr_(wkqBS!ysw>Qe5E3$Mnpl`6e0@DCd-;3WPWBglVt0UXbYj`EO}`BxrQ=ziEqrXQBBTe*n_vNg21UqANr z#(r8oam<>TnVw!(OByyjwJ_KeId5t!Q!n2BIP^6P`h!T&E7tL!%SMXxSN;v!PLl>Yj${> zn!Np?hspog@(@!iRS$p17&)tPANKe9VjT(H(_>qJZ-BuFj{wd0^1QGro&6@$r*xTp zpTC6tclGIiEya2mHVo$K&o;SxDM7L!^RMjVy#@Mf$)B7~kxlGuW+t+?(==VkMmtX2 zO6kRvaxsD|EQcP#@N^77QVQkyafdh8u@Kg#@nI*TIs}hDdNfS3#5~`XhvJ>92|6v& zsu89<_7@pF(d*6BFU{jJ^>k+;ABBhRW$xo)fn8%C% zyuO?LmyI1{iu;qV+3?~@nT&Q_G;hEi3p@-;!yp@uKSeGh%*l_xU4Y9W6B0V%m{oPK zHjSpUWRJyv8>|ctjUGLkJ;H~-F~Mt_e;@it!$T`OqJHVD5WiBEl;oT0}m{#TdXvffoQG;uBfp{$&1x zyTkUBwB`uuchsRm$|QCG1AuIQ2TE91#BymDjTt>)+KIQLo!X+5*X|oLI`fDqHG}0uGuY3iz#HOyH>3c)4g)LpTd>IhWuDkyxDlRMob*AaNg{tT zen_k}3zM1o@<$Y6en0+ORA`N&+<&8*8eV>kq=kIG@VrYO#TOZBL{IP=T$vPDFkXH{ z_`-0pwagcxj^}W^o})k6YIb+inS+G)LVJHfq!#q@Pfn*5B3RUC8nXMVs}pQhr_b^|p&e%~n8f z$wwC|@0b4#4d!Rxb$nm8Ui%@Rk3Xhs$B(n%lPBeWzjt!~ll@%Qn1RwC$g`QSD-bIl z3YG1Q-VG?cH97eq?s4HG4V99HUZtDYKKO~Tl%FS$q_HJ>UugBe`Fga|k#17gO`jY- zeu2}IbxrZ^7&T0=CUDRtf})eUGY8x9_$3#i5U-z?D6tEOxaSLZD5@nPO?U+c6yQfW z@z7qqTi4%SI^J?mNpAQ2H0IcOei+xd^i_9=*- z8P|Dco4m<>UNdv|FO#;X_867hdlnlN{?@Fy8=Eh&_3_@aG%Rdi)8^f}q^IxO{?4JC zlG5e@yM4Uk6Jis8CUyV6R@Xu7Qh=}KrC+hhg74_%obhvF!uX57cv=-@EX8X(jw#!X zZ=3MqTGzb%K?Ae1I?Z31nmT9a+pBl?$a}X>US8+kJ@T^Hg83^YLxZ*n1+zERtLM7Q zt$w|%wAki>ONVzYiU@bG_kOpLjZI$u&S5K|qX${KlBD#-p7#3iyrNDZFIGpefAXKK zDO-VisaH^A_OPr>LFvOK<)_Rif4~^nU<{6nF>vB<%^dkYAI^O&@fT=z{7*Z7@)BxT zZ4eynuz$)T_xGjrtnALzqkp&bfdkUh%QNVwJ|oj-1h<}&R0BP0c0e-M_H=`*%qVp}!g1mPUl_Yu>b7Vp3c7)V!2EjcXg%)*|b9 zQn0wEv>tf0bHJ6PK5A{pdHg2QGfNjOT#91(9_r1bx9;A>dk50ZMc>*>!6GXxZXXO2 zU5ilK|H*8*#A-!3Tdh`FKF%4AMh$nsk(x6Ee?H z3U>GI`%o$yI&%8_va-5@yc9jOH$=BF7=JC>- zKaZL8oq3w{=JS#Kw^CTxCO(BOdk;#RGh%l{N_y+vF=-uQcJ1=&6W^&H^r>9hAm7qI zz+ZLHlI(?&eLewRMjvV5Y^ryC9eK`7Vn>r^>L;^I$+rB&-Mhg21JB&UGqxgLM-Cqb z#U5|SB7BTK-Hx_*616rRMGW5#rhE78-(~OcuqT%>ArrJgUaj#i>W3jChZ0+qUl=ySs4DSP;#kz2zsQf3x=Vff>;& zo@;~WR^d4$0MyEu{DMttvxQ;x@>$Xym3%WydyA z=H1)3=;-a+(CK*axg31ff={iQIefx!p9z*vt<33Dl*_kYZQQnX)5>Z38SJy}X&t-u zoQASLd;&^j4;ozdjzaT1kRSCybr=4$R^hyIMoOz&CWn{K8`-jR+{98ctl!a(y}ckm zw^yDLP&dBkqc3}ev$y4>$>X{Y#Io*ohmNT@^n{!e=wAVSBR*h+I9b3xNBWq3#ns47 z`cBBOEo8D3co+e+h_Z4n9;kd18HJdDe>7m5Ja<7jR@HV|tvaSokx?C;>KIFX1Dg$L zmpG(Zps#!%ImrvL;Wl3Q&nCQ$6m2$_4)yi&^z`yU<`86ckHE{%XoLF|t`GRX>{FL~ z9!>5sWY(}AlNXhgPMd(y%B9l?8+T(q{K{-0qh#>55NGSuz3P_HLYNi>H5YtEgh#ff zh#;_7={K>adB?wh|ISIhhEs8||H!UGOE<0EKp8z-PiWP4TvX0ve^--yJ3c--e%wHp z=4@Th=!l_t1BcmlO!9Ca;N%<>)TkRDpXzOE#u2SJ8DVX$0wh&hT7VQplK=m)?Jq5D zQ-9uek3p}r-5&j(kAB;U_ncVFSM?UQNf8c~duG|WxY)fgzI4Tk()ix&TvkT+oSg0% z%12$yOWp_$d2jvN{UKYPPn`6O?~Hy4nzumn)i_XJ83%?VisF;v|5qFsA+2pZq+@h= zt6+99WOxX>h$TfrN@!P4pYAP^3rr0%Vv7b$ozNk!wNFMs%kKU$U0h8W(Zli;m!@Iy zp^<41+%wZU<+!HTc698~wUK+Fi)&Ex7J-HNg?(GLOLcWFFgf`6di%}X$Hzj*!@xZ~ zH(dO@G$L2oG6-Bfxet`>vUX=@@2+UnyX~~)kVv6>ak1P}^q=kpwcNjU{d*z7Z^#3< zPFB%WWeipSU&@%0%GcHqvY^`%a^4I%tM8QHuB;fAauGgLYdjVy7ig6_ zS}q9goin>;_UMt7eqr^pkU`;beVg~pYSb%v@`@FclL|bF|3kahaE&X$RP$SB3v4nlb4r+%Qv2q|AzG|SFBggO)MEdY0~(TiP?KLZ`r+j z%Vr^y9MGBoT6|S4WTGCjQngK;N0bxPCwzNZ+4ivBEraq~4;wpfXl$>h$}?Bj{p{j? zmj-ZZQ=d%r@)7h}$u|XWJjMw}=z#KoLax+mJs6pkmz$F(-`u=s&*qYe6H6c~(HB|V zAC5W?o;+X5*L@N4TkF}~SMa%>zN`5F*gPH;RCyh!rmtoM>BQKv+yg9MUYbxy(V5%; zN zw>nd;xl!d>#g>%vdi|DuY7#JZD-B_5XSPNBI)JU^`b`7Oi!A!>19|P&?IkuYj!uELxgjXOwa(VR;qL<#Ezz z?5lcM34=Dt`=v2}Y0v6#wu_}I4kBLwYwRcbBZ5^q9Q)y%wYq=q5?5pO8a(a*DQwQ0 za~3a|J8e$cv+q0Y>|V6F-Kx2PYlfZu@yD}6R|l8PzjFIFZTjji`IM8=$n9uQ;MVtQ zO)1D{pCPsVU-ns6k7c|s+L{IDR8NWV+JM|^gi@&K3=j6Pz|ejWRw@x}2@NkFPD9yJ z8p&271F~EixSd^EvVrPWV@|6+T&#mtb0=&A z=7?t8=|ihHiDI-kN&2aaG^&ORC$iWHKI?>Ty=FZqPk5c7kWRo*P^4-ori?A-mO`Sg zQU|$I-w3fwb5O*Tk5Fx+5nD3@;9}HdmF4CVys>dXh~Q$vY5P$I6;w% z<_{Kf61E3^q@md9VDYq?dkdlfV?a~@O1rqoA}~=S7Q`0P?#W}`Ub^J%w--4%*KrDR zJ>a-%%>49YreV(Ejq-aJWM&ok>1T|;F>>|JovT;kP-BBo*RZI-kzFIA*fV3TaU+J0 zA3r>nuWSFW{QR|yp8K~%jA;`*CVtrH!M*wn%*-pu4jz`+ZcON`wcX_B^}EOR>~Cw= z+tJiIszqGa5btIoHnu%&>gRNfNJX33n7b3vXJPB02kt!k3Ny+L9ilLK;>@^~zyDr* z;>3_q201e*COX}GAMQ7BKyR*FL`AT_BQW>5zYr0)7c4NYX{q#bNZx(1_B^#&xiTht z;N}%EjohUT`E)Mb{6l_S;nI9k>hd^K#2fVycl&};NJM}dZ$$o6z~Lo3?-a2{W^s*R zW7$*+m%koA7NN$(Z8c(zX@@w^dGyZf?K5sP#ti#s`&_<}-Vg>_qIQtmV#rMvyHe0) z+;7f1&QnZbNQB@=3NJ1`LQTK<=CS$X$G`r1#2`-}%^v5!o1Xq|{zcA5Z_pSC*&$1+ z&TO8PFksTlBi|f23Xf7u%vfo|*x{6r&PJxB@Mk*UnYnmI>?~hxV|P?ttLvvHA4l z$9h|YM(OGFr8++Cfj=Mk>iAl-$Ac>;dHxgr)RQMXxRU?Sm`hIwfBYTOyQuTZ`{*E6 z-{_x=z0$al39n_HeE1IM5Pot2+nFMzImN|&KiWH?cyviUuP~?4X(V?}bghd%mj_NB zBaJaH%8vJmSmW;NhTftdnV>z{P)GFL+P!*7Gh(9WuIM}NIMNWyQc`k?N6Jljcxd&E z*jdhFZEGzPrV#=Z&+{OvIL6)0W8i4ek*6iMFVe!Ny5omRtu%U5A)D^7i&goVsimm2 z(p>LhzR&YBe&F#Pd>?|wxxqwQ9UDiiG`r>h5G~GkP7KQO_6ZH^HFj`V!v>b9(Ra`w zr?@6+)Yz)^R(8L;g|UB*AN`=OmN@l)^5d%d{%`$w`63dITpJVgSNI-eXvDe#Bdt0M z7zH(SlUzGzdbzap&1swwo!2v~b?cO_(z24FIgwe?)ZWq2v)^R1Xnbz&ko?Lq15G}w zu?LFp<*pX-a+zW`xw>+Kp_e{z_h{9=Nz?4?#?6{XlGenDi$5Jhg6CWKLvc32#fyH{qUWd=R&~h`d<*JJe#*JM7CzdJlfm2Z!$e zW{6av-`@S@*t;0 z6Fv3QH))a0w$%1&k(1lPOYf19xp_+l{@b!SQ;v=3(sr!wYjNzyC@f4Mw!32k+IztYfIF)3ww*UzSX}?mo9Dkzr_mP8XDiF zOZ?E{K)0YEx6Pp*K|vn+UHSQoY};}k+S<;}&!1I4iF1-vzb6Z}@rxT@66?oW)2;eV zV@t-zH5GHpvNmZ0ew?^pQ`qxWnOe#{gA{Jn@5L*C&b0acFSq(HKgf~!j$&Y6Jnwja}oTvYp}1A$)T2O^Jbm1 z!@_FIMs*;)TgJHC+J?4hhW2ZjGCJghgw(19Rx!RMn2))Tp9vo%nWwbGY8z=uRad3j zM1v;{8xhx18ZbJrabk$HjCxY%etj}qv@)l04OQuM1|1&Xd+|Q=q#uO)iZy`_SVj9D z?rGDbqX$msE3*bOA|fl}ez!(FEfY8>SX%)g=F(l27AhqCB3jYzxKhm~P7`22VXk6f z;Q6?6^LcexF%2jlJGQu4bX3~Jsq{5l8xYW?AgZOjHlG^ey)1t6&4n?I+-6VLOPB|d z{5TP0;wdeV-$y$@6@NdXf&<_;T{+ijfBr2Ob9on~y`R@!YsE6`4XeOv(Ac=t({{uB4A z@T3E({)JsiO+K`!#pwRUE!%qL4bN*8qMQ|UhK|R!wUL?8IO~<$by8y6ZLilEH0xL zo#Au~Fs5U`t1~_be8eD?T8kAF9v(~^`K}%u9dYr>@(*AKs6G2sZ(G1(yJ<$GZUKl% z)LANke%M0K8iAStOV%iy072O8M0}H$le14i2;aetil@t^-tu?Y&Xg|&uujAM=P#k_ z_3IA{L`K5h%gY_)x`F)G`GdPP4kOX8Fxo9|0&Pw?6ggydeO@h_BU+OBwo8v2^wImR zr?iWhnp84%?7-o;TO7^EyF6V=I!~VCWE$qyC?h?sdrxxh#@Blmd-h12-Q>a+VX9H@ z<-s%6x~g1&+)&BP&B;`-ZGEGhm6Mx=eN9?YVCdAXTc-|~x^0`(^WN2KUw?h=D$eBj zu{z2=+yUUPR+ZwmoUh$CO3>e39UpKNUxioUuh;O8*1%t{;j3^9zPJO*I0SXEVs$-m_k?yA z6s)k?zPJmD-}#^$*8{IR)El9Ar7ZMi9{SQv?aLROXPyn?a9&r$LG6oxx7XnFz%wem zfy(ac_<*bUYG11G*K7DkYv8Zf@YTLp@TcJ3Do#H@+Q)v==^O+{oFBkd`um=8s0Du> zbJOS_tU=#R!$-;j{j%VH3j8jD|AYMQ7M|x+`wMuE80&*J9GtmUkR|%wGJA*KgK6r zy+1_gS~CqUat2lRhwxezmE)XhMF*?UO8RbA@QxOIj3@3u;^QpjSBVcezc0!HufzwR zsm2KCAosNS7$H2N@$Y8Lu?xU$EJjKN98Umlf-E?FKF-iV^jO7@0-V$5a3uW!SMlee zUXaSqAq%!jA8?f)6%K3xzku;H2>y=PVc!aHej@St4K=8%rx-@@xd zgU_dcA5`HLegfV_!1+ADy>^vy0Je$`_(4@ZVqAc&;jh>5Rei6*U$5aGt%iRaba1~4 zr!U~b9fF_DfFplW+3p(}eSu$fpNzh(1{e5N@We{|^%{M(-75O)HTo)_RrK97{DU?4 zantbCd1k@Sg4`xllP6Xg;C~q4BUD=?#wA_jN5!wQslc|v$Ne_aLSYRm@gau^R`RdJ z2YiH>$Ex01@E4%n6e~S%snO^2OWbe6>0{Kz(g}Pn0G$*o`jz;AyIIk%!e6i9t8%Nt zU$5b-@G5*a4PTX86~3E>ufi?(>U~6i!D@tp&wzSy+;iI*VexSm1pJEoi;RC`-ps}~ zD}mRI_eUD1_48BobF6VR_YoE2X)@+vn2@iyS6U{3W1& zO_i^(!x1Vz4F-G$zqdz|Z>C0P3FOG{-Ld$QN_@a)Sjo2h;_!TKt(f}cHtezeBt z8Nl6?0`Q~4b2Ru0*k=|0NDX{GFF3vme-&SCw~D?6UxioVV?1Mxe^t&P9y4JEq33uK zW5MrEce9>HdRPJAmeD{fU9x*I11QuvL7( zagSl;cv$f9E#?uQr}3D_lhHD^k%PW~^E;At?LIaF+Ji$ZaCKh)1OB*#SMkGzKh}|N zb^83SaQJCdoUK8>$_{{=s&*@N)(Ri}(&n|0TO~e+TlLq%zXSSv%1V!0YxLolm04Ew z^E9}Muf`b;BF?}Qkb}Ut@DKT0@clq%pA~&XCj!6n-ZafFkHw+er~hOf>y3;i>g zhiZJI!Y%QQnE!@v`8ZZ=)m=vmm~oZ*&=Bnw>r8-JwGfgYYK? zZ`h%~1YJM$M_nVS_O5D;)JIz*sqiGN{{ml=BlOt8pkFWO%mN)BRgO;}M^qA0<)w}j z{9C;wT`9B>^x@qw2P9d24)fB-xE20w7WBLgdH|1x{;KU@T<{#^&s(u-hsSxNpIo+T z=To$=#{at=_`GhS;ZFiwjsJI7kLNM&U5o`{zBd!`AD%$F>Rpdfps(78RE>_Hul3ti z^n06%&*`iE_U8TGuHjz*T#Zvz`2}k5gMh1XstSjG3p!%~=l9uJ{7a|?=kaK&mEY-R zjbCjX-Vt;JzRHh|^RrLGH$cw2w0L(Jjm5osMFQUw@PlgH_7>z!eO|$juXsIvyVu|g zdAl%O8~_+IokKsT;HP zyBa@$@8vbS0k`Hyoj2D0qK)8FwQs^-T;}%QGT+5~vGPa2uEK|X27TS%!gAvYKEH(h zRP|q77g^J<(tiv6l#1__RlF{c^e3lc7_ZT<2|w@;@R|PrU-l1hSOdXlP5R5N;l^u~ z{2E=i%F_(a(chZz11j7+zXtxy@>LxF75Fk0&WttiXO%w? z_>gL~c9*MgaVN8z;HSKre)7ATt>G5=)P!5)Qxk5H4~KhL(YMH_CfuT*f{qwRl^=_K z)`V;NS;6C+R6+l~CQn2PkY`Q!0keRc;X$k6&n!nq2=c56U#7v~t*YVADxWOyxxQJq zyIh4c_yOd7xPGeq%r+-+{8!*BR5(QM^qI@k8a}gpzmR85_%anP z^w}EUTA!`qnm#j7Qw)NCm7m$_JbDGbLWQe&0?xmzSj+zvxJCYI99V^Kk$+9NMgMEU zE&5**Zm|y+;AiuNJipWAd6&zlVrmVzMV|9(z$@)T4YAev2)Oij( z)xKEpH2VTP*WUf#YDmz*EPa2J(;C|p!%uoFl4mTi* z6!fd$SFPb}NG1NYe}G@NhF3JS;B(60|4WsAg`o!gh6X>);eyYb)#xm#gx|7;SH)HO ze*lf;_Ei7qAK=37zXt#DEBM^62dJ3n!S|K)tHWUdE$s^ae|UwCn}7?u zW@)#g6Z$3M8~snfuav(P{HZnE9AAn5^FP4(e6FNp-e$qqG0Hz^AaY1|LCR)BlQom2h8cxOsjh-0vUY{?>4Iv=U$FzX5R~=bvq@ z0dJzg|Kf1LXVYqQ_E*B2S;OHM`MNh1_HhA+OMhDAz~NQzC#v9}vx?h4Lvw*&&0Z-J zEcU&I9RohM@7DH8w9D7wXc6O5Vrf^<2i!2c8a||jd9CHkKnJTwF^(!c1bMU$0$+ny z%;EULKd9@>ZQ44sfd)57uw$5S!cK|20>`V=d-_HBM0$vMD>4BU6)5sz{Q|^YpL|`*Tsu})t_M%eK#I}?`f=emk%1E@C?RId`^)M8W)IMHD9Bn z&y-=A^FpS<;Gu>M61gJo<7&V~-+q4$oXb@B#7dc}wv5YkiZwo41X*+ubksHOHf^ns zIU?W&3AP)$mWR)&0#98lZPV6Dupk0%kYLNvk9in7^<6i|tCXeg59JfF778$o=lKHk zd>hZz2$=*ZpNMr2|1MfQwZE^B6`naL^mx2@g3D?hWC#gi9ag2U@alq2B!^q+s|D^N z)=76D6XE|2TdeVocQ7`$#PjGg=yKVqc$z+H>nV(x2A`lluY>o+`lU)Av5FBgP~lbj zsKMDs9AC%~5H11pZjN8kScBtWn0UTQRtH{@m1Cu>4pgXCrKYS7Sj$RV6I9BIM=YWZ z5vx?msyZApvBd0}tW-KeR#?4aoYi-)e67Jpvnp3s6Ao^w+T*g-)&iPrHM)?k2Diwz z=3M_#qf>LPYjB~T>Rbmz$To?$%V)f>0R{=tftI@&D`IH)VBl$MGjh?V$jf-Yb%WLC zp=+a|Yw>^|7yU*ogwHO@GwDx^p@Bzpkb~-@xGjw0a;WaR_&Xyt_Nxx(I>2K;YkaXb z;qtNJ@XC3s(&zJbmo+}yDb|48rhW%F*QF(*e@8U9K|+*-{_jNp=LntSKD`PLmQTP9 z5@ICuBaQn8{bA7Kc$M>(zQ*0T$3=f(zp$6j+U7;@jpn%jnVvsiL`z`w4jkCn7dU|=9@3ro1%mk+FijOO25G}qIUX0 zJc@#oNB`+*`m_Agb$uxKiu$xQ&)9S8=p#o+mx|VYs*#7H@IA9%qF+q(tFF#30k5#O z)s~Oc6MZwf8*107XLsW=*wi}N=4oh%+D(-3LTBX-yt61md~U6!%U3KNS811Pv;z_x zYs=dVx+C>!*U>uQZUphCTn2VGzThGh)P*4Y#J{qRi-Se*HY{ALq5*C8P%am8!OdQW z1!>48q5l6Rc};3pG}%?>U6Y=dkRe@x45f2L>&{kV=?m!i){53jFz%kMs|!dl)lx3i zk#utn7wgI0^whO>H&iFLyV2$;dWpV1dVxP7OHrZ%yZrh2GQ0P2(e(27QQTs<{wB*` z`*NGob1k0_7P^kQHVKU#43~6vwJzDzsi)|qi}mK3Y<1o2>!SgEx4K5zgeE|^oc|-5 zIU5SdvrxNdp&_UWBpMP&m7MuF1<3 zFZ9jfSnaEFJwq1n4)4m1M`=?BPNBVp6JNqV0e)k>q`8VZ< zxR*h~2YY^OU@N^TJ!f;_nsw>0S<|Q`{^GT$d=l(yDY~t743grmujO7FGX*V`b4_Wf z3+5dQ4RPehZ?vEE@^U$>yqxtfFQ=C5isc8i@E_j$uK`_KoUaIgPm0IRz2XELT-DPU z?ZwtV@7VZ!%QBLV_?>UQteqqNO7M>|p6}2=MkSVTYNBgo*D5__Vt9H&opk4kO1hnQ zdeB6>M(GJng3mrZ`{JqHvp=8lAA5%whZy{0AH!LE7Wypo&u0wZgsR|}5XS&=!HJ8i zL*rHwbNmPRKjEkPDW-t()LzL+MSa>O_nNSyq-5u=@e{Up>Ybe28<5@;c1|eSxwB-# zPPtz1j<$Q3*}Hx3 z-t9StAhmm!l|1X>{8a;862>iGH&Caux9UqIuiGWg{^Jf47w82J@SqMX)Wh;yRTGrS z5*zX@zx|`EgrNV2zb)OG(0e}b=W;HGms{tbPp(tDcAb=deUt0f62BKL=-V%)PVHKC zlf`eq`t+OE?~PW`-MU4$dV@;3wrZ7*zq-;y%U{X_t=k{X7h*8Gs#2P;qkBCYn|j^5 z*Q;N@UUx334E|R}Mm?MQ^)q%(vPjV)EA2Pt%RZ%0_Ju8wq3@1i_`Lrjd!Q83ScbJ2 z{G&6zKaRCYfZ@7sweaBAD-fXwpIwR@wbIq^C=lNPhat*=FGU<#gErsH@0-Q`b(zzy zM)#&h_vR~f{S7>S5@5I~s2dG8Id#zOp<5&eD?ZrE-Y}t_q?GIS;p%bSIK2@QJrtU4 z_u^?x2szazCyJ1Rap`yq)?D%Vh`nGhKBBGN1dZ*WF~LGZFLN4t8i$$9ZJ&jPpn!uT z+vz524k}+NKCGY{EBFW{IqRu1!0JSixeRm)L;eb$SfOxy#qGrld}pVBjuS*~{9Q1v zjDap$6<0GFY;itT)ZCKoqqHME(!NuTJ#&i+3VRJaK4Q4HS3yp)|EHG>E#h2U6a8qJ z{BEs!K1nBV)TFR*OQ*Jp`B{k>vF1-1( zvnZ1}9)7MaK8WfG;<&FDU7_92@gKu}`X%P%CFT@_avZ-0@Ffi&#+cXl;6JzzEQjM8 zO#l7Y66yF7=|hf>Hoef__p!espk69F!DUe|m5@29{7$z1&LSr~$7Lv=sD`%;Eqm^(hmFbQ&HZI+JPi~NQR$=3gD;kst##IO3tn>-hM8wt_@OrvzrG7 zHqXxC|K_afg#T8pPV3mQlj51+;_U3=>1A@FEt#1I_GjY1{Rc8LbB7PReQWrzVZ(3T z9yT23K2rJFN`qWke?mK3>4*>%S5-9O$2bokE-uEQ_WS&RB_)ZNN5R_^4L~wwb;d4YpYgU zyJ=UoduwZJpFUkwlJWnYxk(6W`#ya>zc&!Lxw&)Z%$YN1&N*}DjG0O2fZzDcs{teP z4VBm#WUzV@gD|II)~wZZK3R$cw}Hw_j&G;F@WNcEUn3cz*@U%DoR9j@7wBUH-=F8A zN_=a|zj&VKkBlMb=_8>T;Tx)|st0W=z9%(3H>=CIX|u*!Qc^o9FAY26?bWx>(q(=6 z1P0Cs^>067@SssXz8#>CVNdBg@iFvEgq-=^xjW1$LFG=6lYi)gM0vZeErV@X8)B+X zoztyrwAq@sqNun}pH+`-e(qnLJ9mDrytcNyG7&H3*>N3$`t{qH6CPPyylO>B@jG99 zaM9a~-aoE+oH^}Snwht=E9iP3+6n6q?ZjRo16ZYyKDU(gqIt?osrH`)I88;8gM15{ zl|L)mBPP8oo(0P|w^ebDaqg(&`#0G}JNM2uZ1DoC+1$@^f(hfQk~?=!sp!xC9xYE! zE-6{Oq@*M{xqL{PxxD=Tb>-#ev{X|?&}L>1nx5M|xBIl3%*;1>#m2?O_R1@agHg@sn+p1_1bzKkEIn~DxN8TV z$Wv~B>Di7?8BOA5-xm-Tx6ZN+yF~KbbuEP zR$(Uzrr%FMhV@`&r|ZM6L_Sb$SD1{p;0pp(K5Ws#deQak;(>CD-+d?^JC|)XIAzi$PF22uk z!?BFj%gS6wnRfVK;oGOwu{>cpIXI)axl(2JWRT@8m-RN@sgEOftgNVG#6&KE(ui}PTrKLkB&7R$H zdhy)(lHRqwRo;i1xt!0TU2pzdd`PT<_4}1OXGJxbbCcK$@_C;79&9*qK6_3v%YCmm z%I@IzX1ni!CgM6)Rt4MJnJXg~&&}uezIER#!oA0Mz3??SpTigs@8i#X@4lCVoEn?O z3c$PUzL$!!D|uP?Gn{3^6}jReVFRA~vGpFw6c3RtxOb)Xp5k>p=Z$;t&N<6|baT9L zLmY#9u%FFx|wXGi+nmz}kw zXv4N`8;X`>30gXoJV2+Cy^gQQUK`Gj6B0?T&9OnQ$)<; zZfT?{3)+2WezsMR-e!Tc(Z!qC20S@CtVtbTg3Nrf$_1dj#j#ZEby z;p>v(VyxNpV!))M{i|P}5*!?`E+{8GW?fF8e?!B@U$pn1T~BZC><&R$4 z@s9_EpX<`GWy{cE?-v#dxdQ_uS9}|&J4?or32z_nP-2go_6Ysx=Lf~pTB+rs1RbZ* zu$x~?gCKu8A$tm>I!7>CfkR}Fp-;}VfkR}VE4v0ll)R%*C;VqnzY+Zhot#R)qRmL? z9x?so!2YjI`S6<=1J#G@;zF@6SKqyi68I z1Dj}J6FrzuPmrv9R+RAk*OSnmSbSjRWo?Fe%&nf;Nh0{9Y0wF|Lb5&T$}6v&IC1{_ zu3O6btnB*WEV2R#qSliu^hi?^>A8OW`e8)*pQwmK9Xme!K_Nb}dM4lODNR*I@>!7? zo9v)Km(Z}nb)s{9a1stAgnz;(HP@BibjbKOS~Hwl4EmlEq!A%)a-;5}8^wH;M}E{; zy@^OHQvqm%_;J{-D&(z-=Qx;jTI81&4X{LIJ%Z89AiC0cp#4g{#VYEpR9ZDHd%QN zhbaqs_wC!;E_UfYf5E6P=XdYiF0uCIm*cZ)%p+5gIIn+n|B|U=&4c1imC1Q|X~j{) zE9Om1uFI&I&`+7-IJuF2{ajyCm)xwU7Fm%uPrkBzP+p)pBI5PlMN@WbzEuI6d-E-_3h&o$sz6Z+V*CXHZn@3PfmyD z`MCMYar1GwUEpQm-WNT;$YN^#*S}qXd*%%@chH#6!6%cd4OFy_0<}SHko6y2@UbG# z6$&xdW^v_%h_$_+N&+ucZ7S~hXz9kMgUJ_ZNYP918lOhr*FU|f?2%rD5BC3({?zH| zwAn1NDGu396Q9GONQQ*Ovt9GvIWwt4a%cZ|{gl)1_Ud*vF@Z#r@F{*BlKlfyw7!!- zk3{ea>jy4>El8xt1SQmNE`OifD|ETwc!4aV3xpY8Id<$_EmjGO9jk;nj)gNFQNmeA zn()O;PS+H`!5%A~6NowZFwNTZN*&&Sq&69?Y72J&Fo2TFDOCsLw zE3P9uo0{mqADjBo%7&>QJDSN0k4^b_Wy2J}RVpHBmh=YtD+pXXLNP~yS(li!EC(y2 zrJO}W#gtx};>we6v?uH~$|B7Z#FTt38#hE$ zsUg9G+CU=QR*W|9Sxh}T#Ds(-qo-LNg?F}$ub7-|sopqe)L2_?wBAgv zO$fEccC{vC#6^c?n6s)I$$vLJtEN_udF zw@cA9Trk1Dd~ng6Rg$=<9W>;J{j=5Hj$h#s z|8rJ$*35am2RZhLGiJ`5H4;Z%^_ulvP9_F`ps?N?EUm)oS{(RPfyD_7VW#S_-0R>Y zrVqxOSauhdo)-z97(24ROxF_LU3+QOo;|BBtsP%CZRoIxBPN#S7G~W|Vn*IQZuZ*y z%BD^&dwhM=6K8OG@|3rBN3CBaMaA|0a9C<5sU=s?1e(YLyB!NF6OGCP(i72>w$XR# zd)p>4-P8n{Jjuso7(Y3}3T*++j%CODU^xcbf|gOkqBf+!i`Sb3J^s$)I6tz--uoI~ z*-kAFzuI`;-d@jiB}=<~^-7&sF;DPvT$^`xp5q$35WMD{J$rVZyg3Sb9C+hh@CMe( z2_JhHEY4)PII4nof{8jM_VWgX&(D>1pXcjSmI5=3_0JMG`O4t)lFuk%-4Uxn_uFvhwhDQ@HLSm^yu)m) z!+2E@Fqeu6z8a$|W(BM&rXMXU(+ykSB463E8$>3gh`L}N$GO3r;cy4@h za?8JylgGbb7#AbZUx-dW`#j0gke;V!>Aw}e6k=jqc8S;ZJ!dyPHs-lWy@1nN=;CRh z8P7yyMh59mzz3JXj9N{(mujx8B5pd_|;c5=VY3m$xEX<|8fbA_X6h45O} zqN1){ii;2ax^m^OE0kLfq(|;}aML4E>HA|M?C*YXJ*?#VX;Ip_@qtI{Np$@q*Uo)# z?b-+D7;Yll)hX=+zcL?!7MMY^g#w^qr%AYe#C0#*^NzqpHim2?qv^wREZwf0e&avN zcI-XMu~NAEMw0NU!-(RFD!?m5pNHZDc)gV^Mdr2UGYHmRmkar30jJF6f_Hm?O(!)xw|iIcGUD8#py7;B})3@Mw0YJ z3nD*yQfEFq}s%F!3#nn{aS* z-@YY%4vwF2aBE4Q%?Bqg{G_I)cJQH37R>+T(BRsdnor_4Ra943uv3#ZKJ?JWO|zx% ziZ?e;825Y$Ji}X2u6c9u*qWNbpYZ}HIDf%sgKKJNGre5Yt7lQ=^vP4FQ3UNsY~5Yj z&S}On?1GNKi18!NZ;Fp?MGC~@Y-NgXI9dn&7(Qo5oiOw2AAkJvD_ta}WhV`)PLvtc zF+o7;pi!T`f9?~TTsUVkM10RsfyL7q1U9BAPWNc*}DnoYi+Cv+6fm1?2lj! zVs*!;d2TRF8@%QKxL#|&eg73`6!aJR0@61{ll+5@bwjQU!SCRx@a4k-+hBI+*Un!M6ANn$6OOW^>B~sVc&F$g$&~QL?r?6A^bv7BbQB;)Hc4ZEuNoXTu6u^Rw~u#wA0Kaxm$z4d zx3^bMO?z*V_y_vIFaM#Bmtv(Zz#l7hN=>^uUrn7>F-)kFhN)8Q^vb!P&;P8^bB{e+ z^To3EaePcIsjOB9C{L*akQs%)m8S;95U0Pw;BlaXh8${`(I7mxYX06CJ8ZkBE6)w3 z;pFR~Hz7P6N643a`6^QA37lb_N!vKD$zvSHow&1KjSvpK?kKL2dO<{-YS{vrG{iZ` zN8R|(C|qKlg~pIIIjSH2e3hb+EPrC7mf^2-#}uvZzVCi z?3RE4;q!pZzVj9>p4Zp*bze(WRhPQE3u>MvJ)YS|@}GX1zPL|Yq}7sX<(7(m>199z zc!trhq|vH*SYw;5IAtGzI7^H=<~hZI)H~eYuf6U2Ssvflu=1*J|FV3I3gvJ4zHRy2 zzn|@d?*shq0AKZuNBt9c{onm%{df3Y^{u=7mtZ!A|K-0Z&%S5)wf)|OUl_e(`TsBY zs_$L(lWV+vZRig6?5X%hS})FLdDyg8qE};%(5rir*qVBAntelkjo?+mJ~YR-`=W2p<7^3MrA@)I?(B zSKp@ZZn}RYo$qQk`Rc*@5rlW6Vvn1gH!2u@F1})L&=MOsOYRLDV3L5hNebYQrOw`{ zrx6d{PcF%DB8>lVPh=2IK!?G_~d+dSdR;BJn942oGSB<5D|YGm|nRJGb|-goK9!LybW>A-GeFIVm$E z*W z`1$(>>JR|kwqN*IH^n+fi^ZlF#xu8Yea(%{uKwM8qXylJJFVT@cAT*O1(U$#!^emY z=PyEg3zAF7W8?;gtPn3lnm<`S-K6b5uiBlOda#USWd28ft-0a&+C>>5 z9HdFZElmY-a$w7hf`poSfg;pjYN7QBVXHkwQi&_f-K**eVUQqg|D#nwt5K@ z(_Cl*bDf98ydi8ApY*{046nGg-(Uk8SzkH%2w>nxV3?z8+{mNP82+rcg56E{9(Nfq zC+!gr1dW=lwzD5sfB>u)JC7cfKYu%w-L#SL9p;T8M9NP z9GESf^Ttvi??8<{I3!G`4-D}2X-rH?u%>s(w3<7|hw2zEd@AvvCGdc{Pu#R*ZcF^| zhy)-83yjGJ*@?;I8ksEQyW6xWDmB~Kse>*kC^0!Lty_pbG$0Td`e?NJP>&wag~oR_ zTQj?)TN9FWx<()0fIz)2EF@U33G{{`$aG{bhk;8Rx5wHN0q0t_@)u6gkx9n$A_FmG ziob=3;-ogz+0sbgcF~6*Yih^j)U+&3Xi%WPpZC-@RFz`ekn7wzH^JuTq}zadhh1o! ze^^lH{I+Cn+XkZ|7Zm0Fs1L#_pKC%vE4WwKgS@UrFb^*K!6Fq4F2WBPot2iF+%ZT; z%r0`%w;Q+o4Z$O)di(hY28Bwouw0T7Z0R|C`eQ0X{ke00+XwSQgTnm5T&x|fvH@`e z#KO>uM2=mV=*(FyW9q({OI)%rUgi`h2eC#td57J1-c>urIEnHyU}jPWXam%0$u~$J z8itu7QXAwes@0l6jXDx6+9|3muQF$&}ej#aV9^+KKXhldizPDTQm@*(#P0NqX~>Q8Q~pQ zs#HoJFMp#6XK88zVtkZJ;^F|AF7HAIeSohg7(|oJH6t0c5CSq0!~^vEE^E!-xcNqkncmtS9Z+2U$pQx=)8LR;PT3#gss&Q<_AZUQ4ukk%&W@i|PJ;SH~{9 z$I*2Ql-<|fUpDS)J5pYJSonYr5a&lau8<}U<9WacRgUKIGcNTK$}f2kHC<$yps>7A zJmJQn;AxCVoIg55jz{#sGhBGD(Z1S^Cway3NE$jC10U1dv2HN~OdNnnTgICDaQ-qj4EaN&}O2D$VGc7#0tk#W$a#yUr;dz^~P zU3Jw9nhtTs&K?DD#b?>K(EFIaCTz7o zN@5-3WZexnS-(SuNpr>Pd<}pJF89RhInUwLdFE_p-?OQN#c{FKH(4p~PEzKMfnQUMhxp+@Ran0bd5dnKV%LCK)O zqsI;&*mtJ6Yq#Ec^UR$hLqft*%=7YkcPli7f92B4J@I6dol`Hr4J(uFuNpzRaA1by z$PhE;;+zecJ(A7lkl^$=GQx#}tH({M9F|vTijR*k67OLO`B&klLXK5RSV%}@CyrHD z^US^j2ag>+cu+}!$!JXKRajd+ZtUQ}MSL9fB$v1yjum~U9qu&3$)$O`FI@A7u#~O( zV`+y;gq~7gW~8H!n3C?aw}l|5jgIHIQqC0ed%1<~vd$TwaotOJ5w<*g4x9niOL&2S zff3*GtlNOcyw!>u%Uuq!BCU5l0Hcl7FSmjD5@h_C-3=P~AzbxlwFm}tY0 z6M`6&i>}rHw*oNpH!^Mpu1{KoZ)6yZ8sfB8UcVRP1lpt9v*0b;{)|4Z>gBeyaHf{s z8lsxx!%%m;+3MjytOEG@3GUwjOt7ZTJ{*lC#tEBXbE>1x|AJOJhARa9Njhvk-q>Q6Vg?sQ823Wqnh+GkSrm-qKH^>2Hmw{I>S7R>8vq0+S;KGZQ6&02J+<3Yu2I^Gs zT6?tCMXoyQ2cn9HZ@wXAh{F-955J#|dp(&Kj`=_Dhqp7^afZ$2Qv^%4@Fo19*@AT% zo2ngWve~$8QyvnXxenQsjVr6zi#=|c;(T0~B7Dhiq_g>Un&Wgf9G$b(yW$9{2+xXnIxju=C7ox{3f4t{Pa&qfsEJ@y|xF9teN z#h5wvvEsHl_KU(hd>oTpUQ+I8kMhs~2s_ITKNg+Z#D3fs;^OQrn>TOHG1TJkmceyw z5`-`mmiBrIuU?H4*uM#GZN0Tk45rhjfPaqtSe;df2V_;TroL`4gI#OLVX(73d=)a( zM!62&*KR%xL0>T&-g&T^%aw@86`Yv_mE;CqOfBKFEv{dB>7~Y5jn`aNUc(2*JD%|1 zJ40DkKGy9Dl;K0wkm0$!fj4f58(w}HFknu~&YnLxK$nbVYa{Jg%p7qGAti&3Hq9>2BEdyXoK+f(BsEy&mefF znzsNgA)k|J$Bxkr^w+g(dt<}TcEs#shbYCiZx5V&7)&hV1EwYx4p^gx!(-UVFi#3Y zX&h(*h;KTA-V+uaJLXsdh~zSdre|A;z^5+S`T|RgZ-U@s4i8+BLJ-%`3ib0}ifaM% z&7t=e7L0ZS7Pl8Ou)>0Q1qF`2ZGZ#cR`^W63kG}{ycYE5mToKf-u1O7iC=Hx_vTQ# zp%whqM*&`Z(moJXI8Oc@d_V4&;smjX?4M1|pzArKIO*&)=J>HuL-#ttGo}$%f-XnE zG{=TM#RzlKaYD%Qz}pAWA5pCL7?FXpNp0k?5fbc#&KW`wIBAX_Bhk((PP!@q^-&8g zUb~hYI(FkVSog$AZlJ(EA@t4WV4*xKfyp^{3f=pCyK-EQjv#~ z;>9Anh;p~VFv?Rj);m}S8Z_c0I_hh_*ty`_mKQ|(H}17cF}~%+BJA|#FkC#w?LSab zZ{vj2%bgFKO%Q629UqF35ac8pU5%k7mOIWLJ0>I^J66V7b{3NnjHg^{mXV02M4SeJ z_k#PC<*-GI>^yfbQ5oSL;%j5}P0`^h=_j`w z-{z}HEyyzm`jUA1sh@vRah_E}E_Jt*mzjGu_Drwnl)%>S*o-1uMjbS1X_^j=T1`r7 z0O;YDAKP#$0>EjN-{H+35^MPY7tlkWzKxnbz>!EF+; z>D#5q=-?djnE5@l3Xc$hwopCcGTFv-7xs3xk!c3}trOq7RjqiLHMC7rd1G7g1Uwd~ z>jKe=C98touK4gKd!ly(&Gu+FlQFmA)fT9gM7g@+iRGEg`9ePH-#z%yh6HVEVby>q zU30JiX}~NsW-e>6-5&FAnLKNe*=+75I?U#5@r#f_L@*@$Gb zHNEFGXi-e)kl03yO;(RwM#-g)T92hhB`?VSu=<3`V~%V#mdQZ|h1a^A!I3Lwx}6M< z;mzZu5Ql}`K$!2e1}#CjG?FI>wF~ zb`Sj&7{E>x)yHx)*1NF#M;Wx7G zjgcFQY}@Etj;-{qZMLEfBVT7Y9YS1nn6i%|nn@oe9I0$cj{BQkQT5ggi+qTwpjHv* zzGhU)<&faFu6A5yQR?DDQM94W!Z5N z{YO84;W*z1gy$T6*jt=vf2fIEX(B&1fkvX@z|96JLS=>X??|N8XhjYBHJ1%8pzZ);;sCk+YM-TpxR6|GBFmKRYKYToWoJ#3elA_$W5M zU{~+n>{fu(F!HX8J#PDlvV z-0%1(Bp{OCE3fQrQV2IOoTQJH>(MHeqO5zOG+rqQNZc@96b0pY^Z}AGO9Wy9hmKw+ zEeaLBCQ3EWb#aD=E~b2a1&IcD$fDOz2wQZ%y?z=Lg9vDE!JraU?;@CgJ>4LDpsE-^5o99 zyJ*;$CbWF<%`&N6H69)Y4z>$<==8z-8ZspkZ``KC~I)j!q15C*}|s5Sy(7&OMezu6pQg>4hjqq5Ym7v z2!jkvW9&&vb-{{{NbdwL^1N@fJ!U0Yn-IogZ9pMKpd+L*2M zad!Ymfpq}6(Bzow*#VyP$C`+NiCKnEBniOA31?%MirS!VBbM`qa^kV8g}aOB`T3+ z;yTWQi?L5IfTeFjJ`i+1Q@!zzkUqk{?G=L2@u|4o5i9u6bE|5_En@kwwRSlcQc*1= zOLLK_^iH|(*nC?p8Cot0A2zW$gs*o=oA4};gtQ`P9i)P3i{~`b+?Gp{!SOK7BQNbC zFVkM)<))U&q^ODXq0cqZ=WpIrjKSV#8;>UrWIa#|8a&draddR0AU*Ocy|KCpuoN?)bqrNUM@FSR5J zYNf(gNqn)h5}B+xbv`(L^k^WWuC*p3CSxdgvErzXB=%GC{(~u0weSz&!u$~qqw6#pC{H#L|A#dLOiTL2*OUi@%`XF#9|Ay7Tl;1e=pt z5&_H=Y=4IyqZ1n>umRX2G-cLyDXgi;%bP&9moF;qxvXlz?w!kquFUNGU`^(@&Y88@ z!o1}p@0&1r@mUbuGly(>pCei5<8eM8#A>(wh#6t?c+alzg? z@e7mTOMmY#lEW^g`YGaq1689U14kvMaz4~#;RR;2^ZaTon+$k{?V^ApfXQB^#=yr8 z4vxGQ*t!y;dA340lr^|(!QiUiJ;$HUti@GjUatuYQZ@~qvv=2m%0;C;mi3>%`w=un zn7MM)@<|gH&7S3Kh~nn#g`d_x@qxQJ=+F5iN~)56XFJphXD6x3p4cRIB2nUb`v>y4 zX!8tK%na-qF}Ml)`Wro;gLW@{a64mZ3~0x}J-J?(7U=avE#cz8x_(J2N^WJI6Aq_GiaSLc@?AS?#l; zBO^Pe8sev=I_hqz6Qj!+X5@~TVz(gN8B@vCH$LSjwbNC08PKPoBtq@uw>LN@2{pZXWm}1S)i*VRmOHO|WoNiGB^Y;;rNzq>D1q$N)`7sthz!_3Z$aQf06?!Dmt z+WqB1)sV@R$l4KcfBVwwyQcPYUjBo-kiRb~mP;YhvH+7;DkNTJnWd`3NV3LS{&tMU9?{`@)AkLOtZ91j9&AP$B68*wOs z+|JbyGd;++?^sLOx}wsJmDW)uK0&jF^j;+fK9gg! z_((CqIo+S`Vhf6vd^5U$$J)TwGT{r=N`|SEYvBH&cvE%ps@_9p1^JYWvQ};^Em~J* z8Qa%4XnIZA`VuiPw@Zev6dh#i@^tr{;26orV#|?XE1pKX3b+rDODE?BTHuSwG={P> zpNwb{f+O_lPOLN1k|Ro2R#q4FUR8`1^&3^WQYeQG!cq72^&ikQ3+Xl`)Gp% z(W(p}(5%qHYQ<6X8?)2Yh^ghRg+uF(EoQ9eNmQnL-NuDx(*T(bg^%_g-7B7L({f+$ z7?~NFUWYzJy;|lQFnX-FyCMtjL~}O=q~CQidks|x^Tti@be*nQBPblp#!eTj{u-a7 zKxchLSN>P>yE9sBj9@OGtL&^u16EKpc@#jK5vWH77-m7Vay0KQ&( zo4MkJ1d_-@`B@h`F63;hP)(t_r{0Oou71|uf$jAy(D&~J5F5x$GJnf+YHZYq)nu117YH2=1bMq;5rU^W(wF^t z$Amm%?b@B89Y9~|=rN8q@&18C{9nn+=9|Bf?SD;Ldm=NMq)q=Nf$7SnCtK7~IjNo^k#s0dbr1^G!5ySq=c6;=dTjmkiuI#OG&WRAUOxR%){Jq1T!GG z&B!JX_(^!S5a%LKJn|ti4~;&^nL-BZ4eTMbjf+t%K42UnG2{5O#H28tL^%KIAizF*KLF(@o4@sfym*X*Ht z%-KD&bF(~GgK zl($RZ_1jl%g1bSdT zXuDPw!Qq5KKeH(c6lEUJbeMgyn+jp?_`%v9oJ^w5GZC26?<9M5)QGCWW6X6B&)rcf zmghV@KE{oXl-@lyeDdU8xw*M{Khbxj;-2vZad9Q_!>3Oi+;3P&Wcbv70I@H&wd(tpjgkqDR}fLB!oGOvh+*;Y_dUMqB6{GbFdFc2H(!e!oGs z?7V)121WJH$*FL5&f{IP@19BzlESjSL;BG-Nnv@Pp~xI282g)3nS$dQFQ0H6d|6gY zSMM|0!ZDqWY@0k+tXtc`xa9e{*`kjd5AxcWF(d23lanJtdSoOFN=q4Tsht*=+$mTq zVYP*iA~JsA$x?HVq)uTe!O6B*!_e^X;brmpNlE&!c0Q4zT-P#UZn^+{yi51!c7E`1 zN{V`wUwfbWKvjTOhrssj{Jh}i^zv5vD|qr*v+U%Af@$w^Jb-pN&ech*Il7~R+0G}X zL01ba{+Qo*njUBtRF1jV<~N=q#mx>XHjtb#=bEnUrLT{BfA1C6C)^h4>7)mz2D3$& z1aUW(4My3tSOSU0bVMKEeS=9ew-v$kb~hHXF+~cllCITsBKfA;@tUxv|2o@`^yDDq zN{y}&vK@0O*D)>pXj5~KIZf>9Pn! zgxQh|J0&PS|Adh98!+uEw zWOC>b>9dEFG=E2ZFd^V|8+^8erckQB5dq(ucu5IrLBZj}>Dmfko6I9*SQDznSo;N+ zgd>N3_^z2A+(Vxmz}Bt?+^mx3NRQ%*OA-qn_rPp`tCVDr(c3E=yA{7X!qCXIvq_J` z5K-O*3ou$yXhQo2(1RQYEnA&KETC+Swf3yZg;DgIWZGbA6((<=mw1XkG?={McyQZX zaRHOvc63Tz(_^zcHP!8X^e*8?7n=VKd{M@h+!_8Z7xHZ@aJ7N;5rNLf>`95ww(-#T zZ19FKL*JhSLG4qECTM3c?}hZ2>E~qdN5{4=xo7)F4I_?_DEjzEuWny_@77Q2g--)l z9%%9+3;R;qvFO0q*kk-NUEG%l3B?D-#WG&NTKimOG&BpWa}cA|h;eAtDMh8uh&q&d z@&%nEm}hJ&Avm>U6nW1@AezWDU>r|Fth;lk7boWI(@ zR05jGrUYc8Rf$#@O~Nl^mE&!|r0PJ{t5aU={1ZF6>?`j)|Z6Q#!}3>v86(iV`q7T z@I!Go$Id1awRF#Oq|W-&pypBkzW31PD^35ga(c-1z^}~e(J9?d6$@*FO>P6W5qwUz zIZl@fOC9-T4c(soF`Ir$#`K}3sntan_TrgoQH~ zqMu(xB%FxhVKO3-kwoEUZ-z%ZX%6}_3AvRNMz`k;wDs&x(4f^1Hp{kYpw zr^`qG_F(-RLZ2unPtw?)!4b@l>9PQ$!-qA%jq5m9#+`z~`K5afl3~^>)y*S+MSq|5 z^3UKlIq+@oOD|c)Crfz#u2%f`4n$%D^MVbWT>?wUgK&Hp%6_(7;${zF>2GgZ$QH+2 zIl+CnQ!6jOxS)?r!}2a;8~R5@Fd|yBW9Ua@Y$+`v-_LqX7*vq6b>W`<&B`eFx*{WU zpUI45w2W&IfSmiz~1~0uY$L?BqkMWZ}Fcl1Nb&D)0 z?U!6#AbPR|=L-)Q2wLFth^zBu_PVKX0dsK_sdIsYyn@W8)6l2;0WFg6!%;?I@E9>J z+2B{pgWuV~Hr#^{SVrHo?;=ZRX$U#(czAL{pX(&OoZd?g22*Ufn$pnccl!1X(&>h{ zW?*s3^g}C4H|%+pKAd{3^iT~^PitOP_Q0N3$vE@%zRlJ4v(<$jIIzr*%tF*diYb{i zW8wi_1^#l4VPaDgwN32Quz;B8hzRl`^+`p}kEVMY=F{_}A%gZG*HaxI3WMlP&3JM~ zGe)`JOh?!5SyH#A`GH3tJMJK}|lq?gp4ZXGzBHe4mIZ{GbN!A5E5B`7;rE~~XF zl(4U@3S(R~=_Oor#M8q#6KXH5mAYT0Sr6{sOmnW1p~Ep%FrJk-{k>Tfu#wFedI=_t zme(K8Zp7K*Y(nGbICN^-MdEdO|9*ObPQt1~?DO>NKk1WX_)jGK`G>b>oXlLh<1_nN z=_-AvYzV!0_0*OnS-ZQ=-+Y?u4sGj^Fb5ekj10>lB_<|GjXS_s=twW_KTW(Yl4*3K zqwn)1{3kM;KKUp8`g!aSdyr0g_~cppXFHZ=p3D%}T|K>de%IYuOSYW4N@9kAS`~Jh}d0|I4o) zpy%rwb|1Y=3jP=wjYA}qPnc=boNZV4O`$)|`QYlGk2roa3o&J>yL&FAFHJD&v~pi~ z)T4B29t?gEo6k|7q}HkteMh#n)v-A6r=&qV#n4L%-VmG5vAtw%+U%IN`4U98R zPE>JQUGyi?`-0y=DmGdTfu`Y$NW#Qq(q-PF{y{T6~d?Fj@# zxL|e_SOC^7L}y0HZFFbgZXrFVM<>w!JbaY#j1%PjqR`?!i4QlVGyF~N86i&S@0d~W zXvSA0EPMJO)(Zy;c3QurS3V=ZI4%rbi2mtX(bV*T_0gui(Svv|oVPy4dO?gox^iV* zSG}_@8u4nws93Fb3VX_Jn)9 zY_^W}s3*p=9u*%kw|1ktZAAeZ$IC+Ais2rEX~;cQ&YB)3tzCO!?a;_PUYBAH#`qd| zi_#SPR4Mz^mi-c90})KPPuM3RW>A!a2nm7(_bK@IBEH8nsc9}Z2aI|o*q;LyUDM>~ z&Wu_%<~`t&lzoC_zq8yvis$$dUN%F)-n-wP;uqY0{gUZ_fKcD0E&LA30XEc<*d zEK-s^nVRPE2Y7fW01t#U%$=eURomUM2t5(#ZjTa;)ZiT zz>kDbG3R)+Wk{}gV*Y>}AAsSH2e2IpdzPJ{NcCW03XwynN%gf4!xuS~8OK~kn6nAw-6R$;n6IT>5yAGm1u4PAxtz~p< z+Ya0R)($PB*+0Vnn4|AM#+#m7yY?1*|3|tjZF;z}khl#}KZzrJbqI?!XhEgNj^2q{bPpwkJ*Af4Uzs4wT`UhtBP9`cO{?>+9(X`~=*&3vg z_SaaUXl1{U^OA@H@8W7}&OC*E}ZvX8(Sz zWNCSeytkHQ(vxfHDPsFw46}bDKGE`)xRst*i)EV(29TYz+zJozfo^!1Puy_C8IHd0 z^1?7a2Y8kPH@M1aZQewWgu^T+guDFSk;IqyjfB(FYb4G|_+upTaf1_MMDN@M1Df>1r$Fmf-7bBa=x#xY~x?0+)pp;Ty3IEz=!F2qHO%vri)wIFp_q zON}$>0f-4cKha0Yz(3(RlASA3sN1n)pXqX0z_CLwa>vfC^{}-JQyd%#BAiAZUK63?=Qx*r z!$o=xek$23LNCBm@+TQcAN>hlBq`MGsA|!W)UqKY#?w)Sdgxkdj;bSeI3$90dblUx zw&lJNlbUZH#@28;5ca!O1np%G#2ivNrvkz zf;LW!)4{93=bO{TfAs&czpYdHx;Mz z-o-wyjh_cS)-Z5R&DtkRzuR#JYdQ3rPeGidl*!5%e_-YKk0p9{QsqbEQ%`1W_ovug z5HxPQee2vmSM0rddcwld-=Jgk9X@OCCCYqO4L{Oc%~)V+y*oqIv*VBahpb#(s=m^i49uj{fM z%z77085&6-p^hWM@|pBovXy~sxxxT46AZwGqd*G&m~Pw-0~K9nAkXRNw2Ik6FEgR& zd(jo7&TR>gb?ldZV+K{|7;gM70&;C&wc6D{OEv@BShxVdEkXkW+$_Uj29iB5bPR_z zfd0hCs1Y(6nnvr2yB^+dqQjsydPEk2<%FQtDCX>%h*ZZFc`cOQZElTb?zYn63T6)S zd+!Ope*43rd6!%f&A%YP7=C7F-SCpgtFu@Z^H?+C?A-<<*OCCu&F|(}S+84BaxLnv z3!p!>)=5mQNPX}Gn$P*Ug!^fu*jkR#lLD|6Z;jxVz2R<&;z^1-1#}<2lfzc)!r}HP zZ&meQ_-*Mw!SNPPwnul}0Y|#^cK_|)V(5~IZZ|Gsz{<%F(n2u|=gGc}ZvBDp4{+}3 z4N$3{=6p7T^pPsWwa`kikC<4M8luC-n0LrNAyv4CzDJ6WA-xzqbd2@MM#%qM={Ph< zO!XGFEgTt9yvas#o}9P8Ei}_c+9<3Lx;kES%)N)4BmbiPc^w8=v(xyUCL{Y0&;?4zZv*$BmGtCM)u0ju?{dJ)>OE3XknB@q{Nl1%QAjyen*RJ;&fNMa&Z( ze-5&b%)}mrp?v=uS7@P^tk@$C-Ai93KLXBhB1qGef#5TLP(My7XeDDH2^1xxppE;E zEGCOrt)dI*!d3L&&CP;Z@M>;$TqCPjts;xalGUr}0(|;S2*>J@pW~bTU<2^C3Ldx9 zQgDFEd%I!>>TrH`))8RLh}KJBQ3wzCkyIpYD@of%%q>U77ZZ=(^V>Z~$v#rIuey34 zt)KDw)PjO3jDF2zkQ6Kh!#@u$;rR!=NrnxMDCAstk92yt*h-lCF;Flg8S!PJ*=0I2-wBII6Q$#;SDaY;^Um?s zjE^2!IOI&fw|brzPpvw!V%2LTaH{3L(yiz7&-6P}d+#G30geh$Z=CL0YvC9^4Z^T^{36nD^Qbm6(s#2sICD@3`1x@-9}CoqiSJ5~A(lyQY;42^Z`i58 z%*wVsBK!@(W%6e{A&|3Ymps3C@u0i!9<+Gz^GnVyXXz`+&IqcIRe5k2qpGdu2 ziq_?)qydPa1Bm=o$B*nbz@kBIcuC$134MHzIG4;MKhjr03XG>D;a%|{_>zwo<_8oH zI=-JFtXBFtUKgH{p9#k^yPeNq7DjApxUhPL(r<>NQpjO2Zr(2*#1&wGu@U?V7 zAw1=Ho!1eL?{~}JcO>}QfbzjJ9Cryhj!NJl5UP;+sO0=h*asKt-X{v*0NeT_3c6H{ zKt#VIZaqt5v}74p)_69}u_L;h=eLxWYt|EJ)Dv!I$H}KjWoS z;7eGHTCR%`oWG?rj3c$=0k}nH(5YVv!%01@lTO($9uZ@X9Kqy^ag~5^Rs^~4gHaL4 zGFUO~4Jur$h?E|Bn*ou-VZ@}CPSbw&AH*P{r0<(fo;1Savv_qqPR{%Sk6sUPNTb zhmHpr?1>W@Y_eVG%An2=4Kv!nO;VW2v&i)v1DJY5#iYR7QJ|<)3{y@K5A;zjn*K6c6p3?DAtLuMx)q>x)^|@-eBNTTlL}7PU`%HoYl&5)}j@0l(*gpaf=NWCKY)`46^?K zH*qo(v!t2cSW4QTJefr^hzgRHY_MNKEb$jeX%L0XmR#OCUVD+vEro~!S}7E>IZsKL z(@z-Z_`HyOL_R7^7LtqEv3kXrD-g(^F21XJOx6$CK~5sPcsL97C#szxyj!DMbzP~R zd=088B(~~ix^&w4EZ<9_$FnS1B6BJ+^H(Lk-tv_Ag+0pkKEuk+ATR92dgwa9z#MZ6 z4CXOl5&bMtg&P`X;GciTiw1iFl&1bc1AnJGIZRG(h}<`qKcZvL%OsB)^b<+oOcfXbss-cDKX{$7ulh#r~#xvK`;i0O1R+ zcgncpjJ>|tyQA`IKnpzSz%nL=vt6`-I9ifLJmTa=L_(r|S7;>bRj8Hnl&&!>`t2UP ze*c~QwToXA&Dpkf+txXSF02aY;N!MAMWEmBj_}dak-W--+U7bJF@w$4l zW6!WWTn{7P0T*OBq7Bk%wFUEN7>foCgf@(`$uvQFDL|=`59t+vogOF|HNXTYLPMT0 zbL)(m#7y6wIb-Y08PES#g%{~wRrUMtRpegb=)RsB@*DNj^xWs@j%(VHe5mOub_7mo z{^A+`wC?tF|1^eNnyjBIW=W@&c}_a1z3&5NCmC+;zE&{{j&lovDdyypLG~xWCp*Ov zoJ-zNS$kY>mfO^}oRcfn8iRD2b>9s86DxV4>w{cnZspDP&f37rY^fR+@2#x)wv#oh z$;zW-B^lmwpD>!9LG^8TN)1iO16BxOJk<)yY=4_^x(rJAoZc;lIUXiyWaQlC(y$4`a#TGZdGxy$YX}j5$o@_SRO#&n# zZ3AgQ5?TU;9tgd6Bp}kUQl%)0h>Fo?2T@P~yCU}f^zrOZeOR7PeRhTHUjDx`cQ@I9 z`riNhzD@StyLZ}|GiT16IdkUB3AEeaAc>KuMx9NgVy0($7>Q(AE!nThDZZK5-J+QdZ#z@3JPO*dpT3A_>>RwoqotTl z!F?_Ml9|=UQ}R_m`*jcdP4yS-`Q?{A5optICWM8M)=94+oIxztc&Vu7igUQ=zB|}W zfppNQ+|d4jy4tX?{Z46H;6fZna~|HJA?xcHrV;{iKtH1)L)sF2jAaJ*X?RoDeWHl{c& zzUZMSPalpC8{fC3tCWGE_vIEnK}6*epVr@@z1QtV4Kz+oVa<&8nMS11O%-XHb=%H) z4{I`_IdqHz;2maNhFBqS+l1{7MjEj(0LOWY)8Mfu0DAy2?kLF&`WgC@?g_40m6uaA zILcXH$>uf;^mrfn`CXTDz@WkP$K{RhL`BsHZ@q3!k0O_O2)5^UQ-^U=RJvkz$Fv@- zNRBlGZ|2YG&8am9dnNOg!5T$LyCC>EI~L>6Rf=soF)o!$m)u04~6!Z*vRgBAXaK#uH)(nnX+93*Ed2I=+oAARsU z!gT5<(wo>H4!>w91$sXlT-}rEQFxp5({gM~U<&NcH+I|Wxa+w>*{8yz=j)HOjvU$g z2vT*9^9I^)L{oVoMgGp7JaCXedMmp7uUvU{#$~svKks7ug6+@GxU7vCcd0Ww1WtKT z*IjxY{ZfAm_Bg}RFrpunq0wKLr=X{*f@Ysk$3Vxh+M<{A;&*@SC%TftC5!^${wJ>t z^-Db`Z4AA?5&f(b>AcYpjS;(>_Fm%?NFU-8R7ylX^j`1@$~{!x7c#sX03J=xlceU$ zM|BTj>~J5|>*3E%&!mD6zQ%t~-BH~Uy@?+&$OYIf_W^m#!+taHNYXuj@;qD2o@9%k zSM%9>_o~_K{d-j}@GWF}xi_R~tMG6tHS7?*y#J(=nk_O+b;i-U{ z;AxpyUp;2}+_~;q1E((AzU9isQKbt@de18wR$iLzjPIB${8&>{UbB3TtDCxaVtMI; zmN^S84RvX$vmNL?1t}v?aXtRtgZ`*DASBIG9B2Xhe$rdI@Kx}owL8rgn&|b<;3Nf@ zGdFw1R8@G*kz9NYCb@t+qh&%frfB5zZg$jgu|=p}qc`b_^XAhLYKl zT}4Y2R&0^!fek}qsfD)6EcpX!dNWja_LBNG>#lu+yE>m)cPZ`n=__0z_4}1qu6(SO z)m@1@{>HTq#ufB7LRT)YlV8`B=qhz}uwfge8?T#!7WKf%0R3sYct4$Ei_r*w@C>bu zSY+o&R@!vruCV38;<ScZOa(Fl}mnN%6H)r}ZeIEd!8g`|Bpb=kKlP zr6Div@g>!~D2>}=IsB>$Hv$;{cqSbMt#~kkS2OJBli(yajk%ot$LxCPqnCD#(QYZ< zJ@xc|3<;Ub+YYxa&rFcU-}ZWWanth5L^a{H+YO1C%bSY1wKFZL{}qV>We(z=>nNa`eAK^R63U33a;`N@~O&8>?BG~Q0&xM1<%$NEn`96kVC z%($yL+!gXUKdMRUn_XZ{M0q8C^+8$c#qYP;DgbhYjlZcr=q~{SEpR0#*bm&UdLYQuTCD7U}#W$KZ|;I6T^RjH(1HV+q0Uq+^B+;L$o93}msz+lqA(x3c%2X?x_3HZ?GQ zeek=lr0dwHypT!3AJq-PZv)?mbOH9hVKZtgqy(1m%rl0~zbw`ARPD%fv&hpyS$g1h z*;>lpU%%_+wl{XR88&|vxLqBq+SQq?o_))4nA2ATOCn%-I0Q?n1^!Ko<8AR)2mfXL zcs0;=$0Kb7ijBv!RXj!w2H#NA0&~B@n#?c30Mcy+B@@T87D^8bSWMd}PryQ9RKH>e zGL<}(DgWh}ww-UZy}WBZ0rP6`eKlTvl-adV>W^{ZB)`B!6}B#zYcxIMAOJ~@)x!u{Abm}+kye(!DoKK>M-K)p9Ku7 z!Z_wX1IMd=xl~IpaJ)*uhgGUlH$sC`*oTO)7x3}u;8*g~fImjSPp%|U2MD0*y|x*T7v=p9PkfmlXk1%*b|!MXTx_!hQBNk!XT^) zSg?2A%tsbAsO?o%Od7K2k(oLC>5QsfYHjdK9?gzU?klrL>!-5^0Ku2)z&(`&i)sff z8w4!m)l-0iohMfQT(7#BXrgb9tzK-{@Y^+e$IQBa-;PfVGqn0g2Y&)QWW`QxPz=Z) z3I1f-L-p5Lf?siHz_dKkzr%a7tUL;Ns$VeMBP$o9dTXyAi#)IT$8TG;JfngE`KeGH z!OlgkTuwKHT-l%(HHJ&iw<~i{$01Crs#4nePzN?DhQSE?7tE2E!8s754qaInj`WUtzBm&>4_5TdbTZE?kBNhL zu$MfJ#nUMxd?wYIG!;6G?Z7<23^Wg zS+6%qdS>K@b`k@dWwQi!G?I>5a9EzM#&5s#KTd3h9p)I)ET=es6_{m-f?v{+< zFsN)^V0}V?Qbc*0-^`HYCZxARtR(OsmWyu*0YM)CLTSQqXlY2y4*f}yX#{Wtpa4>e zfH9N~E6BhDeQ|y|eE?{5;3w%RemFQ(nnlkjF9QCK^1vH}vX1HkkKW?@JBj79|L(vi zrG+hp6h6u#bay=V-~$gHe(>>d4MiPgQOC~(uEXg7W#pedoUThPwdT;t=hPMD5|xH) z8&Tu7Hf1+23cmK6j;_j5_O9v+iYv9bd`{g(KB1cb4h9Glf0&)15kXrWyp<>LSA%Z_ zcPsh>?RN+oBe(^PX>m|SN1O@jUF~$xji9Hl`LGwHRIvAmdRn<1u4fL5XXk-SSZd9p*RAbP#l>xYv;019LX4&4|_q)l2Xpi2XP|u>4?*j z5BL%K9{P!Z2Yu85s^mS`cgj0w-abHmjOachoTwJzd-eJ4dEy8!!cAlz=oJp4Q1)Rs z6Agcn`B2XZ#p%ol^=99R{tQ^a2S7V^-n|Vps&qdCrx6ssw<8=mgu+3K^2yVG72)5B zJ|9XCZoxhPAfXII`i^j<4~K^{AUHKzKz$7w_0kMQ)R;)dTm+m5qB%bva*K#ZxFNy` z(GBv0s7JB}VTWQi5rQaBdAz_hay=(5^*f5oUT6ZsHA({_Gypo|3OKb~HH=cs4nRBO zb(Sw6?JQr`T2het@4|ri5im@UPlhVjnRgfl5tAyW!4Qt8(Q_E5;IgQhp!)9MeIR?K zJF)CA-FL)8Zjtdovhqp6+cnw`eU4X5xqSRJ-ajSE;#LgA&dkOPw=BK zte_OaseD=^sskZ9rLqN23d2hCYz_Ob@E#&A@*G34!+HLo(JJsNFrc-R#xv1aV+3J$ z#*Kh8qI~4pCEkr%e?pEZop36jCK^G0e+s9@uQYm+{|lU2OKCj$&*6+HKLXAW4?}%4 z-UB%VBtoo^_z&?yO$N~Dj&ziwe}-ZO-y*R@K8c89G+GYvJK#N(AB1i#$6&F@le$OO zxKy^5ui$*dW+_jK7|K)Q)gc(E*J~UOtTqJXd1WI%iq{cS^+W>NwN9eF5xX>$Yv7-e zfOf_W!AUuX%Z~swL>s^p&7p|rAzv}F9Baccrs1^x4$<*LcqJMQ$ERF1&KKelon$J| ztMOlrt~=6bB_L(jG{jp%TqxAP&nxG=G$4r%78mXlk>v<%c5s_86W7rHC$NR+UQ|Cs z`W@W-eAu*>2&EB&nBb{loSjn+&Dl^7@rRb~co9yl0PWteB6hTNXS389Id@V<($)AVFElijesi*TSS^j z;5f-dg3ps)oHz+iwTs|PG&`X6VsC+RVuMqPfn!APOZv>~vPaC(0%FrU3T&^($Sc3C6 zGt^}$f#5$g6h)u{B##5nz@LCcKn~1=Bu@+&b^6QOFV^O)z)NUM3&j<^&cO)RY?~&W zYa^S$ODNwEER-{~4)Q*R*nwSb{8fGO@=ti#B?Kng9*OCycj&qU4LuybYpK z-k}mY<#ExfVZ2Z)p+$plX(VGV61YL5hUh@hVJL-$9q=R#KSTu@J%Vovek*BohBOMW zADZ22SQ6!-)ig{A8VVun%o)lgL`fm~5IEDQFGNdWIaeSKL_y>vUkqV4L?b9OtOXEw z(E5zJOrQ_MugTC_*CAa+sE-l;#O$AN2gxFoR$!e-t1XO29KTKErDY(>6n&(#Ob76S z{!BD4B+L?A1(-OOQIC!t;%%UN)Qh+jNyPLA4nUodXdeZ15Wj#i#4iLcDGhp~fRIun zU0|1hkvb$XkPwU-DntAx+dBm3hBiSiZ-9kMC^`pN|4nn|&X*AUK zVM5j5?#w3=?hYJ>UQW}IFGCqjT`FH5bt?Al(nF- zzz9JlXmIL#;cABa9@;*dat*7Fu~md83~#xMtyDLTYXP-Pxn=!^1MAiV+QM}bdJrKK zbkWBqYLU*s$U*kxb(wqW_>Q-~u~Sh%LacmYuB_*V0DieTPEi zqW0JBTCqX!OHF1b*o0p%ickK$K2tZMgtnG(Fw*!A1yGVT>jZ4Oz;mkwZ9x%N%ofV0 z54Rga+CyY>HXTpN+Qx<*YIJHA;sieket4L#4PJJbdwAC2;N?K- z^!A&SL?yBPCVBdqFEqSB2eJmZ4C_MqPU<=cqPp<@qVApgPTpU+^bCMzd`*X(phIgq zkjLCmLctq>>;9A{@pSM+6n%et6MmBHfViFdRg?!=o+cca-}CQF-kQh8ySgDA-= z%F_}Gy#Vx1q4G$|6Z2;(P?RU;qnea}-bAyaoqTTaI)IDGZeu~@W&-6L4YpR9{lJ-jj zR_xvR?5rZ%0x5}?>9B33y(0`3Ow>-{Fm4Y1(hPo-Sbq&u<@ggkhghWO>?}ftF|g$guI@^#lJI7#Wt_C5+FB2;*zIgs~SR!Z2M3tzU@pSYBjUb(b*R)^HfQ@4j%**|U5uwUKDI z{(LQwg)UmOn^rGPkFA}7n+_XiA3UoS04?YR#K&!+`+xf_-O&~}b@R;rTpHb zMi)dIY@xW))1r>2KYd3q+cjDfb?geW=4+-#c(WgiJxQ~5i?J(dJuIbQYenl%R0j!E zeeRuAfZi#>AKd?M!?(1x?b{deWz|4Xm(TCLX}kI6w#Y9I8-x)rVe5amp8iye7mk1K z{kISQ@515dr=uMb;eW}E)%aZOql6_T&5}H!FHw#*_Towlf*1qN|JwJ_hkbN2{;>`W z%Dd@vyKP`o1?{-!2k7~FxeB(i0&%@wuj!y z_2>(yL|+)BO))gS!RJKq8|sgO--P=Pw}a<3X?;iIgVcZNoyG_0U8s+F>7B)E8cr5& zCQQA$gmt_<=e?E&v5{u%IboE>OF4zZ_}mUY448-ycPWGN61n`&`!HN61M8Cdvxl&T zc@gnFvYUr>?@;+fdnLli-XR=@5e63U!s0M&?~o;Z+H}5$lt0k9Z zBr>|LIK>lBoeF+&s+Eo5iENB|Pw)%%9%ejsiYMUxmzcHDyD!yy2<~wCs5us{Q6Cr( z-~+p|2)IacC%zT3`qzZV$ZO|Lf`~mcWFaZ)*}AB8Uh91P&HJ-_eV|*~(;fLmzMm{w z^ufG&`2T3Z0$jBWrH=y{UB7@i>33mHhQ(=^*A`C&Mc$aShADa$N zhVx{wFZrDB|Lb?;S!l()j?V`RIzAtDyrjB@KOZdW_ykhqXQjRK)Q9J*$L6aK&r^>q zl8pc7KR?!}3ifkd+S!V|vWc)!f|V{&Dsw~*|F?Z1^3 zY~LO@d^Otczrc}AMZ2`(VQ^1I_w@CH*_8s0;2T?5NigbKJ|&PoSh{XVU;+Q}y5Mc> zkuB;Q+qX-@G(cKe@m94T<5PA6+TDQmR{lfq_FDk$o40HaWDpn;G(YRI7>N3?zu4!o;$jd_20Te!e$gB8wpfc(>IuJzyd!a` zh}QWM@v}SM;+ODL_3x~~oC2ujrH!)M;jU& zzo2hpL*uc*Sq&a(SwrTKBMtQppEfo$e2I|H8yXrv#&7=g;MB}d8ydBjgBu$^&KjE5 zz_aQ-sbADL)PIpSG^;+yWNi;B&Mcj|c-VrJX1w4YMJ2Zq`;s?n)+C9ByrC zZkd(`Oma0~BJ=1Nldubx3)&6dM0E=81KD)ajL_TLO#0B~SdD-wrnVhc9Un>ok-3BB zDGl@?Hk0`bCPjCsy&6{vc}Xn`35c6-T?#j!_K+Yk%O zLhQ29b=fU2>al<>G(YVJYCg~A~w(B5Q3hxSC+Q0(jHn?z+P(Y)vHx4 z!<8=yzH()F^K9S@wzIt&; zU(pVjdd1oc$CR23Ag%S}wgy*hiB)5iO9HP4o|k&b+3oMQza{q&c4S6r68KuroR_q3{Qdh`q-9@(Q@U8E~!QlwVrk_3vusMqm znCW9>B?z(`7@Xz!%8Fn*ZAbDF|J#}QS>3DrJ$mQyZ@OpY`eybl?%|)_@iJ)Zo|T_D zGp~0K|HG9lD$^QvH}KY&n2RhHH9Pb>xI_FtQ{YWYoR^VZ*t~H1rz`71B{uAK z78{&VSBs0$UMRm6TV7nW-x*InFP<#q7bt>aQsb;%e5{vDo5q@wlaugCe%j}Y#mD#1 z><1%=M*2(OJ+sLfC+&`NnwG3mZ(Jog0{J-N>}|MVoD=6Vnk1OTr?r{xOm|%!E}4f`RpGOGHC@%K|D-eUse65PyN@pF zS(en_PA~B4{FQ~16F=+hh zWDE2lJ;|1=X8)SC2k%|8_JDdXmZ#6G+kfwx)d%(mmg_4|lQ=nP|CBu9I+0%Yt_ z4wVlbbdok~sjtfofdZ{7LuUdNa@bLsptx<6AJqZ6pHP0q77c2sub5jKK)v>)FkL0J z-yprI(J*O<)HWLV*p&9K@r<4L1GW)ffPZcm?Syq)Mvdg6rpIg*43e#0`4i}U%Kgo& ziQvzVPu>7L)P1xTTm94O71UxlHiCBXhuRkKB5$RX=oJv_S@{Y?MC*=Pt&t*{_nf%o zaG;p_xpY0b6j=S!%GID4xZ*??L0p|4_#qj>3K=BSX*Dsw&E@Z~g?BLw6u)HqB$#c>P zrw>Bt?UEn-06+$nmm>+s9_}}#t7JE5ANr$6+Bb-^OyTAY&cfKL&C_RGxpn%CEfojW zuDSQ%+BN(6nVFlnPM@}A^Yk_Q53F8u@BVY;KH+HqbP35Cj!sCfj+juLBO`X`)hH?? z`G}ZZ=OB8T4++Ee6+-nE8M8A_JRu&YUnu^3Ro!{ArhpVPNQ%yHVMnp|;_r0T03l6Q zhmx-|ZP<52B$hB!W1kK!FCRLrynKlIdgr8#%_|==q})Gr2%Iv8r*9GX5;A)>QUh1V z&Y$Rk9wO@|=7jK;aEKi}cS<0Q+}!Pz3bs2+tGchvgR=JQAEE!-$i}-3r7+lET2f ze4Q*q>+Qcyn)tpGN285$y(gH!&yyxbN;=Z%n6h=>wSKz}JQQwk%3^{ab}2LI{4(K( zC*%(Zhm2FvaKRJi)1gVryor-EUqJ6Wd0OyO*LxEuMHcFdDbpMPiIU4=*nR)4OwH2| zIl`nNjig`qIb|OGY2qZF?)-o%$$Ctj^u9|S8Cj-q@>3SW-QS_AfhDN*w;+xGrCh=+ zcz_-gi{HWTQNdf^cLhJ0G?BmO{NNn)l53#>1J-@ZJuzkK)!(fvi&2MBx##vT!8=w+ znqJ{GOo0z-`haudVX_Xwh1WtcN0#NlOHx@YapH60`Q4FviY(;Ytm(@*w39LNVmTQ# zhcpxBgKtTBfs?Ir?0Vd1$g%A|5R5D$uF$Pbm1AQFZxXsSH{TwF zm)6!-ao0($f$bun&bT6<`=r*EP}n(eBOg>TT)zmoP4J9x8~nZY1k}-x>N2sry9hhG z`|1V(&|;U>;PF`%m%{*ssKJ91*p#AlMy3~`L!lHm!rVR_>ZRQc#W4@o56oJvD|_FO8Ec1S(A9r z=cJ5$>A9ZL1X=x$0zHbrSrO*%H?ud%BLqBVrn9nQ+RF{MsC51mNV0!H9i>idZCXZbcT0_aenMJp8s~-< zzmg1l017S}1gsfp!2q+#O zbnafCCo_(D#3`wzd}=OEO)h^vompZNa?|Gz(9Ye$Sf>@Ww1uJ0`+nFi}ePtuh@w# z?`2RO=;4c7+@;W+w!CW+IJ&n}JJ*Xm%Yvus;avr&hf+ar0HcG+Xhs$tF@~(5SOD_9 zMRC|YUR>k=b|~Bf6uF$9%o=Pi_hgo$ZRkw0;vxxAi~q;Clx^3zf0S)uIXsu(eY{-q zWpVz}nqTib_}iM9TWbpXuAMkxOTQleosOhkm-pl&8|?{;$8J|osq@r-?wGLLVQXyU zt=W2(!t~j)9Bb&FXNcBwkIZ6YnUcko7-MdpF;-fXrLY(ar#LZ&Zn;Lp!JD`kCVRLN zYs~9rjFW>Y4vCpeOm=c^l9Lh?qr{vty^$PDGRlcbvZ=-pAOXeDUT)JGzt5*!QdEOr1W2U`(Hl){4cjJZAgl94*zn1dP#ao zOiW3-WHCv0n`DaRX+?2y*tQ>Qlx=p|XkmrvC9$y-!5}$ovWO5HOA$=6%^~Y8td}*_ zY)-XGW|_yBc`UQ084PJwW-xGb3_SF$6bm=#;ns*NMjn@BG$zGyqr#)0v^4}9 zd3KI3?<1a_o0ErH;3_Y(rWuWCR&F$~sA#T$_otXlDOP5ZrRXTGH>y3uKp6owfRa*+ z092|(K-p!31?&sFAXQf=Kd7`~TySGlsKq+mOx<$bM%^CW-MUBM8TSL-H#(JgfdR*a z!=E&|FZw1gbK!*x2T3?j+cfsnYqyNbZA6%>cPK@*NFm&djB>}(w z!&3er(?3h{-yzjvumx55aoLsu6Rh4;Pmgp{x@!tq378S@thQ8GcTnmhNvVnqHssFqCMM9+d|RJHZ${vqcgjCXXpE?B63%` zv$LpIBJz1xizM=YI^sQhZs295J#1r?%)H9l@!iZ5xoPs`S=Q*7^1j&<7G_oTXR$6* zwCsvi+-AuYr~k@nidLMl`b?ATjMIPaGDRuQI7R#QHGYYhCMh9SAAFVqDPa`H&*K!B z5UXS&n^--&%xQ|!I}wO{EXt#ysF@}z<9LF|M=zop0z(iL`B0I#?xSBQ+Cx#511^(U zNr(Y(RK|6pj2I-OUm#1!F>&&Baxv)^Z0=;{R&3ddtv9>p@+)vW`<+*)x2tzv&iAov z)%oq}f-`5>HIVmu>+DF=3u$1%+nLHQW#bTOcNBAxT4H;$=Y!F8waU9AGn0eQs>y#-t1=gGXIy@AG5g1vKz*Ik z(wp*^U^i!w?~pIS+%Az$MrC%LCsS8i5}#FEB*!au%wbAP@>vG>uFx)&mQ*uvOZj&7 z(6`^HhxRhtj-AYYefyJGCcKyBZ~09P{I-Q(Gpe%pXkYz+dLOU*7Uz`?{q|aBzvdeC zo82eXw^)ypn|`_CieENWjvQI(tI;cjr^^c96$j1Ki8ym|GjqlrM{P;e7$K&48f_p=py{UCc zTicS>rUAy88*cjOqnkF&kcKp!YHK^y6c@Ah=66X;`R)w@pYdl^`AKEIs7GJmQ|Kmz zZ~g4>BUF}QGz)16GKCP6P)#8uL6-6gRfUk9+-M++O z-vhq9`|?=p=pXj)|6%k6D(mEdDalK-N-EPPw^6s3sM65z^>4k^IF1PpQ^_hfR=Bg&#f zmBdrLcndVKJ`MBc?VdN654&#e+{T8v!Cw<@Xmcl*ql{fF@y&xq<3T-p6fZA{f=PKSEH}@}kIOGW)0V3%#awBK zZk%q0?gHIv-3HxNx|=XMJ_Lx1Wr(hNjDP+zpBv*LhDaZ1kij1VgkT4BB=}VYhci-y zraIh{sNH>`UPaH=h-dD^!WHNMG;ZsBbi%1~EQ3oUcwUmz7*0&3=d!Faw22l!yYsP( zRWmqd(jwU+p7|_=Rc_pFuQ-|SsOlCx+`ZaSaI(U_eIt9cVg1U$C9Bpoj$bpjdG+e% z=GAOaeNPggD>!5JMDEz3?; z;flg7DjHYyMVC{S%+b+K%gV8~KIU^&7Wd zVO;9$GefVR(Z{*ec*WL@Yt_fA*H#q_{YqWLuKsFhLDkx7wa@0Kp4z8CdiS+HQp z(E0O^#HXah+fq`3|FS11+ws8uo$if_*2h`1qodS8mh2d_VvWnjTndvkcUC+WmgD2& z+oCh$-QlVOaS@48hTDN807qcE0zTgEL$<~SawZz=?nE)28aY@ zF-g&^?25|`S#>X#;(ct7Qn&kH&m3j_ooAC$&)&ICpVRZcjEvImQc}sXlAMwgG6@C1@P?+kiS-4mV1f7ApKy6#%t%}|qZ;jV0nd*}uQcG4;lwyg?Vq2pO zvG{>kaoJz>Uf-kpfOpj^*|K*Bbnmgg_aiaQjd2@{2W}m)B$lz*B_nP zw`8R+O51gD%UnBS_PH$=?@C*gp4H+Oe0{M_mZ!-^=z_>{!wv0^+h--M@G|LNP>Q+a z25G!(Pyz;7mQD}o^qV~WY*1c=vvDXL^eT}l4WMOAT|9aZlpdv!`-?#^{<1kTQu}UgJ9IX(b#UNPY29KuKSzD>pLy;ha>;~c zBi3Cun#LgsdI?2tl-?8NCUq?ra~_yuISepg^!Q9{i}W}uP%96Tii6{EvSD;J4zG-^ z#OYD$&r&6eR)3P-l>?0qS{L(MW)1kFuHK}=W5ykMZwteb3*$CI0y3F^~aeNvjh>eR=S+ThnF)@~Uegnh6y zj=O^Yo`4NL4g`oVH@G$yHPN?kNPFT^Ex~)#=NAjp; zN^WvYqt{^>rRw$dY>K3h8R9bVrq_OBNm8VYsGS)&wGV!9h;UY;Wx^7#&bW6u!|S^YQxhdezxYaJU{KGHHg zIj#Guf!VBAU0Fs1}00lum<7* z3@ys#Ta~}k91pqRh(@1H=jRL9_x(6;zgDhepIel_BJq?tx7BrB>8$4xF_$OK)6rfErTztgs<+UlPwf$9E%*b6AjRpRSite+c9!`*#$&>m!QnQ>NR+_gP8tc5Qrusy4$%q$XICB>mC66s* zkhz9kZjm=)g3R)X$e!^If4fWU;8jD(IMW%q@S9> zn(lVF$+syUyD?X>cnR`=>*CN`&)i-G87$T9iqZ3VcCWL*9efz)7hB_OuEOFIY_rYh zOt59mmU3fbZH|05i2D%j+NFy)MNjGeW)zIieh42InO7hGK zU$Xj1H(T(6+FHKYtbSZut2=9Wu(o!)rKq;n)xcOorM$I~vBrn_Ssndk*-~)VV8#aX zYm&-XVP;VkE8>@=<>vFM%Brf$K2^P|t11#0jtPlkqers1(W6-O=uzdYI4d}u`u~;C zUDRU^>DJX@y-cA^y(Ks>9ROQ>))H|8%gsz>KDs#oGYHoOTBRFiPFNl#dp*pf@Py{b zw%sE+vPydM!Gjtb2M%i(*w`>AmCc!rfg6|jxwBau9_n~?kHBHJba2lMHm%Gl`9_Wm z@)$OK#0d3-=^rCU9*nOUIWlDeV-p(W19Uqju?o7YyJa4n$k@cd+wQ*Vmb~f)PILOm zwm?0gg()oopD)&K^vmP+(GAUmM$$W2p<7TA(UB`eM05kygosDKfT!2i7Fo8});?&^ zovp1^KQ{BlwY9+uY~9pPl6|mNy{D=ulNFXF@oT67g1aP^O-+L1tRJQ(+A3G#Co8I` zs_tFYhgzeG=jWycXY>2Aidp%n(a~(w=r}fVG@54AC~Awdr_mP2HG0B+C$yy>bVD~B zT~<_zLojed>!6Li9>tdpn!&;?_F!XS+<+&z=_El9vlZ=j&!C3Jfeph3HZ~3#%zKw) z1^%5T4ee3Q>t@eEGt8bF&+rgS7yiJ=kyZACBS(H{QlA?+l1+;VvXLVtpR0^bbr%lK zZK%#uxAe;hyiJY31G2h@8iDoZr|7<49!xhK=2X$ptvo9~iQPsQV>Y!@ceCywX5o+N zUe&#YS=C3nPj#Q`zS4cG`$6}M?u<@_V@)edWp0+ua-p8;$x6|a(7j1bjnUjtTvm#u zz#<1;U^Pw;XU`xtyMd1XD!`jetZt#-XO_|+AhwERf=+4m5bIj-8I8ptKNLCGrh=ym z9B~Y$OB1M6unIroAqxKS6F#9K+R=(&1{@J%yzzl)gRzKF$5sqmt1@KarCF3C8)7uU z;VMOfQZFsbQtwBG1H)+>-ZghG>;22Ils>!zQw{d zB)x--h_K>P1tCs{QwTlYQaz3m2Gq#G>oLH6wMgz0(c!%u+0mC@_^-v?hbT6ARc5lj zu*_aq_jtkK(m}n8WMApd-j{7CYx8DC<@K)XeeV||OY~(@T4GlIOq*$V(u+gY?@ASy z(QJ-2C&pb^GNf+mwTbp5v&-g^%kG&rI#pGh;#gugbN7K2$!y9Ea>}5hV*ZePGJa@6 zsXoq;^LQ{O#+>6BRCsjAUK@MM>`R?gnx6fN=P$RrmBeI6@8)h-ne>@XL!3=9u)HYA zW{y|Cj{V5~PumR+UKTHnO^CCtwT-p)PEao#tCT3_xYFfGvD^8mn0vhzQ-Pc?P%V~R zHrp86jrM3;oLzq6#^$F-Mqy;^JjERv1RL<-EqUsv03RwQ>HXDH8t4>w3KCg z%;w>7EA>61oMkO7#maz&mirzZ=2DMOncTOfM{Zo!GXExXV`7giyV=oLmRhxEeO#v1 zl#;W}UOU*ce?;bq!nW&EJVzEg*!Ep8|-Zs;?hEGi4DU^zx_bdK!v z>Agx%ULg0trzls>iOT7r|DZ5TTD%+;K+PaQ6feXc zy@QMdGi>N)Fsy{5exHrj+5I*g_JICRofgl~9lJ@Yw>cH9GSs=XN|fVZZ>e+n< zlGK;~*2LnkW5+gb{OQTr|GerU=6GTt^b$WgH@DvH%h%^--@EjyA?ls~inZLM@R%W7 zy@Mqtd+wQ~-cZ}a?ssSF`{r9KGUVgxTiXw+|9R~q)_eO-7qk6!{?>-?cI<fj7s&a{B(-H_h9-TT*RWx?GVD zqdz_7-Uiqk6o|EpR7luOy1Bp$bV3*>!JQ>9v1lj(^$KP&dIQvhPQlCI?Ou~}N#g^y z1iODoHaNWAN%kDzQaGA`b_Mu^s3_Je%CKaOY@unwI-edJ0t{X~|De#XBqf<9RYog4 zS9Ev9^*dA=uO8}C#G?j}F{bhTLzcTe7xrb{M)#|0ZkhFPUPX_dg}M3pwcT$zy0o8X zAa5AG)pTvsr4xH9MVC|-CI{Y>#th$#325|*wb{Obn^>8#$EdZFE@oM&^ZjOd#C1u@ zY-6&LZm|~`e6HvGvs}pu?wk6`>Vyg29KzwSUO!y(!>kOGfryKNeqs#52{gYev0iL2M$EW$mNw3OS$O+bGNZ| zqo(@?J{HX{?Q<1W=(jef#Ij*is%#k_m=n@5g_A4ta?3FiXYkmB`E}}9nJ+JBx(P1u zuU6#wJqAa!hC20rF3%Y-^`#gSuVeC-DZBZsjIs1mk~o*Kj#R{ zDY(ty@cOcyj(AC8Y`By48#>~bCDQ8|&iENc=JZ&Ht1d=b+AGasj1OAU%WE^FmV``W zU` z>Y+6lFu*|;73%&R7?D{;*;d%9Oxrlt38 z@vXD=UEXJ%p?>4=OU?auOr7s4SvUEfC-jF0diIRc7bP<%W9BToEz54tve~oDkTC7Z zMfy>Dpz(tYIR*V>iSiES^I4#NF9^!%3R5cB2<@;jz}gA=k5a40Yrv)(ev;3d#|$$T z-8aX~4;_-^i+1eWv%77_SUQ2>=G}Yt$sZo#{LuC#<6CDQ`;qe>kGD)$fAupp`k{jd zA7Vej0NpelWlOr1ko}sK_wbYfy&29u!tP)aZ5$p)F%B8Af^>1bl&=)3Ozfujl;W^V z@jxD#Sm322_pDoI#`!V!rEg_r@vK?5HnaPJUv9ne z3iVs|*oGS}WlQdFzBTYVdvw6`>6%VsD){dOdJY_9017LuQo-)sN>eOx+_oQXfjmBk zr_?|$g80JyQ|8Q>f+ew{yAK|`d;bFus)yK=2Tp8y^8q$TJ@SyUMy*)>?()E6(o07V z9X=8`uI^ITo;-Q#6x+gPq25gQ3dUeXc~zYC1p6_vx$`)LC7!UlgI%5<)y1{Alt&-Y z->28#$I1)_^(Flgz50q?&q@v|%0cB-Wv~7k{RR3xN?-#tpsSQU_;HPXuPDQhwZ6Ub z46Fs~7-j7N>Y(zZ0$}G$MN%>342?_$5dwT8h@D`AWO)TUpbS&+uZ~)QRi2}=e6c!G z86(SM6n5{$vOGf>2X4I*7Jo+-WjRh^YLfBK?pY3Vy+MkylHDec18uRPRX$(2k|7s5C68xB^1>369C+_x z)@|Qi{Ju|8KX|Y-UUtjLO-(L2Q!1HIwPWX-k0#1D9#g-3p7ZVTTQZgM;kQ5Y_(4|r z_}EeJ-O)?pi7nUM?>%r$KSf`={RYl*o+JE8y4jd-&Qn@oPei_LXxipGuC!3kn&~k9*Ec2()%GT?n*|3G_AC0Rl zT#G&E$yjqaBDZ0sCm!^l1f7A-7P6_Jg@3=@#U#DX=5!^qGHf#k+I2o_G8^~P&upA} z=g&W>cdnSsn)qJzn@wA<;|;fLP~T+}#;IT5!H56M#;bQA#@%e}PY+JU$?DT2^_$@L zSIX=&HBo;F(w}O6`UJB{>McY^GFIXh=)oQVBx$-Foa6+~4@swp$^<9|agtW#g1S=T z%>*qti^{S?rYvL(f@6C2En9wz`oO8L)aNa>9V?dJ%$D>_&nzs=%qR@LTF|cm|B^>- zJ97q7##Gn|P2qDLtvB4U=3_Qceg4droj0s^7ZkWD0e#&Cg&AkmTi9g8oTl!BwMVk< zF8K(2b;UwQTc;ZgxqJ-#SxnQ-(JcbZpj(aRLG921c>S2jL%@R^R$2z5U>8I^(&#!# zqe~JXc!(aNm=9tgq&KWV;Eg8O0poZEr@(s*!AOPeyvPR!`{J4{-mtH{S#z?pva^dz zvb<`~Zrz$4Bl|`T?K5RhRn_+S)lD(ABb?268#k^trm1@V_NuCF3u+o;YKA-5)}$2E z;zrgj!?k1RBK5SvdUHiQZ?Y*T<7$Edi}7u11y9k(xAlopUrtIjFB+o02wc1uVyPH$BACuGDdtbHOic|+5b`LV{oB~)Hwh`X*bf#^a3 zP2L8laV6+OL>Gma34umQ$uD>ev1Tvml)8^bDmbwQ!byC#Y=e9r60XDM%p#W1Et4&DC`VTUO;SF)sH zC)!+04E_h$-@F5`V|_CiS3H~z{ojGV$n=W(U963nUt+%Vpr=0BiF>jh#~Q`Cn9uga zD_J(59*32Oq(l&=kQTe3nw32dE!(6YQzDTdkp0Cy@GZrcGocUeQ`;Gdz z)5-?%-=fUyHIwoq&N6~w#xw`Ntmi=Lk%B7`w?XJSoh-v z!P}oLly3B}BX^6})b*8Os zYNB_pp=WD4R8;D>kc{G274qkMKKvYQfY^==5JPR36%D*{xZ|W!t%U#I#|DU^=cLR6 z+5j;zl#absKBZ^oxR{bzMJq{W$B86zsq!3Vxg_0Xz@kd%Pau|HB8lUiy`;BsIp{cN zCa&YKpq-RDwKW_jfH5Ost%-8Ps<II(+v&iPyYUx?_4ZG^g z1Zm{%pC?Q*smIj-iP?bZ@v~E8yRsj1e_AorBo%OBzr*12K;kIY1UR4vf*cuikt9NP z4&oUQ3hix}G@!echIupBu9>y*l{eU`C!ge7XRlqG>BXxJqlYibS~z_4hP9bzvK9>= zJ!Z`66=TMX9xhiVX0CqV(1nv?pM^5&$)_ef8#DRBLl3OZOmunH95R|$jUJ}g4;#J8 zY&^8aGfqEj)aq5ko0^8NT0M$3MRDC#XK#@EDAgE$&>uU*@%GO1@IE%0r8>Y;4;ySgC#a zt>ahY4C(PL>();gXS7^)ggt!eCH%5W4<8=OlGKkDvP&;ezZh!JOP=w>yHz-p9pCbc z+H~>7mmHOjTy}{;Kb%?kLiOScm`DB3sKbYdju^aeeUBtUMB50vxd#a zhA;*_RG#cX{+N+t-;mJm<6wYL*61c4R8(w;$K(Re3*%?Z*m2igb9dgkWXa__YWrP1 zclMw`JLC&@+;h(kb=T}wD-Vr+rwl^kCgkGl;dAmcGWtx&aA#y#igK!}YsQaVSM4kQrhWbT z_HWjFb7t+@GvBb6-5EU!`ebAj^vG~eiu2VpkE^L!H?FxRCzkbB_pIe3*3y}f^j#Y~ zxR%Y)aNG#^t^j=4ya(em>YWgkz{qf(C+228QVIY}%wM(NM)n!Y@U(XM@-;Iy?PTeD_pWJ;pSk)_{e?@{ zty_9wJzq1XuZ1@(YhAy-by@I;r4N}(YGH%qdsok}wXPvpx$f_}Jn0PDD;|19tQ}^A zI)K}%?WQBsD`L7tCjWp-nbgT?-;@`rkMl7`V=&janH8_Di!)yD8KN9~cHsE-v6kTL zhSf%+vUIgtvnsLShH?vNA_4RFhZVOj1Ku_)WG@Tz6`b-*d(j{h#tYp9OdBY~$}3)7 zH6eG%)P5JvVNsJ6SyCpmsJYAfO&yXmapkL=$MDXHToGD$Trc4TrOR!|7KxJDpo7;(lWl*oL}l70I= zx%sBn8NK@rUbAh|#WO7N9`^;G-qQBzl8mf)%k;}8ZrkDSTfrZ>=li?w{{EiTa#7he z+ndko#>K@XWUe}J;D;X$99Wf^7#%l`>6*7+QwF&na(6W5Dz6F6E%p6UIfD)x$BMBd zD?=%T#ZMVF+4@-irmZZA&tt9~8#nGy{}tS=e!g|nn#b{x6XWw%3>vh`XA9hA^R5{@ zctv-s$>EUtI~kWor(vS#wzJ&b&Dn4ommUym8C%T*cKsthr@-@4YvzR;#|NE?LDYR&%%9Z6sIR zZHyc4*nkV*PH(1zDaM8Xi6O)gNN7nY0Rn_h=me5r@Adc0UCD(&^1koy|9RJ|JGac8 zIdkUBnNuxBv9U0q1}&z+f5dSzWJ73RnnNc*ms^Y)rO%+5sR(J>RAF~)XlN*RIDY@s zb^DH;VlSv0Te)!h*o#hHzI5THT#HW=$e%Iex49-;{>-Hd&BIB3$;Kf=DjkmXLmHVm z+wXt!>Vrbdb@SM+y4iE4A0oHjb-@)|7niL~jXl=VAB&BhU076B+LxPOM}Cc_qU{C3 zr?3@S3mbImRSC(OxXW`x%KETmD!R!E&Z7qAmcLk zb8GicpK$%U+pn53;r^F|r@w36?Ool)_nI4TWp;c+$gKx5mCTdhLr8q@Etyuf;mRv( zE^fIzGgTP*E5h!c&s|6RFgoWUZZ-EQBq2dM?;(UldXxcF0sX;=vLN6Kz|-w2sMTmL zdg67mO;~!e@aU#Z4;K;|c}uOTS#i&b8l{?4ZYGm19>3(K_uji{$@q&eR%+Yl%-yqR z?woe55-=k<#iwR)*K^0|4mpfr#KK?&3q`jqVT0Ps_Tvg3%-O5yN z$@lOY#vkd8_nB?Z3)Sb%n9^<2u1vTv@|_{~LFov;!kpGTCI z**^(Wn7+lw7H9VKFmr{;jFB6*YBb6Gl05wqevW6RjAd?I1-P0aCwvS!ooW1J;D&+n zHQ8B4I|+$k$_Ro35-2TYqGiRD00J2-V1pvj08>1!(KP=0zBS91t?diVTy*J0ePeP< z3*DRe^-IscaFah04)hUw$J|X)e&ZVM`AjAI(AA@tZ=1LAes&sRNvWFIDlEB^d6Den zyN~?!VC%3|CtqED(|Rr1)l2HR3)y=?gNIhdRab1ngD{H$Ak(IU4m_GO|7x`#}SApx@y2vVz zyH~s%jTyt@6ZAUSdd$_|UtHYZZ+|EB+w)VYxqZbYeZOrcJ;z*qeI+G*eK`N@`DvUl zDeZq2J~$+2GWH5fAj5E>0Iy9c@D}-Gi50nk4aRg13(F$|i6V#Z%YSfvdj(P3gbZQr z!r!m>*7Zl{-!B*bZiAvn$T*1VioZLV4pw+g_z1~+iEbY(LP}ZTW8pOtBQ{p}o$&QO z;VXnPC9wCTbDoEl6VL77)?q*I1DzcOUyB@wIzWe@(xP+;%3Es6L@g?55_NH%A(%u2 zvAnWcDu5A`7(`2C2(qdHO3&O7qh;;6@Q_|qlobzFqajQQAj+Cq7G=ZZfBY@Ykcmq5u^6?)Kt1`3iZg5JtIe|6gF2?b}ObE$j2WGZ;-G;pSyR&$bG|YjI&5B zVRKUr4XIq1d=@#8Tw&kH5qop>3gHcQp~+{$*8s-^s)E5PGzJ^+Rj{LLh1Kf_NS9W_ z4(4FaqrkaH6skJ0rxK}=h3NEj$%%FGoDx;)4cy5ZL6indK^lmFFN3(>%>cAkF~xTl z;B*u`c&NmfJu8laCJW6H__$$))sn%Jbht8*FP$t}4SeA&d& zSe?d_Yqi9zOz?7l39-h^D6%E)9U*J3*_vySHMIQ3Z;e^-RSa8|na9k$RQPlo(&-$o zx}WDYI-OIiap-kUjYRUrtetRW)@q#^trNdm#2jiH2aScst-*DTQ>Rl)B*GURA&p9{ z(>b&nmsYD$s^05aE0b%STAf3KlUg;)vMQ$45;dEnmLi?7nsKy%$HX`2$UMa?v4-Kq zV~SdGjhV}sbjX*zHbj;Aj9lvUWglx5t`kO)yWhIIB6(x@qKgRUBfH=o?ZgZ4VjW&4 zET%~y7@5;en~I;zuT2Q5fjt^lo%X=a5O5%swAk&d?g@UGyA7 zFqakrN2bA-&JC$Z6n-ew<`VM(>M}T*KvRa~USOG_(18*M%(EF0fuWL2;|Dx5u0>%D zhEN%wf3x?q{+^!xliL2_(17-TyoYHzxsZ9cHB;MK&pa@MAjhkF>((6?Z4`1gtl7D9 z&1Q0P(?vVBp17v4ke#=9)TqUor~4N!?9V4}F@hhw)L%~hll_+a4R#fcIm1D1z^{p1 zhRD3rnJZ5C)96UKbc!BeQIK!7~Wht6vbvsl6n z!TRVybdC}_%Sj5GElPp`qfnFrASwl)4NjZdbXcVjn1FGhCM;#F)g%oDY6zCTs05l6 zsReLLODQ}poD~*33@HY;Azoyp%6QuvAK4K;`8Ne=k+vnn>tw-2j&>+W^a}5lq9 z50>jCEYDZUtp5AlwZS4&VMyO*8r9{RZynQ+fCsFcdD;vAE7qs43kS6vYwDUdXSVRK zj5EJr!}q0=nWY+oJu>9eyL!)aIA@xtzgrS^M{O$MQCFVIZiq3lF7KFfXZP@@epPF% ztd=cfx3BnNW;{-qYY>cDF}HeLEu0QH$gU(@88-|2P&ef1696ZX1P#y`NqV3(NKEK* zAO*Beo=|w@(`r>-LE-59 zM8a)m?qp$62jV_Qpuj)9c#u0CQY;XDLj1wH>;h32^w(j5Fk5W3A-ZsQ z3gi-p$B+t&9xSrS#1c``vG+Wpl+{e_8V+o@A54QNwQ$W7xj9T%~R9Zv@)QQX>HzSy4*H< zZ91tcu(GMK#$!|K>c7}fK!s5`>mU~#&Ue!tHrU4f?ihcdp%(Afv-q*oE9o#DGLdGGy#p$+~^x(!DZpRD3nf6BJa zySqBF_cl_ql@W1KgZKTK?}Yq~a#&Qj3sD{w@=_xXByY*GHyAB2!z8P@4+fw?3JwT` zNzH>(t-NB=6LNEe(&|MJ{H^Yoo8ODtNs`##fEJX6HB$-}%=DQ>Ack zeS_jpj|)|4X4aK^@0k%6UQ{1`R0uM)n^${xOtcD@d(HKCKYV2c#WUyx(7t-WLxvR; zo>S%=X#`D@b4Vffs?g|A3G*w-pM=TeAh}hzo$t*8RHMc(5)w1UHnjH#Ix6qGCiA$%ZApo&9b_^_AfXA=YS{;lN&$C?yYrmB2GgX-WIE$t_pvo_~qZUov6f7GnZTrXiJC>K*W76Fbo@MAFEQwMBz@Oo`l zHTU0!8j@EGGi&k^a|D3aQj-T!od{{1cmOmgpc{8;UraR#I5ffsqbyR!%)51rd9uM? z9Qa*_`W{#H@lj0U-4rvPyLPnsxpdrDY#(mDzv}p9igDAV&lF1*7T4c1S#6Mbn%Xy9 zI#lsuf}b{Sj>CK)-@m`myH`ht1a!1d*5l$EgyC)9=ZwrCEX+-~h=hZ`uK zaiDWj?q<+C4fxRnR(|ZNU=|DE1lS^cQsHxp{JBM==tzbLA0nwlWHkx+S09*JJWDQ8 zUO)~?l-A8r6?ZA&mCKpic%^kyOvPSGY|7>2R$hT?YWC95)~ojlUka}aU+%qXD?7Jl z=+^Iu`ui-S#mBmit-4|VzkYW`-J+}RZ69)d|Hd`X-*G`| z;zgGW7shsWckS%y+1b^-Gv+U^+q$~BdG*%1az8pm7U%fcDg2#c{2FM@G5nNZijne= zkIdX8c_iQejDvgHI|)V*cS=tTy(*7g<6dRus<|B$=WfdJa|L)F+74*l2NZrF4Rpw( z@Fs$B7fiW|t$HRkLT11Dy(OHh;?=R%KbC#)jAg<|{!U4_q^e=#B@;Xa-3^UV`$@y) z@#|KbtGUZj_ncExxS9Mx?2&Q^kG6@M9*xW0;3FQ3^(1 z0!d05qzsY~XnAStQ9mpo%ecqcSB`0q^$uY(wbG~AKR!94wT*d_?`BVYd!K&GB2^KH z=pXKKUolf%$}xAYTPM~}nsUPIcIbm>Bt{A$J^X(xR)&uv(OU@8>;P%Y^Dy?dx!l-STK^|H=NW7_fIC?n`N}Ur11)t59DoYlmso z!#Dt9vo!so)}OriD+L(zL1|f9v<3|$%5PZDe4pSKvh2boWHF!Mgs=E0zj7sW;Y$1^ zI?9LB_r6=fY?hV_HV%IG353}sJc2(36&Fh?NPpSJTB2pyf378!nMZ_cHWDZ# z3G9vq*d4pz)eW5|taz~HrT7F&QUc07cmzsLB?WE>sj^2{cc~R79)L|U+8>Mrs3jeq zW#YT9Zz(d%$BZGa;w#M^3$@=CltMA&+LYq5)7auv5;512}FlBd2xoEt5U)QBnI zL`)~x5+nXBHtA*X+M-eq(N4x%!Uk~?-s2_U_^{ze>Lcn^KtWAaY*IHam;`~RC(&Ewn%VNTPq$hS6u(<$s$~SRc=wA?YG6e}wC!~|h;RCu4QBMwGj zeUMs9!YQ9VPMwkJ2n1TdSJ(%ez%N^kCDyVi4=UuR5ghOu)PiSlYm`osEF;KE0oGD5 z0Cj}A_QQ_Oj71FA)FzUjuv86`aGPMiqp97Y3XV05j$1EQu^+H2RDqYS(qGkT9;4P~ zopvqhyV1A`p#MS6s3*?vNF7MBEkx<(`ncrxoy-|+qxJ1cvJfq*F9inAAxM><@ z99h1fF}IQrIF>klPKM+67#(|9>Bd?K_ujZL*GPWb*2YQh(}j9q$1OA#a81_dxvtdA zJpKcSHGSMawR)CQOb^SxRBx0puOfsE5x!P38|8Zy?1yvyG{5UP^@~1jWr;@i4XgZP zw<)h|)%4-FR4cf|-yAv*Xa2y14Sb(BpX1z|f|2Z%nVukW3A^zFZk(MXx>J@(?3)U9 zE3B8;8E$!WvV7wPiKYD#qQ$REI>gWYfv$%1=gj_uc1? z1xYW-GqzZS%Nj2(uP95;adbWESd$wLOP1P9E$2(i=FcmU#S*QAR0_`*7R1;oWbSOo zV_l9leooqTDyM=J7upa2g!XY*j-0!gb74g&f^Fwm+DFj;S{jNct2mXSkX1uL$NFD; zT|mX<=k{7l#9lM?-w2l^uha(}W${2;U8*}UVV*OfI4|>o*IAvoO`q4IakxekpKyCw zu8;kydiC->d$#8q^aYnsyT_4vZbegdLVsIci!+gkTruq~SIkdp8>)kgwCU>Rw6w9J{EkBeCuM{LBY%8319Y;It zt9-nq2m{K&59_qcKcFbJ#8YiLubyDaKZ z*cWPWIb9xwwnZtgPlZ#$jp>Tg)NDuRBaYRvP*}3WW@?@-E1fr&B2SA@A-r6ejItxi z?AeY-IvuP0yreTzP6`UFCdlDK;1}50*j0^54Mm^Am(w zf9Q~Q%fyKn3U3J?2i)}q4;qrgbS}>XQYP%I$P026LpHCw{`!3hldi&q57~5&xH-4@?sBENT6a^XmIASTR4;QJij!RyQ_QyQ+$XJw9iaRA?L^6;a`a zbZ&r?gH#+iaCzKdq@==;`4uG<#ydq)5!rLzeLw-`;pP$i=+@Se3gt+vx*!%$$_>IZ zpc*MkHJlg42B^kd*=eegQz^VqSQtgjpE6PlF)4}$#S03~&nvdo4q^C)*vP4UqbB#QnCVPs zuKm9fkT;T}^7BU}kF{zQO%dKbqPcP8vbi%>$ue)AAtA9~mW0ffmY)A(5;AKhB_S() zT$Y3+ZIpz7hUCL;=N4`pcp@kG1?bFyF9;&y|F01E`6)pjAnSiO|5w5f!Zm((UBUf^ zWV_bs=_Q52p7Oi^7pvd6=DO>4Cya*TeKU@@GIy_Stt&7d%5Qfk3!?{S9QMS6%&~|t z3|?Zc%BocPd}q%S&h_zdRI=P|YMU=hFJ4$C%T2ZuS+#JyxG2V6K<3SJJ~7;}KEO+R zgnw0$$|5^f3>JOMLEnaf7m6a*s3;rzk3{e1yVUi6?8w&2>QwnWXU{QoAQGV+Xq_)j zFIre87ducT94{)$WtWrr=R2S1acsbn*CYJ1id4}KNOCIR=eHm6QFZYBh$8AtD>Tg* zACZ3p7v%@52Dcq4$|75uf@}dAD3L{jBZ9>$GG%baqdR@LKhf0^448?f>{k#`zO%d+ zWDzzJO4!rw`~@oER2#e7q3G=Pg)aZCX`wF6Y+B8w8x8w16V{PYm$MAV?US(8 zreSw65X{Ex7G|%(c7VO8h2vfy8^RW@ylzr1^Sq9WNr~LZHV^s7677?gpm6L(y{97~ zQTh?*;G8-&6q-iyQ#!EMUyWT=7!<7< zGk78*BV*--^4{o0FmRJHy ztWh4UKGnj4@r2k65k<;)Y+kaw=VUXZ>(6 zqu_Z&!Y(d0SR$>tRSNR)vhnSvPOtLh?`tY#b1aPcd}-wzvTi0no#i&VlEWFj<7-Zs zT|C@$j9V>yviVwGIPzd6iLYG~Bg%*S7BVBQW%M>ia@0RdFMo56@~NqsNmHzMu)muf zy09`oHaV=nKT%?QJn-;qzhVwI^V7C4D!#R|$0Kj{vVWoQl7Yr?@FAQj>ZS^S^$oz8 zsX5qG5&(?aoCo2uFZ%DnzPk!1Qz%4mQUZnn>>u3(l%>J=2Ps;Cp{GnBAWZ>-OatKb zVPS2?^-`p2g{q-AZH8z9&Sdl|n0het5HgaY2ReoKR$VJReQyhitP@re#RY3aM00nu z@YRKv3UA%sOn&pXm?5ubgz0yc^Nps;CaZr5bCqdQ+U8>pIGE_K-14&eC#R}zFv4Eu4!eH((~U=&(2F{g{P$|}oY3>FTJ8-g zU-!Ul?gg&X9|qr$l{3+tSyph>X_0TB)_Pc%{|%bhMFQ;*0|f4KPz)nrC{h}fK$$=T zf<}Yke}gthw#{pASiPC_lhomE;V)~DxBR{~lDD2LSl!S*|1yRVu4X3hoHLDQSIk^K zZQ6>N7c$(mIXfpa2r#T!z9B@6_YM_4Td`eu?arZ0%Qei^yOAgHCgJlfHwlm5-$Y!i zZX=C{>x8N7?yH$=uKc}auSB)0VbXH4VFOt{sbQB&vbSA$@n9p7uGveHchw316#W!> zkh5VuABNn8it>wr4wy9KLIAPVM+67UOj0Qz9 z<>3KL(~J1YDUHr*^7+gbokpXzntfigRi_bZxv?ih?9`JtFs0&&b8pIg&5b{C>uPqo zxStw)AI)k=CGNDdKlR3+J3rVG>$xwDl_In`z`Tusz!aoC%pRMQrFvdc`xjp-z;R9|Hm-bK2?EhDzHb@DWkA4!2g&M65wAVyu@tLEa0QgT+!T;L~Ve-xl*?&AD$)C6^ zNY0y@R z8#Id2K)(}VW?fEnSM7yK?(4!=dk;Wdzkl;rMEcd{OTJpS_M0utBaWoqmUKAtZT5U_ z=`P_5;T7SVeftpJElv!(GRHT4wF%#i-)`9O?KQoCQnAkJ~(GUnp9? z{#(1q1GappBWbf!c>M&hW}JQxAcQeH^*!J-2k@bLtsg<>oHvCqf&)gj0m*-UZDtV~ z0020WMfu#Ee*?f-O;~YexCl6QDZDQBqE*OlX7-QZ@=yF>?@l_7%vsl@*{flC2YFEF zWLDDOy*qc}P9|qBbTw7nqmX-0xTUx>oNpphu=P+v_A`jJU)iyC6}BSs#dmG|234an%g^t=3X$vKBc_BEY(+8USzS5T;bIb z9doN0w&e#~i$c?U(PZ|NuhK`qRrsFx0M`73bhT*IWklUy%D2RP5~gEzu2kvjpFbm= zo-w~4(TZ|sXO767u@;so?H9f+Q)^mcZp{1jkni+x^Kc}G1Oe$D;At$i(C||cf*+{A z(L;D_U`Gc<7dnI8F!s*q4xoSyGEF;XO%ufRmJ)N6Aj|}UPT*z_p^*=a)*$$QD@5>k zfYXGuQugHi5^cDgvAtMsYBmmCRzSFXUy5DU)#UCdK6<3M!`0LCJy=3Nq$$~E8Vohs|yXaDGDVu1(HIA zoLv8YB7aZxQn_-8%JWsssVeHLAdNt6@X(LJXUoighWTfK6)?@k1Usg4 zB8ee=h&Pj+>62^VmhKMpNlIJskbF_Kq(1B3a! zFvL*_uXS-2n=Nj!#cehd_mC$~d17~iyS^|mWQ4uIW+|*&K7D4+Vxj**2_Y-VBhaE|SBNxB`z#tFP9cPNfHn{zg{>v@%dLCig%^Y-{4j@Z zh>VPV!a&og zff$1<{ACfRDrh9HTzWxncwf0w?VB?B_F8-8+*NzV-_1VIGNta-ndFuFsjXb1R^nM* zS(BHTlSouwoa!zpejTzj!7WtNm?PrnkN6FC=>6c|D0_S6*(*|`v{efGjw2uy#&dV!NH@BC0D&48}W_3y4ywdO}n`$l3 zuT|Mb4PH*UD?MfOa^ie?S-I|1&db8q$>kr_#s9trEzEd{BJ_|QFlU1R`o_B$eg=+&;WjPX&DIO zM?=2?GuUjXLKe#pL@RKb6axT)k}ySDr_SNfy2#;aA#3;AslGth>;_G|^!x-V4UA^Y zrA#_EQ4%}(jx{u`GZ^qr8>NqH8iuM%Nus8-6d|U1OA@(~OkqPqVL@X?wOI}@tk zV*TipyFEO=Mn9!-ZG&|Fs4cbf#l6c5t$p%9Jgu4JPK^#N)7Q+eS}tu^+p$t!yJcd( zwQ%|PlE!3FLqk!rG1f&Gc_2(Zs=@&|R=7@C5LPQmzGtV!qBjglhNPLQ;YRyd<`HQq zIYg^E4j7Y(>QWq43jxSapqF+OxMB6;Q?gKdot(Q9Ar+WbIUxy zyi$i2U^8Z#C5`0|3UCYol;1cNr2|0iKj;THNVC46bb#=|U}Ogi_abT#)XmVQSt%1W zAbi3SNh?4aAR2x`ltf9ggDBQ1%E=J@0TSt~!(0k8jMhloK;Iy~m+I!}`|x&LDJvCA zxFY@)+eDv%z!mp1vvh9V;P+^K#jM;!?uee%DzcSVuI?FOHs{A@R@O31K|J0YiRH#( z(cB14a1g~|ZkRQx`1*<&c}cT*)CeI!TvJO*raCX3IK?4%CFhfc38&m~bQ^IN7M7M4 z6}T>Y*e-V@7S2z&ySMk^t!$+Ac$wXg8 zJugkh<4Ka_rA5Uqm;2t5LK)|9x!anW&EZHq9*&rYGPi0ydYwzJcj@#V?R|O4k zxvs6fy=@)*WTZK9@Z7iY4%m>IpnuJU|JOw{_Bu>3=@8TZ5`@J9yMS>HOK>tt=oug! zwKBp<7U%^GrM5-5TZ~gj@d~__7;6ZZA`}O*jxz}Ui6`lLLg@?mHSrA*Z2hT0<7qcQ zN&2kqTP>SdT4 zcDF_I0+*AWfl!QZ-*qEldb?bPZmYhy$n5eYh^it{S~Jq(a&=aw6O}5G?{S%miuL&u z4o(<?U`s-Pk*p+ENN<=Ii%sdh3SsT z4V|Q;aQAejbK;(5llK-XuI>4|A~-4Ezj#lwyIg!c%9EM!$Lhy z&-i2GqTc!@MPX&G(X)KHhZy2jg^FfG>>YP(yl460gA*nkJbc@P2`%m0_FvlBdFlRb z?cjz3u>C)T{RhpaZia3t2d3d>e>9k5#hm?GVOee(H zqe4oP4jXh)Lr4S1MR+s9Q_;c2PP{7te>nf-ohk|2dTF81L4Fa>e5A2!wRTPR7cWHY zbQ#yi2L>z#&BRo~nXS-2A=O_HiA}h;%9wexhm4S(Jg#C=vxFx!NKIsv2$9-0Rc+=@ zql8f@YlmoSXUb5`5$ArrseC3Kv**C~?+Njp z6t{3EU2IYaL*oY{z~((8eL`4uO!mwy$rQxFfV=hgsVf}rjEwoG*SRBQp4Zw+=7E<; zlEvK3?6=5RydviS-WjD-kCIJbBtBVbyts~uB$Vowva}0Dk;-BZA(Fi;afAytC5W^| z;`21rv7bu!{qXA)X&#;vZCCM-NJViQ3=2KPcy>{&i*m#)fl7)%O{Ty8L0?8PMpi(D<2$W;tyb9Yt{ z%gyC2Dj|1Irc$HPt2A;I%gLn*wHn77tz3?rlT!05YMn`@9k`@~FRNaul`C0ZAyvr8 z;wv}_lAft_R=rk^cn}^PNi>O2ze1GKbpi2d}V2MPna-BJ3>dDLg z5!DBU&$|~@%Xp>2toPWe>~^zBrBEo%I*;95Qr~Gp243XgHMKXExa}UDS&43&%yxT~ z&7(Ifl)S8ZQ8zIjtRCS%nSZA4vtC2?qc$am6xq$>;x~J&AckKS44LmQP$(pNmC<3f z72a4z3lnvRQH6AM%A|i@L*W!!xmYuO z9sUozk&aCzspIys4`9cBp(p_^k^1Sh^3&;&9TagGu+z%UrYx8dWrYsm;1r`t&Ci~S zba=8mB03P1`KcmcK~7gm*$eUUGc(Qjqw)QxD!JKE zTx7EtjZ&FfW;WRKDpFdR9P^7&OU=Bewjs}M^BCS_gwFDH|f=*>*6;iHJBA4hi zN{vD#10~1wQEAnfN-`R|rkRsIYD{`9MD^qv85(yw>UHg+^EnSEO<;Ta55!a%6_vaRqqzI?t#1! z`N1SSJ9xnCm&g=6C$%W$R-@a|;IKLkplV99-Rg6i)RJ8Ll-dfp$}HQtLxyDM6}40B zxl(xEI^8DZe^x4uHhb9Wb=ho2WP+5u0P|>strov{2hHg0N?V5F|6+JBWt3wb5WLLLKXarh?z z%`MGo;jZNlBU0?ToGUR`&&(ds#WR>m@%=0o1UtdAmbo+JHH+Dps!8O{#nW^p6w~Ks zXEeQhW;G24tRm*8u|#Gcge}9saw&3C;>0E^S>&phX|(#`bNhP7wzLO>!N9QQ-f{iY zCS*%yUspUgH#)j|=FCNlW=$V8Jdc)!_s?9sq~BBQP%BJK*XC7KywYKp#JrZ`BtmZ3 zqb{{7t@nfsdIr;jk!nnKr`ALY^0AI7EK;*Ht}r#i}z|B>obQDJHjh^K%U@iB=i3h0RtLD5g`%L;k44C6lUS@xln` zs|4J79d|eKyJ{i9Nx&j(cFrXjElO9@18XA)1Y$72&jcY@C@nQ&e}!nhSrAie=qy1x zO;FDzaL71&hAPpm)VX6H{n5ierp6>xXye(pB^s^69@0vVI0C*dzu#3B$&E*5yu(Os zg~AsKWyppIDSs$1nknZelk0S5V*%DEy$t{KdQ-e_Qg8b(#10O(w;q`>VI~Fy{$76 z9@gI5J7Z4o=e!-ZD>te6Yn?J0OsqwJ4>{CczB-%yQ)2jCv)qb^c4~`ZQ*{d@7 z-ka%K%tNZTgu9a6D|-9{uqQ`*NZ5}=lK5oDk=OIU12sX$7&`1(R0!+Cn6FgN&Ad&z zPc9?fyu{*i)H&dN79uUeBMbui-p5`h+{g3cd6$Kc2)}>?Us%A6Wcoh%0JB@IRDum$ z{}%cBEpQ#fKlnf*F@yH1%#!tQ3EDR`S`DnTf+ydCSQh?hN_IQqlnu){p7VOnCuk*T z24&}ptIq6`vc!c-ZBJuzG&0CMU{%Ex5Ep6#3d-WouEvxX99VR52lQ!!8!t-2C;{>^ z19T>f$Ktk3ByTuPKa^aF3AF|abe=`fGW-E!k|l=p5`8%$7NOZN0i^Fv8&gr(zh!Ho zlPKFD)P{3|SU3#)PV3PktuOW z(5AzB$Vy{=g*1|@SCNF#l#nsj84+HhBoc%_R$2W@wNVp8tRI<#mC^ieQ;0%I2qWc* zoG`+8jk_>k!xD`Q=}#0K-#c5yGIu%U&C@O|uHB<`Cep3mhPEVARZu>`mbk&n ztL4h!-U%yn!G!X1d(x8o(#VPqg;dK@>(@9eKkWvYL~igowDM?P%v~CGFtJjr+Na?; zwKP6XEi)QwRdP9p)PssN>l%`4I3$yA*b6C8S-LQkjn?4wh6(T{HS}M~U zrQ9T~E?Sn9YUDDlM$RD%unco&4|fZDl3FGs+6K+Rz7~{sJ7%~=99$mQKrx3hw_4ah zQUTTgq5^XVm|Ex?G4>@Ct%AsUMz0&Qk0CJuPNu??*`?B05%W+V{R`}&$UlHJ67d@B ze1TDz%D`)i$W|2TYws{>l`3YbzcXlZo?m8dsdCgmHj!5pn+y%(@(bD&$`jNMvrRQY@|S30Slc5Lq{G{TMdDOO}26Mexp3R zG88kIubFB#Pg=iwPN(BmM~_KK6lTS(k?w*#SG`?wQnhf(vT6oCFKVTWxJo=exlGPE znmUJ#=glMfdOK20d#3c>)zEfXnK9|NAT(e!I=96I^*)t7j?LM`t>kWnEXxVmRxWgO zBeDOW`wc*)0J}iUV*Jm7kkk=Onlv$nNt!1XK#}B7SVG5ZL4*WK8!5EKnJ*GWkp-a) z46az|O~q068;BQ3q0yE|R2hy*>9#KuTdiEaS~>SsMzRNKmrrQOY;so_BP7Y_1TRdS zNN&-nGM{4WrdERcrLqbcvWR2%Bvs15AEE$({!XNEluQmNK9L%i-USAe;aS-pZ78JOBV&2y%#I2M>RIxv9-9-M8*kOd zX2dksUO-P;eW0i3Ko7~;@y*ve{$$V@4e$2o7w3VSQ&M??Ql-Wr14&5Xu1P7oGznWEDeM4JaGavxqIi*A znzFQ>;!SpCNE2ikl@j2J92;rrF^p%zW~AepaV%G^Uas7FqlV!b*PhG|S`~SjDf7^w z6j6oG+$;_rFH=f^B0v`sTG-4YYe|9^Fii^W3!O45NNdkSU6!KIS4HL7&xd_Vw)(Tc&Ace6Niei`{QKtH_4qT zAT7lcCZ`JN#rLw4;7!{I30Y~>66VceD&QL65h>llM-+X9&3s6j0_ozz{Ao^t3gqdB zG8=rDi%yTcLvBLck2X%JR#+8EASiZ2=oboVB}a}5xx(akmg+Z>Ye<*ywccbZFqx^S zL?+kk%qW=jL@PWX^lc=+{YM)+_T@UWM1?Hz*bJ)`Hid>4>r+WA^)HQK{x!Ra8MED> zqw+8vxOY5_0%bRi+sDAXh~$Kcp1YfMVm^Q`65Bt}M{#7&W`xCFq9e@5YvNa zeU2O>CxvPr!VpbBqgASblV=L#A6DmICox?Qce9iJ>a=N8Dv4AoQK_(f(P7s-P(mB_ z=N#iIxYeSkf0oD_C_+*CgH2c#lPHc6Tfh*+2J*X?Qx~|5ZsA_x9aC+c$`i}42{S$A za}4CtZ|f8?bx@ciRQn|A6&D9W0Sg^Rf?dL5ZVT5S#zQ#k9U_s-8AMm{CDMQ)fR}v# zQtzk*7KJJE`?=xGi9%CxUCkI~2Yt!x14E>YNo&ij`gNmKx$2r_c`jIt;T`L97Qxo0 z4*DO&`H;$~(G0bhVcsB1mI&L0?Mn#$;D;<-!i*EPEvCiAWT|+SELkkpQJ?b|Hym+Q ze^dusMqHl@?+YJ%PF%wKpA#pF%x`GXDgF@W=fVd#C)Tm?)Ms25_e(Jb3q`v##2jNt zBZ-KVU4*NI72zvVcFKSc&Si|VIHU2G{jE%`(O~!xALx$j8=U9xJ=t<>R{$MJpk5QRjK8IB0wVAA4 zbAH>YH9!*2=yevm&nc7X%!}`yJJx8@7_D(A$Tbnw#7)osS;5C0#uCDV%o>84W5SmY z?$9FAmzL3bO3XUB%{J<`4=%7Uey2+5@M^6wyu)m8UiFKEpO)Dzd9HxUlCa)&^GCl@ zpv#a!)Wfds3fKTEVV@90zp(=u{7}D!!4FH#&uH*^CZ$W{P0BPL8kKw^yG5*U=87(JUxbp%7$S4sJ%oV6;lr26(xwZjIA$@ zXxRJ`RwDf7yYEQVcZa_FPN=}q)7!qI$A{Q!-+NDZF7p->BxOT{Hu2!-`@&TZ(xV68 z7w1VK`hO#LfjCbn|4l#ijRR|w7@9*Q=g{$)>2(c)@lsZrerVPJk?EmAX_1Y_iyQ8(K=syz~ZtN!ifm zj=>vF?#bT3aBf$5aa;9hcFw5kp{bO|i8_a-ip4tp#pRcDOmccssiD=QPVOCD-Bz4- zyC?tX2D<-ffzI|)?hC+G4-LB&mLG2LZgiFy{jAZi6cwMay7MC`nY09AbXHoz2dyX= z)5wExgq(lmh_D;~_Z&Gw<`!<*LeyKfY#DoK`#Ai&Px$qrvG0pV+!vTB$A#aBlM3#n z!$0}-(@#FxKYagw;rM~!`#(8wfK=@V-g!Z1AAqGUI0G1TXK5$s6s1gA_)-!&zzbzz zOD|!QM9FOpWuin%HNZWUFpZV|-1vleuD{Z@ePUT}2LwK$j^46~+igF0ftm2LciOj4 zpjALPhbks)x1X+p(ixKDI`t*@5O+z=Mie5V*$S{CYxyd2ELj^Dpn{lPMGO-Hy$O&BSziIz-oexv9@4P)>@H_ud;tzEq9^g~o`aJo9w&V*Icn}|$nu_K6Uoz13! zp2lXYLs(b4Ln&o$0t*OXq|a)1IP7+hr^Vy3(?h4r0NpJfML1Q*zdvfx%82-=+~9Kl z=uxXrtJ0Bwp<12Kf=V4Wk9VlYYooV0+hI*k(MlBW}D#W8VvS^VF63<$@m3GEzuMGt2Y-ka4qYUtOocf$Q%3TWD1xXKO zq6Ywyos@&z^xz^V&gg*&OYa!GPT`DCmPN|e5*(QIgKH(dE=p;#XqT-Y(|&+Xh{Ke9 zQe*^Qt6N$w0gHgB3 zpwk&#?r1O{F3%pBMy~KiLWNqBL#{STJv#cNGdDCgl&wbRks8%@+j}K+h36*{Xqd;tgj# zG_acy+bwn@i%{qE0||=D2AfN_N@re#_nh?*Gs|i)YqV72t(9q^t}&RjV#!N&HwK7t zWPioh0vjK#)?~C;jP$ZxE|H>Sw(E^L2&WJtTyHQzfNj!BCAd*-G2)ZGQHCAKyHcgv zVz62UtJZ4FdaKE-mD8Fa+AKc;~xwDK~9UhZw73z0okOYgZ@Ji*-Ytu$pA!Mi5 zWjc+?z->WC&@IT`X-8EMX8S7Xa%qovUed5!G2S&(E)yFtO!34Y6@F4mUavE8lhQ3P1#1^P6}Ik zr(UDbydzZ@^yr89rh%rTq=jaUz84)y0?=xx+)j@u%wlM@^d;huO5cG63hjXhFQOww z;g=m!bbyw`^(pVvN8GLO$AQm=u{eukWdoG0WRS%fWLuWZ?i)QaFP;}2+cSIC(xtOz z_l%9AIC6B~YzBsrqesl@zi`>C>ElKu@NY!#wAo9S&zL!KbZ!E?VEELB&?PO!d+O+$ zD9yuc8^rR#nKM9V5k5hja6i|QuR5BCl&9QIm!q<@sj0KGsj0Nm;c~iDI67ce&E3rpE5h=K9K%+vRqrD(i-JbT>Ap(k^#a zy|O}7uO#vl`6I?ppL4;AnX^WXjzihP<+|!l2fZLW7tV}))?lEg!L0v4*Onz zE?N5A@5s{c9KzMYH4f6gMQA1GZ6$rAe=9jpXl3?HLYk*vOoG?hhMhafMa;9pBq4)< zq%0Ck+(cOVjz+*~2Umu7&{)H)pJ&7P`q@E<{b(f`obt@9mBLa|zmn9GA@~uNuA1LJ zWke6mP$MI|&g)w+?{ulNua7GfwtOON{p1sJ;U{EGJT|<0`t-%;_fHztlMD40EiG7p zQdeG_@-VdDAEMt$aDjCHJ%|;jB{JEe$|4EaLt>N@Bk?o)r{u;00X_Z&0AeB#$!RBQLi`pf(S}e5RZktMzZBcKthI@Q=f46a@BxQ zlzIT18Ht=9L1_@JvS zC1fU{cBSBBzfuIU{?d**WHNiMRE9?_dAK7r`R0!r={4P zrL7RbGP9hcnjFndj;2wLjpTOW&W*zD!W|ohJIU=E5HswBo)=#1dErzJ(>A=gr>Ll> zmmJMhrfGcR*glKu;*cu0n&T2RV=shxs&NqhY^P&w_9c zA`Y2^6!$$ubqjiWklc^1_G9{-gD{Jqyl2~!Dd7rIkwSdxv`Tx^kEc?e%&51ISWD@PuJ89kFT z7XErGxv78@Z8L&Gq@#Q|%_DExS=BO{@#7DVA1{0(+&rF4I!q>yr<-s59L5RexvQ_e z_Ufyjz2-Txn+WrsyXIMZg?VJxv)7=lg^=~!$St6?Q&%&zGMkVH4Mo!-Z1$U(-;kb^ za9^izUyAeyA@Y`R2nU_?dmSqQ-trxLx?-16mG1pg3*uyX1j-l@5vNy<>|9G0LRzHe+sGu2S$HX3WmQe=*S8yB@6!#TJ z9Y+~;a3Ov3|5e@YB%sc`-~0T(=lO_jcU7G_RdwoA)u~gbPJIeL(lVwm(K|v3twku2 zbG;MEIq?RvTuh!gK};ssh}V;ILceIbM|@H|a*t>r|G0(6h`sM3iI$hQ zh3jo6b+6LwuZq6*HqrMg5MA>ssS_3siP}I`AgYamQhc%fUosl9zPS?LI%4T12Js)g z;z#S&iXZig{~(55ViB&FqSg&Y!MTa0m*TVczlXl=W!$Rw@(!5NnH+joICKGWZyIsQ zc@x*$c@ocDJcaLw?9W0E~)Pd2o%@VUk0IB*(YXrC0J`W_VM?C098nl{_nkjf)O( zu6XRa*0tYMULZv_s2WSN%T)r7_+0pY)Q}$rqZ1Z4j17F6{{|d#L7mO{!(@@B<((=&8Z|1;N2o4 zb+kl*=wTE6lXgS2Yzeo89zb&CWp+>c)O3%%OcfIqGCnWSo0Y257R6|U@VXqly&Dob zyEzOe+AXs~VF*~3Qx`61Vv4l7)GTkJw>!cZr3xY_S1L{Vh;Bq*iD6E2n81fM{|bh} z&QPOC$^95Mb4p=FvkNv<%@u{yW`xPZ_40ygC5iF!sML77E~+>sAybZhfku%<%qc}t zI(vdUN*|4GK7?(`+`6<%z}Y@X-;hf`neGOoawcAyMp~pvzLb`qID5nhz{ltA1>u@4u$>jnAstr$UmI& zNg#h=N2noM!9Bqar6RRj*n0<$sDh!gu--|96=PhuK{ckLa7qv30PoZiOM*gAIY3{O zl8~Xmy&72>8bXPY-nv!hYMGeDkMd_}NTu;^JDo<{Q%T<|NRbSkllw^u*7~XMX zhRfx;b!-&{ws)4*)dhiT>MAI-yUbbLP}FU+MXT$FckJ?TJw}r%#N{a-TU;EgO?8jC zF3yyewz9sl!(CbF?r0glBrnZm+Suky)y5VB$deMLi8Y!`Dy1v6cx*|TN#k~p*$`)> zc}91nR#c?5wbUYyG3JJrWSXa}t2ot-JQy#6%nJR?!@|>$?QWC(N%j(EJ`j(R4MT|% zLN8fF{MxkkTXec|%A)))S+HE0LYes2eg%J1Y{9a) znWhX&OiFD^tR-Wc+S3+iQAgGnjZ%jh?Bg`LjDnivyfSrNep*fK$jY?5I(2bDO0_p# zuN`MIglZa!>m$|XxHgYQ<8F(mIg9JHVMg0Htv=mb>!LaH(yF)Bq~+JCOT6x?f()Hz zoZS$n9#w>liE(YI;_F5EG0`C*Y1vr{AzYgq8Ww9WGMLGZ60@P$9vc>ts|yzt+1Y6! z%9xmZKBBQWxzZbDvqgC;lZ(Y4LSwNpbr;zz>9*o%!R&0FYYov!YA z)GAGg<*F8kMIKvdOSjmHQ?N~n4GoFmNMcH{&5~v>ijkXLW9A`W_0$og+T7*k?zT}Q zrdDf05|Pg=k1n>Qo9#vJM8d`Nz+Njp&Jv}G(fPkdy`w zEm}cqh==JJgG^FmlbsYE9t@#^X1hH(J;ND}{hATyTz`g~Jr6g1?~(mQc24#^JQ4ga zDLZsajwxX%q5o4yax|YbgV2#UuprY_j+z|fk7k#~FSQE+Zg}Zr3u18S4h1mD>EI3m zvY8126@?hEos-7AH0mLWQD)$J`EZpp!Q;%zNOsz+I;~c1k98VNS&p;>J7}o0I_(** z^pu2b+L3B|LYiYLOM;-G$c92GHPvaCvLPwUWOT+#*=)|_j4Y=o!Kn%_U6iR%L@L8V zjZrbth0!s%4-lrrbB=lOF?dDH&~y#oN1C9I zvpZ8VGLbI{i*%IPWsBpsNAY}vLlYkxZP4S2L%7}$9UHH4H1NFtD|vXd!(wo)1=%(o~ta+Zb+1`Qnv1NQddbT)YMal4tKmlj4k z0HkOyg{FUu97uZ#8rP%DZgWCx9In`@Vhl-%t_1v>9O@%VdeS zCgGAi4o3kR=SoB-TuY6_S*n@f;rO}OrGI9v%OAxf<# z*%*zJhVV$TJVLqUifCPj-t4R$(F(?#wIZ$Y5NP|w}z9P!4)eg-V!t;dV5eHjQAfp!v zSx<3Mz^24xjzg6w%yPgoN{1L+Qr1L8;hY7Nz7n{isFNwm6lit`RpY!DpJ>Iufvy-l zP7m~+G09?!cUlru5wUUc7Mm;15(AHt3FaiLm3APEEmiTZ^5D63xeLdj5h^fBqBY5y z7#E3L31&NtL84su`GaV9)4ijWDk07pj~BE(&Cf*}`zy{B|Z zEHLDV{Em1vPRej|8~@Z=9AK&AxhX`xHvwaANVF+3VXvG#q*8>300l3A*>U+hRH1@M zi9Ly<{{x&k&4P?s0&muH{)?QMaoM@@kU2JRNTnZ~E7(kU*%XW!%)~qND#Ej4p){hG zb9=_RTvoiUiCca!As_2ZPNV{w#+sPiIxMF!B^7=)OrBIs%#}Gs$pfLX|8VPQ@e=Wa zYsB|S(lx}oWGS&;16B3=*N7kRf>vjSNa0CyxsuF~Qgr4dmn+Q!nZ>M|9vze7F3K-2 zF7$fvW+n|4dao%cpaG)wxZ7Ik1*4f$aly!gP|M62i*W+h-JIr8Fyu>@iXR3FOLY^6-2ot31BknPYWTq}d4{9~O#yHczF?n(Zo& zm-2;ZN6a15IxfAYCVgD%n7JdgA-3f-Uu>l_JIPg^ZbQB|#8pmX$#72v+4O9pPB7YX zMvC9z7jM8XqIy7Gl_u#MZ;H4K2;&<$^57huej^7*UOkYz_<`I9dg=F!#kmJw?L~-w|5gI` zhgCfjYkMcn-2TdHv1j7&zx{3a#2){uSGLcb)LT2TXVq$&IUk&P59NldGqAW!XrOz6fdl7 zUAb}Ninf*FH=BO^aTC$5Y+JE$BO-}rW8$4ncQ)a_wx-6$CVX0&?rORV|6v>x+{%y( zKH(^%`~NYWy;t-US2%g$nB#Bnuge;_V9fDzZyg`Aa70%9{x|SV6VB})nN^4Hx86M7 zys$oN#Qt}XApE6u*tP{ft@`*ncWdgfZS${PwP0IiYHRBHkFNb;!M0(o&BL}XxODAD z>r-3ZmD?ArycTh(ttsn2TGcmy+b}c%ZODf1_D;?n^Vl$hZl_pHfl4w3u?Mijx z5P_MqRpx6I(q~@q(!VsTOL|qd1$D8N0B*$qHHgdvVVSyVrBRYsIdo${-lruBn~X-I z!EU3l`vsX(L4l(=hxnz;H{aUHFM2#8}^n zjQF21MDfW&tq#Ur1}PmDS%3`W1;juC%_tA084bo%nln@`<+PiOMjYhAQUSWt16XI3 zIO$U3T-k(^*BY$2i_kj(pLNtipYsw2Z1p*Kx1>9R0JYevDs>MvHxJ79OuCo4f%ZUf z$1|iCq`Re3_cE&psq476tHxJVjfV}yyA{Ole_njA0uPG*%tB%<3vEda$Gt|vhif~u z;q-?#+~fI0)YWOa_#9(dt|=?p;fT&M<(3(9;&o*4uSRn{6RN5v4D)|L92Md_I&tf-qC1@$ff{mLxUM}|!_@>=W+#PbxoEL~6{oHk+Bcng6XH{ukOE?l_Aj&h2P-y5r2| zI5%G({N)U$ajUlX^lYE*|KO8KhWZm?$1i^$4PF-n8bHwZ*e?)}Q@>q>f!fjeBowxW zU&7XK8+;VU;J!`{?h1^8f0)U#xtL$j^i<-=WAE|FLB3)lH^?dH(V0ihxu8wT$!3rG zaCo;60tAn+g~P=z@H-7>;30DgOR1YccpDEU*9AR00#7N?=fJ8=DLiQ~nnT2ANqIZ1VUU%qRHrLfI7=!L3#r;s^qxQYGxSZ#=iZg#Ncm!g2^an1zN0quMYf9 zK)&3GA;z*fz3~`_*ktN~W{*OW&mB6WtjmGiR-3=YOY~ah8 zkD`DDw*!yKuxK`%d6>n4~uxdFyGnkeEh8q%FsMZ~du-jrCH7$fAL z&^VIP4MvAjOH|@x26;|QVq#2Ar~y~oztbuye4b8oB43CBxQWj{7NKD9ktPy_Cq#!E zLUW@NK|>Db?Ei+oyZ|$-6&6oXke8@K4D9jAoh`~pcjM*p8o{C5k?IA<_c*n3vr?-Ug9v; zVbA3kcS=xbE8*h$Be=)q`+ygFADfnY{C4@ipB5-~AV^;6$H}?;HYv@j<$3X>{I;JK zDz+nSjChh?BcDBxw%Y%?eD+V16n7!*J^oehd-+??#LI9u$eW|g;l3BYSUII^DgP=l zefJ&3{W^bw6Xh=iVBpWeM$V9w4Ku4&$)6X${^lE5e?O7&ukxqmZ)sd%cgo(A$u!Ea zJNsdvAVZq$B7cH^NB#oR?h2&cC8dG3Gy2C1v*c^xyS4>Iu^B(OEYtBvS7SWpEGg&) zuD58Vfr$w*&ug&KH)tg|HjD>Wdv889j3Q6Q7^p8EsC3|A2lvr5YE>kh0fneEDt&Bj zcCjNZ%J}o6^Cq1+^z%YuSa^@wmYrW&QPl1&vZv_udV|vfpN?I(lLc_mqlq@gL>r^w z`U}3-R4R?eq1A<}@!C|JJw4m&B?&Xe-n{qedy-F1>)YR6Jtnu%VvaI6+@8$b^5m2> znINPE1U4AKLCA_16uJ2OTgS4GJ@Or+(ekB)dhenRnByIos!H z)E0AcL(g<~svTZmv^u*z)lCBqY8L6RrwT7w!)+EYu``0 zs3g=eI}`T+lAwV?DAkjh?QtW-#@I7h_x12G>|nQIhSV=uJ+`!a1HL!dB+8Cd1_Z2M z)_m$YslE=#eipL^&N#DO4YBxH64Sbrn0@~J;z{QZ0s6oKC0M|lBDqr^~Uod(Ry4JSKCUuwT_0`>6!LR*S1ZFgqP!f+5NZN zeWqntxvKfk1trxvR+}+F6B`vVpML{pT4l9B7azR!{LdUWn*l!N36bf!(U0#!fU+FEh*(G9<#-y*O(kpr4#B) z&FNJ!vDx{x6knZ*bF(GEQJz=14@O<08;_JwPQ=P(s2XcwUYp&sdS2PxgwZC%HU{iCpRE zW<$Qss#w~gNwCB;m*uJw;SxHIhFdg%irH0Z%dvGXBGTLVCF+c*>E(e{{>{_4DTz6cpqxm~+GCTe@0D z-(XElv{qF#H;tcOls|vY4cFg#+om;(=N1;Z^0UvbT7C14t5?nH@p>se2g^#5$xNB- z4kAbfqR@LJHbh9XI}^`9>o-q#<$HT(ty+EK z&8t_P#hYzKg>x6L-hA7w8#d0l%3DOsB0c>#@U!L3kf+gec$~##b;4Db&dbl5Gi%ly z@tft#@oM^*Ka0D>P2!Fte<2GVe~irk3#%uYhrCnec4q&WX*EK+L04N*R}Dwzk5o7ReC+UHGKWlMWmomDKS1yPr%#0 zGQ7E$L?0T!{Z;zbF@9mOM;v{{Q32=4_%i13zFQ7oJ!-ng)6;PE;ajq%l~y)3R+dhC ze%*!_-rP8IP4D&RUbt>;t=3#>!s={O3N0KA*|xhLw5}uXd8j4C?=Pc;(ebGgX}h@zM@s$olFi)soBh*Br2pPBhI_xT3h&@j z*-f4&r}siK{0{D&OtMN`#~rX8v_Xh`Nu&l+!22xlJ}BXJ!9JSjd;I%%bNj@9apOw) z@&0KybK{Sc`R@g68o3)jfj**j)>~bIT#$RM>0Hzr*i@erlf@s_;PH)bzCAi=($Q~O zokx%qVWUurw>+T-z>uL+CVMP`&4I9xhUUwK8>nR*G`=7>F=g^lndBA$uR zXbbkNsNl6x8L7g3ZXH}ZMRLzOH98ftgdmdIyTA#G zYHMVyPJ{SZ^%j*5egZXGq%q8qtd1?@anQ;s$*|ZSfL68sNbXyh*S^HPRsfd^lu)$o zSL1zI`ckWmc2*wX+WXG&$z+uH2)FRS&+yW5n4b6KlO?djryd5WjIRSUE@$Hf3ig2{ zO>>ej9)0veclVyOH0~Smb#u;>$?0KOKo5A_QN%_H#s4kikcM^C{~ z(;!mzUAz9#N7sv=6h8Rir)_Q9-ERJYDQ}OT@b(n)px8F}VZ3o2`0jhD9jrD(+M7<| zA7Jg}WRu8ZVSx~hRgbmUVG8BA2y(!`ZGm`5&|dn6d;a7}Sl}NL4}pw;T0!m=+68+6 zUg@v`UUQUd5u?SU{5yRP?$c+Vg+A=4c$C5uz*_+SG~0WCLCNBu7}VF~uVS`H83r)< zWGiS{3R@tVUK^D4DFO4S;6eZLBUN#+iFj?Rm(tLGt35F>Hcl1Eoh7~a85g5g-7G#K zK5?^39TS(BDB;`!oFxorK$y!3pah5F&+uC~zxx%8n2|6)H4+8CPWUiLQ}7Tsotmvv z_Z^&$9K$^Vy{HeiX&%a_H{5AY!dWMJlKXfLWurO%R({j6&!$fOY#F(i(sVkREzA+D zfK^jy$~;&UTn6|6#SMvxqJsQyHd;vR zF3bfW5`DLbQAx|~Di#;ilb4&xyn1oxWRflZRm^{9*&g!sGI8e~?4n03BiST-nYbCa zT4n2ml|q?>3(K?;jiftz6DSXK+@5Z-b&R;UThxpp4`+%Ra)C66j|yetqW$8cwOsT) zpNg~Ak_LF!;AGikG|mH-VANvF>RnQ$Y%VkwSDRSf?wQYRXd&|);?8EL|1QU4Z5*qf z|4v@{11g8=j`TGA@Mo!hU>*)9I)3Q5vw}FiR=i{^RWgWk-$Exh%h^H}JH@Rn{`tNR zZVt&8U-s|j7F-(TX%M&KzvY*nS&kLNyPWba-avU;s1P1v8XYRILS(;O>nXd}OE z-nw=3`em4|4{jIRw{OQ6cjQmk4h}ie5`UlZ8R`0r|H}?V(vs_>YF|w{KSLD_q?6($*wH*G ztcSl1Oucv_I*IOVy!2uR)wIBVN@9!P8ci2+whN#sv~*$J${UMH%17A@;>8$?wHm%( z#clLDrPJ+9NPu07I)N;Thwpk-GzsG)6U!Ax?259aNREWUt_0>rWKm)yj2A5y2eKqP z&EnRCI2a~b&9UMSQAv$uWyRa2db-Ib;rDzEyMv=(FN#_N${>R^IG+diE!KfGgI3%q z+`n~cd_=hDg8{G+b|7M&N*x<*PjomE?a{Gn6*&pZ5F-qSNnLnE{8Dbls2fMsm?L2g z6lIRHIIOmqXnKYa9h+ozSmMl4uoQ|k*NnQ6(Qk?DkLZ_MDE*j+LX{SRa|h1M!h~OCUbp=CZr&ws_KIG+Qd*nfYRr zWkgXy{`JBwi#FsJ6^%&LU5tZKmnAX5B>p}QuY=fJNeKxmnwNAMVcZj8`hinfim--* zck+lE^Y~X-`%;;|D0H2)<^>7H2*@1Wpu9>yxaQg!c|emxY*J-62fisPreve8f(!R!?|MvAd&-IRYdoL;y0WyqO|jvQBA!! zhpAz76Ag#YYR!VOShF786h1B4JvA&m65gqwg$s8Bj!g{)wdC0>BKlb8NVJWUC6IZ- zqx{406N6cVYW4@`GPHuaJE0B03vR(?P$??#J0UMRR+E@$!%<~c%60U5^mS=nDJhBR zIye*NYs`=()#k=mUTI{%xE+>^98Cfo?doD%%F0?`P#+D8=L}1t&7P9tuvw0eAAj6p zbEKr$Z4%Eq$uq)({QdMTdz^>iL`I@2^@)O`8p+awxrwK}!IHry5RN&T42O<*aErCZ z%BE)O5*B~V4?K;gE+4^N3zRbpYEVS;N&UM~Jw!1EIly@oS-DHV!(5CJ~VCu7qK!ubD=2R7vV z5{_FHpcfabWb~TJgS-qJZZgrl;X!&S1X3gCxx=uemW%IFDxm4`Jg7XZKnK8)A4;M$ zJ08LZY4#;(_VZAhy&j|)#-d!QIE>s9L3u%ZSB`P(6LecZoV zQdMDLs?-+jNv9>6bdlV|g3{^BwOf|Nxt#G!HftBpDiN1>+_|~Kr%zAdZb(R&K7Dvj zo*T7*TwEX?=JzU`IKhzyoEF$;{QFSaZ}bgLQdV?*RbQ=Is@S-elPIf7Qml}NA~P4Cr+U- zIFxh+Q^=H@T#-b)Q8mpZK0+xz{QlXTjcG*_VE8!~o_*`Qz2e~=95K|ryMur9?o))E z%i7d9rY{_Onid>1VXYNy!Z^he{8G>pp-`r5!B*pYF+x<4@5EcV)8Z{;rawcmLP<9;y@jOSx@|0M85KaZ~MV>lHzofAj!~sufdWs|XC%G=8xEQ{d5A4U^qDAa$p@dGt zH3Tg~jWeD-vO{>AwpF8`F9%_sR`mZ#I2m|bQij7aE06QMtND-mEDMF_?Bs&~4&lV5 z5?Y@tVD(qPa#7^Mr9%PWL0Gn5^+F{!6fOT@0P+eroF!5?p-U=#0BlIv44)$u7pBQc zG0%So%&w>Ue>al6OkNiAxheiT{C8YdR|c;q+ED%u@^TQIixTts-TwieYUem)ASW-q zE|oyDke7o6Tv2bmHB`8Rzj?4eAjZ(@KspT4Sq{!sVQ)lz1zTjcfK?b2unt(N<>cw{ zfBJ!C9DNNJwrt>>fmmqP@}zj0h7bNPoP4Ew5&nIDXz!yJ+Fx9Vf5LN%y7wZuw|(KN zQwzIE-JwHd^dpb>H8ioid*P{I44Lv`JB?eou>D2Qc!$^^oR*)3{O^L+O>4~-sOuxT zy5Z5zbdpNwrk`otU^l6SRu0bmZ9B+a7m4ETouj?^EhpbPJZi<%XFX}%PkwM;ch|}H zZrXm!jb{0G@4vSD&xR6^)~+MMhx6N8{bxrt+`N1As8OSL z-`pUt-2HRvvvUdyUp)=2?+mgx%_FYy-*@}oeYX)ji+9`Ydr^q2U2GSYqrK2)(5(ap z6V=|*LrSL2#8S>bBVN2s{Pz*O^3CA@Sl!iq-z!gar+MVAzJK!ipWl+7rH^y{Y&t%3 z*1obbdS>H*(&-`KNbc$?Uh<{@ji zv9$T(>*8tFe6$~g7wS+~=zH}zy*I$C<))L|_x^~JXxF}j{zAYU2TZImiRpwvAPPoS z_eXwXed2{{SFP&ZTbb3+FnT(F@+NzM)*KLD)oX_^$ zN^ZNIL=n$*bK~!ctzY!ax#=^wKN857sOPQy=lMS=qUhRYwdG0f^soj|Ce;SC(=f36 z)063cSzo<0zxbLF4?R9=>go3$Irz@9)k*fJ(%t7yaW~EwbK4`EiMyhG-Ho7y>IgAh7S_Uy@6@EVw!aH*vl1T_^tYcJZIrahJIBeNXXNEr@K3s1bHx{1hNypci&P zW5}M==^vzzz_3l{Gr;~3GXj*!g*3usZWxLf`R~U)Ibp~Bb8nvY+R^J~J+bb{p6DEF z_Qa;1wD+TG5_+y$^h)n-2bbJ5=k)jqMD;=YGxGhf6qjsRFtyhfo%PydXXkh8Hr;!W z*CkbFer5D3qB7nbQN3x!{H2L8nG+`7_2R!UrOTKP^bec3SGeim-b+_SPI$#r=#4w5bvAjw zgYPKx*R$yV_kh=gc@<-j%!~mWXJ1_XeZ+CF@)NTV%{15UA z8U_CY;5p(!_&#|jsDhCVYhz4paO2`Rc#!;Sqr7wDrA&F}&j7_$6eUy zzx96rN1oa!p87R72dy8b`#}9RZbTJPyI*eyCLr$8!Gq$H6pA(EzrqC?@?YTs4f(Hd zfrk77j<&-(q<*x9=-Xglpl^|iIhH)Sky|dRQGM38!F2Q#%^iT)Nd84Z#8Uto#PO>z z{#*Y$Oy9K2U{Dtao$YhTqvT)y8yLxHIjxv$u9bgEWovlm#X+GBM}S;I(ZzAD9zaTv4I9~Pt>Os5PL^RjBVOhlM6Yr)zrK3~>>MGrne<%1_7A8?P~ zvi*q%{WmD0{P#|p`q8KUd`UuB#pd}hQ1A1COQ)dNF%CD95&TG=zVuGVE9OM{hkZvG zIYvKZ#GXA^WeM(ReZ;+rw$XVe2j@-Lte!O7Z9oGSh_{pJl%F^ae~^0yFuY9n1YS86 zWCAB>&U}?6(|ms-lZrUpGl!7jEJwG5m^-KpP%S^JQ^3zY>LRUs3Iomp96&epA?<&1mPkw44|H0dD zoPFn=vv0h;kBFzmkHwGJ0h{IgId{hPtZR3ZJvWTN>c>G6mI+ujQ12Mo=n8jKsFBk} zJ{~6DDsU%cw+pw29n(Z8VnPL#OhE*7D4vTMsjo3;YhpFumwftFc3;T}&DYslU14FC zETiPJuf(r4_{&DPFq3i|ZduSXY03}uLq+Y}{2YF@&$sN+siU}EKGETO>7@rAQRu$- z$8BR~Ouw|BKi!wXpWZRrcZkw;pne9~unL<-spBKV9uMKS%5D!i7C{6+k5!_Q;r^Xo${$TJC!Fb_3i|-j4 z{|o#bU6ekEKhGZ@qz|m+($8gv2OM$f7Jl~E^edn zIp8JyVU#}HR$=k4;O`Q_YpJ;se zzCe72Y$dIySSF0)Gk~X)Oztnh`>(%~>W}z7DV|fYc<2oRc!uI{;x@}-eg%IM=j{JG z#ou2Lz~3Z$YAAlhOZc0}jsF3E2j`aU`4#*ft^v1{B?|lS zU7PEbEcmd!V-{)wCm%RIqjEh7Dk)HCOy-z1Q(v7wM|`~8S9!9rVgK9txhapA>C)S| zNU^t8N2b9Ys=L%y7WH^`@`%!m#3>|v^SB8cuda)qRZ^IgHH>(A9IckdO0xa5c+8tV zI>CRe+@~{}DebUkrP8{FpOttD;m=t34aQ5fEmM`lK`XQcb8k2IkSr4USeuk1L91@A zRR#xU;W+dQ;!_qPeyj|~i-_+Ui2p1QPq|wW-p%mmi;oH0xQ8(|dKsK$g&NkR(hyZ~U{ENf4Z(aM)iZAng-n$FewwC{{$U5Bzvu%s5J$FJ!q(b~* zaY=Fc)kJq_`=RZRRz*kU{C>hR-^rY|)`ALO<{wZjcvsf{w6Kdmk3JiY2&h{@hi_ry z;FRUdusMZf4EqpNi0#9I9Y?LX=(fy+-6%Uiq0f=gvlpr=ruqR#(14S^cIOmsoFZ;~ zX5{*NZ>nCZ@kN@`k~3!%nRIEHqda5IeDc%qX#XpAynJRXs)YM3T%}MMWAfr%Yw?Ja zA}Yt{%gwDB^NKvF;Tla<&*+NQmhMnj2c$SGELiD$)iAlt}-nRb<>{ZBV@| zCO$Lr`n!Mly7uGWZq18V*1o`(o9k=)?IzH1#MU{k6S_x?BWOr+5~-)a9JsTYR3|=g z_70NZ$?~>rZ22@P+Ge;Q1za^*w`l z$SHIzh-cXPPUCm6c&t~@kyHyu_^pb)zz5kmFlNpp?4)7D>S)ym;QWZ8+8e?rfhW(C z*|hxwc7xQMFo%CT%QLlp-S%-EKGNVtt;cn2lVoF3EgJc){TG45GKf=7=di@VvJrOD zQl;1c+>@vyEgSc82I}Y^fJ3YVCw>n6=KzP=u{M7$oR|3q;1J8;GKG`;U5f7k2Pt^~ z-}eJ>h-Gl?!bkiyN(JETgK!8tX&A9V+8ma(;cVo6=nH;i`H-9cn{vIz$%}wf3J%cd z7-)!i;WNa$q!{$gMh5=~;KM=+2jHFk7a9Dg6dv&|*zdW>u^_yx0rOIh@EGb5%kVp8 zlf*LcMmJkC9%Jy?Vj18+XZRl%BX||&QK>!(!SxesAE&4D8;uuS?Q|AIZ796NV?sOP z!DFbuv%ky#0qDedjh{&Ii=Xy=jvN7=gUlxif2Z;NUyAb)AK*F4BT~Ff#^M>zVMdj4 zC+NIR>4QC118pbPB+5(J%1TOcY68bKU>rR9H}S_Wn>xuN;qFVb=`a{K9d)b`_g^Nr zH*#^}{y;pH+g%Zj@XWj)b9pmu6XpNQ9?#+R4#2I&r`WH9KA%#WpZ+2P|if^U%1VI`13rKyPC*8j>=tu`k>Ek z{O2rw7vFq2%`S^)G?VZTk(0-eBZK&voIHjcxB|aN_&6xXLaN-yH`DgA`aczvV-bHl z??FAUlmi>NJ1>*dKu>Od|6fs0te641NpfH#2b)yH2j##s0XZ!gf4Llp(_Y%=LHUwe zGf+(rIvamj)96Yi&!$Rk0qYsnZ#yBSe#ATHEr8yeyqB?43yy8^m;oVxPbX0HPCj&ws-LaF2RJG7fOW>Ms~SV_D1JU8MZdA$yZl23;TdT zIgn?W2YS{tv@CEGM9DCu9J;XM`UR~9w+aPSj>tCm=9e_xa&2;PP0ElWrw`PJk3f-8 zDWj8?`3~eyPIm-Lwhh#Y@ht0e;bHJN`UE`QNZu7<1HAAP;^`PV2i_X!bMVeMp@GJ8 zD*o}oK1Y1tW${vD>3^Ltc~?vPR8KRxX3ov)=lB*)AMcJ^lpgB#IhB@m z>wF#zEjkuixvX6%m$r+GVC`b%OYPzetX=mqUZyg2HJ5~XhOoY2vNY$U9@Lp}L9l0F zTw;auUOSaQxUYR?K5T@0ddZ@7*@fbpc+W18JpGQWKPilJ&Nt5(Q=FOFG;33Ab`zqh2`sk`eJ7!sofKWwp?2 z(*eWyMEXA^8K{?|pd*A45>g&aBWRF%P0gbzIoUDLb4k-HG9WvjTNzUkYpKZ|nUNJ@ zc9afZFmd`)T~x`v9r6%sI2kP?~>f=S_K&fAnj22Ew7yJ%Lr2#pPUI61x zTNCo8-Rt%wB~?r>&Mz|7HG16<=GvURDu**Vsu*snFH|YLZAikN!LobJT4S4J*w*x$fRT|6sbByP9;KUt!5!}chl)fE! zR5ma&G6;GMbjhP2P z@GzCfHzD?FbFAi%>({2XcdvZqsfSMOyD2+`7m8Z-T|E=l)u%cteY&(@#a68zsGE4sZ7bdE z^E6FcI6AsXs=@MS=GF)6aGup6|Np2CL&$9#Nt{%31KBX6##LcYu!`mG}sA|Fh6<(fAJTL&W2Vj`A0kGjR4w z<8!&!5dS!hr>FSBy;SxSB58lny^wGovR?!}=l%tMu@w>Ag_9s=<`d`-E@ZGPxKeki zBdutBTl~tK{g)0O_60j*fJ^dft9*^IGkx-Lmm&k4An^g}fpW1IxvX6M;n=RAYu zZS-FfMHI4qFJ;A5Lnu2~0PAR}jQ=0o_V(NVleP_^v6Ir6t$$TKrG0?bv`;w1piiC} z=quVMgYi!f#H0R0;-6uCcn$UqPY7=Gp@#M0ZiK(*BQc^dYv!=qqRbjtx)@Cf7@R2* zT};5k##a*Xs8eD{eCSr!?mw40%_>cA*VkRs^{Ses-s+BtyFdJ!_{5KUQ)ZKiOvr2g z-4yabt~sOjdX8kC*_vHf7-vcG=BB0P6gZR03MT0*9Lc^<*Up+-dIuBro>|5ll@W>d zN^g21oz5h=i~mV*)AMpKZc<7zW{v^o2yCgrv%vzUfYQ5PuFvf}wer&2N6K1i3r3Jc zah$mSaF=g_y4p1apaX%OJ|NZjGe06z`rDrf=B>KL=0bRRfK ziX<-3cIarh-eWIcczgD+;^fKI0UGq^ROV5gmg>^^@BHiK18DP%85vJL=}We|+PYn7 z!B(eO(p*zUSv<);t_=-Mm^d+kHWYo$`bb`jag07<<9M0yFydKXNwOMwgUN6wf_=^Z z1b8}L0SVrCE*OtJoFwzbG5F_MJkv`HM+fxMjobynjd9QP(gFC36n?1QTh4fiJaDDn z8)3?ON!a%U^xiUyxKdaQcxS{!R{th$ys!%R|4G*)fdIaV8_mxKd|R-dd^v-MJ{|3C zqT2P~JOunss!wO}dwA&2Wg-1933sx2$iVvVZiMMrwNecmp>_^*Clb8E4V7AO>0@$M zKF&fR+z+gEHU>@Cx&Z+;kBb`VY>JGi?&)kEJ*=QQt)#GI^hjMI;p*GCb-vt@W2P+W zSiU#Xr+Mq1KfExbaqNPob@j2HETN%Uh%{UA@?e;{bDrB3-We7fYlf*$d`9{hXDT_> z*C_r}HPPm@rH%I#<<ZS)GNY8v2isz;?WTMA)XCh!=wp+@zH0fxD>wvrbw zvJ-D7?c9~F!7ZBXFiS7@h5rx34GIg<_moZa_1f(Nl`r6hsTHZ?aGi!HTQB~`X8z_DiXO`qtjE-dEKz0 zo}@`e&7|L|fWJI8QsawGO}RQfj#dNxStY(G)U*CH(t63l5T^ZUN8rl7GU)Tmk!Y|EW22S(4)Ze3@3FQHXR_O3 zSV!gp^AHY}RKk=Is1yr!fK(0U$YCtPE=Za21T%K!T*NgE9z&kOP@J4z99K<_s#P26 zUz=|m5%c2Jl_R+QqsG;>9!!pG?y&c)D08H*VH_15d0U)?#$5V%8f-XS6)iCTA4eYaMLn{+cm$2oJ_ z?T19&(CVb?mAO4r1}f9?`>e7I-wT7aF;9br5IoGzAD~lm((?y4XTQ#UjX6v@hxns3 zH*+zVnar|A!@DnyeJ#6CFPEph79F%P3Ad z%Mb=;VcIXwkORkNp7Exc-uZ_ZTWCi3WYjbimy8us89bcFf5tU8kT_qgEUErBqNIM!<82w3tas0=`5OonBH> zrP5YpkVO}d)yAxCnRyh$cjk2m%9f^W$(a?#g~dHwT-i~x!KlKr(_~JGO(>|(PZoS+ z-`bXpc3;E9-Mlh7wd)2;;qCP?gv%PYtp#K!1y8nLe(!U4#Vzc6( z(3v~LJ;Z}C{ckp=E2v#XAijddUu1Jb3x!wS!*uUM;XkDCfq2;b0gnW~0rfOf*G<>bqYN4$LZ z6}Xcsnr5#3V~>`UjIF$)fWGQOt#|mogVcfZ(dPbEVU;o(c3kw9Eo{$mLtTr@XVgZO z%`HwCD=7_1tVKr0s?h-{*2fTyX zoZ778P6(tAgzraq0Sim>{1(_kXHol7da{i4O-P6BI>OikBm5k~qggnag}*?!lZDY< zr1v0y6U&d*2J*v35BYJ>hVV;(SFkYV0EFlEf5Jb-!f6BWFR^es3%?2YMJ$XN4e;#< z!;T;LGFf;F!nG_6EgjOAp!{*H{A?Dc^e2BRs0o@NtA4EWMV6S0Joo>Ck~8orXJEdYuFh{4SP0 zLP{6w1RYBsIgk$9N8pG02l)>JzM6#_Sonz8&TCkB6bpZa^usJXnuYH|I80$d{zev_ zi||zpe-jHIM>vj!$FOj~)*kT9Ec^^?FI!nUvo(TEXR}}tmLVN`BAiRkLjLtEy^X=2 zMf(&i3{F6O*CRbd4xNvzgM}%5;)DqZce3y_q|X&5A>75ntbbUzn}yLz+-0EYV_CQt z^;yfp<5>74(lx>qq>pD|+CL49KlCho5$O{DK|)4-ZbjI}(hV$3+v{avBMU?75w2qW zZDQdaNKa$oXcivC4><_1V}5GJ9gU=n)f6pSNz8<+U}g1w3!aU*O|%jJ>$P4F{FZBfTms07*j3NA!GSs;^T zA(}IN%#!p>$yeE#vigT3TRWe|1^Nn1ogvtu9xc#%3%Ur6uYXw8I+iB(AC(ei6;dJ= zb$Wb8%HgeK`$FY3uJga(=J;qWB}LhXw6F zEdK&B_UQ_q$J5VMA;WlCc--q1$f&YaM~!W1^AnlmMRAdA+7 z=j}{|5^?Gu)-ocPS^dm1bFhAkLow&$)r1HLr?^+H)~K~=om#JsQXAApwMiWv9uq6W z6U5;O5eX`Dq(yDfShNCw5cu0E4iN5q!M|d zH8MOqO)-6`CeEyi$VpL5Tc$yuEeBs+WPLXCF&VB$QMUSD_8H?E+Q(P+r3zg}`;qn` zj{!$;6^+Y!Zto|w$4Ch4Gq3P9zgPYvZiSAo2o+><4qgBiO4LQ_m=ml&7z-&G3n{_d z5R-+KRjTjf8B7Y`o>9R|yv zSrLliB~$WpGEn}B>;ONYc~_PbWbG^KRbiq18^-#V_Gm0@NG)>8#BM%A$dIeY6F$e} z#YK>?*SFqx|JK)quSwY9!y;xLv?GrED0Ji861LP8VPIZP;AHS>N(sU!@-D``9&Vp= zq6Ir(=McplM#l`r3Vy$GE_BQ?+?7c*nr!SM5uDJ3-$4@Z3}2?6+|oQPLb2lNYgQ~P z@D}Ey?ZG@MndPuj2FaSQ2n~-^HieKTStJb4r3s_&L^fs`#%^AT+epT;h-u9&lhw<@ z@4WHGJCt+t3%v!)R$POkIigt4{Z-k7`s<#My^qOYGUi(e(O1lxnfzK>iZt+; z@3=$9^if{CIO=wk6}Sp3h82z(yQ*rq!B|?D9ue^ZCc~TdPN^Bz+Ev_{HNx!>IHRrl ztuhm&z^=f}qZ*gHR6I@vHbP1j`}keTOte}1IQO^=3>TcwK^}U=q?Bv-A5>=U1~2UE z&lU3e?*}Y=)8$!(yuKOyZKoD8K2ad;#*qo+ z48Mr~0(&;BcW@6zFPXuSSZ=;Ca7&KsUD)7s?fdway$>#JYhK>Yf6?TaR4{MvEg$c@ zwsm=P>rxcY)|y)WCWVIe9lNJAbZJm%UViyy3P;V5WVpAyhqeLlJ=ky?Vh>_C8cl9w z@k(gNk>bMV=RJGyUjPOKMa4ow5y=nXM_;4DYh|1QOsx@5}gnsps%-UOdMS|4q#&&^1U>YTJVs-W_n zvTHYI&N0V$9eI@nW#0PkX*tP0kGpY9Mj@)lbn$#S{}%KMkY6PS6m;K9pT&aTaA^Zc zU4sO5^GxFv+-q97_LN~3Pi}HD@g}?L{D=P4dP`%8MO{95-RLPHrahw@x`$0lH;o>7 z?cAHhzi=_Bql$B42yv(6G&y6$CrlCJGqb%MSJSaJ*R#9Eo?X|Iv-NK~HhLi12kM4% zu@KlmKvt%nE~MiTw4a(d!YB~c8$2{nP`!eriI%A4ba5{}5ffsJw>x)#BtEzCh;O5K z;^UpkW_whK=}GgN?08*4bXc^xy26gH0`BLgJ=yLNSykCuUtyt7n>;GL!IQb8BhnX^ zm}f}%|7d$3_%5gZ@&9$s^=~o^lU1X)EEZGAVzRVq)uvTzty&DNw%W3`*;cJu6vNUG zhG7Up7`h3=5Dg)OAq;WHo%Ki9d= zb>8pyxlSIM-1De0Lk33mjz5la^XJy}cD|F7^yepYa}na@$>tiQ=va$jzq&lq|5m9# z4-)j3ulkJ|xcJN)-PjukOfN~8JtWfYZD*Z7_}H}kYj0`T{r&}G&Tcxp&#;Y!3+`NM z_dIe?zZ3f%HT1|HXQt&2>fs!6{K@m58Q%N8F-H!`x_;P)s%gsno6ec2^b1!nyMN|I zx2F!jEOD~BXvy^P$M@etX^Wv5k^)&qh<8LzuWq$U=f}NG zIqA5=xu0p)O&)c)wq*U02j9{og5?Mzc)x^w>fwjW;K+#1_Rf~}A&2|FTxxBPXdl9F zmc~!X@*?cl4Kw)JubEum`xUF9>hR-ldPWa@CiH8w-`{-3`QW!(?1H^NM7IlmyTz1g zus`GXLek4zz2@3=g55}Wug0y*zPb1Pb-Ta);-wyZbuek6J-#Y;toMH@3j4@*yyb4X%X06z_-`ag%>#R3N zEV*KQu+N%(=G+sH8+hh@&wcy$)e|zFo~DnO_J^+P_p|hzRuw;f^z;>{oMt+%a~I87 z(|PR^m)9!w;=E<+w?21kO6)rSdC33G6yF&+F+5w zGM!hb#HHL(@WA8u-CNqBbxc!C#krSXn%O*f)#AiQ(W4aLwoDYAsI2fci*3R zLhOJnb(HA=Zak%5&mqyV`Dw}1E{lt=P4@2xt9C!<=i7W{^{dxHdBmzJwVM3(^xIh1 z?-2aoN}3PPeIF0>%LDtG+&}%^px@Z06xs7!!=HX-Q7Bk{LB4 zzml1;`TYHe8Lm~bfY1e`T*aq9H<}j1JW_wDSMSIib*`k~@X=^}i4_}`vYEddnYnpZ z+GPz|HlpVRS;^eV2iV;x%z;Q6-oGiI(Mf)0W=6D4+$woX`V;b+8iB?`WfA@(tA?wS zIU1$Ls!vHh55HHjR9y%5`uN*R_|m-zdS2<;UMCl33-j}^fIOJ(X3lTy+WHgQjPKps z0Bo3CnCQRLnfjxQ7$0IVd%Rhkbtz(;`=FuwFuo->Lcx|?Y)aT{Y_J!0~3Qq?qXnmRYDlX%F055lK7s|WX zJso{-aIOB#@03l-3)lvz0Xl|9NKj9)neemujrte>NBR9}^~`)=OaHBFtTjzB&xw8{JG8diG! z6b*e9qgg-22rNxgS?KJirpbGXISlmyE79&mZZTWE+N{ddz3Nxq!F++bkmG;JQ&<{- zt~&adNAY8-yluSl)B2hzlPv!o@q;9clv90)RrE}vez5hPNb>ZJK9+v>Q+lyp>f1ei zcYn91@17@j^NRp=I&JBGuG{{!gL=w;0j+f0CXgue}S&H0GBtm$81Tm43>bk?Oa*gf))l z)1Kndz7ngq)7y*8lqy==3_^{DXNkLq?RCyp;oGG$mA%>MSNFVt|K`|S$Mg4m$J>}!^c4YG*ej$@#OEt$U+*eK8(Yff z6Xcq$oi;w)&(}uZyDv#U8`(<2mZ9ZX&W+qeS?gaF$CG{|SB~kspXIaXk+jQpLX1=Z zX_N1dkeN!p%>FPenG!WUL0_3A7o*kmq=V#3@{{dz1omnOd%a7#9qElGM7>6Qu!_+Z%^pSm}r(fBixFyoJrG5=0wJD1k=A$Rf*XE>YM3nuB1HPV1EhQJ+euij`bU`YOIB}pw%qj=2N~kL2oGiW75dHRWSY8ylrbS zV~|Q#d@iG&Zldp=$7ejIubIu3#}+|MF7d_GLL@!PRPHC|{dTq7(fKNG{_!_@iwfpR zcIrcEQx~e#Jv;Grjoir{0@-Q^#fzjtwWIm16YgK)z%xSJGrvE4~;7d%=; z+(m>J$r_eBx``TnkXCdkHBrq|@(AdZpUr~Ftn8dd-!qIlxqzN%42$q5vJIr~Fb`cL zWjkSG)HwM~jbl5NZ4%o!m8ufxzs@6N77Qa~f;vz35O%yup}#s$9nX5`!{{B>5SK+y zIgE7E>7m9EH(KSOVH{TJchn`M>hB+o@O7Q1D%1qoq5_PR4oC6=bf1PU(?ZSNIfQAA zW>gYlS=aHtBb0BEF(VVxDnmq4I_B8iVa?SNVxMt{KPH(*4-+EP@9h9rkB+qB@d0TwgzJ!|x3yt-tVoaAfNL z-SbA5-aA>z{IvbI-QS{f%#N2`Y zy!|nc`{jgBi2sn6KWaFj?QSb*-*XlHRe$vZ_thUv?z_us_ch#K&)fYS-kGxD(=|#8 ze|;(LP`h8;)0Y^^Y;QTdK+7{ZF}iOvz+o&0~QQT3GNU4PG24ZNAU10CJKMP zDo1Cj!MrZdY+Knz5)yp+IdJ?K`j%nzL8sFHE@ixCo`3k%yQ?=oiLm~B)5H8qZy-JH zQ1iVB?gBNm>S27Qoyi!Z2O*;vUH4}{m~(S=9NhJ6WuCBl>~n0+N2%z&G%*@A+bFgf zYe&!Utg z7(1BlS?(0(PS()1tsrMZqR9eXQBK zQ-(si_gP&s!I18>e?FST_a*k<(rLYHJZ*<{`7(`tNOwp>=saCg8O_}g+DzLv=>Bqu zfs{G4IG2`kKfjL3qU@p#S}`KXCwv*Lz?BpwzLb$X(AK{zv}+%f4*um=1+L?>F&$=CZ|9sk*;jxu5V zz0uz|(v>DmZPJw{Um^aSa^DbL5IVE@t#|iX=(wx&_pjkkc~T_Aj7j&#cZCt-$NAx* zMr$E&{E-{y`%3yPX1^4sB^_|fp$$LA=JE_R1ZME8JB)1;J;2F~ z_m5y~J&=)W7$ex(j4xhizGEWK=7ab|kI(Vh4yE5Ugfo5!L&HR#ycVN%Gb5{G37LzQ zK1lTO?+fPMP|ryDdEU%%Ju?8~m`@nZxaK3~L53m|&vVfrM#)34aTMNMKyf*Ze*Jo$CkCog#`N>#a7z0xl*df`9wdp3$CLSV`E2&5u$@Wh z8IVp)_co9avt_W|%!vI&=}X_(%qI>#>9vlfPtAaSjF^AI6C*hcKjXO~hsy}+_7r-o z6W}aD>PWGIPtY#sew>8wXLA3!ohOFX?8l)unrroF%CjZ)HBU1` zsn=!PUyb$a>5WXP1=RRS{2fZmIl*|y)4&Bs7cd<^#06>!_(|NYCTWypj56 z9+!C(GpAWEFNJzqo(%WSh8*xHlQkA&&1SUFt5@^Yj0lcbQmV(BJEFNt{-=9BKbYrV zRb6}IyPy8Q*z<%q)4&=_m-}*|{pou?VALVLE@Qvfo=S7f`|rT&XL^Is8T-L74a_sJ zs3+8RO5i_xS4X$&blPC_jAnIZ3AM z*+y@2p*-P_?o4r+e;Krh|MiSLdj9vb^auLvfY~iZ$91%4pZ~0~x;VG{2)2Y*5^c=x|d>@kYZt6I0W4z2> zgSCcFKRWroL>yEBac%`LruO(Q5ueP8$4K2n_MiX|*CQ5oh#X8fA`;#tatPm+JcO`A z>tUP7VezmWTKLoqp$Nw7M})yvzQ;j$Bw>+ekG-Sf0DC>r+mo=K?RZClVJ2$e%*|z(gQ!5OISV8TRjDqG`LxkS+Ww zHA^HOBk}k!l>Jcj_;iSz-o&?E(4CMga%KWli40o{?IMYkPa^x_GocPzL`K8``bMBP z37bhfMMmPoC>z#`jE;aLNC$K$rvUNE+k|ET0gD6AGaU8exmbIh>zU2hD))@z@=Y?D%rnLGx-CnLyZtc*uo%*dQ`7Nn{dwCm}lt zy_3*03B8kupR`_NvJKHdy2)uk+R4OECVsMs-wL}#ri4Qbpl1qtrc^>Bw25RUh)gAX zD&bSnKeZNGfVgQTPz~sswi!A_rbj{?BttfoLk%=QGqgfG)6_OZ19DlJA~VR}j94H~ zGqM2PGtfO_4K%?Ppe&edlyjqCFr>gtsDRb57B;|6k@I3;ok%wNvx(0pJ{vvRTVR*S z`4JEcNstAky&&CuqySMc7|?$q`e$ata##=KbLMvF6v>GM@|uH<9CXh@eirhxDquCB zbJhmf3Ohw+qazpHxya|{0_Bp6&RlfnZWqa`6q!>CjnD#Z&>=E69AY35GNBNvpdLs+ zm-KTv2$QCe3tL6z*8%x03J1c9T1ARy0{fCANC)&^90nvTje>HKvPjq@ zQck+^3Lp;)vH%+kBOn`^L>3XhC=>9Z0v#1;uo{qGjE==|!1-d%mlVQIk)@ocbxh4Y0!!;cu*Cs

      s47b*d{>(;|&Ag|Yv*VWis-7a!H`|GiDLpEUJ#w;Mb7C&m& z0kSvM!%n_BiOrj_bu;m|Aa_fnNL?&6iQJ0+w_^XcN+8YcC9p%JJ`Iq+qg>?9L_p77 zq+1gQgxzfew(iESd(vSIaC~nP;By1<4GEABZ6f!f<34oXw@c)He7}E_$OG7ZV6Dj7 za3Fpy#}9J+V7E2Mp8m&mJO zfR0zu`C5Q)z$8ElRKZq}*U|Yp>0aL;@Y~x6u98Iw0;X;@&17Z$|;P-<}D}p#?fb-XZ)Q z!r#dUe12y=Y!}%Q0qM{TJ4D{ig>qO8$h_Mr@*e5ls{kB(AK%{JCej)X(GUm3w`M^J z)BrxWZUxeQ5DSEV&>*}h6-e_TX+BH>{QGbXGy}eT*dg)}G9MxHQ9L9=Hk1Q;KWYGE zKWc?`=oHx+4#;n<1Z1|>L!-#YX^;(t&;q3Sc)Q3a==>xTasj=ckmpZ!iF_Ic9DmAj z8#+Ei?laPVhRkQ^{j33+0X?6!i+o-QJ4L>TgDpUrY)gSAkuPV0*>4j03cX)NK|XAU z4w1hm0co~lWBXQ-uM+^9-%w89Y!>-jEHpw3v;k>$ghLFh6ZtkCkpFf)ApiGFz}7#o z@elO26W`t-@*Q@+L)Uk;uv6swXjl#HB0p5aE|HyKfZWb1=n(la7s`S2A4&Hk`u>T` zKP#XWNc)ow==v!hS^ytAkncdgqX9O-R*|0*p^nK3(*G*}36KuU0YCm71+hSR{d=d# zE&=kh3w^(&0O7xs0Cs=b4jm%D+Cbc|S&$DEBEN+J@xKw@NnB?mZ!|#H@5KL(uHD(N zg=h2%9=czsxG;nsG3kdqGiKpMMEl#>fhu!&dFg+nyN0cqXk zyy`UzkoTHJg$021#lp6VIw%cD(<1@eMIFrV3c_O{2}l!;d^k1_seyWEgw4>#7s!w~ zbT#Y{b(laD42GG|#7}o4AOM6#U@yXiVdHSZ4zC1s9FYLnJOaH(knbaHNQULm3_Dr+ zECv!G6RKc6v_OZbqey>LIUw89hFsvhCvrXO0okJ?p#nCDiVA}gAbr#}QN8f77y0cq z6Oidu4Rx>%Ho;cdA*#1P6byzGK)yHfy^-&Yd~f7?Bi|dHy?2S~gIu3%D1=I=1@hPj zyM5ZALwHXf#6Tis0lku3doF22g1g#2mBqE47Gp{De+JRJ4Er^u2Qq0Nz^%+fUR?o zJEuj|_$a6Z(x)MxwoTN8Y}hJlBKjwyf07OPuvt|4U?6OAI1n}&{TT^>zA5OM(j+P~ z0Bc1}CEZkXPVEpitq__;O;3a^qOy?5su48O#_7i0p;vnOOmifZsVWupIDd7U^e^Zq{Z|vyq>T-PwhJp4q#E)!`u@*1!fJ zERV3fEFdgzyQn$IK$6IB@wS-|-+(k;t}3ANA&EzkxXqE>`M3?xD(6hal$!+O{Z+o4m` zWswjE$&d}@Py-Fn46V>E>T(;RAs*5o7b>9^8leT+phHwuIK%;RRmfE#SA|>^a#hGx zAy?W0cNKD1AytQo&hfYx|BOwlwAsfn}1{$ClTA^Lk)iy*! zJfuM`R06VBBYQQnS0j5hva7-&1`;6?3ZV+>VLfby?a(QzCKBQx8M2`qYM=p{p%vOi zU1LKu#6ue7LM7BfBeXypbcnh(9AY35GNBNvpdQx4X4np$qOOaCI7o(UD2EzofM#fg zc2TQsh=zDbgIuVDT4;n8XoC(>*M~z4Btj+>LKW1*de{uxp;Ocikq`&TkPYQf0}ap& ztVKZ!pPCkx^gg8L94%xa~ zsDv750OaeCuWN%2QMcL<4Wzj>8M2`qkiQlATbrR3+J#rp0J68mLmK2lCDcMAv_Knl zh`K!-VjvMRp%AK|9@fKV*bbed>LVczk|7()p#~bD8Cs!T)EzcNLp-EGE>uD-G(ros zL5HY2!yyI|ArlIr3hDvbJCVJ!6}F4ID-5DwFwh6zML&L51+0d(umR{>@1lRXi~f2| z1jIoyWJ5XBKm)9Y&4AuDouclJ1Z3~VkGr#=1gc>TGy!_==00#YdhbE+J+Y7k$linO zJ;>fu2kT%HY=s@7?iGlF!H@zop#qSV!^*}UG77rk|mh@{g0Xf5i`0y}#A5H=EK3oO(`EWC|iE0c$ zJ`nzh0Oj^bGN6z7E%gXG9@!M+(R5LdRs(h(n+e-QtqX$u>f;EY z%s!q8)vyjIn~%})31#z1IcyU3X*A?QBj8tCB2++=sLzP|tPV)?IpLpILNjpwMHZ|F z(rk-|a^QR$=U;OEB{sj@Ch9Bl_0@8~)?Xtb8`i>hQQPrj`%I{Zt)jjr{%i8~H8#G9 zhDvA^^*8eLH~e6pNbMlajuKJdlD}_B`z^A67eMCk^+4YLkq8Zd&h~J~hFaJu>O1`U zu1VDQ==mPmAM$~?ABfwzT-1;F@FV*FiOzqf19pE3gLo*1DllP9h*e` zTm$Q1tMEe=hz0!mH+ug~+FjAmA?lYXNQ5jP{1;??X%+RW4KaW(zqX0`Ed|z!>WqL| zQNNR)-y2vvpR{`hLz`%+72XjkS_`C!W{yW&l|Z=F49HlWqU}Vef^DK5ASt7LYx>UGxz#fW0Hoab&gV$S7D2J47Ef7|LOr=$>h?26l=*8vRG_5*>xU zsLi5#p`%wN5Z1dwbe|+ZF1lItF(smz+t7W(fcQX@=;KI#9C62CvtK6E0O$SMMIX=k z@%VT=vN70?$pvimj|cWAVDp6aqEECT9qL8LMgjW)*d4G9Iz*pD{7IxgDIZn?c27e8 z$#IYdg-`>H&07*djpq-)z#{xPB zZx=ljn?v#A^k_%{!cT7#eMSPL1IGz7p#spIK$Uy!cNg=hXHvzI}tL0uo2ColLA1xBy=Th z1HwlNL_jPgK^Bz2a@ZnzRKDoZlu5DypU1Kv+a!8iE^wYg+LRRFJf$95VW;R+^raG> zN_c8DG{Pp>A^MzXC2+(LU<;6GSQQn56EW{p1DKx)Nn|ET&RKduub$d z!l%Up;nUDFZL{d<0)$OR$8^eIdaLLx=Zq>4jO@Ub4fRsuzVW=kN}xb0;J8y zhx{gJ6 zTZ~@jh;&Ib5Lbep65>kMf{DYoi=!YOWFd`TUkZz*<`rU7Y|RzW?Wr&1se zvH%|{*TQzu%LW6smLa=rhv-XUAr~5e_)C$$bhGH?$$-t}gslh%^0|UMtf&NZt!ROE z(U-M}zB~mwMOTN3zIqdIyb3+5kgFlAhP+(E`LzM45`7(ep3C)(yF}OGPc3pcMMJsh zo3UM&3yrW%^sVe~D-nG=dTw7Mx}LZ@;$WxfJIUugF+ljeO``7$7rhog*RB)&U;?1` zA;KP7E&5?>HqI3N2=*Vv)}zEdmM)rS0L}PcKb{C%L_e`Z^m@*pi~!D`LguN>qMye9 zr?JsQ+NNgF&*TH)&tm79mn>qS40o##pWLJ5%OMRaV4gw>*7;(TM9=oa$& z3g@pjh<=THyq+Zb4RpOh{F{}cHzz}@=(pH2R@QIF0ruV@4P#@y1%2Zt&O5TC=~r6_P3^p{umvfB#LHitJ?_s3_m|#F8YgX(c7X$e;E+{72$ua z7rh-jUz4Y=>qLJ;*xyLMqgwRe!$toCzuNOfe}_C{NBup%d_Nenpb2(~{sFr?(f?zu z=zp#i{S!KV+AO+*@Sow|38H`D{I?3|6y2EuB|!S!m10ShSgKVlr$#Iqr~&VY66~tdJF%Db`WZV)f*>C#zZYY!T~d z0oJEJnsi6EiWS9iuQ+HHi?Nc`XO~#VY!K_XC_raF;`^-?>-a=KZ%nmV{lfqs`*(NShV| zgiUA=YhnOMJ86Sh>6}kSW-_`bH^DBkGKkMeffA?#BY~Vbr9Gb+ML0Qengf-AE*11W5 zzViq_uK_y6%1(xQvCe0IJ~}U0F4l$FuuH6*7_nw$0e;L*hjoA+?mJd)A|S{8#>(vw zE6)aO=Mk1y1^AfPCe|E$oP+F~Lb2vXK#f@W0{E5BG4~m(06PU~uvx5m(XbjCfb)yW zfqh{LP&S3tuogA}d7e-D`LU1=6@WkUiJQMutfDALf?U9-BGMJ1tBAPb2*9u6e5i#D z&?*-9CaVNJCDpJF2)o#ZNT?C3G!E7SdP=uLr&wjgl@ZQo8&+91lmoJ54bTj&&@NUv zddksX9uH}d3zbj{jnD#Z&>_}>aEO6K$b>?uf_hjFn_)Y2inTBj;vgBap&V+U0h*x| z+Qs6YXf29{cu0d>sDxTTwt}*%NQap~8F0U}Dk!rG%BEtASc_92OROcakO1gh8UXYx z#U}Ski+iQTz0z9R0&RdyB{G$RAqhxdnGeeW{oF&X$|gX6vkUEU(r3id0oxdNLju(<-8mtpfV{JX3g)<6>we>q{7>cJIK%*HtC3xat(DkWiJg_$S-Ayv0DfFedd3CTsv6*U zRWqP>Rl8Ub(kmi=NtNFo=R!NPrZ`f_$ieYN&&?&;*-cE9`(>V%-)7Q4k9WkOEnd4;4@ib+8ti zU=wVG9b(;1x!q1V)w92Y^1p+)J5zx8yC}1}D9^h{dsmBCYr-HN(6MH_Sa%CVLjo*^ zwXgw*y9a&uREu?Q3=q~(CDwh3PzbAG6YLP{{xHY_(ma5k2MAkB*xCSazBV250sRjS zh7?!}=zMT1><}dqUZ}(Q#nwgQGJ6!kIwfHu&UAISIAV)PPj#q~^8Z~Z8@i5_M5s|+ z$69Q4e%CQC-crn9`O-GWPj?+V60W}LI(FqyeMr}F7{As`>N-AHj?ve49UpSgjYly9 z=Ic3B;`_eG$Vk}-asC1XkCg-zIrYOeYr9P8I<^R()pcxhd{fu4BmCC0>)4fO^+VS& zzw6V~gs;qqXL+Q_Bh5no<|5fc zk~x}(hH3obEI{gfj*GBwBm*29{QJ3psrZeCd+r!+56P!uRxFsra&b|ANSeojFV2KM)KitnfKaRPo6fpn>vl2cR` zm{43q$S8t~X?!xOxR}5H2Mzy+B-1FdQcADD_si7XKx*z(k!g9QWd+4WfguA=<7{8e zq0IatD<&twjO;5M;Me9R$EN-R{0-KBDED)UizwT2N?iOlR8Fl8nru^d?0%B&?))lwnhy|NiucY>#N;g9 zFT?q?=rXoYyAJBk_v7-q`lY$P71K6N|6=saAtYGyL2JPp4z@NEUyc{1pDFVDwGv;O zX`80MF)RO+6K8rK!(3m|^isi|GL(aITDoal`(770NEx~LwEv*?kOm_i^gY;<<)PWM zPE%X`_Gu;k{GQjO&Gqe?yqjNg7oabgzhECYo9k#k=}oRpOsIV3a8yXRxk_UR5Bk_` zA;2$yO_`K)Ed;M2W3jtTOu3a%dd1jZfL-HZ$eUb02c}L7D5C}FFtH&Up_cw<3r4#s zhuL_x0KK6yS;Ub^ZTbXr-!Ua)>U;kjh4gpdp@Kb-slf$)85;ee+A+tbT)OMJ`~Fde zEfasBe3qa?gGw@C(4x6pnw%8-`7T3l7WdseO3RdYP$p!@v}2QB z(@TbG$mHC#L{lfh7FI^TZm!Nu-;yb_S;&|>dv_gl*HoxXjjccT1m^x}^qN*?^3h#d zp=+hP#P;n2_DyGUXGRafnlk;i} zcHBLFGS_*qoEMSRuP?Ni$Cq_P4vVSZe6Z4<* z)Lq-b9CWuZlhXkH{Mmz0?Ht&X{q6m+T)J}{s)sWFnlSZlESa3_Thr!h2#t1v{bax| z`y$HE^e>_E4j>f_F?kNQ%;1#}?3qpZgs!GMj)En%Zw)N++gh$)()|u_U+jn8U|okw zIg}#6og*~T=;x2CgV$xSS4hK}X@{ZvjA>iJdsFagE21|DUJs$`ZXtFG_Q_euUY=C= zHEwcb>aBz=co#EQzq#9((ltFzciDz~4u$;rt`MvdbMFfHSFkBRD|w4VL1f$sJa z%-wNNw8mz9oF1QtckEnDXte!~g3wYx>wizwFG~f~I#5UUjA%OuI6pq2RS= zo^p(LCdIz@;b5BCjFEEuQL!nF;C<1ws_x!3r1AenkM+l^wmVnBCqUDFgZITbd)r$I zKaw{!KZ$ikGC7*U(O8bA^E{a0$C))s0*vP}h?&OoVltu0g!Dtg#F+Sg{?$00<4j3G zZmO>DjKGe%AA?dsqE8{n?kCfAEx|_w-b?_h>i?@KaP0gL9ix* zWi=Y9bZi@marl+#dtoe@+!;yZRVMKxDG`(2SRL<&20b%nVrtp=(yhfjM;Y5eKTP>g z>(Xc1fXROvn<-mUj#GRKV+fr6K870l&4u; zW#4iOwgpqCBaxWkdv4O3oR|{nZVmh9B&2Qs+Bs0`2(>n&%ha1GsWjip6iRjsb!Get zhM4rGU72<`njCbuxL~_CHbsS5iFySZKJz8@20hyvJ84?YB^XM|GnN|FF%I+nz=)k zblum=&=4H)hMxa|_xbKIPVnBd@A%V{M(94-eHRJ!(c`$Yn5V%!ztlo<-Jzyb&C`#$ zXLUct8J(ef@}HlRO)i5oZbok3(Qjz<5gbJZpN-5tG3dV;5t(s%a4cxXe8Fei;Ml^9 z#Dh=OX7nF?G7UYon5RK=Ki>a&uM8i}z2A5dv=zGNck43GT4tumj24VFQ^G-SjJ05C z{-+VbAD>8hkzrm2a>F=J;`D%o_62lw)`6Gh^&we%gJzS#0#rFU~EPQ(ziePGLDsj{}tE$+xU<#9C`tqZ6JQ+ErC3;gC`(&bf@bJYZLN=mrI za%L5B2^4qbAIHP zD=suwcA$i+GZmE+p!VjXuB_`CCT8|UIdkb+xfY9x{pM-}|K|-WRJFb-IxRlE$}5~> zoJtuJ7&~cVW?;&sv6<6HW{e4>P6?!EOq!OOJSI8NZ{!rt`^5#Or)H*1nwl9vB4gyl z%o%}6V*?{6&IpW8otPXK7?YKrF=on?z@&^o>V)*P)G>smP8^*!H92+SxWFjVO`Mb& zNK2iNnu*fPNq*8URjFf0H#RU~OvdOGG>;sWnwFY5BQ7vDHFKiTITocO1L-3(GE+xS zO&ggJNS~UKK55DrbR?s8V(P@P8CV%JVGNl-(dbF(Gcr=grDVpDD3idrKxW3sl87+F&~<0ej;V9IFf#N?5g zsgouKMvWmWBS)o~KzySVMyHKToe&pD9ywv;IFp@_5hK=>o$lf=3C4|?I3{CcT3ldC z`k2wF=74fc%@{KpZ;_=gQ2`VIIjGqrOFp~eHeb4;tPb9lW zPv)cy3Z%=G>8Vr3#05rXq)st4GB#rp?wa}}g~{Vo$`jGliCzAhIx=AG8Ryi%n;;sDPWPxwVuQ&oAz} z@0H~gVvJOKr2@HmIfW$a>KM7m_wNuwH^h?C0u(PQEhwim3FIu`Hd$J*r0Z6U1wU7R z%z?4;NB>Ln%1XFX6)emvTs#nCrRIKS{H15+bIJK#S@-+K+2zAR!-ev|TvJlq@8~f~ z=MD@oC^Mg||KC0p9pul)U&NSp5CmtpDj4gT+1V1p_Mhkb&!3?VT2ydR!Jq=V!-|0= z`6Yw8`eeR;AbeB8|F`E7fAKvPJnQ}&UdXXR%Hlf|4&SWs_*TV1d=hZ5gtNBxp{yDl z!TRk-um*3W9L3tVNAtbUUaX4SN1|D2_E=Wg49IcJ^BgZRtQvX(%SFcW$` zKh4^|X7$`5d}U*uYrGrNO# z3^XV$SIZ}?0(_(VlU0MSkz1sim2N+mA9**&L%jE(gB5!3kw;ij`8C!+p2b*wHBUEh zGV7605xjZh2;Mgksg6=Td9wg(imTqLkL;3PSn>QAUVGhF1=Mk> zpE_Q}sQ&5%b)t&p{X!?HljT?5{}QK8;VmMAcmu$xiubRocwQ=bI%}*Zs58|tR&)L< zZwE-^jR0q}{%R8M1{h`5DCSKgV|gn`ib|Dr@)vcE8qeEFCa8(LIV7Dmjx*F0`As@y zyL_!Od0)sh-Y1f!X0Ss0dA#lAeE;1?GkIUgEH#_=8sxEp>s*zu3Ruf^p1MdCs`2IutT&zme#j2F|B$cZLYN1-h3ge5_617xSs%5;5 zH?34x^Dd>lRb36H2p)njTM>s3F_%D?N?le{15Y1O2jQO~O9R5Nd`c|pCX zHmH}>%W9))QLm_1)oZM>{bG-TbCH)$eMz+M|UxZfb2_d+lgfdpb-XqVQ5@_tVGg7~Nl=pigAI<^lR7eX@?zr|5xtkRGg0)kE}Y zI$jUer|UCxf<99Z(`V^KJzSryN9ZIyQjgN3b+R6#$Leu9MW^a>^mv`7C+LZKl1|r? zb%vgzGxbzGO;6WZdWJq%pQp3+`T7EVp`NL8^ejDF=juE?N6*#yxjiqDUZgAZV!cE!WtI44`VxJqUanW@%k<^CN?)O`)K}?hy;5JTSLqsk zjlNc2r&sIiWvhItZ_qdDT78qgS>K}T^sV|feLHKsxA8W>ZSt{vq3iV>`c8e9UZd~U z_vm|dgT7DSuOHBB^@I8${jhG-kLXABV|tzbi+)@`q1Wpt^;7z3-K3w<&+6xNvwmK` zpkLG*^h^3>y-~O5SM;m;HN8o{uHVpa>dpEs{kDEbZ_)4S_w@U^RezvA)F0`s`eXfx z{#3W=&-CZ|3%yN$slU>H)!X&g`WyW>y+ePi|E~X`+x2()d;Npnsejb})IaGC{j>g; z{3{-*l(`UGLU=EU}cOEz7bk$8s&t3bPKfdRPZr;npG6q1Is*FJqOvtRt)= ztw`%AtEY9e6=n6ZdRu+0XzLj3SgWrUu#U6(S;t#3R)6aR>qNQTinRto; zKx>dS*gDl3!Yjt(t)bTG))`iUb*44UI?GD5hFfRzcIPB(q&3PKZ6#Y{tg+TOE5%B+ z&auW@Y1Ra5qBY4%wn7`F>lUldy4AYPy4|X` z?y&B(?y}ZccU$*Z_gW3seb)Wf1J+vWLF*ywVXM)4#Cp_v%vxvt#d_R&!dh=VX+32< zZ8cfXSkGF|St$=B)ndJ3y=uK?ZL(gs-mu=ZHd}95Z(HwJTda4j z_pJA=R_g=nL+c}JtM#$raS^u_nS-)7nTEAJH*6-GCYmY6qvbAm5w(Z!i?b%`W zL3R)OU_0DC#6HwM%#N@Rw~w%ov?J}K?4I_~c9h-A?rrz6qwQntW9`0nz&_6IXCH6J z*!}GjY~DC(53oCsb z+dkjEz`oF)Y3JCp?Adm%ooCOn=i2#pfj!T@$S$}&1o?A7-5_6_!p zcCCGreY1UwU1#5F-)7%#*V}j4ciMN^YwWx2d+dAd2Kzqye)|D?t^J_=ko~aTXg^{< zYCmSLv;Sg0Za-nKx1Y41vY)n_>}Tv}?dR-f`+55X`$c<${gVB%z0q#5U$I}cU$Zya zuiJ0fZ`zyfx9qp=ckC_pyY_qb`*y4Sf&HQVk-gRa*#5-+)NZpsvp=`Lu(#P?+F#j! zwYS?}+uzuKvv=6v+JCqIVYl1g+27kg*gNeX?SI-o*&X)J_P^|Z+q>*v>|gEQ>`wc4 zd$+yE5l1=Nu^iiR9M|!jFy|nrhjXwK?i}JA>Kx`oIEOn&I7d2>&QVTJ=V&L&>E-lx z`Z&?fG0w40Unk%k=k#-qcVe9W&I!(mPOLM)ImtQMiE~bI20DYB!Op495a%=}-Wlqg z?wsKyIA=P;oU@!nXSj2=Gr~!7MmnRM(N3~6#u@93b5fjC=NxCeljcltCOVUxbZ4@Y z;Y@KdovF?=XS$Q+%y7@0DXI+e~c=Mv{qXSuV&xy-rTsdBDxu5_+)s-2b2 z)y^uX#<|A1*167E?OgBN;N0lcIyX5tJGVG>&aKXE&h1XUbBA-MbC}Jy4?B&{BhI7FW6nC~FV5r66V7_)N#`l&X{X6~#(CCx&S`d@cV2K_ zbT&9IIWIdKofhX6=T+x5XOr`~^M>=Lv)OsedE0r%+2XwGyyv{{v^pO+A37g7Tb+-c zPn=JkHs>?vbLR_ZoAagfmGf6;yYsd4jq^8Whx4uTcjq5YyYrp%z4L>!)A`Z)r}LB3 z;r#6U%lWsn%lXCm)%nfobbfbsJ9~JUh;p@Sxi&Arc6mi{n0t`h!#&sycMow7bq{kR z+{4`?+#}sc_b9igd$b$n_Hui>ecWjG824DWuN!cWbNji+yD@Hm_XPJuH`X2Cp5&hF z#<{1s1KmOHVE0sah-x>6WvK}x;xp;aHqJL?o@Z0JKfE4XSnCO=egPL`R)boh3-r@$DQTQ zc5~f4caA&P&36mjdG1ASp*!C#a*N#(_hPryEpyA=1@1z3kz3&|c9*zI-AZ?vdx?9g zyWCyjUglozR=HQWSGrfZ)$U67YIl`e<6h%l>t5%scCUADaBp;L-J9H--CNu`_g42d z_jb45y~DlJy~|zW-tFGw-s?8F_qq4G54daH2i=FOkzyUBgseZzgz-R!>QzU{u_ zZgJmr-*ex0Tip-b58aR4t?tL}C+??ioBNsjx%&lgf_lQ;=6=aLp`Ml&_bXY?n@wMF z|H?ZYUY4ue?eehuwY=(n-TjB#&iBe+biZ@IcYknqx<9)AbboR?+@IZl zx&L-|xxcu-y1%)d?(gnycaJBY^0a4pw&(EvYR?Pv4)S_<2Ycb(A>N_hVP1rHxOaqi zq!;NO<@NNA_M*IAUT^ug*T;+Yj`5E5`g#HHIIo{~ycgs3_fGIm^kTgM-bvocUYvJ| zH_#j84fam;hIprW@!nAHbngtQ@e;fzc$wZ*Z<;sV%kpM;=X&RP+1~ly1>S|;OfScq<<0hT zy*zJ@H`mMe3cPvVMP8vd-z)Npy%O(Yuhc8^%Dn~NLT`~*;Vt%-cuT!XZ<%+Acd57B zTj5>iUG7zRS9n)?S9#UmO7CiKl~?0k<6Y}r=dJdx_ipfR^lH7EyqmpSygKhz?>6st zuim@EyVJYNTjSmB-Q(TsHF)=V_j?a`YrO}(hrEZqM(+{tQSUKto%a{-aqo%$uedwm;VXc>5FWPqsfLzk2zSWq)day8W5Ud{jK)5+uv#5*8Xn$d+qPHf6)G6`$z2` zw|~<9Y5QmGpSOR}{$=}D%ih%fb^AB%-?o3({(bxQ_8;1RZ2zhK=k{OPe{KJ*{rC1A z?K|6dwg1unXZ!BKHIYWwr#C-*4tncyV9<* ztL+-Q*6wHbx9jWy_CR|NdyqZY9%2u*huM4D!|lE7z3qMMeeM11{q1^tgnfWL(mv20 zWskPU*bR20J=PA`j!kW5b6eQbR(8-1+2ibk?1Sw?>_hGGc9R{pBX-n|+1f^Xf<4im zWKXuI*i-Fk_H=uOJ<~qSo@LLr=h)5m;r3kn2z#DA-#*el%3fd}Z7;NsvEz1&-D)T7 zq}^t>+Z}ewUSuz}({`twv9orUy~NJhdAnd2?WOiId%3;BUTGg|A7`(!kGD^-SKBAr zC)p?4r`V_3r`f05XV_=jXW3`lYwUCEbM3YEdG`7C1@?vZI(xmn!M@18*uKQR)V|EV z+`huT(!R>R+P=oV*1pcZ-oC-U(Z0#P*}lcT)xOQX-M+)V)4t2T+rG!X*S^ob-+sV; z(0<6?Xm7F~w!7`k_7?jQ`%!zV{h0l@{e=Cb{gnN*{fzyr{ha;0{eu0X{gVB%{fhmn z{hIx{{f7Of{g(Z<{f@oOe%F4_e&7DU{?Pu&{@DJ+{?z`={@nh;{?h)+{@VV={?`7^ z{@&hh|6u=U|78Dc|6>1Y|7QPg@342;yX-&gKkeQ2U-sYjKelWC>z29YZiO?h&$V2? zYdhNcaLKq zy9?c8+_>A~wz>&7>9)D;Zikz47rBewwA<-s+^pN>E^%{i-YvLAcd5I~UGA=MSGvc# z$GNNAJgnR~f=g?puYm3y^&jeD(ooqN4|gL|WUlY6s!i+ihkn|r%^hkK`c zmwUH+k9)6spL@Uifcv2Pkh{^{ z`-S_Z`<45(`;Ggp`^8LQ;t#{u0;1j>nukx$?8o$=>=lA#P`~m(ze-D3{rvs?dVhp}fIred&>!WG_Q&`QexpCu5BQExedcpt_|jK?&=2|J z{Db_1{X_gi{qcU2ANC`D)Q|bvM}LAp(Vyf`_NVw${b~Mme}+HPKg^%y&-Ul|&Hmy3 zT>l7voy;2-TT^pEl5ev9AgC;X(}=C}JDe#&3uFZR=Zr=Rh&ewV+*&-r=3 z;1~U+{xW~LzrtVXAL}3Iukw%gPw-d!C;BJ(C;O-Pr~0S)r~7C4XZmOPXZvgXbNqAt zwf=ej`Thm|h5kB!y}!Y~$iLXX#J|+P%)i{f!oSkL%D>vb#=q9T&cEKj!N1YJ$-mjZ z#lO|R&A;8h!@twN%fH*d$G_LV&%fV)z<;D^;h2>#IFrhEBLVsun8(i=qge0sCtHSEACaewnh5f_2a6mXP z+#?(m4i1NeL&IU=p5gFtuW;{hpK#xBzi@x~tlh`L`fx;eKsYiyFdP+*4#$KIVPiNp z41`WdLl*K-gfdiNFbsv`!h^zt!$ZPD!|`EL7!D(0G>nBh#Bf45F`N`m4yS}u!)f94 za7H*YJS?0Q&JO2<&EetU-0+BSUN}EIGCV3=5FQ;a437!pVN2K=CcAfExbLvBfK-bE4(|rC%iYjFT6i|Abc=i%JfaJjB9?3z;!O0=Xp~+#%J(I(ednNZy?vva%xnFYsWPNf( z@_^*X~UlJk>CCXY%k zNFJSBm^>yKPqrjmlZj+9*_Lcib|h2DMajjTcw^ebv)koO-HY4fYQyN(sW~b0*fu?RdDyyd+mFf{KjT}aLS(^j-MiU8 zwsl-C-9MpbOmM~*+BJYu*3tv+uN82zF}~h=wx8U)*{*5Eq}u*kuQ=J5aKgTZgzfvb z{Rw+7;J5GHOiqyZ;&+Z~W0UPmoN(g4bHk2(+kGc)8K3LhA%FT$T9}%inCzE|4KeML z=*bj4IZ1mmr9*cTZJtuQ;-r&TOkEUC-gn(_(Z22ElqC&GF8&{9yVUW_OiS6o)Ykq} z$G1w6O#gIal2ex+H@(E^KUD{4x-osHO7Huozi&G^XUPSUg(Xh^IeM9e#`K-jyQK@g zTe?|q>7w4!&Gc%KUTxN1EjFgLc~0JnZ7ufxuH3w|Pb(LfdhN~J`bD+j+o zZ^`x*`?mYf*S=oa7=QlWx$CdoyV;tam3M{Pi!)OLoxuTY2b*FuY>q9kCAPv2Vu!H9 z*b(d~b_`o%quL?xhrk~KcL>}eaEHJh0(S`9A#jJl9Rha<+#zs>z#WRMGvxhk$$|C$ zY8!^>^Dx-MU=M>m4E8YC!(b1CJq-3R*u!8CgFRfgHaD1y`!Gl7?+Dl^l zBVdn!Jp%R!*dt(%fIR~C2>l*myhj=DQSe8>9|eDu^F}#ul=H?oZ;bQCIB$&e#%T8# z?H;4uW3+pWc8}5SG1@&wyT@qv82Dr0kAYu2WFK=uvH$-M8JeOFnRq)n23n z+KY5RM=>2xymUbE(gDRw2XqwE0mV%Rv|s6f_A4FGex(E2uXI5Bl@4gX(gE#P+5x`< zeh2&x_#N;&;CI09RLR*(2r-#o;%JXLw4_5zI<%xiOFFcqLrYRxlG2hCu}WgWwN>KM4LH_=DgNfkAP30ObL`JfifjfrUc5AK$#LK zQvzj5piBvnDFHGiK&Ax9lmM9$AX5TlI?8<<!<3Y#?=w zR9&)1Q8EHfM!?AkIN8A9${q5xEKOzklCyL!XM~-Mu#*vXGQv(q*vSYx8DS?Q>|}(U zjIfgtb~3_F*3rIZ9lZxxNAE#Ku*nEE8Nnta*klBoj9`-yY%+pPmZpi2d-K_jeVrl# zWkjHi2$T_lG9pk$1j>j&84)NW0%b&?j0ltwfifacMg+=;Kp7DzBLZbape)lHo@ERI z0VpE?Wdxv%0F)7cG6GOW0LlnJS*{Z+BQRtTdj^qa5NQTcW>wu5As{lVn}rY$a#xoa!y~)Y-h` zV1LHW$?ba3+9^5wf3R8&R^Q0v!g%Y1aanllEEeViukU<$$p~KSoE@^&*8^;wBGvHY zve@0ZWnz5AX^SgPUtIBsDOqwhEm(2plsRk1Z0qc)?K{WKIpd3MT4T=KF=a;O|C#es zN$)y)TC$o0_V|8$?*Jr|OL}6Z0ov_eKboy|i~9PWQ=6Tw=KQ`ba(HWduT!mw$?1jh zHrMLAQeH5<7o~7ky41T^>*A(M(@mFj3`Ry*%q*_Be5yUG{W5bqX8YyS5j)2_t;U!I z=^OZFm-K6^{Fmmmq|$c#c+$J2J>4^BVJ+6+y;|AY(<4u_DM=5oD|gGKe!{MUX+D83dZ4*|P{v)PR{q z<~>?IL(6Aq`7F{NG<_zTzPB>YA|w|zU}sT@KZ_c$v#0?piyE+Uw0%CH_&M4>N89IU z`y8sxq1qg(&C&Kb+CE3y=a6g;$>xx34$0<_Y!1ohkZcag=8$X-$>xx34$0<_Y!1oh zkZcag=8$X-$>xx34$0<_Y!1ohkZhjn_~)sPe-6Lq@M{jg=J0C{zvl334!`E`YYxBW z@M{jg=J0C{zvl334!`E`YYxBW@M{jg=J0C{zvl334!`E`YYxBW@M{jg=J0Edz|Rr* zc~1Y~-5kN6Blz=N`905d{^hv_xjfhTm*+bF@?7U%&H^E4fsp4q|MHyq$ATee!H~0H z$XPJtEEsYY3^@yioCQNpT*z54^XuxN6_X7 z+8jZfBWQC3ZH}PL5wtmiHb>Cr2-+M$nAgIRZ3CfaVC$oXks(u*?yTIl?g~vyzip$wyUc<)hqhgk?U;{Y6;jWL$EDWsb1S z5tcdJnv-$K$++YQ%^abb!>>8~n!~R-{F=kBIsBT#uQ~jh!>>8~nj=ti1Zs{z%@L?M z0yRgV<_Odrftr(p$;rXwfv|Sio-u{8qqk1^iaR&n5g^!pkMRT*AjCd|Gmy59!4e)U;lUCfEaAZt9xUO( z5*{q!!4e)U;lUCfEaAZt9xUO(5*{q!!4e)U;lUCfEaAZt9xUO(5*{q!!4e)U;kOcg zE8({iekqa=}0lE^4YWRxT_O7wI|;-N%Omn0ra z5)CDZhLS`>Nn)WSu~3pwC`l-k@MZ}QmhfB20=tB_N*1&wd{Xipl{`l!&r!*9RPr2^ zJVzzZQOR>u@*I^sM>PqNnuJJAdu!TRllZ7fc+?~~YWTf|-)s22hTm&=y@uCoc)cc3 zQIn{sNmSG%DryoGHT+-0|24c{laQ$4{~G?U;r$xkuNl7@-ml^P8s4wr{hGu>P2!;@ z@lca^s7XB3BpzzwLrvnLhWBd{3iYVQ`I#sTrc*Ek?P z_!SKTzTUqv)urO= z{TowVD!$&oG1aA=G39fy^hfzzeEOpa;m(*QgvHWsP26_IlxM^;50q!bXB?GhI%Ap; z70Wm(--r*c^0D~fYC=?e#!(ZZ;xmrQN8-~S)uZAwj>=2oGmgqjoiXJlv5ceglK70H z@{;(Bqw|)x~}cix~>(gxV5fp#aG-~*R|p+ZmqgWe7%1) z&r_}XN%kv#tvX74#jkZ;D?a$D+d8%CHnHIAx>kIyuj^Lvb$-;U$HdqBTJyZtJg+s+ zYpv_nPOW-PEZ0}PCO-XBy(T{WQ@tiW_^Q{$2VeD?_~63_H9Szm12sHQ!vi%uP{RW? zJW#^}H9Szm12sHQ!vi%uQ0qFiQ^N-}d{Dy&HGELR2Q_?9!v{5dP{Ri`d{Dy&HGELR z2Q_?9!v{5dQ1g7(Jl{3Xcg^!%^L*Dl-!;#7>LBy0cU3x>Kw^m$j}tJGJUNvHD!r z@Ieh9)T-a)b)EmU>NoM3f2!ZaXa4CMQQ|ZI^o^)at#3q$Wq##*y+hp(iFKdiDcTc*`UAAYdm#6B~suRU3&!E4= zr@yMh#HYXd#*_H;SKoLNpZ@APy;G~+6ia_~oi0B8RUIcj{Z$<&KF@>dIq|`TM{9T# z-PWn$J@i-y{Uw(B36G(#WIxx3&(Kw}pZ<)}9$ja5&{twOcwwvMoMgsmfN9bxMTTSwSB!qySCj<9uvts`t5Ve1H6N7y>T z))BUjsHv!{=1zpYBkUbv?+ANG*gL}B5w?!7b%d=WY#m|i2wO+kI>OcwwvMoMgsmfN z9bxMTTSwGe)YWw-!rl?~j<9!xy(8=$VebfgN7y^U-VyeWuy=&LBkUbv?+ANG*gL}B z5%!L-cZ9to>>Xk62wO+kI>OcwwvMoMgsmfLEuz*UYAvGHB5WRE^9Y+q*gV4G5%!L- zc7&}XY#m|i2wO+kI-=ep>MiPOyc2abE>@rZ2%AUPJi_J?Hjl7*gv}#t9%1tcn@89@ z!sZb+kFa@!%_D3cVe<%^M_t`_BC0aN?h$s6y1MT~T{VkUHjTR47hl;lqDCWZ9%1vS zt7$n-**wDL5jKyod4$a)Y#w3r2%AUPJi_J?Hjl7*gv}#t9%1tcn@89@>gv1`VfBb= zj;Q8{YL2jdgzY1$Iii{)syU*XBdR%~nj@+?qM9SBIii{)syPxpBC0u}nj@+?qM9So zB%+!lsyU*XBT*)zmLpLn5@jN)Iii{)syPyMBC0u}nxkfeJ5jU2V!7{{4HlpKPPB?d ztEkxld7b;M*#Yr2dPSmFBzi@y)05XVdPlMak!(RETM)?>M6v^s>_8;?MWSCM`bDB& zB;Vr2CnS^Y=iW84!TS^Y;=|B=;y)OYndQQy^*LcON^L~Nr%#5VU&Y_r-E+uT2~ z&1z3gxFP#n|TW~m#b85)+Pez4QOb84nn-aRjsA2S@S!AM@Eks6G|uiWJ2 zTjl*^LDB1KxRF;HF)DS4oT1`he7dFKM0~oXv@Z3D442ZX_zaKIsQ3(z(x~_hkJ704 z43E;N_>D*w+lVx=v`dqwQU?j1(yI8}9;H?B!B<)pAAF@%@xfPG6(4-1Rq?@BS`{CB zrBkWDWLhYliqHK}I+eQ2ft6clr6OXdd;(%&eC`Sz<>9n%dTMSQhany=`*+E&EG_KW zP0N(<0-S1-=Zaw21*R3}F;CzR@>7L>Lr)rn8rloS)OHB5DrD{jAutPrPpxg6dn|%Km+sV8< zJTo|4Kf3X`x!KF6C$}xMo2|uNzOl`BX6lO*vzN{2))r};ZY}PbXv)RYj)q9FG)+UK z_%uyJr1%YGi`BW*(GV#<)(~gEsv5bX=P4O8E4V&UK78*Xq=U!;|6rX#c z;ZuBuLBpr`41?1zy z(l9IgX_tms@oASXGR3D|8g9ks8Psr_N;XTctKn9B#zn)e_>7B&Tk*lya4SCe8g9i0 zU&F2V;A^-QAADVurm|jBd=0(uJf0q((<>9`Q(Zr% zsjeTz>WxhE+=+hJKDW4cypRAX5+Eh?r@E4qGZ_J0Ns7-f>iYoV>l8|LWtpbBvJ|T! zJJpq?_!_cPB0x$6NQnR`5g;W3q?#v`^T5|Uq4?lyo>2T4CNEi>x>UX&b7m`}sH@I2 z)m5iheOyyrWs0vfmg*`~e6FdhN%83uvL{9Mq`I0+Q(aAprBBG96d9BvgHmKriVRAT zK`AmQMFyqFpcEODB7;(7kQAvmvrp#IqC|p)RlTX$b9#R!7o0o-`hw1Z!6K0ZqDYAMK;M~!<5 z)l!(9QkX54Cj_cZq1qIxO`+Nps--Yn&eQ8=tSGX9PD{RroOqqFp2%2FP>7vUh%Ht} zDPtXxv5uhhT3*+HO6j%uI!aP{y;4>VFpb>*X3QzTPAR|^t9_yXTYRN&3a-UhHle^; ze0>fmuogf19)$_#PA}}*ySW84&B3KqQj67KKqa;KdZ(#)PN{SjOP}E~DxGEjp5y5= zTt=mHn!#xqoJPg7?ANC-gTXQuF&Rvj!C)B-mcd{djFrJu8BCSIR2j@fMYT{fqXjc% zFjEFIWiV34qAAl{m{2))L33Z?a~EKt3>L~X$0e`Re^@Dll`>c;Q8C;QRZb?ED_m3w#Ll9>?*%^X3 zO;tWBYA&4{08Ks%#jKp$3(83v7I716(XyFVkoFN7?&80|a%;o<*nE#sSGM>^(qla=~h?=v2J}q&j);0XizwzsZ%FHViH~fHvqG zrE-80SfQzRiQB3H3r)R?-!x%p-vxN?3l@L{&wZh}cR7I;urMsrrUm7a3(x{hzRL-; zK$GvH7-)ee-^FiQQ0=<_Dycvv6{w^FW+`Bn0+m!`O$&-87oY{?Lkdm5i$-B4Ks5za zQy`xTsHPx)QXrlRsHcE>3aF<*L={j_0Rg<5@-1*8)5z&^u<&9{JFxz9b4vHyYc!j@0Dpo~*h3y|eaiG^5$u)7%%?5W3>vJugYgx9;ie zxlXgAY2lux=6es`b7d)1*R%3H?aB9Cx#?E#bQxzorr3L(B{LY_E8x8X-Yej}0yS2k z#tL|_K#djfU;z&n@L&NC7Vuz!8Y@s^1!}B-7Yo!_(Nkl)woK1%y;xZRo-E+WLU>YE z=u2Mb5hW>A3|6hBukv)jqJ^;N^tPq1Gc`#`6{5uE7WDP$1^MLh#AK`a+n%^sZErL*~L(F@^dZIlCPY-y#GX*bbAIH(k>wF z0@5xZ?E=y+AngLuE{2EtPwWiJ1J#(KmnQ99eohuiI=ZlS0c#gzFbXmlg=8?~_h81i zFYeOg$zT+uzY5Y{1*waI)I~w+qL9=@bN(E7lDcSo(mw^Mi-OceLF%F)by1MIC`ert zlDcTlpWdeJA$3upQwvfT1*wZ-bf{nDGKXuhFOajvXx$8qzTYT|9SBMD{o)fBG~X}2 zYM+9{L_uPr7^~dW%%xl8M@3|PAX`fzQOpI3xj-=&DCUCXM1f*1P|O9%iGt)rfnqLD z%tc*zS(eNwsP+!gTp*eY@)HI5iGut@L4KkjKT(jMC=k~L`H6!3L_vO{AU{!%pD4&r z6yzrg@)HI5iGut@L4KkjKT(jMD9BF~s@R#ItDQcJVz-Iwaq75i^PfN4`MepM4G^FTVe4U0Ay^F64Zi?Q;SIJM&yZH2< zB?3k7vR}!MqIdCC8Bnw?>-ix!FWHXf7ltCwzDwPbtGTTIl+%heeJqIXI3E{WbH(Yqvi zmjo2*>Lo?P6efC?MDLR5P2Ig5#}p!ZmqhQ9=uI8I9LE%5l~WSEOQJV*`H~W13iFl{ z_4%@&pikxf(1yw9gDk!L8aZ<53saTv;MCyt+V=LAs6>F1_|m+q#`>~k+ZGH*;Y_d zMYg2U${OYq5;DrSVTJ?bP@uKJC?0 z+u(?8+AFrf5!wFL&eB~MO!B?IUAAIE*@xfP~ z5g&Y=PvV2G^GOQLz*n9TAAIE*@xj;mCO-J8bHoQ<=biZA>--ZRe4T&dgReSA3f#cg z`y@W+>wOZR^EJ;PKIf~Bk-|96R~;ih?N?qDpY|)?iO>1UPf}0^p7N9U;3*GCK^^_m zrI!@e@wzU(#MkT9j3@Q^QedX{vt~T0&zJo=k7~w|x_sHMI5p!~Gmg~h%j=3uoxb?s zGLC#6QVQC@)vUPqI*)7Bi{gW?dQp6x$JFVIuk)BXeerc3Q>QP!&SUEIrEpH?F?IUl zgU@}SPG9!xeV|TXe4R(s>5EVQHExNo_l3`0ickN!k9_V@3iiO)xFtUL8n?u!{~EW% zr~ewa#Harnx5TIa%nLpjAp61BxFtU0uew$W26Z0tIZg3(9`ZR&@#(+DFY)QW#xL>d zzs4`|>A%J=@xj;lB|i9??~y`9@HO8fKKNRyB0l&U@5BdR^F88&uca#DgRiA3;)Ad6 zPKXb_W`3kV5`4}4h!4JIe#8e~Ge6>kuO%tsgRfa1@xj-ukNDtg)<=BsHEv5`Cit55 z5g&Zb`iKv{zE3JX_&n!)E<*Nm|26K5&-~YvkNC`gP5DS6DDzKKKH@X~H02{c^G{Pg z;xqp=eV+Iv(Q1J#8Z&2|D6>m`S1{H5m@dg!dQ1J#8Z&2|D6>m`S z1{H5m@rD#{Nb!agZ%FZm6mLlJh7@l|@rD#{Nb!agZ%FZm6mLlJh7@l|@rD&|Sn-Ax zZ@9s$VuMh{2BC@#LKPc?DmDmJY!Is0AXIvfs@Nb@Qd~4KeX4$|uN#{h*RQ#14fnpg zvvp4IYnodp^u9{XkM8~A>eguQTd7xWlP@4{etEn1U7v|0*rfosvvKSA{G>VqWnOPqB>FlIdjQkuQ+mch707)E4C>JmaiJt%3#^pc-hp%}ta&a3t7w(`gPa*>QM8`uKC5q=I34Wv)$&WKRLMd)4R=2 z4mLl&!ThLee%LiX`2GQ{A9T(44=~@m!F>0&16tqhn%kZeTDKiwzH^oN_HpK0;(Y5k z^UbdL#@Bu88(s5tZ@$(wU+tQ&JZo+1D~FjcA85YRHDA2JeBs&aTVLp!&v(t|t}>tP zn$L92r@Q7;FJ0OCWY>J6Yd+pJAM2W1<$AZSGapUNM{e2O`bgK@a`OePTXvgUuI{^e z_xje&7nqwj_3d77KHN1o-C%CKcDVJSuKA#t58iD)AlG_-*Sv4Sym!L9XO(&Pe&$_W z^Um(3|Co1l&D*=?ZTp$GcFkMfysGt<)Vz6>dD9!$w%&B4dE;91hSzUsz2PeJ`VHoF zUGv(mc}>^6`c((FUOi!6^~yD^R~>9#xyHQ0o0oUZ%LL?QUGvhF<|QxQ*m_CVym+H| zk>J1R26MypyIVJO&Gj<3uHS90zq;?b=dEvDcY(QXQ{M}_<^^5zeDR;Z+dOZ*xmE__ z+F|ot>FsmZndby^jqJE)!aQ3B?b++iv(}ntcFi-o=ILGYw5P6ZJ*{h=y4F0UYo6RS zPg*m>GzpC|wu6g`b=BmTZ3g!aVA;=8@t& za-BIp7@5(JSZB`dnumAI=0gu|ZBETOU2}HVoYgfCyULu|HD|0dr+3Y1%Qv)6>zY${ zn^TT7C!cgs>*UIuG`e5wq=U?f^+Bx@yXFM(PM9!Jytv!c2bnS1F;iL%eIvuGTO(`D$c-zOi8s7yRcm;)8NPA(t>SGuK51=QWj5Wo{A%%zPh9Kx#2kO) z@=cp2`X1Uf50NH3sn>k6sMSc;E+~+ zipj)eU6aazY1ee*<<22y;1F}HY#n=$+2{^zZQN}(9J7CG!#cC!#uYu-W7e!~9kahV zrq|pX`i?$oee3A1IZBQ^YQ1^jisM=j?3yFH<^f%E#A>ttz>(Ja+T4G&xnI}ZclGMl zeY@s9_ukOD&sFB$8_c~=HRY5sB7*aSGY$s z2OhAYb>N6OVBMP50UOM^HD-S~ZvS;=KRJKDu30NRUpr#f2*R4RW{r;B>QzZ=^=h+P z$8Ob1-&&QJRXTPnW$adZvr@+H{e6iuNpEgdeW7c-^u%|KJJ8rQrrkCDa_RoAX{|Fx sIw!xpxk7fVIL<7W1}xuTmaQ@JE5Q>_ea`Zu|Nr^7?Emqu+;iFg0p{V-<^TWy literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8c53b1a1124daab1aa7b685a7bd89f82cca409b3 GIT binary patch literal 307596 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�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

      ;@%G9oNp_zATb{=(?lT9T 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 -~xquzlb_2l*I`CniS^Nal7elx!q1O9@i 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 Bzw7`2 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..688c2b70f71c5e632817c167d1a4270d976ebee1 GIT binary patch literal 295360 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

    4. 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 bQf^^f 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 F{{lBG$yfjY literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Italic.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b2ed04a1230757a3cb2482f3c4f987c51619cc3f GIT binary patch literal 303004 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Ǻ=hOC5E*d&sf1l=JGa-kGzpbnNp3#@~7 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 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif.ttf new file mode 100644 index 0000000000000000000000000000000000000000..19eba3345725ef862feafb7b38b3dedcbf0b26c3 GIT binary patch literal 330052 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

      bJ(8za;CKSdPb=}VxW1M2ZeA|Az|%isdDPxb zSMvPd@H%YcW#w@?wWUbV`N4G?HGh-mna19wPdFa}IUUYhqT&m9p6P$d6UfsyC~ZJT z;`Qvr-z_8468;49I$Y;NNhg&C+%R*?zEzA<0e-5Yr7RP7&1@FM$ zoyp58=J)}Q&*8Y*Q$FB$KlW}}nbfGa%7r4H0D=k)G z>Ec9QpGrIrAKio(tSr%ur~gCUPdMPvhyEIL_;-(ih6s)4=oe;(2(v^f<>KYA%6J9r)KMeUIhAs+Z|cA=jCB=6$0x zIBsP5X&c!Gc_wpw7f&C;aCL^M&fLn5)KZM*G2VK@^;XX%a)9Zx#K#CxVCk>rkK_6l z&(l|`667+f#qnAU7qXbVD4&r^=Xn09ypQbWd3NzUlX#v(%;re5S-Lov&j9&MMmWl8 z7V-RiHv3wCkK=W&$n&TpY(Gx(xaJF#o+zvYH9ljcMM^sGWJZTR=eU8>9LP1W5>MaD zaLpNptD}tU$?^6)UB_@y9btF#I`g@WI`>m&0z{o3F5*uYvry#oXYm}zO{kkdT9PnQ z7g#cRg9MW4xT=wvWEQDT=HW^tOUW`)174+kQj4s@RU7`f_edT1=k}3$@EmWgW(&2eMA+D0Ctp z30;J4WVg^?7(n(3Q-mpGzc5{xPCgNviOt9Xv4xmQJ{3EN9mpZElh}zI7Q2XD$r14l z@eOiJ>>>6b$HhKkA96zMFZL%V#UWx2`Ai%pjv$|lqs7tWtT|o;ixa# z2={v1xWBs+_a0W~-ox75dsv5Hb?`s*@)3%aIK@hw&IT+1z+X;S+f2>Stt;ZN+ydd)wD z&ZmF>)XB&CzrN*6Wck%led^5R6bA6nPeiMfIuh16B_V1KJd1}j%7pVcj`rZG8mdpR z#s~dtJiQ+edttwUDg!v4!$XxC`0|o+*%UQh4d38-a(UR3hqHJ%kcWKstMHs9zSkPO z=6w8B>tEIn`x^d`^MQwS4sZL6e+Vb@^uLCG&Mz3RU_D4Y>KnXC1rmuG{-6Jpt=Kmi zRXFw-FqRU})*DES1u#uQt!;lH`yVB^;#}(iyInK?{xvQUNQM3W%oRu-m-k|L>-~MY(*C3V#9r}#NY6!V7*_5PRc=eWx<1W}lp8J}5|LXZ)F;{2s z!_zeq)W-kyDW_6K3ly_rCPWQce%JWF(~-ZY^RH7O%NBnp&p*rWUsEZ4syufsP_{xt zIQL3ZU&V}bD)(Ncm13^X*v0M?<|Dxm{klbI-&Rxpw?p2_-Ar1pL!|QGQ7`Ftl~s$O za-HkIZq%)egg~K;KKvb}f0gD6Rknh6yUX^FveaF5TxJ(Efc;?el3f_RU7@(ZXJ|bx z^$E{F@cbHJH`?^S@Kf?#g8*@A87QxemF1C? zM*gGLw*sZkDmB)hO6aKlYb1INp20%0@q=5oQi-Ugm)3#R>p%ZN0&xHlz3WeHRB15| zxLEy4TME4N2N|?t&tCmp7a)PxH00H@e;ZqhoDHzL!0&(0wyC9;wnDx8pM+csnUw$g zUkk$gggoTZXP%h<{#S@FK zBK=ve>iwTn|DMLHRP@&f<$qw&UQuEgEB*i0lD}SF>7C11iv4Hte>OV9s;T2v8Gb26 z|5=IPkND4T{DoRgqF(>_%DZD&UeyMO<1Eh0Bdp!sSk4ap^GHRwjB<6_*Ez!{tfhaT(xOsYZ{oj(hgT3>3}PU zbjCTV@}w)SVA2g&2+6_~O2*>~C6nRJ5#Y_4iQ3M>CE=9SJm7EPvXDi%Jji1BcRaa& z$CIppf5(Tc#^sMQL~Do@r-wd3SvzrpD3E)60?DViLdZc}HgX782sw#Mg5T*Z!Y^=X zaIWYYO1X*4jl966CoWuiDo}ygv5g^;FzQa-;W6~3zC@;e)Q^~`KlLX;G>`@Y528W9 zE!0B1sEyhXM$ic2O{>rEa38pK5Ij2xE`0$#zX|+u^+N zVA6?)-FcWXoaN`9C`J$bVjQNN7Xo;omd|*>ILSgb9^56UcmW6_MYg=xl6^8^RD8klKZ12&u^)vh(#s$@Mg02q(IccKqPvZ zUZGd%*GQG91$`%shU1AZN@f>oD~w>?Nu+teg0uwoGcG|WCzQi!%R6|6nrCNk+JQ1k}&a8^mKn(~@6ld6}H}yuy#u<^1Ga?P30l?WfBhvD;Ji-w8 zy+ugDf{=|iBBT+9kl8PhR-hFSM&abENMmRW!dM!Mkc~wmjiYf0tI=u*6KDd$8ngz& zTC_I8x)j{zBbA7qkp{q1a9UQR?XV{z(lnfy6=^zlMnpP~&O`VnU5IcIU4(EQU5AkE zgNU?{79zY%FC)B4uOj@B{)q4qcB4hE6O`+OdJ}~KA0i(E1pN|ulD{zW?m3}q$SJvoP z;;R8lbm+5h;{5kQVX?48cw1O5IZeD~IZ2=)EOs>(FOy8c8%9HRlQp77FGzQY;A%&HexZ|y1+pY< zG8<=LUT1N+WM9RX=4+?W+dTQRyVkPXDekYl2P3OvS-MuzRp?uzzr9aBOg$ z;I6@agL8w&22Ts#9sFtVXCakBT88uqSrPJX$R{D^Lav6~3;8|N92y+jIJ9MG$I#B9 zT|?gp9UruBYZ3z2dBRPr>_V%!D;f6(>dY@aSZzCTyehmuK0!cSn4eelyaoG(gJCf zw3(k$KOudN-Efm8(6q+%1vu>nPWuH12gd|g39c91J9sqb^oroU!AC<#NR^N_A^k&E zg%pMy54jR@C*(;e2@MFfgruJldO}5SD zoOZLD>;ZO5Sx$#fil`Bh6wxzc062XNoW39V7@YP1rwKUSFJ@$nBW4^XjRCPXa5}l5 zO+ng5w~av?=U{ND@a!n(G*O7_cgAVgZP#JfA=g3Ir>;+2AG_Xn?Qj*kHoG>uHek2l zUDs;YeAgV;Bv-C0$JN`_)78z@(UtD%;7W6~cQtl3awWNHyTV;|mlfX3U{^VpKRlg2 zic|Uhm(jmu-Rpm^&%Ms~I^Ao3uj#!e_Zr_zx)*yd=AQkY;hyI`_o53$=Znr2eO~lg z(V?QfMei4FEPAJCY0;9RMMVpX-YlA5G_PoG(VU`LMKgQ~gaD5I!-QLCcVq83HX?iSzu?d~skf4Y0??v1tM2CCef#d4cc#OFgKwqXYX6<>rt4SpYX?$^!NeXe_7_quNScEPn( z*OpwHmyw&1labx$K%aemTKj$Lcg?qfZ%yAslZU5|K1#JNT&w^8;Qy8b9*n%(q>@5# z9-fZ~*sd(5jY|Np3vB?P zBTxY7;5$2l6*>`)1K>*%h5=5Oz$nCD0N`B`MgzVofw73M0Ima22jM2*d%zUH!xEUM zR$ENM{e0k!RKQ%Ah^#3&_l`tlWqb#)10G}e?18vCV(?Vz3w#4&tWzZL zLwpZ0>L8(9aSLM5msp$LN4x;A0{DlBR{=Hx{}l0N0C+EgkJ3H>_=^#rNRW|q6!=xd zCjcjbgLl&B0PtD_|0M7N-#rl#_1BmH@b%(U3ef}tf`R)GVp;<@2HYR<7l2~mbqNU; zRA6-v#tJLg9qDL8u&)Z(>nFi}0K6wqO^Csp;N8dr9tK0#f*Eh1U%}u(FyqY`0@n_p z5^(5N2+9pbTL6uLe~35*!0H29p{P%2N8mRQ zcUD0Ix}o3=1I>NJZ>XU89&r!Ac%=V;coG2pSawIe3xM{^;A<%A9Ex_!C?gbl9QqA# zM()+i2x4TmMB0i;NZUna1H5i&yc2@jd&aYW$D0sh?Z1B`*hHkSn!j9ZWm(k zC6=Y{MjWex4t=d48PF8zXk!6nUCSw-BBY=Mk95P~{mk4=w6mSx_2Jv|n@C`h9c2Na<2@hu{Kt>+$1}1|jM&QsH z*Y5x)a66$F;XAvy0(b>NFP8^EC-vR%4KrwA#=!qE?B$OVp#(3DUq1R1f|v0Vu`<yItL$u&)^j7dtv>|QbZ*EW0;B!ug@1WC5 z&+{9kJLy4sl3u9)bTR{;=Q;2=FN25qU3l!*<9qE5@Y}yfw!m9o2!H){vW@H@?~@PV zdEN=%^B%IB?1$g}6LLUagRkZ@NMABQUPp4_tIHvSV6#S%f#~fsNxt?Z8Lqvjy-)g) z(c1U5`?dQ-U+o2aYd=nK!eg%@$y>YfX9B7ycK@*x$vgXgBSfxvVbfk^SK9|z?06r z=PSrB!Z2YH87hnu#tRe37$HxXD4>Tx-U1!VLR>w`GkEF-67&+>rQ=CA+8cK>5WY!z z(y??I^0tEazAkF`1nGI~JsL{$a24V$_I10!ziV}kik&2bQ#M_PDtIPOlho? zNqf^dbPiI!WzVEaxGExV9$+k<^=3Hp*U^gj>jcT9B4h*Q$8!hCr#j6UP(DV(;qN$r zFWwK(^;D*AsLLg45HjKWB4ju^5~d-neK;XMkc=b_ymyITk8z(t9GXkAukZ}*O2IQ( z>PhZ``cN{I>S(+eFW@gHfVKk~f>y!%Cx`DFS>T6T~&J3JkhJuX+9PEwGj^A1h< z9b&lK4k_IJ-9J72u2M{kHk~Xx&Nogjq1w1-GSb?2LIL>4l2KaYWM(HJG4L6yauHZp z+M()hpcUW$h*|FFq@rc2-l~)*7Ba874Ei3S_$Lwr~WJaEEmuiS=ll zpVmNa5k6K?YfqeR7(K78!P7Cf?eDa$VjXW?*D5EcRqLD_&E(=;2M)0Jw~L$c{of_E zEb3)PX?8C)32EguPXHebBLCk-c z^e{60r;aB&{;piEM~QMi{RD1LroW((NeZo!F7{U*0w&TtW#T2};bkR{PGoSIdS8P6 z!*{P-lIF_(uw>D&StQXXUiPa^ePU^1LKtqu5b7`56CxskXk|%@!ec2M<67CzU#urY zM5e|Mb|0PR+4S<-;803WRL-j0=l!--vgF}I8r)xNu_(V^WJyQp@2&dlJ?eJwe`9c9 zlWw)Cefm_oB=NwzJI~3~Q~5=Xj#M6x$P<*gwNLEadq!5Cpd-Xcv-D|oo1~X_8uT3( z_XIy+tp~eq%Y!tJVXMus$>G>-A=Dd6l|P3cVoev zzUP%uUw%nvpa1`s#lAQu(O((ef|CXX+2mBtJV(w`p1WJHnVgzO><3Y+qM7wJmtyc4ENxp zAK5%*DVX}-Y_xT7;s_cM)w8R^C=54hY4e8N%A0A3c~wP6yT!|$E0sZYTN>RGTP|)g zZ%UgslX|bHTntb+8*QP(bQ;%T!ZaA#tEw)0wpBSK7RtUDK?x0m?>Jm53!>odFJvf1 zR~a>6gMzdU|SZPi2O(QQ4%-=*j83_9};jy($ecF~Qr%TZl}Q zyamz(uhywkd%T$jU2!N=ltZ~ase^q3LLEJGrz+K)sS2hylvEIEiYvi)FWh)iZMcu! zM-y3zCThfZF(TdHRRz0CJ zmE0$wcZ3LWc;@Q}^*o3c%C zr%A9AM5{_u7PRhJ@L1Xxv(w$aRSsqG{3MmG!dDg8xqt;i7au27uj2e% zC{$SaOI)|NGo~J$shi`eT*@{CS2k=q=>OoRZpo&?*aSm6lo)<3(!{4f94PMu(vB zgKLbqo{g_d!vjwgD_w+fq2pQ>heY3^)~l9~USkI>lQL+-@bK@ySp4H!<GDi+vWXsZQw%ZTwoUti5^z{4ZZ&av2 zQ|2#uZ^gPDxie=>oRK#c6%m;1r1_|afoWw$6y{@1q>M!{?bHYRFV0}|$;!@iX5lt% zx2?$UUgeWY)CA|x4r&@MJ}nN+Qy$ZW!X;-kcx^$OmO#F2WDu<)YnHcG#(J}CgLpf9 zq$RP=s`YXNX@~%nd7FuYqxium^`Xhm&uw-${)&}_-e}ckDn@! zD@4&IixwO^b>di3L*|h}-3Ot(%cy%f%yv~Svf}I(!3R3S?N==HQ5ND7m@*0UdUAe; zv->MXD<^+Z9(W~oSdFFtpFV1hLJGO7fC%$Owr{LR9Xe-ts?l9yqiau89V6k(z@W?s9J~mCfB3*t_ zQQCKk-bGzSVnbbbqpp6aD+YS(#bUU!FvFk7$1=6|h+MfaTEr#1L?M2$*UHJ|!G;N-~zli#C}t45Dr_0GtV&P%&z&)&Uv-aMv@0*OK0mZEN2#z!pQ1r+Zs zvc4=NCXjfGw<2rB>OSo!X{xeup#rE5^|3PpR)W^_nW zKGuu{tG0t>&c)TMQ~i(6sfRLOS)mM2dWD2gx6A>*va)k9Z>b?Z03W?!Vc5KdOuiZ0Zt}JHJiF%Q=i#sddiKmD$RauGp$ZFjf>wDhrXB~ zO%^XG+ms!T=oh!>InK8uw34O?Jd^7Dj2U3S5ot2Z{9=M&x-D#mqP|Acr#j9RRi``? z_6ILKR;u1osyw35DS>1?xod*;;l-e+iZ^q%|$i>6NIZ5XAjlt0s~ zL76R3Rh6>9Y>#Toy%X3(0JaZ$irEYAPZ&A1vbR6ig+zZ@vfIKUBZNRUBV(EUytPml zyEM$xKdo!$x$&(!cb)BDZGPLr{ALde+l~nGJ2rXdN1^3vb!dEk!pO_L-a2XvimaDf z^j7xO0rttt^U2$kC*8W$ZS?+(S+vgHHP6yBnuJzSwz)`o`aCu7o$bn%9V@1%q&}tv zk5ZeCcLqlOu;a}idbUby(s-b<=hzD6r@o`dBsc1wmNsF+INE|vqRq!o7}u-!5arG` z<$-dV>BrzPvvZDlYAr>(VU4*PT{Fm` z>GsEZhl5sC&N&3TP#gW4eKVk02U^}3F~T@CAA2H<4;wU8b1tg(JDR>kV$6l#6q?2I z&n{d2k8L^eQE(&_>(iE_R&4S2AHRCkH+h8z%a@8cI??ZZKbdI`1nuLCz9#rdpGG?+83s7ZT$wy!u=mBpE@&@g9V$Ie(?4^;dagpZxswW zWV>Z^* z`6P+4zsmxupIl!e$KO|u;fs+S%8`f&nx6|(hKUvq84RGSm=IpJLsrlZ%tcDtfl(PN zt3-@8Xa)ELWi4%u@S%BYC&9l{p_yUdY&APunhOUxzaO-fH_D;t=rf1oMX##MTt%;9=-3ck_s*XrcM2KEwGQ#+Qr+Un*l-)u1pQCEbDLPc}o z*IO8$x14mocjx;PTR69h8;S=wpQYh19!Xv==5b!1h3DZcXk&I;(q3A^I-C@a*T(s6 z`KHj1t`~-_-(sd;`E7apz&UM`O7O)EaT7SVUP>%(2wFI|jeh?dA1D0KCwZ4tmD1k= zJ7nd(QrNNOX02L73b%Y$vsTU$sM?8%^c2oxrO}%8laz#R_+ynV@ZowxHvPb#Y zL01YF={rgWdgt3p2Kb@&{o$yyiCLJETJvFu*)r{)%$eZ4dBbj3&fNH|<5hE~z9To6 z3(OkTmvQ)~6DJ=jMu%{F>%s+FSpB;y*>V)>UmmAgi3WoQmY%HM{(fd(j2#+`A+@R2 zZi|c%(YTT|s37t+sIW^ZT%P5fL_bGk+P^czyN0qzDT=7Sc+A%5{M&Ogyb5pD3Jyv{ zyAjn0mQOFd(G_3d(|67;y47`na#$Hrxn{Xq&xW_76&VXQk00H7E#pDKxZJkuO4^){ zHV46b%4TW)K2Sz6mhvXE9tRcW)*ZGG(@G?tYt_Bn*x6>K$&85REfagH9S`roTd#br+zC0zCF)=}x{phxDmbbjk#oH>7R^o9r3e^6hxo~C5NJ0)Jez11 zMwzD^5CYejHJ8wT7{y|{_$_Kl@mC;-+jhJUTV`d3hqVvwq*g`(m}brWVT#xNH>a3| z34RND;Y6Zq2z_sjnXWO^PmZP&23m>JeCG3Sss-n z3hk9;1!l!=-awBl7smMsE6j`b(H1Ki0}7OMS_kuvUgo!jB&8ONb!`EiU+G3M@o?UE zRxc@w)nBtmtv_4WzE%$Fo%_rmbyR*GZWgAQ-~OB~m~N(dW;CehPP2plEIa|R6GBad z4V~XGey}eMHSpM~Hd9^BsEgiu0pf4Yagk$_r1=5G-onQ4v32K3pWdMT=e=lfUMXO_ zY@$37r@=1*FC}}EoA2pVF@LK3aL}v>vTyG1XLFHnk*lF#Kp7(P!B0rL>^%7)TmH+7 zxZb#KfsRe34LKi_O!ioh`xO_PBLW z8KsOmNWX{Q=K`&*923}53%fVLV!rYXFV}3XF6I|!D&H`-C!Rf!9t!j2%#u1$dVj+r zxcf4dnUs|ykRg(-iN;ys;Hf7|AqtE1C+z`EicdV zJ$etRP|m$v@1Db~nw7cEx$WD&-DgRQj>-$=V%zpJ=#7jfbt2pExI4dNg0)it{!#_0 zhdLyqt<3Ua^{4s-y$PGt|JfDDY9apA@RwaKGOV2;mNt8qakO`QUm>DWziEr3{k+1* z^_*j+sk=U0)W4unOX@}|L`5lA{mq$)4Nm@+*SS@d{*zSx`k>73&~ElO4A}akv}L7j zWs1O7q9ua_s|!r9aM#DnGq^{e>rof=Xo9xu;Ik#P8mz2X zCEk*l0H$+KOgx+6ys88ns6;uZL*H0m>Ju$1i)6aD-`nADH&u$yJs;EpRY?A+@R3|o ztiR|(<=!t5N{+4Rg)t*O+PpAxZR567Pb(~$5frRohZB8okup}YfCu2as7@>6Rezel z_N52bh+btEp?mg(PAO^rTi*1W?;rZ(@zggPM)swCLG@BP_y_!K{&{m)&bDJZ<;UT9 z;yK5(_jmjF+%bCA42>9`H_K66{d}FSHK1!1m6|v;&vZH(#lNo8tORIVV!UsOXE%v* z6^Gx;8Yen5wbo}gh_EE~?mpZ?mlsB_J$kRlf!;BhRjZF!yu@zKKK0q&h$?qJr% zq!;te^vuxa@8+znU(vJIEVEK0*HiD8+G}LU0H)sKd!!9)G`Mba=Ou@*tx1)bz-sSo zak5<@ft4X-p$soRBC)kJ?^mU2#YT8mG&LD=n>DQvB6;REZB`+4#!SpJH_SBC0hePiL|m|bn_+^LnOoK zrp+pbSXlw*f`9rvVRXF;eI*Zb?S{#IyuheL?~($QY{!dk?{4(b!FL=5{i$5G)qfIKS0ArtryNyC%@DsUL+UwpDNc+Eu#6lppLPQ#NGe&h)U(%%F$Mec2t^YEN$;} zvN-J^B^&!xv-LQntnZy@>os)A;DY+i;cc$Ccu+xu=E@&TE&_>F(xoRTQ?-%mUQF3x zAe_xEUaFr!n8t}#Ap|zEd`}Dl0T={&3|DTlvBDo?#p$kfjj_siXEMeH_QsY*%7E8K zfT?O9t&dxp=zlWxKe5;m`+2tq}nJ4J^@;0&?#B=sybA=MyBW&oZSDN z&>qm1xBTcA)`nY$ly5D?D@V-UHA16Kf8@LkIes!^5Vkp}%jLQ)-Um&rHsDw{`@*2J zfhK~@tog2&MIGPR;BNM1Q)`%aZtvqV>A*o>mXl(;jGxy<4*iwR`l?E%`1$Doamct2 z`)EUz7f;{6L{p50-Xj*<|AD~M^I`6 zHhb9-=!wC8T61f3g#J=waXZ!(1|-9(3egVdqVbI?_*P$4D6p?qA|R)_QWW|DY!9<^ zKHzDhJ<;D!6oh&%vTcBwPFv)^aBA&=eqRY66{5z)_r5x$1GSlfo0XCsMlqL?kP#Ge~bQ7N!U&C0r6m%?no{45+-!C#TTt+?dhvP9NC^7A9 z7nFYLBBFcZvluR2IcycNV55GLZs-wk9UT;}NC| z{*u)>E419Ol)>xDuUXK1cwXQBex1$2h~RR=nhstUv}QqzVR?NAn7fEOoIW02$qQF) zlIk~$H3$yjfxgTwNr-;>t_Y%x`3L4X9i`XG~6m@>Tq6_Pyk&S}!a+ z=Z~es9mALYk&_i(w`y+pnaY#ZGeT@rS1Uiy=#KW2pOj#_17|hB4!)PW{g52|ob9&Y znSeTat9A5eb`b7ywu$0XQcXX&rj3*x6F>uGBip7nVEyjjmDgj)_?(92D+kod=xUyF ziB;J*Iw*BQ4RehNBZ8uRqbxO6UYc^L`wVJ)XSyw9<|=BK**&*v-SDiJ70wQ;SCz|% z9HGbH|4-r;(X4jdNG=#zTU|BBp_EM?HI36Yb?q?A=q7vQcWV50$BqSE(r22qo-4aH zUMeP?O>b9A7DY|NlxAl;wymiZ<>VAbU%=TGg1^4ar+_@W-?Zvk7R?S3gir`eoA11LmRyP7~bW=2p$B^82-}w9$*$tjg79XH@I!mfC4$hvC89#X;phQ@WhI z@Xm)m$^&YUX}I7)?ON)l{31n!D_1Av>5HeC#tcM#VRz97Z=wDnxGC{maBIh0ajGjN z-bdXtkai5#H%T2ZDx@;4>!%#;O~+IiTff-NZ)?U@^R_Ax)cjkmH3Os%dJSH(U3uzo zUbv$yatL)D)O_WlH}-qb)?`vwN|TOZ{thco;}WW&e=t*Tq><2#>eUhw(Np>G;h*Ra z&%D`J*7|EBIa7tycEg9aYd3so&ikxBt`NC@ad>*x;6 zGV~#~GRNrvA9gBY`=LXJG|QYi;aM?ZA*-w4Qe1V#U656Eocbf^IIlUH)Q--1g_S|+ z)--oasa=mVRy}qT%4`HXkn>U0AYJQ@&3fqFBT}-K_xAOfl-;nhG2q6|7OOi&4RmYW zvsEt-x3K0}%X<5I=M8C81&`iuxLm1PDbY<|zw^w>HMIJMT{TA@r>8e>RJmd0l-`?$ z_g@@cd19AY%l!QwcWKwWF-z^UX;{CvVq)_;&s^^BEVQ<&R5!C$CwuFtI+?XuyRbu7 zQ9LEL!dfQ)?LzPI_v1^P$cS(ZIn0}>m2D9;R@Z%SXsBOorRoXRP`Xkd8#}mxURSyD z;3UodI_c5TxiQf(F}3SNN2k}R9TUUn%OX1%Dp$u@IWH24^OA&ELa4XdS1?dZEETF( z^G=XptPN1L5P_MgdQd}{2lPYORcItz%bM-6xRXuHOeBh4)a$3Cy?Pz}NqNL$dh6=P zty{KgwPJr(_P$m?TDG}1xQ$^KgTBY&Cl;_K|} zuc>BPK9#?Y>DV#-+}JVa3e!6P88h}=dM9VUIdh*JKlO8Xed7cYY4{F)L-)&M@M^VlWX)yXt?`fkjCg&qqB3z+jD0ynUaZQiWDwYg6{_& ze$1AAv@rf^B!!hz9$P&labOGn~ulG(7+3voF$1*)uTmSe&299{VAKHDZQ< z|B(mtKX^N_S&uQ7nN+UZrUZYu@t8_O;pv&$+0p1c6{BS%sV*u$>b^tg~B(mWvCe@yxcaSVz9CpHgSfB+b49o&pOzX=cK&5%Gcm{=P4a& z>Jsgo7clw2aFelC!vOQg!)U-`+qoG;5aAQ!ju6li~2DLkw z(lwv?_zuWO>25L&d1K62v){=!t<&4J>6n&WKdDKx`jp9Lo%B%rti*2#N2ze;g_6CP z`7Keuno7EcV$RAumM`c3u*iHJ{%Wn^qao|r($}y4kcQ>s0$VDFAInA?!Q~8*PMIF*bMO)U0T%hr*j#6B@W_d~Efz zs-<`F^jzuXUAa>EhRIxZDbS4^$W8}R7?ZV0>@2djnQ8H$UEbGEPhRXL6m}Q-_8owe z1(=7bwsAD_GhM`*)Q9y0UL+JqD~C`Ej&fT3@PYEV0B0Oso!lX~ygj)|T5x&Wuga7U z>lf4UAJ!Kp&Y(&2-(5d{Zo!7R>0i+7^XHYfpyyp-$7rb?bB7^Iq++-l;V@qBV8uU> z8duXjC8%kQR7sh*Ntw8q{q^ZZuTb{aMpCfnvS0Jq6e(X7i<}vz2m&XONh|LcBl%w= zVb2faxtboSrkk{61j~*0*_qJS-yiwvebm*Ab?aF0!JW+|U(H3;!3^6|jE`)%-~(B_ zn9HQt+7oAXLP`#%P+xX1W$IEKOc~r82UA|oRufAPrYM)9_by-f*3`*pk9tN!I|%i~ z?8&6n=S#=v$iGQn_7CYRUP~YHlFsti(x<#kUn;GpBXORi1#C~CHVf?x!>En{9u2C; ze56SqAg$tN!AXOrw?w~a&XJvD>dX%uDj}Tnk&CFeaC5c3af*Eyd$6{93E#ybI&I(x?FCE9W?K zVgG{x2fMPP7C5s}8z)`rDa#xf_fsH&DCe_T&P0dMW|p9HD0$dT=jUC(o3l`-vs$K$ zSU`ej%Qc-?o7DY$UUzK2GG1!p{x*HtKcugCEuGO<=`4ROo$)|TU&_*9e}5vCH9-E z*nTrfua#&-k}Vh~6qK#=ziWG~!R7k)^7Yxtg$1|TeA9s55DG?*W&8E1Q$HV*OIy** z27RMxXn*C`_3YR}t5#>ae3nV^*W$6`-?HWBUAXPz`_Y`gHA?u~lk@k_>B}^KpT6R? zbjC-O&eD?fH=s*aBTib8TRO$gB~j6$0)GA9*%vZAK(Y63+te+*VGN7 zL<~^s!kRfiw6Z^r3&2lQGHAX$TO0`oDApq|Y2tZP;U)|C+yUIBSo-k8DjKYh*c1fYgO*5{?+{{VAWjo8B)xl-jz&kw z&U1WQxSo5!djqVrb@w5K4>dKNZ^?W6FNs*vL@8D}Wlz1itz|X3jd~pwlNP^sx8DEb z?Y#q|EVj7eo#%OWHBk86%`9M)N2L1V($Vw`F>}f-OUE@yYKtYdkbZl%$#TD%$ZYu=ghA$BM~U(`&I>2 zAXGdwTn!ZlM}}XZ2;#zptH!TlsSFYf>sQ3_mX%VD?-(Z5@0xIR{X{%dtSg*Jw5}_z z-rjNbc4>)2dxehHPaS8DwS6`e^(Ha?uj=@OSpz+2mnS>4cUaqN(f?w9yR^iif4vxA z9cK=;L*EF64|^;8f1xC|RS6;@?IIeT!c1CI41R?I=ojNBWDfY8b_UG6aqGgk!Tdh{ z=P!wIY}|*jRWbUw2>wDa^Nw3JKB@a;B`f#m*O*Fzn>*s-GhSR8@8hD)-O1;F&cEj` zv6$b!WGQZL#S1cbHm{8>@>}3F+}tzM^1P4tQ(t`h% z65pyE3YLuZa`-cYH3eQb=ZqemV;*h$oew3zviw`&q)CNElO|avGWc+J= zJxU+O)Ns=M_CDeB7vnbw z-tMSYc~XlQ*h`SN{}hK4`WPvQ4zLY5g8lC84XgrzF(1DN*%W3EkDs4owO4}Tw4ebkY*A(f;c$zeeQGK!;Cq7zyyDDD;(SLE# zAhbftI`m)RX_A%$kzRRO|18f~Y581|8}|Ot1A&=F|5XhBlK%dXKfuROJFCxGxfDMgE7q3el^)r=8wH)V{wCMks3*q9&yjpX|8n#>69lge#%a6~*TSHyS1-duZRJ}6-iHDHw zOxyyQZ|^@BYrU7WbF@457re59b_Ts2`is4}N`LUKv|?a?@D_03g13GXdu$yayah}S z`mf5qa{R^E1N5W4QNCf_R{GVw1SOEk*1Z(G_#XC>cx#BDAD$cZ7dRLzZ|xNGju7p{ zi_|}sJUkeGuQo#Lz1kn&i(Ggbe>t+%ZM^s%Yz*SXE5}!P@kht;xj_p&IllLp@=@P+ zSUE>}^k~0Rd4Tz&UC=}OrQ=rmmkIizX@mYE+(CD!?J_ia^oRATVps)kJc^{Xs&{4} zGz&KkOjh-Gk>5oItgt7+ixEkN`wsN__l67ncyEN{XZzC;zas}6(c}jFljYkk`M}2G zU0uiN{~Ip>St(HEa_b|oD+FEOeITiXDJABFW%bY4o;SAmZ}BF4kBOD}^M9vb73HJ! zZk*Zq$wvOgRpA*bpUO|czB0MqO4c9N1G)p&X*MpgGP*32Xo3V!iiXF@AbXEsMNrOgD(U-q zI$`#SZ?yp$XRHfiZN!H>T>%bB@N=DLAB7KP$lli|?4@kyyO z4g602_bmCoF7Cuub#?t_dA5uFitAa-kMR!a=V5<$D{ia<^QWrwV;`5O?ed+XeYA~U z$^#H|jTUrS`}1_dIZ?apCEBh1G5$}~-*uPv&%T9@<10g`KiVt%?nk@5zcxgycbA-| zdC;-H{I*!{F7}nCSM3jb4H~-wz^g4UMQ=g|Fr7*{#!oB!IN^rgs&^Av=u-6%R$lA(NEl?!-XtW$0xfF{TyWV4d}m; zWFubAgQp3nW?nJzQZb*POVR!;a0$ZV^2t_H(OwW@4TY_LqayJ?(YwMXC(0SH-opG z=*|IOqq;DXq_mX#3ztu}H#ttPbXeZ^!IB^Nd)ekke^Od5)}J_EvvR5__RT%b7yqs7 zEJVuJC*-me$yvf>xg1Fo$PPG#|G&_cnLB}1fAk?6J~1!D(Q^q|0ec8~uih8?6bc=I zVw(LhUfAglD7|cCo#-W&E$}otSrLE@Gw~LAPJESlTK1^TQm>o8hbOj=C;Z;`=R0<> zYv%Wa=JLM=dH75iKR7*&#a{d^prxfPCKh9GX3ed-?{}5z&GBwRlQ@hJ*q6zCW-TyWj~L@2b@RbL8vlWi+mMv?miLc z&e|X65jZ+(m#am)wLkc_2QohvQA_nas(LM*M^$%1KZo;3IVpSqJ@ATPUSR5!f%K@h znaE*L?-XUP;4^!F`D@a%r6u{qW#}!w%O5%(a$Z0W`l0!h}Pb^Hm?Es@KD_G?TuK6pXQTZi$1!=v^`sePig z9kXd)5#yt$82?!zuYlWA(sf1XkDh4XrOoSm5As0t2jBZa*ReW|A<>~#K_0dAWROHS`flsr))$|#zf7mt|LP=oyZ)5mSN z!679AIC%VN$OzRRD)cAvY+_Y%#9FEL^91nHwPYcq9T&2_ziM;7Eo6{me^my(BxI0d ze^mxuIld}`t{C5GDb^h0f+tr>!K@DRs`SvFVq9w1^z@yu(?jFmc@_G}hFm?6em;%z zl+eCP^Gx4Q{of0o1b&j*rBH|OokBT7`X!h*kLGo~O&80SV_tBIZnml~F=z%DNA)|S zKm5YfU-b*4>NEB4_b*6Gs;M_Dd9j{qfATM@{cj;ZGWtJ*ak>Va!9waUFoFZmAV#qF zza8VCALzV8d5CSb_RrRNll_(VAIyv14*f|csQvfA`k;9Q22q?T^u$fvhMO4tY0p;( z!(Z$P3b=H^lG(!d431O-Wq$IXEt1GiFuo@;6I>~GVTm=IA#hc5U5MugSpL|1Qyj~&!%&md8AV^o78^@jni@fhpWb5H3Wf5@t5IRP0{auvOpk$#a9|Wl36CwnSiSh;2 zh&6Jk*GY>mpk9ODjHdfeO{@hF5 zn(h|*A~YC=&;U{9t=@imCZrY!B^Q>YN*E*_3Ax6ejtGVqE5|&>A1Ot-xe?Oy>GMN* zO`W;A3fV{X^;@^U(o$H6?4w-6#xE)L=0t7nq)F`5#7VWaC*)W7*?YKB8y~l8r{#}b zyW-<&ukX@Ebqbn@#!W&mhR;g4&j2f;fQ3%6RV2Zx(E`#Enj!(DS+eZWZa3%q7BGf| zL-zaw7GFc}3T`n-kN>phc%v*g1_uu-eZWb-MsD?HQe?Ztuv%|+NiRXyry5wb$@j&=$ry`yn02vPqWVnblVh*2- zP)r!eB$|KSRF?M*Qg%y=i+B?6?fh$fNq_48i{(oES7-S&l+@_q(}t9=g-<-rN~9h( zM5OLxj(q4q0lLRTo(42xXgxmOl*WU#6?<%?{36BUn0ymv&AJPxpn>U5s8U0 zG0Ufy4~s-9+T=PUkGfJSnjv%lxLO-+ZT!F2mzFd)|M~OGSwn_&lKlJx{D{~vB;*dk zA9U8K27-aG4=jTAO0OGuzFTp*e|(^cN$rsm^S1a%?W0HEc}KM*Re}!U)!}xTL1$2Kin<$A0}diW?4cMjam;GCy7Z6#052H74@x zNst=KvI`#}86_@$*DlFr=dQSTWb56-um_;2f;-`j@p4!j8L&4XDuDPVZz@@RVj0o_ zTQ_G@6KH~xPkSa~l_Ui4An{`5rZoYf*SW2FZt}c2%`q*Kt1c>I`n=M}c&Cu-`d>;2>zkX)k50Y)b_f=n?&2@LKyd(+2PpPXTrKr!1x0uFE}REXo%^Oc zYikdGwRq7RuS3G@dhIo~hs_y(7yoMgzPq+ydYs{#!523}hLMNc*H2NAWfAGo<|wfh zNUh1vXJ)I9yNHET#5BVvHY!}v>)4o|`K^V{O)J@iw^>-h(Y8~)+0kpJUPJ+_pUfsF z<4%?~h0V`Acb31zKM2<;8E<41@qMWY+b1sk_w0X-%PIS$ACI#*S_f*Kb6wq`m1d%;x9cf^{%2@i)|A0mb%_1}6f zh%NP^R2~j3DJ*n$#YvI>Qu8+x6VwFGu=bAUM^;pn#kDZxbrx49Bv_L@JK9fHS5%f- zRi?aLkC;s1!RMGD- z(dKMvHa~gLM{4m&Kg6aV^X8=1)v5!A2{Demy^79WI?{)0qkZG(&aYc~>d2K;qlm94ulJId;jTd4F z;zygaOm&z=Nee%TI6GB!?@v7&aZX^G3`gWzvPH={m7J;KfEY)w!8j4v9SMU#kF~qq zkjf9eA5vFb+IpS#ddnq;GA&eyhU#IcbzHWuN-fJLCBn~;H%*(#>urTws31lcRdZP; zfu+xliH?;?J)=E>Z-Vk%!|@mFz(7{UHaVufvXhnknRh}umYotBfx7{!N@SFwz2C>2 zGSioQ%xn*DR!;4&9Y=~lbX00um!+vcBUa4o0>-3#Shystes{5I`0^;W0}05v<2D$s zM}jOnd1#|yBfxu~bjjtNm&&OI&A&l&4Jz3q20}jzfus5YnV6)*MWNCFaHaX zD!NL)j_;jyU{&;yjRq;t(6&D^x@vrf|Dh!YDax>9e^l)73CsNGZ@GpIA5bVFi1Kw; z-#=&i={My6f(091n6-Vq{DkA5pk!E6bs;mKhClaL&_)`!xUz+2M-rORFQ5y_dXUec znm-K*JsuJ|b#V08y#{-c978V^$$2=vec~#Q?Wi$C5_$wx8R{>XbMY7c*{o5K;Gr84 zyFUqiAyAD;*?h&QVuS10reMl9-o3%dP6i_Uw6ADLR4;wlbN)so2IuG5GlS>6aw)M( znPfYy@HMLUFky-X(n}kTh(`oziAWHJR!G;c9AUklr5?I$2h`%>&)v7EDc4dTo0bzR z9f%p6(|g~d86gAf@pRp_g?aOzx9yWYWo|d#wf{!)zf>a@{gloKKgD5P2s`QxpDrFC z6__gRBBhDi>5T}qk7XodXYsrAKjFR(r#P2NWxAhwn#4N5&LbEZ7!%skfWkslbw{PT z_VXRJBS%&JbUg9HUW26?6_BD6Ck{=}>u)O_0?^)by`R{t4p~28YJ`{9*c=Ce;rnx~$jd4)aS27U|_^&f23yuIp=IIWji@-X0Q&MsOQ6?JQmD0*axa8&i# zke2od;{pQB*&Qv~Gs`+&cyU=LsvtQi`<6iyCv4v~UfAWDLEz8lU=Mi+Z-UL#u`JZT5NKjA?l}oQHIDLI@U_THSpO1tmj`5#}l=-3_qRx4qg@SY*xp zcCgaf^t;EBT{J2NHrsQKwz|jx@B4;-q`g+$0f-Z-ml42>D%eGPWvL|Cv0yGL=mDc> zBQAgk4TnSj`gZ;}Co{is)RaI`G-*Rp*+_GmdI7OJQ7S1wADg|hgUajNJ8R6^_+fkfNxgja$>i#moIHK$=uwd^VWFYpCmh?fCo9HKl#RR3Y@W~DB0N0D zjX$!cdSrY|U{utQVKK2q#mmUneG!rXdKbKVe~NQ(2RF-OaOcI5UBv`3deuz?r?Wti z;tNz$3z*1k)s6dfH>QdDDTi5s!A`tioOnQT==R8IVw zAQQ`NpOEJsQSHj_|&%^QeKr@V|IUx zcN5J+{eqK5^S71dDZ!F{(kkm6*Uoe0$B<7SEjZGiPfy9e))<_~S0t8*q#Kac-(c93 zOL_G!2L8tq|KQBOqpA8vN3p5ZEk1upbfnQslAd20ZgZAf+BcQILBY3kV=7XUS2S*X zMDQKrU7|*o0rT30gEhh>?t5wO<0Yda9x9sn(WJR@rL9<&rO0qpTRq(Buv3d>37>xz z_~b>bdp!I>cJsihQISYib40Cti)|tO&-~6N!={knj%8Fl1myb~@{404{DRez0Rh2O zF<^c0_V;T$3D@pN@qkU`s2qR@K)L!&-LRW}#`#8|Ge$Mwg_T75Chjr& z_OpAxP(FP-KfCOWE{J7hzewy46uZ>b88W+BJbwpKC($w>jk&71L zUOEPSBunSz4S&9t{Pu@+H?jNC-U&PMW2Fi0lN8aeh5s98yAu8ns>R&z{h*rNeny~i z$<<;~GayJ+m-H0VBl!&D;B8}fwscd(j*}^wsJS?~eQ9P&O6s~uX=iq~k-zo)*qT`L z_vbCGhwm}R-f)99X9df8CY-;{|KR`ax$U+d7SFUjw}wB%UtZC0=UpH2|2*^Tv(K=C z5AV8D(DVmr^1vEFZxNOEaEMiFK|&od+7qkxf<=>FIPwjqj?4C%ce;73$;{*UQBu<5 zNo_x7?0vv5z^@C%VB?v7_nPL(CuuUi!hh6xp~DBPE-J(tOu>B9wC{>sF5HHyl1-Pi zO#xTsu#a+RVoy>86zf*^`24a6p3wNP!IDQsz$xg zLH@XG!xu9RQk-$gI#yG2Yp~$QxPnUgz{Pp(GmM6h*~k$UO)(1UmsvJR?RbBKC{fh8 zaRZCmV>nAuX8InhuZuKhO4^f){Mo-=jD%zCZd)ZXKK+9Tn0uooQIAa0A&N#N$++v& zmOn&QGWw>^tu++j>Gnb82Gzp}g&Q1$n+X63GKlaOaJODZ@(Yeo)K);T9OYBLutmdB zOkv;VVV&2aazdRi|KyP2?;rfa7mX0j70c8b3n*{;Nf&c>_CZmFdnHyzRTY-;d%F1N z&b|&!T_QCRG`)!XYAW~#aV3Gt*C_+bVU9r#M zFsN~A+`spi7Z-P%_=;Xr!PXNYL7f|yAB>uxyY`zo{7Y_$j=8%{u8_1F`R-5nnzIk? zyY2AKE&S2AxKG}Avuhm9<-!}42Z2!{eSYx&n9S>EU%5MTZa8mxFfM=VTq*WNMA}9>@hC4UlsP^2yzWYZL4OpFJ@QvOKeqZ6ASu zQ*T*OuYJ)16l`DK9b+6ZJCgr2a;8Js_7B=np^IHe_6Z%F);+hnTA}LgKHf{)Utclv z>D)4F1^1ncpRS*KWO984Bon?FaY*eAsw^N3^yOO_B|srUgc{}h@7)-6*Ptk}x; z&+j!VM+&=REbolJRjv$s<&@)QN(+R$DG=&Ac;^+Y@jkT{$v^N82_JPr>Auf1yW?U| zVb;byR3RQSe&4bIwr2YL5I%NH3wtjsv+K(NGnRGnPwwGas^Dwt))tG@dG7>bf~xR?$aZLd0@r5BBF^nliK@^xGbf(FdO37uJP_W;#{n@Yn?^^3bNaP zubbfXK7E@eSqpy;#z|Gj;ko)f0#7zl>($?`DTK_fRNE!^8_<8W80R%U!9}c*CRw*r zv_m___^4Or9HI8tA;5tCqFvL9@u7PVK2TdI+H1r(3n7<_1Qr6?mB2#m5?F|0$Q6@_ z3zt)GH7=~KgZz@{kJY38vcP5t{N)hQ|5vsD8Z0sPQpGS)+!@+2_19*K@kNa-(SIzp z1IK$x^uIh`Ymc^7^jGl!g#A$Q0BtIcU&S*xJr6s0ht5@c40iBdF^=dD>{Kkhr37rr zV!V%D4tm7+P6r5IsNEzH&d;&`=NM zivBeI7Hzb{_~Wq7CBVRl7sar?Vn5XH(UywuSug0I{YV$zb5Q*r&Exbv1NtXQk74|s z%1^8v>wx_P{j|;|!jMTjlo`Np(7%Io@$cng|FOIJbt=XT526r0c7ymikt3xO_zt#P z;5+W2Gf4ZX^MYK48{V1*DC%V6$r#9Dl1wB*$VgKQm0wXWJAfZEup=RB2VeJainY2S$PnY7TU2Bqxdh zDJYdY6}4!YdB&8y-0%~I6D(m&(p}Gg(fDLjaw~Gcm)=AL4_|)qglX_+D60R0C=~_h4QIR57)y@>9sYLPt5N%1_Zg#j)KgKS^Fqag?8$#JJfpOa=SCK7xZ}COIVf2iH>Pm!KK?oXwqazkpD4C&sTQTY$=i)`>=S#9^e1UC zf23$3DjBn)PM*aNZQXuTH=DZ}b=Za1TdmD5*5ZEb@dIKn)5IS4Xn~i7f9e73@ov<6 z2q6zVI9Qk&6o*j#V^-H4eBl{-d;}X~*sztb)q#XEy*3)8Bt@y1i7k(aYLpM=XDMI$9BP7z{5xyj4fE)x4 znebRFkx~l13qAp4x)=N8rl!|==cEmO?4l(iu)x{2;%JJup}3)rBsl)fiMTqJ3PsyG9YYqt*I(pe`7D zn1x;JKj)bLviiJO8Bk2Gix73f2QI!u_rDAGK5)?z8BmyT^h{Sm-SBbOy5yv#jrE~l z{;8s`9CyYyYTS2+4t+PS%$IH80j@# zBxD@=L5H|QcIx{c2DPDi~dB9 z6~B9z_C+y1_!8r^;{4`W$Dc0xj~92W+Fu<%O^ol@UmYKTJbbU{Z^dW|`thbA@lTEz zzYTZ!+t%?ni2joV{i@ESj*rR*m-Sc2Z+GbL&*KFimvWPa(d|IET&!~+j~94c!V~w1 zcI+~~YXXlK_*&|Z7W4-i676;9Px#vY{u4<@=zE=y74IOCju1tK`?B#Mo_Hw*ngI$L znqiNcVm+wnpunX8DNwRx$euHsKKd^2fwilb_=f#?H`hJuzu-I85bv8j>Xz61-n(_^ z*v#}H!#`0pY+*@}B%k9Ce>mLd^QA{0T6Q*mbTld1WsV0H%KH} z&hXJnh*B){6`1}oCGpsoN{m)#r3HaHD=|cul-_zEwmIW-cIa*2=!@;MJ>x99AM5qq zw1*W2dexMe;~w&TboRtbPw%8;`PH@8Gt>ANm%MVV$755!_-%OP;>c0A-!^Rl^C($7 zF@5%giE}b@L59l1*8HwL+OcAf;IY6Of`^s8>ir4_KkZ#rALzE`Li|Fg4;6E4i)H~| zVZE^&k|T=oVg+S91lGN9c(sBu9VRYbH1nbhgzW46 zSr9m0n)trkwVCiuM&TC7gEb`Fk1Afv=qF50ivA+*3nz-G5f+t=*Hy{Qf}&xOF%FLk zNe%k=>gHFDB|DVpe&OXY3Fhm9P5k7_kzP`uAtIn@5PRL|8SIa;B1J8$3@F*wYx92ORj&MVFi?2>bjv&3bW zUJy_1Z5}tPzC+~&RUWIklTV2~ca-0hOE^$Rf6Jab`LK4SILB7`YR#QANe?T#M7xm3 zsywsW5I+eUVz=NmVRH!^;!&JpvWfIU_Y?Bc+W$YI|1FpGe?;xCd85C-$YFz=6xib* zg)XYvboRV;WalE=1U&9IKIozELmm?Gx+-Vwbg}QO^ZYL6nF2ZcsA`)aj!3o%G)8E*bIuo3b=KeEha; zEu(#Um?UrO#GKuI0lJB>LG&Uz^^bE7CRNi~zeCkARlQEx3mSY3M1ywwzQR@g79t3O-oAgKBQz&veGZOs6gMQQyu zH1HsRM*77RWbHiUaMBwLq0nfvLBF67(RgymL$+&0!7UL4M+uz>wd{)^*c_u4-xA1W zIVSV}Vg?B$l_0iys`$!P+;uRK!E!tq8#kRL1N^CR-6Hj`YPhFbn(eIjxjXDp~m z2dr7X69m4EcOowEcWP>RWhax;@C}J5*Or8rBY1>WuAZ0;(gn0T0m5R zB9!bDy$NN(%y=M}`3c-3d1i%EUuOA|2~NYh5_hkOsnVP8R^0`iP{EVzr{?h=7<7|Zd}2g z2k-gn?9*(O^tO-J6#f)HirYf!+l?9;r%*#9Ttu^o5lx6S#EN1Wf;z~bY!hIVf;xaC zp^(6uqbD}LUiwDC8|ASCc5a?gQnImVJ01$qT7DFdY(yrfG_SiUQK!&j8(q&%c=m?( z1jKoe->M1Mf0mWN4P(;q)`m2^=*2(7LTI1*-^YSpuUe8;Fc|m?RxUOP?_^Cq8+q0W z2CM%h@{@Y?y(}vr%6(r9NG&HrO5&no+8Ia=w&4Pbc3n0;ws()1D zTHe>p2p_VndbC%p;u#z=$Ro4WeOp}m{fRnxP{qTXX20)K=q{kB3Rj zEyF)$`Gffd{xL@u|4Wv9eL_R?orZh0@&&O9%P*Sxn!!!yBx_mx6G<-8Vh^vH7^81Y zLUr|;Kgxqq68?j3oo;xf=b)IZk)t=gIW}AC>b77;bo7XkjP^z23ct@($UyjWGT?Bw zDk<55c0sW4y^C*r=3%RDktuikT81AE_V)@8DR3GNlvvrK4frJQXcxPV!Fq0(9z(Ny zY%qez|0ID2I1Vhm?gzU#8=eB z{~8JHGXFfD`3jf^v_^2m*prdrRH2Fwf-hmNtwxpRdMJ?ZVBZi^7IhQVa18wER7Ttm z$%tUl9ftz~va>s;_=kFnxptggxF{;JXVT(${xqw_coW74Mbac4%U*b4+0f7*v1GXK zg}wwIkxqgS3wQ2Ku!9a^z7V?4#8ob`f}x#K$t`RAoYpZs78STuUxx0fDOC85It7x24E4^G-F-gFb^ezP3>*LB0*Dq<|jl-?7fHOQAUn$RDb60W4vT2HO&+hU0-% zg0}h)w9{(!!0zdsJawtl@(TX~C+(=}@j=XWS8!nBsJit`2mN{LX8tKZ`Ae`%=d=Rz zm;j{YmR}&v+y9U7};D0~R;)%TjMvv;M(z1wq&t9=i zP_nS}m*Y(HMQRFvM16F~c{05@lrVyx9Fjgbew4q@f9HSk_YxAA>H4)V{`vE1>sv$P z`vR1)N)B|L6zqj+p6HIplMyZJL;-$%bJ+w$Sh$tJ$w z?pdlj80YM?GCAq!(Tm%wswxMMcS=g0dHtk@7|)MyK>_cjlH^?}ef>g(sv5dD_i#<$ zt-JmG2J@e895SS>^V6x=gG$745SM|@0=lSpHiWE4H2O(6eB>OjZ@UxAHlq4{vO!n7yi+`4==suk=LBWcUxmG*15!*7qb}a zoH!JC>Q)}#xKO5%#8INj`iJ#Z*mseo)!W?1;Ro=kP09sQneTLpZu(spIHyo3r+{YV5IZ> z-T*JdxUuQ!kqL@_Tt5YK2f4m_yOU>BbXJ}Fm{D@__}OLot`7zV3%Z)jt`A95pFcEW zT!`o2P5c{W)z6nO`l z0yKgMx6D62m0E`6e`#gDn`=t?!rF=v#+I08KmV#} zf}B*}5j3c#d`)jvVeYpDu{Dg9WsjbeHEd%}%FyEEG-iq)dM1NOV}{aM67*rOvr!X{ zbeR7;^7PQAF5>|Cmde%LW3D9FGsA)4j0OD!S4e+d!3@%_e0;*t)&J`g^6DNOz!mD< z_Mz4lycowiT3fPACfv}6cl*5XJ)L7G(;}1 z8sYAhm^gjVu&5#L4Nf{7niazT`YOPC=Ind!7&F>C0HK!iJ}WY&^4IgT*u3(_(Zg7J zM&s}yMV&*6s;6aSdOOE-^Y1V12=sN8dC%t7ib{X~ii(+=dwiTyd)OG3c|6icCZ@1A zpM$Q2yGGcXr23LpA9pM{e*4y!nK5`EZI$vp!tHfp_Scs_KKpw_1fSiCN7qyt`{nMP z`|a|T!z&GXlW_kuVJ(75XCk%pAL(Q$?4eW5O=*MlzG1^YLD;mXRKjlF8EJ&!Nrdg# z!fq@+ZuPDY#L1J9^HIQhP+ z?4h$KOp1?BNtuz9pS9M59UIm*fByU*7cERo+PCk==7uSglcm?&#ud(=fBu{K3*uPZ zINp{W6u5QU-xs!SGx{Y%4VE+?@*&E3e7|@f&Y5}3I<4Z9Es~H(gQUD82s3ZxTR!Vd zaVYoZb%$D*C%-V)$ksjlZo2{C!T0=(51#c+R7`k5D1mRiSCZM(xA8biU>9G-oVqM7 zeE+qp7#{r5VZQ77jwuf)@wiiw9l|u`Y~g!CdZIU6Qg{xRj8fGdl}&MK5~R}Stf017 z37V$3`6d1F=8Rp>@Gr~9vgy!HG+0?UlcN z+G5}tEmW3^f{9R;J5}$~xDKOYx^Spd8bWbIdL?Qsd71Dc3C1pljX`hwk)K*ElyBD+ zRPE9R?WdbgE`Ha>#;O{bJ$#=!8@=?0z$MkrLBfuT#D)I&;#4(qDc!I7weUHZ6Id28 zCp4)m<`j&Bc&YWATOTqJIS-hB=DVU24Cf!C zd(Ju|dv>{BP{>%XJ@@2|WHr*1E=vxjbq&UaBdKtMw2rLPFmGm|C#E8G(dd4+LKZjk{M$0faX10+$_&`$=PyQ;htM`>_PH#mczzdi!psjnyQ&nkpe~` zxCoM!Wy9ja<6cWCX==&lv!O{$SCBA-e0m#hGu(zZv07I}%v=k@ar^xj-PnT8OTTwA z?QnO`r*uSf4Sa)dVSM;2GSX;FSJhClB9ddxGwFfClOI(YqDl*(=f*+LJ#{n$d2|<@ zd8?yB%QQ{AQA=Y{{7KxvSI1w9MIk?AgkA|(ahUh>F9+f<^YLs9-21JIDWmx!`Cuo= z9lq>8mm@OIvDV|374&){_gO~Y(+(W88G8p0l|x>ZLspjKA8A(w!^-kF%E*dAET6qF zKPrYEPHX^H^YRVXK5K zWS2BFhZTll6=unHF-QD@nq%7Km{-VAhlvMTg0?l;Y7Ga7SvOlvzqoQ7iDMyK)%j=H zX1w%?{dCwx79-i9^#f1%;Jm3w6Wsf@oIIc?jNMz88(A`YY~mCnya>w=+{26O8VuLS zgI8F#v0qoLxHLiPw)9;Cu|WP0our{Mv zkuJ5I_llQ#>5x? zu=n=!#qlwhdidcDeCq~2rbp0{1z(V?6k(yeF zjd3}xE_w7I=!he}?EAZS82I4u(%wbEquf~G_}W(<#_Q=2dbamKk6^raQSZgiKA!kC z;s~3tt;K-3LuZX16?WJC81do`ylAREGAc%Fopn^+(RHEOIwbj1AsdE*#wh!kLUTe& zy-=dm)Tvl1)+J6v=mf<~92jVX_*w5(-^(#m& zl=4YRBhD7?MWB;O1krXm%EU%>UGN!)`LjRlpqEn1?pvh3lsdi^UvVj4JHfUtnl5}p z6UK|MkB8v~&@U7ORqiP>%(UjS_k=Gc8B^-nVs$S)zQe%Y=zoxvmfzBU2`h>AHKVs) z<~%zCvpB2t^;3Mh+Px?q)y$kxX9FT#PRcX2&IuPT6TuRS5m zbkq=C;-Czy!$Y?h?2BlDULgrNXTYAt3XCZD-H)JbGV02M;q9rPkQ5X@621g@X@z@6 z9Aflnt4vA`8owP6iO!Gqb_sGFaL3lY25HNIDW0CQ{e7m59UsO|%&*Tc zcXf*ki4RDbkJmOLB8vFME>=<>g4}O~-%bizSC+F|)y9QG%-*^Y83jd^3E`eDRyt1% zpwmiBR6jUTkVP7tFy9c;cBq&XB`=E(9#d55@s6T&e-HOa_u%r6 z*e!X^UlKgslh4nW;fT=_t$^8ec3~&uX^)p$WhhDJml_Z-_%{RECOmUgp+}PS&?N zEnYgk-OV*?vIxY4{&8;HiG``HuCv;vFLHDC^Q%~XEHBSL98d7Z#d{Cj>@c3VY(>?u zA;SVi@a4$iun7L!`~^cxv%|s+FGOry8Ml~~LtJieE)zD&CO)!Y%N^8qT}VpIoBK47i`cPw2Dc62VRiEIluREmj#;uuLbShe&BN};UC8uI9qc*i`6tr zc<|I3800P^YH>GI@<$@WyzFx8)Z``EYGexTC)TD`jA5Vp_}0$bB-hLt zlP7XJ8y3))%e9Z&_NOEb`%`TU=H;FqcN;xBgTgYjyl!+-u;0*}S|)$IJH}N~ zUOm)e-L7FvFT9~B=Hi;SBx%(oy%e0XoYtm-AD0J%uW@IK%c zD~qAFt4~5-8|}H&xHO+kzZyIe^@J`eo?eEQCV^w%`QkmQ+S<^i{ypa8+`YZ@T|@i+ zR_;l`F$()u7 z%8Cl9zKblg25D@UCF4_Oox-t{i+Yw|U*di2cyTu&8wuA6Ns z$37z;zfXyWf+7c~FJ!Y(tN=8dfd$7i+;mS-%o}*-C~w530H??hBLe5momQ>NTuJX^ z-{1S;1UBUT6|)Vzvw=VOq;wJQWApP;H(U81mUhh2D)nFn=}`+J=oni9eNSqC(1g=j zC-RV5i$~qFF+LnpIC+4@QR==4vRe8;(>Ke&uX%UYrt;NB-e-s$-OTiO*Ls3@*V;GM zXl&NzTrBBQl!JUDzgfI%&2~M(zP;jIYt7?W|1_+Nz|3X%P_mjnN{!Q^;75l3XT!s3 zPf^CIVb{vPuQ#&QhBkgU|6x3J8z_a~6zyTn_|=a;WR+PIGk+6n1ZYD)29KUlaMW8& zP`um*1k9yatrY8Um|kd@9AdNw%)@Nwsdnt$D`-EZzF+%><1GRcY#3N!G1ge2)*htK zAW@V}N`g=jpd)J(IbeB^qUG}jpa8RU+UmOP%cccJ@x76s2SxPOG9SaXZ3Z7^pWV%6 zV@^XtX+_$c0xCRVpnAS6_|vtVlLnUhO2uh zfJP*pXsLCsC`~eEL#DNPFu=)(mEmpE&Y zXy`a4Zz8(F*EzW~F%&jgJQafYnvIjAdE>bweoAU+#J&f~O9C3WFS$=1nU`huGmK;b zSxj0rWjrn<;@L*%i~rIY2_J#StF4DuD7`klk3@=)bA0*ilE}f4F@rqnYr@04TVjfq zmwda;lrVEj;C$pl{0o(LUkHsq^X=f&C;=)sarXQ1Bb_Waqu3GC+=O|~tMjO}d*~bc z9rSc0RMC~sq(yMEJ!sfC->+s#RWN!_2DAtv2+&I>X~<0y5pI6+DefZ_l!D^ z@F$35WP$O3G$c@q?Hf@)3zR5D-KUvw;v9XrJz<*Z31}>#%;rOHc@vecT zbBK3j@|P+HaE4r9EdgCEPN`a&1P|NWs+5?+fuI(VIr?2KJ_`T;lVj#iYs;#-rY5MO zc|vpA=(!bdv(@t_UcYbrP$d|yh@UM7g}=2cIlH?oCiAwK#EF?f30?239h&1ls3LEo zuW|1#Ql9C21^0cZd4jhP7^Hd8GF2cANTw#r^UWOo3z0WdnsvZ+B-;>7G|$s;|Y zAojzgv?Cee#U9fO3q9R4GglyfwyF~GvxLNp&BN==EGavm_bkZ14o|hKA+$S3kM{Ow zA;VmK19x0vKHV|S-kBNGs*8qn77ZERn2|19yp55^`78Xvo>V8Fp3O5WD*XK`D_S>` zKLhm``u^0u44oC4{{N28^q&`en$AO(ue~Bzb9AU!u-8AwZsfb|F0xB| zAs9ds?Xk95$Y?c|Auz0D(%bNDs%fm8+y)WwoS~zXpDb;s#3*u>OZkR&Gs`o#8>B)& zOUYx-R&e;Fh1K&6D~4zQ-YA;qNXJxPeg*mRp`)=1NV;#}&wz+x5EJl^GCppT;YP@L%zt@eJ0v|N zwi7P-h!Y;g#=hiehF~2WP(JcNPz`w|vq>RUYgFJ55Ks^RpcK30BU>S>UpSzRGyLp3 z^-A+{f%|!(dGD4HZKzRUn2g6~Lj#voplrn*+p0uUcDK|X8nC2dPCpcge=rb)bE(tv z+l=Wp|A9- zH_+DBaJXFZwK3+wDLMR*+=0Z9Y^|=UZhPmnph(`KC`d8TD&OAAKeMhvG7Ej#hUMBc zQ`&?N?ccTg$8Q)GvqXLni6nNdQL*Zimw)`FuPqPA`r|l{c*{W70K0Q2d>xnDo%yz6 zPcX@B&x8K6*Cy7agH>n#{07_e0|x%*68|7Fd?Q+Qr8!GyEOmDc3anqTB{Rzy_WQZ< zCl;iT2WQ42R~LVHaE|8X2ZX_cQ#Yf&srIht+Xqx#nlL$jcoDofQISFa?8fmJ6qF-M zGU2-xakDN1`<83}t_;%3t?G?>!`c(SZN3~l)nGLhgk#ox(Q0r1tkuEEV|B9>kBBSK zX6QCst4flG1x}uL-iMFP%B}DgR=%D3b^qx5QIf4imxKp^&JXf0bStnIMVeuDsw2o8 zQ?<0KViBQ^4}dJ1NI$?fXmQGjIsb6X$yiKvprRtYql1!!H}dj59q& zZcChNVB}cxSI9GRHh<=0eDo`ui-G7)jH~JBxg5W^zyaUrmKa#F@sXiGKF(b!Nste$ z?^e{7sKuU;bO5hirWN31sJ@ebh{?mtA~p;*2s}NmTZ~(b;pfToW+Km9Ae+^!(WaeAB(ri;q0-i|+Uun=`C!^+pkNbBO)fLSVT4v+x|jqPEql zj4OdZg?xiiWRb&DEhMzcS9WKnqc1ZSZxUJccd(!J97$SUD8kgM;-++;8~6D9lvcOd zZPORKxTI7rKbo5_JehUVW3#6-e;l1$@_o9Aqmvaw6=CDrO2*mUm_;@(riV_t&+^VD z$Agk7jBv@|4eapfE$>)8YUa7mO(=haI>5_yd0wHny`qydnzkGqvcxuSHqYW^!% zv@q%Y%KK~FzIGeVzusDUa!X^m8*6kOk$?Kv$_FlQb{n4ex>U>C*od++3+h|&O_FC> z8GjP>8GEnRO6$}2hvs*=7&OtFrnt8R9X__-r56f&V)xLzwfiD z7*qTX-u?{OnOCvKQ9X64 z5VxX*tfrDYeRG2wODs;w${0Rpg0H#GjlWkm$a7G7QEaqVK1PTxp`~Nr~#rAb_;s2D)tB^se%Q;Hf*{RL`h0ekdwX|b?1XzCb==wQqSt@wNWNh zys=al1iFlF+TAH(VPWCPNkw5{PnTO}Hl(C#bwo{I&`^B)GO1VkO6x&>Y(Rc&F~ca5 zX?p9IOJ9bSX-!GxX=&bBryHiavJ~(5ob2I2UIAL&LxWRtb6fZul1KTRqR>!Dru7U4 z?)gULck*NV*vKUxv#^7NK4gjw2`g1%lQE`O{32I2q@mG`zv-Q@pc11>x2dCkS7!Mc zqZVLLrb%bFOBUrv%9grpOyL(1$YOEp(M00@GsUKdm1<4NW$9_&@r&Kqkfm;J?g^$i zmr`R=Ttf8P4i9(c6K~EDQ|`1+Idf=WP+am#SFLVp{V>}%!A=JUJ%ag7qOJtQCHeN~ zzx^>cq>qq#K~a48FzMfL%&kpOouZ@)#1j)zUERmIyH(CcZKs(NTbp6G3`x0?4rn*o+{SA)VKbsR3Tb*)^(%7<_mA^Ijo+h?{?~rt5d^KAI8S)K#NctROhGR@fN5ayX zk?wlGD>^O zET1G~Hlw6|;*SH?)TQ;vA5oq-^C- z5b9&_&Cl}nbuBfTY7%y*r5gQ83cLy-8LxGd&ay3De#_Qo`}(9T^zqKjT)8eaQOoZx zD^ur+!(2t`T*7gIcN)mkWY?ZmIf%2D&sf7GSH8-vuFxYX&Cjp2ba%pt2=5ZDyIWR) zDZtO@l~5*~Eh}U7+Qig#D>E~_eHNzp_-3zN<_BN4=2_(j8E<825P(M%BgzCt;Qads zZr=UX%~W^h+&NlvKlFLh+DC?Mo59%Q2X4OQ>znzz$`7pbv(NYj+8fPUC5Wxl`M|oS z^^w=s9iD`izqnIh9}Cltk(cS*kVn2)?b}z$*0CYf7pGG6eU!SA4&IGlQshqjn_lR5 z$Wlf1@g4k|p3))A*i*vXq(q#!gBDXMc0-bQ^{495|Q&Q4HfNU-fm_BX$O>1>o!^t%|d`Ioree|<$ zYvZMlb)&>w*iEY&HkO@nO-Y#-5$57DbzZUdiGoD@ryze4Tu&N_H7Mugsrn%N3~peJ z`cs$=XI}M5i&Fr94XccwT=#ZS0e(GG*yIu%GB`ah!8@QlqM3g463_Tc&$BSCxzi ziBIIFUEamq(#l3fz5Bhz{ zhANMzA0ISm!4|h5<#+x)x4b-sNl&-m#p24|-d@J1JzX&r`6}D6jt$Zt_B`}0a6g@W z(gm2g&XvEnnN$qvlQQU1wBFIuUg=I$AOxC??quPZ0(Uq%3RF$XE-dV6w_w%i&{8=j zwyHQ5iR#{71!Ehcquji1-;q;TFg&PK7Zp`iT&dG}dJL{d-eX5hQ_pZXwu-KR|FE2MkXkyZ+mej#O0Aby~g>Lf{){0~`goYo! zh2)C~YsKz4S;P67G48x?+36bQy0YB;4<+Jl{{63IAAQ6^z7gN||40ThAhzWe?Ts3k z9|A@ov*+IBOCqK0zm(UXxUf|4_Pf?T*b^0MfCnU=+sBtgu+7nHyu*Jw`jv5gKS-5YqNxEgZkdbyWV=~T6mM1R(QqT*3V+m#`o!TqtLd(-Zma>zfhZIj@qVS zm)-)+i*(-$9Xj2QB1TsCpEwMN-k7s3_dcUloTIZR_#E~bU4{$HH#ohtE_jCS`}MxY zOmj`lf(0lwk`w9SAGIftzWF-kT;F{>zhdHpph>9h4EI| zG-vJiYmG;lM)94^DGjte+ z-g}cGh=7RLuz(FzL@9#UK(S-*QKQC^7>%);sL7_77?X`jjOn^DMNLdEyD8tUiNYNI zzxUi3iqZYP|L*e`=FXja&w0<=>rwHXh3)^a`U%frrt$dhqAa6C)vR#m10Ha`rO(tv zKt!dxG}(Ra?QsXv9_KvY#5?zQ&c(I4 z?bq%IzGd2G3hK1!^b!0Qyo$1txpAZaCa)u7j+kCMw~w?G0b^4T|4_b9WmX$Z&ze<+ zub?f^zILlxtd?nJ5^n+VLPHtIzc#RoWk=M{oHIYCQ!kyddR#eK$fp!vXqGsq;E)72 zwJd_a*T!df1|`^_@Bey@#%)@0%xFdYqWIv{#L%I^$ra&Ety%JV&UAdmzr}ip-^yw& z)LU82511*NS9S*D zexezezNTyd$w1EoeLM2BP95{1+#NehFLX=V@sEW)qF_j~D_}l+YFDs}AyCRpeenCO z^6y!fciF7on95joVUNTU)Tz)Dy7RYyBSt=mM|L(6A8IeT6Ch~#CLh$L7zLNuv%7Fr=*Ov-R|(KJ-r~%9n$J z;}ZfWuURvB(rTb9t$Q{P<3Dva3EN08bK-0o)9ezWMCLlUcpYyfQdBk!8JdE1Ch`XU zE%5=X`CWWmNp3f{0-zJ}+%YP!kK;JIf0WO^(aNEi19jU;iiO5zr>BQpC`lvO2{-r@# zrDF>`W;*r9*-A{&Bq{822lz{DAt1$G*0j{{BlT28L*CQNC2{0aY~xu&-W4=#Y@ zv^lz@41oVhGPr3pD(8pWG^(mVzhFH}4oLDY8#yJ&&&wbs1$cYn1C~a3t4tUASBR{C z$$A+7r@(WwJcr*0nk;N+cU2fO$T}GBPvFBkFRHF6V>PKFmr@A}gF@l{GTZ`L8b%8p z(;FUJx6gFw@YYL)DbKKIO{(LB@w?}_dwIFfd%8f(x%mkAg4spRYTH%fJvG?#9nAPv z+Y<9*7XK6B75NgTJoLs3@JRj69r0ZjAH{Z{^ANrZqAu_|@MR%)WWU3fZRVq;=FXL* zyTFizCQScGHF;M<^iO*@$Hww%=lGk;HjQ_1z-zF-P}D>DP)~0SB4YSV{q4~23w=uS z1t)D`b)Ca|+!svuf#O@NW^@jR-}oc`tTbHlGyG!Ez2WVO7aeVd5^jLotHZH*{V=b2 z8;A05>Ra8NnN`Ra=M_;y8fWgAF{7hu#CvPUe96z%W8II#$MTk}w~#d}z0=NT2p0@| zCsC>}<#^2>SQDTGuJoDJHnzpmYX`b#i1b;f5#OjKaDS|II~s%iQ?UZw_K@m;&m}nR zFXa39aq)y7X)e0uJL}=SzWbS#c7Lb*ve$S2>i!NfYquWXsilAWnBS$T?{Qrt-C@s| zp9jyPy12)8YRMEqzgcZ%Q2dMbr@*0L7oTqyYwPYML_T@!mvH8B!Wqh=hOS4SSE;U2 zP7YKI5eAf<+~}8u0f)+ySqm^a^x75CP!nT9+oJ#voY@)V@?6316y)^^V}Q3op}cbU zrXuX)jtkPYbC_;$PyuV-^3E;douT6M1-!FGe1@En*QDm+a|C|Sooi%P zhjd8A{WI+p2e>Ij%fa=$hCjGVOZJrjx#*sk1MeI(X9ml4d8bjb>E> zUXfjET`WFBQ5MRC)kp{V_0 zQG=(FbsWIo%JiZcraVJKd4qvHDgQ^enU}Len-xbkqYkN@KWm1<%k*x!XC?Zon|o9e zUdU&nm}1$t3bW+!eS+Bcn^+rWYze%v!Px_8@E@!&Rr-WSDu<;v1n@-WW;!g5@SIU3 z{Ve^!&%VaPO^;y_^uAH}{blhy#GmnbJU%}sK4-`{fX}z_d}~xP#bED3&LearvT+hp zh>N>WlmhRC{tTBrd5ttduJkXwIEqy<(bGah`+0{yBhO)Tx-$PzMAWDIzHpWk&7414 za5yUBv&U}m7dOX6P74d|=fg@|;+wwtwkgh~{XZ=&W!^I${(~vjRRv;f+ql50b=>sF z!!x{F70E7fP2Yag1cwowAvAB*2V&iQ2`*Oip~u-`-8ez!8t0OL)dgs%=1>LY9q>s( zF9gh9g*Ylsa@T44BBo_2d}{_u4e!29XQ&;f|@SN%o$Dtu*FD1rzsR{mBBHPDbnVfd7( zF5scpV-gneCo%tN+=>8GUGjV#i+=qeh6`Q8fc9Z2A^e}uE#z-s@Mp1b2ZpdD{xAlVF38uFE5-FY;=1TN z2HqD;eaHk4e_mXt{ypQxbx16kw~OmEAM z^TfQLU&|_ON-H<*n$XgmSGH^Epjf8hN82~>dd!ciP>t{k(=tgc+)?Xz|4bQiXG@TbMDHkt^{ z?2{3h?C|C1_^$=?Bt`X%ONz_29nUbsJBd>V7e%J8eTB{_06NENHP!iomoho8Sl9(} z7C2c9n5Iri{Zs;snVa-#S9#>7q+|8VJ$>5LYD`YApI#MQCE03>2^Dp@#xQH=`Fzft z=x8y6Q%p{;5(7BP;uM_brYjWp3{KznFj|b>rFop94tPvQ@hdctlPg~pu(0%+D#R*D zTLvRDuMC`^yVVr&FpDo*#y4XCsfcu{_&@zj{*(5jOs84znt+7L+Wr9s8?{0ilDHtk zJ*91gmt&;8wMG-1zGzmFmwlM?l(3nN4dZQXZp>fcr5kH&GkSTz;FNS{eVbaf7v7X?8vJ269oXF}>(hAFnv9^M+tIM_8XqF=wj3;fkrtd+ zT*6nHaZ6z#11K8ncj>P6XD_mb6vsY)FU(}#d~=$k)8+md3a+`5o6BlU{G;4lMGhOb zV&A?M7$JLL`L=D#k+*XaWkd_uabC(-aOmuS8F-OIy=uUTg1}2Ckp}J+a1ZG^|7iEd zfNI*n!jKvD;|-0iGhY@ZTGy4z0{m9whKJy{&<#YFQXvcF!O=#QSqniZRWg_^$m!tO z+Lr$8b@bPGMthpyWYN>Krq8sEZ%j*QM)#BEX0)MQiiB;`1*H8h7{jmAJ6?jGM>C&& zus&I@ksnMMyU6N*lbG-j4G-=!>p6Z<(BSSV&$kPyY{Wd``HKjhB!vW_eJ9O#w&8~f z7HP;gXYziSh}f937zIq|?u~380!usZmouIVGL3JmO8J3%bWeiYhA2_cOBfJjzTR{X-&dM`|%!Hp3@8r55eh zyNKlT9nFRmMS*K({F%2#5vBD1;@{0q{P2O|Nfuh!FzW(Kg>EJKjgx&wvvJILLp24U zBD2mf64;>%z~)cT_zGlEzNuYft|{2WFK(Knm6P&C(;XBNkj(i7GUov3&z_)Z33&?2 zW9WiL49wi@5~b@mUHwxlCN+dcQg=JVQm z6&5)$#nxTC6AHwYVIyc(FSD8fm{yBA6RRM9Z5K;1lVp!7Y@IX%jABK@Mc1c&J)Z8Q z#+q!Pxv}Qhsnl3=V5tR2U?|jFI6RzxA~)6qh#*f&kRLe|FtVkHNKkw-I0|_abW99v zrV?H>+LyemW<`Z#9CKJyoHTpwI9W)99ebELNvpM`uQ02Boxkuie^pVw&Gc_sB>cE< z9bm_-YOM^)Pw{-Rcm-mB>LIjApGa~2k57Gqvagmen;z0oRbv1n*kC|^6FOzn@h>O6 zAaer2Kd1)u9G(N7`~On|I%epg&;YH6UNh&R`~p9(jPe1!Ye45Te)Y=aMIMnk%a=X1 zXUvjh6r;*;S%g}Qk$9hdcYi$6c%bCkfo26$FpDO$8;;OGPr{b|un?Exd0&@`?EEOB z&a-c2#L^;uVc@yg>V$+yUoXGebB@fm_8*XH2nh@*3AV3`y8ZXIC*%8j(IPXKX4I;! zqY8&H>Eif?f17-H8GF)E7n_{CWXztYmMzbT^jI|YrLP*R9W@L%zzWjRO6Km~K|6>^ zA$H!m4S9q*;7}4yRkkIV0;?AOMBz;onRAxnO;@a0s8V7xl*bk#6hPvkBlOZeKVul2F1M35{{q-ywjxK zhIJ>yCMLc{3-7{)gm^EQi=tD^UzsixLl9X=@Kg68 zn2YUXEh%|oS^rrpb_|)Z>K;6p150EaKge$bpI@5V1D|6cWuQ zI`vp917q8Rx&oKghfl^N2s|FhJj+1n;7Ut;0#f-7bh)!#m;TwB&Z)J zzsLyQ^$7p|PJN9~KA3j+aMR|@acPduRTGP{bm6WQiX2_@>4%|={IrZe@$8PB8qJN5 zWnJVSSNR0JP*CPC`gK+&@xF1L*Hzbr4g?<&1L=Y~Bm>nB39ouE$z$_UT>V{zMWJ{s z!Ok{#cwj&F=O@}viua%CZ16&MoqV3m6*?s8^vYAi*reK7kj>JkL_cV zhUd&5H`N&4Kd**|?yRY*iU>%@fEpgPx*W}GRvfa?hlETiWM2~LVD#r1eel-4O_^q%bXw$QkBxtZet|&doR)1 zcNkm;_}oKskus@<8=uswr=rNvwjVLz-h`Lw5FE7rkj#a<=q^U4)fjJ4pPY=E_shy~ zt6b!U0O!FquzHD@hnSi~swTuFpee*iHgh3iA}l&#X(tHO43_A)#v+3!EL4 z_1Pn#=}D_9<~Z7VCMDzrS0y%Ah74G%vG$le<-s`V_W7-i+hCS?GfL-S6ATS zAJcz@>Bz!CGzQuj#Nep~Ej92mwFi7HcBG|?>DuNxVU^6dG06dL7OYY#sy7OJ>3fs%4@a=r(`#bT@8N5vNi?^l@ zn9yBZpt?vI%( zV~Y6|R@(gMihfPfF3g^ovufNgGslvN_rWDrOA{#i%6?X2u?h24TK8DuAtuURpOU;okc^g&j%Tgw8!leX9M1G`~7?pA!= zV#;POv>y|&+lt?(Bd=5=&mcD7hf3I6t<2HX#P+qC6gN5oq*lca)7vtvop`CL8v6wQ zMblU`%E3R-k^~V3CJ@S68OWel+~QHQrO7__9kXXEzAJoX=cjoXZN{ADVa{f5Sq+cm zKWitpHcPptm!*GS-`2ic`H%fCp2JMDetaTVnfCLEEsyQR{-R+^?0{YdjHUO10f;w3 z7Gk6T>cx>P?V7B}<4??H7ZtAdzNW*or49Y_=Ktx&Uj2dj+k5en**jAF$hMZ^lj8gm zOgcqmT1df6|MkcD7p7_a)*a?^K;D~k=WXR7@EYhRuv-3qxC|XGF(+x9;4FfDfU|fc zn>kBRfy`On-y@h#7iURq9Uq@DFjNYU zpBi4asdV+T;|hGs%~n}CS!I_|peYs7FdQ<;I#v%U8Z#tAihM5JC9F6~F`?*~B;9MJ z5uQ?SM4I(O$~MgP``Bibnj>bw^tQ`-3_PH*FXZUyZI@x-0VejL$CR`Vwd!iC!8pwB zSdj*iRB%|~r$HNgvrU2`u8UBlj(t($8IgSQSi_izVw_gyAc=+p%rx!MD4iY|$qm zWJUGr;Hrd~A5FP^3qu3Wc3M4qmK8TInKt^Z7U|XUDa#?#U;xv|fdBAM&j8m1-|Gi{ z<4PQ$%S(Xr5S>IrM^O4Dr&vWWIZ!BF*M98##}_vT@XI%E2YsSlTQ%p1r$_zVDlrW9 zC{0m$uZ3MO&rp%9RG{}4pg-C5@Ey3&R^Tfj)+V+?!vMes{^Qa;x9UUwDjPtJjAl@` z@V|*sRTe~LmrfmOFV*BX_nbxroTPbdN5RX$TUhs~<{sjSwxS9aVO?$&a5Na3NtjxAOe=*WK=OeUrak`YF)gAy z$KK>NU-Q4caZC=erm;6#+R+tAIg9JqkL?>;iJ-p-Au{@scdF# z7?3M>NUq@rTXvtqkQsDJ<2LLM(JWb-$cve8hnwmHobP9VKh3alCrPFtb-EX`kSEQj z^kOnW+VZ+C4iUw_AP$knYP9@eH~y+C`&>Sy&`4r0{9+3d#_#ds@aI|@8x_keJcZz9 zrN!Aykk7_7!528}$)F(h5;Fn8x-&K#R$lyL_R7ESGK-gHR?2d-vmjoM|L`+AdiW6Q zhagl=mt=W_@8%P~0ME3Xy$vc|t*i*EkX&F4P(2V2q$6I<`Gv#0n+x)#$p4NKQp=vk z#yt%c4@L~BYk%_lg#(io!5+9*>9$vMLBTMumV$iK%>TY`g?3Lv!=6SS^q}pV^_MMT z-sU4p%%H*ypK`Km1buHY$Jn~A<2+n>k?MWWJ)%gAq+L&ChBR^b!MeIg3Xdj*aTHMY zRPSfoyQYs@_CwJ_g<*5-lJmyIXre;1JnHBCtA3BxG){Z;8vibQL5`|1w@z)us#46+~nHJiBQglQG9|067lult$%{eojNuXnQ8$4=#^Vjp7! z{?Pdzk@b`ye{jaGN$e_xQ8J(-4+_uK5Q5T|%yyML@ytTvBY$Ex{hE~ggTMcfDvk6u z9SuoU^&iJdx{q@y-@@kc5BTlwA_W0<$hi2_xFhCQ`KiOV5(Nv&4evMC#sarVmx#yLp zA#0!Z($p;<5_`*Q=%B}02a;<7(R0jJ@83LVW?;yTzq!}|=KN>VE`IIe!#j6HhmPMO z)(QRBdK1for%kB7> zJoflP#`3L$k1pIcP%O6A^g}Ja{B+3j7d)(^vX>9(F-4r)9+#L{=kyXRRGLCV#vj`f z9Wo(fBzW)7h-dp@jnI)5BGXbJq+CRn&>LZ0b5spEz`yoV!arl`ajmIZyEDbJCzgI2 zrmV0a-<$k(1Vj3EA*JQa)dyr;RP7LFJhAIKmuXG)khngcu3Hr#&u5_Ku1m0Dn(!gm zVoqQa*8K}VukpmXdrH`D$Z8Dm8EB0uiAHCUibL&ju1Wf90MZ#;KxV*^^3b@Y4nqZ? z+M|>owUFT0__Xvsya9xpn_#<45I7g;Z;|Q0<9&MKh32yqpnV_M@~zq zse0tR8#O0p;K-meo%&$exmUccV+&qfN^d7Z_0$H)sPtjW&PQWHDpH17VDguIqsdr< z!#yj|$Y`Qmo7oyyg=K}{%T0b>&NWyWg$_8@xgOYluVI6MeA#t1a$}9XQ({6sln}@R( zSk}wzHKL4mAD;hS6JTkkaaC9T63z{9wONg|M2J0znHng`F;j$`ks|sJqD04ngduQR zHM+G)FZ07^+}LgHX7+x~aW^{1>C%DCTJ|698E(%WZ*wyZcH6=4t{QsG%~axceCRkH zy~C{qxjwI;6WSrE-10B)*Kr-uG&HPD1%AHSVmfcu6D07bufPw%Wn2?<{(@O_r2$ZL zFn^M*5J4bZ@E1v?>_ctA`~wwd)-vrGZ|jKcc4PtkI;74R&)<8a%$qiW#z1rM)7eTj@YBifKJb@!i&ytNqwaUtN^jD6xSiz)0k)BXwuAp; z^-%NMO?xEj)mYr|0id5b2hhhmz{}OZ529nG|6h5z*dSpmo5nZg-@~<$V~5GrW>)Pp zxEFgCYM_}Z(;n~57c;{ZG6k3jK0~tb4@(YL54gMbguCoKr8u9gxT^!TCq9#*e9iR3 zHS<2@S5vZ|4BPJ9FY|k#PvgD8;=QB5XS#B^phF0LC&NP(Aj2ae9s|q-)Zx3JbEjMk zHmqe!*jz>Q#O>MM{1i3F)b03$U0tcA4w)wVV83Rcyq_SiCPgZnfcOE@4V?R=bi)$Z zeaI{oFt>$diUX3-kWtyms!B{rM&C^F7EQd8gs7F#oO~5vB|7vcCt?KT`RJJPE#<{k zk$w0on@ILVhoeBb6OMP8zfB}ByW>JoaXapEhu>7JEiaxD*=Jn2lsqA)pCTiF!ktQW zT+&_UGqj~;XyOUBcV+kVFCNDde~flBU>laGH}plG~U;X zmMyQd{Fh7}${r*~we;}^WG`Hk9+ zjvU3WZpX{sm%^<>_;LPQ8LM{@H!9c@#fJ z))hZ3u6;})2{stD^aAxn)59u<;`N_Qvnky5J>m>Wq8 z^Br-FA8!&nHGRQi{`M|^^wzj({9!)j-L1D$Gfg*Iq}+f1PVVs||M}I_1lST?kiK9i zrs9Am`ZAjH1*QY33=bX_gn5VJpaqQ>A)uww;N(T0RDZJQfV;J6gmw)(GH!gnO#n0g zsF);hjYM+gb9}*et>XLA#A2!N;SG`P|I;FkG8QJ!4U2#IAA({eqY0y;z$ddIi$g@- zMIN0udQE<%V(KDjU-6*UL=o7)Do|t!{U7?XlKx4y91frsM6?XEfaEq@_=VOwTid|# zOJVU_Zyc$d(`R$Z9De!8`1tS>lKY%e2a%-KFp3Saaj%*>tH|2@?KuP4uJoLz#-zTr z>5bJ|yC|u6ZaPary1SY=}ElxtxJ zeJhgqE7pNiBM1g1rqH+(VV-DwnXpper@<&(*d=ra+xo)fx~4pb@#RkZs8ck{yM6Gs zO85Hg6-qDu!oUCXIor1HbYjt@DIqN6qm}zd*(pm6aj0Krp}SUlcrG91)G$h`--qPe ziLtR+?G2fzHIe_>=3XU!a?}Fz)B#ZfD9ZD7Yc94kC!{iIDUObuEESdV| zC;3ahXX8#|Fy()SPyg((sQjn-zWtZ49j_j?C4a)Ce~x*iepA(jZ&rroPCcD5ivO`k zoDrSbMbX~^_-r0sE#QxhNtT`K>(SEs;X(_4q>HJ=M3a095D9f z)}R`_E;jw43FG@uJj0gN#Fl3*J<2t6Ml#2gfXWl>g~=&?1a!}SMKlAZIPB@RM~9a- zd|Pvlzrw$Ht!exAIxGvgMCXw&aH&wh!=>{po3%I}U>5W|!Mg;K(8w!N=W!|`n+FOY zJ}Qjz(E*=eKcYVYr7{Sb1WSc@3<&90W4(9S`fztAX{_2HQe`l#*zxP|)6EW3IW7j;h zaq3Y|ANCwC{9x|JQVbuaZ=$EsH=C-CretwjcAN8`M3DsMcVTY>uouL?VZqZ$;&csQ zCRFT1=M0rqK4`VTH?)clnK+ewH}4#OJHE zE3DAT@#7WK&a84gFLJ@4$H13h`K(?89de=2 zA??_d&JTcl)wu5mtPc?&$XEr%bOBS1fTKz#l`uxXV)o+tfzHbCLjOXvb3-l}&#JZldbRhvV`d$wjcN3H zY3d^$JI3Zj-X7@cAHXXVC$SEkx$*{lfbgyBp;ytVQ(}!Fff88+cau=*bYe)cK09^z z=(6&-CYIMOre_`W81#73jKY95K0d4bnpq%=8hCLI&}-JA zE81f%rZyC#m&{R2Hl<4!`S=%BikAVV(3L;IyPRa0k~v4Opzt|CZZN}uxU7SCYU&vN z`e-wV3fXg5HBiS^aT4d%E3XZo>6vc|8WFaqh$&%~3eICL zWS=o0hG9$OMU&XN!2=`uwA#2AMb}39N(-WEqr8iY!krh|xOcRIS(LOb@v|AUQODky z)F*lIii-|0{B+wgZ)@y+RG*}!Z5LU<%PBhPqBiBJ&ZGS9Q_Si};mavnQ@SpN8FL3A z-8j4enUKwk6zou_f&B24FN!?2!%~bK7{Hn3DYikr4BNGVKVMN(z0r6)><50+rk(E4U$z2{||?_OUrM#2bm0a%4*i#ZP$Qyl{bR*v-O%d(#U+N2HL zTJ`cSR9JwrUMvZX9WrtYD<$N4d&s(pzItR3_nuitPoiD<_ra#<422#IW{EfT_!Bs) zDqDAc&Qk5jaTzjfo_iy$0_}z$J~Me*O(oN27mG=8 z%c@-xF}H4&Y0J`S@?Thz%SeDd6QY<)S&QzPu+p6 zwj-Y*R6d~?pkFp)^iK$tU&aH=P*{jYImslz!BqTlkkE)|fNVgploxXLq2dLr9o2ky zNTH)+rgh-5+{!1j3et2ZXH*W^&N7c`yiKM%uc_71yVews9yFGDjBGr0D!!&|l)n@+ z(a*=zd(n|hJGT{kPR>6!(=Tw}mmfEW`gmMBx-%>=m}ndG3f2Dvyj`K+klewEC(AmG zBZCeB)b?UT3c&YZ2q0vdz$^gH0jw8GmL58KMD5kdfBNk;Rn^-eW5%JgPQi4Y+Ex+q zfMSWzm#RljTGxEU*ey_p%%*LF3~!a3(f2JzpUbac|XaK2fml+ ziS(Q4kYxt!xl2=^s9}g}0!dy9E5cHcb%{esfBy7i<1j~r4EeWbt|UzTwzViDif_}h zI(xUEfA8{BD3`plZTi9fB}mi%G=qitd^~N$JM%{FNSe5!i0D@$*{QyZ_j!;WPEbyO zaW3m8sKV${LafZ1u6QpAfDxw?Sbr0rGtyCLwe{l^XNK_$2c=(Z+^1H_x-9|O?I_4Mu=qCE}1B(bU9jDZE`@ ztj|hL$#*D=dwA&%=J%pBNKo|f!5NMEQDNUP>ulklO)R~$J~0(XcI<3*3sW%LLF;#6$iQh@6ZC9lgjnm`Nwn5xS}WE> zvJ?6z>^xX5LjQ+SNyGu=j6y6zYr{BHGWN0@k#607cVl7|E4sZtgw?w7ZT3%Btn+?& zG2hi`)dWkje=#yMLksyQ?%JxlmtUP%QFLP|f|gsSlZ@(wuK&G|%kV5=O<6#sdJ*%7 z#g5O@LBL~WxNX52t^S9W_?O%Oaqb#hoVy)$GwsQTtVnx;T_tp3UVi#?4T7){Z_S)Ttp$*{~yOZ*ICXsZu?K)T+k(0OnI>A#T2jG%RV@z!MWws6pn0}jDWbZ%vskGi0#=pxfLK+i0ls~S-f?Gn5raVil zxmJ%r!&WO6i}MtExVYZm>Z-U7{To;y^fC3r(8pJs_3@a_8#w>jJX7fHA=2NJfmRdn z9NZ7Mroj*Sk?`k`?ItHEz>uIgJctLOfuux=UCQnixnc%IVW`STF-ot^s6CE|2EW1k zz%6#%nGKGwmj*71gTKWlm>=U8Oc8F!&n_Akq^VC}gPo5{|1zx;z82}bmNI_R-OjFt z|ID9^h#{{JTjI_PWnxX(v!)ob&`4FR#Q#!U4Dnhwv}CoMu~1-yCTT@>Lr;7lMi}RP zfa(8G2jQrXYJ55%^HjqW1%vr_4r56xUMJ9^Myn=n_+u2)ykRh26%v3%o}V9kw~zB! zzPH5m2iRh*EF;G*#)*@E7`~fza;!k)MVPrUbR3!IP<)SQBwoZ){Y5BM>um6Mwbsai z@%^(kSK*{FmGt!Fy!R6;{h3+!Yf|wK`PLR`w72PqGmBxit0{%zgY91>_ceWv2=7;L z>3+!~o_k+JSxs;3uP@^(SPAfQJ!Hm5;5CrTEZNHc0gR@H1q-lB-zKv}c6&ntc+MZ| zLRp=bZ+8IC@!3v1XV!4_=@I-DFmU$9aB0NnObgbdcdPEjdJcxi@IV4%B*_f;Ip+eG zBwB@y0!|}HOVFnV-3jz^2C||%5)M}ct|?DoWXsooCh6MPi_Pcu^R@1(SKLisKDM)v z*|njNSGS|Xr>}pF0NC*w|Go)4e}_(0%!jj+ch9yk)7q)*)`kt-cj{WMKzJcIi^81J zlq}Pyq$5gJiNK|?;2Tk*#?gq(H4&Xh2U8)plYaXE`jCDo5#;5)D>NpZPaiUKh}%53Mv_3nj$Y0G2>dm4)TkE>`+i_j*TTS z=vbDv#MEw3U>bYm*kUbv^U35L!U2DL=VrEf+?v{XkyU--GBP50-&-+qd?K2)De7A~ zwkal{mick%`qAJ&CKnCuIL}e8&Flaoyn76K(xyOm!lTQGm3F-zy$yT6{8RpF5np?< zM#om3EdQ1;qkS`bdgS^MD+8Dg` zKGYR&QMBWNLg-d=fw%V1Dgg*9qHroTg)-@abZkw)*6n^YTH3Xy3>Eup_|G-Nc19%#77ThRht9GIxM0>jWj!hZT&)-H zB|X2(LQ$9N&XOwi&Zx86v*}&p^)=O$%NF@-t9WvW(4?CAvt6pTpP!Us8rZGk(>aM8 znA zHctTJERK)r7>?JN-$OBVlsL-TqP$bGVg-aX@U+)G6Um^R6_sKwVR{9SrVH|ch@!b6QQdcpwha<~G&lT-egd}vL#({)u+ zQBCrJL1jH0uZtrFO3SC!4(|57HbuwgO`9GO)#ZULJ6>&sm=t?L9uoB>fg1oK+ai&O zoGIA|&6%(eVei5khM8tgO)^Rq4Og_LK;f-7_b#DKkDJCUd)K~Wm;Eqki=3P^Iu^-E znMnJPei!LR$YB5o{C;`!ehEpmo?Fn#7lHSN+;2UoMX(He5F_<7&-14@v%Hv<7aM4l)7((tHao*fy`@*pzVhikU{9_*PGh}GNMl!9aKvJ-`~ z+BNF`&siN+ru7uQ4hJ@51pL}P-PS1>L-*cqD~64Dkl%X6LGoMA8j+CR%TwhhvCvIZ zk94`RNghbNfpRYp=L1VcoNvC>QXwZIaUK3`TyG`q)@r_+1;@{;DK`Nz4YQR8-qe*p z((4?}u`=XF^vq8<+E!BMIE*LicJQmKhn&#KN>x{if_y@9mIBb$s+#8sKX$rV6Mdi` zyO(n*5iOGG1bRER6*t<-&5rGw4dmE%au$wlyI>2b!^-~Z;Z}c39_}R%!^7?S0rKU4p{0h~xJF5wV3XGzSP%jGs_SjoW$m^VttdvImH@6cOtU1F~y|Y@Vy$nUKDdnx@uh}gW!4|Lxfe&RF^aJo? z@(%xBAb^mBCNxRfUDBkuxg5w6G!s#fUdV!-&#$vYK`uP;o4?e-B6()*y=c-i5OPZB zKNl}(*Y16j{KfMD0mNx^>>|Z!6j3DG7Nc1J1#2#j=?>OFmZ4RE9Iqi-=0(<@ zVcno7_Fsf}cYblV;MW*cUyF>*2PPRe^vq!*tVV7D!qu5O&G+7jopejB*bJ^IS&itsrf@kC2yj0GiWC6B>n$ z!5gS{0kUJNEK?X9tB^HWkSU_ao?@jeQ(zQe4^|`jdDYv1G0u$WRGe2gHE2flQziDB zAI3LcdtZoqYu)KaG@)FL%l{t~bo54)th*BG-JjarCRICn>Z z=dLcqMbKQ;;Hns{V=IncuSA0phcdo%I=@iyGL~TSVCgKeg;(()(-RVyA>a;)ucACG zZ}AMW$pkB+yhe+iOA>^Qcf%Oy?U&e=m2PaQTN8Ko_{IH~m}j)6G~F{X_|u91hfFln z8&Vqn&0W8S{|e*QdCeHrFj!blvEgFWsZuPLrtaj5WC1fT%eV9yKQ@c4cen+ zSG0%tXx8_G!S#;AOn>OMzs+|&0pp^tbQt+$;}}}rnZ7qA3GBj8(}kVUc?0?g^$7^a zJ7q@!Tr94>hz>n4#ubCXgY1bnYqe~}Gc0{6uRhSnJ(S{Ez#gG^z7aYMudf{pFGL8hBfz$REG-4=Lyx z=BsXUJMkIztS`U28ie#_xH)mWy`LpbPr{5{D}^RC{X!Kitj=ZjnC_@6##IOiIN1Ls>^j?3k^9Xzb=-bIcE7)bUZZ2WW3O&n zIre%8K|IPi!Fmrt#u82km~k3`&>pFU-CRYE!J4xRHO1Y@g_ODI1SzXMJ`(wbFLtLF z*2~$2GCq9wTz7sUe7kw7JisVTmN_zf{x8ALV2E5Y2q`GtI~)wr8z0_V^lpe!IC=F5 z5DyMB2Z;Z>0N#z*vB8aE$DPlD-Y>}b(nAK5Wh#qbbD2z$kVDcJx@)7^L=+sPm_p7=X_0Ehv>S{Ov1$(PWp&SVq3lB-3n!9Mj>QELDX4t^){f-nOB z{p=N>EBMA2&{>k~RikgEkiCd=KFEOXl5c{0!DlA_cWg7(ZWg^36S}*;$1Hj&nGZDz zqvNHCaz^`q6}@o(awqm1q?}kEWUq>PS&`?S5^C;aP^0Xyr$S)1loXDG4rXQ>`}JsH zjzPXT`iQ|Z$`YEj_iKG6ZDP{2zgpPEh*$LJgC(zv;6}OY@Pz~kZL-@pZs8Bm0q=1| zD6M9qnnhMf%upF4*S-Kgx8yP@0%L<+@&NKgjFeWBtCw8jvJQIpxBflLqGa7fMLnAW zfp;SLf`(NI^ZNd)Qrh(Z2zt8LKX5MenuXnt25Htk)1m2XQ1yRalLi=&Ki8aN+=CC8 z>r~+6mE-2FEKDoybK5mQJ*b=o&XlVh00r(`9vWLe_=8fu@ckDxU75yaRzP(tsK4mN z3s&;8V$XPQ7>Q#TVRHGk$k2dXMUAZ=OfXYNc&*Ey$6XTAXXhq>;3G)fXv9dFC$4*FK;VEfsD5B10r zeFGi8SHoFsdYb;Dc5A*1oKazcM5CZd)dbB#qCJ+x3PF1#1x<=PP|#$s)LKgvIfq`+ zbwBkM!F{5)$ayvgG%Vjwy=ZVJI6%!1`F`a3X;z4O9>l|NUp(R@Q$?Kguy`JLgi5aU z+t;(!&m4ai@9&N?fy!P(Psk!GrDxKEnCX{ruXl`ycCdKlMNo_e)F7_aCBK z1+ji87_@$sB*U9>yu|v~i}lo4t-}jQW}R1&U%OA2o!i5nk*#{OKU-Kc!-#6>?Ws9IqbjnzybWi*P4%mbnhhtISos2n*1#r%FM=TgD4Y$H#*iYr z=qOq%#3vdJBgGz-uR=QM(H}(_{;)?;(Scc+nT{c>jPhoaf|UxDFSBn;jJLL7Q-b-a zDcn7-&w{F5<0oppmbLxH=Ab#+fV`ZzVb_sF>*MWvEGF8ePvF&l{QJs94$j4cTX&Zb zZxUxUN_`e*1^L8em%LEgBn6TM>2r_bR@CSsTl^vw2@e=OG4LB+6J1Q@8b?V?-6UKB^u-<*=f4+cvN`B`wovak9Mhbq~=6PFSFfKw?Mzn%rn;E`S4S!EDk2hX{P20>yiG-)&Nn^OCG7{Ktk# zSE*80l!w_ScNg_;dyx&=t7BJmWL;&Ti+H7$Oshj$Zge{YL+TSmkL8-(UQp?_xL`Yy zxkZ-PPJutr4>cu#6GT>TIJuJTh1EcmT1T8{Ng-~~)orG5)GNe&=P2}ltvz)=Dep#|u(Fj_I*S0dvHTVV+)iP4g5xd|1) zK;O|cCfer(Wwc*{PrvkNTmDi^qdTi{)+ME;dA;6mbb?l`nyKf5`7@1CwpxSUv_Rij z-{>XHgJAfJVsa;8+E1|suvyHWBUf@mc{?ObwQtqU{4mDJu22G-Dhrl+po4> zI_LRP-|5p$uX`sCNwC&B{B5o{gWs`-4)q&k2L@r9dnU82(hv}hV6i|@Y)dTJ5%m?_ zH{JW~dXp(EK(K{4W zEnKysU-l1fkDk*HNKyWrQmEfQU;9;da{c7etU#4?EUqj(e@2pSkPr>L!I!oYY3R#5ZQT;|WeocB}>e_k0rVC?kSeGTwj1HQ95 zJ5?V8zOIA|tQSb>n589+7^Sqcy20Ia!=s_P(OvnDekT8_QE$3FPxX=Mhows;{h~#8 zqnhQj>eTeXv%mudl)Ca$dOsHdRFFX|$eYY5)obW6n6mHD8G4-147_YtW3`9r2loa# ztV{ZaY8H@KmK})vk@&$Le6d2S4|ffU>NwZjg7?4PwpvPUU1<8=m^~)Z+tHEVT?!h# z+R4?=i#cRScOx1#27w889aNCzpvaveW4xu0zqpI4vNZ4y6BVnLN=x{sb5-iFxR1P} zLwxO7k@LVAn@02fMe{~P+Z?`-FghzxA$iVlmjXN*^h(LwNm9Gl2e6PUmlR5BuwTba zkNCv9CC6%Ghoq&B+)$MoR9KxG6sf59Nh*r8)7q_QZEbP(vJ3ZH^z5=0XQPPCNme5} zxwVVf1MwM*w{`QCFecU*;HcE7EGS6uvuq$sC0CP~*$;iiUPQTB%$UW)9%jDV2P~gg zJu<^tc}inz?;R7c@%eha>DfpBI6O+N33HvW>iFNUHA;E<8O49(HVuzfDHCS9^MML` zpIqa_mv&B2eH1sQWy}7N8$vQ@Co9p&Z1)~ z$p#=Ed62*$l2d?oU>X(%tDwcnhNDVmT^iNPim)*L%@S2u#EH0kCyaxbuz1Iy8%0Yd zBr6ram=^I#o^?}d^va>`O;Z>f^-vA)L5243`tWFGn(E~lmsd8df5qxip`pby2J|ty zDsPw?S4#HtTTOp3uf7xV91UjNa>F{018&Y#cOs-$_bOdgv~CoQh}8yznZb=7*cTf% zA7S?i`bs@1g^p5Mky04rV}~il@ijRk9hXR94q@@z=DOrg-8Au^$DU;>Ri2Ug-+dzDoC6cgasb6M6a8x*#8RRX;P7`7M}69vp}}^b!55%4hh@=_f~rK9h>EEH`9X;M(gW9@1Lfyl9A2D z81tf>HB)c;+`XYmV`J@R@Zf(O0t36@-oShtF-p-PC^s=YrS&D1wbIAmbUS>|)V{iC zcN3h^(ir1FgIA2vt>Y0G?jON9CRq*Xd``0$YYZSSKJhDAyeMVy;;SV2qC}0228;`* z5YmN6Bxmp?DIB<0f#NhFB3%tC7hk`e$$8Bw^;PA?>3!U+Z5+MA(u<-d$JI@rG`z2) zv}RnOQ|`1)6JiEu#k)og9b6LeRO9OpjdBjrmd@F7@aeJVXTP|jz}2r$UPW`hwxS@i zZ?G0`%2TY`vwYm{#;o)yYxW)+SsOkfuJ641iu}-&ie=j#E8*Lo8#ZT9pksJ(mVb=D z)9{_wRt_0`dHNeCw^XN(Kk#MSgsG2~J-%geO7YO}>;fN_ip>(AQ2&IzL(f7&o*C(6 z6@*B|!kC30mi!<+_&AY|`oqQ(efrOQy#5~-o>r<(&5O;CbhFmgdq_U|My=8i#U{GX zIHj@#|*PsLWxnB35y$T{=pH}>%eOzS@r8wO#)sPgd?DJ-G?6ff^1|tBa^n!^Crw_p_`Su8$0jONb|+E!C*KnmqYn zMXtSvT|l(y-Q0$<{!#kak@E^&g59KqB_>H9u1(9VtW{Yf?s9w4a_=nTwk7gf>p_o= zSS#f*na|t861((GvqD7+Rh7-2)o1*QgQK4vuy|6sLitY_OuuPV{=p|aB8(o^%Vz4N zAjR9JBcs+iN{zFZ4jOvHCE(V@x}6n~N-5hh zd)A2s{HHvYII=FwovBssO?uO(s)`Fg z&kmT7<{|M%y%X}oy;8i_kc=DAxkmk_`tPWhDHEql76s{^f;nh}Qb5eX6&fh6abA5GGdF<&E%;$3B z(Ct^-DyE$_j2t!8%OxTuKg!+fZxk{>K5HX*!&Tsl9Wp5U_P}k7!4OhQ;4~yXSYLPC z00nf(DX_x?YbOnEp_^Mu#*)iRCbgNi#}3U+b$4}3$k=d6QR3b3=%wZ*88h8YH}&-y z8~98+d%ya9Z?{UrE4NKfu(wx6)*Q^Op5A^FeKVQDw`l#PC6o7LR#q{l^f$e~nO0 zlg9QBlB7twU5b8EAFWLvdQOU%EGZ z5YKGiyY=`J*0%4FozSdYI($xON|gWL<&)bNBg#;~)QIh!3LO*I{yaDsv-%z9oPu}y zi+2hyeixgP8GkoBm9Ed6!B-yHZ>>6f@ zC# zu}dG$=O1OypVU`jR0gLP4I33QSrZm|M;8|0VZD%F8o8z-QK?Rvp~opTWT>rO{j@B0 zN`p=cR2Sd9ojH4K3Uq=DPp8wK+5P)x#57kS;&B#vcQ^tl(nzw#L@`B6ThBG_c zaO2)DnAhVaF?BVSgCeb)^gK^*?c!t?(06d;kj%Mt6H8K^d~B@!a;gRlPpzvQ(JxpT zywHQ)@o1=Q(DU!#i!M&_X9G80Ssytj?&b^3_q8hK8DCT}uOKX{wbfc5<{vS&EF*pL zitUdU?+hIsHR|ZPvFgCI`~ev*uPtBBRbqdVl^5{hGvI|Qbu^H5VvEQmbTFG-AmJ|M zOV*2f6Rn^UXd^g!z(wK_g^gI7YN(SD|siWb`r`aUl;x{ho;IQeqv>WW0`JOk7J z^2ZdQu@I~QVZ-}{XjEl0N%wu*H>oh3FZN0CC@2fgpPVTb>~!>UbTxW9Gt=`^9;%3m z9M)729LA;`I|baBZ@TTBHKouqBY?+%iXrO+9k0NCoGgASa+&~Xuo>_pp<_a{S@c{p zvm_Nb!1;67M*%)`>og!&tere*X7h>=%p$_& zBOyJXd@o`z8kLvRz?x+nw)C%?{Or0BlH}qzX2I4Xr??C!YxUfw{>I|s{In2jM}@+_ z?}$Xx_2uS3Fps}kv#<5)-ZE=;Y2d=CCCOgVrE>?`yE{x6Se@%TETCpc zq`#rE-aomZxWriO9OTw_R(XnaX#V_L&8*z?Vc!}1CWi^%td%ox%mwsIv0RHx=r#i_ z;asd6=cKdv38gKK-jXsg*)$rSEZ~aKqp_CluLEZZaBr%crSCYJ&(1lu!j?z{KgbI<@xw*-*_}|-i z;B0ApvV-_DSly9<4YhDotAJ}v`OBr;TeojNOlQ(~a$&h9JytI=N*jqHx+CU) zE#8glp+&5$2)gqj=nl->T%$Xs006Xy$|(UPfU8J4kIDcIgzoUr2z%$DtotZ3dlStsR{JDX;5 zSo^jPH(ShY2PnW!q=?^Iz8}D4_Lw=bX>P3GVbZZr>vqo$R9os6PIvIt0!+4R&sPL` zVfBGEx#}$sP1kxHRjaykTFj8B=}cMueKmtgHSzst{)@}iM1yXj)SqY=TwkvUYbcC( z@e08pfUlI#QWDdpIENhGr3^Ni(tK$B0`ZHf+r|SddIgFH)w5wH-RZ+LXCYZ_Qz0h; zIKCZk6$iR9tu$j6tn5ptAU(HY^D{fLfd8V-eP5XW zV-Wv>YSZw7irBD;@hD%;QF~2NVx!iV&@S#(db6%SYl3org*n|7!FCfDJE1OXh;)v?j=mSag+c-{tfNh^tVXMMWsB@qy%7)QUDPQU=Ffk z6xur}iG|yJC{cyqXIhb#%5i{lHEAbW%v!pn&?QlGA?pE%lWs4-7o*gs~GSJpPv zB&Bv2U+q*YW9mctx}ucB7treGPd~S^_omUX zm~U{#Y?wfA@fw1KR7k1VzQ#S+)0{H1*!Vrk5qmUg>A7V#KV`3}&^2rw`sY8THgT*! zYZ15_QeV}2%qq6EW7WRyp2zMvI#nswI~CzdfB(L&!L?gnJy4&VxUr?GHa6JV;^2$Q zX~B^r1N|-gU(Txik!0ggN|QDLgRa~`MCo4oCgee*ITmv46A)LCYD>+0Q;z2{3s{I@ zWVnuEN)~NgH*@Cl!sxBzVU9T4F+9{|rYWkD&g%Tgyy?4KsWq%KXJT#+)8e|{lXc5z zbnV)s7doH*qKLiz$(=RXsRMOBU(HlY+$N{55;o1;*j!h$Z#OOBH5r`>w#;4QlZgxw z&4=Q2W4m2s5X_t!a^HG5Swqquqx*sOvFm6jA%`3-B+rzKiDpJgg=>vSGYx14l5n-IV#kNm{*{wO1m1< zK>=oW?2i?EGNx?e@S`J*ho-X}X$HWZHm6}WrqSc?T4)UjSIa|H#Xzm6 zK5Wa6R^DVys~S>w%0q3b$z;YYbk@glhS<*iAv03fVphw#50A%8`RRI>zqqldN+yrj zcZHl@us4TcepS!>0CYJ}2CHu5xV26etb|+jF07_2i zORxtg?jt{HNipzWN+j6|UrRo%RVY#!cT1sq@s$0*L$8hY-5#)ZwA8EG_6~-Owj&R} z*zNNYZ{lRU`k+Ea_AoXB(YruZ# zK?l&<9wrX!!?U!K$Rj~0`5Ul(o&;|a<>2H)|JUxg*JzA*T`IFuldTQZS0+q4rP^RN zJ|0g6d$t_Euczk_5ZUz%@!p2r<)*s%!6TzL`Rii3p1W_DAJ}YnIJvu>#4F_kk8z8MurkkmtO{13;u9lZlcJbkf37=u9IAV%f5?XhW8L556{9 zdvrsiw{dLMl$UL&3L7Q1xV5UY(x>F}*qBsG{LE|Z9q4I@lrvaXFGu4{I8~-h%)vQ- zS7c~cF+Nml9Peg4*^D{^ESCz zpjDSET?UNH6_nGqtt)OAY_ia*MmA@HurddDT}@X7 zO;uet2CxKPi6*eF85uZYSVH;|EOa1FfDS&96;uz-rc787zCvNjB9;Cr873y{D~kTv zJv%peT()ANS|j9Re5FNZOa`4|8I#UpiHV5L*e zCimt8Z-=V*_VxRY)>K8$zPaF2x|3#8I-u3~GM4&YU4DI+y@%3q`k$HKhx3uIuJc&- z$d)`B%B&$H57&w!zmAeRumO};LvkA#GyF59Oy-E{{mt2!QZB8oiMLgSF|TdMolo_T z-!>7BkL)^rwlOkcpTOzOeU5yEgM)|vV9>MVlLyZ>{P-OaE*aYI48_*m1i{%B9MCK@m+lC@1PkEvs5Rn!o)n~Y|eM6cBd z#!dCrDS68cqZN2Ve#TR*^NgLHZQI~>$Ml>#Zks*v!!xa}&TSpd1GJ5+ZyWKc^=g?V zpy}|eXbsB@HiJy+ZHyB~Ri^z`>Mn$XT)B}L01qr>IQ>D8Uu2<{%nZN^vct<}isHsKE=&Ln z6r6;|V#*+b0w{s?CCFCOuIOgZzCJ&B$EsLi*ToU867qEnF2AafY>wL`5=mXdwCia@ z(4ph9{Q34eKbQX`xlw4K1w}G{KMkdHqW_Hbr_jR(IX9Wrb-M-y5k=dRt8S z7Jt{KhQdZ)U)!C=c(c!-@FiVle{Ia<4n^o}n$B*vr+RBr6CE{SD_0yVj%DCjLhQ<; z;9p*(Z$$e6F>?wml8@7e^F|YkCGZwE4_vN%Q|mK{v$YrK zYO9_r)mog2e}3o0*Y{NhI@j0QEp78HLBUE*w6ejku!}<#&f?lUZL?U2DRLo2NS7R| zb3{KqZ;MxJf>||;S3Beo*pNe53;jVlMuiN@Yg`Dh!IWVr!3-(EO9D&% zD`6JC_LceWHPg>)N4Fj=bTt>AyZrj4{pNC&R&O>-`w4UYC)b68kdF{ zZk4;Lx5z;O7)F5uaDap?k|!Y1AofaNDJ9ZOdP=$D!OJ5Zd;0vi{Byoc$(ITRY}ZW@ zZlG~xcI^hqzj?SW{RZ#+DDTv@+=tu?8%L|qn}N3ZQ)HSPHUUuBk=Q_0HO=71QI zerQgUNyHd&#wA!sYDIe&mQe@=gjpI5bJAm|bqxi=9?AcG7$9 zyTm{5*z?6*S-rBj_DHXN^_oG2N9+-}$5W(2QJ-vXA9dINooH9Sftgmc2plbeP7ofj_1ZQx{iB4ySs7E zLex~@ly?`jCSxR-4_aH?>B)ktzi6zftG79Bxaa8}Kn9STSt7~^fGvOpq+r-e>mZOs zAf5qh(Rvz~(^=A=Yh7Dl^EK`kFqz^$O4=X@1sN+v_a*ZHho-OA&fNCW?09`4Ei#O3YVDg>)+&*GkIOdL7T6OjP?^ z4KWjo?Zud}oL(IW#j?eK)@RkQm9eUvwQ{u1!Qsc(y>`4Kvf@C;@Yzl6@(Fpoail8h zt?sCwn)lFrLJe1ClCX_#7yG2T!6Z;~>T=>>Bq%w~S8#1^zRDs`_E#C@fySsRZn$^+ zHitRVGSCu{n%r`Q+bC5f25YSyLF6xt6Hz7u_$Mzr0PI{gpI42@k~TuF1Fp#}2`gn$ zmn_TGx0d1_##PS=jO`N0kx?QU9DY?S4#q+aagS6ejZ_A5Q5U{Tz3IVkZaDJdte>v* zckUXDv&PnX+G@i*qtNO!TTHfeETrKJJYl8N>DAyI0gI(-=$~9WpXl1(@Aq}g-E^kS zSXYyh*_s=xRUP{Vg6wi-%gQZTcU@G6pUq8JQ+`MD#$tA*BbBnZY+bx>;=)4KR~(Ni z!jWj$FZ-@uk!dg_IwD)E9B$Vkd(Y9SNQWUDVhS}E~&@2E9kihdH7~L#<`-(8|1mZ;jLiU{NeE^U5nAo7E6!L#}Yy=^{lFyUO0H7>7`S z%9T-KCuKS9QQAS(^vRcINA6gcD(-u16svAhvDxiS@s^}R^d6(FU6o6FxSSt54VFyL zN|U6Pt{p>p?h6x)d-Lz546M$GON_<$mJZ(9)sE~$wr;63oVuD)lXD9s%z@|<_gvp ze^sP?p=gCkY43N^bv)bf`U6F4qjUFDb75U1XSdZx49?d1MspL4@d5BtjzF#e<-wS6 zxcw4-lbF4nzy|l^>Q7PN=T#pKviaL=BP{Of?Jbl0tY0vrv z6P~GP>;4r{zAQ6(VCaMVWFf$VY>CI-l8f-RW7gyq;vbHNiL~0#wxKn^ThDVwGZvKw z6kTG4MXuOhwGnbig-E=0<7i(vI<{gY936C|@|sA&hrJIN06PL1bSAnh26-pT!@Nu+ zow015&A?B5RC=d>$WW&}_Kx?fJn2 zeXda7*5h||#7B%f7!ISxqLuR^FNFDAnO@=wb2%)rur*rnN$I$>I64z?Rfo-7ZEZun zF)>tQ*$ZG%~!uwYV?Z)XmW+25-PuK6|LWcKvN#qtD)Ra4c3~$39eu41Bge z5q$H_s7|Kh!9sWjnL-oe$PORxtzfPYV7Qj1JZxzlcy6cmwk!Pm5NAR<$Cui3tR zqu=55$ZCttdZE}G@$|JMxi1qx#=5j)2ksxKo2)g3yEbI$f8rPek)ds z*`c8uIvd-DA3V0c&3!&LdvQZ{tv}anu51r3Mi~Ct3u`O%u|{9rnyzX!iAQBRkkvne ztgb|b5cmo*pnJ~G-neGeoMDpU%8ol)xahV&+jS*LO8X5Rfeq>zP$F;m#pI2zO`HSRyVA(jz#yVth)l74KfF)XvX<%}b)=JoZ;0Gb5F z%WQ;)(F*!1FN4K%%lgV@WoiElR9n#k5K3YNj8fQvWEL<8LT3c)Gz85MNsw+1X{^DO zr17|1o5R;%Oe#ejHdn-L-aXllcXK^8J<&>$QX*jCG=oO&vul~5r^5_~Rc$xwgmj)* zEaK5>?;fq&*cA|}H=X-Je|owt#(7y`Rf(8fA&U-IlQB60sZwBQpFJ^Tin(;}k)-stW$jP4&stO_9iSfk3`+0ksQ-!L^cv%T3gcjVk1ClXtp+LV%6 zyb6WaEN^OoeX%gF^#sgooq=&zlpO(H24Ijuq?g4%fl*M6f@M(is~C>l%Ownl5Cow< zoF-rLAea0`lrVBaL1a9mNL!dJyPUyd;LTi<*$hZz&@gEXRyji$h(u)Axwouzn!@6? zD0zy;k-06~Q{BfVlVb7Eu9F3ZIpj17nT)zjxHVx1DTYN;E^W3ts|`1W)EZw++fYcC zst8McakWMr3i#yj`n$S1{70NMK2@?BHUzx_iwS5s2nxh1n@=WGNS!7btk6*rhcNGr zGK(ls$R?}meco{I;nj^nd35x~j%*IHWiif}qN;6WmC_~2H@IrMdfN@5&gLe!H?&FV z)QQ}+9ZqvwO976#w1+gqPfu1K@6z^7Z;0J!%k^y?%U}GP@+^a!n-Y^NYlz%cP^k7ii?`0P1?ThKpi97 zn>3XtW;(-M?2EQ)O|GDhbtEx?qgYqzRhcTgW2YbZ^q`ERmsiEZYs%J>fqJoMp>$DKRc6Jrza{!*mV-N$lGlAGce^pe|w>nX| zy1Pc&urI)Nbl3Zs(t&*!MgkofEBhHb9yZvTGcK===~N#!thw>7E(Tv|)xx4Jkw)`C zBvdoCBR#aU&B>0=uWS|4tZIQ?C8pu)c)Voym^09p1S7n8*N!NSCzh*?B4z_(?;Yc@-eWH zvU#P_l);DX7nJcM)tdHa{pNGe3^m=ht>_s%Hf9!S6bc@TxuQK-7juaCe7o`s`OTtu zh0~+Hw|=eA;j(h+Y=JrHDQ;?Y@&BDhH#&}dVYQRTPPGnuOtmpnv}ZPnS+hYs_Qj14 z&sFFfHuV<|ZdhR*6xu5aVU1tb)ebAVYvWz|w09U|XLOZA)v@3JCIQbU=8>5NB9#dC z`EqoLpsj){V{7y(f6n8K7%Kt}p}-MJnnGQ56%u82q1h%uG79tG-~)=8zlJp^C$6z6 zFcAca3S}t~0eS~IN{JO2%aOfbasl9GPl~;07myfva@@%St_w)#wA zOF3O=HL002a(yGtpj~9V3XC)Atc~-{wIXY@Nc`4^VU}o>7Sh(vOod-jR5pz7C@RAm zM{7fsLIMd+oiSINR!jU98H-GD|HImb?W5t%^*HZMjB!s+WDFS{6IHz%T4QQLIk3+k zNgK*_-nho!rIX0Rt)T;FOq+1}mPx|I?XH`-(MS4&*|mQKUBH8=H5WeYbG3Ph7-mr4j?G?dlhseF=`NeT_tkz_% ziP@N#T%*(~Tc2LN=9Rm4_4+F&j`f-v?7e4h+#FTt6qLVtj#NKS(qiP zqhjD?i9qp?6(w&Wu3WO9R}(lW)mNJS15Xr>_*RYgXuVU@!^XnCv838xY5sF6&6eBr zm1|Z_gudyX*}OZ0t(*|5HJk4F(scjLlktY#k4~1$172IXJf5@EWh0^lhmBWc8XdSl zHMB9M_8KK(UrRdD+nh5DMMr}It(Vshr;t&pR>p)hi8Q=4>} zpKk87cBHcfS-3mdwAjwGMLm!)6< zY~7MV2vACM+08CF5VTv(8_s=ccFk?09*(SS!|7qJ%Hyz!q>Xj4rnp_4FE8(tB+^kq z(*;+xSEUbSjK1DFw?Hwr=R`icp(ljlS8!Zl2$-!c)oy1^hdZ@lFyU*SslrSNw}Qn= z?ET7td~Wr=jN9F{Yp_x>Cv;Q|-X8HLZSr!SG1gX9yD*%WN&@LdpE9aLIZ`9w zPB-9l5N6%cT!s^lT}{y7?$A-L;to)0M_lzGMNeTHa z?fSUi#HuNe_f3a~X-a3x?5Rt7X(y9!H4*2J{G#{dnkrA*T%9{IaqD=z`~}QfH`6%x z(oN0g+ObTk@lPif59%w2Ga*wUSq@tq=^3{^nX_;(Y?{N7X+$h}qyum^3Hi2NjB~Kd zWnBqpDT>LoHWhPG8%M##q1G6nR3;J%YOx8msKDVw{GnpbYjT_5l9Fj+hC>OyT~Mn@ zRs=-r*&0t=XRWSEfBx#=snrRSbI(05uQX1Cw8_rRy-bxwEo2(P>!NM@ha)19cgGzs zu8j^lEy}(dU)bi_BTy<8ygxGOT4z9Ft**`*I;oB5>Q^al9mYFKkN05Wo|^G)eZX)*-H{hF-Va%8hC z8)QfhHVg2D_H${=)VBRMX4>x9+9=fRxck|@x=mevsm-r#?3ZIWlg;>^)o-fmpWR;o zT?z9g{hJTx;u|NLM2e1H-(Yj4P$c5<`qypMwCx$M_se6Gw+zOz>mS%X=CNdoqdBuj z!LILOv&vNpDg7?bP}Byui&a{U)#J7Pc*B;dey6#qerT1-`rP4!Q$ zf-~y@Ki&nri~#mSo&mB#SA!5ztes?TRRA{D0UHz0zUSph5XvHxKLOzU4YO`$%k33L zXJx=8S4d0&?fnOK`P*mr9&3pA7^YZkEZ^#_4H|g>_|L0ie!Z`4-To8BS6|W5M~S#e zZ%upE#==5RZ`z$pS6V9XTHA7L>v-O-)DToP>FG8`xV!sB}) z;&i@RTEQ~Mi+)!wq!Fp-&tG2Kb$mL7f0&w`9`~O$4X;||(fTb?ZS{1qqQ@F3BqMrd zb?0LW2U&>lx+4stV#q7+J>%)c&c{#-u0SH;ZzlOE=WAb;E z*C;kbbGA?ooku&ai`o@c0Yg>D5Ox!9Ya6?Q%gTBE+M5UoBXb3n!j`rfO(jH+6 z;r5Xl;51ydin5B!3l?B)6qQkRMjaNX1*2cayAZ+W7cnX`x$H&4Q&yWXf5K8m_y^yMth~Q{?(#42dQDOXF50s>pnO$i3J>m zB^elbZXWDgMC9Ud`wyJe54ln++y{&nkO8PGz;A}r2C4J)&^{O7uapI}W2huHZFl!{ zt+LX#bU(l9w_o?;w_&!9J=3>4?`Xhi@9lUhIr^;)uRN$X5ug9ZBV5_c`jM>;SQGpD z^sWbg>?5A{#{ z!eVK~pZwwapO0?<9D3%;k7#G04-uf>1oXlG(J6_@zlWpQ;e;jRxua9Lom6s=`sj3^ zekJ1A3z+yQ3We58WHKUtEVjoYx9n>y^2HwS%GLXw z=Y6YJ(d*8iSY0TnRE>q{6X&H8`v)WbKrA}elC9aEt!WyMMlfu}?i(h?z(@W&p~hWw zKg_FwqX}^{A`7V(a1$M7N*&wTAl^q&DepA(-2uxUT^!iP&ygP0p*T`9ecmA!rC+l<)ga#R5xa-huALh^+#FPxe*6l-htGK6xmlrf&s{{1Vvc^>If7Yparg5tp2Pl; z8(6yvrXG+Q(zJIM5-`P`wm=0#$)4^ZxHPCGo6$#cU0iGp2@5 zBk_tF`51QM|4Yb!4s7q~tE?KpULV*#0RLgXJWDXM7xzBz)UhW zqnnWISGx;4L6$p=4j{Si%Q9!^?{=kRrjK4jOqicjU~fJ@BM@)gPB;{E>*kc$ThFao z`Z_#;*FUpK^kM$;ZNk@ zHWEQT|M0_k%#T6#8|pfSKSBQz)J22!3gCfAtxz9ql7iJHP%pU=44uf1x&|j4!9cLS zjj@M4KjhDvi4PY>__~;Y4eVD74dldyYiM~tNc4TY+T*qqz`$0KrHdQ>Z@>M0sEDlh0MrY$mihx+yq(~T39|u1DgsKykdrHZ%fjZG>pix1)xM(SoyhXONO^Hoa z{6yA@D$NnMDckwV?`@j+ch?IsRM{>q^Y>vF8PIM`!s&i(ocSe4%cRPjMwje1^$$ zxy6or9_t{!kVkqz@*B@U8{BK#xVFw?%kRUR)H{vX8~Cc_F+qGR?cLY~pzq%o+R=M39@ehF(+o5a*^sm%c71XJ^mJY;BxK#k{ zNCOGJrlVEZgTn%>O0bc*2P<^*iI0g7^2>A*-^YBp96_|@v0I7fuj%LSp?-*vuHhx< z;#KY)!CEz~o)WVb2M&B2(e)Gj35Ml5x}@Y)9wb=6L4jOE9Dm)hb$o2}FgAj%;LjeL z6%eib**(PJTW{YxTjKuWf8j!s_xQr%n|NmNmJ(e*1MDb5{nBN+V7(~nHC*TeT{a13 zZ=U00<=D-uVPIYS*>k6f4QrPxeHEtx7x{SS;vcE{%I<^u?xN}|$vT|!gun>SiKc;^ z|F>Z77|6zdFP@m0uqe?xxw8G#$sc^Ma?N{%@@w;`<~( zrz+R-UZ!XQY_>>f-g@=2Z9)Wb?z5dHyJOqt-G(j@LnnW>*YWkQ zeYLL6&bSZsVCsA(v+GXmF8Db3+J(-}SCPJzRf1gafcjM$zoIi9ULbP=FCGF zp`ryOPS-~ZaPI@C=9QyUeO_uJ#cajQQm6~X_e!K&FyEGRGLc9F3BZR|pkWQrz%4V8e1L#NfT6)# zKBby65TH8>Wdi5$WVUp5ebkgqH}zr$e&0}^fcUwZlgLSOthLodRKRmp@+UXPtzd>->lB%rL zsunUtnT*XQW4w_g9t!xo<6WNM$*yjN(hqkw#+_z)AQax)8rDlg0sm@p>^wjVY;^`1 zM$2oLWO!MGAxr~JDNzM749J8A5tI^xo!4w>I$N(5GR2v+-G=o%@pYj!6sq2za&YuR zgEv&SiIRPM7|MjhA`gu3Z3`JtyZB3=KT`B76+oOje6p*{AHYZv==W_{(fzZL^( zaljv+tBnt6q82j@P)BmW893G1)t8>|K>&-!1>_2Uhmaij1M8-4PWh+CUmI~9)dgwNj{iN`CIIfl`Y%Q_rf zw%O9E;43-;{&J2+o2~6sjcaSG@pHYcDW{V!a5|H1y%rc ztt-T16n&LI-;+QeifhT3iVW!~w*Q|Yy>%(1-}~e#A@|_Asc4uhdhVWZJW;6v>h$@H z)4?e>o7)t8c}F0~CaLRCPiSjv;6&KAWSfBRbf#LbAB4|<{4m@0tvTp*#@OPC9nmsF|*Lwg@~u{)3QR*^i!JmE>&gHSzV3MTpSru z@~y#84Jo+K@2hDO2?3UfFOpi-0BLVww#sIg(Vr#o-G|D{CC3?zh(_19KDR8z08P#L zuU;?b(>hhL=UoEAv9d>^}Bk4h!K7)V}=lC;5 zg@McS8Vv@efrDSjFaCqHnXTaGD?oR_ql6oyQAKuZA__C6V0LIMO!1BT`uLb(J!Wj; zUlhFfdM)p#mvZQp+~P-Iz7G>`tJb5Al@u&{CYi~#tX)64){2O$PmHWm29z-ex@>>vQ=3; z#Cv(HzhIYfbnQjr?$Sq>6F%e2e0Nl(N|5@p55_zUv;k6LOC&5)aFy640aca;IgYc2 zSWJGns#%)*`s!XjW)ufk!}b(4dq8q#pT%K!scUF#zTM-+S7Wa`HEO=TZH!}Jphbl2Tp8)6A^t3h7Wjvx;F%~S$3pvUcAbPF z++Wm67(XYzQmkO>-^Z%aKln!#6(?52^^(}yn}_2D$>y%~3ak6%#jf!D0tq%bsI$`(w2i z^vlSRyGHkxy(H(d3|+N+FlAxIj&OP9;;L$^MFW~wU1hVqh{jK70n>6r$_b`r7<>d# z_8YX{RsM@f8_hQd6v`#5=l2uuko2zwUe+)kD>IPR7D8Z@szCE5Bx;brT1pMRF(Bx- zeZ%%J|B*%xz1(E;b9lvD+j$`d>h`yJAXZrM=4R z#=?2xv3k3lYw&r;FxasNZ8hR2X=%nm6gfba`2WbOy^AYF^~v6#o-aGTnfRKdE{TnA zsN-_)-gie#BZ!a^^>c5Fr_V&P86s<&|il>pnblSGLfD)?b>LU`VyypK>Z{| z5?2EN%(z@isxJy2H(23t2r3)-n7B^C1vqFSzlf%LA#fG@S5+4~X}okrDzyo9@X=X= z-sNt>%x;#CjgcT=;9#W0=j7-;{v<2yzBFVzYc%GZ{rhhfPc=+ z6V2E{9$rM}vpb>eVcLL*#r&|WY_W$tvwa%~<*)Eb5er|n{A~A?|Ddi)5(U6v-{~^oaj$j1|Iq%^c&@pQ2s>3 zq(d(tmj5~Q`L}ScKE&E3Pneex#bZI|lxNuXN`Q;;|hBoJ5OF z@4z7Yg~9ra6nXCqA|HIT^DS{gR|tozP| z`x|3y{hHNxRcA9^t z+Ejt^X9sXU{_k`G;uK`PARtP_txPAFP0~vtS1Xd0KYgpeq~vcx&KyJ2Gw9}Q zSU-0Clo81kSfES>A7BVeJ}HLp^m-@os@iM|c$cPj@Gjefq<0C2qqsylWiFi#-+hfo zil2+c3w2Q}8FO1LIjhAJ)9Kaf=vEnrdyN-L>dvd!`}leAt*n3tR2BlA&W2*2Wr2YK zB<%={W+>^83)clB5#-MFl}fUELN6H{Ey9yZG; zmcydD{NismnNje8T_Lb%@eJS`iad}f2Q`xxA33;65`@WIYZL<%#SAlJ{4oJIGFCV# zL0!X!rGp+XU)am<0V@UISzmHpd@^Y)Uk|<_UX}ts>L6J^LPwNu`xiAPzakb(;aG1f zd{4j>-M9ID)9UYB%xuf*s_}f&=!k+3f%**__39Nve|Iia*GG&H#>?n`$s^}jA~{}} zM2@ll(#gF&UButsKtcR8jPoh*2YR4=$nTIglAP#-otvny*Vq_Z_t`-n@#C7{>cUi~ zG6RmIv02C$gsbd!X+@C__EDI_s$zl78k(kOHlaik<*r;~57XcT);zJj z(QJupK$=MWdjea8cgx6GIhcW2hUM=xVw?HB!+m_>W(0FEnt37v`Rg~yHo@P=6YyRM z&yg1ce*iP#o)P%-2DXLY=YW2=Ae(oypx4#M@3-~B$h?++D-Zv@2BLiBzp-cV5XmDi zvS!%7a77B>V?|+U1R#kV92u!>C@uwXamiQ7JC~qhqWlZ z4(~xcLw^ix5k$1)S}hRB>opM;#g?o9in%CzPztz6{GmB2=4xh~9@XHr^m+wd3NANP zVRs4&->8S(wQ+F48cUIne`+c4s$4)}4cVJm9=m&1uXnneQ1mrhNq!(huMoOB7W9?= z1CX`v;&k+M^1zklH-Hr30+OcE6Q z0iHmJ`tzbt8?Gu!J4yDrG%(yY08dagi2OEhL}BTUVkHEF3(JfujT`MQXxDOmmi1rc zafycgS3}MYhriNk?(4l?iESkUMZba2oNI+jS@$JgwIg{rhbu%`fEw`7fn>;eNXj zzx(1T6dazKt_W_~9Q@_HKUU#K^%t?%XoIAV8A<;e4(Xz>7VXJE87_bg&@~zY7+k5q z5FEn{Ds~8CRvf4w(Cc@M9S)og?5!Ix=(mp?bk18x^fG@^#l<+ICWSw#V`YPwFH?5Y-idC`r%!&g-h|52gBzCr}~nhH!^0Z}u^uo?6oYZ!&5Op(R5Bs&Ik0_j~R;#=zVHLP4y zrh&yW_}e$wZ9>__^J)zjP{{7#RI9ulW*BDLcx}DgX>|%@%AUgbh*)}iRh7eLF!SVk zucvi#6i+M{>-I+k4;Mrd^F2z*8E6XfCvfPNTcO}{_cY6wg5ws)rX{dc)mJo6!7zZm z>jQs(7_dZF2J07LmJZZ*$#jwJfn1dAv=Yu2CC3TRIf{Ht8tW9ayQqM9x-i|L;4}%E z94KUtzWxqfp^0RgB(%RG1N|06&EOP7NNX*dOT+0^SXmSP2#w8Pp|f={YW)fFtq~`w zlq*RIJVD7;Bpb-risJvcZ)8BoYsO=x z(*Ft`Bli53jW^d}M_+ylWbya-Ui@K(1&vlYQVfteW zJh31X75w#6;;ErvW2f1eZ_U3Do(REoFcH5#c5`~oH;;2W+-vZ=!h`1{bF zmeht)Oa`+XrIw>07Ku1QGG|nQ0yk_m4HLJDX|yYR>;>X;S)CaV^N6B_Mh_)cG*^k` zKU4IHILO?SQ(s@x=U;B@>T3M=-@W(U&p!L^dmv(;|C#>#GA?tvi~(O@cGH|7 zp7_>j;yZ-K#(3;C;t2Si*yj(@e}AQ|R0d8Hr$rZE#csC|nhUo>8EiY^$D#_#ytz~c z4wtqPPY`o9?3Wi#ll7o7pASQsg;E(DJ57A|hi5*!9Sbn0KmM3F^6|&0VeIocsPpfo@{oUk(r{%Tal;SqJAL}I zkM6zw40D<)`!VEL<_Q_BP5yzzfjkh%COt=cfy^&u2^rl1xSE%PT=sCL2mGJ=F zt?A_6$H1^H5+>3r$WfvDWG}G}Liu{K{25vXt3c(6X2t_#{ZJ0-e})bdN2ol}OuxjG zEth|W_BmBQ@#1ymFVkTznk@g~b>%P9c9G9piFw9jtaVV&QSz?Ob8y+_7AT)3=ILF` zX?Xr9+3v0MajJfx|Bog5r6m0jKSFu9vyuKYlKuikKjY?Q`u_-bB|4B7K+<1DmX`wk zAH&_@4s>ce`5aObWPe{|KzV4FD!)X(gm@A5xMn zUtmDSkgQ*Z$}iKiaOH--JD|K2#_L*o7OreX&&lyR#r_Ah3-jr4Yw~Rj1>73U;+|)? zXmofl1O0Ab{SkhLd@TB%-b?o97Wx;kN&QksJsD7Z6s{aM%yA(Yj zU-y#oNYV2G1E%sx{->`i{~Da%i0H`>>FdhBMgyN7%AbK;>It%b$iV@fuj6l#&yz$7 zpC#*WA^ZC}zM85Z&KTWC>MKNIAcyA|x03vX*6ELu&)ZOW?l~GCJxBP#+(*_=mIwY+ zmgs4wKT6h5mIwYoSU{G4@w)Pt>0d0BfAPBVmuYX5$~V&=CixFr14uqYiWvIqCYteE zNdC7|&uPr7<2D|ba~WSK)i1k_o`oytNj;7cvg_zsAU2WDzX^A_+DX1a#*ySFq)mW+n5|{G zN&M>|>%W!p30Xf?elLmNU&A&4e#3iE9!7`dLHA+fdvFMV;CTmCo@i#*(%fbUq`L-&6KqRCyTRcggyp z9LfJbF4a%}I$1we{u%mgsr-wmJn)k$f0+*JhERWj&u^1>(n;}?_8C=v@xQLCf8omK zf2SdO2*GvrFI@T2-%aqGynmeiC*aRH##Ve0=#7wky%XKe4!@K4kh2?sPq)%<#C{HZ zBK4s39>Q5v9^veY63(t(#@Ul3PIdu(2xnoup})7#zm0HqsonqaK1l`qj&S<&|MLE= z)cYjPZzAO&O454{-A)hh1>o-AKaz6LO}2L{{RbppkR9Jt8Yjw*!+Xo+Njbm(F`<9( z9?~l)f4)?nvYU|cf$|_{^h#zM(A`V&{S3WiXTk2DC&v}ak>mOSS-uZ&ElrLqWoMqD zk?oRx!g*4E0FRMgVOvSPBFi&*pl>Apg1#N4=m9?g>W6lz`b&29%Kab*m82X{^jyZz zlkKX2f4`>ar{77+C241&XP?l1jpP#FlSaJ-?Wf8Eoxg@Vl%0SqFrx5FsXXZUuYrDe zPWu5+O1=SnP@(eI*3SU>gxas5@>lC;KwV`0&<^9BQu!~D^d!jV13*tLX(#$Ae$w`m zb_n>uc!%UClq31Mn=C&F_2(EHK~DRr=d^E-&wGJC-y->wDCxuZ$>%QOMOrOmBk+x? z|1u3CbfCWv?DVzuFI;(p#Frltvg_(!xS~PN%bo(gy+qaz*$ANLS^8SCo=w1q@6(-7 z{{Y$Uv$R*q=T8x->&m~rTt0PO`PXR_UOz?1t}Fj4lt+HUCh!}st^ZZpE9CR1U=PbB z($7KkAnkpWMh85+lQBT*!6q30@00q2=yKwx=!Z$VZ>9g7)Iak5a@PN&?K=RYDxUvu zU%5*HgcL5JlS{ZRc@p@t!M|kmC&|~7 zpu|c~HUvBt{A;At7V`CzfcF*ff%MF7+eEZ%t@=Hi33+@>z#$FRQP$ze|GXM2n6e3Y=HUkN!{*PtUDDv+wmj7e98^K|Z?Js7J8TJfD-4%I)pZ-{B=nv5^wkoJs@0Znjzv%51 zaJ{{&713Ur=dAaH{iFMT9EYQ%C;E>K&T>m~mJVF-mb5 z5l2Ab`s3NIbj6U^Pm+wITR2_Csw>udonQR(rOsnB8;n(_x_j5J9yBXA!^P4r41Z~8 zlgPQ-Beah8?ejBOE0!#MQi=ENv#4uIIQxCz{=p?W6?U8a|R5ql!2{0qul;j@hw^pY*2*Kd?BvsSq$ zY!N|sDdnH{FCX|*$@0=F>tN}wQNJr-jL~kQPp^NKx{Bpd`$hdfmMjllEJ@dl@)@?Z z50zi0WRot{`^WZ{x4g+e(GDsv_?PM}Z}Lyjf$|h{fX@k?6({(zTgesu+X&_0Ljn$8 z3jEqFUljZ%+h&>QUp@aSYg5rr!Z#NEtLI;(=K1mqT`%%O*9%>s`_e+!>-m?FFKyBz z&Jiw=-{w7}>?Gbbdd7yHX9-^n4Y+cmyW{8}pbMK&(r>Uupt;TP?v{M5c9qTEulk&X5*746q;n$Z4 z8R>?tAxi#+l2)3d0iO)|&S36=@=7O{km!*Z}<)Txl7djI82cSLg3f-O|+PPcNZCEjP2-^qwh+pb) zJwN2@-GEVq-{6bK4?pP-J^w1Tqc6XZFOeVeC46Lq9FMQPuOEDfWe4Tg^##!{ z6@Y%Lwe<_aMlJ!jS@VkYSi}U_81EpzODbSfM2Q}IsbA(k1kWOP5$tsJRUQ8b!rya^ zj{hFuM|3>&Y#5|ui+yLh{sR35J-v+lCE-J!7I-Z2ML#PI3BMeu(?7B_IOw;a0O%~4 zzXt@cGrmZ~pK7;Mo=tgAw%nEaXwAr7{FKh!Ly-; zNp4WDyhHF^r>ECjKKMpI_>e6+9Q~o}2OgJni`5csD<jDF=_mj6j)ZYzw2|2gcHsB@tL(LXEzlD2-AL#>Xj=A&b2mTZzbU-e@eo8ST>6GmV{?nUiHGi@x$NK@|zd_r5`-o^0OEI zfsjj`o?e!HrNW08@TZ_J-J)Ih8D!VwoG632E3lfLCJ*!D5$RHDvrD=!D*~?b0^{2D ztB|An5?NLLGbqsx;zSc{NO{_8zO%+<|tjhv=07qHxTeQ1TQo(UmKDq%Fx_(UQd($BlzSU z(*aivIP|1X_Q1c+I=r~-0sg!JA1m^Eb*#-U_^ny~5?n2&V{QHPG}b_*`E;yqgAIqw zsv>1lFBiW^yo z=g$b;PWg0QItg7zaMH081U^)Z-@0z0e7eq=WLaMfZk3~Sd}8cTK3&!)S)iP$9s_PQ z;)uG8Q9iw|CovJvF=UV0f!;;A_Pn=lv#QWpAyx@`vIHD5SSozYBj9LYsrlDE0*-c; z%ulkYzWfNd(C{Xm@KJlKjUgwoDs&2@D)XwK-w(dYA8whzdkdR2R^1G^&6>&jiuTU+ z!ngRti_QSQuvt}IV`jG3@!tbn*ih=LI{qj8>J{{3&L~NbfMcxt;67VS-9z8;Y_M4MLme*bb07FGY_M1rI*jnhy3QX7IN4ya>cxS;coN5JnCgGYmYp`+D52@ZMI`8*JC($TRhSylvZ zEZPPB3;i6c>e@3?9xveFztGRI>ODQb{G@<`|3W{vqpZ>@_zO9GVxp67`B{_A8;MN6U7A#@L5-*~K?$`RHg;4C45^+tzH4)JU7)L0 zCMyo#x@F!Jg_Hhtp%Q68EHJh zN#O4U8|1R!iV$5!X(y3ZV5B(&?%CA>{2AUJCdxMuLGgWy%3$gkTi#H&h#3FAuF7do7H zCEyrWulw=~UJ1B0$D-S+$gh?oUXgWgGcLq1HsxbzJNS-K`6A+=7^C1VjoE=hPA&=@HmF7`xSca6zjHkJjPj&!~TsytCJeHW$xNaDDa!{%ImV z{7~Bvf#)t8gSL3v48OI4Xmh@v4`ci_kxygu{qkWZvvv^qu2R0DvlzQk6d#u~!I@0m z?_^t)Tk;o_&oUK4$k-m}&QsQRgl@#SI@*+tZLg+!lv2tkWwojj5)zb>+W4`m)dR~U z)K%9_k58D^JgzTvW1Ymb#Zk z?6&0E|9nYlsQ))!O*(I_20cB9cwretkr%)%yqdhW=oaA31sv}z95l3-Uzd_`{}e_e z&Z^?@L|T|zO3I#4Dez96FSe;8TYUJO`y{I}nCQ)rpOb2;XDBbu^5cP>R>{^Vdwiw9 zKkI(JT?uRP!4mh^{CbvXcNKmQH<&h|ypd+!D%le%22tL5Ek0Q6KFJG!mGG{WpJTrQ zFZ3&;UcqTu?7F72vFz9BixR7s`!lF~kX;FTCTnrev2D7$J2g$Njr*sFcKM8;J=BkS z)og}*W=Iaz_r(tWYRLvw&RXbe8STqP+vKC7ZG_9D7`Nr>&164jkE;}P7qs)phgv`&P5^)*0KeS+u%FnJD<*uc#sJ?>i&zTS%6jHYd)1scuyYIWdt< zj^%4!K2gAz#Ih0U8Qw1DyO_eAN;iCnzAGv)%0inmQML^8BB;Xru>^KwlYlJl#6-Rr z$O60hPrvW%}q*9O-o9d)3)8bPnXS79m&y{&2@^VXo`6{q7?59S zh5Uhd>X8LqEH2K#eIMe)k6u>#yDblQ zxJEX!TQJ^Rch&a)_p0)%61()r6kQ2if^igtrwv78O|m}L*;<1cqAg;xexx|Hq#tO) z^|QvInY36}QiM1)AC~68ws*Y%It84I@Z}1~*}g0~`XYa8c}(<$wU4!}Uait&kF~E> zt@8cR;zR#YYy0w67q)N1n|yg);nuavfbEnY5WIgorCqh^RVZV1IppiZM^2wUa`@|^ zi?+V`?BX|Ge@^=Gx!2!VOy7om&8L3z4SV+M`+v&yy!nh&^j9FYwd`i2tq$Dg+5mH5 zYwV$W{E_W-{y$PdUbL5%*wr0lEQm zT@{whl#37e0f46P=fFw^c%RK2B+|g`B9vcg{;n5unD)HYpRpuM2DfL$HkNC$gvN>Cc zMoWL>9irzAL}om63nzxMtMSOnto%l$9?#p#^Il}lSaa|p9C~0W(PmMer+HUlUjm10 z`4I3J$XggrV>!jVDGt6UbWD-XCgS2XKUE=)DZ11CoOBblw)665c{z(?!aE9aL`VD zgyAjat|@$Tje7h3pWsbven)=VT0zViv}Xt>W9U@5RBhftJIBP&xc%dK2ScPDTEui) z^mHu(0}N=ezv>Qr9lab1nRkP*Xk1C~31{|$a}S21ptZt3m!?a(!gu zOk(qx^c71@PMZ57O<~|g9E57U{B9Wf3H|n&ps5w#&(6y?q20nj6AliN0#1sMZLtzg zvsok9cfnJi?;4B=s7uRPtH;GM7E&=quGeYYxK5pNCKP`D{8-lVr#{b~r1oVMU6pHF zvv6uR2DogIHdkm28tKNZ5TVIKl zk@MVh6PB@X{@XH7*;0Tcr)p7inf98y(2h0eQI{o@ohteVJsw&#gLd;m?)tGK*6-ye z;@%3oI6w=7Q9mh|N&|^5A*B_3TVwnn;mybLs zH~Fepx5un_#8UG%ZNKW>wE<4Nw#4jDG(exJCy55@+oV+ty=7`K=r)Yy9rt8~c>n2nR z?};lMexgI*)p6wku5YUmB(876r#83+PT32Z18`3BENBi!?^>7>EccsKQ_%B7Fv_NhN=aR)=PI#cNE>mUh+l> zVYP|dZG>3h^tb37I%;mSMzXNl^%K+PHEdY9%8=}}J6pAit9SQsa)SmSom1aa@Y^aZatiCy3WBRi!@sDL zM7x22&SQc=hz|Lr#vP6NLk?W}MFZkMYMN|Z(O?`;m144M$Av`<8^-r^=olH+wCTv6 zF)_jR_gKo}h~Tue?64Xssd!Xla0ou)?6J+7MMqbt5Ej^Q|6_TFbKPLlHnA1N! zJ)}ZHe4CNu#*J(fpRlEO^X9#KMMX8`Cx>>3jU77Ng?~EltAOsGL3df=y+tsU&UE51 zvwmva&!;vrRtGz}m=4HSk_3vV6@t=!m)05!vX7%vN!A|2mS~AiZg|R&unX z$aO~U28$Ek-xKWYaJi;0|G?NnJ5kp@|t(Ev^xQ5{JHxWOH^ea>d>}Rc>f*tkc<< zX)PK1=p(Id^VE|ceRwJb*>U?bd5Y*AOKtGL@O z--H#NF6zqO6R;~L40}s&ONXVtxZ7=^7uFK6Qv&w97uE_eE?}!nSkbR&+sAYVoV37% zS-K(L36bvw9frGfK&cu7`^AYH1~B??4-8$zL$g7+evKJfV01+fF6_V`L;-b_D*dfPQ)izSS z+>NsCw@4tf+AeTmU8UQi~t<-dP;wQyUjv5eUirJTgpx12eUWnIlWlGAjwG-TwI zZ5eE9CZ87+q~H-Z^;`X8A3Sa7=2Z69kJnjER%V*5e5$=tdXRM*E5m9wZo!uwe)s#! z)9NNxkkcZkUAnk~CJm+N2RwoyuGx?Px>?M}_!e(tJFWRgPm+Qg=OybM=*F3W(?6v< z>8DSRD_h}`ohi=1^zM9+U5?nE>JANSm@)sAp~F%qHdr=q-qc$YCb$C2UAN1vVxp5> zxwVs%`c0hr`c}RnIcdt&{FV)J6M`Dn$xW=6IB;ZAa_cs0S-ZLs5i@68N~)8Kp=w#p z&nWk-k%-UKHd=##8LW+P$OpoObb%El9sn2JI^$;K=gGK)Mp@W)VfM_#u?ZLQc0bnO zpBcw-0>onyArIcD@z6a6>Eo>)|qic7@hCs|OrtVMR7 zKD}I-h+exM8_7S}{ZiG>Ql7W76Lo*9$gjn>-=ehSKR0TpoynDUw&_G^RO!_!nP-Ek_O488_J_$^(th(;c>&TG*V$(Ip_j& z8}teMH@bhxjoVa+ET&$}zTC*QaM;yB?9JrK$*q&7CTD6~s#;OIIY2USd~la8Y*Y4Let|i=i60~Q6;_R} zAu#oC(OIm0&{~I;);iE%1M&L}j4SFdVRX`sN>W%_^^+)Et8tH? z=f_zpp0|W2g+zVAkIx#wKfcHh^I6bM85eQD2y{Ug(YbEOQ9Q|85u{12Y#WQ;&j>mL zF;8TH&M0sT4;hQHgjSGjG-1TL!~5 zI_~QyuCti8)+P^2PCi{%D^Q2FZpA<3zwG0O=55-L?q;d2Gg%)Nyys~75PpesQ71ff zSwkPG7My0nbAuex-~6@H+U6wrfbtHD5qT;=-Vtk}Jb{pJN4Ro^7kXMHOM|~r&pfEZ zVieuqfsLaMMLyUtwGan#0H3T5<*!}k6Zm*(^;p(#tW--oCl8m#Ys(-XJ)!URp}pyr zRwN&h5Lo@5X8krv5^TNkbO?*Cnt`UEdqMFubgaT)8iGxTi5n{s-aGQIv9|||{CN%w zo;x(K>fwFSxcIUvzka#-&L`5QFlU{?{d0q*Nx=d9-R1+U+IhZxW89P7UR)y$VJjPT z3=VL2T+w>5dU{@$E>C5zOGtU;=k6^UMMqVx{ObOSkt{tpctlcz!QIM~9k8)NAj@z0 zPR{h{%kz7m8>8)Qv8sDQ?QxyQCJH^0jB(l+^5?QlQTl5`5$~FDgJN_a$d8G1#Ym5} zz!roTE#R;gMQ-RPD&LgKTfcu~`Qqt>$A`b1Q9jlJyV8rrmmXlITVZ3Cl1}w^6!l*y zwf+i5daM=pD9Y=(eE6w+FH!!7Qp*#4#nXvSUwOh`EM3&&OKm^a?=*Zu}{6q9aKu_Uz9Q+yfDa|H$ zE=r6$V5U7sv!CVnvOp9aDaisyaZYFgMo|BmaP@81j@2y@PYQ zXmXs+8&>>sOEN88zSol`1QM8V30_hjgOGupo5eb#=xoqcP6 zo%doHd3G(!zEW$*j`GtjFGx-JVSV!0&|z_VI%Q zzx77(^s*I7Nk_iGH~jLUJ+_J>Uw?l(^fTr-$7jU~4e{X;=y=b-2fG7wc;SJQ{oufF zLqx|+7yQB&BD(-C4E8S2*=c>Qmn4)n%E>W-^41b)9XMK~H%|GG+l9JtiHsm^;~F5)gx@7s3F6{bdUm9ttcEHUTc* zZZ>*D4w1rFX`SucSbu|xS)nU7l}mVi(#u;{)Q@RfI}!?#=o!IZ;(56sq4iRbFrdaa zue9jM|5`D;hJ3{Hex>9Qf6VQ<7Q@`jrvPyyV*^V^&_<3C89Xu`5~Z`nN0n17jKMAn z$JNjV|8P?{vDTd?Kg?u@az7!aZQY3WTg#dRhb-S5obcLYUVTM;bi3LW{|rHb;BA@Z zo6E(&Hsw}n9l%$!bdY`bsUB++Jq??hyhX!aZPAJUy<+%aIkQsy(7W?`Y?N1dyP;`~ zldrbuz=B>JRaoQU?m|;7c8ufkumv%Du#hPDim-o;`}-ZRf0M%;!~*$m?e&Edo3gau zSdYzST)}N+ugqH!)#hO6su=LsNb_dM~F-xdgtq$ii2vD_O6snagWO zgvH9I`90?9@!}}am;8G+DlBx+)RTYAeJcS%#?Y5{)lEt|)|xEL4rL6#AX!#77M`0N z&lj@k@snlcB0s@i4q`83e;Q+pp)+P-4>IyQVnS8qW_G7M;wT=LI606_;y08{b5q!6 zJ}6}_WSCh-0smnge|Rd!4720Hdqzgry)q&eNX*{$qlk z(CH`qu!^A21$MI)$_ld*&lO*5ytVmS z<*WBkfyb!T*E(Vp*JDcR3O*|^FWGMHIGA`zHJ0oR8#wIP1?(kn7Qh7wNCT5__Y^P+?_B&as zUS>4P+@^YP&t-UIxXtNu7A%qenCL*RKO8JV>9O8(fTcRM{YE{YZ8T^TWmqIrZK^9A zPbFTtSS!yW9NKNG2Wzx$J^drHhF}UVb2p?cwT^ z?`QGXOct|OlxgkxcNh7R_AJhi$s`N=APZhxW_J$^a2-GOBf{ zo-izn*ueCh+U!%|0p5Dke9Q1;xAI9Vtph{N`q0DXQpq7?D)VGy} zVr+Y5mqp66BgmIx@Gj8a{lO1&&wt~vcjr( zZm}xf4)gCTlyzb>Vp+_qgDpi`hNZ~cQ5P>>ln>gFQpaFMqwlv@`sdNRyDF#6J%GwdeK)Q2YBghw9XrMA0e;m|acYU`7u~OJ;c}>yRs$Jo4Nm-12@D_p)gpqjRV5FZHpx z9M7(T>&;|GYDyYWSBD{LC@6$iLIg%z?d;ddOnapOxVjwWvQDWqs|zY?o}i@j6MdiB zN91}u{sgBusr`~Mx0>}BlOO6p5H18YRzrjjR{@FEDAkSmmdi)Gg7lwXVVc$`p#>U+ zYV_&Xx{ zREbZ$oEBdtCMq%}#^hbaDyi-^O`3LX+N7;JrAkF__b9O`i??i9oD%EhXup-KSFh~n zZ94T+OJfefE)BE(VpCFhr0kpb`MWfW6qz-!wz&tgFse*@qxcNPCSlehSzrx|E~x?P zIk66m?X%3q+>zlbVeT`P#Rl-Mf&6rU)=E1!|4>iGqE&96!gomQO7ecTZ>XH<(ry4p z9%OzP?4&Y4NDJ78dX{#vy+?0BH^a6{P(ChfCSNg{hcd6C%p#+VsX0+p?qhQ9)=}kS zFZG^kbZrdLn+Ka|7;Gl0%bW!;x}{x4JyUNTWo5ivl&=&v)62bza*K>|4iqrdwcLky zIC{&dla*0E_Ea+}1^;hb-cuVXzlgd_I|*7yiGv1M9LSe2yY{@CE|oDgfFxnM293d% zv53p2_|r&LN=>IEzzUw0Fom5w3bWC)H1Uwnu~g2om^sueWr@CDI9}{kwYh~=7)eup zR799vS=W2@u2prb1-;7)0(rqlWg2AOVO9TJEM;bI&C2SL-gtsOBTSh!=9%^D`JWpI z?;F57)4&^(5|$Q4i#!Hmn!@o28#ean5+J(MI=#$Cg!$+FLDlM@ran^U23BtU`e(+> znxbQ#&^WzER@PP;lYf%^hr2&jnr$!(+8v45YG_y?ca^BZ%SybzF{s)uUM&2&xJ5|5 z>ZqcX>Lzt%h|Bg8_WExLvDsb(*^djJoVE;6+bAc5Zy=UbVxlc@rp#v-3O~#yEKgYM`lY;I@l>&3rB;7g9kseAZzg8#cTPA z^WU#ot5j+3Y-iI7YhLOdZ<5@#1tjA4vn64jlUZ`At_YzihY38M-1jsk7R zblMo?9K%xm;=v~Q6o$uH;k)3GaUvh+JEqg8J0Yp+7rb`D6i7|ec1Sl=`vX!5y<12{b+(zCS|UY0U2ot z896Luq^Thz%~1tp1ZiE1&Z+OIe?oqm@gsLfk4d^;o5a@6$l(2>qv2rW9@=~8aQoc(!poh{ z7wzrW4|PyHNcUGF5$AA-T9RF2mIY$Jda(8#>2M;@>XOqB#LZ9AXWArw5Y^51R@bx% z-xnPXzaY3FYo}K`UrfC7eN`Xo*Ke<=oaT1DZnJ&Fc%jj57u=?}AH7u$N0od5 zdq0B*NvSIuvR6x1gq9xCn+Mr8eF!?IV=@hFjC9!9dnVoT&xI#}B$1iy0gZ>C&&@c1 zIO8Lt0JO2xWy5$=ri)O(v|U}hzOD31*P{XHg>NZaV`B^Z(3mn}0#w#yD4OJQq$*v^ zrg$nTiP6!8C*?f`m&|&N_yCnP)HQ}tq&qZOQKt!aVEWr#yY6C>({qbX=zK!;h;uVyBBq);Mt5EEK@S0TFbgnpw zIG2|=gExF<*REZCL`wN4o4R?PjE$8S!~zj3U-XH(3~>R$W1-J&m`loIUkw|Ys7Di~ zOP|ivg1R}Rdo!i4=j$;Ax99e=a(icg&%Q+vWAJ-g(I+ClAo#88ao98ojJf0n)ARsC zlGb>p^tYp%7C1v0>ed4d^F6m0$?f|)J^P+D@K_LYP@fR=z#>A#!HrGyO&D`4uO>M} z*kPL1WQO#2H-{EDQ|dook3G2MkY_#noc-nYIz1u|u}sI~j1*CbNW>#*FcvADoUR8V z5=FZl-O#Sji5!F@=F1_AJp1}P<@V1C*5F~&8CIvS*X9v@WsVKP7is#>4uLZ@*&Qx-+4!ny4Hj7l?N3i{`bj=_+G`f-NH3n| zX9=HooK~`sZx8W*wN;3?!zPu2-QRqu zK_gAOUi#$(YykS_<>keTII&^sC?7t3*9Ps}FuZ1b!^C=&{&^keqerFB^F6)t<#vUTgFZdhA!pBqfU4O6e;?g ztk-W9XDJ-1wn(_UBp(!*va78;J< z__Dy^3{7^~l0#KEP(qo;$ZHy({-!aT$77xqbIhWliv8xz!W;N#L_z09kR#JCCVMhO zSc`5K!j{-VEavXiL-LMqzx8zQC+~1m2-?m5ATqEQFKmsNk3oi4r<45!9Iy~0-H3R= zV-c=LvNWObH>Vq8!^{th#GLc2I=t}4&6|pSXyJ`U)FmLKxcmiUAC$!jX+~olI3`lE zUHlxiiv7^9WCK^O9LgU5TbYK;8n zUeAHO2EPRQz0$J14<0;_tLVsv-n{9lmXw5MTVyZJGI&CCRT|%z6d?tK$X%=kq@Xtv z`G<*(312_IO86H`+bFqiH(?#>tH)B*wRjy?L`bTLI?y>K(T9p^QN`=5YH{pWUu(Qq z$$h^t(I2^|vvTr%R7hFhZAefgv>ovVkG@84;*0zzglW+tU7Qvz z>f7k_HyO(V*RWdD5pv^3Yjq~!qv6e)uN1bC8{fR?$ER@EpKzC)CT||DCtUArVxiF$ z57oAm>H-(hDN@UlH9jeqMF-s#9YnHy1asC1z0aAsDUDo?RJWZ3o%XGzvUWfHB%RRZ zyC0Ef#h*#>*1;81vO7y3a}q-4W_ryI7+9Q#e@}Sj=Z# zGX24g5~~=5XCCm(H1RO8XJ7TMO{g;p1C+&uuV9HHCz@HcKcZQry5zy6>8ky^Vha`i z_7u%9=9n{d024z|?>S@e>9Vcer7=mIRP5R&eH2QA_1@DmZr+sR&~YT=UOiq3R(&mK zh*a95D)!ZyQ5S6RgkS4_kwh?grFn?DiX8pT?M*Y2F(xpsvcrf$DcK>)(pv_DmA zy}9w$TlkEhTh9uO-yptEpZEq|ov;72S(B5kSHwHbkA8j{`Dem6g1@HI$@A62)^=Fq zp%rPO)3BCVDc`WBmX^TM`R55~g=b6uuDo;c1AZZhU-;m`P4k=dtoe=V^!Ws^s~F_K z7n`PNjk=LXALTR5d6&&UO1}3szYsOPUK4oCxsves0?h&;)_PhWWeZFW@+Xh-Xm&}d z;TLfxoFZ-{Yyz^`{o{QlsPc>VeS4Ij@lsa@)OnfzFqOWxl9Y+I(u7G9Cv+%j2l0nC zuh`Y*ZGOXx*Zy{!U1qyWw*8^@6Yk>e7nQ&U1A6JJUCi#~!wsrtIUDzOn}>KI_~FG( zejD)wJABL-C?OSprr~K&@8it@U_W5C;ecpDappXtDTd!fc7a6C8)l(4Cozkd6w2nV zQTChjIlINWY#ryb!5{~|x!5S{R;lHru0oXsYYN+$ld#;F??PEGMJOwK`(A=(BF`$+ zt)gudc!sQjVULII(R8l;U|1J~aVt^eMQT`wg029}ohz}o!iH1wh?>%A_vG-% zDon1p`3D~P0gwD)bNkt|FW2X$~yLU;ksV{?cXML)}{)lAHdaVXbV53nQdjTk>R zK7@uKAcpT@I3!`C4X~0}s1K8NhK40{elI09W&QXar+LA5Yd`;b?SLoCw`$gZdS;XI|TVl-YX!HhCt$dvZ#yIA(_NIR}iP{jC)16&e=) z3O?m;Jv*g&+AMm}KGy=aynrn$KvTiTIYmM88S8Oqkw`J$hKle-Dt6PsK0|po&H%{C zq1X=|Du1he@Yomi(kEnn%>uIcDz+)(^Z2yv*DhqUMuhiX#`^|p`o_nzW!fS>jx85F z#nPnO7PLtewQ@TGrDRrsYgD#r*Cp3k$@QMRq3|t2LUK_oZ+IYcI#^5r>&<$4R;V?# z^Jmp+o@{x;d&tb_h8|_Ps=y+laf-EF95=8#=-P;6d`8!lLc(e$E6e!gq1%!o%SyMk zkg}0U+lI2meDcfu-nw-x=w($Y7(b|P{epx#gT@zZXK`!*i`!1TImE9i%dIugpV4CX zf20i-w~X0bP7=snSe?cm3)IjMelE=iIHDy;kWYTvqQ&!Bzw;x5Z2?qQy*h&qJ#L*Z z>Kn@swmDxmvi7+whak#YqcbkuI9tHKE3olPo$(}wUIr1Kx|b5_bYV+bZ6XkSEY{xS zR4irD`H57ASXjnqk`fjoDKUrG;-TA;Bg$#zr9a9=ByStaC$q&bv!HeB_`R3?8_U1r zuk!EccAJuIMGVUjg6J4R9El~4$OyuY6GJwd^UBad6&-n4aHvI#7qV`%hFJjtR8hUU zgFYRoqOGWGENj;0e7T4^qOG8aUqf42?E)58U}MppdA`!iph5nY+KL_4XT5E$&8MlC zafcuLUBq?C^PxTW7~|qIrnb6&+cs_SChhJ9ZSnT)>L)$!Ki;Er z!UEkOK9kkU587?pCQaTXmE9ms-oBkrL*X7kqQBGlz_YkPLtD^*J*Kp`ffn!`P*LDK zPJdwe4i7O^`poLwJ+yreFC+EVM$6Uf)Cg?W`Q^gl(p4=={e*XakW$C^yg! z4uxL^56unnLYEu?%RDq#IB(hrN&cUWfYVZ&Ny?(`y3My#JO zVg2|ve#j8l9fNb)sba5xnBd1D%NvSYd0g!ID931rak%QL$J{D5^E;I^{sC**ho7(b zS|xtIFKfjQ^kuF}uT?}esrJ^l*8R?Bu=&5Qdu!{4J9rxH^gGm6)(*GnevG~LgkLO3 zCZ(m;B%19Na2`bJk(u4H<Uw!rVX6ZkjI!tKSK5hPcA3XK+zCB`07&rng z7I79^6g*_)mu*HyoZE#@{gHKp(CQe;Q0q3AGhC71AE@2z$FI+>!fJnO-7x3=`*OeJ zoXHx((2`!pwg6>PQI)S0)Vofi*k4Dho32#sF~N`!Pgub*e)?BTj;2Bw&$R>@{O(J@&U4GhIX^cw>hi1UsbN zwZ>)k7@gI&We$6@$-?f97x$jEbM36|&vtIKv{%&lCUN84(uxl4a{BblnamI5yfA;( zja~2MPg(NxQ)ebFXx~9^AL>=xih3hyw=7PJc)4ryqav~d2||KEl-wn5d}hy4S#4X4 zzvQLng<_P<+PQ8;N znozjyEBTo%$|+Ao$#iUh6Y28glUjW#-^_EUD4ngazD#4E!7^jZPg-C8XPs>r$@0dc zbompc(Hw4bG1TCWL?-t6s^zTK$yLkwxs&Yd)-9}^JWm_4bqn9`nF%Ig9HCq}ffKu4 z2`l}{WlwH1aQop`{zN{CAtE4;>mEcMW<7HCZ6_x!XDZ4~TFwhkN^g9mb!Nx&w%~9~ z56|+Cq+L8MZwvpSa2sNM(22?+WjoF2xZZ;~$^gWiEQ`7L2P_)x3A3x2Cx>qP zeB02I>u?IR0cJI6?)ZPSk1nwCHCwQ@J7LkL1t_)maj3GPJaU zq(s$}Qa?4(;MCJ+{I7M&4Q;lLNSdq7-idh;#sHpKjpyS&hs8x~^#xr?c!GLmW9ZYM zr@v?%hYvEIZ!T;-sICZ>G9XlvgFpGK&l4@vYo!OOFdzGc$x=|wn4~wx^%|R*QLjmm zN6K5+o_W~8>@FE?>({Li9nZ99CO5{Ecy9QM>#{pFZr3F4vFhXtf(Gj;YZ%tTPD`iY z3tDZb#X1<^ftz%=x(V=N=_D6Y2zamv@L>3L4B>?!bK)cOH!W1yEDz^!7A z^Wl!cs7}T_=!dfy{zt)4?;*1~^HZK;eltHk&lPK$mk`-uG}a3dq+wK=w1vZqf~U5;~cnBUAI(JaT5#pLAQNaZQ>%98WOOl3Cl#8+hc40 zo{K7~W!Ls;wX%2b*ZcKa7+G$8|5mHyb64h{?AiUXAW3cBy4}fMT^j_6n^?#Os0TR< zK^^c~X$7B^cH7HCl`JeDXnm*_DddWD1y{b{o)`Vf7ku^BLv2AlRq6atsdbn)%7m9j zfSIVa5={&a@^52^O*FC>C6yq|NRq}=>#d5n`Qj!TcB2Hb0!qAx91>sD4`9cYBYVqd z$Eag}6TymkpIPCI!;dg}_-B@Pv}F>n|jo+2cdRDk6D_7J{dhIQz}+g6}e zNBU!j`u{ilK6+_yFwraDGVppP7+;2&bpN;UM|i3B;Wz0&WMGw!dh7Ww@mun30ZL5~ zM-y5u%!~hF{+Rep_OO8_dby%t4Bsj~SiIoA;7>{XKB^zaukJG0VthW>`R^4#PZZrl z|CZH#q;T?3#a;)Q{5LFG9+FP{H20bB`JC4!r1V!YPrasHkk7HyS?^uBdWC87d9E3il8xCF{NIEAM#R;PhO$z6!H|~Hy24#x%`PBp#X6%D zyrHG_2nj`Lz2YulkDFM{o{_w^U!d4$Yj+qsIp7IBWCtp4{#;r-&u7)+)3~LCQ7GNI zc#1U$Vhv7VQ*3GGA?8S*ok@}S(rWPPl#(_lTV;&&(v8nlp-!m3%{t16$gZ8-Ic(;I zcUM}AcN_eiQ#;5lZD zMQ^@vRfNnKSpBq$2dL4DgLUksltIkKSA$RvsD-4- ztjDJtKsSYmD9nQzPHI&_j7Otq|4K2jOPcwjXZqfdlCDK^JMV2~n`C25k&YHm;iH!3MoYbkvJQt&;oVo73H zHbq6p55oR*kb^IEi}5EEdQa?s^RGXgHiEjD%O=@q1Xyci!p# z@wNE)cli5z_H;j3vUX|xfYDD3ILcQaIg)&4z!Refe8xt9_8D9S|MrWW^#1iDBu9EL zHARMn8jRDAktOSvZt}qHgP?8?b{~xQ_=oG&zD|ZKINDM~A5RQ`DErk(aWw}Z-cfDQ zbqc1CXzU5_Ns7-tJ1sm`dgEV~5DzIuw;Ad}FAC*2o;!<61lbX0e^Z>SIz^)&j+MpJ ze5lW4#mSI+C$+9$zioZ~#k{P6^X46#^TNMS^JaQl*VHuE=oKqRj9T`>_m3vZ*9W1{ zvG9$>4U&il>NiLt9_UscL6Fk*yYKoOK#=f*KIhN(`2YdJ1KR3;q3QcR{nl;7^*E6m z*Y)eOVG9k3EzdlfGJk%NJwtw+#k3J)A3>93XFqZWy`KITN}BIx`MVSTt!h6xq4+KB zVSpBWRITi~)Ij^J_rKJ5x8Ta7t0O;J*TcHqR$kaf(0$m~faRM|gjw*yZ+Q$0;x6c- zGAHrn9y?E#nbwE@rBvtN;V9mB+8q|B-BG2&tMp5k_u{w_RdR&Vi*~6fQ?;syZ&#J~ z5F$LMz(9dD3{}$ody_6JZ0oWVeW3Y-g@$AM5etR-L;es^L@o7=w{QK3)5q5ja$4b4qD`L%)`|5!nyqP$ zi#c>m2`;>IOg*D5xU9`Do`<4oH2tXSjuqZff@zgXnsHfr5=;`ftS)sfq)gb%l=YB0 zMEl@^_JKP0a^d637UE^Ge6TkuaA-dy;pT*vmz6Drk6$+P$lFWOCDqV=Do&TkLpHjg zU0CU$pYj=bd8f;}F7u8iPL?1LVEje~`*L{}d%@!Bl6lh%H!bbcS7zP5D|=N5b-V9nm9# z!VSkz(jXGq^>!7h>N@Kws+0JDJ)$5JJ6AO1Gp%6BbWK&1FStiEr^z->!I()niA=mQ@R zZ*(I0*z1Ma>>#z3d~6j_fm7hNUEG*u_6v?FddYRi-~fFS7Gu{D<9=b#ELpTy+DUJC z3PE$z^kYuv+;%5Q(7cBA?{k?*CK;82q$=`!j8}`#3pRaTDc5U@&O@K)DThHBawdlc zGTQwX$mU72rP+n2mdED^{F%59dOq%hM(mt9Y;cv>0=haH zcN~0btuXz5FQQ?Kac4C0;EpC-Yal!LLH-G=bI?xrL|fmQPCQ{2;F6B$xS&yRmq}}E zHg3Yt;6~~@w&?r4rsE!(d><}`t4@&ZCob7P25*}1JJYRi5uQV=2I5=K2%1RFVG(*d zAfA7P&yYq!MpVmn`J!4EKtixM4;>j*pmT8uzxQ&gPj+kr+ zjv7^C$%r9G>1P75#1vwUifx2`t$@#vw1#qOj7wiwqNNuH!fs-f$sVeXsMyDpO| zja&cJ{{4)-yAE&r_dm6se)6LI>)yp1{am+heg9@n`}c2(oXz?VXllN+3CVZ)!tht_ci78TnVuhu2`E7Tro z{jcP`tcEm_&k%jdHgSj&_<>!JEHtIm@OmiQtQL=@_o*OD+#=7b^!~%~^THQ|jKuK> zX`wYv$6Em*daziJ&kMtyLiwT6Giv#RpY<8jiemJNBvnc#pR{k z$&Hm9;FU!Gt;YS5Mx;b&9tWMcT_@S44s5-4L)*)T%FomFVCv@&uI*5(Zr_f+9s`-a zFZ5j`yb8LRlAcB|$nu0`8urJ%0K9Kl_EU?GaW6K7e!EM^ih-s{4@O{ zs(86#zmA%}{0jglVIg|)-z2KoFK;vXn_b+&Wj|GVN{|Nh^9|DTrnpXT5DzoJT~ z|ALcWaynm%a<+A9ZT#@Os3&87lzF_ZiREpw2C-_3OD5q~;P~8UZTMd<_I(?9P#gAr z9RI5=jvsEg!n4I2R1xWPp?hWgfVImu7jR2J+~4plBzjt#)dl-O>;+>E%=4iRYwUwL zxET51gE?xRv`MO2n8E%*QA-k!S2v)3*w?sd6SXJHNfW+8y=}jmz~iMkRHc>&wT!(g zx19p$N862D?Rwxn}!gRf10)W{d{kl8dEII7W2;!-Zac({^fLD ziuNf5erd`-CZF}R`u=Ini>1jk{L7Y(OZ5F5?9>i#*YyH!QrGoDEXa-_m~zc4b14cG4gQJof_vS4<61fcA*69_ z$mm+B0(475?{lZ2Z=}OQZX4?QhIA0{t_3VM05H5~&|ZyzMmindG%vISTrY#%DAT+| z8kLD9OlBI+#OR#`ePO2n(Q;crXUjd%Wi{cT*{2@_ z^-hFpO8%im53Uo*C10YQ6L(E~M}Pe*-csZicsbv&f#2V>i5Hrm8#fB9lhyPGpBH~w za308?pQY)wWIQ3HA#OCFCzZ9wU4`8(y>Y|gAj=TT2=G5SHO73wO~fE8{wfLkpZ+F% z4E-yGZra3b8#XX?(%IR9=c#!MchW!k;!ckEe%)QX z?mIlb*iY#_U(%z#qX@qwBrL#>ceHXGj1yvXe>h^hB(=<*EZgbEIXFvrVO@+)Ad_HOQFM=oT^f_k@}0yLKrW149Uw^C$xk4>~T-WeCg}L zPGbcn@}7JxL28oEUpanU7s>p5HqWEY!39AcL}ZnZ@(NpQ23eOkOL=_OW+KB+mM9Jr zj9G{7B8bB7`8c76Q?bjXk)@d>(D#wC6DAalL#k3C zr(QhrQmKjKbND%w;%5@($LB~>Cd9|%H=#;+x_%Cm62`?B+7Y!%PMn#dT}_%jJCSvs zJv)UL&7L{ib0Tr}tVHQ1{nlp9n$7pko;8c_pFMjvyE!v4k83k$&*Xb&;cfrSnKSu5 z@pC4!%t@JKp>Wi^Mr?Tk{PY$ zt;NQ2fyYb(9^yagZ}nhdC$%EwVr8We?e;{COyodL>FFRLzJq5BEscMCz|MDbwuvvJAZk0-;wg1eP4L!OKA*ucZ;vjpw`u=XB+Q5D<&_|DvWceB||-E0;T zN;b(Rr1vZ(5K8DRgdSR?_ue8HA&63KPw70G3J*|FQNJp7jZZ+OiUk`8>cjecDw6Ev z_nEnSw0|RnSwB8wnF#pM2r0Bdd^Y)c)mt2L9kFheOBKoacpbTi0Xkad%M_j>cyV zA740LJ_87TkQb+!ijW^5FJ0)T79-ZUprWqMoVJ>upc-Bs;{FUu=T+HTc?#CLh%Y(iu(I8UGl0jFq}h)U8b}vLu#7F4ln}=_ayT;hgkv6-ao$kC%mNg3OXmm@#YJ`eWk^PuZl{FU-u^wqMmS1H3^Y-+me^1OMM zYnJ1$=mRWHTBlzG>c9u1fxOKgBc)^%dz8G+I?Qj_OaU&mmtYuj5Mt zc0&9)&hIsjrSy+K$Bd8rlWU1`SxLlbtKI^g0bi{Uewxm~_kkGr<`0GM1hMh$Ar}78 z$saiQ$3*_Xf*lbyoE|3mxp)*|AUHUjh||SHAA#z*PSP$hFDWOrFt=N#v@|;@Bds*A zQ%>g%_%b`Cb56I+nzcDed5NW|J#z~$6s<3c8}|4x`de`Dgz#|Jr|!=#b4Un2-&c^8 z5Hr0^X2(8@ViHojbR5t=vyGhS`(;)^r|w-d+uS@K896&TnvUzeyLaNK6QiU);p2}ZB{wHG zXUY`($-VH;f%vy;7yrw8HLgu`3%kKXrz8M>aT;H{Wsa=>C4(+@UQtbB3ScmY<2+3Vs> zC5<7R;jV*qThZ7e2&luGu=?%%Sp#%fLx6!g^orF=@v!x?j~o=9)rarp2Z%MTr@S*$Pk<4rzx?PoguP}Jq)4rXu|VtmFH|8YlvYokfM z;Q@xNQJ#2Mj3`32%CK*hk0_Ug4f&&&8ZG5|yq`vhcFp{3qy>n^Y5I@^%@8>3SDvu( zVe80Iwp+1Q58*98yosdH2p$X~uXDJp6RCKutn4)*CqWD1MsAonn&u+xZC3}&`2Ec^ z(`UPRPCm>oaFAH|Mtq5N;sD9()!*TLr3w`O0%A*VK?X)($?>wHn}sPH$iok_3vgzD z#$ut8{$(*ft0XB$kC3uyoLfqgz!xga{TWtE-vX{2ZXVZDV5?WSMoxo-SuJ2(e%Cw*gVJeI*{a)=ec?JIRXrUnEQg#U#8{z=)J-_Q}R1AkT)C-mHK z0hWitdBH?4O6~+!?9gR6EOQ)h=T^7Xq9fhsp9SRRRhuE zv4P!l5-m0X3qTSr9MI0$zyG}ctjs%wBhxz#8`cTGtdD0hCwSnM2mE)1SASD9U1#D~ zzpTw3W~7+H)SV)7o6dBGgRn;;b{QT@B4eDoP?8V>ub1S<*zgzmdOsptPLjJjXNO`C+> zbMsI^4-8Txs_ywcxX9zGoP|?3^En?8Uv(w9lK4DU>P;tcyXjw_^Iombbq4tZH(+|k zBeQCK+TWF=g=ptDRG&u#{OUXCMp0jt<~n+jPEsShyn6liz4bXJ0{;cBPtd+re-gc@ z)_3FY^&`Ugi88;@Q*V%Q8(Fx=e^0D8Mw9oKEoa|ZX^iU&D~V9eGP|&RdA%X;&ve{q*y^=U^U)UOIKp}Zk9%C@z+?Hc zy6uk*9>`lQD{~_;Fqlq2^NqKUlbYB~Zl_|hg`_F*mU=z}e4pjZ=o%~gPS8FU*hE-e zpVw_(I_{D|GQB{Cfc|O+m_dd#seL}%gN@T02+*j{f8l#!EJUMAmo1m>1S0jBFIorb zWC*MaS>R53|pd)!0Og{2*7A2FhV#4fWRM)(AYzmLC*> zhdS_Vb~W~*!dnM;!Vsx;vs@W0AAtnm{cx>SV`|c8HL+7QAso;NufJ z@WI=t+X`$y#-1SqybFuCha_9q9#P%iKs3h|W{67+Q*2h;V_-8N3u&H$^QlNTsNTHH z4*=kqJu%PWewC1)8-?>6IogYWAVqgqlE==AzBIeNo z*Zm|*uV?QovPAL?26jSUNXsWXKX?5k<$dNPS4C~*f}ZWw>&e*dg%T_Lfpvb{DL?aN z*-H~``wK@uGbNgRuOFz_e%LpavL5%oxE z1v_Jic&^Aw4@D}!hxK+n9&Y?KqKM8mMEqZ$5VoV0-BeM^9*v57tn^MP;jWB~v3F%= zX1+0Cz;nxs$AuP8ZZ)@U+qsc*28EOjDt~^!fTOF5N1FysY01B}%^GAHU0nVGNktlo zpve9Q11(hptgKT))S>YLj30;nn{9oBFa@((ekTGl@+Ze=dk}=`U*dao{(9d0DFwR-1cfZ~; z{*jg(s>Dk<;Sl$&;NR>O;LlF73t{cYkd?PafYD6!Y+raYGL$h=UY7#dhyPZrpga7z zPvXLrcuOKp)B|HZG&CP-DPHSwoJ{CxB{RrkYoB4)-lM|;=2sY$CCgmZ%0m9;j(S|q zWD{COlE)}}J=jc3*9HdMcel~F;U4uBeNfYj`Zj08|F2fZdtp3}$w<*X6s3or>bMc= z^;KKxSQ~QV^}(j2T~hXqvL7sj5z1B+_MRdu#0hKkj=r-bjL?r#-skz`s;C{aD6-Ss zmZ{|d?e2OBy!?9YY8S>}n=&@oP$92OtwwJJw{Jeke61nm*o{IGoC#+v1Z`^$B*k*ReEXH0e zy;@H1`k~jde;vd%_=0br1Ludtn2-zTKJtRi=QlEmEz~@u3)e@zQVZ|+9v}AwU2urn zW%ulvo!zrXxHF|_?f9~F-ILog7yE9*227ZxHAtu&zIHA9fw{AUw0* z%$Zxa&YamVD-74A_1#R*ZDD=Lv;239D{V7*2FU3C1KidDH%x^c?$fX6Wr=w>a0Y)S zk#hk^!YNWe^UyQ8ozG+RJp)QfcdpsB>*3k=kd>rzZDl2;WNeQytH@nzDl12IALss- zkb7o7wDZLmU);Pt^7c&^huphi>(&kT4xyW;4ve5DHm={cZT&`O=P6{Y@~c{ zQ@L$DM1=cyUx19B2d?4b{IQ+q0OV^b;1fJAT=EM?AD4$Zxhq3nCv!?Ai5^6i^ZVI%>_6>>7Pr}77Wt`}UEQSLOj=4KR-fse{@h7Y`KTmx(5U)Tr3BaX*+{w4gd=#y zutyEieaD0?>tKBD{T1!ZL3$jD`;z6azgs#pAoSxP_RV(aP28kKPjoE|lKy?3OzHhL zn^U>^#XRH3Js#TMrd8{s?~~Tmb8V$1T!(f0z~{5zv(3$CK3;O{U?Q=1Mko{c`MIeH zl*W{dFF!uN<#86TF#YDI`zq(JkIC9QW9Aowd*8g`T1}sP_v3TRu_#Dr68CT5rjsV^8B-&B4{N~D~_joJ@DV%zrTCYlW-!pQauB^oHRZ%%e^f4#)4pZjFO z$!Qk$^!8I`$#}loLt_$1Vsw|KcdvdqJw^Xnreu`X&hDT3?C{WkSHIVyOq#&&HQQGE z8=VhbLu{ANJJA)mQOPaj+8#!eyBMBKiFr9ndbwq3v8-GOxar!LCa-Q?*-YsypGOs5 zUt*}=Qq<=<2LkK;Lwipo5Y{!SQ1^ro z%vX2C4d~4*YYJ>{Y)vfgrCc~6-~4`i@*{FZq|{zE{j2(uwQU2o8*Y!4yUFLEqVOmF zg?m;`q7A;|Oho z66A#o>HLLq0I=xSw(Gl)*0RiQ z-c9n!o2FeEOg4IN>?gVa_LP*UPryo(jwF-BcuT%T z=gdbZ|XI5 zyHi*^b3DhM7>uwxV(Fee68vnn&WI2=v6CwD2J6TQ$!qL5UB_M^JzR_Ri_~2bQkE;A z=3WfmME4rbL=MMUJ4D|s7@aL~uaQ0fV`aDfN-L%NYv$I>1s(sx*~+zQ8C+e1>woE5 zR`x5|GaiL%=1TWV_j8>kx(e9L^~f<030QouB|Leg`Qg9fWpl5?8OWcNE*jMFAad$=7`W@Xe+$WQql#r`sjAL)I zUv>4lNjzz+vBXzTxY(LC!Fa>DJPG+&3cEGU;3MvFzwB- zv>rT%UXQfUD(!yqs?f9^;MIS7q=iWZ7h+rYO9^LlFPOqp`^Fr*V2|mW8cy!V$CQ4p zarJ%KFr?bMXIL4weyhnPwJ*LiSu=;kz5SgdZb+t;yyW+h>l^MiH~t5AjYH>&RlAGb z`0ei-wX4hd&Ffm0K-ESB2CL;Qc|2(eglm}=uu#KV4ce>U}z^7WJ z8(Y1tc_{F<>We2|6?fk|gu|i!xw8VYeqS9M8?dZS?ksNC1P;8efBvh0ZCd`T-`@{d z790EfYERNBk^hS4JyYwdxu&$1-B56B%Vu|alXvMaYvB6aSQi^>SRCs?#hq1)ED<@Z zynKf@%}?22%IdyJ-WZ2thJ$_hQ7_|b4mlnee;L$hMOTo;VA7*N~%)~wOf~P7RjjNb4=d`5A?B!+bjfa8L zGdK&VB^H}0g?r$LF-O4R<4CmR={v~4q!@7K02!Fx{qiz$I(ZU6u;;t+FOZ3e?ZuHe zC+U^>Fz^Rp0G-P=YN%PH!26r-~C z9m*xD<@}%NR@224^G^Ouw^}XFzpGo`_Zi>|Saf@%^%^K6CCf)~U%J4VzgOFHf9Hdr z_Zi(L%KN}-_?djv7bkBS-D+=r-D-|+!_Tz(jg@H|Py3fad%&OD2UT8;)o-YbPy0=Vd&9!>{#iH6$L;5DVJ4-de%#@p85HeN^NpDGV-NB&Bl4VUqkXTxP0&?`YhLv3pCG@dk6 zrY^k3%4+cH@}enl8?RGO|NfLFe|&}P{<5svcGJrG%e!fHG@hw-n$16YF+b(W?Gc-++CToC55Ma@^U;TT&wT1ZKAQdWhwX3w{GZjW4}R5a!>4`GMnh%l z!tvop9eA3p*X)5WKH4+x5BiQz4VUrJw?An^gCqC?+#7GxM_2w5UQ^2Y@Zc}o_U{j3 ztoqYBsysCPZPKT`{qghiqA74u27GHuow_!s zaXvQ2PmMOU?OTECF6qqTD@bya)B$D;bWsqs>4yP-1v z`q30PUOqPj&&NKBKG#qgf4sbWZK$k2evOx{3%4#G8-lOa@#@*1m(lEB)5_M>-@k_I zn!@j5F1RCx%S_ZN6JT*hCX4VS5_7aFheTCYtFp2m}g%G8C|SXm8TU0yT=ZsT?8 z>7S6xU&HmYoAv0|Xj9v6T3LU2H?5AwGqrBhhkVZ+G$!{mH+0{@)NhAN%;HZE7;s#y?oVlrLj7ACU9s<*}8mgN}amAYf2rhou<`Q`LD`X^uNF4sfL5b+lKh# zuP?U(*USH=z}NWSSlPPz*pxc{_ z9@K5`R_bc))s^4hY4`8L@apNUxBK_%YVBxxs(ro{K5KRU4h&63f2XddSN~sNsJPef z>l#hB&WBrrrS4Z(-o$?O=Gb4XZj|G8VD( zRqS76xZIjub?SSS^k64%O&z;rF!b9k`27X`Au+YS-z;kAli{7abk%>l0TSvWE}p_ zBJUZ=yK*ajR%vZ~^{>|iJw)*sg}Gr&&d{L7Yp6Xrg@K7T)O0QyajbNy%BYB!o`ZrlG-U3 z^3z_jMY9k%=yK_j$0PuERnK|fbm!7U=5qI$4zLk8#O2Z3u4^sJNv^#v-?KGH*j%SQGNlt9rhnMK_idZCf(L8QGN9Y4V{4hr=~o^MFSN~}0gxd+;9MamrBQ?APts_m36 zU6R;4xs}z(VB_u|qAm_#q7F_T!6=eEB}|&a>*#7-1)`5wl@rwro$DQ5pEz?XWr{IE zlLtSG?LDl+$DTM%23-;BkHuZ*8 zZUa1RcxmzlFKF}dEvo8l{Wi{4C1@xl{Q0QrMZ>2}+!*BMW4$(E8IfcZea6N|bGq>8 zz4cqZ7kqt$cbZ2$JoWE2LV{Pf9CP=aV_Pt)bDF22&mKXa||P1V|+x~+nDe&@!6KCK_z=-0l0#SMznqtA&>X*5q(3QV?7)6ki= z{Z4N2-r0E2M+MxlxR1bXr)sfbHw{vr1$SLY$}Sf_9r%wgzx(b>GAn(dYBL|aLF51; z-yjdNQ*QpLJ_hQm=MtS3tCR?BoJOZYOtZfD?z=D8KQb1nmTdM7RujN#Zm`(|SF&)v zXzi=xsCpbvL%}Y81m9zvFBW8v+`8rm^omoY4k|*HDlQzB=6Y!8*ty?9_WGj4#*!c@ zT=GB`)>)dV;i_KziBsz$cC^;3IB2S!erv}&0b`t42HP2403 z$sszw!huGfb&x#Qz5Ffh!@CFxsof_Z0bV!>@4zL+xrrK91ld(%6Qwd+w~S`4a~`y4 zYRSH9C0nC%`$W;{9<*E!m)7c@DFwWdfXC_N@Nk`bLa5V&p&qv&(*qkzzTR6xQ@u!@ zv!!?2x})?N*b6$ti{z%LKDito=bN&Y!^4g6xC`FHJ!E{%w$TH&Zs|6f=H=k|lD%J- z$p7F7x;A-PIHQzs1U>va;)aPU<|9K5Zthud`FujGRJNhy+P)Ikd5wGXXj-$3Zt_2X zWUa2$^{|_L>?EDek>oIS*K`F+Ea=AA;4r|Vl0<`$t^vtmgoF|eO6&$Uo6Xrs9z4(4 zNuISIKX?APojk*3b?(C*PmPo*OpYKqBm@kt)SAq)ZlxtXh- zc+dGM@DMWNc@enZkf_NFn7BEsASICW%f|VdD%4bNq(5sib8Sak8zgB*g{BPWcGSG6 zvGyF==nI;YAKyVgey(qyg(HJ@(u zVM%ALm(JTjHgdJt;pK?dM=QL#;%Ni88>t&I0pr~gr+bB_&=sy=4KV%r<#`?+k&Oar zW|6vU&}&|#|ElnC3vwp7^HUv@xKE``Xpq^6-#&m_3PL~`zo8&I5|?&J>q!8{C)E|b zF<@&!%Qh(qiGy0*wsCy>fdl#v*w&%d05~JsO#`G`S9_R+koee{+h=u+izD5-#A1km z4Gz-1rZktU#oW|0rNnh-@H?{erH=5r7Z}MxcKy8v*fg@au$1;Bw|VB3yY^hYG!b9~ zoPB`vser?Caie;ql{@0N`$3U9mKO5r54;CYe1nl~Bvxs7kBOJA?qR#MX)a&{>+Y97 zRe}W!TpI^}m?PqzpGg&krB%S<^+g$MEm;CDVfVxy0zy&%YSb31jKyPo$djK1t-_kFLQczs{@9V5?IvzyiD1&^v~ui-8r z6=pgO?F1tcOmQKGO?4XRr-L|*K^r;^&&(X&XW$beO}#dPA&AFfIyls=kO4G4Pek-+lSYppBg#Jo4-l z4?#gwWiay^k&W6V8y{yLKJK4=Jxl5a$rrb*ft;SIe&m9z}-gVziM>+4{ojM9CZv~iDJzp-ImBAAf8F(sgUW{9j?P_!B74mssWXJ`FHsC` zm^OZAqm4sz+cJF&?qUDe`m(YvB^e1*hP-1ZXY^g|1^2U=?4Gf@Tdmb4-0(Zq{;4Xzo>ST@}{y0^EG}KlqW`n*nr!nOp}v6MsyyVuf=_&yS+gp z7ULg#@`LGxL_E-yUDX#gK;&L>pVojp-V3N^s<#2i>2Jd%k9lE|FZ^ImL!aO=b(7Fi zpFWZ3!IYGUo>1y#f~NbQ`+(y30T!S4)q~}wUv4R2(J&w4wT|?n7fG%c-aD+|GeIhe zPWS>yt?dq>*$n7T&S|9A_*rkhIcq#A(iq5&tKVRDIJ5kdPs(R{EVufR!}i9pTO(g` z1{%|XEzmC9ewwI7`}kFR{AxoxzuX5`RN45YKe(7k{)g7w0};ssFAq$%JfI2l0gLz| zg01~U(Wh6Y>3_g$T4lQ4XPj-9K4L_AJI{Eeel+NFa`ackUydV1Josx7%N2JY^V<@g zeB{k@2XsZe3)qM}8u>iC4CXE5*MZ47JOqYcHOR}~<|GgN=a;({jH(M}aZqvJ6vB;s9{&zY&RA5V zCl~n~J`h*f=LS+eX7B#xdGAr>bsEe`l5T=$A0Ucxis}PNuIpwX?AeCeGobMg9xG9} z3lIkJI;1H^Lway);^dF2@0WHgN+-=EESDe<#Mi-aBN3M~*{kF01}D&W zb+{-_3#Z0`AMRLcmHdNm9Mz}11HiRNDvy1-gQ%C}A3X6>RhM`?e7D?Mw1KcIIK|_C zIV3}#TQdpn+Bd*U4GHD)+m3|(`PSh?APmZ5-aLvUv2W5B)l5XU(ymp?Ro5^08pvcf zEvUi!3?~VzAG~LPAYc~mi46HBj+a>t~I++DlRy z*YlfK+;Ri{Tm~E;fxj>a0)Jr-IQ}=UaC;z?VeJa|rz*P@?1weX!WoFRp$5ZD$mQSs zJcRB;*pn>f4?LSw+mD|aGtAZ<L5uuBGc~w{x>HXxJyQR}v8%Q4gNeKNCn|rB}@f=1R*AvnywJs5? z%R@i5W6jiUO*4~~vYM={jR+|f2qs=4_g|_cLmFtCM|-6lBT^^l80=Q%9o{Nep__|I z-o`BHefkqRx9cXG97u*#a^BWy-y(V+>?MhF+Vcu|yIkJNI(BkHR!t@?z(|bX)V4r& zSX39Zm!t1~jggaUFQmg82LaQN`D3?G_V-CS7SYD4bi3Q^uI!eccGp3hK$iDCdz1wXic2sv~8(Bv%iq|P%Td#~>BK7jFLH%=iUhHJshSDV6yVgfo%jw)?Zyfg5*E0+RCQ*sZIah582+0}~wj`8|h@}?_v z^p%<#Usp@e%wqtT;j!|rEN-yocWCC}V&K+- zV!Pq9#(4d_-+Wpjo&9}1F2g>;4;Az@)DGr@O{B-Sp^3iK2pO!%Db2kce~fzC(Wy_kSj~QJXI#J zC)m*+$?41F{c5{EPx(5?P=g*f07KV^HBPY-Z9ZcsRz=zM6CGB)gxy3R`#}u{g?*a-qdh|Ck5nisj6Ed_BZ6p>I!LIO`cb)sy|RB{KT>@ zv&y|&UVICO-+*#SH8Q5nf!5!tSqFrjKg`;wCObe`)z{u&8h&7KW@T^hAw6#oUTgxCP;RnOuW8XMQjr$5L;DM$$}F8E9Gy$G<)`??VU%B>g?)GpX09_FTk1&SUbc$w-LCB z7Pr9W<%krTB0`6-pHfuCzMU|EVK0#z7`f^NMxS%_R)O)Hj#|!SolzohtC^CuyMHkj zq_Xwqx%zO71?K|b3Gi2CxB5y?<5h1sCvZw*>*cok2we{BMmDZ5hf|4INe%*-?z|7M zBa#)$%ykO?MJ@>SxxpF{NqUS7r=*4`QG+L+AGfGa`}XaFLq}N&WxpAN!s6NvAF-rt zVZToK9cai6y1irScVyX%*QO8YJg|SCgh^E+&B5L!Gos`?=qlQH?vu4hHwSv zm4+AYt|bjOos-S8iR9vbb&RN(($>KlJ4k@9-AZ@L*lXmANNBO`*BVLBs!5AhZM|6c zjlRJcl_)`+J1?OwRlpoAk3*?g%6P3YZm9})>O*Qr@E$`Wk=}N@oo6ZX5#pv^hy@#N3vWkd7PJC znVBLPT+gI%7Z7vj(Au|=dt8HwbruI-%F-h8a_(8zlvH+}rqZphDdQ7~o`$p;Pqz;J zmIGzSvTE+*0BK)?lrq!RlH;hGF5ghbsyJdP!k|c4;&U%f5OV%3ki>oAKoS@x@`!Ak z@vbTI>2F;vvk2*zCCziSoSEW!h6AKm+&Jo{E2}k_pjUEW!2|1U>KdDz3lu3y1&U|M zAYj?X^|PKNj+ajZB$Byg(JMTz&%sIt+E)sGN9&-Hxw|NN&r|K&J)*Vg%b7tV_S zYsEf=Au1GUm+J?$A{Q;}%LdHF_u00V$<6?Y{Bi$(kSB58In>`}*8rjtGedVZ(^%tJXTONz!`vdAquAaQ=$O%>4{QE`J z*VyM~x%7*hhbr4;t82H)Nm}ONKYTFm8?_YkbN7l2-%%?c!IWNIjj357_n_^xr5F+* z=52^KgrHszQIA(}uMf#bs$Y;+V9L!`hUhP>#U&Ep4mhduD?)p_-R*HlSj<KExRT6BxuQ0G8eZcy%j zd$P0c=eaCHx8a-f)m;`EStseM6em2Qn)%@@2H7cU7aV=rF5xljTBn*Q_W8TUvJJ=l(&#D zqjWFL*NW2!*Bbe!M#{sLGg4Hb&gww=3Vjusby0;b)f%XSkHv13@0DkH@j)_XUv!YA zLF2WW$CdA1Q$+O@u|Al`lc2$a3@s6*|5WYg=DT8wOq)#|C zng3&NKX>j~>GR2x&*7E5J>|VA_=i7{*A~tv&z?F(j-5DB6TcAul*8BN^VfwptL87f zradF47tX&XWI~K=n7$=)S2%#1$XRAX-YvV7PEv@Z$6N}DO0ceq(cEdld^tN39~}5L z9LY@Nk^$-IQOnm^S&w@X`t;A68J{w|XlUf3!`_nTi-yV*jwg34fHu{3=lZ6%g zvS(K;q#p⪻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

      WME;BfYuhe>Wdgf^)<#pf2n;%i#R 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�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%0AgJ*L}SIUp2gIG@FW@)#ssvcoYv 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 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c4b00b78470d9e1db1d0c8cbbfadaa18c0c58aa1 GIT binary patch literal 283140 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%0DW&Ew;nH}8?qjHS&I62LJ9exMM<`nW@W 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ĺ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 z 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 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-BoldItalic.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4d4c7a68ea653107261513e41c3b75ef7c697cce GIT binary patch literal 294584 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

    5. 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

      )$laUU^PeQDlCE4MX{Bd|(C} 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 Txc|TZ?f3up>;Ip>{f_?!Ie6$s literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2b0b7fe9962801e2bf1c31552c6541ab45239832 GIT binary patch literal 555944 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 z͵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�>t>7>-QorNVF!#eAN%9NJE!UA_Y3bl_9%YXwb)t1hKY~9{kHt; z#*Jbeo#1EsxOHQz@<9l~$5xze^XuDhL*D!h?mq8>hd!DDk~roR738NPtz9Q1xDhKf z�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

      '; +foreach($ff AS $f) { + $ret = array(); + if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-4,4))=='.ttcf') { // Mac ttcf + $ttf->getTTCFonts($ttfdir.$f); + $nf = $ttf->numTTCFonts; + echo '

      Font collection file ('.$f.') contains the following fonts:

      '; + for ($i=1; $i<=$nf; $i++) { + $ret = $ttf->extractCoreInfo($ttfdir.$f, $i); + $tfname = $ret[0]; + $bold = $ret[1]; + $italic = $ret[2]; + $fname = strtolower($tfname ); + $fname = preg_replace('/[ ()]/','',$fname ); + $style = ''; + if ($bold) { $style .= 'Bold'; } + if ($italic) { $style .= 'Italic'; } + if (!$style) { $style = 'Regular'; } + + + echo '
      ['.$i.'] '.$tfname.' ('.$fname.') '.$style.'
      '; + + } + echo '
      '; + } +} + + +exit; + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/font_coverage.php b/inc/3rdparty/libraries/mpdf/utils/font_coverage.php new file mode 100644 index 000000000..5286d743a --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/utils/font_coverage.php @@ -0,0 +1,255 @@ +SetDisplayMode('fullpage'); +$mpdf->useSubstitutions = true; +$mpdf->debug = true; +$mpdf->simpleTables = true; +if ($checkdir) { + $ttfdir = $checkdir; +} +else { $ttfdir = _MPDF_TTFONTPATH; } + + + +$mqr=ini_get("magic_quotes_runtime"); +if ($mqr) { set_magic_quotes_runtime(0); } +if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); } + +//============================================================== + $smp = true; + $maxt = 131071; +//============================================================== +//============================================================== +$unifile = file('UnicodeData.txt'); +$unichars = array(); +foreach($unifile AS $line) { + if (preg_match('//',$line,$m)) { + $rangename = ''; + continue; + } + else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), Last>/',$line,$m)) { + if ($rangename && $rangename == $m[2]) { + $endrange = hexdec($m[1]); + for ($i=$startrange;$i<=$endrange; $i++) { + $unichars[$i] = $i; + } + } + $rangename = ''; + } + else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), First>/',$line,$m)) { + $startrange = hexdec($m[1]); + $rangename = $m[2]; + } + else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});/',$line,$m)) { + $unichars[hexdec($m[1])] = hexdec($m[1]); + $rangename = ''; + } +} + +// loads array $unicode_ranges +include('UnicodeRanges.php'); +//============================================================== +$html = ''; + +//============================================================== +$ff = scandir($ttfdir); +$tempfontdata = array(); +foreach($ff AS $f) { + $ttf = new TTFontFile_Analysis(); + $ret = array(); + $isTTC = false; + if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf') { + $ret[] = $ttf->extractCoreInfo($ttfdir.$f); + } + for ($i=0; $i $ur) { + if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) { + $rangekey = $urk; + $range = $ur['range']; + $rangestart = $ur['starthex']; + $rangeend = $ur['endhex']; + $html .= ''.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'; + } + } + $html .= ''; + + + foreach ($tempfontdata AS $fname => $v) { + $cw = ''; + if (file_exists((_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'))) { $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); } + else { + $mpdf->fontdata[$fname]['R'] = $tempfontdata[$fname]['file']; + $mpdf->AddFont($fname); + $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); + } + if (!$cw) { + continue; + die("Font data not available for $fname"); + } + + $counter=0; + $max = $maxt; + + // create HTML content + $html .= ''; + $html .= ''.$fname.''; + + foreach($unicode_ranges AS $urk => $ur) { + if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) { + if ($ur['pua'] || $ur['reserved'] || $ur['control']) { + $html .= ''; + } + else { + $rangekey = $urk; + $range = $ur['range']; + $rangestart = $ur['starthex']; + $rangeend = $ur['endhex']; + $rangestartdec = $ur['startdec']; + $rangeenddec = $ur['enddec']; + $uniinrange = 0; + $fontinrange = 0; + for ($i=$rangestartdec; $i<=$rangeenddec; $i++) { + //if (isset($cw[$i])) { $fontinrange++; } + if ($mpdf->_charDefined($cw, $i)) { $fontinrange++; } + if (isset($unichars[$i])) { $uniinrange++; } + } + if ($uniinrange) { + if ($fontinrange) { + $pc = ($fontinrange/$uniinrange); + $str = '('.$fontinrange.'/'.$uniinrange.')'; + if ($pc==1) { + $fullcovers[$urk][] = $fname; + $html .= ''; + } + else if ($pc>1) { + $fullcovers[$urk][] = $fname; + $html .= ''.$str.''; + } + else if ($pc>=0.9) { + $html .= ''.$str.''; + $nearlycovers[$urk][] = $fname; + } + else if ($pc>0.75) { $html .= ''.$str.''; } + else if ($pc>0.5) { $html .= ''.$str.''; } + else if ($pc>0.25) { $html .= ''.$str.''; } + else { $html .= ''.$str.''; } + } + else { $html .= '(0/0)'; } + } + else { $html .= ''; } + } + } + } + + + $html .= ''; + + } +//============================================================== + $html .= ''; +} + +$html .= '

      Fonts with full coverage of Unicode Ranges

      '; +$html .= ''; +//$html .= ''; +foreach($unicode_ranges AS $urk => $ur) { + if ($ur['pua'] || $ur['reserved'] || $ur['control']) { continue; } + $rangekey = $urk; + $range = $ur['range']; + $rangestart = $ur['starthex']; + $rangeend = $ur['endhex']; + $ext = $ext2 = ''; + if ($ur['combining']) { $ext = 'background-color:#DDDDFF;'; $ext2 = '
      Special positioning required'; } + if ($ur['vertical']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '
      Vertical positioning required'; } + if ($ur['special']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '
      Special processing required'; } + + + $html .= ''; + $arr = $fullcovers[$urk]; + $narr = $nearlycovers[$urk]; + if (is_array($arr)) { $html .= ''; } + else if (is_array($narr)) { $html .= ''; } + else { $html .= ''; } +} +$html.= '
      '.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'.$ext2.''. implode(', ',$arr). '
      '. implode(', ',$narr). ' (>90%)
      '; + + +//============================================================== +echo $html; + +exit; + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/font_dump.php b/inc/3rdparty/libraries/mpdf/utils/font_dump.php new file mode 100644 index 000000000..907314038 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/utils/font_dump.php @@ -0,0 +1,222 @@ +StartProgressBarOutput(2); + +$mpdf->SetDisplayMode('fullpage'); + +$mpdf->useSubstitutions = true; +$mpdf->debug = true; +$mpdf->simpleTables = true; +// force fonts to be embedded whole i.e. NOT susbet +$mpdf->percentSubset = 0; + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + +// This generates a .mtx.php file if not already generated +$mpdf->WriteHTML(''); +$mpdf->WriteHTML('

      '.strtoupper($font).'

      '); // Separate Paragraphs defined by font +$html = ''; +//============================================================== +//============================================================== +//============================================================== +//============================================================== +$unifile = file('UnicodeData.txt'); +$unichars = array(); + +foreach($unifile AS $line) { + if ($smp && preg_match('/^(1[0-9A-Za-z]{4});/',$line,$m)) { + $unichars[hexdec($m[1])] = hexdec($m[1]); + } + else if (preg_match('/^([0-9A-Za-z]{4});/',$line,$m)) { + $unichars[hexdec($m[1])] = hexdec($m[1]); + } +} + +// loads array $unicode_ranges +include('UnicodeRanges.php'); +//============================================================== +//============================================================== + + + +$cw = file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); +if (!$cw) { die("Error - Must be able to read font metrics file: "._MPDF_TTFONTDATAPATH.$font.'.cw.dat'); } +$counter=0; + + +include(_MPDF_TTFONTDATAPATH.$font.'.mtx.php'); + +if ($smp) { + $max = 131071; +} +else { + $max = 65535; +} + + +$justfinishedblank = false; +$justfinishedblankinvalid = false; + + foreach($unicode_ranges AS $urk => $ur) { + if (0 >= $ur['startdec'] && 0 <= $ur['enddec']) { + $rangekey = $urk; + $range = $ur['range']; + $rangestart = $ur['starthex']; + $rangeend = $ur['endhex']; + break; + } + } + $lastrange = $range ; + // create HTML content + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + + $html .= ''; + for ($i = 0; $i < 16; $i++) { + $html .= ''; + } + + + // print each character + for ($i = 32; $i < $max; ++$i) { + if (($i > 0) AND (($i % 16) == 0)) { + $notthisline = true; + while($notthisline) { + for ($j = 0; $j < 16; $j++) { + if ($mpdf->_charDefined($cw, ($i + $j))) { + //if (isset($cw[($i+$j)])) { + $notthisline = false; + } + } + if ($notthisline) { + if ($showmissing) { + $range = ''; + foreach($unicode_ranges AS $urk => $ur) { + if ($i >= $ur['startdec'] && $i <= $ur['enddec']) { + $rangekey = $urk; + $range = $ur['range']; + $rangestart = $ur['starthex']; + $rangeend = $ur['endhex']; + break; + } + } + $anyvalid = false; + for ($j = 0; $j < 16; $j++) { + if (isset($unichars[$i+$j])) { $anyvalid = true; break; } + } + if ($range && $range == $lastrange) { + if (!$anyvalid) { + if (!$justfinishedblankinvalid) { + $html .= ''; + } + $justfinishedblankinvalid = true; + } + else if (!$justfinishedblank ) { + $html .= ''; + $justfinishedblank = true; + } + } + else if($range) { + $html .= '
      '.strtoupper($font).'
      '.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')
      -'.sprintf('%X', $i).'
       
       

      '; + $mpdf->WriteHTML($html); $html = ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + for ($k = 0; $k < 16; $k++) { + $html .= ''; + } + $justfinishedblank = false; + $justfinishedblankinvalid = false; + } + $lastrange = $range ; + } + $i +=16; + if ($i > $max) { break 2; } + } + } + foreach($unicode_ranges AS $urk => $ur) { + if ($i >= $ur['startdec'] && $i <= $ur['enddec']) { + $rangekey = $urk; + $range = $ur['range']; + $rangestart = $ur['starthex']; + $rangeend = $ur['endhex']; + break; + } + } + + if ($i > 0 && ($i % 16) == 0 && ($range != $lastrange)) { + $html .= '
      '.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')
      -'.sprintf('%X', $k).'

      '; + $mpdf->WriteHTML($html); $html = ''; + $html .= ''; + $html .= ''; + $html .= ''; + $html .= ''; + for ($k = 0; $k < 16; $k++) { + $html .= ''; + } + } + $lastrange = $range ; + $justfinishedblank = false; + $justfinishedblankinvalid = false; + $html .= ''; + $html .= ''; + } + if ($mpdf->_charDefined($cw, $i)) { $html .= ''; $counter++; } + else if (isset($unichars[$i])) { $html .= ''; } + else { $html .= ''; } + } + + if (($i % 16) > 0) { + for ($j = ($i % 16); $j < 16; ++$j) { $html .= ''; } + } + $html .= '
      '.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')
      -'.sprintf('%X', $k).'
      '.(floor($i / 16)*16).''.sprintf('%03X', floor($i / 16)).'-&#'.$i.';

      '; +//============================================================== +//============================================================== +$mpdf->WriteHTML($html); // Separate Paragraphs defined by font + +$mpdf->Output(); +exit; + +//============================================================== +//============================================================== +//============================================================== +//============================================================== + + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/font_names.php b/inc/3rdparty/libraries/mpdf/utils/font_names.php new file mode 100644 index 000000000..21773b866 --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/utils/font_names.php @@ -0,0 +1,200 @@ +useSubstitutions = true; +if ($checkdir) { + $ttfdir = $checkdir; +} +else { $ttfdir = _MPDF_TTFONTPATH; } + +$mqr=ini_get("magic_quotes_runtime"); +if ($mqr) { set_magic_quotes_runtime(0); } +if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); } +$ttf = new TTFontFile(); + +$tempfontdata = array(); +$tempsansfonts = array(); +$tempseriffonts = array(); +$tempmonofonts = array(); +$tempfonttrans = array(); + +$ff = scandir($ttfdir); + +foreach($ff AS $f) { + $ret = array(); + $isTTC = false; + if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-5,5))=='.ttcf') { // Mac ttcf + $isTTC = true; + $ttf->getTTCFonts($ttfdir.$f); + $nf = $ttf->numTTCFonts; + for ($i=1; $i<=$nf; $i++) { + $ret[] = $ttf->extractCoreInfo($ttfdir.$f, $i); + } + } + else if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf' ) { + $ret[] = $ttf->extractCoreInfo($ttfdir.$f); + } + for ($i=0; $i'; + } + else { + $tfname = $ret[$i][0]; + $bold = $ret[$i][1]; + $italic = $ret[$i][2]; + $fname = strtolower($tfname ); + $fname = preg_replace('/[ ()]/','',$fname ); + $tempfonttrans[$tfname] = $fname; + $style = ''; + if ($bold) { $style .= 'B'; } + if ($italic) { $style .= 'I'; } + if (!$style) { $style = 'R'; } + $tempfontdata[$fname][$style] = $f; + if ($isTTC) { + $tempfontdata[$fname]['TTCfontID'][$style] = $ret[$i][4]; + } + //if ($ret[$i][5]) { $tempfontdata[$fname]['rtl'] = true; } + //if ($ret[$i][7]) { $tempfontdata[$fname]['cjk'] = true; } + if ($ret[$i][8]) { $tempfontdata[$fname]['sip'] = true; } + if ($ret[$i][9]) { $tempfontdata[$fname]['smp'] = true; } + + $ftype = $ret[$i][3]; // mono, sans or serif + if ($ftype=='sans') { $tempsansfonts[] = $fname; } + else if ($ftype=='serif') { $tempseriffonts[] = $fname; } + else if ($ftype=='mono') { $tempmonofonts[] = $fname; } + } + } + +} +$tempsansfonts = array_unique($tempsansfonts); +$tempseriffonts = array_unique($tempseriffonts ); +$tempmonofonts = array_unique($tempmonofonts ); +$tempfonttrans = array_unique($tempfonttrans); + +if (!$pdf) { + echo '

      Information

      '; +} + +foreach ($tempfontdata AS $fname => $v) { + if (!isset($tempfontdata[$fname]['R']) || !$tempfontdata[$fname]['R']) { + if (!$pdf) echo 'WARNING - Font file for '.$fname.' may be an italic cursive script, or extra-bold etc.
      '; + if (isset($tempfontdata[$fname]['I']) && $tempfontdata[$fname]['I']) { + $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['I']; + } + else if (isset($tempfontdata[$fname]['B']) && $tempfontdata[$fname]['B']) { + $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['B']; + } + else if (isset($tempfontdata[$fname]['BI']) && $tempfontdata[$fname]['BI']) { + $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['BI']; + } + } + if (isset($tempfontdata[$fname]['smp']) && $tempfontdata[$fname]['smp']) { + if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 1 SMP
      '; + $tempfontdata[$fname]['smp'] = false; + } + if (isset($tempfontdata[$fname]['sip']) && $tempfontdata[$fname]['sip']) { + if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 2 SIP
      '; + if (preg_match('/^(.*)-extb/',$fname, $fm)) { + if (isset($tempfontdata[($fm[1])]) && $tempfontdata[($fm[1])]) { + $tempfontdata[($fm[1])]['sip-ext'] = $fname; + if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1]).'
      '; + } + else if (isset($tempfontdata[($fm[1].'-exta')]) && $tempfontdata[($fm[1].'-exta')]) { + $tempfontdata[($fm[1].'-exta')]['sip-ext'] = $fname; + if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1].'-exta').'
      '; + } + } + // else { unset($tempfontdata[$fname]['sip']); } + } + unset($tempfontdata[$fname]['sip']); + unset($tempfontdata[$fname]['smp']); +} + +$mpdf->fontdata = array_merge($tempfontdata ,$mpdf->fontdata); + + $mpdf->available_unifonts = array(); + foreach ($mpdf->fontdata AS $f => $fs) { + if (isset($fs['R']) && $fs['R']) { $mpdf->available_unifonts[] = $f; } + if (isset($fs['B']) && $fs['B']) { $mpdf->available_unifonts[] = $f.'B'; } + if (isset($fs['I']) && $fs['I']) { $mpdf->available_unifonts[] = $f.'I'; } + if (isset($fs['BI']) && $fs['BI']) { $mpdf->available_unifonts[] = $f.'BI'; } + } + + $mpdf->default_available_fonts = $mpdf->available_unifonts; + +if (!$pdf) { + echo '
      '; + echo '

      Font names as parsed by mPDF

      '; +} + +ksort($tempfonttrans); +$html = ''; +foreach($tempfonttrans AS $on=>$mn) { + if (!file_exists($ttfdir.$mpdf->fontdata[$mn]['R'])) { continue; } + $ond = '"'.$on.'"'; + $html .= '

      '.$ond.' font is available as '.$mn; + if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) { + $html .= '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext']; + } + $html .= '

      '; +} + +if ($pdf) { + $mpdf->WriteHTML($html); + $mpdf->Output(); + exit; +} + +foreach($tempfonttrans AS $on=>$mn) { + $ond = '"'.$on.'"'; + echo '
      '.$ond.' font is available as '.$mn; + if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) { + echo '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext']; + } + echo '
      '; +} +echo '
      '; + +echo '

      Sample config_fonts.php file

      '; +echo '
      Remember to edit the following arrays to place your preferred default first in order:
      '; + +echo '
      ';
      +
      +ksort($tempfontdata);
      +echo '$this->fontdata = '.var_export($tempfontdata,true).";\n";
      +
      +sort($tempsansfonts);
      +echo '$this->sans_fonts = array(\''.implode("', '", $tempsansfonts)."');\n";
      +sort($tempseriffonts);
      +echo '$this->serif_fonts = array(\''.implode("', '", $tempseriffonts)."');\n";
      +sort($tempmonofonts);
      +echo '$this->mono_fonts = array(\''.implode("', '", $tempmonofonts)."');\n";
      +echo '
      '; + +exit; + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/index.php b/inc/3rdparty/libraries/mpdf/utils/index.php new file mode 100644 index 000000000..544f7f2ef --- /dev/null +++ b/inc/3rdparty/libraries/mpdf/utils/index.php @@ -0,0 +1,26 @@ + + + + + + +

      mPDF Font Utility scripts for Version 5.0

      +
      +

      +Show a list of all font names available (font_names.php) +

      +

      +Show fonts in Collections .ttc (font_collections.php) +

      +

      +Show coverage of characters from all fonts (font_coverage.php) +

      + +

      Edit the scripts to change the font folder if you wish - this is set by default to /ttfonts/

      + + + + + diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php new file mode 100644 index 000000000..de896f878 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php @@ -0,0 +1,413 @@ + output is UTF-8 + return $str; + //return utf8_encode($str); + //Convert to CP1252 + list($from, $to) = CharacterEntities::generateTables(); + return str_replace($from, $to, $str); + } + + private static function generateTables(){ + $from = array(); + $to = array(); + + for($i = 0; $i < 256; $i++){ + $from[$i] = $to[$i] = chr($i); + } + + $from[0x80] = "€"; + $from[0x82] = "‚"; + $from[0x83] = "ƒ"; + $from[0x84] = "„"; + $from[0x85] = "…"; + $from[0x86] = "†"; + $from[0x87] = "‡"; + $from[0x88] = "ˆ"; + $from[0x89] = "‰"; + $from[0x8A] = "Š"; + $from[0x8B] = "‹"; + $from[0x8C] = "Œ"; + $from[0x8E] = "Ž"; + + $from[0x91] = "‘"; + $from[0x92] = "’"; + $from[0x93] = "“"; + $from[0x94] = "”"; + $from[0x95] = "•"; + $from[0x96] = "–"; + $from[0x97] = "—"; + $from[0x98] = "˜"; + $from[0x99] = "™"; + $from[0x9A] = "š"; + $from[0x9B] = "›"; + $from[0x9C] = "œ"; + $from[0x9E] = "ž"; + $from[0x9F] = "Ÿ"; + + $from[0xA1] = "¡"; + $from[0xA2] = "¢"; + $from[0xA3] = "£"; + $from[0xA4] = "¤"; + $from[0xA5] = "¥"; + $from[0xA6] = "¦"; + $from[0xA7] = "§"; + $from[0xA8] = "¨"; + $from[0xA9] = "©"; + $from[0xAA] = "ª"; + $from[0xAB] = "«"; + $from[0xAC] = "¬"; + $from[0xAE] = "®"; + $from[0xAF] = "¯"; + + $from[0xB0] = "°"; + $from[0xB1] = "±"; + $from[0xB2] = "²"; + $from[0xB3] = "³"; + $from[0xB4] = "´"; + $from[0xB5] = "µ"; + $from[0xB6] = "¶"; + $from[0xB7] = "·"; + $from[0xB8] = "¸"; + $from[0xB9] = "¹"; + $from[0xBA] = "º"; + $from[0xBB] = "»"; + $from[0xBC] = "¼"; + $from[0xBD] = "½"; + $from[0xBE] = "¾"; + $from[0xBF] = "¿"; + + $from[0xC0] = "À"; + $from[0xC1] = "Á"; + $from[0xC2] = "Â"; + $from[0xC3] = "Ã"; + $from[0xC4] = "Ä"; + $from[0xC5] = "Å"; + $from[0xC6] = "Æ"; + $from[0xC7] = "Ç"; + $from[0xC8] = "È"; + $from[0xC9] = "É"; + $from[0xCA] = "Ê"; + $from[0xCB] = "Ë"; + $from[0xCC] = "Ì"; + $from[0xCD] = "Í"; + $from[0xCE] = "Î"; + $from[0xCF] = "Ï"; + + $from[0xD0] = "Ð"; + $from[0xD1] = "Ñ"; + $from[0xD2] = "Ò"; + $from[0xD3] = "Ó"; + $from[0xD4] = "Ô"; + $from[0xD5] = "Õ"; + $from[0xD6] = "Ö"; + $from[0xD7] = "×"; + $from[0xD8] = "Ø"; + $from[0xD9] = "Ù"; + $from[0xDA] = "Ú"; + $from[0xDB] = "Û"; + $from[0xDC] = "Ü"; + $from[0xDD] = "Ý"; + $from[0xDE] = "Þ"; + $from[0xDF] = "ß"; + + $from[0xE0] = "à"; + $from[0xE1] = "á"; + $from[0xE2] = "â"; + $from[0xE3] = "ã"; + $from[0xE4] = "ä"; + $from[0xE5] = "å"; + $from[0xE6] = "æ"; + $from[0xE7] = "ç"; + $from[0xE8] = "è"; + $from[0xE9] = "é"; + $from[0xEA] = "ê"; + $from[0xEB] = "ë"; + $from[0xEC] = "ì"; + $from[0xED] = "í"; + $from[0xEE] = "î"; + $from[0xEF] = "ï"; + + $from[0xF0] = "ð"; + $from[0xF1] = "ñ"; + $from[0xF2] = "ò"; + $from[0xF3] = "ó"; + $from[0xF4] = "ô"; + $from[0xF5] = "õ"; + $from[0xF6] = "ö"; + $from[0xF7] = "÷"; + $from[0xF8] = "ø"; + $from[0xF9] = "ù"; + $from[0xFA] = "ú"; + $from[0xFB] = "û"; + $from[0xFC] = "ü"; + $from[0xFD] = "ý"; + $from[0xFE] = "þ"; + $from[0xFF] = "ÿ"; + + + return array($from, $to); + } + /* + 00 = U+0000 : NULL +01 = U+0001 : START OF HEADING +02 = U+0002 : START OF TEXT +03 = U+0003 : END OF TEXT +04 = U+0004 : END OF TRANSMISSION +05 = U+0005 : ENQUIRY +06 = U+0006 : ACKNOWLEDGE +07 = U+0007 : BELL +08 = U+0008 : BACKSPACE +09 = U+0009 : HORIZONTAL TABULATION +0A = U+000A : LINE FEED +0B = U+000B : VERTICAL TABULATION +0C = U+000C : FORM FEED +0D = U+000D : CARRIAGE RETURN +0E = U+000E : SHIFT OUT +0F = U+000F : SHIFT IN +10 = U+0010 : DATA LINK ESCAPE +11 = U+0011 : DEVICE CONTROL ONE +12 = U+0012 : DEVICE CONTROL TWO +13 = U+0013 : DEVICE CONTROL THREE +14 = U+0014 : DEVICE CONTROL FOUR +15 = U+0015 : NEGATIVE ACKNOWLEDGE +16 = U+0016 : SYNCHRONOUS IDLE +17 = U+0017 : END OF TRANSMISSION BLOCK +18 = U+0018 : CANCEL +19 = U+0019 : END OF MEDIUM +1A = U+001A : SUBSTITUTE +1B = U+001B : ESCAPE +1C = U+001C : FILE SEPARATOR +1D = U+001D : GROUP SEPARATOR +1E = U+001E : RECORD SEPARATOR +1F = U+001F : UNIT SEPARATOR +20 = U+0020 : SPACE +21 = U+0021 : EXCLAMATION MARK +22 = U+0022 : QUOTATION MARK +23 = U+0023 : NUMBER SIGN +24 = U+0024 : DOLLAR SIGN +25 = U+0025 : PERCENT SIGN +26 = U+0026 : AMPERSAND +27 = U+0027 : APOSTROPHE +28 = U+0028 : LEFT PARENTHESIS +29 = U+0029 : RIGHT PARENTHESIS +2A = U+002A : ASTERISK +2B = U+002B : PLUS SIGN +2C = U+002C : COMMA +2D = U+002D : HYPHEN-MINUS +2E = U+002E : FULL STOP +2F = U+002F : SOLIDUS +30 = U+0030 : DIGIT ZERO +31 = U+0031 : DIGIT ONE +32 = U+0032 : DIGIT TWO +33 = U+0033 : DIGIT THREE +34 = U+0034 : DIGIT FOUR +35 = U+0035 : DIGIT FIVE +36 = U+0036 : DIGIT SIX +37 = U+0037 : DIGIT SEVEN +38 = U+0038 : DIGIT EIGHT +39 = U+0039 : DIGIT NINE +3A = U+003A : COLON +3B = U+003B : SEMICOLON +3C = U+003C : LESS-THAN SIGN +3D = U+003D : EQUALS SIGN +3E = U+003E : GREATER-THAN SIGN +3F = U+003F : QUESTION MARK +40 = U+0040 : COMMERCIAL AT +41 = U+0041 : LATIN CAPITAL LETTER A +42 = U+0042 : LATIN CAPITAL LETTER B +43 = U+0043 : LATIN CAPITAL LETTER C +44 = U+0044 : LATIN CAPITAL LETTER D +45 = U+0045 : LATIN CAPITAL LETTER E +46 = U+0046 : LATIN CAPITAL LETTER F +47 = U+0047 : LATIN CAPITAL LETTER G +48 = U+0048 : LATIN CAPITAL LETTER H +49 = U+0049 : LATIN CAPITAL LETTER I +4A = U+004A : LATIN CAPITAL LETTER J +4B = U+004B : LATIN CAPITAL LETTER K +4C = U+004C : LATIN CAPITAL LETTER L +4D = U+004D : LATIN CAPITAL LETTER M +4E = U+004E : LATIN CAPITAL LETTER N +4F = U+004F : LATIN CAPITAL LETTER O +50 = U+0050 : LATIN CAPITAL LETTER P +51 = U+0051 : LATIN CAPITAL LETTER Q +52 = U+0052 : LATIN CAPITAL LETTER R +53 = U+0053 : LATIN CAPITAL LETTER S +54 = U+0054 : LATIN CAPITAL LETTER T +55 = U+0055 : LATIN CAPITAL LETTER U +56 = U+0056 : LATIN CAPITAL LETTER V +57 = U+0057 : LATIN CAPITAL LETTER W +58 = U+0058 : LATIN CAPITAL LETTER X +59 = U+0059 : LATIN CAPITAL LETTER Y +5A = U+005A : LATIN CAPITAL LETTER Z +5B = U+005B : LEFT SQUARE BRACKET +5C = U+005C : REVERSE SOLIDUS +5D = U+005D : RIGHT SQUARE BRACKET +5E = U+005E : CIRCUMFLEX ACCENT +5F = U+005F : LOW LINE +60 = U+0060 : GRAVE ACCENT +61 = U+0061 : LATIN SMALL LETTER A +62 = U+0062 : LATIN SMALL LETTER B +63 = U+0063 : LATIN SMALL LETTER C +64 = U+0064 : LATIN SMALL LETTER D +65 = U+0065 : LATIN SMALL LETTER E +66 = U+0066 : LATIN SMALL LETTER F +67 = U+0067 : LATIN SMALL LETTER G +68 = U+0068 : LATIN SMALL LETTER H +69 = U+0069 : LATIN SMALL LETTER I +6A = U+006A : LATIN SMALL LETTER J +6B = U+006B : LATIN SMALL LETTER K +6C = U+006C : LATIN SMALL LETTER L +6D = U+006D : LATIN SMALL LETTER M +6E = U+006E : LATIN SMALL LETTER N +6F = U+006F : LATIN SMALL LETTER O +70 = U+0070 : LATIN SMALL LETTER P +71 = U+0071 : LATIN SMALL LETTER Q +72 = U+0072 : LATIN SMALL LETTER R +73 = U+0073 : LATIN SMALL LETTER S +74 = U+0074 : LATIN SMALL LETTER T +75 = U+0075 : LATIN SMALL LETTER U +76 = U+0076 : LATIN SMALL LETTER V +77 = U+0077 : LATIN SMALL LETTER W +78 = U+0078 : LATIN SMALL LETTER X +79 = U+0079 : LATIN SMALL LETTER Y +7A = U+007A : LATIN SMALL LETTER Z +7B = U+007B : LEFT CURLY BRACKET +7C = U+007C : VERTICAL LINE +7D = U+007D : RIGHT CURLY BRACKET +7E = U+007E : TILDE +7F = U+007F : DELETE +80 = U+20AC : EURO SIGN +82 = U+201A : SINGLE LOW-9 QUOTATION MARK +83 = U+0192 : LATIN SMALL LETTER F WITH HOOK +84 = U+201E : DOUBLE LOW-9 QUOTATION MARK +85 = U+2026 : HORIZONTAL ELLIPSIS +86 = U+2020 : DAGGER +87 = U+2021 : DOUBLE DAGGER +88 = U+02C6 : MODIFIER LETTER CIRCUMFLEX ACCENT +89 = U+2030 : PER MILLE SIGN +8A = U+0160 : LATIN CAPITAL LETTER S WITH CARON +8B = U+2039 : SINGLE LEFT-POINTING ANGLE QUOTATION MARK +8C = U+0152 : LATIN CAPITAL LIGATURE OE +8E = U+017D : LATIN CAPITAL LETTER Z WITH CARON +91 = U+2018 : LEFT SINGLE QUOTATION MARK +92 = U+2019 : RIGHT SINGLE QUOTATION MARK +93 = U+201C : LEFT DOUBLE QUOTATION MARK +94 = U+201D : RIGHT DOUBLE QUOTATION MARK +95 = U+2022 : BULLET +96 = U+2013 : EN DASH +97 = U+2014 : EM DASH +98 = U+02DC : SMALL TILDE +99 = U+2122 : TRADE MARK SIGN +9A = U+0161 : LATIN SMALL LETTER S WITH CARON +9B = U+203A : SINGLE RIGHT-POINTING ANGLE QUOTATION MARK +9C = U+0153 : LATIN SMALL LIGATURE OE +9E = U+017E : LATIN SMALL LETTER Z WITH CARON +9F = U+0178 : LATIN CAPITAL LETTER Y WITH DIAERESIS +A0 = U+00A0 : NO-BREAK SPACE +A1 = U+00A1 : INVERTED EXCLAMATION MARK +A2 = U+00A2 : CENT SIGN +A3 = U+00A3 : POUND SIGN +A4 = U+00A4 : CURRENCY SIGN +A5 = U+00A5 : YEN SIGN +A6 = U+00A6 : BROKEN BAR +A7 = U+00A7 : SECTION SIGN +A8 = U+00A8 : DIAERESIS +A9 = U+00A9 : COPYRIGHT SIGN +AA = U+00AA : FEMININE ORDINAL INDICATOR +AB = U+00AB : LEFT-POINTING DOUBLE ANGLE QUOTATION MARK +AC = U+00AC : NOT SIGN +AD = U+00AD : SOFT HYPHEN +AE = U+00AE : REGISTERED SIGN +AF = U+00AF : MACRON +B0 = U+00B0 : DEGREE SIGN +B1 = U+00B1 : PLUS-MINUS SIGN +B2 = U+00B2 : SUPERSCRIPT TWO +B3 = U+00B3 : SUPERSCRIPT THREE +B4 = U+00B4 : ACUTE ACCENT +B5 = U+00B5 : MICRO SIGN +B6 = U+00B6 : PILCROW SIGN +B7 = U+00B7 : MIDDLE DOT +B8 = U+00B8 : CEDILLA +B9 = U+00B9 : SUPERSCRIPT ONE +BA = U+00BA : MASCULINE ORDINAL INDICATOR +BB = U+00BB : RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK +BC = U+00BC : VULGAR FRACTION ONE QUARTER +BD = U+00BD : VULGAR FRACTION ONE HALF +BE = U+00BE : VULGAR FRACTION THREE QUARTERS +BF = U+00BF : INVERTED QUESTION MARK +C0 = U+00C0 : LATIN CAPITAL LETTER A WITH GRAVE +C1 = U+00C1 : LATIN CAPITAL LETTER A WITH ACUTE +C2 = U+00C2 : LATIN CAPITAL LETTER A WITH CIRCUMFLEX +C3 = U+00C3 : LATIN CAPITAL LETTER A WITH TILDE +C4 = U+00C4 : LATIN CAPITAL LETTER A WITH DIAERESIS +C5 = U+00C5 : LATIN CAPITAL LETTER A WITH RING ABOVE +C6 = U+00C6 : LATIN CAPITAL LETTER AE +C7 = U+00C7 : LATIN CAPITAL LETTER C WITH CEDILLA +C8 = U+00C8 : LATIN CAPITAL LETTER E WITH GRAVE +C9 = U+00C9 : LATIN CAPITAL LETTER E WITH ACUTE +CA = U+00CA : LATIN CAPITAL LETTER E WITH CIRCUMFLEX +CB = U+00CB : LATIN CAPITAL LETTER E WITH DIAERESIS +CC = U+00CC : LATIN CAPITAL LETTER I WITH GRAVE +CD = U+00CD : LATIN CAPITAL LETTER I WITH ACUTE +CE = U+00CE : LATIN CAPITAL LETTER I WITH CIRCUMFLEX +CF = U+00CF : LATIN CAPITAL LETTER I WITH DIAERESIS +D0 = U+00D0 : LATIN CAPITAL LETTER ETH +D1 = U+00D1 : LATIN CAPITAL LETTER N WITH TILDE +D2 = U+00D2 : LATIN CAPITAL LETTER O WITH GRAVE +D3 = U+00D3 : LATIN CAPITAL LETTER O WITH ACUTE +D4 = U+00D4 : LATIN CAPITAL LETTER O WITH CIRCUMFLEX +D5 = U+00D5 : LATIN CAPITAL LETTER O WITH TILDE +D6 = U+00D6 : LATIN CAPITAL LETTER O WITH DIAERESIS +D7 = U+00D7 : MULTIPLICATION SIGN +D8 = U+00D8 : LATIN CAPITAL LETTER O WITH STROKE +D9 = U+00D9 : LATIN CAPITAL LETTER U WITH GRAVE +DA = U+00DA : LATIN CAPITAL LETTER U WITH ACUTE +DB = U+00DB : LATIN CAPITAL LETTER U WITH CIRCUMFLEX +DC = U+00DC : LATIN CAPITAL LETTER U WITH DIAERESIS +DD = U+00DD : LATIN CAPITAL LETTER Y WITH ACUTE +DE = U+00DE : LATIN CAPITAL LETTER THORN +DF = U+00DF : LATIN SMALL LETTER SHARP S +E0 = U+00E0 : LATIN SMALL LETTER A WITH GRAVE +E1 = U+00E1 : LATIN SMALL LETTER A WITH ACUTE +E2 = U+00E2 : LATIN SMALL LETTER A WITH CIRCUMFLEX +E3 = U+00E3 : LATIN SMALL LETTER A WITH TILDE +E4 = U+00E4 : LATIN SMALL LETTER A WITH DIAERESIS +E5 = U+00E5 : LATIN SMALL LETTER A WITH RING ABOVE +E6 = U+00E6 : LATIN SMALL LETTER AE +E7 = U+00E7 : LATIN SMALL LETTER C WITH CEDILLA +E8 = U+00E8 : LATIN SMALL LETTER E WITH GRAVE +E9 = U+00E9 : LATIN SMALL LETTER E WITH ACUTE +EA = U+00EA : LATIN SMALL LETTER E WITH CIRCUMFLEX +EB = U+00EB : LATIN SMALL LETTER E WITH DIAERESIS +EC = U+00EC : LATIN SMALL LETTER I WITH GRAVE +ED = U+00ED : LATIN SMALL LETTER I WITH ACUTE +EE = U+00EE : LATIN SMALL LETTER I WITH CIRCUMFLEX +EF = U+00EF : LATIN SMALL LETTER I WITH DIAERESIS +F0 = U+00F0 : LATIN SMALL LETTER ETH +F1 = U+00F1 : LATIN SMALL LETTER N WITH TILDE +F2 = U+00F2 : LATIN SMALL LETTER O WITH GRAVE +F3 = U+00F3 : LATIN SMALL LETTER O WITH ACUTE +F4 = U+00F4 : LATIN SMALL LETTER O WITH CIRCUMFLEX +F5 = U+00F5 : LATIN SMALL LETTER O WITH TILDE +F6 = U+00F6 : LATIN SMALL LETTER O WITH DIAERESIS +F7 = U+00F7 : DIVISION SIGN +F8 = U+00F8 : LATIN SMALL LETTER O WITH STROKE +F9 = U+00F9 : LATIN SMALL LETTER U WITH GRAVE +FA = U+00FA : LATIN SMALL LETTER U WITH ACUTE +FB = U+00FB : LATIN SMALL LETTER U WITH CIRCUMFLEX +FC = U+00FC : LATIN SMALL LETTER U WITH DIAERESIS +FD = U+00FD : LATIN SMALL LETTER Y WITH ACUTE +FE = U+00FE : LATIN SMALL LETTER THORN +FF = U+00FF : LATIN SMALL LETTER Y WITH DIAERESIS + * + */ +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php new file mode 100644 index 000000000..dcf9c4de9 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php @@ -0,0 +1,22 @@ + diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php new file mode 100644 index 000000000..275142bf8 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php @@ -0,0 +1,132 @@ +> (8*$i)).$out; + $mask = $mask << 8; + } + return $out; + } + + static function getRightRepresentation($type, $value){ + if($type >= 100 && $type < 200){ + return $value; + }else{ + return self::toHex($value); + } + } + + static function toHex($value){ + $out = ""; + for($i = 0, $len = strlen($value); $i < $len; $i++){ + if($i > 0) $out .= " "; + $hex = dechex(ord($value[$i])); + if(strlen($hex) < 2) $hex = "0".$hex; + $out .= $hex; + } + return $out; + } + + + static private $types = array( + 1 => "drm server id", + 2 => "drm commerce id", + 3 => "drm ebookbase book id", + 100 => "author", + 101 => "publisher", + 102 => "imprint", + 103 => "description", + 104 => "isbn", + 105 => "subject", + 106 => "publishingdate", + 107 => "review", + 108 => "contributor", + 109 => "rights", + 110 => "subjectcode", + 111 => "type", + 112 => "source", + 113 => "asin", + 114 => "versionnumber", + 115 => "sample", + 116 => "startreading", + 118 => "retail price", + 119 => "retail price currency", + 201 => "coveroffset", + 202 => "thumboffset", + 203 => "hasfakecover", + 204 => "Creator Software", + 205 => "Creator Major Version", + 206 => "Creator Minor Version", + 207 => "Creator Build Number", + 208 => "watermark", + 209 => "tamper proof keys", + 300 => "fontsignature", + 401 => "clippinglimit", + 402 => "publisherlimit", + 403 => "403", + 404 => "ttsflag", + 501 => "cdetype", + 502 => "lastupdatetime", + 503 => "updatedtitle" + ); + static private $flippedTypes = array( + "drm server id" => 1, + "drm commerce id" => 2, + "drm ebookbase book id" => 3, + "author" => 100, + "publisher" => 101, + "imprint" => 102, + "description" => 103, + "isbn" => 104, + "subject" => 105, + "publishingdate" => 106, + "review" => 107, + "contributor" => 108, + "rights" => 109, + "subjectcode" => 110, + "type" => 111, + "source" => 112, + "asin" => 113, + "versionnumber" => 114, + "sample" => 115, + "startreading" => 116, + "retail price" => 118, + "retail price currency" => 119, + "coveroffset" => 201, + "thumboffset" => 202, + "hasfakecover" => 203, + "Creator Software" => 204, + "Creator Major Version" => 205, + "Creator Minor Version" => 206, + "Creator Build Number" => 207, + "watermark" => 208, + "tamper proof keys" => 209, + "fontsignature" => 300, + "clippinglimit" => 401, + "publisherlimit" => 402, + "403" => 403, + "ttsflag" => 404, + "cdetype" => 501, + "lastupdatetime" => 502, + "updatedtitle" => 503 + ); +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php new file mode 100644 index 000000000..05fc7d042 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php @@ -0,0 +1,41 @@ +set($n); + } + + public function get(){ + return $this->data; + } + + public function set($value){ + $this->data = intval($value) & 0xFF; + } + + public function serialize() { + return $this->byteToString($this->data); + } + + public function unserialize($data) { + __construct($this->toInt($data)); + } + + + public function __toString(){ + return "FileByte: {".$this->byteAsString($this->data)."}"; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php new file mode 100644 index 000000000..2284eba29 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php @@ -0,0 +1,40 @@ +set($n); + } + + public function get(){ + return $this->data; + } + + public function set($value){ + $this->data = intval($value); + } + + public function serialize() { + return $this->intToString($this->data); + } + + public function unserialize($data) { + __construct($this->toInt($data)); + } + + public function __toString(){ + return "FileDate: {".(date("r", $this->data-94694400))."}"; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php new file mode 100644 index 000000000..552d04a84 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php @@ -0,0 +1,89 @@ +elements = $elements; + } + + public function getByteLength(){ + return $this->getLength(); + } + + public function getLength(){ + $total = 0; + foreach($this->elements as $val){ + $total += $val->getByteLength(); + } + return $total; + } + + public function offsetToEntry($name){ + $pos = 0; + foreach($this->elements as $key=>$value){ + if($name == $key){ + break; + } + $pos += $value->getByteLength(); + } + return $pos; + } + + public function exists($key){ + return isset($this->elements[$key]); + } + /** + * @param string $key + * @return FileObject + */ + public function get($key){ + return $this->elements[$key]; + } + + /** + * @param string $key + * @param FileObject $value + */ + public function set($key, $value){ + $this->elements[$key] = $value; + } + + public function add($key, $value){ + $this->elements[$key] = $value; + } + + public function serialize() { + $result = ""; + foreach($this->elements as $val){ + $result .= $val->serialize(); + } + return $result; + } + + public function unserialize($data) { + //TODO: If reading is needed -> way more complex + } + + public function __toString(){ + $output = "FileElement (".$this->getByteLength()." bytes): {\n"; + foreach($this->elements as $key=>$value){ + $output .= "\t".$key.": ".$value."\n"; + } + $output .= "}"; + return $output; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php new file mode 100644 index 000000000..ebe86f860 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php @@ -0,0 +1,40 @@ +set($n); + } + + public function get(){ + return $this->data; + } + + public function set($value){ + $this->data = intval($value); + } + + public function serialize() { + return $this->intToString($this->data); + } + + public function unserialize($data) { + __construct($this->toInt($data)); + } + + public function __toString(){ + return "FileInt: {".$this->intAsString($this->data)."}"; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php new file mode 100644 index 000000000..0df17df13 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php @@ -0,0 +1,168 @@ +byteLength = $byteLength; + } + + public function getByteLength(){ + if($this->byteLength >= 0){ + return $this->byteLength; + } + return $this->getLength(); + } + + public function getLength(){ + throw new Exception("Sub-class needs to implement this if it doesn't have a fixed length"); + } + + /** + * Convert a string to byte format (maximum 4 bytes) + * @param string $string Input string + * @return int Output integer + */ + public function toInt($string){ + $out = 0; + for($i = 0, $len = min(4, strlen($string)); $i < $len; $i++){ + $out = $out | (ord($string[$i]) << (($len-$i-1)*8)); + } + return $out; + } + + /** + * Convert a byte (stored in an integer) to a string + * @param byte $int + * @return string + */ + public function byteToString($int){ + return $this->toString($int, 1); + } + + /** + * Convert a byte (stored in an integer) to a string + * @param byte $int + * @return string + */ + public function byteAsString($int){ + return $this->asString($int, 1); + } + + /** + * Convert a short (stored in an integer) to a string + * @param short $int + * @return string + */ + public function shortToString($int){ + return $this->toString($int, 2); + } + + /** + * Convert a short (stored in an integer) to a string + * @param short $int + * @return string + */ + public function shortAsString($int){ + return $this->asString($int, 2); + } + + /** + * Convert a tri-byte (stored in an integer) to a string + * @param tri-byte $int + * @return string + */ + public function triToString($int){ + return $this->toString($int, 3); + } + + /** + * Convert a tri-byte (stored in an integer) to a string + * @param tri-byte $int + * @return string + */ + public function triAsString($int){ + return $this->asString($int, 3); + } + + /** + * Convert an integer to a string + * @param int $int + * @return string + */ + public function intToString($int){ + return $this->toString($int, 4); + } + + /** + * Convert an integer to a string + * @param int $int + * @return string + */ + public function intAsString($int){ + return $this->asString($int, 4); + } + + /** + * Convert a number of n bytes to a string + * @param int $int Number that should be converted + * @param int $size Number of bytes to convert + * @return string Output string + */ + private function toString($int, $size){ + $out = ""; + for($i = 0; $i < $size; $i++){ + $out = chr($int & 0xFF).$out; + $int = $int >> 8; + } + return $out; + } + + /** + * Convert a number of n bytes to a string + * @param int $int Number that should be converted + * @param int $size Number of bytes to convert + * @return string Output string + */ + private function asString($int, $size){ + $out = ""; + for($i = 0; $i < $size; $i++){ + if($i > 0) $out = " ".$out; + $byte = dechex($int & 0xFF); + if(strlen($byte) == 1) $byte = "0".$byte; + $out = $byte.$out; + $int = $int >> 8; + } + return $out; + } + + /** + * Get the value + * @return mixed Value to get + */ + abstract public function get(); + + /** + * Set the value + * @return mixed Value to set + */ + abstract public function set($value); + + /** + * Serialize the object + * @return string String representation + */ + abstract public function serialize(); + + /** + * Unserialize the object + * @param string $data String representation + */ + abstract public function unserialize($data); +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php new file mode 100644 index 000000000..494a72e4b --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php @@ -0,0 +1,46 @@ +record = $record; + } + + public function getByteLength(){ + return $this->getLength(); + } + + public function getLength(){ + return $this->record->getLength(); + } + + public function get(){ + return $this->record; + } + + public function set($record){ + $this->record = $record; + } + + public function serialize() { + return $this->record->serialize(); + } + + public function unserialize($data) { + __construct($this->record->unserialize($data)); + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php new file mode 100644 index 000000000..9921ea825 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php @@ -0,0 +1,41 @@ +set($n); + } + + public function get(){ + return $this->data; + } + + public function set($value){ + $this->data = intval($value) & 0xFFFF; + } + + public function serialize() { + return $this->shortToString($this->data); + } + + public function unserialize($data) { + __construct($this->toInt($data)); + } + + + public function __toString(){ + return "FileShort: {".$this->shortAsString($this->data)."}"; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php new file mode 100644 index 000000000..16e906a6c --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php @@ -0,0 +1,83 @@ +forcedLength = -1; + $this->data = ""; + + if($second != null){ + $this->data = $first; + $this->forcedLength = $second; + }else if($first != null){ + if(is_string($first)){ + $this->data = $first; + }else{ + $this->forcedLength = $first; + } + } + } + + public function getByteLength(){ + return $this->getLength(); + } + + public function getLength(){ + if($this->forcedLength >= 0){ + return $this->forcedLength; + } + return strlen($this->data); + } + + public function get(){ + return $this->data; + } + + public function set($value){ + $this->data = $value; + } + + public function serialize() { + $output = $this->data; + $curLength = strlen($output); + + if($this->forcedLength >= 0){ + if($this->forcedLength > $curLength){ + return str_pad($output, $this->forcedLength, "\0", STR_PAD_RIGHT); + }elseif($this->forcedLength == $curLength){ + return $output; + }else{ + return substr($output, 0, $this->forcedLength); + } + } + return $output; + } + + public function unserialize($data) { + __construct($data); + } + + public function __toString(){ + $out = "FileString"; + if($this->forcedLength >= 0){ + $out .= " ".$this->forcedLength; + } + $out .= ": {\"".str_replace(array(" ", "\0"), " ", $this->serialize())."\"}"; + return $out; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php new file mode 100644 index 000000000..6cacc0b00 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php @@ -0,0 +1,41 @@ +set($n); + } + + public function get(){ + return $this->data; + } + + public function set($value){ + $this->data = intval($value) & 0xFFFFFF; + } + + public function serialize() { + return $this->triToString($this->data); + } + + public function unserialize($data) { + __construct($this->toInt($data)); + } + + + public function __toString(){ + return "FileTri: {".$this->triAsString($this->data)."}"; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php new file mode 100644 index 000000000..9e5852e34 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php @@ -0,0 +1,171 @@ + 'val1', 'var2' => 'val2') */ + $postdata = array(), /* HTTP POST Data ie. array('var1' => 'val1', 'var2' => 'val2') */ + $cookie = array(), /* HTTP Cookie Data ie. array('var1' => 'val1', 'var2' => 'val2') */ + $custom_headers = array(), /* Custom HTTP headers ie. array('Referer: http://localhost/ */ + $timeout = 1000, /* Socket timeout in milliseconds */ + $req_hdr = false, /* Include HTTP request headers */ + $res_hdr = false, /* Include HTTP response headers */ + $depth = 4 /* Depth of the iteration left (to avoid redirection loops) */ + ) + { + if(self::$cache){ + $cacheFile = "cache/".$ip."/".str_replace("/", "...", $uri); + + if(is_file($cacheFile)){ + $data = file_get_contents($cacheFile); + + return self::resolveTruncated($data); + } + } + $ret = ''; + $verb = strtoupper($verb); + $cookie_str = ''; + $getdata_str = count($getdata) ? '?' : ''; + $postdata_str = ''; + + foreach ($getdata as $k => $v) + $getdata_str .= urlencode($k) .'='. urlencode($v); + + foreach ($postdata as $k => $v) + $postdata_str .= urlencode($k) .'='. urlencode($v) .'&'; + + foreach ($cookie as $k => $v) + $cookie_str .= urlencode($k) .'='. urlencode($v) .'; '; + + $crlf = "\r\n"; + $req = $verb .' '. $uri . $getdata_str .' HTTP/1.1' . $crlf; + $req .= 'Host: '. $ip . $crlf; + $req .= 'User-Agent: Mozilla/5.0 Firefox/3.6.12' . $crlf; + $req .= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' . $crlf; + $req .= 'Accept-Language: en-us,en;q=0.5' . $crlf; + $req .= 'Accept-Encoding: deflate' . $crlf; + $req .= 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' . $crlf; + + + foreach ($custom_headers as $k => $v) + $req .= $k .': '. $v . $crlf; + + if (!empty($cookie_str)) + $req .= 'Cookie: '. substr($cookie_str, 0, -2) . $crlf; + + if ($verb == 'POST' && !empty($postdata_str)) + { + $postdata_str = substr($postdata_str, 0, -1); + $req .= 'Content-Type: application/x-www-form-urlencoded' . $crlf; + $req .= 'Content-Length: '. strlen($postdata_str) . $crlf . $crlf; + $req .= $postdata_str; + } + else $req .= $crlf; + + if ($req_hdr) + $ret .= $req; + + if (($fp = @fsockopen($ip, $port, $errno, $errstr)) == false) + return "Error $errno: $errstr\n"; + + stream_set_timeout($fp, 0, $timeout * 1000); + + fputs($fp, $req); + $ret .= stream_get_contents($fp); + fclose($fp); + + $headerSplit = strpos($ret, "\r\n\r\n"); + $header = substr($ret, 0, $headerSplit); + + $redirectURL = self::CheckForRedirect($header); + + if($redirectURL !== false){ + if($depth > 0){ + $url_parts = parse_url($redirectURL); + $url_parts["port"] = isset($url_parts["port"]) ? $url_parts["port"] : 80; + $url_parts["path"] = isset($url_parts["path"]) ? $url_parts["path"] : "/"; + + return self::FullRequest($verb, $url_parts["host"], $url_parts["port"], $url_parts["path"], $getdata, $postdata, $cookie, $custom_headers, $timeout, $req_hdr, $res_hdr, $depth-1); + }else{ + return "Redirect loop, stopping..."; + } + } + + $truncated = false; + $headerLines = explode("\r\n", $header); + foreach($headerLines as $line){ + list($name, $value) = explode(":", $line); + $name = trim($name); + $value = trim($value); + + if(strtolower($name) == "transfer-encoding" && strtolower($value) == "chunked"){ //TODO: Put right values! + $truncated = true; + } + } + + if (!$res_hdr) + $ret = substr($ret, $headerSplit + 4); + + if($truncated){ + $ret = self::resolveTruncated($ret); + } + if(self::$cache){ + if(!is_dir("cache")){ + mkdir("cache"); + } + if(!is_dir("cache/".$ip)){ + mkdir("cache/".$ip); + } + if(!is_file("cache/".$ip."/".str_replace("/", "...", $uri))){ + $h = fopen("cache/".$ip."/".str_replace("/", "...", $uri), "w"); + fwrite($h, $ret); + fclose($h); + } + } + + return $ret; + } + + private static function resolveTruncated($data){ + $pos = 0; + $end = strlen($data); + $out = ""; + + while($pos < $end){ + $endVal = strpos($data, "\r\n", $pos); + $value = hexdec(substr($data, $pos, $endVal-$pos)); + $out .= substr($data, $endVal+2, $value); + $pos = $endVal+2+$value; + } + + return $out; + } + + private static function CheckForRedirect($header){ + $firstLine = substr($header, 0, strpos($header, "\r\n")); + list($httpVersion, $statusCode, $message) = explode(" ", $firstLine); + + if(substr($statusCode, 0, 1) == "3"){ + $part = substr($header, strpos(strtolower($header), "location: ")+strlen("location: ")); + $location = trim(substr($part, 0, strpos($part, "\r\n"))); + + if(strlen($location) > 0){ + return $location; + } + } + return false; + } +} +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php new file mode 100644 index 000000000..f620fc1fb --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php @@ -0,0 +1,28 @@ + diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php new file mode 100644 index 000000000..9532bbf1b --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php @@ -0,0 +1,205 @@ +setInternetSource($url); //Load URL, the result will be cleaned using a Readability port + * $mobi->setFileSource($file); //Load a local file without any extra changes + * $mobi->setData($data); //Load data + * + * //If you want, you can set some optional settings + * $options = array( + * "title"=>"Insert title here", + * "author"=>"Author" + * ); + * $mobi->setOptions($options); + * + * //Then there are two ways to output it: + * $mobi->save($file); //Save the file locally + * $mobi->download($name); //Let the client download the file, make sure the page + * //that calls it doesn't output anything, otherwise it might + * //conflict with the download. $name contains the file name, + * //usually something like "title.mobi" (where the title should + * //be cleaned so as not to contain illegal characters). + * + * + * @author Sander Kromwijk + */ +class MOBI { + private $source = false; + private $images = array(); + private $optional = array(); + private $imgCounter = 0; + private $debug = false; + private $prc = false; + + public function __construct(){ + + } + + public function getTitle(){ + if(isset($this->optional["title"])){ + return $this->optional["title"]; + } + return false; + } + + /** + * Set a content provider as source + * @param ContentProvider $content Content Provider to use + */ + public function setContentProvider($content){ + $this->setOptions($content->getMetaData()); + $this->images = $content->getImages(); + $this->setData($content->getTextData()); + } + + /** + * Set a local file as source + * @param string $file Path to the file + */ + public function setFileSource($file){ + $this->setData(file_get_contents($file)); + } + + /** + * Set the data to use + * @param string $data Data to put in the file + */ + public function setData($data){ + //$data = utf8_encode($data); + $data = CharacterEntities::convert($data); + //$data = utf8_decode($data); + //$this->source = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $data); + $this->source = $data; + $this->prc = false; + } + + /** + * Set the images to use + * @param array $data Data to put in the file + */ + public function setImages($data){ + $this->images = $data; + $this->prc = false; + } + + /** + * Set options, usually for things like titles, authors, etc... + * @param array $options Options to set + */ + public function setOptions($options){ + $this->optional = $options; + $this->prc = false; + } + + /** + * Prepare the prc file + * @return Prc The file that can be used to be saved/downloaded + */ + private function preparePRC(){ + if($this->source === false){ + throw new Exception("No data set"); + } + if($this->prc !== false) return $this->prc; + + $data = $this->source; + $len = strlen($data); + + $settings = new Settings($this->optional); + $rec = new RecordFactory($settings); + $dataRecords = $rec->createRecords($data); + $nRecords = sizeof($dataRecords); + $mobiHeader = new PalmRecord($settings, $dataRecords, $nRecords, $len, sizeof($this->images)); + array_unshift($dataRecords, $mobiHeader); + $dataRecords = array_merge($dataRecords, $this->images); + $mobiFooter1 = new PFLISRecord($len); + $mobiFooter2 = new PFCISRecord($len); + $mobiFooter3 = new PEOFRecord($len); + $dataRecords[] = $mobiFooter1; + $dataRecords[] = $mobiFooter2; + $dataRecords[] = $mobiFooter3; + /*$dataRecords = array_merge($dataRecords, $mobiFooter); + *$dataRecords[] = $rec->createFLISRecord();* + $dataRecords[] = $rec->createFCISRecord($len); + $dataRecords[] = $rec->createEOFRecord();*/ + $this->prc = new Prc($settings, $dataRecords); + return $this->prc; + } + + /** + * Save the file locally + * @param string $filename Path to save the file + */ + public function save($filename){ + $prc = $this->preparePRC(); + $prc->save($filename); + } + + /** + * Let the client download the file. Warning! No data should be + * outputted before or after. + * @param string $name Name used for download, usually "title.mobi" + */ + public function download($name){ + $prc = $this->preparePRC(); + $data = $prc->serialize(); + $length = strlen($data); + + if($this->debug) return; //In debug mode, don't start the download +/* + header("Content-Type: application/x-mobipocket-ebook"); + header("Content-Disposition: attachment; filename=\"".$name."\""); + header("Content-Transfer-Encoding: binary"); + header("Accept-Ranges: bytes"); + header("Cache-control: private"); + header('Pragma: private'); + header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); + header("Content-Length: ".$length); + echo $data;*/ + + + $hh = fopen("D:\hakuna.mobi", "w"); + fwrite($hh, $data); + fclose($hh); + //Finished! + } + +} +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php new file mode 100644 index 000000000..e97928164 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php @@ -0,0 +1,136 @@ +".$title."

      +Dump all characters from a font (font_dump.php) +

      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%0AWVw^;KoOGfEWx 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%0Dv?RL;Zl*g@EiBaj|Wq}nqN`fDzm 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 z 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 Bt`q}U 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�2=t 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%0A*#8>)?U@y0_Um=;n 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Ⓢ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%0D|j3778;e!N#6 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⪻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 z zF=z~9l#5?01`bH)I3WjCX6E%dpk3(z3f=dU@u31}(UJ;2VraA$gq7*|$I+$krgbaoV#XQfAM5 zJAjK{_(^Y&q|%-Szx>3TG8W>}^_N`BWe+l9$mEw?e{IusD#hykgqqL8U(v(ar)D_z z#FD<-9vCjHL4DM4TW|uGJ$zfX!xl`W-m!_uSMVa~R=oP6m1&9Q7cBhC>KD3ojec( z;c?N5G)z=KMXFd52!5{ju=ZaTYSIB=@WIv|55&zyz>vo+|L5{bZBX6-JpUici@G%H z0DYA7H{NHXF7$A!3)I7DMpJol`TU7Dr3`&NHl zF?~jdP4mR{ZN?R3==Pp;O>WA)?BtWFMfPSvG~9ylZYVQafz!{T_J2KDT3B{^QSB!O zIu7n$+?%E1o{P=9%c@7mwJTr6tc&`-{77A4_q2-YcehlV@*`bF`7&tNq;HmkBcSP1 zDkPU?)u$>&zI7`W_C+@P<;cl-$(wj;rb6fAA5&k@-$JhjGDGJ7y zQKyvu)?cfk^u}5ZVtw#CA-%a)bBev}U#mfWbFJnSdy}u#OxJoU&v5vsr9mA2W4v6` zF>iTDW=Q`Lrw8+)(sYAP9sWP`@W8bo4*z2#ybXu1&#BRP6tf-Z|L~2uv?%xm>k9ca z@3GXY3?_(fs8Xk)Z(MSb*@Y_sX|@~{tD9TF7MgUfch-P#d)G;2gZg!D)3tf~lJ@<2 z<4RSrbm*fq*Z%De?NiJpidFY7UN!uw34QcY?}pi%@&~)Y& zUxt(wu+||*_S36iR=>!E`?cC-Lnn6AY8Z1@-}YiouK_c6^m^bcd794Vf)+Wib#5Fp zl0`l`YR;SoIy)K{nY>^-fs@ah`D|S51!FsJAMi984Xvu#oZWYfqPbCdotZ~GfILwF zT7!0vndGv;eV@{E@@WxcZd6{UQ=*rBl@=wB5r2g&Pe*_#;9HrD`$C-p=*r~6sY@<( zo6%9UkV95Aeq(nNv=jN*#$T?YjEWK`%xIwA+`hKdhza3Us`S{AScekr9@{NfYv_d$ig!pv{os)vNn;i!AC^n$@KJc-#dI zd}rl1fG!x^$No#c5Dt+Gb}L zHOV)~$VewTk_Nxjs$*{TF(SnkNz6$DH6*Ki4MexE#7^A43RnXX4?+jG(RHoZ3G2DA z?IF<1F+T)dD||tHHO(LC;e6i6ACCDWz~}Q=BF#-={tEKI=dUory>X8$RkMufHYu}8myYPwJnPYoZQ8zddM1l++A9AJ zdzaxIo8+?(vYTz)aYz5$>VlMZy(03SesytIK?2|Tx(4>BH79@bbeA&8p)Q57F&4f5 z1-jTQa&aR2v@MAPx!%G+!Y94#iHyeC5ixCVL&oSo3i~yWh-{wMH+SIY|6sVGA*c7w z2cN$0@khj0)CqQHVXH+>OIi{OOK|t>&?2+2d9(E7%y}z9r*`Y-9x`}DNOt)CuCIUa zSz*cK4zp)8sb*a>vn!{DyIOQfPHW$<8+ZoV^)(pIGwRVv!|N+YmPlP@Kprg@5tY=M zaHQE>FhUX8U{}*|chizlbx6gGibuP(cpeu~(pu4@_zc;}CTI079dh@$rqz8$@U

      ".$contents.""; + } + $pos = 0; + + if(sizeof($this->toc) > 0){ + $lastToc = $this->toc[sizeof($this->toc)-1]; + $lastFile = $this->files[sizeof($this->files)-1]; + $pos = $lastToc["pos"] + strlen($lastFile) + 1; + } + + $this->files[] = $contents; + $this->toc[] = array("title"=>$title, "pos"=>$pos); + } + + /** + * Add an image to the file + * @param string $imageContents Data string containing the binary data of the image + * @return int The reference of the image + */ + public function addImage($imageContents){ + $this->images[] = $imageContents; + return sizeof($this->images)-1; + } + + /** + * Add an image to the file + * @param string $url Url to the image + * @return int The reference of the image, false if the image couldn't be downloaded + */ + public function addImageFromUrl($url){ + $image = ImageHandler::DownloadImage($url); + + if($image === false) return false; + return $this->addImage($image); + } + + /** + * Set the metadata + * @param string $key Key + * @param string $value Value + */ + public function setMetadata($key, $value){ + $this->metadata[$key] = $value; + } + + /** + * Get the text data to be integrated in the MOBI file + * @return string + */ + public function getTextData(){ + $data = implode("\n", $this->files); + $begin = ""; + $beforeTOC = $begin.$data; + + $tocPos = strlen($beforeTOC); + + $toc = $this->generateTOC(strlen($begin)); + + $customBegin = ""; + $data = $customBegin.$data.$toc.""; + return $data; + } + + public function forceLength($n, $l){ + $str = $n.""; + $cur = strlen($str); + while($cur < $l){ + $str = "0".$str; + $cur++; + } + return $str; + } + + public function generateTOC($base = 0){ + $toc = "

      Contents

      "; + $toc .= "
      "; + for($i = 0, $len = sizeof($this->toc); $i < $len; $i++){ + $entry = $this->toc[$i]; + $position = $entry["pos"]+$base; + $toc .= ""; + } + $toc .= "
      ".($i+1).".".$entry["title"]."
      "; + + return $toc; + } + /** + * Get the images (an array containing the jpeg data). Array entry 0 will + * correspond to image record 0. + * @return array + */ + public function getImages(){ + return $this->images; + } + + /** + * Get the metadata in the form of a hashtable (for example, title or author). + * @return array + */ + public function getMetaData(){ + return $this->metadata; + } + +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php new file mode 100644 index 000000000..ec3182fed --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php @@ -0,0 +1,116 @@ +init(); + if(!isset($this->metadata["title"])){ + $this->metadata["title"] = CharacterEntities::convert(strip_tags($r->getTitle()->innerHTML)); + } + if(!isset($this->metadata["author"])){ + $parts = parse_url($url); + $this->metadata["author"] = $parts["host"]; + } + + $article = $r->getContent()->innerHTML; + if(substr($article, 0, 5) == ""; + }else{ + $article = "".$article.""; + } + $doc = new DOMDocument(); + @$doc->loadHTML($article) or die($article); + $doc->normalizeDocument(); + + $this->images = $this->handleImages($doc, $url); + $this->text = $doc->saveHTML(); + } + + /** + * Get the text data to be integrated in the MOBI file + * @return string + */ + public function getTextData(){ + return $this->text; + } + /** + * Get the images (an array containing the jpeg data). Array entry 0 will + * correspond to image record 0. + * @return array + */ + public function getImages(){ + return $this->images; + } + /** + * Get the metadata in the form of a hashtable (for example, title or author). + * @return array + */ + public function getMetaData(){ + return $this->metadata; + } + /** + * + * @param DOMElement $dom + * @return array + */ + private function handleImages($dom, $url){ + $images = array(); + + $parts = parse_url($url); + + $savedImages = array(); + + $imgElements = $dom->getElementsByTagName('img'); + foreach($imgElements as $img) { + $src = $img->getAttribute("src"); + + $is_root = false; + if(substr($src, 0, 1) == "/"){ + $is_root = true; + } + + $parsed = parse_url($src); + + if(!isset($parsed["host"])){ + if($is_root){ + $src = http_build_url($url, $parsed, HTTP_URL_REPLACE); + }else{ + $src = http_build_url($url, $parsed, HTTP_URL_JOIN_PATH); + } + } + $img->setAttribute("src", ""); + if(isset($savedImages[$src])){ + $img->setAttribute("recindex", $savedImages[$src]); + }else{ + $image = ImageHandler::DownloadImage($src); + + if($image !== false){ + $images[$this->imgCounter] = new FileRecord(new Record($image)); + + $img->setAttribute("recindex", $this->imgCounter); + $savedImages[$src] = $this->imgCounter; + $this->imgCounter++; + } + } + } + + return $images; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php new file mode 100644 index 000000000..a2b0fee87 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php @@ -0,0 +1,49 @@ +elements = new FileElement(array( + + "offset44"=>new FileInt(0xe98e0d0a) + )); + } + public function getByteLength(){ + return $this->getLength(); + } + + public function getLength(){ + return $this->elements->getByteLength(); + } + + public function get(){ + return $this; + } + + public function set($elements){ + throw new Exception("Unallowed set"); + } + + public function serialize() { + return $this->elements->serialize(); + } + + public function unserialize($data) { + $this->elements->unserialize($data); + } + + public function __toString(){ + $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n"; + $output .= $this->elements; + return $output; + } + +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php new file mode 100644 index 000000000..9e72cc1c5 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php @@ -0,0 +1,59 @@ +elements = new FileElement(array( + "offset0"=>new FileString("FCIS", 4), //FCIS + "offset4"=>new FileInt(0x014), + "offset8"=>new FileInt(0x10), + "offset12"=>new FileInt(0x01), + "offset16"=>new FileInt(), + "offset20"=>new FileInt($leng), + "offset24"=>new FileInt(), + "offset28"=>new FileInt(0x20), + "offset32"=>new FileInt(0x08), + "offset36"=>new FileShort(0x01), + "offset38"=>new FileShort(0x01), + "offset40"=>new FileInt() + )); + } + public function getByteLength(){ + return $this->getLength(); + } + + public function getLength(){ + return $this->elements->getByteLength(); + } + + public function get(){ + return $this; + } + + public function set($elements){ + throw new Exception("Unallowed set"); + } + + public function serialize() { + return $this->elements->serialize(); + } + + public function unserialize($data) { + $this->elements->unserialize($data); + } + + public function __toString(){ + $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n"; + $output .= $this->elements; + return $output; + } + +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php new file mode 100644 index 000000000..dbd8ecf5a --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php @@ -0,0 +1,58 @@ +elements = new FileElement(array( + "offsetL0"=>new FileString("FLIS", 4), //FLIS + "offsetL4"=>new FileInt(0x08), + "offsetL8"=>new FileShort(0x41), + "offsetL10"=>new FileString(6), + "offsetL16"=>new FileInt(0xFFFFFFFF), + "offsetL20"=>new FileShort(0x01), + "offsetL22"=>new FileShort(0x03), + "offsetL24"=>new FileInt(0x03), + "offsetL28"=>new FileInt(0x01), + "offsetL32"=>new FileInt(0xFFFFFFFF) + + )); + } + public function getByteLength(){ + return $this->getLength(); + } + + public function getLength(){ + return $this->elements->getByteLength(); + } + + public function get(){ + return $this; + } + + public function set($elements){ + throw new Exception("Unallowed set"); + } + + public function serialize() { + return $this->elements->serialize(); + } + + public function unserialize($data) { + $this->elements->unserialize($data); + } + + public function __toString(){ + $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n"; + $output .= $this->elements; + return $output; + } + +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php new file mode 100644 index 000000000..29dc978ad --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php @@ -0,0 +1,154 @@ +elements = new FileElement(array( + "compression"=>new FileShort(), + "unused"=>new FileShort(), + "textLength"=>new FileInt(), + "recordCount"=>new FileShort(), + "recordSize"=>new FileShort(), + "encryptionType"=>new FileShort(), + "unused2"=>new FileShort(), + //MOBI Header + "mobiIdentifier"=>new FileString("MOBI", 4), + "mobiHeaderLength"=>new FileInt(), + "mobiType"=>new FileInt(), + "textEncoding"=>new FileInt(), + "uniqueID"=>new FileInt(), + "fileVersion"=>new FileInt(), + "reserved"=>new FileString(40), + "firstNonBookIndex"=>new FileInt(), + "fullNameOffset"=>new FileInt(), + "fullNameLength"=>new FileInt(), + "locale"=>new FileInt(), + "inputLanguage"=>new FileInt(), + "outputLanguage"=>new FileInt(), + "minimumVersion"=>new FileInt(), + "firstImageIndex"=>new FileInt(), + "huffmanRecordOffset"=>new FileInt(), + "huffmanRecordCount"=>new FileInt(), + "unused3"=>new FileString(8), + "exthFlags"=>new FileInt(0x50), + "unknown"=>new FileString(32), + "drmOffset"=>new FileInt(0xFFFFFFFF), + "drmCount"=>new FileInt(0xFFFFFFFF), + "drmSize"=>new FileInt(), + "drmFlags"=>new FileInt(), + "mobiFiller"=>new FileString(12), + "offset192"=>new FileShort(0x01), + "offset194"=>new FileShort(), + "offset196"=>new FileInt(0x01), + "offset200"=>new FileInt(), + "offset204"=>new FileInt(0x01), + "offset208"=>new FileInt(), + "offset212"=>new FileInt(0x01), + "offset216"=>new FileString(8), + "offset224"=>new FileInt(0xFFFFFFFF), + "offset228"=>new FileInt(), + "offset232"=>new FileString(8), + "offset240"=>new FileInt(0x01), + "offset244"=>new FileInt(0xFFFFFFFF), + //EXTH Header + "exthIdentifier"=>new FileString("EXTH", 4), + "exthHeaderLength"=>new FileInt(), + "exthRecordCount"=>new FileInt(), + "exthRecords"=>new FileElement(), + "exthPadding"=>new FileString(),//added the 2 extra pad bytes that comes before name/title + //"fullNamePadding"=>new FileString(100), + "fullName"=>new FileString() + )); + + //Set values from the info block + foreach($settings->values as $name => $val){ + //echo $name.", "; + if($this->elements->exists($name)){ + $this->elements->get($name)->set($settings->get($name)); + } + } + + $els = $settings->values; + + $exthElems = new FileElement(); + $i = 0; + $l = 0; + foreach($els as $name=>$val){ + $type = EXTHHelper::textToType($name); + if($type !== false){ + $type = new FileInt($type); + $length = new FileInt(8+strlen($val)); + $data = new FileString($val); + $l += 8+strlen($val); + $exthElems->add("type".$i, $type); + $exthElems->add("length".$i, $length); + $exthElems->add("data".$i, $data); + $i++; + } + } + + if($images > 0){ + $this->elements->get("firstImageIndex")->set($textRecords+2); + } + $this->elements->get("firstNonBookIndex")->set($textRecords+2+$images); + $this->elements->get("reserved")->set(str_pad("", 40, chr(255), STR_PAD_RIGHT)); + $this->elements->get("exthRecordCount")->set($i); + $this->elements->set("exthRecords", $exthElems); + $pad = $l%4; + $pad = (4-$pad)%4; + $this->elements->get("exthPadding")->set(str_pad("", $pad+2, "\0", STR_PAD_RIGHT)); + $this->elements->get("exthHeaderLength")->set(12+$l+$pad); + + + $this->elements->get("recordCount")->set($textRecords); + + $this->elements->get("fullNameOffset")->set($this->elements->offsetToEntry("fullName"));//need to be checked + $this->elements->get("fullNameLength")->set(strlen($settings->get("title"))); + $this->elements->get("fullName")->set($settings->get("title")); + $this->elements->get("textLength")->set($textLength); + + $this->elements->get("offset194")->set($textRecords+2+$images); + $this->elements->get("offset200")->set($textRecords+4+$images); + $this->elements->get("offset208")->set($textRecords+3+$images); + $this->elements->get("offset232")->set(str_pad("", 8, chr(255), STR_PAD_RIGHT)); + } + + public function getByteLength(){ + return $this->getLength(); + } + + public function getLength(){ + return $this->elements->getByteLength(); + } + + public function get(){ + return $this; + } + + public function set($elements){ + throw new Exception("Unallowed set"); + } + + public function serialize() { + return $this->elements->serialize(); + } + + public function unserialize($data) { + $this->elements->unserialize($data); + } + + public function __toString(){ + $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n"; + $output .= $this->elements; + return $output; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php new file mode 100644 index 000000000..1507e24b9 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php @@ -0,0 +1,97 @@ +new FileString(32), + "attributes"=>new FileShort(), + "version"=>new FileShort(), + "creationTime"=>new FileDate(), + "modificationTime"=>new FileDate(), + "backupTime"=>new FileDate(), + "modificationNumber"=>new FileInt(), + "appInfoID"=>new FileInt(), + "sortInfoID"=>new FileInt(), + "prcType"=>new FileString(4), + "creator"=>new FileString(4), + "uniqueIDSeed"=>new FileInt(), + "nextRecordListID"=>new FileInt(), + "numberRecords"=>new FileShort(), + "recordList"=>new FileElement(), + "filler"=>new FileShort(), + "records"=>new FileElement() + )); + + //Set values from the info block + foreach($this->elements as $name => $val){ + if($settings->exists($name)){ + $this->get($name)->set($settings->get($name)); + } + } + + $this->get("numberRecords")->set(sizeof($records)); + + $i = 0; + foreach($records as $record){ + $offset = new FileInt(); + $attr = new FileByte(); + $uniqueID = new FileTri(2*$i); + + $this->elements["recordList"]->add("Rec".$i, new FileElement(array( + "offset"=>$offset, + "attribute"=>$attr, + "uniqueID"=>$uniqueID + ))); + + $this->elements["records"]->add("Rec".$i, $record); + $i+=1; + } + + $this->updateOffsets($records); + } + + public function getByteLength(){ + throw new Exception("Test"); + } + + public function updateOffsets($records){ + $base = $this->offsetToEntry("records"); + + $i = 0; + + foreach($records as $record){ + $el = $this->elements["recordList"]->get("Rec".$i); + + $local = $this->elements["records"]->offsetToEntry("Rec".$i); + + $el->get("offset")->set($base+$local); + + $i++; + } + } + + public function save($file){ + $handle = fopen($file, "w"); + fwrite($handle, $this->serialize()); + fclose($handle); + } + + public function output(){ + echo $this->serialize(); + } + + public function __toString(){ + $output = "Prc (".$this->getByteLength()." bytes): {\n"; + foreach($this->elements as $key=>$value){ + $output .= "\t".$key.": ".$value."\n"; + } + $output .= "}"; + return $output; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php new file mode 100644 index 000000000..2e9924047 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php @@ -0,0 +1,89 @@ +text = $textData; + $this->metadata = $metadata; + + $this->images = $this->downloadImages($imageLinks); + } + + /** + * Create a Preprocessed article from a json string + * @param string $json JSON data. Should be of the following format: + * {"text": "TEXT", "images: ["imageURL1", "imageURL2"], "metadata": {"key": "value"}} + * + * Note: Any image tags should have the recindex attribute set to the appropriate index (the + * same index as the image in the array) + * @return PreprocessedArticle The generated preprocessed array + */ + static public function CreateFromJson($json){ + $data = json_decode($json); + return new PreprocessedArticle($data["text"], $data["images"], $data["metadata"]); + } + + /** + * Get the text data to be integrated in the MOBI file + * @return string + */ + public function getTextData(){ + return $this->text; + } + /** + * Get the images (an array containing the jpeg data). Array entry 0 will + * correspond to image record 0. + * @return array + */ + public function getImages(){ + return $this->images; + } + /** + * Get the metadata in the form of a hashtable (for example, title or author). + * @return array + */ + public function getMetaData(){ + return $this->metadata; + } + /** + * + * @param DOMElement $dom + * @return array + */ + private function downloadImages($links){ + $images = array(); + foreach($links as $link) { + $imgFile = @imagecreatefromstring(Http::Request($link)); + + if($imgFile === false){ + $imgFile = @imagecreate(1, 1); + $black = @imagecolorallocate($imgFile, 255, 255, 255); + } + if($imgFile !== false){ + @imagefilter($imgFile, IMG_FILTER_GRAYSCALE); + + ob_start(); + @imagejpeg($imgFile); + $image = ob_get_contents(); + ob_end_clean(); + + $images[$this->imgCounter] = new FileRecord(new Record($image)); + imagedestroy($imgFile); + + $this->imgCounter++; + } + } + + return $images; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php new file mode 100644 index 000000000..6319ed570 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php @@ -0,0 +1,16 @@ + diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php new file mode 100644 index 000000000..3cb395823 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php @@ -0,0 +1,96 @@ +data = $data; + if($length >= 0){ + $this->length = $length; + }else{ + $this->length = strlen($data); + } + } + + public function compress($compression_method){ + switch($compression_method){ + case NO_COMPRESSION: + //Finished! + break; + case PALMDOC_COMPRESSION: + throw new Exception("Not implemented yet"); + break; + case HUFF: + throw new Exception("Not implemented yet"); + break; + default: + throw new Exception("Invalid argument"); + } + } + + public function getByteLength(){ + return $this->getLength(); + } + + /** + * Get the length of the record + * @return int Length of the data + */ + public function getLength(){ + return $this->length; + } + + /** + * Get the data contained in the record + * @return string Data contained in the record + */ + public function get(){ + return $this->data; + } + + /** + * Set the data contained in the record + * @param string $value Data contained in the record + */ + public function set($value){ + $this->data = $value; + } + + public function serialize(){ + return $this->data; + } + public function unserialize($data){ + __construct($data); + } + + public function __toString() { + $toShow = $this->data; + if(strlen($this->data) > 103){ + $toShow = substr($this->data, 0, 100)."..."; + } + $out = "Record: {\n"; + $out .= "\t".htmlspecialchars($toShow)."\n"; + $out .= "}"; + return $out; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php new file mode 100644 index 000000000..8bf0c97db --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php @@ -0,0 +1,129 @@ +settings = $settings; + } + + /** + * Create records from a data string + * @param string $data + * @return array(Record) + */ + public function createRecords($data){ + $records = array(); + $size = $this->settings->get("recordSize"); + $compression = $this->settings->get("compression"); + + $dataEntries = mb_str_split($data, $size); + + for($i = 0, $len = sizeof($dataEntries); $i < $len; $i++){ + $records[$i] = new Record($dataEntries[$i]); + $records[$i]->compress($compression); + } + + return $records; + } + + public function createEOFRecord(){ + return new Record(0xe98e0d0a); + } + + public function createFCISRecord($textLength){ + $r = "FCIS"; + $r .= $this->asString(20, 4); + $r .= $this->asString(16, 4); + $r .= $this->asString(1, 4); + $r .= $this->asString(0, 4); + $r .= $this->asString($textLength, 4); + $r .= $this->asString(0, 4); + $r .= $this->asString(32, 4); + $r .= $this->asString(8, 4); + $r .= $this->asString(1, 2); + $r .= $this->asString(1, 2); + $r .= $this->asString(0, 4); + return new Record($r); + } + + public function createFLISRecord(){ + + $this->elements = new FileElement(array( + "offsetL0"=>new FileString("FLIS", 4), //FLIS + "offsetL4"=>new FileInt(0x08), + "offsetL8"=>new FileShort(0x41), + "offsetL10"=>new FileTri(), + "offsetL16"=>new FileInt(0xFFFFFFFF), + "offsetL20"=>new FileShort(0x01), + "offsetL22"=>new FileShort(0x03), + "offsetL24"=>new FileInt(0x03), + "offsetL28"=>new FileInt(0x01), + "offsetL32"=>new FileInt(0xFFFFFFFF) + )); + + /*$r = "FLIS"; + $r .= $this->asString(8, 4); + $r .= $this->asString(65, 2); + $r .= $this->asString(0, 2); + $r .= $this->asString(0, 4); + $r .= $this->asString(-1, 4); + $r .= $this->asString(1, 2); + $r .= $this->asString(3, 2); + $r .= $this->asString(3, 4); + $r .= $this->asString(1, 4); + $r .= $this->asString(-1, 4); + return new Record($r);*/ + } + + private function asString($int, $size){ + $out = ""; + for($i = 0; $i < $size; $i++){ + if($i > 0) $out = " ".$out; + $byte = dechex($int & 0xFF); + if(strlen($byte) == 1) $byte = "0".$byte; + $out = $byte.$out; + $int = $int >> 8; + } + return $out; + } + + public function __toString() { + $out = "Record Factory: {\n"; + $out .= "\tRecord Size: ".$this->settings->get("recordSize")."\n"; + $out .= "\tCompression: ".$this->settings->get("compression")."\n"; + $out .= "}"; + return $out; + } +} +function mb_str_split($string, $split_length = 1){ + mb_internal_encoding('UTF-8'); + mb_regex_encoding('UTF-8'); + + $split_length = ($split_length <= 0) ? 1 : $split_length; + + $mb_strlen = mb_strlen($string, 'utf-8'); + + $array = array(); + + for($i = 0; $i < $mb_strlen; $i += $split_length){ + $array[] = mb_substr($string, $i, $split_length); + } + + return $array; +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php new file mode 100644 index 000000000..6bde0ba9a --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php @@ -0,0 +1,95 @@ +values = array( + "attributes"=>0, + "version"=>0, + "creationTime"=>time()+94694400, + "modificationTime"=>time()+94694400, + "backupTime"=>0, + "modificationNumber"=>0, + "appInfoID"=>0, + "sortInfoID"=>0, + "prcType"=>"BOOK", + "creator"=>"MOBI", + "uniqueIDSeed"=>rand(), + "nextRecordListID"=>0, + "recordAttributes"=>0, + "compression"=>NO_COMPRESSION, + "recordSize"=>RECORD_SIZE, + "encryptionType"=>NO_ENCRYPTION, + "mobiIdentifier"=>"MOBI", + "mobiHeaderLength"=>0xe8, + "mobiType"=>MOBIPOCKET_BOOK, + "textEncoding"=>UTF8, + "uniqueID"=>rand(), + "fileVersion"=>6, + "locale"=>0x09, + "inputLanguage"=>0, + "outputLanguage"=>0, + "minimumVersion"=>6, + "huffmanRecordOffset"=>0, + "huffmanRecordCount"=>0, + "exthFlags"=>0x50, + "drmOffset"=>0xFFFFFFFF, + "drmCount"=>0xFFFFFFFF, + "drmSize"=>0, + "drmFlags"=>0, + "extraDataFlags"=>0, + "exthIdentifier"=>"EXTH", + "title"=>"Unknown title", + "author"=>"Unknown author", + "subject"=>"Unknown subject" + ); + + foreach($additionalSettings as $key=>$value){ + $this->values[$key] = $value; + } + } + + /** + * Get a value from the settings + * @param string $key Key of the setting + * @return mixed The value of the setting + */ + public function get($key){ + return $this->values[$key]; + } + + /** + * Checks if a value is set + * @param string $key Key of the setting + * @return bool True if the value exists + */ + public function exists($key){ + return isset($this->values[$key]); + } + + public function __toString() { + $out = "Settings: {\n"; + foreach($this->values as $key=>$value){ + $out .= "\t".$key.": ".$value."\n"; + } + $out .= "}"; + return $out; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php new file mode 100644 index 000000000..bd3631183 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php @@ -0,0 +1,11 @@ +id = intval(substr($ending, 0, strpos($ending, "/"))); + + for($i = 1; $i <= max(1, $this->chapterCount); $i++){ + $this->addChapter($i); + } + } + + private function addChapter($n){ + $doc = new DOMDocument(); + $file = Http::Request(self::$prefix.$this->id."/".$n."/"); + @$doc->loadHTML($file) or die($file); + + if(!$this->downloadedMetadata){ + $this->loadMetadata($doc); + $this->downloadedMetadata = true; + } + if($this->chapterCount < 0){ + $this->chapterCount = $this->getNumberChapters($doc); + + if($this->chapterCount > 4){ + die("Too many files to download, don't use php for this!"); + } + } + + $textEl = $doc->getElementById("storytext"); + if($textEl == null) die("Error: ".$doc->saveHTML()); + $horizontalRulebars = $doc->getElementsByTagName('hr'); + /** + * @var DOMNode + */ + $hr; + foreach($horizontalRulebars as $hr) { + $hr->setAttribute("size", null); + $hr->setAttribute("noshade", null); + } + $text = $this->innerHtml($textEl); + + $title = ""; + $selects = $doc->getElementsByTagName('select'); + foreach($selects as $select) { + if($select->hasAttribute("name") && $select->getAttribute("name") == "chapter"){ + $options = $select->getElementsByTagName("option"); + + $test = $n.". "; + foreach($options as $option){ + $val = $option->nodeValue; + if(substr($val, 0, strlen($test)) == $test){ + $title = substr($val, strlen($test)); + break; + } + } + break; + } + } + $this->addPage($text, $title); + } + + private function getNumberChapters($doc){ + $selects = $doc->getElementsByTagName('select'); + foreach($selects as $select) { + if($select->hasAttribute("name") && $select->getAttribute("name") == "chapter"){ + $options = $select->getElementsByTagName("option"); + + $count = $options->length; + return $count; + } + } + } + + private function loadMetadata($doc){ + //Author + $links = $doc->getElementsByTagName('a'); + foreach($links as $link) { + if($link == null){ + var_dump($link); + } + if($link->hasAttribute("href") && substr($link->getAttribute("href"), 0, 3) == "/u/"){ + $this->setMetadata("author", $link->nodeValue); + } + } + //Title + /* + $links = $doc->getElementsByTagName('link'); + foreach($links as $link) { + if($link->hasAttribute("rel") && $link->getAttribute("rel") == "canonical"){ + $url = $link->getAttribute("href"); + $title = str_replace("_", " ", substr($url, strrpos($url, "/")+1)); + $this->setMetadata("title", $title); + } + }*/ + + //TODO: Find a more reliable way to extract the title + $title = $doc->getElementsByTagName("b")->item(0)->nodeValue; + $this->setMetadata("title", $title); + } + + private function innerHtml($node){ + $doc = new DOMDocument(); + foreach ($node->childNodes as $child) + $doc->appendChild($doc->importNode($child, true)); + + return $doc->saveHTML(); + } + + public static function Matches($url){ + //TODO: Implement with regex + return strpos($url, self::$prefix) !== false; + } +} +?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php new file mode 100644 index 000000000..b475edb0d --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php @@ -0,0 +1,94 @@ +registerNodeClass('DOMElement', 'JSLikeHTMLElement'); +* $doc->loadHTML('

      Para 1

      Para 2

      '); +* $elem = $doc->getElementsByTagName('div')->item(0); +* +* // print innerHTML +* echo $elem->innerHTML; // prints '

      Para 1

      Para 2

      ' +* echo "\n\n"; +* +* // set innerHTML +* $elem->innerHTML = 'FiveFilters.org'; +* echo $elem->innerHTML; // prints 'FiveFilters.org' +* echo "\n\n"; +* +* // print document (with our changes) +* echo $doc->saveXML(); +* @endcode +* +* @author Keyvan Minoukadeh - http://www.keyvan.net - keyvan@keyvan.net +* @see http://fivefilters.org (the project this was written for) +*/ +class JSLikeHTMLElement extends DOMElement +{ + /** + * Used for setting innerHTML like it's done in JavaScript: + * @code + * $div->innerHTML = '

      Chapter 2

      The story begins...

      '; + * @endcode + */ + public function __set($name, $value) { + if ($name == 'innerHTML') { + // first, empty the element + for ($x=$this->childNodes->length-1; $x>=0; $x--) { + $this->removeChild($this->childNodes->item($x)); + } + // $value holds our new inner HTML + if ($value != '') { + $f = $this->ownerDocument->createDocumentFragment(); + // appendXML() expects well-formed markup (XHTML) + $result = @$f->appendXML($value); // @ to suppress PHP warnings + if ($result) { + if ($f->hasChildNodes()) $this->appendChild($f); + } else { + // $value is probably ill-formed + $f = new DOMDocument(); + $value = mb_convert_encoding($value, 'HTML-ENTITIES', 'UTF-8'); + // Using will generate a warning, but so will bad HTML + // (and by this point, bad HTML is what we've got). + // We use it (and suppress the warning) because an HTML fragment will + // be wrapped around tags which we don't really want to keep. + // Note: despite the warning, if loadHTML succeeds it will return true. + $result = @$f->loadHTML(''.$value.''); + if ($result) { + $import = $f->getElementsByTagName('htmlfragment')->item(0); + foreach ($import->childNodes as $child) { + $importedNode = $this->ownerDocument->importNode($child, true); + $this->appendChild($importedNode); + } + } else { + // oh well, we tried, we really did. :( + // this element is now empty + } + } + } + } else { + $trace = debug_backtrace(); + trigger_error('Undefined property via __set(): '.$name.' in '.$trace[0]['file'].' on line '.$trace[0]['line'], E_USER_NOTICE); + } + } + + /** + * Used for getting innerHTML like it's done in JavaScript: + * @code + * $string = $div->innerHTML; + * @endcode + */ + public function __get($name) + { + if ($name == 'innerHTML') { + $inner = ''; + foreach ($this->childNodes as $child) { + $inner .= $this->ownerDocument->saveXML($child); + } + return $inner; + } + + $trace = debug_backtrace(); + trigger_error('Undefined property via __get(): '.$name.' in '.$trace[0]['file'].' on line '.$trace[0]['line'], E_USER_NOTICE); + return null; + } + + public function __toString() + { + return '['.$this->tagName.']'; + } +} +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php new file mode 100644 index 000000000..915542435 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php @@ -0,0 +1,1069 @@ +init(); +echo $r->articleContent->innerHTML; +*/ + +class Readability +{ + public $version = '1.7.1-without-multi-page'; + public $convertLinksToFootnotes = false; + public $revertForcedParagraphElements = true; + public $articleTitle; + public $articleContent; + public $dom; + public $url = null; // optional - URL where HTML was retrieved + public $debug = false; + protected $body = null; // + protected $bodyCache = null; // Cache the body HTML in case we need to re-use it later + protected $flags = 7; // 1 | 2 | 4; // Start with all flags set. + protected $success = false; // indicates whether we were able to extract or not + + /** + * All of the regular expressions in use within readability. + * Defined up here so we don't instantiate them repeatedly in loops. + **/ + public $regexps = array( + 'unlikelyCandidates' => '/combx|comment|community|disqus|extra|foot|header|menu|remark|rss|shoutbox|sidebar|sponsor|ad-break|agegate|pagination|pager|popup|tweet|twitter/i', + 'okMaybeItsACandidate' => '/and|article|body|column|main|shadow/i', + 'positive' => '/article|body|content|entry|hentry|main|page|pagination|post|text|blog|story/i', + 'negative' => '/combx|comment|com-|contact|foot|footer|footnote|masthead|media|meta|outbrain|promo|related|scroll|shoutbox|sidebar|sponsor|shopping|tags|tool|widget/i', + 'divToPElements' => '/<(a|blockquote|dl|div|img|ol|p|pre|table|ul)/i', + 'replaceBrs' => '/(]*>[ \n\r\t]*){2,}/i', + 'replaceFonts' => '/<(\/?)font[^>]*>/i', + // 'trimRe' => '/^\s+|\s+$/g', // PHP has trim() + 'normalize' => '/\s{2,}/', + 'killBreaks' => '/((\s| ?)*){1,}/', + 'video' => '/http:\/\/(www\.)?(youtube|vimeo)\.com/i', + 'skipFootnoteLink' => '/^\s*(\[?[a-z0-9]{1,2}\]?|^|edit|citation needed)\s*$/i' + ); + + /* constants */ + const FLAG_STRIP_UNLIKELYS = 1; + const FLAG_WEIGHT_CLASSES = 2; + const FLAG_CLEAN_CONDITIONALLY = 4; + + /** + * Create instance of Readability + * @param string UTF-8 encoded string + * @param string (optional) URL associated with HTML (used for footnotes) + */ + function __construct($html, $url=null) + { + /* Turn all double br's into p's */ + /* Note, this is pretty costly as far as processing goes. Maybe optimize later. */ + $html = preg_replace($this->regexps['replaceBrs'], '

      ', $html); + $html = preg_replace($this->regexps['replaceFonts'], '<$1span>', $html); + $html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8"); + $this->dom = new DOMDocument(); + $this->dom->preserveWhiteSpace = false; + $this->dom->registerNodeClass('DOMElement', 'JSLikeHTMLElement'); + @$this->dom->loadHTML($html); + $this->url = $url; + } + + /** + * Get article title element + * @return DOMElement + */ + public function getTitle() { + return $this->articleTitle; + } + + /** + * Get article content element + * @return DOMElement + */ + public function getContent() { + return $this->articleContent; + } + + /** + * Runs readability. + * + * Workflow: + * 1. Prep the document by removing script tags, css, etc. + * 2. Build readability's DOM tree. + * 3. Grab the article content from the current dom tree. + * 4. Replace the current DOM tree with the new one. + * 5. Read peacefully. + * + * @return boolean true if we found content, false otherwise + **/ + public function init() + { + $this->removeScripts($this->dom); + + // Assume successful outcome + $this->success = true; + + $bodyElems = $this->dom->getElementsByTagName('body'); + if ($bodyElems->length > 0) { + if ($this->bodyCache == null) { + $this->bodyCache = $bodyElems->item(0)->innerHTML; + } + if ($this->body == null) { + $this->body = $bodyElems->item(0); + } + } + + $this->prepDocument(); + + //die($this->dom->documentElement->parentNode->nodeType); + //$this->setInnerHTML($this->dom->documentElement, $this->getInnerHTML($this->dom->documentElement)); + //die($this->getInnerHTML($this->dom->documentElement)); + + /* Build readability's DOM tree */ + $overlay = $this->dom->createElement('div'); + $innerDiv = $this->dom->createElement('div'); + $articleTitle = $this->getArticleTitle(); + $articleContent = $this->grabArticle(); + + if (!$articleContent) { + $this->success = false; + $articleContent = $this->dom->createElement('div'); + $articleContent->setAttribute('id', 'readability-content'); + $articleContent->innerHTML = '

      Sorry, Readability was unable to parse this page for content.

      '; + } + + $overlay->setAttribute('id', 'readOverlay'); + $innerDiv->setAttribute('id', 'readInner'); + + /* Glue the structure of our document together. */ + $innerDiv->appendChild($articleTitle); + $innerDiv->appendChild($articleContent); + $overlay->appendChild($innerDiv); + + /* Clear the old HTML, insert the new content. */ + $this->body->innerHTML = ''; + $this->body->appendChild($overlay); + //document.body.insertBefore(overlay, document.body.firstChild); + $this->body->removeAttribute('style'); + + $this->postProcessContent($articleContent); + + // Set title and content instance variables + $this->articleTitle = $articleTitle; + $this->articleContent = $articleContent; + + return $this->success; + } + + /** + * Debug + */ + protected function dbg($msg) { + if ($this->debug) echo '* ',$msg, '
      ', "\n"; + } + + /** + * Run any post-process modifications to article content as necessary. + * + * @param DOMElement + * @return void + */ + public function postProcessContent($articleContent) { + if ($this->convertLinksToFootnotes && !preg_match('/wikipedia\.org/', @$this->url)) { + $this->addFootnotes($articleContent); + } + } + + /** + * Get the article title as an H1. + * + * @return DOMElement + */ + protected function getArticleTitle() { + $curTitle = ''; + $origTitle = ''; + + try { + $curTitle = $origTitle = $this->getInnerText($this->dom->getElementsByTagName('title')->item(0)); + } catch(Exception $e) {} + + if (preg_match('/ [\|\-] /', $curTitle)) + { + $curTitle = preg_replace('/(.*)[\|\-] .*/i', '$1', $origTitle); + + if (count(explode(' ', $curTitle)) < 3) { + $curTitle = preg_replace('/[^\|\-]*[\|\-](.*)/i', '$1', $origTitle); + } + } + else if (strpos($curTitle, ': ') !== false) + { + $curTitle = preg_replace('/.*:(.*)/i', '$1', $origTitle); + + if (count(explode(' ', $curTitle)) < 3) { + $curTitle = preg_replace('/[^:]*[:](.*)/i','$1', $origTitle); + } + } + else if(strlen($curTitle) > 150 || strlen($curTitle) < 15) + { + $hOnes = $this->dom->getElementsByTagName('h1'); + if($hOnes->length == 1) + { + $curTitle = $this->getInnerText($hOnes->item(0)); + } + } + + $curTitle = trim($curTitle); + + if (count(explode(' ', $curTitle)) <= 4) { + $curTitle = $origTitle; + } + + $articleTitle = $this->dom->createElement('h1'); + $articleTitle->innerHTML = $curTitle; + + return $articleTitle; + } + + /** + * Prepare the HTML document for readability to scrape it. + * This includes things like stripping javascript, CSS, and handling terrible markup. + * + * @return void + **/ + protected function prepDocument() { + /** + * In some cases a body element can't be found (if the HTML is totally hosed for example) + * so we create a new body node and append it to the document. + */ + if($this->dom->documentElement == null){ + throw new Exception("No document element"); + } + if ($this->body == null) + { + $this->body = $this->dom->createElement('body'); + $this->dom->documentElement->appendChild($this->body); + } + + $this->body->setAttribute('id', 'readabilityBody'); + + /* Remove all style tags in head */ + $styleTags = $this->dom->getElementsByTagName('style'); + for ($i = $styleTags->length-1; $i >= 0; $i--) + { + $styleTags->item($i)->parentNode->removeChild($styleTags->item($i)); + } + + /* Turn all double br's into p's */ + /* Note, this is pretty costly as far as processing goes. Maybe optimize later. */ + //document.body.innerHTML = document.body.innerHTML.replace(readability.regexps.replaceBrs, '

      ').replace(readability.regexps.replaceFonts, '<$1span>'); + // We do this in the constructor for PHP as that's when we have raw HTML - before parsing it into a DOM tree. + // Manipulating innerHTML as it's done in JS is not possible in PHP. + } + + /** + * For easier reading, convert this document to have footnotes at the bottom rather than inline links. + * @see http://www.roughtype.com/archives/2010/05/experiments_in.php + * + * @return void + **/ + public function addFootnotes($articleContent) { + $footnotesWrapper = $this->dom->createElement('div'); + $footnotesWrapper->setAttribute('id', 'readability-footnotes'); + $footnotesWrapper->innerHTML = '

      References

      '; + + $articleFootnotes = $this->dom->createElement('ol'); + $articleFootnotes->setAttribute('id', 'readability-footnotes-list'); + $footnotesWrapper->appendChild($articleFootnotes); + + $articleLinks = $articleContent->getElementsByTagName('a'); + + $linkCount = 0; + for ($i = 0; $i < $articleLinks->length; $i++) + { + $articleLink = $articleLinks->item($i); + $footnoteLink = $articleLink->cloneNode(true); + $refLink = $this->dom->createElement('a'); + $footnote = $this->dom->createElement('li'); + $linkDomain = @parse_url($footnoteLink->getAttribute('href'), PHP_URL_HOST); + if (!$linkDomain && isset($this->url)) $linkDomain = @parse_url($this->url, PHP_URL_HOST); + //linkDomain = footnoteLink.host ? footnoteLink.host : document.location.host, + $linkText = $this->getInnerText($articleLink); + + if ((strpos($articleLink->getAttribute('class'), 'readability-DoNotFootnote') !== false) || preg_match($this->regexps['skipFootnoteLink'], $linkText)) { + continue; + } + + $linkCount++; + + /** Add a superscript reference after the article link */ + $refLink->setAttribute('href', '#readabilityFootnoteLink-' . $linkCount); + $refLink->innerHTML = '[' . $linkCount . ']'; + $refLink->setAttribute('class', 'readability-DoNotFootnote'); + $refLink->setAttribute('style', 'color: inherit;'); + + //TODO: does this work or should we use DOMNode.isSameNode()? + if ($articleLink->parentNode->lastChild == $articleLink) { + $articleLink->parentNode->appendChild($refLink); + } else { + $articleLink->parentNode->insertBefore($refLink, $articleLink->nextSibling); + } + + $articleLink->setAttribute('style', 'color: inherit; text-decoration: none;'); + $articleLink->setAttribute('name', 'readabilityLink-' . $linkCount); + + $footnote->innerHTML = '^ '; + + $footnoteLink->innerHTML = ($footnoteLink->getAttribute('title') != '' ? $footnoteLink->getAttribute('title') : $linkText); + $footnoteLink->setAttribute('name', 'readabilityFootnoteLink-' . $linkCount); + + $footnote->appendChild($footnoteLink); + if ($linkDomain) $footnote->innerHTML = $footnote->innerHTML . ' (' . $linkDomain . ')'; + + $articleFootnotes->appendChild($footnote); + } + + if ($linkCount > 0) { + $articleContent->appendChild($footnotesWrapper); + } + } + + /** + * Reverts P elements with class 'readability-styled' + * to text nodes - which is what they were before. + * + * @param DOMElement + * @return void + */ + function revertReadabilityStyledElements($articleContent) { + $xpath = new DOMXPath($articleContent->ownerDocument); + $elems = $xpath->query('.//p[@class="readability-styled"]', $articleContent); + //$elems = $articleContent->getElementsByTagName('p'); + for ($i = $elems->length-1; $i >= 0; $i--) { + $e = $elems->item($i); + $e->parentNode->replaceChild($articleContent->ownerDocument->createTextNode($e->textContent), $e); + //if ($e->hasAttribute('class') && $e->getAttribute('class') == 'readability-styled') { + // $e->parentNode->replaceChild($this->dom->createTextNode($e->textContent), $e); + //} + } + } + + /** + * Prepare the article node for display. Clean out any inline styles, + * iframes, forms, strip extraneous

      tags, etc. + * + * @param DOMElement + * @return void + */ + function prepArticle($articleContent) { + $this->cleanStyles($articleContent); + $this->killBreaks($articleContent); + if ($this->revertForcedParagraphElements) { + $this->revertReadabilityStyledElements($articleContent); + } + + /* Clean out junk from the article content */ + $this->cleanConditionally($articleContent, 'form'); + $this->clean($articleContent, 'object'); + $this->clean($articleContent, 'h1'); + + /** + * If there is only one h2, they are probably using it + * as a header and not a subheader, so remove it since we already have a header. + ***/ + if ($articleContent->getElementsByTagName('h2')->length == 1) { + $this->clean($articleContent, 'h2'); + } + $this->clean($articleContent, 'iframe'); + + $this->cleanHeaders($articleContent); + + /* Do these last as the previous stuff may have removed junk that will affect these */ + $this->cleanConditionally($articleContent, 'table'); + $this->cleanConditionally($articleContent, 'ul'); + $this->cleanConditionally($articleContent, 'div'); + + /* Remove extra paragraphs */ + $articleParagraphs = $articleContent->getElementsByTagName('p'); + for ($i = $articleParagraphs->length-1; $i >= 0; $i--) + { + $imgCount = $articleParagraphs->item($i)->getElementsByTagName('img')->length; + $embedCount = $articleParagraphs->item($i)->getElementsByTagName('embed')->length; + $objectCount = $articleParagraphs->item($i)->getElementsByTagName('object')->length; + + if ($imgCount === 0 && $embedCount === 0 && $objectCount === 0 && $this->getInnerText($articleParagraphs->item($i), false) == '') + { + $articleParagraphs->item($i)->parentNode->removeChild($articleParagraphs->item($i)); + } + } + + try { + $articleContent->innerHTML = preg_replace('/]*>\s*

      innerHTML); + //articleContent.innerHTML = articleContent.innerHTML.replace(/]*>\s*

      dbg("Cleaning innerHTML of breaks failed. This is an IE strict-block-elements bug. Ignoring.: " . $e); + } + } + + /** + * Initialize a node with the readability object. Also checks the + * className/id for special names to add to its score. + * + * @param Element + * @return void + **/ + protected function initializeNode($node) { + $readability = $this->dom->createAttribute('readability'); + $readability->value = 0; // this is our contentScore + $node->setAttributeNode($readability); + + switch (strtoupper($node->tagName)) { // unsure if strtoupper is needed, but using it just in case + case 'DIV': + $readability->value += 5; + break; + + case 'PRE': + case 'TD': + case 'BLOCKQUOTE': + $readability->value += 3; + break; + + case 'ADDRESS': + case 'OL': + case 'UL': + case 'DL': + case 'DD': + case 'DT': + case 'LI': + case 'FORM': + $readability->value -= 3; + break; + + case 'H1': + case 'H2': + case 'H3': + case 'H4': + case 'H5': + case 'H6': + case 'TH': + $readability->value -= 5; + break; + } + $readability->value += $this->getClassWeight($node); + } + + /*** + * grabArticle - Using a variety of metrics (content score, classname, element types), find the content that is + * most likely to be the stuff a user wants to read. Then return it wrapped up in a div. + * + * @return DOMElement + **/ + protected function grabArticle($page=null) { + $stripUnlikelyCandidates = $this->flagIsActive(self::FLAG_STRIP_UNLIKELYS); + if (!$page) $page = $this->dom; + $allElements = $page->getElementsByTagName('*'); + /** + * First, node prepping. Trash nodes that look cruddy (like ones with the class name "comment", etc), and turn divs + * into P tags where they have been used inappropriately (as in, where they contain no other block level elements.) + * + * Note: Assignment from index for performance. See http://www.peachpit.com/articles/article.aspx?p=31567&seqNum=5 + * TODO: Shouldn't this be a reverse traversal? + **/ + $node = null; + $nodesToScore = array(); + for ($nodeIndex = 0; ($node = $allElements->item($nodeIndex)); $nodeIndex++) { + //for ($nodeIndex=$targetList->length-1; $nodeIndex >= 0; $nodeIndex--) { + //$node = $targetList->item($nodeIndex); + $tagName = strtoupper($node->tagName); + /* Remove unlikely candidates */ + if ($stripUnlikelyCandidates) { + $unlikelyMatchString = $node->getAttribute('class') . $node->getAttribute('id'); + if ( + preg_match($this->regexps['unlikelyCandidates'], $unlikelyMatchString) && + !preg_match($this->regexps['okMaybeItsACandidate'], $unlikelyMatchString) && + $tagName != 'BODY' + ) + { + $this->dbg('Removing unlikely candidate - ' . $unlikelyMatchString); + //$nodesToRemove[] = $node; + $node->parentNode->removeChild($node); + $nodeIndex--; + continue; + } + } + + if ($tagName == 'P' || $tagName == 'TD' || $tagName == 'PRE') { + $nodesToScore[] = $node; + } + + /* Turn all divs that don't have children block level elements into p's */ + if ($tagName == 'DIV') { + if (!preg_match($this->regexps['divToPElements'], $node->innerHTML)) { + //$this->dbg('Altering div to p'); + $newNode = $this->dom->createElement('p'); + try { + $newNode->innerHTML = $node->innerHTML; + //$nodesToReplace[] = array('new'=>$newNode, 'old'=>$node); + $node->parentNode->replaceChild($newNode, $node); + $nodeIndex--; + $nodesToScore[] = $node; // or $newNode? + } + catch(Exception $e) { + $this->dbg('Could not alter div to p, reverting back to div.: ' . $e); + } + } + else + { + /* EXPERIMENTAL */ + // TODO: change these p elements back to text nodes after processing + for ($i = 0, $il = $node->childNodes->length; $i < $il; $i++) { + $childNode = $node->childNodes->item($i); + if ($childNode->nodeType == 3) { // XML_TEXT_NODE + //$this->dbg('replacing text node with a p tag with the same content.'); + $p = $this->dom->createElement('p'); + $p->innerHTML = $childNode->nodeValue; + $p->setAttribute('style', 'display: inline;'); + $p->setAttribute('class', 'readability-styled'); + $childNode->parentNode->replaceChild($p, $childNode); + } + } + } + } + } + + /** + * Loop through all paragraphs, and assign a score to them based on how content-y they look. + * Then add their score to their parent node. + * + * A score is determined by things like number of commas, class names, etc. Maybe eventually link density. + **/ + $candidates = array(); + for ($pt=0; $pt < count($nodesToScore); $pt++) { + $parentNode = $nodesToScore[$pt]->parentNode; + // $grandParentNode = $parentNode ? $parentNode->parentNode : null; + $grandParentNode = !$parentNode ? null : (($parentNode->parentNode instanceof DOMElement) ? $parentNode->parentNode : null); + $innerText = $this->getInnerText($nodesToScore[$pt]); + + if (!$parentNode || !isset($parentNode->tagName)) { + continue; + } + + /* If this paragraph is less than 25 characters, don't even count it. */ + if(strlen($innerText) < 25) { + continue; + } + + /* Initialize readability data for the parent. */ + if (!$parentNode->hasAttribute('readability')) + { + $this->initializeNode($parentNode); + $candidates[] = $parentNode; + } + + /* Initialize readability data for the grandparent. */ + if ($grandParentNode && !$grandParentNode->hasAttribute('readability') && isset($grandParentNode->tagName)) + { + $this->initializeNode($grandParentNode); + $candidates[] = $grandParentNode; + } + + $contentScore = 0; + + /* Add a point for the paragraph itself as a base. */ + $contentScore++; + + /* Add points for any commas within this paragraph */ + $contentScore += count(explode(',', $innerText)); + + /* For every 100 characters in this paragraph, add another point. Up to 3 points. */ + $contentScore += min(floor(strlen($innerText) / 100), 3); + + /* Add the score to the parent. The grandparent gets half. */ + $parentNode->getAttributeNode('readability')->value += $contentScore; + + if ($grandParentNode) { + $grandParentNode->getAttributeNode('readability')->value += $contentScore/2; + } + } + + /** + * After we've calculated scores, loop through all of the possible candidate nodes we found + * and find the one with the highest score. + **/ + $topCandidate = null; + for ($c=0, $cl=count($candidates); $c < $cl; $c++) + { + /** + * Scale the final candidates score based on link density. Good content should have a + * relatively small link density (5% or less) and be mostly unaffected by this operation. + **/ + $readability = $candidates[$c]->getAttributeNode('readability'); + $readability->value = $readability->value * (1-$this->getLinkDensity($candidates[$c])); + + $this->dbg('Candidate: ' . $candidates[$c]->tagName . ' (' . $candidates[$c]->getAttribute('class') . ':' . $candidates[$c]->getAttribute('id') . ') with score ' . $readability->value); + + if (!$topCandidate || $readability->value > (int)$topCandidate->getAttribute('readability')) { + $topCandidate = $candidates[$c]; + } + } + + /** + * If we still have no top candidate, just use the body as a last resort. + * We also have to copy the body node so it is something we can modify. + **/ + if ($topCandidate === null || strtoupper($topCandidate->tagName) == 'BODY') + { + $topCandidate = $this->dom->createElement('div'); + $topCandidate->innerHTML = ($page instanceof DOMDocument) ? $page->saveXML($page->documentElement) : $page->innerHTML; + $page->innerHTML = ''; + $page->appendChild($topCandidate); + $this->initializeNode($topCandidate); + } + + /** + * Now that we have the top candidate, look through its siblings for content that might also be related. + * Things like preambles, content split by ads that we removed, etc. + **/ + $articleContent = $this->dom->createElement('div'); + $articleContent->setAttribute('id', 'readability-content'); + $siblingScoreThreshold = max(10, ((int)$topCandidate->getAttribute('readability')) * 0.2); + $siblingNodes = $topCandidate->parentNode->childNodes; + + for ($s=0, $sl=$siblingNodes->length; $s < $sl; $s++) + { + $siblingNode = $siblingNodes->item($s); + $append = false; + + $this->dbg('Looking at sibling node: ' . $siblingNode->nodeName . (($siblingNode->nodeType === XML_ELEMENT_NODE && $siblingNode->hasAttribute('readability')) ? (' with score ' . $siblingNode->getAttribute('readability')) : '')); + + //dbg('Sibling has score ' . ($siblingNode->readability ? siblingNode.readability.contentScore : 'Unknown')); + + if ($siblingNode === $topCandidate) + // or if ($siblingNode->isSameNode($topCandidate)) + { + $append = true; + } + + $contentBonus = 0; + /* Give a bonus if sibling nodes and top candidates have the example same classname */ + if ($siblingNode->nodeType === XML_ELEMENT_NODE && $siblingNode->getAttribute('class') == $topCandidate->getAttribute('class') && $topCandidate->getAttribute('class') != '') { + $contentBonus += ((int)$topCandidate->getAttribute('readability')) * 0.2; + } + + if ($siblingNode->nodeType === XML_ELEMENT_NODE && $siblingNode->hasAttribute('readability') && (((int)$siblingNode->getAttribute('readability')) + $contentBonus) >= $siblingScoreThreshold) + { + $append = true; + } + + if (strtoupper($siblingNode->nodeName) == 'P') { + $linkDensity = $this->getLinkDensity($siblingNode); + $nodeContent = $this->getInnerText($siblingNode); + $nodeLength = strlen($nodeContent); + + if ($nodeLength > 80 && $linkDensity < 0.25) + { + $append = true; + } + else if ($nodeLength < 80 && $linkDensity === 0 && preg_match('/\.( |$)/', $nodeContent)) + { + $append = true; + } + } + + if ($append) + { + $this->dbg('Appending node: ' . $siblingNode->nodeName); + + $nodeToAppend = null; + $sibNodeName = strtoupper($siblingNode->nodeName); + if ($sibNodeName != 'DIV' && $sibNodeName != 'P') { + /* We have a node that isn't a common block level element, like a form or td tag. Turn it into a div so it doesn't get filtered out later by accident. */ + + $this->dbg('Altering siblingNode of ' . $sibNodeName . ' to div.'); + $nodeToAppend = $this->dom->createElement('div'); + try { + $nodeToAppend->setAttribute('id', $siblingNode->getAttribute('id')); + $nodeToAppend->innerHTML = $siblingNode->innerHTML; + } + catch(Exception $e) + { + $this->dbg('Could not alter siblingNode to div, reverting back to original.'); + $nodeToAppend = $siblingNode; + $s--; + $sl--; + } + } else { + $nodeToAppend = $siblingNode; + $s--; + $sl--; + } + + /* To ensure a node does not interfere with readability styles, remove its classnames */ + $nodeToAppend->removeAttribute('class'); + + /* Append sibling and subtract from our list because it removes the node when you append to another node */ + $articleContent->appendChild($nodeToAppend); + } + } + + /** + * So we have all of the content that we need. Now we clean it up for presentation. + **/ + $this->prepArticle($articleContent); + + /** + * Now that we've gone through the full algorithm, check to see if we got any meaningful content. + * If we didn't, we may need to re-run grabArticle with different flags set. This gives us a higher + * likelihood of finding the content, and the sieve approach gives us a higher likelihood of + * finding the -right- content. + **/ + if (strlen($this->getInnerText($articleContent, false)) < 250) + { + $this->body->innerHTML = $this->bodyCache; + + if ($this->flagIsActive(self::FLAG_STRIP_UNLIKELYS)) { + $this->removeFlag(self::FLAG_STRIP_UNLIKELYS); + return $this->grabArticle($this->body); + } + else if ($this->flagIsActive(self::FLAG_WEIGHT_CLASSES)) { + $this->removeFlag(self::FLAG_WEIGHT_CLASSES); + return $this->grabArticle($this->body); + } + else if ($this->flagIsActive(self::FLAG_CLEAN_CONDITIONALLY)) { + $this->removeFlag(self::FLAG_CLEAN_CONDITIONALLY); + return $this->grabArticle($this->body); + } + else { + return false; + } + } + return $articleContent; + } + + /** + * Remove script tags from document + * + * @param DOMElement + * @return void + */ + public function removeScripts($doc) { + $scripts = $doc->getElementsByTagName('script'); + for($i = $scripts->length-1; $i >= 0; $i--) + { + $scripts->item($i)->parentNode->removeChild($scripts->item($i)); + } + } + + /** + * Get the inner text of a node. + * This also strips out any excess whitespace to be found. + * + * @param DOMElement $ + * @param boolean $normalizeSpaces (default: true) + * @return string + **/ + public function getInnerText($e, $normalizeSpaces=true) { + $textContent = ''; + + if (!isset($e->textContent) || $e->textContent == '') { + return ''; + } + + $textContent = trim($e->textContent); + + if ($normalizeSpaces) { + return preg_replace($this->regexps['normalize'], ' ', $textContent); + } else { + return $textContent; + } + } + + /** + * Get the number of times a string $s appears in the node $e. + * + * @param DOMElement $e + * @param string - what to count. Default is "," + * @return number (integer) + **/ + public function getCharCount($e, $s=',') { + return substr_count($this->getInnerText($e), $s); + } + + /** + * Remove the style attribute on every $e and under. + * + * @param DOMElement $e + * @return void + */ + public function cleanStyles($e) { + $elems = $e->getElementsByTagName('*'); + foreach ($elems as $elem) { + $elem->removeAttribute('style'); + } + } + + /** + * Get the density of links as a percentage of the content + * This is the amount of text that is inside a link divided by the total text in the node. + * + * @param DOMElement $e + * @return number (float) + */ + public function getLinkDensity($e) { + $links = $e->getElementsByTagName('a'); + $textLength = strlen($this->getInnerText($e)); + $linkLength = 0; + for ($i=0, $il=$links->length; $i < $il; $i++) + { + $linkLength += strlen($this->getInnerText($links->item($i))); + } + if ($textLength > 0) { + return $linkLength / $textLength; + } else { + return 0; + } + } + + /** + * Get an elements class/id weight. Uses regular expressions to tell if this + * element looks good or bad. + * + * @param DOMElement $e + * @return number (Integer) + */ + public function getClassWeight($e) { + if(!$this->flagIsActive(self::FLAG_WEIGHT_CLASSES)) { + return 0; + } + + $weight = 0; + + /* Look for a special classname */ + if ($e->hasAttribute('class') && $e->getAttribute('class') != '') + { + if (preg_match($this->regexps['negative'], $e->getAttribute('class'))) { + $weight -= 25; + } + if (preg_match($this->regexps['positive'], $e->getAttribute('class'))) { + $weight += 25; + } + } + + /* Look for a special ID */ + if ($e->hasAttribute('id') && $e->getAttribute('id') != '') + { + if (preg_match($this->regexps['negative'], $e->getAttribute('id'))) { + $weight -= 25; + } + if (preg_match($this->regexps['positive'], $e->getAttribute('id'))) { + $weight += 25; + } + } + return $weight; + } + + /** + * Remove extraneous break tags from a node. + * + * @param DOMElement $node + * @return void + */ + public function killBreaks($node) { + $html = $node->innerHTML; + $html = preg_replace($this->regexps['killBreaks'], '
      ', $html); + $node->innerHTML = $html; + } + + /** + * Clean a node of all elements of type "tag". + * (Unless it's a youtube/vimeo video. People love movies.) + * + * @param DOMElement $e + * @param string $tag + * @return void + */ + public function clean($e, $tag) { + $targetList = $e->getElementsByTagName($tag); + $isEmbed = ($tag == 'object' || $tag == 'embed'); + + for ($y=$targetList->length-1; $y >= 0; $y--) { + /* Allow youtube and vimeo videos through as people usually want to see those. */ + if ($isEmbed) { + $attributeValues = ''; + for ($i=0, $il=$targetList->item($y)->attributes->length; $i < $il; $i++) { + $attributeValues .= $targetList->item($y)->attributes->item($i)->value . '|'; // DOMAttr? (TODO: test) + } + + /* First, check the elements attributes to see if any of them contain youtube or vimeo */ + if (preg_match($this->regexps['video'], $attributeValues)) { + continue; + } + + /* Then check the elements inside this element for the same. */ + if (preg_match($this->regexps['video'], $targetList->item($y)->innerHTML)) { + continue; + } + } + $targetList->item($y)->parentNode->removeChild($targetList->item($y)); + } + } + + /** + * Clean an element of all tags of type "tag" if they look fishy. + * "Fishy" is an algorithm based on content length, classnames, + * link density, number of images & embeds, etc. + * + * @param DOMElement $e + * @param string $tag + * @return void + */ + public function cleanConditionally($e, $tag) { + if (!$this->flagIsActive(self::FLAG_CLEAN_CONDITIONALLY)) { + return; + } + + $tagsList = $e->getElementsByTagName($tag); + $curTagsLength = $tagsList->length; + + /** + * Gather counts for other typical elements embedded within. + * Traverse backwards so we can remove nodes at the same time without effecting the traversal. + * + * TODO: Consider taking into account original contentScore here. + */ + for ($i=$curTagsLength-1; $i >= 0; $i--) { + $weight = $this->getClassWeight($tagsList->item($i)); + $contentScore = ($tagsList->item($i)->hasAttribute('readability')) ? (int)$tagsList->item($i)->getAttribute('readability') : 0; + + $this->dbg('Cleaning Conditionally ' . $tagsList->item($i)->tagName . ' (' . $tagsList->item($i)->getAttribute('class') . ':' . $tagsList->item($i)->getAttribute('id') . ')' . (($tagsList->item($i)->hasAttribute('readability')) ? (' with score ' . $tagsList->item($i)->getAttribute('readability')) : '')); + + if ($weight + $contentScore < 0) { + $tagsList->item($i)->parentNode->removeChild($tagsList->item($i)); + } + else if ( $this->getCharCount($tagsList->item($i), ',') < 10) { + /** + * If there are not very many commas, and the number of + * non-paragraph elements is more than paragraphs or other ominous signs, remove the element. + **/ + $p = $tagsList->item($i)->getElementsByTagName('p')->length; + $img = $tagsList->item($i)->getElementsByTagName('img')->length; + $li = $tagsList->item($i)->getElementsByTagName('li')->length-100; + $input = $tagsList->item($i)->getElementsByTagName('input')->length; + + $embedCount = 0; + $embeds = $tagsList->item($i)->getElementsByTagName('embed'); + for ($ei=0, $il=$embeds->length; $ei < $il; $ei++) { + if (preg_match($this->regexps['video'], $embeds->item($ei)->getAttribute('src'))) { + $embedCount++; + } + } + + $linkDensity = $this->getLinkDensity($tagsList->item($i)); + $contentLength = strlen($this->getInnerText($tagsList->item($i))); + $toRemove = false; + + if ( $img > $p ) { + $toRemove = true; + } else if ($li > $p && $tag != 'ul' && $tag != 'ol') { + $toRemove = true; + } else if ( $input > floor($p/3) ) { + $toRemove = true; + } else if ($contentLength < 25 && ($img === 0 || $img > 2) ) { + $toRemove = true; + } else if($weight < 25 && $linkDensity > 0.2) { + $toRemove = true; + } else if($weight >= 25 && $linkDensity > 0.5) { + $toRemove = true; + } else if(($embedCount == 1 && $contentLength < 75) || $embedCount > 1) { + $toRemove = true; + } + + if ($toRemove) { + $tagsList->item($i)->parentNode->removeChild($tagsList->item($i)); + } + } + } + } + + /** + * Clean out spurious headers from an Element. Checks things like classnames and link density. + * + * @param DOMElement $e + * @return void + */ + public function cleanHeaders($e) { + for ($headerIndex = 1; $headerIndex < 3; $headerIndex++) { + $headers = $e->getElementsByTagName('h' . $headerIndex); + for ($i=$headers->length-1; $i >=0; $i--) { + if ($this->getClassWeight($headers->item($i)) < 0 || $this->getLinkDensity($headers->item($i)) > 0.33) { + $headers->item($i)->parentNode->removeChild($headers->item($i)); + } + } + } + } + + public function flagIsActive($flag) { + return ($this->flags & $flag) > 0; + } + + public function addFlag($flag) { + $this->flags = $this->flags | $flag; + } + + public function removeFlag($flag) { + $this->flags = $this->flags & ~$flag; + } +} +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/api.php b/inc/3rdparty/libraries/send2kindle/api.php new file mode 100644 index 000000000..564c171c0 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/api.php @@ -0,0 +1,234 @@ + service = $service; + } + /* if ( isset($_SESSION[ $this -> session_var_auth_name ] ) ){ + $this -> auth = $_SESSION[ $this -> session_var_auth_name ]; + echo "Loading"; + } else { */ + $this -> clientLogin( $email, $password ); + $this -> get_token(); + /* } */ + } + + + private function request( $url, $type = 'get', $headers = false, $fields = false, $cookie = false){ + + $curl = curl_init(); + + if ( $fields ){ + if ($type == 'get'){ + $url .= '?'.http_build_query( $fields ); + } else { + curl_setopt($curl, CURLOPT_POST, true); + curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($fields) ); + } + } + if ( $headers ){ + curl_setopt($curl, CURLOPT_HEADER, true); + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + } + if ( $cookie ){ + curl_setopt($curl, CURLOPT_COOKIE, $cookie); + } + + curl_setopt($curl, CURLOPT_URL, $url); + if (strpos($url, 'https://') !== false){ + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + } + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLINFO_HEADER_OUT, true); + + $response = array(); + $response['text'] = curl_exec($curl); + $response['info'] = curl_getinfo( $curl); + $response['code'] = curl_getinfo( $curl, CURLINFO_HTTP_CODE ); + $response['body'] = substr( $response['text'], $response['info']['header_size'] ); + + curl_close( $curl ); + return $response; + } + + private function request2google( $url, $type = 'get', $headers = false, $fields = false ){ + if ( $this -> auth ){ + $headers[] = 'Content-type: application/x-www-form-urlencoded'; + $headers[] = 'Authorization: GoogleLogin auth='.$this -> auth; + + if ( strpos( $url, 'http://') === false && strpos( $url, 'https://' ) === false ){ + $url = $this -> reader_api_url.$url; + } + + $response = $this -> request( $url, $type, $headers, $fields); + if ( $response['code'] == 200 ){ + if ( isset( $fields['output'] ) ){ + switch ($fields['output']){ + case 'xml': + return (new SimpleXMLElement( $response['body'] ) ); + break; + case 'json': + default: + return json_decode( $response['body'] ); + break; + } + } else { + return $response['body']; + } + } else { + Throw new AutentificationException('Auth error: server response '.$response['code'] ); + } + + } else { + Throw new AutentificationException('Auth error: not finded Auth token'); + } + } + + public function get_tag_list( $output = 'json' ){ + return $this -> request2google('tag/list', "get", false, array( + 'output' => $output, + 'ck' => time(), + 'client' => $this -> client, + )); + } + public function get_subscription_list( $output = 'json' ){ + return $this -> request2google('subscription/list', "get", false, array( + 'output' => $output, + 'ck' => time(), + 'client' => $this -> client, + )); + } + public function get_preference_list( $output = 'json' ){ + return $this -> request2google('preference/list', "get", false, array( + 'output' => $output, + 'ck' => time(), + 'client' => $this -> client, + )); + } + public function get_unread_count( $output = 'json' ){ + return $this -> request2google('unread-count', "get", false, array( + 'all' => true, + 'output' => $output, + 'ck' => time(), + 'client' => $this -> client, + )); + } + public function get_user_info( $output = 'json' ){ + return $this -> request2google('user-info', "get", false, array( + 'output' => $output, + 'ck' => time(), + 'client' => $this -> client, + )); + } + private function get_token(){ + $this -> token = $this -> request2google('token'); + } + + //get contents functions + /* + r - order + r = n - new items + r = o - old items + r = a - auto sort + + */ + private function get_content( $content_url = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ + $fields = array( + 'ck' => time(), + 'client' => $this -> client, + 'n' => $number, + 'r' => $order, + 'output' => 'json', + ); + if ( !empty($exclude_target) ){$fields['xt'] = $exclude_target;} + if ( !empty($start_time) ){$fields['ot'] = $start_time;} + if ( !empty($continuation) ){$fields['c'] = $continuation;} + + return $this -> request2google('stream/contents/'.Utils::urlencode( $content_url ), 'get', false, $fields); + } + + public function get_content_feed( $feed_url = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ + return $this -> get_content( $feed_url, $number, $order, $exclude_target, $start_time, $continuation ); + } + public function get_content_by_label( $label = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ + return $this -> get_content( (strpos($label, '/') === false?'user/-/label/':'').$label, $number, $order, $exclude_target, $start_time, $continuation ); + } + public function get_content_by_state( $state = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ + return $this -> get_content( (strpos($state, '/') === false?'user/-/state/com.google/':'').$state, $number, $order, $exclude_target, $start_time, $continuation ); + } + + public function get_unread( $number = 20, $order = 'n' ){ + return $this ->get_content_by_state('reading-list', $number, $order, 'user/-/state/com.google/read'); + } + + public function get_starred($number = 20, $order = 'n'){ + return $this ->get_content_by_state('starred', $number, $order); + } + + /* + Edit functions + */ + private function edit_do( $api_function , $post_fields ){ + $post_fields['T'] = $this -> token; + if ( $this -> request2google( $api_function, "post", false, $post_fields ) == "OK"){ + return true; + } else { + return false; + } + } + + /* public function edit_subscription( + s return $this -> edit_do( 'subscription/edit', + } */ + public function set_state( $itemId, $state = 'read'){ + $post_fields = array( + "i" => $itemId, + "a" => 'user/-/state/com.google/'.$state, + ); + //print_r( $post_fields ); + return $this ->edit_do('edit-tag?client='.$this -> client, $post_fields); + } + + private function clientLogin( $email, $password ){ + + $response = $this -> request( $this -> clientlogin_url, 'post', false, array( + "accountType" => $this -> account_type, + "Email" => $email, + "Passwd" => $password, + "service" => $this -> service, + "source" => $this -> source, + )); + + if ( $response['code'] == 200) { + preg_match("/Auth=([a-z0-9_\-]+)/i", $response['body'], $matches_auth); + if ($matches_auth[1]){ + $this -> auth = $matches_auth[1]; + $_SESSION[ $this -> session_var_auth_name ] = $this -> auth; + return true; + } else { + Throw new AutentificationException('Auth error: not finded Auth token in response'); + } + } else { + Throw new AutentificationException('Auth error: server response '.$response['code'] ); + } + } +} + +//Exceptions +class AutentificationException extends Exception {} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/images.php b/inc/3rdparty/libraries/send2kindle/images.php new file mode 100644 index 000000000..63f0562a8 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/images.php @@ -0,0 +1,136 @@ +_storage = $storage; + $this->_content = $article_content; + $this->_images_from_content = $this->_get_images_from_content($article_content); + } + + /** + * get images from url + * @param string $content + * @return array images hashtable + */ + private function _get_images_from_content($content) + { + $result = array(); + preg_match_all('/src=\"([a-zA-Z0-9\.\/\-\_\?\+\%\~\&\;\=\:]+)\"/i', $content, $result); + + return $result[1]; + } + + /** + * Start conversion + * @return string converted content + */ + public function convert() + { + foreach ( $this->_images_from_content as $n => $image_url ) + { + $image = $this->_get_image($image_url); + $this->_content = str_replace($image_url, '" recindex="'.(int)basename($image), $this->_content); + } + + return $this->_content; + } + + /** + * Resize image + * @param string $file path + * @param int $new_width max width + */ + private function _resize($file, $new_width = 500) + { + list($width, $height) = getimagesize($file); + + $new_height = 0; + + //setup the new size of the image + if( $width > $new_width ) + { + $ratio = $height/$width; + $new_height = $new_width * $ratio; + } + else + { + $new_width = $width; + $new_height = $height; + } + + // resample the image + $new_image = imagecreatetruecolor($new_width, $new_height); + + $type = exif_imagetype ( $file ); + + switch ( $type ) + { + case IMAGETYPE_JPEG: + $old_image = imagecreatefromjpeg($file); + imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); + imagejpeg($new_image, $file, self::JPEG_QUALITY); + break; + case IMAGETYPE_PNG: + $old_image = imagecreatefrompng($file); + imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); + imagepng($new_image, $file); + break; + case IMAGETYPE_GIF: + $old_image = imagecreatefromgif($file); + imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); + imagegif($new_image, $file); + break; + } + } + + /** + * Resize image + * @return string image path + */ + private function _get_image($url) + { + $image_data = @file_get_contents($url); + + if ( $image_data !== false ) + { + $image_name = $this->_storage->save_image($image_data); + $this->_resize($image_name); + + return $image_name; + } + } + +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/io.php b/inc/3rdparty/libraries/send2kindle/io.php new file mode 100644 index 000000000..284c08cc9 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/io.php @@ -0,0 +1,250 @@ + + */ +class IO { + + /** + * Max line height + */ + const COMMAND_LENGTH = 50; + + /** + * args for run screen + * @var array + */ + protected static $_args = array + ( + 'help' => array('value' => FALSE, 'description' => 'show help for news2kindle'), + 'grab' => array('value' => FALSE, 'description' => 'grab articles from google reader'), + 'mobi' => array('value' => FALSE, 'description' => 'prepare mobi format'), + 'send' => array('value' => FALSE, 'description' => 'send articles to kindle'), + 'login' => array('value' => NULL, 'description' => 'your login to google account *requred'), + 'password' => array('value' => NULL, 'description' => 'your password to google account *required'), + 'kindle' => array('value' => NULL, 'description' => 'your kindle email *required'), + 'items' => array('value' => 100, 'description' => 'max items to grab in run'), + 'render' => array('value' => 'std', 'description' => 'name of html template for newspapper'), + //'timeout' => array('value' => FALSE, 'description' => 'timeout is most important than items count'), + ); + + /** + * Write on screen text line + * @param string $message + * @param bool $broken_line + */ + public static function msg($message, $broken_line = TRUE) + { + echo ( $broken_line ? "\n" : "" ) . $message; + } + + /** + * Write command for status + * @param string $message + */ + public static function command($message) + { + $output_whitespaces = ''; + + for ($i = strlen($message); $i <= self::COMMAND_LENGTH; ++$i ) + { + $output_whitespaces .= '-'; + } + + self::msg( $message . ' ' . $output_whitespaces.' ' ); + } + + /** + * Status - OK + */ + public static function ok() + { + $colored_string = "\033[1;37m" . "\033[42m" . ' OK ' . "\033[0m"; + self::msg( $colored_string, FALSE ); + } + + /** + * Status - Error + */ + public static function error($message = NULL) + { + $colored_string = "\033[1;37m" . "\033[41m" . ' ERROR ' . "\033[0m"; + self::msg( $colored_string, FALSE ); + + if ( $message !== NULL ) + { + self::msg( ' - ' . $message ); + } + } + + /** + * Get run args + * @param string $name key config + * @return mixed config value + */ + public static function arg($name) + { + return self::$_args[$name]['value']; + } + + /** + * Get config from ini + * @param string $path + * @return void + */ + protected static function _get_config($path) + { + $config = parse_ini_file( $path . 'config.ini' ); + + foreach($config as $key => $value) + { + self::$_args[$key]['value'] = $value; + } + } + + /** + * Prepare args for script + * (from http://php.net/manual/en/features.commandline.php) + * @param array $argv array + * @param string $path + * @return bool success or error + */ + public static function prepare_args($argv, $path) + { + self::command('Parse args'); + + self::_get_config($path); + + array_shift($argv); + $out = array(); + + foreach ( $argv as $arg ) + { + if ( substr($arg,0,2) == '--' ) + { + $eqPos = strpos($arg,'='); + + if ( $eqPos === false ) + { + $key = substr($arg,2); + $out[$key] = isset($out[$key]) ? $out[$key] : true; + } + else + { + $key = substr($arg,2,$eqPos-2); + $out[$key] = substr($arg,$eqPos+1); + } + + } + else if ( substr($arg,0,1) == '-' ) + { + if ( substr($arg,2,1) == '=' ) + { + $key = substr($arg,1,1); + $out[$key] = substr($arg,3); + } + else + { + $chars = str_split(substr($arg,1)); + + foreach ( $chars as $char ) + { + $key = $char; + $out[$key] = isset($out[$key]) ? $out[$key] : true; + } + } + } + else + { + $out[] = $arg; + } + } + + try + { + $args = self::_validate_args($out); + + foreach ( $args as $key => $value ) + { + self::$_args[$key]['value'] = $value; + } + } + catch(Exception $e) + { + self::error($e->getMessage()); + return false; + } + + self::ok(); + + return true; + } + + /** + * Validate args for script + * (from http://php.net/manual/en/features.commandline.php) + * @param array $argv array + * @return array args + */ + private static function _validate_args($args) + { + if( array_key_exists('help', $args) OR array_key_exists('h', $args) ) + { + $args['grab'] = false; + $args['mobi'] = false; + $args['send'] = false; + $args['login'] = false; + $args['password'] = false; + $args['kindle'] = false; + } + + foreach ( $args as $key => $arg ) + { + if ( strlen($key) === 1 ) + { + foreach ( self::$_args as $keyA => $argA ) + { + if($keyA[0] === $key ) + { + unset( $args[$key] ); + $args[$keyA] = $arg; + $key = $keyA; + } + } + } + + if ( ! array_key_exists($key, self::$_args) ) + { + throw new Exception('Param "'.$key.'" is invalid!'); + } + } + + foreach ( self::$_args as $key => $arg ) + { + if( self::$_args[$key]['value'] === NULL AND !array_key_exists($key, $args) ) + { + throw new Exception('Param "'.$key.'" must be declared!'); + } + } + + return $args; + } + + /** + * Prepare help + * @return array + */ + public static function get_help() + { + $output = array(); + + foreach ( self::$_args as $arg => $item ) + { + $output[$arg] = $item['description']; + } + + return $output; + } + +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/readability.php b/inc/3rdparty/libraries/send2kindle/readability.php new file mode 100644 index 000000000..18c2dbde9 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/readability.php @@ -0,0 +1,249 @@ + + * @date 2011-02-17 + * @link http://www.gracecode.com/ + */ + +define("READABILITY_VERSION", 0.12); + +class Readability2 { + // 保存判定结果的标记位名称 + const ATTR_CONTENT_SCORE = "contentScore"; + + // DOM 解析类目前只支持 UTF-8 编码 + const DOM_DEFAULT_CHARSET = "utf-8"; + + // 当判定失败时显示的内容 + const MESSAGE_CAN_NOT_GET = "Sorry, readability was unable to parse this page for content. \n + If you feel like it should have been able to, + please let me know by mail: lucky[at]gracecode.com"; + + // DOM 解析类(PHP5 已内置) + protected $DOM = null; + + // 需要解析的源代码 + protected $source = ""; + + // 章节的父元素列表 + private $parentNodes = array(); + + // 需要删除的标签 + private $junkTags = Array("style", "form", "iframe", "script", "button", "input", "textarea"); + + // 需要删除的属性 + private $junkAttrs = Array("style", "class", "onclick", "onmouseover", "align", "border", "margin"); + + + /** + * 构造函数 + * @param $input_char 字符串的编码。默认 utf-8,可以省略 + */ + function __construct($source, $input_char = "utf-8") { + $this->source = $source; + + // DOM 解析类只能处理 UTF-8 格式的字符 + $source = mb_convert_encoding($source, 'HTML-ENTITIES', $input_char); + + // 预处理 HTML 标签,剔除冗余的标签等 + $source = $this->preparSource($source); + + // 生成 DOM 解析类 + $this->DOM = new DOMDocument('1.0', $input_char); + try { + //libxml_use_internal_errors(true); + // 会有些错误信息,不过不要紧 :^) + if (!@$this->DOM->loadHTML(''.$source)) { + throw new Exception("Parse HTML Error!"); + } + + foreach ($this->DOM->childNodes as $item) { + if ($item->nodeType == XML_PI_NODE) { + $this->DOM->removeChild($item); // remove hack + } + } + + // insert proper + $this->DOM->encoding = Readability2::DOM_DEFAULT_CHARSET; + } catch (Exception $e) { + // ... + } + } + + + /** + * 预处理 HTML 标签,使其能够准确被 DOM 解析类处理 + * + * @return String + */ + private function preparSource($string) { + // 剔除多余的 HTML 编码标记,避免解析出错 + preg_match("/charset=([\w|\-]+);?/", $string, $match); + if (isset($match[1])) { + $string = preg_replace("/charset=([\w|\-]+);?/", "", $string, 1); + } + + // Replace all doubled-up
      tags with

      tags, and remove fonts. + $string = preg_replace("/[ \r\n\s]*/i", "

      ", $string); + $string = preg_replace("/<\/?font[^>]*>/i", "", $string); + + return trim($string); + } + + + /** + * 删除 DOM 元素中所有的 $TagName 标签 + * + * @return DOMDocument + */ + private function removeJunkTag($RootNode, $TagName) { + $Tags = $RootNode->getElementsByTagName($TagName); + + $i = 0; + while($Tag = $Tags->item($i++)) { + $parentNode = $Tag->parentNode; + $parentNode->removeChild($Tag); + } + + return $RootNode; + } + + /** + * 删除元素中所有不需要的属性 + */ + private function removeJunkAttr($RootNode, $Attr) { + $Tags = $RootNode->getElementsByTagName("*"); + + $i = 0; + while($Tag = $Tags->item($i++)) { + $Tag->removeAttribute($Attr); + } + + return $RootNode; + } + + /** + * 根据评分获取页面主要内容的盒模型 + * 判定算法来自:http://code.google.com/p/arc90labs-readability/ + * + * @return DOMNode + */ + private function getTopBox() { + // 获得页面所有的章节 + $allParagraphs = $this->DOM->getElementsByTagName("p"); + + // Study all the paragraphs and find the chunk that has the best score. + // A score is determined by things like: Number of

      's, commas, special classes, etc. + $i = 0; + while($paragraph = $allParagraphs->item($i++)) { + $parentNode = $paragraph->parentNode; + $contentScore = intval($parentNode->getAttribute(Readability2::ATTR_CONTENT_SCORE)); + $className = $parentNode->getAttribute("class"); + $id = $parentNode->getAttribute("id"); + + // Look for a special classname + if (preg_match("/(comment|meta|footer|footnote)/i", $className)) { + $contentScore -= 50; + } else if(preg_match( + "/((^|\\s)(post|hentry|entry[-]?(content|text|body)?|article[-]?(content|text|body)?)(\\s|$))/i", + $className)) { + $contentScore += 25; + } + + // Look for a special ID + if (preg_match("/(comment|meta|footer|footnote)/i", $id)) { + $contentScore -= 50; + } else if (preg_match( + "/^(post|hentry|entry[-]?(content|text|body)?|article[-]?(content|text|body)?)$/i", + $id)) { + $contentScore += 25; + } + + // Add a point for the paragraph found + // Add points for any commas within this paragraph + if (strlen($paragraph->nodeValue) > 10) { + $contentScore += strlen($paragraph->nodeValue); + } + + // 保存父元素的判定得分 + $parentNode->setAttribute(Readability2::ATTR_CONTENT_SCORE, $contentScore); + + // 保存章节的父元素,以便下次快速获取 + array_push($this->parentNodes, $parentNode); + } + + $topBox = $this->DOM->createElement('div', Readability2::MESSAGE_CAN_NOT_GET); + // Assignment from index for performance. + // See http://www.peachpit.com/articles/article.aspx?p=31567&seqNum=5 + for ($i = 0, $len = sizeof($this->parentNodes); $i < $len; $i++) { + $parentNode = $this->parentNodes[$i]; + $contentScore = intval($parentNode->getAttribute(Readability2::ATTR_CONTENT_SCORE)); + $orgContentScore = intval($topBox->getAttribute(Readability2::ATTR_CONTENT_SCORE)); + + if ($contentScore && $contentScore > $orgContentScore) { + $topBox = $parentNode; + } + } + + // 此时,$topBox 应为已经判定后的页面内容主元素 + return $topBox; + } + + + /** + * 获取 HTML 页面标题 + * + * @return String + */ + public function getTitle() { + $title = $this->DOM->getElementsByTagName("title"); + return $title->item(0); + } + + + /** + * 获取页面的主要内容(Readability 以后的内容) + * + * @return Array + */ + public function getContent() { + if (!$this->DOM) return false; + + // 获取页面标题 + $ContentTitle = $this->getTitle(); + + // 获取页面主内容 + $ContentBox = $this->getTopBox(); + + // 复制内容到新的 DOMDocument + $Target = new DOMDocument; + $Target->appendChild($Target->importNode($ContentBox, true)); + + // 删除不需要的标签 + foreach ($this->junkTags as $tag) { + $Target = $this->removeJunkTag($Target, $tag); + } + + // 删除不需要的属性 + foreach ($this->junkAttrs as $attr) { + $Target = $this->removeJunkAttr($Target, $attr); + } + + // 多个数据,以数组的形式返回 + return Array( + 'title' => $ContentTitle ? $ContentTitle->nodeValue : "", + 'content' => $Target->saveHTML() + ); + } + + function __destruct() { } +} diff --git a/inc/3rdparty/libraries/send2kindle/send.php b/inc/3rdparty/libraries/send2kindle/send.php new file mode 100644 index 000000000..a4861d307 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/send.php @@ -0,0 +1,69 @@ + + */ +class Send { + + /** + * Your kindle email + * @var string + */ + private $_kindle_email; + + /** + * Your email (must be added on amazon) + * @var string + */ + private $_email; + + /** + * Prepare mail + * @param string $kindle_email your kindle email + * @param string $email email for send to kindle + */ + public function __construct($kindle_email, $email) + { + $this->_kindle_email = $kindle_email; + $this->_email = $email; + } + + /** + * Send file + * @param string $file path to file + * @return bool + */ + public function send($file) + { + //prepare file + $file_size = filesize($file); + $filename = basename($file); + $handle = fopen($file, "r"); + $content = fread($handle, $file_size); + fclose($handle); + $content = chunk_split(base64_encode($content)); + + $uid = md5(uniqid(time())); + + //generate header for mail + $header = "From: News2Kindle <".$this->_email.">\r\n"; + $header .= "MIME-Version: 1.0\r\n"; + $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; + $header .= "This is a multi-part message in MIME format.\r\n"; + $header .= "--".$uid."\r\n"; + $header .= "Content-type:text/plain; charset=iso-8859-1\r\n"; + $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; + $header .= "send via News2Kindle script\r\n\r\n"; + $header .= "--".$uid."\r\n"; + $header .= "Content-Type: application/x-mobipocket-ebook; name=\"".$filename."\"\r\n"; + $header .= "Content-Transfer-Encoding: base64\r\n"; + $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; + $header .= $content."\r\n\r\n"; + $header .= "--".$uid."--"; + + //send mail + return mail( $this->_kindle_email, '[newsToKindle] ' . $filename, "", $header ); + } +} + +?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/storage.php b/inc/3rdparty/libraries/send2kindle/storage.php new file mode 100644 index 000000000..5c38ce80b --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/storage.php @@ -0,0 +1,230 @@ + + */ +class Storage { + + /** + * Newspapper name + * @var string + */ + private $_name; + + /** + * Default dir + * @var string + */ + private $_default_dir = 'data/'; + + /** + * Info about newspapper + * @var array + */ + private $_info; + + /** + * Prepare storage + * @param string $newspapper + * @param string $default_dir + */ + public function __construct($newspapper, $default_dir = NULL) + { + $this->_name = $newspapper; + + if ( $default_dir !== NULL ) + { + $this->_default_dir = $default_dir; + } + + $this->_info = $this->_get_info(); + } + + /** + * save info before exit from script + */ + public function __destruct() + { + $this->_save_info($this->_info); + } + + /** + * Get path + * @param bool $newspapper path to newspapper + * @return string path to repository + */ + public function get_path($newspapper = true) + { + $path = $this->_default_dir; + + if ( $newspapper ) + { + $path .= $this->_name . '/'; + } + + return $path; + } + + /** + * Get info about newspapper + * @return array newspapper info + */ + private function _get_info() + { + $content = unserialize( $this->_get_file('info.dat') ); + + if( $content === FALSE ) + { + $content = (object) array + ( + 'images_count' => 0, + 'articles_count' => 0, + 'images' => array(), + ); + + $this->_save_info($content); + } + + return $content; + } + + /** + * Get info key + * @param $key + * @return mixed + */ + public function info($key) + { + return $this->_info->$key; + } + + /** + * Save info + * @param array $info info from class + */ + private function _save_info($info) + { + $this->_save_file( 'info.dat', serialize($info) ); + } + + /** + * Save image in storage + * @param resource $image + * @param string $name image name, if null create auto name + * @return string image name + */ + public function save_image($image, $name = NULL) + { + if ( $name === NULL ) + { + $image_name = (string) $this->_info->images_count; + + for ($i=strlen($image_name); $i<6; $i++) + { + $image_name = '0'.$image_name; + } + + $this->_info->images_count++; + $this->_info->images[$this->_info->images_count] = $image_name; + + $name = $image_name; + } + + $this->_save_file($name, $image); + + return $this->_default_dir . $this->_name . '/' . $name; + } + + /** + * Get image + * @param string $name image name + * @return resource + */ + public function get_image($name) + { + return $this->_get_file($name); + } + + /** + * Put article contents + * @param string $id unique id for article + * @param string $title + * @param string $content article content + * @param string $url url for article + * @param object $website + */ + public function add_content($id, $title, $content, $url, $website) + { + $articles = unserialize( $this->_get_file('articles.dat') ); + + $articles[$id] = (object) array + ( + 'id' => $id, + 'title' => $title, + 'content' => $content, + 'url' => $url, + 'website' => $website, + ); + + $this->_save_file( 'articles.dat', serialize($articles) ); + } + + /** + * Get articles contents + * @param string $file_name + * @param string $file_content + */ + public function get_contents() + { + return unserialize( $this->_get_file( 'articles.dat' ) ); + } + + /** + * Get file content + * @param string $file_name + * @param string $file_content + */ + private function _save_file($file_name, $file_content) + { + if( ! file_exists( $this->_default_dir . $this->_name ) ) + { + mkdir( $this->_default_dir . $this->_name, 0777, TRUE ); + } + + file_put_contents($this->_default_dir . $this->_name . '/' . $file_name, $file_content); + } + + /** + * Get file content + * @param string $file_name + * @param string $default_file_content (if file not exists) + * @return string file content + */ + private function _get_file($file_name, $default_file_content = NULL) + { + $content = @file_get_contents($this->_default_dir . $this->_name . '/' . $file_name); + + if ($content === FALSE) + { + return $default_file_content; + } + + return $content; + } + + /** + * Clean newspapper after convert to mobi + */ + public function clean() + { + $files_to_remove = glob($this->_default_dir . $this->_name . '/*'); + + foreach ( $files_to_remove as $file ) + { + unlink( $file ); + } + + rmdir( $this->_default_dir . $this->_name ); + } + +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/utils.php b/inc/3rdparty/libraries/send2kindle/utils.php new file mode 100644 index 000000000..87cc3de08 --- /dev/null +++ b/inc/3rdparty/libraries/send2kindle/utils.php @@ -0,0 +1,37 @@ + + */ +class Utils +{ + /** + * URL encode + * @param string $url + * @return string $ar_url + */ + public static function urlencode( $url ) + { + $ar_url = explode( '/', $url ); + + foreach ( $ar_url as $key => $val ) + { + $ar_url[ $key ] = urlencode( $val ); + } + + return implode('/', $ar_url ); + } + + /** + * Prepare ID for google rss article + * @param string $id + * @return string + */ + public static function prepare_id($id) + { + $char_in = array('/', '.', ',', ':'); + $id = str_replace($char_in, '-', $id); + + return $id; + } +} \ No newline at end of file diff --git a/inc/poche/WallabagEpub.class.php b/inc/poche/WallabagEpub.class.php index 9c4d3566d..147744257 100644 --- a/inc/poche/WallabagEpub.class.php +++ b/inc/poche/WallabagEpub.class.php @@ -8,11 +8,14 @@ * @license http://opensource.org/licenses/MIT see COPYING file */ -class WallabagEpub +class WallabagEBooks { - protected $wallabag; + protected $wallabag; protected $method; protected $value; + protected $entries; + protected $bookTitle; + protected $bookFileName; public function __construct(Poche $wallabag, $method, $value) { @@ -21,10 +24,7 @@ class WallabagEpub $this->value = $value; } - /** - * handle ePub - */ - public function run() + public function prepareData() { switch ($this->method) { case 'id': @@ -62,7 +62,16 @@ class WallabagEpub case 'default': die(_('Uh, there is a problem while generating epub.')); } + } +} +class WallabagEpub extends WallabagEBooks +{ + /** + * handle ePub + */ + public function produceEpub() + { $content_start = "\n" . "\n" @@ -132,4 +141,95 @@ class WallabagEpub $book->finalize(); $zipData = $book->sendBook($bookFileName); } -} \ No newline at end of file +} + +class WallabagMobi extends WallabagEBooks +{ + /** + * Adapted from News2Kindle + * @author Jakub Westfalewski + * + */ + + public function produceMobi() + { + $storage = new Storage('static'); + $this->prepareData(); + foreach ($entries as $i => $item) { + $content = $item['content']; + $images = new Images($storage, $content); + $content = $images->convert(); + $storage->add_content + ( + md5($item['title']), + mb_convert_encoding($item['title'], 'HTML-ENTITIES', 'utf-8'), + $content, + $item['url']], + "" + ); + } + $articles = $storage->get_contents(); + $toc = array(); + $articles_count = count($articles); + + foreach($articles as $article){ + if(array_key_exists($article->website->title, $toc)){ + $toc[$article->website->title]->articles[] = $article; + }else{ + $toc[$article->website->title] = (object)array( + 'articles' => array($article), + 'title' => $article->website->title, + 'streamId' => $article->website->streamId, + 'url' => $article->website->htmlUrl, + ); + } + } + + $mobi = new MOBI(); + $mobi->setData($content); + $mobi->setOptions(array( + 'title' => 'Articles from '.date('Y-m-d'), + 'author' => 'wallabag', + 'subject' => 'Articles from '.date('Y-m-d'), + )); + + $images = array(); + + //prepare images for mobi format + foreach ( $storage->info('images') as $n => $image ) + { + $images[$n] = new FileRecord(new Record(file_get_contents($storage->get_path() . $image))); + } + + $mobi->setImages($images); + $mobi->save( $storage->get_path(FALSE) . 'articles-' . date('Y-m-d') . '.mobi'); + + $storage->clean(); + + if ($send) { + $files = glob($storage->get_path(FALSE).'*.mobi'); + $mail = new Send(KINDLEMAIL,MAIL); + foreach ( $files as $file_mobi ) + { + $mail->send( $file_mobi ); + } + // clean cache + foreach ( $files as $file_mobi ) + { + unlink( $file_mobi ); + } + } + } +} + +class WallabagPDF extends WallabagEbooks +{ + public function producePDF() + { + $mpdf = new mPDF('c'); + + $mpdf->WriteHTML($html); + $mpdf->Output(); + exit; + } +} \ No newline at end of file diff --git a/inc/poche/global.inc.php b/inc/poche/global.inc.php index b8c487e39..e3687eb25 100755 --- a/inc/poche/global.inc.php +++ b/inc/poche/global.inc.php @@ -41,6 +41,16 @@ require_once INCLUDES . '/3rdparty/libraries/PHPePub/Logger.php'; require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPub.php'; require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPubChapterSplitter.php'; +# mobi library +require_once INCLUDES . '/3rdparty/libraries/send2kindle/send.php'; +require_once INCLUDES . '/3rdparty/libraries/send2kindle/images.php'; +require_once INCLUDES . '/3rdparty/libraries/send2kindle/storage.php'; +require_once INCLUDES . '/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php'; +require_once INCLUDES . '/3rdparty/libraries/send2kindle/utils.php'; + +# pdf library +require_once INCLUDES . '/3rdparty/libraries/mpdf/mpdf.php'; + # system configuration; database credentials et caetera require_once INCLUDES . '/poche/config.inc.php'; require_once INCLUDES . '/poche/config.inc.default.php'; From 15317991f3ff456e6e215947402a0dcfd951e0df Mon Sep 17 00:00:00 2001 From: tcit Date: Thu, 24 Jul 2014 15:53:23 +0200 Subject: [PATCH 002/119] from epub to all kind of ebooks --- inc/poche/{WallabagEpub.class.php => WallabagEBooks.class.php} | 0 inc/poche/global.inc.php | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename inc/poche/{WallabagEpub.class.php => WallabagEBooks.class.php} (100%) diff --git a/inc/poche/WallabagEpub.class.php b/inc/poche/WallabagEBooks.class.php similarity index 100% rename from inc/poche/WallabagEpub.class.php rename to inc/poche/WallabagEBooks.class.php diff --git a/inc/poche/global.inc.php b/inc/poche/global.inc.php index e3687eb25..1542fbfa7 100755 --- a/inc/poche/global.inc.php +++ b/inc/poche/global.inc.php @@ -22,7 +22,7 @@ require_once ROOT . '/vendor/autoload.php'; require_once INCLUDES . '/poche/Template.class.php'; require_once INCLUDES . '/poche/Language.class.php'; require_once INCLUDES . '/poche/Routing.class.php'; -require_once INCLUDES . '/poche/WallabagEpub.class.php'; +require_once INCLUDES . '/poche/WallabagEBooks.class.php'; require_once INCLUDES . '/poche/Poche.class.php'; require_once INCLUDES . '/poche/Database.class.php'; From c70bfefc68fcc96b1ce57845e5b2942a596239ec Mon Sep 17 00:00:00 2001 From: tcit Date: Thu, 24 Jul 2014 15:59:08 +0200 Subject: [PATCH 003/119] add mobi and pdf to routing --- inc/poche/Routing.class.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index 2db57d127..e01d81291 100644 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php @@ -112,7 +112,13 @@ class Routing $this->wallabag->deleteUser($_POST['password4deletinguser']); } elseif (isset($_GET['epub'])) { $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['value']); - $epub->run(); + $epub->produceEpub(); + } elseif (isset($_GET['mobi'])) { + $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); + $mobi->produceMobi(); + } elseif (isset($_GET['pdf'])) { + $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']); + $pdf->producePDF(); } elseif (isset($_GET['import'])) { $import = $this->wallabag->import(); $tplVars = array_merge($this->vars, $import); From fb9df0c269f36703909b8b259abbdbed29881ecd Mon Sep 17 00:00:00 2001 From: tcit Date: Thu, 24 Jul 2014 21:56:04 +0200 Subject: [PATCH 004/119] use directly MOBIClass --- .../MOBIClass/CharacterEntities.php | 0 .../MOBIClass/ContentProvider.php | 0 .../MOBIClass/EXTHHelper.php | 0 .../{send2kindle => }/MOBIClass/FileByte.php | 0 .../{send2kindle => }/MOBIClass/FileDate.php | 0 .../MOBIClass/FileElement.php | 0 .../{send2kindle => }/MOBIClass/FileInt.php | 0 .../MOBIClass/FileObject.php | 0 .../MOBIClass/FileRecord.php | 0 .../{send2kindle => }/MOBIClass/FileShort.php | 0 .../MOBIClass/FileString.php | 0 .../{send2kindle => }/MOBIClass/FileTri.php | 0 .../{send2kindle => }/MOBIClass/Http.php | 0 .../MOBIClass/ImageHandler.php | 32 ++- .../{send2kindle => }/MOBIClass/MOBI.php | 27 +- inc/3rdparty/libraries/MOBIClass/MOBIFile.php | 157 +++++++++++ .../MOBIClass/MultipleFileHandler.php | 0 .../MOBIClass/OnlineArticle.php | 0 .../MOBIClass/PalmRecord.php | 36 +-- .../{send2kindle => }/MOBIClass/Prc.php | 4 +- .../MOBIClass/PreprocessedArticle.php | 0 .../MOBIClass/RecognizeURL.php | 0 .../{send2kindle => }/MOBIClass/Record.php | 0 .../MOBIClass/RecordFactory.php | 18 +- .../{send2kindle => }/MOBIClass/Settings.php | 6 +- .../{send2kindle => }/MOBIClass/constants.php | 0 .../MOBIClass/downloaders/FanFictionNet.php | 0 .../MOBIClass/http_build_url.php | 0 .../readability/JSLikeHTMLElement.php | 0 .../MOBIClass/readability/Readability.php | 0 inc/3rdparty/libraries/mpdf/mpdf.php | 2 +- .../send2kindle/MOBIClass/PEOFRecord.php | 49 ---- .../send2kindle/MOBIClass/PFCISRecord.php | 59 ----- .../send2kindle/MOBIClass/PFLISRecord.php | 58 ---- inc/3rdparty/libraries/send2kindle/api.php | 234 ---------------- inc/3rdparty/libraries/send2kindle/images.php | 136 ---------- inc/3rdparty/libraries/send2kindle/io.php | 250 ------------------ .../libraries/send2kindle/readability.php | 249 ----------------- inc/3rdparty/libraries/send2kindle/send.php | 69 ----- .../libraries/send2kindle/storage.php | 230 ---------------- inc/3rdparty/libraries/send2kindle/utils.php | 37 --- inc/poche/Routing.class.php | 3 + inc/poche/WallabagEBooks.class.php | 166 ++++++------ inc/poche/global.inc.php | 6 +- themes/baggy/config.twig | 10 +- themes/baggy/home.twig | 20 +- themes/baggy/view.twig | 2 + 47 files changed, 309 insertions(+), 1551 deletions(-) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/CharacterEntities.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/ContentProvider.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/EXTHHelper.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileByte.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileDate.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileElement.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileInt.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileObject.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileRecord.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileShort.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileString.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/FileTri.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/Http.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/ImageHandler.php (50%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/MOBI.php (88%) create mode 100644 inc/3rdparty/libraries/MOBIClass/MOBIFile.php rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/MultipleFileHandler.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/OnlineArticle.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/PalmRecord.php (74%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/Prc.php (97%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/PreprocessedArticle.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/RecognizeURL.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/Record.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/RecordFactory.php (84%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/Settings.php (92%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/constants.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/downloaders/FanFictionNet.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/http_build_url.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/readability/JSLikeHTMLElement.php (100%) rename inc/3rdparty/libraries/{send2kindle => }/MOBIClass/readability/Readability.php (100%) delete mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php delete mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php delete mode 100644 inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php delete mode 100644 inc/3rdparty/libraries/send2kindle/api.php delete mode 100644 inc/3rdparty/libraries/send2kindle/images.php delete mode 100644 inc/3rdparty/libraries/send2kindle/io.php delete mode 100644 inc/3rdparty/libraries/send2kindle/readability.php delete mode 100644 inc/3rdparty/libraries/send2kindle/send.php delete mode 100644 inc/3rdparty/libraries/send2kindle/storage.php delete mode 100644 inc/3rdparty/libraries/send2kindle/utils.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php b/inc/3rdparty/libraries/MOBIClass/CharacterEntities.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php rename to inc/3rdparty/libraries/MOBIClass/CharacterEntities.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php b/inc/3rdparty/libraries/MOBIClass/ContentProvider.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php rename to inc/3rdparty/libraries/MOBIClass/ContentProvider.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php b/inc/3rdparty/libraries/MOBIClass/EXTHHelper.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php rename to inc/3rdparty/libraries/MOBIClass/EXTHHelper.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php b/inc/3rdparty/libraries/MOBIClass/FileByte.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php rename to inc/3rdparty/libraries/MOBIClass/FileByte.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php b/inc/3rdparty/libraries/MOBIClass/FileDate.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php rename to inc/3rdparty/libraries/MOBIClass/FileDate.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php b/inc/3rdparty/libraries/MOBIClass/FileElement.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php rename to inc/3rdparty/libraries/MOBIClass/FileElement.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php b/inc/3rdparty/libraries/MOBIClass/FileInt.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php rename to inc/3rdparty/libraries/MOBIClass/FileInt.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php b/inc/3rdparty/libraries/MOBIClass/FileObject.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php rename to inc/3rdparty/libraries/MOBIClass/FileObject.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php b/inc/3rdparty/libraries/MOBIClass/FileRecord.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php rename to inc/3rdparty/libraries/MOBIClass/FileRecord.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php b/inc/3rdparty/libraries/MOBIClass/FileShort.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php rename to inc/3rdparty/libraries/MOBIClass/FileShort.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php b/inc/3rdparty/libraries/MOBIClass/FileString.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php rename to inc/3rdparty/libraries/MOBIClass/FileString.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php b/inc/3rdparty/libraries/MOBIClass/FileTri.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php rename to inc/3rdparty/libraries/MOBIClass/FileTri.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php b/inc/3rdparty/libraries/MOBIClass/Http.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php rename to inc/3rdparty/libraries/MOBIClass/Http.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php b/inc/3rdparty/libraries/MOBIClass/ImageHandler.php similarity index 50% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php rename to inc/3rdparty/libraries/MOBIClass/ImageHandler.php index f620fc1fb..bcb48e9f1 100644 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php +++ b/inc/3rdparty/libraries/MOBIClass/ImageHandler.php @@ -11,18 +11,30 @@ class ImageHandler { $imgFile = @imagecreatefromstring($data); if($imgFile !== false){ - @imagefilter($imgFile, IMG_FILTER_GRAYSCALE); - - ob_start(); - @imagejpeg($imgFile); - $image = ob_get_contents(); - ob_end_clean(); - - @imagedestroy($imgFile); - - return $image; + $result = self::CreateImage($imgFile); + imagedestroy($imgFile); + return $result; } return false; } + /** + * Create an image + * @param resource $img Create an image created with createimagetruecolor + * @return false|string False if failed, else the data of the image (converted to grayscale jpeg) + */ + public static function CreateImage($img){ + try{ + imagefilter($img, IMG_FILTER_GRAYSCALE); + + ob_start(); + imagejpeg($img); + $image = ob_get_contents(); + ob_end_clean(); + + return $image; + }catch(Exception $e){ + return false; + } + } } ?> diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php b/inc/3rdparty/libraries/MOBIClass/MOBI.php similarity index 88% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php rename to inc/3rdparty/libraries/MOBIClass/MOBI.php index 9532bbf1b..17e718c12 100644 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php +++ b/inc/3rdparty/libraries/MOBIClass/MOBI.php @@ -18,11 +18,9 @@ require_once(dirname(__FILE__).'/FileTri.php'); require_once(dirname(__FILE__).'/Http.php'); require_once(dirname(__FILE__).'/http_build_url.php'); require_once(dirname(__FILE__).'/ImageHandler.php'); +require_once(dirname(__FILE__).'/MOBIFile.php'); require_once(dirname(__FILE__).'/OnlineArticle.php'); require_once(dirname(__FILE__).'/PalmRecord.php'); -require_once(dirname(__FILE__).'/PEOFRecord.php'); -require_once(dirname(__FILE__).'/PFCISRecord.php'); -require_once(dirname(__FILE__).'/PFLISRecord.php'); require_once(dirname(__FILE__).'/Prc.php'); require_once(dirname(__FILE__).'/PreprocessedArticle.php'); require_once(dirname(__FILE__).'/RecognizeURL.php'); @@ -43,7 +41,7 @@ require_once(dirname(__FILE__).'/Settings.php'); * $mobi->setFileSource($file); //Load a local file without any extra changes * $mobi->setData($data); //Load data * - * //If you want, you can set some optional settings + * //If you want, you can set some optional settings (see Settings.php for all recognized settings) * $options = array( * "title"=>"Insert title here", * "author"=>"Author" @@ -86,7 +84,7 @@ class MOBI { */ public function setContentProvider($content){ $this->setOptions($content->getMetaData()); - $this->images = $content->getImages(); + $this->setImages($content->getImages()); $this->setData($content->getTextData()); } @@ -149,16 +147,9 @@ class MOBI { $mobiHeader = new PalmRecord($settings, $dataRecords, $nRecords, $len, sizeof($this->images)); array_unshift($dataRecords, $mobiHeader); $dataRecords = array_merge($dataRecords, $this->images); - $mobiFooter1 = new PFLISRecord($len); - $mobiFooter2 = new PFCISRecord($len); - $mobiFooter3 = new PEOFRecord($len); - $dataRecords[] = $mobiFooter1; - $dataRecords[] = $mobiFooter2; - $dataRecords[] = $mobiFooter3; - /*$dataRecords = array_merge($dataRecords, $mobiFooter); - *$dataRecords[] = $rec->createFLISRecord();* + $dataRecords[] = $rec->createFLISRecord(); $dataRecords[] = $rec->createFCISRecord($len); - $dataRecords[] = $rec->createEOFRecord();*/ + $dataRecords[] = $rec->createEOFRecord(); $this->prc = new Prc($settings, $dataRecords); return $this->prc; } @@ -183,7 +174,7 @@ class MOBI { $length = strlen($data); if($this->debug) return; //In debug mode, don't start the download -/* + header("Content-Type: application/x-mobipocket-ebook"); header("Content-Disposition: attachment; filename=\"".$name."\""); header("Content-Transfer-Encoding: binary"); @@ -192,12 +183,8 @@ class MOBI { header('Pragma: private'); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Content-Length: ".$length); - echo $data;*/ - - $hh = fopen("D:\hakuna.mobi", "w"); - fwrite($hh, $data); - fclose($hh); + echo $data; //Finished! } diff --git a/inc/3rdparty/libraries/MOBIClass/MOBIFile.php b/inc/3rdparty/libraries/MOBIClass/MOBIFile.php new file mode 100644 index 000000000..349227ae5 --- /dev/null +++ b/inc/3rdparty/libraries/MOBIClass/MOBIFile.php @@ -0,0 +1,157 @@ + "Unknown Title", "toc" => true); + private $parts = array(); + private $images = array(); + + /** + * Get the text data (the "html" code) + */ + public function getTextData(){ + $prefix = ""; + + $title = "

      ".$this->settings["title"]."

      "; + + list($text, $entries) = $this->generateText(); + + if($this->settings["toc"]) { + $toc = $this->generateTOC($entries); //Generate TOC to get the right length + $toc = $this->generateTOC($entries, strlen($prefix)+strlen($toc)+strlen($title)); //Generate the real TOC + } + + $suffix = ""; + + return $prefix.$toc.$title.$text.$suffix; + } + + /** + * Generate the body's text and the chapter entries + * @return array($string, $entries) $string is the html data, $entries + * contains the level, the title and the position of the titles. + */ + public function generateText(){ + $str = ""; + $entries = array(); + + for($i = 0; $i < sizeof($this->parts); $i++){ + list($type, $data) = $this->parts[$i]; + $id = "title_".$i; + switch($type){ + case self::PARAGRAPH: + $str .= "

      ".$data."

      "; + break; + case self::PAGEBREAK: + $str .= ''; + break; + case self::H2: + $entries[] = array("level" => 2, "position" => strlen($str), "title" => $data, "id" => $id); + $str .= "

      ".$data."

      "; + break; + case self::H3: + $entries[] = array("level" => 3, "position" => strlen($str), "title" => $data, "id" => $id); + $str .= "

      ".$data."

      "; + break; + case self::IMAGE: + $str .= ""; + break; + } + } + return array($str, $entries); + } + + /** + * Generate a TOC + * @param $entries The entries array generated by generateText + * @param $base The zero position + */ + public function generateTOC($entries, $base = 0){ + $toc = "

      Contents

      "; + $toc .= "
      "; + for($i = 0, $len = sizeof($entries); $i < $len; $i++){ + $entry = $entries[$i]; + $pos = str_pad($entry["position"]+$base, 10, "0", STR_PAD_LEFT); + $toc .= ""; + } + return $toc."
      ".$entry["title"]."
      "; + } + + /** + * Get the file records of the images + */ + public function getImages(){ + return $this->images; + } + + /** + * Get the metadata + */ + public function getMetaData(){ + return $this->settings; + } + + /** + * Change the file's settings. For example set("author", "John Doe") or set("title", "The adventures of John Doe"). + * @param $key Key of the setting to insert. + */ + public function set($key, $value){ + $this->settings[$key] = $value; + } + + /** + * Get the file's settings. + */ + public function get($key){ + return $this->settings[$key]; + } + + /** + * Append a paragraph of text to the file. + * @param string $text The text to insert. + */ + public function appendParagraph($text){ + $this->parts[] = array(self::PARAGRAPH, $text); + } + + /** + * Append a chapter title (H2) + * @param string $title The title to insert. + */ + public function appendChapterTitle($title){ + $this->parts[] = array(self::H2, $title); + } + + /** + * Append a section title (H3) + * @param string $title The title to insert. + */ + public function appendSectionTitle($title){ + $this->parts[] = array(self::H3, $title); + } + + public function appendPageBreak() { + $this->parts[] = array(self::PAGEBREAK, null); + } + + /** + * Append an image. + * @param resource $img An image file (for example, created by `imagecreate`) + */ + public function appendImage($img){ + $imgIndex = sizeof($this->images); + $this->images[] = new FileRecord(new Record(ImageHandler::CreateImage($img))); + $this->parts[] = array(self::IMAGE, $imgIndex); + } +} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php b/inc/3rdparty/libraries/MOBIClass/MultipleFileHandler.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php rename to inc/3rdparty/libraries/MOBIClass/MultipleFileHandler.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php b/inc/3rdparty/libraries/MOBIClass/OnlineArticle.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php rename to inc/3rdparty/libraries/MOBIClass/OnlineArticle.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php b/inc/3rdparty/libraries/MOBIClass/PalmRecord.php similarity index 74% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php rename to inc/3rdparty/libraries/MOBIClass/PalmRecord.php index 29dc978ad..d0de8dfe9 100644 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php +++ b/inc/3rdparty/libraries/MOBIClass/PalmRecord.php @@ -38,32 +38,19 @@ class PalmRecord extends FileObject { "huffmanRecordOffset"=>new FileInt(), "huffmanRecordCount"=>new FileInt(), "unused3"=>new FileString(8), - "exthFlags"=>new FileInt(0x50), + "exthFlags"=>new FileInt(0x40), "unknown"=>new FileString(32), "drmOffset"=>new FileInt(0xFFFFFFFF), - "drmCount"=>new FileInt(0xFFFFFFFF), - "drmSize"=>new FileInt(), + "drmCount"=>new FileShort(0xFFFFFFFF), + "drmSize"=>new FileShort(), "drmFlags"=>new FileInt(), - "mobiFiller"=>new FileString(12), - "offset192"=>new FileShort(0x01), - "offset194"=>new FileShort(), - "offset196"=>new FileInt(0x01), - "offset200"=>new FileInt(), - "offset204"=>new FileInt(0x01), - "offset208"=>new FileInt(), - "offset212"=>new FileInt(0x01), - "offset216"=>new FileString(8), - "offset224"=>new FileInt(0xFFFFFFFF), - "offset228"=>new FileInt(), - "offset232"=>new FileString(8), - "offset240"=>new FileInt(0x01), - "offset244"=>new FileInt(0xFFFFFFFF), + "mobiFiller"=>new FileString(72), //EXTH Header "exthIdentifier"=>new FileString("EXTH", 4), "exthHeaderLength"=>new FileInt(), "exthRecordCount"=>new FileInt(), "exthRecords"=>new FileElement(), - "exthPadding"=>new FileString(),//added the 2 extra pad bytes that comes before name/title + "exthPadding"=>new FileString(), //"fullNamePadding"=>new FileString(100), "fullName"=>new FileString() )); @@ -96,7 +83,7 @@ class PalmRecord extends FileObject { } if($images > 0){ - $this->elements->get("firstImageIndex")->set($textRecords+2); + $this->elements->get("firstImageIndex")->set($textRecords+1); } $this->elements->get("firstNonBookIndex")->set($textRecords+2+$images); $this->elements->get("reserved")->set(str_pad("", 40, chr(255), STR_PAD_RIGHT)); @@ -104,21 +91,16 @@ class PalmRecord extends FileObject { $this->elements->set("exthRecords", $exthElems); $pad = $l%4; $pad = (4-$pad)%4; - $this->elements->get("exthPadding")->set(str_pad("", $pad+2, "\0", STR_PAD_RIGHT)); + $this->elements->get("exthPadding")->set(str_pad("", $pad, "\0", STR_PAD_RIGHT)); $this->elements->get("exthHeaderLength")->set(12+$l+$pad); $this->elements->get("recordCount")->set($textRecords); - - $this->elements->get("fullNameOffset")->set($this->elements->offsetToEntry("fullName"));//need to be checked + + $this->elements->get("fullNameOffset")->set($this->elements->offsetToEntry("fullName")); $this->elements->get("fullNameLength")->set(strlen($settings->get("title"))); $this->elements->get("fullName")->set($settings->get("title")); $this->elements->get("textLength")->set($textLength); - - $this->elements->get("offset194")->set($textRecords+2+$images); - $this->elements->get("offset200")->set($textRecords+4+$images); - $this->elements->get("offset208")->set($textRecords+3+$images); - $this->elements->get("offset232")->set(str_pad("", 8, chr(255), STR_PAD_RIGHT)); } public function getByteLength(){ diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php b/inc/3rdparty/libraries/MOBIClass/Prc.php similarity index 97% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php rename to inc/3rdparty/libraries/MOBIClass/Prc.php index 1507e24b9..c40b58057 100644 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php +++ b/inc/3rdparty/libraries/MOBIClass/Prc.php @@ -40,7 +40,7 @@ class Prc extends FileElement { foreach($records as $record){ $offset = new FileInt(); $attr = new FileByte(); - $uniqueID = new FileTri(2*$i); + $uniqueID = new FileTri($i); $this->elements["recordList"]->add("Rec".$i, new FileElement(array( "offset"=>$offset, @@ -49,7 +49,7 @@ class Prc extends FileElement { ))); $this->elements["records"]->add("Rec".$i, $record); - $i+=1; + $i++; } $this->updateOffsets($records); diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php b/inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php rename to inc/3rdparty/libraries/MOBIClass/PreprocessedArticle.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php b/inc/3rdparty/libraries/MOBIClass/RecognizeURL.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php rename to inc/3rdparty/libraries/MOBIClass/RecognizeURL.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php b/inc/3rdparty/libraries/MOBIClass/Record.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php rename to inc/3rdparty/libraries/MOBIClass/Record.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php b/inc/3rdparty/libraries/MOBIClass/RecordFactory.php similarity index 84% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php rename to inc/3rdparty/libraries/MOBIClass/RecordFactory.php index 8bf0c97db..12806fe38 100644 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php +++ b/inc/3rdparty/libraries/MOBIClass/RecordFactory.php @@ -62,21 +62,7 @@ class RecordFactory { } public function createFLISRecord(){ - - $this->elements = new FileElement(array( - "offsetL0"=>new FileString("FLIS", 4), //FLIS - "offsetL4"=>new FileInt(0x08), - "offsetL8"=>new FileShort(0x41), - "offsetL10"=>new FileTri(), - "offsetL16"=>new FileInt(0xFFFFFFFF), - "offsetL20"=>new FileShort(0x01), - "offsetL22"=>new FileShort(0x03), - "offsetL24"=>new FileInt(0x03), - "offsetL28"=>new FileInt(0x01), - "offsetL32"=>new FileInt(0xFFFFFFFF) - )); - - /*$r = "FLIS"; + $r = "FLIS"; $r .= $this->asString(8, 4); $r .= $this->asString(65, 2); $r .= $this->asString(0, 2); @@ -87,7 +73,7 @@ class RecordFactory { $r .= $this->asString(3, 4); $r .= $this->asString(1, 4); $r .= $this->asString(-1, 4); - return new Record($r);*/ + return new Record($r); } private function asString($int, $size){ diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php b/inc/3rdparty/libraries/MOBIClass/Settings.php similarity index 92% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php rename to inc/3rdparty/libraries/MOBIClass/Settings.php index 6bde0ba9a..ddcf2054c 100644 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php +++ b/inc/3rdparty/libraries/MOBIClass/Settings.php @@ -19,6 +19,7 @@ class Settings { * be added with a key/value pair format. */ public function __construct($additionalSettings = array()) { + // Most values shouldn't be changed (the result will be an invalid file) $this->values = array( "attributes"=>0, "version"=>0, @@ -48,13 +49,14 @@ class Settings { "minimumVersion"=>6, "huffmanRecordOffset"=>0, "huffmanRecordCount"=>0, - "exthFlags"=>0x50, + "exthFlags"=>0x40, "drmOffset"=>0xFFFFFFFF, - "drmCount"=>0xFFFFFFFF, + "drmCount"=>0, "drmSize"=>0, "drmFlags"=>0, "extraDataFlags"=>0, "exthIdentifier"=>"EXTH", + // These can be changed without any risk "title"=>"Unknown title", "author"=>"Unknown author", "subject"=>"Unknown subject" diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php b/inc/3rdparty/libraries/MOBIClass/constants.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php rename to inc/3rdparty/libraries/MOBIClass/constants.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/downloaders/FanFictionNet.php b/inc/3rdparty/libraries/MOBIClass/downloaders/FanFictionNet.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/downloaders/FanFictionNet.php rename to inc/3rdparty/libraries/MOBIClass/downloaders/FanFictionNet.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php b/inc/3rdparty/libraries/MOBIClass/http_build_url.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php rename to inc/3rdparty/libraries/MOBIClass/http_build_url.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/JSLikeHTMLElement.php b/inc/3rdparty/libraries/MOBIClass/readability/JSLikeHTMLElement.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/readability/JSLikeHTMLElement.php rename to inc/3rdparty/libraries/MOBIClass/readability/JSLikeHTMLElement.php diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php b/inc/3rdparty/libraries/MOBIClass/readability/Readability.php similarity index 100% rename from inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php rename to inc/3rdparty/libraries/MOBIClass/readability/Readability.php diff --git a/inc/3rdparty/libraries/mpdf/mpdf.php b/inc/3rdparty/libraries/mpdf/mpdf.php index dbe16fef8..f12dfec0d 100644 --- a/inc/3rdparty/libraries/mpdf/mpdf.php +++ b/inc/3rdparty/libraries/mpdf/mpdf.php @@ -7451,7 +7451,7 @@ function Output($name='',$dest='') // don't use length if server using compression header('Content-Length: '.strlen($this->buffer)); } - header('Content-disposition: inline; filename="'.$name.'"'); + header('Content-disposition: attachment; filename="'.$name.'"'); header('Cache-Control: public, must-revalidate, max-age=0'); header('Pragma: public'); header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php deleted file mode 100644 index a2b0fee87..000000000 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php +++ /dev/null @@ -1,49 +0,0 @@ -elements = new FileElement(array( - - "offset44"=>new FileInt(0xe98e0d0a) - )); - } - public function getByteLength(){ - return $this->getLength(); - } - - public function getLength(){ - return $this->elements->getByteLength(); - } - - public function get(){ - return $this; - } - - public function set($elements){ - throw new Exception("Unallowed set"); - } - - public function serialize() { - return $this->elements->serialize(); - } - - public function unserialize($data) { - $this->elements->unserialize($data); - } - - public function __toString(){ - $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n"; - $output .= $this->elements; - return $output; - } - -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php deleted file mode 100644 index 9e72cc1c5..000000000 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php +++ /dev/null @@ -1,59 +0,0 @@ -elements = new FileElement(array( - "offset0"=>new FileString("FCIS", 4), //FCIS - "offset4"=>new FileInt(0x014), - "offset8"=>new FileInt(0x10), - "offset12"=>new FileInt(0x01), - "offset16"=>new FileInt(), - "offset20"=>new FileInt($leng), - "offset24"=>new FileInt(), - "offset28"=>new FileInt(0x20), - "offset32"=>new FileInt(0x08), - "offset36"=>new FileShort(0x01), - "offset38"=>new FileShort(0x01), - "offset40"=>new FileInt() - )); - } - public function getByteLength(){ - return $this->getLength(); - } - - public function getLength(){ - return $this->elements->getByteLength(); - } - - public function get(){ - return $this; - } - - public function set($elements){ - throw new Exception("Unallowed set"); - } - - public function serialize() { - return $this->elements->serialize(); - } - - public function unserialize($data) { - $this->elements->unserialize($data); - } - - public function __toString(){ - $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n"; - $output .= $this->elements; - return $output; - } - -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php deleted file mode 100644 index dbd8ecf5a..000000000 --- a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php +++ /dev/null @@ -1,58 +0,0 @@ -elements = new FileElement(array( - "offsetL0"=>new FileString("FLIS", 4), //FLIS - "offsetL4"=>new FileInt(0x08), - "offsetL8"=>new FileShort(0x41), - "offsetL10"=>new FileString(6), - "offsetL16"=>new FileInt(0xFFFFFFFF), - "offsetL20"=>new FileShort(0x01), - "offsetL22"=>new FileShort(0x03), - "offsetL24"=>new FileInt(0x03), - "offsetL28"=>new FileInt(0x01), - "offsetL32"=>new FileInt(0xFFFFFFFF) - - )); - } - public function getByteLength(){ - return $this->getLength(); - } - - public function getLength(){ - return $this->elements->getByteLength(); - } - - public function get(){ - return $this; - } - - public function set($elements){ - throw new Exception("Unallowed set"); - } - - public function serialize() { - return $this->elements->serialize(); - } - - public function unserialize($data) { - $this->elements->unserialize($data); - } - - public function __toString(){ - $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n"; - $output .= $this->elements; - return $output; - } - -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/api.php b/inc/3rdparty/libraries/send2kindle/api.php deleted file mode 100644 index 564c171c0..000000000 --- a/inc/3rdparty/libraries/send2kindle/api.php +++ /dev/null @@ -1,234 +0,0 @@ - service = $service; - } - /* if ( isset($_SESSION[ $this -> session_var_auth_name ] ) ){ - $this -> auth = $_SESSION[ $this -> session_var_auth_name ]; - echo "Loading"; - } else { */ - $this -> clientLogin( $email, $password ); - $this -> get_token(); - /* } */ - } - - - private function request( $url, $type = 'get', $headers = false, $fields = false, $cookie = false){ - - $curl = curl_init(); - - if ( $fields ){ - if ($type == 'get'){ - $url .= '?'.http_build_query( $fields ); - } else { - curl_setopt($curl, CURLOPT_POST, true); - curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($fields) ); - } - } - if ( $headers ){ - curl_setopt($curl, CURLOPT_HEADER, true); - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - } - if ( $cookie ){ - curl_setopt($curl, CURLOPT_COOKIE, $cookie); - } - - curl_setopt($curl, CURLOPT_URL, $url); - if (strpos($url, 'https://') !== false){ - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); - } - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curl, CURLINFO_HEADER_OUT, true); - - $response = array(); - $response['text'] = curl_exec($curl); - $response['info'] = curl_getinfo( $curl); - $response['code'] = curl_getinfo( $curl, CURLINFO_HTTP_CODE ); - $response['body'] = substr( $response['text'], $response['info']['header_size'] ); - - curl_close( $curl ); - return $response; - } - - private function request2google( $url, $type = 'get', $headers = false, $fields = false ){ - if ( $this -> auth ){ - $headers[] = 'Content-type: application/x-www-form-urlencoded'; - $headers[] = 'Authorization: GoogleLogin auth='.$this -> auth; - - if ( strpos( $url, 'http://') === false && strpos( $url, 'https://' ) === false ){ - $url = $this -> reader_api_url.$url; - } - - $response = $this -> request( $url, $type, $headers, $fields); - if ( $response['code'] == 200 ){ - if ( isset( $fields['output'] ) ){ - switch ($fields['output']){ - case 'xml': - return (new SimpleXMLElement( $response['body'] ) ); - break; - case 'json': - default: - return json_decode( $response['body'] ); - break; - } - } else { - return $response['body']; - } - } else { - Throw new AutentificationException('Auth error: server response '.$response['code'] ); - } - - } else { - Throw new AutentificationException('Auth error: not finded Auth token'); - } - } - - public function get_tag_list( $output = 'json' ){ - return $this -> request2google('tag/list', "get", false, array( - 'output' => $output, - 'ck' => time(), - 'client' => $this -> client, - )); - } - public function get_subscription_list( $output = 'json' ){ - return $this -> request2google('subscription/list', "get", false, array( - 'output' => $output, - 'ck' => time(), - 'client' => $this -> client, - )); - } - public function get_preference_list( $output = 'json' ){ - return $this -> request2google('preference/list', "get", false, array( - 'output' => $output, - 'ck' => time(), - 'client' => $this -> client, - )); - } - public function get_unread_count( $output = 'json' ){ - return $this -> request2google('unread-count', "get", false, array( - 'all' => true, - 'output' => $output, - 'ck' => time(), - 'client' => $this -> client, - )); - } - public function get_user_info( $output = 'json' ){ - return $this -> request2google('user-info', "get", false, array( - 'output' => $output, - 'ck' => time(), - 'client' => $this -> client, - )); - } - private function get_token(){ - $this -> token = $this -> request2google('token'); - } - - //get contents functions - /* - r - order - r = n - new items - r = o - old items - r = a - auto sort - - */ - private function get_content( $content_url = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ - $fields = array( - 'ck' => time(), - 'client' => $this -> client, - 'n' => $number, - 'r' => $order, - 'output' => 'json', - ); - if ( !empty($exclude_target) ){$fields['xt'] = $exclude_target;} - if ( !empty($start_time) ){$fields['ot'] = $start_time;} - if ( !empty($continuation) ){$fields['c'] = $continuation;} - - return $this -> request2google('stream/contents/'.Utils::urlencode( $content_url ), 'get', false, $fields); - } - - public function get_content_feed( $feed_url = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ - return $this -> get_content( $feed_url, $number, $order, $exclude_target, $start_time, $continuation ); - } - public function get_content_by_label( $label = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ - return $this -> get_content( (strpos($label, '/') === false?'user/-/label/':'').$label, $number, $order, $exclude_target, $start_time, $continuation ); - } - public function get_content_by_state( $state = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){ - return $this -> get_content( (strpos($state, '/') === false?'user/-/state/com.google/':'').$state, $number, $order, $exclude_target, $start_time, $continuation ); - } - - public function get_unread( $number = 20, $order = 'n' ){ - return $this ->get_content_by_state('reading-list', $number, $order, 'user/-/state/com.google/read'); - } - - public function get_starred($number = 20, $order = 'n'){ - return $this ->get_content_by_state('starred', $number, $order); - } - - /* - Edit functions - */ - private function edit_do( $api_function , $post_fields ){ - $post_fields['T'] = $this -> token; - if ( $this -> request2google( $api_function, "post", false, $post_fields ) == "OK"){ - return true; - } else { - return false; - } - } - - /* public function edit_subscription( - s return $this -> edit_do( 'subscription/edit', - } */ - public function set_state( $itemId, $state = 'read'){ - $post_fields = array( - "i" => $itemId, - "a" => 'user/-/state/com.google/'.$state, - ); - //print_r( $post_fields ); - return $this ->edit_do('edit-tag?client='.$this -> client, $post_fields); - } - - private function clientLogin( $email, $password ){ - - $response = $this -> request( $this -> clientlogin_url, 'post', false, array( - "accountType" => $this -> account_type, - "Email" => $email, - "Passwd" => $password, - "service" => $this -> service, - "source" => $this -> source, - )); - - if ( $response['code'] == 200) { - preg_match("/Auth=([a-z0-9_\-]+)/i", $response['body'], $matches_auth); - if ($matches_auth[1]){ - $this -> auth = $matches_auth[1]; - $_SESSION[ $this -> session_var_auth_name ] = $this -> auth; - return true; - } else { - Throw new AutentificationException('Auth error: not finded Auth token in response'); - } - } else { - Throw new AutentificationException('Auth error: server response '.$response['code'] ); - } - } -} - -//Exceptions -class AutentificationException extends Exception {} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/images.php b/inc/3rdparty/libraries/send2kindle/images.php deleted file mode 100644 index 63f0562a8..000000000 --- a/inc/3rdparty/libraries/send2kindle/images.php +++ /dev/null @@ -1,136 +0,0 @@ -_storage = $storage; - $this->_content = $article_content; - $this->_images_from_content = $this->_get_images_from_content($article_content); - } - - /** - * get images from url - * @param string $content - * @return array images hashtable - */ - private function _get_images_from_content($content) - { - $result = array(); - preg_match_all('/src=\"([a-zA-Z0-9\.\/\-\_\?\+\%\~\&\;\=\:]+)\"/i', $content, $result); - - return $result[1]; - } - - /** - * Start conversion - * @return string converted content - */ - public function convert() - { - foreach ( $this->_images_from_content as $n => $image_url ) - { - $image = $this->_get_image($image_url); - $this->_content = str_replace($image_url, '" recindex="'.(int)basename($image), $this->_content); - } - - return $this->_content; - } - - /** - * Resize image - * @param string $file path - * @param int $new_width max width - */ - private function _resize($file, $new_width = 500) - { - list($width, $height) = getimagesize($file); - - $new_height = 0; - - //setup the new size of the image - if( $width > $new_width ) - { - $ratio = $height/$width; - $new_height = $new_width * $ratio; - } - else - { - $new_width = $width; - $new_height = $height; - } - - // resample the image - $new_image = imagecreatetruecolor($new_width, $new_height); - - $type = exif_imagetype ( $file ); - - switch ( $type ) - { - case IMAGETYPE_JPEG: - $old_image = imagecreatefromjpeg($file); - imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); - imagejpeg($new_image, $file, self::JPEG_QUALITY); - break; - case IMAGETYPE_PNG: - $old_image = imagecreatefrompng($file); - imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); - imagepng($new_image, $file); - break; - case IMAGETYPE_GIF: - $old_image = imagecreatefromgif($file); - imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); - imagegif($new_image, $file); - break; - } - } - - /** - * Resize image - * @return string image path - */ - private function _get_image($url) - { - $image_data = @file_get_contents($url); - - if ( $image_data !== false ) - { - $image_name = $this->_storage->save_image($image_data); - $this->_resize($image_name); - - return $image_name; - } - } - -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/io.php b/inc/3rdparty/libraries/send2kindle/io.php deleted file mode 100644 index 284c08cc9..000000000 --- a/inc/3rdparty/libraries/send2kindle/io.php +++ /dev/null @@ -1,250 +0,0 @@ - - */ -class IO { - - /** - * Max line height - */ - const COMMAND_LENGTH = 50; - - /** - * args for run screen - * @var array - */ - protected static $_args = array - ( - 'help' => array('value' => FALSE, 'description' => 'show help for news2kindle'), - 'grab' => array('value' => FALSE, 'description' => 'grab articles from google reader'), - 'mobi' => array('value' => FALSE, 'description' => 'prepare mobi format'), - 'send' => array('value' => FALSE, 'description' => 'send articles to kindle'), - 'login' => array('value' => NULL, 'description' => 'your login to google account *requred'), - 'password' => array('value' => NULL, 'description' => 'your password to google account *required'), - 'kindle' => array('value' => NULL, 'description' => 'your kindle email *required'), - 'items' => array('value' => 100, 'description' => 'max items to grab in run'), - 'render' => array('value' => 'std', 'description' => 'name of html template for newspapper'), - //'timeout' => array('value' => FALSE, 'description' => 'timeout is most important than items count'), - ); - - /** - * Write on screen text line - * @param string $message - * @param bool $broken_line - */ - public static function msg($message, $broken_line = TRUE) - { - echo ( $broken_line ? "\n" : "" ) . $message; - } - - /** - * Write command for status - * @param string $message - */ - public static function command($message) - { - $output_whitespaces = ''; - - for ($i = strlen($message); $i <= self::COMMAND_LENGTH; ++$i ) - { - $output_whitespaces .= '-'; - } - - self::msg( $message . ' ' . $output_whitespaces.' ' ); - } - - /** - * Status - OK - */ - public static function ok() - { - $colored_string = "\033[1;37m" . "\033[42m" . ' OK ' . "\033[0m"; - self::msg( $colored_string, FALSE ); - } - - /** - * Status - Error - */ - public static function error($message = NULL) - { - $colored_string = "\033[1;37m" . "\033[41m" . ' ERROR ' . "\033[0m"; - self::msg( $colored_string, FALSE ); - - if ( $message !== NULL ) - { - self::msg( ' - ' . $message ); - } - } - - /** - * Get run args - * @param string $name key config - * @return mixed config value - */ - public static function arg($name) - { - return self::$_args[$name]['value']; - } - - /** - * Get config from ini - * @param string $path - * @return void - */ - protected static function _get_config($path) - { - $config = parse_ini_file( $path . 'config.ini' ); - - foreach($config as $key => $value) - { - self::$_args[$key]['value'] = $value; - } - } - - /** - * Prepare args for script - * (from http://php.net/manual/en/features.commandline.php) - * @param array $argv array - * @param string $path - * @return bool success or error - */ - public static function prepare_args($argv, $path) - { - self::command('Parse args'); - - self::_get_config($path); - - array_shift($argv); - $out = array(); - - foreach ( $argv as $arg ) - { - if ( substr($arg,0,2) == '--' ) - { - $eqPos = strpos($arg,'='); - - if ( $eqPos === false ) - { - $key = substr($arg,2); - $out[$key] = isset($out[$key]) ? $out[$key] : true; - } - else - { - $key = substr($arg,2,$eqPos-2); - $out[$key] = substr($arg,$eqPos+1); - } - - } - else if ( substr($arg,0,1) == '-' ) - { - if ( substr($arg,2,1) == '=' ) - { - $key = substr($arg,1,1); - $out[$key] = substr($arg,3); - } - else - { - $chars = str_split(substr($arg,1)); - - foreach ( $chars as $char ) - { - $key = $char; - $out[$key] = isset($out[$key]) ? $out[$key] : true; - } - } - } - else - { - $out[] = $arg; - } - } - - try - { - $args = self::_validate_args($out); - - foreach ( $args as $key => $value ) - { - self::$_args[$key]['value'] = $value; - } - } - catch(Exception $e) - { - self::error($e->getMessage()); - return false; - } - - self::ok(); - - return true; - } - - /** - * Validate args for script - * (from http://php.net/manual/en/features.commandline.php) - * @param array $argv array - * @return array args - */ - private static function _validate_args($args) - { - if( array_key_exists('help', $args) OR array_key_exists('h', $args) ) - { - $args['grab'] = false; - $args['mobi'] = false; - $args['send'] = false; - $args['login'] = false; - $args['password'] = false; - $args['kindle'] = false; - } - - foreach ( $args as $key => $arg ) - { - if ( strlen($key) === 1 ) - { - foreach ( self::$_args as $keyA => $argA ) - { - if($keyA[0] === $key ) - { - unset( $args[$key] ); - $args[$keyA] = $arg; - $key = $keyA; - } - } - } - - if ( ! array_key_exists($key, self::$_args) ) - { - throw new Exception('Param "'.$key.'" is invalid!'); - } - } - - foreach ( self::$_args as $key => $arg ) - { - if( self::$_args[$key]['value'] === NULL AND !array_key_exists($key, $args) ) - { - throw new Exception('Param "'.$key.'" must be declared!'); - } - } - - return $args; - } - - /** - * Prepare help - * @return array - */ - public static function get_help() - { - $output = array(); - - foreach ( self::$_args as $arg => $item ) - { - $output[$arg] = $item['description']; - } - - return $output; - } - -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/readability.php b/inc/3rdparty/libraries/send2kindle/readability.php deleted file mode 100644 index 18c2dbde9..000000000 --- a/inc/3rdparty/libraries/send2kindle/readability.php +++ /dev/null @@ -1,249 +0,0 @@ - - * @date 2011-02-17 - * @link http://www.gracecode.com/ - */ - -define("READABILITY_VERSION", 0.12); - -class Readability2 { - // 保存判定结果的标记位名称 - const ATTR_CONTENT_SCORE = "contentScore"; - - // DOM 解析类目前只支持 UTF-8 编码 - const DOM_DEFAULT_CHARSET = "utf-8"; - - // 当判定失败时显示的内容 - const MESSAGE_CAN_NOT_GET = "Sorry, readability was unable to parse this page for content. \n - If you feel like it should have been able to, - please let me know by mail: lucky[at]gracecode.com"; - - // DOM 解析类(PHP5 已内置) - protected $DOM = null; - - // 需要解析的源代码 - protected $source = ""; - - // 章节的父元素列表 - private $parentNodes = array(); - - // 需要删除的标签 - private $junkTags = Array("style", "form", "iframe", "script", "button", "input", "textarea"); - - // 需要删除的属性 - private $junkAttrs = Array("style", "class", "onclick", "onmouseover", "align", "border", "margin"); - - - /** - * 构造函数 - * @param $input_char 字符串的编码。默认 utf-8,可以省略 - */ - function __construct($source, $input_char = "utf-8") { - $this->source = $source; - - // DOM 解析类只能处理 UTF-8 格式的字符 - $source = mb_convert_encoding($source, 'HTML-ENTITIES', $input_char); - - // 预处理 HTML 标签,剔除冗余的标签等 - $source = $this->preparSource($source); - - // 生成 DOM 解析类 - $this->DOM = new DOMDocument('1.0', $input_char); - try { - //libxml_use_internal_errors(true); - // 会有些错误信息,不过不要紧 :^) - if (!@$this->DOM->loadHTML(''.$source)) { - throw new Exception("Parse HTML Error!"); - } - - foreach ($this->DOM->childNodes as $item) { - if ($item->nodeType == XML_PI_NODE) { - $this->DOM->removeChild($item); // remove hack - } - } - - // insert proper - $this->DOM->encoding = Readability2::DOM_DEFAULT_CHARSET; - } catch (Exception $e) { - // ... - } - } - - - /** - * 预处理 HTML 标签,使其能够准确被 DOM 解析类处理 - * - * @return String - */ - private function preparSource($string) { - // 剔除多余的 HTML 编码标记,避免解析出错 - preg_match("/charset=([\w|\-]+);?/", $string, $match); - if (isset($match[1])) { - $string = preg_replace("/charset=([\w|\-]+);?/", "", $string, 1); - } - - // Replace all doubled-up
      tags with

      tags, and remove fonts. - $string = preg_replace("/[ \r\n\s]*/i", "

      ", $string); - $string = preg_replace("/<\/?font[^>]*>/i", "", $string); - - return trim($string); - } - - - /** - * 删除 DOM 元素中所有的 $TagName 标签 - * - * @return DOMDocument - */ - private function removeJunkTag($RootNode, $TagName) { - $Tags = $RootNode->getElementsByTagName($TagName); - - $i = 0; - while($Tag = $Tags->item($i++)) { - $parentNode = $Tag->parentNode; - $parentNode->removeChild($Tag); - } - - return $RootNode; - } - - /** - * 删除元素中所有不需要的属性 - */ - private function removeJunkAttr($RootNode, $Attr) { - $Tags = $RootNode->getElementsByTagName("*"); - - $i = 0; - while($Tag = $Tags->item($i++)) { - $Tag->removeAttribute($Attr); - } - - return $RootNode; - } - - /** - * 根据评分获取页面主要内容的盒模型 - * 判定算法来自:http://code.google.com/p/arc90labs-readability/ - * - * @return DOMNode - */ - private function getTopBox() { - // 获得页面所有的章节 - $allParagraphs = $this->DOM->getElementsByTagName("p"); - - // Study all the paragraphs and find the chunk that has the best score. - // A score is determined by things like: Number of

      's, commas, special classes, etc. - $i = 0; - while($paragraph = $allParagraphs->item($i++)) { - $parentNode = $paragraph->parentNode; - $contentScore = intval($parentNode->getAttribute(Readability2::ATTR_CONTENT_SCORE)); - $className = $parentNode->getAttribute("class"); - $id = $parentNode->getAttribute("id"); - - // Look for a special classname - if (preg_match("/(comment|meta|footer|footnote)/i", $className)) { - $contentScore -= 50; - } else if(preg_match( - "/((^|\\s)(post|hentry|entry[-]?(content|text|body)?|article[-]?(content|text|body)?)(\\s|$))/i", - $className)) { - $contentScore += 25; - } - - // Look for a special ID - if (preg_match("/(comment|meta|footer|footnote)/i", $id)) { - $contentScore -= 50; - } else if (preg_match( - "/^(post|hentry|entry[-]?(content|text|body)?|article[-]?(content|text|body)?)$/i", - $id)) { - $contentScore += 25; - } - - // Add a point for the paragraph found - // Add points for any commas within this paragraph - if (strlen($paragraph->nodeValue) > 10) { - $contentScore += strlen($paragraph->nodeValue); - } - - // 保存父元素的判定得分 - $parentNode->setAttribute(Readability2::ATTR_CONTENT_SCORE, $contentScore); - - // 保存章节的父元素,以便下次快速获取 - array_push($this->parentNodes, $parentNode); - } - - $topBox = $this->DOM->createElement('div', Readability2::MESSAGE_CAN_NOT_GET); - // Assignment from index for performance. - // See http://www.peachpit.com/articles/article.aspx?p=31567&seqNum=5 - for ($i = 0, $len = sizeof($this->parentNodes); $i < $len; $i++) { - $parentNode = $this->parentNodes[$i]; - $contentScore = intval($parentNode->getAttribute(Readability2::ATTR_CONTENT_SCORE)); - $orgContentScore = intval($topBox->getAttribute(Readability2::ATTR_CONTENT_SCORE)); - - if ($contentScore && $contentScore > $orgContentScore) { - $topBox = $parentNode; - } - } - - // 此时,$topBox 应为已经判定后的页面内容主元素 - return $topBox; - } - - - /** - * 获取 HTML 页面标题 - * - * @return String - */ - public function getTitle() { - $title = $this->DOM->getElementsByTagName("title"); - return $title->item(0); - } - - - /** - * 获取页面的主要内容(Readability 以后的内容) - * - * @return Array - */ - public function getContent() { - if (!$this->DOM) return false; - - // 获取页面标题 - $ContentTitle = $this->getTitle(); - - // 获取页面主内容 - $ContentBox = $this->getTopBox(); - - // 复制内容到新的 DOMDocument - $Target = new DOMDocument; - $Target->appendChild($Target->importNode($ContentBox, true)); - - // 删除不需要的标签 - foreach ($this->junkTags as $tag) { - $Target = $this->removeJunkTag($Target, $tag); - } - - // 删除不需要的属性 - foreach ($this->junkAttrs as $attr) { - $Target = $this->removeJunkAttr($Target, $attr); - } - - // 多个数据,以数组的形式返回 - return Array( - 'title' => $ContentTitle ? $ContentTitle->nodeValue : "", - 'content' => $Target->saveHTML() - ); - } - - function __destruct() { } -} diff --git a/inc/3rdparty/libraries/send2kindle/send.php b/inc/3rdparty/libraries/send2kindle/send.php deleted file mode 100644 index a4861d307..000000000 --- a/inc/3rdparty/libraries/send2kindle/send.php +++ /dev/null @@ -1,69 +0,0 @@ - - */ -class Send { - - /** - * Your kindle email - * @var string - */ - private $_kindle_email; - - /** - * Your email (must be added on amazon) - * @var string - */ - private $_email; - - /** - * Prepare mail - * @param string $kindle_email your kindle email - * @param string $email email for send to kindle - */ - public function __construct($kindle_email, $email) - { - $this->_kindle_email = $kindle_email; - $this->_email = $email; - } - - /** - * Send file - * @param string $file path to file - * @return bool - */ - public function send($file) - { - //prepare file - $file_size = filesize($file); - $filename = basename($file); - $handle = fopen($file, "r"); - $content = fread($handle, $file_size); - fclose($handle); - $content = chunk_split(base64_encode($content)); - - $uid = md5(uniqid(time())); - - //generate header for mail - $header = "From: News2Kindle <".$this->_email.">\r\n"; - $header .= "MIME-Version: 1.0\r\n"; - $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; - $header .= "This is a multi-part message in MIME format.\r\n"; - $header .= "--".$uid."\r\n"; - $header .= "Content-type:text/plain; charset=iso-8859-1\r\n"; - $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; - $header .= "send via News2Kindle script\r\n\r\n"; - $header .= "--".$uid."\r\n"; - $header .= "Content-Type: application/x-mobipocket-ebook; name=\"".$filename."\"\r\n"; - $header .= "Content-Transfer-Encoding: base64\r\n"; - $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; - $header .= $content."\r\n\r\n"; - $header .= "--".$uid."--"; - - //send mail - return mail( $this->_kindle_email, '[newsToKindle] ' . $filename, "", $header ); - } -} - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/storage.php b/inc/3rdparty/libraries/send2kindle/storage.php deleted file mode 100644 index 5c38ce80b..000000000 --- a/inc/3rdparty/libraries/send2kindle/storage.php +++ /dev/null @@ -1,230 +0,0 @@ - - */ -class Storage { - - /** - * Newspapper name - * @var string - */ - private $_name; - - /** - * Default dir - * @var string - */ - private $_default_dir = 'data/'; - - /** - * Info about newspapper - * @var array - */ - private $_info; - - /** - * Prepare storage - * @param string $newspapper - * @param string $default_dir - */ - public function __construct($newspapper, $default_dir = NULL) - { - $this->_name = $newspapper; - - if ( $default_dir !== NULL ) - { - $this->_default_dir = $default_dir; - } - - $this->_info = $this->_get_info(); - } - - /** - * save info before exit from script - */ - public function __destruct() - { - $this->_save_info($this->_info); - } - - /** - * Get path - * @param bool $newspapper path to newspapper - * @return string path to repository - */ - public function get_path($newspapper = true) - { - $path = $this->_default_dir; - - if ( $newspapper ) - { - $path .= $this->_name . '/'; - } - - return $path; - } - - /** - * Get info about newspapper - * @return array newspapper info - */ - private function _get_info() - { - $content = unserialize( $this->_get_file('info.dat') ); - - if( $content === FALSE ) - { - $content = (object) array - ( - 'images_count' => 0, - 'articles_count' => 0, - 'images' => array(), - ); - - $this->_save_info($content); - } - - return $content; - } - - /** - * Get info key - * @param $key - * @return mixed - */ - public function info($key) - { - return $this->_info->$key; - } - - /** - * Save info - * @param array $info info from class - */ - private function _save_info($info) - { - $this->_save_file( 'info.dat', serialize($info) ); - } - - /** - * Save image in storage - * @param resource $image - * @param string $name image name, if null create auto name - * @return string image name - */ - public function save_image($image, $name = NULL) - { - if ( $name === NULL ) - { - $image_name = (string) $this->_info->images_count; - - for ($i=strlen($image_name); $i<6; $i++) - { - $image_name = '0'.$image_name; - } - - $this->_info->images_count++; - $this->_info->images[$this->_info->images_count] = $image_name; - - $name = $image_name; - } - - $this->_save_file($name, $image); - - return $this->_default_dir . $this->_name . '/' . $name; - } - - /** - * Get image - * @param string $name image name - * @return resource - */ - public function get_image($name) - { - return $this->_get_file($name); - } - - /** - * Put article contents - * @param string $id unique id for article - * @param string $title - * @param string $content article content - * @param string $url url for article - * @param object $website - */ - public function add_content($id, $title, $content, $url, $website) - { - $articles = unserialize( $this->_get_file('articles.dat') ); - - $articles[$id] = (object) array - ( - 'id' => $id, - 'title' => $title, - 'content' => $content, - 'url' => $url, - 'website' => $website, - ); - - $this->_save_file( 'articles.dat', serialize($articles) ); - } - - /** - * Get articles contents - * @param string $file_name - * @param string $file_content - */ - public function get_contents() - { - return unserialize( $this->_get_file( 'articles.dat' ) ); - } - - /** - * Get file content - * @param string $file_name - * @param string $file_content - */ - private function _save_file($file_name, $file_content) - { - if( ! file_exists( $this->_default_dir . $this->_name ) ) - { - mkdir( $this->_default_dir . $this->_name, 0777, TRUE ); - } - - file_put_contents($this->_default_dir . $this->_name . '/' . $file_name, $file_content); - } - - /** - * Get file content - * @param string $file_name - * @param string $default_file_content (if file not exists) - * @return string file content - */ - private function _get_file($file_name, $default_file_content = NULL) - { - $content = @file_get_contents($this->_default_dir . $this->_name . '/' . $file_name); - - if ($content === FALSE) - { - return $default_file_content; - } - - return $content; - } - - /** - * Clean newspapper after convert to mobi - */ - public function clean() - { - $files_to_remove = glob($this->_default_dir . $this->_name . '/*'); - - foreach ( $files_to_remove as $file ) - { - unlink( $file ); - } - - rmdir( $this->_default_dir . $this->_name ); - } - -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/send2kindle/utils.php b/inc/3rdparty/libraries/send2kindle/utils.php deleted file mode 100644 index 87cc3de08..000000000 --- a/inc/3rdparty/libraries/send2kindle/utils.php +++ /dev/null @@ -1,37 +0,0 @@ - - */ -class Utils -{ - /** - * URL encode - * @param string $url - * @return string $ar_url - */ - public static function urlencode( $url ) - { - $ar_url = explode( '/', $url ); - - foreach ( $ar_url as $key => $val ) - { - $ar_url[ $key ] = urlencode( $val ); - } - - return implode('/', $ar_url ); - } - - /** - * Prepare ID for google rss article - * @param string $id - * @return string - */ - public static function prepare_id($id) - { - $char_in = array('/', '.', ',', ':'); - $id = str_replace($char_in, '-', $id); - - return $id; - } -} \ No newline at end of file diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index e01d81291..83eabf198 100644 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php @@ -112,12 +112,15 @@ class Routing $this->wallabag->deleteUser($_POST['password4deletinguser']); } elseif (isset($_GET['epub'])) { $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['value']); + $epub->prepareData(); $epub->produceEpub(); } elseif (isset($_GET['mobi'])) { $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); + $mobi->prepareData(); $mobi->produceMobi(); } elseif (isset($_GET['pdf'])) { $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']); + $pdf->prepareData(); $pdf->producePDF(); } elseif (isset($_GET['import'])) { $import = $this->wallabag->import(); diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index 147744257..deaf57e21 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -30,34 +30,35 @@ class WallabagEBooks case 'id': $entryID = filter_var($this->value, FILTER_SANITIZE_NUMBER_INT); $entry = $this->wallabag->store->retrieveOneById($entryID, $this->wallabag->user->getId()); - $entries = array($entry); - $bookTitle = $entry['title']; - $bookFileName = substr($bookTitle, 0, 200); + $this->entries = array($entry); + $this->bookTitle = $entry['title']; + $this->bookFileName = substr($this->bookTitle, 0, 200); break; case 'all': - $entries = $this->wallabag->store->retrieveAll($this->wallabag->user->getId()); - $bookTitle = sprintf(_('All my articles on '), date(_('d.m.y'))); #translatable because each country has it's own date format system - $bookFileName = _('Allarticles') . date(_('dmY')); + $this->entries = $this->wallabag->store->retrieveAll($this->wallabag->user->getId()); + $this->bookTitle = sprintf(_('All my articles on '), date(_('d.m.y'))); #translatable because each country has it's own date format system + $this->bookFileName = _('Allarticles') . date(_('dmY')); break; case 'tag': $tag = filter_var($this->value, FILTER_SANITIZE_STRING); $tags_id = $this->wallabag->store->retrieveAllTags($this->wallabag->user->getId(), $tag); $tag_id = $tags_id[0]["id"]; // we take the first result, which is supposed to match perfectly. There must be a workaround. - $entries = $this->wallabag->store->retrieveEntriesByTag($tag_id, $this->wallabag->user->getId()); - $bookTitle = sprintf(_('Articles tagged %s'), $tag); - $bookFileName = substr(sprintf(_('Tag %s'), $tag), 0, 200); + $this->entries = $this->wallabag->store->retrieveEntriesByTag($tag_id, $this->wallabag->user->getId()); + $this->bookTitle = sprintf(_('Articles tagged %s'), $tag); + $this->bookFileName = substr(sprintf(_('Tag %s'), $tag), 0, 200); break; case 'category': $category = filter_var($this->value, FILTER_SANITIZE_STRING); - $entries = $this->wallabag->store->getEntriesByView($category, $this->wallabag->user->getId()); - $bookTitle = sprintf(_('All articles in category %s'), $category); - $bookFileName = substr(sprintf(_('Category %s'), $category), 0, 200); + $this->entries = $this->wallabag->store->getEntriesByView($category, $this->wallabag->user->getId()); + $this->bookTitle = sprintf(_('All articles in category %s'), $category); + $this->bookFileName = substr(sprintf(_('Category %s'), $category), 0, 200); break; case 'search': $search = filter_var($this->value, FILTER_SANITIZE_STRING); - $entries = $this->store->search($search, $this->wallabag->user->getId()); - $bookTitle = sprintf(_('All articles for search %s'), $search); - $bookFileName = substr(sprintf(_('Search %s'), $search), 0, 200); + Tools::logm($search); + $this->entries = $this->wallabag->store->search($search, $this->wallabag->user->getId()); + $this->bookTitle = sprintf(_('All articles for search %s'), $search); + $this->bookFileName = substr(sprintf(_('Search %s'), $search), 0, 200); break; case 'default': die(_('Uh, there is a problem while generating epub.')); @@ -94,7 +95,7 @@ class WallabagEpub extends WallabagEBooks $log->logLine("getCurrentServerURL: " . $book->getCurrentServerURL()); $log->logLine("getCurrentPageURL..: " . $book->getCurrentPageURL()); - $book->setTitle($bookTitle); + $book->setTitle($this->bookTitle); $book->setIdentifier("http://$_SERVER[HTTP_HOST]", EPub::IDENTIFIER_URI); // Could also be the ISBN number, prefered for published books, or a UUID. //$book->setLanguage("en"); // Not needed, but included for the example, Language is mandatory, but EPub defaults to "en". Use RFC3066 Language codes, such as "en", "da", "fr" etc. $book->setDescription(_("Some articles saved on my wallabag")); @@ -111,7 +112,7 @@ class WallabagEpub extends WallabagEBooks $log->logLine("Add Cover"); - $fullTitle = "

      " . $bookTitle . "

      \n"; + $fullTitle = "

      " . $this->bookTitle . "

      \n"; $book->setCoverImage("Cover.png", file_get_contents("themes/baggy/img/apple-touch-icon-152.png"), "image/png", $fullTitle); @@ -122,7 +123,7 @@ class WallabagEpub extends WallabagEBooks $book->buildTOC(); - foreach ($entries as $entry) { //set tags as subjects + foreach ($this->entries as $entry) { //set tags as subjects $tags = $this->wallabag->store->retrieveTagsByEntry($entry['id']); foreach ($tags as $tag) { $book->setSubject($tag['value']); @@ -139,97 +140,82 @@ class WallabagEpub extends WallabagEBooks $book->addChapter("Log", "Log.html", $content_start . $log->getLog() . "\n" . $bookEnd); // log generation } $book->finalize(); - $zipData = $book->sendBook($bookFileName); + $zipData = $book->sendBook($this->bookFileName); } } class WallabagMobi extends WallabagEBooks { /** - * Adapted from News2Kindle - * @author Jakub Westfalewski - * + * MOBI Class + * @author Sander Kromwijk */ - public function produceMobi() + public function produceMobi($send = FALSE) { - $storage = new Storage('static'); - $this->prepareData(); - foreach ($entries as $i => $item) { - $content = $item['content']; - $images = new Images($storage, $content); - $content = $images->convert(); - $storage->add_content - ( - md5($item['title']), - mb_convert_encoding($item['title'], 'HTML-ENTITIES', 'utf-8'), - $content, - $item['url']], - "" - ); - } - $articles = $storage->get_contents(); - $toc = array(); - $articles_count = count($articles); - foreach($articles as $article){ - if(array_key_exists($article->website->title, $toc)){ - $toc[$article->website->title]->articles[] = $article; - }else{ - $toc[$article->website->title] = (object)array( - 'articles' => array($article), - 'title' => $article->website->title, - 'streamId' => $article->website->streamId, - 'url' => $article->website->htmlUrl, - ); - } + # Good try + $mobi = new MOBI(); + + $content = new MOBIFile(); + + $content->set("title", $this->bookTitle); + $content->set("author", "wallabag"); + + # introduction + //$content->appendChapterTitle("Cover"); + $content->appendParagraph('

      ' . _('Produced by wallabag with PHPMobi') . '

      '. _('Please open an issue if you have trouble with the display of this E-Book on your device.') . '

      '); + $content->appendImage(imagecreatefrompng("themes/baggy/img/apple-touch-icon-152.png")); + $content->appendPageBreak(); + + foreach ($this->entries as $item) { + $content->appendChapterTitle($item['title']); + $content->appendParagraph($item['content']); + $content->appendPageBreak(); } + $mobi->setContentProvider($content); - $mobi = new MOBI(); - $mobi->setData($content); - $mobi->setOptions(array( - 'title' => 'Articles from '.date('Y-m-d'), - 'author' => 'wallabag', - 'subject' => 'Articles from '.date('Y-m-d'), - )); - - $images = array(); - - //prepare images for mobi format - foreach ( $storage->info('images') as $n => $image ) - { - $images[$n] = new FileRecord(new Record(file_get_contents($storage->get_path() . $image))); - } - - $mobi->setImages($images); - $mobi->save( $storage->get_path(FALSE) . 'articles-' . date('Y-m-d') . '.mobi'); - - $storage->clean(); - - if ($send) { - $files = glob($storage->get_path(FALSE).'*.mobi'); - $mail = new Send(KINDLEMAIL,MAIL); - foreach ( $files as $file_mobi ) - { - $mail->send( $file_mobi ); - } - // clean cache - foreach ( $files as $file_mobi ) - { - unlink( $file_mobi ); - } - } - } + $mobi->download($this->bookFileName.".mobi"); + } } class WallabagPDF extends WallabagEbooks { public function producePDF() { + //$this->prepareData(); $mpdf = new mPDF('c'); - $mpdf->WriteHTML($html); - $mpdf->Output(); - exit; + # intro + + $html = '

      ' . $this->bookTitle . '

      '; + + foreach ($this->entries as $item) { + $html .= '

      ' . $item['title'] . '

      '; + $html .= ''; + $html .= $item['content']; + } + + //$mpdf->h2toc = array('H1'=>0); + + # headers + $mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|Produced with wallabag'); + $mpdf->SetFooter('{PAGENO}'); + + $mpdf->WriteHTML($html); + + # remove characters that make mpdf bug + $char_in = array('/', '.', ',', ':', '|'); + $pdfExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.pdf')); + + $mpdf->Output('cache/' . $pdfExportName); + + header('Content-Disposition: attachment; filename="' . $pdfExportName . '"'); + + header('Content-Transfer-Encoding: base64'); + header('Content-Type: application/pdf'); + echo file_get_contents('cache/' . $pdfExportName); + + //exit; } } \ No newline at end of file diff --git a/inc/poche/global.inc.php b/inc/poche/global.inc.php index 1542fbfa7..182f721de 100755 --- a/inc/poche/global.inc.php +++ b/inc/poche/global.inc.php @@ -42,11 +42,7 @@ require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPub.php'; require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPubChapterSplitter.php'; # mobi library -require_once INCLUDES . '/3rdparty/libraries/send2kindle/send.php'; -require_once INCLUDES . '/3rdparty/libraries/send2kindle/images.php'; -require_once INCLUDES . '/3rdparty/libraries/send2kindle/storage.php'; -require_once INCLUDES . '/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php'; -require_once INCLUDES . '/3rdparty/libraries/send2kindle/utils.php'; +require_once INCLUDES . '/3rdparty/libraries/MOBIClass/MOBI.php'; # pdf library require_once INCLUDES . '/3rdparty/libraries/mpdf/mpdf.php'; diff --git a/themes/baggy/config.twig b/themes/baggy/config.twig index 46735f074..cd86a4fde 100755 --- a/themes/baggy/config.twig +++ b/themes/baggy/config.twig @@ -20,7 +20,7 @@

      GA>4%gqE^ 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 z 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�$>g3VQ|+1kUu+gFai3KfHK)v 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

    6. -
    7. {% trans "Bookmarklet: drag & drop this link to your bookmarks bar" %} {% trans "bag it!" %}
    8. +
    9. {% trans "Bookmarklet: drag & drop this link to your bookmarks bar" %} {% trans "bag it!" %}
    10. {% trans "Upgrading wallabag" %}

      @@ -126,7 +126,13 @@

      {% trans "Click here" %} {% trans "to export your wallabag data." %}

      {% trans "Fancy an E-Book ?" %}

      -

      {% trans "Click on this link to get all your articles in one ebook (ePub 3 format)." %} +

      {% trans "Click to get all your articles in one ebook :" %} +

      +
      {% trans "This can take a while and can even fail if you have too many articles, depending on your server configuration." %}

      {% trans "Cache" %}

      diff --git a/themes/baggy/home.twig b/themes/baggy/home.twig index e788b588f..4f4152200 100755 --- a/themes/baggy/home.twig +++ b/themes/baggy/home.twig @@ -43,7 +43,7 @@ {% if entry.content| getReadingTime > 0 %} {% else %} - + {% endif %}

      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

      From d07abb5c42a816c94d05c5a1d7a78122e1b8b65c Mon Sep 17 00:00:00 2001 From: tcit Date: Thu, 24 Jul 2014 22:01:35 +0200 Subject: [PATCH 005/119] updated mpdf to 5.7.2 --- .../libraries/mpdf/classes/barcode.php | 1 + .../libraries/mpdf/classes/cssmgr.php | 10 +- inc/3rdparty/libraries/mpdf/classes/svg.php | 333 ++++++++++++------ .../libraries/mpdf/classes/tocontents.php | 3 +- .../libraries/mpdf/includes/functions.php | 32 +- inc/3rdparty/libraries/mpdf/mpdf.php | 328 ++++++++++------- 6 files changed, 462 insertions(+), 245 deletions(-) diff --git a/inc/3rdparty/libraries/mpdf/classes/barcode.php b/inc/3rdparty/libraries/mpdf/classes/barcode.php index 2a0026934..9a230f0e1 100644 --- a/inc/3rdparty/libraries/mpdf/classes/barcode.php +++ b/inc/3rdparty/libraries/mpdf/classes/barcode.php @@ -871,6 +871,7 @@ class PDFBarcode { * Very capable code, excellent density, high reliability; in very wide use world-wide */ protected function barcode_c128($code, $type='B', $ean=false) { + $code = strcode2utf($code); // mPDF 5.7.1 Allows e.g. $chr = array( '212222', /* 00 */ '222122', /* 01 */ diff --git a/inc/3rdparty/libraries/mpdf/classes/cssmgr.php b/inc/3rdparty/libraries/mpdf/classes/cssmgr.php index 9bbbed9c2..db3250349 100644 --- a/inc/3rdparty/libraries/mpdf/classes/cssmgr.php +++ b/inc/3rdparty/libraries/mpdf/classes/cssmgr.php @@ -221,9 +221,8 @@ function ReadCSS($html) { } } - // mPDF 5.5.13 // Replace any background: url(data:image... with temporary image file reference - preg_match_all("/(url\(data:image\/(jpeg|gif|png);base64,(.*)\))/si", $CSSstr, $idata); + preg_match_all("/(url\(data:image\/(jpeg|gif|png);base64,(.*?)\))/si", $CSSstr, $idata); // mPDF 5.7.2 if (count($idata[0])) { for($i=0;$i0){ + if (substr_count($critere_style['fill'],'url')>0 && $element != 'line'){ // // couleur degrad $id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['fill']); @@ -926,7 +939,7 @@ $md = $sy * cos($t); } // mPDF 4.4.005 Used as indirect setting for currentColor - else if (strtolower($critere_style['fill']) == 'currentcolor'){ + else if (strtolower($critere_style['fill']) == 'currentcolor' && $element != 'line'){ $col = $this->mpdf_ref->ConvertColor($critere_style['color']); if ($col) { // mPDF 5.0.051 @@ -937,7 +950,7 @@ $md = $sy * cos($t); $style .= 'F'; } } - else if ($critere_style['fill'] != 'none'){ + else if ($critere_style['fill'] != 'none' && $element != 'line'){ $col = $this->mpdf_ref->ConvertColor($critere_style['fill']); if ($col) { // mPDF 5.0.051 @@ -1898,12 +1911,10 @@ function Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag) $xbase = $x; $ybase = -$y; - // mPDF 5.0.041 - // mPDF 5.0.051 - $path_cmd = sprintf('q BT /F%d %s %.3F Tf %.3F %.3F Td %s Tr %s %s %s Tj ET Q ',$this->mpdf_ref->CurrentFont['i'],$opacitystr, $this->mpdf_ref->FontSizePt,$pdfx*$this->kp,$pdfy*$this->kp,$render,$fillstr,$strokestr,$txt)."\n"; + // mPDF 5.7.2 + $path_cmd = sprintf('q BT /F%d %.3F Tf %s %.3F %.3F Td %s Tr %s %s %s Tj ET Q ',$this->mpdf_ref->CurrentFont['i'], $this->mpdf_ref->FontSizePt, $opacitystr, $pdfx*$this->kp,$pdfy*$this->kp,$render,$fillstr,$strokestr,$txt)."\n"; unset($this->txt_data[0], $this->txt_data[1],$this->txt_data[2]); - // mPDF 5.4.12 if (isset($current_style['font-size-parent'])) { $this->mpdf_ref->SetFontSize($current_style['font-size-parent']); } @@ -1912,7 +1923,6 @@ function Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag) { return ' '; } -// $path_cmd .= 'h '; // mPDF 5.0 return $path_cmd; } @@ -1964,8 +1974,8 @@ function svgDefineTxtStyle($critere_style) $tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']); if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;} - // mPDF 5.0.039 - $tmp = preg_replace("/(.*)font-family:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']); + // mPDF 5.7.2 + $tmp = preg_replace("/(.*)font-family:\s*([a-z0-9.\"' ,\-]*|none)(.*)/i","$2",$critere_style['style']); if ($tmp != $critere_style['style']){ $critere_style['font-family'] = $tmp;} $tmp = preg_replace("/(.*)font-size:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']); @@ -2120,15 +2130,15 @@ function svgDefineTxtStyle($critere_style) } - // mPDF 4.4.003 if (preg_match('/xlink:href=/si',$data)) { + // GRADIENTS // Get links preg_match_all('/(<(linearGradient|radialgradient)[^>]*)xlink:href=["\']#(.*?)["\'](.*?)\/>/si',$data, $links); - if (count($links[0])) { $links[5] = array(); } // mPDF 4.5.010 + if (count($links[0])) { $links[5] = array(); } // Delete links from data - keeping in $links for ($i=0; $i' , $data); // mPDF 4.5.010 + $links[5][$i] = 'tmpLink'.RAND(100000,9999999); + $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', '' , $data); } // Get targets preg_match_all('/<(linearGradient|radialgradient)([^>]*)id=["\'](.*?)["\'](.*?)>(.*?)<\/(linearGradient|radialgradient)>/si',$data, $m); @@ -2140,13 +2150,110 @@ function svgDefineTxtStyle($critere_style) } // Add back links this time as targets (gradients) for ($i=0; $i'. $stops[$links[3][$i]].'' ; // mPDF 4.5.010 - $data = preg_replace('//is', $def , $data); // mPDF 4.5.010 + $def = $links[1][$i] .' '.$links[4][$i].'>'. $stops[$links[3][$i]].'' ; + $data = preg_replace('//is', $def , $data); + } + + // mPDF 5.7.2 + // + preg_match_all('/]*)xlink:href=["\']#([^>]*?)["\']([^>]*)\/>/si',$data, $links); + for ($i=0; $i]*id=["\']'.$links[2][$i].'["\'][^>]*\/>/si',$data, $m)) { + $insert = $m[0]; + } + if (!$insert && preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\']/si',$data, $m)) { + + if (preg_match('/<'.$m[1].'[^>]*id=["\']'.$links[2][$i].'["\'][^>]*>.*?<\/'.$m[1].'>/si',$data, $m)) { + $insert = $m[0]; + } + } + + if ($insert) { + + $inners = $links[1][$i] . ' ' . $links[3][$i]; + // Change x,y coords to translate() + if (preg_match('/y=["\']([^>]*?)["\']/', $inners, $m)) { $y = $m[1]; } + else { $y = 0; } + if (preg_match('/x=["\']([^>]*?)["\']/', $inners, $m)) { $x = $m[1]; } + else { $x = 0; } + if ($x || $y) { + $inners = preg_replace('/(y|x)=["\']([^>]*?)["\']/', '', $inners); + if (preg_match('/transform=["\']([^>]*?)["\']/', $inners, $m)) { + if (preg_match('/translate\(\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*\)/', $m[1], $mm)) { + $transform = $m[1]; // transform="...." + $x += $mm[1]; + $y += $mm[2]; + $transform = preg_replace('/'.preg_quote($mm[0],'/').'/', '', $transform); + $transform = 'transform="'.$transform.' translate('.$x.', '.$y.')"'; + $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', $transform, $inners); + } + else { + $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', 'transform="'.$m[1].' translate('.$x.', '.$y.')"', $inners); + } + } + else { + $inners .= ' transform="translate('.$x.', '.$y.')"'; + } + } + } + $replacement = ''.$insert.''; + $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', $replacement, $data); + } + preg_match_all('/]*)xlink:href=["\']#([^>]*?)["\']([^>]*)>\s*<\/use>/si',$data, $links); + for ($i=0; $i]*id=["\']'.$links[2][$i].'["\'][^>]*\/>/si',$data, $m)) { + $insert = $m[0]; + } + if (!$insert && preg_match('/<([a-zA-Z]*) [^>]*id=["\']'.$links[2][$i].'["\']/si',$data, $m)) { + + if (preg_match('/<'.$m[1].'[^>]*id=["\']'.$links[2][$i].'["\'][^>]*>.*?<\/'.$m[1].'>/si',$data, $m)) { + $insert = $m[0]; + } + } + + if ($insert) { + + $inners = $links[1][$i] . ' ' . $links[3][$i]; + // Change x,y coords to translate() + if (preg_match('/y=["\']([^>]*?)["\']/', $inners, $m)) { $y = $m[1]; } + else { $y = 0; } + if (preg_match('/x=["\']([^>]*?)["\']/', $inners, $m)) { $x = $m[1]; } + else { $x = 0; } + if ($x || $y) { + $inners = preg_replace('/(y|x)=["\']([^>]*?)["\']/', '', $inners); + if (preg_match('/transform=["\']([^>]*?)["\']/', $inners, $m)) { + if (preg_match('/translate\(\s*([0-9\.]+)\s*,\s*([0-9\.]+)\s*\)/', $m[1], $mm)) { + $transform = $m[1]; // transform="...." + $x += $mm[1]; + $y += $mm[2]; + $transform = preg_replace('/'.preg_quote($mm[0],'/').'/', '', $transform); + $transform = 'transform="'.$transform.' translate('.$x.', '.$y.')"'; + $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', $transform, $inners); + } + else { + $inners = preg_replace('/'.preg_quote($m[0],'/').'/is', 'transform="'.$m[1].' translate('.$x.', '.$y.')"', $inners); + } + } + else { + $inners .= ' transform="translate('.$x.', '.$y.')"'; + } + } + $replacement = ''.$insert.''; + $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', $replacement, $data); + + + } } } - // mPDF 4.4.003 - Removes + // Removes $data = preg_replace('//is', '', $data); - // mPDF 4.4.003 - Removes + // Removes $data = preg_replace('//is', '', $data); $this->svg_info['data'] = $data; @@ -2155,14 +2262,96 @@ function svgDefineTxtStyle($critere_style) // // chargement unique des fonctions - if(!function_exists("xml_svg2pdf_start")){ // mPDF 5.3.76 + if(!function_exists("xml_svg2pdf_start")){ function xml_svg2pdf_start($parser, $name, $attribs){ // // definition global $svg_class, $last_gradid; - // mPDF 4.4.003 + // mPDF 5.7.2 + if (strtolower($name) == 'lineargradient'){ + $tmp_gradient = array( + 'type' => 'linear', + 'info' => array( + 'x1' => $attribs['x1'], + 'y1' => $attribs['y1'], + 'x2' => $attribs['x2'], + 'y2' => $attribs['y2'] + ), + 'transform' => $attribs['gradientTransform'], + 'units' => $attribs['gradientUnits'], + 'spread' => $attribs['spreadMethod'], + 'color' => array() + ); + $last_gradid = $attribs['id']; + $svg_class->svgAddGradient($attribs['id'],$tmp_gradient); + return; + } + else if (strtolower($name) == 'radialgradient'){ + $tmp_gradient = array( + 'type' => 'radial', + 'info' => array( + 'x0' => $attribs['cx'], + 'y0' => $attribs['cy'], + 'x1' => $attribs['fx'], + 'y1' => $attribs['fy'], + 'r' => $attribs['r'] + ), + 'transform' => $attribs['gradientTransform'], + 'units' => $attribs['gradientUnits'], + 'spread' => $attribs['spreadMethod'], + 'color' => array() + ); + $last_gradid = $attribs['id']; + $svg_class->svgAddGradient($attribs['id'],$tmp_gradient); + return; + } + else if (strtolower($name) == 'stop'){ + if (!$last_gradid) break; + if (isset($attribs['style']) AND preg_match('/stop-color:\s*([^;]*)/i',$attribs['style'],$m)) { + $color = trim($m[1]); + } else if (isset($attribs['stop-color'])) { + $color = $attribs['stop-color']; + } + $col = $svg_class->mpdf_ref->ConvertColor($color); + + if ($col{0}==3 || $col{0}==5) { // RGB + $color_final = sprintf('%.3F %.3F %.3F',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255); + $svg_class->svg_gradient[$last_gradid]['colorspace']='RGB'; + } + else if ($col{0}==4 || $col{0}==6) { // CMYK + $color_final = sprintf('%.3F %.3F %.3F %.3F',ord($col{1})/100,ord($col{2})/100,ord($col{3})/100,ord($col{4})/100); + $svg_class->svg_gradient[$last_gradid]['colorspace']='CMYK'; + } + else if ($col{0}==1) { // Grayscale + $color_final = sprintf('%.3F',ord($col{1})/255); + $svg_class->svg_gradient[$last_gradid]['colorspace']='Gray'; + } + + $stop_opacity = 1; + if (isset($attribs['style']) AND preg_match('/stop-opacity:\s*([0-9.]*)/i',$attribs['style'],$m)) { + $stop_opacity = $m[1]; + } else if (isset($attribs['stop-opacity'])) { + $stop_opacity = $attribs['stop-opacity']; + } + else if ($col{0}==5) { // RGBa + $stop_opacity = ord($col{4}/100); + } + else if ($col{0}==6) { // CMYKa + $stop_opacity = ord($col{5}/100); + } + + $tmp_color = array( + 'color' => $color_final, + 'offset' => $attribs['offset'], + 'opacity' => $stop_opacity + ); + array_push($svg_class->svg_gradient[$last_gradid]['color'],$tmp_color); + return; + } + if ($svg_class->inDefs) { return; } + $svg_class->xbase = 0; $svg_class->ybase = 0; switch (strtolower($name)){ @@ -2293,99 +2482,6 @@ function svgDefineTxtStyle($critere_style) $path_style = $svg_class->svgDefineStyle($critere_style); break; - case 'lineargradient': - $tmp_gradient = array( - 'type' => 'linear', - 'info' => array( - 'x1' => $attribs['x1'], - 'y1' => $attribs['y1'], - 'x2' => $attribs['x2'], - 'y2' => $attribs['y2'] - ), - 'transform' => $attribs['gradientTransform'], - 'units' => $attribs['gradientUnits'], /* mPDF 4.4.003 */ - 'spread' => $attribs['spreadMethod'], /* mPDF 5.0.040 */ - 'color' => array() - ); - - $last_gradid = $attribs['id']; - $svg_class->svgAddGradient($attribs['id'],$tmp_gradient); - break; - - case 'radialgradient': - $tmp_gradient = array( - 'type' => 'radial', - 'info' => array( - 'x0' => $attribs['cx'], - 'y0' => $attribs['cy'], - 'x1' => $attribs['fx'], - 'y1' => $attribs['fy'], - 'r' => $attribs['r'] - ), - 'transform' => $attribs['gradientTransform'], - 'units' => $attribs['gradientUnits'], /* mPDF 4.4.003 */ - 'spread' => $attribs['spreadMethod'], /* mPDF 5.0.040 */ - 'color' => array() - ); - - $last_gradid = $attribs['id']; - - $svg_class->svgAddGradient($attribs['id'],$tmp_gradient); - - break; - - case 'stop': - if (!$last_gradid) break; - // mPDF 4.4.003 // mPDF 5.0.040 - if (isset($attribs['style']) AND preg_match('/stop-color:\s*([^;]*)/i',$attribs['style'],$m)) { - $color = trim($m[1]); - } else if (isset($attribs['stop-color'])) { - $color = $attribs['stop-color']; - } - $col = $svg_class->mpdf_ref->ConvertColor($color); - - // mPDF 5.0.051 - // mPDF 5.3.74 - if ($col{0}==3 || $col{0}==5) { // RGB - $color_final = sprintf('%.3F %.3F %.3F',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255); - $svg_class->svg_gradient[$last_gradid]['colorspace']='RGB'; - } - else if ($col{0}==4 || $col{0}==6) { // CMYK - $color_final = sprintf('%.3F %.3F %.3F %.3F',ord($col{1})/100,ord($col{2})/100,ord($col{3})/100,ord($col{4})/100); - $svg_class->svg_gradient[$last_gradid]['colorspace']='CMYK'; - } - else if ($col{0}==1) { // Grayscale - $color_final = sprintf('%.3F',ord($col{1})/255); - $svg_class->svg_gradient[$last_gradid]['colorspace']='Gray'; - } - - - // mPDF 5.0.020 - $stop_opacity = 1; - // mPDF 4.4.003 - if (isset($attribs['style']) AND preg_match('/stop-opacity:\s*([0-9.]*)/i',$attribs['style'],$m)) { - $stop_opacity = $m[1]; - } else if (isset($attribs['stop-opacity'])) { - $stop_opacity = $attribs['stop-opacity']; - } - // mPDF 5.0.051 - // mPDF 5.3.74 - else if ($col{0}==5) { // RGBa - $stop_opacity = ord($col{4}/100); - } - else if ($col{0}==6) { // CMYKa - $stop_opacity = ord($col{5}/100); - } - - $tmp_color = array( - 'color' => $color_final, - 'offset' => $attribs['offset'], - 'opacity' => $stop_opacity - ); - array_push($svg_class->svg_gradient[$last_gradid]['color'],$tmp_color); - break; - - case 'a': if (isset($attribs['xlink:href'])) { unset($attribs['xlink:href']); // this should be a hyperlink @@ -2403,7 +2499,6 @@ function svgDefineTxtStyle($critere_style) break; case 'text': - // mPDF 4.4.003 $array_style = $svg_class->svgDefineStyle($attribs); if ($array_style['transformations']) { $svg_class->svgWriteString(' q '.$array_style['transformations']); @@ -2436,6 +2531,7 @@ function svgDefineTxtStyle($critere_style) function characterData($parser, $data) { global $svg_class; + if ($svg_class->inDefs) { return; } // mPDF 5.7.2 if(isset($svg_class->txt_data[2])) { $svg_class->txt_data[2] .= $data; } @@ -2447,6 +2543,13 @@ function svgDefineTxtStyle($critere_style) function xml_svg2pdf_end($parser, $name){ global $svg_class; + // Don't output stuff inside + // mPDF 5.7.2 + if ($name == 'defs') { + $svg_class->inDefs = false; + return; + } + if ($svg_class->inDefs) { return; } switch($name){ case "g": diff --git a/inc/3rdparty/libraries/mpdf/classes/tocontents.php b/inc/3rdparty/libraries/mpdf/classes/tocontents.php index 4e0065d22..b1b614465 100644 --- a/inc/3rdparty/libraries/mpdf/classes/tocontents.php +++ b/inc/3rdparty/libraries/mpdf/classes/tocontents.php @@ -224,7 +224,6 @@ function insertTOC() { $tocstart=count($this->mpdf->pages); if ($toc_preHTML) { $this->mpdf->WriteHTML($toc_preHTML); } - // mPDF 5.6.19 $html ='
      '; foreach($this->_toc as $t) { @@ -268,7 +267,7 @@ function insertTOC() { $s .= $this->mpdf->PrintBodyBackgrounds(); $s .= $this->mpdf->PrintPageBackgrounds(); - $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$s."\n".'\\1', $this->mpdf->pages[$this->mpdf->page]); + $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->mpdf->uniqstr.')/', "\n".$s."\n".'\\1', $this->mpdf->pages[$this->mpdf->page]); $this->mpdf->pageBackgrounds = array(); //Page footer diff --git a/inc/3rdparty/libraries/mpdf/includes/functions.php b/inc/3rdparty/libraries/mpdf/includes/functions.php index 03f470900..78683af83 100644 --- a/inc/3rdparty/libraries/mpdf/includes/functions.php +++ b/inc/3rdparty/libraries/mpdf/includes/functions.php @@ -1,5 +1,13 @@ * // License: GPL * // * @@ -13,7 +13,7 @@ // ****************************************************************************** -define('mPDF_VERSION','5.7'); +define('mPDF_VERSION','5.7.2'); //Scale factor define('_MPDFK', (72/25.4)); @@ -269,6 +269,7 @@ var $directw; ////////////////////// // INTERNAL VARIABLES ////////////////////// +var $uniqstr; // mPDF 5.7.2 var $writingToC; // mPDF 5.6.38 // mPDF 5.6.01 var $layers; @@ -850,6 +851,7 @@ function mPDF($mode='',$format='A4',$default_font_size=0,$default_font='',$mgl=1 $this->useSubstitutionsMB =& $this->useSubstitutions; $this->writingToC = false; // mPDF 5.6.38 + $this->uniqstr = '20110230'; // mPDF 5.7.2 // mPDF 5.6.01 $this->layers = array(); $this->current_layer = 0; @@ -1146,7 +1148,7 @@ function mPDF($mode='',$format='A4',$default_font_size=0,$default_font='',$mgl=1 $optcore = false; $onlyCoreFonts = false; if (preg_match('/([\-+])aCJK/i',$mode, $m)) { - preg_replace('/([\-+])aCJK/i','',$mode); + $mode = preg_replace('/([\-+])aCJK/i','',$mode); if ($m[1]=='+') { $this->useAdobeCJK = true; } else { $this->useAdobeCJK = false; } } @@ -1682,8 +1684,8 @@ function SetAlpha($alpha, $bm='Normal', $return=false, $mode='B') { $alpha = 1; } $a = array('BM'=>'/'.$bm); - if ($mode=='F' || $mode='B') $a['ca'] = $alpha; - if ($mode=='S' || $mode='B') $a['CA'] = $alpha; + if ($mode=='F' || $mode=='B') $a['ca'] = $alpha; // mPDF 5.7.2 + if ($mode=='S' || $mode=='B') $a['CA'] = $alpha; // mPDF 5.7.2 $gs = $this->AddExtGState($a); if ($return) { return sprintf('/GS%d gs', $gs); } else { $this->_out(sprintf('/GS%d gs', $gs)); } @@ -1765,7 +1767,7 @@ function Close() { $s .= $this->PrintBodyBackgrounds(); $s .= $this->PrintPageBackgrounds(); - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$s."\n".'\\1', $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$s."\n".'\\1', $this->pages[$this->page]); $this->pageBackgrounds = array(); if($this->visibility!='visible') @@ -2344,7 +2346,7 @@ function AddPage($orientation='',$condition='', $resetpagenum='', $pagenumstyle= $s = $this->PrintPageBackgrounds(); // Writes after the marker so not overwritten later by page background etc. - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); $this->pageBackgrounds = array(); $family=$this->FontFamily; $style=$this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : ''); @@ -2485,7 +2487,7 @@ function AddPage($orientation='',$condition='', $resetpagenum='', $pagenumstyle= $s .= $this->PrintBodyBackgrounds(); $s .= $this->PrintPageBackgrounds(); - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$s."\n".'\\1', $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$s."\n".'\\1', $this->pages[$this->page]); $this->pageBackgrounds = array(); } @@ -2545,9 +2547,9 @@ function AddPage($orientation='',$condition='', $resetpagenum='', $pagenumstyle= } // Tiling Patterns - $this->_out('___PAGE___START'.date('jY')); - $this->_out('___BACKGROUND___PATTERNS'.date('jY')); - $this->_out('___HEADER___MARKER'.date('jY')); + $this->_out('___PAGE___START'.$this->uniqstr); + $this->_out('___BACKGROUND___PATTERNS'.$this->uniqstr); + $this->_out('___HEADER___MARKER'.$this->uniqstr); $this->pageBackgrounds = array(); //Set line cap style to square @@ -3628,9 +3630,8 @@ function Cell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='', $curre $oldcolumn = $this->CurrCol; // Automatic page break // Allows PAGE-BREAK-AFTER = avoid to work - if (!$this->tableLevel && (($this->y+$this->divheight>$this->PageBreakTrigger) || ($this->y+$h>$this->PageBreakTrigger) || - ($this->y+($h*2)>$this->PageBreakTrigger && $this->blk[$this->blklvl]['page_break_after_avoid'])) and !$this->InFooter and $this->AcceptPageBreak()) { + ($this->y+($h*2)+$this->blk[$this->blklvl]['padding_bottom']+$this->blk[$this->blklvl]['margin_bottom']>$this->PageBreakTrigger && $this->blk[$this->blklvl]['page_break_after_avoid'])) and !$this->InFooter and $this->AcceptPageBreak()) { // mPDF 5.7.2 $x=$this->x;//Current X position @@ -6086,6 +6087,17 @@ function WriteFlowingBlock( $s) $savedContent = array_pop( $content ); $savedContentB = array_pop($contentB); // mPDF 5.6.20 $savedFont = array_pop( $font ); + + // mPDF 5.7.2 + // e.g: |first chunk |second chunk |[IndexEntry]|doesntfit + if (isset($this->objectbuffer[(count($content)-1)]) && $this->objectbuffer[(count($content)-1)]['OUTER-WIDTH'] < 0.001) { + $savedObj = $this->objectbuffer[(count($content)-1)]; + array_pop( $content ); + array_pop( $contentB ); + array_pop( $font ); + array_pop( $this->objectbuffer ); + } + // trim any trailing spaces off the last bit of content $currContent =& $content[ count( $content ) - 1 ]; $currContent = rtrim( $currContent ); @@ -6347,6 +6359,10 @@ function WriteFlowingBlock( $s) $this->keep_block_together = 0; } + if ($this->kwt && !$is_table) { // mPDF 5.7+ + $this->printkwtbuffer(); + $this->kwt = false; + } /*-- COLUMNS --*/ // COLS @@ -6913,7 +6929,7 @@ function Image($file,$x,$y,$w=0,$h=0,$type='',$link='',$paint=true, $constrain=t if ($this->watermarkImgBehind) { $outstring = $this->watermarkImgAlpha . "\n" . $outstring . "\n" . $this->SetAlpha(1, 'Normal', true) . "\n"; - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$outstring."\n".'\\1', $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', "\n".$outstring."\n".'\\1', $this->pages[$this->page]); } else { $this->_out($outstring); } @@ -7387,7 +7403,7 @@ function Output($name='',$dest='') /*-- PROGRESS-BAR --*/ if ($this->progressBar && ($dest=='D' || $dest=='I')) { if($name=='') { $name='mpdf.pdf'; } - $tempfile = '_tempPDF'.RAND(1,10000); + $tempfile = '_tempPDF'.uniqid(rand(1,100000),true); //Save to local file $f=fopen(_MPDF_TEMP_PATH.$tempfile.'.pdf','wb'); if(!$f) $this->Error('Unable to create temporary output file: '.$tempfile.'.pdf'); @@ -7451,7 +7467,7 @@ function Output($name='',$dest='') // don't use length if server using compression header('Content-Length: '.strlen($this->buffer)); } - header('Content-disposition: attachment; filename="'.$name.'"'); + header('Content-disposition: inline; filename="'.$name.'"'); header('Cache-Control: public, must-revalidate, max-age=0'); header('Pragma: public'); header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); @@ -7501,7 +7517,7 @@ function Output($name='',$dest='') $interval = 3600; if ($handle = opendir(preg_replace('/\/$/','',_MPDF_TEMP_PATH))) { while (false !== ($file = readdir($handle))) { - if (!is_dir($file) && ((filemtime(_MPDF_TEMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) { // mPDF 5.4.19 + if (!is_dir($file) && ((filemtime(_MPDF_TEMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".") && (substr($file, 0, 1) !== '.') && ($file !='dummy.txt')) { // mPDF 5.7 unlink(_MPDF_TEMP_PATH.$file); } } @@ -7576,7 +7592,7 @@ function _puthtmlheaders() { else { $pntstr = ''; } $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg} $html = str_replace($this->aliasNbPg,$nb,$html ); // {nb} - $html = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$html ); + $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html ); // mPDF 5.7 $this->HTMLheaderPageLinks = array(); $this->HTMLheaderPageAnnots = array(); @@ -7602,7 +7618,7 @@ function _puthtmlheaders() { // Writes over the page background but behind any other output on page $os = preg_replace('/\\\\/','\\\\\\\\',$os); - $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.date('jY').')/', "\n".$os."\n".'\\1', $this->pages[$n]); + $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.$this->uniqstr.')/', "\n".$os."\n".'\\1', $this->pages[$n]); $lks = $this->HTMLheaderPageLinks; foreach($lks AS $lk) { @@ -7659,7 +7675,7 @@ function _puthtmlheaders() { else { $pntstr = ''; } $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg} $html = str_replace($this->aliasNbPg,$nb,$html ); // {nb} - $html = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$html ); + $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html ); // mPDF 5.7 $this->HTMLheaderPageLinks = array(); @@ -7694,7 +7710,7 @@ function _puthtmlheaders() { $os .= $this->StopTransform(true)."\n"; // Writes over the page background but behind any other output on page $os = preg_replace('/\\\\/','\\\\\\\\',$os); - $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.date('jY').')/', "\n".$os."\n".'\\1', $this->pages[$n]); + $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.$this->uniqstr.')/', "\n".$os."\n".'\\1', $this->pages[$n]); $lks = $this->HTMLheaderPageLinks; foreach($lks AS $lk) { @@ -7876,10 +7892,10 @@ function _putpages() $thispage=str_replace($this->aliasNbPgGpHex,$r,$thispage); } - $thispage = preg_replace('/(\s*___BACKGROUND___PATTERNS'.date('jY').'\s*)/', " ", $thispage); - $thispage = preg_replace('/(\s*___HEADER___MARKER'.date('jY').'\s*)/', " ", $thispage); - $thispage = preg_replace('/(\s*___PAGE___START'.date('jY').'\s*)/', " ", $thispage); - $thispage = preg_replace('/(\s*___TABLE___BACKGROUNDS'.date('jY').'\s*)/', " ", $thispage); + $thispage = preg_replace('/(\s*___BACKGROUND___PATTERNS'.$this->uniqstr.'\s*)/', " ", $thispage); + $thispage = preg_replace('/(\s*___HEADER___MARKER'.$this->uniqstr.'\s*)/', " ", $thispage); + $thispage = preg_replace('/(\s*___PAGE___START'.$this->uniqstr.'\s*)/', " ", $thispage); + $thispage = preg_replace('/(\s*___TABLE___BACKGROUNDS'.$this->uniqstr.'\s*)/', " ", $thispage); //Page $this->_newobj(); @@ -7928,10 +7944,13 @@ function _putpages() } $annotsnum = 0; + $embeddedfiles = array(); // mPDF 5.7.2 /EmbeddedFiles + if (isset($this->PageLinks[$n])) { $annotsnum += count($this->PageLinks[$n]); } /*-- ANNOTATIONS --*/ if (isset($this->PageAnnots[$n])) { foreach ($this->PageAnnots[$n] as $k => $pl) { + if (!empty($pl['opt']['file'])) { $embeddedfiles[$annotsnum+1] = true ; } // mPDF 5.7.2 /EmbeddedFiles if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { $annotsnum += 2 ; } else { $annotsnum++; } $this->PageAnnots[$n][$k]['pageobj'] = $this->n; @@ -7952,7 +7971,7 @@ function _putpages() if ($annotsnum || $formsnum) { $s = '/Annots [ '; for($i=0;$i<$annotsnum;$i++) { - $s .= ($annotid + $i) . ' 0 R '; + if (!isset($embeddedfiles[$i])) { $s .= ($annotid + $i) . ' 0 R '; } // mPDF 5.7.2 /EmbeddedFiles } $annotid += $annotsnum; /*-- FORMS --*/ @@ -7974,7 +7993,7 @@ function _putpages() $this->_putstream($p); $this->_out('endobj'); } - $this->_putannots($n); + $this->_putannots(); // mPDF 5.7.2 //Pages root $this->offsets[1]=strlen($this->buffer); @@ -7991,7 +8010,7 @@ function _putpages() } -function _putannots($n) { +function _putannots() { // mPDF 5.7.2 $filter=($this->compress) ? '/Filter /FlateDecode ' : ''; $nb=$this->page; for($n=1;$n<=$nb;$n++) @@ -9752,7 +9771,7 @@ function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=fal if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "JPG image may not use CMYK color space - ".$file." - (Image converted to RGB. NB This will alter the colour profile of the image.)"; } $im = @imagecreatefromstring($data); if ($im) { - $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png'; + $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png'; imageinterlace($im, false); $check = @imagepng($im, $tempfile); if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse JPG(CMYK) image'); } @@ -9857,7 +9876,7 @@ function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=fal $w = imagesx($im); $h = imagesy($im); if ($im) { - $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png'; + $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png'; // Alpha channel set if ($pngalpha) { if ($this->PDFA) { $this->Error("PDFA1-b does not permit images with alpha channel transparency (".$file.")."); } @@ -9865,24 +9884,18 @@ function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=fal // generate gray scale pallete for ($c = 0; $c < 256; ++$c) { ImageColorAllocate($imgalpha, $c, $c, $c); } // extract alpha channel - $gammacorr = 2.2; // gamma correction for ($xpx = 0; $xpx < $w; ++$xpx) { for ($ypx = 0; $ypx < $h; ++$ypx) { - //$colorindex = imagecolorat($im, $xpx, $ypx); - //$col = imagecolorsforindex($im, $colorindex); - //$gamma2 = (pow((((127 - $col['alpha']) * 255 / 127) / 255), $gammacorr) * 255); $alpha = (imagecolorat($im, $xpx, $ypx) & 0x7F000000) >> 24; + // mPDF 5.7.2 if ($alpha < 127) { - if ($alpha==0) { $gamma = 255; } - else - $gamma = (pow((((127 - $alpha) * 255 / 127) / 255), $gammacorr) * 255); - imagesetpixel($imgalpha, $xpx, $ypx, $gamma); + imagesetpixel($imgalpha, $xpx, $ypx, (255-($alpha * 2))); } } } // create temp alpha file - $tempfile_alpha = _MPDF_TEMP_PATH.'_tempMskPNG'.RAND(1,10000).'.png'; - if (!is_writable($tempfile_alpha)) { + $tempfile_alpha = _MPDF_TEMP_PATH.'_tempMskPNG'.md5($file).RAND(1,10000).'.png'; + if (!is_writable(_MPDF_TEMP_PATH)) { // mPDF 5.7.2 ob_start(); $check = @imagepng($imgalpha); if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); } @@ -9892,6 +9905,7 @@ function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=fal ob_end_clean(); // extract image without alpha channel $imgplain = imagecreatetruecolor($w, $h); + imagealphablending( $imgplain, false ); // mPDF 5.7.2 imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h); // create temp image file $minfo = $this->_getImage($this->_tempimglnk, false); @@ -9918,6 +9932,7 @@ function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=fal // extract image without alpha channel $imgplain = imagecreatetruecolor($w, $h); + imagealphablending( $imgplain, false ); // mPDF 5.7.2 imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h); // create temp image file @@ -10040,7 +10055,7 @@ function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=fal if (isset($gd['GIF Read Support']) && $gd['GIF Read Support']) { $im = @imagecreatefromstring($data); if ($im) { - $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png'; + $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png'; imagealphablending($im, false); imagesavealpha($im, false); imageinterlace($im, false); @@ -10171,7 +10186,7 @@ function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=fal if (isset($gd['PNG Support']) && $gd['PNG Support']) { $im = @imagecreatefromstring($data); if (!$im) { return $this->_imageError($file, $firsttime, 'Error parsing image file - image type not recognised, and not supported by GD imagecreate'); } - $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png'; + $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.md5($file).RAND(1,10000).'.png'; imagealphablending($im, false); imagesavealpha($im, false); imageinterlace($im, false); @@ -10295,10 +10310,10 @@ function _convImage(&$data, $colspace, $targetcs, $w, $h, $dpi, $mask) { $imgdata .= chr($r).chr($g).chr($b); } if ($mask) { - $col = imagecolorsforindex($im, $rgb); - $gammacorr = 2.2; // gamma correction - $gamma = intval((pow((((127 - $col['alpha']) * 255 / 127) / 255), $gammacorr) * 255)); - $mimgdata .= chr($gamma); + // mPDF 5.7.2 Gamma correction + $alpha = ($rgb & 0x7F000000) >> 24; + if ($alpha < 127) { $mimgdata .= chr(255-($alpha * 2)); } + else { $mimgdata .= chr(0); } } } } @@ -10316,7 +10331,7 @@ function _convImage(&$data, $colspace, $targetcs, $w, $h, $dpi, $mask) { $minfo = array('w'=>$w,'h'=>$h,'cs'=>'DeviceGray','bpc'=>8,'f'=>'FlateDecode','data'=>$mimgdata, 'type'=>'png', 'parms'=>'/DecodeParms <>'); if ($dpi) { $minfo['set-dpi'] = $dpi; } - $tempfile = '_tempImgPNG'.RAND(1,10000).'.png'; + $tempfile = '_tempImgPNG'.md5($file).RAND(1,10000).'.png'; $imgmask = count($this->images)+1; $minfo['i']=$imgmask ; $this->images[$tempfile] = $minfo; @@ -10408,7 +10423,7 @@ function file_get_contents_by_socket($url, &$data) { function _imageTypeFromString(&$data) { $type = ''; - if (substr($data, 6, 4)== 'JFIF' || substr($data, 6, 4)== 'Exif') { + if (substr($data, 6, 4)== 'JFIF' || substr($data, 6, 4)== 'Exif' || substr($data, 0, 2)== chr(255).chr(216)) { // 0xFF 0xD8 // mpDF 5.7.2 $type = 'jpeg'; } else if (substr($data, 0, 6)== "GIF87a" || substr($data, 0, 6)== "GIF89a") { @@ -11117,7 +11132,11 @@ function GetFullPath(&$path,$basepath='') { if (!$basepath) { $basepath = $this->basepath; } //Fix path value $path = str_replace("\\","/",$path); //If on Windows - $path = preg_replace('/^\/\//','http://',$path); // mPDF 5.6.27 + // mPDF 5.7.2 + if (substr($path,0,2) == "//") { + $tr = parse_url($basepath); + $path = $tr['scheme'].':'.$path; + } $regexp = '|^./|'; // Inadvertently corrects "./path/etc" and "//www.domain.com/etc" $path = preg_replace($regexp,'',$path); @@ -11138,7 +11157,10 @@ function GetFullPath(&$path,$basepath='') { else if( strpos($path,":/") === false || strpos($path,":/") > 10) { //It is a Local Link if (substr($path,0,1) == "/") { $tr = parse_url($basepath); - $root = $tr['scheme'].'://'.$tr['host']; + // mPDF 5.7.2 + $root = ''; + if (!empty($tr['scheme'])) { $root .= $tr['scheme'].'://'; } + $root .= $tr['host']; $path = $root . $path; } else { $path = $basepath . $path; } @@ -11350,7 +11372,7 @@ function Header($content='') { if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) { $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']); $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd); - $hd = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd); + $hd = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$hd); // mPDF 5.7 if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; } else { $hff = $this->original_default_font; } if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; } @@ -11421,10 +11443,24 @@ function Header($content='') { /*-- TABLES --*/ function TableHeaderFooter($content='',$tablestartpage='',$tablestartcolumn ='',$horf = 'H',$level, $firstSpread=true, $finalSpread=true) { - if(($horf=='H' || $horf=='F') && !empty($content) && !empty($content[0])) { // mPDF 5.6.61 + if(($horf=='H' || $horf=='F') && !empty($content)) { // mPDF 5.7.2 $table = &$this->table[1][1]; - // Advance down page by half width of top border + // mPDF 5.7.2 + if ($horf=='F') { // Table Footer + $firstrow = count($table['cells']) - $table['footernrows']; + $lastrow = count($table['cells']) - 1; + } + else { // Table Header + $firstrow = 0; + $lastrow = $table['headernrows'] - 1; + } + if(empty($content[$firstrow])) { + if ($this->debug) { $this->Error("<tfoot> must precede <tbody> in a table"); } + else { return; } + } + + // Advance down page by half width of top border if ($horf=='H') { // Only if header if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T']; } else { $adv = $table['max_cell_border_width']['T'] /2 ; } @@ -11438,14 +11474,6 @@ function TableHeaderFooter($content='',$tablestartpage='',$tablestartcolumn ='', } } - if ($horf=='F') { // Table Footer - $firstrow = count($table['cells']) - $table['footernrows']; - $lastrow = count($table['cells']) - 1; - } - else { // Table Header - $firstrow = 0; - $lastrow = $table['headernrows'] - 1; - } $topy = $content[$firstrow][0]['y']-$this->y; @@ -12054,7 +12082,7 @@ function _getHtmlHeight($html) { $html = str_replace('{PAGENO}',$this->pagenumPrefix.$this->docPageNum($this->page).$this->pagenumSuffix,$html); $html = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->docPageNumTotal($this->page).$this->nbpgSuffix,$html ); $html = str_replace($this->aliasNbPg,$this->page,$html ); - $html = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$html ); + $html = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$html ); // mPDF 5.7 $this->HTMLheaderPageLinks = array(); $this->HTMLheaderPageAnnots = array(); $this->HTMLheaderPageForms = array(); @@ -12064,6 +12092,10 @@ function _getHtmlHeight($html) { $this->writingHTMLheader = false; $h = ($this->y - $this->margin_header); $this->Reset(); + // mPDF 5.7.2 - Clear in case Float used in Header/Footer + $this->blk[0]['blockContext'] = 0; + $this->blk[0]['float_endpos'] = 0; + $this->pageoutput[$this->page] = array(); $this->headerbuffer = ''; $this->pageBackgrounds = $savepb; @@ -12489,7 +12521,7 @@ function Footer() { if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) { $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']); $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd); - $hd = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd); + $hd = preg_replace_callback('/\{DATE\s+(.*?)\}/', array($this, 'date_callback') ,$hd); // mPDF 5.7 if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; } else { $hff = $this->original_default_font; } if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; } @@ -12579,7 +12611,7 @@ function hardHyphenate($word, $maxWidth) { else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') { $p = strpos($word, "-", $offset); } - if ($p !== false) { $poss[] = $p - count($poss); } + if ($p !== false) { $poss[] = $p; } // mPDF 5.7.2 else { break; } $offset = $p+1; } @@ -12634,7 +12666,9 @@ function softHyphenate($word, $maxWidth) { else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') { $p = strpos($word, chr(173), $offset); } - if ($p !== false) { $poss[] = $p - count($poss); } + // mPDF 5.7.2 + //if ($p !== false) { $poss[] = $p - count($poss); } + if ($p !== false) { $poss[] = $p; } else { break; } $offset = $p+1; } @@ -13049,7 +13083,8 @@ function WriteHTML($html,$sub=0,$init=true,$close=true) { $cnt += $this->SubstituteCharsMB($a, $i, $e); } if ($this->biDirectional) { // *RTL* - $e = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $e); // *RTL* + // mPDF 5.7+ + $e = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $e ); // *RTL* } // *RTL* // Font-specific ligature substitution for Indic fonts if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($e); // *INDIC* @@ -13343,7 +13378,7 @@ function WriteHTML($html,$sub=0,$init=true,$close=true) { if ($old_page != $new_page) { $s = $this->PrintPageBackgrounds(); // Writes after the marker so not overwritten later by page background etc. - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); $this->pageBackgrounds = array(); $this->page = $new_page; $this->ResetMargins(); @@ -14426,7 +14461,7 @@ function ClearFloats($clear, $blklvl=0) { if ($old_page != $new_page) { $s = $this->PrintPageBackgrounds(); // Writes after the marker so not overwritten later by page background etc. - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); $this->pageBackgrounds = array(); $this->page = $new_page; } @@ -14924,8 +14959,8 @@ function OpenTag($tag,$attr) if (strpos($size,',')) { $size = explode(',',$size); } } else { $size = 'D'; } - if (isset($attr['POS']) && $attr['POS']) { - $pos = $attr['POS']; + if (isset($attr['POSITION']) && $attr['POSITION']) { // mPDF 5.7.2 + $pos = $attr['POSITION']; if (strpos($pos,',')) { $pos = explode(',',$pos); } } else { $pos = 'P'; } @@ -15273,7 +15308,7 @@ function OpenTag($tag,$attr) $this->meter = new meter(); $svg = $this->meter->makeSVG(strtolower($tag), $type, $value, $max, $min, $optimum, $low, $high); //Save to local file - $srcpath= _MPDF_TEMP_PATH.'_tempSVG'.RAND(1,10000).'_'.strtolower($tag).'.svg'; + $srcpath= _MPDF_TEMP_PATH.'_tempSVG'.uniqid(rand(1,100000),true).'_'.strtolower($tag).'.svg'; file_put_contents($srcpath, $svg); $orig_srcpath = $srcpath; $this->GetFullPath($srcpath); @@ -17111,7 +17146,7 @@ function OpenTag($tag,$attr) if ($this->cacheTables) { $this->packTableData = true; // required for cacheTables $this->simpleTables = false; // Cannot co-exist with cacheTables - $table['cache'] = _MPDF_TEMP_PATH.'_tempTblCache'.RAND(1,1000000).'.dat'; + $table['cache'] = _MPDF_TEMP_PATH.'_tempTblCache'.uniqid(rand(1,100000),true).'.dat'; $fh = fopen($table['cache'] , "wb") or $this->Error("When using cacheTables, you must have read/write access to cache files (".$table['cache'] .")"); fwrite($fh, "\x00"); fclose($fh); @@ -18237,10 +18272,7 @@ function OpenTag($tag,$attr) function _getListStyle($ls) { if (stristr($ls,'decimal')) { return '1'; } -/* CSS3 list-styles numeric (selected) + I added tamil -arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya | persian | telugu | thai | urdu -*/ - else if (preg_match('/(disc|circle|square|arabic-indic|bengali|devanagari|gujarati|gurmukhi|kannada|malayalam|oriya|persian|tamil|telugu|thai|urdu)/i',$ls,$m)) { + else if (preg_match('/(disc|circle|square|arabic-indic|bengali|devanagari|gujarati|gurmukhi|kannada|malayalam|oriya|persian|tamil|telugu|thai|urdu|cambodian|khmer|lao)/i',$ls,$m)) { return strtolower(trim($m[1])); } else if (stristr($ls,'lower-roman')) { return 'i'; } @@ -18470,7 +18502,7 @@ function CloseTag($tag) if ($old_page != $new_page) { $s = $this->PrintPageBackgrounds(); // Writes after the marker so not overwritten later by page background etc. - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); $this->pageBackgrounds = array(); $this->page = $new_page; $this->ResetMargins(); @@ -18529,7 +18561,7 @@ function CloseTag($tag) // If width not set, here would need to adjust and output buffer $s = $this->PrintPageBackgrounds(); // Writes after the marker so not overwritten later by page background etc. - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); $this->pageBackgrounds = array(); $this->Reset(); $this->pageoutput[$this->page] = array(); @@ -18561,7 +18593,7 @@ function CloseTag($tag) // If width not set, here would need to adjust and output buffer $s = $this->PrintPageBackgrounds(); // Writes after the marker so not overwritten later by page background etc. - $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); $this->pageBackgrounds = array(); $this->Reset(); $this->pageoutput[$this->page] = array(); @@ -19834,6 +19866,19 @@ arabic-indic | bengali | cambodian | devanagari | gujarati | gurmukhi | kannada $list_item_marker = $rnum . $this->list_number_suffix; $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(5, $cp),strlen($maxnum)).$this->list_number_suffix); break; + case 'khmer': + case 'cambodian': + $cp = 0x17E0; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix); + break; + case 'lao': + $cp = 0x0ED0; + $rnum = $this->dec2other($num, $cp); + $list_item_marker = $rnum . $this->list_number_suffix; + $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(6, $cp),strlen($maxnum)).$this->list_number_suffix); + break; default: if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; } else { $list_item_marker = $num . $this->list_number_suffix; } @@ -20643,10 +20688,10 @@ function _setBorderLine($b, $k=1) { $this->SetLineWidth($b['w']/$k); $this->SetDColor($b['c']); if ($b['c'][0]==5) { // RGBa - $this->SetAlpha($b['c'][4], 'Normal', false, 'S')."\n"; + $this->SetAlpha(ord($b['c'][4])/100, 'Normal', false, 'S')."\n"; // mPDF 5.7.2 } else if ($b['c'][0]==6) { // CMYKa - $this->SetAlpha($b['c'][5], 'Normal', false, 'S')."\n"; + $this->SetAlpha(ord($b['c'][5])/100, 'Normal', false, 'S')."\n"; // mPDF 5.7.2 } } @@ -23767,7 +23812,7 @@ function _tableColumnWidth(&$table,$firstpass=false){ } else { $wi = $c['miw'] - $wis; - foreach ($list as $k) { $wc[$k]['miw'] += ($wc[$k]['miw']/$wisa)*$wi; } + foreach ($list as $k) { if (!isset($wc[$k]['w']) || !$wc[$k]['w']) $wc[$k]['miw'] += ($wc[$k]['miw']/$wisa)*$wi; } // mPDF 5.7.2 } } if ($c['maw'] > $was) { @@ -25813,7 +25858,7 @@ function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0 } } - if ($level==1) { $this->_out('___TABLE___BACKGROUNDS'.date('jY')); } + if ($level==1) { $this->_out('___TABLE___BACKGROUNDS'.$this->uniqstr); } $tableheaderadj = 0; $tablefooteradj = 0; @@ -26076,12 +26121,12 @@ function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0 if ($this->tableBackgrounds) { $s = $this->PrintTableBackgrounds(); if ($this->bufferoutput) { - $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->headerbuffer); - $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->headerbuffer ); + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->headerbuffer); + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->headerbuffer ); } else { - $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); - $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->pages[$this->page]); } $this->tableBackgrounds = array(); } @@ -26103,7 +26148,7 @@ function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0 $this->AddPage($this->CurOrientation); - $this->_out('___TABLE___BACKGROUNDS'.date('jY')); + $this->_out('___TABLE___BACKGROUNDS'.$this->uniqstr); if ($this->tableClipPath ) { $this->_out($this->tableClipPath); } @@ -26972,16 +27017,16 @@ function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0 if ($this->tableBackgrounds && $level == 1) { $s = $this->PrintTableBackgrounds(); if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) { - $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->tablebuffer); - if ($level == 1) { $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->tablebuffer); } + $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->tablebuffer); + if ($level == 1) { $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->tablebuffer); } } else if ($this->bufferoutput) { - $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->headerbuffer); - if ($level == 1) { $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->headerbuffer ); } + $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->headerbuffer); + if ($level == 1) { $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->headerbuffer ); } } else { - $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); - if ($level == 1) { $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->pages[$this->page]); } + $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', '\\1'."\n".$s."\n", $this->pages[$this->page]); + if ($level == 1) { $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.$this->uniqstr.')/', " ", $this->pages[$this->page]); } } $this->tableBackgrounds = array(); } @@ -28108,14 +28153,9 @@ function TOCpagebreak($tocfont='', $tocfontsize='', $tocindent='', $TOCusePaging } function TOC_Entry($txt, $level=0, $toc_id=0) { - $txt = $this->purify_utf8_text($txt); - if ($this->text_input_as_HTML) { - $txt = $this->all_entities_to_utf8($txt); - } - if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); } + // mPDF 5.7.2 if ($this->ColActive) { $ily = $this->y0; } else { $ily = $this->y; } // use top of columns - // mPDF 5.6.19 mPDF 5.6.25 mPDF 5.6.37 if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); } if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); } $linkn = $this->AddLink(); @@ -28130,7 +28170,7 @@ function TOC_Entry($txt, $level=0, $toc_id=0) { /*-- RTL --*/ if ($this->biDirectional) { - $txt = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $txt ); + $txt = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $txt ); // mPDF 5.7+ } /*-- END RTL --*/ if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; } @@ -28556,7 +28596,7 @@ function IndexEntry($txt, $xref='') { if ($this->keep_block_together) { if (isset($this->ktReference[$i]['t']) && $this->ktReference[$i]['t']==$txt){ $Present=1; - if (!in_array($this->page,$this->ktReference[$i]['p'])) { + if ($this->page != $this->ktReference[$i]['op']) { // mPDF 5.7.2 $this->ktReference[$i]['op'] = $this->page; } } @@ -28565,7 +28605,7 @@ function IndexEntry($txt, $xref='') { else if ($this->table_rotate) { if (isset($this->tbrot_Reference[$i]['t']) && $this->tbrot_Reference[$i]['t']==$txt){ $Present=1; - if (!in_array($this->page,$this->tbrot_Reference[$i]['p'])) { + if ($this->page != $this->tbrot_Reference[$i]['op']) { // mPDF 5.7.2 $this->tbrot_Reference[$i]['op'] = $this->page; } } @@ -28573,7 +28613,7 @@ function IndexEntry($txt, $xref='') { else if ($this->kwt) { if (isset($this->kwt_Reference[$i]['t']) && $this->kwt_Reference[$i]['t']==$txt){ $Present=1; - if (!in_array($this->page,$this->kwt_Reference[$i]['p'])) { + if ($this->page != $this->kwt_Reference[$i]['op']) { // mPDF 5.7.2 $this->kwt_Reference[$i]['op'] = $this->page; } } @@ -28583,7 +28623,7 @@ function IndexEntry($txt, $xref='') { else if ($this->ColActive) { if (isset($this->col_Reference[$i]['t']) && $this->col_Reference[$i]['t']==$txt){ $Present=1; - if (!in_array($this->page,$this->col_Reference[$i]['p'])) { + if ($this->page != $this->col_Reference[$i]['op']) { // mPDF 5.7.2 $this->col_Reference[$i]['op'] = $this->page; } } @@ -28719,7 +28759,7 @@ function CreateIndex($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $use /*-- RTL --*/ // Change Arabic + Persian. to Presentation Forms if ($this->biDirectional) { - $this->Reference[$i]['t'] = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $this->Reference[$i]['t'] ); + $this->Reference[$i]['t'] = preg_replace_callback("/([".$this->pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $this->Reference[$i]['t'] ); // mPDF 5.7+ } /*-- END RTL --*/ @@ -29002,7 +29042,7 @@ function NewColumn() { function printcolumnbuffer() { // Columns ended (but page not ended) -> try to match all columns - unless disabled by using a custom column-break - if (!$this->ColActive && $this->ColumnAdjust && !$this->keepColumns) { + if (!$this->ColActive && $this->ColumnAdjust && !$this->keepColumns) { // mPDF 5.7.2 // Calculate adjustment to add to each column to calculate rel_y value $this->ColDetails[0]['add_y'] = 0; $last_col = 0; @@ -29106,12 +29146,14 @@ function printcolumnbuffer() { $yadj = ($s['rel_y'] - $s['y']) - ($last_col_bottom)+$this->y0; // callback function $t = $s['s']; - $t = preg_replace('/BT (\d+\.\d\d+) (\d+\.\d\d+) Td/e',"\$this->columnAdjustAdd('Td',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t); - $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) ([\-]{0,1}\d+\.\d\d+) re/e',"\$this->columnAdjustAdd('re',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4')",$t); - $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) l/e',"\$this->columnAdjustAdd('l',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t); - $t = preg_replace('/q (\d+\.\d\d+) 0 0 (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) cm \/(I|FO)/e',"\$this->columnAdjustAdd('img',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4','\\5')",$t); - $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) m/e',"\$this->columnAdjustAdd('draw',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t); - $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) c/e',"\$this->columnAdjustAdd('bezier',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4','\\5','\\6')",$t); + + // mPDF 5.7+ + $t = $this->columnAdjustPregReplace('Td', $xadj, $yadj, '/BT (\d+\.\d\d+) (\d+\.\d\d+) Td/', $t); + $t = $this->columnAdjustPregReplace('re', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) ([\-]{0,1}\d+\.\d\d+) re/', $t); + $t = $this->columnAdjustPregReplace('l', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) l/', $t); + $t = $this->columnAdjustPregReplace('img', $xadj, $yadj, '/q (\d+\.\d\d+) 0 0 (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) cm \/(I|FO)/', $t); + $t = $this->columnAdjustPregReplace('draw', $xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) m/', $t); + $t = $this->columnAdjustPregReplace('bezier',$xadj, $yadj, '/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) c/', $t); $this->columnbuffer[$key]['s'] = $t; $this->columnbuffer[$key]['newcol'] = $newcolumn; @@ -29466,6 +29508,16 @@ function printcolumnbuffer() { $this->breakpoints = array(); } +// mPDF 5.7+ +function columnAdjustPregReplace($type, $xadj, $yadj, $pattern, $subject) { + preg_match($pattern, $subject, $matches); + if (!isset($matches[3])) { $matches[3] = 0; } + if (!isset($matches[4])) { $matches[4] = 0; } + if (!isset($matches[5])) { $matches[5] = 0; } + if (!isset($matches[6])) { $matches[6] = 0; } + return str_replace($matches[0], $this->columnAdjustAdd($type, _MPDFK, $xadj, $yadj, $matches[1], $matches[2], $matches[3], $matches[4], $matches[5], $matches[6]), $subject); +} + /*-- END COLUMNS --*/ @@ -30127,6 +30179,11 @@ function reverse_letters($str) { return $this->mb_strrev($str, $this->mb_enc); } +// mPDF 5.7+ +function reverse_letters_preg_callback($matches) { + return $this->reverse_letters($matches[1]); +} + function magic_reverse_dir(&$chunk, $join=true, $dir) { if ($this->usingCoreFont) { return 0; } if ($this->biDirectional) { @@ -30136,7 +30193,7 @@ function magic_reverse_dir(&$chunk, $join=true, $dir) { // Change Arabic + Persian. to Presentation Forms if ($join) { - $chunk = preg_replace("/([".$pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $chunk ); + $chunk = preg_replace_callback("/([".$pregRTLchars."]+)/u", array($this, 'arabJoinPregCallback'), $chunk ); // mPDF 5.7+ } $contains_rtl = false; $all_rtl = true; @@ -30196,7 +30253,7 @@ function magic_reverse_dir(&$chunk, $join=true, $dir) { } else { // Reverse numerals only to RTL - $sbit = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $sbit ); // mPDF 5.6.32 // mPDF 5.6.46 + $sbit = preg_replace_callback("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/u", array($this, 'reverse_letters_preg_callback'), $sbit ); // mPDF 5.7+ $sbits[$sbitkey] = $sbit; } } @@ -30208,7 +30265,7 @@ function magic_reverse_dir(&$chunk, $join=true, $dir) { } else { // Reverse numerals only to RTL - $bit = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $bit ); // mPDF 5.6.32 // mPDF 5.6.46 + $bit = preg_replace_callback("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/u", array($this, 'reverse_letters_preg_callback'), $bit ); // mPDF 5.7+ $bits[$bitkey] = $bit; } } @@ -30219,7 +30276,7 @@ function magic_reverse_dir(&$chunk, $join=true, $dir) { $contains_rtl = true; // Un-Reverse numerals back to ltr - $chunk = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $chunk ); // mPDF 5.6.13 // mPDF 5.6.32 // mPDF 5.6.46 + $chunk = preg_replace_callback("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/u", array($this, 'reverse_letters_preg_callback'), $chunk ); // mPDF 5.7+ if ($dir == 'rtl') { if ($endSpace) { $chunk = ' '.$chunk; } if ($initSpace) { $chunk .= ' '; } @@ -31193,7 +31250,7 @@ function AutoFont($html) { /*-- CJK-FONTS --*/ if ($this->autoFontGroups & AUTOFONT_CJK) { - $e = preg_replace("/([".$this->pregCJKchars.$extra."]*[".$this->pregCJKchars."][".$this->pregCJKchars.$extra."]*)/ue", '$this->replaceCJK(stripslashes(\'\\1\'))', $e); + $e = preg_replace_callback("/([".$this->pregCJKchars .$extra."]*[".$this->pregCJKchars ."][".$this->pregCJKchars .$extra."]*)/u", array($this, 'replaceCJKPregCallback'), $e ); // mPDF 5.7+ } /*-- END CJK-FONTS --*/ @@ -31202,7 +31259,7 @@ function AutoFont($html) { // HEBREW $e = preg_replace("/([".$this->pregHEBchars .$extra."]*[".$this->pregHEBchars ."][".$this->pregHEBchars .$extra."]*)/u", "\xef\xbf\xb0span lang=\"he\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); // All Arabic - $e = preg_replace("/([".$this->pregARABICchars .$extra."]*[".$this->pregARABICchars ."][".$this->pregARABICchars .$extra."]*)/ue", '$this->replaceArabic(stripslashes(\'\\1\'))', $e); + $e = preg_replace_callback("/([".$this->pregARABICchars .$extra."]*[".$this->pregARABICchars ."][".$this->pregARABICchars .$extra."]*)/u", array($this, 'replaceArabicPregCallback'), $e ); // mPDF 5.7+ } /*-- END RTL --*/ @@ -31279,6 +31336,11 @@ function replaceCJK($str) { } return $str; } + +// mPDF 5.7+ +function replaceCJKPregCallback($matches) { + return $this->replaceCJK(stripslashes($matches[1])); +} /*-- END CJK-FONTS --*/ /*-- RTL --*/ @@ -31318,6 +31380,11 @@ function replaceArabic($str) { return $str; } +// mPDF 5.7+ +function replaceArabicPregCallback($matches) { + return $this->replaceArabic(stripslashes($matches[1])); +} + // ARABIC =========================== // mPDF 5.4.08 function InitArabic() { @@ -31616,6 +31683,11 @@ function ArabJoin($str) { return $s; } +// mPDF 5.7+ +function arabJoinPregCallback($matches) { + return $this->ArabJoin(stripslashes($matches[1])); +} + // mPDF 5.4.08 function get_arab_glyphs($char, $type) { if ($type>0 && isset($this->arabGlyphs[$char])) { @@ -32061,7 +32133,7 @@ function AdjustHTML($html, $tabSpaces=8) { preg_match_all("/()/si", $html, $svgi); if (count($svgi[0])) { for($i=0;$i', $html); // mPDF 5.5.18 @@ -32137,12 +32209,14 @@ function AdjustHTML($html, $tabSpaces=8) { $iterator = 0; while($thereispre) //Recover
      content
      { - $temp[2][$iterator] = preg_replace("/^([^\n\t]*?)\t/me", "stripslashes('\\1') . str_repeat(' ', ( $tabSpaces - (mb_strlen(stripslashes('\\1')) % $tabSpaces)) )",$temp[2][$iterator]); + $temp[2][$iterator] = preg_replace('/<([^a-zA-Z_:])/','<\\1',$temp[2][$iterator]); // mPDF 5.7.2 + $temp[2][$iterator] = preg_replace_callback("/^([^\n\t]*?)\t/m", array($this, 'tabs2spaces_callback'), $temp[2][$iterator]); // mPDF 5.7+ $temp[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp[2][$iterator]); $temp[2][$iterator] = preg_replace('/\n/',"
      ",$temp[2][$iterator]); $temp[2][$iterator] = str_replace('\\',"\\\\",$temp[2][$iterator]); - $html = preg_replace('#(.*?)#si',''.$temp[2][$iterator].'',$html,1); + //$html = preg_replace('#(.*?)#si',''.$temp[2][$iterator].'',$html,1); + $html = preg_replace('#(.*?)#si',''.str_replace('$','\$',$temp[2][$iterator]).'',$html,1); // mPDF 5.7+ $thereispre--; $iterator++; } @@ -32170,6 +32244,14 @@ function AdjustHTML($html, $tabSpaces=8) { return $html; } +// mPDF 5.7+ +function tabs2spaces_callback($matches) { + return (stripslashes($matches[1]) . str_repeat(' ', $this->tabSpaces - (mb_strlen(stripslashes($matches[1])) % $this->tabSpaces))); +} +// mPDF 5.7+ +function date_callback($matches) { + return date($matches[1]); +} /*-- LISTS --*/ function dec2other($num, $cp) { From deab6280d3cbe3f8d001ff5214d36399653e3027 Mon Sep 17 00:00:00 2001 From: tcit Date: Fri, 25 Jul 2014 00:33:19 +0200 Subject: [PATCH 006/119] mobi (not tested on actual device) and pdf working --- inc/poche/WallabagEBooks.class.php | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index deaf57e21..2b18b718c 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -36,7 +36,7 @@ class WallabagEBooks break; case 'all': $this->entries = $this->wallabag->store->retrieveAll($this->wallabag->user->getId()); - $this->bookTitle = sprintf(_('All my articles on '), date(_('d.m.y'))); #translatable because each country has it's own date format system + $this->bookTitle = sprintf(_('All my articles on %s'), date(_('d.m.y'))); #translatable because each country has it's own date format system $this->bookFileName = _('Allarticles') . date(_('dmY')); break; case 'tag': @@ -154,17 +154,17 @@ class WallabagMobi extends WallabagEBooks public function produceMobi($send = FALSE) { - # Good try $mobi = new MOBI(); $content = new MOBIFile(); $content->set("title", $this->bookTitle); $content->set("author", "wallabag"); + $content->set("subject", $this->bookTitle); # introduction //$content->appendChapterTitle("Cover"); - $content->appendParagraph('

      ' . _('Produced by wallabag with PHPMobi') . '

      '. _('Please open an issue if you have trouble with the display of this E-Book on your device.') . '

      '); + $content->appendParagraph('

      ' . _('Produced by wallabag with PHPMobi') . '

      '. _('Please open an issue if you have trouble with the display of this E-Book on your device.') . '

      '); $content->appendImage(imagecreatefrompng("themes/baggy/img/apple-touch-icon-152.png")); $content->appendPageBreak(); @@ -183,20 +183,25 @@ class WallabagPDF extends WallabagEbooks { public function producePDF() { - //$this->prepareData(); $mpdf = new mPDF('c'); # intro - $html = '

      ' . $this->bookTitle . '

      '; + $html = '

      ' . $this->bookTitle . '

      +

      ' . _('Produced by wallabag with mPDF') . '

      +

      '. _('Please open an issue if you have trouble with the display of this E-Book on your device.') . '

      +
      '; + $html .= ''; + $i = 1; foreach ($this->entries as $item) { - $html .= '

      ' . $item['title'] . '

      '; + $html .= '

      ' . $item['title'] . '

      '; $html .= ''; $html .= $item['content']; + $html .= ''; + $i = $i+1; } - //$mpdf->h2toc = array('H1'=>0); # headers $mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|Produced with wallabag'); @@ -207,6 +212,13 @@ class WallabagPDF extends WallabagEbooks # remove characters that make mpdf bug $char_in = array('/', '.', ',', ':', '|'); $pdfExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.pdf')); + + # index + $html = '

      Index

      + + '; + + $mpdf->WriteHTML($html); $mpdf->Output('cache/' . $pdfExportName); From dc59f164a94ce2ab9e3165aa0090acff8a352493 Mon Sep 17 00:00:00 2001 From: tcit Date: Fri, 25 Jul 2014 01:33:31 +0200 Subject: [PATCH 007/119] send2kindle --- inc/poche/Routing.class.php | 4 ++ inc/poche/WallabagEBooks.class.php | 59 ++++++++++++++++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index 83eabf198..ec33432ca 100644 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php @@ -118,6 +118,10 @@ class Routing $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); $mobi->prepareData(); $mobi->produceMobi(); + } elseif (isset($_GET['send2kindle'])) { + $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); + $mobi->prepareData(); + $mobi->produceMobi(TRUE); } elseif (isset($_GET['pdf'])) { $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']); $pdf->prepareData(); diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index 2b18b718c..a12befa8b 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -151,19 +151,21 @@ class WallabagMobi extends WallabagEBooks * @author Sander Kromwijk */ - public function produceMobi($send = FALSE) + private $_kindle_email; + + public function produceMobi($sendByMail = FALSE) { $mobi = new MOBI(); - $content = new MOBIFile(); + + $messages = new Messages(); // for later $content->set("title", $this->bookTitle); $content->set("author", "wallabag"); $content->set("subject", $this->bookTitle); # introduction - //$content->appendChapterTitle("Cover"); $content->appendParagraph('

      ' . _('Produced by wallabag with PHPMobi') . '

      '. _('Please open an issue if you have trouble with the display of this E-Book on your device.') . '

      '); $content->appendImage(imagecreatefrompng("themes/baggy/img/apple-touch-icon-152.png")); $content->appendPageBreak(); @@ -175,7 +177,56 @@ class WallabagMobi extends WallabagEBooks } $mobi->setContentProvider($content); - $mobi->download($this->bookFileName.".mobi"); + if (!$sendByMail) { + // we offer file to download + $mobi->download($this->bookFileName.'.mobi'); + } + else { + // we send file to kindle + + $char_in = array('/', '.', ',', ':', '|'); # we sanitize filename to avoid conflicts with special characters (for instance, / goes for a directory) + $mobiExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.mobi')); + + $file = 'cache/' . $mobiExportName; + $mobi->save($file); + + $file_size = filesize($file); + $filename = basename($file); + $handle = fopen($file, "r"); + $content = fread($handle, $file_size); + fclose($handle); + $content = chunk_split(base64_encode($content)); + + $uid = md5(uniqid(time())); + + //generate header for mail + $header = "From: wallabag <". $this->wallabag->user->email .">\r\n"; + $header .= "MIME-Version: 1.0\r\n"; + $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; + $header .= "This is a multi-part message in MIME format.\r\n"; + $header .= "--".$uid."\r\n"; + $header .= "Content-type:text/plain; charset=iso-8859-1\r\n"; + $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; + $header .= "send via wallabag\r\n\r\n"; + $header .= "--".$uid."\r\n"; + $header .= "Content-Type: application/x-mobipocket-ebook; name=\"".$filename."\"\r\n"; + $header .= "Content-Transfer-Encoding: base64\r\n"; + $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; + $header .= $content."\r\n\r\n"; + $header .= "--".$uid."--"; + + # trying to get the kindle email adress + if ($this->wallabag->user->getConfigValue('kindleemail')) + { + #do a try...exeption here + mail( $this->wallabag->user->getConfigValue('kindleemail'), '[wallabag] ' . $this->bookTitle, "", $header ); + $messages->add('s', _('The email has been sent to your kindle !')); + } + else + { + $messages->add('e', _('You didn\'t set your kindle\'s email adress !')); + } + } } } From d49446ff98044bdaf19f06d72c94d513cbbabcec Mon Sep 17 00:00:00 2001 From: tcit Date: Fri, 25 Jul 2014 01:38:28 +0200 Subject: [PATCH 008/119] bug with extension in the filename --- inc/poche/WallabagEBooks.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index a12befa8b..5f42308eb 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -185,7 +185,7 @@ class WallabagMobi extends WallabagEBooks // we send file to kindle $char_in = array('/', '.', ',', ':', '|'); # we sanitize filename to avoid conflicts with special characters (for instance, / goes for a directory) - $mobiExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.mobi')); + $mobiExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName)) . '.mobi'; $file = 'cache/' . $mobiExportName; $mobi->save($file); From f8c37985224313533111e5b1d78b5a20eeff8b04 Mon Sep 17 00:00:00 2001 From: tcit Date: Sat, 26 Jul 2014 11:52:43 +0200 Subject: [PATCH 009/119] little better --- inc/poche/WallabagEBooks.class.php | 76 +++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 23 deletions(-) diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index 5f42308eb..906a22473 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -16,6 +16,7 @@ class WallabagEBooks protected $entries; protected $bookTitle; protected $bookFileName; + protected $author = 'wallabag'; public function __construct(Poche $wallabag, $method, $value) { @@ -33,11 +34,14 @@ class WallabagEBooks $this->entries = array($entry); $this->bookTitle = $entry['title']; $this->bookFileName = substr($this->bookTitle, 0, 200); + $this->author = preg_replace('#^w{3}.#', '', Tools::getdomain($entry["url"])); # if only one article, set author to domain name (we strip the eventual www part) + Tools::logm('Producing ebook from article ' . $this->bookTitle); break; case 'all': $this->entries = $this->wallabag->store->retrieveAll($this->wallabag->user->getId()); $this->bookTitle = sprintf(_('All my articles on %s'), date(_('d.m.y'))); #translatable because each country has it's own date format system $this->bookFileName = _('Allarticles') . date(_('dmY')); + Tools::logm('Producing ebook from all articles'); break; case 'tag': $tag = filter_var($this->value, FILTER_SANITIZE_STRING); @@ -46,12 +50,14 @@ class WallabagEBooks $this->entries = $this->wallabag->store->retrieveEntriesByTag($tag_id, $this->wallabag->user->getId()); $this->bookTitle = sprintf(_('Articles tagged %s'), $tag); $this->bookFileName = substr(sprintf(_('Tag %s'), $tag), 0, 200); + Tools::logm('Producing ebook from tag ' . $tag); break; case 'category': $category = filter_var($this->value, FILTER_SANITIZE_STRING); $this->entries = $this->wallabag->store->getEntriesByView($category, $this->wallabag->user->getId()); $this->bookTitle = sprintf(_('All articles in category %s'), $category); $this->bookFileName = substr(sprintf(_('Category %s'), $category), 0, 200); + Tools::logm('Producing ebook from category ' . $category); break; case 'search': $search = filter_var($this->value, FILTER_SANITIZE_STRING); @@ -59,9 +65,10 @@ class WallabagEBooks $this->entries = $this->wallabag->store->search($search, $this->wallabag->user->getId()); $this->bookTitle = sprintf(_('All articles for search %s'), $search); $this->bookFileName = substr(sprintf(_('Search %s'), $search), 0, 200); + Tools::logm('Producing ebook from search ' . $search); break; case 'default': - die(_('Uh, there is a problem while generating epub.')); + die(_('Uh, there is a problem while generating eBook.')); } } } @@ -73,12 +80,13 @@ class WallabagEpub extends WallabagEBooks */ public function produceEpub() { + Tools::logm('Starting to produce ePub 3 file'); $content_start = "\n" . "\n" . "" . "\n" - . "wallabag articles book\n" + . "" . _("wallabag articles book") . "\n" . "\n" . "\n"; @@ -95,11 +103,13 @@ class WallabagEpub extends WallabagEBooks $log->logLine("getCurrentServerURL: " . $book->getCurrentServerURL()); $log->logLine("getCurrentPageURL..: " . $book->getCurrentPageURL()); + Tools::logm('Filling metadata for ePub...'); + $book->setTitle($this->bookTitle); $book->setIdentifier("http://$_SERVER[HTTP_HOST]", EPub::IDENTIFIER_URI); // Could also be the ISBN number, prefered for published books, or a UUID. //$book->setLanguage("en"); // Not needed, but included for the example, Language is mandatory, but EPub defaults to "en". Use RFC3066 Language codes, such as "en", "da", "fr" etc. $book->setDescription(_("Some articles saved on my wallabag")); - $book->setAuthor("wallabag", "wallabag"); + $book->setAuthor($this->author,$this->author); $book->setPublisher("wallabag", "wallabag"); // I hope this is a non existant address :) $book->setDate(time()); // Strictly not needed as the book date defaults to time(). //$book->setRights("Copyright and licence information specific for the book."); // As this is generated, this _could_ contain the name or licence information of the user who purchased the book, if needed. If this is used that way, the identifier must also be made unique for the book. @@ -123,6 +133,8 @@ class WallabagEpub extends WallabagEBooks $book->buildTOC(); + Tools::logm('Adding actual content...'); + foreach ($this->entries as $entry) { //set tags as subjects $tags = $this->wallabag->store->retrieveTagsByEntry($entry['id']); foreach ($tags as $tag) { @@ -138,9 +150,11 @@ class WallabagEpub extends WallabagEBooks if (DEBUG_POCHE) { $book->addChapter("Log", "Log.html", $content_start . $log->getLog() . "\n" . $bookEnd); // log generation + Tools::logm('Production log available in produced file'); } $book->finalize(); $zipData = $book->sendBook($this->bookFileName); + Tools::logm('Ebook produced'); } } @@ -151,18 +165,19 @@ class WallabagMobi extends WallabagEBooks * @author Sander Kromwijk */ - private $_kindle_email; - public function produceMobi($sendByMail = FALSE) { + Tools::logm('Starting to produce Mobi file'); $mobi = new MOBI(); $content = new MOBIFile(); $messages = new Messages(); // for later - + + Tools::logm('Filling metadata for Mobi...'); + $content->set("title", $this->bookTitle); - $content->set("author", "wallabag"); + $content->set("author", $this->author); $content->set("subject", $this->bookTitle); # introduction @@ -170,6 +185,8 @@ class WallabagMobi extends WallabagEBooks $content->appendImage(imagecreatefrompng("themes/baggy/img/apple-touch-icon-152.png")); $content->appendPageBreak(); + Tools::logm('Adding actual content...'); + foreach ($this->entries as $item) { $content->appendChapterTitle($item['title']); $content->appendParagraph($item['content']); @@ -180,10 +197,19 @@ class WallabagMobi extends WallabagEBooks if (!$sendByMail) { // we offer file to download $mobi->download($this->bookFileName.'.mobi'); + Tools::logm('Mobi file produced'); } else { // we send file to kindle + Tools::logm('Preparing to send file by email'); + + $error = FALSE; + # testing Mail function + if (!function_exists('mail')) { + $error = _('Mail function is unavailable'); + } + $char_in = array('/', '.', ',', ':', '|'); # we sanitize filename to avoid conflicts with special characters (for instance, / goes for a directory) $mobiExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName)) . '.mobi'; @@ -216,15 +242,17 @@ class WallabagMobi extends WallabagEBooks $header .= "--".$uid."--"; # trying to get the kindle email adress - if ($this->wallabag->user->getConfigValue('kindleemail')) + if (!$this->wallabag->user->getConfigValue('kindleemail')) { - #do a try...exeption here - mail( $this->wallabag->user->getConfigValue('kindleemail'), '[wallabag] ' . $this->bookTitle, "", $header ); - $messages->add('s', _('The email has been sent to your kindle !')); + $error = _('You didn\'t set your kindle\'s email adress !'); } - else - { - $messages->add('e', _('You didn\'t set your kindle\'s email adress !')); + if (!$error) { + mail($this->wallabag->user->getConfigValue('kindleemail'), '[wallabag] ' . $this->bookTitle, "", $header ); + $messages->add('s', _('The email has been sent to your kindle !')); + Tools::logm('Email sent'); + } else { + $messages->add('e', $error); + Tools::logm($error); } } } @@ -236,8 +264,15 @@ class WallabagPDF extends WallabagEbooks { $mpdf = new mPDF('c'); - # intro + Tools::logm('Starting to produce PDF file'); + Tools::logm('Filling metadata for PDF...'); + + # headers + $mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|Produced with wallabag'); + $mpdf->SetFooter('{PAGENO}'); + + # intro $html = '

      ' . $this->bookTitle . '

      ' . _('Produced by wallabag with mPDF') . '

      '. _('Please open an issue if you have trouble with the display of this E-Book on your device.') . '

      @@ -245,6 +280,7 @@ class WallabagPDF extends WallabagEbooks $html .= ''; $i = 1; + Tools::logm('Adding actual content...'); foreach ($this->entries as $item) { $html .= '

      ' . $item['title'] . '

      '; $html .= ''; @@ -252,17 +288,12 @@ class WallabagPDF extends WallabagEbooks $html .= ''; $i = $i+1; } - - - # headers - $mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|Produced with wallabag'); - $mpdf->SetFooter('{PAGENO}'); $mpdf->WriteHTML($html); # remove characters that make mpdf bug $char_in = array('/', '.', ',', ':', '|'); - $pdfExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.pdf')); + $pdfExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.pdf')); # maybe someone can make a proper regex of this ? # index $html = '

      Index

      @@ -278,7 +309,6 @@ class WallabagPDF extends WallabagEbooks header('Content-Transfer-Encoding: base64'); header('Content-Type: application/pdf'); echo file_get_contents('cache/' . $pdfExportName); - - //exit; + Tools::logm('PDF file produced'); } } \ No newline at end of file From 8492f37323c63ac4caed3246077c11bb2c5be79b Mon Sep 17 00:00:00 2001 From: tcit Date: Sat, 26 Jul 2014 12:22:33 +0200 Subject: [PATCH 010/119] translation stuff (en & fr done) --- locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo | Bin 11884 -> 13721 bytes locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po | 115 +++++++++++++++++--- locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo | Bin 16343 -> 18389 bytes locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po | 64 ++++++++++- themes/baggy/config.twig | 6 +- themes/baggy/view.twig | 6 +- themes/courgette/config.twig | 8 +- themes/default/config.twig | 17 ++- 8 files changed, 183 insertions(+), 33 deletions(-) diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo index bf5f69e7286a149f8f2646d2fba934698e3d5ce3..b3ea30503dd41a8b1bc385436ccabc354f945424 100644 GIT binary patch literal 13721 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 literal 11884 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 diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po index 119fb0601..99867dcc4 100644 --- a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po +++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po @@ -1,19 +1,17 @@ msgid "" msgstr "" -"Project-Id-Version: \n" +"Project-Id-Version: wallabag\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-02-25 15:17+0300\n" +"POT-Creation-Date: 2014-07-26 15:17+0300\n" "PO-Revision-Date: \n" -"Last-Translator: Maryana \n" +"Last-Translator: tcit \n" "Language-Team: \n" -"Language: \n" +"Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" -"X-Poedit-Language: English\n" +"X-Generator: Poedit 1.6.4\n" "X-Poedit-Basepath: .\n" -"X-Poedit-SearchPath-0: /home/mariroz/_DEV/web/wallabag/wallabag-master-testing\n" msgid "wallabag, a read it later open source system" msgstr "wallabag, a read it later open source system" @@ -84,8 +82,12 @@ msgstr "A more recent development version is available." msgid "Feeds" msgstr "Feeds" -msgid "Your feed token is currently empty and must first be generated to enable feeds. Click here to generate it." -msgstr "Your feed token is currently empty and must first be generated to enable feeds. Click here to generate it." +msgid "" +"Your feed token is currently empty and must first be generated to enable " +"feeds. Click here to generate it." +msgstr "" +"Your feed token is currently empty and must first be generated to enable " +"feeds. Click here to generate it." msgid "Unread feed" msgstr "Unread feed" @@ -102,8 +104,12 @@ msgstr "Your token:" msgid "Your user id:" msgstr "Your user id:" -msgid "You can regenerate your token: generate!." -msgstr "You can regenerate your token: generate!." +msgid "" +"You can regenerate your token: generate!" +"." +msgstr "" +"You can regenerate your token: generate!" +"." msgid "Change your theme" msgstr "Change your theme" @@ -184,8 +190,12 @@ msgstr "return to article" msgid "plop" msgstr "plop" -msgid "You can check your configuration here." -msgstr "You can check your configuration here." +msgid "" +"You can check your configuration " +"here." +msgstr "" +"You can check your configuration " +"here." msgid "favoris" msgstr "favoris" @@ -247,8 +257,14 @@ msgstr "installation" msgid "install your wallabag" msgstr "install your wallabag" -msgid "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to read the documentation on wallabag website." -msgstr "wallabag is still not installed. Please fill the below form to install it. Don't hesitate to read the documentation on wallabag website." +msgid "" +"wallabag is still not installed. Please fill the below form to install it. " +"Don't hesitate to read the documentation " +"on wallabag website." +msgstr "" +"wallabag is still not installed. Please fill the below form to install it. " +"Don't hesitate to read the documentation " +"on wallabag website." msgid "Login" msgstr "Login" @@ -401,7 +417,8 @@ msgid "a more recent development version is available." msgstr "a more recent development version is available." msgid "Please execute the import script locally, it can take a very long time." -msgstr "Please execute the import script locally, it can take a very long time." +msgstr "" +"Please execute the import script locally, it can take a very long time." msgid "More infos in the official doc:" msgstr "More infos in the official doc:" @@ -448,8 +465,12 @@ msgstr "in demo mode, you can't update your password" msgid "your password has been updated" msgstr "your password has been updated" -msgid "the two fields have to be filled & the password must be the same in the two fields" -msgstr "the two fields have to be filled & the password must be the same in the two fields" +msgid "" +"the two fields have to be filled & the password must be the same in the two " +"fields" +msgstr "" +"the two fields have to be filled & the password must be the same in the two " +"fields" msgid "still using the \"" msgstr "still using the \"" @@ -505,6 +526,64 @@ msgstr "Cache deleted." msgid "Oops, it seems you don't have PHP 5." msgstr "Oops, it seems you don't have PHP 5." +msgid "Fancy an E-Book ?" +msgstr "Fancy an E-Book ?" + +msgid "Click to get all your articles in one ebook :" +msgstr "Click to get all your articles in one ebook :" + +msgid "Generate ePub file" +msgstr "Generate ePub file" + +msgid "Generate Mobi file" +msgstr "Generate Mobi file" + +msgid "Generate PDF file" +msgstr "Generate PDF file" + +msgid "" +"This can take a while and can even fail if you have too many " +"articles, depending on your server configuration." +msgstr "" +"This can take a while and can even fail if you have too many " +"articles, depending on your server configuration." + +msgid "Download the articles from this tag in an ePub file" +msgstr "Download the articles from this tag in an ePub file" + +msgid "Download the articles from this tag in an Mobi file" +msgstr "Download the articles from this tag in an Mobi file" + +msgid "Download the articles from this tag in an PDF file" +msgstr "Download the articles from this tag in an PDF file" + +msgid "Download the articles from this search in an ePub" +msgstr "Download the articles from this search in an ePub" + +msgid "Download the articles from this search in a Mobi file" +msgstr "Download the articles from this search in a Mobi file" + +msgid "Download the articles from this search in a PDF file" +msgstr "Download the articles from this search in a PDF file" + +msgid "Download the articles from this category in an ePub" +msgstr "Download the articles from this category in an ePub" + +msgid "Download the articles from this category in a Mobi file" +msgstr "Download the articles from this category in a Mobi file" + +msgid "Download the articles from this category in a PDF file" +msgstr "Download the articles from this category in a PDF file" + +msgid "Download as ePub3" +msgstr "Download as ePub3" + +msgid "Download as Mobi" +msgstr "Download as Mobi" + +msgid "Download as PDF" +msgstr "Download as PDF" + #~ msgid "poche it!" #~ msgstr "poche it!" diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo index b625e346c7ea82c3760705371100a4d25a5d10ac..866451e19be26678786e02f41946cdb8fb033628 100644 GIT binary patch delta 6324 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 l-CUCXUa)U`M!xS%Mq+c8J2A*t;Yn*g?MVx5c5\n" +"Last-Translator: tcit \n" "Language-Team: \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" @@ -12,7 +12,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-KeywordsList: _;gettext;gettext_noop\n" "X-Poedit-SourceCharset: UTF-8\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 1.6.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "wallabag, a read it later open source system" @@ -650,3 +650,61 @@ msgstr "Cache effacé." msgid "Oops, it seems you don't have PHP 5." msgstr "Oups, vous ne semblez pas avoir PHP 5." + +msgid "Fancy an E-Book ?" +msgstr "Envie d'un E-Book ?" + +msgid "Click to get all your articles in one ebook :" +msgstr "Cliquez pour obtenir tous vos articles dans un E-Book :" + +msgid "Generate ePub file" +msgstr "Générer fichier ePub" + +msgid "Generate Mobi file" +msgstr "Générer fichier Mobi" + +msgid "Generate PDF file" +msgstr "Générer fichier PDF" + +msgid "" +"This can take a while and can even fail if you have too many " +"articles, depending on your server configuration." +msgstr "" +"Ceci peut prendre un moment et peut même échouer si vous avez " +"trop d'articles, selon la configuration de votre serveur." + +msgid "Download the articles from this tag in an ePub file" +msgstr "Télécharger les articles de ce tag dans un fichier ePub" + +msgid "Download the articles from this tag in an Mobi file" +msgstr "Télécharger les articles de ce tag dans un fichier Mobi" + +msgid "Download the articles from this tag in an PDF file" +msgstr "Télécharger les articles de ce tag dans un fichier PDF" + +msgid "Download the articles from this search in an ePub" +msgstr "Télécharger les articles de cette recherche dans un fichier ePub" + +msgid "Download the articles from this search in a Mobi file" +msgstr "Télécharger les articles de cette recherche dans un fichier Mobi" + +msgid "Download the articles from this search in a PDF file" +msgstr "Télécharger les articles de cette recherche dans un fichier PDF" + +msgid "Download the articles from this category in an ePub" +msgstr "Télécharger les articles de cette catégorie dans un fichier ePub" + +msgid "Download the articles from this category in a Mobi file" +msgstr "Télécharger les articles de cette catégorie dans un fichier Mobi" + +msgid "Download the articles from this category in a PDF file" +msgstr "Télécharger les articles de cette catégorie dans un fichier PDF" + +msgid "Download as ePub3" +msgstr "Télécharger en ePub3" + +msgid "Download as Mobi" +msgstr "Télécharger en Mobi" + +msgid "Download as PDF" +msgstr "Télécharger en PDF" diff --git a/themes/baggy/config.twig b/themes/baggy/config.twig index cd86a4fde..dda05c299 100755 --- a/themes/baggy/config.twig +++ b/themes/baggy/config.twig @@ -128,9 +128,9 @@

      {% trans "Fancy an E-Book ?" %}

      {% trans "Click to get all your articles in one ebook :" %}


      {% trans "This can take a while and can even fail if you have too many articles, depending on your server configuration." %}

      diff --git a/themes/baggy/view.twig b/themes/baggy/view.twig index 85e3ddf10..3f151592f 100755 --- a/themes/baggy/view.twig +++ b/themes/baggy/view.twig @@ -16,9 +16,9 @@ {% if constant('SHARE_SHAARLI') == 1 %}
    11. {% trans "shaarli" %}
    12. {% endif %} {% if constant('FLATTR') == 1 %}{% if flattr.status == constant('FLATTRABLE') %}
    13. {% trans "flattr" %}
    14. {% elseif flattr.status == constant('FLATTRED') %}
    15. {% trans "flattr" %} ({{ flattr.numflattrs }})
    16. {% endif %}{% endif %} {% if constant('SHOW_PRINTLINK') == 1 %}
    17. {% trans "Print" %}
    18. {% endif %} -
    19. EPUB
    20. -
    21. MOBI
    22. -
    23. PDF
    24. +
    25. EPUB
    26. +
    27. MOBI
    28. +
    29. PDF
    30. {% trans "Does this article appear wrong?" %}
    31. diff --git a/themes/courgette/config.twig b/themes/courgette/config.twig index 9ab58461a..6b0fa3081 100755 --- a/themes/courgette/config.twig +++ b/themes/courgette/config.twig @@ -82,7 +82,13 @@

      {% trans "Click here" %} {% trans "to export your wallabag data." %}

      {% trans "Fancy an E-Book ?" %}

      -

      {% trans "Click on this link to get all your articles in one ebook (ePub 3 format)." %} +

      {% trans "Click to get all your articles in one ebook :" %} +

      +
      {% trans "This can take a while and can even fail if you have too many articles, depending on your server configuration." %}

      {% trans 'Add user' %}

      diff --git a/themes/default/config.twig b/themes/default/config.twig index 160f6046a..a65d2b2c1 100755 --- a/themes/default/config.twig +++ b/themes/default/config.twig @@ -124,13 +124,20 @@

      {% trans "Click here" %} {% trans "to download your database." %}

      {% endif %}

      {% trans "Click here" %} {% trans "to export your wallabag data." %}

      +

      {% trans "Fancy an E-Book ?" %}

      +

      {% trans "Click to get all your articles in one ebook :" %} +

      + +
      {% trans "This can take a while and can even fail if you have too many articles, depending on your server configuration." %}

      + +

      {% trans "Cache" %}

      {% trans "Click here" %} {% trans "to delete cache." %}

      - -

      {% trans "Fancy an E-Book ?" %}

      -

      {% trans "Click on this link to get all your articles in one ebook (ePub 3 format)." %} -
      {% trans "This can take a while and can even fail if you have too many articles, depending on your server configuration." %}

      - +

      {% trans 'Add user' %}

      {% trans 'Add a new user :' %}

      From ab86a5124ae4a23cc37dc78ccfbd73089b3248d8 Mon Sep 17 00:00:00 2001 From: tcit Date: Sat, 26 Jul 2014 13:04:12 +0200 Subject: [PATCH 011/119] more translations --- inc/poche/WallabagEBooks.class.php | 8 +-- locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo | Bin 13721 -> 15241 bytes locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po | 61 +++++++++++++++++++- locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo | Bin 18389 -> 20031 bytes locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po | 58 +++++++++++++++++++ 5 files changed, 121 insertions(+), 6 deletions(-) diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index 906a22473..80aa7e43c 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -55,7 +55,7 @@ class WallabagEBooks case 'category': $category = filter_var($this->value, FILTER_SANITIZE_STRING); $this->entries = $this->wallabag->store->getEntriesByView($category, $this->wallabag->user->getId()); - $this->bookTitle = sprintf(_('All articles in category %s'), $category); + $this->bookTitle = sprintf(_('Articles in category %s'), $category); $this->bookFileName = substr(sprintf(_('Category %s'), $category), 0, 200); Tools::logm('Producing ebook from category ' . $category); break; @@ -63,7 +63,7 @@ class WallabagEBooks $search = filter_var($this->value, FILTER_SANITIZE_STRING); Tools::logm($search); $this->entries = $this->wallabag->store->search($search, $this->wallabag->user->getId()); - $this->bookTitle = sprintf(_('All articles for search %s'), $search); + $this->bookTitle = sprintf(_('Articles for search %s'), $search); $this->bookFileName = substr(sprintf(_('Search %s'), $search), 0, 200); Tools::logm('Producing ebook from search ' . $search); break; @@ -207,7 +207,7 @@ class WallabagMobi extends WallabagEBooks $error = FALSE; # testing Mail function if (!function_exists('mail')) { - $error = _('Mail function is unavailable'); + $error = _("Mail function is disabled. You can't send emails from your server"); } $char_in = array('/', '.', ',', ':', '|'); # we sanitize filename to avoid conflicts with special characters (for instance, / goes for a directory) @@ -244,7 +244,7 @@ class WallabagMobi extends WallabagEBooks # trying to get the kindle email adress if (!$this->wallabag->user->getConfigValue('kindleemail')) { - $error = _('You didn\'t set your kindle\'s email adress !'); + $error = _("You didn't set your kindle's email adress !"); } if (!$error) { mail($this->wallabag->user->getConfigValue('kindleemail'), '[wallabag] ' . $this->bookTitle, "", $header ); diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.mo index b3ea30503dd41a8b1bc385436ccabc354f945424..ff09d67691f350d79210f3fca4eac57ea3583574 100644 GIT binary patch literal 15241 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 issue if you have trouble with the display of this E-Book on your device." +msgstr "" +"Please open an issue if you have trouble with the display of this E-Book on your device." + +msgid "Produced by wallabag with PHPMobi" +msgstr "Produced by wallabag with PHPMobi" + +msgid "Mail function is disabled. You can't send emails from your server" +msgstr "Mail function is disabled. You can't send emails from your server" + +msgid "You didn't set your kindle's email adress !" +msgstr "You didn't set your kindle's email adress !" + +msgid "The email has been sent to your kindle !" +msgstr "The email has been sent to your kindle !" + +msgid "Produced by wallabag with mPDF" +msgstr "Produced by wallabag with mPDF" + #~ msgid "poche it!" #~ msgstr "poche it!" diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.mo index 866451e19be26678786e02f41946cdb8fb033628..6dfcdd37d5bbf3cbad80d59afd66b41b2897b962 100644 GIT binary patch delta 6341 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 K^>rysZu38R*!>#- diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po index 8e9f4abcf..97f989f2d 100644 --- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po +++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po @@ -708,3 +708,61 @@ msgstr "Télécharger en Mobi" msgid "Download as PDF" msgstr "Télécharger en PDF" + +msgid "All my articles on %s" +msgstr "Tous mes articles le %s" + +msgid "Allarticles" +msgstr "TousArticles" + +msgid "Articles tagged %s" +msgstr "Articles avec le tag %s" + +msgid "Tag %s" +msgstr "Tag %s" + +msgid "Articles in category %s" +msgstr "Articles de la catégorie %s" + +msgid "Category %s" +msgstr "Catégorie %s" + +msgid "Articles for search %s" +msgstr "Articles pour la recherche %s" + +msgid "Search %s" +msgstr "Recherche %s" + +msgid "wallabag articles book" +msgstr "Livre d'articles issus de wallabag" + +msgid "Some articles saved on my wallabag" +msgstr "Des articles sauvegardés sur wallabag" + +msgid "Produced by wallabag with PHPePub" +msgstr "Produit par wallabag avec PHPePub" + +msgid "" +"Please open an issue if you have trouble with the display of this E-Book on your device." +msgstr "" +"Merci d'ouvrir un " +"ticket si vous avez des problèmes d'affichage de cet E-Book sur votre " +"appareil." + +msgid "Produced by wallabag with PHPMobi" +msgstr "Produit par wallabag avec PHPMobi" + +msgid "Mail function is disabled. You can't send emails from your server" +msgstr "" +"La fonction mail est désactivée. Vous ne pouvez pas envoyer d'E-mails depuis " +"votre serveur" + +msgid "You didn't set your kindle's email adress !" +msgstr "Vous n'avez pas renseigné l'adresse E-mail de votre Kindle !" + +msgid "The email has been sent to your kindle !" +msgstr "L'E-mail a été envoyé à votre Kindle !" + +msgid "Produced by wallabag with mPDF" +msgstr "Produit par wallabag avec mPDF" From 358c689cec917c173ee080777a8dc51603a3979c Mon Sep 17 00:00:00 2001 From: tcit Date: Sun, 3 Aug 2014 18:06:37 +0200 Subject: [PATCH 012/119] little fix in locale files --- locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po | 3 +-- locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po index 179405b2e..9761d6c80 100644 --- a/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po +++ b/locale/en_EN.utf8/LC_MESSAGES/en_EN.utf8.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: wallabag\n" +"Project-Id-Version: wallabag 1.7.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-07-26 15:17+0300\n" "PO-Revision-Date: \n" @@ -11,7 +11,6 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.6.4\n" -"X-Poedit-Basepath: .\n" msgid "wallabag, a read it later open source system" msgstr "wallabag, a read it later open source system" diff --git a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po index 97f989f2d..59dc29d6d 100644 --- a/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po +++ b/locale/fr_FR.utf8/LC_MESSAGES/fr_FR.utf8.po @@ -1,6 +1,6 @@ msgid "" msgstr "" -"Project-Id-Version: wallabag 1.7\n" +"Project-Id-Version: wallabag 1.7.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-07-26 20:09+0100\n" "PO-Revision-Date: \n" From b83690ebd873abc29a3f365b0cc69125eb6021a1 Mon Sep 17 00:00:00 2001 From: tcitworld Date: Mon, 4 Aug 2014 21:34:44 +0200 Subject: [PATCH 013/119] removing examples for mpdf --- .../libraries/mpdf/examples/alpha.gif | Bin 31084 -> 0 bytes .../libraries/mpdf/examples/alpha.png | Bin 87454 -> 0 bytes .../libraries/mpdf/examples/alpha3.png | Bin 8596 -> 0 bytes .../libraries/mpdf/examples/bayeux1.jpg | Bin 128530 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/bg.jpg | Bin 6762 -> 0 bytes .../libraries/mpdf/examples/bgbarcode.png | Bin 2991 -> 0 bytes .../libraries/mpdf/examples/bgrock.jpg | Bin 5191 -> 0 bytes .../libraries/mpdf/examples/borders2FF.jpg | Bin 31340 -> 0 bytes .../libraries/mpdf/examples/borders2IE.jpg | Bin 22070 -> 0 bytes .../libraries/mpdf/examples/borders3FF.jpg | Bin 39381 -> 0 bytes .../libraries/mpdf/examples/borders3IE.jpg | Bin 42274 -> 0 bytes .../libraries/mpdf/examples/borders4FF.jpg | Bin 50994 -> 0 bytes .../libraries/mpdf/examples/borders4IE.jpg | Bin 52945 -> 0 bytes .../libraries/mpdf/examples/bordersFF.jpg | Bin 32952 -> 0 bytes .../libraries/mpdf/examples/bordersIE.jpg | Bin 33061 -> 0 bytes .../libraries/mpdf/examples/bordersMPDF2.jpg | Bin 37662 -> 0 bytes .../libraries/mpdf/examples/clematis.jpg | Bin 184829 -> 0 bytes .../mpdf/examples/example01_basic.php | 187 -- .../mpdf/examples/example02_CSS_styles.php | 41 - .../example03_backgrounds_and_borders.php | 138 -- .../mpdf/examples/example04_images.php | 207 -- .../mpdf/examples/example05_tables.php | 1017 --------- .../mpdf/examples/example06_tables_nested.php | 532 ----- .../examples/example07_tables_borders.php | 500 ----- .../mpdf/examples/example08_lists.php | 137 -- .../mpdf/examples/example09_forms.php | 204 -- ...0_floating_and_fixed_position_elements.php | 103 - .../mpdf/examples/example11_overflow_auto.php | 81 - .../mpdf/examples/example12_paging_html.php | 92 - .../mpdf/examples/example13_paging_css.php | 94 - ...ple14_page_numbers_ToC_Index_Bookmarks.php | 148 -- .../examples/example15_headers_method_1.php | 60 - .../examples/example16_headers_method_2.php | 49 - .../examples/example17_headers_method_3.php | 58 - .../examples/example18_headers_method_4.php | 84 - .../mpdf/examples/example19_page_sizes.php | 59 - .../mpdf/examples/example20_justify.php | 130 -- .../mpdf/examples/example21_hyphenation.php | 41 - .../mpdf/examples/example22_columns.php | 80 - .../mpdf/examples/example23_orientation.php | 132 -- .../mpdf/examples/example24_orientation_2.php | 200 -- .../libraries/mpdf/examples/example26_RTL.php | 316 --- .../example27_CJK_using_Adobe_fonts.php | 91 - .../example28_CJK_using_embedded_fonts.php | 89 - .../example29_multilingual_autofont.php | 400 ---- .../mpdf/examples/example30_arabic.php | 384 ---- .../mpdf/examples/example32_indic.php | 219 -- .../mpdf/examples/example35_watermarks.php | 59 - ...ample36_annotations_and_Attached_files.php | 36 - .../mpdf/examples/example37_barcodes.php | 437 ---- .../mpdf/examples/example38_dot_tab.php | 43 - .../examples/example39_PDFA_compliance.php | 31 - .../examples/example40_MPDFI_thumbnails.php | 20 - .../examples/example41_MPDFI_template.php | 36 - .../examples/example42_MPDFI_templatedoc.php | 35 - .../mpdf/examples/example43_MPDFI_booklet.php | 121 -- .../examples/example44_MPDFI_yearbook.php | 150 -- .../example46_progress_bars_simple.php | 1595 -------------- .../example47_progress_bars_simple_custom.php | 1609 -------------- .../example48_progress_bars_advanced.php | 1609 -------------- .../mpdf/examples/example49_changelog.php | 41 - .../example50_new_mPDF_3_features.php | 1905 ----------------- .../example51_new_mPDF_4_features.php | 615 ------ .../mpdf/examples/example52_lineheight.htm | 36 - .../example52_new_mPDF_4-2_features.php | 492 ----- .../example53_new_mPDF_v5-0_fonts.php | 431 ---- ...PDF_v5-1_features_gradients_and_images.php | 498 ----- ...new_mPDF_v5-1_color_and_other_features.php | 456 ---- ...ple56_new_mPDF_v5-1_features_grayscale.php | 497 ----- .../example57_new_mPDF_v5-3_active_forms.php | 233 -- ...example57_new_mPDF_v5-3_active_forms_b.php | 234 -- .../example58_new_mPDF_v5-4_features.php | 547 ----- .../example59_new_mPDF_v5-6_features.php | 387 ---- .../example60_new_mPDF_v5-7_features.php | 595 ----- .../libraries/mpdf/examples/firefox-48.png | Bin 5640 -> 0 bytes .../mpdf/examples/flowers-pattern.jpg | Bin 40092 -> 0 bytes .../libraries/mpdf/examples/formsubmit.php | 94 - inc/3rdparty/libraries/mpdf/examples/goto.gif | Bin 132 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/img1.png | Bin 1000 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/img2.png | Bin 1044 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/img3.png | Bin 1087 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/img4.png | Bin 1772 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/img5.png | Bin 1802 -> 0 bytes .../libraries/mpdf/examples/index.php | 40 - .../libraries/mpdf/examples/klematis.jpg | Bin 10937 -> 0 bytes .../libraries/mpdf/examples/loading.gif | Bin 771 -> 0 bytes .../libraries/mpdf/examples/mpdfstyleA4.css | 89 - .../mpdf/examples/mpdfstylePaged.css | 123 -- .../mpdf/examples/mpdfstyletables.css | 124 -- .../libraries/mpdf/examples/quran282.jpg | Bin 175840 -> 0 bytes .../libraries/mpdf/examples/sample_basic.pdf | Bin 38069 -> 0 bytes .../mpdf/examples/sample_logoheader2.pdf | Bin 89631 -> 0 bytes .../mpdf/examples/sample_orientation2.pdf | Bin 64368 -> 0 bytes .../mpdf/examples/sample_orientation3.pdf | Bin 64260 -> 0 bytes .../libraries/mpdf/examples/show_code.php | 48 - .../libraries/mpdf/examples/sunset.jpg | Bin 31640 -> 0 bytes .../libraries/mpdf/examples/sunsetv.jpg | Bin 17615 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/test.pdf | Bin 115385 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/tiger | Bin 85202 -> 0 bytes .../libraries/mpdf/examples/tiger.bmp | Bin 155322 -> 0 bytes .../libraries/mpdf/examples/tiger.gif | Bin 129588 -> 0 bytes .../libraries/mpdf/examples/tiger.jpg | Bin 58232 -> 0 bytes .../libraries/mpdf/examples/tiger.php | 18 - .../libraries/mpdf/examples/tiger.png | Bin 85202 -> 0 bytes .../libraries/mpdf/examples/tiger.svg | 726 ------- .../libraries/mpdf/examples/tiger.wmf | Bin 18718 -> 0 bytes .../libraries/mpdf/examples/tiger2.png | Bin 149248 -> 0 bytes .../libraries/mpdf/examples/tiger2.wmf | Bin 197440 -> 0 bytes .../libraries/mpdf/examples/tiger24trns.png | Bin 169256 -> 0 bytes .../mpdf/examples/tiger300px300dpi.jpg | Bin 28210 -> 0 bytes .../mpdf/examples/tiger300px300dpi.png | Bin 84835 -> 0 bytes .../mpdf/examples/tiger300px72dpi.jpg | Bin 28210 -> 0 bytes .../mpdf/examples/tiger300px96dpi.jpg | Bin 28210 -> 0 bytes .../mpdf/examples/tiger300px96dpi.png | Bin 84835 -> 0 bytes .../libraries/mpdf/examples/tiger8trns.gif | Bin 79175 -> 0 bytes .../libraries/mpdf/examples/tiger8trns.png | Bin 16173 -> 0 bytes .../libraries/mpdf/examples/tigercmyk.jpg | Bin 180137 -> 0 bytes inc/3rdparty/libraries/mpdf/examples/tux.svg | 1487 ------------- .../libraries/mpdf/examples/windmill.jpg | Bin 18045 -> 0 bytes 119 files changed, 21370 deletions(-) delete mode 100644 inc/3rdparty/libraries/mpdf/examples/alpha.gif delete mode 100644 inc/3rdparty/libraries/mpdf/examples/alpha.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/alpha3.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/bayeux1.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/bg.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/bgbarcode.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/bgrock.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/borders2FF.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/borders4FF.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/clematis.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example01_basic.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example04_images.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example05_tables.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example08_lists.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example09_forms.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example20_justify.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example22_columns.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example23_orientation.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example26_RTL.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example30_arabic.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example32_indic.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example49_changelog.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/firefox-48.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/flowers-pattern.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/formsubmit.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/goto.gif delete mode 100644 inc/3rdparty/libraries/mpdf/examples/img1.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/img2.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/img3.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/img4.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/img5.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/index.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/klematis.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/loading.gif delete mode 100644 inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css delete mode 100644 inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css delete mode 100644 inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css delete mode 100644 inc/3rdparty/libraries/mpdf/examples/quran282.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf delete mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_logoheader2.pdf delete mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf delete mode 100644 inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf delete mode 100644 inc/3rdparty/libraries/mpdf/examples/show_code.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/sunset.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/sunsetv.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/test.pdf delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.bmp delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.gif delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.php delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.svg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger.wmf delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger2.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger2.wmf delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger24trns.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px72dpi.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger8trns.gif delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tiger8trns.png delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tigercmyk.jpg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/tux.svg delete mode 100644 inc/3rdparty/libraries/mpdf/examples/windmill.jpg diff --git a/inc/3rdparty/libraries/mpdf/examples/alpha.gif b/inc/3rdparty/libraries/mpdf/examples/alpha.gif deleted file mode 100644 index 1ade505e9fcda412607e7bc93a25f3caa9263d23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31084 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%0ALCoZ4w?gUlWuc5!eS}C#ZEFt18xRM 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諍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 diff --git a/inc/3rdparty/libraries/mpdf/examples/alpha3.png b/inc/3rdparty/libraries/mpdf/examples/alpha3.png deleted file mode 100644 index e62e50a09cedf6dd6ad53fede0a2c89bd91c7fb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8596 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 AYXATM diff --git a/inc/3rdparty/libraries/mpdf/examples/bg.jpg b/inc/3rdparty/libraries/mpdf/examples/bg.jpg deleted file mode 100644 index 896ea63f8b127c3fa88ee81e2e722308109b674b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6762 zcmeHLdpMM78-Lz87-xnVWRavW)XofLoN}C5lav`bq|qihOsJf4XyqI`sTk3&hD0)y zP|n&*MJYq7!WZaVnD>e zKal}zTRTnXsL(KIcX~qM<2~VoEmDBpI8MNv0$c0GM>x zVWv<-GKrXu{Gvp#C~o@a7`2^Z4Du0Qln7LwkNi8H%SV5Su_|9xiTKhQ^CDI9PdtAj z%pwLv42T#IF(6{#D+93dFfk==GbNg6l8C0T3NhLSV08igr7)N#l(p4gDuhHNuGP_j z7dQ$uferlj1_AIFVLz}1NCaYS!iIt;S{#i=q0o{TjF`Bzq_nh@q?DA5tb)9ZELK)Z zN?u7GtBAwn@zQe2DoQvN1soo?_7eyR*Pzf6XtV@QMoI?vKb!C_z>0$~a2N?`0R$F8 zVj*D*SPx(7pyB(UwJV^18-##+6vK#1NJ_y8)$#xVA(03aa;Q2W3dWJ+Gp>klw5hy@XLkOfZFndoK|)eVS!JE-rp-FKdIY0w+l?tErnYue+IRN! zoz8n*T;1IFd3Yc8@%8g(9|;W$KM@fb6`h!rd^#odM-DghLRR+0pMK6MD7;#9t(ad@ zdh2#obxmzueZ&3cmIn`8A3bjCdhu&_PjBDL-v)<}oQ+J@=V;L4$>JbE8X9^)&g=Nanmn0PlusKxhq_>1It0SKXST+Hz4b zZn`<-$_NNfTo3})^DWUVlGW`8DmLE)1gRZ7S2y#bwrq!6K*o%+vEI{8Dt_}7D$Yr) z)asw&jbJp$7i2d%Bh`RUN1xN+p+sUa3oN|rHeJY*Y)$O7*rBE)T1Xm(WTbwK8qra@y^Ix8gX-At=5N$mHGbk zYLr}~oXL&7d#alEetXfWAlZc5aGxJgtQgEY{1vBHzZH$hNR8-wQ_L5hI`?&KeQFqo zG;)g#V&i!>6elg&v8p^-O zN%fP=GRK@wmj7_dvZFR2rK^Cue<@o>_rqYy_n{yBraT`U!-NHQyJofJBsUJwu9znB z6w|ts+DbspTt*tvHyXm}b>Pd;2`7{J%x(pTlO?`^hJ>X5~LZVZ~r7to&MJIT(DRqdW_dC0rk zBMo5qWr3+oDDqv;CCm?&yQ1&L|%$`pD-=8dc$u=y^)*Y zz`WLMCVBdp>cbgd7dO2;x!u<5+Zu8WS*m9)D9zq5&1gGcGE^t1Ja*FJx}x+oi@pw7 zXe{T%=HpDW*6_0qhG@pGneqF2mhawalDA1NkaVz*&0lFU9WSh_@4nf!PAAX=S&V#r zY>&re)hB|wxevJud-{Y$bZj#FMvch;PN^}wJ$c}Xm5W+te@}hC5GZB`WtUowhf=2I z=dZ77I{a*K|88UY<=>%R^(Hxw5xc-vh`u9kFZ~mD(t6v8KpW=VT+g7@J`_hAwJ;Lu z=}e>=v=GkGEv|E3+}q1LcpAt@%SV-=&MN`zW*DlYtY&S#EM3tr74>i^5lSI63qjcn%))j5gl&?A z;6xd7kMq`3F8;H+kQFkHpx?-!e#1UYVLXq}dA>LLtf0@sycpd;Sk4*WTDGvo=>ym9 zW7LM=T4djPA=p>ItV#XJ_L5uWrI_Q37x(DXZYh~Oo|)c}tIL0Nz}QE>I{u!kTH+-2 zV1!HoM;GxvqfS5!M5Vv^vsYaRcFs(3yUNRgywL48+D7B8Bo2PJJD{lIj&jeczYT|u zj9^*>`1^LVv6a(rr12zm#P`YH9y?HovA_LT%Ew=8;XaUC#z zw&5`=R$K_ChKeRQoH4fAlZ#^X!x5ve&ZtFqG8nA!d>n%c@SRKEP7$GjGjqwCFvzBj zy-ky>(PK+Y%I{IUH;*{m=il-&mQRH<20DuBJv(yJD;QiWjrnSiIWe9l6UcBS1p0-x z96e)ScN8`~M30S8gW~kqoAd6&-SesH&MxP7r_M*&e_+ z0#Qky5YO9ZR%&)-rcj(IGF#_5%q=dRrNH*vD<83DLtV@AmQw zD$Epa-GV{HC*v4a=r7Jnbgr*3sAzMcMVg<>yTI6+)V;XPry=G$Ywo@ZPwhA5_-E0b UR3DA2%~k~*LOWa^XDNL7FSb1?ZU6uP diff --git a/inc/3rdparty/libraries/mpdf/examples/bgbarcode.png b/inc/3rdparty/libraries/mpdf/examples/bgbarcode.png deleted file mode 100644 index 26120a8910cbaba7f429885a7c3a95233641e2d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2991 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/bgrock.jpg b/inc/3rdparty/libraries/mpdf/examples/bgrock.jpg deleted file mode 100644 index 2e0553a7a43b9e70033553a41bbe0fb8f6a0fd4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5191 zcmV-N6u9gE*#F=F5K2Z#MgRc;0Rb!lEC2xi+WOW1pxs80RaI300000000010s{mE1_uZU3Jd?l0JRVR0s#X90t5pE z1q1{D00Dgg0s{a95d{(Xb($mz{*4NnC+Tr5ke+Q0iQ$G+xPfK7oVV|TBo6!lfS}rhvq&(+@xUZD;`Y`woofDA^%RIhc^VmGxwZwO za-p;LL4~}zmy?xXa849G76$i3l2*3WBUr7&37`_b)kb2hjS^s~4KZ!5ep2!}jITRQ z9jrQxV((D2l=*So3!8Wu;=O^R-pe4~LKamdWNj_9h6Jwc%Y8iQ0ksV}dE~XWKW4aF zW6TllaT}IHxWqtk4t`K`jt=E($!u2Q5VG6c+sL;eV`IAKX3|(T_mh4D1}cOQ%z0h( z%eibVudVN*lKLdM7anSWcXF*9g8*g6$Rq)kmA+sYlY)|4CFP|0qypx7EVn~&i6a9W zZ3ScuK!25^Boc}^NCfat8&4!`@fi%Kaq{rTl2r0O^76opR?(F; zJu(5O*-7@RXM5=2x0@S_9nWsN6cESDG7PkYvz*}V!nM7W`e?dl_eW-aGh5lRIt6Z zk<405N@bQ<*rN^dI!lFOpq#ix0hcNP<8p$ulf$E4S`iJ(J2NuF8qE|e*=c`wjoVqU zVo*VHLoPwdBBk2f>T+A!+s!a*k!cmQ(_1hn%MwOgk1!Ba5I|s5;IHwmZ0VZ4h0}|D zMMbxlvd&Ml$Xy{IJ_}%cgl={n3Nq~_fl?oHX(g4^dcKnp3o1oB!6eHc8)P^@3T)er7xuLwPNZuW_qQ0fI-n0_Hh#S9xLgvVL8qfFyDYq33=D zh-HG>CbrWikp+zL*~e`vJF3P}%EgBRAmxEpUL_NS?)QhK1rO2)C3X+Fnm`$~?rCf~z0-V&68<+rsYQ6bAs;Wr#6NM)nz++F0Gl zokXp)#;uu2LWJxNnK}9PgN52CT>ZaJSZ_jHB=+i&-lU|TIxKB2%G}5@3j%g9BW~bE z;Zso1XTF{dPQpN3E03@`8jFoN>G||SF(OcXl+{CA<+g(UjSZ2aa`?*xd!7GWB{K8GR zB~H+5z%F#!~9&mFzf z#m%@WGsMzmL+$<8QutxWZU#+7Gqs@1w_6G%vX>*xjk6m#8>B;pA!Aoe<0`xX$+4{1 z&2ci#CBTY!kV81Pvu0`FN!1!at}?@GD_|Kjk;5KVwT

      QQt+VPPY<7#v7Jt4sI>i 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 K7)h~Tv;PYO0WuZ< diff --git a/inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg b/inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg deleted file mode 100644 index 88ff6c5b78f1375a6ac9a2f53b83f465ec9ace7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22070 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 W8|AI)4LuV6N)bL}4OxHt|0V!pYIExV diff --git a/inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg b/inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg deleted file mode 100644 index 9336c606cf811fd750bf4ee637e272007047d683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39381 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg b/inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg deleted file mode 100644 index 12a4dfc855dcaf0b755fc2c34c087ea166455bd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42274 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg b/inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg deleted file mode 100644 index bee0359cd02868f8a98f2df70942beedd4788bd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52945 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 J|L}h<{R==@5(EGM diff --git a/inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg b/inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg deleted file mode 100644 index 7da1c84702903dc74dc5f5f873e2979b07aa9916..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32952 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

      ^^#k>~LTBwb7##A0j$QY^#DUsUX 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/example01_basic.php b/inc/3rdparty/libraries/mpdf/examples/example01_basic.php deleted file mode 100644 index 09ffb3767..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example01_basic.php +++ /dev/null @@ -1,187 +0,0 @@ -mPDF -

      Basic HTML Example

      -This file demonstrates most of the HTML elements. -

      Heading 3

      -

      Heading 4

      -
      Heading 5
      -
      Heading 6
      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -
      - -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      - -
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      - -
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      - -
      PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
      -nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
      -dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
      -sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
      -Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
      -ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
      - - - - -
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      -code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
      - -

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      - - -

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      -

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      - -

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      - -

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      This tests underline and strikethrough when they are used together as they both use text-decoration

      - - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -
        -
      1. Item 1
      2. -
      3. Item 232
      4. -
      5. Item 3
      6. -
      7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
          -
        • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
        • -
        • Subitem 2 -
            -
          • -Level 3 subitem -
          • -
          -
        • -
        -
      8. -
      9. Item 5
      10. -
      - -
      -
      Definition list
      -
      List defined by DL, DD and DT tags
      -
      - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      DataDataDataData
      2nd line
      More DataMore DataMore DataData
      2nd line
      DataDataDataData
      2nd line
      DataDataDataData
      2nd line
      - -

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      - - - -Textarea - -

      - -Select - followed by text -

      - - - -Input Radio - No      Yes -

      - - -Input Radio - No      Keep      Choice -

      - - -Input Text - -

      - -Input Password - -

      - - - Checkboxes
      - Not selected
      - Selected
      - Disabled -

      - - - - - - - - -'; - - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->WriteHTML($html); -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php b/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php deleted file mode 100644 index b423e6bbb..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php +++ /dev/null @@ -1,41 +0,0 @@ -mPDF -

      Basic Example Using CSS Styles

      - -

      Heading 3

      -

      Heading 4

      -
      Heading 5
      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      -

      Heading using Small-Caps - supported from mPDF version 5

      -

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      -'; - - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->SetDisplayMode('fullpage'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php b/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php deleted file mode 100644 index ca1370278..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php +++ /dev/null @@ -1,138 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -.radialgradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65; - margin: auto; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-family: sans; - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.5em; -} -div { - padding:1em; - margin-bottom: 1em; - text-align:justify; -} -.example pre { - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; -} - -pre { text-align:left } -pre.code { font-family: monospace } - - - - -

      mPDF

      -

      Backgrounds & Borders

      - -
      -

      Page background

      -
      -The background colour can be set by CSS styles on the <body> tag. This will set the background for the whole page. In this document, the background has been set as a gradient (see below). -
      - -

      Background Gradients

      -
      -Background can be set as a linear or radial gradient between two colours. The background has been set on this <div> element to a linear gradient. CSS style used here is:
      -background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
      -The four numbers are coordinates in the form (x1, y1, x2, y2) which defines the gradient vector. x and y are values from 0 to 1, where 1 represents the height or width of the box as it is printed. -
      -
      -Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. -
      -
      -The background has been set on this <div> element to a radial gradient. CSS style used here is:
      -background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;
      -The five numbers are coordinates in the form (x1, y1, x2, y2, r) where (x1, y1) is the starting point of the gradient with color1, -(x2, y2) is the center of the circle with color2, and r is the radius of the circle. -(x1, y1) should be inside the circle, otherwise some areas will not be defined. -
      -
      -Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. -
      - -

      Background Images

      -
      -The CSS properties background-image, background-position, and background-repeat are supported as defined in CSS2, as well as the shorthand form "background". -
      -The background has been set on this <div> element to:
      -background: transparent url(\'bg.jpg\') repeat fixed right top;
      -Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. -
      - -

      Rounded Borders

      -
      -Rounded corners to borders can be added using border-radius as defined in the draft spec. of CSS3.
      - -The two length values of the border-*-radius properties define the radii of a quarter ellipse that defines the shape of the corner of the outer border edge. -The first value is the horizontal radius.
      -border-top-left-radius: 55pt 25pt; 55pt is radius of curve from top end of left border starting to go round to the top.
      - -If the second length is omitted it is equal to the first (and the corner is thus a quarter circle). If either length is zero, the corner is square, not rounded.
      - -The border-radius shorthand sets all four border-*-radius properties. If values are given before and after a slash, then the values before the slash set the horizontal radius and the values after the slash set the vertical radius. If there is no slash, then the values set both radii equally. The four values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If bottom-left is omitted it is the same as top-right. If bottom-right is omitted it is the same as top-left. If top-right is omitted it is the same as top-left. -
      -
      -border-radius: 4em;
      - -would be equivalent to
      - -border-top-left-radius: 4em;
      -border-top-right-radius: 4em;
      -border-bottom-right-radius: 4em;
      -border-bottom-left-radius: 4em;

      -
      -and
      -border-radius: 2em 1em 4em / 0.5em 3em;
      -would be equivalent to
      -border-top-left-radius: 2em 0.5em;
      -border-top-right-radius: 1em 3em;
      -border-bottom-right-radius: 4em 0.5em;
      -border-bottom-left-radius: 1em 3em;
      -
      - -
      -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example04_images.php b/inc/3rdparty/libraries/mpdf/examples/example04_images.php deleted file mode 100644 index b98776347..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example04_images.php +++ /dev/null @@ -1,207 +0,0 @@ - -table { border-collapse: collapse; margin-top: 0; text-align: center; } -td { padding: 0.5em; } -h1 { margin-bottom: 0; }z - -

      mPDF Images

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      GIFJPGJPG (CMYK)PNGBMPWMFSVG

      Opacity 50%

      - -

      Alpha channel

      - - - - - - - - - -
      PNG
      -

      Transparency

      - - - - - - - - - - - - - - - - - - - - - - - - -
      PNG
      GIF
      WMF
      SVG
      - - -Images returned from tiger.php -
      -GIF -JPG -PNG -WMF -SVG -
      - - - - -

      Image Alignment

      -
      From mPDF version 4.2 onwards, in-line images can be individually aligned (vertically). Most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom. The default value for vertical alignment has been changed to baseline, and the default padding to 0, consistent with most browsers. -
      -
      - -
      -These images -are -top -aligned -
      -
      - -
      -These images -are -text-top -aligned -
      -
      - -
      -These images -are -bottom -aligned -
      -
      - -
      -These images -are -text-bottom -aligned -
      -
      - -
      -These images -are -baseline -aligned -
      -
      - -
      -These images -are -middle -aligned -
      -
      - -

      Mixed alignment

      -
      -baseline: -text-bottom: -middle: -bottom: -text-top: -top: -
      - -

      Image Border and padding

      -From mPDF v4.2, Image padding is supported as well as border and margin. - - -

      Rotated Images

      - - - - -
      - - - - -
      -       -       -       - -
      -  -  -  - -
      - -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example05_tables.php b/inc/3rdparty/libraries/mpdf/examples/example05_tables.php deleted file mode 100644 index 997614a5d..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example05_tables.php +++ /dev/null @@ -1,1017 +0,0 @@ -mPDF -

      Tables

      -

      CSS Styles

      -

      The CSS properties for tables and cells is increased over that in html2fpdf. It includes recognition of THEAD, TFOOT and TH.
      See below for other facilities such as autosizing, and rotation.

      - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -This is data out of p -

      This is bold data p

      -This is bold data out of p
      -This is normal data after br -

      H3 in a table

      -
      This is data div
      -This is data out of div -
      This is data div (bold)
      -This is data out of div -

      More data

      This is large text

      Row 3

      This is long data

      This is data

      Row 4 <td> cell

      This is data

      This is data

      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      - -

      This table has padding-left and -right set to 5mm i.e. padding within the cells. Also border colour and style, font family and size are set by CSS.

      - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data

      Row 4 <td> cell

      This is data

      This is data

      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      - -

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      - - - - -
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      - - -

      Table Styles

      -

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      -

      bpmTopic Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      More data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      - -

       

      - -

      bpmTopicC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      bpmTopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      -

       

      -

      bpmTopnTailC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      TopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2Bottom right align -

      This is data. Can use

      -

      bold italic sub or sup text

      -
      -

      Bottom right align

      -
      -

      This is data. This cell

      -

      uses Cell Styles to set

      -

      the borders.

      -

      All borders are collapsible

      -

      in mPDF.

      -
      This is data
      Row header 4 -

      This is data p

      -
      More data
      Row header 5Also data merged and centered
      - -

       

      - -

      Lists in a Table

      - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2 -
        -
      1. Item 1
      2. -
      3. Item 2 -
          -
        1. Subitem of ordered list
        2. -
        3. Subitem 2 -
            -
          1. Level 3 subitem
          2. -
          3. Level 3 subitem
          4. -
          -
        4. -
        -
      4. -
      5. Item 3
      6. -
      7. Another Item
      8. -
      9. Subitem -
          -
        1. Level 3 subitem
        2. -
        -
      10. -
      11. Another Item
      12. -
      -
      -Unordered list: -
        -
      • Item 1
      • -
      • Item 2 -
          -
        • Subitem of unordered list
        • -
        • Subitem 2 -
            -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          -
        • -
        -
      • -
      • Item 3
      • -
      -
      -

       

      - - -

      Automatic Column Width

      - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      - - -

      ColSpan & Rowspan

      - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      Fusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      - - - -

      Table Header & Footer Rows

      -

      A table using a header row should repeat the header row across pages:

      -

      bpmTopicC Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second column header

      -
      Third column header
      Col and Row Footer -

      Second column footer

      -
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data -

      This is data

      -
      -

      Row header 3

      -
      -

      This is data

      -
      This is data
      Row header 4This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      -

       

      - -

      Autosizing Tables

      -

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      - - - -

      Rotating Tables

      -

      This is set to rotate -90 degrees (counterclockwise).

      - -
      Periodic Table
      -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      -

       

      - - -

      Rotated text in Table Cells

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      -

       

      - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html,2); - -$mpdf->Output('mpdf.pdf','I'); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php b/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php deleted file mode 100644 index e50764a92..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php +++ /dev/null @@ -1,532 +0,0 @@ - - - - -

      mPDF

      -

      Tables - Nested

      - - -
      -Text before table - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      - - -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      - - -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      - - -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      - - -
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      - -
      - -

      Text before table

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -

      Text after table

      - - -
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      - -
      C4
      Row DD2D3D4
      - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -
      This is data
      Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      - -
      C4
      Row DD2D3D4
      - -
      This is data
      - - -
      - -

       

      - - -
      -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is data - -NO NESTING This is data
      Row 2This is dataThis is dataThis is data
      Row 3This is dataThis is dataThis is data
      Row 4This is dataThis is dataThis is data
      - -
      - - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php b/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php deleted file mode 100644 index a0cf4fcb8..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php +++ /dev/null @@ -1,500 +0,0 @@ - - - - - -

      mPDF

      -

      Tables - Borders

      -

      mPDF

      - -Border conflict resolution in tables with border-collapse set to "collapse". mPDF follows the rules set by CSS as well as possible, but as you can see, there is some difference in interpretation of the rules: - - - - - - - - - - - - - - - - - - - - - - - - - -
      mPDFInternet Explorer
      IE 7
      Firefox
      v 3.0.3
      - - - - - - - - - - - - - - - - - - - - - - -
      111
      111
      11
      111
      - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      111
      111
      11
      111
      - - -
      - - - - - - - - - - - - - - - - - - - - - -
      111
      111
      11
      111
      - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      mPDFmPDF < v3Internet Explorer
      IE 7
      Firefox
      v 3.0.3
      - - - - - - - - - - - - - - - - - - - - - - -
      111
      111
      11
      111
      - - - -
      - - - - - - - - - - - - - - - - - - - - - -
      111
      111
      11
      111
      - - -
      - - - - - - - - - - - - - - - - - - - - - -
      111
      111
      11
      111
      - - -
      - - - -

      mPDF

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Datadouble reddashed yellowdotted greenData
      Datahidden DatanoneData
      Dataridge bluenone none Data
      Datanone groove pinknone Data
      none inset graynone outset purplenone
      - -

      Firefox

      - - -
      - - -

      IE 7

      - - - - -
      mPDF
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Datadouble reddashed yellowdotted greenData
      Datahidden DatanoneData
      Dataridge bluenone none Data
      Datanone groove pinknone Data
      none inset graynone outset purplenone
      - -
      Firefox
      - - - - -
      IE 7
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      - - - - - - - - - - - - - - - - -
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      - - - - - - - - - - - - - - - - -
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      - - - - - - - - - - - - - - - - -
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      - - - - - - - - - - - - - - - - -
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      - - - - - - - - - - - - - - - - -
      solid orangenonedouble rednoneinset graynoneoutset purplenonegroove pinknoneridge blue
      - - - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('en-GB-x','A4','','',10,10,10,10,6,3); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example08_lists.php b/inc/3rdparty/libraries/mpdf/examples/example08_lists.php deleted file mode 100644 index a716d8825..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example08_lists.php +++ /dev/null @@ -1,137 +0,0 @@ - -ol, ul { text-align: justify; -} - -.lista { list-style-type: upper-roman; } -.listb{ list-style-type: decimal; font-family: sans-serif; color: blue; font-weight: bold; font-style: italic; font-size: 19pt; } -.listc{ list-style-type: upper-alpha; text-indent: 25mm; } -.listd{ list-style-type: lower-alpha; color: teal; line-height: 2; } -.liste{ list-style-type: disc; } - - - -

      mPDF

      -

      Lists

      - -
      -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        11. Text here lorem ipsum ibisque totum. -
            -
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum. -
          4. -
          5. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum. -
                -
              1. Text here lorem ipsum ibisque totum.
              2. -
              3. Text here lorem ipsum ibisque totum.
              4. -
              5. Text here lorem ipsum ibisque totum.
              6. -
              7. Text here lorem ipsum ibisque totum.
              8. -
              9. Text here lorem ipsum ibisque totum.
              10. -
              -
            10. -
            11. Text here lorem ipsum ibisque totum.
            12. -
            13. Text here lorem ipsum ibisque totum.
            14. -
            15. Text here lorem ipsum ibisque totum.
            16. -
            17. Text here lorem ipsum ibisque totum.
            18. -
            -
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          -
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        19. Text here lorem ipsum ibisque totum.
        20. -
        -
      12. -
      13. Text here lorem ipsum ibisque totum.
      14. -
      15. Text here lorem ipsum ibisque totum. -
          -
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          11. Text here lorem ipsum ibisque totum.
          12. -
          13. Text here lorem ipsum ibisque totum. -
              -
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          14. -
          -
        6. -
        -
      16. -
      17. Text here lorem ipsum ibisque totum.
      18. -
      19. Text here lorem ipsum ibisque totum.
      20. -
      21. Text here lorem ipsum ibisque totum.
      22. -
      23. Text here lorem ipsum ibisque totum.
      24. -
      25. Text here lorem ipsum ibisque totum.
      26. -
      27. Text here lorem ipsum ibisque totum.
      28. -
      29. Text here lorem ipsum ibisque totum.
      30. -
      31. Text here lorem ipsum ibisque totum.
      32. -
      -
      -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->list_align_style = 'L'; // Determines alignment of numbers in numbered lists -$mpdf->list_number_suffix = ')'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example09_forms.php b/inc/3rdparty/libraries/mpdf/examples/example09_forms.php deleted file mode 100644 index 0117a5beb..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example09_forms.php +++ /dev/null @@ -1,204 +0,0 @@ - - -Textarea - -

      - -Select - followed by text -

      - - - -Input Radio - No      Yes -

      - - -Input Radio - No      Keep      Choice -

      - - -Input Text - -

      - -Input Password - -

      - - - Checkboxes
      - Disabled
      - Selected -

      - -

      - - - -
      - -
      -
      - -Textarea - -

      - - - -Select - -

      - -Input Radio - No      Yes -

      - - -Input Radio - No      Keep      Choice -

      - - -Input Text - -
      - -Input Password - -

      - - Checkboxes
      - Disabled
      - Selected -

      - -

      - -
      - -
      -
      - - -
      - - - - - - - - - - - - - - - - - -
      Textarea
      Select
      Input Radio No      Yes
      Input Radio No      Keep      Choice
      Input Text
      - -
      - - - - - - - - - - - - - - -
      Checkbox
      Checkboxes
      Gardening
      Holidays
      Motoring
      Books Theatre
      Selected option Musicals
      Eating out Events
      -
      -
      -
      - - -
      - -Input Radio - No      Yes - -

      - - - -Input Radio - No      Keep      Choice - -

      - - -Input Text
      - -Input text:
      - -Password: -

      - -Checkboxes:
      - Checkboxes
      - Disabled
      - Selected -

      - - - - - -
      - -'; - -//============================================================== -//============================================================== -//============================================================== -if (isset($_REQUEST['html'])) { echo ''.$html.''; exit; } -if (isset($_REQUEST['source'])) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} -//============================================================== -//============================================================== -//============================================================== - -$mpdf=new mPDF('c'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->SetColumns(2,'J'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php b/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php deleted file mode 100644 index 8a485e359..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php +++ /dev/null @@ -1,103 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -h4 { - font-family: sans; - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.5em; -} -div { - padding:1em; - margin-bottom: 1em; - text-align:justify; -} -.myfixed1 { position: absolute; - overflow: visible; - left: 0; - bottom: 0; - border: 1px solid #880000; - background-color: #FFEEDD; - background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5; - padding: 1.5em; - font-family:sans; - margin: 0; -} -.myfixed2 { position: fixed; - overflow: auto; - right: 0; - bottom: 0mm; - width: 65mm; - border: 1px solid #880000; - background-color: #FFEEDD; - background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5; - padding: 0.5em; - font-family:sans; - margin: 0; - rotate: 90; -} - - - -

      mPDF

      -

      Floating & Fixed Position elements

      - -

      CSS "Float"

      -
      -Block elements can be positioned alongside each other using the CSS property float: left or right. The clear property can also be used, set as left|right|both. Float is only supported on block elements (i.e. not SPAN etc.) and is not fully compliant with the CSS specification. -Float only works properly if a width is set for the float, otherwise the width is set to the maximum available (full width, or less if floats already set). -
      -Margin-right can still be set for a float:right and vice-versa. -
      -A block element next to a float has the padding adjusted so that content fits in the remaining width. Text next to a float should wrap correctly, but backgrounds and borders will overlap and/or lie under the floats in a mess. -
      -NB The width that is set defines the width of the content-box. So if you have two floats with width=50% and either of them has padding, margin or border, they will not fit together on the page. -
      - -
      -This is text in a <div> element that is set to float:right and width:28%. It also has an image with float:right inside. With this exception, you cannot nest elements with the float property set inside one another. -
      -
      -This is text in a <div> element that is set to float:left and width:54%. -
      - -
      -This is text that follows a <div> element that is set to clear:both. - -

      CSS "Position"

      -At the bottom of the page are two DIV elements with position:fixed and position:absolute set - -
      1 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      - -
      2 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      - - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php b/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php deleted file mode 100644 index 6fd990fb7..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php +++ /dev/null @@ -1,81 +0,0 @@ - -

      mPDF

      -

      Fixed-position block element with Autofit

      -
      Using the CSS properties position and overflow:auto it is possible to fit text to a single page:
      - -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      - -
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      - -
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      - - - - - -
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      -code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
      - -

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      - -

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      -

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      - -

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      - -

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      This tests underline and strikethrough when they are used together as they both use text-decoration

      - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - -

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      -

      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 F`5(xbH*f#| diff --git a/inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg b/inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg deleted file mode 100644 index f02003b5f38afde872640283c37dc22213541445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33061 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg b/inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg deleted file mode 100644 index cf161ab72e7e8bdaf3b9f8c683a2d6592cf8dc71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37662 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/clematis.jpg b/inc/3rdparty/libraries/mpdf/examples/clematis.jpg deleted file mode 100644 index d8078f85e15162f78d1a3dfccc1f9abf129460cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184829 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 rs>}rg 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 z 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

      - -'; - - - - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php b/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php deleted file mode 100644 index 44c5374dd..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - -
      Left header p {PAGENO}Right header
      -
      - - - - - - -
      Outer headerInner header p {PAGENO}
      -
      - - - - - - - - - -

      Introduction

      -
      Introduction
      -

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      - - - -

      Section 2

      -
      Section 2
      -

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      - - - -

      Section 3

      -
      Section 3
      -

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      - - - -

      Section 4

      -
      Section 4
      -

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      - - - - - -

      Section 5

      -
      Section 5
      -

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      - -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); -$mpdf=new mPDF('c'); - -$mpdf->mirrorMargins = true; - -$mpdf->SetDisplayMode('fullpage','two'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php b/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php deleted file mode 100644 index 256a8a063..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php +++ /dev/null @@ -1,94 +0,0 @@ - -
      {PAGENO}
      - - -
      {PAGENO}
      -
      - -
      {PAGENO}
      -
      - -
      {PAGENO}
      -
      - - - - - - - -

      mPDF 1

      -

      Paged Media using CSS

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      - - -

      mPDF 2

      -

      Paged Media using CSS

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      - - -

      mPDF 3

      -

      Paged Media using CSS

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      - - -

      mPDF 4

      -

      Paged Media using CSS

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      - - -

      mPDF 5

      -

      Paged Media using CSS

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      - - -

      mPDF 6

      -

      Paged Media using CSS

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      - - -

      mPDF 7

      -

      Paged Media using CSS

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      - -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',5,5,5,5,0,0); - -$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins (1 or 0) - -$mpdf->SetDisplayMode('fullpage','two'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstylePaged.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php b/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php deleted file mode 100644 index 540469838..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php +++ /dev/null @@ -1,148 +0,0 @@ -Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      "; -//============================================================== -//============================================================== -//============================================================== - - -$html = ' - - - - - -

      mPDF

      -

      Table of Contents & Bookmarks

      - - - - -'; - -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->mirrorMargins = 1; - -$mpdf->SetDisplayMode('fullpage','two'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - - -// Alternative ways to mark ToC entries and Bookmarks -// This will automatically generate entries from the

      tag -$mpdf->h2toc = array('H4'=>0); -$mpdf->h2bookmarks = array('H4'=>0); - -//============================================================== -// CONTENT -for ($j = 1; $j<7; $j++) { - if ($j==2) $mpdf->WriteHTML('',2); - if ($j==3) $mpdf->WriteHTML('',2); - if ($j==4) $mpdf->WriteHTML('',2); - if ($j==5) $mpdf->WriteHTML('',2); - if ($j==6) $mpdf->WriteHTML('
      ODD
      ',2); - for ($x = 1; $x<7; $x++) { - - // Alternative way to mark ToC entries and Bookmarks manually -// $mpdf->WriteHTML('

      Section '.$j.'.'.$x.'

      ',2); - - // Using Automatic generation from

      tag - $mpdf->WriteHTML('

      Section '.$j.'.'.$x.'

      ',2); - - $html = ''; - // Split $lorem into words - $words = preg_split('/([\s,\.]+)/',$lorem,-1,PREG_SPLIT_DELIM_CAPTURE); - foreach($words as $i => $e) { - if($i%2==0) { - $y = rand(1,10); // every tenth word - if (preg_match('/^[a-zA-Z]{4,99}$/',$e) && ($y > 8)) { - // If it is just a word use it as an index entry - $content = ucfirst(trim($e)); - $html .= ''; - $html .= ''.$e . ''; - } - else { $html .= $e; } - } - else { $html .= $e; } - } - $mpdf->WriteHTML($html); - } -} -//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -// INDEX -$html = ' -

      Index

      - -'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php b/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php deleted file mode 100644 index 7943bde87..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php +++ /dev/null @@ -1,60 +0,0 @@ -mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins - -$mpdf->defaultheaderfontsize = 10; /* in pts */ -$mpdf->defaultheaderfontstyle = B; /* blank, B, I, or BI */ -$mpdf->defaultheaderline = 1; /* 1 to include line below header/above footer */ - -$mpdf->defaultfooterfontsize = 12; /* in pts */ -$mpdf->defaultfooterfontstyle = B; /* blank, B, I, or BI */ -$mpdf->defaultfooterline = 1; /* 1 to include line below header/above footer */ - - -$mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|My document'); -$mpdf->SetFooter('{PAGENO}'); /* defines footer for Odd and Even Pages - placed at Outer margin */ - -$mpdf->SetFooter(array( - 'L' => array( - 'content' => 'Text to go on the left', - 'font-family' => 'sans-serif', - 'font-style' => 'B', /* blank, B, I, or BI */ - 'font-size' => '10', /* in pts */ - ), - 'C' => array( - 'content' => '- {PAGENO} -', - 'font-family' => 'serif', - 'font-style' => 'BI', - 'font-size' => '18', /* gives default */ - ), - 'R' => array( - 'content' => 'Printed @ {DATE j-m-Y H:m}', - 'font-family' => 'monospace', - 'font-style' => '', - 'font-size' => '10', - ), - 'line' => 1, /* 1 to include line below header/above footer */ -), 'E' /* defines footer for Even Pages */ -); - - -$html = ' -

      mPDF

      -

      Headers & Footers Method 1

      -

      Odd / Right page

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -

      Even / Left page

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      -'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php b/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php deleted file mode 100644 index 8ca966d69..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php +++ /dev/null @@ -1,49 +0,0 @@ -mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins - -$header = ' - - - - -
      Left header p {PAGENO}Right header
      -'; -$headerE = ' - - - - -
      Outer headerInner header p {PAGENO}
      -'; - -$footer = ''; -$footerE = ''; - - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - - -$html = ' -

      mPDF

      -

      Headers & Footers Method 2

      -

      Odd / Right page

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -

      Even / Left page

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      -'; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php b/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php deleted file mode 100644 index b0d39d454..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - -

      mPDF

      -

      Headers & Footers Method 3

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - -

      Headers & Footers Method 3

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - - -

      Headers & Footers

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php b/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php deleted file mode 100644 index 16e8bca99..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -

      mPDF

      -

      Headers & Footers Method 4

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - -

      Headers & Footers Method 4

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - - - -

      Headers & Footers Method 4

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,47,47,10,10); - -$mpdf->mirrorMargins = 1; // Use different Odd/Even headers and footers and mirror margins - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php b/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php deleted file mode 100644 index 6c3ca9453..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php +++ /dev/null @@ -1,59 +0,0 @@ - -
       {PAGENO} 
      - - -
       {PAGENO} 
      -
      - - -'; - -//============================================================== -$html = ' -

      mPDF Page Sizes

      -

      Changing page (sheet) sizes within the document

      -'; -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4'); - -$mpdf->WriteHTML($hhtml); - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

      This should print on an A4 (portrait) sheet

      '); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

      This page appears just after the ToC and should print on an A4 (landscape) sheet

      '); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

      This should print on an A5 (landscape) sheet

      '); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

      This should print on an Letter sheet

      '); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

      This should print on a sheet 150mm x 150mm

      '); - -$mpdf->WriteHTML(''); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML('

      This should print on a sheet 11.69in x 8.27in = A4 landscape

      '); - - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example20_justify.php b/inc/3rdparty/libraries/mpdf/examples/example20_justify.php deleted file mode 100644 index 7e9f89622..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example20_justify.php +++ /dev/null @@ -1,130 +0,0 @@ -mPDF

      -

      Justification

      - -

      Tables

      -

      Text can be justified in table cells using in-line or stylesheet CSS. (Note that <p> tags are removed within cells along with any style definition or attributes.)

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -

      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      -

       

      - -

      Testing Justification with Long Words

      -

      http://www-950.ibm.com/software/globalization/icu/demo/converters?s=ALL&snd=4356&dnd=4356

      -
      Should not split
      -

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplit neque sit amet erat

      -

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend et verylongwordthatwontsplit neque sit amet erat

      - -
      Non-breaking Space &nbsp;

      The next example has a non-breaking space between eleifend and the very long word.

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      Nbsp will only work in fonts that have a glyph to represent the character i.e. not in the CJK languages nor some Unicode fonts.

      - - - -

      Testing Justification with mixed Styles

      -

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      -

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47 and then more text. -

      -

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text -

      -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text -

      - -

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      -

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47 then more text. -

      -

      -

      -Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text -

      -'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -// SPACING -$mpdf->WriteHTML("

      Spacing

      mPDF uses both letter- and word-spacing for text justification. The default is a mixture of both, set by the configurable values jSWord and jSmaxChar. (Only word spacing is used when cursive languages such as Arabic or Indic are detected.)

      "); - -$mpdf->jSWord = 0; // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character -$mpdf->jSmaxChar = 0; // Maximum spacing to allocate to character spacing. (0 = no maximum) -$mpdf->WriteHTML("
      Character spacing

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      "); - -// Back to default settings -$mpdf->jSWord = 0.4; -$mpdf->jSmaxChar = 2; -$mpdf->WriteHTML("
      Word spacing

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      "); - -$mpdf->WriteHTML("
      Mixed Character and Word spacing

      Maecenas feugiat pede vel risus. Nulla et lectus eleifend verylongwordthatwontsplitanywhere neque sit amet erat

      "); - - - - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php b/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php deleted file mode 100644 index e23cce8fb..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php +++ /dev/null @@ -1,41 +0,0 @@ -Little Women -

      Chapter One

      -

      Playing Pilgrims

      - -

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the `Mouse\' was the pet of the family.

      As young readers like to know `how people look\', we will take this moment to give them a little sketch of the four sisters, who sat knitting away in the twilight, while the December snow fell quietly without, and the fire crackled cheerfully within. It was a comfortable room, though the carpet was faded and the furniture very plain, for a good picture or two hung on the walls, books filled the recesses, chrysanthemums and Christmas roses bloomed in the windows, and a pleasant atmosphere of home peace pervaded it.

      Margaret, the eldest of the four, was sixteen, and very pretty, being plump and fair, with large eyes, plenty of soft brown hair, a sweet mouth, and white hands, of which she was rather vain. Fifteen-year-old Jo was very tall, thin, and brown, and reminded one of a colt, for she never seemed to know what to do with her long limbs, which were very much in her way. She had a decided mouth, a comical nose, and sharp, gray eyes, which appeared to see everything, and were by turns fierce, funny, or thoughtful. Her long, thick hair was her one beauty, but it was usually bundled into a net, to be out of her way. Round shoulders had Jo, big hands and feet, a fly-away look to her clothes, and the uncomfortable appearance of a girl who was rapidly shooting up into a woman and didn\'t like it. Elizabeth, or Beth, as everyone called her, was a rosy, smooth-haired, bright-eyed girl of thirteen, with a shy manner, a timid voice, and a peaceful expression which was seldom disturbed. Her father called her `Little Miss Tranquillity\', and the name suited her excellently, for she seemed to live in a happy world of her own, only venturing out to meet the few whom she trusted and loved. Amy, though the youngest, was a most important person, in her own opinion at least. A regular snow maiden, with blue eyes, and yellow hair curling on her shoulders, pale and slender, and always carrying herself like a young lady mindful of her manners. What the characters of the four sisters were we will leave to be found out.

      The clock struck six and, having swept up the hearth, Beth put a pair of slippers down to warm. Somehow the sight of the old shoes had a good effect upon the girls, for Mother was coming, and everyone brightened to welcome her. Meg stopped lecturing, and lighted the lamp, Amy got out of the easy chair without being asked, and Jo forgot how tired she was as she sat up to hold the slippers nearer to the blaze.

      They are quite worn out. Marmee must have a new pair.

      I thought I\'d get her some with my dollar, said Beth.

      No, I shall! cried Amy.

      I\'m the oldest, began Meg, but Jo cut in with a decided, I\'m the man of the family now Papa is away, and I shall provide the slippers, for he told me to take special care of Mother while he was gone.

      I\'ll tell you what we\'ll do, said Beth, let\'s each get her something for Christmas, and not get anything for ourselves.

      That\'s like you, dear! What will we get? exclaimed Jo.

      Everyone thought soberly for a minute, then Meg announced, as if the idea was suggested by the sight of her own pretty hands, I shall give her a nice pair of gloves.

      Army shoes, best to be had, cried Jo.

      Some handkerchiefs, all hemmed, said Beth.

      I\'ll get a little bottle of cologne. She likes it, and it won\'t cost much, so I\'ll have some left to buy my pencils, added Amy.

      How will we give the things? asked Meg.

      Put them on the table, and bring her in and see her open the bundles. Don\'t you remember how we used to do on our birthdays? answered Jo.

      I used to be so frightened when it was my turn to sit in the chair with the crown on, and see you all come marching round to give the presents, with a kiss. I liked the things and the kisses, but it was dreadful to have you sit looking at me while I opened the bundles, said Beth, who was toasting her face and the bread for tea at the same time.

      Let Marmee think we are getting things for ourselves, and then surprise her. We must go shopping tomorrow afternoon, Meg. There is so much to do about the play for Christmas night, said Jo, marching up and down, with her hands behind her back, and her nose in the air.

      I don\'t mean to act any more after this time. I\'m getting too old for such things, observed Meg, who was as much a child as ever about `dressing-up\' frolics.

      You won\'t stop, I know, as long as you can trail round in a white gown with your hair down, and wear gold-paper jewelry. You are the best actress we\'ve got, and there\'ll be an end of everything if you quit the boards, said Jo. We ought to rehearse tonight. Come here, Amy, and do the fainting scene, for you are as stiff as a poker in that.

      I can\'t help it. I never saw anyone faint, and I don\'t choose to make myself all black and blue, tumbling flat as you do. If I can go down easily, I\'ll drop. If I can\'t, I shall fall into a chair and be graceful. I don\'t care if Hugo does come at me with a pistol, returned Amy, who was not gifted with dramatic power, but was chosen because she was small enough to be borne out shrieking by the villain of the piece.

      Do it this way. Clasp your hands so, and stagger across the room, crying frantically, `Roderigo` Save me! Save me! and away went Jo, with a melodramatic scream which was truly thrilling.

      Amy followed, but she poked her hands out stiffly before her, and jerked herself along as if she went by machinery, and her Ow! was more suggestive of pins being run into her than of fear and anguish. Jo gave a despairing groan, and Meg laughed outright, while Beth let her bread burn as she watched the fun with interest.

      It\'s no use! Do the best you can when the time comes, and if the audience laughs, don\'t blame me. Come on, Meg.

      Then things went smoothly, for Don Pedro defied the world in a speech of two pages without a single break. Hagar, the witch, chanted an awful incantation over her kettleful of simmering toads, with weird effect. Roderigo rent his chains asunder manfully, and Hugo died in agonies of remorse and arsenic, with a wild, Ha! Ha!

      It\'s the best we\'ve had yet, said Meg, as the dead villain sat up and rubbed his elbows.

      I don\'t see how you can write and act such splendid things, Jo. You\'re a regular Shakespeare! exclaimed Beth, who firmly believed that her sisters were gifted with wonderful genius in all things.

      Not quite, replied Jo modestly. I do think THE WITCHES CURSE, an Operatic Tragedy is rather a nice thing, but I\'d like to try MacBETH, if we only had a trapdoor for Banquo. I always wanted to do the killing part. `Is that a dagger that I see before me? muttered Jo, rolling her eyes and clutching at the air, as she had seen a famous tragedian do.

      No, it\'s the toasting fork, with Mother\'s shoe on it instead of the bread. Beth\'s stage-struck! cried Meg, and the rehearsal ended in a general burst of laughter.

      Glad to find you so merry, my girls, said a cheery voice at the door, and actors and audience turned to welcome a tall, motherly lady with a `can I help you\' look about her which was truly delightful. She was not elegantly dressed, but a noble-looking woman, and the girls thought the gray cloak and unfashionable bonnet covered the most splendid mother in the world.

      Well, dearies, how have you got on today? There was so much to do, getting the boxes ready to go tomorrow, that I didn\'t come home to dinner. Has anyone called, Beth? How is your cold, Meg? Jo, you look tired to death. Come and kiss me, baby.

      While making these maternal inquiries Mrs. March got her wet things off, her warm slippers on, and sitting down in the easy chair, drew Amy to her lap, preparing to enjoy the happiest hour of her busy day. The girls flew about, trying to make things comfortable, each in her own way. Meg arranged the tea table, Jo brought wood and set chairs, dropping, over-turning, and clattering everything she touched. Beth trotted to and fro between parlor kitchen, quiet and busy, while Amy gave directions to everyone, as she sat with her hands folded.

      As they gathered about the table, Mrs. March said, with a particularly happy face, I\'ve got a treat for you after supper.

      A quick, bright smile went round like a streak of sunshine. Beth clapped her hands, regardless of the biscuit she held, and Jo tossed up her napkin, crying, A letter! A letter! Three cheers for Father!

      Yes, a nice long letter. He is well, and thinks he shall get through the cold season better than we feared. He sends all sorts of loving wishes for Christmas, and an especial message to you girls, said Mrs. March, patting her pocket as if she had got a treasure there.

      Hurry and get done! Don\'t stop to quirk your little finger and simper over your plate, Amy, cried Jo, choking on her tea and dropping her bread, butter side down, on the carpet in her haste to get at the treat.

      Beth ate no more, but crept away to sit in her shadowy corner and brood over the delight to come, till the others were ready.

      I think it was so splendid in Father to go as chaplain when he was too old to be drafted, and not strong enough for a soldier, said Meg warmly.

      Don\'t I wish I could go as a drummer, a vivan—what\'s its name? Or a nurse, so I could be near him and help him, exclaimed Jo, with a groan.

      It must be very disagreeable to sleep in a tent, and eat all sorts of bad-tasting things, and drink out of a tin mug, sighed Amy.

      When will he come home, Marmee? asked Beth, with a little quiver in her voice.

      Not for many months, dear, unless he is sick. He will stay and do his work faithfully as long as he can, and we won\'t ask for him back a minute sooner than he can be spared. Now come and hear the letter.

      They all drew to the fire, Mother in the big chair with Beth at her feet, Meg and Amy perched on either arm of the chair, and Jo leaning on the back, where no one would see any sign of emotion if the letter should happen to be touching. Very few letters were written in those hard times that were not touching, especially those which fathers sent home. In this one little was said of the hardships endured, the dangers faced, or the homesickness conquered. It was a cheerful, hopeful letter, full of lively descriptions of camp life, marches, and military news, and only at the end did the writer\'s heart over-flow with fatherly love and longing for the little girls at home.

      Give them all of my dear love and a kiss. Tell them I think of them by day, pray for them by night, and find my best comfort in their affection at all times. A year seems very long to wait before I see them, but remind them that while we wait we may all work, so that these hard days need not be wasted. I know they will remember all I said to them, that they will be loving children to you, will do their duty faithfully, fight their bosom enemies bravely, and conquer themselves so beautifully that when I come back to them I may be fonder and prouder than ever of my little women.

      Everybody sniffed when they came to that part. Jo wasn\'t ashamed of the great tear that dropped off the end of her nose, and Amy never minded the rumpling of her curls as she hid her face on her mother\'s shoulder and sobbed out, I am a selfish girl! But I\'ll truly try to be better, so he mayn\'t be disappointed in me by-and-by.

      We all will, cried Meg. I think too much of my looks and hate to work, but won\'t any more, if I can help it.

      I\'ll try and be what he loves to call me, `a little woman\' and not be rough and wild, but do my duty here instead of wanting to be somewhere else, said Jo, thinking that keeping her temper at home was a much harder task than facing a rebel or two down South.

      Beth said nothing, but wiped away her tears with the blue army sock and began to knit with all her might, losing no time in doing the duty that lay nearest her, while she resolved in her quiet little soul to be all that Father hoped to find her when the year brought round the happy coming home.

      Mrs. March broke the silence that followed Jo\'s words, by saying in her cheery voice, Do you remember how you used to play Pilgrims Progress when you were little things? Nothing delighted you more than to have me tie my piece bags on your backs for burdens, give you hats and sticks and rolls of paper, and let you travel through the house from the cellar, which was the City of Destruction, up, up, to the housetop, where you had all the lovely things you could collect to make a Celestial City.

      What fun it was, especially going by the lions, fighting Apollyon, and passing through the valley where the hob-goblins were, said Jo.

      I liked the place where the bundles fell off and tumbled downstairs, said Meg.

      I don\'t remember much about it, except that I was afraid of the cellar and the dark entry, and always liked the cake and milk we had up at the top. If I wasn\'t too old for such things, I\'d rather like to play it over again, said Amy, who began to talk of renouncing childish things at the mature age of twelve.

      We never are too old for this, my dear, because it is a play we are playing all the time in one way or another. Out burdens are here, our road is before us, and the longing for goodness and happiness is the guide that leads us through many troubles and mistakes to the peace which is a true Celestial City. Now, my little pilgrims, suppose you begin again, not in play, but in earnest, and see how far on you can get before Father comes home.

      Really, Mother? Where are our bundles? asked Amy, who was a very literal young lady.

      Each of you told what your burden was just now, except Beth. I rather think she hasn\'t got any, said her mother.

      Yes, I have. Mine is dishes and dusters, and envying girls with nice pianos, and being afraid of people.

      Beth\'s bundle was such a funny one that everybody wanted to laugh, but nobody did, for it would have hurt her feelings very much.

      Let us do it, said Meg thoughtfully. It is only another name for trying to be good, and the story may help us, for though we do want to be good, it\'s hard work and we forget, and don\'t do our best.

      We were in the Slough of Despond tonight, and Mother came and pulled us out as Help did in the book. We ought to have our roll of directions, like Christian. What shall we do about that? asked Jo, delighted with the fancy which lent a little romance to the very dull task of doing her duty.

      Look under your pillows Christmas morning, and you will find your guidebook, replied Mrs. March.

      They talked over the new plan while old Hannah cleared the table, then out came the four little work baskets, and the needles flew as the girls made sheets for Aunt March. It was uninteresting sewing, but tonight no one grumbled. They adopted Jo\'s plan of dividing the long seams into four parts, and calling the quarters Europe, Asia, Africa, and America, and in that way got on capitally, especially when they talked about the different countries as they stitched their way through them.

      At nine they stopped work, and sang, as usual, before they went to bed. No one but Beth could get much music out of the old piano, but she had a way of softly touching the yellow keys and making a pleasant accompaniment to the simple songs they sang. Meg had a voice like a flute, and she and her mother led the little choir. Amy chirped like a cricket, and Jo wandered through the airs at her own sweet will, always coming out at the wrong place with a croak or a quaver that spoiled the most pensive tune. They had always done this from the time they could lisp . . . Crinkle, crinkle, \'ittle \'tar, and it had become a household custom,, for the mother was a born singer. The first sound in the morning was her voice as she went about the house singing like a lark, and the last sound at night was the same cheery sound, for the girls never grew too old for that familiar lullaby.'; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->hyphenate = 2; // removed in 5.6.07 - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$stylesheet .= ' -p { hyphens: auto; } -'; -$mpdf->WriteHTML($stylesheet,1); - -$mpdf->WriteHTML('

      Automatic Hyphenation

      '); - -$mpdf->SetColumns(4,'J'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example22_columns.php b/inc/3rdparty/libraries/mpdf/examples/example22_columns.php deleted file mode 100644 index 6b9aac531..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example22_columns.php +++ /dev/null @@ -1,80 +0,0 @@ -mPDF -

      Columns

      -'; -//============================================================== - -$loremH = "

      Lectus facilisis

      -

      Sed auctor viverra diam. In lacinia lectus.

      -

      Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum. In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.

      -
      Nunc tincidunt
      -

      Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.

      -

      Pede quis ante tincidunt blandit. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante.

      Suspendisse potenti. Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend.Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.

      Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.
      Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. Nullam ultrices leo volutpat magna. Mauris blandit purus nec turpis. Curabitur nunc. Aliquam condimentum eleifend32 lectus. Praesent vitae nibh et libero ullamcorper scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.

      - -
      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. -
      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      - Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      -

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -"; - - - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -// Bullets in columns are probably best not indented -$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list - -$mpdf->max_colH_correction = 1.1; - - - $mpdf->WriteHTML($html,2); - $mpdf->WriteHTML($loremH,2); - - // consider reducing lineheight when using columns - especially if vAligned justify - $mpdf->SetDefaultBodyCSS('line-height', 1.2); - - $mpdf->SetColumns(3,'J'); - $mpdf->WriteHTML($loremH,2); - - $mpdf->SetColumns(0); - $mpdf->WriteHTML('
      '); - - - $mpdf->SetColumns(2,'J'); - $mpdf->WriteHTML($loremH,2); - $mpdf->WriteHTML('
      '); - $mpdf->SetColumns(0); - $mpdf->WriteHTML('
      '); - - $mpdf->SetColumns(3,'J'); - $mpdf->WriteHTML($loremH,2); - - $mpdf->SetColumns(0); - $mpdf->WriteHTML('
      '); - $mpdf->SetColumns(2,'J'); - $mpdf->WriteHTML($loremH,2); - - - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php b/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php deleted file mode 100644 index 7049d7e19..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php +++ /dev/null @@ -1,132 +0,0 @@ -mPDF -

      Page Orientation

      - -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      -

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      -

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      - -
      - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - - -$mpdf=new mPDF('c','A4','','',42,15,67,67,20,15); - -$mpdf->SetDisplayMode('fullpage','two'); - -$mpdf->mirrorMargins = 1; - - -$header = ' - - - - -
      Left header p {PAGENO}Right header
      -'; -$headerE = ' - - - - -
      Outer headerInner header p {PAGENO}
      -'; -$longfooter = ' - - - - -
      Left footer p {PAGENO}Right footer
      -'; -$longfooterE = ' - - - - -
      Outer footerInner footer p {PAGENO}
      -'; - -$footer = '
      {DATE j-m-Y} » {PAGENO} » My document
      '; -$footerE = '
      Even page footer - {PAGENO} -
      '; - -$shortheader = '
      {DATE j-m-Y} » {PAGENO} » My document
      '; -$shortheaderE = '
      Even page header - {PAGENO} -
      '; - - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->setFooter('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ; - - -$mpdf->WriteHTML($html); - - -$mpdf->setHeader(); // Clear headers before adding page -$mpdf->AddPage('L','','','','',25,25,55,45,18,12); - -$mpdf->SetHTMLHeader($shortheader,'',true); // New parameter in v1.4 to add the header to the new page -$mpdf->SetHTMLHeader($shortheaderE,'E',true); -$mpdf->SetHTMLFooter($longfooter); -$mpdf->SetHTMLFooter($longfooterE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - - -$mpdf->setHeader('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ; -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - -$mpdf->setHeader(); // Clear headers before adding page -$mpdf->AddPage('','','','','',42,15,67,67,20,15); // Default is Portrait (because that was the document default) - - -$mpdf->SetHTMLHeader($shortheader,'',true); // New parameter in v1.4 to add the header to the new page -$mpdf->SetHTMLHeader($shortheaderE,'E',true); -$mpdf->SetHTMLFooter($longfooter); -$mpdf->SetHTMLFooter($longfooterE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - - -$mpdf->Output('mpdf.pdf','I'); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php b/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php deleted file mode 100644 index 1cbbfdad8..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php +++ /dev/null @@ -1,200 +0,0 @@ -mPDF -

      Page Orientation

      - -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      -

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      -

      Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - -'; - -$htmlL = ' -
      Table in Landscape
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      TypeDetailsNotes
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti. Fusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti. Fusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti. Fusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti. Fusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti. Fusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      -'; - -//============================================================== - -$loremH = "

      Lectus facilisis

      -

      Sed auctor viverra diam. In lacinia lectus.

      -

      Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum. In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.

      -
      Nunc tincidunt
      -

      Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.

      -

      Pede quis ante tincidunt blandit. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante.

      Suspendisse potenti. Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend. Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.

      Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.
      Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. Nullam ultrices leo volutpat magna. Mauris blandit purus nec turpis. Curabitur nunc. Aliquam condimentum eleifend32 lectus. Praesent vitae nibh et libero ullamcorper scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.

      - -
      Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.

      Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.

      -"; - -//============================================================== -$header = ' - - - - -
      Left header p {PAGENO}Right header
      -'; -$headerE = ' - - - - -
      Outer headerInner header p {PAGENO}
      -'; -$header = '
      {DATE j-m-Y} » {PAGENO} » My document
      My document
      See documentation manual
      My document
      '; -$headerE = '
      Even page footer - {PAGENO} -
      My document
      My document
      My document
      '; -$footer = '
      {DATE j-m-Y} » {PAGENO} » My document
      My document
      See documentation manual
      My document
      '; -$footerE = '
      Even page footer - {PAGENO} -
      My document
      My document
      My document
      '; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - - -$mpdf=new mPDF('c','A4','','',42,15,57,57,20,17); - -$mpdf->displayDefaultOrientation = true; - -$mpdf->forcePortraitHeaders = true; -$mpdf->forcePortraitMargins = true; - -$mpdf->SetDisplayMode('fullpage','two'); - -$mpdf->mirrorMargins = 1; - -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); - -$mpdf->SetHTMLHeader($header); -$mpdf->SetHTMLHeader($headerE,'E'); -$mpdf->SetHTMLFooter($footer); -$mpdf->SetHTMLFooter($footerE,'E'); - -$mpdf->WriteHTML($html); - -$mpdf->AddPage('L'); - -$mpdf->WriteHTML($htmlL); -$mpdf->WriteHTML($htmlL); - -// Columns -$mpdf->AddPage('L'); -$mpdf->SetColumns(3,'J'); -$mpdf->WriteHTML($loremH); - -$mpdf->SetColumns(0); -$mpdf->WriteHTML('
      '); - - -$mpdf->SetColumns(2,'J'); -$mpdf->WriteHTML($loremH); -$mpdf->WriteHTML('
      '); -$mpdf->SetColumns(0); - -$mpdf->AddPage('L'); - -$mpdf->WriteHTML($htmlL); -$mpdf->WriteHTML($htmlL); - -$mpdf->AddPage(); - -$mpdf->WriteHTML($html); -$mpdf->WriteHTML($html); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php b/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php deleted file mode 100644 index 631024076..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php +++ /dev/null @@ -1,316 +0,0 @@ -mPDF -

      RTL Languages

      - -

      English

      -

      Please note that I do not understand any of the scripts below. The texts are borrowed from News websites, and I have used words and bits of phrases just to demonstrate the program.

      - -

      Hebrew (pangram)

      -

      \xd7\x93\xd7\x92 \xd7\xa1\xd7\xa7\xd7\xa8\xd7\x9f \xd7\xa9\xd7\x98 \xd7\x91\xd7\x99\xd7\x9d \xd7\x9e\xd7\x90\xd7\x95\xd7\x9b\xd7\x96\xd7\x91 \xd7\x95\xd7\x9c\xd7\xa4\xd7\xaa\xd7\xa2 \xd7\x9e\xd7\xa6\xd7\x90 \xd7\x97\xd7\x91\xd7\xa8\xd7\x94

      - -

      \xd7\x90\xd7\x95 \xd7\x94\xd7\xa0\xd7\xa1\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9d, \xd7\x9c\xd7\x91\xd7\x95\xd7\x90 \xd7\x9c\xd7\xa7\xd7\x97\xd7\xaa \xd7\x9c\xd7\x95 \xd7\x92\xd7\x95\xd7\x99 \xd7\x9e\xd7\xa7\xd7\xa8\xd7\x91 \xd7\x92\xd7\x95\xd7\x99, \xd7\x91\xd7\x9e\xd7\xa1\xd7\xaa \xd7\x91\xd7\x90\xd7\xaa\xd7\xaa \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa4\xd7\xaa\xd7\x99\xd7\x9d \xd7\x95\xd7\x91\xd7\x9e\xd7\x9c\xd7\x97\xd7\x9e\xd7\x94 \xd7\x95\xd7\x91\xd7\x99\xd7\x93 \xd7\x97\xd7\x96\xd7\xa7\xd7\x94 \xd7\x95\xd7\x91\xd7\x96\xd7\xa8\xd7\x95\xd7\xa2 \xd7\xa0\xd7\x98\xd7\x95\xd7\x99\xd7\x94, \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa8\xd7\x90\xd7\x99\xd7\x9d \xd7\x92\xd7\x93\xd7\x9c\xd7\x99\xd7\x9d: \xd7\x9b\xd7\x9b\xd7\x9c \xd7\x90\xd7\xa9\xd7\xa8-\xd7\xa2\xd7\xa9\xd7\x94 \xd7\x9c\xd7\x9b\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9b\xd7\x9d, \xd7\x91\xd7\x9e\xd7\xa6\xd7\xa8\xd7\x99\xd7\x9d--\xd7\x9c\xd7\xa2\xd7\x99\xd7\xa0\xd7\x99\xd7\x9a

      - -

      \xd7\x9c\xd7\x9b\xd7\x9f \xd7\x97\xd7\x9b\xd7\x95 \xd7\x9c\xd7\x99 \xd7\xa0\xd7\x90\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x9c\xd7\x99\xd7\x95\xd7\x9d \xd7\xa7\xd7\x95\xd7\x9e\xd7\x99 \xd7\x9c\xd7\xa2\xd7\x93, \xd7\x9b\xd7\x99 \xd7\x9e\xd7\xa9\xd7\xa4\xd7\x98\xd7\x99 \xd7\x9c\xd7\x90\xd7\xa1\xd7\xa3 \xd7\x92\xd7\x95\xd7\x99\xd7\x9d \xd7\x9c\xd7\xa7\xd7\x91\xd7\xa6\xd7\x99 \xd7\x9e\xd7\x9e\xd7\x9c\xd7\x9b\xd7\x95\xd7\xaa, \xd7\x9c\xd7\xa9\xd7\xa4\xd7\x9a \xd7\xa2\xd7\x9c\xd7\x99\xd7\x94\xd7\x9d \xd7\x96\xd7\xa2\xd7\x9e\xd7\x99 \xd7\x9b\xd7\x9c \xd7\x97\xd7\xa8\xd7\x95\xd7\x9f \xd7\x90\xd7\xa4\xd7\x99, \xd7\x9b\xd7\x99 \xd7\x91\xd7\x90\xd7\xa9 \xd7\xa7\xd7\xa0\xd7\x90\xd7\xaa\xd7\x99 \xd7\xaa\xd7\x90\xd7\x9b\xd7\x9c \xd7\x9b\xd7\x9c \xd7\x94\xd7\x90\xd7\xa8\xd7\xa5

      - -

      \xd7\xa9\xd7\xa4\xd7\x9f \xd7\x90\xd7\x9b\xd7\x9c \xd7\xa7\xd7\xa6\xd7\xaa \xd7\x92\xd7\x96\xd7\xa8 \xd7\x91\xd7\x98\xd7\xa2\xd7\x9d \xd7\x97\xd7\xa1\xd7\x94, \xd7\x95\xd7\x93\xd7\x99.

      - - - - - -

      Arabic

      -

      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 - \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.

      - -

      \xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f

      - -

      \xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 "\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9" \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 "\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86\xd8\xaa\xd9\x87\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xaf\xd9\x8a\xd8\xaf\xd8\xa9" \xd9\x84\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab" \xd9\x88\xd8\xa7\xd8\xb5\xd9\x81\xd8\xa9 \xd8\xa7\xd9\x8a\xd8\xa7\xd9\x87 \xd8\xa8\xd9\x80"\xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81" \xd8\xa7\xd9\x84\xd8\xb0\xd9\x8a \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x87\xd8\xaf\xd9\x81 "\xd9\x85\xd8\xaf\xd9\x86\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x85\xd8\xb3\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd9\x86".

      - -

      \xd9\x88\xd8\xa7\xd8\xb6\xd8\xa7\xd9\x81\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd9\x87\xd8\xa7: "\xd9\x85\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xb3\xd9\x81 \xd8\xa7\xd9\x86 \xd9\x8a\xd8\xa3\xd8\xaa\xd9\x8a \xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab \xd8\xa8\xd9\x8a\xd9\x86\xd9\x85\xd8\xa7 \xd8\xaa\xd8\xa8\xd8\xb0\xd9\x84 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd9\x84\xd8\xaa\xd8\xae\xd8\xb7\xd9\x8a \xd8\xa7\xd9\x84\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa7\xd8\xae\xd9\x84\xd9\x8a\xd8\xa9".

      - -

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84 \xd8\xa7\xd8\xad\xd8\xaa\xd9\x88\xd8\xa7\xd8\xa1 \xd9\x85\xd8\xb8\xd8\xa7\xd9\x87\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd9\x85\xd8\xa8\xd8\xb1\xd8\xb1 \xd9\x84\xd9\x87\xd8\xa7 \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd8\xaa\xd9\x81\xd9\x8a\xd8\xaf \xd9\x85\xd8\xb5\xd8\xa7\xd9\x84\xd8\xad \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb9\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xb7\xd9\x88\xd9\x8a\xd9\x84".

      - -

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84

      -\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84

      - - -

      \xd9\x83\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd9\x81\xd8\xa7\xd8\xb1\xd9\x88 \xd8\xaf\xd9\x8a \xd8\xb3\xd9\x88\xd8\xaa\xd9\x88 \xd9\x85\xd8\xa8\xd8\xb9\xd9\x88\xd8\xab \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x85 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xad\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb1\xd9\x82 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd8\xb3\xd8\xb7 \xd8\xa7\xd9\x84\xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa9 \xd9\x88\xd9\x82\xd8\xa7\xd9\x84 "\xd8\xa7\xd9\x86\xd9\x87 \xd9\x83\xd8\xa7\xd9\x86 \xd9\x87\xd8\xac\xd9\x88\xd9\x85\xd8\xa7 \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd8\xb4\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xb9\xd8\xa7\xd8\xaf\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x83\xd8\xa7\xd9\x86\xd9\x88\xd8\xa7 \xd9\x8a\xd9\x82\xd9\x88\xd9\x85\xd9\x88\xd9\x86 \xd8\xa8\xd9\x86\xd8\xb4\xd8\xa7\xd8\xb7\xd9\x87\xd9\x85 \xd8\xa7\xd9\x84\xd9\x8a\xd9\x88\xd9\x85\xd9\x8a \xd9\x88\xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x85\xd8\xb1 \xd9\x84\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd8\xaa\xd8\xa8\xd8\xb1\xd9\x8a\xd8\xb1\xd9\x87".

      - -

      Farsi / Persian (fa)

      -

      \xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.

      - -

      \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4\xd8\x8c \xd8\xaf\xd8\xb1 \xda\x86\xd9\x87\xd8\xa7\xd8\xb1\xd9\x85\xdb\x8c\xd9\x86 \xd8\xb3\xd8\xa7\xd9\x84\xda\xaf\xd8\xb1\xd8\xaf \xd8\xa7\xd8\xb4\xd8\xba\xd8\xa7\xd9\x84 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd9\x85\xdb\x8c \xda\xaf\xd9\x88\xdb\x8c\xd8\xaf \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xb1\xd8\xa7\xd8\xaa\xda\x98\xdb\x8c \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x82\xd8\xb1\xd8\xa7\xd8\xb1 \xd9\x86\xdb\x8c\xd8\xb1\xd9\x88\xd9\x87\xd8\xa7\xdb\x8c \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7\xdb\x8c\xdb\x8c \xd8\xa8\xdb\x8c\xd8\xb4\xd8\xaa\xd8\xb1\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xa8\xd8\xba\xd8\xaf\xd8\xa7\xd8\xaf\xd8\x8c \xd9\x85\xd8\xaf\xd8\xaa\xdb\x8c \xd8\xb7\xd9\x88\xd9\x84 \xd8\xae\xd9\x88\xd8\xa7\xd9\x87\xd8\xaf \xda\xa9\xd8\xb4\xdb\x8c\xd8\xaf.

      - -

      \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7 \xd9\x88\xdb\x8c\xd8\xb2\xd8\xa7\xdb\x8c \xd8\xb1\xd8\xa6\xdb\x8c\xd8\xb3 \xd8\xac\xd9\x85\xd9\x87\xd9\x88\xd8\xb1 \xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd9\x85\xd9\x86\xd8\xb8\xd9\x88\xd8\xb1 \xd8\xad\xd8\xb6\xd9\x88\xd8\xb1 \xd9\x88\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xac\xd9\x84\xd8\xb3\xd9\x87 \xd8\xb1\xd8\xa7\xdb\x8c \xda\xaf\xdb\x8c\xd8\xb1\xdb\x8c \xd8\xb4\xd9\x88\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xa7\xd9\x85\xd9\x86\xdb\x8c\xd8\xaa \xd8\xa8\xd8\xb1\xd8\xa7\xdb\x8c \xd9\x82\xd8\xb7\xd8\xb9\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd8\xb9\xd9\x84\xdb\x8c\xd9\x87 \xd8\xa7\xdb\x8c\xd9\x86 \xda\xa9\xd8\xb4\xd9\x88\xd8\xb1 \xd8\xb5\xd8\xa7\xd8\xaf\xd8\xb1 \xda\xa9\xd8\xb1\xd8\xaf.

      - - -

      Urdu

      -

      \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94

      - -

      \xda\x86\xdb\x8c\xd9\x81 \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xda\xa9\xdb\x8c \xd8\xb3\xd8\xb1\xda\xaf\xd8\xb1\xd9\x85\xdb\x8c\xd8\xa7\xda\xba \xd9\x85\xd8\xad\xd8\xaf\xd9\x88\xd8\xaf \xda\xa9\xd8\xb1\xd9\x86\xdb\x92 \xd8\xa7\xd9\x88\xd8\xb1 \xd9\xbe\xd9\x88\xd9\x84\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb9\xdb\x8c\xd9\x86\xd8\xa7\xd8\xaa\xdb\x8c \xda\xa9\xdb\x92 \xd8\xad\xda\xa9\xd9\x85 \xd9\x86\xd8\xa7\xd9\x85\xdb\x92 \xd9\xbe\xd8\xb1 \xd8\xaf\xd8\xb3\xd8\xaa\xd8\xae\xd8\xb7 \xda\xa9\xd8\xb1\xda\xa9\xdb\x92 \xd8\xba\xd9\x84\xd8\xb7 \xda\xa9\xdb\x8c\xd8\xa7: \xd8\xac\xd9\x86\xd8\xb1\xd9\x84 \xd9\x85\xd8\xb4\xd8\xb1\xd9\x81

      - -

      Pashto (ps)

      -

      \xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.

      - -

      \xd9\x87 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xda\xa9\xdb\x90 \xd9\x8a\xd9\x88\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd9\x86\xd8\xb8\xd8\xb1 \xd8\xb4\xd9\x85\xdb\x90\xd8\xb1\xd9\x86\xd9\x87 \xda\x9a\xd9\x8a\xd9\x8a \xda\x86\xdb\x90 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\xa7\xd9\x86 \xd9\xbe\xd9\x87 \xd8\xb2\xd9\x8a\xd8\xa7\xd8\xaa\xdb\x90\xd8\xaf\xd9\x88\xd9\x86\xda\xa9\xd9\x8a \xd8\xaa\xd9\x88\xda\xaf\xd9\x87 \xd8\xaf \xd8\xad\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\xd9\x88 \xd9\xbe\xd9\x87 \xd8\xa7\xda\x93\xd9\x87 \xd8\xa8\xd8\xaf\xd8\xa8\xd9\x8a\xd9\x86\xd9\x87 \xd8\xaf\xd9\x8a \xd8\xa7\xd9\x88 \xd8\xaf \xd8\xa8\xdb\x90 \xd8\xa8\xd8\xa7\xd9\x88\xd8\xb1\xd9\x8a \xd8\xa7\xd8\xad\xd8\xb3\xd8\xa7\xd8\xb3 \xda\xa9\xd9\x88\xd9\x8a\xd8\x8c \xd8\xae\xd9\x88 \xd8\xae\xd9\xbe\xd9\x84 \xd9\x87\xd9\x8a\xd9\x88\xd8\xa7\xd8\xaf \xd9\x8a\xd9\x88\xd9\x85\xd9\x88\xd9\xbc\xd9\x89 \xd8\xba\xd9\x88\xd8\xa7\xda\x93\xd9\x8a.

      - - -

      Symbols

      -

      \xc2\xa9\xc2\xae\xe2\x84\xa2\xc2\xb5\xe2\x80\xa2\xe2\x80\xa6\xe2\x80\xb2\xe2\x80\xb3\xc2\xa7<>\xe2\x89\xa4\xe2\x89\xa5\xc2\xb0\xe2\x88\x92\xc2\xb1\xc3\xb7\xe2\x81\x84\xc3\x97\xc6\x92\xe2\x88\xab\xe2\x88\x91\xe2\x88\x9e\xe2\x88\x9a\xe2\x89\x88\xe2\x89\xa0\xe2\x89\xa1\xe2\x88\x8f\xc2\xac\xe2\x88\xa9\xe2\x88\x82

      -

      \xce\x92\xce\x93\xce\x94\xce\x95\xce\x96\xce\x97\xce\x98\xce\x99\xce\x9a\xce\x9b\xce\x9c\xce\x9d\xce\x9e\xce\x9f\xce\xa0\xce\xa1\xce\xa3\xce\xa4\xce\xa5\xce\xa6\xce\xa7\xce\xa8\xce\xa9

      -

      \xce\xb1\xce\xb2\xce\xb3\xce\xb4\xce\xb5\xce\xb6\xce\xb7\xce\xb8\xce\xb9\xce\xba\xce\xbb\xce\xbc\xce\xbd\xce\xbe\xce\xbf\xcf\x80\xcf\x81\xcf\x82\xcf\x83\xcf\x84\xcf\x85\xcf\x86\xcf\x87\xcf\x88\xcf\x89

      -

      \xe2\x86\x90\xe2\x86\x91\xe2\x86\x92\xe2\x86\x93\xe2\x86\x94\xe2\x97\x8a\xe2\x99\xa3\xe2\x99\xa5\xe2\x99\xa6

      - -

      Dingbats

      -

      \xc2\xa7<>\xe2\x86\x92\xe2\x86\x94\xe2\x99\xa3\xe2\x99\xa5\xe2\x99\xa6

      - -

      win-1252

      -

      \xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e<>\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1

      -

      \xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8

      -

      \xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf

      - -

      Bidirectional text

      -

      Text alignment, unless specified, is neutral and therefore dictated by the 'direction' of the paragraph.

      - -

      All text is analysed chunk by chunk (between tags) and at the end of every block (div, p, td). If the text contains RTL characters, those characters and words are reversed.

      - -

      \xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 "\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9" \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 with some english in the middle \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9

      - -

      To set the 'directionality' of the whole document e.g. to reverse default alignment, tables, lists etc. you can set the dir attribute or the direction CSS property on the HTML or BODY tag to 'rtl' e.g.

      -

      <body style=\"direction: rtl\">

      -

      <body dir=\"rtl\">

      -

      or you can use \$mpdf->SetDirectionality('rtl');

      - -
      -- the document now has a baseline direction; this determines the 
      -	- behaviour of blocks for which text-align has not been specifically set
      -	- layout of mirrored page-margins, columns, ToC and Indexes, headers and footers
      -	- base direction can be set by any of:
      -		- \$mpdf->SetDirectionality('rtl');
      -		- <html dir=\"rtl\" or style=\"direction: rtl;\">
      -		- <body dir=\"rtl\" or style=\"direction: rtl;\">
      -	- base direction is an inherited CSS property, so will affect all content, unless...
      -- direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using
      -	- CSS property < style=\"direction: rtl;\"> 
      -	- direction can only be set on the top-level element of nested lists
      -	- direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
      -	- nested tables CAN have different directions
      -- NOTE that block/table margins/paddings are NOT reversed by direction
      -	NB mPDF <5.1 reversed the margins/paddings for blocks when RTL set.
      -- language (either CSS \"lang\", using Autofont, or through initial set-up e.g. \$mpdf = new mPDF('ar') ) 
      -	no longer affects direction in any way.
      -	NB config_cp.php has been changed as a result; any values of \"dir\" set here are now ineffective
      -- default text-align is now as per CSS spec: \"a nameless value which is dependent on direction\" 
      -	NB default text-align removed in default stylesheet in config.php 
      -- once text-align is specified, it is respected and inherited
      -	NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
      -- the configurable value $rtlcss is depracated, as it is no longer required
      -- improved algorithm for dtermining text direction
      -	- english word blocks are handled in text reversal as one block i.e. dir=\"rtl\"
      -	[arabic text] this will not be reversed [arabic text]
      -	- arabic numerals 0-9 handled correctly
      -
      -Although the control of direction for block elements is now more configurable, the control of 
      -text direction (RTL arabic characters) remains fully automatic and unconfigurable. 
      -<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.
      -	content<span>[arabic text]</span>content
      -
      -
      - - -

      Tables

      -

      Tables are automatically transposed when the direction is rtl:

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a -

      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a

      -
      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84 -

      \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2

      -
      -

      \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2

      -
      -

      \xd9\x82\xd8\xa7\xd9\x84

      -
      -

      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3

      -
      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      -

      \xd9\x82\xd8\xa7\xd9\x84

      -

      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3

      -
      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 -

      \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3

      -
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      \xd9\x82\xd8\xa7\xd9\x84\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      -

       

      -

      Lists

      -

      Lists will automatically reverse as well (note the use of list-style to set numbering):

      -
      -
        -
      1. \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3
      2. -
      3. \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a -
        • \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac
        • -
        • \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 -
            -
          • \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9
          • -
          • \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a
          • -
          -
        • -
      4. -
      5. \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7
      6. -
      7. \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82
      8. -
      -
      -"; - -//============================================================== - // Set Header and Footer - $h = array ( - 'odd' => - array ( - 'R' => - array ( - 'content' => '{PAGENO}', - 'font-size' => 8, - 'font-style' => 'B', - ), - 'L' => - array ( - 'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - 'font-style' => 'B', - ), - 'line' => 1, - ), - 'even' => - array ( - 'L' => - array ( - 'content' => '{PAGENO}', - 'font-size' => 8, - 'font-style' => 'B', - ), - 'R' => - array ( - 'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - 'font-style' => 'B', - ), - 'line' => 1, - ), -); - - $f = array ( - 'odd' => - array ( - 'L' => - array ( - 'content' => '{DATE Y-m-d}', - 'font-size' => 8, - 'font-style' => 'BI', - ), - 'C' => - array ( - 'content' => '- {PAGENO} -', - 'font-size' => 8, - ), - 'R' => - array ( - 'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - ), - 'line' => 1, - ), - 'even' => - array ( - 'L' => - array ( - 'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3", - 'font-size' => 8, - 'font-style' => 'B', - ), - 'C' => - array ( - 'content' => '- {PAGENO} -', - 'font-size' => 8, - ), - 'R' => - array ( - 'content' => '{DATE Y-m-d}', - 'font-size' => 8, - 'font-style' => 'BI', - ), - 'line' => 1, - ), -); - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - - -$mpdf=new mPDF('ar','A4','','',32,25,27,25,16,13); - -// From mPDF 5.1 onwards you must set: -$mpdf->SetDirectionality('rtl'); -$mpdf->mirrorMargins = true; -$mpdf->SetDisplayMode('fullpage','two'); - - -$mpdf->setHeader($h); -$mpdf->setFooter($f); - - -$stylesheet = file_get_contents('mpdfstyletables.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); -$mpdf->AddPage(); - -$mpdf->SetColumns(2,'J'); -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php deleted file mode 100644 index c46245f9c..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php +++ /dev/null @@ -1,91 +0,0 @@ - -p { text-align: justify; } -td { text-align: justify; } - -

      mPDF

      -

      CJK Languages

      - - - - -

      Japanese (pangrams)

      -
      Iroha Uta
      - -

      \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99

      - -

      \xe8\x89\xb2\xe3\x81\xaf\xe5\x8c\x82\xe3\x81\xb8\xe3\x81\xa9\xe3\x80\x80\xe6\x95\xa3\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe6\x88\x91\xe3\x81\x8c\xe4\xb8\x96\xe8\xaa\xb0\xe3\x81\x9e\xe3\x80\x80\xe5\xb8\xb8\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe6\x9c\x89\xe7\x82\xba\xe3\x81\xae\xe5\xa5\xa5\xe5\xb1\xb1\xe3\x80\x80\xe4\xbb\x8a\xe6\x97\xa5\xe8\xb6\x8a\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb5\x85\xe3\x81\x8d\xe5\xa4\xa2\xe8\xa6\x8b\xe3\x81\x98\xe3\x80\x80\xe9\x85\x94\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x9a\xef\xbc\x88\xe3\x82\x93\xef\xbc\x89

      - -
      Tori Naku Uta
      - -

      \xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1

      - -

      \xe9\xb3\xa5\xe5\x95\xbc\xe3\x81\x8f\xe5\xa3\xb0\xe3\x81\x99\xe3\x80\x80\xe5\xa4\xa2\xe8\xa6\x9a\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe8\xa6\x8b\xe3\x82\x88\xe6\x98\x8e\xe3\x81\x91\xe6\xb8\xa1\xe3\x82\x8b\xe3\x80\x80\xe6\x9d\xb1\xe3\x82\x92\xe3\x80\x80\xe7\xa9\xba\xe8\x89\xb2\xe6\xa0\x84\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb2\x96\xe3\x81\xa4\xe8\xbe\xba\xe3\x81\xab\xe3\x80\x80\xe5\xb8\x86\xe8\x88\xb9\xe7\xbe\xa4\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe9\x9d\x84\xe3\x81\xae\xe4\xb8\xad

      - -
      Ametsuchi No Uta
      - -

      \xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6

      - -

      \xe5\xa4\xa9 \xe5\x9c\xb0 \xe6\x98\x9f \xe7\xa9\xba / \xe5\xb1\xb1 \xe5\xb7\x9d \xe5\xb3\xb0 \xe8\xb0\xb7 / \xe9\x9b\xb2 \xe9\x9c\xa7 \xe5\xae\xa4 \xe8\x8b\x94 / \xe4\xba\xba \xe7\x8a\xac \xe4\xb8\x8a \xe6\x9c\xab / \xe7\xa1\xab\xe9\xbb\x84 \xe7\x8c\xbf \xe7\x94\x9f\xe3\x81\xb5 \xe7\x82\xba\xe3\x82\x88 / \xe6\xa6\x8e\xe3\x81\xae \xe6\x9e\x9d\xe3\x82\x92 \xe9\xa6\xb4\xe3\x82\x8c \xe5\xb1\x85\xe3\x81\xa6

      - -
      Taini no Uta
      - -

      \xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac

      - -

      \xe7\x94\xb0\xe5\xb1\x85\xe3\x81\xab\xe5\x87\xba\xe3\x81\xa7\xe3\x80\x80\xe8\x8f\x9c\xe6\x91\x98\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9e\xe3\x80\x80\xe5\x90\x9b\xe5\x8f\xac\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe6\xb1\x82\xe9\xa3\x9f\xe3\x82\x8a\xe8\xbf\xbd\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe5\xb1\xb1\xe5\x9f\x8e\xe3\x81\xae\xe3\x80\x80\xe6\x89\x93\xe9\x85\x94\xe3\x81\xb8\xe3\x82\x8b\xe5\xad\x90\xe3\x82\x89\xe3\x80\x80\xe8\x97\xbb\xe8\x91\x89\xe5\xb9\xb2\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe8\x88\x9f\xe7\xb9\x8b\xe3\x81\x91\xe3\x81\xac

      - - - -

      Chinese (simplified) GB2312

      - -

      \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82

      - - - -

      Chinese (Traditional - Hong Kong)

      - -

      \xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82

      - - - - -

      Korean

      -

      \xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4.

      - - - -
      -"; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('+aCJK','A4','','',32,25,27,25,16,13); -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetTitle($utxt['zh-CN']); -$mpdf->SetAuthor($utxt['zh-CN']); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php deleted file mode 100644 index 8fb5b6178..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php +++ /dev/null @@ -1,89 +0,0 @@ - -p { text-align: justify; } -td { text-align: justify; } - -

      mPDF

      -

      CJK Languages

      - - - - -

      Japanese (pangrams)

      -
      Iroha Uta
      - -

      \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99

      - -

      \xe8\x89\xb2\xe3\x81\xaf\xe5\x8c\x82\xe3\x81\xb8\xe3\x81\xa9\xe3\x80\x80\xe6\x95\xa3\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe6\x88\x91\xe3\x81\x8c\xe4\xb8\x96\xe8\xaa\xb0\xe3\x81\x9e\xe3\x80\x80\xe5\xb8\xb8\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe6\x9c\x89\xe7\x82\xba\xe3\x81\xae\xe5\xa5\xa5\xe5\xb1\xb1\xe3\x80\x80\xe4\xbb\x8a\xe6\x97\xa5\xe8\xb6\x8a\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb5\x85\xe3\x81\x8d\xe5\xa4\xa2\xe8\xa6\x8b\xe3\x81\x98\xe3\x80\x80\xe9\x85\x94\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x9a\xef\xbc\x88\xe3\x82\x93\xef\xbc\x89

      - -
      Tori Naku Uta
      - -

      \xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1

      - -

      \xe9\xb3\xa5\xe5\x95\xbc\xe3\x81\x8f\xe5\xa3\xb0\xe3\x81\x99\xe3\x80\x80\xe5\xa4\xa2\xe8\xa6\x9a\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe8\xa6\x8b\xe3\x82\x88\xe6\x98\x8e\xe3\x81\x91\xe6\xb8\xa1\xe3\x82\x8b\xe3\x80\x80\xe6\x9d\xb1\xe3\x82\x92\xe3\x80\x80\xe7\xa9\xba\xe8\x89\xb2\xe6\xa0\x84\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb2\x96\xe3\x81\xa4\xe8\xbe\xba\xe3\x81\xab\xe3\x80\x80\xe5\xb8\x86\xe8\x88\xb9\xe7\xbe\xa4\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe9\x9d\x84\xe3\x81\xae\xe4\xb8\xad

      - -
      Ametsuchi No Uta
      - -

      \xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6

      - -

      \xe5\xa4\xa9 \xe5\x9c\xb0 \xe6\x98\x9f \xe7\xa9\xba / \xe5\xb1\xb1 \xe5\xb7\x9d \xe5\xb3\xb0 \xe8\xb0\xb7 / \xe9\x9b\xb2 \xe9\x9c\xa7 \xe5\xae\xa4 \xe8\x8b\x94 / \xe4\xba\xba \xe7\x8a\xac \xe4\xb8\x8a \xe6\x9c\xab / \xe7\xa1\xab\xe9\xbb\x84 \xe7\x8c\xbf \xe7\x94\x9f\xe3\x81\xb5 \xe7\x82\xba\xe3\x82\x88 / \xe6\xa6\x8e\xe3\x81\xae \xe6\x9e\x9d\xe3\x82\x92 \xe9\xa6\xb4\xe3\x82\x8c \xe5\xb1\x85\xe3\x81\xa6

      - -
      Taini no Uta
      - -

      \xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac

      - -

      \xe7\x94\xb0\xe5\xb1\x85\xe3\x81\xab\xe5\x87\xba\xe3\x81\xa7\xe3\x80\x80\xe8\x8f\x9c\xe6\x91\x98\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9e\xe3\x80\x80\xe5\x90\x9b\xe5\x8f\xac\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe6\xb1\x82\xe9\xa3\x9f\xe3\x82\x8a\xe8\xbf\xbd\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe5\xb1\xb1\xe5\x9f\x8e\xe3\x81\xae\xe3\x80\x80\xe6\x89\x93\xe9\x85\x94\xe3\x81\xb8\xe3\x82\x8b\xe5\xad\x90\xe3\x82\x89\xe3\x80\x80\xe8\x97\xbb\xe8\x91\x89\xe5\xb9\xb2\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe8\x88\x9f\xe7\xb9\x8b\xe3\x81\x91\xe3\x81\xac

      - - - -

      Chinese (simplified) GB2312

      - -

      \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82

      - - - -

      Chinese (Traditional - Hong Kong)

      - -

      \xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82

      - - - - -

      Korean

      -

      \xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4.

      - -
      -"; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('-aCJK','A4','','',32,25,27,25,16,13); -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetTitle($utxt['zh-CN']); -$mpdf->SetAuthor($utxt['zh-CN']); - -// LOAD a stylesheet -$stylesheet = file_get_contents('mpdfstyleA4.css'); -$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is css/style only and no body/html/text - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php b/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php deleted file mode 100644 index 1ca99f25a..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php +++ /dev/null @@ -1,400 +0,0 @@ - - -body { font-family: sans; text-align: justify; } -p { font-family: sans; } -div { font-family: sans; } - - - -

      This document includes many languages. Selection of appropriate fonts is done automatically by using AutoFont.

      -

      Pangrams - (from Wikipedia)

      -

      The quick brown fox jumps over a lazy dog

      - -

      Bulgarian

      -

      \xd0\x96\xd1\x8a\xd0\xbb\xd1\x82\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb4\xd1\x8e\xd0\xbb\xd1\x8f \xd0\xb1\xd0\xb5\xd1\x88\xd0\xb5 \xd1\x89\xd0\xb0\xd1\x81\xd1\x82\xd0\xbb\xd0\xb8\xd0\xb2\xd0\xb0, \xd1\x87\xd0\xb5 \xd0\xbf\xd1\x83\xd1\x85\xd1\x8a\xd1\x82, \xd0\xba\xd0\xbe\xd0\xb9\xd1\x82\xd0\xbe \xd1\x86\xd1\x8a\xd1\x84\xd0\xbd\xd0\xb0, \xd0\xb7\xd0\xb0\xd0\xbc\xd1\x80\xd1\x8a\xd0\xb7\xd0\xbd\xd0\xb0 \xd0\xba\xd0\xb0\xd1\x82\xd0\xbe \xd0\xb3\xd1\x8c\xd0\xbe\xd0\xbd.

      - -

      \xd0\x97\xd0\xb0 \xd0\xbc\xd0\xb8\xd0\xb3 \xd0\xb1\xd1\x8f\xd1\x85 \xd0\xb2 \xd1\x87\xd1\x83\xd0\xb6\xd0\xb4 \xd0\xbf\xd0\xbb\xd1\x8e\xd1\x88\xd0\xb5\xd0\xbd \xd1\x81\xd0\xba\xd1\x8a\xd1\x80\xd1\x86\xd0\xb0\xd1\x89 \xd1\x84\xd0\xbe\xd1\x82\xd1\x8c\xd0\xbe\xd0\xb9\xd0\xbb.

      - -

      Catalan

      -

      Jove xef, porti whisky amb quinze gla\xc3\xa7ons d'hidrogen, coi!

      - -

      Aqueix betzol, Jan, comprava whisky de figa

      - -

      Czech

      -

      P\xc5\x99\xc3\xadli\xc5\xa1 \xc5\xbelu\xc5\xa5ou\xc4\x8dk\xc3\xbd k\xc5\xaf\xc5\x88 \xc3\xbap\xc4\x9bl \xc4\x8f\xc3\xa1belsk\xc3\xa9 \xc3\xb3dy

      - -

      Danish

      -

      H\xc3\xb8j bly gom vandt fr\xc3\xa6k sexquiz p\xc3\xa5 wc

      - -

      Dutch

      -

      Doch Bep, flink sexy qua vorm, zwijgt

      - -

      Pa's wijze lynx bezag vroom het fikse aquaduct

      - -

      Finnish

      -

      T\xc3\xb6rkylempij\xc3\xa4 vongahdus

      - -

      French

      -

      Portez ce vieux whisky au juge blond qui fume

      - -

      B\xc3\xa2chez la queue du wagon-taxi avec les pyjamas du fakir

      - -

      Voyez le brick g\xc3\xa9ant que j'examine pr\xc3\xa8s du wharf

      - -

      German

      -

      Victor jagt zw\xc3\xb6lf Boxk\xc3\xa4mpfer quer \xc3\xbcber den gro\xc3\x9fen Sylter Deich

      - -

      \"Fix, Schwyz!\" qu\xc3\xa4kt J\xc3\xbcrgen bl\xc3\xb6d vom Pa\xc3\x9f

      - -

      \"Falsches \xc3\x9cben von Xylophonmusik qu\xc3\xa4lt jeden gr\xc3\xb6\xc3\x9feren Zwerg\"

      - -

      Hungarian

      -

      Egy h\xc5\xb1tlen vej\xc3\xa9t f\xc3\xbcl\xc3\xb6ncs\xc3\xadp\xc5\x91, d\xc3\xbch\xc3\xb6s mexik\xc3\xb3i \xc3\xbar Wessel\xc3\xa9nyin\xc3\xa9l m\xc3\xa1zol Quit\xc3\xb3ban.

      - -

      Icelandic

      -

      K\xc3\xa6mi n\xc3\xbd \xc3\xb6xi h\xc3\xa9r ykist \xc3\xbej\xc3\xb3fum n\xc3\xba b\xc3\xa6\xc3\xb0i v\xc3\xadl og \xc3\xa1drepa

      - -

      Irish

      -

      D'fhuascail \xc3\x8dosa \xc3\x9armhac na h\xc3\x93ighe Beannaithe p\xc3\xb3r \xc3\x89ava agus \xc3\x81dhaimh

      - -

      D'\xe1\xb8\x9fuascail \xc3\x8dosa \xc3\x9ar\xe1\xb9\x81ac na h\xc3\x93i\xc4\xa1e Beannai\xe1\xb9\xabe p\xc3\xb3r \xc3\x89a\xe1\xb8\x83a agus \xc3\x81\xe1\xb8\x8bai\xe1\xb9\x81

      - -

      Italian

      -

      \"Quel fez sghembo copre davanti\"

      - -

      \"Ma la volpe col suo balzo ha raggiunto il quieto Fido\"

      - -

      \"Quel vituperabile xenofobo zelante assaggia il whisky ed esclama: alleluja!\"

      - -

      Lithuanian

      -

      \xc4\xaelinkdama fechtuotojo \xc5\xa1paga sublyk\xc4\x8diojusi pragr\xc4\x99\xc5\xbe\xc4\x97 apval\xc5\xb3 arb\xc5\xabz\xc4\x85

      - -

      Norwegian

      -

      V\xc3\xa5r s\xc3\xa6re Zulu fra bade\xc3\xb8ya spilte jo whist og quickstep i min taxi.

      - -

      H\xc3\xb8vdingens kj\xc3\xa6re squaw f\xc3\xa5r litt pizza i Mexico by

      - -

      Polish

      -

      P\xc3\xb3jd\xc5\xba\xc5\xbce, ki\xc5\x84 t\xc4\x99 chmurno\xc5\x9b\xc4\x87 w g\xc5\x82\xc4\x85b flaszy!

      - -

      Pchn\xc4\x85\xc4\x87 w t\xc4\x99 \xc5\x82\xc3\xb3d\xc5\xba je\xc5\xbca lub o\xc5\x9bm skrzy\xc5\x84 fig.

      - -

      M\xc4\x99\xc5\xbcny b\xc4\x85d\xc5\xba, chro\xc5\x84 pu\xc5\x82k tw\xc3\xb3j i sze\xc5\x9b\xc4\x87 flag.

      - -

      Portuguese

      -

      Blitz prende ex-vesgo com cheque fajuto.

      - -

      Gazeta publica hoje no jornal uma breve nota de faxina na quermesse.

      - -

      \xc3\x80 noite, vov\xc3\xb4 Kowalsky v\xc3\xaa o \xc3\xadm\xc3\xa3 cair no p\xc3\xa9 do ping\xc3\xbcim queixoso e vov\xc3\xb3 p\xc3\xb5e a\xc3\xa7\xc3\xbacar no ch\xc3\xa1 de t\xc3\xa2maras do jabuti feliz.

      - -

      Lu\xc3\xads arg\xc3\xbcia \xc3\xa0 J\xc3\xbalia que \xc2\xabbra\xc3\xa7\xc3\xb5es, f\xc3\xa9, ch\xc3\xa1, \xc3\xb3xido, p\xc3\xb4r, z\xc3\xa2ng\xc3\xa3o\xc2\xbb eram palavras do portugu\xc3\xaas.

      - -

      Romanian

      -

      Gheorghe, obezul, a reu\xc5\x9fit s\xc4\x83 ob\xc5\xa3in\xc4\x83 juc\xc3\xa2ndu-se un flux \xc3\xaen Quebec de o mie kilowa\xc5\xa3ior\xc4\x83.

      - -

      Russian

      -

      \xd0\x92 \xd1\x87\xd0\xb0\xd1\x89\xd0\xb0\xd1\x85 \xd1\x8e\xd0\xb3\xd0\xb0 \xd0\xb6\xd0\xb8\xd0\xbb \xd0\xb1\xd1\x8b \xd1\x86\xd0\xb8\xd1\x82\xd1\x80\xd1\x83\xd1\x81? \xd0\x94\xd0\xb0, \xd0\xbd\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb8\xd0\xb2\xd1\x8b\xd0\xb9 \xd1\x8d\xd0\xba\xd0\xb7\xd0\xb5\xd0\xbc\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x80!

      - -

      (Using quasiobsolete spelling for last word to include \xd1\x8a) \xd0\x92 \xd1\x87\xd0\xb0\xd1\x89\xd0\xb0\xd1\x85 \xd1\x8e\xd0\xb3\xd0\xb0 \xd0\xb6\xd0\xb8\xd0\xbb \xd0\xb1\xd1\x8b \xd1\x86\xd0\xb8\xd1\x82\xd1\x80\xd1\x83\xd1\x81? \xd0\x94\xd0\xb0, \xd0\xbd\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb8\xd0\xb2\xd1\x8b\xd0\xb9 \xd1\x8d\xd0\xba\xd0\xb7\xd0\xb5\xd0\xbc\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x80\xd1\x8a!

      - -

      \xd0\xad\xd1\x85, \xd1\x87\xd1\x83\xd0\xb6\xd0\xb0\xd0\xba! \xd0\x9e\xd0\xb1\xd1\x89\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x8a\xd1\x91\xd0\xbc \xd1\x86\xd0\xb5\xd0\xbd \xd1\x88\xd0\xbb\xd1\x8f\xd0\xbf (\xd1\x8e\xd1\x84\xd1\x82\xd1\x8c) \xe2\x80\x94 \xd0\xb2\xd0\xb4\xd1\x80\xd1\x8b\xd0\xb7\xd0\xb3!

      - -

      \xd0\xad\xd0\xba\xd1\x81-\xd0\xb3\xd1\x80\xd0\xb0\xd1\x84? \xd0\x9f\xd0\xbb\xd1\x8e\xd1\x88 \xd0\xb8\xd0\xb7\xd1\x8a\xd1\x8f\xd1\x82. \xd0\x91\xd1\x8c\xd1\x91\xd0\xbc \xd1\x87\xd1\x83\xd0\xb6\xd0\xb4\xd1\x8b\xd0\xb9 \xd1\x86\xd0\xb5\xd0\xbd \xd1\x85\xd0\xb2\xd0\xbe\xd1\x89!

      - -

      \xd0\xa1\xd1\x8a\xd0\xb5\xd1\x88\xd1\x8c \xd0\xb5\xd1\x89\xd1\x91 \xd1\x8d\xd1\x82\xd0\xb8\xd1\x85 \xd0\xbc\xd1\x8f\xd0\xb3\xd0\xba\xd0\xb8\xd1\x85 \xd1\x84\xd1\x80\xd0\xb0\xd0\xbd\xd1\x86\xd1\x83\xd0\xb7\xd1\x81\xd0\xba\xd0\xb8\xd1\x85 \xd0\xb1\xd1\x83\xd0\xbb\xd0\xbe\xd0\xba, \xd0\xb4\xd0\xb0 \xd0\xb2\xd1\x8b\xd0\xbf\xd0\xb5\xd0\xb9 \xd0\xb6\xd0\xb5 \xd1\x87\xd0\xb0\xd1\x8e.

      - -

      \xd0\xa8\xd0\xb8\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0\xd1\x8f \xd1\x8d\xd0\xbb\xd0\xb5\xd0\xba\xd1\x82\xd1\x80\xd0\xb8\xd1\x84\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f \xd1\x8e\xd0\xb6\xd0\xbd\xd1\x8b\xd1\x85 \xd0\xb3\xd1\x83\xd0\xb1\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb8\xd0\xb9 \xd0\xb4\xd0\xb0\xd1\x81\xd1\x82 \xd0\xbc\xd0\xbe\xd1\x89\xd0\xbd\xd1\x8b\xd0\xb9 \xd1\x82\xd0\xbe\xd0\xbb\xd1\x87\xd0\xbe\xd0\xba \xd0\xbf\xd0\xbe\xd0\xb4\xd1\x8a\xd1\x91\xd0\xbc\xd1\x83 \xd1\x81\xd0\xb5\xd0\xbb\xd1\x8c\xd1\x81\xd0\xba\xd0\xbe\xd0\xb3\xd0\xbe \xd1\x85\xd0\xbe\xd0\xb7\xd1\x8f\xd0\xb9\xd1\x81\xd1\x82\xd0\xb2\xd0\xb0.

      - -

      Serbian

      -

      \xd0\x89\xd1\x83\xd0\xb1\xd0\xb0\xd0\xb7\xd0\xbd\xd0\xb8 \xd1\x84\xd0\xb5\xd1\x9a\xd0\xb5\xd1\x80\xd1\x9f\xd0\xb8\xd1\x98\xd0\xb0 \xd1\x87\xd0\xb0\xd1\x92\xd0\xb0\xd0\xb2\xd0\xbe\xd0\xb3 \xd0\xbb\xd0\xb8\xd1\x86\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x9b\xd0\xb5 \xd0\xb4\xd0\xb0 \xd0\xbc\xd0\xb8 \xd0\xbf\xd0\xbe\xd0\xba\xd0\xb0\xd0\xb6\xd0\xb5 \xd1\x88\xd1\x82\xd0\xbe\xd1\x81.

      - -

      Ljubazni fenjerd\xc5\xbeija \xc4\x8da\xc4\x91avog lica ho\xc4\x87e da mi poka\xc5\xbee \xc5\xa1tos.

      - -

      Slovene

      -

      \xc5\xa0erif bo za vajo spet kuhal doma\xc4\x8de \xc5\xbegance

      - -

      Pi\xc5\xa1kur mol\xc4\x8de grabi fi\xc5\xbeol z dna cezijeve hoste

      - -

      Spanish

      -

      El veloz murci\xc3\xa9lago hind\xc3\xba com\xc3\xada feliz cardillo y kiwi. La cig\xc3\xbce\xc3\xb1a tocaba el saxof\xc3\xb3n detr\xc3\xa1s del palenque de paja.

      - -

      El ping\xc3\xbcino Wenceslao hizo kil\xc3\xb3metros bajo exhaustiva lluvia y fr\xc3\xado, a\xc3\xb1oraba a su querido cachorro.

      - -

      Jovencillo emponzo\xc3\xb1ado de whisky: \xc2\xa1qu\xc3\xa9 figurota exhibe!

      - -

      Ese libro explica en su ep\xc3\xadgrafe las haza\xc3\xb1as y aventuras de Don Quijote de la Mancha en Kuwait.

      - -

      Queda gazpacho, fibra, l\xc3\xa1tex, jam\xc3\xb3n, kiwi y vi\xc3\xb1as.

      - -

      Whisky bueno: \xc2\xa1excitad mi fr\xc3\xa1gil peque\xc3\xb1a vejez!

      - -

      Swedish

      -

      Flygande b\xc3\xa4ckasiner s\xc3\xb6ka hwila p\xc3\xa5 mjuka tuvor.

      - -

      Yxskaftbud, ge v\xc3\xa5r wczonm\xc3\xb6 iqhj\xc3\xa4lp.

      - -

      Ukrainian

      -

      \xd0\xa7\xd1\x83\xd1\x94\xd1\x88 \xd1\x97\xd1\x85, \xd0\xb4\xd0\xbe\xd1\x86\xd1\x8e, \xd0\xb3\xd0\xb0? \xd0\x9a\xd1\x83\xd0\xbc\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb0 \xd0\xb6 \xd1\x82\xd0\xb8, \xd0\xbf\xd1\x80\xd0\xbe\xd1\x89\xd0\xb0\xd0\xb9\xd1\x81\xd1\x8f \xd0\xb1\xd0\xb5\xd0\xb7 \xd2\x91\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x84\xd1\x96\xd0\xb2!

      - -

      \xd0\x96\xd0\xb5\xd0\xb1\xd1\x80\xd0\xb0\xd0\xba\xd1\x83\xd1\x8e\xd1\x82\xd1\x8c \xd1\x84\xd1\x96\xd0\xbb\xd0\xbe\xd1\x81\xd0\xbe\xd1\x84\xd0\xb8 \xd0\xbf\xd1\x80\xd0\xb8 \xd2\x91\xd0\xb0\xd0\xbd\xd0\xba\xd1\x83 \xd1\x86\xd0\xb5\xd1\x80\xd0\xba\xd0\xb2\xd0\xb8 \xd0\xb2 \xd0\x93\xd0\xb0\xd0\xb4\xd1\x8f\xd1\x87\xd1\x96, \xd1\x89\xd0\xb5 \xd0\xb9 \xd1\x88\xd0\xb0\xd1\x82\xd1\x80\xd0\xbe \xd1\x97\xd1\x85\xd0\xbd\xd1\x94 \xd0\xbf'\xd1\x8f\xd0\xbd\xd0\xb5 \xd0\xb7\xd0\xbd\xd0\xb0\xd1\x94\xd0\xbc\xd0\xbe.

      - -

      Turkish (pangram)

      -

      Pijamal\xc4\xb1 hasta ya\xc4\x9f\xc4\xb1z \xc5\x9fof\xc3\xb6re \xc3\xa7abucak g\xc3\xbcvendi.

      - -

      Greek

      -
      Monotonic
      -

      \xce\xa0\xce\xac\xcf\x84\xce\xb5\xcf\x81 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd \xce\xbf \xce\xb5\xce\xbd \xcf\x84\xce\xbf\xce\xb9\xcf\x82 \xce\xbf\xcf\x85\xcf\x81\xce\xb1\xce\xbd\xce\xbf\xce\xaf\xcf\x82 \xce\xb1\xce\xb3\xce\xb9\xce\xb1\xcf\x83\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xce\xbf \xcf\x8c\xce\xbd\xce\xbf\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb5\xce\xbb\xce\xb8\xce\xad\xcf\x84\xcf\x89 \xce\xb7 \xce\xb2\xce\xb1\xcf\x83\xce\xb9\xce\xbb\xce\xb5\xce\xaf\xce\xb1 \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb3\xce\xb5\xce\xbd\xce\xb7\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xce\xbf \xce\xb8\xce\xad\xce\xbb\xce\xb7\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85, \xcf\x89\xcf\x82 \xce\xb5\xce\xbd \xce\xbf\xcf\x85\xcf\x81\xce\xb1\xce\xbd\xcf\x8e \xce\xba\xce\xb1\xce\xb9 \xce\xb5\xcf\x80\xce\xaf \xcf\x84\xce\xb7\xcf\x82 \xce\xb3\xce\xb7\xcf\x82\xc2\xb7 \xcf\x84\xce\xbf\xce\xbd \xce\xac\xcf\x81\xcf\x84\xce\xbf\xce\xbd \xce\xb7\xce\xbc\xcf\x8e\xce\xbd \xcf\x84\xce\xbf\xce\xbd \xce\xb5\xcf\x80\xce\xb9\xce\xbf\xcf\x8d\xcf\x83\xce\xb9\xce\xbf\xce\xbd \xce\xb4\xce\xbf\xcf\x82 \xce\xb7\xce\xbc\xce\xaf\xce\xbd \xcf\x83\xce\xae\xce\xbc\xce\xb5\xcf\x81\xce\xbf\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xce\xb9 \xce\xac\xcf\x86\xce\xb5\xcf\x82 \xce\xb7\xce\xbc\xce\xaf\xce\xbd \xcf\x84\xce\xb1 \xce\xbf\xcf\x86\xce\xb5\xce\xbb\xce\xae\xce\xbc\xce\xb1\xcf\x84\xce\xb1 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd, \xcf\x89\xcf\x82 \xce\xba\xce\xb1\xce\xb9 \xce\xb7\xce\xbc\xce\xb5\xce\xaf\xcf\x82 \xce\xb1\xcf\x86\xce\xaf\xce\xb5\xce\xbc\xce\xb5\xce\xbd \xcf\x84\xce\xbf\xce\xb9\xcf\x82 \xce\xbf\xcf\x86\xce\xb5\xce\xb9\xce\xbb\xce\xad\xcf\x84\xce\xb1\xce\xb9\xcf\x82 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xce\xb9 \xce\xbc\xce\xb7 \xce\xb5\xce\xb9\xcf\x83\xce\xb5\xce\xbd\xce\xad\xce\xb3\xce\xba\xce\xb7\xcf\x82 \xce\xb7\xce\xbc\xce\xac\xcf\x82 \xce\xb5\xce\xb9\xcf\x82 \xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xb1\xcf\x83\xce\xbc\xcf\x8c\xce\xbd, \xce\xb1\xce\xbb\xce\xbb\xce\xac \xcf\x81\xcf\x8d\xcf\x83\xce\xb1\xce\xb9 \xce\xb7\xce\xbc\xce\xac\xcf\x82 \xce\xb1\xcf\x80\xcf\x8c \xcf\x84\xce\xbf\xcf\x85 \xcf\x80\xce\xbf\xce\xbd\xce\xb7\xcf\x81\xce\xbf\xcf\x8d. \xce\xb1\xce\xbc\xce\xae\xce\xbd.

      - -
      Polytonic
      -

      \xce\xa0\xce\xac\xcf\x84\xce\xb5\xcf\x81 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd \xe1\xbd\x81 \xe1\xbc\x90\xce\xbd \xcf\x84\xce\xbf\xe1\xbf\x96\xcf\x82 \xce\xbf\xe1\xbd\x90\xcf\x81\xce\xb1\xce\xbd\xce\xbf\xe1\xbf\x96\xcf\x82 \xe1\xbc\x81\xce\xb3\xce\xb9\xce\xb1\xcf\x83\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xe1\xbd\xb8 \xe1\xbd\x84\xce\xbd\xce\xbf\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xe1\xbc\x90\xce\xbb\xce\xb8\xce\xad\xcf\x84\xcf\x89 \xe1\xbc\xa1 \xce\xb2\xce\xb1\xcf\x83\xce\xb9\xce\xbb\xce\xb5\xce\xaf\xce\xb1 \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb3\xce\xb5\xce\xbd\xce\xb7\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xe1\xbd\xb8 \xce\xb8\xce\xad\xce\xbb\xce\xb7\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85, \xe1\xbd\xa1\xcf\x82 \xe1\xbc\x90\xce\xbd \xce\xbf\xe1\xbd\x90\xcf\x81\xce\xb1\xce\xbd\xe1\xbf\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\x90\xcf\x80\xe1\xbd\xb6 \xcf\x84\xe1\xbf\x86\xcf\x82 \xce\xb3\xe1\xbf\x86\xcf\x82\xc2\xb7 \xcf\x84\xe1\xbd\xb8\xce\xbd \xe1\xbc\x84\xcf\x81\xcf\x84\xce\xbf\xce\xbd \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd \xcf\x84\xe1\xbd\xb8\xce\xbd \xe1\xbc\x90\xcf\x80\xce\xb9\xce\xbf\xcf\x8d\xcf\x83\xce\xb9\xce\xbf\xce\xbd \xce\xb4\xe1\xbd\xb8\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\x96\xce\xbd \xcf\x83\xce\xae\xce\xbc\xce\xb5\xcf\x81\xce\xbf\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\x84\xcf\x86\xce\xb5\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\x96\xce\xbd \xcf\x84\xe1\xbd\xb0 \xe1\xbd\x80\xcf\x86\xce\xb5\xce\xbb\xce\xae\xce\xbc\xce\xb1\xcf\x84\xce\xb1 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd, \xe1\xbd\xa1\xcf\x82 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\xa1\xce\xbc\xce\xb5\xe1\xbf\x96\xcf\x82 \xe1\xbc\x80\xcf\x86\xce\xaf\xce\xb5\xce\xbc\xce\xb5\xce\xbd \xcf\x84\xce\xbf\xe1\xbf\x96\xcf\x82 \xe1\xbd\x80\xcf\x86\xce\xb5\xce\xb9\xce\xbb\xce\xad\xcf\x84\xce\xb1\xce\xb9\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xce\xbc\xe1\xbd\xb4 \xce\xb5\xe1\xbc\xb0\xcf\x83\xce\xb5\xce\xbd\xce\xad\xce\xb3\xce\xba\xe1\xbf\x83\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbe\xb6\xcf\x82 \xce\xb5\xe1\xbc\xb0\xcf\x82 \xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xb1\xcf\x83\xce\xbc\xcf\x8c\xce\xbd, \xe1\xbc\x80\xce\xbb\xce\xbb\xe1\xbd\xb0 \xcf\x81\xe1\xbf\xa6\xcf\x83\xce\xb1\xce\xb9 \xe1\xbc\xa1\xce\xbc\xe1\xbe\xb6\xcf\x82 \xe1\xbc\x80\xcf\x80\xe1\xbd\xb8 \xcf\x84\xce\xbf\xe1\xbf\xa6 \xcf\x80\xce\xbf\xce\xbd\xce\xb7\xcf\x81\xce\xbf\xe1\xbf\xa6. \xe1\xbc\x80\xce\xbc\xce\xae\xce\xbd.

      - - -

      Languages

      -

      (The following are used for demonstration purposes only. Some of the following excerpts are taken from web pages from the BBC Foreign News just to show the script - I have no idea what they actually say!!)

      - -

      Latvian

      -

      Latvijas instit\xc5\xabts veic konsultat\xc4\xabvi koordin\xc4\x93jo\xc5\xa1as funkcijas Latvijas starptautisk\xc4\x81s atpaz\xc4\xabstam\xc4\xabbas jom\xc4\x81; -gatavo un izplata pla\xc5\xa1ai sabiedr\xc4\xabbai pieejamu, svar\xc4\xabgu pamatinform\xc4\x81ciju saturo\xc5\xa1u, viegli izprotamu un iegaum\xc4\x93jamu, k\xc4\x81 ar\xc4\xab pozit\xc4\xabvu iespaidu izraiso\xc5\xa1u visp\xc4\x81r\xc4\x93ju pamatinform\xc4\x81ciju par Latviju, Latvijas dabu, sabiedr\xc4\xabbu, kult\xc5\xabru un v\xc4\x93sturi;

      - -

      Azeri (az)

      -

      Qaz k\xc9\x99m\xc9\x99rinin a\xc3\xa7\xc4\xb1l\xc4\xb1\xc5\x9f\xc4\xb1nda \xc4\xb0ran v\xc9\x99 Erm\xc9\x99nistan\xc4\xb1n prezidentl\xc9\x99ri i\xc5\x9ftirak edibl\xc9\x99r.

      - -

      \xc4\xb0ran qaz\xc4\xb1n\xc4\xb1 Erm\xc9\x99nistana n\xc9\x99ql ed\xc9\x99c\xc9\x99k bu k\xc9\x99m\xc9\x99r Yerevan \xc3\xbc\xc3\xa7\xc3\xbcn x\xc3\xbcsusi \xc3\xb6n\xc9\x99m da\xc5\x9f\xc4\xb1y\xc4\xb1r, bel\xc9\x99 ki, b\xc3\xb6y\xc3\xbck etnik az\xc9\x99rbaycanl\xc4\xb1 toplumuna malik \xc4\xb0ran t\xc9\x99lat\xc3\xbcml\xc3\xbc regionda \xc3\xb6z maraqlar\xc4\xb1n\xc4\xb1 qorumaq \xc3\xbc\xc3\xa7\xc3\xbcn \xc3\xa7ox vaxt Erm\xc9\x99nistan\xc4\xb1n m\xc3\xbctt\xc9\x99fiqi kimi g\xc3\xb6r\xc3\xbcn\xc3\xbcb.

      - -

      Bulgarian

      -

      \xd0\x9f\xd0\xbe\xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb4\xd0\xbe\xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd1\x86\xd0\xb8 \xd0\xb2 \xd0\xb1\xd1\x8a\xd0\xbb\xd0\xb3\xd0\xb0\xd1\x80\xd1\x81\xd0\xba\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb0\xd1\x80\xd0\xbc\xd0\xb8\xd1\x8f \xd1\x89\xd0\xb5 \xd1\x81\xd0\xbb\xd1\x83\xd0\xb6\xd0\xb0\xd1\x82 9 \xd0\xbc\xd0\xb5\xd1\x81\xd0\xb5\xd1\x86\xd0\xb0, \xd0\xba\xd0\xb0\xd0\xba\xd1\x82\xd0\xbe \xd0\xbf\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2\xd1\x8f\xd0\xb2\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xba\xd0\xbe\xd0\xbd\xd0\xb0 6 \xd0\xbc\xd0\xb5\xd1\x81\xd0\xb5\xd1\x86\xd0\xb0 \xd0\xb5 \xd1\x81\xd1\x8a\xd0\xba\xd1\x80\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f\xd1\x82 \xd1\x81\xd1\x80\xd0\xbe\xd0\xba \xd1\x81\xd0\xb0\xd0\xbc\xd0\xbe \xd0\xb7\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xb2\xd1\x8a\xd1\x80\xd1\x88\xd0\xb8\xd0\xbb\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb2\xd0\xb8\xd1\x81\xd1\x88\xd0\xb5 \xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 - \xd1\x82\xd0\xb0\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x81\xd1\x82\xd1\x8a\xd1\x80 \xd0\x92\xd0\xb5\xd1\x81\xd0\xb5\xd0\xbb\xd0\xb8\xd0\xbd \xd0\x91\xd0\xbb\xd0\xb8\xd0\xb7\xd0\xbd\xd0\xb0\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xbe\xd1\x82\xd1\x85\xd0\xb2\xd1\x8a\xd1\x80\xd0\xbb\xd0\xb8 \xd1\x80\xd0\xb0\xd0\xb7\xd0\xbb\xd0\xb8\xd1\x87\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbf\xd1\x80\xd0\xb5\xd1\x82\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8 \xd0\xb2 \xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x87\xd0\xbd\xd0\xbe\xd1\x82\xd0\xbe \xd0\xbf\xd1\x80\xd0\xbe\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd0\xbd\xd1\x81\xd1\x82\xd0\xb2\xd0\xbe \xd0\xbf\xd0\xbe \xd1\x82\xd0\xb5\xd0\xbc\xd0\xb0\xd1\x82\xd0\xb0. \xd0\x9c\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x81\xd1\x82\xd1\x8a\xd1\x80\xd1\x8a\xd1\x82 \xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xb1\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb0\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb0\xd0\xb7\xd1\x84\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0 \xd0\xb2 \xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbb\xd1\x8a\xd0\xba \xd0\x92\xd1\x82\xd0\xbe\xd1\x80\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xbd\xd0\xb8 \xd1\x80\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xbe\xd1\x82 \xd0\x90\xd1\x88\xd1\x80\xd0\xb0\xd1\x84 \xd0\xb8 \xd0\x92\xd1\x82\xd0\xbe\xd1\x80\xd0\xb8 \xd0\xbf\xd0\xb5\xd1\x85\xd0\xbe\xd1\x82\xd0\xb5\xd0\xbd \xd0\xb2\xd0\xb7\xd0\xb2\xd0\xbe\xd0\xb4, \xd0\xb7\xd0\xb0\xd0\xb2\xd1\x8a\xd1\x80\xd0\xbd\xd0\xb0\xd0\xbb \xd1\x81\xd0\xb5 \xd0\xbe\xd1\x82 \xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd1\x82\xd0\xb2\xd0\xbe\xd1\x80\xd1\x87\xd0\xb5\xd1\x81\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xb8\xd1\x81\xd0\xb8\xd1\x8f \xd0\xbe\xd1\x82 \xd0\x91\xd0\xb0\xd0\xbd\xd1\x8f \xd0\x9b\xd1\x83\xd0\xba\xd0\xb0 \xd0\xb2 \xd0\x91\xd0\xbe\xd1\x81\xd0\xbd\xd0\xb0 \xd0\xb8 \xd0\xa5\xd0\xb5\xd1\x80\xd1\x86\xd0\xb5\xd0\xb3\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xbd\xd0\xb0.

      - -

      Macedonian (mk)

      -

      \xd0\x91\xd1\x83\xd1\x88 \xd1\x80\xd0\xb5\xd1\x87\xd0\xb5 \xd0\xbe\xd1\x82\xd0\xb8 \xd0\xb5 \xd1\x81\xd1\x83\xd1\x88\xd1\x82\xd0\xb8\xd0\xbd\xd1\x81\xd0\xba\xd0\xb8 \xd0\xb4\xd0\xb0 \xd1\x81\xd0\xb5 \xd0\xbe\xd1\x81\xd0\xb8\xd0\xb3\xd1\x83\xd1\x80\xd0\xb8 \xd0\xb1\xd0\xb5\xd0\xb7\xd0\xb1\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0 \xd0\xbd\xd0\xb0 \xd0\x91\xd0\xb0\xd0\xb3\xd0\xb4\xd0\xb0\xd0\xb4 \xd0\xb8 \xd0\xb4\xd0\xb0 \xd1\x81\xd0\xb5 \xd0\xbe\xd0\xb1\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb8 \xd0\xbd\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb0\xd0\xbb\xd0\xbd\xd0\xb8\xd0\xbe\xd1\x82 \xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb2\xd0\xbe \xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd1\x82\xd0\xbe\xd0\xba\xd0\xbe\xd1\x82 \xd0\xbe\xd0\xb4 \xd0\xb7\xd0\xb5\xd0\xbc\xd1\x98\xd0\xb0\xd1\x82\xd0\xb0.

      - -

      \xd0\x9c\xd0\xb8\xd1\x82\xd1\x80\xd0\xb5\xd0\xb2\xd0\xb0 \xd1\x98\xd0\xb0 \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb7\xd0\xb2\xd0\xb0 \xd0\xb2\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xb8\xd0\xbd\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xbd\xd1\x82\xd0\xb5\xd0\xbd \xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x81 \xd0\xba\xd0\xbe\xd0\xbd \xd0\xbe\xd0\xb2\xd0\xb0 \xd0\xb1\xd0\xb8\xd1\x82\xd0\xba\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xb7\xd0\xb0\xd1\x87\xd1\x83\xd0\xb2\xd0\xb8\xd0\xb2\xd0\xb0\xd1\x9a\xd0\xb5 \xd0\xbd\xd0\xb0 \xd1\x83\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xbd\xd0\xbe\xd1\x82\xd0\xbe \xd0\xb8\xd0\xbc\xd0\xb5 \xd0\xbd\xd0\xb0 \xd0\xb7\xd0\xb5\xd0\xbc\xd1\x98\xd0\xb0\xd1\x82\xd0\xb0.

      - -

      Uzbek (uz)

      -

      \xd0\x98\xd1\x80\xd0\xbe\xd2\x9b\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbb\xd0\xb0\xd1\x80 \xd0\xbe\xd1\x80\xd0\xb0\xd1\x81\xd0\xb8\xd0\xb4\xd0\xb0 \xd1\x82\xd1\x83\xd1\x88\xd0\xba\xd1\x83\xd0\xbd\xd0\xbb\xd0\xb8\xd0\xba \xd0\xbe\xd1\x80\xd1\x82\xd0\xb8\xd0\xb1 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0\xd1\x8f\xd0\xbf\xd1\x82\xd0\xb8

      - -

      \xd0\x98\xd1\x80\xd0\xbe\xd2\x9b\xd0\xb4\xd0\xb0 \xd1\x9e\xd1\x82\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb8\xd0\xbb\xd0\xb3\xd0\xb0\xd0\xbd \xd1\x81\xd1\x9e\xd0\xbd\xd0\xb3\xd0\xb3\xd0\xb8 \xd0\xb6\xd0\xb0\xd0\xbc\xd0\xbe\xd0\xb0\xd1\x82\xd1\x87\xd0\xb8\xd0\xbb\xd0\xb8\xd0\xba \xd1\x84\xd0\xb8\xd0\xba\xd1\x80\xd0\xb8\xd0\xbd\xd0\xb8 \xd1\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x88 \xd0\xbd\xd0\xb0\xd1\x82\xd0\xb8\xd0\xb6\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x80\xd0\xb8\xd0\xb3\xd0\xb0 \xd0\xba\xd1\x9e\xd1\x80\xd0\xb0, \xd0\xbc\xd0\xb0\xd0\xbc\xd0\xbb\xd0\xb0\xd0\xba\xd0\xb0\xd1\x82 \xd0\xba\xd0\xb5\xd0\xbb\xd0\xb0\xd0\xb6\xd0\xb0\xd0\xb3\xd0\xb8 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0\xd1\x81\xd0\xb8\xd0\xb4\xd0\xb0 \xd1\x82\xd1\x83\xd1\x88\xd0\xba\xd1\x83\xd0\xbd \xd0\xba\xd0\xb0\xd0\xb9\xd1\x84\xd0\xb8\xd1\x8f\xd1\x82\xd0\xb4\xd0\xb0 \xd0\xb1\xd1\x9e\xd0\xbb\xd0\xb3\xd0\xb0\xd0\xbd \xd0\xb8\xd1\x80\xd0\xbe\xd2\x9b\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbb\xd0\xb0\xd1\x80 \xd1\x81\xd0\xbe\xd0\xbd\xd0\xb8 \xd1\x82\xd0\xbe\xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0 \xd0\xbe\xd1\x80\xd1\x82\xd0\xb8\xd0\xb1 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xbc\xd0\xbe\xd2\x9b\xd0\xb4\xd0\xb0.

      - -

      Kyrgyz (ky)

      -

      \xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xba\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xb4\xd0\xb0 \xd0\xb0\xd0\xb9\xd1\x8b\xd0\xbb \xd1\x82\xd1\x83\xd1\x80\xd0\xb3\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd1\x80\xd1\x8b \xd1\x83\xd1\x80\xd1\x83\xd1\x88\xd0\xb0 \xd0\xba\xd0\xb5\xd1\x82\xd0\xb8\xd0\xbf 3 \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0 \xd1\x82\xd0\xb0\xd0\xbf\xd1\x82\xd1\x8b -\xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xba\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xb4\xd1\x8b\xd0\xbd \xd0\x90\xd0\xbb\xd0\xbc\xd0\xb0\xd1\x82\xd1\x8b \xd1\x88\xd0\xb0\xd0\xb0\xd1\x80\xd1\x8b\xd0\xbd\xd1\x8b\xd0\xbd \xd1\x82\xd1\x83\xd1\x88\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb3\xd1\x8b \xd0\xb0\xd0\xb9\xd1\x8b\xd0\xbb\xd0\xb4\xd0\xb0 \xd1\x8d\xd0\xba\xd0\xb8 \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xbe\xd1\x80\xd1\x82\xd0\xbe\xd1\x81\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb3\xd1\x8b \xd1\x87\xd0\xb0\xd1\x82\xd0\xb0\xd0\xba \xd1\x87\xd0\xbe\xd2\xa3 \xd1\x83\xd1\x80\xd1\x83\xd1\x88\xd0\xba\xd0\xb0 \xd0\xb0\xd0\xb9\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x8b\xd0\xbf, \xd0\xb0\xd0\xb3\xd0\xb0 \xd1\x8d\xd0\xbb\xd2\xaf\xd2\xaf \xd1\x87\xd0\xb0\xd0\xba\xd1\x82\xd1\x8b \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xb0\xd1\x80\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x88\xd0\xba\xd0\xb0\xd0\xbd.

      - - - -

      Albanian (sq)

      -

      Nj\xc3\xab anket\xc3\xab sugjeron se irakian\xc3\xabt kan\xc3\xab nj\xc3\xab pesimiz\xc3\xabm n\xc3\xab rritje p\xc3\xabr t\xc3\xab ardhmen e vendit t\xc3\xab tyre.

      - -

      Presidenti shqiptar Alfred Moisiu dekretoi t\xc3\xab h\xc3\xabn\xc3\xabn ndryshimet e propozuara nga kryeministri Sali Berisha n\xc3\xab kabinetin e tij, pas zgjedhjeve lokale.

      - - -

      Vietnamese (vi)

      -

      M\xc3\xb4\xcc\xa3t kha\xcc\x89o sa\xcc\x81t m\xc6\xa1\xcc\x81i cho bi\xc3\xaa\xcc\x81t ng\xc6\xb0\xc6\xa1\xcc\x80i d\xc3\xa2n Iraq nga\xcc\x80y ca\xcc\x80ng ca\xcc\x89m th\xc3\xa2\xcc\x81y bi quan va\xcc\x80 kh\xc3\xb4ng tin t\xc6\xb0\xc6\xa1\xcc\x89ng va\xcc\x80o chi\xcc\x81nh phu\xcc\x89 cu\xcc\x83ng nh\xc6\xb0 li\xc3\xaan qu\xc3\xa2n

      - -

      Nga \xc4\x91ang th\xc6\xb0\xcc\xa3c hi\xc3\xaa\xcc\xa3n chi\xc3\xaa\xcc\x81n di\xcc\xa3ch c\xc6\xb0\xcc\x81u h\xc3\xb4\xcc\xa3 sau khi co\xcc\x81 vu\xcc\xa3 n\xc3\xb4\xcc\x89 khi\xcc\x81 methane ta\xcc\xa3i m\xc3\xb4\xcc\xa3t mo\xcc\x89 than \xc6\xa1\xcc\x89 Siberia la\xcc\x80m i\xcc\x81t nh\xc3\xa2\xcc\x81t 61 ng\xc6\xb0\xc6\xa1\xcc\x80i thi\xc3\xaa\xcc\xa3t ma\xcc\xa3ng

      - -

      Thai (pangram)

      -

      \xe0\xb9\x80\xe0\xb8\x9b\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa1\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa9\xe0\xb8\xa2\xe0\xb9\x8c\xe0\xb8\xaa\xe0\xb8\xb8\xe0\xb8\x94\xe0\xb8\x9b\xe0\xb8\xa3\xe0\xb8\xb0\xe0\xb9\x80\xe0\xb8\xaa\xe0\xb8\xa3\xe0\xb8\xb4\xe0\xb8\x90\xe0\xb9\x80\xe0\xb8\xa5\xe0\xb8\xb4\xe0\xb8\xa8\xe0\xb8\x84\xe0\xb8\xb8\xe0\xb8\x93\xe0\xb8\x84\xe0\xb9\x88\xe0\xb8\xb2 \xe0\xb8\x81\xe0\xb8\xa7\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9a\xe0\xb8\xa3\xe0\xb8\xa3\xe0\xb8\x94\xe0\xb8\xb2\xe0\xb8\x9d\xe0\xb8\xb9\xe0\xb8\x87\xe0\xb8\xaa\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xa7\xe0\xb9\x8c\xe0\xb9\x80\xe0\xb8\x94\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x88\xe0\xb8\x89\xe0\xb8\xb2\xe0\xb8\x99 \xe0\xb8\x88\xe0\xb8\x87\xe0\xb8\x9d\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9f\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x9e\xe0\xb8\xb1\xe0\xb8\x92\xe0\xb8\x99\xe0\xb8\xb2\xe0\xb8\xa7\xe0\xb8\xb4\xe0\xb8\x8a\xe0\xb8\xb2\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3 \xe0\xb8\xad\xe0\xb8\xa2\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\xa5\xe0\xb9\x89\xe0\xb8\xb2\xe0\xb8\x87\xe0\xb8\x9c\xe0\xb8\xa5\xe0\xb8\xb2\xe0\xb8\x8d\xe0\xb8\xa4\xe0\xb9\x85\xe0\xb9\x80\xe0\xb8\x82\xe0\xb9\x88\xe0\xb8\x99\xe0\xb8\x86\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9a\xe0\xb8\xb5\xe0\xb8\x91\xe0\xb8\xb2\xe0\xb9\x83\xe0\xb8\x84\xe0\xb8\xa3 \xe0\xb9\x84\xe0\xb8\xa1\xe0\xb9\x88\xe0\xb8\x96\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb9\x82\xe0\xb8\x97\xe0\xb8\xa9\xe0\xb9\x82\xe0\xb8\x81\xe0\xb8\xa3\xe0\xb8\x98\xe0\xb9\x81\xe0\xb8\x8a\xe0\xb9\x88\xe0\xb8\x87\xe0\xb8\x8b\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\xae\xe0\xb8\xb6\xe0\xb8\x94\xe0\xb8\xae\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\x94\xe0\xb9\x88\xe0\xb8\xb2 \xe0\xb8\xab\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\xad\xe0\xb8\xa0\xe0\xb8\xb1\xe0\xb8\xa2\xe0\xb9\x80\xe0\xb8\xab\xe0\xb8\xa1\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\x81\xe0\xb8\xb5\xe0\xb8\xac\xe0\xb8\xb2\xe0\xb8\xad\xe0\xb8\xb1\xe0\xb8\x8a\xe0\xb8\x8c\xe0\xb8\xb2\xe0\xb8\xaa\xe0\xb8\xb1\xe0\xb8\xa2 \xe0\xb8\x9b\xe0\xb8\x8f\xe0\xb8\xb4\xe0\xb8\x9a\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x9b\xe0\xb8\xa3\xe0\xb8\xb0\xe0\xb8\x9e\xe0\xb8\xa4\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x81\xe0\xb8\x8e\xe0\xb8\x81\xe0\xb8\xb3\xe0\xb8\xab\xe0\xb8\x99\xe0\xb8\x94\xe0\xb9\x83\xe0\xb8\x88 \xe0\xb8\x9e\xe0\xb8\xb9\xe0\xb8\x94\xe0\xb8\x88\xe0\xb8\xb2\xe0\xb9\x83\xe0\xb8\xab\xe0\xb9\x89\xe0\xb8\x88\xe0\xb9\x8a\xe0\xb8\xb0\xe0\xb9\x86 \xe0\xb8\x88\xe0\xb9\x8b\xe0\xb8\xb2 \xe0\xb8\x99\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9f\xe0\xb8\xb1\xe0\xb8\x87\xe0\xb9\x80\xe0\xb8\xad\xe0\xb8\xa2\xe0\xb8\xaf

      - - - -
      - -

      Hebrew (pangram)

      -

      \xd7\x93\xd7\x92 \xd7\xa1\xd7\xa7\xd7\xa8\xd7\x9f \xd7\xa9\xd7\x98 \xd7\x91\xd7\x99\xd7\x9d \xd7\x9e\xd7\x90\xd7\x95\xd7\x9b\xd7\x96\xd7\x91 \xd7\x95\xd7\x9c\xd7\xa4\xd7\xaa\xd7\xa2 \xd7\x9e\xd7\xa6\xd7\x90 \xd7\x97\xd7\x91\xd7\xa8\xd7\x94

      - -

      \xd7\x90\xd7\x95 \xd7\x94\xd7\xa0\xd7\xa1\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9d, \xd7\x9c\xd7\x91\xd7\x95\xd7\x90 \xd7\x9c\xd7\xa7\xd7\x97\xd7\xaa \xd7\x9c\xd7\x95 \xd7\x92\xd7\x95\xd7\x99 \xd7\x9e\xd7\xa7\xd7\xa8\xd7\x91 \xd7\x92\xd7\x95\xd7\x99, \xd7\x91\xd7\x9e\xd7\xa1\xd7\xaa \xd7\x91\xd7\x90\xd7\xaa\xd7\xaa \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa4\xd7\xaa\xd7\x99\xd7\x9d \xd7\x95\xd7\x91\xd7\x9e\xd7\x9c\xd7\x97\xd7\x9e\xd7\x94 \xd7\x95\xd7\x91\xd7\x99\xd7\x93 \xd7\x97\xd7\x96\xd7\xa7\xd7\x94 \xd7\x95\xd7\x91\xd7\x96\xd7\xa8\xd7\x95\xd7\xa2 \xd7\xa0\xd7\x98\xd7\x95\xd7\x99\xd7\x94, \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa8\xd7\x90\xd7\x99\xd7\x9d \xd7\x92\xd7\x93\xd7\x9c\xd7\x99\xd7\x9d: \xd7\x9b\xd7\x9b\xd7\x9c \xd7\x90\xd7\xa9\xd7\xa8-\xd7\xa2\xd7\xa9\xd7\x94 \xd7\x9c\xd7\x9b\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9b\xd7\x9d, \xd7\x91\xd7\x9e\xd7\xa6\xd7\xa8\xd7\x99\xd7\x9d--\xd7\x9c\xd7\xa2\xd7\x99\xd7\xa0\xd7\x99\xd7\x9a

      - - - - -

      Arabic

      -

      \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.

      - -

      \xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f

      - - -

      Persian / Farsi

      -

      \xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.

      - - - -

      Urdu

      -

      تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہی۔ اسلۓ انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہیۓ۔ -

      - -

      Pashto (ps)

      -

      \xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a. -

      - - -

      Sindhi (sd)

      -

      -واشنگٽن (م ڊ) آمريڪا چيو آهي ته ڪيري لوگربل تي پاڪ فوج جي تحفظات سان پاڪستان ۾ جمهوري طور آيل زرداري جي حڪومت کي ڪوبه خطرو ناهي، ان سوال تي تي ڪيري لوگربل ۾ پاڪستان کي غير مشروط امداد ڏيڻ جي ڳالهه ڪئي وئي آهي، جڏهن ته فوجي امداد تي شرط لاڳو ڪيا -

      - -
      - - -

      Indic Scripts

      - -

      -Malayalam -

      -

      സംസ്ഥാനത്ത് രാഷ്ട്രീയ പുകമറ സൃഷ്ടിക്കാനാണ് വോട്ടര്‍പട്ടിക വിവാദത്തിലൂടെ കോണ്‍ഗ്രസ് ശ്രമിക്കുന്നതെന്ന് സിപി‌എം സംസ്ഥാന സെക്രട്ടറി പിണറായി വിജയന്‍ കുറ്റപ്പെടുത്തി. ഉദ്യോഗസ്ഥരെ ഭീഷണിപ്പെടുത്തി വരുതിയില്‍ നിര്‍ത്താനാണ് വയലാര്‍ രവി ഉള്‍പ്പെടെയുള്ളവര്‍ ശ്രമിക്കുന്നതെന്നും പിണറാ‍യി പ്രസ്താവനയില്‍ ആരോപിച്ചു. -

      - -

      Kannada

      -

      -ತಮ್ಮದೇ ಕುಟುಂಬದ ಯುವತಿಯೊಬ್ಬಳನ್ನು ಸತತ ಹಲವಾರು ವರ್ಷ ಭೋಗಿಸಿದ ಭಾರತೀಯ ಮೂಲದ ಮೂವರು ದುರುಳ ಸಂಬಂಧಿಕರು ಅಪರಾಧಿಗಳೆಂದು ಸಾಬೀತಾಗಿದ್ದು, ಇಂಗ್ಲೆಂಡ್ ನ್ಯಾಯಾಲಯವು ದೀರ್ಘಾವಧಿ ಕಠಿಣ ಶಿಕ್ಷೆ ವಿಧಿಸಿದೆ. -

      - -

      Telegu

      -

      ఆగ్నేయ ఇరాన్‌లో ఆదివారం నాడు ఓ ఆత్మాహుతి దాడి జరగడంతో ఇరవై మంది మృతి చెందారు. -
      - -ఆగ్నేయ ఇరాన్‌లో ఆత్మాహుతి దాడి జరగడంతో ఐదుగురు ఎలిట్ రెవల్యూషనరీ గార్డ్‌లతో సహా ప్రముఖ కమాండర్‌లతోసహా మొత్తం ఇరవై మంది మృతి చెందినట్లు ఇరాన్ లోక్‌సభ స్పీకర్ అలీ లారిజానీ తెలిపారు. -

      - - - -

      Tamil (ta)

      -

      \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xae\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xa8\xe0\xae\xae\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d, \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\xb0\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xa3\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81 \xe0\xae\x92\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81.

      - - -

      Oriya

      -

      ଓଡ଼ିଆ ଉଇକିପେଡିଆ ଆପଣଙ୍କୁ ସ୍ବାଗତ କରୁଛି। ଏହି ଉନ୍ମୁକ୍ତ ଜ୍ଞାନକୋଷଟି ଇଣ୍ଟରନେଟ ଉପରେ ଆଧାରିତ ଏବଂ ଏହା ବିଶ୍ବର ୫୦ଟି ଭାଷାରେ ଉପଲବ୍ଧ । ଏହାକୁ ଆପଣ ମଧ୍ୟ ବର୍ଦ୍ଧିତ ଓ ପରିବର୍ତିତ କରିପାରିବେ ଏବଂ ଏହାକୁ ଉନ୍ନତ କରିବା ପାଇଁ ନିଜର ଅବଦାନ ଦେଇ ପାରିବେ । ଆପଣଙ୍କ ପସନ୍ଦର ବିଷୟ ଗୁଡିକୁ ଆପଣ ନୂତନ ଭାବେରେ ଯୋଗ କରିପାରିବେ କିମ୍ବା ଏହି ପୃଷ୍ଠାକୁ ସମ୍ପାଦନ କରି ଏହା ସହିତ ଯୋଗ କରିପାରିବ । ସମସ୍ତ ପାଠ ଗୁଡିକ GNU ମୁକ୍ତ ଦଲିଲକରଣ ଲାଇସେନ୍ସର ସର୍ତ୍ତ ଅଧୀନରେ ଉପଲବ୍ଧ । ତଥାପି, ଆପଣ ଏହାକୁ ମୁକ୍ତ ଭାବେର ଇଲେକ୍ଟ୍ରୋନିକ୍ସ ପ୍ରିଣ୍ଟ୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ପ୍ରିଣ୍ଟର ମାଧ୍ୟମରେ ବ୍ୟବହାର କରିପାରିବ । -

      - -

      Punjabi

      -

      ਕੇਂਦਰੀ ਗ੍ਰਹਿਮੰਤਰੀ ਪੀ.ਚਿਦੰਬਰਮ ਨੇ ਐਤਵਾਰ ਨੂੰ ਤਮਿਲਨਾਢੂ ਦੇ ਮੁੱਖਮੰਤਰੀ ਐਮ.ਕਰੁਣਾਨਿਧੀ ਨਾਲ ਮੁਲਾਕਾਤ ਕੀਤੀ।ਉਨ੍ਹਾ ਨੇ ਸ਼੍ਰੀਲੰਕਾ 'ਚ ਲਿੱਟੇ ਦੇ ਖਿਲਾਫ਼ ਯੁੱਧ ਦੌਰਾਨ ਉੱਝੜੇ ਹੋਏ ਲੱਗਭਗ ਢਾਈ ਲੱਖ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ 'ਤੇ ਚਰਚਾ ਕੀਤੀ। -

      - -

      Gujarati (gu)

      -

      -આ વાત હજાર વાર કહેવામાં આવી છે કે ફિલ્મ બનાવતી વખેત હંમેશા સૌથી વધુ ધ્યાન વાર્તા અને સ્ક્રીનપ્લે પર આપવુ જોઈએ. કારણ કે આ કોઈ પણ ફિલ્મની સફળતાનો મુખ્ય આધાર હોય છે. -
      -મોટા ફિલ્મ સ્ટાર્સ સાઈન કરવાથી, સ્ટંટ અને ગીતોથી પાણીની અંદર કે આકાશમાં કરોડો રૂપિયા ખર્ચ કરી ફિલ્માવેલા દ્રશ્યોથી કશુ જ નથી થતુ. પરંતુ આ બુનિયાદી વાત અત્યાર સુધી કોઈ લોકોને સમજાતી નથી. -

      - - -

      Hindi (hi)

      -

      \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa5\x80\xe0\xa4\x9a \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa3 \xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa5\x88\xe0\xa4\x9a \xe0\xa4\xa6\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa1 414 \xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xb0\xe0\xa4\x96\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x87\xe0\xa4\x9f \xe0\xa4\x96\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\xb9\xe0\xa5\x88\xe0\xa4\x82.

      - - -

      Nepali (ne) - Devanagari

      -

      \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa2\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa5\x88 \xe0\xa4\x86\xe0\xa4\x89\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa5\x87\xe0\xa4\xa0 \xe0\xa4\xae\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xad\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb9\xe0\xa4\xb8 \xe0\xa4\x9a\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x95\xe0\xa5\x80\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5\xe0\xa4\x95\xe0\xa5\x88 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb7\xe0\xa4\xaf\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8 \xe0\xa4\x86\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x97 \xe0\xa4\xb0 \xe0\xa4\x86\xe0\xa4\xa0 \xe0\xa4\xa6\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa4\xbe, \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa5\x88 \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9b\xe0\xa5\xa4

      - - -

      Bengali (bn)

      -

      -দক্ষিণ ওয়াজিরিস্থানে কর্মরত স্বেচ্ছাসেবী ও ত্রাণ সংস্থাগুলো ধারণা করছে সেনা অভিযানের তীব্রতা বাড়লে এই সংখ্যাটা আরও অনেক বেড়ে যাবে -
      -শরণার্থীদের স্রোত সামলাতে তারা ইতিমধ্যেই হিমশিম খাচ্ছেন, ফলে লড়াই থেকে পালিয়ে আসা বেসামরিক মানুষজনের সংখ্যা আরও বাড়লে স্বভাবতই সঙ্কট আরও জটিল হয়ে উঠবে -

      - - -

      Assamese

      -

      অসমীয়া ৱিকিপিডিয়াৰ উদ্দেশ্য হ'ল সম্পূৰ্ণ অসমীয়া ভাষাত এখনি বিশ্বকোষ প্ৰণয়ন কৰা। অন্য কোনো ভাষাৰ প্ৰবন্ধ এই বিশ্বকোষৰ বাবে গ্ৰহন কৰা নহ'ব। বিশ্বকোষৰ অৱদানকাৰীসকললৈ সাদৰেৰে অনুৰোধ জনোৱা হ'ল যাতে তেখেতসকলে অসমীয়া ভাষাৰ প্ৰচলিত বানান পদ্ধতি মানি চলে। বিদেশী শব্দৰ অসমীয়া প্ৰতিৰূপৰ ক্ষেত্ৰত যিহেতু অসমীয়া সাহিত্যিকসকল এতিয়াও ঐক্যমতত উপনীত হ'ব পৰা নাই, ৱিকিপিডিয়াত বিদেশী শব্দৰ যিকোনো ধৰনৰ অসমীয়া ৰূপ গ্ৰাহ্য কৰা হ'ব। -

      - - - - -

      Japanese (pangrams)

      -
      Iroha Uta SJIS
      - -

      \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99

      - -
      Tori Naku Uta
      - -

      \xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1

      - -
      Ametsuchi No Uta
      - -

      \xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6

      - -
      Taini no Uta
      - -

      \xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac

      - -

      Chinese (simplified) GB2312 GB

      - -

      \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82

      - - -

      Chinese (Traditional - Hong Kong) Big5

      - -

      \xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82

      - - - -

      Korean UHC

      - -

      \xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4.

      - - -

      Mixed

      -

      Distinguishes multiple languages enclosed in same element (tags): Arabic \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 -English Cat sat on the large mat -Tamil \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe -Hindi \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 -Japanese \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80 -Chinese \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac -Thai \xe0\xb9\x80\xe0\xb8\x9b\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa1\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa9\xe0\xb8\xa2 -Viet M\xc3\xb4\xcc\xa3t kha\xcc\x89o sa\xcc\x81t m\xc6\xa1\xcc\x81i cho bi\xc3\xaa\xcc\x81t ng\xc6\xb0\xc6\xa1\xcc\x80i d\xc3\xa2n -Tamil \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe -Chinese \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac -English Cat sat on the large mat -

      - - -

      Unicode Plane 2

      -
      -Unicode Plane 0 (BMP U+0000 - U+FFFF): -\xe9\xbc\x82 \xe9\xbc\x88 \xe9\xbc\x97 \xe9\xbc\xa6 \xe9\xbc\xa7 \xe9\xbc\xb9 \xe9\xbd\x84 \xe9\xbd\x85 \xe9\xbd\x90 \xe9\xbd\x93 \xe9\xbd\x9a \xe9\xbd\xa2 \xe9\xbd\xa9 \xe9\xbd\xbf \xe9\xbe\x8e \xe9\xbe\x99 \xe9\xbe\x9f \xe9\xbe\xa5 -------- -Unicode Plane 2 (SIP characters > U+20000): -\xf0\xa0\x80\xa1 \xf0\xa0\x80\xbe \xf0\xa0\x81\x86 \xf0\xa0\x81\x8e \xf0\xa0\x81\xa8 \xf0\xa0\x82\x86 \xf0\xa0\x82\x87 \xf0\xa0\x82\x8a \xf0\xa0\x82\x94 \xf0\xa0\x83\x8a \xf0\xa0\x83\x8b \xf0\xa0\x83\x8c \xf0\xa0\x83\x8d \xf0\xa0\x83\x91 \xf0\xa0\x83\xae \xf0\xa0\x84\x8c \xf0\xa0\x84\x8e \xf0\xa0\x84\x98 \xf0\xa0\x86\xa4 \xf0\xa0\x86\xa9 \xf0\xa0\x86\xab \xf0\xa0\x87\x81 \xf0\xa0\x87\x94 \xf0\xa0\x87\xb2 \xf0\xa0\x88\x84 \xf0\xa0\x88\x8c \xf0\xa0\x88\x94 \xf0\xa0\x88\xb9 \xf0\xa0\x89\x9b \xf0\xa0\x89\xb4 \xf0\xa0\x89\xb5 \xf0\xa0\x8a\x99 \xf0\xa0\x8a\x9e \xf0\xa0\x8a\xa0 \xf0\xa0\x8a\xb7 \xf0\xa0\x8a\xbf \xf0\xa0\x8b\x80 \xf0\xa0\x8b\xa5 \xf0\xa0\x8c\x8a -------- -Unicode Plane 0 (BMPU+0000 - U+FFFF): -\xe9\xbc\x82 \xe9\xbc\x88 \xe9\xbc\x97 \xe9\xbc\xa6 \xe9\xbc\xa7 \xe9\xbc\xb9 \xe9\xbd\x84 \xe9\xbd\x85 \xe9\xbd\x90 \xe9\xbd\x93 \xe9\xbd\x9a \xe9\xbd\xa2 \xe9\xbd\xa9 \xe9\xbd\xbf \xe9\xbe\x8e \xe9\xbe\x99 \xe9\xbe\x9f \xe9\xbe\xa5
      -
      - - -"; - - - - - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->useAdobeCJK = true; // Default setting in config.php - // You can set this to false if you have defined other CJK fonts - -$mpdf->SetAutoFont(AUTOFONT_ALL); // AUTOFONT_CJK | AUTOFONT_THAIVIET | AUTOFONT_RTL | AUTOFONT_INDIC // AUTOFONT_ALL - // () = default ALL, 0 turns OFF (default initially) - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php b/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php deleted file mode 100644 index 0793ac12e..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php +++ /dev/null @@ -1,384 +0,0 @@ - -body, p { direction: rtl; font-family: 'XB Zar'; font-size: 15pt; } - - -

      Arabic Languages and Fonts

      - - - - -

      Arabic
      -٠.١.٢.٣.٤.٥.٦.٧.٨.٩ -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -\xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e<>\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c -\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1 -
      -\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8 -
      -\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf -
      -الحمد لله رب العالمين والصلاة والسلام على سيد المرسلين سيدنا ومولانا محمد وعلى آله وصحبه صلاة وسلاماً دائمين إلى يوم الدين. -
      -٠.١.٢.٣.٤.٥.٦.٧.٨.٩ -

      - - - -

      Arabic
      -٠.١.٢.٣.٤.٥.٦.٧.٨.٩ -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -\xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e<>\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c -\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1 -
      -\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8 -
      -\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf -
      -الحمد لله رب العالمين والصلاة والسلام على سيد المرسلين سيدنا ومولانا محمد وعلى آله وصحبه صلاة وسلاماً دائمين إلى يوم الدين. -
      -٠.١.٢.٣.٤.٥.٦.٧.٨.٩ -

      - - - - - - -

      Farsi
      -همهٔ افراد بشر آزاد به دنیا می‌آیند و از دید حیثیت و حقوق با هم برابرند، همه دارای اندیشه و وجدان هستند و باید در برابر یکدیگر با روح برادری رفتار کنند. -
      -٠.١.٢.٣.٤.٥.٦.٧.٨.٩ -

      - - - - - -

      Urdu
      -\xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94 -
      -\xda\x86\xdb\x8c\xd9\x81 \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xda\xa9\xdb\x8c \xd8\xb3\xd8\xb1\xda\xaf\xd8\xb1\xd9\x85\xdb\x8c\xd8\xa7\xda\xba \xd9\x85\xd8\xad\xd8\xaf\xd9\x88\xd8\xaf \xda\xa9\xd8\xb1\xd9\x86\xdb\x92 \xd8\xa7\xd9\x88\xd8\xb1 \xd9\xbe\xd9\x88\xd9\x84\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb9\xdb\x8c\xd9\x86\xd8\xa7\xd8\xaa\xdb\x8c \xda\xa9\xdb\x92 \xd8\xad\xda\xa9\xd9\x85 \xd9\x86\xd8\xa7\xd9\x85\xdb\x92 \xd9\xbe\xd8\xb1 \xd8\xaf\xd8\xb3\xd8\xaa\xd8\xae\xd8\xb7 \xda\xa9\xd8\xb1\xda\xa9\xdb\x92 \xd8\xba\xd9\x84\xd8\xb7 \xda\xa9\xdb\x8c\xd8\xa7: \xd8\xac\xd9\x86\xd8\xb1\xd9\x84 \xd9\x85\xd8\xb4\xd8\xb1\xd9\x81 -

      - - - -

      Pashto
      -\xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a. -
      -\xd9\x87 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xda\xa9\xdb\x90 \xd9\x8a\xd9\x88\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd9\x86\xd8\xb8\xd8\xb1 \xd8\xb4\xd9\x85\xdb\x90\xd8\xb1\xd9\x86\xd9\x87 \xda\x9a\xd9\x8a\xd9\x8a \xda\x86\xdb\x90 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\xa7\xd9\x86 \xd9\xbe\xd9\x87 \xd8\xb2\xd9\x8a\xd8\xa7\xd8\xaa\xdb\x90\xd8\xaf\xd9\x88\xd9\x86\xda\xa9\xd9\x8a \xd8\xaa\xd9\x88\xda\xaf\xd9\x87 \xd8\xaf \xd8\xad\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\xd9\x88 \xd9\xbe\xd9\x87 \xd8\xa7\xda\x93\xd9\x87 \xd8\xa8\xd8\xaf\xd8\xa8\xd9\x8a\xd9\x86\xd9\x87 \xd8\xaf\xd9\x8a \xd8\xa7\xd9\x88 \xd8\xaf \xd8\xa8\xdb\x90 \xd8\xa8\xd8\xa7\xd9\x88\xd8\xb1\xd9\x8a \xd8\xa7\xd8\xad\xd8\xb3\xd8\xa7\xd8\xb3 \xda\xa9\xd9\x88\xd9\x8a\xd8\x8c \xd8\xae\xd9\x88 \xd8\xae\xd9\xbe\xd9\x84 \xd9\x87\xd9\x8a\xd9\x88\xd8\xa7\xd8\xaf \xd9\x8a\xd9\x88\xd9\x85\xd9\x88\xd9\xbc\xd9\x89 \xd8\xba\xd9\x88\xd8\xa7\xda\x93\xd9\x8a. -

      - - - - -

      Sindhi
      -فوج طرفان ڪيري لوگربل جي مخالفت سبب زرداري حڪومت کي خطرو ناهي:آمريڪا -
      -واشنگٽن (م ڊ) آمريڪا چيو آهي ته ڪيري لوگربل تي پاڪ فوج جي تحفظات سان پاڪستان ۾ جمهوري طور آيل زرداري جي حڪومت کي ڪوبه خطرو ناهي، ان سوال تي تي ڪيري لوگربل ۾ پاڪستان کي غير مشروط امداد ڏيڻ جي ڳالهه ڪئي وئي آهي، جڏهن ته فوجي امداد تي شرط لاڳو ڪيا -
      -٠.١.٢.٣.٤.٥.٦.٧.٨.٩ -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -

      - - - - -From http://titus.uni-frankfurt.de/unicode/alphabet/arabtest.htm -
      - -1. Arabic: -
      -ا ـا ـاـ اـ -
      -ب ـب ـبـ بـ -
      -ت ـت ـتـ تـ -
      -ج ـج ـجـ جـ -
      -ح ـح ـحـ حـ -
      -خ ـخ ـخـ خـ -
      -د ـد ـد د -
      -ذ ـذ ـذ ذ -
      -ر ـر ـر ر -
      -ز ـز ـز ز -
      -س ـس ـسـ سـ -
      -ش ـش ـشـ شـ -
      -ص ـص ـصـ صـ -
      -ض ـض ـضـ ضـ -
      -ط ـط ـطـ طـ -
      -ظ ـظ ـظـ ظـ -
      -ع ـع ـعـ عـ -
      -غ ـغ ـغـ غـ -
      -ف ـف ـفـ فـ -
      -ق ـق ـقـ قـ -
      -ك ـك ـكـ كـ -
      -ل ـل ـلـ لـ -
      -م ـم ـمـ مـ -
      -ن ـن ـنـ نـ -
      -ه ـه ـهـ هـ -
      -و ـو ـوـ وـ -
      -ي ـي ـيـ يـ -
      -
      - -2. Persian: -
      -Four extra letters: پ چ ژ گ -
      -ـپ ـپـ پـ -
      -ـچ ـچـ پچ -
      -ـژ ـژـ ژـ -
      -ـگ ـگـ گـ -
      -Original Arabic letter ك -modified Persian letter ک -
      -Original Arabic letter ي -modified Persian letter ى
      -
      -همهٔ افراد بشر آزاد به دنیا می‌آیند و از دید حیثیت و حقوق با هم برابرند، همه دارای اندیشه و وجدان هستند و باید در برابر یکدیگر با روح برادری رفتار کنند. -
      -
      - -3. Pashto: -
      -
      -ا ـا ـاـ اـ -ب ـب ـبـ بـ -پ ـپ ـپـ پـ -ت ـت ـتـ تـ -ټ ـټ ـټـ ټـ -ث ـث ـثـ ثـ -ج ـج ـجـ جـ -ځ ـځ ـځـ ځـ -چ ـچ ـچـ چـ -څ ـڅ ـڅـ څـ -ح ـح ـحـ حـ -خ ـخ ـخـ خـ - -د ـد ـدـ دـ -ډ ـډ ـډـ ډـ -ذ ـذ ـذـ ذـ -ر ـر ـرـ رـ -ړ ـړ ـړـ ړـ -ز ـز ـزـ زـ -ژ ـژ ـژـ ژـ -ږ ـږ ـږـ ږـ -س ـس ـسـ سـ -ش ـش ـشـ شـ -ښ ـښ ـښـ ښـ - -ص ـص ـصـ صـ -ض ـض ـضـ ضـ -ط ـط ـطـ طـ -ظ ـظ ـظـ ظـ -ع ـع ـعـ عـ -غ ـغ ـغـ غـ -ف ـف ـفـ فـ -ق ـق ـقـ قـ -ک ـک ـکـ کـ -ګ ـګ ـګـ ګـ -ل ـل ـلـ لـ -م ـم ـمـ مـ - -ن ـن ـنـ نـ -ڼ ـڼ ـڼـ ڼـ -ڼ ـڼ ـڼـ ڼـ -ؤ ـؤ ـؤـ ؤـ -ه ـه ـهـ هـ -ۀ ـۀ ـۀـ ۀـ -ی ـی ـیـ یـ -ي ـي ـيـ يـ -ې ـې ـېـ ېـ -ۍ ـۍ ـۍـ ۍـ -ئ ـئ ـئـ ئـ -
      -
      -
      - - -4. Urdu: -
      -
      -ا ـا ـاـ اـ -ب ـب ـبـ بـ -پ ـپ ـپـ پـ -ت ـت ـتـ تـ -ٹ ـٹ ـٹـ ٹـ -ث ـث ـثـ ثـ -ج ـج ـجـ جـ -ح ـح ـحـ حـ -خ ـخ ـخـ خـ -د ـد ـدـ دـ -ڈ ـڈ ـڈـ ڈـ -ذ ـذ ـذـ ذـ -ر ـر ـرـ رـ -ڑ ـڑ ـڑـ ڑـ -ژ ـژ ـژـ ژـ -س ـس ـسـ سـ -ش ـش ـشـ شـ -ص ـص ـصـ صـ -ض ـض ـضـ ضـ -ط ـط ـطـ طـ -ظ ـظ ـظـ ظـ -ع ـع ـعـ عـ -غ ـغ ـغـ غـ -ف ـف ـفـ فـ -ق ـق ـقـ قـ -ک ـک ـکـ کـ -گ ـگ ـگـ گـ -ل ـل ـلـ لـ -م ـم ـمـ مـ -ن ـن ـنـ نـ -و ـو ـوـ وـ -ہ ﮩ ﮨ -ھ ـھ ـھـ ھـ -ء ـء ـءـ ءـ -ی ـی ـیـ یـ -ے ـے ـےـ ےـ -
      -تمام انسان آزاد اور حقوق و عزت کے اعتبار سے برابر پیدا ہوۓ ہیں۔ انہیں ضمیر اور عقل ودیعت ہوئی ہی۔ اسلۓ انہیں ایک دوسرے کے ساتھ بھائی چارے کا سلوک کرنا چاہیۓ۔ -
      -
      -
      - - -5. Sindhi: -
      -
      - ڄ ـڄ ـڄـ ڄـ - ٺ ـٺ ـٺـ ٺـ - ٽ ـٽ ـٽـ ٽـ - ٿ ـٿ ـٿـ ٿـ - ڀ ـڀ ـڀـ ڀـ - ٻ ـٻ ـٻـ ٻـ - ڙ ـڙ ـڙـ ڙـ - ڍ ـڍ ـڍـ ڍـ - ڊ ـڊ ـڊـ ڊـ - ڏ ـڏ ـڏـ ڏـ - ڌ ـڌ ـڌـ ڌـ - ڇ ـڇ ـڇـ ڇـ - ڃ ـڃ ـڃـ ڃـ - ڦ ـڦ ـڦـ ڦـ - ڻ ـڻ ـڻـ ڻـ - ڱ ـڱ ـڱـ ڱـ - ڳ ـڳ ـڳـ ڳـ - ڪ ـڪ ـڪـ ڪـ -
      - -ج ھ ڄ ج پ ث ٺ ٽ ٿ ت ڀ ٻ ب ا -ڙ ر ذ ڍ ڊ ڏ ڌ د خ ح ڇ چ ڃ -ق ڦ ف غ ع ظ ط ض ص ش س ز ڙھ -ي ه و ڻ ن م ل ڱ گھ ڳ گ ک ڪ -
      -
      -
      - - - -

      Arabic

      -

      \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 - \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.

      - -

      \xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f

      - -

      \xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 "\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9" \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 "\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86\xd8\xaa\xd9\x87\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xaf\xd9\x8a\xd8\xaf\xd8\xa9" \xd9\x84\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab" \xd9\x88\xd8\xa7\xd8\xb5\xd9\x81\xd8\xa9 \xd8\xa7\xd9\x8a\xd8\xa7\xd9\x87 \xd8\xa8\xd9\x80"\xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81" \xd8\xa7\xd9\x84\xd8\xb0\xd9\x8a \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x87\xd8\xaf\xd9\x81 "\xd9\x85\xd8\xaf\xd9\x86\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x85\xd8\xb3\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd9\x86".

      - -

      \xd9\x88\xd8\xa7\xd8\xb6\xd8\xa7\xd9\x81\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd9\x87\xd8\xa7: "\xd9\x85\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xb3\xd9\x81 \xd8\xa7\xd9\x86 \xd9\x8a\xd8\xa3\xd8\xaa\xd9\x8a \xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab \xd8\xa8\xd9\x8a\xd9\x86\xd9\x85\xd8\xa7 \xd8\xaa\xd8\xa8\xd8\xb0\xd9\x84 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd9\x84\xd8\xaa\xd8\xae\xd8\xb7\xd9\x8a \xd8\xa7\xd9\x84\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa7\xd8\xae\xd9\x84\xd9\x8a\xd8\xa9".

      - -

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84 \xd8\xa7\xd8\xad\xd8\xaa\xd9\x88\xd8\xa7\xd8\xa1 \xd9\x85\xd8\xb8\xd8\xa7\xd9\x87\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd9\x85\xd8\xa8\xd8\xb1\xd8\xb1 \xd9\x84\xd9\x87\xd8\xa7 \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd8\xaa\xd9\x81\xd9\x8a\xd8\xaf \xd9\x85\xd8\xb5\xd8\xa7\xd9\x84\xd8\xad \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb9\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xb7\xd9\x88\xd9\x8a\xd9\x84".

      - -

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84

      - -

      \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 "\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84

      - - -

      \xd9\x83\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd9\x81\xd8\xa7\xd8\xb1\xd9\x88 \xd8\xaf\xd9\x8a \xd8\xb3\xd9\x88\xd8\xaa\xd9\x88 \xd9\x85\xd8\xa8\xd8\xb9\xd9\x88\xd8\xab \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x85 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xad\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb1\xd9\x82 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd8\xb3\xd8\xb7 \xd8\xa7\xd9\x84\xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa9 \xd9\x88\xd9\x82\xd8\xa7\xd9\x84 "\xd8\xa7\xd9\x86\xd9\x87 \xd9\x83\xd8\xa7\xd9\x86 \xd9\x87\xd8\xac\xd9\x88\xd9\x85\xd8\xa7 \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd8\xb4\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xb9\xd8\xa7\xd8\xaf\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x83\xd8\xa7\xd9\x86\xd9\x88\xd8\xa7 \xd9\x8a\xd9\x82\xd9\x88\xd9\x85\xd9\x88\xd9\x86 \xd8\xa8\xd9\x86\xd8\xb4\xd8\xa7\xd8\xb7\xd9\x87\xd9\x85 \xd8\xa7\xd9\x84\xd9\x8a\xd9\x88\xd9\x85\xd9\x8a \xd9\x88\xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x85\xd8\xb1 \xd9\x84\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd8\xaa\xd8\xa8\xd8\xb1\xd9\x8a\xd8\xb1\xd9\x87".

      - -

      Farsi / Persian (fa)

      -

      \xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.

      - -

      \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4\xd8\x8c \xd8\xaf\xd8\xb1 \xda\x86\xd9\x87\xd8\xa7\xd8\xb1\xd9\x85\xdb\x8c\xd9\x86 \xd8\xb3\xd8\xa7\xd9\x84\xda\xaf\xd8\xb1\xd8\xaf \xd8\xa7\xd8\xb4\xd8\xba\xd8\xa7\xd9\x84 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd9\x85\xdb\x8c \xda\xaf\xd9\x88\xdb\x8c\xd8\xaf \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xb1\xd8\xa7\xd8\xaa\xda\x98\xdb\x8c \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x82\xd8\xb1\xd8\xa7\xd8\xb1 \xd9\x86\xdb\x8c\xd8\xb1\xd9\x88\xd9\x87\xd8\xa7\xdb\x8c \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7\xdb\x8c\xdb\x8c \xd8\xa8\xdb\x8c\xd8\xb4\xd8\xaa\xd8\xb1\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xa8\xd8\xba\xd8\xaf\xd8\xa7\xd8\xaf\xd8\x8c \xd9\x85\xd8\xaf\xd8\xaa\xdb\x8c \xd8\xb7\xd9\x88\xd9\x84 \xd8\xae\xd9\x88\xd8\xa7\xd9\x87\xd8\xaf \xda\xa9\xd8\xb4\xdb\x8c\xd8\xaf.

      - -

      \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7 \xd9\x88\xdb\x8c\xd8\xb2\xd8\xa7\xdb\x8c \xd8\xb1\xd8\xa6\xdb\x8c\xd8\xb3 \xd8\xac\xd9\x85\xd9\x87\xd9\x88\xd8\xb1 \xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd9\x85\xd9\x86\xd8\xb8\xd9\x88\xd8\xb1 \xd8\xad\xd8\xb6\xd9\x88\xd8\xb1 \xd9\x88\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xac\xd9\x84\xd8\xb3\xd9\x87 \xd8\xb1\xd8\xa7\xdb\x8c \xda\xaf\xdb\x8c\xd8\xb1\xdb\x8c \xd8\xb4\xd9\x88\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xa7\xd9\x85\xd9\x86\xdb\x8c\xd8\xaa \xd8\xa8\xd8\xb1\xd8\xa7\xdb\x8c \xd9\x82\xd8\xb7\xd8\xb9\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd8\xb9\xd9\x84\xdb\x8c\xd9\x87 \xd8\xa7\xdb\x8c\xd9\x86 \xda\xa9\xd8\xb4\xd9\x88\xd8\xb1 \xd8\xb5\xd8\xa7\xd8\xaf\xd8\xb1 \xda\xa9\xd8\xb1\xd8\xaf.

      - - -

      Urdu

      -

      \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94

      - - -

      Pashto (ps)

      -

      \xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.

      - -"; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example32_indic.php b/inc/3rdparty/libraries/mpdf/examples/example32_indic.php deleted file mode 100644 index 9bfdee78c..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example32_indic.php +++ /dev/null @@ -1,219 +0,0 @@ - -body, p { font-size: 15pt;} -h3 { font-size: 15pt; margin-bottom:0; } - - -

      Indic Fonts and Languages

      - -

      -Malayalam -

      -

      സംസ്ഥാനത്ത് രാഷ്ട്രീയ പുകമറ സൃഷ്ടിക്കാനാണ് വോട്ടര്‍പട്ടിക വിവാദത്തിലൂടെ കോണ്‍ഗ്രസ് ശ്രമിക്കുന്നതെന്ന് സിപി‌എം സംസ്ഥാന സെക്രട്ടറി പിണറായി വിജയന്‍ കുറ്റപ്പെടുത്തി. ഉദ്യോഗസ്ഥരെ ഭീഷണിപ്പെടുത്തി വരുതിയില്‍ നിര്‍ത്താനാണ് വയലാര്‍ രവി ഉള്‍പ്പെടെയുള്ളവര്‍ ശ്രമിക്കുന്നതെന്നും പിണറാ‍യി പ്രസ്താവനയില്‍ ആരോപിച്ചു. -
      - -വയലാര്‍ രവിക്കെതിരെ ഇതിന് നടപടി സ്വീകരിക്കണമെന്നും പിണറായി ആവശ്യപ്പെട്ടു. അക്രമപ്രവര്‍ത്തനങ്ങളെ പ്രോത്സാഹിപ്പിക്കുന്നതാണ് രവിയുടെ വാക്കുകള്‍. അധികാരത്തിന്‍റെ മത്ത് തലയ്ക്ക് പിടിച്ചിരിക്കുന്നത് കൊണ്ടാണ് കോണ്‍ഗ്രസുകാര്‍ ഇങ്ങനെ പെരുമാറുന്നതെന്നും പിണറായി ചൂണ്ടിക്കാട്ടി. -
      - -സ്വതന്ത്രമായി നടക്കുന്ന കണ്ണൂരിലെ തെരഞ്ഞെടുപ്പിനെ അട്ടിമറിക്കാനാണ് യു‌ഡി‌എഫ് ശ്രമിക്കുന്നതെന്നും പിണറായി ആരോപിച്ചു. -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -൦൧൨൩൪൫൬൭൮൯ -

      - -

      Kannada

      -

      -ತಮ್ಮದೇ ಕುಟುಂಬದ ಯುವತಿಯೊಬ್ಬಳನ್ನು ಸತತ ಹಲವಾರು ವರ್ಷ ಭೋಗಿಸಿದ ಭಾರತೀಯ ಮೂಲದ ಮೂವರು ದುರುಳ ಸಂಬಂಧಿಕರು ಅಪರಾಧಿಗಳೆಂದು ಸಾಬೀತಾಗಿದ್ದು, ಇಂಗ್ಲೆಂಡ್ ನ್ಯಾಯಾಲಯವು ದೀರ್ಘಾವಧಿ ಕಠಿಣ ಶಿಕ್ಷೆ ವಿಧಿಸಿದೆ. -
      - -27ರ ಹರೆಯದ ಯುವತಿಯನ್ನು ಆಕೆಯ ಮಲತಂದೆ, ಮಲದೊಡ್ಡಪ್ಪ ಮತ್ತು ಭಾವ ಅತ್ಯಾಚಾರ ನಡೆಸಿದ್ದು ಕಾರ್ಡಿಫ್ ಕ್ರೌನ್ ನ್ಯಾಯಾಲಯದಲ್ಲಿ ರುಜುವಾತಾದ ಕಾರಣ ಶಿಕ್ಷೆ ಘೋಷಿಸಲಾಗಿದೆ. ಅಪರಾಧಿಗಳಲ್ಲಿ ಮಲತಂದೆ ಮತ್ತು ಮಲದೊಡ್ಡಪ್ಪ ಅಕ್ರಮ ವಲಸಿಗರಾಗಿದ್ದು, ಶಿಕ್ಷೆಯ ಅವಧಿ ಮುಗಿದ ನಂತರ ಅವರನ್ನು ಭಾರತಕ್ಕೆ ಗಡಿಪಾರು ಮಾಡಲಾಗುತ್ತದೆ. -
      - -55ರ ಹರೆಯದ ಮಲದೊಡ್ಡಪ್ಪ ಮತ್ತು 50ರ ಹರೆಯದ ಮಲತಂದೆಗೆ ಕ್ರಮವಾಗಿ 20 ಮತ್ತು 15 ವರ್ಷಗಳ ಕಾಲ ಜೈಲು ಶಿಕ್ಷೆ ವಿಧಿಸಲಾಗಿದೆ. 27ರ ಹರೆಯದ ಆಕೆಯ ಭಾವನಿಗೆ 12 ವರ್ಷಗಳ ದಂಡನೆ ನೀಡಲಾಗಿದೆ. -
      - -ಬಾಲಕಿಯನ್ನೇ ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದರು.. -ಯುವತಿಗೆ 14 ವರ್ಷವಿದ್ದಾಗ ಆಕೆಯ ಗರ್ಭಕ್ಕೆ ತಾನೇ ಕಾರಣವಾಗಿರುವುದನ್ನೂ ಮಲ ದೊಡ್ಡಪ್ಪ ವಿಚಾರಣೆ ಅವಧಿಯಲ್ಲಿ ಒಪ್ಪಿಕೊಂಡಿದ್ದಾನೆ. ಆತ ಏಳು ಬಾರಿ ಆಕೆಯನ್ನು ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದು, ಮೂರು ಬಾರಿ ಮಗುವಾಗಿದ್ದಾಗ ಅನುಚಿತ ವರ್ತನೆ ತೋರಿಸಿದ್ದ. ಅಲ್ಲದೆ ಹಲ್ಲೆ ಕೂಡ ನಡೆಸಿದ್ದ ಎಂದು ನ್ಯಾಯಾಲಯ ವಿವರಣೆ ನೀಡಿದೆ. -
      - -ಯುವತಿಗೆ ಆಕೆ ಬಾಲಕಿಯಾಗಿದ್ದಾಗಲೇ ಇವರು ಲೈಂಗಿಕ ಹಿಂಸೆ ನೀಡಲು ಆರಂಭಿಸಿದ್ದನ್ನು ನ್ಯಾಯಾಲಯ ಹೊರಗೆಳೆದಿತ್ತು. ಆಕೆ ಐದರ ಹರೆಯದ ಬಾಲಕಿಯಾಗಿದ್ದಾಗ ಮಲದೊಡ್ಡಪ್ಪ ಅತ್ಯಾಚಾರ ಮಾಡಿದ್ದ. 14ನೇ ವರ್ಷದಲ್ಲಿ ಆಕೆ ಗರ್ಭಿಣಿಯಾಗಿದ್ದಳು. ಆ ಸಂದರ್ಭದಲ್ಲಿ ಆಕೆಯನ್ನು ಕೂಡಿ ಹಾಕಿದ್ದ ಕಾರಣ ಮನೆಗೆ ಭೇಟಿ ನೀಡುವವರಿಗೆ ಯಾವುದೇ ವಿಚಾರಗಳು ತಿಳಿಯುತ್ತಿರಲಿಲ್ಲ. -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -೦೧೨೩೪೫೬೭೮೯ -

      - -

      Telegu

      -

      ఆగ్నేయ ఇరాన్‌లో ఆదివారం నాడు ఓ ఆత్మాహుతి దాడి జరగడంతో ఇరవై మంది మృతి చెందారు. -
      - -ఆగ్నేయ ఇరాన్‌లో ఆత్మాహుతి దాడి జరగడంతో ఐదుగురు ఎలిట్ రెవల్యూషనరీ గార్డ్‌లతో సహా ప్రముఖ కమాండర్‌లతోసహా మొత్తం ఇరవై మంది మృతి చెందినట్లు ఇరాన్ లోక్‌సభ స్పీకర్ అలీ లారిజానీ తెలిపారు. -
      - -ఆదివారం జరిగిన దాడుల్లో భద్రతాదళాలకు చెందిన కమాండర్ జనరల్ నూర్ అలీ శుశాత్రీ, మరో కమాండర్ రజబ్ అలీ మొహమ్మద్‌ జాదేహ్ తదితరులున్నారని, వీరితోపాటు పలువురు తీవ్రగాయాలపాలైనారని ఆయన చెప్పారు. -
      - -మృతి చెందిన కమాండర్లు పాకిస్థాన్‌ సరిహద్దుల్లోనున్న పిశిన్ ప్రాంతంలో ఓ సమావేశంలో పాల్గొనేందుకు కారులో బయలు దేరి వెళ్ళారని, ఆ సమయంలో ఆత్మాహుతి దళానికి చెందిన సభ్యుడు తనను తాను పేల్చేసుకోవడంతో ఈ దుర్ఘటన జరిగిందని ఆయన వివరించారు. -
      - -ఇదిలావుండగా ఇప్పటివరకు ఈ దాడులకు బాధ్యత వహిస్తూ ఏ సంస్థ ప్రకటించలేదు. కాని ఈ దుర్ఘటన వెనుక సున్నీ ఉగ్రవాద సంస్థ జుందల్లా హస్తం ఉండొచ్చని, ఈ సంస్థ ఆగ్నేయ ఇరాన్‌లో రెవల్యూషనరీ గార్డ్, షియాలపై దాడులు చేసేందుకు పూనుకునుంటుందని భద్రతా దళాలు అనుమానం వ్యక్తం చేసాయి. -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -౦౧౨౩౪౫౬౭౮౯ -

      - - - -

      Tamil (ta)

      -

      \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xae\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xa8\xe0\xae\xae\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d, \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\xb0\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xa3\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81 \xe0\xae\x92\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81.

      - -

      \xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88 \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb1\xe0\xae\xb5\xe0\xaf\x81 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xb0\xe0\xaf\x8b\xe0\xae\xb9\xe0\xae\xbf\xe0\xae\xa4 \xe0\xae\xaa\xe0\xaf\x8b\xe0\xae\x95\xe0\xaf\x8a\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb2\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xae \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d, \xe0\xae\x87\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\xaa\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb2\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb1\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb1\xe0\xaf\x88 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xa3\xe0\xae\xbe\xe0\xae\xaa\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x9c\xe0\xae\xbf \xe0\xae\x89\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f \xe0\xae\xae\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d \xe0\xae\x9a\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d \xe0\xae\xaa\xe0\xaf\x87\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xaf\x81 \xe0\xae\xa8\xe0\xae\x9f\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3\xe0\xae\xbe\xe0\xae\xb0\xe0\xaf\x8d.

      - -

      \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95 \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xb7\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xaf\x8a\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1 \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xae\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x8a\xe0\xae\xb4\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\xa8\xe0\xaf\x81\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x89\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f \xe0\xae\xaa\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb5\xe0\xaf\x87\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x89\xe0\xae\xa4\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88 \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x89\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3 \xe0\xae\xa4\xe0\xaf\x80\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xb5\xe0\xae\xbe\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x81 \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xb5\xe0\xae\xb4\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xa4\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbe\xe0\xae\xa9 \xe0\xae\x86\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\xb0\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81 \xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xa4\xe0\xaf\x88 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbe \xe0\xae\x95\xe0\xae\xb5\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81 \xe0\xae\x8e\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95 \xe0\xae\x85\xe0\xae\xb0\xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb1\xe0\xaf\x88\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xa3\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x86\xe0\xae\xaf\xe0\xae\xb2\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb2\xe0\xae\xb8\xe0\xaf\x8d \xe0\xae\xaa\xe0\xaf\x87\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xb8\xe0\xaf\x8d \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xbe\xe0\xae\xb0\xe0\xaf\x8d. -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -௦௧௨௩௪௫௬௭௮௯ -

      - - -

      Oriya

      -

      ଓଡ଼ିଆ ଉଇକିପେଡିଆ ଆପଣଙ୍କୁ ସ୍ବାଗତ କରୁଛି। ଏହି ଉନ୍ମୁକ୍ତ ଜ୍ଞାନକୋଷଟି ଇଣ୍ଟରନେଟ ଉପରେ ଆଧାରିତ ଏବଂ ଏହା ବିଶ୍ବର ୫୦ଟି ଭାଷାରେ ଉପଲବ୍ଧ । ଏହାକୁ ଆପଣ ମଧ୍ୟ ବର୍ଦ୍ଧିତ ଓ ପରିବର୍ତିତ କରିପାରିବେ ଏବଂ ଏହାକୁ ଉନ୍ନତ କରିବା ପାଇଁ ନିଜର ଅବଦାନ ଦେଇ ପାରିବେ । ଆପଣଙ୍କ ପସନ୍ଦର ବିଷୟ ଗୁଡିକୁ ଆପଣ ନୂତନ ଭାବେରେ ଯୋଗ କରିପାରିବେ କିମ୍ବା ଏହି ପୃଷ୍ଠାକୁ ସମ୍ପାଦନ କରି ଏହା ସହିତ ଯୋଗ କରିପାରିବ । ସମସ୍ତ ପାଠ ଗୁଡିକ GNU ମୁକ୍ତ ଦଲିଲକରଣ ଲାଇସେନ୍ସର ସର୍ତ୍ତ ଅଧୀନରେ ଉପଲବ୍ଧ । ତଥାପି, ଆପଣ ଏହାକୁ ମୁକ୍ତ ଭାବେର ଇଲେକ୍ଟ୍ରୋନିକ୍ସ ପ୍ରିଣ୍ଟ୍ କିମ୍ବା ଅନ୍ୟାନ୍ୟ ପ୍ରିଣ୍ଟର ମାଧ୍ୟମରେ ବ୍ୟବହାର କରିପାରିବ । -
      - -ଓଡ଼ିଆ ଉଇକିପେଡିଆରେ ଏ ପର୍ଯ୍ୟନ୍ତ ୫୫୩ଟି ପ୍ରସଙ୍ଗ ଯୋଗ କରାଯାଇଛି। -
      - -ଉଇକିପେଡିଆର ଓଡ଼ିଆ ସଂସ୍କରଣର କାର୍ଯ୍ୟ ପ୍ରଥମ ଥର ପାଇଁ ୨୦୦୪ ମସିହାରେ ପ୍ରାରମ୍ଭ ହୋଇଥିଲା ଏହା ଏବେ ମଧ୍ୟ ନିର୍ମାଣଧୀନ । ଆମେ ଏହା ଆଶା କରୁଛୁ ଯେ ବ୍ୟବାହାରକାରୀ ମାନେ ଏହାକୁ ସମୃଦ୍ଧ କରିପାରିବେ । ଓଡ଼ିଆ ଉଇକିପେଡିଆରେ ଆପଣ କିଛି ଯୋଗ କିମ୍ବା ସମ୍ପାଦନା କରିବା ପାଇଁ ଚାହିଁଲେ, ସର୍ବ ପ୍ରଥମେ ଆପଣଙ୍କ ନିକଟରେ ଗୋଟିଏ ୟୁନିକୋଡ୍ ଭିତ୍ତିକ ଓଡ଼ିଆ ଅନ୍ତରା ପୃଷ୍ଠ ଥିବା ଉଚିତ୍ । ଏହା ମୁକ୍ତ ସଙ୍କେତ ହୋଇଥିବାରୁ ଏହାକୁ ଆପଣ ଇଣ୍ଟରନେଟରୁ ମାଗଣାରେ ପାଇପାରିବେ । ଆପଣ ଇଂରାଜୀ ଉଇକିପେଡିଆକୁ ଅନୁବାଦ କରି କିମ୍ବା ନିକଟ ଅତୀତରେ ହୋଇଥିବା ଗୁରୁତ୍ଵପୂର୍ଣ୍ଣ ଘଟଣା ମାନଙ୍କୁ ଯୋଗ କରି, ଓଡ଼ିଆ ୱିକିପେଡିଆକୁ ସମୃଦ୍ଧ କରିପାରିବ । କୌଣସି ନୂତନ ପାଠ୍ୟ ଯୋଗ କରିବା ପୂର୍ବରୁ ଆପଣଙ୍କୁ ଏହା ଧ୍ୟାନ ରଖିବା ପାଇଁ ହେବ ଯେ, ଏହି ପୃଷ୍ଠାରେ ଅନ୍ୟ ବ୍ୟବାହାରକାରୀ ମାନଙ୍କ ପାଇଁ ସମ୍ପାଦନର ସୁଯୋଗ ରହିବା ଉଚିତ । କୌଣସି ବିଷୟବସ୍ତୁର ସ୍ବତଃ ସଂରକ୍ଷଣ ଉଇକିପେଡିଆର ନିୟମକୁ ଅବମାନନା କରିଥାଏ । ବ୍ୟବାହାରକାରୀ ମାନେ କେବଳ ତାଙ୍କର ନିଜ ଲେଖାକୁ ସମ୍ପାଦନ କରିପାରିବେ । ଉଇକିପେଡିଆର ନିୟମ, କର୍ମ ପଦ୍ଧତି ଏବଂ ଅନ୍ୟାନ୍ୟ ସୂଚନା ପାଇଁ Wikipedia:ଆଲୋଚନା ସଭା-- କୁ ଯାଇ ଆଲୋଚନା କରନ୍ତୁ। -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -୦୧୨୩୪୫୬୭୮୯ -

      - -

      Punjabi

      -

      ਕੇਂਦਰੀ ਗ੍ਰਹਿਮੰਤਰੀ ਪੀ.ਚਿਦੰਬਰਮ ਨੇ ਐਤਵਾਰ ਨੂੰ ਤਮਿਲਨਾਢੂ ਦੇ ਮੁੱਖਮੰਤਰੀ ਐਮ.ਕਰੁਣਾਨਿਧੀ ਨਾਲ ਮੁਲਾਕਾਤ ਕੀਤੀ।ਉਨ੍ਹਾ ਨੇ ਸ਼੍ਰੀਲੰਕਾ 'ਚ ਲਿੱਟੇ ਦੇ ਖਿਲਾਫ਼ ਯੁੱਧ ਦੌਰਾਨ ਉੱਝੜੇ ਹੋਏ ਲੱਗਭਗ ਢਾਈ ਲੱਖ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ 'ਤੇ ਚਰਚਾ ਕੀਤੀ। -
      - -ਦ੍ਰਮੁਕ ਨੇਤਾ ਦੇ ਨਾਲ ਸੰਖੇਪ ਮੁਲਾਕਾਤ ਬਾਅਦ ਚਿਦੰਬਰਮ ਨੇ ਕਿਹਾ ਹੈ ਕਿ ਕੇਂਦਰ ਤਮਿਲਾਂ ਦੀ ਮੁੜ ਰਿਹਾਇਸ਼ ਲਈ ਜਰੂਰਤ ਪੈਣ 'ਤੇ ਸ਼੍ਰੀਲੰਕਾ ਨੂੰ ਹੋਰ ਜ਼ਿਆਦਾ ਧਨ ਦੇਵੇਗਾ।ਅਸੀਂ ਪਹਿਲਾ ਹੀ 500 ਕਰੋੜ ਰੁੱਪਏ ਦੇ ਚੁੱਕੇ ਹਾਂ। -
      - -ਚਿਦੰਬਰਮ ਨੇ ਕਿਹਾ ਹੈ ਕਿ ਕਰੁਣਾਨਿਧੀ ਦੇ ਨਾਲ ਉਨ੍ਹਾ ਦੀ ਚਰਚਾ ਪਿੱਛਲੇ ਹਫ਼ਤੇ ਦਸ ਸਾਂਸਦਾਂ ਦੇ ਪ੍ਰਤਿਨਿਧੀਮੰਡਲ ਦੇ ਸ਼੍ਰੀਲੰਕਾ ਦੌਰੇ 'ਤੇ ਕੇਂਦਰਤ ਸੀ,ਜੋ ਜਾਤੀ ਤਮਿਲਾ ਨੂੰ ਮਿਲੀ ਅਤੇ ਉਨ੍ਹਾ ਦੀ ਦਸ਼ਾ ਬਾਰੇ ਜਾਣਿਆ। -
      - -ਉਨ੍ਹਾ ਨੇ ਕਿਹਾ ਕਿ ਸ਼੍ਰੀਲਕਾ ਦੇ ਤਮਿਲਾਂ ਨੂੰ ਉਨ੍ਹਾ ਦੇ ਮੂਲ ਸਥਾਨਾਂ 'ਤੇ ਬਸਾਉਣ ਦੇ ਤੌਰ ਤਰੀਕਿਆਂ 'ਤੇ ਚਰਚਾ ਹੋਈ ਅਤੇ ਸਾਂਸਦਾ ਦੀ ਟੀਮ ਨੂੰ ਦਿੱਤੇ ਭਰੋਸੇ ਬਾਅਦ ਕੋਲੰਬੋ ਦੁਆਰਾ ਪਿੱਛਲੇ ਹਫ਼ਤੇ ਮੁੜ ਰਿਹਾਇਸ਼ ਪ੍ਰਕ੍ਰਿਆ ਸ਼ੁਰੂ ਕੀਤੇ ਜਾਣ ਬਾਅਦ ਤੋਂ ਲੱਗਭਗ ਪੰਜ ਹਜ਼ਾਰ ਲੋਕਾਂ ਨੂੰ ਉਨ੍ਹਾ ਦੇ ਘਰਾਂ ਨੂੰ ਵਾਪਸ ਭੇਜਿਆ ਜਾ ਚੁੱਕਿਆ ਹੈ।ਚਿਦੰਬਰਮ ਨੇ ਕਿਹਾ ਹੈ ਕਿ ਹਾਲਾਂਕਿ ਪ੍ਰਕ੍ਰਿਆ ਧੀਮੀ ਹੈ,ਲੇਕਿਨ ਗਤੀ ਪਕੜ ਲਵੇਗੀ। -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -੦੧੨੩੪੫੬੭੮੯ - -

      - -

      Gujarati (gu)

      -

      Examples at: http://in.gujarati.yahoo.com/

      -

      http://gujarati.webdunia.com/entertainment/bollywood/filmreview/0910/17/1091017017_1.htm

      -

      -આ વાત હજાર વાર કહેવામાં આવી છે કે ફિલ્મ બનાવતી વખેત હંમેશા સૌથી વધુ ધ્યાન વાર્તા અને સ્ક્રીનપ્લે પર આપવુ જોઈએ. કારણ કે આ કોઈ પણ ફિલ્મની સફળતાનો મુખ્ય આધાર હોય છે. -
      -મોટા ફિલ્મ સ્ટાર્સ સાઈન કરવાથી, સ્ટંટ અને ગીતોથી પાણીની અંદર કે આકાશમાં કરોડો રૂપિયા ખર્ચ કરી ફિલ્માવેલા દ્રશ્યોથી કશુ જ નથી થતુ. પરંતુ આ બુનિયાદી વાત અત્યાર સુધી કોઈ લોકોને સમજાતી નથી. -
      - -કરોડો રૂપિયાના ખર્ચ પર બનાવેલ 'બ્લૂ' આનુ તાજુ ઉદાહરણ છે. પૈસા એના પર ખર્ચ કરવામાં આવે જ્યા બચાવી શકાતો હતો અને ત્યાં બચાવ્યો જ્યા ખર્ચ કરવો જોઈતો હતો. એક સારી વાર્તા તેની સાથે સંકળાયેલા નિર્માતા-નિર્દેશક ન શોધી શક્યા. -
      - -વર્ષો પહેલા ખજાનાથી લદાયેલુ એક જહાજ ડૂબી ગયુ હતુ. આરવ (અક્ષય કુમાર)તેને શોધીને શ્રીમંત બનવા માંગે છે. આ કામમાં તેને સાગર (સંજય દત્ત)ની મદદ જોઈએ, જે તેને માતે કામ કરે છે. સાગર એ માટે તૈયાર નથી. બાળપણમાં સાગર અને તેના પિતાએ એ ડૂબેલા જહાજને શોધી લીધુ હતુ, પરંતુ સાગરની ભૂલથી તેના પિતાનુ મૃત્યુ થઈ ગયુ હતુ. સાગર એ આધાતથી બહાર ન આવી શક્યો. સાગરનો એક ભાઈ સૈમ(જાયદ ખાન) છે, જેને રિસ્ક લેવાનો નશો છે. ગેરકાયદેસર કામ દરમિયાન એ ફંસાય જાય છે અને કેટલાક લોકો તેના જીવના દુશ્મન બની જાય છે. તેઓ તેની પાસે પૈસા માંગે છે. પોતાના ભાઈને મુસીબતમાં જોઈએ આરવની વાત સાગર માની લે છે અને તે એ છુપા ખજાનાને શોધવા નીકળે છે. છેવટે એ રહસ્ય બહાર પડે છે કે સૈમને ફસાવવા પાછળ આરવનો જ હાથ હતો, જેથી સાગર ખજાનાની શોધ કાઢવામાં તેની મદદ કરે. -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -૦૧૨૩૪૫૬૭૮૯ -

      - - -

      Hindi (hi)

      -

      \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa5\x80\xe0\xa4\x9a \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa3 \xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa5\x88\xe0\xa4\x9a \xe0\xa4\xa6\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa1 414 \xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xb0\xe0\xa4\x96\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x87\xe0\xa4\x9f \xe0\xa4\x96\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\xb9\xe0\xa5\x88\xe0\xa4\x82.

      - -

      \xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\xb8\xe0\xa5\x81\xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa5\x80\xe0\xa4\xae \xe0\xa4\x95\xe0\xa5\x8b\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x9f \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xae\xe0\xa5\x81\xe0\xa4\x96\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xa7\xe0\xa5\x80\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\x82\xe0\xa4\xac\xe0\xa4\xbf\xe0\xa4\xa4 \xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa7 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\x88 \xe0\xa4\x9c\xe0\xa4\x9c\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x85\xe0\xa4\xaa\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xaa\xe0\xa4\xa6 \xe0\xa4\xb8\xe0\xa5\x87 \xe0\xa4\x87\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa5\x80\xe0\xa4\xab\xe0\xa4\xbc\xe0\xa4\xbe \xe0\xa4\xa6\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88.

      - -

      \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\x98\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xb2 \xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xa4 \xe0\xa4\xae\xe0\xa4\xa7\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb0\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\xbf \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa1\xe0\xa4\xbc \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa7\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb2 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x82\xe0\xa4\xa4\xe0\xa4\xbf \xe0\xa4\x96\xe0\xa4\xa1\xe0\xa4\xbc\xe0\xa4\xbe \xe0\xa4\xa5\xe0\xa4\xbe\xe0\xa5\xa4 \xe0\xa4\x89\xe0\xa4\xb8 \xe0\xa4\xaa\xe0\xa4\xb0 \xe0\xa4\x89\xe0\xa4\x97\xe0\xa5\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\x8f \xe0\xa4\x9b\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa5\x87-\xe0\xa4\x9b\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa5\x87 \xe0\xa4\xb5\xe0\xa5\x83\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7 \xe0\xa4\x87\xe0\xa4\xb8 \xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\xa6\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa4\xbf\xe0\xa4\x97\xe0\xa5\x8b\xe0\xa4\x9a\xe0\xa4\xb0 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xa4\xe0\xa5\x87 \xe0\xa4\xa5\xe0\xa5\x87, \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa5\x8b \xe0\xa4\xaf\xe0\xa5\x87 \xe0\xa4\x89\xe0\xa4\xb8\xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\x9c\xe0\xa4\x9f\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82 \xe0\xa4\xb9\xe0\xa5\x88 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\x85\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa4\xad\xe0\xa5\x81\xe0\xa4\x9c\xe0\xa4\xbe \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb0 \xe0\xa4\x9c\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xb2\xe0\xa4\xb6 \xe0\xa4\xaa\xe0\xa4\xb0 \xe0\xa4\xb6\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa5\x87\xe0\xa4\xa4 \xe0\xa4\xaa\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82 \xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xaf\xe0\xa5\x81 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6-\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6 \xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\x82\xe0\xa4\x97\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\xb2\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x80 \xe0\xa4\xa5\xe0\xa5\x80\xe0\xa4\x82, \xe0\xa4\x89\xe0\xa4\xb8 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\x95 \xe0\xa4\xb9\xe0\xa5\x88 \xe0\xa4\xae\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb0 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x8f\xe0\xa4\x95 \xe0\xa4\x9d\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\xae\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\x86 \xe0\xa4\xa6\xe0\xa5\x80\xe0\xa4\xaa\xe0\xa4\x95 \xe0\xa4\xa5\xe0\xa4\xbe, \xe0\xa4\x9c\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\x95\xe0\xa4\xb0 \xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x80 \xe0\xa4\xa7\xe0\xa5\x81\xe0\xa4\x82\xe0\xa4\xa7\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa4\xbe \xe0\xa4\xa5\xe0\xa4\xbe\xe0\xa5\xa4 -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      -०१२३४५६७८९ -

      - -

      Nepali (ne) - Devanagari

      -

      \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa2\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa5\x88 \xe0\xa4\x86\xe0\xa4\x89\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa5\x87\xe0\xa4\xa0 \xe0\xa4\xae\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xad\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb9\xe0\xa4\xb8 \xe0\xa4\x9a\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x95\xe0\xa5\x80\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5\xe0\xa4\x95\xe0\xa5\x88 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb7\xe0\xa4\xaf\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8 \xe0\xa4\x86\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x97 \xe0\xa4\xb0 \xe0\xa4\x86\xe0\xa4\xa0 \xe0\xa4\xa6\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa4\xbe, \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa5\x88 \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9b\xe0\xa5\xa4

      - -

      \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x97\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xaa\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\x93\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa6\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x88 \xe0\xa4\xb8\xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x9f\xe0\xa5\x87\xe0\xa4\xb0 \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa4\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x80 \xe0\xa4\xad\xe0\xa5\x88\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa4\x81\xe0\xa4\xa6\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\x93\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa6\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\x95\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa5\x82\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\x8f\xe0\xa4\x95\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa4\xb2 \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xb2\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa4\xbf \xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x85\xe0\xa4\xad\xe0\xa4\xa6\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb5\xe0\xa4\xb9\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa7\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x80\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb6\xe0\xa5\x8d\xe0\xa4\x9a\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb2\xe0\xa4\xbf\xe0\xa4\xa8 \xe0\xa4\xb9\xe0\xa4\xa1\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb2 \xe0\xa4\x86\xe0\xa4\xb9\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\x9b\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa5\xa4

      - -

      Bengali (bn)

      -

      -দক্ষিণ ওয়াজিরিস্থানে কর্মরত স্বেচ্ছাসেবী ও ত্রাণ সংস্থাগুলো ধারণা করছে সেনা অভিযানের তীব্রতা বাড়লে এই সংখ্যাটা আরও অনেক বেড়ে যাবে -
      -শরণার্থীদের স্রোত সামলাতে তারা ইতিমধ্যেই হিমশিম খাচ্ছেন, ফলে লড়াই থেকে পালিয়ে আসা বেসামরিক মানুষজনের সংখ্যা আরও বাড়লে স্বভাবতই সঙ্কট আরও জটিল হয়ে উঠবে -
      -দক্ষিণ ওয়াজিরিস্তান থেকে পাওয়া খবরে বলা হচ্ছে সেনাবাহিনী সেখানে তিনদিক থেকে আক্রমণ চালাচ্ছে এবং ওই অঞ্চলে প্রবেশ করা আর বেরোনোর পথ তারাই নিয়ন্ত্রণ করছে - আর তালেবানের ঘাঁটিগুলোর ওপর হামলা চালানো হচ্ছে আকাশপথে এবং অর্টিলারি বাহিনীর সাহায্যে -
      -তালেবান জঙ্গীরা ইতিমধ্যেই হুঁশিয়ারি দিয়েছে এক ইঞ্চি জমিও তারা বিনা যুদ্ধে ছেড়ে দেবে না - আর ইসলামাবাদ থেকে বিবিসির ওরলা গুয়েরিন বলছেন তারা সে-কথা অক্ষরে অক্ষরে পালন করছে -
      -!\"#$%&'()*+,-./0123456789:;<=>?
      -@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
      -`abcdefghijklmnopqrstuvwxyz{|}~ -
      ০১২৩৪৫৬৭৮৯ -

      - - -

      Assamese

      -

      অসমীয়া ৱিকিপিডিয়াৰ উদ্দেশ্য হ'ল সম্পূৰ্ণ অসমীয়া ভাষাত এখনি বিশ্বকোষ প্ৰণয়ন কৰা। অন্য কোনো ভাষাৰ প্ৰবন্ধ এই বিশ্বকোষৰ বাবে গ্ৰহন কৰা নহ'ব। বিশ্বকোষৰ অৱদানকাৰীসকললৈ সাদৰেৰে অনুৰোধ জনোৱা হ'ল যাতে তেখেতসকলে অসমীয়া ভাষাৰ প্ৰচলিত বানান পদ্ধতি মানি চলে। বিদেশী শব্দৰ অসমীয়া প্ৰতিৰূপৰ ক্ষেত্ৰত যিহেতু অসমীয়া সাহিত্যিকসকল এতিয়াও ঐক্যমতত উপনীত হ'ব পৰা নাই, ৱিকিপিডিয়াত বিদেশী শব্দৰ যিকোনো ধৰনৰ অসমীয়া ৰূপ গ্ৰাহ্য কৰা হ'ব। -
      - -গণবিশ্বকোষৰ সফলতাৰ নেপথ্যৰ আটাইতকৈ শক্তিশালী ধাৰণাটো হৈছে সহযোগিতামূলক সংকলন, যি মানৱ জাতিৰ সাফল্যৰ মূল চাবিকাঠি পাৰস্পৰিক সহযোগিতাক আৰু এখোপ ওপৰলৈ উঠাই নিছে| এই গণবিশ্বকোষবিলাকৰ বিভিন্ন নিবন্ধৰ লেখকসকল সম্পূৰ্ণ অপেচাদাৰী ইন্টাৰনেট ব্যৱহাৰকৰোঁতা। এই লেখকসকলে নিজৰ নিজৰ ৰাপ বা পাৰদৰ্শীতা থকা বিষয় সম্পৰ্কে বিভিন্ন নিবন্ধ লিখি আন পাঠকক উপকৃত কৰে আৰু নিজেও উপকৃত হয়। -
      - -অসমীয়া গণবিশ্বকোষ (যাৰ মুখ্য পৃষ্ঠাটো বৰ্তমান আপুনি পঢ়ি আছে) হৈছে এখন অসমীয়া বিশ্বকোষ প্ৰস্তুত কৰাৰ এক অভূতপূৰ্ব তথা অভিনৱ প্ৰয়াস, যাক যিকোনো পাঠকে পৃথিৱীৰ যিকোনো ঠাইৰ পৰা ইন্টাৰনেটৰ জৰিয়তে বিনামূল্যে ব্যৱহাৰ কৰিব পাৰিব। এই প্ৰকল্প আচলতে \"ৱিকিপেডিয়া\" নামৰ এক বৃহত্তৰ প্ৰকল্পৰ অংশ| পৃথিবীৰ বিভিন্ন ভাষাত সকলোৱে বিনামূল্যে ব্যৱহাৰ তথা সম্পাদনা কৰিব পৰা বিশ্বকোষ প্ৰস্তুত কৰাৰ উদ্দেশ্যেৰে ৱিকিপিডিয়া নামৰ ইন্টাৰনেট-পৃষ্ঠাত ২০০১ চনত আৰম্ভ কৰা মুখ্য প্ৰকল্পৰ অধীনত বৰ্ত্তমান প্ৰায় শতাধিক ভাষাৰ যোগদানেৰে সম্বৃদ্ধ হোৱা এইলানি গণবিশ্বকোষে আজি প্ৰায় পাঁচলাখতকৈও অধিক প্ৰবন্ধৰে পৃথিৱীৰ বিভিন্ন প্ৰান্তৰ পাঠকক ইন্টাৰনেটৰ জৰিয়তে বিশ্বকোষ সেৱা আগবঢ়াইছে। -

      - - -"; - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('-s','A4','','',32,25,27,25,16,13); - -$mpdf->SetDisplayMode('fullpage'); - -//$mpdf->useSubstitutionsMB = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php b/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php deleted file mode 100644 index 02337f8b7..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php +++ /dev/null @@ -1,59 +0,0 @@ -mPDF -

      Watermarks

      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -
      - -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      - -
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      - -
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      - -'; - - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetWatermarkText('DRAFT'); -$mpdf->watermark_font = 'DejaVuSansCondensed'; -$mpdf->showWatermarkText = true; - - -$mpdf->WriteHTML($html); -$mpdf->AddPage(); - -$mpdf->SetWatermarkImage('tiger.wmf', 1, '', array(160,10)); -$mpdf->showWatermarkImage = true; - -$mpdf->WriteHTML('

      Using a Watermark as a Header

      '); -$mpdf->WriteHTML($html); -$mpdf->AddPage(); - -$mpdf->SetWatermarkImage('tiger.wmf', 0.15, 'F'); - -$mpdf->WriteHTML('

      Using a Watermark Image as Background

      '); -$mpdf->WriteHTML($html); - - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php b/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php deleted file mode 100644 index 63e8c5d21..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php +++ /dev/null @@ -1,36 +0,0 @@ -mPDF -

      Annotations

      -
      Heading 5
      -
      Heading 6
      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('c'); - -$mpdf->title2annots = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php b/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php deleted file mode 100644 index 34ec8829e..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - - -

      mPDF

      -

      Barcodes

      -

      NB Quiet zones - The barcode object includes space to the right/left or top/bottom only when the specification states a \'quiet zone\' or \'light margin\'. All the examples below also have CSS property set on the barcode object i.e. padding: 1.5mm;

      - -

      EAN-13 Barcodes (EAN-2 and EAN-5)

      -

      NB EAN-13, UPC-A, UPC-E, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      -

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      EAN13Standard EAN-13 barcode. Accepts 12 or 13 characters (creating checksum digit if required). [0-9] numeric only.
      ISBNStandard EAN-13 barcode with \'ISBN\' number shown above [shown at height="0.66"]
      ISSNStandard EAN-13 barcode with \'ISSN\' number shown above [shown at size="0.8"]
      - -

      EAN-8, UPC-A and UPC-E Barcodes

      -

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      -

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      UPCAUPC-A barcode. This is a subset of the EAN-13. (098277211236) Accepts 11 or 12 characters (creating checksum digit if required). [0-9] numeric only
      UPCEUPC-E barcode. Requires the UPC-A code to be entered as above (e.g. 042100005264 to give 425261). NB mPDF will die with an error message if the code is not valid, as only some UPC-A codes can be converted into valid UPC-E codes. UPC-E doesn\'t have a check digit encoded explicity, rather the check digit is encoded in the parity of the other six characters. The check digit that is encoded is the check digit from the original UPC-A barcode.
      EAN8EAN-8. Accepts 7 or 8 characters (creating checksum digit if required). [0-9] numeric only
      - -

      EAN-2 and EAN-5 supplements, and combined forms

      -

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      EAN2EAN-2 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Used to denote an issue of a periodical. EAN-2 supplement accepts 2 digits [0-9] only, EAN-5 five.
      EAN5EAN-5 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Usually used in conjunction with EAN-13 for the price of books. 90000 is the code for no price.
      EAN13P2Standard EAN-13 barcode with 2-digit UPC supplement (07)
      ISBNP2Standard EAN-13 barcode with \'ISBN\' number shown above, and 2-digit EAN-2 supplement
      ISSNP2Standard EAN-13 barcode with \'ISSN\' number shown above, and 2-digit EAN-2 supplement
      UPCAP2UPC-A barcode with 2-digit EAN-2 supplement. This is a subset of the EAN-13.
      UPCEP2UPC-E barcode with 2-digit EAN-2 supplement.
      EAN8P2EAN-8 barcode with 2-digit EAN-2 supplement
      EAN13P5Standard EAN-13 barcode with 5-digit UPC supplement (90000)
      ISBNP5Standard EAN-13 barcode with \'ISBN\' number shown above, and 5-digit EAN-5 supplement
      ISSNP5Standard EAN-13 barcode with \'ISSN\' number shown above, and 5-digit EAN-5 supplement
      UPCAP5UPC-A barcode with 5-digit EAN-5 supplement. This is a subset of the EAN-13
      UPCEP5UPC-E barcode with 5-digit EAN-5 supplement. (042100005264 90000)
      EAN8P5EAN-8 barcode with 5-digit EAN-5 supplement (55123457 90000)
      - -

      Postcode Barcodes

      -

      These all have sizes fixed by their specification. Although they can be altered using \'size\' it is not recommended. \'height\' is ignored.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      IMBIntelligent Mail Barcode - also known as: USPS OneCode 4-State Customer Barcode, OneCode 4CB, USPS 4CB, 4-CB, 4-State Customer Barcode, USPS OneCode Solution Barcode. (01234567094987654321-01234567891) Accepts: Up to 31 digits (required 20-digit Tracking Code, and up to 11-digit Routing Code; this may be 0, 5, 9, or 11 digits). If the Routing code is included, it should be spearated by a hyphen - like this example.
      RM4SCCRoyal Mail 4-state Customer barcode (SN34RD1A). Accepts: max. 9 characters. Valid characters: [A-Z,0-9] Checksum digit: automatic.
      KIXDutch KIX version of Royal Mail 4-state Customer barcode (SN34RD1A). Valid characters: [A-Z,0-9]. Checksum digit: automatic.
      POSTNETPOSTNET barcode. Accepts 5, 9 or 11 digits. Valid characters: [0-9]. Checksum digit: automatic.
      PLANETPLANET barcode. Accepts 11 or 13 digits. Valid characters: [0-9]. Checksum digit: automatic.
      - - -

      Variable width Barcodes

      -

      These barcodes are all of variable length depending on the code entered. There is no recommended maximum size for any of these specs, but all recommend a minimum X-dimension (width of narrowest bar) as 7.5mil (=0.19mm). The default used here is twice the minimum i.e. X-dim = 0.38mm.

      -

      The specifications give a minimum height of 15% of the barcode length (which can be variable). The bar height in mPDF is set to a default value of 10mm.

      -

      \'size\' will scale the barcode in both dimensions. mPDF will accept any number, but bear in mind that size="0.5" will set the bar width to the minimum. The \'height\' attribute further allows scaling - this factor is applied to already scaled barcode. Thus size="2" height="0.5" will give a barcode twice the default width (X-dim=0.76mm) and at the default height set in mPDF i.e. 10mm.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      C128ACODE 128 A. Valid characters: [A-Z uppercase and control chars ASCII 0-31]. Checksum digit: automatic.
      C128BCODE 128 B. Valid characters: [Upper / Lower Case + All ASCII Printable Characters]. Checksum digit: automatic.
      C128CCODE 128 C. Valid characters: [0-9]. Must be an even number of digits. Checksum digit: automatic.
      EAN128C [A/B/C]EAN128 (A, B, and C). Specified variant of Code 128, utilising an FNC1 start code. Also known as UCC/EAN-128 or GS1-128. Valid characters: [cf. Code 128]. Checksum digit: automatic.
      C39CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. Valid characters: [0-9 A-Z \'-\' . Space $/+%]
      C39+CODE 39 + CHECKSUM. Checksum digit: automatic.
      C39ECODE 39 EXTENDED. Valid characters: [ASCII-characters between 0..127]
      C39E+CODE 39 EXTENDED + CHECKSUM. Checksum digit: automatic.
      S25Standard 2 of 5. Valid characters: [0-9]
      S25+Standard 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25Interleaved 2 of 5. Valid characters: [0-9]
      I25+Interleaved 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25BInterleaved 2 of 5 with bearer bars. Valid characters: [0-9]
      I25B+Interleaved 2 of 5 + CHECKSUM with bearer bars. Valid characters: [0-9]. Checksum digit: automatic.
      C93CODE 93 - USS-93 (extended). Valid characters: [ASCII-characters between 0..127]. Checksum digits: automatic.
      MSIMSI. Modified Plessey. Valid characters: [0-9]
      MSI+MSI + CHECKSUM (module 11). Checksum digit: automatic.
      CODABARCODABAR. Valid characters: [0-9 \'-\' $:/.+ ABCD] ABCD are used as stop and start characters e.g. A34698735B
      CODE11CODE 11. Valid characters: [0-9 and \'-\']. Checksum digits: 1 (or 2 if length of code is > 10 characters) - automatic.
      - - - - -
      - -
      -
      Useful links
      -

      http://www.adams1.com

      -

      http://www.tec-it.com/Download/PDF/Barcode_Reference_EN.pdf

      -

      http://www.tec-it.com/en/support/knowbase/symbologies/barcode-overview/linear/Default.aspx

      -

      http://www.gs1uk.org/downloads/bar_code/Bar%20coding%20getting%20it%20right.pdf

      -

      http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm (EAN2 and EAN5)

      -

      http://www.barcodeisland.com/ean13.phtml (UPC-A)

      -

      http://www.idautomation.com/fonts/postnet/#Specifications

      -

      http://www.outputlinks.com/sites/AFP/ibm_bcocafaq.pdf

      -

      https://ribbs.usps.gov/intelligentmail_mailpieces/documents/tech_guides/USPSIMB_Tech_Resource_Guide.pdf (Intelligent Mail)

      -

      http://www.mailsorttechnical.com/downloads_mailsort_user_guide.cfm

      - -

      http://www.mailsorttechnical.com/docs/mug_jun_2009/MUG_10_2008_Mailsort_700.pdf page 20

      - - -
      - - -
      -

      Human-readable text

      -Human-readable text is only produced as part of the barcode object in EAN-13, ISBN, ISSN, EAN-8, UPC-A and UPC-E. Here is an example to add text to a barcode: -
      - -
      - -<div style="position:fixed; right: 50mm; top: 60mm; border: 0.2mm solid #000000; text-align: center; padding: 0.5mm; padding-top: 2mm;">
      -<barcode code="00034698735346987355" type="EAN128C" /><br />
      -<div style="font-family: ocrb;">(00) 0346987 35346987 355</div>
      -</div> - -
      - -
      -
      -
      (00) 0346987 35346987 355
      -
      - - - -'; -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('','','','',20,15,25,25,10,10); -$mpdf->WriteHTML($html); -$mpdf->Output(); - -exit; - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php b/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php deleted file mode 100644 index 7342cc828..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php +++ /dev/null @@ -1,43 +0,0 @@ - -dottab.menu { - outdent: 4em; -} -p.menu { - text-align: left; - padding-right: 4em; -} - - -

      Menu

      - -
      - - - - - - - - - -
      -'; - - -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php b/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php deleted file mode 100644 index f43b0231c..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php +++ /dev/null @@ -1,31 +0,0 @@ -mPDF -

      PDFA Compliance

      -

      PDF/A1-b is a file format for the long-term archiving of electronic documents. This is an example of a PDF/A1-b compliant files.

      -'; -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->PDFA = true; -$mpdf->PDFAauto = true; -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php b/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php deleted file mode 100644 index 709ea8d13..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php +++ /dev/null @@ -1,20 +0,0 @@ -SetImportUse(); - -$mpdf->Thumbnail('sample_orientation2.pdf', 4, 5); // number per row // spacing in mm - -$mpdf->WriteHTML('
      Now with rotated pages
      '); - -$mpdf->Thumbnail('sample_orientation3.pdf', 4); // number per row // spacing in mm - - -$mpdf->Output(); - -exit; - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php b/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php deleted file mode 100644 index 12f592db8..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php +++ /dev/null @@ -1,36 +0,0 @@ -SetImportUse(); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetCompression(false); - -// Add First page -$pagecount = $mpdf->SetSourceFile('sample_basic.pdf'); - -$crop_x = 50; -$crop_y = 50; -$crop_w = 100; -$crop_h = 100; - -$tplIdx = $mpdf->ImportPage(2, $crop_x, $crop_y, $crop_w, $crop_h); - -$x = 50; -$y = 50; -$w = 100; -$h = 100; - -$mpdf->UseTemplate($tplIdx, $x, $y, $w, $h); - -$mpdf->Rect($x, $y, $w, $h); - -$mpdf->Output('newpdf.pdf', 'I'); - -exit; - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php b/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php deleted file mode 100644 index 2b670ca39..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php +++ /dev/null @@ -1,35 +0,0 @@ -SetImportUse(); - -$mpdf->SetDocTemplate('sample_logoheader2.pdf',1); // 1|0 to continue after end of document or not - used on matching page numbers - -//=================================================== -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -//=================================================== - -$mpdf->RestartDocTemplate(); - -//=================================================== -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -$mpdf->AddPage(); -$mpdf->WriteHTML('Hallo World'); -//=================================================== - - -$mpdf->Output(); - -exit; - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php b/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php deleted file mode 100644 index 8144a3a02..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - -

      mPDF Example Booklet

      -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - -

      Little Women - Chapter One - Playing Pilgrims

      - -

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      - -

      Little Women - Chapter One - Playing Pilgrims

      - -

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      - -'; - -//============================================================== -//============================================================== -//============================================================== - - -include("../mpdf.php"); - -$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->useOnlyCoreFonts = true; -$mpdf->defaultfooterfontsize = 13; -$mpdf->AddPage(); -$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture -$mpdf->y = 70; -$mpdf->Shaded_box('mPDF Example File', 'Arial', '', 28, '70%', 'DF', 3, '#FFFFFF', '#000044', 10); - -$mpdf->AddPage(); -$mpdf->SetFooter('{PAGENO}'); -$mpdf->WriteHTML($html); - - -$mpdf->AddPage('','NEXT-EVEN'); -$mpdf->SetFooter(); -$mpdf->SetAlpha(0.5); -$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture -$mpdf->SetAlpha(1); - -$mpdf->writeBarcode('978-0-9542246-0-8', 1, 130, 230, 1,0, 3,3,4,4); - -// Save the pages to a file -$mpdf->Output('test.pdf','F'); -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -function GetBookletPages($np, $backcover=true) { - $lastpage = $np; - $np = 4*ceil($np/4); - $pp = array(); - for ($i=1; $i<=$np/2; $i++) { - $p1 = $np - $i + 1; - if ($backcover) { - if ($i == 1) { $p1 = $lastpage; } - else if ($p1 >= $lastpage) { $p1 = 0; } - } - if ($i % 2 == 1) { - $pp[] = array( $p1, $i ); - } - else { - $pp[] = array( $i, $p1 ); - } - } - return $pp; -} - - - -$mpdf=new mPDF('','A4-L','','',0,0,0,0,0,0); -$mpdf->SetImportUse(); -$ow = $mpdf->h; -$oh = $mpdf->w; -$pw = $mpdf->w / 2; -$ph = $mpdf->h; - -$mpdf->SetDisplayMode('fullpage'); - -$pagecount = $mpdf->SetSourceFile('test.pdf'); -$pp = GetBookletPages($pagecount); - -foreach($pp AS $v) { - $mpdf->AddPage(); - if ($v[0]>0 && $v[0]<=$pagecount) { - $tplIdx = $mpdf->ImportPage($v[0], 0,0,$ow,$oh); - $mpdf->UseTemplate($tplIdx, 0, 0, $pw, $ph); - } - if ($v[1]>0 && $v[1]<=$pagecount) { - $tplIdx = $mpdf->ImportPage($v[1], 0,0,$ow,$oh); - $mpdf->UseTemplate($tplIdx, $pw, 0, $pw, $ph); - } -} - -$mpdf->Output(); - -exit; - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php b/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php deleted file mode 100644 index 2420b9f36..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php +++ /dev/null @@ -1,150 +0,0 @@ - -div { text-align: justify; } - -

      Joanne Smith 2002-2007

      This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, risus at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      -'; - -$html2 = ' - -

      Tim Another 2001-2007

      This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, risus at eleifend lacus sapien et risus. Phasellus metus, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      -Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      -'; - -for($i=1; $i<=10; $i++) { - // $html = $html; - if ($i % 3 == 1) { $html = $html2; } - else { $html = $html1; } - $pph[$i] = SinglePage($html, $pw, $ph, $minK) ; // $pph saves the actual height of each page -} -//============================================================== -// Save the pages to a file -$mpdf->Output('test.pdf','F'); - -// Now collate those pages using IMPORT - 4 pages to one page - -$mpdf=new mPDF(); -$mpdf->SetImportUse(); -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->SetHeader('{DATE j-m-Y}|My Yearbook 2005|{PAGENO}'); -$mpdf->SetFooter('|Printed using mPDF|'); - -$pagecount = $mpdf->SetSourceFile('test.pdf'); -for($i=1; $i<=$pagecount; $i++) { - if ($i % 4 == 1) { $mpdf->AddPage(); } - $pgheight = $mpdf->h - $mpdf->tMargin - $mpdf->bMargin; - $hspacing = min($spacing,($mpdf->pgwidth - $pw*2) ); - $vspacing = min($spacing,($pgheight - $ph*2) ); - $x1 = $mpdf->lMargin + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2; - $x2 = $mpdf->lMargin + $mpdf->pgwidth/2 + $hspacing/2 + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2; - $y1 = $mpdf->tMargin + ($pgheight /2 - $vspacing/2 - $ph)/2; - $y2 = $mpdf->tMargin + $pgheight /2 + $vspacing/2 + ($pgheight /2 - $vspacing/2 - $ph)/2; - if ($i % 4 == 1) { $x = $x1; $y = $y1; } - else if ($i % 4 == 2) { $x = $x2; $y = $y1; } - else if ($i % 4 == 3) { $x = $x1; $y = $y2; } - else if ($i % 4 == 0) { $x = $x2; $y = $y2; } - $tplIdx = $mpdf->ImportPage($i, 0,0,$pw,$pph[$i]); - - if ($align=='T') { $mpdf->UseTemplate($tplIdx, $x, $y, $pw, $pph[$i]); } - else { $mpdf->UseTemplate($tplIdx, $x, ($y + (($ph - $pph[$i])/2)), $pw, $pph[$i]); } - - if ($border >= 0) { $mpdf->Rect($x-$border, $y-$border, $pw+2*$border, $ph+2*$border); } -} - -$mpdf->Output(); - -exit; - -//============================================================== -function SinglePage($html, $pw, $ph, $minK=1, $inc=0.1) { -// returns height of page -global $mpdf; - $mpdf->AddPage('','','','','','',($mpdf->w - $pw),'',($mpdf->h - $ph),0,0); - $k = 1; - - $currpage = $mpdf->page; - $mpdf->WriteHTML($html); - - $newpage = $mpdf->page; - while($currpage != $newpage) { - for($u=0;$u<=($newpage-$currpage);$u++) { - // DELETE PAGE - the added page - unset($mpdf->pages[$mpdf->page]); - if (isset($mpdf->ktAnnots[$mpdf->page])) { unset( $mpdf->ktAnnots[$mpdf->page] ); } - if (isset($mpdf->tbrot_Annots[$mpdf->page])) { unset( $mpdf->tbrot_Annots[$mpdf->page] ); } - if (isset($mpdf->kwt_Annots[$mpdf->page])) { unset( $mpdf->kwt_Annots[$mpdf->page] ); } - if (isset($mpdf->PageAnnots[$mpdf->page])) { unset( $mpdf->PageAnnots[$mpdf->page] ); } - if (isset($mpdf->ktBlock[$mpdf->page])) { unset( $mpdf->ktBlock[$mpdf->page] ); } - if (isset($mpdf->PageLinks[$mpdf->page])) { unset( $mpdf->PageLinks[$mpdf->page] ); } - if (isset($mpdf->pageoutput[$mpdf->page])) { unset( $mpdf->pageoutput[$mpdf->page] ); } - // Go to page before - so can addpage - $mpdf->page--; - } - // mPDF 2.4 Float Images - if (count($mpdf->floatbuffer)) { - $mpdf->objectbuffer[] = $mpdf->floatbuffer['objattr']; - $mpdf->printobjectbuffer(false); - $mpdf->objectbuffer = array(); - $mpdf->floatbuffer = array(); - $mpdf->float = false; - } - - - $k += $inc; - if ((1/$k) < $minK) { die("Page no. ".$mpdf->page." is too large to fit"); } - $w = $pw * $k; - $h = $ph * $k; - $mpdf->_beginpage('','',($mpdf->w - $w),'',($mpdf->h - $h)); - $currpage = $mpdf->page; - - $mpdf->_out('2 J'); - $mpdf->_out(sprintf('%.2f w',0.1*$mpdf->k)); - $mpdf->SetFont($mpdf->default_font,'',$mpdf->default_font_size ,true,true); // forces write - $mpdf->SetDrawColor(0); - $mpdf->SetFillColor(255); - $mpdf->SetTextColor(0); - $mpdf->ColorFlag=false; - - // Start Transformation - $mpdf->StartTransform(); - $mpdf->transformScale((100/$k), (100/$k), 0, 0); - - $mpdf->WriteHTML($html); - - $newpage = $mpdf->page; - - //Stop Transformation - $mpdf->StopTransform(); - } - return ($mpdf->y / $k); -} -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php b/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php deleted file mode 100644 index a0bddac8e..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php +++ /dev/null @@ -1,1595 +0,0 @@ - - - - - - - - -
      mPDF Example File
      -
      - -
      mPDF Example File
      -
      - -
      {PAGENO}/{nbpg}
      -
      - -
      {PAGENO}/{nbpg}
      -
      - - - - - - - -
      - -
      - -
      -
      -mPDF Example File -
      -
      - - - -

      The front cover can also be produced like this:

      - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture - -$mpdf->y = 70; -$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); -')) .'
      - - - - - - - - - - - - - -

      (H1) mPDF

      -

      (H2) Section 1

      -

      (H3) HTML Markup

      - - - - -

      Heading 4

      -
      Heading 5
      -
      Heading 6
      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -
      - -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      - -
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      - -
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      - -
      PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
      -nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
      -dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
      -sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
      -Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
      -ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
      - - - -
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      -code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
      - -

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      - - -

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      -

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      - -

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      - -

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      This tests underline and strikethrough when they are used together as they both use text-decoration

      - - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -
        -
      1. Item 1
      2. -
      3. Item 232
      4. -
      5. Item 3
      6. -
      7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
          -
        • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
        • -
        • Subitem 2 -
            -
          • -Level 3 subitem -
          • -
          -
        • -
        -
      8. -
      9. Item 5
      10. -
      - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      DataDataDataData
      2nd line
      More DataMore DataMore DataData
      2nd line
      DataDataDataData
      2nd line
      DataDataDataData
      2nd line
      - -This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - - - - - -

      Hyphenation

      - -

      Little Women - Chapter One - Playing Pilgrims

      - - -

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      - - - - - - - - - - -

      Lists

      -
      -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        11. Text here lorem ipsum ibisque totum. -
            -
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum. -
          4. -
          5. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum. -
                -
              1. Text here lorem ipsum ibisque totum.
              2. -
              3. Text here lorem ipsum ibisque totum.
              4. -
              5. Text here lorem ipsum ibisque totum.
              6. -
              7. Text here lorem ipsum ibisque totum.
              8. -
              9. Text here lorem ipsum ibisque totum.
              10. -
              -
            10. -
            11. Text here lorem ipsum ibisque totum.
            12. -
            13. Text here lorem ipsum ibisque totum.
            14. -
            15. Text here lorem ipsum ibisque totum.
            16. -
            17. Text here lorem ipsum ibisque totum.
            18. -
            -
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          -
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        19. Text here lorem ipsum ibisque totum.
        20. -
        -
      12. -
      13. Text here lorem ipsum ibisque totum.
      14. -
      15. Text here lorem ipsum ibisque totum. -
          -
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          11. Text here lorem ipsum ibisque totum.
          12. -
          13. Text here lorem ipsum ibisque totum. -
              -
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          14. -
          -
        6. -
        -
      16. -
      17. Text here lorem ipsum ibisque totum.
      18. -
      19. Text here lorem ipsum ibisque totum.
      20. -
      21. Text here lorem ipsum ibisque totum.
      22. -
      23. Text here lorem ipsum ibisque totum.
      24. -
      25. Text here lorem ipsum ibisque totum.
      26. -
      27. Text here lorem ipsum ibisque totum.
      28. -
      29. Text here lorem ipsum ibisque totum.
      30. -
      -
      - - - -

      Tables

      -

      mPDF supports all in-line properties inside tables.

      - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -This is data out of p -

      This is bold data p

      -This is bold data out of p
      -This is normal data after br -

      Heading 3 inside a table

      -Text here lorem ipsum ibisque totum.32 -
      This is data div
      -This is data out of div -
      This is data div (bold)
      -This is data out of div -
      Also data
      - -

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      - - - - -
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      - - -

      Tables

      -

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      -

      bpmTopic Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      More data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      - -

       

      - -

      bpmTopicC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      bpmTopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      -

       

      -

      bpmTopnTailC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      TopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2Bottom right align -

      This is data. Can use

      -

      bold italic sub or sup text

      -
      -

      Bottom right align

      -
      -

      This is data. This cell

      -

      uses Cell Styles to set

      -

      the borders.

      -

      All borders are collapsible

      -

      in mPDF.

      -
      This is data
      Row header 4 -

      This is data p

      -
      More data
      Row header 5Also data merged and centered
      - -

       

      - -

      Lists in a Table

      - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2 -
        -
      1. Item 1
      2. -
      3. Item 2 -
          -
        1. Subitem of ordered list
        2. -
        3. Subitem 2 -
            -
          1. Level 3 subitem
          2. -
          3. Level 3 subitem
          4. -
          -
        4. -
        -
      4. -
      5. Item 3
      6. -
      7. Another Item
      8. -
      9. Subitem -
          -
        1. Level 3 subitem
        2. -
        -
      10. -
      11. Another Item
      12. -
      -
      -Unordered list: -
        -
      • Item 1
      • -
      • Item 2 -
          -
        • Subitem of unordered list
        • -
        • Subitem 2 -
            -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          -
        • -
        -
      • -
      • Item 3
      • -
      -
      -

       

      - - -

      Automatic Column Width

      - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      - - -

      Column span

      - - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      - - - -

      Header & Footer Rows

      -

      A table using a header or footer row should repeat the header/footer row across pages:

      -

      bpmTopicC Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second column header

      -
      Third column header
      Col and Row Footer -

      Second column footer

      -
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data -

      This is data

      -
      -

      Row header 3

      -
      -

      This is data

      -
      This is data
      Row header 4This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      -

       

      - -

      Autosizing Tables

      -

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      - - - -

      Rotated Tables

      -

      This is set to rotate -90 degrees (counterclockwise).

      - -
      Periodic Table
      -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      -

       

      - - -

      Rotated text in Tables

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      - - - - - - -

      Nested Tables

      - -
      -Text before table - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      - -
      - - - -

      Text before table

      - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -

      Text after table

      -
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      -
      C4
      Row DD2D3D4
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -
      This is data
      Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      -
      C4
      Row DD2D3D4
      -
      This is data
      - - -
      - - - - -

      Forms

      -
      -Textarea - -

      -Select - followed by text -

      -Input Radio - No      Keep      Choice -

      -Input Text - -

      -Input Password - -

      - Checkboxes
      - Not selected
      - Disabled
      - Selected -

      - - - - -

      -
      - - - - -

      Annotations

      -

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - - - -

      Full Images & Barcode

      -

      On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

      - - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->SetAlpha(0.5); -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture -$mpdf->SetAlpha(1); -')) .'
      - - -

      The back cover also has an ISBN barcode

      - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); -')) .'
      - - -

      But next is inserted the Index, which can also be done like this:

      - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); -$mpdf->WriteHTML(\'

      Index

      \'); -$mpdf->WriteHTML(\'\'); -')) .'
      - - - - - - -

      Index

      - - - - - - -
      - -
      - -
      - -
      - - - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); - -$mpdf->StartProgressBarOutput(); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->list_number_suffix = ')'; -$mpdf->hyphenate = true; - -$mpdf->debug = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php b/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php deleted file mode 100644 index 69f11e8cd..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php +++ /dev/null @@ -1,1609 +0,0 @@ - - - - - - - - -
      mPDF Example File
      -
      - -
      mPDF Example File
      -
      - -
      {PAGENO}/{nbpg}
      -
      - -
      {PAGENO}/{nbpg}
      -
      - - - - - - - -
      - -
      - -
      -
      -mPDF Example File -
      -
      - - - -

      The front cover can also be produced like this:

      - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture - -$mpdf->y = 70; -$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); -')) .'
      - - - - - - - - - - - - - -

      (H1) mPDF

      -

      (H2) Section 1

      -

      (H3) HTML Markup

      - - - - -

      Heading 4

      -
      Heading 5
      -
      Heading 6
      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -
      - -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      - -
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      - -
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      - -
      PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
      -nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
      -dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
      -sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
      -Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
      -ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
      - - - -
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      -code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
      - -

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      - - -

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      -

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      - -

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      - -

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      This tests underline and strikethrough when they are used together as they both use text-decoration

      - - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -
        -
      1. Item 1
      2. -
      3. Item 232
      4. -
      5. Item 3
      6. -
      7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
          -
        • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
        • -
        • Subitem 2 -
            -
          • -Level 3 subitem -
          • -
          -
        • -
        -
      8. -
      9. Item 5
      10. -
      - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      DataDataDataData
      2nd line
      More DataMore DataMore DataData
      2nd line
      DataDataDataData
      2nd line
      DataDataDataData
      2nd line
      - -This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - - - - - -

      Hyphenation

      - -

      Little Women - Chapter One - Playing Pilgrims

      - - -

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      - - - - - - - - - - -

      Lists

      -
      -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        11. Text here lorem ipsum ibisque totum. -
            -
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum. -
          4. -
          5. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum. -
                -
              1. Text here lorem ipsum ibisque totum.
              2. -
              3. Text here lorem ipsum ibisque totum.
              4. -
              5. Text here lorem ipsum ibisque totum.
              6. -
              7. Text here lorem ipsum ibisque totum.
              8. -
              9. Text here lorem ipsum ibisque totum.
              10. -
              -
            10. -
            11. Text here lorem ipsum ibisque totum.
            12. -
            13. Text here lorem ipsum ibisque totum.
            14. -
            15. Text here lorem ipsum ibisque totum.
            16. -
            17. Text here lorem ipsum ibisque totum.
            18. -
            -
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          -
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        19. Text here lorem ipsum ibisque totum.
        20. -
        -
      12. -
      13. Text here lorem ipsum ibisque totum.
      14. -
      15. Text here lorem ipsum ibisque totum. -
          -
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          11. Text here lorem ipsum ibisque totum.
          12. -
          13. Text here lorem ipsum ibisque totum. -
              -
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          14. -
          -
        6. -
        -
      16. -
      17. Text here lorem ipsum ibisque totum.
      18. -
      19. Text here lorem ipsum ibisque totum.
      20. -
      21. Text here lorem ipsum ibisque totum.
      22. -
      23. Text here lorem ipsum ibisque totum.
      24. -
      25. Text here lorem ipsum ibisque totum.
      26. -
      27. Text here lorem ipsum ibisque totum.
      28. -
      29. Text here lorem ipsum ibisque totum.
      30. -
      -
      - - - -

      Tables

      -

      mPDF supports all in-line properties inside tables.

      - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -This is data out of p -

      This is bold data p

      -This is bold data out of p
      -This is normal data after br -

      Heading 3 inside a table

      -Text here lorem ipsum ibisque totum.32 -
      This is data div
      -This is data out of div -
      This is data div (bold)
      -This is data out of div -
      Also data
      - -

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      - - - - -
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      - - -

      Tables

      -

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      -

      bpmTopic Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      More data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      - -

       

      - -

      bpmTopicC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      bpmTopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      -

       

      -

      bpmTopnTailC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      TopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2Bottom right align -

      This is data. Can use

      -

      bold italic sub or sup text

      -
      -

      Bottom right align

      -
      -

      This is data. This cell

      -

      uses Cell Styles to set

      -

      the borders.

      -

      All borders are collapsible

      -

      in mPDF.

      -
      This is data
      Row header 4 -

      This is data p

      -
      More data
      Row header 5Also data merged and centered
      - -

       

      - -

      Lists in a Table

      - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2 -
        -
      1. Item 1
      2. -
      3. Item 2 -
          -
        1. Subitem of ordered list
        2. -
        3. Subitem 2 -
            -
          1. Level 3 subitem
          2. -
          3. Level 3 subitem
          4. -
          -
        4. -
        -
      4. -
      5. Item 3
      6. -
      7. Another Item
      8. -
      9. Subitem -
          -
        1. Level 3 subitem
        2. -
        -
      10. -
      11. Another Item
      12. -
      -
      -Unordered list: -
        -
      • Item 1
      • -
      • Item 2 -
          -
        • Subitem of unordered list
        • -
        • Subitem 2 -
            -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          -
        • -
        -
      • -
      • Item 3
      • -
      -
      -

       

      - - -

      Automatic Column Width

      - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      - - -

      Column span

      - - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      - - - -

      Header & Footer Rows

      -

      A table using a header or footer row should repeat the header/footer row across pages:

      -

      bpmTopicC Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second column header

      -
      Third column header
      Col and Row Footer -

      Second column footer

      -
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data -

      This is data

      -
      -

      Row header 3

      -
      -

      This is data

      -
      This is data
      Row header 4This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      -

       

      - -

      Autosizing Tables

      -

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      - - - -

      Rotated Tables

      -

      This is set to rotate -90 degrees (counterclockwise).

      - -
      Periodic Table
      -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      -

       

      - - -

      Rotated text in Tables

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      - - - - - - -

      Nested Tables

      - -
      -Text before table - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      - -
      - - - -

      Text before table

      - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -

      Text after table

      -
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      -
      C4
      Row DD2D3D4
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -
      This is data
      Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      -
      C4
      Row DD2D3D4
      -
      This is data
      - - -
      - - - - -

      Forms

      -
      -Textarea - -

      -Select - followed by text -

      -Input Radio - No      Keep      Choice -

      -Input Text - -

      -Input Password - -

      - Checkboxes
      - Not selected
      - Disabled
      - Selected -

      - - - - -

      -
      - - - - -

      Annotations

      -

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - - - -

      Graphs

      - - -
      FemaleMale
      35 - 4442
      45 - 5457
      55 - 642118
      65 - 741114
      75 - 841010
      85 - 9421
      95 - 1041
      TOTAL5452
      - -
      Subscriptions for 2008-09
      - - - - - - -

      Full Images & Barcode

      -

      On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

      - - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->SetAlpha(0.5); -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture -$mpdf->SetAlpha(1); -')) .'
      - - -

      The back cover also has an ISBN barcode

      - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); -')) .'
      - - -

      But next is inserted the Index, which can also be done like this:

      - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); -$mpdf->WriteHTML(\'

      Index

      \'); -$mpdf->WriteHTML(\'\'); -')) .'
      - - - - - - -

      Index

      - - - - - - -
      - -
      - -
      - -
      - - - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); -$mpdf->progbar_altHTML = ' -
      Creating PDF file. Please wait...
      '; -$mpdf->StartProgressBarOutput(); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->useGraphs = true; -$mpdf->list_number_suffix = ')'; -$mpdf->hyphenate = true; - -$mpdf->debug = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php b/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php deleted file mode 100644 index 898fa6b7c..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php +++ /dev/null @@ -1,1609 +0,0 @@ - - - - - - - - -
      mPDF Example File
      -
      - -
      mPDF Example File
      -
      - -
      {PAGENO}/{nbpg}
      -
      - -
      {PAGENO}/{nbpg}
      -
      - - - - - - - -
      - -
      - -
      -
      -mPDF Example File -
      -
      - - - -

      The front cover can also be produced like this:

      - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture - -$mpdf->y = 70; -$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10); -')) .'
      - - - - - - - - - - - - - -

      (H1) mPDF

      -

      (H2) Section 1

      -

      (H3) HTML Markup

      - - - - -

      Heading 4

      -
      Heading 5
      -
      Heading 6
      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - -
      - -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      -
      DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim.
      - -
      Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.
      - -
      Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.
      - -
      PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
      -nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
      -dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
      -sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
      -Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
      -ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.
      - - - -
      Styles - tt(teletype) italic bold big small emphasis strong
      new lines
      -code sample keyboard variable citation abbr. ACRONYM sup sub strike strike-s underline delete insert To be or not to be font changing face, size and color -
      - -

      Paragraph using the in-line style to determine the font-size (15pt) and colour

      - - -

      Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT

      -

      This is strikethrough in block and small strikethrough in small span and big strikethrough in big span and then underline and strikethrough and sup but out of span again but blue font and ACRONYM text

      - -

      This is a green reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      Repeated in BIG: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      The above repeated, but starting with a paragraph with font-size specified (7pt)

      - -

      This is strikethrough in block and small strikethrough in small span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is strikethrough in block and big strikethrough in big span and then underline but out of span again but blue font and ACRONYM text

      - -

      This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 then Strikethrough reference32-47 and strikethrough reference32-47

      - -

      This tests underline and strikethrough when they are used together as they both use text-decoration

      - - -

      Repeated in small: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -

      Repeated in BIG but with font-size set to 7pt by in-line css: This is reference32-47 and underlined reference32-47 then reference32-47 and underlined reference32-47 but out of span again but blue font and ACRONYM text

      - -
        -
      1. Item 1
      2. -
      3. Item 232
      4. -
      5. Item 3
      6. -
      7. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. -
          -
        • Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
        • -
        • Subitem 2 -
            -
          • -Level 3 subitem -
          • -
          -
        • -
        -
      8. -
      9. Item 5
      10. -
      - -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      DataDataDataData
      2nd line
      More DataMore DataMore DataData
      2nd line
      DataDataDataData
      2nd line
      DataDataDataData
      2nd line
      - -This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding. -

      Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi.

      - - - - - -

      Hyphenation

      - -

      Little Women - Chapter One - Playing Pilgrims

      - - -

      Christmas won\'t be Christmas without any presents, grumbled Jo, lying on the rug.

      It\'s so dreadful to be poor! sighed Meg, looking down at her old dress.

      I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all, added little Amy, with an injured sniff.

      We\'ve got Father and Mother, and each other, said Beth contentedly from her corner.

      The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly, We haven\'t got Father, and shall not have him for a long time. She didn\'t say perhaps never, but each silently added it, thinking of Father far away, where the fighting was.

      Nobody spoke for a minute; then Meg said in an altered tone, You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t And Meg shook her head, as she thought regretfully of all the pretty things she wanted.

      But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long, said Jo, who was a bookworm.

      I planned to spend mine in new music, said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.

      I shall get a nice box of Faber\'s drawing pencils. I really need them, said Amy decidedly.

      Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it, cried Jo, examining the heels of her shoes in a gentlemanly manner.

      I know I do—teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home, began Meg, in the complaining tone again.

      You don\'t have half such a hard time as I do, said Jo. How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry?

      It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world. It makes me cross, and my hands get so stiff, I can\'t practice well at all. And Beth looked at her rough hands with a sigh that any one could hear that time.

      I don\'t believe any of you suffer as I do, cried Amy, for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice.

      If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle, advised Jo, laughing.

      I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary, returned Amy, with dignity.

      Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries! said Meg, who could remember better times.

      You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money.

      So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say.

      Jo does use such slang words! observed Amy, with a reproving look at the long figure stretched on the rug.

      Jo immediately sat up, put her hands in her pockets, and began to whistle.

      Don\'t, Jo. It\'s so boyish!

      That\'s why I do it.

      I detest rude, unladylike girls!

      I hate affected, niminy-piminy chits!

      Birds in their little nests agree, sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the pecking ended for that time.

      Really, girls, you are both to be blamed, said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady.

      I\'m not! And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty, cried Jo, pulling off her net, and shaking down a chestnut mane. I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman!

      And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.

      Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls, said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.

      As for you, Amy, continued Meg, you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang.

      If Jo is a tomboy and Amy a goose, what am I, please? asked Beth, ready to share the lecture.

      You\'re a dear, and nothing else, answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.

      - - - - - - - - - - -

      Lists

      -
      -
        -
      1. Text here lorem ipsum ibisque totum.
      2. -
      3. Text here lorem ipsum ibisque totum.
      4. -
      5. Text here lorem ipsum ibisque totum.
      6. -
      7. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.
      8. -
      9. Text here lorem ipsum ibisque totum.
      10. -
      11. Text here lorem ipsum ibisque totum. -
          -
        1. Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum.
        6. -
        7. Text here lorem ipsum ibisque totum.
        8. -
        9. Text here lorem ipsum ibisque totum.
        10. -
        11. Text here lorem ipsum ibisque totum. -
            -
          1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum. -
          4. -
          5. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum. -
                -
              1. Text here lorem ipsum ibisque totum.
              2. -
              3. Text here lorem ipsum ibisque totum.
              4. -
              5. Text here lorem ipsum ibisque totum.
              6. -
              7. Text here lorem ipsum ibisque totum.
              8. -
              9. Text here lorem ipsum ibisque totum.
              10. -
              -
            10. -
            11. Text here lorem ipsum ibisque totum.
            12. -
            13. Text here lorem ipsum ibisque totum.
            14. -
            15. Text here lorem ipsum ibisque totum.
            16. -
            17. Text here lorem ipsum ibisque totum.
            18. -
            -
          6. -
          7. Text here lorem ipsum ibisque totum.
          8. -
          -
        12. -
        13. Text here lorem ipsum ibisque totum.
        14. -
        15. Text here lorem ipsum ibisque totum.
        16. -
        17. Text here lorem ipsum ibisque totum.
        18. -
        19. Text here lorem ipsum ibisque totum.
        20. -
        -
      12. -
      13. Text here lorem ipsum ibisque totum.
      14. -
      15. Text here lorem ipsum ibisque totum. -
          -
        1. Big text indent 25mm: Text here lorem ipsum ibisque totum.
        2. -
        3. Text here lorem ipsum ibisque totum.
        4. -
        5. Text here lorem ipsum ibisque totum. -
            -
          1. Text here lorem ipsum ibisque totum.
          2. -
          3. Text here lorem ipsum ibisque totum.
          4. -
          5. Text here lorem ipsum ibisque totum.
          6. -
          7. Text here lorem ipsum ibisque totum. -
              -
            1. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          8. -
          9. Text here lorem ipsum ibisque totum.
          10. -
          11. Text here lorem ipsum ibisque totum.
          12. -
          13. Text here lorem ipsum ibisque totum. -
              -
            1. No class specified. Text here lorem ipsum ibisque totum.
            2. -
            3. Text here lorem ipsum ibisque totum.
            4. -
            5. Text here lorem ipsum ibisque totum.
            6. -
            7. Text here lorem ipsum ibisque totum.
            8. -
            9. Text here lorem ipsum ibisque totum.
            10. -
            -
          14. -
          -
        6. -
        -
      16. -
      17. Text here lorem ipsum ibisque totum.
      18. -
      19. Text here lorem ipsum ibisque totum.
      20. -
      21. Text here lorem ipsum ibisque totum.
      22. -
      23. Text here lorem ipsum ibisque totum.
      24. -
      25. Text here lorem ipsum ibisque totum.
      26. -
      27. Text here lorem ipsum ibisque totum.
      28. -
      29. Text here lorem ipsum ibisque totum.
      30. -
      -
      - - - -

      Tables

      -

      mPDF supports all in-line properties inside tables.

      - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -This is data out of p -

      This is bold data p

      -This is bold data out of p
      -This is normal data after br -

      Heading 3 inside a table

      -Text here lorem ipsum ibisque totum.32 -
      This is data div
      -This is data out of div -
      This is data div (bold)
      -This is data out of div -
      Also data
      - -

      This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line CSS.

      - - - - -
      Row 1This is dataThis is data
      Row 2

      This is data p

      More data

      Row 3

      This is long data

      This is data
      - - -

      Tables

      -

      The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that <thead> will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.

      -

      bpmTopic Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      More data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      - -

       

      - -

      bpmTopicC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      bpmTopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is dataThis is data
      Row 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row 3

      -
      -

      This is long data

      -
      This is data
      -

      Row 4 <td> cell

      -
      This is data -

      This is data

      -
      Row 5Also dataAlso data
      Row 6Also dataAlso data
      Row 7Also dataAlso data
      Row 8Also dataAlso data
      -

       

      -

      bpmTopnTailC Class (centered) Odd and Even rows

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col/Row Header -

      Second column header p

      -
      Third column header
      Row header 1This is dataThis is data
      Row header 2 -

      This is data p

      -
      -

      This is data

      -
      -

      Row header 3

      -
      -

      This is long data

      -
      This is data
      -

      Row header 4

      -

      <th> cell acting as header

      -
      This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      - -

       

      - -

      TopnTail Class

      - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2Bottom right align -

      This is data. Can use

      -

      bold italic sub or sup text

      -
      -

      Bottom right align

      -
      -

      This is data. This cell

      -

      uses Cell Styles to set

      -

      the borders.

      -

      All borders are collapsible

      -

      in mPDF.

      -
      This is data
      Row header 4 -

      This is data p

      -
      More data
      Row header 5Also data merged and centered
      - -

       

      - -

      Lists in a Table

      - - - - - - - - - - - - - - -
      Col and Row Header -

      Second

      -

      column

      -
      Top right align
      -

      Row header 1 p

      -
      This is dataThis is data
      Row header 2 -
        -
      1. Item 1
      2. -
      3. Item 2 -
          -
        1. Subitem of ordered list
        2. -
        3. Subitem 2 -
            -
          1. Level 3 subitem
          2. -
          3. Level 3 subitem
          4. -
          -
        4. -
        -
      4. -
      5. Item 3
      6. -
      7. Another Item
      8. -
      9. Subitem -
          -
        1. Level 3 subitem
        2. -
        -
      10. -
      11. Another Item
      12. -
      -
      -Unordered list: -
        -
      • Item 1
      • -
      • Item 2 -
          -
        • Subitem of unordered list
        • -
        • Subitem 2 -
            -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          • Level 3 subitem
          • -
          -
        • -
        -
      • -
      • Item 3
      • -
      -
      -

       

      - - -

      Automatic Column Width

      - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      MechanismsUt magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.
      - - -

      Column span

      - - - - - - - - - - -
      CausesNulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit.
      -Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.
      -Suspendisse potenti
      MechanismsFusce eleifend neque sit amet erat.
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.
      Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.
      -Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.
      - - - -

      Header & Footer Rows

      -

      A table using a header or footer row should repeat the header/footer row across pages:

      -

      bpmTopicC Class

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Col and Row Header -

      Second column header

      -
      Third column header
      Col and Row Footer -

      Second column footer

      -
      Third column footer
      Row header 1This is dataThis is data
      Row header 2This is data -

      This is data

      -
      -

      Row header 3

      -
      -

      This is data

      -
      This is data
      Row header 4This is data -

      This is data

      -
      Row header 5Also dataAlso data
      Row header 6Also dataAlso data
      Row header 7Also dataAlso data
      Row header 8Also dataAlso data
      Row header 9Also dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      Another Row headerAlso dataAlso data
      -

       

      - -

      Autosizing Tables

      -

      Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute <table autosize="1.8">.

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      - - - -

      Rotated Tables

      -

      This is set to rotate -90 degrees (counterclockwise).

      - -
      Periodic Table
      -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      1A2A3B4B5B6B7B8B8B8B1B2B3A4A5A6A7A8A
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      -

       

      - - -

      Rotated text in Tables

      - -
      Periodic Table
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      Element type 1A

      Second line

      Element type longer 2A

      Element type 3BElement type 4BElement type 5BElement type 6B7B8BElement type 8B R8BElement type 1B2BElement type 3AElement type 4AElement type 5AElement type 6A7AElement type 8A
      HHe
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc TiVaCrMnFeCoNi Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru RhPd Ag Cd In Sn Sb Te I Xe
      Cs Ba La Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra Ac
      Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu
      Th Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr
      - - - - - - -

      Nested Tables

      - -
      -Text before table - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is data - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. C4
      Row DD2D3D4
      -
      This is data
      This is dataThis is dataThis is dataThis is data
      This is dataThis is dataThis is data
      This is dataThis is dataThis is dataThis is data
      - -
      - - - -

      Text before table

      - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is data -Text before table - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -

      Text after table

      -
      This is data
      Row 2This is dataThis is dataThis is data
      Row 3 - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      -
      C4
      Row DD2D3D4
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B3B4
      Row CC2C3C4
      Row DD2D3D4
      -
      This is data
      Row 4This is data - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row AA2A3A4
      Row BB2B4
      Row CC2 - - - - - - - - - - -
      F1F2
      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.G2
      -
      C4
      Row DD2D3D4
      -
      This is data
      - - -
      - - - - -

      Forms

      -
      -Textarea - -

      -Select - followed by text -

      -Input Radio - No      Keep      Choice -

      -Input Text - -

      -Input Password - -

      - Checkboxes
      - Not selected
      - Disabled
      - Selected -

      - - - - -

      -
      - - - - -

      Annotations

      -

      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis.

      -

      P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - - - -

      Graphs

      - - -
      FemaleMale
      35 - 4442
      45 - 5457
      55 - 642118
      65 - 741114
      75 - 841010
      85 - 9421
      95 - 1041
      TOTAL5452
      - -
      Subscriptions for 2008-09
      - - - - - - -

      Full Images & Barcode

      -

      On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".

      - - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->SetAlpha(0.5); -$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false); -// the last "false" allows a full page picture -$mpdf->SetAlpha(1); -')) .'
      - - -

      The back cover also has an ISBN barcode

      - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); -')) .'
      - - -

      But next is inserted the Index, which can also be done like this:

      - - -
      '. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */ -$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1); -$mpdf->WriteHTML(\'

      Index

      \'); -$mpdf->WriteHTML(\'\'); -')) .'
      - - - - - - -

      Index

      - - - - - - -
      - -
      - -
      - -
      - - - -'; - -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); - -$mpdf->progbar_heading = 'mPDF file progress (Advanced)'; -$mpdf->StartProgressBarOutput(2); - -$mpdf->mirrorMargins = 1; -$mpdf->SetDisplayMode('fullpage','two'); -$mpdf->useGraphs = true; -$mpdf->list_number_suffix = ')'; -$mpdf->hyphenate = true; - -$mpdf->debug = true; - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php b/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php deleted file mode 100644 index 279979dba..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php +++ /dev/null @@ -1,41 +0,0 @@ -tabSpaces = 6; - -$mpdf->allow_charset_conversion=true; -$mpdf->charset_in='windows-1252'; - - -//============================================================== - -$html = ' -

      mPDF

      -

      ChangeLog

      -
      -'; -$lines = file('../CHANGELOG.txt'); - -$html .= '
      ';
      -foreach($lines AS $line) {
      -	$html .= htmlspecialchars($line);
      -}
      -$html .= '
      '; -$html .= '
      '; - -//============================================================== - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php b/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php deleted file mode 100644 index 903d34978..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php +++ /dev/null @@ -1,1905 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -.radialgradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65; - margin: auto; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-family: sans; - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.5em; -} -div { - padding:1em; - margin-bottom: 1em; - text-align:justify; -} -.example pre { - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; -} - -pre { text-align:left } -pre.code { font-family: monospace } - -table.html4colortable {margin:auto; width:80%; border:none } -table.html4colortable TD {border:none; padding:0} -td .colorsquare { display:block;width:16px;height:16px;border:2px solid black } - -table.x11colortable td {text-align:center; background: white; } -table.x11colortable td.c { text-transform:uppercase } -table.x11colortable td:first-child, table.x11colortable td:first-child+td { border:1px solid black } -table.x11colortable th {text-align:center; background:black; color:white } - -table.tprofile th.title {background:gray; color:white} -table.tprofile th { width:29%;padding:2px } -table.tprofile td { width:71%;padding:2px } - -table.hslexample { background: #808080; padding:1em; margin:0; float:left; } -table.hslexample td,table.hslexample th { font-size:smaller;width:3em } - - - -

      mPDF Version 3.0

      -

      New Features

      - -
      -

      Page background

      -
      -The background colour can now be set by CSS styles on the <body> tag. This will set the background for the whole page. In this document, the background has been set as a gradient (see below). -
      - -

      Background Gradients

      -
      -Background can be set as a linear or radial gradient between two colours. The background has been set on this <div> element to a linear gradient. CSS style used here is:
      -background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
      -The four numbers are coordinates in the form (x1, y1, x2, y2) which defines the gradient vector. x and y are values from 0 to 1, where 1 represents the height or width of the box as it is printed. -
      -
      -Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. -
      -
      -The background has been set on this <div> element to a radial gradient. CSS style used here is:
      -background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;
      -The five numbers are coordinates in the form (x1, y1, x2, y2, r) where (x1, y1) is the starting point of the gradient with color1, -(x2, y2) is the center of the circle with color2, and r is the radius of the circle. -(x1, y1) should be inside the circle, otherwise some areas will not be defined. -
      -
      -Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. -
      - -

      Background Images

      -
      -The CSS properties background-image, background-position, and background-repeat are supported as defined in CSS2, as well as the shorthand form "background". -
      -The background has been set on this <div> element to:
      -background: transparent url(\'bg.jpg\') repeat fixed right top;
      -Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY. -
      - -

      Rounded Borders

      -
      -Rounded corners to borders can be added using border-radius as defined in the draft spec. of CSS3.
      - -The two length values of the border-*-radius properties define the radii of a quarter ellipse that defines the shape of the corner of the outer border edge. -The first value is the horizontal radius.
      -border-top-left-radius: 55pt 25pt; 55pt is radius of curve from top end of left border starting to go round to the top.
      - -If the second length is omitted it is equal to the first (and the corner is thus a quarter circle). If either length is zero, the corner is square, not rounded.
      - -The border-radius shorthand sets all four border-*-radius properties. If values are given before and after a slash, then the values before the slash set the horizontal radius and the values after the slash set the vertical radius. If there is no slash, then the values set both radii equally. The four values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If bottom-left is omitted it is the same as top-right. If bottom-right is omitted it is the same as top-left. If top-right is omitted it is the same as top-left. -
      -
      -border-radius: 4em;
      - -would be equivalent to
      - -border-top-left-radius: 4em;
      -border-top-right-radius: 4em;
      -border-bottom-right-radius: 4em;
      -border-bottom-left-radius: 4em;

      -
      -and
      -border-radius: 2em 1em 4em / 0.5em 3em;
      -would be equivalent to
      -border-top-left-radius: 2em 0.5em;
      -border-top-right-radius: 1em 3em;
      -border-bottom-right-radius: 4em 0.5em;
      -border-bottom-left-radius: 1em 3em;
      -
      - -

      Interlaced and alpha-channel-set PNG images supported

      -
      -Prior to version 3.0, mPDF has not supported PNG images which are interlaced, or images with transparency - now it does. -
      With a blue background-color set, this PNG image with transparency appears like this: -
      -
      -
      With a different background-color set, the same image appears like this: -
      -
      -
      This will not work with background-gradient or background-image (the background-color is used to paint the transparent parts of the image).
      -
      - - -
      - - -

      CSS "Float"

      -
      -Block elements can be positioned alongside each other using the CSS property float: left or right. The clear property can also be used, set as left|right|both. Float is only supported on block elements (i.e. not SPAN etc.) and is not fully compliant with the CSS specification. -Float only works properly if a width is set for the float, otherwise the width is set to the maximum available (full width, or less if floats already set). -
      -Margin-right can still be set for a float:right and vice-versa. -
      -A block element next to a float has the padding adjusted so that content fits in the remaining width. Text next to a float should wrap correctly, but backgrounds and borders will overlap and/or lie under the floats in a mess. -
      -NB The width that is set defines the width of the content-box. So if you have two floats with width=50% and either of them has padding, margin or border, they will not fit together on the page. -
      -
      -This is text in a <div> element that is set to float:right and width:28%. -
      -
      -This is text in a <div> element that is set to float:left and width:54%. -
      - -
      -This is text that follows a <div> element that is set to clear:both. - - - -

      HTML Headers now support hyperlinks

      -
      -Hyperlinks can now be included in HTML headers and footers. See the link to the documentation manual in the footer of this document. -
      - - -contd... - - -

      Resetting Page Numbering

      -
      -Page numbers can now be reset to any value (rather than just 1) during the document i.e. in any function/tag that supports resetting the numbering: AddPage(), <pagebreak> etc. -
      -Note that the page number has been reset to 20 from this page. -
      - -

      Page Numbering - additional text

      -
      -Text can be defined to appear before and after page numbers ($pagenumPrefix; $pagenumSuffix; $nbpgPrefix; $nbpgSuffix;) -
      -This document has a non-HTML header defined with the right content as \'{PAGENO}{nbpg}\'.
      -The following values have been set:
      -$mpdf->pagenumPrefix = \'Page \';
      -$mpdf->pagenumSuffix = \'\';
      -$mpdf->nbpgPrefix = \' of \';
      -$mpdf->nbpgSuffix = \' pages.\';
      -
      -
      - -This is only recommended in non-HTML headers and footers. Although the text is added correctly in HTML headers & footers, the text alignment is not readjusted after substitution e.g. if it used in the right margin. -
      - -

      Other New features

      -
      -- internal links supported in Indexes (parameter added to CreateIndex() and CreateReference()
          $useLinking=true;)
      -- improved handling of <br>, block elements, and text lines inside tables
      -- borders of block-level elements & table cell borders supported (partially) in columns
      -- optional error reporting for problems with Images ($showImageErrors=true;)
      -- ToC will word-wrap long entries
      -- internal links (Bookmarks, IndexEntry and ToCEntry) rewritten to give more accurate positioning
          (when used as <tag>)
      -- autofont algorithm improved for CJK languages
      -
      - - -

      All SVG color keywords supported

      -

      This table provides a list of all the named colors supported by mPDF. The - list is precisely the same as the SVG 1.0 color - keyword names. - The two color swatches on the left illustrate setting the background color - of a table cell in two ways: The first column uses the named color value, - and the second column uses the respective numeric color value. -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Named - Numeric - Color name - - Hex rgb - - Decimal - -
        - -   - - aliceblue - - #f0f8ff - - 240,248,255 - -
        - -   - - antiquewhite - - #faebd7 - - 250,235,215 - -
        - -   - - aqua - - #00ffff - - 0,255,255 - -
        - -   - - aquamarine - - #7fffd4 - - 127,255,212 - -
        - -   - - azure - - #f0ffff - - 240,255,255 - -
        - -   - - beige - - #f5f5dc - - 245,245,220 - -
        - -   - - bisque - - #ffe4c4 - - 255,228,196 - -
        - -   - - black - - #000000 - - 0,0,0 - -
        - -   - - blanchedalmond - - #ffebcd - - 255,235,205 - -
        - -   - - blue - - #0000ff - - 0,0,255 - -
        - -   - - blueviolet - - #8a2be2 - - 138,43,226 - -
        - -   - - brown - - #a52a2a - - 165,42,42 - -
        - -   - - burlywood - - #deb887 - - 222,184,135 - -
        - -   - - cadetblue - - #5f9ea0 - - 95,158,160 - -
        - -   - - chartreuse - - #7fff00 - - 127,255,0 - -
        - -   - - chocolate - - #d2691e - - 210,105,30 - -
        - -   - - coral - - #ff7f50 - - 255,127,80 - -
        - -   - - cornflowerblue - - #6495ed - - 100,149,237 - -
        - -   - - cornsilk - - #fff8dc - - 255,248,220 - -
        - -   - - crimson - - #dc143c - - 220,20,60 - -
        - -   - - cyan - - #00ffff - - 0,255,255 - -
        - -   - - darkblue - - #00008b - - 0,0,139 - -
        - -   - - darkcyan - - #008b8b - - 0,139,139 - -
        - -   - - darkgoldenrod - - #b8860b - - 184,134,11 - -
        - -   - - darkgray - - #a9a9a9 - - 169,169,169 - -
        - -   - - darkgreen - - #006400 - - 0,100,0 - -
        - -   - - darkgrey - - #a9a9a9 - - 169,169,169 - -
        - -   - - darkkhaki - - #bdb76b - - 189,183,107 - -
        - -   - - darkmagenta - - #8b008b - - 139,0,139 - -
        - -   - - darkolivegreen - - #556b2f - - 85,107,47 - -
        - -   - - darkorange - - #ff8c00 - - 255,140,0 - -
        - -   - - darkorchid - - #9932cc - - 153,50,204 - -
        - -   - - darkred - - #8b0000 - - 139,0,0 - -
        - -   - - darksalmon - - #e9967a - - 233,150,122 - -
        - -   - - darkseagreen - - #8fbc8f - - 143,188,143 - -
        - -   - - darkslateblue - - #483d8b - - 72,61,139 - -
        - -   - - darkslategray - - #2f4f4f - - 47,79,79 - -
        - -   - - darkslategrey - - #2f4f4f - - 47,79,79 - -
        - -   - - darkturquoise - - #00ced1 - - 0,206,209 - -
        - -   - - darkviolet - - #9400d3 - - 148,0,211 - -
        - -   - - deeppink - - #ff1493 - - 255,20,147 - -
        - -   - - deepskyblue - - #00bfff - - 0,191,255 - -
        - -   - - dimgray - - #696969 - - 105,105,105 - -
        - -   - - dimgrey - - #696969 - - 105,105,105 - -
        - -   - - dodgerblue - - #1e90ff - - 30,144,255 - -
        - -   - - firebrick - - #b22222 - - 178,34,34 - -
        - -   - - floralwhite - - #fffaf0 - - 255,250,240 - -
        - -   - - forestgreen - - #228b22 - - 34,139,34 - -
        - -   - - fuchsia - - #ff00ff - - 255,0,255 - -
        - -   - - gainsboro - - #dcdcdc - - 220,220,220 - -
        - -   - - ghostwhite - - #f8f8ff - - 248,248,255 - -
        - -   - - gold - - #ffd700 - - 255,215,0 - -
        - -   - - goldenrod - - #daa520 - - 218,165,32 - -
        - -   - - gray - - #808080 - - 128,128,128 - -
        - -   - - green - - #008000 - - 0,128,0 - -
        - -   - - greenyellow - - #adff2f - - 173,255,47 - -
        - -   - - grey - - #808080 - - 128,128,128 - -
        - -   - - honeydew - - #f0fff0 - - 240,255,240 - -
        - -   - - hotpink - - #ff69b4 - - 255,105,180 - -
        - -   - - indianred - - #cd5c5c - - 205,92,92 - -
        - -   - - indigo - - #4b0082 - - 75,0,130 - -
        - -   - - ivory - - #fffff0 - - 255,255,240 - -
        - -   - - khaki - - #f0e68c - - 240,230,140 - -
        - -   - - lavender - - #e6e6fa - - 230,230,250 - -
        - -   - - lavenderblush - - #fff0f5 - - 255,240,245 - -
        - -   - - lawngreen - - #7cfc00 - - 124,252,0 - -
        - -   - - lemonchiffon - - #fffacd - - 255,250,205 - -
        - -   - - lightblue - - #add8e6 - - 173,216,230 - -
        - -   - - lightcoral - - #f08080 - - 240,128,128 - -
        - -   - - lightcyan - - #e0ffff - - 224,255,255 - -
        - -   - - lightgoldenrodyellow - - #fafad2 - - 250,250,210 - -
        - -   - - lightgray - - #d3d3d3 - - 211,211,211 - -
        - -   - - lightgreen - - #90ee90 - - 144,238,144 - -
        - -   - - lightgrey - - #d3d3d3 - - 211,211,211 - -
        - -   - - lightpink - - #ffb6c1 - - 255,182,193 - -
        - -   - - lightsalmon - - #ffa07a - - 255,160,122 - -
        - -   - - lightseagreen - - #20b2aa - - 32,178,170 - -
        - -   - - lightskyblue - - #87cefa - - 135,206,250 - -
        - -   - - lightslategray - - #778899 - - 119,136,153 - -
        - -   - - lightslategrey - - #778899 - - 119,136,153 - -
        - -   - - lightsteelblue - - #b0c4de - - 176,196,222 - -
        - -   - - lightyellow - - #ffffe0 - - 255,255,224 - -
        - -   - - lime - - #00ff00 - - 0,255,0 - -
        - -   - - limegreen - - #32cd32 - - 50,205,50 - -
        - -   - - linen - - #faf0e6 - - 250,240,230 - -
        - -   - - magenta - - #ff00ff - - 255,0,255 - -
        - -   - - maroon - - #800000 - - 128,0,0 - -
        - -   - - mediumaquamarine - - #66cdaa - - 102,205,170 - -
        - -   - - mediumblue - - #0000cd - - 0,0,205 - -
        - -   - - mediumorchid - - #ba55d3 - - 186,85,211 - -
        - -   - - mediumpurple - - #9370db - - 147,112,219 - -
        - -   - - mediumseagreen - - #3cb371 - - 60,179,113 - -
        - -   - - mediumslateblue - - #7b68ee - - 123,104,238 - -
        - -   - - mediumspringgreen - - #00fa9a - - 0,250,154 - -
        - -   - - mediumturquoise - - #48d1cc - - 72,209,204 - -
        - -   - - mediumvioletred - - #c71585 - - 199,21,133 - -
        - -   - - midnightblue - - #191970 - - 25,25,112 - -
        - -   - - mintcream - - #f5fffa - - 245,255,250 - -
        - -   - - mistyrose - - #ffe4e1 - - 255,228,225 - -
        - -   - - moccasin - - #ffe4b5 - - 255,228,181 - -
        - -   - - navajowhite - - #ffdead - - 255,222,173 - -
        - -   - - navy - - #000080 - - 0,0,128 - -
        - -   - - oldlace - - #fdf5e6 - - 253,245,230 - -
        - -   - - olive - - #808000 - - 128,128,0 - -
        - -   - - olivedrab - - #6b8e23 - - 107,142,35 - -
        - -   - - orange - - #ffa500 - - 255,165,0 - -
        - -   - - orangered - - #ff4500 - - 255,69,0 - -
        - -   - - orchid - - #da70d6 - - 218,112,214 - -
        - -   - - palegoldenrod - - #eee8aa - - 238,232,170 - -
        - -   - - palegreen - - #98fb98 - - 152,251,152 - -
        - -   - - paleturquoise - - #afeeee - - 175,238,238 - -
        - -   - - palevioletred - - #db7093 - - 219,112,147 - -
        - -   - - papayawhip - - #ffefd5 - - 255,239,213 - -
        - -   - - peachpuff - - #ffdab9 - - 255,218,185 - -
        - -   - - peru - - #cd853f - - 205,133,63 - -
        - -   - - pink - - #ffc0cb - - 255,192,203 - -
        - -   - - plum - - #dda0dd - - 221,160,221 - -
        - -   - - powderblue - - #b0e0e6 - - 176,224,230 - -
        - -   - - purple - - #800080 - - 128,0,128 - -
        - -   - - red - - #ff0000 - - 255,0,0 - -
        - -   - - rosybrown - - #bc8f8f - - 188,143,143 - -
        - -   - - royalblue - - #4169e1 - - 65,105,225 - -
        - -   - - saddlebrown - - #8b4513 - - 139,69,19 - -
        - -   - - salmon - - #fa8072 - - 250,128,114 - -
        - -   - - sandybrown - - #f4a460 - - 244,164,96 - -
        - -   - - seagreen - - #2e8b57 - - 46,139,87 - -
        - -   - - seashell - - #fff5ee - - 255,245,238 - -
        - -   - - sienna - - #a0522d - - 160,82,45 - -
        - -   - - silver - - #c0c0c0 - - 192,192,192 - -
        - -   - - skyblue - - #87ceeb - - 135,206,235 - -
        - -   - - slateblue - - #6a5acd - - 106,90,205 - -
        - -   - - slategray - - #708090 - - 112,128,144 - -
        - -   - - slategrey - - #708090 - - 112,128,144 - -
        - -   - - snow - - #fffafa - - 255,250,250 - -
        - -   - - springgreen - - #00ff7f - - 0,255,127 - -
        - -   - - steelblue - - #4682b4 - - 70,130,180 - -
        - -   - - tan - - #d2b48c - - 210,180,140 - -
        - -   - - teal - - #008080 - - 0,128,128 - -
        - -   - - thistle - - #d8bfd8 - - 216,191,216 - -
        - -   - - tomato - - #ff6347 - - 255,99,71 - -
        - -   - - turquoise - - #40e0d0 - - 64,224,208 - -
        - -   - - violet - - #ee82ee - - 238,130,238 - -
        - -   - - wheat - - #f5deb3 - - 245,222,179 - -
        - -   - - white - - #ffffff - - 255,255,255 - -
        - -   - - whitesmoke - - #f5f5f5 - - 245,245,245 - -
        - -   - - yellow - - #ffff00 - - 255,255,0 - -
        - -   - - yellowgreen - - #9acd32 - - 154,205,50 -
      - - -'; - - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - - -$mpdf=new mPDF('c','A4','','',15,15,20,20,5,5); - -//============================================================== - -$mpdf->pagenumPrefix = 'Page '; -$mpdf->pagenumSuffix = ''; -$mpdf->nbpgPrefix = ' of '; -$mpdf->nbpgSuffix = ' pages.'; -$header = array( - 'L' => array( - ), - 'C' => array( - ), - 'R' => array( - 'content' => '{PAGENO}{nbpg}', - 'font-family' => 'sans', - 'font-style' => '', - 'font-size' => '9', /* gives default */ - ), - 'line' => 1, -); -$footer = ' - - - -
      See documentation manual for further details
      -'; - -$mpdf->SetHeader($header,'O'); -$mpdf->SetHTMLFooter($footer); -//============================================================== - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php b/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php deleted file mode 100644 index 8882ad241..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php +++ /dev/null @@ -1,615 +0,0 @@ - -body { font-family: sans; } -h4, p { margin: 0pt; -} -h5 { margin-bottom: 0; } -table.items { - font-size: 9pt; - border-collapse: collapse; - border: 3px solid #880000; - background-color: #FFFFFF; -} -td { vertical-align: top; -} -table thead td { background-color: #EEEEEE; - text-align: center; -} -table tfoot td { background-color: #AAFFEE; - text-align: center; -} -.barcode { - padding: 1.5mm; - margin: 0; - vertical-align: top; - color: #000000; -} -.barcodecell { - text-align: center; - vertical-align: middle; - padding: 0; -} - -@page { - background-gradient: linear #00FFFF #FFFF00 0 0.5 1 0.5; - odd-header-name: html_myHTMLHeaderOdd; - even-header-name: html_myHTMLHeaderEven; - odd-footer-name: html_myHTMLFooterOdd; - even-footer-name: html_myHTMLFooterEven; -} -#myfixed { - position: fixed; - overflow: auto; - height: 60mm; - margin-left: auto; - right: 30mm; - top: 150mm; - border: 1px solid #880000; - background-color: #EEDDFF; - padding: 3em; - text-align: justify; - text-indent: 3em; - font-size: 10pt; - font-family:sans; - font-style: italic; - line-height: 1.8; - color: red; -} -.myfixed2 { position: absolute; - overflow: visible; - left: 0; - right: 0; - width: 100mm; - top: 40mm; - margin-left: auto; - margin-right: auto; - border: 1px solid #000088; - background-color: #EEDDFF; - background: transparent url(\'bg.jpg\') repeat scroll right top; - padding: 1.5em; - font-family:sans; -} -.myfixed3 { position: absolute; - overflow: visible; - right: 0; - bottom: 0; - border: 1px solid #000088; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 1.5em; - font-family:sans; -} -.myfixed4 { position: absolute; - overflow: auto; - left: 150mm; - right: 0; - top: 100mm; - height: 10mm; - border: 1px solid #000088; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - font-family:sans; -} -.myfixed5 { position: absolute; - overflow: visible; - left: 150mm; - right: 0; - top: 125mm; - height: 10mm; - border: 1px solid #000088; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - font-family:sans; -} -.myfixed6 { position: absolute; - overflow: hidden; - right: 150mm; - left: 0; - top: 110mm; - height: 10mm; - border: 1px solid #000088; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - font-family:sans; -} -.myfixed7 { position: absolute; - right: 140mm; - top: 130mm; - width: auto; - border: 1px solid #000088; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - font-family:sans; -} -div.indic, div.arabic { - font-size: 14pt; -} -div.indic h5, div.arabic h5 { - margin: 0; -} -div.indic p, div.arabic p, div.arabic li { - margin: 0; - margin-botom: 1em; - line-height: 1.8; -} -div.arabic p, div.arabic h5, div.arabic h4, div.arabic td { - text-align: right; -} -div.arabic td { - text-align: right; - font-size: 14pt; - padding: 1em; -} -h2 { color: #880000; margin-bottom: 0.2em; } -h4 { margin-bottom: 0.2em; } - - -
      Page {PAGENO} of {nb}
      -
      - -
      {PAGENO}
      -
      - -
      {PAGENO}
      -
      - -
      {PAGENO}
      -
      - - -

      mPDF Version 4.0 New features

      -
      • Ability to embed font subsets (much smaller files)
      • -
      • Support for Fixed position block elements
      • -
      • Support for Indic languages including consonant conjuncts
      • -
      • Much improved support for Arabic languages
      • -
      • New utility to help create your own fonts
      • -
      • Increased support for barcodes
      • -
      - -

      Indic Fonts/Languages

      -
      From BBC World Service Hindi News (http://www.bbc.co.uk/hindi/)
      -
      -

      कुछ और तथ्य पॉप

      -

      जैक्सन मामले से जुड़े नए तथ्य सामने आए.

      -
      - - -
      From BBC World Service Tamil News (http://www.bbc.co.uk/tamil/)
      -
      -

      செய்தியரங்கம்

      -

      இலங்கையில் சிறுபான்மைக் கட்சிகளுக்கிடையில் பொது இணக்கப்பாட்டை எட்டும் முயற்சியில் ...

      -
      - -
      From Yahoo Indian- Malayalam (http://in.malayalam.yahoo.com/)
      -
      -

      പഴശ്ശിരാജ മെഗാഹിറ്റ്; ‘സ്വ.ലേ’ മുന്നേറുന്നു

      -

      പഴശ്ശിരാജ മലയാള സിനിമയുടെ ചരിത്രത്തിലെ ഏറ്റവും വലിയ വിജയമാകുകയാണ്. 30 ദിവസങ്ങള്‍ പിന്നിട്ടപ്പോള്‍ ചിത്രത്തിന്‍റെ കളക്ഷന്‍ 12 കോടി...

      -
      - -
      From Yahoo Indian- Punjabi (http://in.punjabi.yahoo.com/)
      -
      -

      ਚਾਂਸ ਪੇ ਡਾਂਸ ਸ਼ਾਹਿਦ ਦੀ ਕਹਾਣੀ

      -

      ਕੇਨ ਘੋਸ਼ ਦੀ ਫ਼ਿਲਮ ਚਾਂਸ ਪੇ ਡਾਂਸ ਫ਼ਿਲਮ ਵਿੱਚ ਸ਼ਾਹਿਦ ਕਪੂਰ ਮੁੱਖ ਭੂਮਿਕਾ ਵਿੱਚ ਹਨ। ਫ਼ਿਲਮ ਦੇ ਬਾਰੇ ਵਿੱਚ ਕਿਹਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਆਪ ਸ਼ਾਹਿਦ ਦੀ ਕਹਾਣੀ ਹੈ। ਫ਼ਿਲਮ ਦਾ ਨਾਇਕ ਮੱਧਮ ਪਰਿਵਾਰ ਦਾ ਦੱਸਿਆ ਗਿਆ ਹੈ ਅਤੇ ਕਈ...

      -
      - -
      From Yahoo Indian- Gujarati (http://in.gujarati.yahoo.com/)
      -
      -

      શિલ્પા અને રાજ આજે સાત ફેરા લેશે

      -

      બોલીવુડ સુંદરી શિલ્પા શેટ્ટી પોતાના મંગેતર ભારતીય મૂળના બ્રિટિશ ઉદ્યોગપતિ રાજ કુંદ્રા સાથે આજે લગ્ન બંધનમાં બંધાય જશે. વિવાહ સમારંભ રાજના મિત્ર કિરણ બાવાના ખંડાલામાં આવેલ ફાર્મ...

      -
      - - -

      Arabic Fonts/Languages

      -
      From BBC World Service Arabic News (http://www.bbc.co.uk/arabic/)
      -
      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع القفاز الجلدي المرصع الذي ارتداه مايكل جاكسون للمرة الاولى عام 1983 خلال اول خطوة من رقصته الشهيرة "السير على القمر (مون ووك)" بسعر 350 الف دولار السبت في نيويورك خلال مزاد لمقتنيات المغني الامريكي الراحل.

      -
      - -
      In alternative fonts (available with mPDF):
      -
      -
      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -
      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -

      بيع قفاز مايكل جاكسون بـ 350 الف دولار

      -
      -
      - - - -
      From BBC World Service Persian News (http://www.bbc.co.uk/persian/)
      -
      -

      \'طبق نظرسنجی دولت انتخابات به دور دوم کشیده می شد\'

      -

      علیرضا زاکانی نماینده تهران در مجلس گفته که یک روز پیش از برگزاری انتخابات ریاست جمهوری در ایران، نظرسنجی وزارت کشور و وزارت اطلاعات ایران نشان می داد که انتخابات به دور دوم کشیده می شود.

      -
      - - -
      From BBC World Service Urdu News (http://www.bbc.co.uk/urdu/)
      -
      -

      جیکسن کا دستانہ 35 لاکھ ڈالر کا

      -

      امریکی پاپ سنگر مائیکل جیکسن کا دستانہ جس پر نقلی ہیرے جڑے ہوئے تھے اور جو انھیں پہلی مرتبہ ’مون واک‘ پیش کیئے جانے پر ملا تھا پینتیس لاکھ ڈالر میں نیلام ہو گیا ہے۔

      -
      - - -
      From BBC World Service Pashto News (http://www.bbc.co.uk/pashto/)
      -
      -

      ستاسي پيغامونه اود خوښى سندرې

      -

      د موسيقۍ داخپرونې په افغانستان کې داېف اېم په څپود سهار په لسو بجو اوريدلى شى

      -
      - - - -

      Fixed-position block elements

      -mPDF 4.0 supports fixed-position block elements (at least partially). This page has some examples of fixed-position elements. -
      -
      #1. Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula eros vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula eros vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio.

      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt eros turpis, vel aliquam quam eros odio et sapien. -
      -Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt eros turpis, vel aliquam quam eros odio et sapien. -
      -Mauris ante pede, eros auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.
      -
      - -
      #2. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna.
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      - -
      #3. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.
      - -
      #4. overflow: auto
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.
      - -
      #5. overflow: visible
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.
      - -
      #6. overflow: hidden
      Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.
      - -
      #7. width: auto
      Shrink-to-fit
      - - -

      Barcodes

      -

      NB Quiet zones - The barcode object includes space to the right/left or top/bottom only when the specification states a \'quiet zone\' or \'light margin\'. All the examples below also have CSS property set on the barcode object i.e. padding: 1.5mm;

      - -

      EAN-13 Barcodes (EAN-2 and EAN-5)

      -

      NB EAN-13, UPC-A, UPC-E, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      -

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      EAN13Standard EAN-13 barcode. Accepts 12 or 13 characters (creating checksum digit if required). [0-9] numeric only.
      ISBNStandard EAN-13 barcode with \'ISBN\' number shown above [shown at height="0.66"]
      ISSNStandard EAN-13 barcode with \'ISSN\' number shown above [shown at size="0.8"]
      - -

      EAN-8, UPC-A and UPC-E Barcodes

      -

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).

      -

      A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      UPCAUPC-A barcode. This is a subset of the EAN-13. (098277211236) Accepts 11 or 12 characters (creating checksum digit if required). [0-9] numeric only
      UPCEUPC-E barcode. Requires the UPC-A code to be entered as above (e.g. 042100005264 to give 425261). NB mPDF will die with an error message if the code is not valid, as only some UPC-A codes can be converted into valid UPC-E codes. UPC-E doesn\'t have a check digit encoded explicity, rather the check digit is encoded in the parity of the other six characters. The check digit that is encoded is the check digit from the original UPC-A barcode.
      EAN8EAN-8 (5512345) Accepts 7 or 8 characters (creating checksum digit if required). [0-9] numeric only
      - -

      EAN-2 and EAN-5 supplements, and combined forms

      -

      UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      EAN2EAN-2 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Used to denote an issue of a periodical. EAN-2 supplement accepts 2 digits [0-9] only, EAN-5 five.
      EAN5EAN-5 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Usually used in conjunction with EAN-13 for the price of books. 90000 is the code for no price.
      EAN13P2Standard EAN-13 barcode with 2-digit UPC supplement (07)
      ISBNP2Standard EAN-13 barcode with \'ISBN\' number shown above, and 2-digit EAN-2 supplement
      ISSNP2Standard EAN-13 barcode with \'ISSN\' number shown above, and 2-digit EAN-2 supplement
      UPCAP2UPC-A barcode with 2-digit EAN-2 supplement. This is a subset of the EAN-13. (075678164125 07)
      UPCEP2UPC-E barcode with 2-digit EAN-2 supplement. (042100005264 07)
      EAN8P2EAN-8 barcode with 2-digit EAN-2 supplement (55123457 07)
      EAN13P5Standard EAN-13 barcode with 5-digit UPC supplement (90000)
      ISBNP5Standard EAN-13 barcode with \'ISBN\' number shown above, and 5-digit EAN-5 supplement
      ISSNP5Standard EAN-13 barcode with \'ISSN\' number shown above, and 5-digit EAN-5 supplement
      UPCAP5UPC-A barcode with 5-digit EAN-5 supplement. This is a subset of the EAN-13. (075678164125 90000)
      UPCEP5UPC-E barcode with 5-digit EAN-5 supplement. (042100005264 90000)
      EAN8P5EAN-8 barcode with 5-digit EAN-5 supplement (55123457 90000)
      - - -

      Postcode Barcodes

      -

      These all have sizes fixed by their specification. Although they can be altered using \'size\' it is not recommended. \'height\' is ignored.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      IMBIntelligent Mail Barcode - also known as: USPS OneCode 4-State Customer Barcode, OneCode 4CB, USPS 4CB, 4-CB, 4-State Customer Barcode, USPS OneCode Solution Barcode. (01234567094987654321-01234567891) Accepts: Up to 31 digits (required 20-digit Tracking Code, and up to 11-digit Routing Code; this may be 0, 5, 9, or 11 digits). If the Routing code is included, it should be spearated by a hyphen - like this example.
      RM4SCCRoyal Mail 4-state Customer barcode (SN34RD1A). Accepts: max. 9 characters. Valid characters: [A-Z,0-9] Checksum digit: automatic.
      KIXDutch KIX version of Royal Mail 4-state Customer barcode (SN34RD1A). Valid characters: [A-Z,0-9]. Checksum digit: automatic.
      POSTNETPOSTNET barcode. Accepts 5, 9 or 11 digits. Valid characters: [0-9]. Checksum digit: automatic.
      PLANETPLANET barcode. Accepts 11 or 13 digits. Valid characters: [0-9]. Checksum digit: automatic.
      - - -

      Variable width Barcodes

      -

      These barcodes are all of variable length depending on the code entered. There is no recommended maximum size for any of these specs, but all recommend a minimum X-dimension (width of narrowest bar) as 7.5mil (=0.19mm). The default used here is twice the minimum i.e. X-dim = 0.38mm.

      -

      The specifications give a minimum height of 15% of the barcode length (which can be variable). The bar height in mPDF is set to a default value of 10mm.

      -

      \'size\' will scale the barcode in both dimensions. mPDF will accept any number, but bear in mind that size="0.5" will set the bar width to the minimum. The \'height\' attribute further allows scaling - this factor is applied to already scaled barcode. Thus size="2" height="0.5" will give a barcode twice the default width (X-dim=0.76mm) and at the default height set in mPDF i.e. 10mm.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      CODEDESCRIPTIONBARCODE
      C128ACODE 128 A. Valid characters: [A-Z uppercase and control chars ASCII 0-31]. Checksum digit: automatic.
      C128BCODE 128 B. Valid characters: [Upper / Lower Case + All ASCII Printable Characters]. Checksum digit: automatic.
      C128CCODE 128 C. Valid characters: [0-9]. Must be an even number of digits. Checksum digit: automatic.
      EAN128C [A/B/C]EAN128 (A, B, and C). Specified variant of Code 128, utilising an FNC1 start code. Also known as UCC/EAN-128 or GS1-128. Valid characters: [cf. Code 128]. Checksum digit: automatic.
      C39CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. Valid characters: [0-9 A-Z \'-\' . Space $/+%]
      C39+CODE 39 + CHECKSUM. Checksum digit: automatic.
      C39ECODE 39 EXTENDED. Valid characters: [ASCII-characters between 0..127]
      C39E+CODE 39 EXTENDED + CHECKSUM. Checksum digit: automatic.
      S25Standard 2 of 5. Valid characters: [0-9]
      S25+Standard 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25Interleaved 2 of 5. Valid characters: [0-9]
      I25+Interleaved 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.
      I25BInterleaved 2 of 5 with bearer bars. Valid characters: [0-9]
      I25B+Interleaved 2 of 5 + CHECKSUM with bearer bars. Valid characters: [0-9]. Checksum digit: automatic.
      C93CODE 93 - USS-93 (extended). Valid characters: [ASCII-characters between 0..127]. Checksum digits: automatic.
      MSIMSI. Modified Plessey. Valid characters: [0-9]
      MSI+MSI + CHECKSUM (module 11). Checksum digit: automatic.
      CODABARCODABAR. Valid characters: [0-9 \'-\' $:/.+ ABCD] ABCD are used as stop and start characters e.g. A34698735B
      CODE11CODE 11. Valid characters: [0-9 and \'-\']. Checksum digits: 1 (or 2 if length of code is > 10 characters) - automatic.
      - -'; - - -//============================================================== -//============================================================== -//============================================================== -include("../mpdf.php"); - -$mpdf=new mPDF('s'); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); - -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm b/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm deleted file mode 100644 index 73eca93a2..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm +++ /dev/null @@ -1,36 +0,0 @@ - - - - - -

      Line-height & vertical alignment

      -
      In these examples, top and bottom padding are set to 0, so the block height = line height.
      -
      The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.
      -Line-height: "normal" (set in mPDF by default as 1.33).
      -

      Normal text 16pt font-size  and normal again

      - -
      Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.
      -

      Normal text 16pt font-size  and normal again

      - -
      Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).
      -When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.
      -This means that as far as possible, multiple lines will remain equally spaced
      -Line-height: 200%
      -

      Normal text 16pt font-size  and normal again

      - -
      If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height. -
      Line-height: 2em
      -

      Normal text 18pt font-size  and normal again

      - -
      If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.
      -Line-height: 2em
      -

      Normal text 24pt font-size  and normal again

      - - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php b/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php deleted file mode 100644 index fb30356f5..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php +++ /dev/null @@ -1,492 +0,0 @@ - -body { - font-family: sans-serif; -} -@page { - margin-top: 2.0cm; - margin-bottom: 2.0cm; - margin-left: 2.3cm; - margin-right: 1.7cm; - margin-header: 8mm; - margin-footer: 8mm; - footer: html_myHTMLFooter; - background-color:#ffffff; -} - -@page :first { - margin-top: 6.5cm; - margin-bottom: 2cm; - header: html_myHTMLHeader; - footer: _blank; - resetpagenum: 1; - background-gradient: linear #FFFFFF #FFFF44 0 0.5 1 0.5; - background: #ccffff url(bgbarcode.png) repeat-y fixed left top; -} -@page letterhead { - margin-top: 2.0cm; - margin-bottom: 2.0cm; - margin-left: 2.3cm; - margin-right: 1.7cm; - margin-header: 8mm; - margin-footer: 8mm; - footer: html_myHTMLFooter; - background-color:#ffffff; -} - -@page letterhead :first { - margin-top: 6.5cm; - margin-bottom: 2cm; - header: html_myHTMLHeader; - footer: _blank; - resetpagenum: 1; -} -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; -} -div.text { - padding:1em; - margin-bottom: 0.25em; - text-align:justify; -} -div.artificial { - font-family: arialuni; /* custom font using MS Arial Unicode */ -} -p { margin-top: 0; } -.code { - font-family: mono; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; -} - - - - - - - - -

      mPDF Version 4.2

      -

      New Features

      - -
      -
        -
      • image handling improved
      • -
      • table layout - additional control over resizing
      • -
      • vertical-alignment of images - better support for all CSS types
      • -
      • top and bottom margins collapse between block elements
      • -
      • improved support for CSS line-height
      • -
      • display progress bar whilst generating file
      • -
      • CSS @page selector can be specified when adding a pagebreak
      • -
      • CSS @page selector allows different margins, backgrounds, headers/footers on :first :left and :right pages
      • -
      • PNG images with alpha channel fully supported
      • -
      • ability to generate italic and bold font variants from base font file
      • -
      • CJK fonts to embed as subsets
      • -
      • "double" border on block elements
      • -
      • character substitution for missing characters in UTF-8 fonts
      • -
      • direct passing of dynamically produced image data
      • -
      • background-gradient and background-image can now co-exist
      • -
      - -Note: automatic top- and bottom-margin to accomodate varying header/footer size was introduced in v4.0 but was not highlighted cf. AutoHeaderMargin in the Manual. - -
      -
      - -
      -

      Page backgrounds

      -Background images, gradients and/or colours can be used together on the same page. On this page, the bars on the left hand side are created using a background-image, whilst a background-gradient sets the background to the whole page. -
      -
      - -
      -

      CSS "double" border

      -Block elements can now use the CSS property: border(style) = double. See also the tiger logo in the header of this page. -
      -
      - -
      -

      CJK fonts to embed as subsets

      -When writing documents with Chinese, Japanese or Korean characters, mPDF has previously required the end-user to download Adobe\'s free CJK font pack. -The ability to embed font subsets now makes it feasible to use open license CJK fonts. 2 fonts are now available to download as an additional font-pack: -
        -
      • zn_hannom_a - contains all characters in the SJIS, BIG-5, and GBK codepages; original file was Han Nom A font (Hi-res version) from http://vietunicode.sourceforge.net/fonts/fonts_hannom.html
      • -
      • unbatang_0613 - contains all the (Korean) characters in the UHC codepage; original file from from http://kldp.net/projects/unfonts/download
      • -
      -The following characters only added an extra 15kB to the size of this PDF file, and approximately 0.15 seconds extra to compile:
      -Chinese (traditional) '."\xe6\x86\x82\xe9\xac\xb1".' ; chinese (simplified) '."\xe6\x9d\xa5\xe8\x87\xaa".' ; japanese '."\xe3\x81\x9f\xe3\x82\x90".' ; korean '."\xed\x82\xa4\xec\x8a\xa4".' -
      -
      - -
      -

      Artificial Bold and Italic

      -The text in this block is in ArialUnicodeMS font. Using embedded subsets it covers most characters you want to print - BUT it does not have bold, italic, or bold-italic forms.
      -From version 4.2, mPDF will create "artificial" font styles if they are not available as separate font files:
      -

      The quick brown fox jumps over a lazy dog

      -

      The quick brown fox jumps over a lazy dog

      -

      The quick brown fox jumps over a lazy dog

      -
      -
      - -
      -

      Character substitution in UTF-8 files

      -This paragraph has the font-family set to Trebuchet MS, and the document has the default font set as DejaVuSansCondensed. -The following characters are not present in the Trebuchet font, and are substituted from the core Adobe Zapfdingbats font:
      - -✐ ✑ ✒ ✓ ✔ ✕ ✖ ✗ ✘ ✙ ✚ ✛ ✜ ✝ ✞ ✟
      -The characters are not present in the Trebuchet font, and are substituted from the (default) DejaVuSansCondensed font:
      -ʀ ʁ ʂ ʃ ʄ ʅ ʆ ʇ ʈ ʉ ʊ ʋ ʌ ʍ ʎ ʏ
      -Character substitution in UTF-8 files is enabled by setting: -

      -$mpdf->useSubstitutionsMB = true; -

      -
      NB In mPDF 5.0 this has changed to -

      -$mpdf->useSubstitutions = true; -

      -
      -It is not recommended to enable this for regular use, as it will add to the processing time. -
      - - - - - -

      Margin-collapse

      -

      mPDF has always allowed margins to be collapsed at the top and bottom of pages. This is specified by the custom CSS property "margin-collapse: collapse"

      - -

      mPDF 4.2 also allows margins to collapse between block elements on the page. This is the default behaviour in browsers, and has been enabled in mPDF 4.2 by default.

      - -

      In the next 2 paragraphs, the first one has the margin-bottom set to 3em, and the second has the margin-top set to 0em. So the vertical-space between paragraphs is 3em:

      - -

      The quick brown fox jumps over a lazy dog

      -

      The quick brown fox jumps over a lazy dog

      - -

      In the next 2 paragraphs, the first one has the margin-bottom set to 2em, and the second has the margin-top set to 1em. The margins collapse to the larger of the adjoining margins i.e. 2em:

      - -

      The quick brown fox jumps over a lazy dog

      -

      The quick brown fox jumps over a lazy dog

      - - - - -

      Images

      - -

      PNG Alpha channel

      -PNG alpha channel transparency is now fully supported, and works against solid backgrounds, gradients or background images: - - - - - - - - -
      - -
      - -

      Image Border and padding

      -Image padding is now supported as well as border and margin: - -
      - -

      Vertical alignment

      -
      From mPDF version 4.2 onwards, most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom.
      -Note: The default value for vertical alignment has been changed to baseline, and the default padding to 0, consistent with most browsers. -
      -
      -
      -baseline: -text-bottom: -middle: -bottom: -text-top: -top: -
      - - - -

      Image Alignment

      -
      From mPDF version 4.2 onwards, in-line images can be individually aligned (vertically). -
      - -
      -These images -are -top -aligned -
      - -
      -These images -are -text-top -aligned -
      - -
      -These images -are -bottom -aligned -
      - -
      -These images -are -text-bottom -aligned -
      - -
      -These images -are -baseline -aligned -
      - -
      -These images -are -middle -aligned -
      - - - -

      Images from PHP

      - -
      - -
      -This image was created with the following code: - -

      - $img = imagecreatetruecolor(200, 200);
      - $white = imagecolorallocate($img, 255, 255, 255);
      - $red = imagecolorallocate($img, 255, 0, 0);
      - $green = imagecolorallocate($img, 0, 255, 0);
      - $blue = imagecolorallocate($img, 0, 0, 255);
      - imagearc($img, 100, 100, 200, 200, 0, 360, $white);
      - imagearc($img, 100, 100, 150, 150, 25, 155, $red);
      - imagearc($img, 60, 75, 50, 50, 0, 360, $green);
      - imagearc($img, 140, 75, 50, 50, 0, 360, $blue);
      - ob_start();
      - imagejpeg($img);
      - $mpdf->smileyface = ob_get_clean();
      - imagedestroy($img);
      -

      -and written to the document using: -

      -<img src="var:smileyface" /> -

      - - - -

      Line-height inheritance

      -Line-height inheritance has been altered to follow the CSS2 recommendation: -
        -
      • normal is inherited as "normal"
      • -
      • 1.2 is inherited as a factor
      • -
      • 120% is converted to an actual value and then inherited as the computed value
      • -
      • em is converted to an actual value and then inherited as the computed value
      • -
      • px pt mm are inherited as fixed values
      • -
      - -
      Relative values (e.g. 1.3, normal)
      -
      -This DIV has the line-height set as "2.0" and font-size as 12pt. The line-height is therefore 24pt, but the factor of 2 is inherited...
      -Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse... -
      -This DIV has the font-size set as 8pt. The line-height of 2 is inherited...
      -Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. -
      -This DIV has the font-size set as 18pt. The line-height of 2 is inherited...
      -Nulla felis erat, imperdiet eu, ullamcorper non... -
      -
      -
      -
      -
      Absolute values (e.g. 130%, 1.3em, 18pt)
      -
      -This DIV has the line-height set as "200%" and font-size as 12pt. The computed line-height of 24pt is inherited...
      -Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse... -
      -This DIV has the font-size set as 8pt. The computed line-height of 24pt is inherited...
      -Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. -
      -This DIV has the font-size set as 18pt. The computed line-height of 24pt is inherited...
      -Nulla felis erat, imperdiet eu, ullamcorper non... -
      -
      -
      - - - -

      Line-height & vertical alignment

      -
      In these examples, top and bottom padding are set to 0, so the block height = line height.
      -
      The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.
      -Line-height: "normal" (set in mPDF by default as 1.33).
      -

      Normal text 16pt font-size  and normal again

      - -
      Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.
      -

      Normal text 16pt font-size  and normal again

      - -
      Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).
      -When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.
      -This means that as far as possible, multiple lines will remain equally spaced
      -Line-height: 200%
      -

      Normal text 16pt font-size  and normal again

      - -
      If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height. -
      Line-height: 2em
      -

      Normal text 18pt font-size  and normal again

      - -
      If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.
      -Line-height: 2em
      -

      Normal text 24pt font-size  and normal again

      - -
      -This broadly reflects the behaviour of IE and Firefox. Note that tall characters such as  may fall outside the computed line-heights. See the same in an HTML page. - - - -

      Extended use of CSS @page selectors

      -The CSS @page selector, together with the pseudo-selectors :first :left :right have increased support in mPDF 4.2
      -A named @page can be selected when forcing a new page, e.g. this page was started with:
      -<pagebreak page-selector="letterhead" /> -
      -The header and background on this page (and page 1 of the document) are set by the CSS selector: @page letterhead :first {} whilst subsequent pages have no header, a footer, and no background. -
      -CSS @page selectors allow different margins, backgrounds, headers/footers to be set on :first :left and :right pages. Only fixed or mirrored left- and right-margins are supported (i.e. cannot specify different margins for :left and :right). -
      -This layout can be used to produce company letters with only the first page on letterheaded paper. - - -

      Table Layout control

      -

      mPDF attempts to layout tables according to HTML and CSS specifications. However, because of the difference between screen and paged media, mPDF resizes tables when necessary to make them fit the page. This will happen if the minimum table-width is greater than the page-width. Minimum table-width is defined as the minimum width to accomodate the longest word in each column i.e. words will never be split. -

      -

      This resizing (minimum-width) can be disabled using a custom CSS property "overflow" on the TABLE tag. There are 4 options:

      -<table style="overflow: auto"> (this is the default, using resizing) - - - - -
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      -
      -<table style="overflow: visible"> (disables resizing, but allows overflow to show) - - - - -
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      -
      - -<table style="overflow: hidden"> (disables resizing, and hides/clips any overflow) - - - - -
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      -
      - -<table style="overflow: wrap"> (forces words to break as necessary) - - - - -
      VerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatallVerylongwordwithnospacesinitatall
      -
      - - - -'; -if ($_REQUEST['html']) { echo $html; exit; } - - -//============================================================== -//============================================================== -//============================================================== -define('_MPDF_URI','../'); // required for the progress bar - -include("../mpdf.php"); - -$mpdf=new mPDF('','A4','','',15,15,20,20,5,5); - -$mpdf->StartProgressBarOutput(2); // 2 => advanced mode - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->useSubstitutions = true; - -// Dynamically create image in var:smileyface - $img = imagecreatetruecolor(200, 200); - $white = imagecolorallocate($img, 255, 255, 255); - $red = imagecolorallocate($img, 255, 0, 0); - $green = imagecolorallocate($img, 0, 255, 0); - $blue = imagecolorallocate($img, 0, 0, 255); - imagearc($img, 100, 100, 200, 200, 0, 360, $white); - imagearc($img, 100, 100, 150, 150, 25, 155, $red); - imagearc($img, 60, 75, 50, 50, 0, 360, $green); - imagearc($img, 140, 75, 50, 50, 0, 360, $blue); - ob_start(); - imagejpeg($img); - $mpdf->smileyface = ob_get_clean(); - imagedestroy($img); - - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php deleted file mode 100644 index ab0c2b652..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php +++ /dev/null @@ -1,431 +0,0 @@ - -body { - font-family: sans-serif; - font-size: 10pt; -} -h4 { - font-variant: small-caps; -} -h5 { - margin-bottom: 0; - color: #110044; -} -dl { - margin: 0; -} - -

      mPDF

      -

      Fonts in mPDF Version 5.x

      -

      Note: This example will only display correctly if you have all the fonts installed in mPDF

      - -

      mPDF version 5 supports Truetype fonts, reading and embedding directly from the .ttf font files. Fonts must follow the Truetype specification and use Unicode mapping to the characters. Truetype collections (.ttc files) and Opentype files (.otf) in Truetype format are also supported.

      - -

      Easy to add new fonts

      -
        -
      1. Upload the Truetype font file to the fonts directory (/ttfonts)
      2. -
      3. Define the font file details in the configuration file (config_fonts.php)
      4. -
      5. Access the font by specifying it in your HTML code as the CSS font-family
      6. -
      - -
      These are some examples of Windows fonts:
      -
      -
      Arial - The quick, sly fox jumped over the lazy brown dog.
      -
      Comic Sans MS - The quick, sly fox jumped over the lazy brown dog.
      -
      Trebuchet - The quick, sly fox jumped over the lazy brown dog.
      -
      Calibri - The quick, sly fox jumped over the lazy brown dog.
      -
      QuillScript - The quick, sly fox jumped over the lazy brown dog.
      -
      Lucidaconsole - The quick, sly fox jumped over the lazy brown dog.
      -
      Tahoma - The quick, sly fox jumped over the lazy brown dog.
      -
      - -

      Full Unicode support

      - -

      The DejaVu fonts distributed with mPDF contain an extensive set of characters, but it is easy to add fonts to access uncommon characters.

      - -
      -
      -
      Georgian (DejaVuSansCondensed)
      -
      Ⴀ Ⴁ Ⴂ Ⴃ Ⴄ Ⴅ Ⴆ Ⴇ Ⴈ Ⴉ Ⴊ Ⴋ Ⴌ Ⴍ Ⴎ Ⴏ Ⴐ Ⴑ Ⴒ Ⴓ
      -
      Runic (Junicode)
      -
      ᚠ ᚡ ᚢ ᚣ ᚤ ᚥ ᚦ ᚧ ᚨ ᚩ ᚪ ᚫ ᚬ ᚭ ᚮ ᚯ ᚰ ᚱ ᚲ ᚳ ᚴ ᚵ ᚶ ᚷ ᚸ ᚹ ᚺ ᚻ ᚼ
      -
      Greek Extended (Quivira)
      -
      ἀ ἁ ἂ ἃ ἄ ἅ ἆ ἇ Ἀ Ἁ Ἂ Ἃ Ἄ Ἅ Ἆ Ἇ ἐ ἑ ἒ ἓ ἔ ἕ
      -
      IPA Extensions (Quivira)
      -
      ɐ ɑ ɒ ɓ ɔ ɕ ɖ ɗ ɘ ə ɚ ɛ ɜ ʣ ʤ ʥ ʦ ʧ ʨ ʩ ʪ ʫ
      -
      Letterlike Symbols (Symbola)
      -
      ℀ ℁ ℂ ℃ ℄ ℅ ℆ ℇ ℈ ℉ ℊ ℋ ℌ ℍ ℎ ℏ ℐ ℑ ℒ ℓ ℔ ℕ № ℗ ℘ ℙ ℚ ℛ ℜ
      -
      Mathematical Operators (Symbola)
      -
      ∀ ∁ ∂ ∃ ∄ ∅ ∆ ∇ ∈ ∉ ∊ ∋ ∌ ∍ ∎ ∏ ∐ ∑ − ∓ ∔ ∕ ∖ ∗ ∘ ∙ √ ∛ ∜ ∝ ∞
      -
      Miscellaneous Technical (Symbola)
      -
      ⌀ ⌁ ⌂ ⌃ ⌄ ⌅ ⌆ ⌇⌎ ⌏ ⌐ ⌑ ⌒ ⌓ ⌔ ⌕ ⌖ ⌗ ⌘ ⌙ ⌚ ⌛ ⌠ ⌡ ⌢ ⌣ ⌤ ⌥ ⌦ ⌧
      -
      Enclosed Alphanumerics (Quivira)
      -
      ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯
      -
      Miscellaneous Symbols (DejaVuSansCondensed)
      -
      ☀ ☁ ☂ ☃ ☄ ★ ☆ ☇ ☈ ☉ ☊ ☋ ☌ ☍ ☎ ☏ ☐ ☑ ☒
      -
      Supplemental Arrows-B (Symbola)
      -
      ⤀ ⤁ ⤂ ⤃ ⤄ ⤅ ⤆ ⤇ ⤈ ⤉ ⤊ ⤋ ⤐ ⤑ ⤔ ⤕ ⤖ ⤗ ⤘ ⥶ ⥷ ⥸ ⥹ ⥺ ⥻ ⥼ ⥽
      -
      -
      -The online manual lists a number of open-source fonts available to cover uncommon characters: http://mpdf1.com/manual/index.php?tid=451 - - -

      Complex scripts

      - -

      Although all characters may be displayed, there are various reasons why a script may not appear as expected.

      - -

      Right-to-left languages (Hebrew, Arabic etc.)

      -Arabic languages and Hebrew are written in a right-to-left direction (RTL). mPDF recognises both Arabic and Hebrew languages and reverses text direction automatically. - -
      -ألسّلام عليكم     שלום -
      - -Arabic languages (but not Hebrew) also change the form of the letter depending on its position in the text e.g. these are the initial, medial, final, and isolated forms of arabic letter \'ain\': - -
      ع ـع ـعـ عـ
      -The isolated characters are contained in the Unicode block \'Arabic\' U+0600 - U+06FF.
      -The initial, medial and final forms are contained in Unicode Blocks \'Arabic Presentation Forms\' A and B (U+FB50 - U+FDFF, U+FE70 - U+FEFE). Note that quite a large number of fonts contain the isolated characters but not the presentation forms. Fonts used with mPDF must contain the \'Arabic Presentation Forms\' in order to display arabic text correctly. mPDF automatically converts letters to their initial/medial/final forms in several languages: arabic, persian/farsi, urdu, sindhi and pashto. - -

      Arabic text is used for many different languages e.g. persian/farsi, urdu, pashto etc. These languages often contain letters unique to that language. \'Arabic\' fonts do not always contain the full set of arabic charcters necessary for all languages.

      - -

      Other RTL languages (using other alphabets) are reversed in order, but not otherwise processed, by mPDF e.g. Syriac, Thaana, N\'Ko, and Samaritan.

      - - -

      Indic languages

      -Indic languages are also complex scripts which require some processing of characters before display. For example some vowels consist of 2 characters, to be placed before and after the adjacent consonant e.g. -
      -
      U+0D1C + U+0D4C [vowel AU] = [written together as &#x0D1C;&#x0D4C;]
      - ജ + ൌ = ജൌ
      -

      Consonant conjuncts are where two adjacent characters are written as a single \'conjunct\' form e.g.

      -
      प + ॡ = पॣ
      -

      mPDF can support some of these languages, but requires specially prepared font files that are unique to mPDF.
      -Supported languages: Bengali, Devanāgarī, Gujarāti, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu

      - -
      - আসসালামু আলাইকুম - નમસ્તે - നമസ്കാരം - नमस्ते - வணக்கம்! -
      -Complex scripts not supported: Khmer, Sinhala, Tibetan, Myanmar (Burmese), Balinese - -

      Vertical writing

      -
      Vertical writing is not supported by mPDF (e.g. Mongolian and Phags-pa) although the individual characters can be displayed using suitable fonts.
      - - - -

      Combining diacritics

      -

      In Unicode, letters with diacritics (e.g. ÁáȦȧÄä) are usually represented as a single character e.g. Unicode U+0196 is an A Umlaut. There are 4 blocks in Unicode of diacritics or \'marks\' which can be used to combine with adjacent letters: Combining Diacritical Marks (U+0300 - U+036F), Combining Diacritical Marks Supplement (U+1DC0 - U+1DFF), Combining Marks for Symbols(U+20D0 - U+20FF) and Combining Half Marks (U+FE20 - U+FE2F).

      - - -

      Software applications use special positioning information stored in OpenType font files to resposition the diacritic/mark depending on the context. mPDF does not support this repositioning and is dependent on the font design and original placement of the diacritic: -

      - - -
      -
      Á á Ȧ ȧ Ä ä ï (Precomposed characters: DejaVu Sans Condensed)
      -
      Á á Ȧ ȧ Ä ä ï (Using diacritics: DejaVu Sans Condensed)
      -
      Á á Ȧ ȧ Ä ä ï (Arial Unicode MS)
      -
      Á á Ȧ ȧ Ä ä ï (Times New Roman)
      -
      Á á Ȧ ȧ Ä ä ï (Courier New)
      -
      -

      It is recommended to use precomposed characters whenever possible with mPDF.

      - - - - -

      Unicode Supplementary Planes

      -

      The original Unicode allocated characters between x0000 and xFFFF (65,536 characters). This \'Basic Multilingual Plane\' supported most characters in common use, including a large number of Unified Chinese-Japanese-Korean characters (CJK). Later the Unicode standard was extended to 16 Planes.

      - -

      The first plane (plane 0), the Basic Multilingual Plane (BMP), is where most characters have been assigned so far.

      -

      Plane 1, the Supplementary Multilingual Plane (SMP), is mostly used for historic scripts such as Linear B, but is also used for musical and mathematical symbols.

      -

      Plane 2, the Supplementary Ideographic Plane (SIP), is used for about 40,000 Unified Han (CJK) Ideographs.

      - -

      mPDF version 5 supports fonts containing characters from all Unicode Planes. By choosing the correct font, almost every single character from Unicode 5 can be displayed in a PDF file.

      - -

      Unicode Supplementary Multilingual Plane (SMP or Plane 1) U+10000 - U+1FFFF

      -
      Gothic text
      -
      -This paragraph shows Gothic text. These characters lie in the Unicode Supplementary Multilingual Plane U+10330 - U+1034F. -
      -
      -
      -𐌰 𐌱 𐌲 𐌳 𐌴 𐌵 𐌶 𐌷 𐌸 𐌹 𐌺 𐌻 𐌼 𐌽 𐌾 𐌿 𐍀 𐍁 𐍂 𐍃 𐍄 𐍅 𐍆 𐍇 𐍈 𐍉 𐍊 -
      -
      -
      -Font: MPH2BDamase (damase_v.2.ttf) available from: http://www.wazu.jp/gallery/views/View_MPH2BDamase.html -
      - -
      Egyptian Hieroglyphics
      -
      -This paragraph shows Egyptian Hieroglyphics. These characters lie in the Unicode Supplementary Multilingual Plane U+13000 - U+1342F. -
      -
      -
      -𓀀 𓀁 𓀂 𓀃 𓀄 𓀅 𓀆 𓀇 𓀈 𓀉 𓀊 𓀋 𓀌 𓀍 𓀎 𓀏 𓀐 𓀑 -
      -
      -
      -Font: Aegyptus.otf available from: http://users.teilar.gr/~g1951d/ -
      - -

      SMP contains mainly ancient scripts - see http://mpdf1.com/manual/index.php?tid=451 for full list.

      - -

      mPDF uses a different method to embed fonts in the PDF file if they include characters from SMP or SIP, because the characters cannot be represented by a 4 character hex code 0000-FFFF. This method is less eficient than the default method, and it can be suppressed by adding the font name to the array \'BMPonly\' in the config_fonts.php configuration file.

      - -

      Note that the DejaVu fonts distributed with mPDF and (GNU)FreeSans and FreeSerif fonts do contain a few characters in the SMP plane, but most users will not require them and by default they have been added to the array \'BMPonly\'.

      - - - -

      CJK characters

      -

      Below are examples of all the CJK Unicode blocks contained in the Basic Multilingual Plane and Supplemental Ideographic Plane

      - -
      -
      Plane 0 (BMP)
      -
      -
      CJK Radicals Supplement
      -
      ⺎ ⺏ ⺐ ⺑ ⺒ ⺓ ⺔ ⺕ ⺖ ⺗ ⺘ ⺙ ⺛ ⺜ ⺝ ⺞ ⺟ ⺠ ⺡ ⺢ ⺣ ⺤ ⺥ ⺦ ⺧ ⺨ ⺩ ⺪
      -
      Kangxi Radicals
      -
      ⼳ ⼴ ⼵ ⼶ ⼷ ⼸ ⼹ ⼺ ⼻ ⼼ ⼽ ⼾ ⼿ ⽀ ⽁ ⽂ ⽃ ⽄ ⽅ ⽆ ⽇ ⽈ ⽉ ⽊ ⽋ ⽌ ⽍
      -
      Ideographic Description Characters
      -
      ⿰ ⿱ ⿲ ⿳ ⿴ ⿵ ⿶ ⿷ ⿸ ⿹ ⿺ ⿻
      -
      CJK Symbols and Punctuation
      -
       〈 〉 《 》 「 」 『 』 【 】 〒 〓 〔 〕 〖 〗 〘 〙 〚 〛 〜 〝 〞 〦 〧 〨 〩 〪
      -
      Hiragana
      -
      ぁ あ ぃ い ぅ う ぇ え ぉ お か が き ぎ く ぐ け げ こ ご さ ざ
      -
      Katakana
      -
      ゠ ァ ア ィ イ ゥ ウ ェ エ ォ オ カ ガ キ ギ ク グ ケ ゲ コ ゴ
      -
      Bopomofo
      -
      ㄅ ㄆ ㄇ ㄈ ㄉ ㄊ ㄋ ㄌ ㄍ ㄎ ㄏ ㄐ ㄑ ㄒ ㄓ ㄔ ㄕ ㄖ
      -
      Hangul Compatibility Jamo
      -
      ㄱ ㄲ ㄳ ㄴ ㄵ ㄶ ㄷ ㄸ ㄹ ㄺ ㄻ ㄼ ㄽ ㄾ ㄿ ㅀ ㅁ ㅂ
      -
      Kanbun
      -
      ㆐ ㆑ ㆒ ㆓ ㆔ ㆕ ㆖ ㆗ ㆘ ㆙ ㆚ ㆛ ㆜ ㆝ ㆞ ㆟
      -
      Bopomofo Extended
      -
      ㆠ ㆡ ㆢ ㆣ ㆤ ㆥ ㆦ ㆧ ㆨ ㆩ ㆪ ㆫ ㆬ ㆭ ㆮ ㆯ ㆰ ㆱ ㆲ ㆳ ㆴ ㆵ ㆶ ㆷ
      -
      Katakana Phonetic Extensions
      -
      ㇰ ㇱ ㇲ ㇳ ㇴ ㇵ ㇶ ㇷ ㇸ ㇹ ㇺ ㇻ ㇼ ㇽ ㇾ ㇿ
      -
      Enclosed CJK Letters and Months
      -
      ㈄ ㈅ ㈆ ㈇ ㈈ ㈉ ㈊ ㈋ ㈌ ㈍ ㈎ ㈏ ㈐ ㈑ ㈒ ㈓ ㈔ ㈕ ㈖ ㈗ ㈘ ㈙ ㈚ ㈛ ㈜
      -
      CJK Compatibility
      -
      ㌀ ㌁ ㌂ ㌃ ㌄ ㌅ ㌆ ㌇ ㌈ ㌉ ㌊ ㌋ ㌌ ㌍ ㌎ ㌏ ㌐ ㌑ ㌒ ㌓ ㌔ ㌕ ㌖ ㌗ ㌘
      -
      CJK Unified Ideographs Extension A
      -
      㐀 㐁 㐂 㐃 㐄 㐅 㐆 㐇 㐈 㐉 㐊 㐋 㐌 㐍 㐎 㐏 㐐 㐑 㐒 㐓 㐔 㐕 㐖 㐗 㐘
      -
      CJK Unified Ideographs
      -
      一 丁 丂 七 丄 丅 丆 万 丈 三 上 下 丌 不 与 丏 丐 丑 丒 专 且 丕 世 丗 丘
      -
      Yi Syllables
      -
      ꀀ ꀁ ꀂ ꀃ ꀄ ꀅ ꀆ ꀇ ꀈ ꀉ ꀊ ꀋ ꀌ ꀍ ꀎ ꀏ ꀐ ꀑ ꀒ ꀓ ꀔ ꀕ ꀖ ꀗ ꀘ ꀙ ꀚ
      -
      Yi Radicals
      -
      ꒐ ꒑ ꒒ ꒓ ꒔ ꒕ ꒖ ꒗ ꒘ ꒙ ꒚ ꒛ ꒜ ꒝ ꒞ ꒟ ꒠ ꒡ ꒢ ꒣ ꒤ ꒥ ꒦ ꒧ ꒨ ꒩
      -
      Hangul Syllables
      -
      가 각 갂 갃 간 갅 갆 갇 갈 갉 갊 갋 갌 갍 갎 갏 감 갑 값 갓 갔 강 갖 갗 갘
      -
      CJK Compatibility Ideographs
      -
      豈 更 車 賈 滑 串 句 龜 契 金 喇 奈 懶 癩 羅 蘿 螺 裸 邏 樂 洛 烙 珞 落 酪
      -
      - -
      Plane 2 (SIP)
      -
      -
      CJK Unified Ideographs Extension B
      -
      𠀀 𠀁 𠀂 𠀃 𠀄 𠀅 𠀆 𠀇 𠀈 𠀉 𠀊 𠀋 𠀌 𠀍 𠀎 𠀏 𠀐 𠀑 𠀒 𠀓
      - -
      CJK Unified Ideographs Extension C
      -
      𪜀 𪜁 𪜂 𪜃 𪜄 𪜅 𪜆 𪜇 𪜈 𪜉 𪜊 𪜋 𪜌 𪜍 𪜎 𪜏 𪜐 𪜑 𪜒 𪜓
      - -
      CJK Compatibility Ideographs Supplement
      -
      丽 丸 乁 𠄢 你 侮 侻 倂 偺 備 僧 像 㒞 𠘺 免 兔 兤 具 𠔜 㒹
      -
      - -
      - - - -

      Using CJK fonts in mPDF

      - -

      Fonts containing CJK characters are large files, typically 10-30MB. Adobe provides a free download of an \'Asian font pack\' allowing you to create PDF files without including (embedding) the font information in the file. This keeps the file size to a minimum and minimises resource usage on your website generating the PDF file. However, users will have to download the Adobe font packs to read the file, and other PDF software will not display the text correctly.

      - -

      mPDF allows you to embed subsets of CJK fonts keeping file size down, although there is increased memory usage to generate these files.

      - -

      Some CJK fonts are broken up into 2 files because of the size of the files. One freely available font with almost complete coverage of all CJK characters (in both BMP and SIP) is \'Sun\' available from Alan Wood\'s excellent website: http://www.alanwood.net/unicode/fonts-east-asian.html. This comes as 2 files, Sun-ExtA and Sun-ExtB (both about 20MB in size) containing the characters from BMP and SIP respectively. -

      - -

      mPDF allows you to treat these as one font by defining the second file as an SIP-extension of the first in the config_fonts.php configuration file. The following text includes random characters from the BMP and SIP mixed together:

      - -
      -
      -鼂 鼈 鼗 𣈏 𣈥 鼦 鼧 𣈯 𣈱 鼹 齄 𣈲 𣈳 齅 齐 𣈴 𣉖 齓 齚 𣉢 𣊁 齢 齩 𣊉 𣊊 -
      -
      - -

      This is the entry in the config_fonts.php configuration file:

      -
      -$this->fontdata = array(
      -...
      -       "sun-exta" => array(
      -             \'R\' => "Sun-ExtA.ttf",
      -             \'sip-ext\' => \'sun-extb\',
      -       ),
      -       "sun-extb" => array(
      -             \'R\' => "Sun-ExtB.ttf",
      -       ),
      -
      -...
      -); -
      - - -

      This is the HTML code - note only the sun-exta font-family needs to be referenced:

      -
      -<div style="font-family:sun-extA;"> -&#40706; &#40712; &#40727; &#x2320f; &#x23225; &#40742; &#40743; &#x2322f; &#x23231; &#40761; &#40772; &#x23232; &#x23233; &#40773; &#40784; &#x23234; &#x23256; &#40787; &#40794; &#x23262; &#x23281; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
      - -

      NB You may also need to edit the value $this->useAdobeCJK=false in config.php or use new mPDF(\'-aCJK\'), and edit the config_cp.php configuration file.

      - - - - -

      TrueType Collections

      - -

      TrueType Collections (.ttc files) contain more than one font. mPDF treats each font separately by defining the TTCfontID array in the config_fonts.php configuration file.

      - -

      This example uses the Windows MingLiU fonts, which consist of 2 files containing 6 fonts (note that mingliub is not a Bold variant):

      - -

      Font collection file (mingliu.ttc) contains the following fonts:
      -[1] MingLiU (mingliu) Regular
      -[2] PMingLiU (pmingliu) Regular (Proportional)
      -[3] MingLiU_HKSCS (mingliu_hkscs) Regular
      -

      - -

      Font collection file (mingliub.ttc) contains the following fonts:
      -[1] MingLiU-ExtB (mingliu-extb) Regular
      -[2] PMingLiU-ExtB (pmingliu-extb) Regular (Proportional)
      -[3] MingLiU_HKSCS-ExtB (mingliu_hkscs-extb) Regular
      -

      - -

      The following text includes characters from both BMP and SIP:

      - -
      -
      -鼂 鼦 齄 齐 齢 齩 𣊉 𣊊 -
      -
      -鼂 鼦 齄 齐 齢 齩 𣊉 𣊊 -
      -
      -鼂 鼦 齄 齐 齢 齩 𣊉 𣊊 -
      -
      - -

      This is the entry in the config_fonts.php configuration file:

      -
      -$this->fontdata = array(
      -...
      -       "mingliu" => array(
      -             \'R\' => "mingliu.ttc",
      -             \'TTCfontID\' => array (
      -                 \'R\' => 1,
      -             ),
      -             \'sip-ext\' => \'mingliu-extb\',
      -       ),
      - -       "pmingliu" => array(
      -             \'R\' => "mingliu.ttc",
      -             \'TTCfontID\' => array (
      -                 \'R\' => 2,
      -             ),
      -             \'sip-ext\' => \'pmingliu-extb\',
      -       ),
      - -       "mingliu_hkscs" => array(
      -             \'R\' => "mingliu.ttc",
      -             \'TTCfontID\' => array (
      -                 \'R\' => 3,
      -             ),
      -             \'sip-ext\' => \'mingliu_hkscs-extb\',
      -       ),
      - -       "mingliu-extb" => array(
      -             \'R\' => "mingliub.ttc",
      -             \'TTCfontID\' => array (
      -                 \'R\' => 1,
      -             ),
      -       ),
      - -       "pmingliu-extb" => array(
      -             \'R\' => "mingliub.ttc",
      -             \'TTCfontID\' => array (
      -                 \'R\' => 2,
      -             ),
      -       ),
      - -       "mingliu_hkscs-extb" => array(
      -             \'R\' => "mingliub.ttc",
      -             \'TTCfontID\' => array (
      -                 \'R\' => 3,
      -             ),
      -       ),
      -
      -...
      -); -
      - - -

      This is the HTML code:

      -
      -<div style="font-family:mingliu;"> -&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
      -<div style="font-family:mingliu_hkscs;"> -&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
      -<div style="font-family:pmingliu;"> -&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; -</div> -
      - - -'; - -//============================================================== -//============================================================== -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} -//============================================================== -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -include("../mpdf.php"); - -$mpdf=new mPDF(); - -$mpdf->WriteHTML($html); - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php b/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php deleted file mode 100644 index 758f81566..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php +++ /dev/null @@ -1,498 +0,0 @@ - -body { - font-family: sans-serif; - font-size: 10pt; -} -h4 { - font-variant: small-caps; -} -h5 { - margin-bottom: 0; - color: #110044; -} -p { margin-top: 0; } -dl { - margin: 0; -} -table { - border-spacing: 0.5em; - border: 7px dashed teal; -} -.table1 { - background-image: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); -} -.table1 tr.thisrow1 { - background-image-resolution: 300dpi; - background: transparent url(\'bayeux1.jpg\') repeat scroll left top; -} -.table1 tr.thisrow1 td { - height: 28mm; -} -.table1 tr.thisrow2 { - background-image: none; - background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); - background: -webkit-gradient(linear, left bottom, left top, color-stop(0.29, rgb(90,83,12)), color-stop(0.65, rgb(117,117,39)), color-stop(0.83, rgb(153,153,67))); -} -.table3 { - border-collapse: collapse; - /* background-gradient: linear #07cdde #00f200 1 0 0.5 1; */ - background: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); -} -tr.thisrow { - border: 3px dashed red; - background: transparent url(\'bayeux1.jpg\') repeat scroll left top; -} -.table3 tr.thisrow { - border: 3px dashed orange; - background: transparent url(\'bgrock.jpg\') repeat scroll left top; -} -tfoot tr { - border: 5px dashed blue; - /* background-gradient: linear #c7Fdde #FF0000 1 0 0.5 0; */ - background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); -} -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background: linear-gradient(top, #c7cdde, #f0f2ff); -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background: linear-gradient(top, #c7cdde, #f0f2ff); - border-radius: 2mm; - background-clip: border-box; -} -div.text { - padding:1em; - margin: 1em 0; - text-align:justify; -} -.code { - font-family: mono; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; -} - - - -
      - -

      mPDF

      -

      New features in mPDF Version 5.1

      - -
      -
        -
      • CSS background (images, colours or gradients) on <TR> and <TABLE>
      • -
      • CSS border on <TR> (only in border-collapsed mode)
      • -
      • support for Mozilla and CSS3 gradient syntax: -
          -
        • -moz-linear-gradient, linear-gradient
        • -
        • -moz-radial-gradient, radial-gradient
        • -
        • -moz-repeating-linear-gradient, linear-repeating-gradient
        • -
        • -moz-repeating-radial-gradient, radial-repeating-gradient
        • -
        -
      • -
      • expanded support for gradients (including in SVG images): -
          -
        • multiple colour \'stops\'
        • -
        • opacity (transparency)
        • -
        • angle and/or position can be specified
        • -
        -
      • -
      • gradient can be used as an image mask (custom mPDF styles: gradient-mask)
      • -
      • CSS3 image-orientation supported for <IMG> (similar to existing custom mPDF attribute: rotate)
      • -
      • CSS3 image-resolution supported for <IMG>
      • -
      • background-image-resolution (custom mPDF CSS-type style) to define resolution of background images
      • -
      • improved support for SVG images
      • -
      • SVG and WMF images supported in background-image
      • -
      • file attachments (embedded in PDF file) → → → → →
      • -
      -
      - -
      Tables: borders, background images & gradients
      - -
      Background images or gradients can be set on whole tables or table rows (as well as individual table cells)
      - - - - - - - -
      Row 1This is dataThis is data
      This row hasa background-imageof the bayeux tapestry

      Row 3

      This is long data

      This is data
      This row hasa gradient setwhich spans all 3 cells
      Row 5Also dataAlso data
      - - -
      Border can be set on table rows (only when border-collapse is set to collapse)
      - - - - - -
      Row 1This is dataThis is data
      Row 2This is data
      This is data
      This is data
      This is data
      Also data

      Row 3

      This is long data

      This is data
      - - - - - -
      - -
      Mozilla and CSS3 gradient syntax
      - -
      -

      Linear gradients

      -

      Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...

      - - - - - - - - - - - - - - - - - - - - - -
      top right 210 degrees   
      30% 80% 60 degrees   
      10px 40px 325 degrees   
      bottom left 135deg   
      - - -

      Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...

      - - - - - - - - - - - - - - - - - - - - - - -
      bottom right  
      top  
      10px 40px  
      30% 10%  
      - - - -

      Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...

      - - - - - - - - - - - - - - - - - - - - - - -
      90 degrees   
      120 degrees   
      180 degrees   
      210 degrees   
      - - - -
      -

      Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.

      -

      Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification:

      -
        -
      • -moz-linear-gradient
      • -
      • -moz-repeating-linear-gradient
      • -
      • -moz-radial-gradient and
      • -
      • -moz-repeating-radial-gradient
      • -
      -

      WebKit (Safari, Chrome etc.) have a separate way of defining gradients using -webkit-gradient

      -

      Microsoft (IE) does not support any such method of specifying gradients, but does have a function filter: progid:DXImageTransform.Microsoft.gradient()

      -

      When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:

      -

      -background: #999999; /* for non-css3 browsers */
      -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */
      -background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */
      -background: -moz-linear-gradient(top, #cccccc, #000000); /* for firefox 3.6+ */
      -

      - - - -

      mPDF versions <= 5.0 supported a custom style property background-gradient which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:

      -
        -
      • mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image
      • -
      • CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)
      • -
      - -

      mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:

      -
        -
      • parse and support -moz type gradients
      • -
      • parse and support CSS3 gradient syntax
      • -
      • ignore -webkit syntax gradients
      • -
      - - -

      More details can be found at:

      - -
      - - - -
      Repeating gradients
      - -

      -background: repeating-linear-gradient(red, blue 20px, red 40px); -

      -background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px); -

      - -
       
      - -
       
      -
      -
      -
      - -

      -background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px); -

      -background: repeating-radial-gradient(red, blue 20px, red 40px); -

      -
       
      - -
       
      -
      - - - - - -

      Radial gradients

      - -
       
      - - -
       
      -
      - - -
       
      - -
       
      -
      - -
       
      - -
       
      -
      - -
       
      - -
       
      -
      - - -

       
       
       
       
       
       
       

      - -

       
       
       
       
       
       

      - - - - - - - -
      Gradient Image mask
      - -
      Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: gradient-mask. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.
      - -

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

      <img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /> -

      - - - - - - -
      - - - - - - -
      Image orientation
      - -
      Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.
      -

      <img src="tiger2.png" style="image-orientation: -90deg" width="100" /> -
      -<img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /> -

      - - - - - - - -
      - -
      -
      -
      - -
      Image resolution
      - - -
      Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to <IMG> or background-images. -
      -The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi. -
      -NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution in the file.
      - -

      <img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> -
      <img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> -
      <img src="tiger300px96dpi.png" style="image-resolution: from-image;" />

      - - - - -

      - - - - - -
      Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'
      - -

      <div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      -
      Hallo
      world -
      - -
      - -

      <div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      -
      -
      - - - -
      - - - - - - -
      Mixed effects
      - - -
      -
      -
      -
      -
      -
      -Hallo World -
      -
      -Hallo World -
      -
      -
      -
      -
      -
      - -
      - -
      - -
      - -'; - -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} -//============================================================== -$mpdf->WriteHTML($html); - -//============================================================== -//============================================================== -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php b/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php deleted file mode 100644 index 1cd5bca04..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php +++ /dev/null @@ -1,456 +0,0 @@ -useKerning=true; - -$mpdf->restrictColorSpace=3; // forces everything to convert to CMYK colors - -$mpdf->AddSpotColor('PANTONE 534 EC',85,65,47,9); - -//============================================================== -$html = ' - - - -
      - -

      mPDF

      -

      Other new features in mPDF Version 5.1

      - -
      -
        -
      • Kerning
      • -
      • Letter- and word-spacing
      • -
      • Small-caps improved to work with justified text, and now with kerning, letter- and word-spacing
      • -
      • Bleed area on @page media
      • -
      • Colorspace and colour conversion (almost everything except BMP images)
      • -
      • Spot colours
      • -
      • PDF/X files
      • -
      • dir="rtl"
      • -
      • numeric list-styles for arabic and indic
      • -
      -
      - - - -
      Kerning
      - -
      Font kerning is supported. This corrects the inter-character spacing between specific pairs of letters. It is dependent on kerning information being available in the original font file. -
      -You need to set $mpdf->useKerning=true; either in the config.php configuration file, or at runtime. This causes the kerning information to be loaded when fonts are accessed (and will therefore increase memory usage). -
      -You can then set kerning on or off using the draft CSS3 style property "font-kerning". Values of normal or auto will turn kerning on; "none" will turn kerning off. -
      - -
      -Off: AWAY To War. -
      - -
      -On: AWAY To War. -
      - - - -
      Letter and word spacing & text justification
      - -
      Letter- and word-spacing can be set on almost all block and in-line style elements, using the CSS properties letter-spacing and word-spacing. Values of normal or a length can be specified (em or ex recommended). -Note that setting the letter-spacing value (including setting it to zero) will prevent any additional letter-spacing to be added when full-justifying text. The word-spacing value, however, is a minimum value, and can be increased in order to justify text. -
      -
      -Text-align: justify - no longer uses configurable variable $jSpacing= C | W | \'\' -
      -The default value is for mixed letter- and word-spacing, set by jSWord and jSmaxChar -
      -If a line contains a cursive script (RTL or Indic [devanagari, punjabi, bengali]) then it prevents letter-spacing -for justification on that line - effectively the same as setting letter-spacing:0 -
      -Spacing values have been removed from the config_cp.php configuration file, so the "lang" property -(in config_cp) no longer determines justification behaviour (this includes the use of Autofont()). -
      -When using RTL or Indic [devanagari, punjabi, bengali] scripts, you should set CSS letter-spacing:0 -whenever you use text-align:justify. -
      - -

      Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Letter spacing set at 0.2em. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Word spacing set at 1em. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.

      - - - - -
      Colours
      - -
      Whenever a colour can be specified in a style, additional formats are now supported: rgb(), rgba(), hsl(), hsla(), cmyk(), cmyka(), or spot(). -
      -Spot colours need to be defined at the start of the script using e.g. $mpdf->AddSpotColor(\'PANTONE 534 EC\',85,65,47,9); -
      -The four values define the CMYK values used when the spot colour is not available. A tint % can be specified when using the spot colour in the document. -
      - -
      background-color: rgba(150,150,255, 0.5); color: rgb(0,150,150);
      -
      background-color: rgba(60%,60%,100%, 0.5); color: rgb(0,60%,60%);
      -
      background-color: hsla(180,30%,25%, 0.5); color: hsl(360,100%,50%);
      -
      background-color: cmyka(85,65,0,30, 0.3); color: spot(PANTONE 300 EC,80%);
      -
      -
      - - -
      @page media
      - -
      When using @page to create a print publication with page-size less than sheet-size, the bleed margin is now configurable. -Backgrounds/gradients/images now use the bleed box as their "container box", rather than the whole page. (See this document as an example.) -
      -Crop- and cross-marks can now both be used together, and are more configurable. -Also, background-image-opacity and background-image-resize have been extended to work with @page CSS. -
      -The following values can be set in the configuration file, config.php: -$this->bleedMargin
      -$this->crossMarkMargin
      -$this->cropMarkMargin
      -$this->cropMarkLength
      -$this->nonPrintMargin
      -
      - - - -
      Colorspace and colour conversion
      - -
      PDF files can contain objects using different colorSpaces e.g. Grayscale, RGB and CMYK. By default, -mPDF creates PDF files using the colours as they are specified: font colour may be set (e.g. #880000) as an RGB colour, and the -file may contain JPG images in RGB or CMYK format. -
      -In some circumstances, you may wish to create a PDF file with restricted colorSpaces e.g. printers will often want files -which contain only CMYK, spot colours, or grayscale, but not RGB. -
      -Additional methods for defining colours can be used (see above), but alternatively you can set mPDF to restrict the colorSpace by setting -the value for $mpdf->restrictColorSpace: -
      -1 - allow GRAYSCALE only [converts CMYK/RGB->gray] -
      -2 - allow RGB / SPOT COLORS / Grayscale [converts CMYK->RGB] -
      -3 - allow CMYK / SPOT COLORS / Grayscale [converts RGB->CMYK] -
      -This will attempt to convert every colour value used in the document to the permitted colorSpace(s). Almost everything including images -will be converted (except BMP images), and the conversion of images may take significant time. -
      -This example file is set to (3) CMYK; compare the appearance of the Tux penguin in this file and in the previous example file (RGB). -
      -
      -
      - - -
      PDF/A and PDF/X files
      - -
      mPDF can produce files which (attempt to) meet the PDF/A and PDF/X specifications. In addition to restricted colorSpace, -PDF/A and /X files cannot contain images or colour values with "transparency". -
      -Please note that full compliance with the PDF/A or /X specification is not guaranteed. -
      - - - -
      RTL (right-to-left) text
      - -
      Handling of RTL (right-to-left) languages has been significantly rewritten, and is likely to cause -changes to the resulting files if you have previously been using mPDF. The changes have made mPDF -act more like a browser, respecting the HTML/CSS rules. -Changes include:
      -
        -
      • the document now has a baseline direction; this determines the -
          -
        • behaviour of blocks for which text-align has not been specifically set
        • -
        • layout of mirrored page-margins, columns, ToC and Indexes, headers / footers
        • -
        • base direction can be set by any of: -
            -
          • $mpdf->SetDirectionality(\'rtl\');
          • -
          • <html dir="rtl" or style="direction: rtl;">
          • -
          • <body dir="rtl" or style="direction: rtl;">
          • -
        • -
        • base direction is an inherited CSS property, so will affect all content, unless...
        • -
      • -
      • direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using -
          -
        • CSS property <style="direction: rtl;">
        • -
        • direction can only be set on the top-level element of nested lists
        • -
        • direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
        • -
        • nested tables CAN have different directions
        • -
      • -
      • NOTE that block/table margins/paddings are NOT reversed by direction
      • -
      • language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF(\'ar\') ) - no longer affects direction in any way.
        - NB config_cp.php has been changed as a result; any values of "dir" set here are now ineffective
      • -
      • default text-align is now as per CSS spec: "a nameless value which is dependent on direction"
        - NB default text-align removed in default stylesheet in config.php
      • -
      • once text-align is specified, it is respected and inherited
        - NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
      • -
      • the configurable value $rtlcss is depracated, as it is no longer required
      • -
      • improved algorithm for dtermining text direction -
          -
        • english word blocks are handled in text reversal as one block i.e. dir="rtl"
          - [arabic text] this will not be reversed [arabic text]
        • -
        • arabic numerals 0-9 handled correctly
        • -
      • -
      -Although the control of direction for block elements is now more configurable, the control of -text direction (RTL arabic characters) remains fully automatic and unconfigurable. -<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.: - content<span>[arabic text]</span>content -
      - - - - -
      List styles
      -
      Additional numerical list-styles are supported. All of these (except Tamil) are consistent with the draft CSS3 specification:
      -list-style: arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya | persian | telugu | thai | urdu | tamil - -
      - - - -
        - - -
      • Arabic -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        11. Six
        12. -
        -
      • -
      • Persian -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        11. Six
        12. -
        -
      • -
      • Urdu -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        11. Six
        12. -
        -
      • - -
      - -
        - -
      • Bengali -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Devanagari -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Gujarati -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Gurmukhi -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Kannada -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Malayalam -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Oriya -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Tamil -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • -
      • Telugu -
          -
        1. One
        2. -
        3. Two
        4. -
        5. Three
        6. -
        7. Four
        8. -
        9. Five
        10. -
        -
      • - -
      - -'; - -//============================================================== -$mpdf->WriteHTML($html); - -//============================================================== -//============================================================== -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php b/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php deleted file mode 100644 index 7d87cc0c1..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php +++ /dev/null @@ -1,497 +0,0 @@ -restrictColorSpace = 1; // forces to grayscale -//============================================================== -$html = ' - - - -
      - -

      mPDF

      -

      New features in mPDF Version 5.1

      - -
      -

      This is a copy of Example 54, but all object colours are converted to grayscale using simply:

      -

      $mpdf->restrictColorSpace = 1;

      -
      - -
      -
        -
      • CSS background (images, colours or gradients) on <TR> and <TABLE>
      • -
      • CSS border on <TR> (only in border-collapsed mode)
      • -
      • support for Mozilla and CSS3 gradient syntax: -
          -
        • -moz-linear-gradient, linear-gradient
        • -
        • -moz-radial-gradient, radial-gradient
        • -
        • -moz-repeating-linear-gradient, linear-repeating-gradient
        • -
        • -moz-repeating-radial-gradient, radial-repeating-gradient
        • -
        -
      • -
      • expanded support for gradients (including in SVG images): -
          -
        • multiple colour \'stops\'
        • -
        • opacity (transparency)
        • -
        • angle and/or position can be specified
        • -
        -
      • -
      • etc...
      • -
      -
      - -
      Tables: borders, background images & gradients
      - -
      Background images or gradients can be set on whole tables or table rows (as well as individual table cells)
      - - - - - - - -
      Row 1This is dataThis is data
      This row hasa background-imageof the bayeux tapestry

      Row 3

      This is long data

      This is data
      This row hasa gradient setwhich spans all 3 cells
      Row 5Also dataAlso data
      - - -
      Border can be set on table rows (only when border-collapse is set to collapse)
      - - - - - -
      Row 1This is dataThis is data
      Row 2This is data
      This is data
      This is data
      This is data
      Also data

      Row 3

      This is long data

      This is data
      - - - - - -
      - -
      Mozilla and CSS3 gradient syntax
      - -
      -

      Linear gradients

      -

      Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...

      - - - - - - - - - - - - - - - - - - - - - -
      top right 210 degrees   
      30% 80% 60 degrees   
      10px 40px 325 degrees   
      bottom left 135deg   
      - - -

      Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...

      - - - - - - - - - - - - - - - - - - - - - - -
      bottom right  
      top  
      10px 40px  
      30% 10%  
      - - - -

      Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...

      - - - - - - - - - - - - - - - - - - - - - - -
      90 degrees   
      120 degrees   
      180 degrees   
      210 degrees   
      - - - -
      -

      Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.

      -

      Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification:

      -
        -
      • -moz-linear-gradient
      • -
      • -moz-repeating-linear-gradient
      • -
      • -moz-radial-gradient and
      • -
      • -moz-repeating-radial-gradient
      • -
      -

      WebKit (Safari, Chrome etc.) have a separate way of defining gradients using -webkit-gradient

      -

      Microsoft (IE) does not support any such method of specifying gradients, but does have a function filter: progid:DXImageTransform.Microsoft.gradient()

      -

      When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:

      -

      -background: #999999; /* for non-css3 browsers */
      -filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */
      -background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */
      -background: -moz-linear-gradient(top, #cccccc, #000000); /* for firefox 3.6+ */
      -

      - - - -

      mPDF versions <= 5.0 supported a custom style property background-gradient which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:

      -
        -
      • mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image
      • -
      • CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)
      • -
      - -

      mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:

      -
        -
      • parse and support -moz type gradients
      • -
      • parse and support CSS3 gradient syntax
      • -
      • ignore -webkit syntax gradients
      • -
      - - -

      More details can be found at:

      - -
      - - - -
      Repeating gradients
      - -

      -background: repeating-linear-gradient(red, blue 20px, red 40px); -

      -background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px); -

      - -
       
      - -
       
      -
      -
      -
      - -

      -background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px); -

      -background: repeating-radial-gradient(red, blue 20px, red 40px); -

      -
       
      - -
       
      -
      - - - - - -

      Radial gradients

      - -
       
      - - -
       
      -
      - - -
       
      - -
       
      -
      - -
       
      - -
       
      -
      - -
       
      - -
       
      -
      - - -

       
       
       
       
       
       
       

      - -

       
       
       
       
       
       

      - - - - - - - -
      Gradient Image mask
      - -
      Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: gradient-mask. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.
      - -

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

      <img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /> -

      <img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /> -

      - - - - - - -
      - - - - - - -
      Image orientation
      - -
      Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.
      -

      <img src="tiger2.png" style="image-orientation: -90deg" width="100" /> -
      -<img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /> -

      - - - - - - - -
      - -
      -
      -
      - -
      Image resolution
      - - -
      Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to <IMG> or background-images. -
      -The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi. -
      -NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution in the file.
      - -

      <img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> -
      <img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> -
      <img src="tiger300px96dpi.png" style="image-resolution: from-image;" />

      - - - - -

      - - - - - -
      Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'
      - -

      <div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      -
      Hallo
      world -
      - -
      - -

      <div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">

      -
      -
      - - - -
      - - - - - - -
      Mixed effects
      - - -
      -
      -
      -
      -
      -
      -Hallo World -
      -
      -Hallo World -
      -
      -
      -
      -
      -
      - -
      - -
      - -
      - -'; - -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} - -//============================================================== -$mpdf->WriteHTML($html); - -//============================================================== -//============================================================== -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php deleted file mode 100644 index 2427f5a6f..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php +++ /dev/null @@ -1,233 +0,0 @@ - -textarea { -} -input { -} -select { - font-family: arialunicodems -} - - -

      Active Forms

      - -
      -Input Text - -

      - -Readonly - -

      - -Disabled - -

      - -Required - -

      - -Hidden - -

      - -Input Password - -

      - -Calculations - + - = - -

      - - -Textarea - -

      - - -First language - -     - -You have selected: - -

      - - -
      -Spoken language(s)
      - -
      -

      - - - -How many languages do you speak?      - One      - Two      - Three      - Four      - Five + - -

      - - - Please send me regular information by e-mail
      - Please phone me (not available at present)
      - Please subscribe me to the Newsletter -

      - -

      - -Click this button to see Javascript in action: - - -

      - - - - - - - - - - -

      - - -
      -'; - - -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} - -//============================================================== -$mpdf->useActiveForms = true; - -/* -// Try playing around with these (these are also in config.php) -$mpdf->formUseZapD = false; -$mpdf->formSubmitNoValueFields = true; - -$mpdf->formExportType = 'xfdf'; // 'html' or 'xfdf' -$mpdf->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected, - // this determines whether to select 1st option (as per browser) - // - affects whether "required" attribute is relevant -$mpdf->form_border_color = '0.0 0.820 0.0'; -$mpdf->form_background_color = '0.941 0.941 0.941'; -$mpdf->form_border_width = '1'; -$mpdf->form_border_style = 'S'; - -$mpdf->form_radio_color = '0.0 0.820 0.0'; -$mpdf->form_radio_background_color = '0.941 0.5 0.5'; - -$mpdf->form_button_border_color = '0.0 0.820 0.0'; -$mpdf->form_button_background_color = '0.941 0.941 0.941'; -$mpdf->form_button_border_width = '1'; -$mpdf->form_button_border_style = 'S'; -*/ - -$mpdf->WriteHTML($html); - -//============================================================== -// JAVASCRIPT FOR WHOLE DOCUMENT -$mpdf->SetJS(' -var dialogTitle = "Enter details"; -var defaultAnswer = ""; -var reply = app.response("This is javascript set to run when the document opens. Enter value for first field", dialogTitle, defaultAnswer); -if (reply != null) { -this.getField("inputfield").value = reply; -} -'); -//============================================================== -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php deleted file mode 100644 index 0d6522276..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php +++ /dev/null @@ -1,234 +0,0 @@ - -textarea { -} -input { -} -select { - font-family: arialunicodems -} - - -

      Active Forms

      - -
      -Input Text - -

      - -Readonly - -

      - -Disabled - -

      - -Required - -

      - -Hidden - -

      - -Input Password - -

      - -Calculations - + - = - -

      - - -Textarea - -

      - - -First language - -     - -You have selected: - -

      - - -
      -Spoken language(s)
      - -
      -

      - - - -How many languages do you speak?      - One      - Two      - Three      - Four      - Five + - -

      - - - Please send me regular information by e-mail
      - Please phone me (not available at present)
      - Please subscribe me to the Newsletter -

      - -

      - -Click this button to see Javascript in action: - - -

      - - - - - - - - - - -

      - - -
      -'; - - -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} - -//============================================================== -$mpdf->useActiveForms = true; -$mpdf->formUseZapD = false; - -/* -// Try playing around with these (these are also in config.php) -$mpdf->formUseZapD = false; -$mpdf->formSubmitNoValueFields = true; - -$mpdf->formExportType = 'xfdf'; // 'html' or 'xfdf' -$mpdf->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected, - // this determines whether to select 1st option (as per browser) - // - affects whether "required" attribute is relevant -$mpdf->form_border_color = '0.0 0.820 0.0'; -$mpdf->form_background_color = '0.941 0.941 0.941'; -$mpdf->form_border_width = '1'; -$mpdf->form_border_style = 'S'; - -$mpdf->form_radio_color = '0.0 0.820 0.0'; -$mpdf->form_radio_background_color = '0.941 0.5 0.5'; - -$mpdf->form_button_border_color = '0.0 0.820 0.0'; -$mpdf->form_button_background_color = '0.941 0.941 0.941'; -$mpdf->form_button_border_width = '1'; -$mpdf->form_button_border_style = 'S'; -*/ - -$mpdf->WriteHTML($html); - -//============================================================== -// JAVASCRIPT FOR WHOLE DOCUMENT -$mpdf->SetJS(' -var dialogTitle = "Enter details"; -var defaultAnswer = ""; -var reply = app.response("This is javascript set to run when the document opens. Enter value for first field", dialogTitle, defaultAnswer); -if (reply != null) { -this.getField("inputfield").value = reply; -} -'); -//============================================================== -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php b/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php deleted file mode 100644 index 6772fa950..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php +++ /dev/null @@ -1,547 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - box-shadow: 0.3em 0.3em #888888; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; - margin-top: 0; -} -div.text { - padding:0.8em; - margin-bottom: 0.7em; -} -p { margin: 0.25em 0; } -.code { - font-family: monospace; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; - border:0.2mm solid #000088; - box-shadow: 0.3em 0.3em #888888; -} -table { - overflow: visible; - empty-cells: hide; - border:1px solid #000000; - font-family: sans-serif; - font-size: 10pt; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -td, th { - border:1px solid #000000; - text-align: left; - font-weight: normal; -} -td.markedcell { - text-decoration: line-through; - color: #CC0000; -} -td.underlinedcell { - text-decoration: underline; - color: #CC0000; -} -td.rotatedcell { - text-decoration: line-through; - color: #CC0000; - text-rotate: 45; -} -td.cost { text-align: right; } -caption.tablecaption { - font-family: sans-serif; - font-weight: bold; - border: none; - caption-side: top; - margin-bottom: 0; - text-align: center; -} -u.doubleu { - text-decoration: none; - border-bottom: 3px double #000088; -} -a.reddashed { - text-decoration: none; - border: 1px dashed #880000; -} -.shadowtitle { - height: 8mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.8em; - padding-left: 3em; - font-family:sans; - font-size: 26pt; - font-weight: bold; - border: 0.2mm solid white; - border-radius: 0.2em; - box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9); - color: #AAAACC; - text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; -} -h3 { - margin: 3em 0 2em -15mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - padding-left: 3em; - width: 50%; - font-family:sans; - font-size: 16pt; - font-weight: bold; - border-left: none; - border-radius: 0 2em 2em 0; - box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); - text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); -} -.css { - font-family: arial; - font-style: italic; - color: #000088; -} -table.zebra tbody tr:nth-child(2n+1) td { background-color: rgba(255,255,127,0.6); } -table.zebra tbody tr:nth-child(2n+1) th { background-color: rgba(255,255,127,0.6); } -table.zebra thead tr { background-color: #FFBBFF; } -table.zebra tfoot tr { background-color: #BBFFFF; } - - - - - - -
      New Features in mPDF v5.4
      - - -

      Bookmark styles

      -
      -

      Bookmarks can be styled by adding code as below to your script. You can define a colour (array of RGB) and/or a font-style (B, I, or BI) for each level (starting at 0). Results may depend on the PDF Reader you are using.

      -

      -$this->bookmarkStyles = array(
      -       0 => array(\'color\'=> array(0,64,128), \'style\'=>\'B\'),
      -       1 => array(\'color\'=> array(128,0,0), \'style\'=>\'\'),
      -       2 => array(\'color\'=> array(0,128,0), \'style\'=>\'I\'),
      -); -

      -
      - -

      Embedded SVG code

      -

      SVG Images can be embedded in your HTML code. This is formally part of the XHTML specification and is supported by IE9+ and most other browsers.

      - - - - -

      -<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 200 200" width="200" height="200">
      -  <circle cx="100" cy="50" r="40" stroke="black" stroke-width="1" fill="red" />
      -  <circle cx="130" cy="50" r="40" stroke="black" stroke-width="1" fill="blue" />
      -</svg> -

      - - -

      Improved CSS support

      -
      -

      border-radius is now supported on fixed/absolute-positioned block elements.

      -

      visibility can be set on any block-style element e.g. DIV,P or images IMG as: visible|hidden|printonly|screenonly

      -

      background-color now supports rgba() and cmyka() alpha transparency formats in tables.

      -

      Color, underline and strike-through are now supported in table cells, including with rotated text (see example below of spread table)

      -

      page-break-after: left|right|always is supported on all block-style elements and tables

      -

      text-transform: capitalize|uppercase|lowercase is supported in table cells

      -
      - - -
      -

      Zebra stripes in Tables

      -
      -

      :nth-child() selector can be used in tables (on TR, TD or TH) to stripe rows or columns. Both the an+b and odd/even forms are supported e.g.

      - -

      -tr:nth-child(2n+1) { background-color: rgba(255,255,127,0.6); } or
      -tr:nth-child(odd) { background-color: rgba(255,255,127,0.6); } -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Row 1This is data167.00
      Row 2 -

      This is data p

      -
      -

      444.53

      -
      -

      Row 3

      -
      -

      This is long data

      -
      14.00
      -

      Row 4

      -
      This is data -

      0.88

      -
      Row 5Also data144.00
      Row 6Also data8089.00
      - -

      Note: mPDF does NOT correctly apply specificity to all CSS. The following stylesheet:

      -

      -table.zebra tbody tr:nth-child(2n+1) td { background-color: yellow; }
      -table.zebra tbody td:nth-child(odd) { background-color: blue; } -

      -

      should make every odd row yellow, and every odd column blue, but with the row/yellow overriding the column/blue. -In mPDF the td:nth-child(odd) trumps the plain td, so the column colour wins out. You can force the effect you want by using:

      -

      -table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: yellow; } -

      -

      The :nth-child(1n+0) selector just selects every td cell.

      - -
      -
      - - -
      -

      border can now be defined on in-line elements eg SPAN

      - -

      Note: Remember that in mPDF, inside table cells, properties set on block elements are set when possible as in-line properties - so a P element inside a table with border set, will appear with a border around the text line as though it had been set on SPAN

      -
      - - - - -
      -

      Shadows

      -

      box-shadow can be defined on any block-level element (P, DIV etc). It follows the CSS3 recommendation, but inset is not supported.

      -

      text-shadow can be defined on any element. It follows the CSS3 recommendation, but blur is not supported.

      -

      -<span style="text-shadow: 0.03em 0.03em #666, -0.015em -0.015em white;">
      -<div style="box-shadow: 0.3em 0.3em #888888;"> -

      -
      - - -

      Other Enhancements

      - -

      Column Totals (Tables)

      -

      {colsum} placed in the footer of a table will automatically display the sum of that column. If the table breaks across more than one page, the sum of the values on that page will be displayed. A number following the colsum e.g. {colsum2} will force that number of decimal places to be displayed.

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Table caption goes here
      Header RowHeader RowHeader Row
      Column total: (using colsum2 in {}){colsum2}
      Row 1This is data167.00
      Row 2 -

      This is data p

      -
      -

      444.53

      -
      -

      Row 3

      -
      -

      This is long data

      -
      14.00
      -

      Row 4

      -
      This is data -

      0.88

      -
      Row 5Also data144.00
      Row 6Also data8089.00
      Row 7Also data3.00
      Row 8Also data23.00
      -
      - -

      Table caption

      -

      The caption element for tables is partially supported (see example above).

      -

      -<caption align="top|bottom" style="caption-side: top|bottom"> -

      -
        -
      • The caption must come immediately after <table>.
      • -
      • The CSS caption-side or HTML align attribute of top|bottom supported
      • -
      • Left or right placement are not supported.
      • -
      • The caption is handled as a separate block element brought outside the table, so: -
          -
        • CSS will not cascade correctly from the table
        • -
        • the width of the caption block is that of page or of the block element containing the table
        • -
        • text alignment will be to the page-width not the table width
        • -
        • if table page-break-after: always, the caption will follow the pagebreak
        • -
      • -
      - - -

      Core fonts in non-core font document

      - -

      Core fonts, which do not need to be embedded in a PDF, can now be included in a document which uses non-core fonts. The pseudo font-family names: chelvetica, ctimes and ccourier should be used.

      -

      -<div style="font-family: chelvetica"> -

      -

      NB You could force mPDF to always use core fonts when Arial/Helvetica/Courier are specified, by editing $this->fonttrans in config_fonts.php:

      -

      -$this->fonttrans = array(
      - \'arial\' => \'chelvetica\',
      - \'helvetica\' => \'chelvetica\',
      - \'timesnewroman\' => \'ctimes\',
      - \'times\' => \'ctimes\',
      - \'couriernew\' => \'ccourier\',
      - \'courier\' => \'ccourier\',
      -... -

      -
      - -

      Javascript in Forms

      - -

      Javascript used in (active) forms has been altered to reflect the Adobe Acrobat specification for Javascript in PDF documents.

      -

      textarea and input (text-types) now accept javascript as: onKeystroke, onValidate, onCalculate and onFormat. onChange is depracated but is not ignored; it works as though for onCalculate. (PS Select still accepts onChange)

      - - -
      - - - -

      Overlapping Rows in Tables

      -

      Support for overlapping rowspans in tables has been improved (although probably not foolproof!)

      - - - - - - - - - - - - -
         
       
       
      - -
      - - - -

      Circular Text

      -

      Circular Text can be included in a PDF document as a custom HTML tag (or a function)

      -
        -
      • top-text and/or bottom-text can be specified
      • -
      • Radius (r) and font-size (using CSS) are user-defined
      • -
      • Width and height are calculated from radius and font-size
      • -
      • Other CSS styles supported on Circular Text: border, margin, padding, color, background-color, font-family, font-size, font-weight, font-style, display, visibility, and opacity
      • -
      • space-width should be specified as an integer defining the letter-spacing as a percentage of normal (default 120)
      • -
      • char-width should be specified as an integer defining the width of each character as a percentage of normal (default 100)
      • -
      • Circular Text is displayed as though an in-line element
      • -
      -

      NB If $mpdf->useKerning is true then automatic kerning will be used on Circular Text.

      - -

      -<textcircle r="30mm" top-text="Circular Text Circular Text" style="color: blue; font-size: 34pt; font-style: italic" />

      -<textcircle r="30mm" space-width="120" char-width="150" top-text="&bull; Circular Text &bull;" bottom-text="Circular Text" style="background-color: #FFAAAA; border:1px solid red; padding: 0.3em; margin: 0.3em; color: #000000; font-size: 21pt; font-weight:bold; font-family: Arial" /> -

      - - - - - - - - - -

      Spread tables

      -
      -Setting the CSS property "overflow: visible" on a table now has the effect of cancelling resizing, and allowing tables to split columns across multiple pages. -The maximum width for a column (or group of columns set by colspan) is the page width. It is recommended to specify absolute values of width on each column (not percentages). -
      -
      - - - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Periodic Table (table caption)
      123456789101112131415161718
      H He
      Li Be B C N O F Ne
      Na Mg Al Si P S Cl Ar
      K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr
      Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe
      Cs Ba Lu Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn
      Fr Ra
      - -

      - -
      -

      Limitations of Spread tables

      -Spread tables cannot be used with: keep-headings-with-table ($mpdf->use_kwt), table rotate, table page-break-inside:avoid, columns, -CJK (chinese-japanese-korean) or RTL (right-to-left) languages. -They will also cause problems with $mpdf->forcePortraitHeaders or $mpdf->forcePortraitMargins.
      -Warning: If a table row is too tall to fit on a page, mPDF will crash with an error message.
      -If the width settings within the table cause conflicts, it will override some of these settings. -
      -
      - - -'; - -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} - -//============================================================== -$mpdf->useActiveForms = true; - -$mpdf->bookmarkStyles = array( - 0 => array('color'=> array(0,64,128), 'style'=>'B'), - 1 => array('color'=> array(128,0,0), 'style'=>''), - 2 => array('color'=> array(0,128,0), 'style'=>'I'), -); - -$mpdf->useKerning=true; // set this to improve appearance of Circular text - // must be set before the font is first loaded - -$mpdf->WriteHTML($html); - -// JAVASCRIPT FOR WHOLE DOCUMENT -$mpdf->SetJS(' -function TwoPages() { - this.layout="TwoColumnRight"; - this.zoomType = zoomtype.fitW; -} -function OnePage() { - this.layout="SinglePage"; - this.zoom = 100; -} -'); - -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php b/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php deleted file mode 100644 index fc908d5e2..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php +++ /dev/null @@ -1,387 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - box-shadow: 0.3em 0.3em #888888; -} -.rounded { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - border-radius: 2mm; - background-clip: border-box; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; - margin-top: 0; -} -div.text { - padding:0.8em; - margin-bottom: 0.7em; -} -p { margin: 0.25em 0; } -.code { - font-family: monospace; - font-size: 9pt; - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; - border:0.2mm solid #000088; - box-shadow: 0.3em 0.3em #888888; -} -table { - border:1px solid #000000; - font-family: sans-serif; - font-size: 10pt; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; -} -td, th { - border:1px solid #000000; - text-align: left; - font-weight: normal; -} -.shadowtitle { - height: 8mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.8em; - padding-left: 3em; - font-family:sans; - font-size: 26pt; - font-weight: bold; - border: 0.2mm solid white; - border-radius: 0.2em; - box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9); - color: #AAAACC; - text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; -} -h3 { - margin: 3em 0 2em -15mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - padding-left: 3em; - width: 50%; - font-family:sans; - font-size: 16pt; - font-weight: bold; - border-left: none; - border-radius: 0 2em 2em 0; - box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); - text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); -} -.css { - font-family: arial; - font-style: italic; - color: #000088; -} -table.pop { - border-collapse: collapse; -} -table.pop td { - font-family: arial; - font-size: 10px; - border: 1px solid #888888; -} -meter.pop { - margin: 3px; -} -fieldset { border: 1px solid #000000; border-radius: 5px; padding: 10px; } -div.folder { - background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center; - padding: 5px 0 5px 25px; - border: 1px solid #000000; -} - - - - -
      New Features in mPDF v5.6
      - -

      HTML5 tags

      -
      -

      New tags introduced in HTML5 now have basic support in mPDF, and will thus support CSS style references.

      -

      The following are treated as block elements similar to <div>:

      -

      <article> <aside> <details> <figure> <figcaption> <footer> <header> <hgroup> <nav> <section> <summary>

      -

      The following are treated as in-line elements:

      -

      <time> <mark>

      -

      Mark is set by default to highlight in yellow in config.php using $defaultCSS e.g. mark

      -

      Progress and meter are discussed below:

      -
      - -

      <progress>

      -
      -

      Progress: accepts the attributes value and max. A progress element without a value is called an indeterminate progress bar. -Text between the opening and closing tags is not displayed.

      -

      CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity. -HTML attributes width and height are supported, although not officially part of the spec.

      -

      Example:

      -

      <progress value="5" max="10">50%</progress>

      - -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      -
      - -

      <meter>

      -
      -

      Meter: accepts the attributes min, max, value, optimum, low, and high. -Text between the opening and closing tags is not displayed.

      -

      CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity. -HTML attributes width and height are supported, although not officially part of the spec.

      -

      Example:

      -

      <meter value="5" max="10" min="1" low="2" high="8" optimum="5.6">5</meter>

      - - - -
        -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      • - - -
      • -
      -
      - -
      -

      Custom appearances for <meter> and <progress>

      -

      Meter (and to a lesser extent progress) can be used with custom appearances e.g. by using optimum to display the average, and low/high to indicate 90th centiles

      - -

      Custom appearances can be written by editing the script in classes/meter.php - Use a custom attribute of type="anyname" which is passed to the class as a variable e.g.

      -

      <meter type="2" value="612.7" optimum="580.4" min="517.0 " max="642.7" low="542" high="600">612.7</meter>

      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      Domain

      Indicator

      LHB

      number

      LHB

      Indicator

      -

      value

      -

      Wales

      average

      -

      Wales range

      Comparison

      Deaths

      Death Rates per 100,000 population

      3046

      612.7

      580.4

      517.0 - 642.7

      612.7

      Death Rates per 100,000 from cancer

      789

      178.2

      172.7

      159.5 - 182.2

      178.2

      Death Rates per 100,000 from respiratory disease

      505

      60.5

      72.11

      54.41 - 95.5

      60.5

      Death Rates per 100,000 from cardiovascular disease

      913

      178.2

      165.0

      151.8 - 179.9

      160.2
      - - -

      Fieldset and Legend

      -
      -
      - Fieldset and legend -

      Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!

      - - -
      - - -
      -
      - - -

      CSS styles

      -
      -

      -

      min-height, min-width, max-height and max-width are now supported in CSS style sheets for <img> (only).

      -

      background: url(data:image/gif;base64,...) is now supported in CSS style sheets (gif, png and jpeg).

      -
      - -
      This <div> has the folder icon set as an embedded image in the CSS
      -

      div.folder { - background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center; - padding: 5px 0 5px 25px; - border: 1px solid #000000; -} -

      - - - -

      Arabic text

      - - - -

      - -
      - -

      The script handling Arabic text (RTL) was rewritten in mPDF 5.5 with improved support for Pashto/Sindhi/Urdu/Kurdish, especially for joining characters and added new presentation forms.

      -

      Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters. However, some fonts include glyphs for these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).

      -

      By editing config_fonts.php and adding:

      -

      - \'unAGlyphs\' => true, -

      -

      to appropriate fonts, this will force mPDF to use unmapped glyphs. It requires the font file to include a Format 2.0 POST table which references the glyphs by name as e.g. uni067C.med or uni067C.medi

      -

      XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS) all contain this table. NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med" - if it exists, it may work!

      -

      Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).

      -

      mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use -if the font already utilises these codes (unlikely).

      -
      - - -

      Using Arial MS font:

      -'; -//============================================================== -// Test for all Arabic characters which may need joining -//============================================================== -$mpdf->cacheTables = true; -$html .=' - -
      -'; - - -$ranges = array(0=>array(0x0621, 0x063a), 1=>array(0x0640, 0x064a), 2=>array(0x0671, 0x0672), 3=>array(0x0674, 0x06d3)); - -foreach($ranges AS $r) { - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - for($n=$r[0];$n<=$r[1];$n++) { - - $html .= ''; - $html .= ''; - - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - - $html .= ''; - } - $html .='
      IsolatedFinalMedialInitial
      U+0'.strtoupper(dechex($n)) .'�'.dechex($n) .';ئ�'.dechex($n) .';ـ�'.dechex($n) .';ـ�'.dechex($n) .';ـ�'.dechex($n) .';ـ�'.dechex($n) .';ه
      '; -$html .='
      '; -} - - - -$html .='
      '; -//============================================================== - -$html .=' -
      - - -'; - -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} - -//============================================================== - -$mpdf->WriteHTML($html); - -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php b/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php deleted file mode 100644 index 658dc9ac8..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php +++ /dev/null @@ -1,595 +0,0 @@ - -.gradient { - border:0.1mm solid #220044; - background-color: #f0f2ff; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - box-shadow: 0.3em 0.3em #888888; -} -h4 { - font-weight: bold; - margin-top: 1em; - margin-bottom: 0.3em; - margin-top: 0; -} -div.text { - padding:0.8em; - margin-bottom: 0.7em; -} -p { margin: 0.25em 0; } -p.code { - background-color: #d5d5d5; - margin: 1em 1cm; - padding: 0 0.3cm; - border:0.2mm solid #000088; - box-shadow: 0.3em 0.3em #888888; -} -.code { - font-family: monospace; - font-size: 9pt; -} -.shadowtitle { - height: 8mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.8em; - padding-left: 3em; - font-family:sans; - font-size: 26pt; - font-weight: bold; - border: 0.2mm solid white; - border-radius: 0.2em; - box-shadow: 0 0 1em 0.5em rgba(0,0,255,0.5); - color: #AAAACC; - text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white; -} -h3 { - margin: 3em 0 2em -15mm; - background-color: #EEDDFF; - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - padding: 0.5em; - padding-left: 3em; - width: 50%; - font-family:sans; - font-size: 16pt; - font-weight: bold; - border-left: none; - border-radius: 0 2em 2em 0; - box-shadow: 0 0 2em 0.5em rgba(255,0,0,1); - text-shadow: 0.05em 0.04em rgba(127,127,127,0.5); -} -.css { - font-family: arial; - font-style: italic; - color: #000088; -} - -.aBDP { text-align: "." center; } -.arBDP { text-align: "\66B" center; } -.middot { text-align: "\B7" center ; } - -p.menu { - text-align: justify; - padding-right: 4em; -} -dottab.menu { - outdent: 4em; -} - - -.outlined { - text-outline: 0.1mm 0.1mm #FF0000; - font-weight: bold; - font-size: 20pt; - color: #FFFFFF; -} - -/* For background-clip and -origin */ -.divclip { - border: 10px dashed #000000; - border-radius: 3em; - padding: 20px; - background:yellow; - background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet); - width: 300px; - height: 50px; - margin-bottom: 1em; - background-repeat: no-repeat ; - background-size: 100% 100%; -} -.divpic { - background:yellow; - background: yellow url("bayeux1.jpg") no-repeat scroll left top; - background-size: 100% 100%; -} -.div1 { - background-clip: content-box; - background-origin: content-box; -} -.div2 { - background-clip: padding-box; - background-origin: padding-box; -} -.div3 { - background-clip: border-box; - background-origin: border-box; -} -.div4 { - background-clip: content-box; - background-origin: border-box; -} -.div5 { - background-clip: border-box; - background-origin: content-box; -} - - -/* For Table of Contents */ -div.mpdf_toc { - font-family: sans-serif; - font-size: 11pt; -} -a.mpdf_toc_a { - text-decoration: none; - color: black; -} -div.mpdf_toc_level_0 { /* Whole line level 0 */ - line-height: 1.5; - margin-left: 0; - padding-right: 2em; /* should match e.g 0 is default */ -} -span.mpdf_toc_t_level_0 { /* Title level 0 - may be inside */ - font-weight: bold; -} -span.mpdf_toc_p_level_0 { /* Page no. level 0 - may be inside */ -} -div.mpdf_toc_level_1 { /* Whole line level 1 */ - margin-left: 2em; - text-indent: -2em; - padding-right: 2em; /* should match 2em is default */ -} -span.mpdf_toc_t_level_1 { /* Title level 1 */ - font-style: italic; - font-weight: bold; -} -span.mpdf_toc_p_level_1 { /* Page no. level 1 - may be inside */ -} -div.mpdf_toc_level_2 { /* Whole line level 2 */ - margin-left: 4em; - text-indent: -2em; - padding-right: 2em; /* should match 2em is default */ -} -span.mpdf_toc_t_level_2 { /* Title level 2 */ -} -span.mpdf_toc_p_level_2 { /* Page no. level 2 - may be inside */ -} - - - - - - - -

      ToC Layout and styling

      -
      -

      Table of Contents styling

      -

      When a Table of Contents is generated by mPDF using e.g. <tocpagebreak>, mPDF 5.7 will generate the ToC as HTML. This means that a CSS stylesheet can be used to format its appearance.

      -
      - -
      - -
      -

      This will result in the following HTML code generated (internally):

      -

      -<div class="mpdf_toc" id="mpdf_toc_0">
      -  <div class="mpdf_toc_level_0">
      -    <a class="mpdf_toc_a" href="#__mpdfinternallink_1">
      -      <span class="mpdf_toc_t_level_0">Section 1</span>
      -    </a>
      -    <dottab outdent="2em" />
      -    <a class="mpdf_toc_a" href="#__mpdfinternallink_1">
      -      <span class="mpdf_toc_p_level_0">5</span>
      -    </a>
      -  </div>
      -  <div class="mpdf_toc_level_1">
      -    <a class="mpdf_toc_a" href="#__mpdfinternallink_2">
      -      <span class="mpdf_toc_t_level_1">Chapter 1</span>
      -    </a>
      -    <dottab outdent="2em" />
      -    <a class="mpdf_toc_a" href="#__mpdfinternallink_2">
      -      <span class="mpdf_toc_p_level_1">6</span>
      -    </a>
      -  </div>
      -  <div class="mpdf_toc_level_2">
      -    <a class="mpdf_toc_a" href="#__mpdfinternallink_3">
      -      <span class="mpdf_toc_t_level_2">Topic 1</span>
      -    </a>
      -    <dottab outdent="2em" />
      -    <a class="mpdf_toc_a" href="#__mpdfinternallink_3">
      -      <span class="mpdf_toc_p_level_2">7</span>
      -    </a>
      -  </div>
      -</div> -

      - -

      NB The id is "0" (mpdf_toc_0) for root/un-named ToC; otherwise it is lowercase of the name="" used for the ToC

      -
      - -
      - -

      Example Styling using CSS

      -

      The following CSSwill format the ToC as it appears in this document:

      -

      -/* For Table of Contents */
      -div.mpdf_toc {
      -  font-family: sans-serif;
      -  font-size: 11pt;
      -}
      -a.mpdf_toc_a {
      -  text-decoration: none;
      -  color: black;
      -}

      -/* Whole line level 0 */
      -div.mpdf_toc_level_0 {
      -  line-height: 1.5;
      -  margin-left: 0;
      -  padding-right: 2em;
      -}

      -/* Title level 0 - may be inside <a> */
      -span.mpdf_toc_t_level_0 {
      -  font-weight: bold;
      -}

      -/* Page no. level 0 - may be inside <a> */
      -span.mpdf_toc_p_level_0 { }

      -/* Whole line level 1 */
      -div.mpdf_toc_level_1 {
      -  margin-left: 2em;
      -  padding-right: 2em;
      -}

      -/* Title level 1 */
      -span.mpdf_toc_t_level_1 {
      -  font-style: italic;
      -  font-weight: bold;
      -}

      -/* Page no. level 1 - may be inside <a> */
      -span.mpdf_toc_p_level_1 { }

      -/* Whole line level 2 */
      -div.mpdf_toc_level_2 {
      -  margin-left: 4em;
      -  padding-right: 2em;
      -}

      -/* Title level 2 */
      -span.mpdf_toc_t_level_2 { }

      -/* Page no. level 2 - may be inside <a> */
      -span.mpdf_toc_p_level_2 { }

      -

      -

      NB padding-right should match <dottab> "outdent" (0 is default). See <dottab> for more details

      -
      - -
      -

      The functions TOCpagebreakByArray() and TOCpagebreak() have a new final parameter, and HTML tags <TOC> and <TOCpagebreak> have a new attribute "tocoutdent". This should be blank or a valid CSS length e.g. "2em". See <dottab> for more details.

      -
      - - - - - -

      Text-align on decimal point

      -
      -

      Text inside a table column can be aligned on a decimal point (or any other character) by using either HTML attribute or CSS.

      -

      This example table uses the following CSS stylesheet:

      -

      -<style>
      -.aBDP { text-align: "." center; }
      -.arBDP { text-align: "\66B" center; }
      -.middot { text-align: "\B7" center ; }
      -</style> -

      -

      - - - - - - - - - - - - - - - - - - - - - - - -
      <TD> elementColumn
      align="left"Left text
      align="right"Right text
      align="center"Center text
      align="char"

      1000.0001

      align="char" char=","

      1000,0001

      align="char" char="&middot;"

      1000·0001

      align="char" char="&#183;"

      1000·0001

      style="text-align: \'.\' center"100.001
      style="text-align: \'.\' center"DP aligned text
      style="text-align: \',\' center"

      1.000,0001

      class="aBDP"10.01
      class="aBDP"1000
      class="aBDP"

      1000.0001

      class="middot"1 000·0001
      class="aBDP"

      1,000,000.00001

      class="aBDP"1.000000001
      class="aBDP"1.000.000.001
      class="arBDP"

      ١٬٥٦٧٬٢٣٤٫٢٣٤٧

      class="aBDP"(GBP) 1,000,000.00001
      1,000,000.00001 (EUR)
      1,000,000.00001
      - -
      - - - - - - -

      Automatic ToC and Bookmarks

      -
      -

      A Table of Contents and/or Bookmarks can be generated automatically from any of the heading tags H1 - H6. This example will generate ToC and bookmarks from all <h3> tags (top level) and <h4> tags (next level)

      -

      - $mpdf->h2toc = array(\'H3\'=>0, \'H4\'=>1);
      - $mpdf->h2bookmarks = array(\'H3\'=>0, \'H4\'=>1); -

      -
      - - - - - - -

      Improved line-breaking

      -

      mPDF will now avoid line-breaks in the middle of words even between <tags>

      -
      -

      -<b>Na<sub>2</sub>HCO<sub>3</sub></b> -

      -

      Pellentesque purus feugiat semper. Donec nunc odio, et vitae pellentesque. Pellentesque Na2HCO3 velit lacus.

      -
      - - -

      CSS hyphens

      -
      -

      The CSS property hyphens is now supported on all block elements

      -

      -hyphens: manual | auto | none -

      -

      In the following example, the word interdependent contains no soft hyphen or similar characters, and is moved to the next line.

      - -

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (no characters suggesting line-break).

      - -

      manual (default) - Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities. Characters can be explicit ("-" hard hyphen) or conditional (&shy; &#173; <wbr>).

      -

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter­dependent (uses soft hyphen &shy;).

      - -

      none - Words are not broken at line breaks, even if characters inside the word suggest line break points.

      -

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter-dependent (hard hyphen).

      - -

      auto - Words can be broken at appropriate hyphenation points, as determined by characters inside the word.

      -

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (No characters suggesting line-break).

      -

      SHY inside the word take priority over hyphenation points determined by other resources.

      -

      Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter­dependent (uses soft hyphen &shy;).

      - -

      The configurable variables $this->hyphenate and $this->hyphenateTables are henceforth redundant and have no effect.

      -

      NB Support for <wbr> is new in mPDF 5.7

      -
      - - - - - -

      Text circle

      -
      -

      Added in mPDF 5.6 but not included in New Features example - transparent background and Divider were new. Now also added support for font-size:auto

      -

      -<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular" divider="&bull;" style="font-size: auto" /> -

      -

      -
      -
      - - -

      List numbering

      -
      -

      This list is set to start numbering at 5

      -

      <ol start="5">

      -
        -
      1. List item number 1
      2. -
      3. List item number 2
      4. -
      5. List item number 3
      6. -
      -
      - - - - -

      <dottab> and outdent

      -
      -

      <dottab> now supports a custom CSS property "outdent", which can also be used as an HTML attribute i.e. <dottab outdent="2em">

      -

      The first item uses <dottab outdent="4em"> whereas the following items have <dottab class="menu"> (with CSS dottab.menu{outdent: 4em;} ) and all have padding-right="4em" on the <div> element

      -
      - - - - - - - - - -
      -

      -

      -p.menu { text-align: justify; padding-right: 4em; }
      -dottab.menu { outdent: 4em; } -

      -

      NB It is recommended to use &nbsp; after the dottab if a space is required before the following content.

      -

      NB This (outdent) is also used in the Table of Contents (see earlier in this document).

      -
      - - - -

      Layers

      -
      -

      mPDF 5.7 will create layers in the document using the CSS property z-index. All layers are visible by default.

      -

      This demonstrates layers in a PDF document. Select the layers named "Correct Answers" or "Wrong Answers" in your PDF viewer (the layers pane should be open already in Adobe Acrobat)

      -
      What is the name of the Prime Minister of Britain?
      -
      David Cameron
      -
      Rupert Murdoch
      -
      What is the name of the David Beckham\'s bulldog?
      -
      Scarlet
      -
      Victoria
      -

      To open/close/select layers in Adobe Reader (10):
      -

      -

      The layer names and initial state can be set (optionally) e.g.

      -

      - $mpdf->layerDetails[1][\'state\']=\'hidden\'; // Set initial state of layer - "hidden" or ""
      - $mpdf->layerDetails[1][\'name\']=\'Correct Answers\';
      - $mpdf->layerDetails[2][\'state\']=\'hidden\';
      - $mpdf->layerDetails[2][\'name\']=\'Wrong Answers\';
      -

      -

      This is the code used in the example above:

      -

      - <div style="z-index:1;color: green;float: left; width:30%;">Scarlet</div>
      - <div style="z-index:2;color: red;">Victoria</div> -

      -
      To force the PDF reader to open with the layers tab open, set: -

      $mpdf->open_layer_pane = true;

      -
      - -
      - - - -

      CSS visibility on <span>

      -

      CSS visibility:hidden is now supported on inline elements e.g. <span>

      -
      -

      This next bit of text is hidden - Hidden text - and this isn\'t.

      -

      style="visibility:hidden;"

      -

      This next bit of text is only visible in print - Hidden text - and this isn\'t.

      -

      style="visibility:printonly;"

      -

      This next bit of text is only visible on screen - Hidden text - and this isn\'t.

      -

      style="visibility:screenonly;"

      -

      You can show or hide these elements as for layers (above).

      -
      - - - -

      CSS "rem" unit

      -
      - -
      This line has the font-size set as 1rem -
      This line has the font-size set as 0.5rem -
      This line has the font-size set as 1.5rem -
      -
      -
      -
      This line has the font-size set as 1em -
      This line has the font-size set as 0.5em -
      This line has the font-size set as 1.5em -
      -
      -
      - -
      - - - - -

      CSS outline

      -
      -
      This is text with an outline set by CSS
      -

      -.outlined { text-outline: 0.1mm 0.1mm #FF0000; } -

      -
      - - - - - -

      CSS background-clip, background-origin & background-size

      -
      -

      CSS background-clip, background-origin & background-size are now supported for most block level elements. (Not supported in tables, nor on page/body backgrounds).

      - - -
      background-clip: border-box[default value]
      background-origin: padding-box[default value]
      -
      background-clip: content-box;
      background-origin: content-box
      -
      background-clip: padding-box;
      background-origin: padding-box
      -
      background-clip: border-box;
      background-origin: border-box
      -
      background-clip: content-box;
      background-origin: border-box
      -
      background-clip: border-box;
      background-origin: content-box
      - -
      background-clip: border-box[default value]
      background-origin: padding-box[default value]
      -
      background-clip: content-box;
      background-origin: content-box
      -
      background-clip: padding-box;
      background-origin: padding-box
      -
      background-clip: border-box;
      background-origin: border-box
      -
      background-clip: content-box;
      background-origin: border-box
      -
      background-clip: border-box;
      background-origin: content-box
      - - -
      - - -'; - -$mpdf->h2toc = array('H3'=>0, 'H4'=>1); -$mpdf->h2bookmarks = array('H3'=>0, 'H4'=>1); - -$mpdf->open_layer_pane = false; -$mpdf->layerDetails[1]['state']='hidden'; // Set initial state of layer - "hidden" or nothing -$mpdf->layerDetails[1]['name']='Correct Answers'; -$mpdf->layerDetails[2]['state']='hidden'; // Set initial state of layer - "hidden" or nothing -$mpdf->layerDetails[2]['name']='Wrong Answers'; - -//============================================================== -if ($_REQUEST['html']) { echo $html; exit; } -if ($_REQUEST['source']) { - $file = __FILE__; - header("Content-Type: text/plain"); - header("Content-Length: ". filesize($file)); - header("Content-Disposition: attachment; filename='".$file."'"); - readfile($file); - exit; -} - -//============================================================== - -$mpdf->WriteHTML($html); - -// OUTPUT -$mpdf->Output(); exit; - - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/firefox-48.png b/inc/3rdparty/libraries/mpdf/examples/firefox-48.png deleted file mode 100644 index b982cf97903836a406b640bc76ca4de112f1d788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5640 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 - - - - - -

      Submitted data from PDF Form

      -

      (See formsubmit.php in the Examples folder for details)

      -'; - - -if (count($_POST)) { - // To display HTML output from PDF form - echo '

      HTML format data sent as POST

      '; - foreach($_POST AS $name=>$val) { - $t = mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' ); // If from core fonts doc - echo '

      PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'

      '; - } -} -else if (count($_GET)) { - // To display HTML output from PDF form - echo '

      HTML format data sent as GET

      '; - foreach($_GET AS $name=>$val) { - $t = mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' ); // If from core fonts doc - echo '

      PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'

      '; - } -} - -else { - $postdata = file_get_contents("php://input"); - - if ($postdata) { - echo '

      XFDF format data detected

      '; - // To parse XFDF - if (preg_match_all('/\s*((.*?)<\/value\s*>)\s*<\/field\s*>/s', $postdata, $m)) { - for($i=0; $i(.*?)<\/value\s*>/s', $m[2][$i], $v); - if (count($v[0])>1) { - $values = array(); - foreach($v[1] AS $val) { $values[] = $val; } - //foreach($v[1] AS $val) { $values[] = htmlspecialchars_decode($val); } - echo '

      Field: '.$m[1][$i].' => [array of values] ('.implode(', ',$values).')

      '; - } - else { - //echo '

      Field: '.$m[1][$i].' => '.htmlspecialchars_decode($m[3][$i]).'

      '; - echo '

      Field: '.$m[1][$i].' => '.$m[3][$i].'

      '; - } - } - } - if (preg_match_all('/\s*\s*<\/field\s*>/s', $postdata, $m)) { - for($i=0; $iField: '.$m[1][$i].' => [blank]

      '; - } - } - if (preg_match_all('//s', $postdata, $m)) { - for($i=0; $iField: '.$m[1][$i].' => [no value]

      '; - } - } - - - // To display whole XFDF - //$postdata = preg_replace("/[\n\r]/", "", $postdata); - //$postdata = preg_replace('/>\s*\n<", $postdata); - //echo nl2br(htmlspecialchars($postdata)); - } - else { echo "No form data detected"; } -} - - - -echo ''; - -exit; - -function PDFDocEncodingToWin1252($txt) { - $Win1252ToPDFDocEncoding = array( - chr(0200) => chr(0240), chr(0214) => chr(0226), chr(0212) => chr(0227), chr(0237) => chr(0230), - chr(0225) => chr(0200), chr(0210) => chr(0032), chr(0206) => chr(0201), chr(0207) => chr(0202), - chr(0205) => chr(0203), chr(0227) => chr(0204), chr(0226) => chr(0205), chr(0203) => chr(0206), - chr(0213) => chr(0210), chr(0233) => chr(0211), chr(0211) => chr(0213), chr(0204) => chr(0214), - chr(0223) => chr(0215), chr(0224) => chr(0216), chr(0221) => chr(0217), chr(0222) => chr(0220), - chr(0202) => chr(0221), chr(0232) => chr(0235), chr(0230) => chr(0037), chr(0231) => chr(0222), - chr(0216) => chr(0231) - ); - return strtr($txt, array_flip($Win1252ToPDFDocEncoding) ); -} - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/goto.gif b/inc/3rdparty/libraries/mpdf/examples/goto.gif deleted file mode 100644 index e7de2b10654bd86af090b4794f36befd473930cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmZ?wbhEHb)MDUcn8?8J|Ns9p3?T52kxB6<3#$kNGlLF@50YnK3Z2rw^0YMn;yGK~ zk~g2L2zO`<6K7oZb52s%w6`vsihi$pSIsHJ`)R_d%}>jeru3__tdrZ=@cxC(-Dwlj iLaJhu>USh|&R)38!Yb+d=8cQ4Pip(kD=xyoU=0Amr!+JG diff --git a/inc/3rdparty/libraries/mpdf/examples/img1.png b/inc/3rdparty/libraries/mpdf/examples/img1.png deleted file mode 100644 index fe3f4ded8b2ac7e76734ffb9bf72524a0ebfd511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1000 zcmZ9KZAepL6vzMfW#wzsgR3DGCLtu4a~qLThB;GvSz<%ePqwr$vMfhIUToYJy)aBa z1Tg~r5D^hk(uY-I5z?n&C5D!(MCPVpA~iH(^mOhWL+HSLo^${F?>WEcJoiS8qcSrs zI}Jc)b(OuA_7v?&k!bz(!SS3np`*5PFCLF^v*BL+xOXryN5$xLxV2{txTlD&Y6rT&C5qh`O z6}B!L5CO@r$#$m@GXi$!;v#s4%p>3o)R(^x^Ib9@2X6%W=V1Q^>lnyXNH?HYrzKa* z5)A$zYl!rLd1xwC`!Mq!Y=VxC!hWo=L$zwNnl!AYJ4(#0--iqlH9A`00bJ!~!Mcg6 zonFC&*N<>Rf*!V}73SYpu$&L37c#-LfW97h6e#WB2Jl{R1zewAABTrSX+wcQK(BsZ z`=bR*`S7Sv2*?{kz5N|m0IaIRq0N_fV3nrg{s5UH$p>C8;Ks`W*spqGcc+|t0 z!qI-cGZI~7%t4mGa=)uIYE&6{7TxW^q`rL;sAR%^0{0Zw4Z>&>3X< zJ~>-y{Sfw)Le)W&qQ(F}%nf=1&7Ta(SP8rYXhr4bylb>Ecdg?H|35JO>XinO+FsSr z0i;u&&VIcd+l{WaI{q%7No^=V$nrruclRr#dehzT}!A%i%P)i)Sfk- z5nY$5wF(lmwP+C)5gF=&##*LU&>*!I8f|o<`S7C)egqve`ug65P}m>teP14)`~QFM zbN6$V)ndq;k_o_2Ss^WFd!G8F^K6xRI|cwARZDBi1)U%$f~&*jzvFl6oMW*uX_0h& z-}T_5pzo3|p%Z$oz0(V(Cq5;bnw!p?J`)-U#oxq-PYjPe7z_RpJl}FYhvazN9zmCg zzlhh=*7)82lG!D#n_ELeq4<+{urKIq_bGtP2IDSJ%3%bkuN9rDpp{YF8$vF@1E#Mw zh$$I!4MkyaB&7wRbR$%kq(@2PIP<@| z@V*d4Yh;8mhVBD!$dK)zdeBZ#8B|NJo5DdMug5GshfeK#EsoB5R|tm!nE^S2i2NfG z4dO3~LJEc1sTZ)N?ggWZLsSimRo_0C15lQ*%dDX5-qEOo5}Crjw=EKVMTnJIyzhH# z=BTI;<`IH@_|FWh3d)}=1$l;LS|9e$aB9ZD4mh(Bc?OL^VDG20<#YS6zzjtLO^GT4 z+$gTo4p9B6;zbK^8DJ|cU(eXXHqyG>T2237cyjfs3Xx&2sM`o+v2zyTh90&jnCPjL zzOUKh`L%1*(4Uvhp9*n-9k*OnuhX|Su6f(`P2R=+>e#MHX6H7?F~wdM$@syWKlQ?7 zZ~oI4uP4}+n*R(K!k3!of2eue3Dm&)V?I YZQtx8ix+P0Fs3t3RF+$%vkM!Q&q=XJvj6}9 diff --git a/inc/3rdparty/libraries/mpdf/examples/img3.png b/inc/3rdparty/libraries/mpdf/examples/img3.png deleted file mode 100644 index a7a94872b3d55e6845d00b1c97f44c1b6be37ff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmZ8fe@q)?7=G@0b)}_%-#FGSn?fbqLYz#Ci5SE&$|!EuhBYX}I3&3E1CkoisXJLY zuW{36!X`>e16@Qz+_DfuVx7p`B>GQd7_vY{hdPgT8rB$7H)A?Kzq_U(@lEdg-aL8k zd7t;WJLYjWTFslx0IW?eXEVD?*|W=JVCOzhAPgAb+2?H#ctMbb;Jd-t4>5&TR#U6a zJ0s2JI{P}M*U7r|Cyfubbj^9YW(x~1*lubbP9JN(Ll07?*%*4hukAi>PRTUN-TliV}h= z41dll=3qQzty}>|vYa;uQ+d_>MGMkko9}Sc$kz`99FhTaLy&@}AQb54#*L^SfP>8v zi;Nx9pO&}gt+xtDfWhA|+E67{ zI6Pv)p=GsXTxSHbxkZA==i$+v%%fVgC%LWegmFl8?l7=pF?2elA->$uu6Vg{&LR zftm+|u(MTfpz(8M5F3H70CuABuC4E|i}W%6ar2QSwZ%#@mpv-gF3fo1w(>fm?_*FXA@VA&JZjO_$_Un?h#-N4S^`=`0Urz^qC%UoC{VIC23Qdg z4Olk~RD#4p)v74gSRR5EWY<^&MtLN)C?TK)d<>?oWx0D3hH+>AnS0JZ-}%n}f9JdB z9EuU}>}}m_0oX_Kx$EdTg#N^DFzK;mYt=@8iI|UL!&wX#OTsECDpCKe&S&J0j*oI9 zxHn2~=pX2ter%d#u#^I&kC)Hn)MQF(%GuLr4IPGw7ZciVwWIx``iuI8T@6m8Q>DC; z#h9FUG7%dWtCp(+mIP$(%QSQwCLT@bTl7u)n(Jp zQux!oI8HiSxJl3>LINDky{79X5d%zg1K~8%YmJ?Nr=`B?jgn+AIIwiHd97`K0AK_S zx6(A(Vhj;j>4hv%b}Y&WiUi%4(io^97S#hP0Z=>!_gDC9L6a5(grzz?c$u?l4RSRZ zZ>$0-rd{DjU`PY9mp(ccE8xI|#NX_dj&02brhQYCz>a|!i!@aolEeH6e-FA^`fHiU zm%|W0tsVhMuQmUXhu;^1v=nlI%Q&izLM(zv2#O6#3Q7dZ;$9U6F$GZu7O@FPE&uDI z;YFr}5KADU1?B5u9OIA{5!Wd!q#&W`lnO|mITu_?2n?IeqNAl0!M%{Ip%1fxN;gr% zVu}<|5EkYdho6z8fTpN^S0o1yb0j3qVd-1&Di{K@Q09d|kRyn;)S>STVfGmK68Uy8 zj=-XUMem>SmN};dtAZi12%Q1V8X$*Xyd{B|KNCz24`>AF5xlwc57HBvxlZs2_5XoK z*RGjG*a-RYp962w`I{us{mcGI`uSu=azkUYE5~HTr4@d&!w()!_i`GpU%!6ml}YMg z&YH_b`)sN+6!tN?q-_byd}hEw_1?UU z`-LfmUv6)_?R*}4sjewm-$Gfl^VGHu@g-L)`7GvJw!RPYmbarl-B%G(qpZ6tJJD(C z6?_oFemi=DF5qlgHLl9;Y`xaLU$`7)188^Uob3!}QFg7SyJ!B&;C9$Cri z!P>Caz4u(oa+azXZySI3o4t7Zqp*#|X@&o}?rxXuS+)6_4({QeJRsSm#R z(mHY~CFSetkGg%HiYKIFFMJc1{)?S-&!@I6<*rgk9$UlIv!2K~Dx26l3uM2@nc{!+ zeILkBe|p<7Y2WTrTuS_$MZ?~$qxat;Qm+_sp>gR=+gF1QDmTS$-MXCA$FpMn6p6ct zJy}}S@8ddeFE7OXA$O+Dl}f<)huyfL!7U&&wGiTP3a;qgB@Y=l?kymteUuDr-EJQLkBh4{7bystSgosioIz;rFZ6jcRY$gQ)^b_`ZVy@ z`Vs>Uhk02hewy@T45QV9>iQ*^g9pWD*5l|5;tPcA<7&BjHi%}+TpT);iII!W?hvT~;s diff --git a/inc/3rdparty/libraries/mpdf/examples/img5.png b/inc/3rdparty/libraries/mpdf/examples/img5.png deleted file mode 100644 index 1e4c5ec54291e1d57b196bba43cf7a0123ccecc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1802 zcmZ8g4K!3~7=G`}9e<(R4AN4{&WWwWj8bg*8ATZX%Jioes~WOpn>7Yw8u}YWKPtqe z+9V;hF_K2xDHSC(D@DqRaehLFGrUzCKRLR5S}-1?|hL=p|X9b&Fz-Z^wf@lw&) z(5NAy=UC_L=h$n$YGUJKD=R9Mca z*1}eX3nOKBin2pF@_Izkq-e}&6aw&x!SDoNDFU4U>?o>83+T#kY(PfJ6n|G{bM+G8h0VAYd6mI~fms z2>fUVT)>S{Tm?7=#9X{xiF=@UC*W)V$sjOa0sR>eq<8>Cr%o((+HS%_VJjA`Dg{hH zq~f;{`q}||P8=PaBw)$}AzhnQ4@I8>Fp--?48|k~(OIi6hb=yU&`%K3oNqQkR0zuG z3HQK=`Q~|S4}5Y2OebUoR&Sv+4+MPRCj(9aJRfjA;JWlmaS-6ZPXs3l0{OcCwYuMF z)DZ+i;1h;K3Q!GGF`bFqI5^@UBosX~n4po%8=vK&}iqvRTQzy=^#rvr}x(Pj*g2_j=q z4S>!AN_;<=E!m<8RxAgh&gdkl^#FyiC|cKmmOoi!>MDR60K^KC@J3H!!&1Un;rRax zUf;T`*XnU)afoP^ z*|42+Y(tynW02!#KReUo7NrL$oI*{DSXOJvSj%C;XGtY)9uO|eg?2{@1>qhX83 zThNx-)E9An8cruwLi;%0pVrG8M`}JE$}7%qKC+RS{1`;R)uVN04*K@XW?f5MhU=~Q z$42&Nn7Ha>mhnMuiJsv4qMc*rwZS{;pVTr0uAZ9p^B8O&kHO+*mtTCE#@2t?JDp1j zaYfh1=59T~z#o9y{!d+j!R=t-ZmIERrZ@T(KboPDl%_v1DYvd(MlPxQx8>>XlDd-3 zWx1Q4EP3O0D|yHT`{26TD{XF%Q&|xw!Tmmu?D39D>;9OSH1}!v@aHiyObt>z$=O2My@BW$(^GA}}FbQ{i0o+`76&-j{ z_`N3qBfPqJ!}c4lQv_X?qvP9cxiVkm=59ZgvFWLMMJ0l>ocV~NqB$n-oyfpRd`0^H z%+UoAHnPj?E7RHM92>rKtPA-S>b5OxrT@HQs#$)vvoor;s4(q~GI{zbhUT%(>_J{_ zb_K%AHtLOPyO$C^hk#6cf*?sgD&2I}l7k(+aJVtwC!Ww46u!KAtmJ)tZf0ug+`WOY zRX#f?^y^sO`;$v{`n~X$(+8+rS)^l6%jzQKjw+XIR`)#UIOBDm$8;T-rhMi1ups?` zT14tK4T=wqI$UnOd4=PGnQtn$&oJ0a^S)@?cD32`Y)7qBnj)`4xCwKPsm+{{10Lq= z8mu6#-b*W!@=~^SnG2E==BVX!w{{t&R**zK(?hFm{U2V}kBmk=-5AarwQmJ3ee5;J z?K6hbd{&S}eZa%J$EHLg@`Q`F@(Urk1?o_D$$4HZQj_c6iz8O*N0|JzAR>ycZ~2qxMia# diff --git a/inc/3rdparty/libraries/mpdf/examples/index.php b/inc/3rdparty/libraries/mpdf/examples/index.php deleted file mode 100644 index 869bab8cd..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/index.php +++ /dev/null @@ -1,40 +0,0 @@ -

      mPDF Example Files

      '; - -foreach($files AS $n=>$f) { - echo '

      '.$n.') '.$f[0].'   PDF   PHP

      '; -} - -echo ''; -exit; - - -// For PHP4 compatability -if (!function_exists('scandir')) { - function scandir($dir = './', $sort = 0) { - $dir_open = @ opendir($dir); - if (! $dir_open) - return false; - while (($dir_content = readdir($dir_open)) !== false) - $files[] = $dir_content; - if ($sort == 1) - rsort($files, SORT_STRING); - else - sort($files, SORT_STRING); - return $files; - } -} - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/examples/klematis.jpg b/inc/3rdparty/libraries/mpdf/examples/klematis.jpg deleted file mode 100644 index b87e920c171d2cdddc91492f10a910b07c534ed2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10937 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/loading.gif b/inc/3rdparty/libraries/mpdf/examples/loading.gif deleted file mode 100644 index e846e1d6c58796558015ffee1fdec546bc207ee8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 771 zcmZ?wbhEHb6krfw*v!MQYQ=(yeQk4RPu{+D?cCXuwr^cCp}%d_ius2R?!0jBXnAQ) zOH<|l|Nj|aK=D7fpKD04vtxj(k)8oFBT!uNCkrbB0}q1^NDatX1{VJbCr|b)oWWMT zS%hVC ~NwO_yO%;SvZ5MdNYf|QNy-I*%yJaj+uTdt+qbZ z4E`Fzb8m}I&!N8OKmWEcCmrLs^Hs&3i)mt@hQVdcqghkaBs*D}tG_lKew4?rTjzIZ z9tSone1TS+TR7tu^CunG)Y7Jg#sw#)sG9C!c0I%LEzP)9;hqRf&)s$D8d5Db{TBs% zgl0~5QQ91luq4Q9tJgt4QLbaxZvAaKeCM9!oy85dg4k>TdBSVqjHub_PG=PO&J-rx z7oYTuF+kH|tG-UK+EkUhDjYx?zW?T|lx>+aOQm zzL$v$zBLo4Cj=G&tw{H}dW?tlTkS)SY4<#NS92z*EY-MMB6Ftp`R=*=*Ev7cS+X%W zMCur^FdlokL}1Y+&aasU2J4#EOuNlnb9CmqgLCGTSY!1BD42pkHY^XidQ5=>YQx%` z*%Pm9D!CkBu&tMWm(%-ejACVWGS2RX5=QOJ$1*tr7F}F+*-OA+Ly&Isg|AEuUYicA z#%IG6kPXkHt{zk2M6zK@Vu^4Q(1zE$?yY6M!^&jQ+2^E?!p7{g*|X6}vuRC3p@jk0 W117c83?+LXEZI4G$p&LV25SKE>nb+@ diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css deleted file mode 100644 index 90036e2a8..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css +++ /dev/null @@ -1,89 +0,0 @@ - body { font-family: DejaVuSansCondensed, sans-serif; font-size: 11pt; } - p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } - - hr { width: 70%; height: 1px; - text-align: center; color: #999999; - margin-top: 8pt; margin-bottom: 8pt; } - - a { color: #000066; font-style: normal; text-decoration: underline; - font-weight: normal; } - - ul { text-indent: 5mm; margin-bottom: 9pt; } - ol { text-indent: 5mm; margin-bottom: 9pt; } - - pre { font-family: DejaVuSansMono, monospaced; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } - - h1 { font-weight: normal; font-size: 26pt; color: #000066; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 18pt; margin-bottom: 6pt; - border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; - text-align: ; page-break-after:avoid; } - h2 { font-weight: bold; font-size: 12pt; color: #000066; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: 6pt; - border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; - text-align: ; text-transform: uppercase; page-break-after:avoid; } - h3 { font-weight: normal; font-size: 26pt; color: #000000; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 0pt; margin-bottom: 6pt; - border-top: 0; border-bottom: 0; - text-align: ; page-break-after:avoid; } - h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 10pt; margin-bottom: 7pt; - font-variant: small-caps; - text-align: ; margin-collapse:collapse; page-break-after:avoid; } - h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 8pt; margin-bottom: 4pt; - text-align: ; page-break-after:avoid; } - h6 { font-weight: bold; font-size: 9.5pt; color: #333333; - font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: ; - text-align: ; page-break-after:avoid; } - - - .breadcrumb { - text-align: right; font-size: 8pt; font-family: DejaVuSerifCondensed, serif; color: #666666; - font-weight: bold; font-style: normal; margin-bottom: 6pt; } - - .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; } - - .big { font-size: 1.5em; } - .red { color: #880000; } - .slanted { font-style: italic; } - -/* For Table of Contents */ -div.mpdf_toc { - font-family: sans-serif; - font-size: 11pt; -} -a.mpdf_toc_a { - text-decoration: none; - color: black; -} -div.mpdf_toc_level_0 { /* Whole line level 0 */ - line-height: 1.5; - margin-left: 0; - padding-right: 2em; /* should match e.g 0 is default */ -} -span.mpdf_toc_t_level_0 { /* Title level 0 - may be inside */ - font-weight: bold; -} -span.mpdf_toc_p_level_0 { /* Page no. level 0 - may be inside */ -} -div.mpdf_toc_level_1 { /* Whole line level 1 */ - margin-left: 2em; - text-indent: -2em; - padding-right: 2em; /* should match 2em is default */ -} -span.mpdf_toc_t_level_1 { /* Title level 1 */ - font-style: italic; - font-weight: bold; -} -span.mpdf_toc_p_level_1 { /* Page no. level 1 - may be inside */ -} -div.mpdf_toc_level_2 { /* Whole line level 2 */ - margin-left: 4em; - text-indent: -2em; - padding-right: 2em; /* should match 2em is default */ -} -span.mpdf_toc_t_level_2 { /* Title level 2 */ -} -span.mpdf_toc_p_level_2 { /* Page no. level 2 - may be inside */ -} - diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css deleted file mode 100644 index 4c5ff6cf5..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css +++ /dev/null @@ -1,123 +0,0 @@ - @page { - size: 15cm 17cm; /* width height {1,2} | auto | portrait | landscape NB 'em' and 'ex' % are not allowed */ - margin: 10%; /* % of page-box width for LR, height for TB */ - margin-header: 5mm; - margin-footer: 5mm; - margin-left: 4cm; - margin-right: 2cm; - odd-header-name: myHeader2Odd; - even-header-name: html_myHTMLHeaderEven; - odd-footer-name: html_myHTMLFooterOdd; - even-footer-name: myFooter2Even; - marks: crop; /* crop | cross | none */ - } - - @page :first { - margin-top: 5cm; /* Top margin on first page 10cm */ - } - - @page standard { - size: auto; /* auto is the default mPDF value */ - margin: 10%; /* % of page-box width for LR, height for TB */ - marks: none; /* crop | cross | none */ - } - - @page standard :first { - margin-top: 7cm; /* Top margin on first page 10cm */ - } - - @page bigsquare { - size: 15cm 20cm; - margin-left: 4cm; - marks: crop cross; /* crop | cross | none */ - background: transparent url('bg.jpg') repeat scroll 5mm 5mm; /* position inset by bleedMargin */ - } - - @page bigsquare :right { - header: html_myHTMLHeaderOdd; - footer: html_myHTMLFooterOdd; - } - - @page bigsquare :left { /* left is what mPDF calls EVEN page - right=ODD */ - header: html_myHTMLHeaderEven; - footer: html_myHTMLFooterEven; - } - - @page smallsquare { - size: 25cm 15cm; - margin-left: 4cm; - marks: crop; /* crop | cross | none */ - background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5; - } - - @page rotated { - size: landscape; - marks: none; /* crop | cross | none */ - background-color: #fff0f2; - margin-left: 3cm; - margin-right: 3cm; - } - @page rotated :first { - margin-top: 7cm; /* Top margin on first page 10cm */ - } - - h1.heading1 { color: #1188FF; - } - - h1.heading2 { color: #88FF11; - page-break-before: always; - page: standard; - } - h1.heading3 { color: #FF1188; - page-break-before: right; - } - h1.heading4 { color: #FF8811; - page-break-before: left; - page: bigsquare; - } - h1.heading5 { color: #11FF88; - page: smallsquare; - } - h1.heading6 { color: #8811FF; - page: rotated; - } - - br.paging { page-break-after: always; } - - body { font-family: DejaVuSansCondensed; font-size: 11pt; } - p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } - - hr { width: 70%; height: 1px; - text-align: center; color: #999999; - margin-top: 8pt; margin-bottom: 8pt; } - - a { color: #000066; font-style: normal; text-decoration: underline; - font-weight: normal; } - - ul { text-indent: 5mm; margin-bottom: 9pt; } - ol { text-indent: 5mm; margin-bottom: 9pt; } - - pre { font-family: DejaVuSansMono; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } - - h1 { font-weight: normal; font-size: 26pt; color: #000066; - font-family: DejaVuSansCondensed; margin-top: 18pt; margin-bottom: 6pt; - border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; - text-align: ; page-break-after:avoid; } - h2 { font-weight: bold; font-size: 12pt; color: #000066; - font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: 6pt; - border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; - text-align: ; text-transform: uppercase; page-break-after:avoid; } - h3 { font-weight: normal; font-size: 26pt; color: #000000; - font-family: DejaVuSansCondensed; margin-top: 0pt; margin-bottom: 6pt; - border-top: 0; border-bottom: 0; - text-align: ; page-break-after:avoid; } - h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; - font-family: DejaVuSansCondensed; margin-top: 10pt; margin-bottom: 7pt; - text-align: ; margin-collapse:collapse; page-break-after:avoid; } - h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; - font-family: DejaVuSansCondensed; margin-top: 8pt; margin-bottom: 4pt; - text-align: ; page-break-after:avoid; } - h6 { font-weight: bold; font-size: 9.5pt; color: #333333; - font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: ; - text-align: ; page-break-after:avoid; } - diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css deleted file mode 100644 index b36d69824..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css +++ /dev/null @@ -1,124 +0,0 @@ - - body { font-family: DejaVuSansCondensed; font-size: 11pt; } - p { text-align: justify; margin-bottom: 4pt; margin-top:0pt; } - - table {font-family: DejaVuSansCondensed; font-size: 9pt; line-height: 1.2; - margin-top: 2pt; margin-bottom: 5pt; - border-collapse: collapse; } - - thead { font-weight: bold; vertical-align: bottom; } - tfoot { font-weight: bold; vertical-align: top; } - thead td { font-weight: bold; } - tfoot td { font-weight: bold; } - - thead td, thead th, tfoot td, tfoot th { font-variant: small-caps; } - - .headerrow td, .headerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2; } - .footerrow td, .footerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2; } - - th { font-weight: bold; - vertical-align: top; - text-align:left; - padding-left: 2mm; - padding-right: 2mm; - padding-top: 0.5mm; - padding-bottom: 0.5mm; - } - - td { padding-left: 2mm; - vertical-align: top; - text-align:left; - padding-right: 2mm; - padding-top: 0.5mm; - padding-bottom: 0.5mm; - } - - th p { text-align: left; margin:0pt; } - td p { text-align: left; margin:0pt; } - - table.widecells td { - padding-left: 5mm; - padding-right: 5mm; - } - table.tallcells td { - padding-top: 3mm; - padding-bottom: 3mm; - } - - hr { width: 70%; height: 1px; - text-align: center; color: #999999; - margin-top: 8pt; margin-bottom: 8pt; } - - a { color: #000066; font-style: normal; text-decoration: underline; - font-weight: normal; } - - ul { text-indent: 5mm; margin-bottom: 9pt; } - ol { text-indent: 5mm; margin-bottom: 9pt; } - - pre { font-family: DejaVuSansMono; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; } - - h1 { font-weight: normal; font-size: 26pt; color: #000066; - font-family: DejaVuSansCondensed; margin-top: 18pt; margin-bottom: 6pt; - border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; - text-align: ; page-break-after:avoid; } - h2 { font-weight: bold; font-size: 12pt; color: #000066; - font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: 6pt; - border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; - text-align: ; text-transform:uppercase; page-break-after:avoid; } - h3 { font-weight: normal; font-size: 26pt; color: #000000; - font-family: DejaVuSansCondensed; margin-top: 0pt; margin-bottom: 6pt; - border-top: 0; border-bottom: 0; - text-align: ; page-break-after:avoid; } - h4 { font-weight: ; font-size: 13pt; color: #9f2b1e; - font-family: DejaVuSansCondensed; margin-top: 10pt; margin-bottom: 7pt; - font-variant: small-caps; - text-align: ; margin-collapse:collapse; page-break-after:avoid; } - h5 { font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; - font-family: DejaVuSansCondensed; margin-top: 8pt; margin-bottom: 4pt; - text-align: ; page-break-after:avoid; } - h6 { font-weight: bold; font-size: 9.5pt; color: #333333; - font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: ; - text-align: ; page-break-after:avoid; } - - .breadcrumb { - text-align: right; font-size: 8pt; font-family: DejaVuSerifCondensed; color: #666666; - font-weight: bold; font-style: normal; margin-bottom: 6pt; } - - .evenrow td, .evenrow th { background-color: #f5f8f5; } - .oddrow td, .oddrow th { background-color: #e3ece4; } - - .bpmTopic { background-color: #e3ece4; } - .bpmTopicC { background-color: #e3ece4; } - .bpmNoLines { background-color: #e3ece4; } - .bpmNoLinesC { background-color: #e3ece4; } - .bpmClear { } - .bpmClearC { text-align: center; } - .bpmTopnTail { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;} - .bpmTopnTailC { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;} - .bpmTopnTailClear { topntail: 0.02cm solid #495b4a; } - .bpmTopnTailClearC { topntail: 0.02cm solid #495b4a; } - - .bpmTopicC td, .bpmTopicC td p { text-align: center; } - .bpmNoLinesC td, .bpmNoLinesC td p { text-align: center; } - .bpmClearC td, .bpmClearC td p { text-align: center; } - .bpmTopnTailC td, .bpmTopnTailC td p { text-align: center; } - .bpmTopnTailClearC td, .bpmTopnTailClearC td p { text-align: center; } - - .pmhMiddleCenter { text-align:center; vertical-align:middle; } - .pmhMiddleRight { text-align:right; vertical-align:middle; } - .pmhBottomCenter { text-align:center; vertical-align:bottom; } - .pmhBottomRight { text-align:right; vertical-align:bottom; } - .pmhTopCenter { text-align:center; vertical-align:top; } - .pmhTopRight { text-align:right; vertical-align:top; } - .pmhTopLeft { text-align:left; vertical-align:top; } - .pmhBottomLeft { text-align:left; vertical-align:bottom; } - .pmhMiddleLeft { text-align:left; vertical-align:middle; } - - .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; } - - .bpmTopic td, .bpmTopic th { border-top: 1px solid #FFFFFF; } - .bpmTopicC td, .bpmTopicC th { border-top: 1px solid #FFFFFF; } - .bpmTopnTail td, .bpmTopnTail th { border-top: 1px solid #FFFFFF; } - .bpmTopnTailC td, .bpmTopnTailC th { border-top: 1px solid #FFFFFF; } - - diff --git a/inc/3rdparty/libraries/mpdf/examples/quran282.jpg b/inc/3rdparty/libraries/mpdf/examples/quran282.jpg deleted file mode 100644 index c888872dc7b4d114f85e79b4ac121b5d84060d4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175840 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

      Gcxgaqk5vmRlMv4nUs3PFbyr%TNwIh{{jq$2 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

      u{*Ne1`xj;VACZ@b zR^X4NV0I?0Z~LDPyT^2q-Bv6Lm?@O^6>Kt^YQcW^NXNvK*1mWzta9& zjelDEzia$2%6AzQKB9x8HOc@KP@W6zAO3k%W7M52VXw{qI%I43m*uo5UUgTLNB`WV zV(NuLbVWJe!x4qK>IQ{@|M2Skw}yGbEv@iT-Vnm)`9B|8AwfZuv#n_VOUEZF%7=32 zpARkUZ=DdI=%2^&A3D?zfq(0G`A|mv=Y4$qf+%ZIX6eab7sFZ{1MLZk*AFqhW zKW*Vd9mW5bP5_nrANKJH@QM6OCnSi9l>cl8AIkUt(uoL){xc5vM1+L@spIG2<^5+J zC|Fei}_)%v*|D9Lpf6xj459Nvc5A}-j{?qsTygYpWvKiHk zf5w3jKd<0F{UXHAC-mQZ;0iajb+Cm0HS%cMdRzYKtK48mM_1ZEz3tBkpaipWr2T7z c`fEIMaW#dz{?)IA`1yr|@fjKA)aCL27h8nl9{>OV diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf deleted file mode 100644 index c23ca314e2ec50320b117a500ecab0058d5d9d0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64260 zcmdSA1CVXqmNl5RZS$s$o3?e+Hg4LsZQHh;H*MRt?d<$sRn-5#s_KrfJL+{u$Bx+N zjJ3~N`>b@nwDW01-TiO?|6vOtmkjW zRt^LV-&Yl&=oF0XtsU(QjO+;*|E)pL+REYkx;+8&Uzmpn%E-#_uTlPj|2~?CnT3Oq z9RZz)g`R_vkdcA4;rHNDMph;crUZ-(tn}ZV>>cck^emxVGA2}|?bllnJI_?^8A|hN zL7qJwoGxez^{YFw_TxqYiEtQrwXwFctwdL?L*II0BQZ4jBenJJ)J%c8SYR^B*3lC2?xKD@~Xbrq+=i!mr zp$QR4B25vRghmsM38V}+Fy$*igdT9v>^s7)Jx}ZoUNl^>lf^lVFrnKLG>58Pk0L+6mw#ogL!{xtX&D1w$>0A$`;vDyvFjf#PiK?Fruf;q`X8w{x-c*c>e>l!4kB zO(8{q$`Kw8X~c?~Eh=OlOCc$=;_!}(xML8*A8f~if*9O~f404NLlU^*8g`UlY7Pls zwg_CJ9R+xNSnw)Qj+g-HL(68gw8vrE&YA;1$Go*&J|hU=vNgP2k111Dc~4Kl?wJ2u zbb>W77(032+`|m1Gk|VPHA&s$3x}Vm#tMK#pfVb4hNo0iYc}~;wTLAa7=FPIB`R>3 zejJu6u2PAeHY_*p6klIxWP>s#j@?l1HdTvhL?gQVzSTV$?alOD#T1Z2e0nd_1(kf= z>5$gkcRe1=^`?AI{m0QN-0PtQQ;I}1_(P<&u6Yc;rL8l_4>(QD0BCk!$Jh=K+DWxt zs7u3B@{LivvZ_lrFy5z>oT^z|L2+{>$VeQ~)qZ7oEQi3i%HX1MzBIe@*PdYi*c3f* z$_UnW%HDTUG5P-6aef8I$a6Vh?qw@!zBf+tnxsNZ-5Byp^;Mc~cjsuko}V{yp!GaE zztGMB(Xf4N-*w5eXV9aKwD4Y)6Vdc`vn3A>qTIOuJ!8se<=(>s7su_{~GHkz)a zJI*%e*v88cJJL-k#CsS!mqZwDbcs)hK-|G?Q*c(LAgHBfwyFbp@98xY->k?=ahE1y zjOc_p=h!dgjHF14-oly}T!1ZzOkxsLK_rZUDY$a)xe1EqYR98@+L~@e(n+sJ^JeG^ zLG`D+YS*3por6{{7q1SZoN~eA!v9#P=aa^3zXHWkv?+gNgt@C`%VH5*yX=_Ku3hFE z7iQ5@5LpD7p&tjub>GJQd-n7f8v$y9xhv0)eUJJmYL@Ls;3wT_A2$A+K<(f=A}39SgVb6EWkV<1UzctAMI`JS8j@4%mtPU<(m>g z7DWQMv4rje-ZJpozF4RntYFZIr#RyYED2YR*eT6!dY~)?Oj<63gWSZZ86Fd5@%cL& z#jK=bUohJD8RAWa{U?YFPBpj!DWuURkl?An5j(2!Z}oyL5@fIWb4RDQ^r zb-ZJmaRm8-em3^QxkNE&3g3pl3G2i184}AMmF#d>wcXWq@;y@i$284&CQ+<=@^zw`!+0_HG|Gt+U^$nGpVv4}8fwp+3DvTcmPNnQ*K&gz6+ zygSiD_4j;l4X;M%_M(WDTVza}Iep&LciGSB$2ZXArFt#m&qWx>M<#7r+_a1>TFpr9 zwpfLfEfk+Ees@NwZuiG$nxx$xNwumNt~`WA{45GT-g6(XsNZY{wK}YYdd_h>%6n`O zVZho|IJB77?`TXa20%Qdm|5YdV`yFh0@Odd~}tZ*VdAebipROGW!K zwnQIXz!`;kF}~q&J+eNl^H+9O*hy*mgo`>>_8fO57#ouTkY+PL0tfaI)>L z&5&08U7GCWG(6hAji1^sE9*sL(Nm`NmrKG-`7r+D1wK0a-h0hA4l$UBetoPCQGNY# ze{s&GwweSVc);|XV1moFz-bo`qU}sOI!o)dg*A(ctgs;+sAto=2McWW;q~3y3bw}J z`cbYfxnG?A1q7iOu=iK6^6#O?zlSX>|0`_ye-Z?-{&NuY7yKJR5DVKs#Xyk>BT;jF z2tij~VP6mmMMWxfD*Zlw0lLhsgm5(N@eH?UbWGKn}cuw!a*KbFBGG}_Mv0}7nbD`SVI1J@7vgItRz{}J9B*;PvF`>0% z*OzP4Z)j7SMqQrK8+1u~H>0GYBtcRjPQlYLjdBXHHRqD@1+hsjTM`}>YMy&;h`(@Z zMWWJfJ}s3puSEU35ei9G-PhD(P|8Z|t<7i?mR;U#bDw*Q z7b!8S6+D^4foClTE36l>iJIF6-`V1bJ(-F8iq@x`0j(Tqi=w)&pcm4{u64f#qiBFh zTFs>2U**L?YQ*n$zaA3RG5s*$fqDEZ{@0TJ5*V)+BR?7rdfP)nrEEe`099s^{ZJyxaIYA@5NG!|4>)e(AE?#$|Y?`^dIZ@b}@*-g^)q?)BXd0);vB2Is6G*- zdWZ$2T=>SIc?o@|&0Dsni;%?#@OAhX%ukdY!F}A@e4`-pFevJI>=umAhnZdFJN)FS zJUw__ffLyjfL57`KWLH4K|%}ZlDr8|LOp8<1RAS?{KO!s!$OcKd@uozpUSf-IyPHZ z-WjiiaN>r=AVWgbnRpJL;3qr(B02*>~(MnOL}=nFz!;4q1l z>P0~i2`r4+kEf)-+7}oG43QtM;{lJwe89mL%OU7x6yTFDikLp1?-mFUfrcP-x6xb1 z@j}7Aply<_RY=5ldL?xY%lfcfzodTYO7Z0_r(iKb9yas&t1PM$LM9_9Ac?o^_(E>* z_i3FKK_R$(JWbpo#}YAu@C){8*fMTEWbtIV@z^ic-wH-2M~n>8B*`e(6gs?=h$K=v9uCLs_$UpfSr6N7VY6 z)Lsh^oa=((egr3s>3ZqgyrO&O#BJGZ&CtBnSw>HKkpv4?)!okyFpZC8(-OOe3T7Sy zm`O^x@rIWs5+{w!yiP|;zuJj%oLiW^B$WeN{{r!|4LwVxockgHl`x=-=|ql&wtCju z;|a<*6j7xSo+S-F_bm5!pmP@tM8u!V;uf+uYRk5v38Wf2n`ifg{OF_5xh4y(KX{6# zK&|E2c@YItc^G*SP3EtssU;)Q!jZwcxkyldo4O%X=T1}p;K>gcua}{3i$jSc^0tUW z8r8}z=UfsQocvvJXPIU)(G=9iaUQu;#J3J}XDfninQSI9M?2;`ct06xuUjweVfYG~ zXv}@EM`K2>9HR@j3Z%2f%pX?;XpnN~-Y>9ZJPHClO`-;rI7uH}M3o5?Jjd*_XGps} zi;*qQ0Uw0>q|EfAmbcIzXK3Xs@IyXX9ta>4<36G86P}>BvMXrT(0ziIFMt_|)@~KQ&jqqrEdk(c4c%^a7=Rf@ifCy*M9ip<98V}f zWm_!BF=a+J1m2TuF&YWqC=t<%BSehCK~_4Qln=^J(eYyB?cw`1u(Lf&HK6;RT4q2u z0JS&(ZVPG=AG{xj4tYMY6j-7@4E78-ecsA*VxQO!TE3roUgYOk=O&}EbYfn5I^AF3 zPmbx1mGYlQL(MdJ*R*R@!4eQk7RrE+&*2;F&8|-B1VkJ~R;fCEvH15x$op!*7nh>V zS|O2hc(Sb1XnfW=+*t%u_l^T#z?LAz*ruS5gbtLcIK7hw?I$zt7SYAU{fuhaNbX$3 zLz4pNy(4Jq(OME2Lre??_?wTn=Qj?)ZzyXJlT~q>0#r6_flU!w8a75;tu(4~PhhJk zQ!F(@IaGTi7!8z{coA@vmr=z(*Rf4;v$RM$18M!@X&j8sIdki;2V|CM6iKSk1@@U` z6b)I^TkC$#6l?dMB)nQ@KAT{O4)AwBMX>5!M|W4uO50zJZ!4hkW2QR`!Za#4B41;p zfiS!S<9uy-2U#Su7Ct8D9bV}~I`DP;SHj}>UnKHBPgo3p@!S7aqWTB^Ta?AY{?C*p z8K2LJ(Dn9Ljq28P#$V+i={%n`(V|Z6C}EWUPa38I7Z(_7;};K23?I`V*j{5iv_a2l zwZ=!OM)n|#m!@k!{7&}56Sm7k62BA|JnPf7u|FNx`@5C!S~q+-`So@b&;T#qbFHi@ zh&bE@-zl6$w#^eHoMq&4`4q=F{=FO`B9@>SHxbdY#ZJ0Tn)=0#{7B`hH*|WpExU&% zt{)dabqIup2@t;rK88{M-3%Hr;Zjzoo9vEbXufQZJ7TB+j^G1Ec`f-px1hC6<5G>p9;Fd=k3PnbIlAc`6tds$5_DmGh_QpbAFA6xCo z@boCW0NJ*aq9LLy-l+Sxd+k4p ziOBq-Ky^3AqqkcraeK{`#+b`xLwMgh2Q}f6HxvpT zg=UUZs+1tK9kO?ISe6O-jw-rUhtZ&%mdeW&vJ7i3+g^-4IU>SWR8-(atSh(u6wm?{|iE^bhhqWV&t`RtBW&}esnmy|rJg^4{ z`>M3t12}yYdgQubR^z0sI7m)F2D$_6wdBJysFc2IFa;r$3P5Y*>C_6nqUy6~FW@VR zWodkjO2d3FKr6$=wbU=*HSlSYVi7Q{CFYY@vmV8dYl=%b#;~uBSqbhQV8Ut@4}~Ll zbU~@?Rb=$F^B_xaP?3*6mDvI)sWRiJJxvkb>fNM}KlGYa99Q?Z2x%1apjPf0weV?* zwaN5Q;F=lo{J#nN=eVo7Qp;e?0E(l;_HG-M%?bED)%*sc8(wMgovEmxv|lb;9cIJb zYOiAlTUL%X_>p2yyo=KLp9cuKS5a?+E(E+6 zU>>tM^7O7$L$OYWUcUU)sSLR1W^Z_%Jz3hQgxD}?A<5Vczm{q0dGzhOxpu9#IEB_X z=$e*_mzUeQ1{V3#cO`KfkWFzlxqMmw0SDl){5yl45;N|nDGVfZaPrMsFWT+W8_A{n z8h=`!HbH6TwATCtj`cQzng#NT8)%X!a3``W*@Jg{S$drejf5>m4DBZk7Nrgo?;nJV zer3CZiymJx!NW@xarupIq~CsQXhy>6UdQ~irI_<{X6VBf zeSX}aI3CdH-cX(jYbws2x?dk9gXRflKGkjtu-$jv0MH85KYfJzaE}B;CBa?lnFQj~ z+b-G+N$3bSkTGgji8{_5>~j202K@R~X!|v?f8hWx|5<8X%i! z_%$-a=EX^?^(ba<)ozM#nB^d=FS2}uI~WyRkq8U&DBJxGivTt-v)>*o$CtAnkW-h< z)Q5SS)wbEx2Zgj~WXBPU0QH0DlMZXUK%cp=R3+ljt5%=+Z9$tM?d>40iOm#8)2haP zn%ZxZ-@aSZ_Yn>Y)UDLtQzXJa*|^`r9o&86JM)um%i-)#P-xXT|1?<=6y9apnri~axp^YU!J_g>-IA}h2dZ>!m7Nr2A>@OEH?WFCj< zUDTmV(g7U`jTK5-t2 zSfyA6f&QZlRY_wDn~ir#Tv3SFlk3}UuqraDZ-Q!r;DpBIPT)n4CEIKe3cRmP$s3bk z)48*ba}nK>oP<=rP(P1H6$1x1s}~s}FKdDib}N_vQIQ2ywRGm8up=k5I5N?E2Q^8t z&~YyH`tX4o7n@PNOLyf&Dh^I`K^>?KmjZ<8tTDoUF@TK>J18Ye?(6nZ<_O-Lw05FW z%joJN%XA$WlVRhO#GH^mCam=;I$BjkR^F)|rBmy$rDL5Mch{?VGYGTw;mNooK`N9yG-w@ZV7sM*K&CPP zbn8g&Z6`~uWZ^0>Sk@@V5P?AqV#S;5`7vt%F4B)V4+jaH_8hE~4({G~Vq<>q#v{6UJ+qTHctRXsU}rc@gyQ>P{Krs@HLH|8*q& zf;`)6XdLh4!CeszT&(R!e=I{8y;EGYN_gn1w1XuWx-!qu4@ z6-2%yF{F|2e)XAxGUz?A*Kc6h*OqF4FvGPC0AL_$-#x6T$$S8*j2(!Ikn`egfrg3J zg-d3Djx{4udU{q+L1HM^TT99z3F225JvjgkTkcC=KS5$3^(bec3A%lpG!cG~ecu}0 zp(p;+M@W?yL+#tD(r z|Bm>c+MytIQb48manV?(_tB%SGs=H*(*f=k>J>n%w;uT3auA%ob)rRh7W9}f3nzzZ zS@<~lW&|QTsGt%SM7fydx&VNHye@i0pf3u#*Z)IiuEg#VM581VKlq zIqEz7Lxvz_W@S$BEj%!AAkbiBWTRzeC17M@q-ACxU}R;cWo7<;VfaQ`1a$wQMWFcn z0x$(|_&#g^I05Ls59fazv;g+sZ59BI00sbN0D1tl0M-C@049_KbTZNe6!i4;tTf*z z`fvOVg*X}M={e|`7}yw@7+4sYzFP&X?F_$_4F4#U(tqEOpWypj|01AMQV{>Q6NRaR zgAFGgowKtut-XVVqk)+ot+kyAB@Yh)56|D5Av+^23nKv|2R$td8vzp|J1sN&_k1~M zS(yIkX2|d_n&Ef7_&@#whW{i8`3L?Rk;h-Z_x~PwWU5QXuMfg@T~!|&D6r(cN#CZZ zI!Tl+*N&cPDsb3vbmluv#1QlBk9NaP!`HoFROQ*ZnmB>7PMdD`firWwydh60%6z)K zo-w^#ippS&QIJkm?+2SaqeE?dJ@&639h@-b?&A`}@KDGXj=J!lV%y3xDonz+b%)&3 zU6*K(d@2gWT>3?i5*d(=U``nFXHD(Pe&K-6#mW|Ore99&zc{;OczCS-c#)Dw9a+cB zH!4Eei7-+8qs}!3s{XhEF0$Eteedh0ZYT^lMehOj;BA^F&f6Lv2`S~Z(9|$&np#zU zlxUhnWz)K^21ul6q7a9z7dROZ)vYs9E$hLPbqzsv8&Ug$Nr>^feT_-zG8k`SSXC#$ z?Q*!MP0$Yz0*JUoKD9B|{RRBV`&JCq+ds>ZCiy(#5X!5Dm=S*_C7$OJd(e6}!7Ifb z!R=c4+r6>#LPbVL9oXAX_m635U$xCSDe;tdfoR+hzsw(pC?CHk3$V^|FNV?I1{}16 zC!5-g_5}s2ayn}l1lVB9U#lO0LF)|FcJiN2o#JTFM+%Hf8`DCE7DqJ=HCqR~PJYa# z8x#0j{&vUPS*tvK3tJA#STkR%e6SHQ;ofGfgu5>RiW)k3DZS7>-;XIb8#$VJ?B9Hw zX+I3d{ZYU9OS`BIiU!_6JT|d#?qNXlVjHcp>hVr>LySqg8r4in+KQFfMu18fD36)@ zx92{Wwmw{LURl+Uh7Jq)?b|XuO|6MS^Mn!eeq;T_fZyz#1TtzU8N~9g81gpXutfv` zdrB>Ewx?P3o=r8FU1KsLa||9aob&IXL{{ab(k9J0U`v$!(z&2ddwxm2F{<}PlYL?w zbW;Ljg30cZ2kc!{6sVbgvy)Z4kB7oGKQKG%w;2aA4N~J)v2hkGyG%MHZN7fgS(>lA z<#~I>?#xTgGUnxe`8Md#Q2KJ)F1uQfUfhS6Tw|XN-Qh}N0IrxptYmP0nwHUosaM$| z4(B4^p>`<_er8Q+Uge`OJ_yAL-NjUiL<#t8bnsxh9QLFi77+G@7inco3>ELM`^BU4 zMWqCm>5a6l5a!yqLv1dQ!Xd?SB3zv7YgQQ4K*iDb5kd~HL413lV+}+8wyNzSR6OZa zJp%{6t*XYJU0?c>gL`PN#J=OMFOEI}%7Fj}TvH7)$?mPn6Du<5=^(1gzlj`_4^^*F zeeGSOlOD?f@n@j-Scm9t2V$@Dxq*b^@XU&sylUwX?Dis4s(_e3yw1zee@5V*Twobf zXb53V!1F~y$D-mHmuZAhU;Too+H*X%u#{FPW4c{a&({qfjR973sfbO)98(eB|BbzW zda;-iw)VgN(uKmibJ`qzH<%FrHAw_sK!`0 zH4)F%3j@J1tqF3a6}I=jHG?qO3B>69Y8!m*2~5Gt=e`ae-#A8?!~OccR-lln63r+M zgWdR=Ez~S}*|h`WTIDpC2yX$`9$^=Z=;o53SF^eX)PLZ_g+`2S2N2M=DC_{GoV?$! zRWF4jN-i=v*!;#%5CehKG(sPIsDGfU73&RZGPO&}=q_?0Win;UxMxF!N!x-2)-9ilZs6df z3KwSsS&=FI3?{nFAuP5L9QhgX>7oE3c7^Q#5(Q&Mp!oAKC7<8Pma6=LPg9m!k09-Z zUnU#9L&XI&1{;GwgIiycL)t~*CTL;_oB-2PD1;tx04p&Mq5l|7zhUq-vW*@^r6?BF(e*$ zJ&xt5F$DdcpLQ%TW5}}`U2Uo*D<2Z*?BokdqZ@t*4xvbGAkkBvj?G1owuT}hFGW%3 zy2bo1zzln@1M`?I53I0}VwMXQ$xj1~%rV|*P=&$pCXCzD#bw|W0`1j@U?B-biM#+b z=q%xQxGi#WTLbHp>?vVw0&?xMCsFzrpNumFJ`4DubqGcUUeKpl08b!Tv@tZDT34dQ z9}EHET=PIuNk>e&S(;h8(H2$3s@__r)y0Gk(hJTj?bFc86Jde|J{M(-%*t|MRx8F} zg3fDj%^}-9i$q%e*+Y8awVM2QVr_j;$b+qm>`pG&W@#If;*%PwQhZsmBM~&MEW>x{XBelmGQuh18 z*9#Q(D+H60GRL}eX_{S5mOYE1!=t0NeHKUm`4$$WerBjpQ16#mN(?_QEcyfIwuU(75GaWj2?D~un{sYltcR(YMdYWP zjC#07vq4lC`w;MTDbAXgJI}-i2YuEsCU=*YWZ^#Z6ci7v3DOq8+QM?=Yj$foKd-c` z{P_{43++o~BP8#rRy;`HV4w_=f-d&mbO8k{Y+S}D3*?PDZ0(2-t!2l?XM3aI(emWQ zsxOK~62fvX{xV`g?%Aj(LpFw9NqPS!f%W8K!CZ`K5E3T(8+pLFlr&PA5QK||06*3n zE4=QPfYleHHX*#*-Y4$>LreLGhK7*ug6@~8;ov?AAv8`DE>2`})>~KUTn`u_E7qZ3 zcjUA)saLG9FJy5+`T$823emD3vUe#tWZ`ulX`<>fQsGgPZB}uA?(_WjL#y2Y`rJQM zOT+NQEtUe%LuGcTNyx0ork5H1sQLn$88wBCM|-k|RcFvka4e4-W;>SW8aD5X1Q4-e zIo7&^*`bp9LS2jZ5({TeH6-ow*P1SsLLu>jZUhKG?2EzCIMQ(jut6TPc0z5;RHWID zYiMSYVh53x-DRxfo0cwx5LSLJ^TsQJ5@i8dB!#{Gk6M2}W__vDaU1~EX-WLF)`On+ z)f$nubLP^BLNcr}-1DoS(S=BX>XH>1M}@Zcdy5SJ%QT5Q?CJ7#+;btVx(Jjh{DR=x)?7ckWq74-HW(d7W#{f|)#w=8=g(hgP$KTslEj8ktgXvsRLu3uhT)Cj=5ZrtMM@TR|;nF*M3}m0Y@)nDO|1@(|Kn zC(sm`dw55nC-M)#K0)2c^cp>KY?cJnym-}<|3KI49mvJ{Q}b}|UPki>xG+tWw1r#P zBgN*Q?$w%m>J~8?s2w2>&lJUkyCvD8g3A{;;Pth*y8*#o;b$n?w4%mNB^J;~TPPex zUMw-g1j=ReJs_? zEF%EW_i|iU)T7?e|LJ!vT`n0pj~h)4O;OA<(+Bi*Cemxp>!GMnPj6T!x;P4e@7JYh ziWG$*&#+X-mX{Bl&w4rZbZFB6I`|f%^yb9ip7$59zSD1_|0dD>TQabJX`)NdK+DKN zz`)K*%l@4WGBMLKau6`EvCy)y{*R=AZ2zApx~xo0v>Z&|$vX=z6AJ+=J3TGa_e5Ek zztR8P4F6wAbpMm+kKu2s{ur4#{z(aysWuX~--Outq_S-)dany$!@G(XDF7EOAUTE} z3~zzfh7A>`G*O89%KDX|t-qs8Eu)buFTH>gvaZuL?q=lY86&kz_a}~M=ZA?>9|*cY zjrCQ*$J>j{HHks@2IS-P#>Y`NyIb4a8}Qq+S{)Giav$>B;m+j(FPe5dh5iOpAAhNS z7G;w7NPP%*#*?*Lo2@6UYn-qd$8g zMnng;<5)$rA<(EiOXo*F2R=Dm*SQ5v>MXp-&^VG;ZkQa3#9X$yybiASKJ%iFHsEHJS~6~7B#)D{&!gZ* zVs5u|z33UO!cyZ{Mj%x0(|t|MfNzm3Q$z5Sal%EdqX`S)%pGX%(?P(tOOE>cO)J9ABrfOhuSX);% zSVXsGIa+Q+C`p_D&IjrnL019Q9ra;jeAr)R{|4jXcIs0BCU7Ol5RJ=tccB^G2a2kl zeiYkvo-C}38lzZU55LRaTIn;2oW%iJQRsufxDgtVK<;tM0i6?CU1=`%V{W6B+;U5z zEcM%WP|8P_VYdYNbTGljp>cj_;i6>LR0fJV#HH}qbv4wKW`9zHlo5Yx8rr4iFfElJ zA$MGlaYmKS|Fj>4=a>twx>xht3WT+>X@y9*14V$QbQp0$t!Vits@ z5sRc_^>p%O#?GB!B1V23d+{XhGOm-G6&I(G6>OK`>!^|>X$6#+l@Kg#>C42T&Ze&|L`IhOirCToCwh}_{5j*#6a zpeGQ9Xb*2I-rE&lLja4fcF+T$Ev=uPfX4PmCZIOm1zz_5Vl%z{2~!6a}$l- z&$R;!0nRQdT19GmbE&sIWOJSAkO1f!u!aqJ5+}5>kXSxtBbJfce4vn*!?CFIHEP2! zn;LMI#X<;aT^_8=A=?uJ$6wXJpf?nf*>S9wC4z?98WR;Ub{n5#Xs@@Z_j!SMs-<#m zU4Oi828@(MV!IN!PZLO%+W1?0SD27*i<{sk2flq@c3}i*r<__vv4L(!{ix;F>;etf zn5hft#?fjX?=X^V%qHFpaupEnwOiPJNj_lk(FtzMc*n0i%pl2*sh>U z<5sR{%|G!wy#2%r4-CVx4<$r8EyR;YlVeBvFDq~@WE7}SoMracu+QWBBq4WIsNc0!sJAfT<9g>jGdY=dTAf!3qj>Z-GzWn zlrS?h`_)Sr?dq{Y=HaylvC0Ktg}!8pb&SU#&yfDS(ArM@l%(?jMTY+~RSKOpz3eI{ z691%`ophlLvEc2kO}9-^bCgu5O*-ZPFaSi4HrH{JIWR{Uvj!@BY`9Wx7+NT4U zTl{n7;7UV0x`#VgV6I!y6Tl3D7c}ku(ph7sYW2k|Js;>##&*rk#y*;kUPuq1uQtnI z-ptV+X8z8hq8HCYalkWae`an>?uy0qPN(!gmNDfV!&C$D5oB4O1JFOSUywrt9Z&$g zu>ew^T^Fv(G?Ss$W#O3~=BDPnTrm-vjnZHt%KSonSuaYlpmpy(fGXrd*2;qB5FItk zPy4aVcpy58czFH#A^ik*+fXfz_l+9JVFgF<3}7yYntMQXm;; ztmaKa!D3WpI2V>547RhJE(@#N3w7~+0dJ_t%|M*O`)KBF;Zc~v8z_evbcgpX(}UY= zesUNe0d7SH=Cm?3;KOYIQc`!fYSCQU#09r9KsfKgAMD1NyY65x z)qKQ`f^&XK-#*3oep}3wK{bIeYh}QLwMtgsd0SQ;QL+q_v@S zPCRhm6S^lWrIuJ*P|%j2-F&};Tpac-#&*89ZHJ^fu{#iBz}sD#qLv;x|4^1^)RzBa zKqj%udf%5l`9qLSf_3y=Y^{1(MmF6&hFHljlqhBdbc|8LrFR#`gtS78yBv}6=5Ec&OYhz z=qRbn0_hd@${2Jrv-!GCH$&&Kfbt2e;!=DrfHa&tZ&)?8v;N5J1%XHgf}ul%OZe5b zuW#$)sl(1#P^13kiPy0Fru{mpM}d1u5+;npvYSQ;RsfA-48+K%(yCLxh z(HTsX(fvqdW1f|%#@GF?@@N^Sg2&$tNYK&TxEX+n#-`xN8*@yR3CMw& z6)fA#Kn;i&2`7ryTB4l-9XUW2m0~;InRRf~pEp!fRgN2#U}|=Wes+OAe0|}DL^iOoC1odY3P)OH%Y>_q#~i(UfG~HlRZ|4McFy@?$aki$LZ*x}A~oIWH0z44ant zw_%ss|6+?cMrSVQ{3ENk1^v#Y5uTa6*~0ZXANY&a%=CVnfx2xNBhfjw z8}khlS4I&Pkehi?ym9{2#3;xf^mX`2M!KQ*=kaFKO zx$?xKzqMQOD_Neuyt2W-nqYOd4#tO30hXZaux-Nr*~28jEEVy17+bYps!s`&vXqPq zgY&F3^IFXms0&Q~FXKA?D~^b)X}2!yjOHNU4Y}cXVKfj)<$3~%^~<>yyQX&)PaOh( zc`!0vaR05s4>0={VVU;{JIJn4W&bJpcQrn3JoDl;gb_HW>5=X5hv`4&(5)2yL&5g%xqNTTrQxRDMBt!V>(+odd6jJc_wP&m_-WA{Z zNVzrh9(cciGpS*!|C{IMzf=m&_@AWU|GJ`}!B7%}{od*jOY4#71L}@hkiccYk3(c_e=^Gbs>o)Bqs}3g5sC zka1k}YqNnMlvNJn2!%czM4^DPy-iVKp`juLN7;+i_)kB_pev!N907ph7f*10nOW|VKCrM=vJ>(q7e?J=D<%v za@Z|XUL{u1EzAX%A?6990iu&^Mb~v$XE>-K`flSt-4E=ZvcecYI~N_}&=+9Pg%Pl~ zj9V#G`C2#+^S-T3;osIKbl&sd+(Z1(vK9#pj@KxvD;4%rXIFSp7|O(taC)c97&n5m zie0F5d4<17K}i{StHYrzc4k!`b1B0>E*)Z3a^S@~gF4pF1e4CN9O}XBTcw=Axxm*p zoGf|L>fT|ZrL`*oj~4n3!VFej)|$3sp0zO=__T}mCa1;x27D;>sk#F%dR^;BB==$3wo^q&8&Ik z>;l{LT00|mV5(;3F^G}zD<{S5&QkomiBs79Y!$>HU4>&GbCBk{#tkMOzu4ZlTE=%G z9ax0|x|&O6U*>3HsXvqci-a<&EY7p4+2@h#=^1qShMtJXsV06oYq!2;4~bH;sjFk@ zM9_~m0bO9K%wEYuCL4M)$Ht2&fYH;?i)gZBCs!>Ag9V)&#>-Xg$Ncm?fwo}oFGUX# z^myY;T?bN165-Ef64Hcr0Tsup$cW4Z)uT1$sWeMiNBd>$YH8mV%)`A1vQ^r-h$5|| ztB8|K0St|3_7pPk%n1(T$fSU{>1PKjus!x;4+5wx`^%El4g@$W*4D4(53oiaqt6dipr_NXg9HD#&wx3LnG#sAS`ryhCom_%FU*e0zl~$l_E>t6MNDO zyEwE~2XgFdU9OXt6j_uS__0+<9Kx0QNUy; zJhMilL`;(|VAw39WY~h$-pDymwliRk@?nefW{N&4%-`z@)3SFP-&?IP{ctn&PvH+g zM%Jq!jNgT)WZP`i5c<#H<6m!6F&DE%^PdXy?;p_mI()1FOmGu+Ls(uvhA07k8_ELn1f>6goJ8VdfB>}8&~`C<1`w-&{)0q zY@S;_B)P_&cTUqL!VLvz@JP8qPiJmv47Yy5%H zOHxpiuHt>#ol4nKZpDuG5}-wh?w6oL5MqEMf&9S!&AucSjr(n1a+#qIvX^jiaDzFD zkmHF!%#|hj8cvDM7YfnG)gJel&ISc*g#zA%zV;MxfdO1VyJ{(>xkO!W{)Oy@;r;b= zc>oME0N-Pham`meh5+4ds=fYT9U(b`k-IwLWh^%Ja5yFdThEP#bP$`xcE$tE&~mN$ zRT{$LECN*XZBe>jPk`HLEHg?|D$YmHmTK`q6}s%2Q@;TR6c`nG`Yt#7(!E8v_! zpXCtGaR7y?3h%L$+$^0)A(tv~rBoXzz|8_x)&Q1Tjy12nXlP?MpA^i4sZl*9KpHdF zCR5I$>qA-af3Wx7aZw~&|8NgO&N+vXjO3hi77!$ZAUO<~8IUXpD54}2IVviMfFKzK z1O!neM?rFuoP!9wJ?Ogb-o5v?d!P4t{<7!O-KS2Sid|jZ^X+p^UDP8`Gxtyw)3jV2 zq(mzer&u;j%tv!#V9K~oQZncWvDt<9XNQ;(c{m9vy51js^c2{xJ;J?e#pG}edw=ng zC{g~i!GwJDs~pc8O`Wvu+R*J2%u#?7J4b!@;nqhPHF2>%?l8jdtX*vpQuWHRA7 z88wu$CmRXBmULIcMw%dJ!chY7BEafZp>Am0V8&G-!7ES^0}R?FgB`LK{K z3ng3ox2l%NfrL5f^6|$tn4+#-#ap?f)54tZYzz5yGDAz+o4rM^Mn7Vgu)$pMd**>{ zU@XOE_N5E9>$H>1{-w#Ic(JUlUfDcPg`#xcwN}pj{44E7PI?c!$gBU{dMWcN^6Z4> zOOHQUFBMXG^Z=5p)$rh3m~VY&ZzPE~2=|Utm_~UHx`z=;7JUL3!Yx31nb9h9sE?_j zWpqrBn|syZ_*gj`Gk(qLJ>{@h(yMgSSHCWcP29yS3|DktR876S`xoX*A3^h_<;Pt- zp!rfzy^QS(PX=bOy<00gTot=~y595FNuc@CGW&C+*9Q7!u2uSF{g*?EuFvbP>D*Gm-ZykkKFMk?M1nj2ra4H78V@A6a_F@GYvt;`Ub_r89> z@4TCvM63oYpQMcK1#M=r%l>`!DSrO;^>SP5Z^ar7YB}jfR5`R*x_vpcUNi-Hxa_v| zv=OhIpL{^PV%Dv3<5NlRGI3T~YQVCOkb<%?N}+`ix!RoaVHA!(8n&*&(y$1Musj7maIJSgs1* z>}+EnslIP(4Ah5@I_vphd3|1vat5QdirrwHd4{m!M zSBn=zdh~qm`k#lE={bohU@c=3Bw)VO8s(*hsYb(*{u!7Ws`WQcZedE~Q@g_#DIUJE zdPco+rQ9TD_eyo{3V}IR5}gR)N7XKA=d~p6t}(>|1%BV>oi}{fdt!#%*Q`57`H8Ch zx-egkzK)B?h{|~V2DD)ci7R~FD_P;29F=rP>%ud;`ZmG5)p&zZju@8G zLGFUv%2+G&IUkkgpI0V#&h=dt>ORMh|AwlK3S`#!sPJ+2mG;#Svcj z4&|f2czNHh5z)_`)0tDb!xyg_``t7=&p9wpADD;{0ay}WYaXb;_x*OJX)nE+OdvjIa|Fm2Z=iwpOD4~bf-PjB*Mczd zY$y z&XBROrI-V62$M;0L+giDWJ}EUIk&> zarjXC23Z=skz#0#bj$Md4Ne?=Zc^?W$+Ba3F1(ERGG#_R_O)$1B{F(&n|sQvci8Z_w4u!oxun_N7)k|Ua$tV_yD0`cgRu+jcNq*W9TV8@>TnbK`O>?}c{E2>7Y)SX=g40k_ zfG)Elu5ae$v|uOYwL7pg!f_32gFO=aY|5htcxN9I4B+ZF1Fwgy5e(W1j(%aH?VGZQ z$?B5)`&^XSn&MoBju8@Ks<$(lqxM7+rdcVy+++ExXt5Evc>51pyzV`x8pR*2N*r1j zwdn+nm%P)5sNQyqa$Qv-+tb0VO`oAkyVv!RYU4>+zP9h{yGu$P_wU58PL=ZO9={%5 zO9Tye(W;$;Iv8eV$LPhXR}?=m483=#ke-knTCMQg?YcMX)T*6sLRR&>@4;K>9>-;I zpBDu@s6TMoYr1n>oy$o_uloWFj>F0XQidPPT8->To2|j zp4+TwrK8gM!dNEv2*f5vO3|nj?BEc5>{8G+YSdI4fEu?isAzMja7?2os8-$5 zdx+6hP0JN_^#vU^%%BQ+L7Ys1y}a-cf%ewxv%$^^4vef(-Feb-SmxwcGmJB=B^Rs^k<4?lW41!yC%`Xpm7s^M|{_duG@}Mc$PS| zSz=M7m#5oy0|}*qdLg8v1a*RcNJstRq=hfd*?)vwRPKExY?{gad8&4$A)v4gmhAkh=-Xlh< zC_XK5uL|Wq5JVrhkP_a#r!QJT&pn)58m5tlLB+&-r>pO42q9yzZ^3M)+mud$Cfahu zEo7%G)y;)9@iSV;FGq8pd)vLOHzb^FH1^`RCmD5>f=_m?kJMv{M;cVeJ@=bh$#6ov znCldYgG&%&vSUoM&C1woD(;CM&A!N-QP9=zL+o>Z3T^WFviUAv#vtW6E62;Y(#S_# zstRVQeyTk2`7WQITs&XDoqW{N8I{gPkE}|uyK+*olsNu`B|~wd&FK9(gTyx@dz;Q7 zMsGLCU+XX%1D?qxtT~DPw*_A|Scz}%u$zlF>Q1V5G}>m6wWhy$GlHCwu$8$q&l>RV z=5}MciCFO1LcsKVW$%&K*4hc|>y8ZfJHA%-*H7YgntN`P-h07ZmIGhAa!`fY8m{VP zn@D+YmhF~4QL58cImG>f`u2(=qsv$=!(!2%GJkQ;*jenE>MJ-h4&L@jUVF!bMB4{U zl}vJ<>g(%|zQQdDCCv6`z1}?tXM5C2{bpiW3D;bs%7SxZRd6T{x zI$q@VBDpNa)Z*it;2s^8g$rUXtdcjlVEv4XzdebIO$~Oxw@; zsfp)wV(Jz*IBU&gALiQ0w|VHhC260T9x5kz$rC#smNd`P$@4PwJZo41lcsiGUIgY4 z)j{srtyzh;nx7N9J(Y}0$yf$*h;UirOB1OFyRy|}g%AbJcWBLYs=RUeqAyS2oA8If zw^cTWu0CYsjwaUFxzTUHkyW010fKOS5aldXv%(&ru>7=+Zes+|!=6A%$gFv!$2GAQ zg(Vsx|2pyBP#|gjP?>qY}??qtUC7_!ptJX6(jAAjqu zF9f&;#(U~pK63e_Bl3CD8O_;Qtn)b&`#VR72iFq|ynrfIDt6CVc=Gd@i$3)@v0(`c z0BRvr4$W?s=Utkd?$t~guKt>y@@W6Rfum1DdYpRZuV$oKpd@R z?FO9>TMgijw3$KJRu1lG0zYOAju>3HweQHi;l<(-%rQ6_ZNVYw;@|>FWeU+F%1*w0 zQ@5tTxMK&Z-+cDkeZiQ~+58qe{S4jNEIL73tT?rCXVUwreIxB!P0Qw0@D_xLWlNpD zEFuzJU&$s4V-hOaOJnvz=>gNd3-R8xD%NXP?`}#cvSuAS=R}k;#j=|>#)P;J0qoRf z@^8|XtKM!EY)t7c;NIwbry5@W*;}a;HlfVaPO9_x`Li;SYZz?~u7r#?a(ZH5J9zPh zS6J5L#66dYI^VlqP?yxQu&kzwq}S0<#E1l~RwwTD%$!VT*F*@BhAgYEE7VBMQ>jK| zV)Eo;&_!yU7?HaaIwKZYJ4oe6*p45+4aO1+J~w$bPBXOCpg^KRO?r4&=!Boel&A(G zH&b^tf=7gAaGU4|cpWvevZzRC%%dVbzknW?j(g;KZe6UWibs!-NB{0*?tHRhdF5jL z^42*VgX-~%QsyS<`S2Z6*ABdb!(p(J;8;wojE>s8g6SJ? zKdQgJV}66lIXmrPX0yHXEp-b2Yum!NLN44*cp`dpzKs%@**a*ec4ANy-hWehUX`Lz z?!4A!3PHJs)ASa0iHloUk}sc8!{by6hqN}~lJo0olH<7E=~;L8(8fgUOSo;cZaDT- zBPL(9Y1?PXvKQ+49x40Xy^XYBWX}AoD8uR2l``C3+08pu(B0xZYhig2`9<~BTS$!8 zE)w%1qxa=O*tu3l%vVFz8!WQ8P^KR&rj z`%+k{79QE|Yn&;;W03ODWL?#{YO5y;U*d&`I5~f*vTs`7l+ru|J8Mxd&R3Y=X*lhE zGg1qxYTH!*$Oy%#Ut0Yz_Im){=Lsp1-m$8+NM$FCv=nox9QJ z%gs967Gp2+Kbl6zsuj;w8oeJ#KgeKky}MtQUyCiF`j9lJ9?AspKXPq$C9M3s|I*~e zQQLBPp)@q1ZOYOGCKI_O&KkpyX*5XC_;t>Z@m2=u^C=|V-xYD>m0Y6Ho~w68K9?13E-L2Q&q zuvlI7=lFiXaI@|H+VTcb3F9w}vlB7BTpXpA{0vbC<))IU8P%l$yto!r&h*be`&LAe zh$UPt^u2Z6tjM&t?&bu~*|F%4msWY!-f3Omlul4)5sxFnK1(g$r?!8TWW9@5asN_J zhp5);F*xmo%MU?^b)Q|>4sBn*^~b{>Ga68pNC1UsurQ{CtGb+E>0;g4r^m&=U z&vdd3gNS)_-L`JuR?~WJ(%deNi$y~WQU&d`22W*b65C`dInpsJ@a6-x`}3ooGz?al zDVVF48WcW?T5EFR@-Yv0W3aC^A|H{q8o{%Qj8==QC7pjXHl#SNMr}aG^RYtMah%&X zbTv4>wOZ2U>xIre|H$ie>aye0Ha2nAp>MZd2{{g*tog4gsg0)ZMUF_5oO2}A@4qDC zO(XKTJYv5WfBHgrON3s}xg;B=iFXT}gc^r+;wPGcQG(kZmYqqUuhW1#VUWLg5&Byy zD*xd{=ub*0LVwc*q>!M9*dJbmOxqBnZz*1GagTM!g`FEpdMLx9^VSBQNAnR>d{)gK z;=xFyq&&Yc@)g-(a;>rF1A7oXVXH-|irwdDCMgG-XL9Su_LUxUre>$`M(}MmP7h*o<~YtR1CrK0y<|0J>``x> z`mxBR^X+@dt z$i-9BsXucNyML3UBA4C=xJeI;;cv)EZ)34S1l+ydqiDw;(WSG zU)9N!q7D|Xx@TomgPw%SoIuN|I;)` zTn(?UXgN!)L1>?8^WCRO((URdpW{rd2bs@LVjNRuGGXz*zJ+_63UiD@GKZD*f|Arz z-0T^{I7^}i#vH>(a*HGYwLS|Z_|E-YMI**?14}JMChsN4CaqV7iYTuheId5E`L1~F z*B-*CXl#RsE*WHzt!#=su2*UiX@XwCIlgx>vnEC~&-!*AQI_40^rdLEs9EwnKHyi# zqi1Q_E=9Ks-o5CrNqM8|-1F+AjixWsIoQmJmlkfpa&zCBt?}TPMyZ`%odkmzDQ$+qTG{c^+x>qEV1{1>sq4t!rEl&PYm zeGarTDduxDpb@K3pJHPocZ#&72cAXqXAetVvA#-J+|z=uXD7Y@_c=M*E zM2X~qP94DaAvvmLXdcknk0uPp)FOZI&N7)j|3D zy(7)!u6RyFJ*69>BXGK2WUCa0zr6M&Y?^^7VmYt@-Voa+;$QIL&8_>nlkew%C0s-&q@8J9%B_E8h=bV_C~2FuyNaU9Dy8h!4ms4D6?SpAbv7h z>KJ)towg6A%p$61HZM~B^mSdOyY=wmeTvb9j^N1@>b)2vbn3i{jF;G*=h8Nt1LDMa za0%_C&(Sm4;OPyH7Qa?@-LF{vB9UD&cdv2*j{=?S@fV3$g#F@_A&!e;#LJHyvgdq1 z77B=aDmt0@h%V4W%iJwvWy)SuH%>-*Ux2OUUtP5Ag31(#v0b99DT6)~x9d>rh`Y!U z*2FVJi@29TwohuUotxtBsCAou!)-h{;wH-$&zS*A+V$X`D_n2qifLFnbY8t29D49# zJ;i+qK847w;$aR}F96a0uTOtLM>`eNkcU2@M&Hke@SPG z)HJ5}TK&e0k-CU?xdk)QNsZcuN5wLe1cxh*5>wM<5^WbpbDNwXU#L~xLXq8VAEU)ownsP3fSrIG1eVH#< zto)K1{ruN+o6mYI;KTGRJP?`pNo%kC%9j9T#l%zb;sk!BcIS0I$M}xa?NtI}%1a;S z!pHq+hAJ|b=$;vm%LgLwBKdlp^$R`l73V&W(mW6)=d3XKFksxSaO6^4D@oKm;@OBz z7NzTeEb+C$+SKx7i&!b`wP?s_R3bN~RNQTeAB(KB>Z(6O6&(B}jyA%`MJt|P`~)KB zYufS`Z$5uZx$NJ+`3V0>ee5*+Hy|KENs&LO-=ZL(5edpqhuo`($LAEW>#Ey*I4m=t zo==Z<6f<}crfI5nlPHCCv_DiHi>QwEeWA}zBb_EIWOMWuvg1{@(wBLihC4A=Y7bg7 z$3mx?CGpTc%6GNO7NPGSy(g#~kAiEI#5{L;u#>`pc=5QC^=6(tF=mV8G=_tWwfFhM zo5#DV@ug4Hxy}xsWbBR$X4KWKCvcp#rF4oMxj_4ZHHVlJ4_TbxKyshpRsHNXGHSS3 zMs9*b*YGk>4L^{q={-vhnxP@Mh&ItZL!LUP|t)?iO1LdGlfPQ zm!3ABK+mocAfHf!9RX-uc042~AUQ92n>rzvI472&1U zbxY`cU=j%HUtJg?FyFnC>F|nW*bn-!v!)0`_J)4Hi=JCXJntj+uVrhV$A|JfUb9}; z=qx0zMGN*^?1-{yhM$bk?$A1uCi6r4ly3uQUbdsRUE)fM@6l^6GNioM8QzglcaQQ~ z&qH9hqH!sqMV#Y%~#6ws+ItZTQ`&4wcliZNw5=+E?*(tA&lThMzn%)aKH zQ0i#x3qQ<_(r3odmxTqo%-&5D;Z*R@-c8U^t6bqEdTTjc4$b6McPE8U!tR2vKWN8A z^(JKdWNzLhJVQ#9O5;f-SKIOphA#|uKBbTa6|i?=t}NcpEYfF)AS)})Rf~CO_L>r( z)ySr#zsrXL$1={ceybZsESnC)eegm5dcvftiYAG9Cap?o(QACkr>=)s|pGixL| zsq^rwEj)~u(n=4``J!*6bJ9UZ%?-mb%~t3~DA_yE%O$+aFc!M2vS!(=ADesQwU51< zFB;f=ZveNYEegUOw|77RHuvr&G;Sj_qjlTG)cU96mOgyy%t{P0i&xi)rsmPtnwTtQXGTNzXIVlH23J}; z4~Y&(__LC{^xh$v2(ik-W^-Dp)p|DqB&bs(wIm$#q>rz9U3vDn`9gbXrR2~t51nXz5BnW8*K_1gp84Mred9CVZDnb&U!8v~xcpvK zm5^v%$x`pG+!Tqu8zePqtRP6Q-Smyqr$oH@8b;ER^EU4IEaIR$h?tP8Nt?Rm)X&k> zr#(e%l?9#-rX-<%zVFq9mZoB2dA-PxK|~4dj-IKF;(nN;xt;5P#`Y_rRl%57L&M04 zT$wn5w$^dF{cMp#O5Nm~0(`m#bi1V|{?i0h0hdKD^^FWs5Es824zFLbi8M`EuN%>! z1R*9K6vQ-DDvCv=V&$Ut{7XvfK>cn1*0jN+D5p2&c_s7jL5OMT8ol;8MT}gxz7HLe zkGfBki$6vPQLgMo6m=YA=MCD$C(u4ulsMpjtOr+ph~)5Q|LVi?)#&yCbSQeo``J*o zO{>8Y3SS!86+23Akp^C8QEx63xa+a^`%cR3xbPl;T=E;d_wvjQa=ib539>oi*tY8=|a9)rsn;^$W#D) zPvV_}+2wGX#!8fp8QLs2N!;q>$x{v7-3_0Um_KX%$WdqbYyk5B&X~ZoD@$A{aAhpDw)aG>Xj z`8_+!_*Z8qF)#V^iRd*`R2F|syBajOU41Wk7{5XqRF`63 z+f&U}@c0T($3DRo@!gBEgN&CQff{YhHQtuSbw(9RLz7hqezMyc+x zk8bg$?tUF)c=XeeH-GIgDnm_8_mxSQpLweNpyd%3rQf<>ofOpN=ITRFsy+J<6+PftjnTwy7-k84%oh;Rk) zV-ngAurQvlWQZ4K%cohrLu!l_S3k1>mmI&w$!2tQ%F#^Ol+ehWw8a`QpJRQWc*w|j zd0Rg^AU5^A9N-!|yz9C9;`Ne}nUNMkKVE zjTW>1BkTI|J}`A7o-vX!veaY9kdEe@RPVJBnL@{1&nC(RELv-Roaeqos;BRrAdub-@ zbZLSvW$SvMj`eQoS#F>C>szX52qFLC<`-lQBLf82xmleHl|=*auz33~OqFCK5m!Fm zAe57|Q%7SWH_bO6mUJl2DR5&c8$42THYYa6T*&i~eoD57alPd3!{XwSQH3>`$5GGs z6R-CUNlSazR<-OHKYSF4lRA}iq^2&DH&cjr8Ar5cs^ezx2g~klM-R7Eq3hb@hJ?GD@@jjbyok4U z)@hKz-*t~7S+nl$?Y-u5m7GWCtZ8G(%o{Yfaj<0{G=%zFHC?SFHM(n`VJx_wq<8hz z*wGe0sgEGfg0JZWTE*?8x#9aS=^CFh2T));VNP031aX<=b6b?cW!;LJ>#J<`NkyR+ zQFZ=aj-*fTwqVOVc@u1!<;WNMYL5FA-KBYMZ_eipdzBcBGic8Y_~QxTx>K4J$F{5P zXnPiAN;!U1Wc&E*`mOY4xh=wP7=smC#XcJi49<;qm3$;3(A^tLG0w(TVqE`i-pY2 za%HaJ4x4y9q}(BycdsRr#w&TV~d zAh}V(sfu5V?cXscdEt(Axr3^IbhJwndQHpw9??th#ukl@#dB{o&1Fj8Lzg&5&6C+) zt~7zJ_tf}2B2HL>$Uxro&O+5Kx=wb2Z2wBOVA)+U`(qR9bWWRMvsV%dl+wH&Tiy&b zj9y&wv-`W?A?9ua=fjJWR>Wn#O&8iM0oVRA*>aVd|_Ro`BLuBW-tslQev zRK2(CYH?V7MqT3(l^cEfsI6?c{OU3EHHE0vzfPNfIcp+u`L*Eopu10$(wIIB^(kH- zhQgusVW|IP`mj@X*x>0~yx=zh!EX|R-$YK;to1>sD5nWPFDa;WLf=F{FDa6EPx zJM~BDi(0)@6qo;x?pnSraP)n-BTHOxp8f72Tlinp+0?)#PI38_Y>*Bp3dU~;cXvSY z>U+A|c;No-rWED7TM(CD)dO7L6z<^!<2QkOD0(2_zcGF;;-|$?zq$PWa}gR2ZkHW= z;C43uWdZ-9;_&AJzO_Ng)6M?BEa4|7Cx6`pWpJHXxC7$9%>G|KP5ik5-?QiaA2i{o z&lUf%38!V~+PcBLeZlo`fB2>SCl~x*@P>caoc~cVA}CnmI}GvHE&4I8{s;XAI^O+9 zrTovD^wYc2|Eo#=vx5HRwl~$abpf3Y|8&JQ-A`9UHi6rND;JB12;uT;IKZ8pePF@@ zAg%1_=7})yvathKH&$`D47YR8S62e(4Y&_d&jF$A>F(v}fm%sf0+;`{6_Hhx4Zp32 zjQiVq$ijkRB0uS^o(!E#0L16iG}QnI8U)Y+f56Ek@iSF_xFZ1Q=m2K{0Kf*YAfx~k zq#)oAfY1UMr!)ZALg;?bE)dS|GH9TTAOIc#I&eoogidL4kdBRl1L)t==7Q%ga0g37 z<@)Wc2(Iny0Mm2!^zlSGdwRi?4Pf9jXYc8U1VCrWqEdnaQs6`^C?+K;BqbmOrUC$H zHstrZWuyI;Kcprb`h(^>l>`7x2=u!w=FjbbF#g^S2>Z|N0Q=;7eIa~kKk_EJ{5?Mn z@QkYa>G@B6se$62tN{3@ZL(6<0U#%<0O4r}un$9}JQ)EZ0eoz1Y#eNS92|TSJX|~y z3L<=bA_{6UG72&>Y7+d@?fdCl;Lk@00UjO!AptQVAu%~2At5>HKuG>A3CZ8d;G_W{ z!3NxcY$${oKqG-bNgyYmz-Hr~G(+UUT4F#>H?YE}4GInvbPP-^Y#dxXa5(%i5(1z> ze~TmrAm|V%8af&V7A7_Z6kiyOB!QxzAr-_>ykJAd?0r=Tll*p0i4qGdh5l<>VG%@l zw=x#n9fS4B4LhVL<%7})c9pw^_Nt8!eZ;7GjHVnmUqm+b`c7}Daoo$jR(8L+Z)W>Z z`J4XP9b?DK*ApLCv<%GcimRJA`9&o?scapb-y;Fg(7@WFpVkQr6GQa03TFgK(ZL#c zGm~KmUA;|?s=;gh?sZ{S+et+D9c2RwJEX`48z!m(SnQ&WJzymsQrW8-iTOB8{iwpf zuK~yJRXF(w;6qQ#Bmv}sDT^g$=#6+0JjUahtW@b7jHz??HEv~0UD;u}@HP&P?SaD; zUENxJ*e9MTy8jM=pGSV@eV<>}Sh{&oN2W9UZLC_M45Pjg>yBm@bniZsUc~s?S%ycv z9WyBr2TFfiP42V1;{VW%CxXP7Rimw49nZv#>Wxo3=(YWXQ1PsmhsDHq! zTad@Puz&d@Hryi;@pRfJs6<$iDYvyGDyX)6WzS^gSl{y%sf<}?)25pDz;saST+}|N z4l_rq5mcMkX*vK_%hb%-oHmb_xEOqoKudGzXcDLIfCERMlPDr}u{E6Fev|fPbKQbA zjO_!CXwfGTFYeH>1B0*0tZ8dioo%m6RJqEBKikx5-|a$QcYh+|$RvEyJ+hu zWGYD4$_yU!<8((C@$>F0Afbm5c3d%|PhpdNwjf`y*~~$X<+C><5^lO%-n4bq=ZJqs z*4R#KY~U(e3vf{~gkZ;KG6=oAkUwajmFPj!L0x}Z&w?a_F6mWaheFS?6{)OT2Es3A zCG2A!azTSxkMXOk1C-f$knuPPH+r{=E|!m-c~e5{ufv4+^rgS&xDCl~9Xs}3B+No| zhgM#+fLPphstus_TF?4=Q=$|T%BAkQxJ12l~U>fqQ=lQyjK)NqjS?l-XKb!!uIZuv1Ui4_O$mH*@%j*&n z95r(g7wMUTh10w4h#k-8Z`UW(CW_Qmy!tRSFG3}r%o>z-bYE9Y!`p(DVEeM9u8$qb z2U-@pC!5>V@o#Q7VkCcEs9?}1TV%xLzno?Pt150)2w~KMZ;L!#YdufXsvmKE)TDPN z{L78y@@K8MwF`2%8guvtvoGn>sA=&snpCpFOedRDWHNL=_%JBDOAN?PsklR%tK9Lj zoF@>4lS#yEt^1J@9N7D$C%{S1#9nngrAT7+6EBt$OrMJkTKU3x+biW&FM2;Nr*=fO zeHa|SbOJp5T0c)IJhVR1Gl<1VtBBsYX+yc}HZWDPYnS>N&T4wGygBR9*H`t!%B(O4 z98&ZLAyUVkJsyZ*L?cZ$vja}+AZ_AtXwH$nt}oH(#p=jr!e+lw_0=P`oLfDZATa8m z2+&oI;)Sgo6+eCfaiv>zl9AlR8m&12o>pBxx*n5yi58l*Sh6Cp5>o5)b$ncJt2&O} z!g}B(^X~Db>zz#-O?;a8UD5P1f!@j&CnryUR{1%p&d<7U7do5#Z!sAU&5vT0Bbbaf zKpi@XssWr3{xUfU!otMz@$K+!8Km`dtm;Qaj4js_>_b?%?^4>?gvQX=>_J623F{h!ZK%QvWnl4_Mj^{q$n%;VnKIy(uz)AyljX1n^q(J&rn5 zeq!-)GD*QJ;8?fnT+8b(`8uD32ix*r58`;O(#sY`xqhAN@0s>(ryq50X=^P$v(oc2 z-kwV9vTWMX_)uU^F$d|>_ej161=L+0*3aQ1mj_o~cv?!XDwrKdND8#k&!{?QE zZ)#~i;$19boQQZ8clu3pIrK%PZqI+h@13Buy4b!%owDLCW-+Sh?N#32bbh09`8fAVVru>CL*tAPU4p*e zFM50RuJkJLUc0ZxbEDix(|9(CBU|&duf&xf&3f6B#Dq!$-Ok{1}3-jqDwQGav-FgHmP+v|O);-h5}s9qA_ZE5r!taOhL zajW zBUi1&y(ty#5K{5b_j~E_(V6P3PJ#*a`_r7*R-d)@>I>uhz&p10o!R?Zdd1q-07+fbjt6ZgJAAf#D z&z^*vKOwDPxxk9o$iXd-xcJyAFG?z{H&4f(4U5zo3l6sKT9z=HP;p^zVNoY->BsCG z;apk5l8lK-FVn@WRvQf>TvO|O7INkRUHnDGzUzHsp{32kOs0Xx8gdn6e5`HAr+Z{a zA%%gWA<~o*OkT!xy&KGS>kxgGd(ky*A^RiONtkN4V@?3jDd%xX&oV%m-c;sJVgWy_ zjXb;B(ZDg>YmS9!?t20}u2f?exm{V4;Xl;nkag4lLpY1Z%n8uMng-23lwW(inKas} z`$TzI=BnWA_A>;IB-U5D_rX*b?pyNum4{v7j4fcYmP^xp%S|$WhB_Rkn_`&5j9xXv zpR1z$L0WEesFJBqkaUY9wmz$NOHZy#`POxA-H4Fq@(X+=JJWI8*2ixZz4I7o$E(gT zx>9LdZQb-ooU1qWIesjB0wA{J%aAE@_X*(McNC-Lf=r)Yyg#t~NsJOr!cHN6g(+~! zVwbRy*sbKLDN+El1^Xz(YCCaeX3L&}&xuEU$Cc^$?u7qf+~XB1-=gF0<86{_p3>T1 zsV=%di&M&XXdtw)X#MbZC5DJS&NI@kHZef!aIE<7Nyee*L!Bq9XLa6G9m5Y6$~Iq! z2`QrAm^oM!FBL!XOc%yy55q!et%&DJ zj`otGMe$X1&#bhb06|z?u5HdFUrE$1T0?|_lc?7UDHRCvQfAsi)7}+(4#;e-bsw5b z5VC#UlMyvy!hL%_n@DK5ZR5O(3%kQ4_50(cYpZoV>T^qTN}lB;x!Sw;8{~_8ojR8Y zo#m^b{>OPnSxHGYY5XOv&9BDC9>q5jeLlzX{-)JlA^fXrA`>6i`@>Oz6QCw-d}eN7 zm_Nug$U}g_Z)YsyqRoMk?(MrLfRYIoH2L2B8(;aU0h+rr+{Xtutr!x!ny62JK#R~) zA{)L3cWBGllXMSlFWmim!+=UY5iC!~C9%LO3-~_v-$@8Pj z*D@U*i@SjLBB9rIKE6jO>JE# z4rm*vgu5Qr#eX44^2MLO;oA|<$&_%0&dskUC}V?-Kq^6v#TqNY^*x{F*WP>euUObG z?B!zsxqY+oC;eMZ_Z*e4Y$min_Zs*L-d+@ztXoY3Da?rDc&aY;%SNm6=Q#Ehm~JcX zjyP?_BTs;5nip^mb0q@xAFXyzO&2eD^8zlU=M6XnpWV^iKFED^=e&(rG*WCmC*qB9UZ|KH}D9e6W|8<&dEth{lP(D9uUAB zJpLvlddlJbopV~7eJ~7wt5X3df4M;yP|<%Gb@D%nJM9^4RNerptzf&+6u#}>dyx_3 z0;ibDxBj6;1)(9};ahu9K>z~cHIN#RUz8>~S5Yw{*L*LWs+xZBBA=ID&3_&={&C|mPMWZ%t2S=Zu!%9A$?%%@S zs-X`8f8WEXuE0dPfruZ{*i9P=h9G|^2jesjWRrqB)@eXf<)^%{oDiPAUVmU=dLrOX za1bx_bqCYns~Vtk*FEKdVFDXpA5V1$4+n&ekApqP08rTIcVXOb!YB?ZM$_F12A=-6 z+Yj|cxEZRN8iGZA?_5;p|B<7EbaMCu2h+yQ$I!;<4?IFU2QZz3zmFzT!%#=t*3;7s zl_B^}(OIC~-j72V)Yzx5Q+x5jJy#s*Vj**iGe_`3OkB+g|AgwJ1y8~?`sqd1xwjkPbf&99%bWApHv$-`3Ly98mwl#{)01 z^Pj~}?^;e&K>$9uL*&;_>2G%^3b*|>gdwMLC<%b*4tPLyTQ<0ZBM3490PWTw|1v-g z;+lU%m46|jzmU*hNa!yl^cNEP3km&&g#JQ8e<7j2kkDU9=r1Jn7ZUml3H^nH{{M!A zp8h*O1O6We00VG`p#Gi{0g8Y<2!Ppw02&O?0~f9L1feod5GF%WAUp^{M*mp?1}J~a z?i(8L4W+{Z|NDbK2&gMY_2v7L^d3k)8WzrT$azaXCgKOiIT4{EHrI{3hB z9YDNEmSe59o&yHAm*p@K)e+F~Qg(2LYXl-338gl;acN6_VhAIU;P_9sE2I zt}sD9F%B?8guSDbzKYuS?7)yL$M<^s`T6nr3G;a(ocIMLB_;UI^JAIbjET)63JYr%qWVW&l@I3Vp1a4#RYrw0sGv<-+3`p9zl`ois{ zYy<=(Yz1w_c}2t=1$YGo?QM8%?1de9ZH0wxMa3i}L`6i!IB;R#i*x`r@&39{RLpP1 z!eBC}pw#a=f^vc~{C{SFnSK+~gZn$UnW}(##-IYRr-vM=j{t@M8SmROB~h#lOBvUcW{Ebg6#uq%`12 zA5TPpoDBcJ^8RnC?*n)IH{%Nx^HZf!K`9U+231ULP~#dk!2X4Y8ZM_yQpaGDY~6cm*bmXs2diz;{+7XM)jbi0;0!Bws=WG_>bXBv{=4k|*)`D7`OjCu-Tibf zIK2=$I#Md0cD~@e=cB12_wA8l?`a3l%D>-#-{)tM|1>|JHusO2{ol0L-tI?Zy}&Ob zr;jarJAMZ@2UMGo;QcE2y|wmsQjVSocN-r$I7+RY-^I(pNrwM-?qApU+tdv{DZytZ z|Bt6IY8?OXZ@&upM}7ROyMA@oKk9*hB>Zc1{pzlN)C2!W_}A$A)m{In2mX=puhI3Z zyZ%uR{3GFCqw809{i7cEN5a2G*RSsSM?LV5g#X*oh5I{>54y3C{#8rpCVPc%?P*4@Jg0otd-OwG(;SRJ5>EDosQ3o66f*de`i4AfA1 zoPegPG7Jd{q3GYY-GOf!p1r&pdNA1U{J%w!*m)s9O-zU$C@pLcqVOOc3DRzUK3*t3 zO0$vN))hsgq11B85nu&Dni@qreWQ6!Wxml0DB9lL15|=VL)F>K-rXKWH-q$z%f2Y( zSg1BgU%w1@@B`^SkY;uBb%%pAN(YkS_afS z#drFNw*86r0ku>?SwPv-E8tXb6UJ%B1p~iQNWe54{M;OTe0cT1k1I9^dl<_6-^L>V z0KT;ul?ot5^(_qSWHCWWF)>~tK9nxls zc|HL3z(IX?Xu|J2+Y|t(yaoW&AAjeuW`p0ZA_1VH^QZPuqQ=WlUv1zHc6_J~{jvQ& z1%62Wd*Y|^_)z8j=sTFoH#J`vs#EPiUktto81mE`1Mi;)@qeB0r)vFF4<3C7M+bz1 zhn)k=7#w9N=P%&$W%lsXuS;-`e|Lrd%Va;*0Y!cr*C0Wbdkm0U@d3o0kifHSCli~#(AVBjin9k>M~ z0QZ4ZAPdL^@_{0t6sQDV0L(Cx75GRNS#1|3_iGbXK+<~M*av=GT5=b@VHKYyF4HPuLeD^Xp%PGKs4mnT>Ig+ZuRw1?6QK{FMbH{(E3_9n0bPb3pktzwp~KL5 z(WTKf(2daT(7n;GpvR!6qUWJkpf{uUqEDi)qaR}sV9;Z5V@P3WVwhq$VfbNO$4JC@ zj8Ts92BRNi7GoC^6O$5?15+GR1JexC1v3aU1~UV*7_$Mh8*>_S2MY^}28$a@7E2e) z2FnNQI#vqSGpu^79;{iceQZ2zCTt;WHEeTi5A1O4MC_;7b=W=F^Vo+t#5im?QaHLe z_Ba7J@i@6SH8`C(vp9#iB)A;7vbcu0F1S~5lW~i1-{6koZsFnKG2=<%UBH9mh2bUR zJ;!^CH;H$EPl|sQUm4#5-xog){|SBr{xJR)0RaI!fdYX!fe%3(K|Vnf!5G0lAsHbb zp(dd{VJKl5VFh6i;VKah5gU;r(IuilqC}z>M4d#-#5lz4#LC1r#8-&Zh^vVQiFZiI zNCZiAN!&?dNS>0kkt~p6k+PGjlG>9-l0GDDBAq6KlCh8}li86)kmZuSA)6(~BL}#(Ru)jGvjvnBaNZ<3FiI5qUC6U#VO_N=gqm#3eE0;T#7nJvw?^M82P*R9fm{okLXr@@IcnlN< z`T~2D9w=!jr75i`vnj)sn^n+NfGPi#OFx5sifSRIOg4&Wgv$~Ud3kVye4oU}Y zfqB6`;C>BK4P%WmjY~~w%~;I^Efy_Tt#0i{+7Rth?JFG_op_y9U2a`p-61_{JsZ6y zeH?vl{UZGf16hM4gH4DaU_>r-RaqU~Iw>odj-u^OCGs!c# zFjX|oFg-SVW0qpJZ~n?W(R|lJ(jwks+fvdp-g3uE(kj7f*ZQS(vh@#}H#TWDC$LlirUWMM6-e%t2J}-O%eZKp? z_RaM}^E379_NVs`@!t%P4=4%553~y$3E~Ng4>}Ll32qK~8WIq)9x5MN{*Le+{N3z( z@%Pzbm|-?yqv8DFso{Sj%p(RPc_Nb|e?^%^4My`ue~iA1v5Xmw6^hOJfc*jXVJ7Zn zTuD4}yjT2sf=WU|B5h(s;(3yB(m=96a&`)SifhX1N9B)AsSK$fQh%jcr%k6zr&ndr zWQ1p2WtwMBWWCBlWIxT0%>J2Ulk+WCKDQx{DK9x6JKrsTt3bP;zfh#Gw1~PWvgmg) zta!BqT+&l2Tv}R2Qx;o}UhZ1HTLGyUtCXp1LU1B-t0<}>KLI|ue%h;kTRl^wRMTB6 zQj4f#tjnk;t&eCxYw&D1ZnSP(ZPIHRM*@-E&En1VEnF?dtuI>B+sNBu+wt2&+V48N zIxadLJAZUpb**KW}->iyCu*Y~;qb$`bf$uF$~VgtxQk-^3xp`nIh z!QuK5!IAn=q0xq~!e5)lM8}%PCC1w)UQTpP%1ri6DNYSdt4@#4Xw7_^h0LygGyk?T zXFqo`?>2wC5U_}~7_mgOl)Ox{oVUWdQnf0y+V)-M`|z5^+QPco`u>LV#;?tgt%qC5 z+t0U4cldT%cjb1+_6+tm_Z|0df4n;&KFBy^IjlQ+bu@ged%Sr9Ke;=NI-@!(J{LIe zzEHndzJy-hUPW9}U66EmXa)l{p!h$795i&mU$8?c_#afl|Iwp{Lw{i;5dl!pL|EwPxac@oI9T`T zXefB37rd`YFhN)*q)vf!e9~YtY!pD!xGB75g1+l}_Z#w)p!mEsew<^C&kT$xa3fSs zSXdYY=-3#4<^NX(B$&LfL3E@he9~lCfnc~(T&^kVrkd^v`eX9yleN<~8sq#7{|QWV z64%0@XzbD{$F5w59m$kI+E#ZiWGP_46t%DG+x7j>kDzd zIt4r*P8q%f@Oj4X4ep`RkZL_KKW6G#p*f<>*8y}ZVybzA8}%06`@2kg0evfM+Q_&; z=-Xp<`dUksQ4lyavIT%X4L9azPUY0ok7xSviU6{iZyr5x!LHFG z{u4k^s;bLMELyRlvo-nJJtjx@5c1U-dq3KHBpf*w16Rb)5zCm#?{k;(2gzOON8^bF zj2DVZzG?Q<3daeRU+e{+e`4CbFkccb#{!WOsV8M?;}4ZH>OIxP!f3YBemJq$35?0h z(JY*P@6v9f6DF@dhyyo#y){(A5HO}0jeTa3Pv0g~OO!~I_UPmOM|Y__b$Vh(R!)UN zF-v>^dhk)g6r09=Kq^TErg%nkuupRsHQ*s~TV2Ur9e*>%3@v%jY7c*9srP3m*dz$;|RnBAMoB&>Gj5p1Z zuK z+DtMlTsdM0G~0+O^-dk3X@UyXC7~hg2TqDZP$}@OQztaPkClV>b>0gN{deflPO@AJ zy!uf259KyO$GrcLLB&Nm^i#e-AlOv~31fqvVqX&Yy z=mfCe=KwTG0?g{LdDZoa7&nqycra(aMxj9~}4`h7VMp1k=a_*#ec12J}wN|=M- zOHZ${dZOod<0lTC`VV^Sn`G?eZ$cgd@Vn}4AJ&5_-YAp>)d{4P0I1pr=7(9b+W>UR@PBf#*A+bdAfN;Y(0T(Dd_oY{O z8cS+l{xeE0c~-$4bBGA#XYdS()`8f97M2tH+RBQ;zU$0C3L))a}H*sSFuGh`jj z=+?BP)qQj3UkJQ-Jj$WC`tEg(P$(?N6~SO_Za~`!EFcP2pAMuQLjn1mK$Dtd8TRO9 zyD>b1X}V|VKB2>k=mu4`l+iw7z3Qa=kb~JnO&lNe7(h(~08q&x!k##G0v?dzk(2-` zF{bzx0O(_h)B$+_Ec8tFP+K5L0ERT@YW?uITYnN3+1@h8aC!_ozdvb$>ar$BCjYr`rD{ zaiqGhj=J(-J#i8G8Z+I}u#=L)$W6`9AF~jLP_7nBwSe{|t^AoN!_qR1JkpyJvp$gp zNArELBjMuWEN;pg(%q7OD4T2lc9TW`n}F!#$kSO%OWsrek*GBuZ2{8s3iQY5ekw<)nHVhyr}LsXIhbo>4R!8l6m z^i)A4u?elG#hOMg6$d>trwA*CZYBCk&*wi<1Mc9}N!Zt|40ZZS?Nxcpd*H`+o@OI%S@60ek+ z(Xt97`^6Kpk?F93)Q@QTrqsf*YwQ4eSJZnefF}U^mAVKiG2m?(6&u~_crc(O5ul3# zSVX<>n&iI#ph=^IT#PVlfQz`li(9GfZwos{PBRpy%*1KF7pTRiw31q4iz$YiKdv`< zA6)3Wacbe*2+@8pXQsWb0NHxCy&k@pLdbQN#Dk=yX!SFrWNuLG0wsP5{F} z=VwOtu`l%49819 zLAFRLlb$X~!3Bu}ccUp6dq?^wgFoONf0znwIFi^@=a{|2sfHv{3p;Zgb-uZB%88Oj zKn6cq8m`^2V~IJ}C3@g_`&umJL4lp3vPY?VDgGcr8ennvj|VvU@3O??fA zNt?T}7i!4Q!X3ENa%Z z+6c(Vw8Th;t+X?p*ylOs^^;YrwfMyvwQ)6EI#WLcGH9c4PR{E1ow*L)^=8ys7G=E` zPZeaZB9w}_>`S#Y4Kcf4DUQ4;I>$Ua3#%STiwQq7!^z1)NkHm*i!}BuvHe6@?*W?L$i$v z%pV8)VTa$kT zb9`i1kwMSK;@V2|KHL`M%E=O#%NHaR@$=zj(GXiZvaqJ0KUR(BCi!i0xmL7<%I<2ptg!&A?_D)5HFtYl^_`7KfKgFfq2zA*G&bv3a_Mj7 z^5Ub%2K021uy6{7IMKz-L9LmHFo@FiF&wN}DVIWFOB6q{)%;YInS?hYLAUM`JJN~4 zX41xrb*)tPCa{0KGA=R6kht^>TB7<0OXbKoqxSHqN~ZM!NS?kGo@gN-b02gC}dyKKdB zkH~;r@v2E;$xSut8HLYHyp34@3=ATV#LU*b2%j^p@V|$1PR7BcCWc)6oCDogQi`R^ zRT>$Nt!K-l$T&sB`V{N#0BUnYk$f27Nn#h{TDfvaoQBs^?tIwj^*U2IWxnVY-P+FC zRET+|wXxUmYQ9$RH&$MA8ND^-oX4S9Wnvgi81$cMHEo$GLC&a-i4r1!Ju^_Bga3$) zQS%8L#egIzYxsDqprWaDveF0taw6Vtj#vy-+)rBd?RNOqb<_52skiBOVb<(f&t>(3 zNNI1WoFb4oQ- zUv5z)#3%L+0Lk8z#AsZ_u^&Tq3ruE}Z-i4SCDEHaG$(6I5V)T2-|z>-EDH*@Sj$6c z!T3~+4xKur8uwAdQKW+gdC2wcFVPAm5~4S0dWI&Bu!ODIBV&OaloE;D{G-=_?Pm-nU{wqN7#?(FI8)>>%DNKN*o#lY>FUvhoRHI9V7w zk9$Rs!a!ovlOfQdhB;W%_+uH69s8Obv}4#`->xV@+MTEWZd>7YE`Q9?BjTWGIfP>K zsQaU$kMR-tQd3T}n53}2VO;+eO}h^9TtlXfa8OZc#*J*n+0^;3(MPF*EYn?V(#`zA ziyWT9WUSF_b5AI1-!3yYA26%dMifwB>!Z=Gk*9j1_{8mN;XP^im zKdB$)9@3QXAD%j!Q0rrMkjoH8L7I&eb7mrq`PyY~9jESbaH4@Re)&0py#6CgAZ3zM zsP*p$Pd)>JR23zo$7CT{uU(c_^}LAdoyxSBZ_t03=r2G&myhOT`sOE6m$_6Jve>NY zg0I$_ImcbaKK#hm=#Outft2D+GNoqM^ywUxzogEOlx%z+bg)oCmp=1R>!T~>Cf+!7 z-mT8d4qQ{nCeqwby4@PXIJz|G=3v$=aKV>8pv6#9^6BDP?IB_k{=4MVv~)xE=$xi- z0fH#6HOPG;K2>L3vs}c*2KM<@>LcgfOtqcVVi#Z9^;_?%efM)@T3MuvXWqgd2>Im0 zrEOxq3f1^`w^HLo%TG~dHA2p}5*01nuqTN|)FjDy__l)mBs}N0qmv0;@TNO}vGuuR za8vvG!gsjGa?pb7h27d6z+-o8)wcu1cCoo!%fYc6k)abI`E14{BR_TX@IW3+wT@eQ z6<^T)mCK<{bB!I<)wbxk7KZruhkLiGKu|(gR2a=Z!`kp-{tFIu9_#}FFu3^8ie9mQM_RfKrp3{G@=7# zXdWDj;IA32vWGMB5zb}yD9Vhpj9)BmRxxnrri~NmbSC2JOXiKRc10J6s{*AsgsD)UR}Vl34y=Ty3XW`F zK)H190D4hpe$(1&FAn<%i8HAC@i;YPYu4LF$-X|WNwJuvZ0t%SODGa2^r-|2stQ(p zkJIlR^Q>T{)VDV5smbgWjxvj(iWh>ljM{j63`)^%mCXX8!!087J(om%C(7C4!D`Im z`?r$KT`Ge0+`U@{)hsu>ZYLqtT9cQ``n#u0O=EjMmH7s3$^^*; zZ`UtWqnc*64@wG_?Rrl99X0kDAD11BWc?)m_4Ub>Jo!Reh89^moPP(#Ri@^Z$9?g* zCCwo57;J2Q){YipU_%N%sZEU)%8&e{Z3`rdRiez$x;A zAu40vDL60Mf};&bOFEn}kL2i?Fu6^{)Y;r#nU}XanZ-Asqc+E-@|fEz1TdT)lcWDj z3-T6J_(<>SC02=Nwb4kD7J0cpGg#r_5{#+-&*STVZ^d5ZfEs!bO(s zIn+~IKewg3S?;L1q2XsyaH1$#lRXG@F0!HmA?&MqiKRzSv}>&=DJP6401x_Y7*#byLH)r7m5AJrMG&qX(_tGEu24}6z9db(g&93%g_m$)xzq`j%e z*T!V-)8{96;!uvrMJLXMS0X`4nA?VhDg<>%)PVT{yFhcSk^=Q2#g!{Cm}Xk1JA-QJ z87?q&j$;a_%&; zi6Cd)NCrg+4y=%nP9#NuUS_(Ra9k#t`DJr&i^yA7Ml#DS{Uw{avKiTiL$KmyqH%TF z;(G5hy)rRkGfh3e$wsFl0=G>!gSX}MrCPu&t!^NUY^#z*p&xr$;YqZ_H+Cb#s)+Og z3;OI7p|#QAy>lPUU%u;iW5+6it=O)_$pJHmqa+oE?3sl9lpRYUW|pVm;5_)$nyqpF z`eFxXBwzW=!GLq&yECI$kl*5zeWUg)cdP4dXyHH*lJYlsw6^lv=xsmj@oI|n)gY?1 ze~sjJ-8ug~N#OdzbRi<&roYn=F)arN2RSy)o-u#VZZ_CnEOQ+q8Cop#w{-&DY}8u9 z!FqJFk5{j$=)Kldw95=PTt&v}3HV#$Jzh&?*Wb$i5(ldC7P3az$vLfyhl>d9Eb~e} zw_7hJM@|?M42%tw{t-cn>hOz8WeWO%B7!37pE*Rf(Q94<6~XMz-L@YEMvLvfOG&m> zYerQUzix7SqU7F2!@lZL*~^$DiSumpMliXF$)!q_wV6?;KAyL8%e{T>8HBFjlLvn- z8Gl_dwGv&)vXd>y#d;9IaH3co5_byID*4vp9kZ^tkREgNW?pZev!!h)8tS9-wqr}~ zsJY25a=EHo>Yxw7_Gf;H`{s)LcQqE*O^+HXgkN@Po^x%wAl6o(Uyn0nscrM0CN|}@ z(`-+=J;(ra%j{G{yBv(rAXEMi6Mx~7i}P7lMKr89r@3V9fhN0}xAo5)WqS^9_eO5A?T z&(X9=!#(2C%5?X@2nRA($n}rXRbwEoj5 z>Xr4&=;A_@dBOS-V_K=sw3Af+?yqk*D~wLmNU&o2qX!CW4@09DoZY69FEZ@HM$z}; zhpilmdnVTC1DXpGhY#tRYOc^|Fv@fbtWYn!Z9Vctd!%4iYgBv@o4=ppP%g~X=d_j! z78Mx$SffiJK##@OGia{8XULdpG||iVt)}r~jaeN#LxBo;wLXfd%^3;fi?U!Sl%UHh z3~&6D^`whIhoz|GM79!lT#(jDo)me^ELw~y3_BQ|9)M&CbUn3UIKxn+)-Lkoqq*8` z@cQlLtX(Iu;_9%^Y{+6J=#F=^WteiHaeN81BTVzNl8((+EAjlb|8;9==C{?|__4j5 z{sAN(#+7NUQ-97;%1qHvhPP&2KZvyC9`vY}yI|KY=62)!`LNY*;A;me)cyHo-I-zR zS&G~h#>Mp|@XC(^9bN=2mr=r1i>+4>S37XC<}TcunXNBEHOa*eBWs;uS6LqB7{6hI z=kx~Rr`T!TW@e1W=YsY|1Cy)oQ*818h2FdTFbBpJe%w?TMwbKa4EM$*!M0xdYJZIvome@48L1 zuT$OuKqI%>Q-@dS_=1a#0>9k89Qbc=G^uR=270|La{Tjcd*S<)oiJk7+?`qNaqYNG zA?r^=({iqiiC-X5u%eyWiF7t4=S$*qJ4*2gwb3Yps){+-?VzKR)rZ3lr=^VnE`g00zBsRoy5h=c;Y(Tc&fA@-td%u^zOPi3N!Y*^y?yS9vRTCp*l0@{kdA}lNyCQrdrWPQ2MdgS3&l9A<=Mx(~~ z2#KVDJ)pOhviSC0RJngaYGdo$77|{tO;BU7&K&W3;^WRy)4=y3eYUGVqzvae=?N}B z%a(|YAo2cYjT0*iK|Ac!Mx5u{F{Q5z}q>q0ZGxi;TAiJ-PeDK{& zbwrtex0`@F?YbUt0m&$r5aV18?XwlMS#oi99QuA0D?5jT`HZw1(zDziiDk~d8FIX> znlxx^p0?iA3KrXMk#k#|P@fi+d>|G!0xT1V87ZW0A$8}MBa3yn8LQMqyl49An0WJ1 zOj-$&TEA>#)m%t2LXof%u3Q0p$lRvcEDL9C8)~#%Kst@nW45m!M2aIiP+;yL7U>_; zCU{EUW%6N~l{{-M<}bdstat#Ywqa{ctL613#@A78E$vd~ze-=rxjNwFnpXSvX$(%p z%%3LrO_hG$6gwr6HP(O*^eQ^&^@EYl9HsVfpq|-O1lT*(96A)tnT)QWXGo$$2?iF% zMN(BiAzwBGE^VkV={=Uh82G-b!^%cJxT|^C_6#d7k~6x&bn~ogzNK1)VMST#hx7GS zTN0a^ZY%zFf3+xbP%s5#7{iymiCMU6|A(2Zrk*9-x9du2PkzY~l>Ek+*Cq_W=u zto8-Ff52X=O8tnpo56!bs5F$+T9G!LWk1_{|IFhTNDb3js^)T=nRB4IZs=eKl59IJ z0p_ulv|LJU(Q_UZ0VG)7$;W4L6k|w8^f_FgZQWAE-c1nInr^TqT2R>qD;N2u1d4TV%C;^7JjS;nudt?VR3m^1d1HpqL zRW=!R-#{DT2XjhpkMLWSQ^cPRw2l5SU6D236x7$w*Ye$Rpc&5lIn~rZWPi9>@DfxU z+`W3m%<6fSxSns@kteSdJ?HIPcUdKj*c1Fo$l?8xZo<#_h1Tj$TBjY2(UGNAz2|Gc zv){7r`Pss18p-1MTwtEiZ{uH8&)RCEoK(*@ZS2HoHc@c4QnPemQ&Nk1D>57l5 zCu_^|4)7~jaxsguJ`p--d?Mz5lI33K_@_MEw(kJp@KU<8MXUDXxT>`!~;KviU`Q&IUIKHn0Y=vTF5l;3!*nq3mxwX9#w zkg@GauHn@-S1R4+lE{IHpq%i}q^ggrgMW~#+uY4=)9K}=zZm=-9H}GnRa_E!cATyo zDxKQ1NaEk=^5Y*;{LJ$&=`un3F_P+s7ZkDrW12!LjgkplUppVPOZKy}PlA)#nVfH4 zLY?!Se+p}T@tJV(UlVTMhgz`_a2?tBxSmrkAS)ufwtgfkve*i*pXPH@9t@o<9;pg? zf~#(ThrjCwq82L+gY}s;?R?js8n4nHe(I;tMeI9^IxVH3dvZ53D+|4~Xqgu;$i*$j z@6XRwzU6j?JEukZw?-c|mzjZ{yX=C$EKPIp^&iIXE;&$>J6$gw#lp1Loy{3Dg#7|J z7mgsptn*OO+fhy-DtCf~ba>ZBh;N_E{B~ns9b@u-r3rNF2p+#Hc_?zgxV*dkol$ft zz9^}4U~v1CduX_YX*;N7a#Oab*p1UFQcfu&(qTQeG+(70q}nD@)YvDgFetS8DL&@8 zrt4tZNaHMVw%8`g;?5_!MvJ%$}uk+zj| zaY7MT48B*ElTlr5$}Z=7F5WBiNnbV{Z$+wJjz}D>fbS*2{$JJ^=SQcP<+*-05=6^3 zMm7JzW?yOpS7#a(d0YvU>ov4Jh;26bT@&Y_jf)_fTcSRmOs{6YnhSzaPO<4rnZl)sQiS!U zvA$&8lj*cWuS$@;M*4*vt% z9NHL!!8RI|g!TObg_XqCK5t4DoX(ko3{Xo8lLpL~Ssi*KwZHHO(}l`OM`==r%AOOB z;qzd3RIri+(BDm>nsfv~^BKb8i3>*XGZ`D5;?D7HM8VJGl#ZL!OVYsv(hwyxzpV`$ zNQVERpT*cAX_Pgh{<{W#HOCIQsVr=%v96suTE;2D?&wL!v}MPzf9iAhgs#P39ZkLG zT@X{k-Yl%@8M~Lo+>0>OL{wJ7udv&mm0oUbY~2%HP6!|2Na%ODFk8WzW&M_dwBCWA z{_~3NREjKhJK@isy2w_q`VC-LaQ2RQHI%0BP^?I~#ZuJe=nv$v5ix^2Gy zBv|kE3?Kc9?o?l1<-ZfYB_2ArxT)$q+VPDWUn7=@B%)mHmOwnp?F`mmP4S&Y^9xTS*__&`KX1~{*0mDf1kNGb&)ZLW zH8y|U0pjT(DJQkfO+1xuQx18?EUigmi=lbn}VXsG3Yyq@9r%}OP!YZ~&-lrLhd zs#$yTUMnP1^%g^cmYLG}^A40L^-qh_e&TJ*zVdxg3w@TpBeIKv&?iFRP-pG5o*vwU zj@Ndc9)+REE&^gByo$Tlssed@8Kda}?Pjr`5-6XpD6I~h!@XWUc%*(k!x|!c%E=x2 z=<6lVY4Xa=Gn3=O@xWutbICWgHWp;;jZo9P4z!yqBu;$Yb(YC7v)bWX-)6Pn?@Jt` zDR6bD%>(T=J6|@=S$*_vnZQ~2gm@XaTM$p&s~$hA6wpyW=fB~Z(&g|y!6?8Nvo53q z+ly6>4oJ*YU$gpX0($cEk=Qj~6_UFv(9!Bt;c%2#S*4moAE{xY+{QNTmf?_#Jmpae zc2{`%E)J5$RL|!fvAvrNo*z~EZe+JaevGIjtaoHfpGxas?kqCOw&1MT{!QN19$hh4 zU569LRS}UDGqLu&$e~CnS0e11G|mlVV3MsN=y2hy=nSrBEzBxb<2oq5n>r~Q(<&}C zHKE-Y&49{iLA~U(C#RCAIf4@e3>s;8sD;dw-)zc0q>vlT$R-6h;@eB#fT)GOkEOql zq}v#J0h1u$oC_YCBb2a-lTCJLn3Pj$WQe}3?BxuIea0^RqbRF0{d|X z2v2XHws99Uj@OjL+N-2#D)%oq(|0#kSBsu|Iqdz2ONw4@5i{|<>iaBs3h8+Bq>X7K z{=>&_a_T#IMnj?P3{O3hOWx$@$GD*H$Sv{E>-1C+0Yi+?M{<}1fFCJ1LiP4!cB;u6 zA&%4}a$y4;uQtBLCE;$yV7kW*g{y2EE5;u@6s|trv&ggyFB&hJ;HWtkJMcm#dgR@U@c8mmb@1glGvp1hJZkCDQzB{PHSAM)9bbr(7-EmmVNK74AmpFhmelZ=q|(hP zAXLK&m$a_h(1E+A4bnOv&TRHH=l2+n3d*HZ;bxG?b?DfLGl=Xm?@CY_sYrDQU#DTe zPLeXWiHhfpPU#$S*2B`=_#`m6Nv{;P`RhmbU zW;3?EG9w4FQL?oSZ9uA$g)DE*<`xe}rPS=f^Y}87mFwr#NNEHUBJz7-VtkIC<4LfS zJAg^F;!KJ723OYJ`}97f8tR)dZ;ow<3OKN{GQS+>lS!VAYT&!aH4nydA_Qcjhx^U_m>y_Yi4@DWA98RB6^u&RfIsQk^KEgGM|NE+`pM@^ zRsHdf+~XhGF?4lnv5d80p5pU9Z?9e%SL%5L-s&H zn@f`2_RrvyS6YQJ*g!*AE= zI$y4d{e;VEzr0dK(>)#b2=4jvQpn-!i>hMuZw9%h(FE)6%0p)GR1*y{!=|#1Dc#Ht zZ_F7j^FlI0!9`>7kE|TCzqi`%v$B4r1%EsZ+{gTU%Mvh$K1X8JXIlo#HJ;!EB^LvzT}lVftm_OZD+y zt>xI-^wZ2)H)PW2UJUoK#Kl*ngVJLCF`;SXX?&LKP2KS_Vc?d~t= z9}RsxTt4#g$#2%22^ALK@FQ?NUv>JTVgu!zzD!h_b_G}QMSI9!J;l3##`!%Ju!UmRrCgk3LobAp`GBQp zv6XnkQ#f;fviT3wk{G>e#DY6bTK5w|hl)Ki4t6J>StF5aT1M6PCjNh-SayT^r<`q} z2b5-ZnRs6@%QAgH%|9zk3lD3<^Wyc>Iah0YE?L>M!S=k4h{v3^&M^1K(_lqJB;_k# z-!iR%NkihkozZlv{pQPkFfdWpF&d1e%25iJ?o14gnW+e(eJfhX?`*cY)mh;_Z1>& z6B<6f*!AG#uKQ}>e5guN+`4nFbdh9qTO3>M>6lSi=_t{rpxY+ZU8vzVDbePjxvv~| zL+8%rJK|?_P*<7&trfVvlJaLer~fFuvs=+`PMqaeSdqLiaVwFXxFB`3$i)UcZ`1Y1 z%kqhwyee8LtjVKbkrSs&`4YkG_v7}8kvl@~9Xz>$9F0W*k&9aFM5Cxqgh>LR#l*!0 z5D^93pZ@+w^Vtv(#)CT$Mh1|415$THEjFD!;k0_iP(Q3A#C0_Vo8MQ#nqiut9f(?I%_W-IO-p;_Rz0O`3+5Ws8X_Wxvjgo+|lFO`GX?5&DR~e}<2E z*oMY+;{2<{DYp3eChd=bR{FE#egj+fv;(_lHjVpLe!)m*mipb!28t@6ATYMbKj*vQ zVa8C>WkYcRa8^9IENPD0;1Q=#Lmz{G^S8(%y|0bQI7+Rmo8`Rku4nwtwO!=N>{4J5 zZ-nB&1*}3p4QenzR<6^QF=CWov^^W?NAa zl((v=s$}Lb%J%tPGdp$A9rZWHyAMgsJWC|TO;BNdT z7gw185F&G*GXR%Hfd+sJK-G}+JT40GYV{R>lqdiYfCoSW69u7TC*nO1>%;?CeE7>J z)I=i0;4E59Muk^^DHaUcS26*70}(uoxF}OuLI6ww_F||#!wfQj7wE6hq=NwHS|3DE zB+0bu0qUV+A0Ob7DWe0(XcU4_{puV(YL~UM3koz4dM`Pc+T#BYo^o}#gP8^jQPqH3 z9ffGhea~e>%l#L3xb)xWH-DcM4N+X+4k%7=2?>e~W^&{K9{WLbUw%O!oJ;3Dff5GtJ+NBD8<8!QYFbw0}{y-;2CFv;y~*g7KxK z@VWnHIRC43MP6Eg|0*4og8KbkErEM8?(27NA*y2Lu4Wc+S{4-HB^0%jR0bdiphfNc zT{qJW+_QDCfI7 zpfFcmp)l}0ug?Fdme<)IR}~(f7xHU&q74%ZD=RKXrWkf+%f7&M^DD+PqKkABq`ktSMm*<~xg@XD; zMc#krhti=?2>z+#7yb9W0{@Fn=zqyi_D&zJ%A$2(t-A`9_p|D%-O{R W?($c=7UJg<6vby`lvR_%|Nj6imczCH diff --git a/inc/3rdparty/libraries/mpdf/examples/show_code.php b/inc/3rdparty/libraries/mpdf/examples/show_code.php deleted file mode 100644 index 32bc76251..000000000 --- a/inc/3rdparty/libraries/mpdf/examples/show_code.php +++ /dev/null @@ -1,48 +0,0 @@ -debug=true; -$mpdf->tabSpaces = 6; - -$mpdf->allow_charset_conversion=true; -$mpdf->charset_in='windows-1252'; - -//============================================================== -preg_match('/example[0]{0,1}(\d+)_(.*?)\.php/',$filename,$m); -$num = intval($m[1]); -$title = ucfirst(preg_replace('/_/',' ',$m[2])); - -if (!$num || !$title) { die("Invalid file"); } -if (preg_match('/\//', $filename) || !preg_match('/\.php$/',$filename)) { die("Hacking attempt"); } - -$html = ' -

      mPDF

      -

      Example '.$num.'. '.$title.'

      -
      -'; -$lines = file($filename); - -$html .= '
      ';
      -foreach($lines AS $line) {
      -	$html .= htmlspecialchars($line);
      -}
      -$html .= '
      '; -$html .= '
      '; - -$mpdf->WriteHTML($html,2); // The 2 is important to prevent -... - - - - -CSS visibility: printonly, screenonly -------------------------------------- -Roughly based on CSS - -Works on Block elements P, DIV etc, or Image -Cannot nest / layer. -Inner blocks/image with set visibility are ignored if already set on enclosing block element. -(Block element) does not work inside table (image does) -So 'visible' does nothing but is set as default -(NB Changes output to PDF version 1.5) -Incompatible with PDFA / PDFX - -'visibility' - Value: visible | hidden | (collapse | inherit) - Initial: visible - Applies to: all elements - Inherited: yes - -The 'visibility' property specifies whether the boxes generated by an element are rendered. -Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether). -Values have the following meanings: - -visible - The generated box is visible. -hidden - The generated box is invisible (fully transparent, nothing is drawn), but still affects layout. - Furthermore, descendants of the element will be visible if they have 'visibility: visible'. -collapse | inherit - NOT supported in mPDF - -CUSTOM: -printonly | screenonly - - -Added VISIBILITY function -$mpdf->SetVisibility('screenonly'); or 'printonly' 'visible' or 'hidden' -(NB Changes output to PDF version 1.5) -Incompatible with PDFA / PDFX - -CircularText ------------- -function CircularText($x, $y, $r, $text, $align='top', $kerning=120, $fontwidth=100) { -x: abscissa of center -y: ordinate of center -r: radius of circle -text: text to be printed -align: text alignment: top or bottom. Default value: top -kerning: spacing between letters in percentage. Default value: 120. Zero is not allowed. -fontwidth: width of letters in percentage. Default value: 100. Zero is not allowed - -- now uses Kerning between letters if useKerning == true (set manually see example) - -BookMark styling ----------------- -New configurable variable to control appearance of Bookmarks e.g. -$this->bookmarkStyles = array( - 0 => array('color'=> array(0,64,128), 'style'=>'B'), - 1 => array('color'=> array(128,0,0), 'style'=>''), - 2 => array('color'=> array(0,128,0), 'style'=>'I'), -); - -Column sums ------------ -(Also changed some preg_replace to str_replace to improve performance) -To use: just add {colsum} to any cells of the table footer -Add a number to specify a fixed number of decimal points e.g. will give you 123.40 -The width of the column will be calculated using the actual string {colsum} as a placeholder. -If you need the column to be wider, use underscores "_" to pad it e.g. {colsum2_____} - - -Spread tables -------------- -i.e. can split table (columns) across several pages width. -CSS
      Caption title here
      {colsum2}
      -Cannot use with: -$this->kwt - ignored -$this->table_rotate - ignored -$this->table_keep_together - ignored -$this->ColActive - cancels spread tables - -Messes up with: -$mpdf->forcePortraitHeaders = true; -$mpdf->forcePortraitMargins = true; -Problems with CJK, and RTL - -Will do no resizing of fonts at all. -Maximum width of column = page width i.e. will not split columns across pages - NB will keep colspan>1 on one page -If table row too high for page will die with error message. -Will override some specs for width if this creates conflicts -Recommended to specify absolute value of width on each column. - - - - -Bug fixes -========= -Dottab - if text after dottab is hyperlinked then dots are underlined - -page-break-before now respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed -Annotation() function called directly with colorarray(r,g,b) - -Added urldecode to _getImage to cope with ../name%20of%20image.jpg -Added urldecode AND htmlspecials_decode to href in link e.g. https://www.google.com/search?hl=en&q=mpdf&filename=name%20of%20file -[barcode.php] Allow   in C39 codes - will be changed to spaces - -
      inside a
      not calculating table width correctly - - leading to either upside down table or error width less than 1 character - -Depracated magic_quotes_runtime() in compress.php - -DIRECTW included twice in compress.php -FORMS mark up for compress.php corrected - -double backslashes not preserved inside
       or 
      -	$thereistextarea = preg_match_all('#(.*?)#si',$html,$temp2);
      -	$html = preg_replace('/[\n]/',' ',$html); //replace linefeed by spaces
      -	$html = preg_replace('/[\t]/',' ',$html); //replace tabs by spaces
      -
      -	// Converts < to < when not a tag
      -	$html = preg_replace('/<([^!\/a-zA-Z])/i','<\\1',$html);
      -	$html = preg_replace("/[ ]+/",' ',$html);
      -
      -	$html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li>\s+<\/li/i','/\\1l>\s+<\/(u|o)l/i','/li>\s+
    32. ]*)>[ ]+/i','<\\1l\\2>',$html); - $html = preg_replace('/[ ]+<(u|o)l/i','<\\1l',$html); - - $iterator = 0; - while($thereispre) //Recover
      content
      - { - $temp[2][$iterator] = preg_replace('/<([^a-zA-Z_:])/','<\\1',$temp[2][$iterator]); // mPDF 5.7.2 - $temp[2][$iterator] = preg_replace_callback("/^([^\n\t]*?)\t/m", array($this, 'tabs2spaces_callback'), $temp[2][$iterator]); // mPDF 5.7+ - $temp[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp[2][$iterator]); - - $temp[2][$iterator] = preg_replace('/\n/',"
      ",$temp[2][$iterator]); - $temp[2][$iterator] = str_replace('\\',"\\\\",$temp[2][$iterator]); - //$html = preg_replace('#(.*?)
    33. #si',''.$temp[2][$iterator].'',$html,1); - $html = preg_replace('#(.*?)#si',''.str_replace('$','\$',$temp[2][$iterator]).'',$html,1); // mPDF 5.7+ - $thereispre--; - $iterator++; - } - $iterator = 0; - while($thereistextarea) //Recover - { - $temp2[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp2[2][$iterator]); - $temp2[2][$iterator] = str_replace('\\',"\\\\",$temp2[2][$iterator]); // mPDF 5.3.88 - $html = preg_replace('#(.*?)#si',''.trim($temp2[2][$iterator]) .'',$html,1); - $thereistextarea--; - $iterator++; - } - //Restore original tag names - $html = str_replace("","",$html); - $html = str_replace("","",$html); - $html = str_replace("]*)><\/textarea>/si',' ',$html); - $html = preg_replace('/(]*>)\s*()(.*?<\/table>)/si','\\2 position="top"\\3\\1\\4\\2 position="bottom"\\3',$html); // *TABLES* - $html = preg_replace('/<(h[1-6])([^>]*)(>(?:(?!h[1-6]).)*?<\/\\1>\s*tabSpaces - (mb_strlen(stripslashes($matches[1])) % $this->tabSpaces))); -} -// mPDF 5.7+ -function date_callback($matches) { - return date($matches[1]); -} - -/*-- LISTS --*/ -function dec2other($num, $cp) { - $nstr = (string) $num; - $rnum = ''; - for ($i=0;$i_charDefined($this->CurrentFont['cw'],$cp+intval($nstr[$i]))) { // contains arabic-indic numbers - $rnum .= code2utf($cp+intval($nstr[$i])); - } - else { $rnum .= $nstr[$i]; } - } - return $rnum; -} - -function dec2alpha($valor,$toupper="true"){ -// returns a string from A-Z to AA-ZZ to AAA-ZZZ -// OBS: A = 65 ASCII TABLE VALUE - if (($valor < 1) || ($valor > 18278)) return "?"; //supports 'only' up to 18278 - $c1 = $c2 = $c3 = ''; - if ($valor > 702) // 3 letters (up to 18278) - { - $c1 = 65 + floor(($valor-703)/676); - $c2 = 65 + floor((($valor-703)%676)/26); - $c3 = 65 + floor((($valor-703)%676)%26); - } - elseif ($valor > 26) // 2 letters (up to 702) - { - $c1 = (64 + (int)(($valor-1) / 26)); - $c2 = (64 + (int)($valor % 26)); - if ($c2 == 64) $c2 += 26; - } - else // 1 letter (up to 26) - { - $c1 = (64 + $valor); - } - $alpha = chr($c1); - if ($c2 != '') $alpha .= chr($c2); - if ($c3 != '') $alpha .= chr($c3); - if (!$toupper) $alpha = strtolower($alpha); - return $alpha; -} - - -function dec2roman($valor,$toupper=true){ - //returns a string as a roman numeral - $r1=$r2=$r3=$r4=''; - if (($valor >= 5000) || ($valor < 1)) return "?"; //supports 'only' up to 4999 - $aux = (int)($valor/1000); - if ($aux!==0) - { - $valor %= 1000; - while($aux!==0) - { - $r1 .= "M"; - $aux--; - } - } - $aux = (int)($valor/100); - if ($aux!==0) - { - $valor %= 100; - switch($aux){ - case 3: $r2="C"; - case 2: $r2.="C"; - case 1: $r2.="C"; break; - case 9: $r2="CM"; break; - case 8: $r2="C"; - case 7: $r2.="C"; - case 6: $r2.="C"; - case 5: $r2="D".$r2; break; - case 4: $r2="CD"; break; - default: break; - } - } - $aux = (int)($valor/10); - if ($aux!==0) - { - $valor %= 10; - switch($aux){ - case 3: $r3="X"; - case 2: $r3.="X"; - case 1: $r3.="X"; break; - case 9: $r3="XC"; break; - case 8: $r3="X"; - case 7: $r3.="X"; - case 6: $r3.="X"; - case 5: $r3="L".$r3; break; - case 4: $r3="XL"; break; - default: break; - } - } - switch($valor){ - case 3: $r4="I"; - case 2: $r4.="I"; - case 1: $r4.="I"; break; - case 9: $r4="IX"; break; - case 8: $r4="I"; - case 7: $r4.="I"; - case 6: $r4.="I"; - case 5: $r4="V".$r4; break; - case 4: $r4="IV"; break; - default: break; - } - $roman = $r1.$r2.$r3.$r4; - if (!$toupper) $roman = strtolower($roman); - return $roman; -} -/*-- END LISTS --*/ - - -//=========================== -/*-- IMPORTS --*/ -function SetImportUse() { - $this->enableImports = true; - ini_set('auto_detect_line_endings',1); - require_once(_MPDF_PATH."mpdfi/pdf_context.php"); - require_once(_MPDF_PATH."mpdfi/pdf_parser.php"); - require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php"); -} - -// from mPDFI -function hex2str($hex) { - return pack("H*", str_replace(array("\r","\n"," "),"", $hex)); -} - -function str2hex($str) { - return current(unpack("H*",$str)); -} - - -function pdf_write_value(&$value) { - switch ($value[0]) { - case PDF_TYPE_NUMERIC : - case PDF_TYPE_TOKEN : - // A numeric value or a token. - // Simply output them - $this->_out($value[1]." ", false); - break; - - case PDF_TYPE_ARRAY : - // An array. Output the proper - // structure and move on. - $this->_out("[",false); - for ($i = 0; $i < count($value[1]); $i++) { - $this->pdf_write_value($value[1][$i]); - } - $this->_out("]"); - break; - - case PDF_TYPE_DICTIONARY : - // A dictionary. - $this->_out("<<",false); - reset ($value[1]); - while (list($k, $v) = each($value[1])) { - $this->_out($k . " ",false); - $this->pdf_write_value($v); - } - $this->_out(">>"); - break; - - case PDF_TYPE_OBJREF : - // An indirect object reference - // Fill the object stack if needed - $cpfn =& $this->current_parser->filename; - if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) { - $this->_newobj(false,true); - $this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value); - $this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value); - } - $objid = $this->_don_obj_stack[$cpfn][$value[1]][0]; - $this->_out("{$objid} 0 R"); //{$value[2]} - break; - - case PDF_TYPE_STRING : - if ($this->encrypted) { - $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]); - $value[1] = $this->_escape($value[1]); - } - // A string. - $this->_out('('.$value[1].')'); - break; - - case PDF_TYPE_STREAM : - // A stream. First, output the - // stream dictionary, then the - // stream data itself. - $this->pdf_write_value($value[1]); - if ($this->encrypted) { - $value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]); - } - $this->_out("stream"); - $this->_out($value[2][1]); - $this->_out("endstream"); - break; - - case PDF_TYPE_HEX : - if ($this->encrypted) { - $value[1] = $this->hex2str($value[1]); - $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]); - // remake hexstring of encrypted string - $value[1] = $this->str2hex($value[1]); - } - $this->_out("<".$value[1].">"); - break; - - case PDF_TYPE_NULL : - // The null object. - $this->_out("null"); - break; - } -} - -// ========== OVERWRITE SEARCH STRING IN A PDF FILE ================ -function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) { - $pdf = file_get_contents($file_in); - - if (!is_array($search)) { - $x = $search; - $search = array($x); - } - if (!is_array($replacement)) { - $x = $replacement; - $search = array($x); - } - - if (!$this->onlyCoreFonts && !$this->usingCoreFont) { - foreach($search AS $k=>$val) { - $search[$k] = $this->UTF8ToUTF16BE($search[$k] , false); - $search[$k] = $this->_escape($search[$k]); - $replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false); - $replacement[$k] = $this->_escape($replacement[$k]); - } - } - else { - foreach($replacement AS $k=>$val) { - $replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_enc,'utf-8'); - $replacement[$k] = $this->_escape($replacement[$k]); - } - } - - // Get xref into array - $xref = array(); - preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m); - $xref_objid = $m[1]; - preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x); - for($i=0; $icompress) { - preg_match("/".($obj+1)." 0 obj\n<<\s*\/Filter\s*\/FlateDecode\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m); - } - else { - preg_match("/".($obj+1)." 0 obj\n<<\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m); - } - $s = $m[2]; - if (!$s) { continue; } - $oldlen = $m[1]; - if ($this->encrypted) { - $s = $this->_RC4($this->_objectkey($obj+1), $s); - } - if ($this->compress) { - $s = gzuncompress($s); - } - foreach($search AS $k=>$val) { - $s = str_replace($search[$k],$replacement[$k],$s); - } - if ($this->compress) { - $s = gzcompress($s); - } - if ($this->encrypted) { - $s = $this->_RC4($this->_objectkey($obj+1), $s); - } - $newlen = strlen($s); - $changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen )); - if ($this->compress) { - $newstr = ($obj+1) . " 0 obj\n<>\nstream\n".$s."\nendstream\n"; - } - else { - $newstr = ($obj+1) . " 0 obj\n<>\nstream\n".$s."\nendstream\n"; - } - $pdf = str_replace($m[0],$newstr,$pdf); - } - - // Update xref in PDF - krsort($changes); - $newxref = "xref\n0 ".$xref_objid."\n"; - foreach($xref AS $v) { - foreach($changes AS $ck => $cv) { - if ($v[0] > $ck) { $v[0] += $cv; } - } - $newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n"; - } - $newxref .= "trailer"; - $pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf); - - // Update startxref in PDF - preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m); - $startxref = $m[1]; - $startxref += array_sum($changes); - $pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf); - - // OUTPUT - switch($dest) { - case 'I': - //Send to standard output - if(isset($_SERVER['SERVER_NAME'])) - { - //We send to a browser - Header('Content-Type: application/pdf'); - Header('Content-Length: '.strlen($pdf)); - Header('Content-disposition: inline; filename='.$file_out); - } - echo $pdf; - break; - case 'F': - //Save to local file - if (!$file_out) { $file_out = 'mpdf.pdf'; } - $f=fopen($file_out,'wb'); - if(!$f) die('Unable to create output file: '.$file_out); - fwrite($f,$pdf,strlen($pdf)); - fclose($f); - break; - case 'S': - //Return as a string - return $pdf; - case 'D': - default: - //Download file - if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) - Header('Content-Type: application/force-download'); - else - Header('Content-Type: application/octet-stream'); - Header('Content-Length: '.strlen($pdf)); - Header('Content-disposition: attachment; filename='.$file_out); - echo $pdf; - break; - } -} - - -function GetTemplateSize($tplidx, $_w=0, $_h=0) { - if (!$this->tpls[$tplidx]) - return false; - $w = $this->tpls[$tplidx]['box']['w']; - $h = $this->tpls[$tplidx]['box']['h']; - if ($_w == 0 and $_h == 0) { - $_w = $w; - $_h = $h; - } - if($_w==0) - $_w=$_h*$w/$h; - if($_h==0) - $_h=$_w*$h/$w; - return array("w" => $_w, "h" => $_h); -} - -// Thumbnails -function Thumbnail($file, $npr=3, $spacing=10) { //$npr = number per row - $w = (($this->pgwidth + $spacing)/$npr) - $spacing; - $oldlinewidth = $this->LineWidth; - $this->SetLineWidth(0.02); - $this->SetDColor($this->ConvertColor(0)); - $h = 0; - $maxh = 0; - $x = $_x = $this->lMargin; - $_y = $this->tMargin; - if ($this->y==0) { $y = $_y; } else { $y = $this->y; } - $pagecount = $this->SetSourceFile($file); - for ($n = 1; $n <= $pagecount; $n++) { - $tplidx = $this->ImportPage($n); - $size = $this->useTemplate($tplidx, $x, $y, $w); - $this->Rect($x, $y, $size['w'], $size['h']); - $h = max($h, $size['h']); - $maxh = max($h, $maxh); - if ($n % $npr == 0) { - if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) { - $this->AddPage(); - $x = $_x; - $y = $_y; - } - else { - $y += $h+$spacing ; - $x = $_x; - $h = 0; - } - } - else { - $x += $w+$spacing ; - } - } - $this->SetLineWidth($oldlinewidth); -} - -function SetSourceFile($filename) { - $this->current_filename = $filename; - $fn =& $this->current_filename; - if (!isset($this->parsers[$fn])) - // $this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this); - $this->parsers[$fn] = new fpdi_pdf_parser($fn,$this); - if (!$this->parsers[$fn]->success) { - $this->Error($this->parsers[$fn]->errormsg); // Delete this line to return false on fail - return false; - } - $this->current_parser =& $this->parsers[$fn]; - return $this->parsers[$fn]->getPageCount(); -} -function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') { - $fn =& $this->current_filename; - $parser =& $this->parsers[$fn]; - $parser->setPageno($pageno); - - $this->tpl++; - $this->tpls[$this->tpl] = array(); - $tpl =& $this->tpls[$this->tpl]; - $tpl['parser'] =& $parser; - $tpl['resources'] = $parser->getPageResources(); - $tpl['buffer'] = $parser->getContent(); - if (!in_array($boxName, $parser->availableBoxes)) - return $this->Error(sprintf("Unknown box: %s", $boxName)); - $pageboxes = $parser->getPageBoxes($pageno); - /** - * MediaBox - * CropBox: Default -> MediaBox - * BleedBox: Default -> CropBox - * TrimBox: Default -> CropBox - * ArtBox: Default -> CropBox - */ - if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox")) - $boxName = "/CropBox"; - if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox") - $boxName = "/MediaBox"; - if (!isset($pageboxes[$boxName])) - return false; - $box = $pageboxes[$boxName]; - - $tpl['box'] = $box; - // To build an array that can be used by useTemplate() - $this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box); - // An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects() - $tpl['x'] = 0; - $tpl['y'] = 0; - $tpl['w'] = $tpl['box']['w'] ; - $tpl['h'] = $tpl['box']['h'] ; - if ($crop_w) { $tpl['box']['w'] = $crop_w; } - if ($crop_h) { $tpl['box']['h'] = $crop_h; } - if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; } - if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y - $crop_h ; } - - $page =& $parser->pages[$parser->pageno]; - // fix for rotated pages - $rotation = $parser->getPageRotation($pageno); - - if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) { - $steps = $angle / 90; - - $_w = $tpl['w']; - $_h = $tpl['h']; - $tpl['w'] = $steps % 2 == 0 ? $_w : $_h; - $tpl['h'] = $steps % 2 == 0 ? $_h : $_w; - if ($steps % 2 != 0) { - $x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w']; - } else { - $x = $tpl['w']; - $y = $tpl['h']; - } - $cx=($x/2+$tpl['box']['x'])*_MPDFK; - $cy=($y/2+$tpl['box']['y'])*_MPDFK; - $angle*=-1; - $angle*=M_PI/180; - $c=cos($angle); - $s=sin($angle); - $tpl['box']['w'] = $tpl['w'] ; - $tpl['box']['h'] = $tpl['h'] ; - $tpl['buffer'] = sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm %s Q',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy, $tpl['buffer']); - } - return $this->tpl; -} -function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) { - if (!isset($this->tpls[$tplidx])) - $this->Error("Template does not exist!"); - if($this->state==0) { $this->AddPage(); } - $out = 'q 0 J 1 w 0 j 0 G'."\n"; // reset standard values - $x = $this->tpls[$tplidx]['x']; - $y = $this->tpls[$tplidx]['y']; - $w = $this->tpls[$tplidx]['w']; - $h = $this->tpls[$tplidx]['h']; - if ($_x == null) { $_x = $x; } - if ($_y == null) { $_y = $y; } - if ($_x === -1) { $_x = $this->x; } - if ($_y === -1) { $_y = $this->y; } - - $wh = $this->getTemplateSize($tplidx,$_w,$_h); - $_w = $wh['w']; - $_h = $wh['h']; - $out .= sprintf("q %.4F 0 0 %.4F %.2F %.2F cm", ($_w/$this->tpls[$tplidx]['box']['w']), ($_h/$this->tpls[$tplidx]['box']['h']), $_x*_MPDFK, ($this->h-($_y+$_h))*_MPDFK)."\n"; - $out .= $this->tplprefix.$tplidx." Do Q\n"; - - $s = array("w" => $_w, "h" => $_h); - $out .= "Q\n"; - $this->pages[$this->page] = $out . $this->pages[$this->page]; - return $s; -} -function SetPageTemplate($tplidx='') { - if (!isset($this->tpls[$tplidx])) { - $this->pageTemplate = ''; - return false; - } - $this->pageTemplate = $tplidx; -} -function SetDocTemplate($file='', $continue=0) { - $this->docTemplate = $file; - $this->docTemplateContinue = $continue; -} -/*-- END IMPORTS --*/ - - -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ -/* ---------------------------------------------- */ - -// JAVASCRIPT -function _set_object_javascript ($string) { - $this->_newobj(); - $this->_out('<<'); - $this->_out('/S /JavaScript '); - $this->_out('/JS '.$this->_textstring($string)); - $this->_out('>>'); - $this->_out('endobj'); -} - -function SetJS($script) { - $this->js = $script; -} - - - - -}//end of Class - - - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php deleted file mode 100644 index fc42d5742..000000000 --- a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php +++ /dev/null @@ -1,98 +0,0 @@ - ORD_u) { - $this->error('Illegal character in ASCII85Decode.'); - } - - $chn[$state++] = $ch - ORD_exclmark; - - if ($state == 5) { - $state = 0; - $r = 0; - for ($j = 0; $j < 5; ++$j) - $r = $r * 85 + $chn[$j]; - $out .= chr($r >> 24); - $out .= chr($r >> 16); - $out .= chr($r >> 8); - $out .= chr($r); - } - } - $r = 0; - - if ($state == 1) - $this->error('Illegal length in ASCII85Decode.'); - if ($state == 2) { - $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85; - $out .= chr($r >> 24); - } - else if ($state == 3) { - $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85; - $out .= chr($r >> 24); - $out .= chr($r >> 16); - } - else if ($state == 4) { - $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ; - $out .= chr($r >> 24); - $out .= chr($r >> 16); - $out .= chr($r >> 8); - } - - return $out; - } - - function encode($in) { - $this->error("ASCII85 encoding not implemented."); - } -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php deleted file mode 100644 index 5867603fc..000000000 --- a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php +++ /dev/null @@ -1,154 +0,0 @@ -error('LZW flavour not supported.'); - } - - $this->initsTable(); - - $this->data = $data; - $this->dataLength = strlen($data); - - // Initialize pointers - $this->bytePointer = 0; - $this->bitPointer = 0; - - $this->nextData = 0; - $this->nextBits = 0; - - $oldCode = 0; - - $string = ''; - $uncompData = ''; - - while (($code = $this->getNextCode()) != 257) { - if ($code == 256) { - $this->initsTable(); - $code = $this->getNextCode(); - - if ($code == 257) { - break; - } - - $uncompData .= $this->sTable[$code]; - $oldCode = $code; - - } else { - - if ($code < $this->tIdx) { - $string = $this->sTable[$code]; - $uncompData .= $string; - - $this->addStringToTable($this->sTable[$oldCode], $string[0]); - $oldCode = $code; - } else { - $string = $this->sTable[$oldCode]; - $string = $string.$string[0]; - $uncompData .= $string; - - $this->addStringToTable($string); - $oldCode = $code; - } - } - } - - return $uncompData; - } - - - /** - * Initialize the string table. - */ - function initsTable() { - $this->sTable = array(); - - for ($i = 0; $i < 256; $i++) - $this->sTable[$i] = chr($i); - - $this->tIdx = 258; - $this->bitsToGet = 9; - } - - /** - * Add a new string to the string table. - */ - function addStringToTable ($oldString, $newString='') { - $string = $oldString.$newString; - - // Add this new String to the table - $this->sTable[$this->tIdx++] = $string; - - if ($this->tIdx == 511) { - $this->bitsToGet = 10; - } else if ($this->tIdx == 1023) { - $this->bitsToGet = 11; - } else if ($this->tIdx == 2047) { - $this->bitsToGet = 12; - } - } - - // Returns the next 9, 10, 11 or 12 bits - function getNextCode() { - if ($this->bytePointer == $this->dataLength) { - return 257; - } - - $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); - $this->nextBits += 8; - - if ($this->nextBits < $this->bitsToGet) { - $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff); - $this->nextBits += 8; - } - - $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9]; - $this->nextBits -= $this->bitsToGet; - - return $code; - } - - function encode($in) { - $this->error("LZW encoding not implemented."); - } -} \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php deleted file mode 100644 index e0f023917..000000000 --- a/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php +++ /dev/null @@ -1,363 +0,0 @@ -fpdi =& $fpdi; - $this->filename = $filename; - - parent::pdf_parser($filename); - if ($this->success == false) { return false; } - - // resolve Pages-Dictonary - $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']); - if ($this->success == false) { return false; } - - // Read pages - $this->read_pages($this->c, $pages, $this->pages); - if ($this->success == false) { return false; } - - // count pages; - $this->page_count = count($this->pages); - } - - - /** - * Get pagecount from sourcefile - * - * @return int - */ - function getPageCount() { - return $this->page_count; - } - - - /** - * Set pageno - * - * @param int $pageno Pagenumber to use - */ - function setPageno($pageno) { - $pageno = ((int) $pageno) - 1; - - if ($pageno < 0 || $pageno >= $this->getPageCount()) { - $this->fpdi->error("Pagenumber is wrong!"); - } - - $this->pageno = $pageno; - } - - /** - * Get page-resources from current page - * - * @return array - */ - function getPageResources() { - return $this->_getPageResources($this->pages[$this->pageno]); - } - - /** - * Get page-resources from /Page - * - * @param array $obj Array of pdf-data - */ - function _getPageResources ($obj) { // $obj = /Page - $obj = $this->pdf_resolve_object($this->c, $obj); - - // If the current object has a resources - // dictionary associated with it, we use - // it. Otherwise, we move back to its - // parent object. - if (isset ($obj[1][1]['/Resources'])) { - $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } else { - if (!isset ($obj[1][1]['/Parent'])) { - return false; - } else { - $res = $this->_getPageResources($obj[1][1]['/Parent']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } - } - } - - - /** - * Get content of current page - * - * If more /Contents is an array, the streams are concated - * - * @return string - */ - function getContent() { - $buffer = ""; - - if (isset($this->pages[$this->pageno][1][1]['/Contents'])) { - $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']); - foreach($contents AS $tmp_content) { - $buffer .= $this->_rebuildContentStream($tmp_content).' '; - } - } - - return $buffer; - } - - - /** - * Resolve all content-objects - * - * @param array $content_ref - * @return array - */ - function _getPageContent($content_ref) { - $contents = array(); - - if ($content_ref[0] == PDF_TYPE_OBJREF) { - $content = $this->pdf_resolve_object($this->c, $content_ref); - if ($content[1][0] == PDF_TYPE_ARRAY) { - $contents = $this->_getPageContent($content[1]); - } else { - $contents[] = $content; - } - } else if ($content_ref[0] == PDF_TYPE_ARRAY) { - foreach ($content_ref[1] AS $tmp_content_ref) { - $contents = array_merge($contents,$this->_getPageContent($tmp_content_ref)); - } - } - - return $contents; - } - - - /** - * Rebuild content-streams - * - * @param array $obj - * @return string - */ - function _rebuildContentStream($obj) { - $filters = array(); - - if (isset($obj[1][1]['/Filter'])) { - $_filter = $obj[1][1]['/Filter']; - - if ($_filter[0] == PDF_TYPE_TOKEN) { - $filters[] = $_filter; - } else if ($_filter[0] == PDF_TYPE_ARRAY) { - $filters = $_filter[1]; - } - } - - $stream = $obj[2][1]; - - foreach ($filters AS $_filter) { - switch ($_filter[1]) { - case "/FlateDecode": - if (function_exists('gzuncompress')) { - $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : ''; - } else { - $this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1])); - } - if ($stream === false) { - $this->fpdi->error("Error while decompressing stream."); - } - break; - // mPDF 4.2.003 - case '/LZWDecode': - include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php'); - // mPDF 5.0 Removed pass by reference =& - $decoder = new FilterLZW(); - $stream = $decoder->decode($stream); - break; - case '/ASCII85Decode': - include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php'); - // mPDF 5.0 Removed pass by reference =& - $decoder = new FilterASCII85(); - $stream = $decoder->decode($stream); - break; - case null: - $stream = $stream; - break; - default: - $this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1])); - } - } - - return $stream; - } - - - /** - * Get a Box from a page - * Arrayformat is same as used by fpdf_tpl - * - * @param array $page a /Page - * @param string $box_index Type of Box @see $availableBoxes - * @return array - */ - function getPageBox($page, $box_index) { - $page = $this->pdf_resolve_object($this->c,$page); - $box = null; - if (isset($page[1][1][$box_index])) - $box =& $page[1][1][$box_index]; - - if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) { - $tmp_box = $this->pdf_resolve_object($this->c,$box); - $box = $tmp_box[1]; - } - - if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) { - $b =& $box[1]; - return array("x" => $b[0][1]/_MPDFK, - "y" => $b[1][1]/_MPDFK, - "w" => abs($b[0][1]-$b[2][1])/_MPDFK, - "h" => abs($b[1][1]-$b[3][1])/_MPDFK); // mPDF 5.3.90 - } else if (!isset ($page[1][1]['/Parent'])) { - return false; - } else { - return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index); - } - } - - function getPageBoxes($pageno) { - return $this->_getPageBoxes($this->pages[$pageno-1]); - } - - /** - * Get all Boxes from /Page - * - * @param array a /Page - * @return array - */ - function _getPageBoxes($page) { - $boxes = array(); - - foreach($this->availableBoxes AS $box) { - if ($_box = $this->getPageBox($page,$box)) { - $boxes[$box] = $_box; - } - } - - return $boxes; - } - - function getPageRotation($pageno) { - return $this->_getPageRotation($this->pages[$pageno-1]); - } - - function _getPageRotation ($obj) { // $obj = /Page - $obj = $this->pdf_resolve_object($this->c, $obj); - if (isset ($obj[1][1]['/Rotate'])) { - $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } else { - if (!isset ($obj[1][1]['/Parent'])) { - return false; - } else { - $res = $this->_getPageRotation($obj[1][1]['/Parent']); - if ($res[0] == PDF_TYPE_OBJECT) - return $res[1]; - return $res; - } - } - } - - /** - * Read all /Page(es) - * - * @param object pdf_context - * @param array /Pages - * @param array the result-array - */ - function read_pages (&$c, &$pages, &$result) { - // Get the kids dictionary - $kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']); - - if (!is_array($kids)) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Cannot find /Kids in current /Page-Dictionary"); - return false; - } - foreach ($kids[1] as $v) { - $pg = $this->pdf_resolve_object ($c, $v); - if ($pg[1][1]['/Type'][1] === '/Pages') { - // If one of the kids is an embedded - // /Pages array, resolve it as well. - $this->read_pages ($c, $pg, $result); - } else { - $result[] = $pg; - } - } - } - - - - -} - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php deleted file mode 100644 index 6cf4bdcc2..000000000 --- a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php +++ /dev/null @@ -1,78 +0,0 @@ -file = $f; - $this->reset(); - } - - // Optionally move the file - // pointer to a new location - // and reset the buffered data - - function reset($pos = null, $l = 100) { - if (!is_null ($pos)) { - fseek ($this->file, $pos); - } - - $this->buffer = $l > 0 ? fread($this->file, $l) : ''; - $this->offset = 0; - $this->length = strlen($this->buffer); - $this->stack = array(); - } - - // Make sure that there is at least one - // character beyond the current offset in - // the buffer to prevent the tokenizer - // from attempting to access data that does - // not exist - - function ensure_content() { - if ($this->offset >= $this->length - 1) { - return $this->increase_length(); - } else { - return true; - } - } - - // Forcefully read more data into the buffer - - function increase_length($l=100) { - if (feof($this->file)) { - return false; - } else { - $this->buffer .= fread($this->file, $l); - $this->length = strlen($this->buffer); - return true; - } - } - -} -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php deleted file mode 100644 index c7d69e2c5..000000000 --- a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php +++ /dev/null @@ -1,690 +0,0 @@ -filename = $filename; - // mPDF 4.0 - $this->success = true; - - $this->f = @fopen($this->filename, "rb"); - - if (!$this->f) { - $this->success = false; - $this->errormsg = sprintf("Cannot open %s !", $filename); - return false; - } - // mPDF 5.0 Removed pass by reference =& - $this->c = new pdf_context($this->f); - // Read xref-Data - $offset = $this->pdf_find_xref(); - if ($offset===false) { - $this->success = false; - $this->errormsg = sprintf("Cannot open %s !", $filename); - return false; - } - $this->pdf_read_xref($this->xref, $offset); - if ($this->success == false) { return false; } - - // Check for Encryption - $this->getEncryption(); - if ($this->success == false) { return false; } - - // Read root - $this->pdf_read_root(); - if ($this->success == false) { return false; } - } - - /** - * Close the opened file - */ - function closeFile() { - if (isset($this->f)) { - fclose($this->f); - unset($this->f); - } - } - - /** - * Print Error and die - * - * @param string $msg Error-Message - */ - function error($msg) { - die("PDF-Parser Error: ".$msg); - } - - /** - * Check Trailer for Encryption - */ - function getEncryption() { - if (isset($this->xref['trailer'][1]['/Encrypt'])) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("File is encrypted!"); - return false; - } - } - - /** - * Find/Return /Root - * - * @return array - */ - function pdf_find_root() { - if ($this->xref['trailer'][1]['/Root'][0] != PDF_TYPE_OBJREF) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Wrong Type of Root-Element! Must be an indirect reference"); - return false; - } - return $this->xref['trailer'][1]['/Root']; - } - - /** - * Read the /Root - */ - function pdf_read_root() { - // read root - $root = $this->pdf_find_root(); - if ($root ===false) { - $this->success = false; - return false; - } - $this->root = $this->pdf_resolve_object($this->c, $root); - } - - /** - * Find the xref-Table - */ - function pdf_find_xref() { - fseek ($this->f, -min(filesize($this->filename),1500), SEEK_END); - $data = fread($this->f, 1500); - - $pos = strlen($data) - strpos(strrev($data), strrev('startxref')); - $data = substr($data, $pos); - - if (!preg_match('/\s*(\d+).*$/s', $data, $matches)) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unable to find pointer to xref table"); - return false; - } - - return (int) $matches[1]; - } - - /** - * Read xref-table - * - * @param array $result Array of xref-table - * @param integer $offset of xref-table - * @param integer $start start-position in xref-table - * @param integer $end end-position in xref-table - */ - function pdf_read_xref(&$result, $offset, $start = null, $end = null) { - if (is_null ($start) || is_null ($end)) { - fseek($this->f, $o_pos = $offset); - $data = trim(fgets($this->f,1024)); - - if (strlen($data) == 0) - $data = trim(fgets($this->f,1024)); - - if ($data !== 'xref') { - fseek($this->f, $o_pos); - $data = trim(_fgets($this->f, true)); - if ($data !== 'xref') { - if (preg_match('/(.*xref)(.*)/m', $data, $m)) { // xref 0 128 - in one line - fseek($this->f, $o_pos+strlen($m[1])); - } elseif (preg_match('/(x|r|e|f)+/', $data, $m)) { // correct invalid xref-pointer - $tmpOffset = $offset-4+strlen($m[0]); - $this->pdf_read_xref($result, $tmpOffset, $start, $end); - return; - } else { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'"); - return; - } - } - } - - $o_pos = ftell($this->f); - $data = explode(' ', trim(fgets($this->f,1024))); - if (count($data) != 2) { - fseek($this->f, $o_pos); - $data = explode(' ', trim(_fgets($this->f, true))); - - if (count($data) != 2) { - if (count($data) > 2) { // no lineending - $n_pos = $o_pos+strlen($data[0])+strlen($data[1])+2; - fseek($this->f, $n_pos); - } else { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unexpected header in xref table"); - return; - } - } - } - $start = $data[0]; - $end = $start + $data[1]; - } - - if (!isset($result['xref_location'])) { - $result['xref_location'] = $offset; - } - - if (!isset($result['max_object']) || $end > $result['max_object']) { - $result['max_object'] = $end; - } - - for (; $start < $end; $start++) { - $data = ltrim(fread($this->f, 20)); // Spezifications says: 20 bytes including newlines - $offset = substr($data, 0, 10); - $generation = substr($data, 11, 5); - - if (!isset ($result['xref'][$start][(int) $generation])) { - $result['xref'][$start][(int) $generation] = (int) $offset; - } - } - - $o_pos = ftell($this->f); - $data = fgets($this->f,1024); - if (strlen(trim($data)) == 0) - $data = fgets($this->f, 1024); - - if (preg_match("/trailer/",$data)) { - if (preg_match("/(.*trailer[ \n\r]*)/",$data,$m)) { - fseek($this->f, $o_pos+strlen($m[1])); - } - - // mPDF 5.0 Removed pass by reference =& - $c = new pdf_context($this->f); - $trailer = $this->pdf_read_value($c); - - if (isset($trailer[1]['/Prev'])) { - $this->pdf_read_xref($result, $trailer[1]['/Prev'][1]); - $result['trailer'][1] = array_merge($result['trailer'][1], $trailer[1]); - } else { - $result['trailer'] = $trailer; - } - } else { - $data = explode(' ', trim($data)); - - if (count($data) != 2) { - fseek($this->f, $o_pos); - $data = explode(' ', trim (_fgets ($this->f, true))); - - if (count($data) != 2) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unexpected data in xref table"); - return; - } - } - - $this->pdf_read_xref($result, null, (int) $data[0], (int) $data[0] + (int) $data[1]); - } - } - - - /** - * Reads an Value - * - * @param object $c pdf_context - * @param string $token a Token - * @return mixed - */ - function pdf_read_value(&$c, $token = null) { - if (is_null($token)) { - $token = $this->pdf_read_token($c); - } - - if ($token === false) { - return false; - } - - switch ($token) { - case '<': - // This is a hex string. - // Read the value, then the terminator - - $pos = $c->offset; - - while(1) { - - $match = strpos ($c->buffer, '>', $pos); - - // If you can't find it, try - // reading more data from the stream - - if ($match === false) { - if (!$c->increase_length()) { - return false; - } else { - continue; - } - } - - $result = substr ($c->buffer, $c->offset, $match - $c->offset); - $c->offset = $match+1; - - return array (PDF_TYPE_HEX, $result); - } - - break; - case '<<': - // This is a dictionary. - - $result = array(); - - // Recurse into this function until we reach - // the end of the dictionary. - while (($key = $this->pdf_read_token($c)) !== '>>') { - if ($key === false) { - return false; - } - - if (($value = $this->pdf_read_value($c)) === false) { - return false; - } - $result[$key] = $value; - } - - return array (PDF_TYPE_DICTIONARY, $result); - - case '[': - // This is an array. - - $result = array(); - - // Recurse into this function until we reach - // the end of the array. - while (($token = $this->pdf_read_token($c)) !== ']') { - if ($token === false) { - return false; - } - - if (($value = $this->pdf_read_value($c, $token)) === false) { - return false; - } - - $result[] = $value; - } - - return array (PDF_TYPE_ARRAY, $result); - - case '(' : - // This is a string - - $pos = $c->offset; - - while(1) { - - // Start by finding the next closed - // parenthesis - - $match = strpos ($c->buffer, ')', $pos); - - // If you can't find it, try - // reading more data from the stream - - if ($match === false) { - if (!$c->increase_length()) { - return false; - } else { - continue; - } - } - - // Make sure that there is no backslash - // before the parenthesis. If there is, - // move on. Otherwise, return the string. - $esc = preg_match('/([\\\\]+)$/', $tmpresult = substr($c->buffer, $c->offset, $match - $c->offset), $m); - - if ($esc === 0 || strlen($m[1]) % 2 == 0) { - $result = $tmpresult; - $c->offset = $match + 1; - return array (PDF_TYPE_STRING, $result); - } else { - $pos = $match + 1; - - if ($pos > $c->offset + $c->length) { - $c->increase_length(); - } - } - } - - case "stream": - $o_pos = ftell($c->file)-strlen($c->buffer); - $o_offset = $c->offset; - - $c->reset($startpos = $o_pos + $o_offset); - - $e = 0; // ensure line breaks in front of the stream - if ($c->buffer[0] == chr(10) || $c->buffer[0] == chr(13)) - $e++; - if ($c->buffer[1] == chr(10) && $c->buffer[0] != chr(10)) - $e++; - - if ($this->actual_obj[1][1]['/Length'][0] == PDF_TYPE_OBJREF) { - // mPDF 5.0 Removed pass by reference =& - $tmp_c = new pdf_context($this->f); - $tmp_length = $this->pdf_resolve_object($tmp_c,$this->actual_obj[1][1]['/Length']); - $length = $tmp_length[1][1]; - } else { - $length = $this->actual_obj[1][1]['/Length'][1]; - } - - if ($length > 0) { - $c->reset($startpos+$e,$length); - $v = $c->buffer; - } else { - $v = ''; - } - $c->reset($startpos+$e+$length+9); // 9 = strlen("endstream") - - return array(PDF_TYPE_STREAM, $v); - - default : - if (is_numeric ($token)) { - // A numeric token. Make sure that - // it is not part of something else. - if (($tok2 = $this->pdf_read_token ($c)) !== false) { - if (is_numeric ($tok2)) { - - // Two numeric tokens in a row. - // In this case, we're probably in - // front of either an object reference - // or an object specification. - // Determine the case and return the data - if (($tok3 = $this->pdf_read_token ($c)) !== false) { - switch ($tok3) { - case 'obj' : - return array (PDF_TYPE_OBJDEC, (int) $token, (int) $tok2); - case 'R' : - return array (PDF_TYPE_OBJREF, (int) $token, (int) $tok2); - } - // If we get to this point, that numeric value up - // there was just a numeric value. Push the extra - // tokens back into the stack and return the value. - array_push ($c->stack, $tok3); - } - } - - array_push ($c->stack, $tok2); - } - - return array (PDF_TYPE_NUMERIC, $token); - } else { - - // Just a token. Return it. - return array (PDF_TYPE_TOKEN, $token); - } - - } - } - - /** - * Resolve an object - * - * @param object $c pdf_context - * @param array $obj_spec The object-data - * @param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para - */ - function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) { - // Exit if we get invalid data - if (!is_array($obj_spec)) { - return false; - } - - if ($obj_spec[0] == PDF_TYPE_OBJREF) { - - // This is a reference, resolve it - if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) { - - // Save current file position - // This is needed if you want to resolve - // references while you're reading another object - // (e.g.: if you need to determine the length - // of a stream) - - $old_pos = ftell($c->file); - - // Reposition the file pointer and - // load the object header. - - $c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]); - - $header = $this->pdf_read_value($c,null,true); - - if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) { - // mPDF 4.0 - $this->success = false; - $this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location"); - return false; - } - - // If we're being asked to store all the information - // about the object, we add the object ID and generation - // number for later use - $this->actual_obj =& $result; - if ($encapsulate) { - $result = array ( - PDF_TYPE_OBJECT, - 'obj' => $obj_spec[1], - 'gen' => $obj_spec[2] - ); - } else { - $result = array(); - } - - // Now simply read the object data until - // we encounter an end-of-object marker - while(1) { - $value = $this->pdf_read_value($c); - if ($value === false || count($result) > 4) { - // in this case the parser coudn't find an endobj so we break here - break; - } - - if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') { - break; - } - - $result[] = $value; - } - - $c->reset($old_pos); - - if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) { - $result[0] = PDF_TYPE_STREAM; - } - - return $result; - } - } else { - return $obj_spec; - } - } - - - - /** - * Reads a token from the file - * - * @param object $c pdf_context - * @return mixed - */ - function pdf_read_token(&$c) - { - // If there is a token available - // on the stack, pop it out and - // return it. - - if (count($c->stack)) { - return array_pop($c->stack); - } - - // Strip away any whitespace - - do { - if (!$c->ensure_content()) { - return false; - } - $c->offset += _strspn($c->buffer, " \n\r\t", $c->offset); - } while ($c->offset >= $c->length - 1); - - // Get the first character in the stream - - $char = $c->buffer[$c->offset++]; - - switch ($char) { - - case '[' : - case ']' : - case '(' : - case ')' : - - // This is either an array or literal string - // delimiter, Return it - - return $char; - - case '<' : - case '>' : - - // This could either be a hex string or - // dictionary delimiter. Determine the - // appropriate case and return the token - - if ($c->buffer[$c->offset] == $char) { - if (!$c->ensure_content()) { - return false; - } - $c->offset++; - return $char . $char; - } else { - return $char; - } - - default : - - // This is "another" type of token (probably - // a dictionary entry or a numeric value) - // Find the end and return it. - - if (!$c->ensure_content()) { - return false; - } - - while(1) { - - // Determine the length of the token - - $pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset); - if ($c->offset + $pos <= $c->length - 1) { - break; - } else { - // If the script reaches this point, - // the token may span beyond the end - // of the current buffer. Therefore, - // we increase the size of the buffer - // and try again--just to be safe. - - $c->increase_length(); - } - } - - $result = substr($c->buffer, $c->offset - 1, $pos + 1); - - $c->offset += $pos; - return $result; - } - } - - -} - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt b/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt deleted file mode 100644 index 7ba83e4a6..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Alternative sources of Hyphenation programs or TEX files: - -OpenOffice: http://wiki.services.openoffice.org/wiki/Dictionaries - -Hyphenator4PHP- alternative PHP hyphenator scripts: http://apps.sourceforge.net/trac/hyphenator4php/ \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/de.php b/inc/3rdparty/libraries/mpdf/patterns/de.php deleted file mode 100644 index 21643404e..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/de.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt b/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt deleted file mode 100644 index e9a1bceac..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt +++ /dev/null @@ -1 +0,0 @@ -dis/es/tab/lish/men/tar/i/an/ism diff --git a/inc/3rdparty/libraries/mpdf/patterns/en.php b/inc/3rdparty/libraries/mpdf/patterns/en.php deleted file mode 100644 index a02b63fd0..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/en.php +++ /dev/null @@ -1,10 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/es.php b/inc/3rdparty/libraries/mpdf/patterns/es.php deleted file mode 100644 index da8f75644..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/es.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/fi.php b/inc/3rdparty/libraries/mpdf/patterns/fi.php deleted file mode 100644 index 5be3124bb..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/fi.php +++ /dev/null @@ -1,9 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/fr.php b/inc/3rdparty/libraries/mpdf/patterns/fr.php deleted file mode 100644 index 335f85bcd..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/fr.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/it.php b/inc/3rdparty/libraries/mpdf/patterns/it.php deleted file mode 100644 index bdda023cf..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/it.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/nl.php b/inc/3rdparty/libraries/mpdf/patterns/nl.php deleted file mode 100644 index 06a342ded..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/nl.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/pl.php b/inc/3rdparty/libraries/mpdf/patterns/pl.php deleted file mode 100644 index f53110587..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/pl.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/inc/3rdparty/libraries/mpdf/patterns/ru.php b/inc/3rdparty/libraries/mpdf/patterns/ru.php deleted file mode 100644 index 6202773d4..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/ru.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/patterns/sv.php b/inc/3rdparty/libraries/mpdf/patterns/sv.php deleted file mode 100644 index b01ce72d9..000000000 --- a/inc/3rdparty/libraries/mpdf/patterns/sv.php +++ /dev/null @@ -1,12 +0,0 @@ - \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/progbar.css b/inc/3rdparty/libraries/mpdf/progbar.css deleted file mode 100644 index 78afc319c..000000000 --- a/inc/3rdparty/libraries/mpdf/progbar.css +++ /dev/null @@ -1,66 +0,0 @@ -body { - margin : 0 auto; - width:100%; - font-family: "Verdana"; - color: #40454b; - font-size: 12px; - text-align:center; -} -.main { - width:540px; - margin: 0 auto; - text-align:left; -} -.heading { - font-size:14px; - font-weight:bold; - color:#CC0000; - padding:5px; - margin-left:10px; - border-bottom:solid; - border-bottom-width:1px; - border-bottom-color:#333333; - /* Use this to suppress the horizontal line under the heading */ - /* border-bottom: 0px solid #000000; */ -} -table { - font-family: "Verdana"; - color: #40454b; - font-size: 12px; -} -.demo { - margin : 0 auto; - width:100%; - margin:20px; - /* Use this to suppress all the bars and text */ - /* display: none; */ -} -td { - vertical-align: top; - padding: 0 0.5em 0 0; -} -.code { - font-family: "Courier New", Courier, monospace; - font-size: 10px; -} -.code2 { - font-family: "Courier New", Courier, monospace; - font-size: 11px; font-weight: bold; color: red; -} -.barheading { - color:#006600; - font-weight:bold; -} -.progressBar { - border: 1px solid #000000; - background-color: #EEEEEE; - width: 200px; - font-size: 6px; -} -.innerBar { - background-color:#00CC00; - width: 0%; -} -#box3 { - font-weight: bold; -} diff --git a/inc/3rdparty/libraries/mpdf/tmp/dummy.txt b/inc/3rdparty/libraries/mpdf/tmp/dummy.txt deleted file mode 100644 index 41234966d..000000000 --- a/inc/3rdparty/libraries/mpdf/tmp/dummy.txt +++ /dev/null @@ -1,2 +0,0 @@ -This is just a placeholder file so that the folder is created on install. -It can be deleted once installed. \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt b/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt deleted file mode 100644 index 41234966d..000000000 --- a/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt +++ /dev/null @@ -1,2 +0,0 @@ -This is just a placeholder file so that the folder is created on install. -It can be deleted once installed. \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt b/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt deleted file mode 100644 index 1dc7335b9..000000000 --- a/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt +++ /dev/null @@ -1,21488 +0,0 @@ -0000;;Cc;0;BN;;;;;N;NULL;;;; -0001;;Cc;0;BN;;;;;N;START OF HEADING;;;; -0002;;Cc;0;BN;;;;;N;START OF TEXT;;;; -0003;;Cc;0;BN;;;;;N;END OF TEXT;;;; -0004;;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; -0005;;Cc;0;BN;;;;;N;ENQUIRY;;;; -0006;;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; -0007;;Cc;0;BN;;;;;N;BELL;;;; -0008;;Cc;0;BN;;;;;N;BACKSPACE;;;; -0009;;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; -000A;;Cc;0;B;;;;;N;LINE FEED (LF);;;; -000B;;Cc;0;S;;;;;N;LINE TABULATION;;;; -000C;;Cc;0;WS;;;;;N;FORM FEED (FF);;;; -000D;;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; -000E;;Cc;0;BN;;;;;N;SHIFT OUT;;;; -000F;;Cc;0;BN;;;;;N;SHIFT IN;;;; -0010;;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; -0011;;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; -0012;;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; -0013;;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; -0014;;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; -0015;;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; -0016;;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; -0017;;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; -0018;;Cc;0;BN;;;;;N;CANCEL;;;; -0019;;Cc;0;BN;;;;;N;END OF MEDIUM;;;; -001A;;Cc;0;BN;;;;;N;SUBSTITUTE;;;; -001B;;Cc;0;BN;;;;;N;ESCAPE;;;; -001C;;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; -001D;;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; -001E;;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; -001F;;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; -0020;SPACE;Zs;0;WS;;;;;N;;;;; -0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; -0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; -0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; -0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; -0026;AMPERSAND;Po;0;ON;;;;;N;;;;; -0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; -0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; -0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; -002A;ASTERISK;Po;0;ON;;;;;N;;;;; -002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; -002C;COMMA;Po;0;CS;;;;;N;;;;; -002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; -002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; -002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; -0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; -0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; -0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; -0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; -0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; -0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; -0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; -0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; -0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; -0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; -003A;COLON;Po;0;CS;;;;;N;;;;; -003B;SEMICOLON;Po;0;ON;;;;;N;;;;; -003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; -003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; -0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; -0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; -0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; -0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; -0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; -0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; -0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; -0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; -0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; -0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; -004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; -004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; -004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; -004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; -004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; -004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; -0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; -0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; -0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; -0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; -0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; -0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; -0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; -0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; -0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; -0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; -005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; -005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; -005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; -005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; -005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; -005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; -0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; -0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 -0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 -0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 -0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 -0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 -0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 -0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 -0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 -0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 -006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A -006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B -006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C -006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D -006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E -006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F -0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 -0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 -0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 -0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 -0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 -0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 -0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 -0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 -0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 -0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 -007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A -007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; -007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; -007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; -007E;TILDE;Sm;0;ON;;;;;N;;;;; -007F;;Cc;0;BN;;;;;N;DELETE;;;; -0080;;Cc;0;BN;;;;;N;;;;; -0081;;Cc;0;BN;;;;;N;;;;; -0082;;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; -0083;;Cc;0;BN;;;;;N;NO BREAK HERE;;;; -0084;;Cc;0;BN;;;;;N;;;;; -0085;;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; -0086;;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; -0087;;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; -0088;;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; -0089;;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; -008A;;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; -008B;;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; -008C;;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; -008D;;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; -008E;;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; -008F;;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; -0090;;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; -0091;;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; -0092;;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; -0093;;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; -0094;;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; -0095;;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; -0096;;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; -0097;;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; -0098;;Cc;0;BN;;;;;N;START OF STRING;;;; -0099;;Cc;0;BN;;;;;N;;;;; -009A;;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; -009B;;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; -009C;;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; -009D;;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; -009E;;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; -009F;;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; -00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; -00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; -00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; -00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; -00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; -00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; -00A8;DIAERESIS;Sk;0;ON; 0020 0308;;;;N;SPACING DIAERESIS;;;; -00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; -00AA;FEMININE ORDINAL INDICATOR;Ll;0;L; 0061;;;;N;;;;; -00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;;;; -00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; -00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; -00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; -00AF;MACRON;Sk;0;ON; 0020 0304;;;;N;SPACING MACRON;;;; -00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; -00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; -00B2;SUPERSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; -00B3;SUPERSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; -00B4;ACUTE ACCENT;Sk;0;ON; 0020 0301;;;;N;SPACING ACUTE;;;; -00B5;MICRO SIGN;Ll;0;L; 03BC;;;;N;;;039C;;039C -00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; -00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; -00B8;CEDILLA;Sk;0;ON; 0020 0327;;;;N;SPACING CEDILLA;;;; -00B9;SUPERSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; -00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L; 006F;;;;N;;;;; -00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;; -00BC;VULGAR FRACTION ONE QUARTER;No;0;ON; 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; -00BD;VULGAR FRACTION ONE HALF;No;0;ON; 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; -00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON; 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; -00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; -00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; -00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; -00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; -00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; -00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; -00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; -00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;;;00E6; -00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; -00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; -00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; -00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; -00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; -00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; -00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; -00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; -00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; -00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;00F0; -00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; -00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; -00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; -00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; -00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; -00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; -00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; -00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; -00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; -00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; -00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; -00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; -00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; -00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;;;00FE; -00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;;;; -00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 -00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 -00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 -00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 -00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 -00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 -00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;;00C6;;00C6 -00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 -00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 -00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 -00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA -00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB -00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC -00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD -00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE -00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF -00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;;00D0;;00D0 -00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 -00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 -00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 -00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 -00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 -00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 -00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 -00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 -00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA -00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB -00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC -00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD -00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;;00DE;;00DE -00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 -0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; -0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 -0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; -0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 -0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; -0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 -0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; -0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 -0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; -0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 -010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; -010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A -010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; -010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C -010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; -010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E -0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; -0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 -0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; -0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 -0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; -0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 -0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; -0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 -0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; -0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 -011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; -011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A -011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; -011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C -011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; -011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E -0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; -0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 -0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; -0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 -0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; -0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 -0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; -0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 -0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; -0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 -012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; -012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A -012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; -012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C -012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; -012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E -0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; -0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 -0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L; 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; -0133;LATIN SMALL LIGATURE IJ;Ll;0;L; 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 -0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; -0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 -0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; -0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 -0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;;;; -0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; -013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 -013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; -013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B -013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; -013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D -013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L; 004C 00B7;;;;N;;;;0140; -0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L; 006C 00B7;;;;N;;;013F;;013F -0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; -0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 -0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; -0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 -0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; -0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 -0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; -0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 -0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L; 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; -014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;014B; -014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;;014A;;014A -014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; -014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C -014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; -014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E -0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; -0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 -0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; -0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 -0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; -0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 -0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; -0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 -0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; -0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 -015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; -015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A -015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; -015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C -015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;;;015F; -015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;;015E;;015E -0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; -0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 -0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;;;0163; -0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;;0162;;0162 -0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; -0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 -0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; -0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 -0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; -0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 -016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; -016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A -016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; -016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C -016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; -016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E -0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; -0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 -0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; -0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 -0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; -0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 -0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; -0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 -0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; -0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; -017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 -017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; -017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B -017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; -017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D -017F;LATIN SMALL LETTER LONG S;Ll;0;L; 0073;;;;N;;;0053;;0053 -0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243 -0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; -0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; -0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 -0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; -0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 -0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; -0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; -0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 -0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;;;0256; -018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; -018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; -018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B -018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; -018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; -018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; -0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; -0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; -0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 -0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; -0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; -0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;;01F6;;01F6 -0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; -0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; -0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; -0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 -019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D -019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; -019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; -019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; -019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 -019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;;;0275; -01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; -01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 -01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;;;01A3; -01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;01A2;;01A2 -01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; -01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 -01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;;;0280; -01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; -01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 -01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; -01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; -01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; -01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; -01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC -01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; -01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; -01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF -01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; -01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; -01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; -01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 -01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; -01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 -01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; -01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; -01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 -01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; -01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; -01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; -01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC -01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; -01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 -01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; -01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; -01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; -01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; -01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L; 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 -01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L; 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 -01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L; 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 -01C7;LATIN CAPITAL LETTER LJ;Lu;0;L; 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 -01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L; 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 -01C9;LATIN SMALL LETTER LJ;Ll;0;L; 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 -01CA;LATIN CAPITAL LETTER NJ;Lu;0;L; 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB -01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L; 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB -01CC;LATIN SMALL LETTER NJ;Ll;0;L; 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB -01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; -01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD -01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; -01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF -01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; -01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 -01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; -01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 -01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; -01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 -01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; -01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 -01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; -01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 -01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; -01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB -01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E -01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; -01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE -01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; -01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 -01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;;;01E3; -01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;01E2;;01E2 -01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; -01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 -01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; -01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 -01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; -01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 -01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; -01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA -01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; -01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC -01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; -01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE -01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; -01F1;LATIN CAPITAL LETTER DZ;Lu;0;L; 0044 005A;;;;N;;;;01F3;01F2 -01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L; 0044 007A;;;;N;;;01F1;01F3;01F2 -01F3;LATIN SMALL LETTER DZ;Ll;0;L; 0064 007A;;;;N;;;01F1;;01F2 -01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; -01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 -01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; -01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; -01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; -01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 -01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; -01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA -01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;;;01FD; -01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;01FC;;01FC -01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; -01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE -0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; -0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 -0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; -0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 -0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; -0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 -0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; -0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 -0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; -0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 -020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; -020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A -020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; -020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C -020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; -020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E -0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; -0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 -0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; -0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 -0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; -0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 -0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; -0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 -0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;;;0219; -0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;;0218;;0218 -021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;;;021B; -021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;;021A;;021A -021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; -021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C -021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; -021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E -0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; -0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; -0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; -0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 -0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; -0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 -0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; -0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 -0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; -0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 -022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; -022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A -022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; -022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C -022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; -022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E -0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; -0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 -0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; -0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 -0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; -0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; -0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; -0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; -0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; -0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; -023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65; -023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; -023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B -023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; -023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66; -023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7E;;2C7E -0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7F;;2C7F -0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242; -0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 -0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180; -0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289; -0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C; -0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247; -0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246 -0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249; -0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248 -024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B; -024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A -024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D; -024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C -024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F; -024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E -0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;2C6F;;2C6F -0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D -0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;2C70;;2C70 -0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 -0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 -0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; -0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 -0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A -0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; -0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F -025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; -025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 -025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; -025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; -025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; -025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; -0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 -0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; -0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; -0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 -0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; -0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; -0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; -0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; -0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 -0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 -026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; -026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62 -026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; -026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; -026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; -026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C -0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; -0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;2C6E;;2C6E -0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D -0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; -0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; -0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F -0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; -0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; -0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; -0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; -027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; -027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; -027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64 -027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; -027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; -0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;;01A6;;01A6 -0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; -0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; -0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 -0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; -0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; -0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; -0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; -0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE -0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244 -028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 -028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 -028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245 -028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; -028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; -028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; -0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; -0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; -0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 -0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; -0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; -0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; -0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; -0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; -0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; -029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; -029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; -029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; -029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; -029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; -029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; -02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; -02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; -02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; -02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; -02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; -02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; -02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; -02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; -02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; -02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; -02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; -02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; -02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; -02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; -02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; -02B0;MODIFIER LETTER SMALL H;Lm;0;L; 0068;;;;N;;;;; -02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L; 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; -02B2;MODIFIER LETTER SMALL J;Lm;0;L; 006A;;;;N;;;;; -02B3;MODIFIER LETTER SMALL R;Lm;0;L; 0072;;;;N;;;;; -02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L; 0279;;;;N;;;;; -02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L; 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; -02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L; 0281;;;;N;;;;; -02B7;MODIFIER LETTER SMALL W;Lm;0;L; 0077;;;;N;;;;; -02B8;MODIFIER LETTER SMALL Y;Lm;0;L; 0079;;;;N;;;;; -02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; -02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; -02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; -02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; -02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; -02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; -02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; -02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; -02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;;;; -02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;; -02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;; -02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;; -02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; -02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; -02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; -02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; -02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; -02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; -02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; -02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; -02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; -02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; -02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; -02D8;BREVE;Sk;0;ON; 0020 0306;;;;N;SPACING BREVE;;;; -02D9;DOT ABOVE;Sk;0;ON; 0020 0307;;;;N;SPACING DOT ABOVE;;;; -02DA;RING ABOVE;Sk;0;ON; 0020 030A;;;;N;SPACING RING ABOVE;;;; -02DB;OGONEK;Sk;0;ON; 0020 0328;;;;N;SPACING OGONEK;;;; -02DC;SMALL TILDE;Sk;0;ON; 0020 0303;;;;N;SPACING TILDE;;;; -02DD;DOUBLE ACUTE ACCENT;Sk;0;ON; 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; -02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; -02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; -02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L; 0263;;;;N;;;;; -02E1;MODIFIER LETTER SMALL L;Lm;0;L; 006C;;;;N;;;;; -02E2;MODIFIER LETTER SMALL S;Lm;0;L; 0073;;;;N;;;;; -02E3;MODIFIER LETTER SMALL X;Lm;0;L; 0078;;;;N;;;;; -02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L; 0295;;;;N;;;;; -02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; -02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; -02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; -02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; -02EC;MODIFIER LETTER VOICING;Lm;0;ON;;;;;N;;;;; -02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; -02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; -02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; -02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; -02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; -02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; -02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; -02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; -02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; -02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; -02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; -02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; -02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; -02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; -0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;;;; -0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;;;; -0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; -0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; -0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; -0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; -0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;;;; -0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; -0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;;;; -0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; -030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; -030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; -030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; -030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; -030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; -030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; -0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; -0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; -0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; -0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;;;; -0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;;;; -0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; -0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; -0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; -0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; -0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; -031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; -031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; -031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; -031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; -031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; -031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; -0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; -0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; -0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; -0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; -0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; -0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; -0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; -0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; -0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; -0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; -032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; -032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; -032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; -032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; -032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; -032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; -0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; -0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; -0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; -0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; -0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; -0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; -0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; -0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; -0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; -0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; -033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; -033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; -033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; -033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; -033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; -033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; -0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;;;; -0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;;;; -0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; -0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; -0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; -0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 -0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; -0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; -034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; -034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; -034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; -034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; -0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; -0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; -0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; -0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; -0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; -035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; -035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; -035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; -035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; -035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; -0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; -0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; -0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; -0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; -0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; -0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; -0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; -0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; -0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; -0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; -036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; -036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; -036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; -036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; -036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; -036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; -0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371; -0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370 -0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373; -0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372 -0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;;;; -0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;;;; -0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377; -0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376 -037A;GREEK YPOGEGRAMMENI;Lm;0;L; 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; -037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD -037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE -037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF -037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;;;; -0384;GREEK TONOS;Sk;0;ON; 0020 0301;;;;N;GREEK SPACING TONOS;;;; -0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; -0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; -0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; -0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; -0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; -038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; -038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; -038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; -038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; -0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; -0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; -0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; -0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; -0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; -0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; -0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; -0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; -0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; -0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; -039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; -039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; -039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; -039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; -039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; -039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; -03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; -03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; -03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; -03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; -03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; -03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; -03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; -03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; -03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; -03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; -03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; -03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 -03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 -03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 -03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A -03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; -03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 -03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 -03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 -03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 -03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 -03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 -03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 -03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 -03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 -03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A -03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B -03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C -03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D -03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E -03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F -03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 -03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 -03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 -03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 -03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 -03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 -03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 -03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 -03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 -03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA -03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB -03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C -03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E -03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F -03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7; -03D0;GREEK BETA SYMBOL;Ll;0;L; 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 -03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 -03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L; 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; -03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; -03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; -03D5;GREEK PHI SYMBOL;Ll;0;L; 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 -03D6;GREEK PI SYMBOL;Ll;0;L; 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 -03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF -03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;;;03D9; -03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;;03D8;;03D8 -03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; -03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA -03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; -03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC -03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; -03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE -03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; -03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 -03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; -03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 -03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; -03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 -03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; -03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 -03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; -03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 -03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; -03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA -03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; -03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC -03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; -03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE -03F0;GREEK KAPPA SYMBOL;Ll;0;L; 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A -03F1;GREEK RHO SYMBOL;Ll;0;L; 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 -03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L; 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 -03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; -03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8; -03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L; 03B5;;;;N;;;0395;;0395 -03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; -03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; -03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 -03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L; 03A3;;;;N;;;;03F2; -03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; -03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA -03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; -03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B; -03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C; -03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D; -0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; -0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; -0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;;;0452; -0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; -0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; -0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; -0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; -0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;;;0457; -0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; -0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; -040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; -040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;;;045B; -040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; -040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; -040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;;;045E; -040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; -0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; -0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; -0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; -0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; -0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; -0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; -0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; -0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; -0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; -0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; -041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; -041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; -041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; -041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; -041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; -041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; -0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; -0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; -0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; -0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; -0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; -0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; -0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; -0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; -0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; -0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; -042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; -042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; -042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; -042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; -042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; -042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; -0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 -0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 -0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 -0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 -0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 -0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 -0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 -0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 -0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 -0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 -043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A -043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B -043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C -043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D -043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E -043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F -0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 -0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 -0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 -0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 -0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 -0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 -0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 -0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 -0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 -0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 -044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A -044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B -044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C -044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D -044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E -044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F -0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 -0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 -0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;;0402;;0402 -0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 -0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 -0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 -0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 -0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;;0407;;0407 -0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 -0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 -045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A -045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;;040B;;040B -045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C -045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D -045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;;040E;;040E -045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F -0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; -0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 -0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; -0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 -0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; -0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 -0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; -0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 -0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; -0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 -046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; -046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A -046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; -046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C -046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; -046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E -0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; -0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 -0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; -0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 -0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; -0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 -0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; -0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 -0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; -0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 -047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; -047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A -047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; -047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C -047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; -047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E -0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; -0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 -0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; -0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; -0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; -0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; -0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; -0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;; -0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; -0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; -048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A -048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; -048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C -048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; -048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E -0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; -0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 -0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; -0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 -0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; -0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 -0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; -0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 -0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; -0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 -049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; -049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A -049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; -049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C -049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; -049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E -04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; -04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 -04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; -04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 -04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; -04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 -04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;;;04A7; -04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;;04A6;;04A6 -04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; -04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 -04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; -04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA -04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; -04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC -04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; -04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE -04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; -04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 -04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; -04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 -04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;;;04B5; -04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;;04B4;;04B4 -04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; -04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 -04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; -04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 -04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; -04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA -04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; -04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC -04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; -04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE -04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF; -04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; -04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 -04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; -04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 -04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; -04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 -04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; -04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 -04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; -04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 -04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; -04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB -04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; -04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD -04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0 -04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; -04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 -04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; -04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 -04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; -04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 -04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; -04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 -04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; -04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 -04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; -04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA -04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; -04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC -04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; -04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE -04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; -04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 -04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; -04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 -04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; -04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 -04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; -04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 -04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; -04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 -04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; -04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA -04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; -04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC -04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; -04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE -04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; -04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 -04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; -04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 -04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; -04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 -04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; -04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 -04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; -04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 -04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB; -04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA -04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD; -04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC -04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF; -04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE -0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; -0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 -0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; -0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 -0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; -0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 -0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; -0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 -0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; -0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 -050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; -050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A -050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; -050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C -050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; -050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E -0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511; -0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510 -0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513; -0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512 -0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515; -0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514 -0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517; -0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516 -0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519; -0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518 -051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B; -051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A -051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D; -051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C -051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F; -051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E -0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521; -0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520 -0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523; -0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522 -0524;CYRILLIC CAPITAL LETTER PE WITH DESCENDER;Lu;0;L;;;;;N;;;;0525; -0525;CYRILLIC SMALL LETTER PE WITH DESCENDER;Ll;0;L;;;;;N;;;0524;;0524 -0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; -0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; -0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; -0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; -0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; -0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; -0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; -0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; -0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; -053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; -053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; -053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; -053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; -053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; -053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; -0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; -0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; -0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; -0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; -0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; -0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; -0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; -0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; -0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; -0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; -054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; -054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; -054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; -054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; -054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; -054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; -0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; -0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; -0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; -0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; -0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; -0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; -0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; -0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; -055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; -055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; -055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; -055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; -055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; -055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; -0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 -0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 -0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 -0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 -0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 -0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 -0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 -0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 -0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 -056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A -056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B -056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C -056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D -056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E -056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F -0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 -0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 -0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 -0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 -0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 -0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 -0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 -0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 -0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 -0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 -057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A -057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B -057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C -057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D -057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E -057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F -0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 -0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 -0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 -0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 -0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 -0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 -0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 -0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L; 0565 0582;;;;N;;;;; -0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; -058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; -0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; -0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; -0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; -0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; -0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; -0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;;;; -0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; -0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;;;; -0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; -059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; -059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; -059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; -059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; -059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; -059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; -05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; -05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; -05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; -05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; -05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; -05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;;;; -05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; -05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; -05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;;;; -05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; -05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;;;; -05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; -05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; -05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; -05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; -05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; -05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; -05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; -05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; -05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; -05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; -05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; -05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; -05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; -05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; -05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; -05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;; -05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; -05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;;;; -05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;;;; -05BE;HEBREW PUNCTUATION MAQAF;Pd;0;R;;;;;N;;;;; -05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; -05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;;;; -05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; -05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; -05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;;;; -05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; -05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; -05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; -05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; -05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; -05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; -05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; -05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; -05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; -05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; -05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; -05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; -05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; -05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; -05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; -05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; -05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; -05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; -05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; -05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; -05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; -05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; -05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; -05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; -05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; -05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; -05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; -05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; -05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; -05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; -05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; -05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; -05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; -05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; -0600;ARABIC NUMBER SIGN;Cf;0;AN;;;;;N;;;;; -0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;; -0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;; -0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;; -0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;; -0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;; -0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;; -0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;; -060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; -060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; -060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; -060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; -060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; -060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; -0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; -0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; -0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; -0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; -0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; -0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; -0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;; -0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;; -0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;; -0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;; -061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;; -061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; -061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; -061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; -0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; -0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; -0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; -0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; -0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; -0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; -0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; -0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; -0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; -062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; -062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; -062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; -062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; -062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; -062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; -0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; -0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; -0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; -0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; -0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; -0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; -0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; -0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; -0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; -063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; -063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; -0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; -0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; -0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; -0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; -0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; -0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; -0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; -0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; -064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; -064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; -064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; -064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; -064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; -064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; -0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; -0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; -0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; -0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; -0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; -0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; -0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; -0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; -0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; -0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; -065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; -065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; -065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; -0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; -0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; -0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; -0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; -0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; -0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; -0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; -0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; -0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; -0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; -066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; -066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; -066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; -066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; -066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; -066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; -0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; -0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; -0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; -0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; -0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; -0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL; 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; -0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL; 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; -0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL; 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; -0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL; 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; -0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; -067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; -067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; -067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; -067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; -067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; -067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; -0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; -0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; -0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; -0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; -0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; -0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; -0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; -0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; -0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; -0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; -068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; -068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; -068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; -068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; -0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; -0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; -0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; -0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; -0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; -0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; -0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; -0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; -0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; -069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; -06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; -06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; -06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; -06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; -06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; -06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; -06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; -06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; -06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; -06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; -06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; -06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;;;; -06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; -06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; -06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; -06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; -06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; -06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; -06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; -06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; -06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; -06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; -06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; -06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; -06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; -06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; -06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; -06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; -06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; -06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; -06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; -06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; -06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; -06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; -06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; -06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;;;; -06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; -06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; -06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; -06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; -06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; -06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; -06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; -06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; -06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; -06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; -06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; -06DD;ARABIC END OF AYAH;Cf;0;AN;;;;;N;;;;; -06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; -06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; -06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; -06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; -06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; -06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; -06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; -06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; -06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; -06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; -06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; -06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; -06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; -06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; -06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; -06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; -06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; -06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; -06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; -06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; -06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; -06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; -06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; -06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; -06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; -06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; -06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; -06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; -06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; -0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; -0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; -0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; -0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; -0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; -0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; -070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; -070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; -070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; -070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; -070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; -0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; -0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; -0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; -0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; -0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; -0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; -0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; -0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; -0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; -0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; -071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; -071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; -071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; -071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; -071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; -071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; -0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; -0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; -0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; -0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; -0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; -0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; -0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; -0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; -0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; -0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; -072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; -072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; -072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; -072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; -072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; -072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; -0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; -0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; -0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; -0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; -0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; -0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; -0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; -073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; -073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; -073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; -073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; -073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; -0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; -0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; -0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; -0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; -0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; -0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; -0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; -074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; -074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; -074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; -074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; -0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; -0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; -0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; -075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; -075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; -075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; -075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; -0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; -0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; -0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; -0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; -0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; -076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; -076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; -076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; -076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;; -076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;; -0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;; -0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; -0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;; -077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;; -077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;; -077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;; -077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;; -077F;ARABIC LETTER KAF WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; -0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; -0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; -0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; -0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; -0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; -0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; -0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; -0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; -0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; -0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; -078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; -078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; -078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; -078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; -078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; -078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; -0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; -0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; -0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; -0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; -0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; -0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; -0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; -0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; -0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; -0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; -079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; -079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; -079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; -079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; -079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; -079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; -07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; -07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; -07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; -07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; -07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; -07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; -07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; -07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; -07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; -07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; -07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; -07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; -07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; -07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; -07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; -07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; -07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; -07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; -07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; -07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; -07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; -07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; -07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; -07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; -07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; -07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; -07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; -07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; -07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;; -07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;; -07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;; -07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;; -07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;; -07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;; -07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;; -07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;; -07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;; -07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;; -07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;; -07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;; -07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;; -07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;; -07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;; -07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;; -07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;; -07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;; -07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;; -07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;; -07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;; -07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;; -07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;; -07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;; -07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;; -07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;; -07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;; -07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;; -07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;; -07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;; -07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;; -07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;; -07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;; -07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;; -07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;; -07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;; -07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;; -07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;; -07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;; -07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;; -07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;; -07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; -07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; -07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; -07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;; -07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;; -07F8;NKO COMMA;Po;0;ON;;;;;N;;;;; -07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;; -0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;; -0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;; -0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;; -0803;SAMARITAN LETTER DALAT;Lo;0;R;;;;;N;;;;; -0804;SAMARITAN LETTER IY;Lo;0;R;;;;;N;;;;; -0805;SAMARITAN LETTER BAA;Lo;0;R;;;;;N;;;;; -0806;SAMARITAN LETTER ZEN;Lo;0;R;;;;;N;;;;; -0807;SAMARITAN LETTER IT;Lo;0;R;;;;;N;;;;; -0808;SAMARITAN LETTER TIT;Lo;0;R;;;;;N;;;;; -0809;SAMARITAN LETTER YUT;Lo;0;R;;;;;N;;;;; -080A;SAMARITAN LETTER KAAF;Lo;0;R;;;;;N;;;;; -080B;SAMARITAN LETTER LABAT;Lo;0;R;;;;;N;;;;; -080C;SAMARITAN LETTER MIM;Lo;0;R;;;;;N;;;;; -080D;SAMARITAN LETTER NUN;Lo;0;R;;;;;N;;;;; -080E;SAMARITAN LETTER SINGAAT;Lo;0;R;;;;;N;;;;; -080F;SAMARITAN LETTER IN;Lo;0;R;;;;;N;;;;; -0810;SAMARITAN LETTER FI;Lo;0;R;;;;;N;;;;; -0811;SAMARITAN LETTER TSAADIY;Lo;0;R;;;;;N;;;;; -0812;SAMARITAN LETTER QUF;Lo;0;R;;;;;N;;;;; -0813;SAMARITAN LETTER RISH;Lo;0;R;;;;;N;;;;; -0814;SAMARITAN LETTER SHAN;Lo;0;R;;;;;N;;;;; -0815;SAMARITAN LETTER TAAF;Lo;0;R;;;;;N;;;;; -0816;SAMARITAN MARK IN;Mn;230;NSM;;;;;N;;;;; -0817;SAMARITAN MARK IN-ALAF;Mn;230;NSM;;;;;N;;;;; -0818;SAMARITAN MARK OCCLUSION;Mn;230;NSM;;;;;N;;;;; -0819;SAMARITAN MARK DAGESH;Mn;230;NSM;;;;;N;;;;; -081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;; -081B;SAMARITAN MARK EPENTHETIC YUT;Mn;230;NSM;;;;;N;;;;; -081C;SAMARITAN VOWEL SIGN LONG E;Mn;230;NSM;;;;;N;;;;; -081D;SAMARITAN VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;; -081E;SAMARITAN VOWEL SIGN OVERLONG AA;Mn;230;NSM;;;;;N;;;;; -081F;SAMARITAN VOWEL SIGN LONG AA;Mn;230;NSM;;;;;N;;;;; -0820;SAMARITAN VOWEL SIGN AA;Mn;230;NSM;;;;;N;;;;; -0821;SAMARITAN VOWEL SIGN OVERLONG A;Mn;230;NSM;;;;;N;;;;; -0822;SAMARITAN VOWEL SIGN LONG A;Mn;230;NSM;;;;;N;;;;; -0823;SAMARITAN VOWEL SIGN A;Mn;230;NSM;;;;;N;;;;; -0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;; -0825;SAMARITAN VOWEL SIGN SHORT A;Mn;230;NSM;;;;;N;;;;; -0826;SAMARITAN VOWEL SIGN LONG U;Mn;230;NSM;;;;;N;;;;; -0827;SAMARITAN VOWEL SIGN U;Mn;230;NSM;;;;;N;;;;; -0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;; -0829;SAMARITAN VOWEL SIGN LONG I;Mn;230;NSM;;;;;N;;;;; -082A;SAMARITAN VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; -082B;SAMARITAN VOWEL SIGN O;Mn;230;NSM;;;;;N;;;;; -082C;SAMARITAN VOWEL SIGN SUKUN;Mn;230;NSM;;;;;N;;;;; -082D;SAMARITAN MARK NEQUDAA;Mn;230;NSM;;;;;N;;;;; -0830;SAMARITAN PUNCTUATION NEQUDAA;Po;0;R;;;;;N;;;;; -0831;SAMARITAN PUNCTUATION AFSAAQ;Po;0;R;;;;;N;;;;; -0832;SAMARITAN PUNCTUATION ANGED;Po;0;R;;;;;N;;;;; -0833;SAMARITAN PUNCTUATION BAU;Po;0;R;;;;;N;;;;; -0834;SAMARITAN PUNCTUATION ATMAAU;Po;0;R;;;;;N;;;;; -0835;SAMARITAN PUNCTUATION SHIYYAALAA;Po;0;R;;;;;N;;;;; -0836;SAMARITAN ABBREVIATION MARK;Po;0;R;;;;;N;;;;; -0837;SAMARITAN PUNCTUATION MELODIC QITSA;Po;0;R;;;;;N;;;;; -0838;SAMARITAN PUNCTUATION ZIQAA;Po;0;R;;;;;N;;;;; -0839;SAMARITAN PUNCTUATION QITSA;Po;0;R;;;;;N;;;;; -083A;SAMARITAN PUNCTUATION ZAEF;Po;0;R;;;;;N;;;;; -083B;SAMARITAN PUNCTUATION TURU;Po;0;R;;;;;N;;;;; -083C;SAMARITAN PUNCTUATION ARKAANU;Po;0;R;;;;;N;;;;; -083D;SAMARITAN PUNCTUATION SOF MASHFAAT;Po;0;R;;;;;N;;;;; -083E;SAMARITAN PUNCTUATION ANNAAU;Po;0;R;;;;;N;;;;; -0900;DEVANAGARI SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; -0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; -0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; -0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; -0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; -0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; -090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; -090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; -090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; -090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; -0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; -0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; -0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; -0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; -0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; -0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; -0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; -0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; -0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; -0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; -091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; -091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; -091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; -091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; -091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; -091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; -0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; -0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; -0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; -0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; -0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; -0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; -0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; -0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; -092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; -092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; -092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; -092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; -092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; -092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; -0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; -0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; -0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; -0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; -0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; -0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; -0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; -0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; -0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; -0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; -093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; -0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; -094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -094E;DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;N;;;;; -0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; -0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; -0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; -0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -0955;DEVANAGARI VOWEL SIGN CANDRA LONG E;Mn;0;NSM;;;;;N;;;;; -0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; -0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; -095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; -095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; -095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; -095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; -095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; -095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; -0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; -0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; -0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;; -0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;; -0979;DEVANAGARI LETTER ZHA;Lo;0;L;;;;;N;;;;; -097A;DEVANAGARI LETTER HEAVY YA;Lo;0;L;;;;;N;;;;; -097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;; -097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;; -097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;; -097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;; -0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; -0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; -0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; -0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; -0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; -098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; -098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; -0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; -0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; -0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; -0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; -0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; -0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; -0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; -0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; -099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; -099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; -099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; -099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; -099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; -099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; -09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; -09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; -09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; -09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; -09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; -09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; -09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; -09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; -09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; -09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; -09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; -09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; -09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; -09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; -09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; -09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; -09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; -09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; -09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; -09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; -09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; -09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; -09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; -09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; -09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; -09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; -09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; -09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;;;; -09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;;;; -09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; -09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1/16;N;;;;; -09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;1/8;N;;;;; -09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3/16;N;;;;; -09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;1/4;N;;;;; -09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;3/4;N;;;;; -09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; -09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; -09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;N;;;;; -0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; -0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; -0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; -0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; -0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; -0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; -0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; -0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; -0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; -0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; -0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; -0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; -0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; -0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; -0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; -0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; -0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; -0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; -0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; -0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; -0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; -0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; -0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; -0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; -0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; -0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; -0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; -0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; -0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; -0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; -0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; -0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; -0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; -0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; -0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; -0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; -0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; -0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0A51;GURMUKHI SIGN UDAAT;Mn;0;NSM;;;;;N;;;;; -0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; -0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; -0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; -0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; -0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; -0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; -0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; -0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; -0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; -0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; -0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;N;;;;; -0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; -0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; -0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; -0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; -0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; -0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; -0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; -0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; -0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; -0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; -0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; -0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; -0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; -0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; -0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; -0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; -0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; -0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; -0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; -0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; -0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; -0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; -0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; -0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; -0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; -0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; -0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; -0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; -0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; -0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; -0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; -0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; -0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; -0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; -0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; -0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; -0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; -0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; -0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; -0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; -0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; -0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; -0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; -0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; -0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; -0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; -0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; -0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; -0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; -0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; -0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; -0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; -0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; -0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; -0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; -0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; -0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; -0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; -0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; -0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; -0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; -0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; -0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; -0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; -0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; -0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; -0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; -0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; -0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; -0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; -0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; -0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; -0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; -0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; -0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; -0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; -0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; -0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; -0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; -0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; -0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; -0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; -0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; -0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; -0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; -0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; -0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; -0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; -0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; -0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; -0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; -0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0B44;ORIYA VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; -0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; -0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; -0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; -0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; -0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; -0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; -0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; -0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; -0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; -0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; -0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; -0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; -0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; -0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; -0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; -0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; -0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; -0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; -0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; -0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; -0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; -0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; -0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; -0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; -0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; -0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; -0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; -0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; -0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; -0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; -0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; -0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; -0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; -0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; -0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; -0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; -0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; -0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; -0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; -0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; -0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; -0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; -0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; -0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; -0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; -0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; -0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0BD0;TAMIL OM;Lo;0;L;;;;;N;;;;; -0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; -0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;;;; -0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;;;; -0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;;;; -0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;;;; -0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;;;; -0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;;;; -0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;;;; -0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;;;; -0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; -0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; -0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; -0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; -0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; -0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; -0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; -0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; -0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; -0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; -0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; -0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; -0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; -0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; -0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; -0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; -0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; -0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; -0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; -0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; -0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; -0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; -0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; -0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; -0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; -0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; -0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; -0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; -0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; -0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; -0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; -0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; -0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; -0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; -0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; -0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; -0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; -0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; -0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; -0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; -0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; -0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; -0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; -0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; -0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; -0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; -0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; -0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; -0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; -0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; -0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; -0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; -0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; -0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;; -0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;; -0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;; -0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;; -0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;; -0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;; -0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;; -0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;; -0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;; -0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;N;;;;; -0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; -0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; -0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; -0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; -0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; -0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; -0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; -0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; -0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; -0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; -0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; -0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; -0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; -0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; -0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; -0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; -0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; -0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; -0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; -0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; -0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; -0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; -0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; -0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; -0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; -0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; -0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; -0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; -0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; -0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; -0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; -0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; -0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; -0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; -0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; -0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; -0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; -0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; -0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; -0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; -0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; -0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; -0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; -0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; -0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; -0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; -0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; -0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; -0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; -0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; -0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; -0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; -0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; -0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; -0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; -0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; -0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;; -0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;; -0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; -0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; -0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; -0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; -0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; -0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; -0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; -0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; -0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; -0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; -0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; -0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; -0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; -0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; -0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; -0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; -0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; -0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; -0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; -0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; -0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; -0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; -0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; -0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; -0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; -0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; -0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; -0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; -0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; -0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; -0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; -0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; -0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; -0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; -0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; -0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; -0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; -0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; -0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; -0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; -0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; -0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; -0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; -0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; -0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; -0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; -0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; -0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; -0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; -0D3D;MALAYALAM SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; -0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -0D44;MALAYALAM VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; -0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; -0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; -0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; -0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; -0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;; -0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; -0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; -0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; -0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;; -0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;; -0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;; -0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;; -0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;; -0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;; -0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;N;;;;; -0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; -0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; -0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; -0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; -0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; -0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; -0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; -0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; -0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; -0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; -0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; -0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; -0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; -0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; -0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; -0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; -0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; -0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; -0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; -0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; -0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; -0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; -0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; -0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; -0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; -0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; -0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; -0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; -0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; -0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; -0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; -0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; -0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; -0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; -0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; -0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; -0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; -0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; -0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; -0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; -0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; -0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; -0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; -0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; -0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; -0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; -0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; -0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; -0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; -0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; -0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; -0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; -0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; -0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; -0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; -0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; -0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; -0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; -0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; -0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; -0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; -0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; -0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; -0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; -0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; -0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; -0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; -0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; -0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; -0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; -0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; -0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; -0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; -0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; -0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; -0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; -0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; -0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; -0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; -0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; -0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; -0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; -0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; -0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; -0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; -0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; -0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; -0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; -0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; -0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; -0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; -0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; -0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; -0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; -0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; -0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; -0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; -0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; -0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; -0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; -0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; -0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; -0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;;;; -0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; -0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; -0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; -0E33;THAI CHARACTER SARA AM;Lo;0;L; 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; -0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; -0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; -0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; -0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;;;; -0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; -0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; -0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; -0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; -0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; -0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; -0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; -0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;;;; -0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;; -0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;; -0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;; -0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;; -0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; -0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; -0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; -0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; -0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; -0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;;;; -0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; -0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; -0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; -0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; -0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; -0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; -0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; -0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; -0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; -0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; -0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; -0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; -0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; -0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; -0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; -0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; -0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; -0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; -0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; -0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; -0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; -0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; -0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; -0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; -0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; -0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; -0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; -0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; -0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; -0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; -0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; -0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; -0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; -0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; -0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; -0EB3;LAO VOWEL SIGN AM;Lo;0;L; 0ECD 0EB2;;;;N;;;;; -0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; -0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; -0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; -0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; -0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; -0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; -0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; -0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; -0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; -0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; -0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; -0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; -0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; -0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; -0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; -0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; -0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; -0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0EDC;LAO HO NO;Lo;0;L; 0EAB 0E99;;;;N;;;;; -0EDD;LAO HO MO;Lo;0;L; 0EAB 0EA1;;;;N;;;;; -0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; -0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;;;; -0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;;;; -0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;;;; -0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;;;; -0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;; -0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;;;; -0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;;;; -0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;;;; -0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;;;; -0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;;;; -0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;;;; -0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L; 0F0B;;;;N;;;;; -0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;;;; -0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;;;; -0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;;;; -0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;;;; -0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;;;; -0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;;;; -0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;;;; -0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;;;; -0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;;;; -0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;;;; -0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;;;; -0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;;;; -0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;;;; -0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;;;; -0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;;;; -0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;;;; -0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;;;; -0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;;;; -0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;;;; -0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; -0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; -0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; -0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; -0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; -0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; -0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; -0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; -0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; -0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; -0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;;;; -0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;;;; -0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;;;; -0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;;;; -0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;;;; -0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;;;; -0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;;;; -0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;;;; -0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;;;; -0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;;;; -0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;;;; -0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;;;; -0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; -0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; -0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; -0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; -0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; -0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; -0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; -0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; -0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; -0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; -0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; -0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; -0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; -0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; -0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; -0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; -0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; -0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; -0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; -0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; -0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; -0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; -0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; -0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; -0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; -0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; -0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; -0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; -0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; -0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; -0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; -0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; -0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; -0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;;;; -0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; -0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; -0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; -0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; -0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; -0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; -0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; -0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;;;; -0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;; -0F6C;TIBETAN LETTER RRA;Lo;0;L;;;;;N;;;;; -0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; -0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; -0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; -0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; -0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; -0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; -0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM; 0FB2 0F81;;;;N;;;;; -0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; -0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM; 0FB3 0F81;;;;N;;;;; -0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; -0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; -0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; -0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; -0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;;;; -0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;;;; -0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; -0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; -0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;;;; -0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;;;; -0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; -0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; -0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;;;; -0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;;;; -0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;;;; -0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;;;; -0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;;;; -0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;;;; -0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; -0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; -0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; -0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; -0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; -0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; -0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; -0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; -0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; -0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; -0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; -0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; -0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; -0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; -0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; -0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; -0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; -0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; -0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; -0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; -0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; -0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; -0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; -0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; -0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; -0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; -0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; -0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; -0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;;;; -0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; -0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; -0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; -0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;;;; -0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;;;; -0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; -0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; -0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; -0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; -0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; -0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; -0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; -0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;;;; -0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;;;; -0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;;;; -0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;;;; -0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;;;; -0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; -0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; -0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;;;; -0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;;;; -0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;;;; -0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;;;; -0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;;;; -0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;;;; -0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;;;; -0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;;;; -0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;;;; -0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;;;; -0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;;;; -0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;;;; -0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;; -0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;;;; -0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;;;; -0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;;;; -0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;;;; -0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;; -0FD5;RIGHT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;; -0FD6;LEFT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;; -0FD7;RIGHT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;; -0FD8;LEFT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;; -1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; -1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; -1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; -1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; -1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; -1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; -1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; -1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; -1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; -1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; -100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; -100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; -100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; -100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; -100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; -100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; -1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; -1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; -1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; -1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; -1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; -1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; -1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; -1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; -1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; -1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; -101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; -101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; -101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; -101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; -101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; -101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; -1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; -1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; -1022;MYANMAR LETTER SHAN A;Lo;0;L;;;;;N;;;;; -1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; -1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; -1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; -1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; -1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; -1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;; -1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; -102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; -102B;MYANMAR VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; -102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;; -1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;; -1035;MYANMAR VOWEL SIGN E ABOVE;Mn;0;NSM;;;;;N;;;;; -1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; -1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; -1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;; -103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;; -103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; -103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; -103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;; -103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;N;;;;; -1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; -104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; -104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; -104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; -104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; -104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; -1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; -1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; -1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; -1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; -105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;; -105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;; -105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;; -105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;; -105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;; -105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;; -1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;; -1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;; -1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;; -1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;; -1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;; -1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;; -1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;; -1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;; -1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;; -1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;; -106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;; -106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;; -106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;; -106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;; -106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;; -106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;; -1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;; -1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;; -1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;; -1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;; -1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;; -1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;; -1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;; -1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;; -1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;; -1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;; -107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;; -107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;; -107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;; -107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;; -107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;; -107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;; -1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;; -1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;; -1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;; -1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;; -1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;; -1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;; -1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;; -1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;; -1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;; -1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;; -108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;; -108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;; -108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;; -108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;; -108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;; -108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;; -1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -109A;MYANMAR SIGN KHAMTI TONE-1;Mc;0;L;;;;;N;;;;; -109B;MYANMAR SIGN KHAMTI TONE-3;Mc;0;L;;;;;N;;;;; -109C;MYANMAR VOWEL SIGN AITON A;Mc;0;L;;;;;N;;;;; -109D;MYANMAR VOWEL SIGN AITON AI;Mn;0;NSM;;;;;N;;;;; -109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;; -109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;; -10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;2D00; -10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;2D01; -10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;2D02; -10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;2D03; -10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;2D04; -10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;2D05; -10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;2D06; -10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;2D07; -10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;2D08; -10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;2D09; -10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;2D0A; -10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;2D0B; -10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;2D0C; -10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;2D0D; -10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;2D0E; -10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;2D0F; -10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;2D10; -10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;2D11; -10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;2D12; -10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;2D13; -10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;2D14; -10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;2D15; -10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;2D16; -10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;2D17; -10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;2D18; -10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;2D19; -10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;2D1A; -10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;2D1B; -10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;2D1C; -10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;2D1D; -10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;2D1E; -10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;2D1F; -10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;2D20; -10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;2D21; -10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;2D22; -10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;2D23; -10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;2D24; -10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;2D25; -10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; -10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; -10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; -10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; -10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; -10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; -10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; -10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; -10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; -10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; -10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; -10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; -10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; -10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; -10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; -10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; -10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; -10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; -10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; -10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; -10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; -10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; -10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; -10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; -10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; -10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; -10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; -10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; -10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; -10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; -10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; -10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; -10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; -10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; -10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; -10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; -10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; -10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; -10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; -10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; -10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; -10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; -10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; -10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L; 10DC;;;;N;;;;; -1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;; -1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;; -1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;; -1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;; -1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;; -1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;; -1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;; -1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;; -1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;; -110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;; -110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; -110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;; -110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;; -110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;; -110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;; -1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;; -1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;; -1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;; -1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; -1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; -1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; -111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; -111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; -1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; -1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; -1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; -112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; -112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; -112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; -1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; -1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; -1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; -1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; -1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; -1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; -113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; -113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; -113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; -113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; -1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; -1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; -1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; -1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; -1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; -1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; -114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; -114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; -114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; -114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; -114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; -1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; -1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; -1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; -1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; -1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; -1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -115A;HANGUL CHOSEONG KIYEOK-TIKEUT;Lo;0;L;;;;;N;;;;; -115B;HANGUL CHOSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; -115C;HANGUL CHOSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;; -115D;HANGUL CHOSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;; -115E;HANGUL CHOSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; -115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; -1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; -1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; -1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; -1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; -1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; -1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; -1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; -1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; -1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; -1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; -116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; -116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; -116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; -116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; -116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; -116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; -1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; -1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; -1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; -1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; -1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; -1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; -1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; -1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; -1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; -1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; -117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; -117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; -117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; -117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; -117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; -117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; -1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; -1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; -1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; -1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; -1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; -1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; -1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; -1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; -1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; -1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; -118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; -118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; -118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; -118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; -118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; -118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; -1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; -1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; -1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; -1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; -1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; -1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; -1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; -1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; -1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; -1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; -119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; -119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; -119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; -119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; -119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; -119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; -11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; -11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; -11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; -11A3;HANGUL JUNGSEONG A-EU;Lo;0;L;;;;;N;;;;; -11A4;HANGUL JUNGSEONG YA-U;Lo;0;L;;;;;N;;;;; -11A5;HANGUL JUNGSEONG YEO-YA;Lo;0;L;;;;;N;;;;; -11A6;HANGUL JUNGSEONG O-YA;Lo;0;L;;;;;N;;;;; -11A7;HANGUL JUNGSEONG O-YAE;Lo;0;L;;;;;N;;;;; -11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;; -11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; -11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;; -11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;; -11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;; -11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;; -11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;; -11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;; -11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;; -11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;; -11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;; -11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;;;; -11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;; -11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; -11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;; -11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;; -11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;; -11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;; -11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;; -11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;; -11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;; -11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;; -11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;; -11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;; -11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;; -11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; -11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; -11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; -11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; -11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; -11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; -11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; -11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; -11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; -11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; -11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; -11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; -11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; -11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; -11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; -11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; -11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; -11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; -11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; -11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; -11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; -11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; -11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; -11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; -11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; -11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; -11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; -11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; -11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; -11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; -11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; -11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; -11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; -11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; -11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; -11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; -11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; -11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; -11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; -11FA;HANGUL JONGSEONG KIYEOK-NIEUN;Lo;0;L;;;;;N;;;;; -11FB;HANGUL JONGSEONG KIYEOK-PIEUP;Lo;0;L;;;;;N;;;;; -11FC;HANGUL JONGSEONG KIYEOK-CHIEUCH;Lo;0;L;;;;;N;;;;; -11FD;HANGUL JONGSEONG KIYEOK-KHIEUKH;Lo;0;L;;;;;N;;;;; -11FE;HANGUL JONGSEONG KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;; -11FF;HANGUL JONGSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; -1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; -1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; -1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; -1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; -1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; -1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; -1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; -1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; -1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; -1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; -120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; -120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; -120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; -120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; -120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; -120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; -1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; -1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; -1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; -1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; -1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; -1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; -1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; -1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; -1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; -1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; -121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; -121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; -121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; -121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; -121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; -121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; -1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; -1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; -1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; -1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; -1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; -1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; -1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; -1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; -1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; -1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; -122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; -122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; -122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; -122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; -122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; -122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; -1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; -1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; -1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; -1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; -1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; -1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; -1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; -1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; -1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; -123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; -123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; -123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; -1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; -1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; -1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; -1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; -1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; -1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; -1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; -1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; -1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; -124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; -124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; -124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; -124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; -1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; -1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; -1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; -1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; -1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; -1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; -1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; -1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; -125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; -125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; -125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; -125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; -1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; -1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; -1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; -1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; -1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; -1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; -1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; -1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; -1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; -1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; -126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; -126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; -126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; -126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; -126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; -126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; -1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; -1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; -1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; -1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; -1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; -1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; -1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; -1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; -1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; -1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; -127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; -127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; -127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; -127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; -127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; -127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; -1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; -1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; -1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; -1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; -1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; -1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; -1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; -1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; -1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; -128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; -128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; -128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; -128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; -1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; -1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; -1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; -1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; -1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; -1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; -1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; -1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; -1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; -1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; -129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; -129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; -129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; -12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; -12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; -12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; -12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; -12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; -12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; -12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; -12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; -12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; -12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; -12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; -12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; -12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; -12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; -12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; -12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; -12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; -12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; -12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; -12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; -12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; -12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; -12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; -12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; -12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; -12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; -12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; -12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; -12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; -12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; -12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; -12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; -12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; -12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; -12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; -12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; -12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; -12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; -12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; -12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; -12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; -12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; -12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; -12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; -12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; -12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; -12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; -12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; -12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; -12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; -12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; -12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; -12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; -12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; -12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; -12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; -12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; -12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; -12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; -12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; -12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; -12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; -12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; -12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; -12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; -12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; -12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; -12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; -12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; -12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; -12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; -12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; -12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; -12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; -1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; -1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; -1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; -1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; -1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; -1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; -1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; -1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; -1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; -1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; -130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; -130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; -130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; -130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; -130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; -130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; -1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; -1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; -1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; -1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; -1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; -1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; -131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; -131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; -1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; -1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; -1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; -1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; -1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; -1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; -1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; -1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; -1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; -132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; -132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; -132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; -1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; -1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; -1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; -1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; -1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; -1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; -1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; -1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; -1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; -1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; -133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; -133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; -133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; -133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; -133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; -133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; -1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; -1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; -1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; -1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; -1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; -1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; -1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; -1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; -1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; -1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; -134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; -134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; -134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; -134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; -134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; -134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; -1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; -1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; -1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; -1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; -1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; -1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; -1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; -1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; -1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; -1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; -135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; -135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; -1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;; -1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; -1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; -1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; -1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; -1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; -1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; -1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; -1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; -1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; -136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; -136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; -136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; -136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; -136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; -136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; -1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; -1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; -1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; -1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; -1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; -1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; -1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; -1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; -1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; -137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; -137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; -1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; -1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; -1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; -1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; -1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; -1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; -1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; -1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; -1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; -138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; -138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; -138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; -138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; -138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; -138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; -1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; -1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; -1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; -1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; -1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; -1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; -1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; -1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; -1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; -1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; -13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; -13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; -13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; -13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; -13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; -13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; -13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; -13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; -13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; -13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; -13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; -13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; -13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; -13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; -13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; -13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; -13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; -13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; -13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; -13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; -13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; -13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; -13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; -13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; -13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; -13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; -13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; -13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; -13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; -13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; -13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; -13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; -13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; -13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; -13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; -13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; -13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; -13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; -13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; -13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; -13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; -13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; -13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; -13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; -13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; -13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; -13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; -13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; -13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; -13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; -13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; -13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; -13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; -13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; -13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; -13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; -13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; -13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; -13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; -13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; -13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; -13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; -13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; -13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; -13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; -13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; -13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; -13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; -13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; -13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; -13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; -13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; -13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; -13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; -13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; -13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; -13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; -13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; -13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; -13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; -13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; -13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; -13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; -13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; -13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; -1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;N;;;;; -1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; -1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; -1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; -1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; -1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; -1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; -1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; -1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; -1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; -140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; -140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; -140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; -140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; -140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; -140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; -1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; -1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; -1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; -1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; -1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; -1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; -1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; -1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; -1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; -1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; -141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; -141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; -141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; -141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; -141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; -141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; -1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; -1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; -1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; -1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; -1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; -1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; -1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; -1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; -1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; -1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; -142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; -142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; -142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; -142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; -142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; -142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; -1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; -1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; -1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; -1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; -1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; -1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; -1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; -1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; -1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; -1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; -143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; -143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; -143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; -143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; -143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; -143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; -1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; -1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; -1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; -1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; -1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; -1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; -1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; -1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; -1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; -1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; -144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; -144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; -144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; -144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; -144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; -144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; -1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; -1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; -1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; -1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; -1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; -1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; -1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; -1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; -1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; -1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; -145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; -145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; -145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; -145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; -145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; -145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; -1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; -1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; -1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; -1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; -1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; -1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; -1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; -1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; -1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; -1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; -146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; -146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; -146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; -146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; -146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; -146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; -1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; -1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; -1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; -1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; -1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; -1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; -1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; -1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; -1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; -1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; -147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; -147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; -147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; -147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; -147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; -147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; -1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; -1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; -1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; -1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; -1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; -1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; -1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; -1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; -1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; -1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; -148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; -148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; -148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; -148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; -148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; -148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; -1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; -1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; -1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; -1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; -1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; -1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; -1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; -1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; -1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; -1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; -149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; -149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; -149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; -149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; -149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; -149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; -14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; -14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; -14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; -14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; -14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; -14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; -14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; -14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; -14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; -14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; -14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; -14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; -14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; -14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; -14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; -14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; -14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; -14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; -14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; -14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; -14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; -14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; -14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; -14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; -14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; -14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; -14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; -14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; -14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; -14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; -14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; -14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; -14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; -14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; -14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; -14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; -14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; -14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; -14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; -14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; -14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; -14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; -14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; -14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; -14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; -14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; -14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; -14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; -14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; -14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; -14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; -14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; -14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; -14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; -14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; -14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; -14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; -14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; -14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; -14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; -14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; -14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; -14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; -14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; -14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; -14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; -14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; -14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; -14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; -14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; -14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; -14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; -14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; -14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; -14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; -14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; -14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; -14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; -14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; -14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; -14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; -14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; -14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; -14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; -14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; -14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; -14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; -14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; -14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; -14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; -14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; -14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; -14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; -14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; -14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; -14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; -1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; -1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; -1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; -1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; -1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; -1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; -1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; -1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; -1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; -1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; -150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; -150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; -150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; -150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; -150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; -150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; -1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; -1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; -1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; -1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; -1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; -1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; -1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; -1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; -1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; -1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; -151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; -151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; -151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; -151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; -151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; -151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; -1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; -1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; -1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; -1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; -1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; -1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; -1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; -1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; -1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; -1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; -152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; -152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; -152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; -152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; -152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; -152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; -1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; -1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; -1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; -1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; -1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; -1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; -1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; -1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; -1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; -1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; -153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; -153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; -153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; -153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; -153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; -153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; -1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; -1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; -1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; -1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; -1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; -1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; -1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; -1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; -1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; -1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; -154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; -154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; -154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; -154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; -154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; -154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; -1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; -1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; -1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; -1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; -1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; -1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; -1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; -1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; -1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; -1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; -155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; -155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; -155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; -155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; -155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; -155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; -1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; -1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; -1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; -1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; -1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; -1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; -1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; -1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; -1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; -1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; -156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; -156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; -156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; -156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; -156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; -156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; -1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; -1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; -1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; -1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; -1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; -1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; -1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; -1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; -1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; -1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; -157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; -157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; -157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; -157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; -157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; -157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; -1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; -1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; -1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; -1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; -1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; -1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; -1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; -1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; -1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; -1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; -158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; -158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; -158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; -158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; -158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; -158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; -1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; -1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; -1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; -1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; -1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; -1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; -1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; -1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; -1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; -1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; -159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; -159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; -159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; -159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; -159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; -159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; -15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; -15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; -15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; -15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; -15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; -15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; -15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; -15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; -15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; -15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; -15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; -15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; -15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; -15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; -15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; -15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; -15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; -15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; -15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; -15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; -15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; -15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; -15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; -15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; -15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; -15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; -15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; -15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; -15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; -15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; -15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; -15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; -15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; -15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; -15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; -15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; -15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; -15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; -15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; -15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; -15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; -15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; -15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; -15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; -15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; -15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; -15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; -15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; -15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; -15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; -15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; -15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; -15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; -15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; -15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; -15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; -15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; -15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; -15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; -15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; -15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; -15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; -15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; -15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; -15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; -15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; -15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; -15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; -15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; -15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; -15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; -15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; -15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; -15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; -15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; -15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; -15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; -15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; -15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; -15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; -15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; -15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; -15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; -15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; -15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; -15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; -15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; -15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; -15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; -15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; -15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; -15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; -15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; -15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; -15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; -15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; -1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; -1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; -1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; -1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; -1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; -1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; -1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; -1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; -1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; -1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; -160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; -160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; -160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; -160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; -160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; -160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; -1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; -1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; -1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; -1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; -1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; -1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; -1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; -1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; -1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; -1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; -161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; -161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; -161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; -161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; -161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; -161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; -1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; -1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; -1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; -1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; -1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; -1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; -1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; -1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; -1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; -1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; -162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; -162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; -162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; -162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; -162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; -162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; -1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; -1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; -1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; -1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; -1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; -1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; -1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; -1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; -1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; -1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; -163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; -163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; -163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; -163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; -163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; -163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; -1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; -1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; -1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; -1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; -1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; -1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; -1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; -1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; -1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; -1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; -164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; -164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; -164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; -164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; -164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; -164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; -1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; -1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; -1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; -1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; -1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; -1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; -1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; -1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; -1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; -1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; -165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; -165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; -165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; -165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; -165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; -165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; -1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; -1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; -1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; -1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; -1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; -1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; -1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; -1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; -1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; -1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; -166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; -166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; -166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; -166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; -166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; -166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; -1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; -1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; -1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; -1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; -1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; -1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; -1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; -1677;CANADIAN SYLLABICS WOODS-CREE THWEE;Lo;0;L;;;;;N;;;;; -1678;CANADIAN SYLLABICS WOODS-CREE THWI;Lo;0;L;;;;;N;;;;; -1679;CANADIAN SYLLABICS WOODS-CREE THWII;Lo;0;L;;;;;N;;;;; -167A;CANADIAN SYLLABICS WOODS-CREE THWO;Lo;0;L;;;;;N;;;;; -167B;CANADIAN SYLLABICS WOODS-CREE THWOO;Lo;0;L;;;;;N;;;;; -167C;CANADIAN SYLLABICS WOODS-CREE THWA;Lo;0;L;;;;;N;;;;; -167D;CANADIAN SYLLABICS WOODS-CREE THWAA;Lo;0;L;;;;;N;;;;; -167E;CANADIAN SYLLABICS WOODS-CREE FINAL TH;Lo;0;L;;;;;N;;;;; -167F;CANADIAN SYLLABICS BLACKFOOT W;Lo;0;L;;;;;N;;;;; -1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; -1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; -1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; -1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; -1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; -1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; -1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; -1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; -1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; -1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; -168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; -168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; -168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; -168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; -168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; -168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; -1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; -1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; -1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; -1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; -1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; -1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; -1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; -1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; -1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; -1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; -169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; -169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;; -169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;; -16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; -16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; -16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; -16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; -16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; -16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; -16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; -16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; -16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; -16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; -16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; -16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; -16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; -16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; -16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; -16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; -16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; -16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; -16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; -16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; -16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; -16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; -16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; -16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; -16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; -16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; -16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; -16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; -16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; -16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; -16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; -16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; -16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; -16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; -16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; -16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; -16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; -16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; -16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; -16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; -16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; -16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; -16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; -16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; -16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; -16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; -16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; -16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; -16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; -16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; -16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; -16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; -16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; -16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; -16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; -16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; -16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; -16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; -16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; -16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; -16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; -16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; -16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; -16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; -16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; -16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; -16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; -16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; -16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; -16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; -16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; -16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; -16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; -16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; -16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; -16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; -16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; -16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;;;; -16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;;;; -16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;;;; -1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; -1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; -1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; -1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; -1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; -1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; -1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; -1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; -1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; -1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; -170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; -170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; -170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; -170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; -170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; -1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; -1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; -1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; -1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; -1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; -1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; -1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; -1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; -1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; -1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; -1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; -1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; -172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; -172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; -172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; -172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; -172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; -172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; -1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; -1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; -1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; -1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; -1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; -1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; -1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; -1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; -1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; -1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; -1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; -1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; -1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; -1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; -174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; -174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; -174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; -174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; -174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; -174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; -1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; -1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; -1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; -1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; -1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; -1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; -1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; -1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; -1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; -1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; -1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; -1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; -176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; -176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; -176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; -176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; -176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; -1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; -1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; -1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; -1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; -1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; -1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; -1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; -1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; -1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; -1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; -1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; -178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; -178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; -178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; -178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; -178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; -178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; -1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; -1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; -1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; -1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; -1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; -1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; -1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; -1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; -1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; -1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; -179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; -179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; -179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; -179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; -179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; -179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; -17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; -17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; -17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; -17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;;;; -17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;;;; -17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; -17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; -17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; -17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; -17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; -17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; -17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; -17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; -17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; -17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; -17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; -17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; -17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; -17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; -17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; -17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;;;; -17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;;;; -17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; -17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; -17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; -17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; -17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; -17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; -17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; -17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; -17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; -17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; -17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; -17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; -17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; -17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; -17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; -17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; -17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; -17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; -17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; -17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;;;; -17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; -17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; -17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; -17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; -17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;;;; -17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; -17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; -17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; -17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; -17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; -17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; -17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; -17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; -17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; -17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; -17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; -17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; -17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; -17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; -17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; -1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; -1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; -1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; -1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; -1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; -1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; -1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; -1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; -1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; -1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; -180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; -180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; -180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; -180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; -180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; -1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; -1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; -1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; -1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; -1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; -1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; -1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; -1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; -1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; -1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; -182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; -182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; -182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; -182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; -182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; -182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; -1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; -1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; -1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; -1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; -1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; -1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; -1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; -1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; -1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; -1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; -183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; -183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; -183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; -183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; -183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; -183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; -1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; -1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; -1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; -1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; -1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; -1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; -1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; -1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; -1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; -1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; -184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; -184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; -184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; -184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; -184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; -184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; -1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; -1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; -1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; -1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; -1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; -1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; -1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; -1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; -1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; -1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; -185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; -185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; -185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; -185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; -185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; -185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; -1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; -1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; -1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; -1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; -1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; -1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; -1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; -1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; -1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; -1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; -186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; -186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; -186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; -186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; -186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; -186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; -1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; -1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; -1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; -1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; -1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; -1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; -1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; -1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; -1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; -1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; -1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; -1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; -1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; -1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; -1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; -1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; -1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; -1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; -188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; -188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; -188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; -188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; -188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; -188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; -1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; -1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; -1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; -1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; -1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; -1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; -1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; -1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; -1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; -189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; -189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; -189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; -189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; -189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; -18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; -18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; -18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; -18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; -18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; -18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; -18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; -18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; -18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; -18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; -18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;; -18B0;CANADIAN SYLLABICS OY;Lo;0;L;;;;;N;;;;; -18B1;CANADIAN SYLLABICS AY;Lo;0;L;;;;;N;;;;; -18B2;CANADIAN SYLLABICS AAY;Lo;0;L;;;;;N;;;;; -18B3;CANADIAN SYLLABICS WAY;Lo;0;L;;;;;N;;;;; -18B4;CANADIAN SYLLABICS POY;Lo;0;L;;;;;N;;;;; -18B5;CANADIAN SYLLABICS PAY;Lo;0;L;;;;;N;;;;; -18B6;CANADIAN SYLLABICS PWOY;Lo;0;L;;;;;N;;;;; -18B7;CANADIAN SYLLABICS TAY;Lo;0;L;;;;;N;;;;; -18B8;CANADIAN SYLLABICS KAY;Lo;0;L;;;;;N;;;;; -18B9;CANADIAN SYLLABICS KWAY;Lo;0;L;;;;;N;;;;; -18BA;CANADIAN SYLLABICS MAY;Lo;0;L;;;;;N;;;;; -18BB;CANADIAN SYLLABICS NOY;Lo;0;L;;;;;N;;;;; -18BC;CANADIAN SYLLABICS NAY;Lo;0;L;;;;;N;;;;; -18BD;CANADIAN SYLLABICS LAY;Lo;0;L;;;;;N;;;;; -18BE;CANADIAN SYLLABICS SOY;Lo;0;L;;;;;N;;;;; -18BF;CANADIAN SYLLABICS SAY;Lo;0;L;;;;;N;;;;; -18C0;CANADIAN SYLLABICS SHOY;Lo;0;L;;;;;N;;;;; -18C1;CANADIAN SYLLABICS SHAY;Lo;0;L;;;;;N;;;;; -18C2;CANADIAN SYLLABICS SHWOY;Lo;0;L;;;;;N;;;;; -18C3;CANADIAN SYLLABICS YOY;Lo;0;L;;;;;N;;;;; -18C4;CANADIAN SYLLABICS YAY;Lo;0;L;;;;;N;;;;; -18C5;CANADIAN SYLLABICS RAY;Lo;0;L;;;;;N;;;;; -18C6;CANADIAN SYLLABICS NWI;Lo;0;L;;;;;N;;;;; -18C7;CANADIAN SYLLABICS OJIBWAY NWI;Lo;0;L;;;;;N;;;;; -18C8;CANADIAN SYLLABICS NWII;Lo;0;L;;;;;N;;;;; -18C9;CANADIAN SYLLABICS OJIBWAY NWII;Lo;0;L;;;;;N;;;;; -18CA;CANADIAN SYLLABICS NWO;Lo;0;L;;;;;N;;;;; -18CB;CANADIAN SYLLABICS OJIBWAY NWO;Lo;0;L;;;;;N;;;;; -18CC;CANADIAN SYLLABICS NWOO;Lo;0;L;;;;;N;;;;; -18CD;CANADIAN SYLLABICS OJIBWAY NWOO;Lo;0;L;;;;;N;;;;; -18CE;CANADIAN SYLLABICS RWEE;Lo;0;L;;;;;N;;;;; -18CF;CANADIAN SYLLABICS RWI;Lo;0;L;;;;;N;;;;; -18D0;CANADIAN SYLLABICS RWII;Lo;0;L;;;;;N;;;;; -18D1;CANADIAN SYLLABICS RWO;Lo;0;L;;;;;N;;;;; -18D2;CANADIAN SYLLABICS RWOO;Lo;0;L;;;;;N;;;;; -18D3;CANADIAN SYLLABICS RWA;Lo;0;L;;;;;N;;;;; -18D4;CANADIAN SYLLABICS OJIBWAY P;Lo;0;L;;;;;N;;;;; -18D5;CANADIAN SYLLABICS OJIBWAY T;Lo;0;L;;;;;N;;;;; -18D6;CANADIAN SYLLABICS OJIBWAY K;Lo;0;L;;;;;N;;;;; -18D7;CANADIAN SYLLABICS OJIBWAY C;Lo;0;L;;;;;N;;;;; -18D8;CANADIAN SYLLABICS OJIBWAY M;Lo;0;L;;;;;N;;;;; -18D9;CANADIAN SYLLABICS OJIBWAY N;Lo;0;L;;;;;N;;;;; -18DA;CANADIAN SYLLABICS OJIBWAY S;Lo;0;L;;;;;N;;;;; -18DB;CANADIAN SYLLABICS OJIBWAY SH;Lo;0;L;;;;;N;;;;; -18DC;CANADIAN SYLLABICS EASTERN W;Lo;0;L;;;;;N;;;;; -18DD;CANADIAN SYLLABICS WESTERN W;Lo;0;L;;;;;N;;;;; -18DE;CANADIAN SYLLABICS FINAL SMALL RING;Lo;0;L;;;;;N;;;;; -18DF;CANADIAN SYLLABICS FINAL RAISED DOT;Lo;0;L;;;;;N;;;;; -18E0;CANADIAN SYLLABICS R-CREE RWE;Lo;0;L;;;;;N;;;;; -18E1;CANADIAN SYLLABICS WEST-CREE LOO;Lo;0;L;;;;;N;;;;; -18E2;CANADIAN SYLLABICS WEST-CREE LAA;Lo;0;L;;;;;N;;;;; -18E3;CANADIAN SYLLABICS THWE;Lo;0;L;;;;;N;;;;; -18E4;CANADIAN SYLLABICS THWA;Lo;0;L;;;;;N;;;;; -18E5;CANADIAN SYLLABICS TTHWE;Lo;0;L;;;;;N;;;;; -18E6;CANADIAN SYLLABICS TTHOO;Lo;0;L;;;;;N;;;;; -18E7;CANADIAN SYLLABICS TTHAA;Lo;0;L;;;;;N;;;;; -18E8;CANADIAN SYLLABICS TLHWE;Lo;0;L;;;;;N;;;;; -18E9;CANADIAN SYLLABICS TLHOO;Lo;0;L;;;;;N;;;;; -18EA;CANADIAN SYLLABICS SAYISI SHWE;Lo;0;L;;;;;N;;;;; -18EB;CANADIAN SYLLABICS SAYISI SHOO;Lo;0;L;;;;;N;;;;; -18EC;CANADIAN SYLLABICS SAYISI HOO;Lo;0;L;;;;;N;;;;; -18ED;CANADIAN SYLLABICS CARRIER GWU;Lo;0;L;;;;;N;;;;; -18EE;CANADIAN SYLLABICS CARRIER DENE GEE;Lo;0;L;;;;;N;;;;; -18EF;CANADIAN SYLLABICS CARRIER GAA;Lo;0;L;;;;;N;;;;; -18F0;CANADIAN SYLLABICS CARRIER GWA;Lo;0;L;;;;;N;;;;; -18F1;CANADIAN SYLLABICS SAYISI JUU;Lo;0;L;;;;;N;;;;; -18F2;CANADIAN SYLLABICS CARRIER JWA;Lo;0;L;;;;;N;;;;; -18F3;CANADIAN SYLLABICS BEAVER DENE L;Lo;0;L;;;;;N;;;;; -18F4;CANADIAN SYLLABICS BEAVER DENE R;Lo;0;L;;;;;N;;;;; -18F5;CANADIAN SYLLABICS CARRIER DENTAL S;Lo;0;L;;;;;N;;;;; -1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; -1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; -1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; -1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; -1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; -1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; -1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; -1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; -1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; -1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; -190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; -190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; -190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; -190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; -190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; -190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; -1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; -1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; -1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; -1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; -1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; -1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; -1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; -1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; -1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; -1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; -191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; -191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; -191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; -1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; -1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -1929;LIMBU SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; -192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; -192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;N;;;;; -1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; -1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; -1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; -1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; -1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; -1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; -1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; -1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; -1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; -1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; -193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; -193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; -1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; -1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; -1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; -1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; -1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; -1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; -1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; -1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; -1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; -1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; -1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; -1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; -1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; -195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; -195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; -195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; -195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; -195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; -195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; -1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; -1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; -1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; -1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; -1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; -1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; -1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; -1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; -1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; -1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; -196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; -196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; -196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; -196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; -1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; -1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; -1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; -1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; -1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; -1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; -1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; -1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; -1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; -1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; -1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; -1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; -1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; -1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; -1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; -198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; -198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; -198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; -198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; -198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; -198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; -1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; -1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; -1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; -1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; -1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; -1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; -1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; -1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; -1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; -1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; -199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; -199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; -199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; -199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; -199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; -199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; -19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; -19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; -19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; -19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; -19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; -19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; -19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; -19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; -19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; -19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; -19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;; -19AB;NEW TAI LUE LETTER LOW SUA;Lo;0;L;;;;;N;;;;; -19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; -19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; -19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; -19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; -19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; -19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; -19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; -19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; -19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; -19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; -19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; -19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; -19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; -19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; -19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; -19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; -19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; -19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; -19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -19DA;NEW TAI LUE THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; -19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; -19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; -19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; -19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; -19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; -19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; -19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; -19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; -19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; -19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; -19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; -19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; -19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; -19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; -19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; -19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; -19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; -19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; -19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; -19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; -19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; -19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; -19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; -19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; -19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; -19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; -19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; -19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; -19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; -19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; -19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; -19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; -19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; -1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; -1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; -1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; -1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; -1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; -1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; -1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; -1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; -1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; -1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; -1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; -1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; -1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; -1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; -1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; -1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; -1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; -1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; -1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; -1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; -1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; -1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; -1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; -1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; -1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; -1A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;; -1A21;TAI THAM LETTER HIGH KHA;Lo;0;L;;;;;N;;;;; -1A22;TAI THAM LETTER HIGH KXA;Lo;0;L;;;;;N;;;;; -1A23;TAI THAM LETTER LOW KA;Lo;0;L;;;;;N;;;;; -1A24;TAI THAM LETTER LOW KXA;Lo;0;L;;;;;N;;;;; -1A25;TAI THAM LETTER LOW KHA;Lo;0;L;;;;;N;;;;; -1A26;TAI THAM LETTER NGA;Lo;0;L;;;;;N;;;;; -1A27;TAI THAM LETTER HIGH CA;Lo;0;L;;;;;N;;;;; -1A28;TAI THAM LETTER HIGH CHA;Lo;0;L;;;;;N;;;;; -1A29;TAI THAM LETTER LOW CA;Lo;0;L;;;;;N;;;;; -1A2A;TAI THAM LETTER LOW SA;Lo;0;L;;;;;N;;;;; -1A2B;TAI THAM LETTER LOW CHA;Lo;0;L;;;;;N;;;;; -1A2C;TAI THAM LETTER NYA;Lo;0;L;;;;;N;;;;; -1A2D;TAI THAM LETTER RATA;Lo;0;L;;;;;N;;;;; -1A2E;TAI THAM LETTER HIGH RATHA;Lo;0;L;;;;;N;;;;; -1A2F;TAI THAM LETTER DA;Lo;0;L;;;;;N;;;;; -1A30;TAI THAM LETTER LOW RATHA;Lo;0;L;;;;;N;;;;; -1A31;TAI THAM LETTER RANA;Lo;0;L;;;;;N;;;;; -1A32;TAI THAM LETTER HIGH TA;Lo;0;L;;;;;N;;;;; -1A33;TAI THAM LETTER HIGH THA;Lo;0;L;;;;;N;;;;; -1A34;TAI THAM LETTER LOW TA;Lo;0;L;;;;;N;;;;; -1A35;TAI THAM LETTER LOW THA;Lo;0;L;;;;;N;;;;; -1A36;TAI THAM LETTER NA;Lo;0;L;;;;;N;;;;; -1A37;TAI THAM LETTER BA;Lo;0;L;;;;;N;;;;; -1A38;TAI THAM LETTER HIGH PA;Lo;0;L;;;;;N;;;;; -1A39;TAI THAM LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; -1A3A;TAI THAM LETTER HIGH FA;Lo;0;L;;;;;N;;;;; -1A3B;TAI THAM LETTER LOW PA;Lo;0;L;;;;;N;;;;; -1A3C;TAI THAM LETTER LOW FA;Lo;0;L;;;;;N;;;;; -1A3D;TAI THAM LETTER LOW PHA;Lo;0;L;;;;;N;;;;; -1A3E;TAI THAM LETTER MA;Lo;0;L;;;;;N;;;;; -1A3F;TAI THAM LETTER LOW YA;Lo;0;L;;;;;N;;;;; -1A40;TAI THAM LETTER HIGH YA;Lo;0;L;;;;;N;;;;; -1A41;TAI THAM LETTER RA;Lo;0;L;;;;;N;;;;; -1A42;TAI THAM LETTER RUE;Lo;0;L;;;;;N;;;;; -1A43;TAI THAM LETTER LA;Lo;0;L;;;;;N;;;;; -1A44;TAI THAM LETTER LUE;Lo;0;L;;;;;N;;;;; -1A45;TAI THAM LETTER WA;Lo;0;L;;;;;N;;;;; -1A46;TAI THAM LETTER HIGH SHA;Lo;0;L;;;;;N;;;;; -1A47;TAI THAM LETTER HIGH SSA;Lo;0;L;;;;;N;;;;; -1A48;TAI THAM LETTER HIGH SA;Lo;0;L;;;;;N;;;;; -1A49;TAI THAM LETTER HIGH HA;Lo;0;L;;;;;N;;;;; -1A4A;TAI THAM LETTER LLA;Lo;0;L;;;;;N;;;;; -1A4B;TAI THAM LETTER A;Lo;0;L;;;;;N;;;;; -1A4C;TAI THAM LETTER LOW HA;Lo;0;L;;;;;N;;;;; -1A4D;TAI THAM LETTER I;Lo;0;L;;;;;N;;;;; -1A4E;TAI THAM LETTER II;Lo;0;L;;;;;N;;;;; -1A4F;TAI THAM LETTER U;Lo;0;L;;;;;N;;;;; -1A50;TAI THAM LETTER UU;Lo;0;L;;;;;N;;;;; -1A51;TAI THAM LETTER EE;Lo;0;L;;;;;N;;;;; -1A52;TAI THAM LETTER OO;Lo;0;L;;;;;N;;;;; -1A53;TAI THAM LETTER LAE;Lo;0;L;;;;;N;;;;; -1A54;TAI THAM LETTER GREAT SA;Lo;0;L;;;;;N;;;;; -1A55;TAI THAM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;; -1A56;TAI THAM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;; -1A57;TAI THAM CONSONANT SIGN LA TANG LAI;Mc;0;L;;;;;N;;;;; -1A58;TAI THAM SIGN MAI KANG LAI;Mn;0;NSM;;;;;N;;;;; -1A59;TAI THAM CONSONANT SIGN FINAL NGA;Mn;0;NSM;;;;;N;;;;; -1A5A;TAI THAM CONSONANT SIGN LOW PA;Mn;0;NSM;;;;;N;;;;; -1A5B;TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA;Mn;0;NSM;;;;;N;;;;; -1A5C;TAI THAM CONSONANT SIGN MA;Mn;0;NSM;;;;;N;;;;; -1A5D;TAI THAM CONSONANT SIGN BA;Mn;0;NSM;;;;;N;;;;; -1A5E;TAI THAM CONSONANT SIGN SA;Mn;0;NSM;;;;;N;;;;; -1A60;TAI THAM SIGN SAKOT;Mn;9;NSM;;;;;N;;;;; -1A61;TAI THAM VOWEL SIGN A;Mc;0;L;;;;;N;;;;; -1A62;TAI THAM VOWEL SIGN MAI SAT;Mn;0;NSM;;;;;N;;;;; -1A63;TAI THAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -1A64;TAI THAM VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;; -1A65;TAI THAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -1A66;TAI THAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -1A67;TAI THAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; -1A68;TAI THAM VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;; -1A69;TAI THAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -1A6A;TAI THAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -1A6B;TAI THAM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -1A6C;TAI THAM VOWEL SIGN OA BELOW;Mn;0;NSM;;;;;N;;;;; -1A6D;TAI THAM VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; -1A6E;TAI THAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -1A6F;TAI THAM VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; -1A70;TAI THAM VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1A71;TAI THAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -1A72;TAI THAM VOWEL SIGN THAM AI;Mc;0;L;;;;;N;;;;; -1A73;TAI THAM VOWEL SIGN OA ABOVE;Mn;0;NSM;;;;;N;;;;; -1A74;TAI THAM SIGN MAI KANG;Mn;0;NSM;;;;;N;;;;; -1A75;TAI THAM SIGN TONE-1;Mn;230;NSM;;;;;N;;;;; -1A76;TAI THAM SIGN TONE-2;Mn;230;NSM;;;;;N;;;;; -1A77;TAI THAM SIGN KHUEN TONE-3;Mn;230;NSM;;;;;N;;;;; -1A78;TAI THAM SIGN KHUEN TONE-4;Mn;230;NSM;;;;;N;;;;; -1A79;TAI THAM SIGN KHUEN TONE-5;Mn;230;NSM;;;;;N;;;;; -1A7A;TAI THAM SIGN RA HAAM;Mn;230;NSM;;;;;N;;;;; -1A7B;TAI THAM SIGN MAI SAM;Mn;230;NSM;;;;;N;;;;; -1A7C;TAI THAM SIGN KHUEN-LUE KARAN;Mn;230;NSM;;;;;N;;;;; -1A7F;TAI THAM COMBINING CRYPTOGRAMMIC DOT;Mn;220;NSM;;;;;N;;;;; -1A80;TAI THAM HORA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1A81;TAI THAM HORA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1A82;TAI THAM HORA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1A83;TAI THAM HORA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1A84;TAI THAM HORA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1A85;TAI THAM HORA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1A86;TAI THAM HORA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1A87;TAI THAM HORA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1A88;TAI THAM HORA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1A89;TAI THAM HORA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1A90;TAI THAM THAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1A91;TAI THAM THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1A92;TAI THAM THAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1A93;TAI THAM THAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1A94;TAI THAM THAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1A95;TAI THAM THAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1A96;TAI THAM THAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1A97;TAI THAM THAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1A98;TAI THAM THAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1A99;TAI THAM THAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1AA0;TAI THAM SIGN WIANG;Po;0;L;;;;;N;;;;; -1AA1;TAI THAM SIGN WIANGWAAK;Po;0;L;;;;;N;;;;; -1AA2;TAI THAM SIGN SAWAN;Po;0;L;;;;;N;;;;; -1AA3;TAI THAM SIGN KEOW;Po;0;L;;;;;N;;;;; -1AA4;TAI THAM SIGN HOY;Po;0;L;;;;;N;;;;; -1AA5;TAI THAM SIGN DOKMAI;Po;0;L;;;;;N;;;;; -1AA6;TAI THAM SIGN REVERSED ROTATED RANA;Po;0;L;;;;;N;;;;; -1AA7;TAI THAM SIGN MAI YAMOK;Lm;0;L;;;;;N;;;;; -1AA8;TAI THAM SIGN KAAN;Po;0;L;;;;;N;;;;; -1AA9;TAI THAM SIGN KAANKUU;Po;0;L;;;;;N;;;;; -1AAA;TAI THAM SIGN SATKAAN;Po;0;L;;;;;N;;;;; -1AAB;TAI THAM SIGN SATKAANKUU;Po;0;L;;;;;N;;;;; -1AAC;TAI THAM SIGN HANG;Po;0;L;;;;;N;;;;; -1AAD;TAI THAM SIGN CAANG;Po;0;L;;;;;N;;;;; -1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;; -1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;; -1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;; -1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;;;; -1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;;;; -1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;;;; -1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;;;; -1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;;;; -1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;;;; -1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;;;; -1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;;;; -1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;;;; -1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;;;; -1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;;;; -1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;;;; -1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;;;; -1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;;;; -1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;;;; -1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;;;; -1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;; -1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;;;; -1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;; -1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;;;; -1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;; -1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;;;; -1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;; -1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;;;; -1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;;;; -1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;; -1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;;;; -1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;; -1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;;;; -1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;; -1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;;;; -1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;; -1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;;;; -1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;; -1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;; -1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;;;; -1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;; -1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;;;; -1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;; -1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;; -1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;; -1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;; -1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;; -1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;;;; -1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;;;; -1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;; -1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;; -1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;;;; -1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;;;; -1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;;;; -1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;;;; -1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;; -1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;;;; -1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;;;; -1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;;;; -1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;;;; -1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;;;; -1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;; -1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;;;; -1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;;;; -1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;;;; -1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;; -1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;;;; -1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;;;; -1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;; -1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;; -1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;; -1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;; -1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; -1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; -1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; -1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1B5A;BALINESE PANTI;Po;0;L;;;;;N;;;;; -1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;;;; -1B5C;BALINESE WINDU;Po;0;L;;;;;N;;;;; -1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;;;; -1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;;;; -1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;;;; -1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;;;; -1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;; -1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;; -1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;; -1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;; -1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;; -1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;; -1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;; -1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;; -1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;; -1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;; -1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;; -1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;; -1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;; -1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;; -1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; -1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;; -1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;; -1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;; -1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;; -1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;; -1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;; -1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;; -1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;; -1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; -1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; -1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; -1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;; -1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;; -1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;; -1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;; -1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;; -1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;; -1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;; -1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;; -1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;; -1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;; -1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;; -1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;; -1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;; -1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;; -1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;; -1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;; -1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;; -1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;; -1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;; -1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;; -1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;; -1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;; -1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;; -1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;; -1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;; -1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;; -1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;; -1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;; -1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;; -1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;; -1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;; -1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;; -1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;; -1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;; -1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;; -1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;; -1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;; -1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;; -1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;; -1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;; -1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;; -1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;; -1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;; -1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;; -1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;; -1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;; -1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;; -1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;; -1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;; -1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;; -1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;; -1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;; -1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;; -1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;; -1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;; -1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;; -1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;; -1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;; -1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;; -1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;; -1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;; -1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;; -1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;; -1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;; -1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;; -1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;; -1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;; -1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;; -1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;; -1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;; -1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;; -1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;; -1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;; -1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;; -1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;; -1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;; -1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;; -1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;; -1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;; -1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;; -1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;; -1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;; -1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;; -1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;; -1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;; -1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;; -1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; -1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;; -1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; -1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;; -1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;; -1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;; -1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;; -1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;; -1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;; -1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;; -1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;; -1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;; -1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;; -1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;; -1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;; -1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;; -1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;; -1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;; -1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;; -1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;; -1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;; -1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;; -1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;; -1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;; -1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;; -1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;; -1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;; -1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;; -1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;; -1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;; -1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;; -1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;; -1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;; -1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;; -1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;; -1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;; -1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;; -1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;; -1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;; -1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;; -1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;; -1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;; -1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;; -1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;; -1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;; -1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;; -1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; -1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;; -1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;; -1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;; -1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;; -1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;; -1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;; -1CD0;VEDIC TONE KARSHANA;Mn;230;NSM;;;;;N;;;;; -1CD1;VEDIC TONE SHARA;Mn;230;NSM;;;;;N;;;;; -1CD2;VEDIC TONE PRENKHA;Mn;230;NSM;;;;;N;;;;; -1CD3;VEDIC SIGN NIHSHVASA;Po;0;L;;;;;N;;;;; -1CD4;VEDIC SIGN YAJURVEDIC MIDLINE SVARITA;Mn;1;NSM;;;;;N;;;;; -1CD5;VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; -1CD6;VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; -1CD7;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;; -1CD8;VEDIC TONE CANDRA BELOW;Mn;220;NSM;;;;;N;;;;; -1CD9;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER;Mn;220;NSM;;;;;N;;;;; -1CDA;VEDIC TONE DOUBLE SVARITA;Mn;230;NSM;;;;;N;;;;; -1CDB;VEDIC TONE TRIPLE SVARITA;Mn;230;NSM;;;;;N;;;;; -1CDC;VEDIC TONE KATHAKA ANUDATTA;Mn;220;NSM;;;;;N;;;;; -1CDD;VEDIC TONE DOT BELOW;Mn;220;NSM;;;;;N;;;;; -1CDE;VEDIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -1CDF;VEDIC TONE THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; -1CE0;VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;Mn;230;NSM;;;;;N;;;;; -1CE1;VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;Mc;0;L;;;;;N;;;;; -1CE2;VEDIC SIGN VISARGA SVARITA;Mn;1;NSM;;;;;N;;;;; -1CE3;VEDIC SIGN VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;; -1CE4;VEDIC SIGN REVERSED VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;; -1CE5;VEDIC SIGN VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;; -1CE6;VEDIC SIGN REVERSED VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;; -1CE7;VEDIC SIGN VISARGA UDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;; -1CE8;VEDIC SIGN VISARGA ANUDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;; -1CE9;VEDIC SIGN ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;; -1CEA;VEDIC SIGN ANUSVARA BAHIRGOMUKHA;Lo;0;L;;;;;N;;;;; -1CEB;VEDIC SIGN ANUSVARA VAMAGOMUKHA;Lo;0;L;;;;;N;;;;; -1CEC;VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;Lo;0;L;;;;;N;;;;; -1CED;VEDIC SIGN TIRYAK;Mn;220;NSM;;;;;N;;;;; -1CEE;VEDIC SIGN HEXIFORM LONG ANUSVARA;Lo;0;L;;;;;N;;;;; -1CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;; -1CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;; -1CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;; -1CF2;VEDIC SIGN ARDHAVISARGA;Mc;0;L;;;;;N;;;;; -1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; -1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; -1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; -1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; -1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; -1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; -1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; -1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; -1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; -1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; -1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; -1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; -1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; -1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; -1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; -1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; -1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; -1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; -1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; -1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; -1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; -1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; -1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; -1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; -1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; -1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; -1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; -1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; -1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; -1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; -1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; -1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; -1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; -1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; -1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; -1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; -1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; -1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; -1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; -1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; -1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; -1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; -1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; -1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; -1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L; 0041;;;;N;;;;; -1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L; 00C6;;;;N;;;;; -1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L; 0042;;;;N;;;;; -1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; -1D30;MODIFIER LETTER CAPITAL D;Lm;0;L; 0044;;;;N;;;;; -1D31;MODIFIER LETTER CAPITAL E;Lm;0;L; 0045;;;;N;;;;; -1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L; 018E;;;;N;;;;; -1D33;MODIFIER LETTER CAPITAL G;Lm;0;L; 0047;;;;N;;;;; -1D34;MODIFIER LETTER CAPITAL H;Lm;0;L; 0048;;;;N;;;;; -1D35;MODIFIER LETTER CAPITAL I;Lm;0;L; 0049;;;;N;;;;; -1D36;MODIFIER LETTER CAPITAL J;Lm;0;L; 004A;;;;N;;;;; -1D37;MODIFIER LETTER CAPITAL K;Lm;0;L; 004B;;;;N;;;;; -1D38;MODIFIER LETTER CAPITAL L;Lm;0;L; 004C;;;;N;;;;; -1D39;MODIFIER LETTER CAPITAL M;Lm;0;L; 004D;;;;N;;;;; -1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L; 004E;;;;N;;;;; -1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; -1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L; 004F;;;;N;;;;; -1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L; 0222;;;;N;;;;; -1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L; 0050;;;;N;;;;; -1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L; 0052;;;;N;;;;; -1D40;MODIFIER LETTER CAPITAL T;Lm;0;L; 0054;;;;N;;;;; -1D41;MODIFIER LETTER CAPITAL U;Lm;0;L; 0055;;;;N;;;;; -1D42;MODIFIER LETTER CAPITAL W;Lm;0;L; 0057;;;;N;;;;; -1D43;MODIFIER LETTER SMALL A;Lm;0;L; 0061;;;;N;;;;; -1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L; 0250;;;;N;;;;; -1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L; 0251;;;;N;;;;; -1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L; 1D02;;;;N;;;;; -1D47;MODIFIER LETTER SMALL B;Lm;0;L; 0062;;;;N;;;;; -1D48;MODIFIER LETTER SMALL D;Lm;0;L; 0064;;;;N;;;;; -1D49;MODIFIER LETTER SMALL E;Lm;0;L; 0065;;;;N;;;;; -1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L; 0259;;;;N;;;;; -1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L; 025B;;;;N;;;;; -1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L; 025C;;;;N;;;;; -1D4D;MODIFIER LETTER SMALL G;Lm;0;L; 0067;;;;N;;;;; -1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; -1D4F;MODIFIER LETTER SMALL K;Lm;0;L; 006B;;;;N;;;;; -1D50;MODIFIER LETTER SMALL M;Lm;0;L; 006D;;;;N;;;;; -1D51;MODIFIER LETTER SMALL ENG;Lm;0;L; 014B;;;;N;;;;; -1D52;MODIFIER LETTER SMALL O;Lm;0;L; 006F;;;;N;;;;; -1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L; 0254;;;;N;;;;; -1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L; 1D16;;;;N;;;;; -1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L; 1D17;;;;N;;;;; -1D56;MODIFIER LETTER SMALL P;Lm;0;L; 0070;;;;N;;;;; -1D57;MODIFIER LETTER SMALL T;Lm;0;L; 0074;;;;N;;;;; -1D58;MODIFIER LETTER SMALL U;Lm;0;L; 0075;;;;N;;;;; -1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L; 1D1D;;;;N;;;;; -1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L; 026F;;;;N;;;;; -1D5B;MODIFIER LETTER SMALL V;Lm;0;L; 0076;;;;N;;;;; -1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L; 1D25;;;;N;;;;; -1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L; 03B2;;;;N;;;;; -1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L; 03B3;;;;N;;;;; -1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L; 03B4;;;;N;;;;; -1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L; 03C6;;;;N;;;;; -1D61;MODIFIER LETTER SMALL CHI;Lm;0;L; 03C7;;;;N;;;;; -1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; -1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L; 0072;;;;N;;;;; -1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L; 0075;;;;N;;;;; -1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L; 0076;;;;N;;;;; -1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L; 03B2;;;;N;;;;; -1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L; 03C1;;;;N;;;;; -1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L; 03C6;;;;N;;;;; -1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L; 03C7;;;;N;;;;; -1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; -1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; -1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; -1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L; 043D;;;;N;;;;; -1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D -1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; -1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63 -1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; -1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; -1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; -1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; -1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; -1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L; 0252;;;;N;;;;; -1D9C;MODIFIER LETTER SMALL C;Lm;0;L; 0063;;;;N;;;;; -1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L; 0255;;;;N;;;;; -1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L; 00F0;;;;N;;;;; -1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L; 025C;;;;N;;;;; -1DA0;MODIFIER LETTER SMALL F;Lm;0;L; 0066;;;;N;;;;; -1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L; 025F;;;;N;;;;; -1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L; 0261;;;;N;;;;; -1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L; 0265;;;;N;;;;; -1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L; 0268;;;;N;;;;; -1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L; 0269;;;;N;;;;; -1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L; 026A;;;;N;;;;; -1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L; 1D7B;;;;N;;;;; -1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L; 029D;;;;N;;;;; -1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L; 026D;;;;N;;;;; -1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L; 1D85;;;;N;;;;; -1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L; 029F;;;;N;;;;; -1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L; 0271;;;;N;;;;; -1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L; 0270;;;;N;;;;; -1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L; 0272;;;;N;;;;; -1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L; 0273;;;;N;;;;; -1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L; 0274;;;;N;;;;; -1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L; 0275;;;;N;;;;; -1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L; 0278;;;;N;;;;; -1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L; 0282;;;;N;;;;; -1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L; 0283;;;;N;;;;; -1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L; 01AB;;;;N;;;;; -1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L; 0289;;;;N;;;;; -1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L; 028A;;;;N;;;;; -1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L; 1D1C;;;;N;;;;; -1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L; 028B;;;;N;;;;; -1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L; 028C;;;;N;;;;; -1DBB;MODIFIER LETTER SMALL Z;Lm;0;L; 007A;;;;N;;;;; -1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L; 0290;;;;N;;;;; -1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L; 0291;;;;N;;;;; -1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L; 0292;;;;N;;;;; -1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L; 03B8;;;;N;;;;; -1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; -1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; -1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; -1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;; -1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;; -1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;; -1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;; -1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;; -1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;; -1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;; -1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;; -1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;; -1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;; -1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;; -1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;; -1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;; -1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;; -1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;; -1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;; -1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;; -1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;; -1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;; -1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;; -1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;; -1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;; -1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;; -1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;; -1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;; -1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;; -1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;; -1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;; -1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;; -1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;; -1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;; -1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;; -1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; -1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; -1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; -1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 -1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; -1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 -1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; -1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 -1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; -1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 -1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; -1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 -1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; -1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A -1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; -1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C -1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; -1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E -1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; -1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 -1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; -1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 -1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; -1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 -1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; -1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 -1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; -1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 -1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; -1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A -1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; -1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C -1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; -1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E -1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; -1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 -1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; -1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 -1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; -1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 -1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; -1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 -1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; -1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 -1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; -1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A -1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; -1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C -1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; -1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E -1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; -1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 -1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; -1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 -1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; -1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 -1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; -1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 -1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; -1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 -1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; -1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A -1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; -1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C -1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; -1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E -1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; -1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 -1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; -1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 -1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; -1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 -1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; -1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 -1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; -1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 -1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; -1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A -1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; -1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C -1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; -1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E -1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; -1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 -1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; -1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 -1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; -1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 -1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; -1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 -1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; -1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 -1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; -1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A -1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; -1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C -1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; -1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E -1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; -1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 -1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; -1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 -1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; -1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 -1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; -1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 -1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; -1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 -1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; -1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A -1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; -1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C -1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; -1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E -1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; -1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 -1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; -1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 -1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; -1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 -1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; -1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 -1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; -1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 -1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; -1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A -1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; -1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C -1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; -1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E -1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; -1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 -1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; -1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 -1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; -1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 -1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; -1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 -1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; -1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 -1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; -1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A -1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; -1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C -1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; -1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E -1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; -1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 -1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; -1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 -1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; -1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 -1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; -1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; -1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; -1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; -1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L; 0061 02BE;;;;N;;;;; -1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 -1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;; -1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;; -1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF; -1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;; -1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; -1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 -1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; -1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 -1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; -1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 -1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; -1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 -1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; -1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 -1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; -1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA -1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; -1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC -1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; -1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE -1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; -1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 -1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; -1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 -1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; -1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 -1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; -1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 -1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; -1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 -1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; -1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA -1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; -1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC -1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; -1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE -1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; -1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 -1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; -1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 -1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; -1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 -1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; -1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 -1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; -1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 -1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; -1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA -1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; -1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC -1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; -1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE -1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; -1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 -1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; -1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 -1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; -1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 -1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; -1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 -1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; -1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 -1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; -1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA -1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; -1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC -1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; -1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE -1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; -1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 -1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; -1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 -1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; -1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 -1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; -1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 -1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; -1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 -1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; -1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA -1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; -1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC -1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; -1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE -1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; -1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 -1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; -1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 -1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; -1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 -1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; -1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 -1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; -1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 -1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB; -1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA -1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD; -1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC -1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF; -1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE -1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 -1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 -1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A -1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B -1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C -1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D -1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E -1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F -1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; -1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; -1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; -1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; -1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; -1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; -1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; -1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; -1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 -1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 -1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A -1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B -1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C -1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D -1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; -1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; -1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; -1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; -1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; -1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; -1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 -1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 -1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A -1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B -1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C -1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D -1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E -1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F -1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; -1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; -1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; -1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; -1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; -1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; -1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; -1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; -1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 -1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 -1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A -1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B -1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C -1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D -1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E -1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F -1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; -1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; -1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; -1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; -1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; -1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; -1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; -1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; -1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 -1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 -1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A -1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B -1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C -1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D -1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; -1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; -1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; -1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; -1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; -1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; -1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; -1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 -1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; -1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B -1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; -1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D -1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; -1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F -1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; -1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; -1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; -1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; -1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 -1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 -1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A -1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B -1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C -1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D -1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E -1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F -1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; -1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; -1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; -1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; -1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; -1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; -1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; -1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; -1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA -1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB -1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 -1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 -1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA -1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB -1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA -1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB -1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 -1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 -1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA -1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB -1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA -1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB -1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 -1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 -1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A -1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B -1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C -1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D -1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E -1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F -1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; -1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; -1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; -1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; -1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; -1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; -1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; -1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; -1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 -1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 -1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A -1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B -1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C -1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D -1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E -1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F -1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; -1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; -1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; -1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; -1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; -1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; -1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; -1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; -1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 -1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 -1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA -1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB -1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC -1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD -1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE -1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF -1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; -1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; -1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; -1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; -1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; -1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; -1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; -1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; -1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 -1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 -1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; -1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC -1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; -1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; -1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; -1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; -1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; -1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; -1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; -1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; -1FBD;GREEK KORONIS;Sk;0;ON; 0020 0313;;;;N;;;;; -1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 -1FBF;GREEK PSILI;Sk;0;ON; 0020 0313;;;;N;;;;; -1FC0;GREEK PERISPOMENI;Sk;0;ON; 0020 0342;;;;N;;;;; -1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; -1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; -1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC -1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; -1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; -1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; -1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; -1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; -1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; -1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; -1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; -1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; -1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; -1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; -1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 -1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 -1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; -1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; -1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; -1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; -1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; -1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; -1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; -1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; -1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; -1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; -1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; -1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 -1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 -1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; -1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; -1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; -1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC -1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; -1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; -1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; -1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; -1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; -1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; -1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; -1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; -1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; -1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; -1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; -1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC -1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; -1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; -1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; -1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; -1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; -1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; -1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; -1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; -1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; -1FFE;GREEK DASIA;Sk;0;ON; 0020 0314;;;;N;;;;; -2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; -2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; -2002;EN SPACE;Zs;0;WS; 0020;;;;N;;;;; -2003;EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2004;THREE-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2005;FOUR-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2006;SIX-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; -2007;FIGURE SPACE;Zs;0;WS; 0020;;;;N;;;;; -2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; -2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; -200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; -200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; -200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; -200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; -200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; -200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; -2010;HYPHEN;Pd;0;ON;;;;;N;;;;; -2011;NON-BREAKING HYPHEN;Pd;0;ON; 2010;;;;N;;;;; -2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; -2013;EN DASH;Pd;0;ON;;;;;N;;;;; -2014;EM DASH;Pd;0;ON;;;;;N;;;;; -2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; -2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; -2017;DOUBLE LOW LINE;Po;0;ON; 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; -2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;; -2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;; -201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;; -201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;; -201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;; -201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;; -201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;; -201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE REVERSED COMMA QUOTATION MARK;;;; -2020;DAGGER;Po;0;ON;;;;;N;;;;; -2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; -2022;BULLET;Po;0;ON;;;;;N;;;;; -2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; -2024;ONE DOT LEADER;Po;0;ON; 002E;;;;N;;;;; -2025;TWO DOT LEADER;Po;0;ON; 002E 002E;;;;N;;;;; -2026;HORIZONTAL ELLIPSIS;Po;0;ON; 002E 002E 002E;;;;N;;;;; -2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; -2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; -2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; -202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; -202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; -202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; -202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; -202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; -202F;NARROW NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;;;;; -2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; -2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; -2032;PRIME;Po;0;ET;;;;;N;;;;; -2033;DOUBLE PRIME;Po;0;ET; 2032 2032;;;;N;;;;; -2034;TRIPLE PRIME;Po;0;ET; 2032 2032 2032;;;;N;;;;; -2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; -2036;REVERSED DOUBLE PRIME;Po;0;ON; 2035 2035;;;;N;;;;; -2037;REVERSED TRIPLE PRIME;Po;0;ON; 2035 2035 2035;;;;N;;;;; -2038;CARET;Po;0;ON;;;;;N;;;;; -2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; -203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; -203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; -203C;DOUBLE EXCLAMATION MARK;Po;0;ON; 0021 0021;;;;N;;;;; -203D;INTERROBANG;Po;0;ON;;;;;N;;;;; -203E;OVERLINE;Po;0;ON; 0020 0305;;;;N;SPACING OVERSCORE;;;; -203F;UNDERTIE;Pc;0;ON;;;;;N;;;;; -2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; -2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; -2042;ASTERISM;Po;0;ON;;;;;N;;;;; -2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; -2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; -2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; -2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; -2047;DOUBLE QUESTION MARK;Po;0;ON; 003F 003F;;;;N;;;;; -2048;QUESTION EXCLAMATION MARK;Po;0;ON; 003F 0021;;;;N;;;;; -2049;EXCLAMATION QUESTION MARK;Po;0;ON; 0021 003F;;;;N;;;;; -204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; -204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; -204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; -204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; -204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; -2050;CLOSE UP;Po;0;ON;;;;;N;;;;; -2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; -2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; -2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; -2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; -2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2057;QUADRUPLE PRIME;Po;0;ON; 2032 2032 2032 2032;;;;N;;;;; -2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; -205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; -205D;TRICOLON;Po;0;ON;;;;;N;;;;; -205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; -205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS; 0020;;;;N;;;;; -2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; -2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; -2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; -2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; -2064;INVISIBLE PLUS;Cf;0;BN;;;;;N;;;;; -206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; -206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; -206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; -2070;SUPERSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; -2071;SUPERSCRIPT LATIN SMALL LETTER I;Lm;0;L; 0069;;;;N;;;;; -2074;SUPERSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; -2075;SUPERSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; -2076;SUPERSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; -2077;SUPERSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; -2078;SUPERSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; -2079;SUPERSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; -207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -207B;SUPERSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; -207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; -207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; -207F;SUPERSCRIPT LATIN SMALL LETTER N;Lm;0;L; 006E;;;;N;;;;; -2080;SUBSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; -2081;SUBSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; -2082;SUBSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; -2083;SUBSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; -2084;SUBSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; -2085;SUBSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; -2086;SUBSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; -2087;SUBSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; -2088;SUBSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; -2089;SUBSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; -208A;SUBSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -208B;SUBSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; -208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; -208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; -2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L; 0061;;;;N;;;;; -2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L; 0065;;;;N;;;;; -2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L; 006F;;;;N;;;;; -2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L; 0078;;;;N;;;;; -2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L; 0259;;;;N;;;;; -20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; -20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; -20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; -20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; -20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; -20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; -20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; -20A8;RUPEE SIGN;Sc;0;ET; 0052 0073;;;;N;;;;; -20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; -20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; -20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; -20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; -20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; -20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; -20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; -20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; -20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; -20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; -20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; -20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; -20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; -20B6;LIVRE TOURNOIS SIGN;Sc;0;ET;;;;;N;;;;; -20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;; -20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;; -20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; -20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; -20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; -20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; -20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; -20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; -20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; -20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; -20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; -20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; -20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; -20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; -20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; -20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; -20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; -20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; -20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; -20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; -20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; -20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; -20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; -20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; -20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; -20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; -20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; -20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; -20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; -20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; -20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; -20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; -20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;; -2100;ACCOUNT OF;So;0;ON; 0061 002F 0063;;;;N;;;;; -2101;ADDRESSED TO THE SUBJECT;So;0;ON; 0061 002F 0073;;;;N;;;;; -2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L; 0043;;;;N;DOUBLE-STRUCK C;;;; -2103;DEGREE CELSIUS;So;0;ON; 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; -2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; -2105;CARE OF;So;0;ON; 0063 002F 006F;;;;N;;;;; -2106;CADA UNA;So;0;ON; 0063 002F 0075;;;;N;;;;; -2107;EULER CONSTANT;Lu;0;L; 0190;;;;N;EULERS;;;; -2108;SCRUPLE;So;0;ON;;;;;N;;;;; -2109;DEGREE FAHRENHEIT;So;0;ON; 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; -210A;SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; -210B;SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;SCRIPT H;;;; -210C;BLACK-LETTER CAPITAL H;Lu;0;L; 0048;;;;N;BLACK-LETTER H;;;; -210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L; 0048;;;;N;DOUBLE-STRUCK H;;;; -210E;PLANCK CONSTANT;Ll;0;L; 0068;;;;N;;;;; -210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L; 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; -2110;SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;SCRIPT I;;;; -2111;BLACK-LETTER CAPITAL I;Lu;0;L; 0049;;;;N;BLACK-LETTER I;;;; -2112;SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;SCRIPT L;;;; -2113;SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; -2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L; 004E;;;;N;DOUBLE-STRUCK N;;;; -2116;NUMERO SIGN;So;0;ON; 004E 006F;;;;N;NUMERO;;;; -2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; -2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; -2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L; 0050;;;;N;DOUBLE-STRUCK P;;;; -211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L; 0051;;;;N;DOUBLE-STRUCK Q;;;; -211B;SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;SCRIPT R;;;; -211C;BLACK-LETTER CAPITAL R;Lu;0;L; 0052;;;;N;BLACK-LETTER R;;;; -211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L; 0052;;;;N;DOUBLE-STRUCK R;;;; -211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; -211F;RESPONSE;So;0;ON;;;;;N;;;;; -2120;SERVICE MARK;So;0;ON; 0053 004D;;;;N;;;;; -2121;TELEPHONE SIGN;So;0;ON; 0054 0045 004C;;;;N;T E L SYMBOL;;;; -2122;TRADE MARK SIGN;So;0;ON; 0054 004D;;;;N;TRADEMARK;;;; -2123;VERSICLE;So;0;ON;;;;;N;;;;; -2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L; 005A;;;;N;DOUBLE-STRUCK Z;;;; -2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; -2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; -2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; -2128;BLACK-LETTER CAPITAL Z;Lu;0;L; 005A;;;;N;BLACK-LETTER Z;;;; -2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; -212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; -212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; -212C;SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;SCRIPT B;;;; -212D;BLACK-LETTER CAPITAL C;Lu;0;L; 0043;;;;N;BLACK-LETTER C;;;; -212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; -212F;SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; -2130;SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;SCRIPT E;;;; -2131;SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;SCRIPT F;;;; -2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E; -2133;SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;SCRIPT M;;;; -2134;SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; -2135;ALEF SYMBOL;Lo;0;L; 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; -2136;BET SYMBOL;Lo;0;L; 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; -2137;GIMEL SYMBOL;Lo;0;L; 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; -2138;DALET SYMBOL;Lo;0;L; 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; -2139;INFORMATION SOURCE;Ll;0;L; 0069;;;;N;;;;; -213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; -213B;FACSIMILE SIGN;So;0;ON; 0046 0041 0058;;;;N;;;;; -213C;DOUBLE-STRUCK SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON; 2211;;;;Y;;;;; -2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; -2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; -2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; -2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; -214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; -214C;PER SIGN;So;0;ON;;;;;N;;;;; -214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;; -214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132 -214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;; -2150;VULGAR FRACTION ONE SEVENTH;No;0;ON; 0031 2044 0037;;;1/7;N;;;;; -2151;VULGAR FRACTION ONE NINTH;No;0;ON; 0031 2044 0039;;;1/9;N;;;;; -2152;VULGAR FRACTION ONE TENTH;No;0;ON; 0031 2044 0031 0030;;;1/10;N;;;;; -2153;VULGAR FRACTION ONE THIRD;No;0;ON; 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; -2154;VULGAR FRACTION TWO THIRDS;No;0;ON; 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; -2155;VULGAR FRACTION ONE FIFTH;No;0;ON; 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; -2156;VULGAR FRACTION TWO FIFTHS;No;0;ON; 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; -2157;VULGAR FRACTION THREE FIFTHS;No;0;ON; 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; -2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON; 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; -2159;VULGAR FRACTION ONE SIXTH;No;0;ON; 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; -215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON; 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; -215B;VULGAR FRACTION ONE EIGHTH;No;0;ON; 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; -215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON; 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; -215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON; 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; -215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON; 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; -215F;FRACTION NUMERATOR ONE;No;0;ON; 0031 2044;;;1;N;;;;; -2160;ROMAN NUMERAL ONE;Nl;0;L; 0049;;;1;N;;;;2170; -2161;ROMAN NUMERAL TWO;Nl;0;L; 0049 0049;;;2;N;;;;2171; -2162;ROMAN NUMERAL THREE;Nl;0;L; 0049 0049 0049;;;3;N;;;;2172; -2163;ROMAN NUMERAL FOUR;Nl;0;L; 0049 0056;;;4;N;;;;2173; -2164;ROMAN NUMERAL FIVE;Nl;0;L; 0056;;;5;N;;;;2174; -2165;ROMAN NUMERAL SIX;Nl;0;L; 0056 0049;;;6;N;;;;2175; -2166;ROMAN NUMERAL SEVEN;Nl;0;L; 0056 0049 0049;;;7;N;;;;2176; -2167;ROMAN NUMERAL EIGHT;Nl;0;L; 0056 0049 0049 0049;;;8;N;;;;2177; -2168;ROMAN NUMERAL NINE;Nl;0;L; 0049 0058;;;9;N;;;;2178; -2169;ROMAN NUMERAL TEN;Nl;0;L; 0058;;;10;N;;;;2179; -216A;ROMAN NUMERAL ELEVEN;Nl;0;L; 0058 0049;;;11;N;;;;217A; -216B;ROMAN NUMERAL TWELVE;Nl;0;L; 0058 0049 0049;;;12;N;;;;217B; -216C;ROMAN NUMERAL FIFTY;Nl;0;L; 004C;;;50;N;;;;217C; -216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0043;;;100;N;;;;217D; -216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0044;;;500;N;;;;217E; -216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 004D;;;1000;N;;;;217F; -2170;SMALL ROMAN NUMERAL ONE;Nl;0;L; 0069;;;1;N;;;2160;;2160 -2171;SMALL ROMAN NUMERAL TWO;Nl;0;L; 0069 0069;;;2;N;;;2161;;2161 -2172;SMALL ROMAN NUMERAL THREE;Nl;0;L; 0069 0069 0069;;;3;N;;;2162;;2162 -2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L; 0069 0076;;;4;N;;;2163;;2163 -2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L; 0076;;;5;N;;;2164;;2164 -2175;SMALL ROMAN NUMERAL SIX;Nl;0;L; 0076 0069;;;6;N;;;2165;;2165 -2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L; 0076 0069 0069;;;7;N;;;2166;;2166 -2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L; 0076 0069 0069 0069;;;8;N;;;2167;;2167 -2178;SMALL ROMAN NUMERAL NINE;Nl;0;L; 0069 0078;;;9;N;;;2168;;2168 -2179;SMALL ROMAN NUMERAL TEN;Nl;0;L; 0078;;;10;N;;;2169;;2169 -217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L; 0078 0069;;;11;N;;;216A;;216A -217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L; 0078 0069 0069;;;12;N;;;216B;;216B -217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L; 006C;;;50;N;;;216C;;216C -217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0063;;;100;N;;;216D;;216D -217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0064;;;500;N;;;216E;;216E -217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 006D;;;1000;N;;;216F;;216F -2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; -2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; -2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; -2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184; -2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183 -2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;; -2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;; -2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;; -2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;; -2189;VULGAR FRACTION ZERO THIRDS;No;0;ON; 0030 2044 0033;;;0;N;;;;; -2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; -2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; -2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; -2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; -2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; -2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; -2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; -2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; -2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; -219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; -219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; -219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; -219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; -219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; -219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; -21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; -21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; -21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; -21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; -21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; -21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; -21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; -21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; -21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; -21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; -21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; -21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; -21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; -21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; -21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; -21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; -21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; -21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; -21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; -21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; -21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; -21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; -21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; -21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; -21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; -21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; -21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; -21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; -21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; -21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; -21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; -21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; -21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; -21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; -21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; -21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; -21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; -21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; -21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; -21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; -21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; -21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; -21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; -21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; -21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; -21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; -21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; -21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; -21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; -21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; -21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; -21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; -21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; -21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; -21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; -21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; -21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; -21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; -21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; -21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; -21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; -21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; -21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; -21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; -21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; -21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; -21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; -21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; -21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; -21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; -21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; -21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; -21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; -21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; -21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; -21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; -21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; -21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; -21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; -21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; -21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; -2200;FOR ALL;Sm;0;ON;;;;;N;;;;; -2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; -2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; -2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; -2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; -2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; -2206;INCREMENT;Sm;0;ON;;;;;N;;;;; -2207;NABLA;Sm;0;ON;;;;;N;;;;; -2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; -220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; -220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; -220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; -220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; -220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; -2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; -2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; -2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; -2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; -2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; -2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; -2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; -2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; -221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; -221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; -221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; -221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; -221E;INFINITY;Sm;0;ON;;;;;N;;;;; -221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; -2220;ANGLE;Sm;0;ON;;;;;Y;;;;; -2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; -2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; -2223;DIVIDES;Sm;0;ON;;;;;N;;;;; -2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; -2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; -2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; -2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; -222A;UNION;Sm;0;ON;;;;;N;;;;; -222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222C;DOUBLE INTEGRAL;Sm;0;ON; 222B 222B;;;;Y;;;;; -222D;TRIPLE INTEGRAL;Sm;0;ON; 222B 222B 222B;;;;Y;;;;; -222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -222F;SURFACE INTEGRAL;Sm;0;ON; 222E 222E;;;;Y;;;;; -2230;VOLUME INTEGRAL;Sm;0;ON; 222E 222E 222E;;;;Y;;;;; -2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2234;THEREFORE;Sm;0;ON;;;;;N;;;;; -2235;BECAUSE;Sm;0;ON;;;;;N;;;;; -2236;RATIO;Sm;0;ON;;;;;N;;;;; -2237;PROPORTION;Sm;0;ON;;;;;N;;;;; -2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; -2239;EXCESS;Sm;0;ON;;;;;Y;;;;; -223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; -223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; -223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;;;; -223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; -223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; -2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; -2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; -2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; -2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; -2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; -2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; -224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; -224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; -224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; -2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; -2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; -2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; -2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; -2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; -2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; -2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; -2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; -225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; -225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; -225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; -225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; -225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; -225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; -2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; -2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; -2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; -2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; -2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; -2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; -2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; -2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; -2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; -226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; -226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; -226C;BETWEEN;Sm;0;ON;;;;;N;;;;; -226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; -226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; -226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; -2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; -2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; -2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; -2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; -2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; -2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; -2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; -2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; -2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; -2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; -227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; -227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; -2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; -2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; -2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; -2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; -2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; -2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; -2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; -228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; -228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; -228C;MULTISET;Sm;0;ON;;;;;Y;;;;; -228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; -228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; -228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; -2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; -2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; -2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; -2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; -2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; -2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; -229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; -229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; -229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; -229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; -229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; -22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; -22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; -22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; -22A5;UP TACK;Sm;0;ON;;;;;N;;;;; -22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; -22A7;MODELS;Sm;0;ON;;;;;Y;;;;; -22A8;TRUE;Sm;0;ON;;;;;Y;;;;; -22A9;FORCES;Sm;0;ON;;;;;Y;;;;; -22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; -22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; -22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; -22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; -22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; -22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; -22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; -22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; -22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; -22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; -22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; -22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; -22BB;XOR;Sm;0;ON;;;;;N;;;;; -22BC;NAND;Sm;0;ON;;;;;N;;;;; -22BD;NOR;Sm;0;ON;;;;;N;;;;; -22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; -22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; -22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; -22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; -22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; -22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; -22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; -22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; -22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; -22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; -22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; -22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; -22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; -22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; -22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; -22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; -22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; -22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; -22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; -22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; -22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; -22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; -22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; -22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; -22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; -22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; -22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; -22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; -22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; -22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; -22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; -22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; -22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; -22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; -22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; -22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; -22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; -22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; -22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; -22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; -22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; -2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; -2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; -2302;HOUSE;So;0;ON;;;;;N;;;;; -2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; -2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; -2305;PROJECTIVE;So;0;ON;;;;;N;;;;; -2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; -2307;WAVY LINE;So;0;ON;;;;;N;;;;; -2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; -2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; -230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; -230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; -230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; -230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; -230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; -230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; -2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; -2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; -2312;ARC;So;0;ON;;;;;N;;;;; -2313;SEGMENT;So;0;ON;;;;;N;;;;; -2314;SECTOR;So;0;ON;;;;;N;;;;; -2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; -2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; -2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; -2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; -2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; -231A;WATCH;So;0;ON;;;;;N;;;;; -231B;HOURGLASS;So;0;ON;;;;;N;;;;; -231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; -231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; -231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; -231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; -2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2322;FROWN;So;0;ON;;;;;N;;;;; -2323;SMILE;So;0;ON;;;;;N;;;;; -2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; -2325;OPTION KEY;So;0;ON;;;;;N;;;;; -2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; -2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; -2328;KEYBOARD;So;0;ON;;;;;N;;;;; -2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; -232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; -232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; -232C;BENZENE RING;So;0;ON;;;;;N;;;;; -232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; -232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; -232F;SYMMETRY;So;0;ON;;;;;N;;;;; -2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; -2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; -2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; -2333;SLOPE;So;0;ON;;;;;N;;;;; -2334;COUNTERBORE;So;0;ON;;;;;N;;;;; -2335;COUNTERSINK;So;0;ON;;;;;N;;;;; -2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; -2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; -2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; -2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; -233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; -233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; -233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; -233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; -233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; -233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; -2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; -2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; -2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; -2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; -2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; -2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; -2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; -2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; -2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; -2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; -234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;;;; -234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; -234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; -234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; -234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;;;; -234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; -2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; -2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;;;; -2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; -2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; -2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; -2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;;;; -2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; -2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; -2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; -2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; -235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; -235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; -235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; -235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; -235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; -235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; -2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; -2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;;;; -2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; -2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; -2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; -2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; -2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; -2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; -2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; -2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; -236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; -236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; -236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; -236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; -236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; -236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; -2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; -2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; -2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; -2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; -2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; -2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; -2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; -2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; -2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; -2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; -237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; -237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; -237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; -237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; -237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; -237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; -2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; -2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; -2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; -2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; -2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; -2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; -2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; -2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; -2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;;;; -238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;;;; -238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;;;; -238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; -238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; -238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; -238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; -2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; -2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; -2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; -2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; -2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; -2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; -2398;NEXT PAGE;So;0;ON;;;;;N;;;;; -2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; -239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; -239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; -23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; -23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; -23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; -23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; -23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; -23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; -23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; -23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; -23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; -23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; -23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; -23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; -23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; -23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; -23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; -23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; -23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; -23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; -23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; -23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; -23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; -23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; -23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; -23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; -23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; -23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; -23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; -23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; -23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; -23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; -23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; -23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; -23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; -23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; -23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; -23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; -23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; -23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; -23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; -23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; -23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; -23DB;FUSE;So;0;ON;;;;;N;;;;; -23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;;;; -23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;;;; -23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;;;; -23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;;;; -23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;; -23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;; -23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;; -23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;; -23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;; -23E5;FLATNESS;So;0;ON;;;;;N;;;;; -23E6;AC CURRENT;So;0;ON;;;;;N;;;;; -23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;; -23E8;DECIMAL EXPONENT SYMBOL;So;0;ON;;;;;N;;;;; -2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; -2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; -2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; -2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; -2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; -2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; -2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; -2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; -2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; -2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; -240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; -240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; -240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; -240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; -240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; -240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; -2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; -2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; -2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; -2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; -2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; -2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; -2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; -2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; -2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; -2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; -241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; -241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; -241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; -241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; -241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; -241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; -2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; -2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; -2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; -2423;OPEN BOX;So;0;ON;;;;;N;;;;; -2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; -2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; -2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; -2440;OCR HOOK;So;0;ON;;;;;N;;;;; -2441;OCR CHAIR;So;0;ON;;;;;N;;;;; -2442;OCR FORK;So;0;ON;;;;;N;;;;; -2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; -2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; -2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; -2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; -2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; -2448;OCR DASH;So;0;ON;;;;;N;;;;; -2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; -244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; -2460;CIRCLED DIGIT ONE;No;0;ON; 0031;;1;1;N;;;;; -2461;CIRCLED DIGIT TWO;No;0;ON; 0032;;2;2;N;;;;; -2462;CIRCLED DIGIT THREE;No;0;ON; 0033;;3;3;N;;;;; -2463;CIRCLED DIGIT FOUR;No;0;ON; 0034;;4;4;N;;;;; -2464;CIRCLED DIGIT FIVE;No;0;ON; 0035;;5;5;N;;;;; -2465;CIRCLED DIGIT SIX;No;0;ON; 0036;;6;6;N;;;;; -2466;CIRCLED DIGIT SEVEN;No;0;ON; 0037;;7;7;N;;;;; -2467;CIRCLED DIGIT EIGHT;No;0;ON; 0038;;8;8;N;;;;; -2468;CIRCLED DIGIT NINE;No;0;ON; 0039;;9;9;N;;;;; -2469;CIRCLED NUMBER TEN;No;0;ON; 0031 0030;;;10;N;;;;; -246A;CIRCLED NUMBER ELEVEN;No;0;ON; 0031 0031;;;11;N;;;;; -246B;CIRCLED NUMBER TWELVE;No;0;ON; 0031 0032;;;12;N;;;;; -246C;CIRCLED NUMBER THIRTEEN;No;0;ON; 0031 0033;;;13;N;;;;; -246D;CIRCLED NUMBER FOURTEEN;No;0;ON; 0031 0034;;;14;N;;;;; -246E;CIRCLED NUMBER FIFTEEN;No;0;ON; 0031 0035;;;15;N;;;;; -246F;CIRCLED NUMBER SIXTEEN;No;0;ON; 0031 0036;;;16;N;;;;; -2470;CIRCLED NUMBER SEVENTEEN;No;0;ON; 0031 0037;;;17;N;;;;; -2471;CIRCLED NUMBER EIGHTEEN;No;0;ON; 0031 0038;;;18;N;;;;; -2472;CIRCLED NUMBER NINETEEN;No;0;ON; 0031 0039;;;19;N;;;;; -2473;CIRCLED NUMBER TWENTY;No;0;ON; 0032 0030;;;20;N;;;;; -2474;PARENTHESIZED DIGIT ONE;No;0;ON; 0028 0031 0029;;1;1;N;;;;; -2475;PARENTHESIZED DIGIT TWO;No;0;ON; 0028 0032 0029;;2;2;N;;;;; -2476;PARENTHESIZED DIGIT THREE;No;0;ON; 0028 0033 0029;;3;3;N;;;;; -2477;PARENTHESIZED DIGIT FOUR;No;0;ON; 0028 0034 0029;;4;4;N;;;;; -2478;PARENTHESIZED DIGIT FIVE;No;0;ON; 0028 0035 0029;;5;5;N;;;;; -2479;PARENTHESIZED DIGIT SIX;No;0;ON; 0028 0036 0029;;6;6;N;;;;; -247A;PARENTHESIZED DIGIT SEVEN;No;0;ON; 0028 0037 0029;;7;7;N;;;;; -247B;PARENTHESIZED DIGIT EIGHT;No;0;ON; 0028 0038 0029;;8;8;N;;;;; -247C;PARENTHESIZED DIGIT NINE;No;0;ON; 0028 0039 0029;;9;9;N;;;;; -247D;PARENTHESIZED NUMBER TEN;No;0;ON; 0028 0031 0030 0029;;;10;N;;;;; -247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON; 0028 0031 0031 0029;;;11;N;;;;; -247F;PARENTHESIZED NUMBER TWELVE;No;0;ON; 0028 0031 0032 0029;;;12;N;;;;; -2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON; 0028 0031 0033 0029;;;13;N;;;;; -2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON; 0028 0031 0034 0029;;;14;N;;;;; -2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON; 0028 0031 0035 0029;;;15;N;;;;; -2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON; 0028 0031 0036 0029;;;16;N;;;;; -2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON; 0028 0031 0037 0029;;;17;N;;;;; -2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON; 0028 0031 0038 0029;;;18;N;;;;; -2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON; 0028 0031 0039 0029;;;19;N;;;;; -2487;PARENTHESIZED NUMBER TWENTY;No;0;ON; 0028 0032 0030 0029;;;20;N;;;;; -2488;DIGIT ONE FULL STOP;No;0;EN; 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; -2489;DIGIT TWO FULL STOP;No;0;EN; 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; -248A;DIGIT THREE FULL STOP;No;0;EN; 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; -248B;DIGIT FOUR FULL STOP;No;0;EN; 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; -248C;DIGIT FIVE FULL STOP;No;0;EN; 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; -248D;DIGIT SIX FULL STOP;No;0;EN; 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; -248E;DIGIT SEVEN FULL STOP;No;0;EN; 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; -248F;DIGIT EIGHT FULL STOP;No;0;EN; 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; -2490;DIGIT NINE FULL STOP;No;0;EN; 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; -2491;NUMBER TEN FULL STOP;No;0;EN; 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; -2492;NUMBER ELEVEN FULL STOP;No;0;EN; 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; -2493;NUMBER TWELVE FULL STOP;No;0;EN; 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; -2494;NUMBER THIRTEEN FULL STOP;No;0;EN; 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; -2495;NUMBER FOURTEEN FULL STOP;No;0;EN; 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; -2496;NUMBER FIFTEEN FULL STOP;No;0;EN; 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; -2497;NUMBER SIXTEEN FULL STOP;No;0;EN; 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; -2498;NUMBER SEVENTEEN FULL STOP;No;0;EN; 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; -2499;NUMBER EIGHTEEN FULL STOP;No;0;EN; 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; -249A;NUMBER NINETEEN FULL STOP;No;0;EN; 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; -249B;NUMBER TWENTY FULL STOP;No;0;EN; 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; -249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L; 0028 0061 0029;;;;N;;;;; -249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L; 0028 0062 0029;;;;N;;;;; -249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L; 0028 0063 0029;;;;N;;;;; -249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L; 0028 0064 0029;;;;N;;;;; -24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L; 0028 0065 0029;;;;N;;;;; -24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L; 0028 0066 0029;;;;N;;;;; -24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L; 0028 0067 0029;;;;N;;;;; -24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L; 0028 0068 0029;;;;N;;;;; -24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L; 0028 0069 0029;;;;N;;;;; -24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L; 0028 006A 0029;;;;N;;;;; -24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L; 0028 006B 0029;;;;N;;;;; -24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L; 0028 006C 0029;;;;N;;;;; -24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L; 0028 006D 0029;;;;N;;;;; -24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L; 0028 006E 0029;;;;N;;;;; -24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L; 0028 006F 0029;;;;N;;;;; -24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L; 0028 0070 0029;;;;N;;;;; -24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L; 0028 0071 0029;;;;N;;;;; -24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L; 0028 0072 0029;;;;N;;;;; -24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L; 0028 0073 0029;;;;N;;;;; -24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L; 0028 0074 0029;;;;N;;;;; -24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L; 0028 0075 0029;;;;N;;;;; -24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L; 0028 0076 0029;;;;N;;;;; -24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L; 0028 0077 0029;;;;N;;;;; -24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L; 0028 0078 0029;;;;N;;;;; -24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L; 0028 0079 0029;;;;N;;;;; -24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L; 0028 007A 0029;;;;N;;;;; -24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;24D0; -24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;24D1; -24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;24D2; -24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;24D3; -24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;24D4; -24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;24D5; -24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;24D6; -24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;24D7; -24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;24D8; -24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;24D9; -24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;24DA; -24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;24DB; -24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;24DC; -24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;24DD; -24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;24DE; -24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;24DF; -24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;24E0; -24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;24E1; -24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;24E2; -24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;24E3; -24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;24E4; -24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;24E5; -24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;24E6; -24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;24E7; -24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;24E8; -24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;24E9; -24D0;CIRCLED LATIN SMALL LETTER A;So;0;L; 0061;;;;N;;;24B6;;24B6 -24D1;CIRCLED LATIN SMALL LETTER B;So;0;L; 0062;;;;N;;;24B7;;24B7 -24D2;CIRCLED LATIN SMALL LETTER C;So;0;L; 0063;;;;N;;;24B8;;24B8 -24D3;CIRCLED LATIN SMALL LETTER D;So;0;L; 0064;;;;N;;;24B9;;24B9 -24D4;CIRCLED LATIN SMALL LETTER E;So;0;L; 0065;;;;N;;;24BA;;24BA -24D5;CIRCLED LATIN SMALL LETTER F;So;0;L; 0066;;;;N;;;24BB;;24BB -24D6;CIRCLED LATIN SMALL LETTER G;So;0;L; 0067;;;;N;;;24BC;;24BC -24D7;CIRCLED LATIN SMALL LETTER H;So;0;L; 0068;;;;N;;;24BD;;24BD -24D8;CIRCLED LATIN SMALL LETTER I;So;0;L; 0069;;;;N;;;24BE;;24BE -24D9;CIRCLED LATIN SMALL LETTER J;So;0;L; 006A;;;;N;;;24BF;;24BF -24DA;CIRCLED LATIN SMALL LETTER K;So;0;L; 006B;;;;N;;;24C0;;24C0 -24DB;CIRCLED LATIN SMALL LETTER L;So;0;L; 006C;;;;N;;;24C1;;24C1 -24DC;CIRCLED LATIN SMALL LETTER M;So;0;L; 006D;;;;N;;;24C2;;24C2 -24DD;CIRCLED LATIN SMALL LETTER N;So;0;L; 006E;;;;N;;;24C3;;24C3 -24DE;CIRCLED LATIN SMALL LETTER O;So;0;L; 006F;;;;N;;;24C4;;24C4 -24DF;CIRCLED LATIN SMALL LETTER P;So;0;L; 0070;;;;N;;;24C5;;24C5 -24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L; 0071;;;;N;;;24C6;;24C6 -24E1;CIRCLED LATIN SMALL LETTER R;So;0;L; 0072;;;;N;;;24C7;;24C7 -24E2;CIRCLED LATIN SMALL LETTER S;So;0;L; 0073;;;;N;;;24C8;;24C8 -24E3;CIRCLED LATIN SMALL LETTER T;So;0;L; 0074;;;;N;;;24C9;;24C9 -24E4;CIRCLED LATIN SMALL LETTER U;So;0;L; 0075;;;;N;;;24CA;;24CA -24E5;CIRCLED LATIN SMALL LETTER V;So;0;L; 0076;;;;N;;;24CB;;24CB -24E6;CIRCLED LATIN SMALL LETTER W;So;0;L; 0077;;;;N;;;24CC;;24CC -24E7;CIRCLED LATIN SMALL LETTER X;So;0;L; 0078;;;;N;;;24CD;;24CD -24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L; 0079;;;;N;;;24CE;;24CE -24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L; 007A;;;;N;;;24CF;;24CF -24EA;CIRCLED DIGIT ZERO;No;0;ON; 0030;;0;0;N;;;;; -24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; -24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; -24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; -24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; -24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; -24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; -24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; -24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; -24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; -24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; -24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; -24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; -24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; -24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; -24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; -24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; -24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; -24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; -24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; -24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; -24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; -2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; -2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; -2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; -2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; -2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; -2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; -2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; -2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; -2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; -2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; -250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; -250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; -250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; -250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; -250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; -250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; -2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; -2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; -2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; -2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; -2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; -2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; -2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; -2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; -2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; -2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; -251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; -251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; -251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; -251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; -251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; -251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; -2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; -2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; -2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; -2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; -2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; -2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; -2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; -2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; -2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; -2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; -252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; -252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; -252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; -252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; -252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; -252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; -2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; -2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; -2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; -2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; -2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; -2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; -2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; -2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; -2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; -2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; -253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; -253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; -253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; -253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; -253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; -253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; -2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; -2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; -2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; -2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; -2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; -2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; -2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; -2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; -2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; -2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; -254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; -254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; -254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; -254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; -254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; -254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; -2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; -2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; -2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; -2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; -2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; -2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; -2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; -2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; -2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; -2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; -255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; -255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; -255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; -255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; -255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; -255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; -2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; -2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; -2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; -2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; -2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; -2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; -2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; -2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; -2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; -2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; -256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; -256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; -256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; -256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; -256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; -256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; -2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; -2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; -2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; -2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; -2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; -2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; -2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; -2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; -2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; -2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; -257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; -257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; -257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; -257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; -257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; -257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; -2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; -2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; -2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; -2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -2588;FULL BLOCK;So;0;ON;;;;;N;;;;; -2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; -258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; -258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; -258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; -258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; -2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; -2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; -2593;DARK SHADE;So;0;ON;;;;;N;;;;; -2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; -2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; -2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; -2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; -2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; -259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; -259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; -25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; -25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; -25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; -25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; -25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; -25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; -25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; -25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; -25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; -25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; -25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; -25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; -25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; -25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; -25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; -25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; -25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; -25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; -25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; -25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; -25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; -25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; -25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; -25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; -25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; -25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; -25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; -25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; -25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; -25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; -25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; -25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; -25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; -25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; -25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; -25C9;FISHEYE;So;0;ON;;;;;N;;;;; -25CA;LOZENGE;So;0;ON;;;;;N;;;;; -25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; -25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; -25CE;BULLSEYE;So;0;ON;;;;;N;;;;; -25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; -25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; -25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; -25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; -25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; -25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; -25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; -25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; -25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; -25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; -25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; -25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; -25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; -25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; -25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; -25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; -25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; -25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; -25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; -25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; -25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; -25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; -2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; -2601;CLOUD;So;0;ON;;;;;N;;;;; -2602;UMBRELLA;So;0;ON;;;;;N;;;;; -2603;SNOWMAN;So;0;ON;;;;;N;;;;; -2604;COMET;So;0;ON;;;;;N;;;;; -2605;BLACK STAR;So;0;ON;;;;;N;;;;; -2606;WHITE STAR;So;0;ON;;;;;N;;;;; -2607;LIGHTNING;So;0;ON;;;;;N;;;;; -2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; -2609;SUN;So;0;ON;;;;;N;;;;; -260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; -260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; -260C;CONJUNCTION;So;0;ON;;;;;N;;;;; -260D;OPPOSITION;So;0;ON;;;;;N;;;;; -260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; -260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; -2610;BALLOT BOX;So;0;ON;;;;;N;;;;; -2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; -2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; -2613;SALTIRE;So;0;ON;;;;;N;;;;; -2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; -2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; -2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; -2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; -2618;SHAMROCK;So;0;ON;;;;;N;;;;; -2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; -261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; -261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; -261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; -2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; -2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; -2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; -2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; -2624;CADUCEUS;So;0;ON;;;;;N;;;;; -2625;ANKH;So;0;ON;;;;;N;;;;; -2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; -2627;CHI RHO;So;0;ON;;;;;N;;;;; -2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; -2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; -262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; -262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; -262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; -262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; -262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; -262F;YIN YANG;So;0;ON;;;;;N;;;;; -2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; -2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; -2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; -2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; -2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; -2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; -2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; -2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; -2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; -263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; -263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; -263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; -263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; -263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; -263F;MERCURY;So;0;ON;;;;;N;;;;; -2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; -2641;EARTH;So;0;ON;;;;;N;;;;; -2642;MALE SIGN;So;0;ON;;;;;N;;;;; -2643;JUPITER;So;0;ON;;;;;N;;;;; -2644;SATURN;So;0;ON;;;;;N;;;;; -2645;URANUS;So;0;ON;;;;;N;;;;; -2646;NEPTUNE;So;0;ON;;;;;N;;;;; -2647;PLUTO;So;0;ON;;;;;N;;;;; -2648;ARIES;So;0;ON;;;;;N;;;;; -2649;TAURUS;So;0;ON;;;;;N;;;;; -264A;GEMINI;So;0;ON;;;;;N;;;;; -264B;CANCER;So;0;ON;;;;;N;;;;; -264C;LEO;So;0;ON;;;;;N;;;;; -264D;VIRGO;So;0;ON;;;;;N;;;;; -264E;LIBRA;So;0;ON;;;;;N;;;;; -264F;SCORPIUS;So;0;ON;;;;;N;;;;; -2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; -2651;CAPRICORN;So;0;ON;;;;;N;;;;; -2652;AQUARIUS;So;0;ON;;;;;N;;;;; -2653;PISCES;So;0;ON;;;;;N;;;;; -2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; -2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; -2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; -2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; -2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; -2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; -265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; -265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; -265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; -265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; -265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; -265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; -2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; -2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; -2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; -2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; -2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; -2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; -2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; -2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; -2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; -266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; -266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; -266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; -266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; -266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; -266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; -2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; -2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;;;; -2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;;;; -2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;;;; -2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;;;; -2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;;;; -2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;;;; -2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;;;; -267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; -267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; -267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; -267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; -267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; -2680;DIE FACE-1;So;0;ON;;;;;N;;;;; -2681;DIE FACE-2;So;0;ON;;;;;N;;;;; -2682;DIE FACE-3;So;0;ON;;;;;N;;;;; -2683;DIE FACE-4;So;0;ON;;;;;N;;;;; -2684;DIE FACE-5;So;0;ON;;;;;N;;;;; -2685;DIE FACE-6;So;0;ON;;;;;N;;;;; -2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; -2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; -2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; -2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; -268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; -268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; -268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; -268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; -268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; -268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; -2690;WHITE FLAG;So;0;ON;;;;;N;;;;; -2691;BLACK FLAG;So;0;ON;;;;;N;;;;; -2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; -2693;ANCHOR;So;0;ON;;;;;N;;;;; -2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; -2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; -2696;SCALES;So;0;ON;;;;;N;;;;; -2697;ALEMBIC;So;0;ON;;;;;N;;;;; -2698;FLOWER;So;0;ON;;;;;N;;;;; -2699;GEAR;So;0;ON;;;;;N;;;;; -269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; -269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; -269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; -269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; -269E;THREE LINES CONVERGING RIGHT;So;0;ON;;;;;N;;;;; -269F;THREE LINES CONVERGING LEFT;So;0;ON;;;;;N;;;;; -26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; -26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; -26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; -26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; -26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; -26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; -26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; -26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; -26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; -26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; -26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; -26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; -26B0;COFFIN;So;0;ON;;;;;N;;;;; -26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; -26B2;NEUTER;So;0;ON;;;;;N;;;;; -26B3;CERES;So;0;ON;;;;;N;;;;; -26B4;PALLAS;So;0;ON;;;;;N;;;;; -26B5;JUNO;So;0;ON;;;;;N;;;;; -26B6;VESTA;So;0;ON;;;;;N;;;;; -26B7;CHIRON;So;0;ON;;;;;N;;;;; -26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;; -26B9;SEXTILE;So;0;ON;;;;;N;;;;; -26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;; -26BB;QUINCUNX;So;0;ON;;;;;N;;;;; -26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;; -26BD;SOCCER BALL;So;0;ON;;;;;N;;;;; -26BE;BASEBALL;So;0;ON;;;;;N;;;;; -26BF;SQUARED KEY;So;0;ON;;;;;N;;;;; -26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;; -26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;; -26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;; -26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;; -26C4;SNOWMAN WITHOUT SNOW;So;0;ON;;;;;N;;;;; -26C5;SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;; -26C6;RAIN;So;0;ON;;;;;N;;;;; -26C7;BLACK SNOWMAN;So;0;ON;;;;;N;;;;; -26C8;THUNDER CLOUD AND RAIN;So;0;ON;;;;;N;;;;; -26C9;TURNED WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; -26CA;TURNED BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; -26CB;WHITE DIAMOND IN SQUARE;So;0;ON;;;;;N;;;;; -26CC;CROSSING LANES;So;0;ON;;;;;N;;;;; -26CD;DISABLED CAR;So;0;ON;;;;;N;;;;; -26CF;PICK;So;0;ON;;;;;N;;;;; -26D0;CAR SLIDING;So;0;ON;;;;;N;;;;; -26D1;HELMET WITH WHITE CROSS;So;0;ON;;;;;N;;;;; -26D2;CIRCLED CROSSING LANES;So;0;ON;;;;;N;;;;; -26D3;CHAINS;So;0;ON;;;;;N;;;;; -26D4;NO ENTRY;So;0;ON;;;;;N;;;;; -26D5;ALTERNATE ONE-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; -26D6;BLACK TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; -26D7;WHITE TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;; -26D8;BLACK LEFT LANE MERGE;So;0;ON;;;;;N;;;;; -26D9;WHITE LEFT LANE MERGE;So;0;ON;;;;;N;;;;; -26DA;DRIVE SLOW SIGN;So;0;ON;;;;;N;;;;; -26DB;HEAVY WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;; -26DC;LEFT CLOSED ENTRY;So;0;ON;;;;;N;;;;; -26DD;SQUARED SALTIRE;So;0;ON;;;;;N;;;;; -26DE;FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE;So;0;ON;;;;;N;;;;; -26DF;BLACK TRUCK;So;0;ON;;;;;N;;;;; -26E0;RESTRICTED LEFT ENTRY-1;So;0;ON;;;;;N;;;;; -26E1;RESTRICTED LEFT ENTRY-2;So;0;ON;;;;;N;;;;; -26E3;HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE;So;0;ON;;;;;N;;;;; -26E8;BLACK CROSS ON SHIELD;So;0;ON;;;;;N;;;;; -26E9;SHINTO SHRINE;So;0;ON;;;;;N;;;;; -26EA;CHURCH;So;0;ON;;;;;N;;;;; -26EB;CASTLE;So;0;ON;;;;;N;;;;; -26EC;HISTORIC SITE;So;0;ON;;;;;N;;;;; -26ED;GEAR WITHOUT HUB;So;0;ON;;;;;N;;;;; -26EE;GEAR WITH HANDLES;So;0;ON;;;;;N;;;;; -26EF;MAP SYMBOL FOR LIGHTHOUSE;So;0;ON;;;;;N;;;;; -26F0;MOUNTAIN;So;0;ON;;;;;N;;;;; -26F1;UMBRELLA ON GROUND;So;0;ON;;;;;N;;;;; -26F2;FOUNTAIN;So;0;ON;;;;;N;;;;; -26F3;FLAG IN HOLE;So;0;ON;;;;;N;;;;; -26F4;FERRY;So;0;ON;;;;;N;;;;; -26F5;SAILBOAT;So;0;ON;;;;;N;;;;; -26F6;SQUARE FOUR CORNERS;So;0;ON;;;;;N;;;;; -26F7;SKIER;So;0;ON;;;;;N;;;;; -26F8;ICE SKATE;So;0;ON;;;;;N;;;;; -26F9;PERSON WITH BALL;So;0;ON;;;;;N;;;;; -26FA;TENT;So;0;ON;;;;;N;;;;; -26FB;JAPANESE BANK SYMBOL;So;0;ON;;;;;N;;;;; -26FC;HEADSTONE GRAVEYARD SYMBOL;So;0;ON;;;;;N;;;;; -26FD;FUEL PUMP;So;0;ON;;;;;N;;;;; -26FE;CUP ON BLACK SQUARE;So;0;ON;;;;;N;;;;; -26FF;WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE;So;0;ON;;;;;N;;;;; -2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; -2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; -2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; -2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; -2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; -2708;AIRPLANE;So;0;ON;;;;;N;;;;; -2709;ENVELOPE;So;0;ON;;;;;N;;;;; -270C;VICTORY HAND;So;0;ON;;;;;N;;;;; -270D;WRITING HAND;So;0;ON;;;;;N;;;;; -270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -270F;PENCIL;So;0;ON;;;;;N;;;;; -2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; -2711;WHITE NIB;So;0;ON;;;;;N;;;;; -2712;BLACK NIB;So;0;ON;;;;;N;;;;; -2713;CHECK MARK;So;0;ON;;;;;N;;;;; -2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; -2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; -2717;BALLOT X;So;0;ON;;;;;N;;;;; -2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; -2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; -271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; -271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; -271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; -271D;LATIN CROSS;So;0;ON;;;;;N;;;;; -271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; -271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; -2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; -2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; -2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; -2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; -272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; -272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; -272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; -272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; -272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; -2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; -2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; -2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; -2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; -2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; -273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; -273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; -273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; -273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; -2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; -2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; -2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; -2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; -2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; -2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; -2747;SPARKLE;So;0;ON;;;;;N;;;;; -2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; -2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; -274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; -274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; -274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; -2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; -2757;HEAVY EXCLAMATION MARK SYMBOL;So;0;ON;;;;;N;;;;; -2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; -2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; -275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; -275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; -2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; -2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; -2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; -2766;FLORAL HEART;So;0;ON;;;;;N;;;;; -2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; -2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; -276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; -2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; -2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; -2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; -2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; -2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; -277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; -277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; -277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; -277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; -277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; -277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; -2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; -2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; -2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; -2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; -2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; -2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; -2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; -2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; -278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; -278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; -278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; -278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; -278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; -278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; -2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; -2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; -2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; -2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; -2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; -2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; -2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; -279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; -279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; -279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; -279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; -279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; -279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; -27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; -27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; -27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; -27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; -27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; -27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; -27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; -27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; -27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; -27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; -27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; -27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; -27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; -27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; -27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; -27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; -27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; -27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; -27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; -27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; -27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; -27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; -27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; -27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; -27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; -27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; -27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; -27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; -27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; -27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;; -27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;Y;;;;; -27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;; -27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;; -27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; -27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; -27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; -27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; -27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; -27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; -27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; -27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; -27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; -27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; -27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; -27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; -27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; -27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; -27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; -27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; -27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; -27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; -27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; -27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; -27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; -27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; -27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; -2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; -2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; -2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; -2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; -2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; -2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; -2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; -2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; -2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; -280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; -280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; -280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; -280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; -280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; -280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; -2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; -2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; -2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; -2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; -2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; -2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; -2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; -2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; -2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; -2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; -281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; -281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; -281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; -281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; -281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; -281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; -2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; -2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; -2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; -2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; -2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; -2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; -2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; -2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; -2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; -2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; -282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; -282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; -282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; -282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; -282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; -282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; -2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; -2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; -2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; -2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; -2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; -2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; -2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; -2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; -2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; -2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; -283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; -283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; -283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; -283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; -283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; -283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; -2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; -2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; -2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; -2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; -2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; -2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; -2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; -2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; -2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; -2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; -284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; -284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; -284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; -284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; -284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; -284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; -2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; -2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; -2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; -2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; -2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; -2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; -2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; -2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; -2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; -2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; -285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; -285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; -285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; -285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; -285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; -285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; -2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; -2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; -2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; -2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; -2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; -2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; -2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; -2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; -2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; -2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; -286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; -286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; -286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; -286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; -286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; -286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; -2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; -2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; -2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; -2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; -2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; -2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; -2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; -2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; -2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; -2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; -287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; -287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; -287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; -287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; -287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; -287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; -2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; -2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; -2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; -2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; -2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; -2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; -2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; -2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; -2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; -2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; -288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; -288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; -288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; -288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; -288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; -288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; -2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; -2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; -2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; -2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; -2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; -2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; -2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; -2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; -2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; -2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; -289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; -289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; -289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; -289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; -289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; -289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; -28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; -28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; -28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; -28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; -28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; -28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; -28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; -28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; -28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; -28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; -28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; -28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; -28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; -28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; -28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; -28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; -28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; -28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; -28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; -28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; -28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; -28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; -28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; -28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; -28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; -28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; -28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; -28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; -28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; -28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; -28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; -28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; -28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; -28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; -28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; -28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; -28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; -28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; -28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; -28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; -28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; -28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; -28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; -28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; -28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; -28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; -28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; -28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; -28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; -28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; -28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; -28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; -28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; -28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; -28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; -28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; -28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; -28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; -28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; -28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; -28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; -28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; -28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; -28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; -28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; -28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; -28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; -28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; -28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; -28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; -28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; -28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; -28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; -28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; -28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; -28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; -28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; -28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; -28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; -28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; -28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; -28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; -28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; -28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; -28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; -28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; -28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; -28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; -28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; -28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; -28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; -28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; -28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; -28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; -28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; -28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; -2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; -290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; -2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; -2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; -2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; -291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; -2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; -292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; -2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; -2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; -2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; -2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; -2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; -2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; -293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; -293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; -2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; -2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; -2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; -2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; -294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; -2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; -2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; -2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; -2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; -2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; -2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; -295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; -295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; -295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; -2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; -2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; -2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; -296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; -296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; -296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; -2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; -2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; -2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; -297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; -297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; -297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; -2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; -2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; -2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; -2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; -2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; -2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; -2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; -2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; -298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; -298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; -298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; -298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; -298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; -298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; -2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; -2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; -2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; -2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; -2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; -2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; -2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; -2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; -299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; -299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; -299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; -299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; -299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; -29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; -29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; -29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; -29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; -29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; -29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; -29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; -29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; -29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; -29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; -29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; -29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; -29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; -29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; -29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; -29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; -29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; -29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; -29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; -29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; -29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; -29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; -29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; -29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; -29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; -29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; -29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; -29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; -29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; -29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; -29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; -29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; -29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; -29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; -29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; -29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; -29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; -29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; -29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; -29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; -29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; -29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; -29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; -29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; -29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; -29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; -29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; -29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; -29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; -29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; -29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; -29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; -29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; -29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; -29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; -29FE;TINY;Sm;0;ON;;;;;N;;;;; -29FF;MINY;Sm;0;ON;;;;;N;;;;; -2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; -2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; -2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; -2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; -2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; -2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; -2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; -2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; -2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; -2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON; 222B 222B 222B 222B;;;;Y;;;;; -2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; -2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; -2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; -2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; -2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; -2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; -2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; -2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; -2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; -2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; -2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; -2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; -2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2A1D;JOIN;Sm;0;ON;;;;;N;;;;; -2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; -2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; -2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; -2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; -2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; -2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; -2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; -2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; -2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; -2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; -2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; -2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; -2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; -2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; -2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; -2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; -2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; -2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; -2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; -2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; -2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; -2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; -2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; -2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; -2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; -2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; -2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; -2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; -2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; -2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; -2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; -2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; -2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; -2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; -2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; -2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; -2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; -2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; -2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; -2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; -2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; -2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; -2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2A74;DOUBLE COLON EQUAL;Sm;0;ON; 003A 003A 003D;;;;Y;;;;; -2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D;;;;N;;;;; -2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D 003D;;;;N;;;;; -2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; -2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; -2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; -2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; -2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; -2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; -2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; -2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; -2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; -2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; -2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; -2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; -2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; -2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; -2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; -2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; -2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; -2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; -2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; -2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; -2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; -2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; -2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; -2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; -2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; -2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; -2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; -2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; -2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; -2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; -2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; -2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;;;; -2ADD;NONFORKING;Sm;0;ON;;;;;N;;;;; -2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; -2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; -2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; -2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; -2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; -2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; -2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; -2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; -2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; -2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; -2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; -2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; -2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; -2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; -2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; -2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; -2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; -2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; -2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; -2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; -2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; -2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; -2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; -2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; -2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; -2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; -2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; -2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; -2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; -2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; -2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; -2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; -2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; -2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; -2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; -2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; -2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;; -2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;; -2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;; -2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; -2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;; -2B1F;BLACK PENTAGON;So;0;ON;;;;;N;;;;; -2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;; -2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;; -2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;; -2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;; -2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;; -2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; -2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;; -2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; -2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;; -2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; -2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;; -2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;; -2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;; -2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; -2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; -2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; -2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; -2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; -2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; -2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; -2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; -2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; -2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; -2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;; -2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;; -2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;; -2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; -2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;; -2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; -2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; -2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; -2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;; -2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;; -2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;; -2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; -2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;; -2B55;HEAVY LARGE CIRCLE;So;0;ON;;;;;N;;;;; -2B56;HEAVY OVAL WITH OVAL INSIDE;So;0;ON;;;;;N;;;;; -2B57;HEAVY CIRCLE WITH CIRCLE INSIDE;So;0;ON;;;;;N;;;;; -2B58;HEAVY CIRCLE;So;0;ON;;;;;N;;;;; -2B59;HEAVY CIRCLED SALTIRE;So;0;ON;;;;;N;;;;; -2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; -2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; -2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; -2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; -2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; -2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; -2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; -2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; -2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; -2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; -2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; -2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; -2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; -2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; -2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; -2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; -2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; -2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; -2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; -2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; -2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; -2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; -2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; -2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; -2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; -2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; -2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; -2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; -2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; -2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; -2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; -2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; -2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; -2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; -2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; -2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; -2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; -2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; -2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; -2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; -2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; -2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; -2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; -2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; -2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; -2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; -2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; -2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 -2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 -2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 -2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 -2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 -2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 -2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 -2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 -2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 -2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 -2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A -2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B -2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C -2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D -2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E -2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F -2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 -2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 -2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 -2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 -2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 -2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 -2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 -2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 -2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 -2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 -2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A -2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B -2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C -2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D -2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E -2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F -2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 -2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 -2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 -2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 -2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 -2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 -2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 -2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 -2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 -2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 -2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A -2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B -2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C -2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D -2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E -2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; -2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 -2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; -2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D; -2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D; -2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A -2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E -2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68; -2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67 -2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A; -2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69 -2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C; -2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B -2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251; -2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271; -2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250; -2C70;LATIN CAPITAL LETTER TURNED ALPHA;Lu;0;L;;;;;N;;;;0252; -2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;; -2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73; -2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72 -2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;; -2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76; -2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75 -2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;; -2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;; -2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;; -2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;; -2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;; -2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L; 006A;;;;N;;;;; -2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L; 0056;;;;N;;;;; -2C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL;Lu;0;L;;;;;N;;;;023F; -2C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL;Lu;0;L;;;;;N;;;;0240; -2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; -2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 -2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; -2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 -2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; -2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 -2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; -2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 -2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; -2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 -2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; -2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A -2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; -2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C -2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; -2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E -2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; -2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 -2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; -2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 -2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; -2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 -2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; -2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 -2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; -2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 -2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; -2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A -2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; -2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C -2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; -2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E -2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; -2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 -2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; -2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 -2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; -2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 -2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; -2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 -2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; -2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 -2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; -2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA -2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; -2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC -2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; -2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE -2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; -2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 -2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; -2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 -2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; -2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 -2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; -2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 -2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; -2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 -2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; -2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA -2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; -2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC -2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; -2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE -2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; -2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 -2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; -2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 -2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; -2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 -2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; -2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 -2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; -2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 -2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; -2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA -2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; -2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC -2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; -2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE -2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; -2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 -2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; -2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 -2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; -2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 -2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; -2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 -2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; -2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 -2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; -2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA -2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; -2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC -2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; -2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE -2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; -2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 -2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; -2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 -2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; -2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; -2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; -2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; -2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; -2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; -2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; -2CEB;COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC; -2CEC;COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB -2CED;COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE; -2CEE;COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED -2CEF;COPTIC COMBINING NI ABOVE;Mn;230;NSM;;;;;N;;;;; -2CF0;COPTIC COMBINING SPIRITUS ASPER;Mn;230;NSM;;;;;N;;;;; -2CF1;COPTIC COMBINING SPIRITUS LENIS;Mn;230;NSM;;;;;N;;;;; -2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; -2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; -2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; -2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; -2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; -2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; -2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;;10A0;;10A0 -2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;;10A1;;10A1 -2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;;10A2;;10A2 -2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;;10A3;;10A3 -2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;;10A4;;10A4 -2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;;10A5;;10A5 -2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;;10A6;;10A6 -2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;;10A7;;10A7 -2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;;10A8;;10A8 -2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;;10A9;;10A9 -2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;;10AA;;10AA -2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;;10AB;;10AB -2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;;10AC;;10AC -2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;;10AD;;10AD -2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;;10AE;;10AE -2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;;10AF;;10AF -2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;;10B0;;10B0 -2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;;10B1;;10B1 -2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;;10B2;;10B2 -2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;;10B3;;10B3 -2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;;10B4;;10B4 -2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;;10B5;;10B5 -2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;;10B6;;10B6 -2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;;10B7;;10B7 -2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;;10B8;;10B8 -2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;;10B9;;10B9 -2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;;10BA;;10BA -2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;;10BB;;10BB -2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;;10BC;;10BC -2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;;10BD;;10BD -2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;;10BE;;10BE -2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;;10BF;;10BF -2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;;10C0;;10C0 -2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;;10C1;;10C1 -2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;;10C2;;10C2 -2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;;10C3;;10C3 -2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;;10C4;;10C4 -2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;;10C5;;10C5 -2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; -2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; -2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; -2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; -2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; -2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; -2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; -2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; -2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; -2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; -2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; -2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; -2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; -2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; -2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; -2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; -2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;;;; -2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; -2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; -2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; -2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; -2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; -2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; -2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; -2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; -2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; -2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; -2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; -2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; -2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; -2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; -2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; -2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; -2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; -2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; -2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;;;; -2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; -2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; -2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; -2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; -2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;;;; -2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; -2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; -2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; -2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; -2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; -2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; -2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; -2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; -2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; -2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; -2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; -2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;;;; -2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; -2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L; 2D61;;;;N;;;;; -2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; -2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; -2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; -2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; -2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; -2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; -2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; -2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; -2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; -2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; -2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; -2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; -2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; -2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; -2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; -2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; -2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; -2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; -2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; -2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; -2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; -2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; -2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; -2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; -2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; -2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; -2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; -2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; -2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; -2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; -2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; -2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; -2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; -2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; -2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; -2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; -2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; -2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; -2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; -2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; -2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; -2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; -2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; -2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; -2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; -2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; -2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; -2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; -2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; -2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; -2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; -2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; -2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; -2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; -2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; -2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; -2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; -2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; -2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; -2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; -2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; -2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; -2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; -2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; -2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; -2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; -2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; -2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; -2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; -2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;; -2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;; -2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;; -2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;; -2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;; -2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;; -2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;; -2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;; -2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;; -2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;; -2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;; -2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;; -2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;; -2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;; -2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;; -2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;; -2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;; -2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;; -2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;; -2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;; -2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;; -2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;; -2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;; -2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;; -2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;; -2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;; -2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;; -2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;; -2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;; -2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;; -2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;; -2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;N;;;;; -2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; -2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; -2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; -2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; -2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; -2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; -2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; -2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; -2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; -2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; -2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; -2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; -2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; -2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;; -2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;; -2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;; -2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;; -2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; -2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; -2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;; -2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;; -2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;; -2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;; -2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; -2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; -2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;; -2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;; -2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;; -2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;; -2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; -2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; -2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;; -2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;; -2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;; -2E30;RING POINT;Po;0;ON;;;;;N;;;;; -2E31;WORD SEPARATOR MIDDLE DOT;Po;0;ON;;;;;N;;;;; -2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; -2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; -2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; -2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; -2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; -2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; -2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; -2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; -2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; -2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; -2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; -2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; -2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; -2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; -2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; -2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; -2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; -2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; -2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; -2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; -2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; -2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; -2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; -2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; -2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; -2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; -2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; -2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; -2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; -2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; -2E9F;CJK RADICAL MOTHER;So;0;ON; 6BCD;;;;N;;;;; -2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; -2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; -2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; -2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; -2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; -2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; -2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; -2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; -2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; -2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; -2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; -2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; -2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; -2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; -2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; -2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; -2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; -2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; -2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; -2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; -2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; -2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; -2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; -2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; -2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; -2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; -2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; -2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; -2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; -2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; -2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; -2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; -2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; -2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; -2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; -2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; -2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; -2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; -2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; -2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; -2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; -2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; -2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; -2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; -2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; -2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; -2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; -2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; -2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; -2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; -2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; -2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; -2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; -2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; -2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; -2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; -2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; -2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; -2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; -2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; -2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; -2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; -2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; -2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; -2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; -2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; -2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; -2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; -2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; -2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; -2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; -2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; -2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; -2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; -2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; -2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; -2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; -2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; -2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; -2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; -2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON; 9F9F;;;;N;;;;; -2F00;KANGXI RADICAL ONE;So;0;ON; 4E00;;;;N;;;;; -2F01;KANGXI RADICAL LINE;So;0;ON; 4E28;;;;N;;;;; -2F02;KANGXI RADICAL DOT;So;0;ON; 4E36;;;;N;;;;; -2F03;KANGXI RADICAL SLASH;So;0;ON; 4E3F;;;;N;;;;; -2F04;KANGXI RADICAL SECOND;So;0;ON; 4E59;;;;N;;;;; -2F05;KANGXI RADICAL HOOK;So;0;ON; 4E85;;;;N;;;;; -2F06;KANGXI RADICAL TWO;So;0;ON; 4E8C;;;;N;;;;; -2F07;KANGXI RADICAL LID;So;0;ON; 4EA0;;;;N;;;;; -2F08;KANGXI RADICAL MAN;So;0;ON; 4EBA;;;;N;;;;; -2F09;KANGXI RADICAL LEGS;So;0;ON; 513F;;;;N;;;;; -2F0A;KANGXI RADICAL ENTER;So;0;ON; 5165;;;;N;;;;; -2F0B;KANGXI RADICAL EIGHT;So;0;ON; 516B;;;;N;;;;; -2F0C;KANGXI RADICAL DOWN BOX;So;0;ON; 5182;;;;N;;;;; -2F0D;KANGXI RADICAL COVER;So;0;ON; 5196;;;;N;;;;; -2F0E;KANGXI RADICAL ICE;So;0;ON; 51AB;;;;N;;;;; -2F0F;KANGXI RADICAL TABLE;So;0;ON; 51E0;;;;N;;;;; -2F10;KANGXI RADICAL OPEN BOX;So;0;ON; 51F5;;;;N;;;;; -2F11;KANGXI RADICAL KNIFE;So;0;ON; 5200;;;;N;;;;; -2F12;KANGXI RADICAL POWER;So;0;ON; 529B;;;;N;;;;; -2F13;KANGXI RADICAL WRAP;So;0;ON; 52F9;;;;N;;;;; -2F14;KANGXI RADICAL SPOON;So;0;ON; 5315;;;;N;;;;; -2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON; 531A;;;;N;;;;; -2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON; 5338;;;;N;;;;; -2F17;KANGXI RADICAL TEN;So;0;ON; 5341;;;;N;;;;; -2F18;KANGXI RADICAL DIVINATION;So;0;ON; 535C;;;;N;;;;; -2F19;KANGXI RADICAL SEAL;So;0;ON; 5369;;;;N;;;;; -2F1A;KANGXI RADICAL CLIFF;So;0;ON; 5382;;;;N;;;;; -2F1B;KANGXI RADICAL PRIVATE;So;0;ON; 53B6;;;;N;;;;; -2F1C;KANGXI RADICAL AGAIN;So;0;ON; 53C8;;;;N;;;;; -2F1D;KANGXI RADICAL MOUTH;So;0;ON; 53E3;;;;N;;;;; -2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON; 56D7;;;;N;;;;; -2F1F;KANGXI RADICAL EARTH;So;0;ON; 571F;;;;N;;;;; -2F20;KANGXI RADICAL SCHOLAR;So;0;ON; 58EB;;;;N;;;;; -2F21;KANGXI RADICAL GO;So;0;ON; 5902;;;;N;;;;; -2F22;KANGXI RADICAL GO SLOWLY;So;0;ON; 590A;;;;N;;;;; -2F23;KANGXI RADICAL EVENING;So;0;ON; 5915;;;;N;;;;; -2F24;KANGXI RADICAL BIG;So;0;ON; 5927;;;;N;;;;; -2F25;KANGXI RADICAL WOMAN;So;0;ON; 5973;;;;N;;;;; -2F26;KANGXI RADICAL CHILD;So;0;ON; 5B50;;;;N;;;;; -2F27;KANGXI RADICAL ROOF;So;0;ON; 5B80;;;;N;;;;; -2F28;KANGXI RADICAL INCH;So;0;ON; 5BF8;;;;N;;;;; -2F29;KANGXI RADICAL SMALL;So;0;ON; 5C0F;;;;N;;;;; -2F2A;KANGXI RADICAL LAME;So;0;ON; 5C22;;;;N;;;;; -2F2B;KANGXI RADICAL CORPSE;So;0;ON; 5C38;;;;N;;;;; -2F2C;KANGXI RADICAL SPROUT;So;0;ON; 5C6E;;;;N;;;;; -2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON; 5C71;;;;N;;;;; -2F2E;KANGXI RADICAL RIVER;So;0;ON; 5DDB;;;;N;;;;; -2F2F;KANGXI RADICAL WORK;So;0;ON; 5DE5;;;;N;;;;; -2F30;KANGXI RADICAL ONESELF;So;0;ON; 5DF1;;;;N;;;;; -2F31;KANGXI RADICAL TURBAN;So;0;ON; 5DFE;;;;N;;;;; -2F32;KANGXI RADICAL DRY;So;0;ON; 5E72;;;;N;;;;; -2F33;KANGXI RADICAL SHORT THREAD;So;0;ON; 5E7A;;;;N;;;;; -2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON; 5E7F;;;;N;;;;; -2F35;KANGXI RADICAL LONG STRIDE;So;0;ON; 5EF4;;;;N;;;;; -2F36;KANGXI RADICAL TWO HANDS;So;0;ON; 5EFE;;;;N;;;;; -2F37;KANGXI RADICAL SHOOT;So;0;ON; 5F0B;;;;N;;;;; -2F38;KANGXI RADICAL BOW;So;0;ON; 5F13;;;;N;;;;; -2F39;KANGXI RADICAL SNOUT;So;0;ON; 5F50;;;;N;;;;; -2F3A;KANGXI RADICAL BRISTLE;So;0;ON; 5F61;;;;N;;;;; -2F3B;KANGXI RADICAL STEP;So;0;ON; 5F73;;;;N;;;;; -2F3C;KANGXI RADICAL HEART;So;0;ON; 5FC3;;;;N;;;;; -2F3D;KANGXI RADICAL HALBERD;So;0;ON; 6208;;;;N;;;;; -2F3E;KANGXI RADICAL DOOR;So;0;ON; 6236;;;;N;;;;; -2F3F;KANGXI RADICAL HAND;So;0;ON; 624B;;;;N;;;;; -2F40;KANGXI RADICAL BRANCH;So;0;ON; 652F;;;;N;;;;; -2F41;KANGXI RADICAL RAP;So;0;ON; 6534;;;;N;;;;; -2F42;KANGXI RADICAL SCRIPT;So;0;ON; 6587;;;;N;;;;; -2F43;KANGXI RADICAL DIPPER;So;0;ON; 6597;;;;N;;;;; -2F44;KANGXI RADICAL AXE;So;0;ON; 65A4;;;;N;;;;; -2F45;KANGXI RADICAL SQUARE;So;0;ON; 65B9;;;;N;;;;; -2F46;KANGXI RADICAL NOT;So;0;ON; 65E0;;;;N;;;;; -2F47;KANGXI RADICAL SUN;So;0;ON; 65E5;;;;N;;;;; -2F48;KANGXI RADICAL SAY;So;0;ON; 66F0;;;;N;;;;; -2F49;KANGXI RADICAL MOON;So;0;ON; 6708;;;;N;;;;; -2F4A;KANGXI RADICAL TREE;So;0;ON; 6728;;;;N;;;;; -2F4B;KANGXI RADICAL LACK;So;0;ON; 6B20;;;;N;;;;; -2F4C;KANGXI RADICAL STOP;So;0;ON; 6B62;;;;N;;;;; -2F4D;KANGXI RADICAL DEATH;So;0;ON; 6B79;;;;N;;;;; -2F4E;KANGXI RADICAL WEAPON;So;0;ON; 6BB3;;;;N;;;;; -2F4F;KANGXI RADICAL DO NOT;So;0;ON; 6BCB;;;;N;;;;; -2F50;KANGXI RADICAL COMPARE;So;0;ON; 6BD4;;;;N;;;;; -2F51;KANGXI RADICAL FUR;So;0;ON; 6BDB;;;;N;;;;; -2F52;KANGXI RADICAL CLAN;So;0;ON; 6C0F;;;;N;;;;; -2F53;KANGXI RADICAL STEAM;So;0;ON; 6C14;;;;N;;;;; -2F54;KANGXI RADICAL WATER;So;0;ON; 6C34;;;;N;;;;; -2F55;KANGXI RADICAL FIRE;So;0;ON; 706B;;;;N;;;;; -2F56;KANGXI RADICAL CLAW;So;0;ON; 722A;;;;N;;;;; -2F57;KANGXI RADICAL FATHER;So;0;ON; 7236;;;;N;;;;; -2F58;KANGXI RADICAL DOUBLE X;So;0;ON; 723B;;;;N;;;;; -2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON; 723F;;;;N;;;;; -2F5A;KANGXI RADICAL SLICE;So;0;ON; 7247;;;;N;;;;; -2F5B;KANGXI RADICAL FANG;So;0;ON; 7259;;;;N;;;;; -2F5C;KANGXI RADICAL COW;So;0;ON; 725B;;;;N;;;;; -2F5D;KANGXI RADICAL DOG;So;0;ON; 72AC;;;;N;;;;; -2F5E;KANGXI RADICAL PROFOUND;So;0;ON; 7384;;;;N;;;;; -2F5F;KANGXI RADICAL JADE;So;0;ON; 7389;;;;N;;;;; -2F60;KANGXI RADICAL MELON;So;0;ON; 74DC;;;;N;;;;; -2F61;KANGXI RADICAL TILE;So;0;ON; 74E6;;;;N;;;;; -2F62;KANGXI RADICAL SWEET;So;0;ON; 7518;;;;N;;;;; -2F63;KANGXI RADICAL LIFE;So;0;ON; 751F;;;;N;;;;; -2F64;KANGXI RADICAL USE;So;0;ON; 7528;;;;N;;;;; -2F65;KANGXI RADICAL FIELD;So;0;ON; 7530;;;;N;;;;; -2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON; 758B;;;;N;;;;; -2F67;KANGXI RADICAL SICKNESS;So;0;ON; 7592;;;;N;;;;; -2F68;KANGXI RADICAL DOTTED TENT;So;0;ON; 7676;;;;N;;;;; -2F69;KANGXI RADICAL WHITE;So;0;ON; 767D;;;;N;;;;; -2F6A;KANGXI RADICAL SKIN;So;0;ON; 76AE;;;;N;;;;; -2F6B;KANGXI RADICAL DISH;So;0;ON; 76BF;;;;N;;;;; -2F6C;KANGXI RADICAL EYE;So;0;ON; 76EE;;;;N;;;;; -2F6D;KANGXI RADICAL SPEAR;So;0;ON; 77DB;;;;N;;;;; -2F6E;KANGXI RADICAL ARROW;So;0;ON; 77E2;;;;N;;;;; -2F6F;KANGXI RADICAL STONE;So;0;ON; 77F3;;;;N;;;;; -2F70;KANGXI RADICAL SPIRIT;So;0;ON; 793A;;;;N;;;;; -2F71;KANGXI RADICAL TRACK;So;0;ON; 79B8;;;;N;;;;; -2F72;KANGXI RADICAL GRAIN;So;0;ON; 79BE;;;;N;;;;; -2F73;KANGXI RADICAL CAVE;So;0;ON; 7A74;;;;N;;;;; -2F74;KANGXI RADICAL STAND;So;0;ON; 7ACB;;;;N;;;;; -2F75;KANGXI RADICAL BAMBOO;So;0;ON; 7AF9;;;;N;;;;; -2F76;KANGXI RADICAL RICE;So;0;ON; 7C73;;;;N;;;;; -2F77;KANGXI RADICAL SILK;So;0;ON; 7CF8;;;;N;;;;; -2F78;KANGXI RADICAL JAR;So;0;ON; 7F36;;;;N;;;;; -2F79;KANGXI RADICAL NET;So;0;ON; 7F51;;;;N;;;;; -2F7A;KANGXI RADICAL SHEEP;So;0;ON; 7F8A;;;;N;;;;; -2F7B;KANGXI RADICAL FEATHER;So;0;ON; 7FBD;;;;N;;;;; -2F7C;KANGXI RADICAL OLD;So;0;ON; 8001;;;;N;;;;; -2F7D;KANGXI RADICAL AND;So;0;ON; 800C;;;;N;;;;; -2F7E;KANGXI RADICAL PLOW;So;0;ON; 8012;;;;N;;;;; -2F7F;KANGXI RADICAL EAR;So;0;ON; 8033;;;;N;;;;; -2F80;KANGXI RADICAL BRUSH;So;0;ON; 807F;;;;N;;;;; -2F81;KANGXI RADICAL MEAT;So;0;ON; 8089;;;;N;;;;; -2F82;KANGXI RADICAL MINISTER;So;0;ON; 81E3;;;;N;;;;; -2F83;KANGXI RADICAL SELF;So;0;ON; 81EA;;;;N;;;;; -2F84;KANGXI RADICAL ARRIVE;So;0;ON; 81F3;;;;N;;;;; -2F85;KANGXI RADICAL MORTAR;So;0;ON; 81FC;;;;N;;;;; -2F86;KANGXI RADICAL TONGUE;So;0;ON; 820C;;;;N;;;;; -2F87;KANGXI RADICAL OPPOSE;So;0;ON; 821B;;;;N;;;;; -2F88;KANGXI RADICAL BOAT;So;0;ON; 821F;;;;N;;;;; -2F89;KANGXI RADICAL STOPPING;So;0;ON; 826E;;;;N;;;;; -2F8A;KANGXI RADICAL COLOR;So;0;ON; 8272;;;;N;;;;; -2F8B;KANGXI RADICAL GRASS;So;0;ON; 8278;;;;N;;;;; -2F8C;KANGXI RADICAL TIGER;So;0;ON; 864D;;;;N;;;;; -2F8D;KANGXI RADICAL INSECT;So;0;ON; 866B;;;;N;;;;; -2F8E;KANGXI RADICAL BLOOD;So;0;ON; 8840;;;;N;;;;; -2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON; 884C;;;;N;;;;; -2F90;KANGXI RADICAL CLOTHES;So;0;ON; 8863;;;;N;;;;; -2F91;KANGXI RADICAL WEST;So;0;ON; 897E;;;;N;;;;; -2F92;KANGXI RADICAL SEE;So;0;ON; 898B;;;;N;;;;; -2F93;KANGXI RADICAL HORN;So;0;ON; 89D2;;;;N;;;;; -2F94;KANGXI RADICAL SPEECH;So;0;ON; 8A00;;;;N;;;;; -2F95;KANGXI RADICAL VALLEY;So;0;ON; 8C37;;;;N;;;;; -2F96;KANGXI RADICAL BEAN;So;0;ON; 8C46;;;;N;;;;; -2F97;KANGXI RADICAL PIG;So;0;ON; 8C55;;;;N;;;;; -2F98;KANGXI RADICAL BADGER;So;0;ON; 8C78;;;;N;;;;; -2F99;KANGXI RADICAL SHELL;So;0;ON; 8C9D;;;;N;;;;; -2F9A;KANGXI RADICAL RED;So;0;ON; 8D64;;;;N;;;;; -2F9B;KANGXI RADICAL RUN;So;0;ON; 8D70;;;;N;;;;; -2F9C;KANGXI RADICAL FOOT;So;0;ON; 8DB3;;;;N;;;;; -2F9D;KANGXI RADICAL BODY;So;0;ON; 8EAB;;;;N;;;;; -2F9E;KANGXI RADICAL CART;So;0;ON; 8ECA;;;;N;;;;; -2F9F;KANGXI RADICAL BITTER;So;0;ON; 8F9B;;;;N;;;;; -2FA0;KANGXI RADICAL MORNING;So;0;ON; 8FB0;;;;N;;;;; -2FA1;KANGXI RADICAL WALK;So;0;ON; 8FB5;;;;N;;;;; -2FA2;KANGXI RADICAL CITY;So;0;ON; 9091;;;;N;;;;; -2FA3;KANGXI RADICAL WINE;So;0;ON; 9149;;;;N;;;;; -2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON; 91C6;;;;N;;;;; -2FA5;KANGXI RADICAL VILLAGE;So;0;ON; 91CC;;;;N;;;;; -2FA6;KANGXI RADICAL GOLD;So;0;ON; 91D1;;;;N;;;;; -2FA7;KANGXI RADICAL LONG;So;0;ON; 9577;;;;N;;;;; -2FA8;KANGXI RADICAL GATE;So;0;ON; 9580;;;;N;;;;; -2FA9;KANGXI RADICAL MOUND;So;0;ON; 961C;;;;N;;;;; -2FAA;KANGXI RADICAL SLAVE;So;0;ON; 96B6;;;;N;;;;; -2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON; 96B9;;;;N;;;;; -2FAC;KANGXI RADICAL RAIN;So;0;ON; 96E8;;;;N;;;;; -2FAD;KANGXI RADICAL BLUE;So;0;ON; 9751;;;;N;;;;; -2FAE;KANGXI RADICAL WRONG;So;0;ON; 975E;;;;N;;;;; -2FAF;KANGXI RADICAL FACE;So;0;ON; 9762;;;;N;;;;; -2FB0;KANGXI RADICAL LEATHER;So;0;ON; 9769;;;;N;;;;; -2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON; 97CB;;;;N;;;;; -2FB2;KANGXI RADICAL LEEK;So;0;ON; 97ED;;;;N;;;;; -2FB3;KANGXI RADICAL SOUND;So;0;ON; 97F3;;;;N;;;;; -2FB4;KANGXI RADICAL LEAF;So;0;ON; 9801;;;;N;;;;; -2FB5;KANGXI RADICAL WIND;So;0;ON; 98A8;;;;N;;;;; -2FB6;KANGXI RADICAL FLY;So;0;ON; 98DB;;;;N;;;;; -2FB7;KANGXI RADICAL EAT;So;0;ON; 98DF;;;;N;;;;; -2FB8;KANGXI RADICAL HEAD;So;0;ON; 9996;;;;N;;;;; -2FB9;KANGXI RADICAL FRAGRANT;So;0;ON; 9999;;;;N;;;;; -2FBA;KANGXI RADICAL HORSE;So;0;ON; 99AC;;;;N;;;;; -2FBB;KANGXI RADICAL BONE;So;0;ON; 9AA8;;;;N;;;;; -2FBC;KANGXI RADICAL TALL;So;0;ON; 9AD8;;;;N;;;;; -2FBD;KANGXI RADICAL HAIR;So;0;ON; 9ADF;;;;N;;;;; -2FBE;KANGXI RADICAL FIGHT;So;0;ON; 9B25;;;;N;;;;; -2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON; 9B2F;;;;N;;;;; -2FC0;KANGXI RADICAL CAULDRON;So;0;ON; 9B32;;;;N;;;;; -2FC1;KANGXI RADICAL GHOST;So;0;ON; 9B3C;;;;N;;;;; -2FC2;KANGXI RADICAL FISH;So;0;ON; 9B5A;;;;N;;;;; -2FC3;KANGXI RADICAL BIRD;So;0;ON; 9CE5;;;;N;;;;; -2FC4;KANGXI RADICAL SALT;So;0;ON; 9E75;;;;N;;;;; -2FC5;KANGXI RADICAL DEER;So;0;ON; 9E7F;;;;N;;;;; -2FC6;KANGXI RADICAL WHEAT;So;0;ON; 9EA5;;;;N;;;;; -2FC7;KANGXI RADICAL HEMP;So;0;ON; 9EBB;;;;N;;;;; -2FC8;KANGXI RADICAL YELLOW;So;0;ON; 9EC3;;;;N;;;;; -2FC9;KANGXI RADICAL MILLET;So;0;ON; 9ECD;;;;N;;;;; -2FCA;KANGXI RADICAL BLACK;So;0;ON; 9ED1;;;;N;;;;; -2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON; 9EF9;;;;N;;;;; -2FCC;KANGXI RADICAL FROG;So;0;ON; 9EFD;;;;N;;;;; -2FCD;KANGXI RADICAL TRIPOD;So;0;ON; 9F0E;;;;N;;;;; -2FCE;KANGXI RADICAL DRUM;So;0;ON; 9F13;;;;N;;;;; -2FCF;KANGXI RADICAL RAT;So;0;ON; 9F20;;;;N;;;;; -2FD0;KANGXI RADICAL NOSE;So;0;ON; 9F3B;;;;N;;;;; -2FD1;KANGXI RADICAL EVEN;So;0;ON; 9F4A;;;;N;;;;; -2FD2;KANGXI RADICAL TOOTH;So;0;ON; 9F52;;;;N;;;;; -2FD3;KANGXI RADICAL DRAGON;So;0;ON; 9F8D;;;;N;;;;; -2FD4;KANGXI RADICAL TURTLE;So;0;ON; 9F9C;;;;N;;;;; -2FD5;KANGXI RADICAL FLUTE;So;0;ON; 9FA0;;;;N;;;;; -2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; -2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; -2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; -2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; -2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; -2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; -2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; -2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; -2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; -2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; -2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; -2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; -3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; -3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; -3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; -3003;DITTO MARK;Po;0;ON;;;;;N;;;;; -3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; -3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; -3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; -3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; -3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; -300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; -300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; -300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; -300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; -300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; -300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; -3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; -3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; -3012;POSTAL MARK;So;0;ON;;;;;N;;;;; -3013;GETA MARK;So;0;ON;;;;;N;;;;; -3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; -3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; -3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; -3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; -3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; -3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; -301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; -301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; -301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; -301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;N;;;;; -301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;; -3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; -3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; -3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; -3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; -3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; -3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; -3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; -3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; -3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; -3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; -302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; -302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; -302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; -302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; -302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; -3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; -3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; -3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; -3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; -3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; -3036;CIRCLED POSTAL MARK;So;0;ON; 3012;;;;N;;;;; -3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; -3038;HANGZHOU NUMERAL TEN;Nl;0;L; 5341;;;10;N;;;;; -3039;HANGZHOU NUMERAL TWENTY;Nl;0;L; 5344;;;20;N;;;;; -303A;HANGZHOU NUMERAL THIRTY;Nl;0;L; 5345;;;30;N;;;;; -303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; -303C;MASU MARK;Lo;0;L;;;;;N;;;;; -303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; -303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; -303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; -3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; -3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; -3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; -3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; -3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; -304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; -304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; -304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; -304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; -304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; -3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; -3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; -3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; -3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; -3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; -3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; -3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; -3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; -3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; -3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; -305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; -305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; -305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; -305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; -305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; -305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; -3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; -3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; -3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; -3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; -3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; -3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; -3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; -3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; -3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; -306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; -306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; -306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; -306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; -306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; -306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; -3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; -3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; -3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; -3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; -3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; -3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; -3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; -3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; -3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; -3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; -307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; -307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; -307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; -307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; -307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; -307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; -3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; -3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; -3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; -3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; -3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; -3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; -3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; -308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; -308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; -308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; -308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; -308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; -3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; -3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; -3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; -3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; -3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; -3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; -309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; -309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON; 0020 3099;;;;N;;;;; -309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON; 0020 309A;;;;N;;;;; -309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; -309F;HIRAGANA DIGRAPH YORI;Lo;0;L; 3088 308A;;;;N;;;;; -30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; -30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; -30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; -30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; -30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; -30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; -30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; -30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; -30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; -30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; -30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; -30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; -30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; -30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; -30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; -30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; -30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; -30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; -30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; -30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; -30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; -30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; -30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; -30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; -30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; -30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; -30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; -30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; -30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; -30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; -30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; -30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; -30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; -30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; -30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; -30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; -30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; -30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; -30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; -30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; -30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; -30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; -30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; -30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; -30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; -30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; -30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; -30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; -30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; -30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; -30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; -30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; -30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; -30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; -30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; -30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; -30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; -30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; -30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; -30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; -30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; -30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; -30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; -30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; -30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; -30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; -30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; -30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; -30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; -30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; -30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; -30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; -30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; -30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; -30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; -30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; -30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; -30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; -30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; -30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; -30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; -30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; -30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; -30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; -30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; -30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; -30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; -30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; -30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; -30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; -30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; -30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; -30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; -30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; -30FF;KATAKANA DIGRAPH KOTO;Lo;0;L; 30B3 30C8;;;;N;;;;; -3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; -3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; -3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; -3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; -3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; -310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; -310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; -310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; -310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; -310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; -310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; -3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; -3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; -3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; -3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; -3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; -3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; -3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; -3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; -3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; -3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; -311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; -311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; -311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; -311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; -311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; -311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; -3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; -3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; -3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; -3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; -3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; -3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; -3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; -3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; -3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; -3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; -312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; -312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; -312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; -312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;; -3131;HANGUL LETTER KIYEOK;Lo;0;L; 1100;;;;N;HANGUL LETTER GIYEOG;;;; -3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L; 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; -3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; -3134;HANGUL LETTER NIEUN;Lo;0;L; 1102;;;;N;;;;; -3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; -3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; -3137;HANGUL LETTER TIKEUT;Lo;0;L; 1103;;;;N;HANGUL LETTER DIGEUD;;;; -3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L; 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; -3139;HANGUL LETTER RIEUL;Lo;0;L; 1105;;;;N;HANGUL LETTER LIEUL;;;; -313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; -313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; -313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; -313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L; 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; -313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; -313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; -3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; -3141;HANGUL LETTER MIEUM;Lo;0;L; 1106;;;;N;;;;; -3142;HANGUL LETTER PIEUP;Lo;0;L; 1107;;;;N;HANGUL LETTER BIEUB;;;; -3143;HANGUL LETTER SSANGPIEUP;Lo;0;L; 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; -3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L; 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; -3145;HANGUL LETTER SIOS;Lo;0;L; 1109;;;;N;;;;; -3146;HANGUL LETTER SSANGSIOS;Lo;0;L; 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; -3147;HANGUL LETTER IEUNG;Lo;0;L; 110B;;;;N;;;;; -3148;HANGUL LETTER CIEUC;Lo;0;L; 110C;;;;N;HANGUL LETTER JIEUJ;;;; -3149;HANGUL LETTER SSANGCIEUC;Lo;0;L; 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; -314A;HANGUL LETTER CHIEUCH;Lo;0;L; 110E;;;;N;HANGUL LETTER CIEUC;;;; -314B;HANGUL LETTER KHIEUKH;Lo;0;L; 110F;;;;N;HANGUL LETTER KIYEOK;;;; -314C;HANGUL LETTER THIEUTH;Lo;0;L; 1110;;;;N;HANGUL LETTER TIEUT;;;; -314D;HANGUL LETTER PHIEUPH;Lo;0;L; 1111;;;;N;HANGUL LETTER PIEUP;;;; -314E;HANGUL LETTER HIEUH;Lo;0;L; 1112;;;;N;;;;; -314F;HANGUL LETTER A;Lo;0;L; 1161;;;;N;;;;; -3150;HANGUL LETTER AE;Lo;0;L; 1162;;;;N;;;;; -3151;HANGUL LETTER YA;Lo;0;L; 1163;;;;N;;;;; -3152;HANGUL LETTER YAE;Lo;0;L; 1164;;;;N;;;;; -3153;HANGUL LETTER EO;Lo;0;L; 1165;;;;N;;;;; -3154;HANGUL LETTER E;Lo;0;L; 1166;;;;N;;;;; -3155;HANGUL LETTER YEO;Lo;0;L; 1167;;;;N;;;;; -3156;HANGUL LETTER YE;Lo;0;L; 1168;;;;N;;;;; -3157;HANGUL LETTER O;Lo;0;L; 1169;;;;N;;;;; -3158;HANGUL LETTER WA;Lo;0;L; 116A;;;;N;;;;; -3159;HANGUL LETTER WAE;Lo;0;L; 116B;;;;N;;;;; -315A;HANGUL LETTER OE;Lo;0;L; 116C;;;;N;;;;; -315B;HANGUL LETTER YO;Lo;0;L; 116D;;;;N;;;;; -315C;HANGUL LETTER U;Lo;0;L; 116E;;;;N;;;;; -315D;HANGUL LETTER WEO;Lo;0;L; 116F;;;;N;;;;; -315E;HANGUL LETTER WE;Lo;0;L; 1170;;;;N;;;;; -315F;HANGUL LETTER WI;Lo;0;L; 1171;;;;N;;;;; -3160;HANGUL LETTER YU;Lo;0;L; 1172;;;;N;;;;; -3161;HANGUL LETTER EU;Lo;0;L; 1173;;;;N;;;;; -3162;HANGUL LETTER YI;Lo;0;L; 1174;;;;N;;;;; -3163;HANGUL LETTER I;Lo;0;L; 1175;;;;N;;;;; -3164;HANGUL FILLER;Lo;0;L; 1160;;;;N;HANGUL CAE OM;;;; -3165;HANGUL LETTER SSANGNIEUN;Lo;0;L; 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; -3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L; 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; -3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L; 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; -3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L; 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; -3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L; 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; -316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L; 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; -316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L; 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; -316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L; 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; -316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L; 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; -316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L; 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; -316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L; 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; -3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L; 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; -3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L; 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; -3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L; 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; -3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L; 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; -3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L; 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; -3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L; 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; -3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L; 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; -3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L; 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; -3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L; 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; -3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L; 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; -317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L; 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; -317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L; 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; -317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L; 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; -317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L; 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; -317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L; 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; -317F;HANGUL LETTER PANSIOS;Lo;0;L; 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; -3180;HANGUL LETTER SSANGIEUNG;Lo;0;L; 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; -3181;HANGUL LETTER YESIEUNG;Lo;0;L; 114C;;;;N;HANGUL LETTER NGIEUNG;;;; -3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L; 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; -3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L; 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; -3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L; 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; -3185;HANGUL LETTER SSANGHIEUH;Lo;0;L; 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; -3186;HANGUL LETTER YEORINHIEUH;Lo;0;L; 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; -3187;HANGUL LETTER YO-YA;Lo;0;L; 1184;;;;N;HANGUL LETTER YOYA;;;; -3188;HANGUL LETTER YO-YAE;Lo;0;L; 1185;;;;N;HANGUL LETTER YOYAE;;;; -3189;HANGUL LETTER YO-I;Lo;0;L; 1188;;;;N;HANGUL LETTER YOI;;;; -318A;HANGUL LETTER YU-YEO;Lo;0;L; 1191;;;;N;HANGUL LETTER YUYEO;;;; -318B;HANGUL LETTER YU-YE;Lo;0;L; 1192;;;;N;HANGUL LETTER YUYE;;;; -318C;HANGUL LETTER YU-I;Lo;0;L; 1194;;;;N;HANGUL LETTER YUI;;;; -318D;HANGUL LETTER ARAEA;Lo;0;L; 119E;;;;N;HANGUL LETTER ALAE A;;;; -318E;HANGUL LETTER ARAEAE;Lo;0;L; 11A1;;;;N;HANGUL LETTER ALAE AE;;;; -3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;;;; -3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;;;; -3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L; 4E00;;;1;N;KAERITEN ITI;;;; -3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L; 4E8C;;;2;N;KAERITEN NI;;;; -3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L; 4E09;;;3;N;KAERITEN SAN;;;; -3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L; 56DB;;;4;N;KAERITEN SI;;;; -3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L; 4E0A;;;;N;KAERITEN ZYOU;;;; -3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L; 4E2D;;;;N;KAERITEN TYUU;;;; -3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L; 4E0B;;;;N;KAERITEN GE;;;; -3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L; 7532;;;;N;KAERITEN KOU;;;; -319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L; 4E59;;;;N;KAERITEN OTU;;;; -319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L; 4E19;;;;N;KAERITEN HEI;;;; -319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L; 4E01;;;;N;KAERITEN TEI;;;; -319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L; 5929;;;;N;KAERITEN TEN;;;; -319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L; 5730;;;;N;KAERITEN TI;;;; -319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L; 4EBA;;;;N;KAERITEN ZIN;;;; -31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; -31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; -31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; -31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; -31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; -31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; -31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; -31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; -31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; -31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; -31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; -31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; -31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; -31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; -31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; -31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; -31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; -31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; -31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; -31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; -31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; -31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; -31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; -31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; -31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; -31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; -31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; -31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; -31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; -31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; -31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; -31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; -31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; -31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; -31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; -31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; -31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; -31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; -31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; -31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; -31D0;CJK STROKE H;So;0;ON;;;;;N;;;;; -31D1;CJK STROKE S;So;0;ON;;;;;N;;;;; -31D2;CJK STROKE P;So;0;ON;;;;;N;;;;; -31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;; -31D4;CJK STROKE D;So;0;ON;;;;;N;;;;; -31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;; -31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;; -31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;; -31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;; -31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;; -31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;; -31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;; -31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;; -31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;; -31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;; -31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;; -31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;; -31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;; -31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;; -31E3;CJK STROKE Q;So;0;ON;;;;;N;;;;; -31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; -31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; -31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; -31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; -31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; -31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; -31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; -31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; -31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; -31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; -31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; -31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; -31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; -31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; -31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; -31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; -3200;PARENTHESIZED HANGUL KIYEOK;So;0;L; 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; -3201;PARENTHESIZED HANGUL NIEUN;So;0;L; 0028 1102 0029;;;;N;;;;; -3202;PARENTHESIZED HANGUL TIKEUT;So;0;L; 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; -3203;PARENTHESIZED HANGUL RIEUL;So;0;L; 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; -3204;PARENTHESIZED HANGUL MIEUM;So;0;L; 0028 1106 0029;;;;N;;;;; -3205;PARENTHESIZED HANGUL PIEUP;So;0;L; 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; -3206;PARENTHESIZED HANGUL SIOS;So;0;L; 0028 1109 0029;;;;N;;;;; -3207;PARENTHESIZED HANGUL IEUNG;So;0;L; 0028 110B 0029;;;;N;;;;; -3208;PARENTHESIZED HANGUL CIEUC;So;0;L; 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; -3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L; 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; -320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L; 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; -320B;PARENTHESIZED HANGUL THIEUTH;So;0;L; 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; -320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L; 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; -320D;PARENTHESIZED HANGUL HIEUH;So;0;L; 0028 1112 0029;;;;N;;;;; -320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L; 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; -320F;PARENTHESIZED HANGUL NIEUN A;So;0;L; 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; -3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L; 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; -3211;PARENTHESIZED HANGUL RIEUL A;So;0;L; 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; -3212;PARENTHESIZED HANGUL MIEUM A;So;0;L; 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; -3213;PARENTHESIZED HANGUL PIEUP A;So;0;L; 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; -3214;PARENTHESIZED HANGUL SIOS A;So;0;L; 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; -3215;PARENTHESIZED HANGUL IEUNG A;So;0;L; 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; -3216;PARENTHESIZED HANGUL CIEUC A;So;0;L; 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; -3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L; 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; -3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L; 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; -3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L; 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; -321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L; 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; -321B;PARENTHESIZED HANGUL HIEUH A;So;0;L; 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; -321C;PARENTHESIZED HANGUL CIEUC U;So;0;L; 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; -321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON; 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; -321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON; 0028 110B 1169 1112 116E 0029;;;;N;;;;; -3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L; 0028 4E00 0029;;;1;N;;;;; -3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L; 0028 4E8C 0029;;;2;N;;;;; -3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L; 0028 4E09 0029;;;3;N;;;;; -3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L; 0028 56DB 0029;;;4;N;;;;; -3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L; 0028 4E94 0029;;;5;N;;;;; -3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L; 0028 516D 0029;;;6;N;;;;; -3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L; 0028 4E03 0029;;;7;N;;;;; -3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L; 0028 516B 0029;;;8;N;;;;; -3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L; 0028 4E5D 0029;;;9;N;;;;; -3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L; 0028 5341 0029;;;10;N;;;;; -322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L; 0028 6708 0029;;;;N;;;;; -322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L; 0028 706B 0029;;;;N;;;;; -322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L; 0028 6C34 0029;;;;N;;;;; -322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L; 0028 6728 0029;;;;N;;;;; -322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L; 0028 91D1 0029;;;;N;;;;; -322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L; 0028 571F 0029;;;;N;;;;; -3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L; 0028 65E5 0029;;;;N;;;;; -3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L; 0028 682A 0029;;;;N;;;;; -3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L; 0028 6709 0029;;;;N;;;;; -3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L; 0028 793E 0029;;;;N;;;;; -3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L; 0028 540D 0029;;;;N;;;;; -3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L; 0028 7279 0029;;;;N;;;;; -3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L; 0028 8CA1 0029;;;;N;;;;; -3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L; 0028 795D 0029;;;;N;;;;; -3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L; 0028 52B4 0029;;;;N;;;;; -3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L; 0028 4EE3 0029;;;;N;;;;; -323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L; 0028 547C 0029;;;;N;;;;; -323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L; 0028 5B66 0029;;;;N;;;;; -323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L; 0028 76E3 0029;;;;N;;;;; -323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L; 0028 4F01 0029;;;;N;;;;; -323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L; 0028 8CC7 0029;;;;N;;;;; -323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L; 0028 5354 0029;;;;N;;;;; -3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L; 0028 796D 0029;;;;N;;;;; -3241;PARENTHESIZED IDEOGRAPH REST;So;0;L; 0028 4F11 0029;;;;N;;;;; -3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L; 0028 81EA 0029;;;;N;;;;; -3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L; 0028 81F3 0029;;;;N;;;;; -3244;CIRCLED IDEOGRAPH QUESTION;So;0;L; 554F;;;;N;;;;; -3245;CIRCLED IDEOGRAPH KINDERGARTEN;So;0;L; 5E7C;;;;N;;;;; -3246;CIRCLED IDEOGRAPH SCHOOL;So;0;L; 6587;;;;N;;;;; -3247;CIRCLED IDEOGRAPH KOTO;So;0;L; 7B8F;;;;N;;;;; -3248;CIRCLED NUMBER TEN ON BLACK SQUARE;So;0;L;;;;;N;;;;; -3249;CIRCLED NUMBER TWENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324A;CIRCLED NUMBER THIRTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324B;CIRCLED NUMBER FORTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324C;CIRCLED NUMBER FIFTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324D;CIRCLED NUMBER SIXTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324E;CIRCLED NUMBER SEVENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -324F;CIRCLED NUMBER EIGHTY ON BLACK SQUARE;So;0;L;;;;;N;;;;; -3250;PARTNERSHIP SIGN;So;0;ON; 0050 0054 0045;;;;N;;;;; -3251;CIRCLED NUMBER TWENTY ONE;No;0;ON; 0032 0031;;;21;N;;;;; -3252;CIRCLED NUMBER TWENTY TWO;No;0;ON; 0032 0032;;;22;N;;;;; -3253;CIRCLED NUMBER TWENTY THREE;No;0;ON; 0032 0033;;;23;N;;;;; -3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON; 0032 0034;;;24;N;;;;; -3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON; 0032 0035;;;25;N;;;;; -3256;CIRCLED NUMBER TWENTY SIX;No;0;ON; 0032 0036;;;26;N;;;;; -3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON; 0032 0037;;;27;N;;;;; -3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON; 0032 0038;;;28;N;;;;; -3259;CIRCLED NUMBER TWENTY NINE;No;0;ON; 0032 0039;;;29;N;;;;; -325A;CIRCLED NUMBER THIRTY;No;0;ON; 0033 0030;;;30;N;;;;; -325B;CIRCLED NUMBER THIRTY ONE;No;0;ON; 0033 0031;;;31;N;;;;; -325C;CIRCLED NUMBER THIRTY TWO;No;0;ON; 0033 0032;;;32;N;;;;; -325D;CIRCLED NUMBER THIRTY THREE;No;0;ON; 0033 0033;;;33;N;;;;; -325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON; 0033 0034;;;34;N;;;;; -325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON; 0033 0035;;;35;N;;;;; -3260;CIRCLED HANGUL KIYEOK;So;0;L; 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; -3261;CIRCLED HANGUL NIEUN;So;0;L; 1102;;;;N;;;;; -3262;CIRCLED HANGUL TIKEUT;So;0;L; 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; -3263;CIRCLED HANGUL RIEUL;So;0;L; 1105;;;;N;CIRCLED HANGUL LIEUL;;;; -3264;CIRCLED HANGUL MIEUM;So;0;L; 1106;;;;N;;;;; -3265;CIRCLED HANGUL PIEUP;So;0;L; 1107;;;;N;CIRCLED HANGUL BIEUB;;;; -3266;CIRCLED HANGUL SIOS;So;0;L; 1109;;;;N;;;;; -3267;CIRCLED HANGUL IEUNG;So;0;L; 110B;;;;N;;;;; -3268;CIRCLED HANGUL CIEUC;So;0;L; 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; -3269;CIRCLED HANGUL CHIEUCH;So;0;L; 110E;;;;N;CIRCLED HANGUL CIEUC;;;; -326A;CIRCLED HANGUL KHIEUKH;So;0;L; 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; -326B;CIRCLED HANGUL THIEUTH;So;0;L; 1110;;;;N;CIRCLED HANGUL TIEUT;;;; -326C;CIRCLED HANGUL PHIEUPH;So;0;L; 1111;;;;N;CIRCLED HANGUL PIEUP;;;; -326D;CIRCLED HANGUL HIEUH;So;0;L; 1112;;;;N;;;;; -326E;CIRCLED HANGUL KIYEOK A;So;0;L; 1100 1161;;;;N;CIRCLED HANGUL GA;;;; -326F;CIRCLED HANGUL NIEUN A;So;0;L; 1102 1161;;;;N;CIRCLED HANGUL NA;;;; -3270;CIRCLED HANGUL TIKEUT A;So;0;L; 1103 1161;;;;N;CIRCLED HANGUL DA;;;; -3271;CIRCLED HANGUL RIEUL A;So;0;L; 1105 1161;;;;N;CIRCLED HANGUL LA;;;; -3272;CIRCLED HANGUL MIEUM A;So;0;L; 1106 1161;;;;N;CIRCLED HANGUL MA;;;; -3273;CIRCLED HANGUL PIEUP A;So;0;L; 1107 1161;;;;N;CIRCLED HANGUL BA;;;; -3274;CIRCLED HANGUL SIOS A;So;0;L; 1109 1161;;;;N;CIRCLED HANGUL SA;;;; -3275;CIRCLED HANGUL IEUNG A;So;0;L; 110B 1161;;;;N;CIRCLED HANGUL A;;;; -3276;CIRCLED HANGUL CIEUC A;So;0;L; 110C 1161;;;;N;CIRCLED HANGUL JA;;;; -3277;CIRCLED HANGUL CHIEUCH A;So;0;L; 110E 1161;;;;N;CIRCLED HANGUL CA;;;; -3278;CIRCLED HANGUL KHIEUKH A;So;0;L; 110F 1161;;;;N;CIRCLED HANGUL KA;;;; -3279;CIRCLED HANGUL THIEUTH A;So;0;L; 1110 1161;;;;N;CIRCLED HANGUL TA;;;; -327A;CIRCLED HANGUL PHIEUPH A;So;0;L; 1111 1161;;;;N;CIRCLED HANGUL PA;;;; -327B;CIRCLED HANGUL HIEUH A;So;0;L; 1112 1161;;;;N;CIRCLED HANGUL HA;;;; -327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON; 110E 1161 11B7 1100 1169;;;;N;;;;; -327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON; 110C 116E 110B 1174;;;;N;;;;; -327E;CIRCLED HANGUL IEUNG U;So;0;ON; 110B 116E;;;;N;;;;; -327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; -3280;CIRCLED IDEOGRAPH ONE;No;0;L; 4E00;;;1;N;;;;; -3281;CIRCLED IDEOGRAPH TWO;No;0;L; 4E8C;;;2;N;;;;; -3282;CIRCLED IDEOGRAPH THREE;No;0;L; 4E09;;;3;N;;;;; -3283;CIRCLED IDEOGRAPH FOUR;No;0;L; 56DB;;;4;N;;;;; -3284;CIRCLED IDEOGRAPH FIVE;No;0;L; 4E94;;;5;N;;;;; -3285;CIRCLED IDEOGRAPH SIX;No;0;L; 516D;;;6;N;;;;; -3286;CIRCLED IDEOGRAPH SEVEN;No;0;L; 4E03;;;7;N;;;;; -3287;CIRCLED IDEOGRAPH EIGHT;No;0;L; 516B;;;8;N;;;;; -3288;CIRCLED IDEOGRAPH NINE;No;0;L; 4E5D;;;9;N;;;;; -3289;CIRCLED IDEOGRAPH TEN;No;0;L; 5341;;;10;N;;;;; -328A;CIRCLED IDEOGRAPH MOON;So;0;L; 6708;;;;N;;;;; -328B;CIRCLED IDEOGRAPH FIRE;So;0;L; 706B;;;;N;;;;; -328C;CIRCLED IDEOGRAPH WATER;So;0;L; 6C34;;;;N;;;;; -328D;CIRCLED IDEOGRAPH WOOD;So;0;L; 6728;;;;N;;;;; -328E;CIRCLED IDEOGRAPH METAL;So;0;L; 91D1;;;;N;;;;; -328F;CIRCLED IDEOGRAPH EARTH;So;0;L; 571F;;;;N;;;;; -3290;CIRCLED IDEOGRAPH SUN;So;0;L; 65E5;;;;N;;;;; -3291;CIRCLED IDEOGRAPH STOCK;So;0;L; 682A;;;;N;;;;; -3292;CIRCLED IDEOGRAPH HAVE;So;0;L; 6709;;;;N;;;;; -3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L; 793E;;;;N;;;;; -3294;CIRCLED IDEOGRAPH NAME;So;0;L; 540D;;;;N;;;;; -3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L; 7279;;;;N;;;;; -3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L; 8CA1;;;;N;;;;; -3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L; 795D;;;;N;;;;; -3298;CIRCLED IDEOGRAPH LABOR;So;0;L; 52B4;;;;N;;;;; -3299;CIRCLED IDEOGRAPH SECRET;So;0;L; 79D8;;;;N;;;;; -329A;CIRCLED IDEOGRAPH MALE;So;0;L; 7537;;;;N;;;;; -329B;CIRCLED IDEOGRAPH FEMALE;So;0;L; 5973;;;;N;;;;; -329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L; 9069;;;;N;;;;; -329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L; 512A;;;;N;;;;; -329E;CIRCLED IDEOGRAPH PRINT;So;0;L; 5370;;;;N;;;;; -329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L; 6CE8;;;;N;;;;; -32A0;CIRCLED IDEOGRAPH ITEM;So;0;L; 9805;;;;N;;;;; -32A1;CIRCLED IDEOGRAPH REST;So;0;L; 4F11;;;;N;;;;; -32A2;CIRCLED IDEOGRAPH COPY;So;0;L; 5199;;;;N;;;;; -32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L; 6B63;;;;N;;;;; -32A4;CIRCLED IDEOGRAPH HIGH;So;0;L; 4E0A;;;;N;;;;; -32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L; 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; -32A6;CIRCLED IDEOGRAPH LOW;So;0;L; 4E0B;;;;N;;;;; -32A7;CIRCLED IDEOGRAPH LEFT;So;0;L; 5DE6;;;;N;;;;; -32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L; 53F3;;;;N;;;;; -32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L; 533B;;;;N;;;;; -32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L; 5B97;;;;N;;;;; -32AB;CIRCLED IDEOGRAPH STUDY;So;0;L; 5B66;;;;N;;;;; -32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L; 76E3;;;;N;;;;; -32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L; 4F01;;;;N;;;;; -32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L; 8CC7;;;;N;;;;; -32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L; 5354;;;;N;;;;; -32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L; 591C;;;;N;;;;; -32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON; 0033 0036;;;36;N;;;;; -32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON; 0033 0037;;;37;N;;;;; -32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON; 0033 0038;;;38;N;;;;; -32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON; 0033 0039;;;39;N;;;;; -32B5;CIRCLED NUMBER FORTY;No;0;ON; 0034 0030;;;40;N;;;;; -32B6;CIRCLED NUMBER FORTY ONE;No;0;ON; 0034 0031;;;41;N;;;;; -32B7;CIRCLED NUMBER FORTY TWO;No;0;ON; 0034 0032;;;42;N;;;;; -32B8;CIRCLED NUMBER FORTY THREE;No;0;ON; 0034 0033;;;43;N;;;;; -32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON; 0034 0034;;;44;N;;;;; -32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON; 0034 0035;;;45;N;;;;; -32BB;CIRCLED NUMBER FORTY SIX;No;0;ON; 0034 0036;;;46;N;;;;; -32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON; 0034 0037;;;47;N;;;;; -32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON; 0034 0038;;;48;N;;;;; -32BE;CIRCLED NUMBER FORTY NINE;No;0;ON; 0034 0039;;;49;N;;;;; -32BF;CIRCLED NUMBER FIFTY;No;0;ON; 0035 0030;;;50;N;;;;; -32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L; 0031 6708;;;;N;;;;; -32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L; 0032 6708;;;;N;;;;; -32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L; 0033 6708;;;;N;;;;; -32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L; 0034 6708;;;;N;;;;; -32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L; 0035 6708;;;;N;;;;; -32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L; 0036 6708;;;;N;;;;; -32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L; 0037 6708;;;;N;;;;; -32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L; 0038 6708;;;;N;;;;; -32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L; 0039 6708;;;;N;;;;; -32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L; 0031 0030 6708;;;;N;;;;; -32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L; 0031 0031 6708;;;;N;;;;; -32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L; 0031 0032 6708;;;;N;;;;; -32CC;SQUARE HG;So;0;ON; 0048 0067;;;;N;;;;; -32CD;SQUARE ERG;So;0;ON; 0065 0072 0067;;;;N;;;;; -32CE;SQUARE EV;So;0;ON; 0065 0056;;;;N;;;;; -32CF;LIMITED LIABILITY SIGN;So;0;ON; 004C 0054 0044;;;;N;;;;; -32D0;CIRCLED KATAKANA A;So;0;L; 30A2;;;;N;;;;; -32D1;CIRCLED KATAKANA I;So;0;L; 30A4;;;;N;;;;; -32D2;CIRCLED KATAKANA U;So;0;L; 30A6;;;;N;;;;; -32D3;CIRCLED KATAKANA E;So;0;L; 30A8;;;;N;;;;; -32D4;CIRCLED KATAKANA O;So;0;L; 30AA;;;;N;;;;; -32D5;CIRCLED KATAKANA KA;So;0;L; 30AB;;;;N;;;;; -32D6;CIRCLED KATAKANA KI;So;0;L; 30AD;;;;N;;;;; -32D7;CIRCLED KATAKANA KU;So;0;L; 30AF;;;;N;;;;; -32D8;CIRCLED KATAKANA KE;So;0;L; 30B1;;;;N;;;;; -32D9;CIRCLED KATAKANA KO;So;0;L; 30B3;;;;N;;;;; -32DA;CIRCLED KATAKANA SA;So;0;L; 30B5;;;;N;;;;; -32DB;CIRCLED KATAKANA SI;So;0;L; 30B7;;;;N;;;;; -32DC;CIRCLED KATAKANA SU;So;0;L; 30B9;;;;N;;;;; -32DD;CIRCLED KATAKANA SE;So;0;L; 30BB;;;;N;;;;; -32DE;CIRCLED KATAKANA SO;So;0;L; 30BD;;;;N;;;;; -32DF;CIRCLED KATAKANA TA;So;0;L; 30BF;;;;N;;;;; -32E0;CIRCLED KATAKANA TI;So;0;L; 30C1;;;;N;;;;; -32E1;CIRCLED KATAKANA TU;So;0;L; 30C4;;;;N;;;;; -32E2;CIRCLED KATAKANA TE;So;0;L; 30C6;;;;N;;;;; -32E3;CIRCLED KATAKANA TO;So;0;L; 30C8;;;;N;;;;; -32E4;CIRCLED KATAKANA NA;So;0;L; 30CA;;;;N;;;;; -32E5;CIRCLED KATAKANA NI;So;0;L; 30CB;;;;N;;;;; -32E6;CIRCLED KATAKANA NU;So;0;L; 30CC;;;;N;;;;; -32E7;CIRCLED KATAKANA NE;So;0;L; 30CD;;;;N;;;;; -32E8;CIRCLED KATAKANA NO;So;0;L; 30CE;;;;N;;;;; -32E9;CIRCLED KATAKANA HA;So;0;L; 30CF;;;;N;;;;; -32EA;CIRCLED KATAKANA HI;So;0;L; 30D2;;;;N;;;;; -32EB;CIRCLED KATAKANA HU;So;0;L; 30D5;;;;N;;;;; -32EC;CIRCLED KATAKANA HE;So;0;L; 30D8;;;;N;;;;; -32ED;CIRCLED KATAKANA HO;So;0;L; 30DB;;;;N;;;;; -32EE;CIRCLED KATAKANA MA;So;0;L; 30DE;;;;N;;;;; -32EF;CIRCLED KATAKANA MI;So;0;L; 30DF;;;;N;;;;; -32F0;CIRCLED KATAKANA MU;So;0;L; 30E0;;;;N;;;;; -32F1;CIRCLED KATAKANA ME;So;0;L; 30E1;;;;N;;;;; -32F2;CIRCLED KATAKANA MO;So;0;L; 30E2;;;;N;;;;; -32F3;CIRCLED KATAKANA YA;So;0;L; 30E4;;;;N;;;;; -32F4;CIRCLED KATAKANA YU;So;0;L; 30E6;;;;N;;;;; -32F5;CIRCLED KATAKANA YO;So;0;L; 30E8;;;;N;;;;; -32F6;CIRCLED KATAKANA RA;So;0;L; 30E9;;;;N;;;;; -32F7;CIRCLED KATAKANA RI;So;0;L; 30EA;;;;N;;;;; -32F8;CIRCLED KATAKANA RU;So;0;L; 30EB;;;;N;;;;; -32F9;CIRCLED KATAKANA RE;So;0;L; 30EC;;;;N;;;;; -32FA;CIRCLED KATAKANA RO;So;0;L; 30ED;;;;N;;;;; -32FB;CIRCLED KATAKANA WA;So;0;L; 30EF;;;;N;;;;; -32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; -32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; -32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; -3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; -3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; -3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; -3303;SQUARE AARU;So;0;L; 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; -3304;SQUARE ININGU;So;0;L; 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; -3305;SQUARE INTI;So;0;L; 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; -3306;SQUARE UON;So;0;L; 30A6 30A9 30F3;;;;N;SQUARED UON;;;; -3307;SQUARE ESUKUUDO;So;0;L; 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; -3308;SQUARE EEKAA;So;0;L; 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; -3309;SQUARE ONSU;So;0;L; 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; -330A;SQUARE OOMU;So;0;L; 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; -330B;SQUARE KAIRI;So;0;L; 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; -330C;SQUARE KARATTO;So;0;L; 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; -330D;SQUARE KARORII;So;0;L; 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; -330E;SQUARE GARON;So;0;L; 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; -330F;SQUARE GANMA;So;0;L; 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; -3310;SQUARE GIGA;So;0;L; 30AE 30AC;;;;N;SQUARED GIGA;;;; -3311;SQUARE GINII;So;0;L; 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; -3312;SQUARE KYURII;So;0;L; 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; -3313;SQUARE GIRUDAA;So;0;L; 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; -3314;SQUARE KIRO;So;0;L; 30AD 30ED;;;;N;SQUARED KIRO;;;; -3315;SQUARE KIROGURAMU;So;0;L; 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; -3316;SQUARE KIROMEETORU;So;0;L; 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; -3317;SQUARE KIROWATTO;So;0;L; 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; -3318;SQUARE GURAMU;So;0;L; 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; -3319;SQUARE GURAMUTON;So;0;L; 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; -331A;SQUARE KURUZEIRO;So;0;L; 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; -331B;SQUARE KUROONE;So;0;L; 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; -331C;SQUARE KEESU;So;0;L; 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; -331D;SQUARE KORUNA;So;0;L; 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; -331E;SQUARE KOOPO;So;0;L; 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; -331F;SQUARE SAIKURU;So;0;L; 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; -3320;SQUARE SANTIIMU;So;0;L; 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; -3321;SQUARE SIRINGU;So;0;L; 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; -3322;SQUARE SENTI;So;0;L; 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; -3323;SQUARE SENTO;So;0;L; 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; -3324;SQUARE DAASU;So;0;L; 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; -3325;SQUARE DESI;So;0;L; 30C7 30B7;;;;N;SQUARED DESI;;;; -3326;SQUARE DORU;So;0;L; 30C9 30EB;;;;N;SQUARED DORU;;;; -3327;SQUARE TON;So;0;L; 30C8 30F3;;;;N;SQUARED TON;;;; -3328;SQUARE NANO;So;0;L; 30CA 30CE;;;;N;SQUARED NANO;;;; -3329;SQUARE NOTTO;So;0;L; 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; -332A;SQUARE HAITU;So;0;L; 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; -332B;SQUARE PAASENTO;So;0;L; 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; -332C;SQUARE PAATU;So;0;L; 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; -332D;SQUARE BAARERU;So;0;L; 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; -332E;SQUARE PIASUTORU;So;0;L; 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; -332F;SQUARE PIKURU;So;0;L; 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; -3330;SQUARE PIKO;So;0;L; 30D4 30B3;;;;N;SQUARED PIKO;;;; -3331;SQUARE BIRU;So;0;L; 30D3 30EB;;;;N;SQUARED BIRU;;;; -3332;SQUARE HUARADDO;So;0;L; 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; -3333;SQUARE HUIITO;So;0;L; 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; -3334;SQUARE BUSSYERU;So;0;L; 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; -3335;SQUARE HURAN;So;0;L; 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; -3336;SQUARE HEKUTAARU;So;0;L; 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; -3337;SQUARE PESO;So;0;L; 30DA 30BD;;;;N;SQUARED PESO;;;; -3338;SQUARE PENIHI;So;0;L; 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; -3339;SQUARE HERUTU;So;0;L; 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; -333A;SQUARE PENSU;So;0;L; 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; -333B;SQUARE PEEZI;So;0;L; 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; -333C;SQUARE BEETA;So;0;L; 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; -333D;SQUARE POINTO;So;0;L; 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; -333E;SQUARE BORUTO;So;0;L; 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; -333F;SQUARE HON;So;0;L; 30DB 30F3;;;;N;SQUARED HON;;;; -3340;SQUARE PONDO;So;0;L; 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; -3341;SQUARE HOORU;So;0;L; 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; -3342;SQUARE HOON;So;0;L; 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; -3343;SQUARE MAIKURO;So;0;L; 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; -3344;SQUARE MAIRU;So;0;L; 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; -3345;SQUARE MAHHA;So;0;L; 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; -3346;SQUARE MARUKU;So;0;L; 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; -3347;SQUARE MANSYON;So;0;L; 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; -3348;SQUARE MIKURON;So;0;L; 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; -3349;SQUARE MIRI;So;0;L; 30DF 30EA;;;;N;SQUARED MIRI;;;; -334A;SQUARE MIRIBAARU;So;0;L; 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; -334B;SQUARE MEGA;So;0;L; 30E1 30AC;;;;N;SQUARED MEGA;;;; -334C;SQUARE MEGATON;So;0;L; 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; -334D;SQUARE MEETORU;So;0;L; 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; -334E;SQUARE YAADO;So;0;L; 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; -334F;SQUARE YAARU;So;0;L; 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; -3350;SQUARE YUAN;So;0;L; 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; -3351;SQUARE RITTORU;So;0;L; 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; -3352;SQUARE RIRA;So;0;L; 30EA 30E9;;;;N;SQUARED RIRA;;;; -3353;SQUARE RUPII;So;0;L; 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; -3354;SQUARE RUUBURU;So;0;L; 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; -3355;SQUARE REMU;So;0;L; 30EC 30E0;;;;N;SQUARED REMU;;;; -3356;SQUARE RENTOGEN;So;0;L; 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; -3357;SQUARE WATTO;So;0;L; 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; -3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L; 0030 70B9;;;;N;;;;; -3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L; 0031 70B9;;;;N;;;;; -335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L; 0032 70B9;;;;N;;;;; -335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L; 0033 70B9;;;;N;;;;; -335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L; 0034 70B9;;;;N;;;;; -335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L; 0035 70B9;;;;N;;;;; -335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L; 0036 70B9;;;;N;;;;; -335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L; 0037 70B9;;;;N;;;;; -3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L; 0038 70B9;;;;N;;;;; -3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L; 0039 70B9;;;;N;;;;; -3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L; 0031 0030 70B9;;;;N;;;;; -3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L; 0031 0031 70B9;;;;N;;;;; -3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L; 0031 0032 70B9;;;;N;;;;; -3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L; 0031 0033 70B9;;;;N;;;;; -3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L; 0031 0034 70B9;;;;N;;;;; -3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L; 0031 0035 70B9;;;;N;;;;; -3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L; 0031 0036 70B9;;;;N;;;;; -3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L; 0031 0037 70B9;;;;N;;;;; -336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L; 0031 0038 70B9;;;;N;;;;; -336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L; 0031 0039 70B9;;;;N;;;;; -336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L; 0032 0030 70B9;;;;N;;;;; -336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L; 0032 0031 70B9;;;;N;;;;; -336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L; 0032 0032 70B9;;;;N;;;;; -336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L; 0032 0033 70B9;;;;N;;;;; -3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L; 0032 0034 70B9;;;;N;;;;; -3371;SQUARE HPA;So;0;L; 0068 0050 0061;;;;N;;;;; -3372;SQUARE DA;So;0;L; 0064 0061;;;;N;;;;; -3373;SQUARE AU;So;0;L; 0041 0055;;;;N;;;;; -3374;SQUARE BAR;So;0;L; 0062 0061 0072;;;;N;;;;; -3375;SQUARE OV;So;0;L; 006F 0056;;;;N;;;;; -3376;SQUARE PC;So;0;L; 0070 0063;;;;N;;;;; -3377;SQUARE DM;So;0;ON; 0064 006D;;;;N;;;;; -3378;SQUARE DM SQUARED;So;0;ON; 0064 006D 00B2;;;;N;;;;; -3379;SQUARE DM CUBED;So;0;ON; 0064 006D 00B3;;;;N;;;;; -337A;SQUARE IU;So;0;ON; 0049 0055;;;;N;;;;; -337B;SQUARE ERA NAME HEISEI;So;0;L; 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; -337C;SQUARE ERA NAME SYOUWA;So;0;L; 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; -337D;SQUARE ERA NAME TAISYOU;So;0;L; 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; -337E;SQUARE ERA NAME MEIZI;So;0;L; 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; -337F;SQUARE CORPORATION;So;0;L; 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; -3380;SQUARE PA AMPS;So;0;L; 0070 0041;;;;N;SQUARED PA AMPS;;;; -3381;SQUARE NA;So;0;L; 006E 0041;;;;N;SQUARED NA;;;; -3382;SQUARE MU A;So;0;L; 03BC 0041;;;;N;SQUARED MU A;;;; -3383;SQUARE MA;So;0;L; 006D 0041;;;;N;SQUARED MA;;;; -3384;SQUARE KA;So;0;L; 006B 0041;;;;N;SQUARED KA;;;; -3385;SQUARE KB;So;0;L; 004B 0042;;;;N;SQUARED KB;;;; -3386;SQUARE MB;So;0;L; 004D 0042;;;;N;SQUARED MB;;;; -3387;SQUARE GB;So;0;L; 0047 0042;;;;N;SQUARED GB;;;; -3388;SQUARE CAL;So;0;L; 0063 0061 006C;;;;N;SQUARED CAL;;;; -3389;SQUARE KCAL;So;0;L; 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; -338A;SQUARE PF;So;0;L; 0070 0046;;;;N;SQUARED PF;;;; -338B;SQUARE NF;So;0;L; 006E 0046;;;;N;SQUARED NF;;;; -338C;SQUARE MU F;So;0;L; 03BC 0046;;;;N;SQUARED MU F;;;; -338D;SQUARE MU G;So;0;L; 03BC 0067;;;;N;SQUARED MU G;;;; -338E;SQUARE MG;So;0;L; 006D 0067;;;;N;SQUARED MG;;;; -338F;SQUARE KG;So;0;L; 006B 0067;;;;N;SQUARED KG;;;; -3390;SQUARE HZ;So;0;L; 0048 007A;;;;N;SQUARED HZ;;;; -3391;SQUARE KHZ;So;0;L; 006B 0048 007A;;;;N;SQUARED KHZ;;;; -3392;SQUARE MHZ;So;0;L; 004D 0048 007A;;;;N;SQUARED MHZ;;;; -3393;SQUARE GHZ;So;0;L; 0047 0048 007A;;;;N;SQUARED GHZ;;;; -3394;SQUARE THZ;So;0;L; 0054 0048 007A;;;;N;SQUARED THZ;;;; -3395;SQUARE MU L;So;0;L; 03BC 2113;;;;N;SQUARED MU L;;;; -3396;SQUARE ML;So;0;L; 006D 2113;;;;N;SQUARED ML;;;; -3397;SQUARE DL;So;0;L; 0064 2113;;;;N;SQUARED DL;;;; -3398;SQUARE KL;So;0;L; 006B 2113;;;;N;SQUARED KL;;;; -3399;SQUARE FM;So;0;L; 0066 006D;;;;N;SQUARED FM;;;; -339A;SQUARE NM;So;0;L; 006E 006D;;;;N;SQUARED NM;;;; -339B;SQUARE MU M;So;0;L; 03BC 006D;;;;N;SQUARED MU M;;;; -339C;SQUARE MM;So;0;L; 006D 006D;;;;N;SQUARED MM;;;; -339D;SQUARE CM;So;0;L; 0063 006D;;;;N;SQUARED CM;;;; -339E;SQUARE KM;So;0;L; 006B 006D;;;;N;SQUARED KM;;;; -339F;SQUARE MM SQUARED;So;0;L; 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; -33A0;SQUARE CM SQUARED;So;0;L; 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; -33A1;SQUARE M SQUARED;So;0;L; 006D 00B2;;;;N;SQUARED M SQUARED;;;; -33A2;SQUARE KM SQUARED;So;0;L; 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; -33A3;SQUARE MM CUBED;So;0;L; 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; -33A4;SQUARE CM CUBED;So;0;L; 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; -33A5;SQUARE M CUBED;So;0;L; 006D 00B3;;;;N;SQUARED M CUBED;;;; -33A6;SQUARE KM CUBED;So;0;L; 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; -33A7;SQUARE M OVER S;So;0;L; 006D 2215 0073;;;;N;SQUARED M OVER S;;;; -33A8;SQUARE M OVER S SQUARED;So;0;L; 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; -33A9;SQUARE PA;So;0;L; 0050 0061;;;;N;SQUARED PA;;;; -33AA;SQUARE KPA;So;0;L; 006B 0050 0061;;;;N;SQUARED KPA;;;; -33AB;SQUARE MPA;So;0;L; 004D 0050 0061;;;;N;SQUARED MPA;;;; -33AC;SQUARE GPA;So;0;L; 0047 0050 0061;;;;N;SQUARED GPA;;;; -33AD;SQUARE RAD;So;0;L; 0072 0061 0064;;;;N;SQUARED RAD;;;; -33AE;SQUARE RAD OVER S;So;0;L; 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; -33AF;SQUARE RAD OVER S SQUARED;So;0;L; 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; -33B0;SQUARE PS;So;0;L; 0070 0073;;;;N;SQUARED PS;;;; -33B1;SQUARE NS;So;0;L; 006E 0073;;;;N;SQUARED NS;;;; -33B2;SQUARE MU S;So;0;L; 03BC 0073;;;;N;SQUARED MU S;;;; -33B3;SQUARE MS;So;0;L; 006D 0073;;;;N;SQUARED MS;;;; -33B4;SQUARE PV;So;0;L; 0070 0056;;;;N;SQUARED PV;;;; -33B5;SQUARE NV;So;0;L; 006E 0056;;;;N;SQUARED NV;;;; -33B6;SQUARE MU V;So;0;L; 03BC 0056;;;;N;SQUARED MU V;;;; -33B7;SQUARE MV;So;0;L; 006D 0056;;;;N;SQUARED MV;;;; -33B8;SQUARE KV;So;0;L; 006B 0056;;;;N;SQUARED KV;;;; -33B9;SQUARE MV MEGA;So;0;L; 004D 0056;;;;N;SQUARED MV MEGA;;;; -33BA;SQUARE PW;So;0;L; 0070 0057;;;;N;SQUARED PW;;;; -33BB;SQUARE NW;So;0;L; 006E 0057;;;;N;SQUARED NW;;;; -33BC;SQUARE MU W;So;0;L; 03BC 0057;;;;N;SQUARED MU W;;;; -33BD;SQUARE MW;So;0;L; 006D 0057;;;;N;SQUARED MW;;;; -33BE;SQUARE KW;So;0;L; 006B 0057;;;;N;SQUARED KW;;;; -33BF;SQUARE MW MEGA;So;0;L; 004D 0057;;;;N;SQUARED MW MEGA;;;; -33C0;SQUARE K OHM;So;0;L; 006B 03A9;;;;N;SQUARED K OHM;;;; -33C1;SQUARE M OHM;So;0;L; 004D 03A9;;;;N;SQUARED M OHM;;;; -33C2;SQUARE AM;So;0;L; 0061 002E 006D 002E;;;;N;SQUARED AM;;;; -33C3;SQUARE BQ;So;0;L; 0042 0071;;;;N;SQUARED BQ;;;; -33C4;SQUARE CC;So;0;L; 0063 0063;;;;N;SQUARED CC;;;; -33C5;SQUARE CD;So;0;L; 0063 0064;;;;N;SQUARED CD;;;; -33C6;SQUARE C OVER KG;So;0;L; 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; -33C7;SQUARE CO;So;0;L; 0043 006F 002E;;;;N;SQUARED CO;;;; -33C8;SQUARE DB;So;0;L; 0064 0042;;;;N;SQUARED DB;;;; -33C9;SQUARE GY;So;0;L; 0047 0079;;;;N;SQUARED GY;;;; -33CA;SQUARE HA;So;0;L; 0068 0061;;;;N;SQUARED HA;;;; -33CB;SQUARE HP;So;0;L; 0048 0050;;;;N;SQUARED HP;;;; -33CC;SQUARE IN;So;0;L; 0069 006E;;;;N;SQUARED IN;;;; -33CD;SQUARE KK;So;0;L; 004B 004B;;;;N;SQUARED KK;;;; -33CE;SQUARE KM CAPITAL;So;0;L; 004B 004D;;;;N;SQUARED KM CAPITAL;;;; -33CF;SQUARE KT;So;0;L; 006B 0074;;;;N;SQUARED KT;;;; -33D0;SQUARE LM;So;0;L; 006C 006D;;;;N;SQUARED LM;;;; -33D1;SQUARE LN;So;0;L; 006C 006E;;;;N;SQUARED LN;;;; -33D2;SQUARE LOG;So;0;L; 006C 006F 0067;;;;N;SQUARED LOG;;;; -33D3;SQUARE LX;So;0;L; 006C 0078;;;;N;SQUARED LX;;;; -33D4;SQUARE MB SMALL;So;0;L; 006D 0062;;;;N;SQUARED MB SMALL;;;; -33D5;SQUARE MIL;So;0;L; 006D 0069 006C;;;;N;SQUARED MIL;;;; -33D6;SQUARE MOL;So;0;L; 006D 006F 006C;;;;N;SQUARED MOL;;;; -33D7;SQUARE PH;So;0;L; 0050 0048;;;;N;SQUARED PH;;;; -33D8;SQUARE PM;So;0;L; 0070 002E 006D 002E;;;;N;SQUARED PM;;;; -33D9;SQUARE PPM;So;0;L; 0050 0050 004D;;;;N;SQUARED PPM;;;; -33DA;SQUARE PR;So;0;L; 0050 0052;;;;N;SQUARED PR;;;; -33DB;SQUARE SR;So;0;L; 0073 0072;;;;N;SQUARED SR;;;; -33DC;SQUARE SV;So;0;L; 0053 0076;;;;N;SQUARED SV;;;; -33DD;SQUARE WB;So;0;L; 0057 0062;;;;N;SQUARED WB;;;; -33DE;SQUARE V OVER M;So;0;ON; 0056 2215 006D;;;;N;;;;; -33DF;SQUARE A OVER M;So;0;ON; 0041 2215 006D;;;;N;;;;; -33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L; 0031 65E5;;;;N;;;;; -33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L; 0032 65E5;;;;N;;;;; -33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L; 0033 65E5;;;;N;;;;; -33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L; 0034 65E5;;;;N;;;;; -33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L; 0035 65E5;;;;N;;;;; -33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L; 0036 65E5;;;;N;;;;; -33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L; 0037 65E5;;;;N;;;;; -33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L; 0038 65E5;;;;N;;;;; -33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L; 0039 65E5;;;;N;;;;; -33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L; 0031 0030 65E5;;;;N;;;;; -33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L; 0031 0031 65E5;;;;N;;;;; -33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L; 0031 0032 65E5;;;;N;;;;; -33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L; 0031 0033 65E5;;;;N;;;;; -33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L; 0031 0034 65E5;;;;N;;;;; -33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L; 0031 0035 65E5;;;;N;;;;; -33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L; 0031 0036 65E5;;;;N;;;;; -33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L; 0031 0037 65E5;;;;N;;;;; -33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L; 0031 0038 65E5;;;;N;;;;; -33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L; 0031 0039 65E5;;;;N;;;;; -33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L; 0032 0030 65E5;;;;N;;;;; -33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L; 0032 0031 65E5;;;;N;;;;; -33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L; 0032 0032 65E5;;;;N;;;;; -33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L; 0032 0033 65E5;;;;N;;;;; -33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L; 0032 0034 65E5;;;;N;;;;; -33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L; 0032 0035 65E5;;;;N;;;;; -33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L; 0032 0036 65E5;;;;N;;;;; -33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L; 0032 0037 65E5;;;;N;;;;; -33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L; 0032 0038 65E5;;;;N;;;;; -33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L; 0032 0039 65E5;;;;N;;;;; -33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L; 0033 0030 65E5;;;;N;;;;; -33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L; 0033 0031 65E5;;;;N;;;;; -33FF;SQUARE GAL;So;0;ON; 0067 0061 006C;;;;N;;;;; -3400;;Lo;0;L;;;;;N;;;;; -4DB5;;Lo;0;L;;;;;N;;;;; -4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; -4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; -4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; -4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; -4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; -4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; -4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; -4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; -4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; -4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; -4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; -4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; -4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; -4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; -4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; -4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; -4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; -4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; -4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; -4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; -4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; -4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; -4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; -4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; -4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; -4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; -4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; -4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; -4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; -4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; -4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; -4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; -4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; -4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; -4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; -4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; -4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; -4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; -4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; -4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; -4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; -4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; -4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; -4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; -4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; -4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; -4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; -4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; -4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; -4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; -4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; -4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; -4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; -4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; -4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; -4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; -4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; -4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; -4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; -4E00;;Lo;0;L;;;;;N;;;;; -9FCB;;Lo;0;L;;;;;N;;;;; -A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; -A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; -A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; -A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; -A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; -A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; -A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; -A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; -A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; -A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; -A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; -A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; -A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; -A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; -A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; -A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; -A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; -A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; -A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; -A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; -A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; -A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; -A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; -A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; -A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; -A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; -A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; -A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; -A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; -A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; -A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; -A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; -A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; -A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; -A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; -A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; -A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; -A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; -A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; -A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; -A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; -A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; -A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; -A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; -A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; -A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; -A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; -A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; -A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; -A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; -A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; -A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; -A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; -A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; -A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; -A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; -A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; -A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; -A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; -A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; -A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; -A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; -A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; -A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; -A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; -A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; -A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; -A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; -A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; -A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; -A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; -A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; -A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; -A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; -A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; -A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; -A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; -A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; -A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; -A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; -A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; -A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; -A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; -A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; -A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; -A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; -A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; -A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; -A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; -A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; -A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; -A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; -A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; -A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; -A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; -A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; -A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; -A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; -A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; -A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; -A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; -A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; -A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; -A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; -A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; -A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; -A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; -A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; -A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; -A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; -A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; -A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; -A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; -A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; -A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; -A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; -A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; -A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; -A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; -A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; -A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; -A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; -A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; -A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; -A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; -A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; -A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; -A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; -A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; -A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; -A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; -A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; -A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; -A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; -A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; -A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; -A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; -A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; -A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; -A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; -A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; -A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; -A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; -A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; -A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; -A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; -A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; -A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; -A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; -A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; -A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; -A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; -A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; -A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; -A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; -A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; -A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; -A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; -A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; -A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; -A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; -A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; -A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; -A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; -A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; -A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; -A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; -A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; -A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; -A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; -A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; -A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; -A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; -A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; -A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; -A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; -A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; -A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; -A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; -A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; -A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; -A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; -A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; -A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; -A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; -A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; -A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; -A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; -A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; -A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; -A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; -A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; -A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; -A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; -A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; -A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; -A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; -A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; -A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; -A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; -A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; -A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; -A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; -A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; -A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; -A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; -A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; -A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; -A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; -A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; -A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; -A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; -A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; -A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; -A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; -A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; -A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; -A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; -A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; -A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; -A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; -A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; -A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; -A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; -A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; -A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; -A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; -A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; -A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; -A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; -A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; -A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; -A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; -A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; -A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; -A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; -A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; -A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; -A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; -A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; -A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; -A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; -A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; -A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; -A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; -A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; -A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; -A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; -A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; -A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; -A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; -A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; -A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; -A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; -A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; -A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; -A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; -A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; -A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; -A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; -A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; -A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; -A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; -A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; -A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; -A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; -A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; -A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; -A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; -A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; -A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; -A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; -A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; -A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; -A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; -A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; -A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; -A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; -A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; -A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; -A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; -A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; -A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; -A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; -A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; -A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; -A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; -A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; -A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; -A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; -A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; -A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; -A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; -A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; -A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; -A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; -A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; -A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; -A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; -A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; -A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; -A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; -A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; -A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; -A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; -A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; -A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; -A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; -A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; -A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; -A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; -A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; -A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; -A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; -A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; -A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; -A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; -A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; -A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; -A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; -A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; -A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; -A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; -A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; -A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; -A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; -A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; -A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; -A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; -A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; -A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; -A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; -A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; -A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; -A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; -A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; -A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; -A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; -A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; -A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; -A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; -A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; -A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; -A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; -A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; -A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; -A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; -A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; -A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; -A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; -A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; -A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; -A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; -A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; -A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; -A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; -A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; -A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; -A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; -A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; -A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; -A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; -A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; -A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; -A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; -A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; -A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; -A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; -A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; -A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; -A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; -A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; -A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; -A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; -A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; -A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; -A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; -A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; -A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; -A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; -A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; -A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; -A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; -A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; -A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; -A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; -A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; -A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; -A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; -A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; -A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; -A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; -A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; -A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; -A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; -A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; -A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; -A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; -A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; -A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; -A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; -A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; -A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; -A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; -A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; -A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; -A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; -A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; -A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; -A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; -A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; -A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; -A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; -A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; -A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; -A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; -A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; -A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; -A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; -A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; -A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; -A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; -A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; -A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; -A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; -A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; -A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; -A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; -A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; -A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; -A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; -A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; -A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; -A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; -A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; -A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; -A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; -A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; -A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; -A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; -A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; -A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; -A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; -A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; -A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; -A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; -A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; -A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; -A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; -A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; -A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; -A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; -A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; -A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; -A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; -A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; -A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; -A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; -A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; -A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; -A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; -A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; -A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; -A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; -A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; -A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; -A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; -A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; -A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; -A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; -A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; -A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; -A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; -A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; -A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; -A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; -A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; -A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; -A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; -A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; -A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; -A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; -A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; -A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; -A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; -A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; -A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; -A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; -A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; -A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; -A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; -A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; -A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; -A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; -A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; -A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; -A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; -A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; -A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; -A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; -A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; -A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; -A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; -A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; -A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; -A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; -A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; -A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; -A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; -A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; -A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; -A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; -A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; -A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; -A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; -A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; -A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; -A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; -A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; -A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; -A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; -A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; -A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; -A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; -A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; -A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; -A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; -A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; -A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; -A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; -A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; -A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; -A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; -A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; -A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; -A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; -A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; -A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; -A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; -A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; -A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; -A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; -A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; -A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; -A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; -A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; -A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; -A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; -A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; -A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; -A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; -A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; -A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; -A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; -A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; -A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; -A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; -A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; -A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; -A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; -A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; -A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; -A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; -A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; -A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; -A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; -A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; -A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; -A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; -A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; -A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; -A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; -A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; -A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; -A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; -A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; -A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; -A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; -A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; -A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; -A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; -A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; -A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; -A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; -A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; -A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; -A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; -A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; -A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; -A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; -A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; -A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; -A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; -A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; -A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; -A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; -A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; -A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; -A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; -A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; -A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; -A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; -A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; -A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; -A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; -A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; -A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; -A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; -A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; -A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; -A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; -A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; -A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; -A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; -A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; -A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; -A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; -A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; -A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; -A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; -A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; -A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; -A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; -A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; -A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; -A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; -A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; -A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; -A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; -A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; -A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; -A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; -A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; -A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; -A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; -A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; -A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; -A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; -A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; -A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; -A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; -A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; -A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; -A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; -A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; -A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; -A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; -A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; -A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; -A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; -A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; -A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; -A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; -A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; -A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; -A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; -A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; -A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; -A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; -A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; -A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; -A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; -A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; -A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; -A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; -A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; -A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; -A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; -A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; -A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; -A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; -A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; -A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; -A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; -A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; -A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; -A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; -A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; -A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; -A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; -A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; -A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; -A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; -A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; -A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; -A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; -A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; -A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; -A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; -A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; -A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; -A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; -A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; -A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; -A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; -A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; -A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; -A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; -A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; -A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; -A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; -A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; -A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; -A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; -A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; -A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; -A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; -A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; -A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; -A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; -A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; -A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; -A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; -A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; -A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; -A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; -A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; -A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; -A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; -A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; -A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; -A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; -A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; -A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; -A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; -A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; -A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; -A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; -A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; -A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; -A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; -A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; -A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; -A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; -A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; -A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; -A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; -A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; -A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; -A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; -A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; -A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; -A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; -A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; -A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; -A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; -A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; -A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; -A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; -A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; -A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; -A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; -A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; -A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; -A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; -A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; -A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; -A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; -A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; -A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; -A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; -A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; -A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; -A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; -A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; -A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; -A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; -A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; -A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; -A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; -A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; -A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; -A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; -A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; -A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; -A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; -A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; -A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; -A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; -A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; -A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; -A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; -A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; -A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; -A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; -A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; -A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; -A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; -A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; -A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; -A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; -A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; -A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; -A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; -A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; -A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; -A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; -A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; -A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; -A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; -A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; -A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; -A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; -A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; -A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; -A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; -A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; -A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; -A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; -A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; -A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; -A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; -A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; -A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; -A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; -A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; -A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; -A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; -A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; -A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; -A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; -A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; -A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; -A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; -A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; -A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; -A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; -A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; -A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; -A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; -A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; -A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; -A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; -A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; -A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; -A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; -A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; -A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; -A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; -A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; -A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; -A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; -A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; -A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; -A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; -A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; -A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; -A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; -A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; -A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; -A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; -A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; -A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; -A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; -A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; -A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; -A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; -A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; -A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; -A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; -A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; -A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; -A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; -A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; -A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; -A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; -A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; -A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; -A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; -A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; -A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; -A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; -A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; -A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; -A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; -A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; -A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; -A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; -A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; -A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; -A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; -A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; -A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; -A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; -A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; -A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; -A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; -A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; -A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; -A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; -A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; -A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; -A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; -A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; -A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; -A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; -A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; -A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; -A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; -A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; -A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; -A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; -A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; -A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; -A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; -A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; -A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; -A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; -A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; -A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; -A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; -A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; -A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; -A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; -A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; -A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; -A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; -A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; -A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; -A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; -A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; -A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; -A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; -A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; -A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; -A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; -A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; -A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; -A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; -A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; -A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; -A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; -A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; -A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; -A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; -A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; -A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; -A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; -A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; -A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; -A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; -A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; -A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; -A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; -A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; -A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; -A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; -A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; -A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; -A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; -A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; -A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; -A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; -A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; -A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; -A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; -A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; -A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; -A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; -A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; -A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; -A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; -A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; -A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; -A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; -A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; -A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; -A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; -A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; -A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; -A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; -A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; -A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; -A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; -A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; -A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; -A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; -A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; -A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; -A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; -A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; -A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; -A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; -A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; -A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; -A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; -A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; -A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; -A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; -A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; -A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; -A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; -A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; -A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; -A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; -A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; -A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; -A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; -A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; -A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; -A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; -A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; -A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; -A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; -A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; -A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; -A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; -A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; -A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; -A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; -A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; -A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; -A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; -A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; -A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; -A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; -A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; -A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; -A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; -A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; -A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; -A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; -A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; -A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; -A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; -A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; -A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; -A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; -A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; -A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; -A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; -A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; -A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; -A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; -A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; -A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; -A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; -A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; -A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; -A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; -A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; -A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; -A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; -A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; -A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; -A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; -A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; -A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; -A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; -A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; -A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; -A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; -A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; -A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; -A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; -A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; -A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; -A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; -A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; -A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; -A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; -A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; -A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; -A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; -A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; -A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; -A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; -A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; -A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; -A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; -A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; -A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; -A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; -A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; -A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; -A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; -A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; -A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; -A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; -A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; -A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; -A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; -A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; -A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; -A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; -A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; -A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; -A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; -A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; -A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; -A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; -A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; -A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; -A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; -A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; -A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; -A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; -A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; -A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; -A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; -A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; -A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; -A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; -A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; -A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; -A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; -A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; -A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; -A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; -A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; -A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; -A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; -A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; -A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; -A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; -A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; -A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; -A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; -A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; -A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; -A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; -A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; -A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; -A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; -A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; -A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; -A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; -A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; -A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; -A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; -A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; -A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; -A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; -A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; -A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; -A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; -A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; -A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; -A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; -A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; -A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; -A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; -A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; -A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; -A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; -A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; -A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; -A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; -A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; -A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; -A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; -A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; -A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; -A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; -A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; -A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; -A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; -A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; -A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; -A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; -A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; -A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; -A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; -A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; -A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; -A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; -A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; -A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; -A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; -A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; -A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; -A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; -A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; -A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; -A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; -A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; -A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; -A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; -A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; -A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; -A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; -A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; -A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; -A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; -A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; -A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; -A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; -A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; -A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; -A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; -A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; -A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; -A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; -A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; -A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; -A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; -A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; -A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; -A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; -A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; -A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; -A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; -A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; -A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; -A4D0;LISU LETTER BA;Lo;0;L;;;;;N;;;;; -A4D1;LISU LETTER PA;Lo;0;L;;;;;N;;;;; -A4D2;LISU LETTER PHA;Lo;0;L;;;;;N;;;;; -A4D3;LISU LETTER DA;Lo;0;L;;;;;N;;;;; -A4D4;LISU LETTER TA;Lo;0;L;;;;;N;;;;; -A4D5;LISU LETTER THA;Lo;0;L;;;;;N;;;;; -A4D6;LISU LETTER GA;Lo;0;L;;;;;N;;;;; -A4D7;LISU LETTER KA;Lo;0;L;;;;;N;;;;; -A4D8;LISU LETTER KHA;Lo;0;L;;;;;N;;;;; -A4D9;LISU LETTER JA;Lo;0;L;;;;;N;;;;; -A4DA;LISU LETTER CA;Lo;0;L;;;;;N;;;;; -A4DB;LISU LETTER CHA;Lo;0;L;;;;;N;;;;; -A4DC;LISU LETTER DZA;Lo;0;L;;;;;N;;;;; -A4DD;LISU LETTER TSA;Lo;0;L;;;;;N;;;;; -A4DE;LISU LETTER TSHA;Lo;0;L;;;;;N;;;;; -A4DF;LISU LETTER MA;Lo;0;L;;;;;N;;;;; -A4E0;LISU LETTER NA;Lo;0;L;;;;;N;;;;; -A4E1;LISU LETTER LA;Lo;0;L;;;;;N;;;;; -A4E2;LISU LETTER SA;Lo;0;L;;;;;N;;;;; -A4E3;LISU LETTER ZHA;Lo;0;L;;;;;N;;;;; -A4E4;LISU LETTER ZA;Lo;0;L;;;;;N;;;;; -A4E5;LISU LETTER NGA;Lo;0;L;;;;;N;;;;; -A4E6;LISU LETTER HA;Lo;0;L;;;;;N;;;;; -A4E7;LISU LETTER XA;Lo;0;L;;;;;N;;;;; -A4E8;LISU LETTER HHA;Lo;0;L;;;;;N;;;;; -A4E9;LISU LETTER FA;Lo;0;L;;;;;N;;;;; -A4EA;LISU LETTER WA;Lo;0;L;;;;;N;;;;; -A4EB;LISU LETTER SHA;Lo;0;L;;;;;N;;;;; -A4EC;LISU LETTER YA;Lo;0;L;;;;;N;;;;; -A4ED;LISU LETTER GHA;Lo;0;L;;;;;N;;;;; -A4EE;LISU LETTER A;Lo;0;L;;;;;N;;;;; -A4EF;LISU LETTER AE;Lo;0;L;;;;;N;;;;; -A4F0;LISU LETTER E;Lo;0;L;;;;;N;;;;; -A4F1;LISU LETTER EU;Lo;0;L;;;;;N;;;;; -A4F2;LISU LETTER I;Lo;0;L;;;;;N;;;;; -A4F3;LISU LETTER O;Lo;0;L;;;;;N;;;;; -A4F4;LISU LETTER U;Lo;0;L;;;;;N;;;;; -A4F5;LISU LETTER UE;Lo;0;L;;;;;N;;;;; -A4F6;LISU LETTER UH;Lo;0;L;;;;;N;;;;; -A4F7;LISU LETTER OE;Lo;0;L;;;;;N;;;;; -A4F8;LISU LETTER TONE MYA TI;Lm;0;L;;;;;N;;;;; -A4F9;LISU LETTER TONE NA PO;Lm;0;L;;;;;N;;;;; -A4FA;LISU LETTER TONE MYA CYA;Lm;0;L;;;;;N;;;;; -A4FB;LISU LETTER TONE MYA BO;Lm;0;L;;;;;N;;;;; -A4FC;LISU LETTER TONE MYA NA;Lm;0;L;;;;;N;;;;; -A4FD;LISU LETTER TONE MYA JEU;Lm;0;L;;;;;N;;;;; -A4FE;LISU PUNCTUATION COMMA;Po;0;L;;;;;N;;;;; -A4FF;LISU PUNCTUATION FULL STOP;Po;0;L;;;;;N;;;;; -A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;; -A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;; -A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;; -A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;; -A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;; -A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;; -A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;; -A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;; -A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;; -A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;; -A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;; -A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;; -A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;; -A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;; -A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;; -A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;; -A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;; -A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;; -A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;; -A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;; -A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;; -A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;; -A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;; -A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; -A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; -A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; -A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;; -A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;; -A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;; -A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;; -A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;; -A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;; -A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;; -A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;; -A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;; -A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; -A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;; -A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;; -A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;; -A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;; -A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;; -A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;; -A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;; -A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;; -A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;; -A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;; -A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;; -A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;; -A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;; -A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;; -A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;; -A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;; -A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;; -A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;; -A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;; -A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;; -A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;; -A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;; -A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; -A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;; -A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;; -A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; -A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; -A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;; -A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;; -A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; -A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;; -A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;; -A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;; -A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;; -A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;; -A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;; -A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; -A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;; -A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;; -A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;; -A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;; -A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;; -A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;; -A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;; -A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;; -A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;; -A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;; -A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;; -A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;; -A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;; -A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;; -A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;; -A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;; -A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;; -A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;; -A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;; -A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;; -A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;; -A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;; -A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;; -A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;; -A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; -A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;; -A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; -A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; -A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; -A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;; -A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;; -A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;; -A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;; -A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;; -A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;; -A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;; -A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;; -A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;; -A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;; -A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;; -A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;; -A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;; -A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;; -A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;; -A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;; -A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;; -A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;; -A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;; -A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;; -A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;; -A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;; -A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;; -A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;; -A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;; -A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;; -A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;; -A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;; -A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;; -A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;; -A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;; -A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;; -A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;; -A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;; -A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;; -A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;; -A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;; -A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;; -A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;; -A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;; -A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;; -A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;; -A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;; -A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;; -A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;; -A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;; -A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;; -A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;; -A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;; -A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;; -A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;; -A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;; -A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;; -A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;; -A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;; -A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;; -A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;; -A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;; -A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;; -A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;; -A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;; -A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;; -A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;; -A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;; -A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;; -A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;; -A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;; -A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;; -A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;; -A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; -A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;; -A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; -A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; -A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; -A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;; -A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;; -A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; -A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;; -A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;; -A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;; -A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;; -A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;; -A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;; -A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; -A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;; -A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;; -A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;; -A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;; -A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;; -A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;; -A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;; -A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;; -A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;; -A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;; -A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;; -A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;; -A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;; -A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;; -A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;; -A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;; -A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;; -A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;; -A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;; -A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;; -A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;; -A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;; -A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;; -A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;; -A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; -A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;; -A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; -A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; -A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; -A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;; -A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;; -A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; -A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;; -A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;; -A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;; -A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;; -A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;; -A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;; -A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; -A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;; -A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;; -A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;; -A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;; -A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;; -A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;; -A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;; -A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;; -A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;; -A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;; -A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;; -A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;; -A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;; -A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;; -A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;; -A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;; -A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;; -A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;; -A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;; -A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;; -A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;; -A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;; -A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;; -A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;; -A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;; -A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; -A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;; -A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; -A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; -A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; -A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;; -A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;; -A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;; -A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;; -A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;; -A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;; -A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;; -A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;; -A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;; -A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;; -A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;; -A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;; -A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;; -A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;; -A60D;VAI COMMA;Po;0;ON;;;;;N;;;;; -A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;; -A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;; -A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;; -A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;; -A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;; -A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;; -A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;; -A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;; -A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;; -A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;; -A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;; -A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;; -A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;; -A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;; -A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;; -A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;; -A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;; -A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;; -A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;; -A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;; -A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641; -A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640 -A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643; -A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642 -A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645; -A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644 -A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647; -A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646 -A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649; -A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648 -A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B; -A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A -A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D; -A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C -A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F; -A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E -A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651; -A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650 -A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653; -A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652 -A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655; -A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654 -A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657; -A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656 -A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659; -A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658 -A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B; -A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A -A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D; -A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C -A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F; -A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E -A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663; -A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662 -A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665; -A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664 -A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667; -A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666 -A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669; -A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668 -A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B; -A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A -A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D; -A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C -A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;; -A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;; -A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; -A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;; -A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;; -A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;; -A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;; -A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;; -A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681; -A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680 -A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683; -A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682 -A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685; -A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684 -A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687; -A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686 -A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689; -A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688 -A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B; -A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A -A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D; -A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C -A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F; -A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E -A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691; -A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690 -A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693; -A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692 -A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695; -A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694 -A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697; -A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696 -A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;; -A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;; -A6A2;BAMUM LETTER U;Lo;0;L;;;;;N;;;;; -A6A3;BAMUM LETTER KU;Lo;0;L;;;;;N;;;;; -A6A4;BAMUM LETTER EE;Lo;0;L;;;;;N;;;;; -A6A5;BAMUM LETTER REE;Lo;0;L;;;;;N;;;;; -A6A6;BAMUM LETTER TAE;Lo;0;L;;;;;N;;;;; -A6A7;BAMUM LETTER O;Lo;0;L;;;;;N;;;;; -A6A8;BAMUM LETTER NYI;Lo;0;L;;;;;N;;;;; -A6A9;BAMUM LETTER I;Lo;0;L;;;;;N;;;;; -A6AA;BAMUM LETTER LA;Lo;0;L;;;;;N;;;;; -A6AB;BAMUM LETTER PA;Lo;0;L;;;;;N;;;;; -A6AC;BAMUM LETTER RII;Lo;0;L;;;;;N;;;;; -A6AD;BAMUM LETTER RIEE;Lo;0;L;;;;;N;;;;; -A6AE;BAMUM LETTER LEEEE;Lo;0;L;;;;;N;;;;; -A6AF;BAMUM LETTER MEEEE;Lo;0;L;;;;;N;;;;; -A6B0;BAMUM LETTER TAA;Lo;0;L;;;;;N;;;;; -A6B1;BAMUM LETTER NDAA;Lo;0;L;;;;;N;;;;; -A6B2;BAMUM LETTER NJAEM;Lo;0;L;;;;;N;;;;; -A6B3;BAMUM LETTER M;Lo;0;L;;;;;N;;;;; -A6B4;BAMUM LETTER SUU;Lo;0;L;;;;;N;;;;; -A6B5;BAMUM LETTER MU;Lo;0;L;;;;;N;;;;; -A6B6;BAMUM LETTER SHII;Lo;0;L;;;;;N;;;;; -A6B7;BAMUM LETTER SI;Lo;0;L;;;;;N;;;;; -A6B8;BAMUM LETTER SHEUX;Lo;0;L;;;;;N;;;;; -A6B9;BAMUM LETTER SEUX;Lo;0;L;;;;;N;;;;; -A6BA;BAMUM LETTER KYEE;Lo;0;L;;;;;N;;;;; -A6BB;BAMUM LETTER KET;Lo;0;L;;;;;N;;;;; -A6BC;BAMUM LETTER NUAE;Lo;0;L;;;;;N;;;;; -A6BD;BAMUM LETTER NU;Lo;0;L;;;;;N;;;;; -A6BE;BAMUM LETTER NJUAE;Lo;0;L;;;;;N;;;;; -A6BF;BAMUM LETTER YOQ;Lo;0;L;;;;;N;;;;; -A6C0;BAMUM LETTER SHU;Lo;0;L;;;;;N;;;;; -A6C1;BAMUM LETTER YUQ;Lo;0;L;;;;;N;;;;; -A6C2;BAMUM LETTER YA;Lo;0;L;;;;;N;;;;; -A6C3;BAMUM LETTER NSHA;Lo;0;L;;;;;N;;;;; -A6C4;BAMUM LETTER KEUX;Lo;0;L;;;;;N;;;;; -A6C5;BAMUM LETTER PEUX;Lo;0;L;;;;;N;;;;; -A6C6;BAMUM LETTER NJEE;Lo;0;L;;;;;N;;;;; -A6C7;BAMUM LETTER NTEE;Lo;0;L;;;;;N;;;;; -A6C8;BAMUM LETTER PUE;Lo;0;L;;;;;N;;;;; -A6C9;BAMUM LETTER WUE;Lo;0;L;;;;;N;;;;; -A6CA;BAMUM LETTER PEE;Lo;0;L;;;;;N;;;;; -A6CB;BAMUM LETTER FEE;Lo;0;L;;;;;N;;;;; -A6CC;BAMUM LETTER RU;Lo;0;L;;;;;N;;;;; -A6CD;BAMUM LETTER LU;Lo;0;L;;;;;N;;;;; -A6CE;BAMUM LETTER MI;Lo;0;L;;;;;N;;;;; -A6CF;BAMUM LETTER NI;Lo;0;L;;;;;N;;;;; -A6D0;BAMUM LETTER REUX;Lo;0;L;;;;;N;;;;; -A6D1;BAMUM LETTER RAE;Lo;0;L;;;;;N;;;;; -A6D2;BAMUM LETTER KEN;Lo;0;L;;;;;N;;;;; -A6D3;BAMUM LETTER NGKWAEN;Lo;0;L;;;;;N;;;;; -A6D4;BAMUM LETTER NGGA;Lo;0;L;;;;;N;;;;; -A6D5;BAMUM LETTER NGA;Lo;0;L;;;;;N;;;;; -A6D6;BAMUM LETTER SHO;Lo;0;L;;;;;N;;;;; -A6D7;BAMUM LETTER PUAE;Lo;0;L;;;;;N;;;;; -A6D8;BAMUM LETTER FU;Lo;0;L;;;;;N;;;;; -A6D9;BAMUM LETTER FOM;Lo;0;L;;;;;N;;;;; -A6DA;BAMUM LETTER WA;Lo;0;L;;;;;N;;;;; -A6DB;BAMUM LETTER NA;Lo;0;L;;;;;N;;;;; -A6DC;BAMUM LETTER LI;Lo;0;L;;;;;N;;;;; -A6DD;BAMUM LETTER PI;Lo;0;L;;;;;N;;;;; -A6DE;BAMUM LETTER LOQ;Lo;0;L;;;;;N;;;;; -A6DF;BAMUM LETTER KO;Lo;0;L;;;;;N;;;;; -A6E0;BAMUM LETTER MBEN;Lo;0;L;;;;;N;;;;; -A6E1;BAMUM LETTER REN;Lo;0;L;;;;;N;;;;; -A6E2;BAMUM LETTER MEN;Lo;0;L;;;;;N;;;;; -A6E3;BAMUM LETTER MA;Lo;0;L;;;;;N;;;;; -A6E4;BAMUM LETTER TI;Lo;0;L;;;;;N;;;;; -A6E5;BAMUM LETTER KI;Lo;0;L;;;;;N;;;;; -A6E6;BAMUM LETTER MO;Nl;0;L;;;;1;N;;;;; -A6E7;BAMUM LETTER MBAA;Nl;0;L;;;;2;N;;;;; -A6E8;BAMUM LETTER TET;Nl;0;L;;;;3;N;;;;; -A6E9;BAMUM LETTER KPA;Nl;0;L;;;;4;N;;;;; -A6EA;BAMUM LETTER TEN;Nl;0;L;;;;5;N;;;;; -A6EB;BAMUM LETTER NTUU;Nl;0;L;;;;6;N;;;;; -A6EC;BAMUM LETTER SAMBA;Nl;0;L;;;;7;N;;;;; -A6ED;BAMUM LETTER FAAMAE;Nl;0;L;;;;8;N;;;;; -A6EE;BAMUM LETTER KOVUU;Nl;0;L;;;;9;N;;;;; -A6EF;BAMUM LETTER KOGHOM;Nl;0;L;;;;0;N;;;;; -A6F0;BAMUM COMBINING MARK KOQNDON;Mn;230;NSM;;;;;N;;;;; -A6F1;BAMUM COMBINING MARK TUKWENTIS;Mn;230;NSM;;;;;N;;;;; -A6F2;BAMUM NJAEMLI;Po;0;L;;;;;N;;;;; -A6F3;BAMUM FULL STOP;Po;0;L;;;;;N;;;;; -A6F4;BAMUM COLON;Po;0;L;;;;;N;;;;; -A6F5;BAMUM COMMA;Po;0;L;;;;;N;;;;; -A6F6;BAMUM SEMICOLON;Po;0;L;;;;;N;;;;; -A6F7;BAMUM QUESTION MARK;Po;0;L;;;;;N;;;;; -A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; -A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; -A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; -A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; -A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; -A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; -A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; -A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; -A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; -A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; -A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;; -A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;; -A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;; -A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;; -A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;; -A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;; -A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;; -A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;; -A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;; -A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723; -A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722 -A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725; -A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724 -A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727; -A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726 -A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729; -A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728 -A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B; -A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A -A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D; -A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C -A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F; -A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E -A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;; -A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;; -A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733; -A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732 -A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735; -A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734 -A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737; -A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736 -A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739; -A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738 -A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B; -A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A -A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D; -A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C -A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F; -A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E -A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741; -A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740 -A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743; -A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742 -A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745; -A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744 -A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747; -A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746 -A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749; -A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748 -A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B; -A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A -A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D; -A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C -A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F; -A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E -A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751; -A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750 -A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753; -A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752 -A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755; -A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754 -A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757; -A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756 -A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759; -A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758 -A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B; -A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A -A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D; -A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C -A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F; -A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E -A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761; -A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760 -A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763; -A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762 -A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765; -A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764 -A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767; -A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766 -A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769; -A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768 -A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B; -A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A -A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D; -A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C -A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F; -A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E -A770;MODIFIER LETTER US;Lm;0;L; A76F;;;;N;;;;; -A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;; -A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;; -A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;; -A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;; -A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;; -A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;; -A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;; -A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;; -A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A; -A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779 -A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C; -A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B -A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79; -A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F; -A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E -A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781; -A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780 -A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783; -A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782 -A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785; -A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784 -A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787; -A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786 -A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;; -A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;; -A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;; -A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C; -A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B -A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;; -A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;; -A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;; -A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;; -A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;; -A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; -A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; -A802;SYLOTI NAGRI SIGN DVISVARA;Mn;0;NSM;;;;;N;;;;; -A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; -A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; -A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; -A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; -A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; -A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; -A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; -A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; -A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; -A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; -A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; -A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; -A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; -A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; -A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; -A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; -A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; -A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; -A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; -A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; -A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; -A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; -A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; -A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; -A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; -A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; -A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; -A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; -A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; -A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; -A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; -A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; -A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; -A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; -A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; -A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; -A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;; -A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;; -A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;; -A833;NORTH INDIC FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;; -A834;NORTH INDIC FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;; -A835;NORTH INDIC FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;; -A836;NORTH INDIC QUARTER MARK;So;0;L;;;;;N;;;;; -A837;NORTH INDIC PLACEHOLDER MARK;So;0;L;;;;;N;;;;; -A838;NORTH INDIC RUPEE MARK;Sc;0;ET;;;;;N;;;;; -A839;NORTH INDIC QUANTITY MARK;So;0;ET;;;;;N;;;;; -A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;; -A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;; -A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;; -A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;; -A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;; -A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;; -A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;; -A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;; -A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;; -A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;; -A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;; -A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;; -A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;; -A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;; -A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;; -A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;; -A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;; -A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;; -A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;; -A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;; -A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;; -A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;; -A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;; -A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;; -A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;; -A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;; -A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;; -A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;; -A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;; -A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;; -A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;; -A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;; -A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;; -A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;; -A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;; -A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;; -A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;; -A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;; -A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;; -A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;; -A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;; -A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;; -A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;; -A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;; -A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;; -A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;; -A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;; -A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;; -A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;; -A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;; -A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;; -A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;; -A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;; -A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;; -A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;; -A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;; -A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; -A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;; -A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;; -A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;; -A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;; -A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;; -A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;; -A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;; -A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; -A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; -A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; -A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; -A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;; -A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;; -A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;; -A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;; -A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;; -A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;; -A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;; -A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;; -A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;; -A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;; -A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;; -A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;; -A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;; -A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;; -A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;; -A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;; -A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;; -A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;; -A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;; -A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;; -A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;; -A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;; -A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;; -A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;; -A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;; -A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;; -A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;; -A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;; -A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;; -A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;; -A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;; -A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;; -A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;; -A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;; -A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;; -A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;; -A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;; -A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;; -A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;; -A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;; -A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;; -A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; -A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; -A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; -A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; -A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;; -A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;; -A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; -A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; -A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; -A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;; -A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;; -A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A8E0;COMBINING DEVANAGARI DIGIT ZERO;Mn;230;NSM;;;;;N;;;;; -A8E1;COMBINING DEVANAGARI DIGIT ONE;Mn;230;NSM;;;;;N;;;;; -A8E2;COMBINING DEVANAGARI DIGIT TWO;Mn;230;NSM;;;;;N;;;;; -A8E3;COMBINING DEVANAGARI DIGIT THREE;Mn;230;NSM;;;;;N;;;;; -A8E4;COMBINING DEVANAGARI DIGIT FOUR;Mn;230;NSM;;;;;N;;;;; -A8E5;COMBINING DEVANAGARI DIGIT FIVE;Mn;230;NSM;;;;;N;;;;; -A8E6;COMBINING DEVANAGARI DIGIT SIX;Mn;230;NSM;;;;;N;;;;; -A8E7;COMBINING DEVANAGARI DIGIT SEVEN;Mn;230;NSM;;;;;N;;;;; -A8E8;COMBINING DEVANAGARI DIGIT EIGHT;Mn;230;NSM;;;;;N;;;;; -A8E9;COMBINING DEVANAGARI DIGIT NINE;Mn;230;NSM;;;;;N;;;;; -A8EA;COMBINING DEVANAGARI LETTER A;Mn;230;NSM;;;;;N;;;;; -A8EB;COMBINING DEVANAGARI LETTER U;Mn;230;NSM;;;;;N;;;;; -A8EC;COMBINING DEVANAGARI LETTER KA;Mn;230;NSM;;;;;N;;;;; -A8ED;COMBINING DEVANAGARI LETTER NA;Mn;230;NSM;;;;;N;;;;; -A8EE;COMBINING DEVANAGARI LETTER PA;Mn;230;NSM;;;;;N;;;;; -A8EF;COMBINING DEVANAGARI LETTER RA;Mn;230;NSM;;;;;N;;;;; -A8F0;COMBINING DEVANAGARI LETTER VI;Mn;230;NSM;;;;;N;;;;; -A8F1;COMBINING DEVANAGARI SIGN AVAGRAHA;Mn;230;NSM;;;;;N;;;;; -A8F2;DEVANAGARI SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;; -A8F3;DEVANAGARI SIGN CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;; -A8F4;DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;; -A8F5;DEVANAGARI SIGN CANDRABINDU TWO;Lo;0;L;;;;;N;;;;; -A8F6;DEVANAGARI SIGN CANDRABINDU THREE;Lo;0;L;;;;;N;;;;; -A8F7;DEVANAGARI SIGN CANDRABINDU AVAGRAHA;Lo;0;L;;;;;N;;;;; -A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;; -A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;; -A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;; -A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;; -A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;; -A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;; -A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;; -A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;; -A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;; -A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;; -A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;; -A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;; -A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;; -A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;; -A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;; -A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;; -A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;; -A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;; -A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;; -A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;; -A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;; -A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;; -A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;; -A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;; -A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;; -A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;; -A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;; -A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;; -A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;; -A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;; -A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;; -A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;; -A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;; -A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;; -A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;; -A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;; -A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;; -A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;; -A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;; -A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;; -A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;; -A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;; -A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;; -A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;; -A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;; -A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;; -A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;; -A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;; -A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;; -A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;; -A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;; -A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;; -A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;; -A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;; -A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;; -A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;; -A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;; -A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;; -A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;; -A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;; -A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;; -A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;; -A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;; -A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;; -A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;; -A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;; -A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;; -A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;; -A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;; -A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;; -A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;; -A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;; -A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;; -A960;HANGUL CHOSEONG TIKEUT-MIEUM;Lo;0;L;;;;;N;;;;; -A961;HANGUL CHOSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; -A962;HANGUL CHOSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;; -A963;HANGUL CHOSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;; -A964;HANGUL CHOSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;; -A965;HANGUL CHOSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -A966;HANGUL CHOSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; -A967;HANGUL CHOSEONG RIEUL-SSANGTIKEUT;Lo;0;L;;;;;N;;;;; -A968;HANGUL CHOSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;; -A969;HANGUL CHOSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;; -A96A;HANGUL CHOSEONG RIEUL-SSANGPIEUP;Lo;0;L;;;;;N;;;;; -A96B;HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -A96C;HANGUL CHOSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;; -A96D;HANGUL CHOSEONG RIEUL-CIEUC;Lo;0;L;;;;;N;;;;; -A96E;HANGUL CHOSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -A96F;HANGUL CHOSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; -A970;HANGUL CHOSEONG MIEUM-TIKEUT;Lo;0;L;;;;;N;;;;; -A971;HANGUL CHOSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; -A972;HANGUL CHOSEONG PIEUP-SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -A973;HANGUL CHOSEONG PIEUP-KHIEUKH;Lo;0;L;;;;;N;;;;; -A974;HANGUL CHOSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; -A975;HANGUL CHOSEONG SSANGSIOS-PIEUP;Lo;0;L;;;;;N;;;;; -A976;HANGUL CHOSEONG IEUNG-RIEUL;Lo;0;L;;;;;N;;;;; -A977;HANGUL CHOSEONG IEUNG-HIEUH;Lo;0;L;;;;;N;;;;; -A978;HANGUL CHOSEONG SSANGCIEUC-HIEUH;Lo;0;L;;;;;N;;;;; -A979;HANGUL CHOSEONG SSANGTHIEUTH;Lo;0;L;;;;;N;;;;; -A97A;HANGUL CHOSEONG PHIEUPH-HIEUH;Lo;0;L;;;;;N;;;;; -A97B;HANGUL CHOSEONG HIEUH-SIOS;Lo;0;L;;;;;N;;;;; -A97C;HANGUL CHOSEONG SSANGYEORINHIEUH;Lo;0;L;;;;;N;;;;; -A980;JAVANESE SIGN PANYANGGA;Mn;0;NSM;;;;;N;;;;; -A981;JAVANESE SIGN CECAK;Mn;0;NSM;;;;;N;;;;; -A982;JAVANESE SIGN LAYAR;Mn;0;NSM;;;;;N;;;;; -A983;JAVANESE SIGN WIGNYAN;Mc;0;L;;;;;N;;;;; -A984;JAVANESE LETTER A;Lo;0;L;;;;;N;;;;; -A985;JAVANESE LETTER I KAWI;Lo;0;L;;;;;N;;;;; -A986;JAVANESE LETTER I;Lo;0;L;;;;;N;;;;; -A987;JAVANESE LETTER II;Lo;0;L;;;;;N;;;;; -A988;JAVANESE LETTER U;Lo;0;L;;;;;N;;;;; -A989;JAVANESE LETTER PA CEREK;Lo;0;L;;;;;N;;;;; -A98A;JAVANESE LETTER NGA LELET;Lo;0;L;;;;;N;;;;; -A98B;JAVANESE LETTER NGA LELET RASWADI;Lo;0;L;;;;;N;;;;; -A98C;JAVANESE LETTER E;Lo;0;L;;;;;N;;;;; -A98D;JAVANESE LETTER AI;Lo;0;L;;;;;N;;;;; -A98E;JAVANESE LETTER O;Lo;0;L;;;;;N;;;;; -A98F;JAVANESE LETTER KA;Lo;0;L;;;;;N;;;;; -A990;JAVANESE LETTER KA SASAK;Lo;0;L;;;;;N;;;;; -A991;JAVANESE LETTER KA MURDA;Lo;0;L;;;;;N;;;;; -A992;JAVANESE LETTER GA;Lo;0;L;;;;;N;;;;; -A993;JAVANESE LETTER GA MURDA;Lo;0;L;;;;;N;;;;; -A994;JAVANESE LETTER NGA;Lo;0;L;;;;;N;;;;; -A995;JAVANESE LETTER CA;Lo;0;L;;;;;N;;;;; -A996;JAVANESE LETTER CA MURDA;Lo;0;L;;;;;N;;;;; -A997;JAVANESE LETTER JA;Lo;0;L;;;;;N;;;;; -A998;JAVANESE LETTER NYA MURDA;Lo;0;L;;;;;N;;;;; -A999;JAVANESE LETTER JA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A99A;JAVANESE LETTER NYA;Lo;0;L;;;;;N;;;;; -A99B;JAVANESE LETTER TTA;Lo;0;L;;;;;N;;;;; -A99C;JAVANESE LETTER TTA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A99D;JAVANESE LETTER DDA;Lo;0;L;;;;;N;;;;; -A99E;JAVANESE LETTER DDA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A99F;JAVANESE LETTER NA MURDA;Lo;0;L;;;;;N;;;;; -A9A0;JAVANESE LETTER TA;Lo;0;L;;;;;N;;;;; -A9A1;JAVANESE LETTER TA MURDA;Lo;0;L;;;;;N;;;;; -A9A2;JAVANESE LETTER DA;Lo;0;L;;;;;N;;;;; -A9A3;JAVANESE LETTER DA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A9A4;JAVANESE LETTER NA;Lo;0;L;;;;;N;;;;; -A9A5;JAVANESE LETTER PA;Lo;0;L;;;;;N;;;;; -A9A6;JAVANESE LETTER PA MURDA;Lo;0;L;;;;;N;;;;; -A9A7;JAVANESE LETTER BA;Lo;0;L;;;;;N;;;;; -A9A8;JAVANESE LETTER BA MURDA;Lo;0;L;;;;;N;;;;; -A9A9;JAVANESE LETTER MA;Lo;0;L;;;;;N;;;;; -A9AA;JAVANESE LETTER YA;Lo;0;L;;;;;N;;;;; -A9AB;JAVANESE LETTER RA;Lo;0;L;;;;;N;;;;; -A9AC;JAVANESE LETTER RA AGUNG;Lo;0;L;;;;;N;;;;; -A9AD;JAVANESE LETTER LA;Lo;0;L;;;;;N;;;;; -A9AE;JAVANESE LETTER WA;Lo;0;L;;;;;N;;;;; -A9AF;JAVANESE LETTER SA MURDA;Lo;0;L;;;;;N;;;;; -A9B0;JAVANESE LETTER SA MAHAPRANA;Lo;0;L;;;;;N;;;;; -A9B1;JAVANESE LETTER SA;Lo;0;L;;;;;N;;;;; -A9B2;JAVANESE LETTER HA;Lo;0;L;;;;;N;;;;; -A9B3;JAVANESE SIGN CECAK TELU;Mn;7;NSM;;;;;N;;;;; -A9B4;JAVANESE VOWEL SIGN TARUNG;Mc;0;L;;;;;N;;;;; -A9B5;JAVANESE VOWEL SIGN TOLONG;Mc;0;L;;;;;N;;;;; -A9B6;JAVANESE VOWEL SIGN WULU;Mn;0;NSM;;;;;N;;;;; -A9B7;JAVANESE VOWEL SIGN WULU MELIK;Mn;0;NSM;;;;;N;;;;; -A9B8;JAVANESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;; -A9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;; -A9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;; -A9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;; -A9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;; -A9BD;JAVANESE CONSONANT SIGN KERET;Mc;0;L;;;;;N;;;;; -A9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;; -A9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;; -A9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;; -A9C1;JAVANESE LEFT RERENGGAN;Po;0;L;;;;;N;;;;; -A9C2;JAVANESE RIGHT RERENGGAN;Po;0;L;;;;;N;;;;; -A9C3;JAVANESE PADA ANDAP;Po;0;L;;;;;N;;;;; -A9C4;JAVANESE PADA MADYA;Po;0;L;;;;;N;;;;; -A9C5;JAVANESE PADA LUHUR;Po;0;L;;;;;N;;;;; -A9C6;JAVANESE PADA WINDU;Po;0;L;;;;;N;;;;; -A9C7;JAVANESE PADA PANGKAT;Po;0;L;;;;;N;;;;; -A9C8;JAVANESE PADA LINGSA;Po;0;L;;;;;N;;;;; -A9C9;JAVANESE PADA LUNGSI;Po;0;L;;;;;N;;;;; -A9CA;JAVANESE PADA ADEG;Po;0;L;;;;;N;;;;; -A9CB;JAVANESE PADA ADEG ADEG;Po;0;L;;;;;N;;;;; -A9CC;JAVANESE PADA PISELEH;Po;0;L;;;;;N;;;;; -A9CD;JAVANESE TURNED PADA PISELEH;Po;0;L;;;;;N;;;;; -A9CF;JAVANESE PANGRANGKEP;Lm;0;L;;;;;N;;;;; -A9D0;JAVANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -A9D1;JAVANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -A9D2;JAVANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -A9D3;JAVANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -A9D4;JAVANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -A9D5;JAVANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -A9D6;JAVANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -A9D7;JAVANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -A9D8;JAVANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -A9D9;JAVANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -A9DE;JAVANESE PADA TIRTA TUMETES;Po;0;L;;;;;N;;;;; -A9DF;JAVANESE PADA ISEN-ISEN;Po;0;L;;;;;N;;;;; -AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;; -AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;; -AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;; -AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;; -AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;; -AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;; -AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;; -AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;; -AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;; -AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;; -AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;; -AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;; -AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;; -AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;; -AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;; -AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;; -AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;; -AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;; -AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;; -AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;; -AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;; -AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;; -AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;; -AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;; -AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;; -AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;; -AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;; -AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;; -AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;; -AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;; -AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;; -AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;; -AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;; -AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;; -AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;; -AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;; -AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;; -AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;; -AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;; -AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;; -AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;; -AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; -AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; -AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;; -AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;; -AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; -AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; -AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;; -AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;; -AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;; -AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;; -AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;; -AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;; -AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;; -AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;; -AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;; -AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;; -AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;; -AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;; -AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;; -AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;; -AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;; -AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;; -AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;; -AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;; -AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;; -AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;; -AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;; -AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;; -AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;; -AA60;MYANMAR LETTER KHAMTI GA;Lo;0;L;;;;;N;;;;; -AA61;MYANMAR LETTER KHAMTI CA;Lo;0;L;;;;;N;;;;; -AA62;MYANMAR LETTER KHAMTI CHA;Lo;0;L;;;;;N;;;;; -AA63;MYANMAR LETTER KHAMTI JA;Lo;0;L;;;;;N;;;;; -AA64;MYANMAR LETTER KHAMTI JHA;Lo;0;L;;;;;N;;;;; -AA65;MYANMAR LETTER KHAMTI NYA;Lo;0;L;;;;;N;;;;; -AA66;MYANMAR LETTER KHAMTI TTA;Lo;0;L;;;;;N;;;;; -AA67;MYANMAR LETTER KHAMTI TTHA;Lo;0;L;;;;;N;;;;; -AA68;MYANMAR LETTER KHAMTI DDA;Lo;0;L;;;;;N;;;;; -AA69;MYANMAR LETTER KHAMTI DDHA;Lo;0;L;;;;;N;;;;; -AA6A;MYANMAR LETTER KHAMTI DHA;Lo;0;L;;;;;N;;;;; -AA6B;MYANMAR LETTER KHAMTI NA;Lo;0;L;;;;;N;;;;; -AA6C;MYANMAR LETTER KHAMTI SA;Lo;0;L;;;;;N;;;;; -AA6D;MYANMAR LETTER KHAMTI HA;Lo;0;L;;;;;N;;;;; -AA6E;MYANMAR LETTER KHAMTI HHA;Lo;0;L;;;;;N;;;;; -AA6F;MYANMAR LETTER KHAMTI FA;Lo;0;L;;;;;N;;;;; -AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;; -AA71;MYANMAR LETTER KHAMTI XA;Lo;0;L;;;;;N;;;;; -AA72;MYANMAR LETTER KHAMTI ZA;Lo;0;L;;;;;N;;;;; -AA73;MYANMAR LETTER KHAMTI RA;Lo;0;L;;;;;N;;;;; -AA74;MYANMAR LOGOGRAM KHAMTI OAY;Lo;0;L;;;;;N;;;;; -AA75;MYANMAR LOGOGRAM KHAMTI QN;Lo;0;L;;;;;N;;;;; -AA76;MYANMAR LOGOGRAM KHAMTI HM;Lo;0;L;;;;;N;;;;; -AA77;MYANMAR SYMBOL AITON EXCLAMATION;So;0;L;;;;;N;;;;; -AA78;MYANMAR SYMBOL AITON ONE;So;0;L;;;;;N;;;;; -AA79;MYANMAR SYMBOL AITON TWO;So;0;L;;;;;N;;;;; -AA7A;MYANMAR LETTER AITON RA;Lo;0;L;;;;;N;;;;; -AA7B;MYANMAR SIGN PAO KAREN TONE;Mc;0;L;;;;;N;;;;; -AA80;TAI VIET LETTER LOW KO;Lo;0;L;;;;;N;;;;; -AA81;TAI VIET LETTER HIGH KO;Lo;0;L;;;;;N;;;;; -AA82;TAI VIET LETTER LOW KHO;Lo;0;L;;;;;N;;;;; -AA83;TAI VIET LETTER HIGH KHO;Lo;0;L;;;;;N;;;;; -AA84;TAI VIET LETTER LOW KHHO;Lo;0;L;;;;;N;;;;; -AA85;TAI VIET LETTER HIGH KHHO;Lo;0;L;;;;;N;;;;; -AA86;TAI VIET LETTER LOW GO;Lo;0;L;;;;;N;;;;; -AA87;TAI VIET LETTER HIGH GO;Lo;0;L;;;;;N;;;;; -AA88;TAI VIET LETTER LOW NGO;Lo;0;L;;;;;N;;;;; -AA89;TAI VIET LETTER HIGH NGO;Lo;0;L;;;;;N;;;;; -AA8A;TAI VIET LETTER LOW CO;Lo;0;L;;;;;N;;;;; -AA8B;TAI VIET LETTER HIGH CO;Lo;0;L;;;;;N;;;;; -AA8C;TAI VIET LETTER LOW CHO;Lo;0;L;;;;;N;;;;; -AA8D;TAI VIET LETTER HIGH CHO;Lo;0;L;;;;;N;;;;; -AA8E;TAI VIET LETTER LOW SO;Lo;0;L;;;;;N;;;;; -AA8F;TAI VIET LETTER HIGH SO;Lo;0;L;;;;;N;;;;; -AA90;TAI VIET LETTER LOW NYO;Lo;0;L;;;;;N;;;;; -AA91;TAI VIET LETTER HIGH NYO;Lo;0;L;;;;;N;;;;; -AA92;TAI VIET LETTER LOW DO;Lo;0;L;;;;;N;;;;; -AA93;TAI VIET LETTER HIGH DO;Lo;0;L;;;;;N;;;;; -AA94;TAI VIET LETTER LOW TO;Lo;0;L;;;;;N;;;;; -AA95;TAI VIET LETTER HIGH TO;Lo;0;L;;;;;N;;;;; -AA96;TAI VIET LETTER LOW THO;Lo;0;L;;;;;N;;;;; -AA97;TAI VIET LETTER HIGH THO;Lo;0;L;;;;;N;;;;; -AA98;TAI VIET LETTER LOW NO;Lo;0;L;;;;;N;;;;; -AA99;TAI VIET LETTER HIGH NO;Lo;0;L;;;;;N;;;;; -AA9A;TAI VIET LETTER LOW BO;Lo;0;L;;;;;N;;;;; -AA9B;TAI VIET LETTER HIGH BO;Lo;0;L;;;;;N;;;;; -AA9C;TAI VIET LETTER LOW PO;Lo;0;L;;;;;N;;;;; -AA9D;TAI VIET LETTER HIGH PO;Lo;0;L;;;;;N;;;;; -AA9E;TAI VIET LETTER LOW PHO;Lo;0;L;;;;;N;;;;; -AA9F;TAI VIET LETTER HIGH PHO;Lo;0;L;;;;;N;;;;; -AAA0;TAI VIET LETTER LOW FO;Lo;0;L;;;;;N;;;;; -AAA1;TAI VIET LETTER HIGH FO;Lo;0;L;;;;;N;;;;; -AAA2;TAI VIET LETTER LOW MO;Lo;0;L;;;;;N;;;;; -AAA3;TAI VIET LETTER HIGH MO;Lo;0;L;;;;;N;;;;; -AAA4;TAI VIET LETTER LOW YO;Lo;0;L;;;;;N;;;;; -AAA5;TAI VIET LETTER HIGH YO;Lo;0;L;;;;;N;;;;; -AAA6;TAI VIET LETTER LOW RO;Lo;0;L;;;;;N;;;;; -AAA7;TAI VIET LETTER HIGH RO;Lo;0;L;;;;;N;;;;; -AAA8;TAI VIET LETTER LOW LO;Lo;0;L;;;;;N;;;;; -AAA9;TAI VIET LETTER HIGH LO;Lo;0;L;;;;;N;;;;; -AAAA;TAI VIET LETTER LOW VO;Lo;0;L;;;;;N;;;;; -AAAB;TAI VIET LETTER HIGH VO;Lo;0;L;;;;;N;;;;; -AAAC;TAI VIET LETTER LOW HO;Lo;0;L;;;;;N;;;;; -AAAD;TAI VIET LETTER HIGH HO;Lo;0;L;;;;;N;;;;; -AAAE;TAI VIET LETTER LOW O;Lo;0;L;;;;;N;;;;; -AAAF;TAI VIET LETTER HIGH O;Lo;0;L;;;;;N;;;;; -AAB0;TAI VIET MAI KANG;Mn;230;NSM;;;;;N;;;;; -AAB1;TAI VIET VOWEL AA;Lo;0;L;;;;;N;;;;; -AAB2;TAI VIET VOWEL I;Mn;230;NSM;;;;;N;;;;; -AAB3;TAI VIET VOWEL UE;Mn;230;NSM;;;;;N;;;;; -AAB4;TAI VIET VOWEL U;Mn;220;NSM;;;;;N;;;;; -AAB5;TAI VIET VOWEL E;Lo;0;L;;;;;N;;;;; -AAB6;TAI VIET VOWEL O;Lo;0;L;;;;;N;;;;; -AAB7;TAI VIET MAI KHIT;Mn;230;NSM;;;;;N;;;;; -AAB8;TAI VIET VOWEL IA;Mn;230;NSM;;;;;N;;;;; -AAB9;TAI VIET VOWEL UEA;Lo;0;L;;;;;N;;;;; -AABA;TAI VIET VOWEL UA;Lo;0;L;;;;;N;;;;; -AABB;TAI VIET VOWEL AUE;Lo;0;L;;;;;N;;;;; -AABC;TAI VIET VOWEL AY;Lo;0;L;;;;;N;;;;; -AABD;TAI VIET VOWEL AN;Lo;0;L;;;;;N;;;;; -AABE;TAI VIET VOWEL AM;Mn;230;NSM;;;;;N;;;;; -AABF;TAI VIET TONE MAI EK;Mn;230;NSM;;;;;N;;;;; -AAC0;TAI VIET TONE MAI NUENG;Lo;0;L;;;;;N;;;;; -AAC1;TAI VIET TONE MAI THO;Mn;230;NSM;;;;;N;;;;; -AAC2;TAI VIET TONE MAI SONG;Lo;0;L;;;;;N;;;;; -AADB;TAI VIET SYMBOL KON;Lo;0;L;;;;;N;;;;; -AADC;TAI VIET SYMBOL NUENG;Lo;0;L;;;;;N;;;;; -AADD;TAI VIET SYMBOL SAM;Lm;0;L;;;;;N;;;;; -AADE;TAI VIET SYMBOL HO HOI;Po;0;L;;;;;N;;;;; -AADF;TAI VIET SYMBOL KOI KOI;Po;0;L;;;;;N;;;;; -ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;; -ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;; -ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;; -ABC3;MEETEI MAYEK LETTER MIT;Lo;0;L;;;;;N;;;;; -ABC4;MEETEI MAYEK LETTER PA;Lo;0;L;;;;;N;;;;; -ABC5;MEETEI MAYEK LETTER NA;Lo;0;L;;;;;N;;;;; -ABC6;MEETEI MAYEK LETTER CHIL;Lo;0;L;;;;;N;;;;; -ABC7;MEETEI MAYEK LETTER TIL;Lo;0;L;;;;;N;;;;; -ABC8;MEETEI MAYEK LETTER KHOU;Lo;0;L;;;;;N;;;;; -ABC9;MEETEI MAYEK LETTER NGOU;Lo;0;L;;;;;N;;;;; -ABCA;MEETEI MAYEK LETTER THOU;Lo;0;L;;;;;N;;;;; -ABCB;MEETEI MAYEK LETTER WAI;Lo;0;L;;;;;N;;;;; -ABCC;MEETEI MAYEK LETTER YANG;Lo;0;L;;;;;N;;;;; -ABCD;MEETEI MAYEK LETTER HUK;Lo;0;L;;;;;N;;;;; -ABCE;MEETEI MAYEK LETTER UN;Lo;0;L;;;;;N;;;;; -ABCF;MEETEI MAYEK LETTER I;Lo;0;L;;;;;N;;;;; -ABD0;MEETEI MAYEK LETTER PHAM;Lo;0;L;;;;;N;;;;; -ABD1;MEETEI MAYEK LETTER ATIYA;Lo;0;L;;;;;N;;;;; -ABD2;MEETEI MAYEK LETTER GOK;Lo;0;L;;;;;N;;;;; -ABD3;MEETEI MAYEK LETTER JHAM;Lo;0;L;;;;;N;;;;; -ABD4;MEETEI MAYEK LETTER RAI;Lo;0;L;;;;;N;;;;; -ABD5;MEETEI MAYEK LETTER BA;Lo;0;L;;;;;N;;;;; -ABD6;MEETEI MAYEK LETTER JIL;Lo;0;L;;;;;N;;;;; -ABD7;MEETEI MAYEK LETTER DIL;Lo;0;L;;;;;N;;;;; -ABD8;MEETEI MAYEK LETTER GHOU;Lo;0;L;;;;;N;;;;; -ABD9;MEETEI MAYEK LETTER DHOU;Lo;0;L;;;;;N;;;;; -ABDA;MEETEI MAYEK LETTER BHAM;Lo;0;L;;;;;N;;;;; -ABDB;MEETEI MAYEK LETTER KOK LONSUM;Lo;0;L;;;;;N;;;;; -ABDC;MEETEI MAYEK LETTER LAI LONSUM;Lo;0;L;;;;;N;;;;; -ABDD;MEETEI MAYEK LETTER MIT LONSUM;Lo;0;L;;;;;N;;;;; -ABDE;MEETEI MAYEK LETTER PA LONSUM;Lo;0;L;;;;;N;;;;; -ABDF;MEETEI MAYEK LETTER NA LONSUM;Lo;0;L;;;;;N;;;;; -ABE0;MEETEI MAYEK LETTER TIL LONSUM;Lo;0;L;;;;;N;;;;; -ABE1;MEETEI MAYEK LETTER NGOU LONSUM;Lo;0;L;;;;;N;;;;; -ABE2;MEETEI MAYEK LETTER I LONSUM;Lo;0;L;;;;;N;;;;; -ABE3;MEETEI MAYEK VOWEL SIGN ONAP;Mc;0;L;;;;;N;;;;; -ABE4;MEETEI MAYEK VOWEL SIGN INAP;Mc;0;L;;;;;N;;;;; -ABE5;MEETEI MAYEK VOWEL SIGN ANAP;Mn;0;NSM;;;;;N;;;;; -ABE6;MEETEI MAYEK VOWEL SIGN YENAP;Mc;0;L;;;;;N;;;;; -ABE7;MEETEI MAYEK VOWEL SIGN SOUNAP;Mc;0;L;;;;;N;;;;; -ABE8;MEETEI MAYEK VOWEL SIGN UNAP;Mn;0;NSM;;;;;N;;;;; -ABE9;MEETEI MAYEK VOWEL SIGN CHEINAP;Mc;0;L;;;;;N;;;;; -ABEA;MEETEI MAYEK VOWEL SIGN NUNG;Mc;0;L;;;;;N;;;;; -ABEB;MEETEI MAYEK CHEIKHEI;Po;0;L;;;;;N;;;;; -ABEC;MEETEI MAYEK LUM IYEK;Mc;0;L;;;;;N;;;;; -ABED;MEETEI MAYEK APUN IYEK;Mn;9;NSM;;;;;N;;;;; -ABF0;MEETEI MAYEK DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -ABF1;MEETEI MAYEK DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -ABF2;MEETEI MAYEK DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -ABF3;MEETEI MAYEK DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -ABF4;MEETEI MAYEK DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -ABF5;MEETEI MAYEK DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -ABF6;MEETEI MAYEK DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -ABF7;MEETEI MAYEK DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -ABF8;MEETEI MAYEK DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -ABF9;MEETEI MAYEK DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -AC00;;Lo;0;L;;;;;N;;;;; -D7A3;;Lo;0;L;;;;;N;;;;; -D7B0;HANGUL JUNGSEONG O-YEO;Lo;0;L;;;;;N;;;;; -D7B1;HANGUL JUNGSEONG O-O-I;Lo;0;L;;;;;N;;;;; -D7B2;HANGUL JUNGSEONG YO-A;Lo;0;L;;;;;N;;;;; -D7B3;HANGUL JUNGSEONG YO-AE;Lo;0;L;;;;;N;;;;; -D7B4;HANGUL JUNGSEONG YO-EO;Lo;0;L;;;;;N;;;;; -D7B5;HANGUL JUNGSEONG U-YEO;Lo;0;L;;;;;N;;;;; -D7B6;HANGUL JUNGSEONG U-I-I;Lo;0;L;;;;;N;;;;; -D7B7;HANGUL JUNGSEONG YU-AE;Lo;0;L;;;;;N;;;;; -D7B8;HANGUL JUNGSEONG YU-O;Lo;0;L;;;;;N;;;;; -D7B9;HANGUL JUNGSEONG EU-A;Lo;0;L;;;;;N;;;;; -D7BA;HANGUL JUNGSEONG EU-EO;Lo;0;L;;;;;N;;;;; -D7BB;HANGUL JUNGSEONG EU-E;Lo;0;L;;;;;N;;;;; -D7BC;HANGUL JUNGSEONG EU-O;Lo;0;L;;;;;N;;;;; -D7BD;HANGUL JUNGSEONG I-YA-O;Lo;0;L;;;;;N;;;;; -D7BE;HANGUL JUNGSEONG I-YAE;Lo;0;L;;;;;N;;;;; -D7BF;HANGUL JUNGSEONG I-YEO;Lo;0;L;;;;;N;;;;; -D7C0;HANGUL JUNGSEONG I-YE;Lo;0;L;;;;;N;;;;; -D7C1;HANGUL JUNGSEONG I-O-I;Lo;0;L;;;;;N;;;;; -D7C2;HANGUL JUNGSEONG I-YO;Lo;0;L;;;;;N;;;;; -D7C3;HANGUL JUNGSEONG I-YU;Lo;0;L;;;;;N;;;;; -D7C4;HANGUL JUNGSEONG I-I;Lo;0;L;;;;;N;;;;; -D7C5;HANGUL JUNGSEONG ARAEA-A;Lo;0;L;;;;;N;;;;; -D7C6;HANGUL JUNGSEONG ARAEA-E;Lo;0;L;;;;;N;;;;; -D7CB;HANGUL JONGSEONG NIEUN-RIEUL;Lo;0;L;;;;;N;;;;; -D7CC;HANGUL JONGSEONG NIEUN-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7CD;HANGUL JONGSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;; -D7CE;HANGUL JONGSEONG SSANGTIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; -D7CF;HANGUL JONGSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;; -D7D0;HANGUL JONGSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;; -D7D1;HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -D7D2;HANGUL JONGSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;; -D7D3;HANGUL JONGSEONG TIKEUT-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7D4;HANGUL JONGSEONG TIKEUT-THIEUTH;Lo;0;L;;;;;N;;;;; -D7D5;HANGUL JONGSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; -D7D6;HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;; -D7D7;HANGUL JONGSEONG SSANGRIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; -D7D8;HANGUL JONGSEONG RIEUL-MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; -D7D9;HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -D7DA;HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; -D7DB;HANGUL JONGSEONG RIEUL-YESIEUNG;Lo;0;L;;;;;N;;;;; -D7DC;HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH;Lo;0;L;;;;;N;;;;; -D7DD;HANGUL JONGSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; -D7DE;HANGUL JONGSEONG MIEUM-NIEUN;Lo;0;L;;;;;N;;;;; -D7DF;HANGUL JONGSEONG MIEUM-SSANGNIEUN;Lo;0;L;;;;;N;;;;; -D7E0;HANGUL JONGSEONG SSANGMIEUM;Lo;0;L;;;;;N;;;;; -D7E1;HANGUL JONGSEONG MIEUM-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; -D7E2;HANGUL JONGSEONG MIEUM-CIEUC;Lo;0;L;;;;;N;;;;; -D7E3;HANGUL JONGSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; -D7E4;HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;; -D7E5;HANGUL JONGSEONG PIEUP-MIEUM;Lo;0;L;;;;;N;;;;; -D7E6;HANGUL JONGSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;; -D7E7;HANGUL JONGSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -D7E8;HANGUL JONGSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; -D7E9;HANGUL JONGSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7EA;HANGUL JONGSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; -D7EB;HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -D7EC;HANGUL JONGSEONG SSANGSIOS-KIYEOK;Lo;0;L;;;;;N;;;;; -D7ED;HANGUL JONGSEONG SSANGSIOS-TIKEUT;Lo;0;L;;;;;N;;;;; -D7EE;HANGUL JONGSEONG SIOS-PANSIOS;Lo;0;L;;;;;N;;;;; -D7EF;HANGUL JONGSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; -D7F0;HANGUL JONGSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; -D7F1;HANGUL JONGSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; -D7F2;HANGUL JONGSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; -D7F3;HANGUL JONGSEONG PANSIOS-PIEUP;Lo;0;L;;;;;N;;;;; -D7F4;HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; -D7F5;HANGUL JONGSEONG YESIEUNG-MIEUM;Lo;0;L;;;;;N;;;;; -D7F6;HANGUL JONGSEONG YESIEUNG-HIEUH;Lo;0;L;;;;;N;;;;; -D7F7;HANGUL JONGSEONG CIEUC-PIEUP;Lo;0;L;;;;;N;;;;; -D7F8;HANGUL JONGSEONG CIEUC-SSANGPIEUP;Lo;0;L;;;;;N;;;;; -D7F9;HANGUL JONGSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;; -D7FA;HANGUL JONGSEONG PHIEUPH-SIOS;Lo;0;L;;;;;N;;;;; -D7FB;HANGUL JONGSEONG PHIEUPH-THIEUTH;Lo;0;L;;;;;N;;;;; -D800;;Cs;0;L;;;;;N;;;;; -DB7F;;Cs;0;L;;;;;N;;;;; -DB80;;Cs;0;L;;;;;N;;;;; -DBFF;;Cs;0;L;;;;;N;;;;; -DC00;;Cs;0;L;;;;;N;;;;; -DFFF;;Cs;0;L;;;;;N;;;;; -E000;;Co;0;L;;;;;N;;;;; -F8FF;;Co;0;L;;;;;N;;;;; -F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; -F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; -F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; -F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; -F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; -F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; -F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; -F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; -F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; -F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; -F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; -F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; -F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; -F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; -F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; -F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; -F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; -F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; -F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; -F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; -F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; -F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; -F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; -F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; -F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; -F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; -F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; -F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; -F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; -F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; -F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; -F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; -F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; -F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; -F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; -F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; -F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; -F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; -F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; -F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; -F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; -F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; -F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; -F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; -F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; -F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; -F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; -F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; -F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; -F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; -F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; -F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; -F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; -F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; -F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; -F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; -F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; -F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; -F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; -F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; -F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; -F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; -F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; -F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; -F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; -F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; -F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; -F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; -F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; -F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; -F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; -F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; -F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; -F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; -F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; -F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; -F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; -F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; -F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; -F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; -F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; -F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; -F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; -F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; -F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; -F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; -F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; -F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; -F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; -F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; -F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; -F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; -F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; -F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; -F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; -F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; -F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; -F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; -F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; -F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; -F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; -F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; -F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; -F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; -F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; -F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; -F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; -F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;3;N;;;;; -F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; -F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; -F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; -F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; -F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; -F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; -F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; -F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;10;N;;;;; -F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; -F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; -F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; -F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; -F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;2;N;;;;; -F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; -F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; -F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; -F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; -F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; -F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; -F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; -F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; -F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; -F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; -F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; -F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; -F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; -F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; -F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; -F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; -F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; -F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; -F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; -F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; -F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; -F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; -F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; -F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; -F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; -F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; -F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; -F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; -F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; -F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; -F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; -F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; -F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; -F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; -F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; -F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; -F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; -F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; -F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; -F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; -F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; -F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; -F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; -F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; -F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; -F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; -F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; -F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; -F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; -F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; -F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; -F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; -F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; -F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; -F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; -F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; -F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; -F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;0;N;;;;; -F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; -F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; -F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; -F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; -F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; -F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; -F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; -F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; -F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; -F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; -F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; -F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; -F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; -F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; -F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; -F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; -F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; -F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; -F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; -F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; -F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; -F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; -F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; -F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; -F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; -F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; -F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; -F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; -F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; -F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; -F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;6;N;;;;; -F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; -F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;N;;;;; -F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; -F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; -F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; -F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; -F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; -F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; -F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; -F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; -F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; -F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; -F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; -F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; -F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; -F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; -F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; -F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; -F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; -F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; -F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; -F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; -F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; -F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; -F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; -F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; -F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; -F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; -F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; -F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; -F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; -F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; -F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; -F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; -F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; -F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; -F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; -F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; -F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; -F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; -F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; -F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; -F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; -F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;10;N;;;;; -F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; -F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; -FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; -FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; -FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; -FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; -FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; -FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; -FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; -FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; -FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; -FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; -FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; -FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; -FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; -FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; -FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; -FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; -FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; -FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; -FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; -FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; -FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; -FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; -FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; -FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; -FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; -FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; -FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; -FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; -FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; -FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; -FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; -FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;;;; -FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; -FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; -FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; -FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;;;; -FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; -FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; -FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; -FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; -FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; -FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; -FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; -FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; -FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; -FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; -FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; -FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; -FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; -FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; -FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; -FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; -FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; -FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; -FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; -FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; -FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; -FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; -FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; -FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; -FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; -FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; -FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; -FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; -FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; -FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; -FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; -FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; -FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; -FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; -FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; -FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; -FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; -FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; -FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; -FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; -FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; -FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; -FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; -FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; -FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; -FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; -FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; -FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; -FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; -FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; -FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; -FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; -FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; -FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; -FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; -FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; -FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; -FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; -FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; -FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; -FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; -FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; -FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; -FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; -FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; -FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; -FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; -FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; -FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; -FA6B;CJK COMPATIBILITY IDEOGRAPH-FA6B;Lo;0;L;6075;;;;N;;;;; -FA6C;CJK COMPATIBILITY IDEOGRAPH-FA6C;Lo;0;L;242EE;;;;N;;;;; -FA6D;CJK COMPATIBILITY IDEOGRAPH-FA6D;Lo;0;L;8218;;;;N;;;;; -FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; -FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; -FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; -FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; -FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; -FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; -FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; -FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; -FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; -FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; -FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; -FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; -FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; -FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; -FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; -FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; -FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; -FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; -FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; -FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; -FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; -FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; -FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; -FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; -FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; -FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; -FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; -FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; -FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; -FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; -FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; -FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; -FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; -FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; -FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; -FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; -FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; -FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; -FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; -FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; -FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; -FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; -FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; -FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; -FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; -FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; -FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; -FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; -FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; -FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; -FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; -FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; -FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; -FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; -FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; -FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; -FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; -FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; -FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; -FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; -FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; -FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; -FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; -FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; -FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; -FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; -FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; -FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; -FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; -FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; -FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; -FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; -FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; -FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; -FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; -FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; -FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; -FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; -FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; -FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; -FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; -FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; -FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; -FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; -FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; -FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; -FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; -FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; -FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; -FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; -FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; -FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; -FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; -FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; -FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; -FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; -FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; -FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; -FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; -FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; -FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; -FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; -FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; -FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; -FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; -FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; -FB00;LATIN SMALL LIGATURE FF;Ll;0;L; 0066 0066;;;;N;;;;; -FB01;LATIN SMALL LIGATURE FI;Ll;0;L; 0066 0069;;;;N;;;;; -FB02;LATIN SMALL LIGATURE FL;Ll;0;L; 0066 006C;;;;N;;;;; -FB03;LATIN SMALL LIGATURE FFI;Ll;0;L; 0066 0066 0069;;;;N;;;;; -FB04;LATIN SMALL LIGATURE FFL;Ll;0;L; 0066 0066 006C;;;;N;;;;; -FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L; 017F 0074;;;;N;;;;; -FB06;LATIN SMALL LIGATURE ST;Ll;0;L; 0073 0074;;;;N;;;;; -FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L; 0574 0576;;;;N;;;;; -FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L; 0574 0565;;;;N;;;;; -FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L; 0574 056B;;;;N;;;;; -FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L; 057E 0576;;;;N;;;;; -FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L; 0574 056D;;;;N;;;;; -FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; -FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; -FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; -FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R; 05E2;;;;N;;;;; -FB21;HEBREW LETTER WIDE ALEF;Lo;0;R; 05D0;;;;N;;;;; -FB22;HEBREW LETTER WIDE DALET;Lo;0;R; 05D3;;;;N;;;;; -FB23;HEBREW LETTER WIDE HE;Lo;0;R; 05D4;;;;N;;;;; -FB24;HEBREW LETTER WIDE KAF;Lo;0;R; 05DB;;;;N;;;;; -FB25;HEBREW LETTER WIDE LAMED;Lo;0;R; 05DC;;;;N;;;;; -FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R; 05DD;;;;N;;;;; -FB27;HEBREW LETTER WIDE RESH;Lo;0;R; 05E8;;;;N;;;;; -FB28;HEBREW LETTER WIDE TAV;Lo;0;R; 05EA;;;;N;;;;; -FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; -FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; -FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; -FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; -FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; -FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; -FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; -FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; -FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; -FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; -FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; -FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; -FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; -FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; -FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; -FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; -FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; -FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; -FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; -FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; -FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; -FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; -FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; -FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; -FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; -FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; -FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; -FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; -FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; -FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; -FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; -FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; -FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R; 05D0 05DC;;;;N;;;;; -FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL; 0671;;;;N;;;;; -FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL; 0671;;;;N;;;;; -FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL; 067B;;;;N;;;;; -FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL; 067B;;;;N;;;;; -FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL; 067E;;;;N;;;;; -FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL; 067E;;;;N;;;;; -FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL; 0680;;;;N;;;;; -FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL; 067A;;;;N;;;;; -FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL; 067A;;;;N;;;;; -FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL; 067F;;;;N;;;;; -FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL; 067F;;;;N;;;;; -FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL; 0679;;;;N;;;;; -FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL; 0679;;;;N;;;;; -FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; -FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; -FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL; 0684;;;;N;;;;; -FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL; 0684;;;;N;;;;; -FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL; 0683;;;;N;;;;; -FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL; 0683;;;;N;;;;; -FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL; 0686;;;;N;;;;; -FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL; 0687;;;;N;;;;; -FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL; 0687;;;;N;;;;; -FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL; 068D;;;;N;;;;; -FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL; 068D;;;;N;;;;; -FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL; 068C;;;;N;;;;; -FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL; 068C;;;;N;;;;; -FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL; 068E;;;;N;;;;; -FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL; 068E;;;;N;;;;; -FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL; 0688;;;;N;;;;; -FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL; 0688;;;;N;;;;; -FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL; 0698;;;;N;;;;; -FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL; 0698;;;;N;;;;; -FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL; 0691;;;;N;;;;; -FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL; 0691;;;;N;;;;; -FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; -FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; -FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; -FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; -FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL; 06BA;;;;N;;;;; -FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL; 06BA;;;;N;;;;; -FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; -FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL; 06C0;;;;N;;;;; -FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL; 06C0;;;;N;;;;; -FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; -FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; -FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL; 06D2;;;;N;;;;; -FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL; 06D2;;;;N;;;;; -FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 06D3;;;;N;;;;; -FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 06D3;;;;N;;;;; -FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; -FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL; 06C7;;;;N;;;;; -FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL; 06C7;;;;N;;;;; -FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL; 06C6;;;;N;;;;; -FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL; 06C6;;;;N;;;;; -FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL; 06C8;;;;N;;;;; -FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL; 06C8;;;;N;;;;; -FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0677;;;;N;;;;; -FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL; 06CB;;;;N;;;;; -FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL; 06CB;;;;N;;;;; -FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL; 06C5;;;;N;;;;; -FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL; 06C5;;;;N;;;;; -FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL; 06C9;;;;N;;;;; -FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL; 06C9;;;;N;;;;; -FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; -FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0649;;;;N;;;;; -FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL; 0649;;;;N;;;;; -FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL; 0626 0627;;;;N;;;;; -FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL; 0626 0627;;;;N;;;;; -FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; -FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; -FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL; 0626 0648;;;;N;;;;; -FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL; 0626 0648;;;;N;;;;; -FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; -FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; -FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; -FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; -FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; -FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; -FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; -FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; -FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL; 0626 062C;;;;N;;;;; -FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL; 0626 062D;;;;N;;;;; -FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL; 0626 064A;;;;N;;;;; -FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0628 062C;;;;N;;;;; -FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL; 0628 062D;;;;N;;;;; -FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0628 062E;;;;N;;;;; -FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0628 0649;;;;N;;;;; -FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL; 0628 064A;;;;N;;;;; -FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062A 062C;;;;N;;;;; -FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL; 062A 062D;;;;N;;;;; -FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL; 062A 062E;;;;N;;;;; -FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062A 0649;;;;N;;;;; -FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL; 062A 064A;;;;N;;;;; -FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062B 062C;;;;N;;;;; -FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062B 0649;;;;N;;;;; -FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL; 062B 064A;;;;N;;;;; -FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL; 062C 062D;;;;N;;;;; -FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 062C 0645;;;;N;;;;; -FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062D 062C;;;;N;;;;; -FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062D 0645;;;;N;;;;; -FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062E 062C;;;;N;;;;; -FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL; 062E 062D;;;;N;;;;; -FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062E 0645;;;;N;;;;; -FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL; 0635 062D;;;;N;;;;; -FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0635 0645;;;;N;;;;; -FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL; 0636 062C;;;;N;;;;; -FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL; 0636 062D;;;;N;;;;; -FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL; 0636 062E;;;;N;;;;; -FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0636 0645;;;;N;;;;; -FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL; 0637 062D;;;;N;;;;; -FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL; 0639 062C;;;;N;;;;; -FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL; 0639 0645;;;;N;;;;; -FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL; 063A 062C;;;;N;;;;; -FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL; 063A 0645;;;;N;;;;; -FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0641 062C;;;;N;;;;; -FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL; 0641 062D;;;;N;;;;; -FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0641 062E;;;;N;;;;; -FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0641 0645;;;;N;;;;; -FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0641 0649;;;;N;;;;; -FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL; 0641 064A;;;;N;;;;; -FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL; 0642 062D;;;;N;;;;; -FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0642 0645;;;;N;;;;; -FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0642 0649;;;;N;;;;; -FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL; 0642 064A;;;;N;;;;; -FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL; 0643 0627;;;;N;;;;; -FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL; 0643 062C;;;;N;;;;; -FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL; 0643 062D;;;;N;;;;; -FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL; 0643 062E;;;;N;;;;; -FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0643 0649;;;;N;;;;; -FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL; 0643 064A;;;;N;;;;; -FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL; 0644 062C;;;;N;;;;; -FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL; 0644 062D;;;;N;;;;; -FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL; 0644 062E;;;;N;;;;; -FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0644 0649;;;;N;;;;; -FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL; 0644 064A;;;;N;;;;; -FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL; 0645 062C;;;;N;;;;; -FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL; 0645 062D;;;;N;;;;; -FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL; 0645 062E;;;;N;;;;; -FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0645 0649;;;;N;;;;; -FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL; 0645 064A;;;;N;;;;; -FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL; 0646 062C;;;;N;;;;; -FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL; 0646 062D;;;;N;;;;; -FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL; 0646 062E;;;;N;;;;; -FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0646 0649;;;;N;;;;; -FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL; 0646 064A;;;;N;;;;; -FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0647 062C;;;;N;;;;; -FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0647 0645;;;;N;;;;; -FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0647 0649;;;;N;;;;; -FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL; 0647 064A;;;;N;;;;; -FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL; 064A 062C;;;;N;;;;; -FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL; 064A 062D;;;;N;;;;; -FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL; 064A 062E;;;;N;;;;; -FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 064A 0649;;;;N;;;;; -FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL; 064A 064A;;;;N;;;;; -FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0630 0670;;;;N;;;;; -FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0631 0670;;;;N;;;;; -FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0649 0670;;;;N;;;;; -FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C 0651;;;;N;;;;; -FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D 0651;;;;N;;;;; -FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL; 0020 064E 0651;;;;N;;;;; -FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F 0651;;;;N;;;;; -FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL; 0020 0650 0651;;;;N;;;;; -FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0020 0651 0670;;;;N;;;;; -FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL; 0626 0631;;;;N;;;;; -FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL; 0626 0632;;;;N;;;;; -FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL; 0626 0646;;;;N;;;;; -FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; -FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL; 0626 064A;;;;N;;;;; -FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL; 0628 0631;;;;N;;;;; -FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL; 0628 0632;;;;N;;;;; -FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL; 0628 0646;;;;N;;;;; -FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0628 0649;;;;N;;;;; -FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL; 0628 064A;;;;N;;;;; -FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL; 062A 0631;;;;N;;;;; -FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL; 062A 0632;;;;N;;;;; -FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL; 062A 0646;;;;N;;;;; -FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0649;;;;N;;;;; -FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL; 062A 064A;;;;N;;;;; -FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL; 062B 0631;;;;N;;;;; -FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL; 062B 0632;;;;N;;;;; -FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL; 062B 0646;;;;N;;;;; -FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062B 0649;;;;N;;;;; -FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL; 062B 064A;;;;N;;;;; -FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0641 0649;;;;N;;;;; -FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL; 0641 064A;;;;N;;;;; -FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0642 0649;;;;N;;;;; -FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL; 0642 064A;;;;N;;;;; -FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL; 0643 0627;;;;N;;;;; -FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0643 0649;;;;N;;;;; -FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL; 0643 064A;;;;N;;;;; -FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 0649;;;;N;;;;; -FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL; 0644 064A;;;;N;;;;; -FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL; 0645 0627;;;;N;;;;; -FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL; 0646 0631;;;;N;;;;; -FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL; 0646 0632;;;;N;;;;; -FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL; 0646 0646;;;;N;;;;; -FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0649;;;;N;;;;; -FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL; 0646 064A;;;;N;;;;; -FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL; 0649 0670;;;;N;;;;; -FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL; 064A 0631;;;;N;;;;; -FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL; 064A 0632;;;;N;;;;; -FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL; 064A 0646;;;;N;;;;; -FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 064A 0649;;;;N;;;;; -FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL; 064A 064A;;;;N;;;;; -FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL; 0626 062C;;;;N;;;;; -FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL; 0626 062D;;;;N;;;;; -FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL; 0626 062E;;;;N;;;;; -FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; -FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL; 0628 062C;;;;N;;;;; -FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL; 0628 062D;;;;N;;;;; -FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL; 0628 062E;;;;N;;;;; -FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; -FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062C;;;;N;;;;; -FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL; 062A 062D;;;;N;;;;; -FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL; 062A 062E;;;;N;;;;; -FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; -FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 062D;;;;N;;;;; -FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062C 0645;;;;N;;;;; -FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062D 062C;;;;N;;;;; -FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062D 0645;;;;N;;;;; -FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 062E 062C;;;;N;;;;; -FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062E 0645;;;;N;;;;; -FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D;;;;N;;;;; -FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL; 0635 062E;;;;N;;;;; -FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645;;;;N;;;;; -FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL; 0636 062C;;;;N;;;;; -FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL; 0636 062D;;;;N;;;;; -FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL; 0636 062E;;;;N;;;;; -FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL; 0636 0645;;;;N;;;;; -FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL; 0637 062D;;;;N;;;;; -FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL; 0639 062C;;;;N;;;;; -FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645;;;;N;;;;; -FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL; 063A 062C;;;;N;;;;; -FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL; 063A 0645;;;;N;;;;; -FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL; 0641 062C;;;;N;;;;; -FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL; 0641 062D;;;;N;;;;; -FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL; 0641 062E;;;;N;;;;; -FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 0645;;;;N;;;;; -FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL; 0642 062D;;;;N;;;;; -FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL; 0642 0645;;;;N;;;;; -FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL; 0643 062C;;;;N;;;;; -FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL; 0643 062D;;;;N;;;;; -FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL; 0643 062E;;;;N;;;;; -FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C;;;;N;;;;; -FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL; 0644 062D;;;;N;;;;; -FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL; 0644 062E;;;;N;;;;; -FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL; 0644 0647;;;;N;;;;; -FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062C;;;;N;;;;; -FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062D;;;;N;;;;; -FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062E;;;;N;;;;; -FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; -FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL; 0646 062C;;;;N;;;;; -FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL; 0646 062D;;;;N;;;;; -FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL; 0646 062E;;;;N;;;;; -FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; -FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL; 0647 062C;;;;N;;;;; -FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645;;;;N;;;;; -FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL; 0647 0670;;;;N;;;;; -FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL; 064A 062C;;;;N;;;;; -FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL; 064A 062D;;;;N;;;;; -FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL; 064A 062E;;;;N;;;;; -FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; -FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; -FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; -FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; -FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; -FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; -FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; -FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; -FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL; 062B 0647;;;;N;;;;; -FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; -FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; -FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; -FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; -FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; -FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; -FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; -FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; -FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; -FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; -FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL; 0640 064E 0651;;;;N;;;;; -FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F 0651;;;;N;;;;; -FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL; 0640 0650 0651;;;;N;;;;; -FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0637 0649;;;;N;;;;; -FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL; 0637 064A;;;;N;;;;; -FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0639 0649;;;;N;;;;; -FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL; 0639 064A;;;;N;;;;; -FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 063A 0649;;;;N;;;;; -FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL; 063A 064A;;;;N;;;;; -FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0633 0649;;;;N;;;;; -FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0633 064A;;;;N;;;;; -FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0634 0649;;;;N;;;;; -FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0634 064A;;;;N;;;;; -FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062D 0649;;;;N;;;;; -FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL; 062D 064A;;;;N;;;;; -FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062C 0649;;;;N;;;;; -FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL; 062C 064A;;;;N;;;;; -FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062E 0649;;;;N;;;;; -FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL; 062E 064A;;;;N;;;;; -FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0635 0649;;;;N;;;;; -FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL; 0635 064A;;;;N;;;;; -FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0636 0649;;;;N;;;;; -FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL; 0636 064A;;;;N;;;;; -FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL; 0634 0631;;;;N;;;;; -FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL; 0633 0631;;;;N;;;;; -FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL; 0635 0631;;;;N;;;;; -FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL; 0636 0631;;;;N;;;;; -FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0637 0649;;;;N;;;;; -FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL; 0637 064A;;;;N;;;;; -FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0649;;;;N;;;;; -FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL; 0639 064A;;;;N;;;;; -FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0649;;;;N;;;;; -FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL; 063A 064A;;;;N;;;;; -FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 0649;;;;N;;;;; -FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL; 0633 064A;;;;N;;;;; -FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0634 0649;;;;N;;;;; -FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL; 0634 064A;;;;N;;;;; -FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0649;;;;N;;;;; -FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL; 062D 064A;;;;N;;;;; -FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0649;;;;N;;;;; -FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 064A;;;;N;;;;; -FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062E 0649;;;;N;;;;; -FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL; 062E 064A;;;;N;;;;; -FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0635 0649;;;;N;;;;; -FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL; 0635 064A;;;;N;;;;; -FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 0649;;;;N;;;;; -FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL; 0636 064A;;;;N;;;;; -FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL; 0634 0631;;;;N;;;;; -FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL; 0633 0631;;;;N;;;;; -FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL; 0635 0631;;;;N;;;;; -FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL; 0636 0631;;;;N;;;;; -FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; -FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; -FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; -FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; -FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; -FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; -FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; -FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; -FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; -FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; -FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; -FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;;N;;;;; -FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; -FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; -FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; -FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; -FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; -FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; -FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062D 0645;;;;N;;;;; -FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062E 0645;;;;N;;;;; -FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 062A 0645 062C;;;;N;;;;; -FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062A 0645 062D;;;;N;;;;; -FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 062A 0645 062E;;;;N;;;;; -FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; -FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; -FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 0645 064A;;;;N;;;;; -FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0645 0649;;;;N;;;;; -FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062D 062C;;;;N;;;;; -FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 062C 062D;;;;N;;;;; -FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062C 0649;;;;N;;;;; -FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; -FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; -FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0633 0645 062C;;;;N;;;;; -FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; -FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; -FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; -FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; -FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; -FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; -FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; -FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0634 062C 064A;;;;N;;;;; -FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; -FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; -FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; -FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; -FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 062D 0649;;;;N;;;;; -FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; -FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; -FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; -FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; -FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645 0645;;;;N;;;;; -FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0637 0645 064A;;;;N;;;;; -FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; -FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; -FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; -FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0645 0649;;;;N;;;;; -FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 063A 0645 0645;;;;N;;;;; -FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 063A 0645 064A;;;;N;;;;; -FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0645 0649;;;;N;;;;; -FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; -FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; -FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; -FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0642 0645 0645;;;;N;;;;; -FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; -FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0644 062D 064A;;;;N;;;;; -FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 062D 0649;;;;N;;;;; -FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; -FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; -FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; -FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; -FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; -FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; -FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062D 062C;;;;N;;;;; -FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062D 0645;;;;N;;;;; -FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062D 064A;;;;N;;;;; -FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062C 062D;;;;N;;;;; -FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062C 0645;;;;N;;;;; -FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062E 062C;;;;N;;;;; -FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062E 0645;;;;N;;;;; -FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062C 062E;;;;N;;;;; -FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0647 0645 062C;;;;N;;;;; -FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645 0645;;;;N;;;;; -FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062D 0645;;;;N;;;;; -FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062D 0649;;;;N;;;;; -FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; -FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; -FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062C 0649;;;;N;;;;; -FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 0645 064A;;;;N;;;;; -FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0645 0649;;;;N;;;;; -FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; -FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; -FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062E 064A;;;;N;;;;; -FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 062C 064A;;;;N;;;;; -FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062C 0649;;;;N;;;;; -FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 062A 062E 064A;;;;N;;;;; -FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062E 0649;;;;N;;;;; -FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 0645 064A;;;;N;;;;; -FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0645 0649;;;;N;;;;; -FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 0645 064A;;;;N;;;;; -FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 062D 0649;;;;N;;;;; -FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0645 0649;;;;N;;;;; -FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062E 0649;;;;N;;;;; -FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0635 062D 064A;;;;N;;;;; -FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0634 062D 064A;;;;N;;;;; -FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0636 062D 064A;;;;N;;;;; -FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 062C 064A;;;;N;;;;; -FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 0645 064A;;;;N;;;;; -FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 064A 062D 064A;;;;N;;;;; -FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 062C 064A;;;;N;;;;; -FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 0645 064A;;;;N;;;;; -FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 0645 064A;;;;N;;;;; -FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0642 0645 064A;;;;N;;;;; -FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0646 062D 064A;;;;N;;;;; -FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; -FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; -FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0639 0645 064A;;;;N;;;;; -FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0643 0645 064A;;;;N;;;;; -FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; -FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062E 064A;;;;N;;;;; -FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; -FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; -FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; -FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; -FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 062C 062D 064A;;;;N;;;;; -FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 062C 064A;;;;N;;;;; -FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 062C 064A;;;;N;;;;; -FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0641 0645 064A;;;;N;;;;; -FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062D 064A;;;;N;;;;; -FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; -FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; -FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; -FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; -FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; -FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; -FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; -FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; -FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL; 0627 0643 0628 0631;;;;N;;;;; -FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL; 0645 062D 0645 062F;;;;N;;;;; -FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL; 0635 0644 0639 0645;;;;N;;;;; -FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL; 0631 0633 0648 0644;;;;N;;;;; -FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL; 0639 0644 064A 0647;;;;N;;;;; -FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL; 0648 0633 0644 0645;;;;N;;;;; -FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL; 0635 0644 0649;;;;N;;;;; -FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; -FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; -FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; -FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; -FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; -FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; -FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; -FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; -FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; -FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; -FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; -FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; -FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; -FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; -FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; -FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; -FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; -FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; -FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; -FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; -FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON; 002C;;;;N;;;;; -FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;;;;; -FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON; 003A;;;;N;;;;; -FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON; 3016;;;;N;;;;; -FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON; 3017;;;;N;;;;; -FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON; 2026;;;;N;;;;; -FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;; -FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;; -FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;; -FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; -FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; -FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; -FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; -FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; -FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; -FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; -FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; -FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; -FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; -FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; -FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON; 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; -FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON; 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; -FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON; 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; -FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON; 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; -FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON; 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; -FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON; 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; -FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; -FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; -FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON; 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; -FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON; 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; -FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; -FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; -FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;N;;;;; -FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;N;;;;; -FE49;DASHED OVERLINE;Po;0;ON; 203E;;;;N;SPACING DASHED OVERSCORE;;;; -FE4A;CENTRELINE OVERLINE;Po;0;ON; 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; -FE4B;WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING WAVY OVERSCORE;;;; -FE4C;DOUBLE WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; -FE4D;DASHED LOW LINE;Pc;0;ON; 005F;;;;N;SPACING DASHED UNDERSCORE;;;; -FE4E;CENTRELINE LOW LINE;Pc;0;ON; 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; -FE4F;WAVY LOW LINE;Pc;0;ON; 005F;;;;N;SPACING WAVY UNDERSCORE;;;; -FE50;SMALL COMMA;Po;0;CS; 002C;;;;N;;;;; -FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FE52;SMALL FULL STOP;Po;0;CS; 002E;;;;N;SMALL PERIOD;;;; -FE54;SMALL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FE55;SMALL COLON;Po;0;CS; 003A;;;;N;;;;; -FE56;SMALL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FE57;SMALL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FE58;SMALL EM DASH;Pd;0;ON; 2014;;;;N;;;;; -FE59;SMALL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SMALL OPENING PARENTHESIS;;;; -FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;; -FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;; -FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;; -FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;; -FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;; -FE5F;SMALL NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; -FE60;SMALL AMPERSAND;Po;0;ON; 0026;;;;N;;;;; -FE61;SMALL ASTERISK;Po;0;ON; 002A;;;;N;;;;; -FE62;SMALL PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FE63;SMALL HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; -FE64;SMALL LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; -FE65;SMALL GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; -FE66;SMALL EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -FE68;SMALL REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;SMALL BACKSLASH;;;; -FE69;SMALL DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; -FE6A;SMALL PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; -FE6B;SMALL COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; -FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL; 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; -FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL; 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; -FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; -FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; -FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; -FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL; 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; -FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL; 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; -FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; -FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; -FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL; 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; -FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL; 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; -FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL; 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; -FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL; 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; -FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL; 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; -FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL; 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; -FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL; 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; -FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; -FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; -FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; -FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; -FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; -FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; -FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; -FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; -FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; -FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; -FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; -FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; -FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; -FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; -FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; -FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; -FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; -FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; -FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; -FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; -FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; -FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; -FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; -FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; -FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; -FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; -FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; -FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; -FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; -FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; -FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; -FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; -FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; -FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; -FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; -FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; -FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; -FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; -FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; -FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; -FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; -FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; -FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; -FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; -FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; -FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; -FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; -FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; -FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; -FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; -FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; -FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; -FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; -FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; -FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; -FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; -FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; -FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; -FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; -FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; -FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; -FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; -FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; -FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; -FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; -FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; -FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; -FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; -FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; -FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; -FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; -FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; -FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; -FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; -FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; -FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; -FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; -FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; -FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; -FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; -FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; -FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; -FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; -FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; -FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; -FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; -FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; -FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; -FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; -FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; -FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; -FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; -FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; -FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; -FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; -FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; -FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; -FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; -FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; -FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; -FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; -FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; -FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; -FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; -FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; -FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; -FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; -FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; -FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; -FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; -FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; -FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; -FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; -FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; -FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; -FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; -FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; -FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; -FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; -FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; -FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; -FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; -FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; -FF02;FULLWIDTH QUOTATION MARK;Po;0;ON; 0022;;;;N;;;;; -FF03;FULLWIDTH NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; -FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; -FF05;FULLWIDTH PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; -FF06;FULLWIDTH AMPERSAND;Po;0;ON; 0026;;;;N;;;;; -FF07;FULLWIDTH APOSTROPHE;Po;0;ON; 0027;;;;N;;;;; -FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; -FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; -FF0A;FULLWIDTH ASTERISK;Po;0;ON; 002A;;;;N;;;;; -FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; -FF0C;FULLWIDTH COMMA;Po;0;CS; 002C;;;;N;;;;; -FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; -FF0E;FULLWIDTH FULL STOP;Po;0;CS; 002E;;;;N;FULLWIDTH PERIOD;;;; -FF0F;FULLWIDTH SOLIDUS;Po;0;CS; 002F;;;;N;FULLWIDTH SLASH;;;; -FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -FF11;FULLWIDTH DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -FF12;FULLWIDTH DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -FF13;FULLWIDTH DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -FF16;FULLWIDTH DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -FF19;FULLWIDTH DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -FF1A;FULLWIDTH COLON;Po;0;CS; 003A;;;;N;;;;; -FF1B;FULLWIDTH SEMICOLON;Po;0;ON; 003B;;;;N;;;;; -FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; -FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; -FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; -FF1F;FULLWIDTH QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; -FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; -FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L; 0041;;;;N;;;;FF41; -FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L; 0042;;;;N;;;;FF42; -FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L; 0043;;;;N;;;;FF43; -FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L; 0044;;;;N;;;;FF44; -FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L; 0045;;;;N;;;;FF45; -FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L; 0046;;;;N;;;;FF46; -FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L; 0047;;;;N;;;;FF47; -FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L; 0048;;;;N;;;;FF48; -FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L; 0049;;;;N;;;;FF49; -FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L; 004A;;;;N;;;;FF4A; -FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L; 004B;;;;N;;;;FF4B; -FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L; 004C;;;;N;;;;FF4C; -FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L; 004D;;;;N;;;;FF4D; -FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L; 004E;;;;N;;;;FF4E; -FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L; 004F;;;;N;;;;FF4F; -FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L; 0050;;;;N;;;;FF50; -FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L; 0051;;;;N;;;;FF51; -FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L; 0052;;;;N;;;;FF52; -FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L; 0053;;;;N;;;;FF53; -FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L; 0054;;;;N;;;;FF54; -FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L; 0055;;;;N;;;;FF55; -FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L; 0056;;;;N;;;;FF56; -FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L; 0057;;;;N;;;;FF57; -FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L; 0058;;;;N;;;;FF58; -FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L; 0059;;;;N;;;;FF59; -FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L; 005A;;;;N;;;;FF5A; -FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; -FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;FULLWIDTH BACKSLASH;;;; -FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; -FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON; 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; -FF3F;FULLWIDTH LOW LINE;Pc;0;ON; 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; -FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON; 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; -FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L; 0061;;;;N;;;FF21;;FF21 -FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L; 0062;;;;N;;;FF22;;FF22 -FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L; 0063;;;;N;;;FF23;;FF23 -FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L; 0064;;;;N;;;FF24;;FF24 -FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L; 0065;;;;N;;;FF25;;FF25 -FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L; 0066;;;;N;;;FF26;;FF26 -FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L; 0067;;;;N;;;FF27;;FF27 -FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L; 0068;;;;N;;;FF28;;FF28 -FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;FF29;;FF29 -FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L; 006A;;;;N;;;FF2A;;FF2A -FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L; 006B;;;;N;;;FF2B;;FF2B -FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L; 006C;;;;N;;;FF2C;;FF2C -FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L; 006D;;;;N;;;FF2D;;FF2D -FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;FF2E;;FF2E -FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L; 006F;;;;N;;;FF2F;;FF2F -FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L; 0070;;;;N;;;FF30;;FF30 -FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L; 0071;;;;N;;;FF31;;FF31 -FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L; 0072;;;;N;;;FF32;;FF32 -FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L; 0073;;;;N;;;FF33;;FF33 -FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L; 0074;;;;N;;;FF34;;FF34 -FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L; 0075;;;;N;;;FF35;;FF35 -FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L; 0076;;;;N;;;FF36;;FF36 -FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L; 0077;;;;N;;;FF37;;FF37 -FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L; 0078;;;;N;;;FF38;;FF38 -FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L; 0079;;;;N;;;FF39;;FF39 -FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L; 007A;;;;N;;;FF3A;;FF3A -FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; -FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON; 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; -FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; -FF5E;FULLWIDTH TILDE;Sm;0;ON; 007E;;;;N;FULLWIDTH SPACING TILDE;;;; -FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON; 2985;;;;Y;;;;; -FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON; 2986;;;;Y;;;;; -FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; -FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; -FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; -FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; -FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON; 30FB;;;;N;;;;; -FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L; 30F2;;;;N;;;;; -FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L; 30A1;;;;N;;;;; -FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L; 30A3;;;;N;;;;; -FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L; 30A5;;;;N;;;;; -FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L; 30A7;;;;N;;;;; -FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L; 30A9;;;;N;;;;; -FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L; 30E3;;;;N;;;;; -FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L; 30E5;;;;N;;;;; -FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L; 30E7;;;;N;;;;; -FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L; 30C3;;;;N;;;;; -FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L; 30FC;;;;N;;;;; -FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L; 30A2;;;;N;;;;; -FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L; 30A4;;;;N;;;;; -FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L; 30A6;;;;N;;;;; -FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L; 30A8;;;;N;;;;; -FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L; 30AA;;;;N;;;;; -FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L; 30AB;;;;N;;;;; -FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L; 30AD;;;;N;;;;; -FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L; 30AF;;;;N;;;;; -FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L; 30B1;;;;N;;;;; -FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L; 30B3;;;;N;;;;; -FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L; 30B5;;;;N;;;;; -FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L; 30B7;;;;N;;;;; -FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L; 30B9;;;;N;;;;; -FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L; 30BB;;;;N;;;;; -FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L; 30BD;;;;N;;;;; -FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L; 30BF;;;;N;;;;; -FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L; 30C1;;;;N;;;;; -FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L; 30C4;;;;N;;;;; -FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L; 30C6;;;;N;;;;; -FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L; 30C8;;;;N;;;;; -FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L; 30CA;;;;N;;;;; -FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L; 30CB;;;;N;;;;; -FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L; 30CC;;;;N;;;;; -FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L; 30CD;;;;N;;;;; -FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L; 30CE;;;;N;;;;; -FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L; 30CF;;;;N;;;;; -FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L; 30D2;;;;N;;;;; -FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L; 30D5;;;;N;;;;; -FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L; 30D8;;;;N;;;;; -FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L; 30DB;;;;N;;;;; -FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L; 30DE;;;;N;;;;; -FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L; 30DF;;;;N;;;;; -FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L; 30E0;;;;N;;;;; -FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L; 30E1;;;;N;;;;; -FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L; 30E2;;;;N;;;;; -FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L; 30E4;;;;N;;;;; -FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L; 30E6;;;;N;;;;; -FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L; 30E8;;;;N;;;;; -FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L; 30E9;;;;N;;;;; -FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L; 30EA;;;;N;;;;; -FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L; 30EB;;;;N;;;;; -FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L; 30EC;;;;N;;;;; -FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L; 30ED;;;;N;;;;; -FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L; 30EF;;;;N;;;;; -FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L; 30F3;;;;N;;;;; -FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L; 3099;;;;N;;;;; -FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L; 309A;;;;N;;;;; -FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L; 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; -FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L; 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; -FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L; 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; -FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; -FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L; 3134;;;;N;;;;; -FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; -FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; -FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L; 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; -FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L; 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; -FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L; 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; -FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; -FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; -FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; -FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L; 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; -FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; -FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; -FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; -FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L; 3141;;;;N;;;;; -FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L; 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; -FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L; 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; -FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L; 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; -FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L; 3145;;;;N;;;;; -FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L; 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; -FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L; 3147;;;;N;;;;; -FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L; 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; -FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L; 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; -FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L; 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; -FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L; 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; -FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L; 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; -FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L; 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; -FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L; 314E;;;;N;;;;; -FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L; 314F;;;;N;;;;; -FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L; 3150;;;;N;;;;; -FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L; 3151;;;;N;;;;; -FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L; 3152;;;;N;;;;; -FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L; 3153;;;;N;;;;; -FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L; 3154;;;;N;;;;; -FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L; 3155;;;;N;;;;; -FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L; 3156;;;;N;;;;; -FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L; 3157;;;;N;;;;; -FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L; 3158;;;;N;;;;; -FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L; 3159;;;;N;;;;; -FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L; 315A;;;;N;;;;; -FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L; 315B;;;;N;;;;; -FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L; 315C;;;;N;;;;; -FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L; 315D;;;;N;;;;; -FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L; 315E;;;;N;;;;; -FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L; 315F;;;;N;;;;; -FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L; 3160;;;;N;;;;; -FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L; 3161;;;;N;;;;; -FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L; 3162;;;;N;;;;; -FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L; 3163;;;;N;;;;; -FFE0;FULLWIDTH CENT SIGN;Sc;0;ET; 00A2;;;;N;;;;; -FFE1;FULLWIDTH POUND SIGN;Sc;0;ET; 00A3;;;;N;;;;; -FFE2;FULLWIDTH NOT SIGN;Sm;0;ON; 00AC;;;;N;;;;; -FFE3;FULLWIDTH MACRON;Sk;0;ON; 00AF;;;;N;FULLWIDTH SPACING MACRON;;;; -FFE4;FULLWIDTH BROKEN BAR;So;0;ON; 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; -FFE5;FULLWIDTH YEN SIGN;Sc;0;ET; 00A5;;;;N;;;;; -FFE6;FULLWIDTH WON SIGN;Sc;0;ET; 20A9;;;;N;;;;; -FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON; 2502;;;;N;;;;; -FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON; 2190;;;;N;;;;; -FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON; 2191;;;;N;;;;; -FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON; 2192;;;;N;;;;; -FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON; 2193;;;;N;;;;; -FFED;HALFWIDTH BLACK SQUARE;So;0;ON; 25A0;;;;N;;;;; -FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON; 25CB;;;;N;;;;; -FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; -FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; -FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; -FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; -10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; -10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; -10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; -10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; -10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; -10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; -10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; -10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; -10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; -10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; -1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; -1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; -1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; -1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; -1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; -10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; -10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; -10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; -10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; -10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; -10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; -10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; -10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; -10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; -10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; -1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; -1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; -1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; -1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; -1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; -1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; -10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; -10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; -10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; -10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; -10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; -10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; -10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; -10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; -10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; -1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; -1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; -1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; -1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; -1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; -1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; -10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; -10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; -10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; -10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; -10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; -10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; -10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; -10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; -10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; -10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; -1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; -1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; -1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; -1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; -10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; -10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; -10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; -10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; -10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; -10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; -10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; -10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; -10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; -10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; -1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; -1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; -1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; -1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; -10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; -10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; -10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; -10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; -10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; -10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; -10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; -10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; -10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; -10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; -1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; -1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; -1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; -1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; -10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; -10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; -10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; -10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; -10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; -10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; -10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; -10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; -10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; -10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; -1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; -1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; -1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; -1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; -1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; -1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; -10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; -10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; -10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; -10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; -10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; -10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; -10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; -10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; -10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; -10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; -1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; -1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; -1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; -1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; -1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; -1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; -100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; -100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; -100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; -100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; -100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; -100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; -100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; -100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; -100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; -100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; -100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; -100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; -100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; -100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; -100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; -100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; -100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; -100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; -100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; -100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; -100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; -100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; -100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; -100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; -100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; -100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; -100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; -100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; -100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; -100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; -100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; -100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; -100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; -100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; -100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; -100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; -100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; -100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; -100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; -100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; -100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; -100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;;;; -100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; -100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;;;; -100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; -100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; -100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; -100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; -100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; -100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; -100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; -100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; -100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; -100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; -100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; -100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; -100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; -100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; -100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; -100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; -100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; -100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; -100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; -100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; -100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; -100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; -100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; -100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; -100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; -100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; -100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; -100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; -100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; -100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; -100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; -100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; -100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; -100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; -100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; -100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; -100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; -100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; -100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; -100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; -100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; -100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; -100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; -100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; -100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; -100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; -100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; -10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; -10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; -10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; -10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; -10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; -10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; -1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; -1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; -1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; -1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; -1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; -1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; -10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; -10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; -10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; -10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; -10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; -10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; -10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; -10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; -10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; -10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; -1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; -1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; -1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; -1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; -1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; -1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; -10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; -10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; -10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; -10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; -10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; -10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; -10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; -10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; -10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; -10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; -1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; -1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; -1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; -1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; -1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; -1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; -10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; -10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; -10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; -10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; -10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; -10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; -10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; -1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; -1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; -1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; -1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; -10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; -10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; -10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; -10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; -10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; -10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; -10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; -10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; -1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; -1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; -1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; -1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; -1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; -1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; -10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; -10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; -10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; -10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; -10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; -10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; -10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; -10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; -10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; -10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; -1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; -1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; -1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; -1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; -10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; -10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; -10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; -10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; -10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; -10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; -10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; -1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; -1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; -1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; -10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; -10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; -10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; -10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; -10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; -10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; -10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; -10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; -10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; -1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; -1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; -1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; -1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; -1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; -10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; -10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; -10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; -10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; -10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; -10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; -10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; -10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; -10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; -10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; -1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; -10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;; -10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;; -10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;; -10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;; -10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;; -10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;; -10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;; -10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;; -10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;; -10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;; -1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;; -1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;; -101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;; -101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;; -101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;; -101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;; -101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;; -101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;; -101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;; -101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;; -101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;; -101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;; -101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;; -101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;; -101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;; -101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;; -101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;; -101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;; -101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;; -101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;; -101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;; -101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;; -101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;; -101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;; -101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;; -101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;; -101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;; -101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;; -101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;; -101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;; -101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;; -101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;; -101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;; -101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;; -101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;; -101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;; -101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;; -101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;; -101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;; -101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;; -101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;; -101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;; -101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;; -101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;; -101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;; -101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;; -101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;; -101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;; -10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;; -10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;; -10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;; -10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;; -10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;; -10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;; -10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;; -10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;; -10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;; -10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;; -1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;; -1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;; -1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;; -1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;; -1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;; -1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;; -10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;; -10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;; -10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;; -10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;; -10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;; -10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;; -10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;; -10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;; -10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;; -10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;; -1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;; -1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;; -1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;; -102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;; -102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;; -102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;; -102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;; -102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;; -102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;; -102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;; -102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;; -102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;; -102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;; -102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;; -102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;; -102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;; -102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;; -102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;; -102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;; -102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;; -102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;; -102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;; -102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;; -102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;; -102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;; -102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;; -102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;; -102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;; -102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;; -102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;; -102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;; -102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;; -102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;; -102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;; -102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;; -102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;; -102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;; -102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;; -102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;; -102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;; -102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;; -102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;; -102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;; -102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;; -102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;; -102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;; -102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;; -102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;; -102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;; -102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;; -102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;; -102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;N;;;;; -10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; -10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; -10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; -10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; -10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; -10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; -10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; -10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; -10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; -10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; -1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; -1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; -1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; -1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; -1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; -1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;;;; -10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; -10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; -10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; -10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; -10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; -10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; -10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; -10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;;;; -10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; -10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; -1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; -1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;;;; -1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;;;; -1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;;;; -1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;;;; -10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; -10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; -10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; -10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; -10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; -10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; -10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; -10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; -10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; -10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; -10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; -10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; -10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; -10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; -1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; -1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; -1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; -1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; -1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; -1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; -10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; -10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;; -10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; -10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; -10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; -10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; -10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; -10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; -10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; -10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; -1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; -10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; -10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; -10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; -10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; -10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; -10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; -10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; -10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; -10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; -10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; -1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; -1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; -1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; -1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; -1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; -1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; -10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; -10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; -10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; -10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; -10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; -10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; -10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; -10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; -10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; -10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; -1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; -1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; -1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; -1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; -1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; -103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; -103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; -103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; -103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; -103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; -103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; -103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; -103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; -103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; -103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; -103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; -103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; -103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; -103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; -103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; -103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; -103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; -103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; -103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; -103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; -103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; -103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; -103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; -103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; -103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; -103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; -103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; -103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; -103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; -103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; -103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; -103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; -103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; -103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; -103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; -103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; -103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; -103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; -103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; -103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; -103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; -103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; -103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; -103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; -103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; -103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;; -103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;; -103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;; -103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;; -103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;; -10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; -10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; -10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; -10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; -10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; -10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; -10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; -10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; -10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; -10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; -1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; -1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; -1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; -1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; -1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; -1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; -10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; -10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; -10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; -10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; -10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; -10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; -10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; -10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; -10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; -10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; -1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; -1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; -1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; -1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; -1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; -1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; -10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; -10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; -10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; -10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; -10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; -10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; -10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; -10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; -10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 -10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 -1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 -1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 -1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 -1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 -1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 -1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 -10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 -10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 -10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A -10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B -10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C -10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D -10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E -10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F -10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 -10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 -1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 -1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 -1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 -1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 -1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 -1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 -10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 -10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 -10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A -10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B -10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C -10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D -10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E -10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F -10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 -10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 -1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 -1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 -1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 -1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 -1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 -1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 -10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; -10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; -10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; -10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; -10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; -10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; -10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; -10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; -10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; -10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; -1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; -1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; -1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; -1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; -1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; -1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; -10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; -10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; -10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; -10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; -10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; -10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; -10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; -10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; -10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; -10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; -1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; -1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; -1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; -1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; -1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; -1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; -10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; -10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; -10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; -10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; -10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; -10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; -10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; -10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; -10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; -10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; -1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; -1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; -1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; -1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; -1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; -1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; -10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; -10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; -10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; -10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; -10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; -10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; -10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; -10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; -10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; -10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; -1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; -1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; -1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; -1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; -1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; -1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; -10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; -10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; -10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; -10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; -10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; -10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; -10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; -10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; -10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; -10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; -1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; -1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; -1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; -1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; -104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; -104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; -104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; -104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; -104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; -104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; -104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; -104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; -104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; -104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; -10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; -10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; -10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; -10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; -10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; -10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; -10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; -1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; -1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; -1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; -1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; -1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; -1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; -10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; -10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; -10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; -10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; -10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; -10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; -10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; -10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; -10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; -10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; -1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; -1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; -1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; -1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; -1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; -1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; -10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; -10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; -10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; -10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; -10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; -10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; -10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; -10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; -10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; -10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; -1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; -1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; -1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; -1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; -1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; -1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; -10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; -10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; -10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; -10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; -10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; -10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; -10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; -10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; -1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; -1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; -10840;IMPERIAL ARAMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;; -10841;IMPERIAL ARAMAIC LETTER BETH;Lo;0;R;;;;;N;;;;; -10842;IMPERIAL ARAMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10843;IMPERIAL ARAMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;; -10844;IMPERIAL ARAMAIC LETTER HE;Lo;0;R;;;;;N;;;;; -10845;IMPERIAL ARAMAIC LETTER WAW;Lo;0;R;;;;;N;;;;; -10846;IMPERIAL ARAMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -10847;IMPERIAL ARAMAIC LETTER HETH;Lo;0;R;;;;;N;;;;; -10848;IMPERIAL ARAMAIC LETTER TETH;Lo;0;R;;;;;N;;;;; -10849;IMPERIAL ARAMAIC LETTER YODH;Lo;0;R;;;;;N;;;;; -1084A;IMPERIAL ARAMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;; -1084B;IMPERIAL ARAMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -1084C;IMPERIAL ARAMAIC LETTER MEM;Lo;0;R;;;;;N;;;;; -1084D;IMPERIAL ARAMAIC LETTER NUN;Lo;0;R;;;;;N;;;;; -1084E;IMPERIAL ARAMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -1084F;IMPERIAL ARAMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;; -10850;IMPERIAL ARAMAIC LETTER PE;Lo;0;R;;;;;N;;;;; -10851;IMPERIAL ARAMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;; -10852;IMPERIAL ARAMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;; -10853;IMPERIAL ARAMAIC LETTER RESH;Lo;0;R;;;;;N;;;;; -10854;IMPERIAL ARAMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;; -10855;IMPERIAL ARAMAIC LETTER TAW;Lo;0;R;;;;;N;;;;; -10857;IMPERIAL ARAMAIC SECTION SIGN;Po;0;R;;;;;N;;;;; -10858;IMPERIAL ARAMAIC NUMBER ONE;No;0;R;;;;1;N;;;;; -10859;IMPERIAL ARAMAIC NUMBER TWO;No;0;R;;;;2;N;;;;; -1085A;IMPERIAL ARAMAIC NUMBER THREE;No;0;R;;;;3;N;;;;; -1085B;IMPERIAL ARAMAIC NUMBER TEN;No;0;R;;;;10;N;;;;; -1085C;IMPERIAL ARAMAIC NUMBER TWENTY;No;0;R;;;;20;N;;;;; -1085D;IMPERIAL ARAMAIC NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -1085E;IMPERIAL ARAMAIC NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -1085F;IMPERIAL ARAMAIC NUMBER TEN THOUSAND;No;0;R;;;;10000;N;;;;; -10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; -10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; -10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; -10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;; -10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;; -10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;; -10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;; -10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;; -10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;; -10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;; -1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;; -1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;; -1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;; -1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;; -1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;; -1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;; -10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;; -10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;; -10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;; -10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;; -10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; -10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;; -10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;; -10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;; -10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -1091A;PHOENICIAN NUMBER TWO;No;0;R;;;;2;N;;;;; -1091B;PHOENICIAN NUMBER THREE;No;0;R;;;;3;N;;;;; -1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;; -10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;; -10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;; -10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;; -10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;; -10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;; -10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;; -10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;; -10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;; -10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;; -10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;; -1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;; -1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;; -1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;; -1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;; -1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;; -1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;; -10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;; -10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;; -10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;; -10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;; -10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;; -10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;; -10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;; -10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;; -10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;; -10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;; -1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;N;;;;; -10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; -10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; -10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; -10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; -10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; -10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; -10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; -10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; -10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; -10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; -10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; -10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; -10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; -10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; -10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; -10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; -10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; -10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; -10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; -10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; -10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; -10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; -10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; -10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; -10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; -10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; -10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; -10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; -10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; -10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; -10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; -10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; -10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; -10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; -10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; -10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; -10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; -10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; -10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; -10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; -10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; -10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; -10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; -10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; -10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; -10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; -10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; -10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; -10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; -10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; -10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; -10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; -10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; -10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; -10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; -10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; -10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; -10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; -10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; -10A60;OLD SOUTH ARABIAN LETTER HE;Lo;0;R;;;;;N;;;;; -10A61;OLD SOUTH ARABIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -10A62;OLD SOUTH ARABIAN LETTER HETH;Lo;0;R;;;;;N;;;;; -10A63;OLD SOUTH ARABIAN LETTER MEM;Lo;0;R;;;;;N;;;;; -10A64;OLD SOUTH ARABIAN LETTER QOPH;Lo;0;R;;;;;N;;;;; -10A65;OLD SOUTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;; -10A66;OLD SOUTH ARABIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; -10A67;OLD SOUTH ARABIAN LETTER RESH;Lo;0;R;;;;;N;;;;; -10A68;OLD SOUTH ARABIAN LETTER BETH;Lo;0;R;;;;;N;;;;; -10A69;OLD SOUTH ARABIAN LETTER TAW;Lo;0;R;;;;;N;;;;; -10A6A;OLD SOUTH ARABIAN LETTER SAT;Lo;0;R;;;;;N;;;;; -10A6B;OLD SOUTH ARABIAN LETTER KAPH;Lo;0;R;;;;;N;;;;; -10A6C;OLD SOUTH ARABIAN LETTER NUN;Lo;0;R;;;;;N;;;;; -10A6D;OLD SOUTH ARABIAN LETTER KHETH;Lo;0;R;;;;;N;;;;; -10A6E;OLD SOUTH ARABIAN LETTER SADHE;Lo;0;R;;;;;N;;;;; -10A6F;OLD SOUTH ARABIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -10A70;OLD SOUTH ARABIAN LETTER FE;Lo;0;R;;;;;N;;;;; -10A71;OLD SOUTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;; -10A72;OLD SOUTH ARABIAN LETTER AYN;Lo;0;R;;;;;N;;;;; -10A73;OLD SOUTH ARABIAN LETTER DHADHE;Lo;0;R;;;;;N;;;;; -10A74;OLD SOUTH ARABIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10A75;OLD SOUTH ARABIAN LETTER DALETH;Lo;0;R;;;;;N;;;;; -10A76;OLD SOUTH ARABIAN LETTER GHAYN;Lo;0;R;;;;;N;;;;; -10A77;OLD SOUTH ARABIAN LETTER TETH;Lo;0;R;;;;;N;;;;; -10A78;OLD SOUTH ARABIAN LETTER ZAYN;Lo;0;R;;;;;N;;;;; -10A79;OLD SOUTH ARABIAN LETTER DHALETH;Lo;0;R;;;;;N;;;;; -10A7A;OLD SOUTH ARABIAN LETTER YODH;Lo;0;R;;;;;N;;;;; -10A7B;OLD SOUTH ARABIAN LETTER THAW;Lo;0;R;;;;;N;;;;; -10A7C;OLD SOUTH ARABIAN LETTER THETH;Lo;0;R;;;;;N;;;;; -10A7D;OLD SOUTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;; -10A7E;OLD SOUTH ARABIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;; -10A7F;OLD SOUTH ARABIAN NUMERIC INDICATOR;Po;0;R;;;;;N;;;;; -10B00;AVESTAN LETTER A;Lo;0;R;;;;;N;;;;; -10B01;AVESTAN LETTER AA;Lo;0;R;;;;;N;;;;; -10B02;AVESTAN LETTER AO;Lo;0;R;;;;;N;;;;; -10B03;AVESTAN LETTER AAO;Lo;0;R;;;;;N;;;;; -10B04;AVESTAN LETTER AN;Lo;0;R;;;;;N;;;;; -10B05;AVESTAN LETTER AAN;Lo;0;R;;;;;N;;;;; -10B06;AVESTAN LETTER AE;Lo;0;R;;;;;N;;;;; -10B07;AVESTAN LETTER AEE;Lo;0;R;;;;;N;;;;; -10B08;AVESTAN LETTER E;Lo;0;R;;;;;N;;;;; -10B09;AVESTAN LETTER EE;Lo;0;R;;;;;N;;;;; -10B0A;AVESTAN LETTER O;Lo;0;R;;;;;N;;;;; -10B0B;AVESTAN LETTER OO;Lo;0;R;;;;;N;;;;; -10B0C;AVESTAN LETTER I;Lo;0;R;;;;;N;;;;; -10B0D;AVESTAN LETTER II;Lo;0;R;;;;;N;;;;; -10B0E;AVESTAN LETTER U;Lo;0;R;;;;;N;;;;; -10B0F;AVESTAN LETTER UU;Lo;0;R;;;;;N;;;;; -10B10;AVESTAN LETTER KE;Lo;0;R;;;;;N;;;;; -10B11;AVESTAN LETTER XE;Lo;0;R;;;;;N;;;;; -10B12;AVESTAN LETTER XYE;Lo;0;R;;;;;N;;;;; -10B13;AVESTAN LETTER XVE;Lo;0;R;;;;;N;;;;; -10B14;AVESTAN LETTER GE;Lo;0;R;;;;;N;;;;; -10B15;AVESTAN LETTER GGE;Lo;0;R;;;;;N;;;;; -10B16;AVESTAN LETTER GHE;Lo;0;R;;;;;N;;;;; -10B17;AVESTAN LETTER CE;Lo;0;R;;;;;N;;;;; -10B18;AVESTAN LETTER JE;Lo;0;R;;;;;N;;;;; -10B19;AVESTAN LETTER TE;Lo;0;R;;;;;N;;;;; -10B1A;AVESTAN LETTER THE;Lo;0;R;;;;;N;;;;; -10B1B;AVESTAN LETTER DE;Lo;0;R;;;;;N;;;;; -10B1C;AVESTAN LETTER DHE;Lo;0;R;;;;;N;;;;; -10B1D;AVESTAN LETTER TTE;Lo;0;R;;;;;N;;;;; -10B1E;AVESTAN LETTER PE;Lo;0;R;;;;;N;;;;; -10B1F;AVESTAN LETTER FE;Lo;0;R;;;;;N;;;;; -10B20;AVESTAN LETTER BE;Lo;0;R;;;;;N;;;;; -10B21;AVESTAN LETTER BHE;Lo;0;R;;;;;N;;;;; -10B22;AVESTAN LETTER NGE;Lo;0;R;;;;;N;;;;; -10B23;AVESTAN LETTER NGYE;Lo;0;R;;;;;N;;;;; -10B24;AVESTAN LETTER NGVE;Lo;0;R;;;;;N;;;;; -10B25;AVESTAN LETTER NE;Lo;0;R;;;;;N;;;;; -10B26;AVESTAN LETTER NYE;Lo;0;R;;;;;N;;;;; -10B27;AVESTAN LETTER NNE;Lo;0;R;;;;;N;;;;; -10B28;AVESTAN LETTER ME;Lo;0;R;;;;;N;;;;; -10B29;AVESTAN LETTER HME;Lo;0;R;;;;;N;;;;; -10B2A;AVESTAN LETTER YYE;Lo;0;R;;;;;N;;;;; -10B2B;AVESTAN LETTER YE;Lo;0;R;;;;;N;;;;; -10B2C;AVESTAN LETTER VE;Lo;0;R;;;;;N;;;;; -10B2D;AVESTAN LETTER RE;Lo;0;R;;;;;N;;;;; -10B2E;AVESTAN LETTER LE;Lo;0;R;;;;;N;;;;; -10B2F;AVESTAN LETTER SE;Lo;0;R;;;;;N;;;;; -10B30;AVESTAN LETTER ZE;Lo;0;R;;;;;N;;;;; -10B31;AVESTAN LETTER SHE;Lo;0;R;;;;;N;;;;; -10B32;AVESTAN LETTER ZHE;Lo;0;R;;;;;N;;;;; -10B33;AVESTAN LETTER SHYE;Lo;0;R;;;;;N;;;;; -10B34;AVESTAN LETTER SSHE;Lo;0;R;;;;;N;;;;; -10B35;AVESTAN LETTER HE;Lo;0;R;;;;;N;;;;; -10B39;AVESTAN ABBREVIATION MARK;Po;0;ON;;;;;N;;;;; -10B3A;TINY TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3B;SMALL TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3C;LARGE TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3D;LARGE ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3E;LARGE TWO RINGS OVER ONE RING PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B3F;LARGE ONE RING OVER TWO RINGS PUNCTUATION;Po;0;ON;;;;;N;;;;; -10B40;INSCRIPTIONAL PARTHIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;; -10B41;INSCRIPTIONAL PARTHIAN LETTER BETH;Lo;0;R;;;;;N;;;;; -10B42;INSCRIPTIONAL PARTHIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10B43;INSCRIPTIONAL PARTHIAN LETTER DALETH;Lo;0;R;;;;;N;;;;; -10B44;INSCRIPTIONAL PARTHIAN LETTER HE;Lo;0;R;;;;;N;;;;; -10B45;INSCRIPTIONAL PARTHIAN LETTER WAW;Lo;0;R;;;;;N;;;;; -10B46;INSCRIPTIONAL PARTHIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -10B47;INSCRIPTIONAL PARTHIAN LETTER HETH;Lo;0;R;;;;;N;;;;; -10B48;INSCRIPTIONAL PARTHIAN LETTER TETH;Lo;0;R;;;;;N;;;;; -10B49;INSCRIPTIONAL PARTHIAN LETTER YODH;Lo;0;R;;;;;N;;;;; -10B4A;INSCRIPTIONAL PARTHIAN LETTER KAPH;Lo;0;R;;;;;N;;;;; -10B4B;INSCRIPTIONAL PARTHIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -10B4C;INSCRIPTIONAL PARTHIAN LETTER MEM;Lo;0;R;;;;;N;;;;; -10B4D;INSCRIPTIONAL PARTHIAN LETTER NUN;Lo;0;R;;;;;N;;;;; -10B4E;INSCRIPTIONAL PARTHIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -10B4F;INSCRIPTIONAL PARTHIAN LETTER AYIN;Lo;0;R;;;;;N;;;;; -10B50;INSCRIPTIONAL PARTHIAN LETTER PE;Lo;0;R;;;;;N;;;;; -10B51;INSCRIPTIONAL PARTHIAN LETTER SADHE;Lo;0;R;;;;;N;;;;; -10B52;INSCRIPTIONAL PARTHIAN LETTER QOPH;Lo;0;R;;;;;N;;;;; -10B53;INSCRIPTIONAL PARTHIAN LETTER RESH;Lo;0;R;;;;;N;;;;; -10B54;INSCRIPTIONAL PARTHIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; -10B55;INSCRIPTIONAL PARTHIAN LETTER TAW;Lo;0;R;;;;;N;;;;; -10B58;INSCRIPTIONAL PARTHIAN NUMBER ONE;No;0;R;;;;1;N;;;;; -10B59;INSCRIPTIONAL PARTHIAN NUMBER TWO;No;0;R;;;;2;N;;;;; -10B5A;INSCRIPTIONAL PARTHIAN NUMBER THREE;No;0;R;;;;3;N;;;;; -10B5B;INSCRIPTIONAL PARTHIAN NUMBER FOUR;No;0;R;;;;4;N;;;;; -10B5C;INSCRIPTIONAL PARTHIAN NUMBER TEN;No;0;R;;;;10;N;;;;; -10B5D;INSCRIPTIONAL PARTHIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10B5E;INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10B5F;INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10B60;INSCRIPTIONAL PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;; -10B61;INSCRIPTIONAL PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;; -10B62;INSCRIPTIONAL PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;; -10B63;INSCRIPTIONAL PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;; -10B64;INSCRIPTIONAL PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;; -10B65;INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;; -10B66;INSCRIPTIONAL PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;; -10B67;INSCRIPTIONAL PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;; -10B68;INSCRIPTIONAL PAHLAVI LETTER TETH;Lo;0;R;;;;;N;;;;; -10B69;INSCRIPTIONAL PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;; -10B6A;INSCRIPTIONAL PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;; -10B6B;INSCRIPTIONAL PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;; -10B6C;INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;; -10B6D;INSCRIPTIONAL PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;; -10B6E;INSCRIPTIONAL PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;; -10B6F;INSCRIPTIONAL PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;; -10B70;INSCRIPTIONAL PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;; -10B71;INSCRIPTIONAL PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;; -10B72;INSCRIPTIONAL PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;; -10B78;INSCRIPTIONAL PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;; -10B79;INSCRIPTIONAL PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;; -10B7A;INSCRIPTIONAL PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;; -10B7B;INSCRIPTIONAL PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;; -10B7C;INSCRIPTIONAL PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;; -10B7D;INSCRIPTIONAL PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;; -10B7E;INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; -10B7F;INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; -10C00;OLD TURKIC LETTER ORKHON A;Lo;0;R;;;;;N;;;;; -10C01;OLD TURKIC LETTER YENISEI A;Lo;0;R;;;;;N;;;;; -10C02;OLD TURKIC LETTER YENISEI AE;Lo;0;R;;;;;N;;;;; -10C03;OLD TURKIC LETTER ORKHON I;Lo;0;R;;;;;N;;;;; -10C04;OLD TURKIC LETTER YENISEI I;Lo;0;R;;;;;N;;;;; -10C05;OLD TURKIC LETTER YENISEI E;Lo;0;R;;;;;N;;;;; -10C06;OLD TURKIC LETTER ORKHON O;Lo;0;R;;;;;N;;;;; -10C07;OLD TURKIC LETTER ORKHON OE;Lo;0;R;;;;;N;;;;; -10C08;OLD TURKIC LETTER YENISEI OE;Lo;0;R;;;;;N;;;;; -10C09;OLD TURKIC LETTER ORKHON AB;Lo;0;R;;;;;N;;;;; -10C0A;OLD TURKIC LETTER YENISEI AB;Lo;0;R;;;;;N;;;;; -10C0B;OLD TURKIC LETTER ORKHON AEB;Lo;0;R;;;;;N;;;;; -10C0C;OLD TURKIC LETTER YENISEI AEB;Lo;0;R;;;;;N;;;;; -10C0D;OLD TURKIC LETTER ORKHON AG;Lo;0;R;;;;;N;;;;; -10C0E;OLD TURKIC LETTER YENISEI AG;Lo;0;R;;;;;N;;;;; -10C0F;OLD TURKIC LETTER ORKHON AEG;Lo;0;R;;;;;N;;;;; -10C10;OLD TURKIC LETTER YENISEI AEG;Lo;0;R;;;;;N;;;;; -10C11;OLD TURKIC LETTER ORKHON AD;Lo;0;R;;;;;N;;;;; -10C12;OLD TURKIC LETTER YENISEI AD;Lo;0;R;;;;;N;;;;; -10C13;OLD TURKIC LETTER ORKHON AED;Lo;0;R;;;;;N;;;;; -10C14;OLD TURKIC LETTER ORKHON EZ;Lo;0;R;;;;;N;;;;; -10C15;OLD TURKIC LETTER YENISEI EZ;Lo;0;R;;;;;N;;;;; -10C16;OLD TURKIC LETTER ORKHON AY;Lo;0;R;;;;;N;;;;; -10C17;OLD TURKIC LETTER YENISEI AY;Lo;0;R;;;;;N;;;;; -10C18;OLD TURKIC LETTER ORKHON AEY;Lo;0;R;;;;;N;;;;; -10C19;OLD TURKIC LETTER YENISEI AEY;Lo;0;R;;;;;N;;;;; -10C1A;OLD TURKIC LETTER ORKHON AEK;Lo;0;R;;;;;N;;;;; -10C1B;OLD TURKIC LETTER YENISEI AEK;Lo;0;R;;;;;N;;;;; -10C1C;OLD TURKIC LETTER ORKHON OEK;Lo;0;R;;;;;N;;;;; -10C1D;OLD TURKIC LETTER YENISEI OEK;Lo;0;R;;;;;N;;;;; -10C1E;OLD TURKIC LETTER ORKHON AL;Lo;0;R;;;;;N;;;;; -10C1F;OLD TURKIC LETTER YENISEI AL;Lo;0;R;;;;;N;;;;; -10C20;OLD TURKIC LETTER ORKHON AEL;Lo;0;R;;;;;N;;;;; -10C21;OLD TURKIC LETTER ORKHON ELT;Lo;0;R;;;;;N;;;;; -10C22;OLD TURKIC LETTER ORKHON EM;Lo;0;R;;;;;N;;;;; -10C23;OLD TURKIC LETTER ORKHON AN;Lo;0;R;;;;;N;;;;; -10C24;OLD TURKIC LETTER ORKHON AEN;Lo;0;R;;;;;N;;;;; -10C25;OLD TURKIC LETTER YENISEI AEN;Lo;0;R;;;;;N;;;;; -10C26;OLD TURKIC LETTER ORKHON ENT;Lo;0;R;;;;;N;;;;; -10C27;OLD TURKIC LETTER YENISEI ENT;Lo;0;R;;;;;N;;;;; -10C28;OLD TURKIC LETTER ORKHON ENC;Lo;0;R;;;;;N;;;;; -10C29;OLD TURKIC LETTER YENISEI ENC;Lo;0;R;;;;;N;;;;; -10C2A;OLD TURKIC LETTER ORKHON ENY;Lo;0;R;;;;;N;;;;; -10C2B;OLD TURKIC LETTER YENISEI ENY;Lo;0;R;;;;;N;;;;; -10C2C;OLD TURKIC LETTER YENISEI ANG;Lo;0;R;;;;;N;;;;; -10C2D;OLD TURKIC LETTER ORKHON ENG;Lo;0;R;;;;;N;;;;; -10C2E;OLD TURKIC LETTER YENISEI AENG;Lo;0;R;;;;;N;;;;; -10C2F;OLD TURKIC LETTER ORKHON EP;Lo;0;R;;;;;N;;;;; -10C30;OLD TURKIC LETTER ORKHON OP;Lo;0;R;;;;;N;;;;; -10C31;OLD TURKIC LETTER ORKHON IC;Lo;0;R;;;;;N;;;;; -10C32;OLD TURKIC LETTER ORKHON EC;Lo;0;R;;;;;N;;;;; -10C33;OLD TURKIC LETTER YENISEI EC;Lo;0;R;;;;;N;;;;; -10C34;OLD TURKIC LETTER ORKHON AQ;Lo;0;R;;;;;N;;;;; -10C35;OLD TURKIC LETTER YENISEI AQ;Lo;0;R;;;;;N;;;;; -10C36;OLD TURKIC LETTER ORKHON IQ;Lo;0;R;;;;;N;;;;; -10C37;OLD TURKIC LETTER YENISEI IQ;Lo;0;R;;;;;N;;;;; -10C38;OLD TURKIC LETTER ORKHON OQ;Lo;0;R;;;;;N;;;;; -10C39;OLD TURKIC LETTER YENISEI OQ;Lo;0;R;;;;;N;;;;; -10C3A;OLD TURKIC LETTER ORKHON AR;Lo;0;R;;;;;N;;;;; -10C3B;OLD TURKIC LETTER YENISEI AR;Lo;0;R;;;;;N;;;;; -10C3C;OLD TURKIC LETTER ORKHON AER;Lo;0;R;;;;;N;;;;; -10C3D;OLD TURKIC LETTER ORKHON AS;Lo;0;R;;;;;N;;;;; -10C3E;OLD TURKIC LETTER ORKHON AES;Lo;0;R;;;;;N;;;;; -10C3F;OLD TURKIC LETTER ORKHON ASH;Lo;0;R;;;;;N;;;;; -10C40;OLD TURKIC LETTER YENISEI ASH;Lo;0;R;;;;;N;;;;; -10C41;OLD TURKIC LETTER ORKHON ESH;Lo;0;R;;;;;N;;;;; -10C42;OLD TURKIC LETTER YENISEI ESH;Lo;0;R;;;;;N;;;;; -10C43;OLD TURKIC LETTER ORKHON AT;Lo;0;R;;;;;N;;;;; -10C44;OLD TURKIC LETTER YENISEI AT;Lo;0;R;;;;;N;;;;; -10C45;OLD TURKIC LETTER ORKHON AET;Lo;0;R;;;;;N;;;;; -10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;; -10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;; -10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;; -10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;; -10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;; -10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;; -10E63;RUMI DIGIT FOUR;No;0;AN;;;4;4;N;;;;; -10E64;RUMI DIGIT FIVE;No;0;AN;;;5;5;N;;;;; -10E65;RUMI DIGIT SIX;No;0;AN;;;6;6;N;;;;; -10E66;RUMI DIGIT SEVEN;No;0;AN;;;7;7;N;;;;; -10E67;RUMI DIGIT EIGHT;No;0;AN;;;8;8;N;;;;; -10E68;RUMI DIGIT NINE;No;0;AN;;;9;9;N;;;;; -10E69;RUMI NUMBER TEN;No;0;AN;;;;10;N;;;;; -10E6A;RUMI NUMBER TWENTY;No;0;AN;;;;20;N;;;;; -10E6B;RUMI NUMBER THIRTY;No;0;AN;;;;30;N;;;;; -10E6C;RUMI NUMBER FORTY;No;0;AN;;;;40;N;;;;; -10E6D;RUMI NUMBER FIFTY;No;0;AN;;;;50;N;;;;; -10E6E;RUMI NUMBER SIXTY;No;0;AN;;;;60;N;;;;; -10E6F;RUMI NUMBER SEVENTY;No;0;AN;;;;70;N;;;;; -10E70;RUMI NUMBER EIGHTY;No;0;AN;;;;80;N;;;;; -10E71;RUMI NUMBER NINETY;No;0;AN;;;;90;N;;;;; -10E72;RUMI NUMBER ONE HUNDRED;No;0;AN;;;;100;N;;;;; -10E73;RUMI NUMBER TWO HUNDRED;No;0;AN;;;;200;N;;;;; -10E74;RUMI NUMBER THREE HUNDRED;No;0;AN;;;;300;N;;;;; -10E75;RUMI NUMBER FOUR HUNDRED;No;0;AN;;;;400;N;;;;; -10E76;RUMI NUMBER FIVE HUNDRED;No;0;AN;;;;500;N;;;;; -10E77;RUMI NUMBER SIX HUNDRED;No;0;AN;;;;600;N;;;;; -10E78;RUMI NUMBER SEVEN HUNDRED;No;0;AN;;;;700;N;;;;; -10E79;RUMI NUMBER EIGHT HUNDRED;No;0;AN;;;;800;N;;;;; -10E7A;RUMI NUMBER NINE HUNDRED;No;0;AN;;;;900;N;;;;; -10E7B;RUMI FRACTION ONE HALF;No;0;AN;;;;1/2;N;;;;; -10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;; -10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;; -10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;; -11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; -11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; -11082;KAITHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; -11083;KAITHI LETTER A;Lo;0;L;;;;;N;;;;; -11084;KAITHI LETTER AA;Lo;0;L;;;;;N;;;;; -11085;KAITHI LETTER I;Lo;0;L;;;;;N;;;;; -11086;KAITHI LETTER II;Lo;0;L;;;;;N;;;;; -11087;KAITHI LETTER U;Lo;0;L;;;;;N;;;;; -11088;KAITHI LETTER UU;Lo;0;L;;;;;N;;;;; -11089;KAITHI LETTER E;Lo;0;L;;;;;N;;;;; -1108A;KAITHI LETTER AI;Lo;0;L;;;;;N;;;;; -1108B;KAITHI LETTER O;Lo;0;L;;;;;N;;;;; -1108C;KAITHI LETTER AU;Lo;0;L;;;;;N;;;;; -1108D;KAITHI LETTER KA;Lo;0;L;;;;;N;;;;; -1108E;KAITHI LETTER KHA;Lo;0;L;;;;;N;;;;; -1108F;KAITHI LETTER GA;Lo;0;L;;;;;N;;;;; -11090;KAITHI LETTER GHA;Lo;0;L;;;;;N;;;;; -11091;KAITHI LETTER NGA;Lo;0;L;;;;;N;;;;; -11092;KAITHI LETTER CA;Lo;0;L;;;;;N;;;;; -11093;KAITHI LETTER CHA;Lo;0;L;;;;;N;;;;; -11094;KAITHI LETTER JA;Lo;0;L;;;;;N;;;;; -11095;KAITHI LETTER JHA;Lo;0;L;;;;;N;;;;; -11096;KAITHI LETTER NYA;Lo;0;L;;;;;N;;;;; -11097;KAITHI LETTER TTA;Lo;0;L;;;;;N;;;;; -11098;KAITHI LETTER TTHA;Lo;0;L;;;;;N;;;;; -11099;KAITHI LETTER DDA;Lo;0;L;;;;;N;;;;; -1109A;KAITHI LETTER DDDHA;Lo;0;L;11099 110BA;;;;N;;;;; -1109B;KAITHI LETTER DDHA;Lo;0;L;;;;;N;;;;; -1109C;KAITHI LETTER RHA;Lo;0;L;1109B 110BA;;;;N;;;;; -1109D;KAITHI LETTER NNA;Lo;0;L;;;;;N;;;;; -1109E;KAITHI LETTER TA;Lo;0;L;;;;;N;;;;; -1109F;KAITHI LETTER THA;Lo;0;L;;;;;N;;;;; -110A0;KAITHI LETTER DA;Lo;0;L;;;;;N;;;;; -110A1;KAITHI LETTER DHA;Lo;0;L;;;;;N;;;;; -110A2;KAITHI LETTER NA;Lo;0;L;;;;;N;;;;; -110A3;KAITHI LETTER PA;Lo;0;L;;;;;N;;;;; -110A4;KAITHI LETTER PHA;Lo;0;L;;;;;N;;;;; -110A5;KAITHI LETTER BA;Lo;0;L;;;;;N;;;;; -110A6;KAITHI LETTER BHA;Lo;0;L;;;;;N;;;;; -110A7;KAITHI LETTER MA;Lo;0;L;;;;;N;;;;; -110A8;KAITHI LETTER YA;Lo;0;L;;;;;N;;;;; -110A9;KAITHI LETTER RA;Lo;0;L;;;;;N;;;;; -110AA;KAITHI LETTER LA;Lo;0;L;;;;;N;;;;; -110AB;KAITHI LETTER VA;Lo;0;L;110A5 110BA;;;;N;;;;; -110AC;KAITHI LETTER SHA;Lo;0;L;;;;;N;;;;; -110AD;KAITHI LETTER SSA;Lo;0;L;;;;;N;;;;; -110AE;KAITHI LETTER SA;Lo;0;L;;;;;N;;;;; -110AF;KAITHI LETTER HA;Lo;0;L;;;;;N;;;;; -110B0;KAITHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; -110B1;KAITHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; -110B2;KAITHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; -110B3;KAITHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; -110B4;KAITHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; -110B5;KAITHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; -110B6;KAITHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; -110B7;KAITHI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; -110B8;KAITHI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; -110B9;KAITHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; -110BA;KAITHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; -110BB;KAITHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; -110BC;KAITHI ENUMERATION SIGN;Po;0;L;;;;;N;;;;; -110BD;KAITHI NUMBER SIGN;Cf;0;L;;;;;N;;;;; -110BE;KAITHI SECTION MARK;Po;0;L;;;;;N;;;;; -110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;; -110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;; -110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;; -12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; -12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; -12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; -12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;; -12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;; -12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;; -12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;; -12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;; -12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;; -1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;; -1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;; -1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; -1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;; -1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;; -12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;; -12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;; -12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;; -12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;; -12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;; -12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;; -12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;; -1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;; -1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;; -1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;; -1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;; -1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;; -12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;; -12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;; -12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;; -12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;; -12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;; -12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;; -12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;; -12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;; -12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;; -12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;; -1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;; -1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;; -1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;; -1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;; -1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;; -1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;; -12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;; -12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;; -12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;; -12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;; -12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;; -12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;; -12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;; -12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;; -12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;; -12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; -1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;; -1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;; -1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; -1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; -1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;; -1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;; -12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;; -12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;; -12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;; -12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;; -12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;; -12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;; -12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;; -12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;; -12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;; -12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;; -1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;; -1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;; -1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;; -1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;; -1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;; -12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;; -12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;; -12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;; -12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;; -12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;; -12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;; -12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;; -12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;; -12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;; -12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;; -1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; -1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;; -1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;; -1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;; -1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;; -1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;; -12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;; -12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;; -12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;; -12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;; -12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;; -12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;; -12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;; -12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;; -12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;; -12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; -1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;; -1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;; -1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;; -1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;; -1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;; -1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;; -12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;; -12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;; -12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;; -12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;; -12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;; -12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;; -12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;; -12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;; -12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;; -12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;; -1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;; -1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;; -1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;; -1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;; -1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;; -1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;; -12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;; -12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;; -12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;; -12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;; -12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;; -12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;; -12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;; -12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; -12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;; -12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;; -1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;; -1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;; -1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;; -1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;; -1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;; -1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;; -12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;; -12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;; -12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;; -12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;; -12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;; -12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;; -12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;; -12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;; -12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;; -12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;; -1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;; -1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;; -1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;; -1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;; -1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;; -120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;; -120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;; -120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;; -120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; -120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;; -120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;; -120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; -120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; -120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;; -120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;; -120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;; -120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;; -120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;; -120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;; -120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;; -120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;; -120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;; -120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;; -120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;; -120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;; -120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;; -120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; -120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; -120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; -120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;; -120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;; -120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;; -120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;; -120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;; -120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;; -120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;; -120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;; -120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;; -120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;; -120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;; -120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;; -120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;; -120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;; -120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;; -120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;; -120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;; -120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;; -120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;; -120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;; -120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;; -120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;; -120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;; -120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;; -120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;; -120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;; -120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;; -120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;; -120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;; -120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;; -120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;; -120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;; -120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;; -120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;; -120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;; -120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;; -120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;; -120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;; -120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;; -120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;; -120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;; -120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;; -120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;; -120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;; -120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;; -120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;; -120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;; -120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;; -120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;; -120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;; -120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;; -120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;; -120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;; -120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;; -120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;; -120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;; -120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;; -120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;; -120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;; -120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;; -120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;; -120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;; -12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;; -12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;; -12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;; -12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;; -12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;; -12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;; -12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;; -12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;; -12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;; -12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;; -1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;; -1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; -1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;; -1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;; -1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;; -12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;; -12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;; -12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; -12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;; -12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; -12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;; -12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;; -12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;; -12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;; -12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;; -1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;; -1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;; -1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;; -1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;; -1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;; -12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;; -12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;; -12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;; -12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;; -12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;; -12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;; -12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;; -12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;; -12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;; -12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;; -1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;; -1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;; -1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;; -1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;; -1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;; -1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;; -12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;; -12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;; -12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;; -12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;; -12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;; -12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;; -12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;; -12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;; -12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;; -12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;; -1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;; -1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;; -1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;; -1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;; -1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;; -12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;; -12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;; -12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;; -12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;; -12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;; -12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;; -12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;; -12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;; -12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;; -12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;; -1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;; -1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;; -1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;; -1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;; -1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;; -12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;; -12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;; -12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;; -12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;; -12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;; -12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;; -12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;; -12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;; -12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;; -12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;; -1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;; -1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;; -1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;; -1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;; -1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;; -1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;; -12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;; -12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;; -12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;; -12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;; -12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;; -12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;; -12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;; -12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;; -12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;; -1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; -1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;; -1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;; -1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;; -1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;; -1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;; -12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;; -12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;; -12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;; -12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;; -12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;; -12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;; -12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;; -12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;; -12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;; -12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;; -1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;; -1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;; -1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;; -1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;; -1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;; -1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;; -12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;; -12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;; -12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;; -12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;; -12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;; -12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;; -12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;; -12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;; -12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;; -12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;; -1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;; -1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;; -1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;; -1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;; -1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;; -1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;; -12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;; -12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;; -12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;; -12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;; -12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;; -12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;; -12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;; -12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;; -12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;; -1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;; -1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;; -1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;; -1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;; -121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;; -121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;; -121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;; -121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;; -121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;; -121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;; -121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;; -121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;; -121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;; -121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;; -121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;; -121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;; -121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;; -121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;; -121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;; -121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;; -121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;; -121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;; -121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;; -121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;; -121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;; -121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;; -121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;; -121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;; -121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;; -121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;; -121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; -121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;; -121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; -121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;; -121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;; -121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; -121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;; -121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;; -121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;; -121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;; -121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;; -121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;; -121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;; -121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;; -121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;; -121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;; -121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;; -121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;; -121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;; -121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;; -121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;; -121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;; -121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;; -121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;; -121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;; -121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;; -121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;; -121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;; -121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;; -121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;; -121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;; -121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;; -121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; -121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;; -121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;; -121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;; -121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;; -121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;; -121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;; -121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;; -121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;; -121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;; -121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;; -121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;; -121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;; -121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;; -121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;; -121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;; -121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; -121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;; -121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;; -121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;; -121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;; -121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;; -121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;; -121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;; -121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;; -121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;; -121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;; -121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;; -121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;; -121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;; -121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;; -121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;; -121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;; -121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;; -12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;; -12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;; -12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;; -12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;; -12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;; -12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;; -12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;; -12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;; -12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;; -1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;; -1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; -1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;; -1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;; -1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;; -1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;; -12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;; -12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;; -12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;; -12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;; -12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;; -12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;; -12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;; -12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;; -12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;; -12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;; -1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;; -1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;; -1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;; -1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;; -1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;; -1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;; -12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;; -12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;; -12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;; -12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;; -12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;; -12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;; -12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;; -12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;; -12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;; -12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;; -1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;; -1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;; -1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;; -1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;; -1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;; -1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;; -12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;; -12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;; -12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;; -12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;; -12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;; -12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;; -12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;; -12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; -12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;; -12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;; -1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;; -1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;; -1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;; -1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;; -1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;; -1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;; -12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;; -12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;; -12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;; -12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;; -12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;; -12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;; -12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;; -12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;; -12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;; -12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;; -1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;; -1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;; -1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;; -1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;; -1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;; -1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;; -12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; -12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;; -12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;; -12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;; -12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;; -12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;; -12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; -12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;; -12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;; -1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;; -1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;; -1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;; -1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;; -1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;; -12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;; -12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;; -12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;; -12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;; -12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;; -12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;; -12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; -12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; -12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;; -12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;; -1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;; -1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;; -1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;; -1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;; -1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;; -1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;; -12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;; -12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;; -12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;; -12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;; -12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;; -12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;; -12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;; -12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; -12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;; -1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;; -1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;; -1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;; -1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;; -1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;; -1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;; -12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;; -12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;; -12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;; -12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;; -12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;; -12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;; -12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;; -12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;; -12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;; -12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;; -1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;; -1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;; -1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;; -1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;; -1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;; -1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;; -12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;; -12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;; -12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;; -12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;; -12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;; -12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;; -12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;; -12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;; -12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;; -12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;; -1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;; -1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;; -1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;; -1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;; -1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;; -1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;; -122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;; -122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;; -122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;; -122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;; -122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;; -122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;; -122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;; -122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;; -122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;; -122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;; -122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;; -122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;; -122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;; -122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;; -122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;; -122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;; -122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;; -122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;; -122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;; -122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;; -122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;; -122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;; -122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;; -122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;; -122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;; -122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;; -122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;; -122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;; -122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;; -122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;; -122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;; -122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;; -122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;; -122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;; -122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;; -122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;; -122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;; -122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;; -122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;; -122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;; -122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;; -122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;; -122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;; -122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;; -122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; -122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;; -122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;; -122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;; -122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;; -122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;; -122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;; -122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;; -122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;; -122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;; -122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;; -122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;; -122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;; -122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;; -122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;; -122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;; -122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;; -122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;; -122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;; -122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;; -122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;; -122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;; -122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;; -122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;; -122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;; -122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;; -122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;; -122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;; -122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;; -122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;; -122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;; -122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;; -122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;; -122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;; -122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;; -122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;; -122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;; -122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;; -122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;; -122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;; -122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;; -122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;; -122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;; -122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;; -122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;; -122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;; -122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;; -122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;; -122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;; -122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;; -122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;; -12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;; -12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;; -12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;; -12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;; -12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; -12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;; -12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;; -12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;; -12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;; -12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;; -1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;; -1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;; -1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;; -1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;; -1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;; -1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;; -12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;; -12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;; -12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;; -12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;; -12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;; -12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;; -12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;; -12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; -12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;; -12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;; -1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;; -1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;; -1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;; -1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;; -1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;; -1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;; -12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;; -12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;; -12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;; -12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;; -12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;; -12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;; -12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;; -12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;; -12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;; -12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;; -1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;; -1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;; -1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; -1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; -1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;; -1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;; -12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;; -12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;; -12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; -12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;; -12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;; -12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;; -12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;; -12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;; -12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;; -12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;; -1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;; -1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;; -1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;; -1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;; -1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; -1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;; -12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;; -12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;; -12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;; -12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;; -12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;; -12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;; -12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;; -12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;; -12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;; -12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;; -1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;; -1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;; -1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;; -1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;; -1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;; -1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;; -12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;; -12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;; -12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;; -12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;; -12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;; -12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;; -12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;; -12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;; -12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;; -12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;; -1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;; -1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;; -1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;; -1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;; -1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;; -1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;; -12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;; -12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;; -12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;; -12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;; -12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;; -12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;; -12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;; -12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;; -12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;; -12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;; -1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;; -1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;; -1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;; -1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;; -1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;; -12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; -12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; -12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; -12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;; -12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;; -12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;; -12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;; -12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;; -12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;; -12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;; -1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;; -1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;; -1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;; -1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;; -1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;; -1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;; -12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;; -12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;; -12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;; -12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;; -12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;; -12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;; -12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;; -12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;; -12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;; -12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;; -1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;; -1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;; -1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;; -1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;; -1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;; -1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;; -12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;; -12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;; -12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;; -12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;; -12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;; -12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;; -12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;; -12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;; -12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;; -1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;; -1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;; -1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;; -1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;; -1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;; -1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; -12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; -12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; -12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; -12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; -12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; -12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; -12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;; -12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;; -12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;; -1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;; -1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;; -1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;; -1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;; -1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;; -1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;; -12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;; -12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;; -12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;; -12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;; -12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;; -12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;; -12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;; -12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;; -12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;; -12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;; -1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;; -1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;; -1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;; -1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;; -1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;; -1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;; -12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;; -12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;; -12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;; -12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; -12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; -12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; -12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; -12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; -12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; -12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; -1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; -1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;; -1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;; -1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;; -1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;; -1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;; -12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;; -12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;; -12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;; -12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; -12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;; -12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; -12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; -13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;; -13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;; -13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;; -13003;EGYPTIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;; -13004;EGYPTIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;; -13005;EGYPTIAN HIEROGLYPH A005A;Lo;0;L;;;;;N;;;;; -13006;EGYPTIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;; -13007;EGYPTIAN HIEROGLYPH A006A;Lo;0;L;;;;;N;;;;; -13008;EGYPTIAN HIEROGLYPH A006B;Lo;0;L;;;;;N;;;;; -13009;EGYPTIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;; -1300A;EGYPTIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;; -1300B;EGYPTIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;; -1300C;EGYPTIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;; -1300D;EGYPTIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;; -1300E;EGYPTIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;; -1300F;EGYPTIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;; -13010;EGYPTIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;; -13011;EGYPTIAN HIEROGLYPH A014A;Lo;0;L;;;;;N;;;;; -13012;EGYPTIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;; -13013;EGYPTIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;; -13014;EGYPTIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;; -13015;EGYPTIAN HIEROGLYPH A017A;Lo;0;L;;;;;N;;;;; -13016;EGYPTIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;; -13017;EGYPTIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;; -13018;EGYPTIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;; -13019;EGYPTIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;; -1301A;EGYPTIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;; -1301B;EGYPTIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;; -1301C;EGYPTIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;; -1301D;EGYPTIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;; -1301E;EGYPTIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;; -1301F;EGYPTIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;; -13020;EGYPTIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;; -13021;EGYPTIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;; -13022;EGYPTIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;; -13023;EGYPTIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;; -13024;EGYPTIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;; -13025;EGYPTIAN HIEROGLYPH A032A;Lo;0;L;;;;;N;;;;; -13026;EGYPTIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;; -13027;EGYPTIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;; -13028;EGYPTIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;; -13029;EGYPTIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;; -1302A;EGYPTIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;; -1302B;EGYPTIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;; -1302C;EGYPTIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;; -1302D;EGYPTIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;; -1302E;EGYPTIAN HIEROGLYPH A040A;Lo;0;L;;;;;N;;;;; -1302F;EGYPTIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;; -13030;EGYPTIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;; -13031;EGYPTIAN HIEROGLYPH A042A;Lo;0;L;;;;;N;;;;; -13032;EGYPTIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;; -13033;EGYPTIAN HIEROGLYPH A043A;Lo;0;L;;;;;N;;;;; -13034;EGYPTIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;; -13035;EGYPTIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;; -13036;EGYPTIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;; -13037;EGYPTIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;; -13038;EGYPTIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;; -13039;EGYPTIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;; -1303A;EGYPTIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;; -1303B;EGYPTIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;; -1303C;EGYPTIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;; -1303D;EGYPTIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;; -1303E;EGYPTIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;; -1303F;EGYPTIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;; -13040;EGYPTIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;; -13041;EGYPTIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;; -13042;EGYPTIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;; -13043;EGYPTIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;; -13044;EGYPTIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;; -13045;EGYPTIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;; -13046;EGYPTIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;; -13047;EGYPTIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;; -13048;EGYPTIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;; -13049;EGYPTIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;; -1304A;EGYPTIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;; -1304B;EGYPTIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;; -1304C;EGYPTIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;; -1304D;EGYPTIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;; -1304E;EGYPTIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;; -1304F;EGYPTIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;; -13050;EGYPTIAN HIEROGLYPH B001;Lo;0;L;;;;;N;;;;; -13051;EGYPTIAN HIEROGLYPH B002;Lo;0;L;;;;;N;;;;; -13052;EGYPTIAN HIEROGLYPH B003;Lo;0;L;;;;;N;;;;; -13053;EGYPTIAN HIEROGLYPH B004;Lo;0;L;;;;;N;;;;; -13054;EGYPTIAN HIEROGLYPH B005;Lo;0;L;;;;;N;;;;; -13055;EGYPTIAN HIEROGLYPH B005A;Lo;0;L;;;;;N;;;;; -13056;EGYPTIAN HIEROGLYPH B006;Lo;0;L;;;;;N;;;;; -13057;EGYPTIAN HIEROGLYPH B007;Lo;0;L;;;;;N;;;;; -13058;EGYPTIAN HIEROGLYPH B008;Lo;0;L;;;;;N;;;;; -13059;EGYPTIAN HIEROGLYPH B009;Lo;0;L;;;;;N;;;;; -1305A;EGYPTIAN HIEROGLYPH C001;Lo;0;L;;;;;N;;;;; -1305B;EGYPTIAN HIEROGLYPH C002;Lo;0;L;;;;;N;;;;; -1305C;EGYPTIAN HIEROGLYPH C002A;Lo;0;L;;;;;N;;;;; -1305D;EGYPTIAN HIEROGLYPH C002B;Lo;0;L;;;;;N;;;;; -1305E;EGYPTIAN HIEROGLYPH C002C;Lo;0;L;;;;;N;;;;; -1305F;EGYPTIAN HIEROGLYPH C003;Lo;0;L;;;;;N;;;;; -13060;EGYPTIAN HIEROGLYPH C004;Lo;0;L;;;;;N;;;;; -13061;EGYPTIAN HIEROGLYPH C005;Lo;0;L;;;;;N;;;;; -13062;EGYPTIAN HIEROGLYPH C006;Lo;0;L;;;;;N;;;;; -13063;EGYPTIAN HIEROGLYPH C007;Lo;0;L;;;;;N;;;;; -13064;EGYPTIAN HIEROGLYPH C008;Lo;0;L;;;;;N;;;;; -13065;EGYPTIAN HIEROGLYPH C009;Lo;0;L;;;;;N;;;;; -13066;EGYPTIAN HIEROGLYPH C010;Lo;0;L;;;;;N;;;;; -13067;EGYPTIAN HIEROGLYPH C010A;Lo;0;L;;;;;N;;;;; -13068;EGYPTIAN HIEROGLYPH C011;Lo;0;L;;;;;N;;;;; -13069;EGYPTIAN HIEROGLYPH C012;Lo;0;L;;;;;N;;;;; -1306A;EGYPTIAN HIEROGLYPH C013;Lo;0;L;;;;;N;;;;; -1306B;EGYPTIAN HIEROGLYPH C014;Lo;0;L;;;;;N;;;;; -1306C;EGYPTIAN HIEROGLYPH C015;Lo;0;L;;;;;N;;;;; -1306D;EGYPTIAN HIEROGLYPH C016;Lo;0;L;;;;;N;;;;; -1306E;EGYPTIAN HIEROGLYPH C017;Lo;0;L;;;;;N;;;;; -1306F;EGYPTIAN HIEROGLYPH C018;Lo;0;L;;;;;N;;;;; -13070;EGYPTIAN HIEROGLYPH C019;Lo;0;L;;;;;N;;;;; -13071;EGYPTIAN HIEROGLYPH C020;Lo;0;L;;;;;N;;;;; -13072;EGYPTIAN HIEROGLYPH C021;Lo;0;L;;;;;N;;;;; -13073;EGYPTIAN HIEROGLYPH C022;Lo;0;L;;;;;N;;;;; -13074;EGYPTIAN HIEROGLYPH C023;Lo;0;L;;;;;N;;;;; -13075;EGYPTIAN HIEROGLYPH C024;Lo;0;L;;;;;N;;;;; -13076;EGYPTIAN HIEROGLYPH D001;Lo;0;L;;;;;N;;;;; -13077;EGYPTIAN HIEROGLYPH D002;Lo;0;L;;;;;N;;;;; -13078;EGYPTIAN HIEROGLYPH D003;Lo;0;L;;;;;N;;;;; -13079;EGYPTIAN HIEROGLYPH D004;Lo;0;L;;;;;N;;;;; -1307A;EGYPTIAN HIEROGLYPH D005;Lo;0;L;;;;;N;;;;; -1307B;EGYPTIAN HIEROGLYPH D006;Lo;0;L;;;;;N;;;;; -1307C;EGYPTIAN HIEROGLYPH D007;Lo;0;L;;;;;N;;;;; -1307D;EGYPTIAN HIEROGLYPH D008;Lo;0;L;;;;;N;;;;; -1307E;EGYPTIAN HIEROGLYPH D008A;Lo;0;L;;;;;N;;;;; -1307F;EGYPTIAN HIEROGLYPH D009;Lo;0;L;;;;;N;;;;; -13080;EGYPTIAN HIEROGLYPH D010;Lo;0;L;;;;;N;;;;; -13081;EGYPTIAN HIEROGLYPH D011;Lo;0;L;;;;;N;;;;; -13082;EGYPTIAN HIEROGLYPH D012;Lo;0;L;;;;;N;;;;; -13083;EGYPTIAN HIEROGLYPH D013;Lo;0;L;;;;;N;;;;; -13084;EGYPTIAN HIEROGLYPH D014;Lo;0;L;;;;;N;;;;; -13085;EGYPTIAN HIEROGLYPH D015;Lo;0;L;;;;;N;;;;; -13086;EGYPTIAN HIEROGLYPH D016;Lo;0;L;;;;;N;;;;; -13087;EGYPTIAN HIEROGLYPH D017;Lo;0;L;;;;;N;;;;; -13088;EGYPTIAN HIEROGLYPH D018;Lo;0;L;;;;;N;;;;; -13089;EGYPTIAN HIEROGLYPH D019;Lo;0;L;;;;;N;;;;; -1308A;EGYPTIAN HIEROGLYPH D020;Lo;0;L;;;;;N;;;;; -1308B;EGYPTIAN HIEROGLYPH D021;Lo;0;L;;;;;N;;;;; -1308C;EGYPTIAN HIEROGLYPH D022;Lo;0;L;;;;;N;;;;; -1308D;EGYPTIAN HIEROGLYPH D023;Lo;0;L;;;;;N;;;;; -1308E;EGYPTIAN HIEROGLYPH D024;Lo;0;L;;;;;N;;;;; -1308F;EGYPTIAN HIEROGLYPH D025;Lo;0;L;;;;;N;;;;; -13090;EGYPTIAN HIEROGLYPH D026;Lo;0;L;;;;;N;;;;; -13091;EGYPTIAN HIEROGLYPH D027;Lo;0;L;;;;;N;;;;; -13092;EGYPTIAN HIEROGLYPH D027A;Lo;0;L;;;;;N;;;;; -13093;EGYPTIAN HIEROGLYPH D028;Lo;0;L;;;;;N;;;;; -13094;EGYPTIAN HIEROGLYPH D029;Lo;0;L;;;;;N;;;;; -13095;EGYPTIAN HIEROGLYPH D030;Lo;0;L;;;;;N;;;;; -13096;EGYPTIAN HIEROGLYPH D031;Lo;0;L;;;;;N;;;;; -13097;EGYPTIAN HIEROGLYPH D031A;Lo;0;L;;;;;N;;;;; -13098;EGYPTIAN HIEROGLYPH D032;Lo;0;L;;;;;N;;;;; -13099;EGYPTIAN HIEROGLYPH D033;Lo;0;L;;;;;N;;;;; -1309A;EGYPTIAN HIEROGLYPH D034;Lo;0;L;;;;;N;;;;; -1309B;EGYPTIAN HIEROGLYPH D034A;Lo;0;L;;;;;N;;;;; -1309C;EGYPTIAN HIEROGLYPH D035;Lo;0;L;;;;;N;;;;; -1309D;EGYPTIAN HIEROGLYPH D036;Lo;0;L;;;;;N;;;;; -1309E;EGYPTIAN HIEROGLYPH D037;Lo;0;L;;;;;N;;;;; -1309F;EGYPTIAN HIEROGLYPH D038;Lo;0;L;;;;;N;;;;; -130A0;EGYPTIAN HIEROGLYPH D039;Lo;0;L;;;;;N;;;;; -130A1;EGYPTIAN HIEROGLYPH D040;Lo;0;L;;;;;N;;;;; -130A2;EGYPTIAN HIEROGLYPH D041;Lo;0;L;;;;;N;;;;; -130A3;EGYPTIAN HIEROGLYPH D042;Lo;0;L;;;;;N;;;;; -130A4;EGYPTIAN HIEROGLYPH D043;Lo;0;L;;;;;N;;;;; -130A5;EGYPTIAN HIEROGLYPH D044;Lo;0;L;;;;;N;;;;; -130A6;EGYPTIAN HIEROGLYPH D045;Lo;0;L;;;;;N;;;;; -130A7;EGYPTIAN HIEROGLYPH D046;Lo;0;L;;;;;N;;;;; -130A8;EGYPTIAN HIEROGLYPH D046A;Lo;0;L;;;;;N;;;;; -130A9;EGYPTIAN HIEROGLYPH D047;Lo;0;L;;;;;N;;;;; -130AA;EGYPTIAN HIEROGLYPH D048;Lo;0;L;;;;;N;;;;; -130AB;EGYPTIAN HIEROGLYPH D048A;Lo;0;L;;;;;N;;;;; -130AC;EGYPTIAN HIEROGLYPH D049;Lo;0;L;;;;;N;;;;; -130AD;EGYPTIAN HIEROGLYPH D050;Lo;0;L;;;;;N;;;;; -130AE;EGYPTIAN HIEROGLYPH D050A;Lo;0;L;;;;;N;;;;; -130AF;EGYPTIAN HIEROGLYPH D050B;Lo;0;L;;;;;N;;;;; -130B0;EGYPTIAN HIEROGLYPH D050C;Lo;0;L;;;;;N;;;;; -130B1;EGYPTIAN HIEROGLYPH D050D;Lo;0;L;;;;;N;;;;; -130B2;EGYPTIAN HIEROGLYPH D050E;Lo;0;L;;;;;N;;;;; -130B3;EGYPTIAN HIEROGLYPH D050F;Lo;0;L;;;;;N;;;;; -130B4;EGYPTIAN HIEROGLYPH D050G;Lo;0;L;;;;;N;;;;; -130B5;EGYPTIAN HIEROGLYPH D050H;Lo;0;L;;;;;N;;;;; -130B6;EGYPTIAN HIEROGLYPH D050I;Lo;0;L;;;;;N;;;;; -130B7;EGYPTIAN HIEROGLYPH D051;Lo;0;L;;;;;N;;;;; -130B8;EGYPTIAN HIEROGLYPH D052;Lo;0;L;;;;;N;;;;; -130B9;EGYPTIAN HIEROGLYPH D052A;Lo;0;L;;;;;N;;;;; -130BA;EGYPTIAN HIEROGLYPH D053;Lo;0;L;;;;;N;;;;; -130BB;EGYPTIAN HIEROGLYPH D054;Lo;0;L;;;;;N;;;;; -130BC;EGYPTIAN HIEROGLYPH D054A;Lo;0;L;;;;;N;;;;; -130BD;EGYPTIAN HIEROGLYPH D055;Lo;0;L;;;;;N;;;;; -130BE;EGYPTIAN HIEROGLYPH D056;Lo;0;L;;;;;N;;;;; -130BF;EGYPTIAN HIEROGLYPH D057;Lo;0;L;;;;;N;;;;; -130C0;EGYPTIAN HIEROGLYPH D058;Lo;0;L;;;;;N;;;;; -130C1;EGYPTIAN HIEROGLYPH D059;Lo;0;L;;;;;N;;;;; -130C2;EGYPTIAN HIEROGLYPH D060;Lo;0;L;;;;;N;;;;; -130C3;EGYPTIAN HIEROGLYPH D061;Lo;0;L;;;;;N;;;;; -130C4;EGYPTIAN HIEROGLYPH D062;Lo;0;L;;;;;N;;;;; -130C5;EGYPTIAN HIEROGLYPH D063;Lo;0;L;;;;;N;;;;; -130C6;EGYPTIAN HIEROGLYPH D064;Lo;0;L;;;;;N;;;;; -130C7;EGYPTIAN HIEROGLYPH D065;Lo;0;L;;;;;N;;;;; -130C8;EGYPTIAN HIEROGLYPH D066;Lo;0;L;;;;;N;;;;; -130C9;EGYPTIAN HIEROGLYPH D067;Lo;0;L;;;;;N;;;;; -130CA;EGYPTIAN HIEROGLYPH D067A;Lo;0;L;;;;;N;;;;; -130CB;EGYPTIAN HIEROGLYPH D067B;Lo;0;L;;;;;N;;;;; -130CC;EGYPTIAN HIEROGLYPH D067C;Lo;0;L;;;;;N;;;;; -130CD;EGYPTIAN HIEROGLYPH D067D;Lo;0;L;;;;;N;;;;; -130CE;EGYPTIAN HIEROGLYPH D067E;Lo;0;L;;;;;N;;;;; -130CF;EGYPTIAN HIEROGLYPH D067F;Lo;0;L;;;;;N;;;;; -130D0;EGYPTIAN HIEROGLYPH D067G;Lo;0;L;;;;;N;;;;; -130D1;EGYPTIAN HIEROGLYPH D067H;Lo;0;L;;;;;N;;;;; -130D2;EGYPTIAN HIEROGLYPH E001;Lo;0;L;;;;;N;;;;; -130D3;EGYPTIAN HIEROGLYPH E002;Lo;0;L;;;;;N;;;;; -130D4;EGYPTIAN HIEROGLYPH E003;Lo;0;L;;;;;N;;;;; -130D5;EGYPTIAN HIEROGLYPH E004;Lo;0;L;;;;;N;;;;; -130D6;EGYPTIAN HIEROGLYPH E005;Lo;0;L;;;;;N;;;;; -130D7;EGYPTIAN HIEROGLYPH E006;Lo;0;L;;;;;N;;;;; -130D8;EGYPTIAN HIEROGLYPH E007;Lo;0;L;;;;;N;;;;; -130D9;EGYPTIAN HIEROGLYPH E008;Lo;0;L;;;;;N;;;;; -130DA;EGYPTIAN HIEROGLYPH E008A;Lo;0;L;;;;;N;;;;; -130DB;EGYPTIAN HIEROGLYPH E009;Lo;0;L;;;;;N;;;;; -130DC;EGYPTIAN HIEROGLYPH E009A;Lo;0;L;;;;;N;;;;; -130DD;EGYPTIAN HIEROGLYPH E010;Lo;0;L;;;;;N;;;;; -130DE;EGYPTIAN HIEROGLYPH E011;Lo;0;L;;;;;N;;;;; -130DF;EGYPTIAN HIEROGLYPH E012;Lo;0;L;;;;;N;;;;; -130E0;EGYPTIAN HIEROGLYPH E013;Lo;0;L;;;;;N;;;;; -130E1;EGYPTIAN HIEROGLYPH E014;Lo;0;L;;;;;N;;;;; -130E2;EGYPTIAN HIEROGLYPH E015;Lo;0;L;;;;;N;;;;; -130E3;EGYPTIAN HIEROGLYPH E016;Lo;0;L;;;;;N;;;;; -130E4;EGYPTIAN HIEROGLYPH E016A;Lo;0;L;;;;;N;;;;; -130E5;EGYPTIAN HIEROGLYPH E017;Lo;0;L;;;;;N;;;;; -130E6;EGYPTIAN HIEROGLYPH E017A;Lo;0;L;;;;;N;;;;; -130E7;EGYPTIAN HIEROGLYPH E018;Lo;0;L;;;;;N;;;;; -130E8;EGYPTIAN HIEROGLYPH E019;Lo;0;L;;;;;N;;;;; -130E9;EGYPTIAN HIEROGLYPH E020;Lo;0;L;;;;;N;;;;; -130EA;EGYPTIAN HIEROGLYPH E020A;Lo;0;L;;;;;N;;;;; -130EB;EGYPTIAN HIEROGLYPH E021;Lo;0;L;;;;;N;;;;; -130EC;EGYPTIAN HIEROGLYPH E022;Lo;0;L;;;;;N;;;;; -130ED;EGYPTIAN HIEROGLYPH E023;Lo;0;L;;;;;N;;;;; -130EE;EGYPTIAN HIEROGLYPH E024;Lo;0;L;;;;;N;;;;; -130EF;EGYPTIAN HIEROGLYPH E025;Lo;0;L;;;;;N;;;;; -130F0;EGYPTIAN HIEROGLYPH E026;Lo;0;L;;;;;N;;;;; -130F1;EGYPTIAN HIEROGLYPH E027;Lo;0;L;;;;;N;;;;; -130F2;EGYPTIAN HIEROGLYPH E028;Lo;0;L;;;;;N;;;;; -130F3;EGYPTIAN HIEROGLYPH E028A;Lo;0;L;;;;;N;;;;; -130F4;EGYPTIAN HIEROGLYPH E029;Lo;0;L;;;;;N;;;;; -130F5;EGYPTIAN HIEROGLYPH E030;Lo;0;L;;;;;N;;;;; -130F6;EGYPTIAN HIEROGLYPH E031;Lo;0;L;;;;;N;;;;; -130F7;EGYPTIAN HIEROGLYPH E032;Lo;0;L;;;;;N;;;;; -130F8;EGYPTIAN HIEROGLYPH E033;Lo;0;L;;;;;N;;;;; -130F9;EGYPTIAN HIEROGLYPH E034;Lo;0;L;;;;;N;;;;; -130FA;EGYPTIAN HIEROGLYPH E034A;Lo;0;L;;;;;N;;;;; -130FB;EGYPTIAN HIEROGLYPH E036;Lo;0;L;;;;;N;;;;; -130FC;EGYPTIAN HIEROGLYPH E037;Lo;0;L;;;;;N;;;;; -130FD;EGYPTIAN HIEROGLYPH E038;Lo;0;L;;;;;N;;;;; -130FE;EGYPTIAN HIEROGLYPH F001;Lo;0;L;;;;;N;;;;; -130FF;EGYPTIAN HIEROGLYPH F001A;Lo;0;L;;;;;N;;;;; -13100;EGYPTIAN HIEROGLYPH F002;Lo;0;L;;;;;N;;;;; -13101;EGYPTIAN HIEROGLYPH F003;Lo;0;L;;;;;N;;;;; -13102;EGYPTIAN HIEROGLYPH F004;Lo;0;L;;;;;N;;;;; -13103;EGYPTIAN HIEROGLYPH F005;Lo;0;L;;;;;N;;;;; -13104;EGYPTIAN HIEROGLYPH F006;Lo;0;L;;;;;N;;;;; -13105;EGYPTIAN HIEROGLYPH F007;Lo;0;L;;;;;N;;;;; -13106;EGYPTIAN HIEROGLYPH F008;Lo;0;L;;;;;N;;;;; -13107;EGYPTIAN HIEROGLYPH F009;Lo;0;L;;;;;N;;;;; -13108;EGYPTIAN HIEROGLYPH F010;Lo;0;L;;;;;N;;;;; -13109;EGYPTIAN HIEROGLYPH F011;Lo;0;L;;;;;N;;;;; -1310A;EGYPTIAN HIEROGLYPH F012;Lo;0;L;;;;;N;;;;; -1310B;EGYPTIAN HIEROGLYPH F013;Lo;0;L;;;;;N;;;;; -1310C;EGYPTIAN HIEROGLYPH F013A;Lo;0;L;;;;;N;;;;; -1310D;EGYPTIAN HIEROGLYPH F014;Lo;0;L;;;;;N;;;;; -1310E;EGYPTIAN HIEROGLYPH F015;Lo;0;L;;;;;N;;;;; -1310F;EGYPTIAN HIEROGLYPH F016;Lo;0;L;;;;;N;;;;; -13110;EGYPTIAN HIEROGLYPH F017;Lo;0;L;;;;;N;;;;; -13111;EGYPTIAN HIEROGLYPH F018;Lo;0;L;;;;;N;;;;; -13112;EGYPTIAN HIEROGLYPH F019;Lo;0;L;;;;;N;;;;; -13113;EGYPTIAN HIEROGLYPH F020;Lo;0;L;;;;;N;;;;; -13114;EGYPTIAN HIEROGLYPH F021;Lo;0;L;;;;;N;;;;; -13115;EGYPTIAN HIEROGLYPH F021A;Lo;0;L;;;;;N;;;;; -13116;EGYPTIAN HIEROGLYPH F022;Lo;0;L;;;;;N;;;;; -13117;EGYPTIAN HIEROGLYPH F023;Lo;0;L;;;;;N;;;;; -13118;EGYPTIAN HIEROGLYPH F024;Lo;0;L;;;;;N;;;;; -13119;EGYPTIAN HIEROGLYPH F025;Lo;0;L;;;;;N;;;;; -1311A;EGYPTIAN HIEROGLYPH F026;Lo;0;L;;;;;N;;;;; -1311B;EGYPTIAN HIEROGLYPH F027;Lo;0;L;;;;;N;;;;; -1311C;EGYPTIAN HIEROGLYPH F028;Lo;0;L;;;;;N;;;;; -1311D;EGYPTIAN HIEROGLYPH F029;Lo;0;L;;;;;N;;;;; -1311E;EGYPTIAN HIEROGLYPH F030;Lo;0;L;;;;;N;;;;; -1311F;EGYPTIAN HIEROGLYPH F031;Lo;0;L;;;;;N;;;;; -13120;EGYPTIAN HIEROGLYPH F031A;Lo;0;L;;;;;N;;;;; -13121;EGYPTIAN HIEROGLYPH F032;Lo;0;L;;;;;N;;;;; -13122;EGYPTIAN HIEROGLYPH F033;Lo;0;L;;;;;N;;;;; -13123;EGYPTIAN HIEROGLYPH F034;Lo;0;L;;;;;N;;;;; -13124;EGYPTIAN HIEROGLYPH F035;Lo;0;L;;;;;N;;;;; -13125;EGYPTIAN HIEROGLYPH F036;Lo;0;L;;;;;N;;;;; -13126;EGYPTIAN HIEROGLYPH F037;Lo;0;L;;;;;N;;;;; -13127;EGYPTIAN HIEROGLYPH F037A;Lo;0;L;;;;;N;;;;; -13128;EGYPTIAN HIEROGLYPH F038;Lo;0;L;;;;;N;;;;; -13129;EGYPTIAN HIEROGLYPH F038A;Lo;0;L;;;;;N;;;;; -1312A;EGYPTIAN HIEROGLYPH F039;Lo;0;L;;;;;N;;;;; -1312B;EGYPTIAN HIEROGLYPH F040;Lo;0;L;;;;;N;;;;; -1312C;EGYPTIAN HIEROGLYPH F041;Lo;0;L;;;;;N;;;;; -1312D;EGYPTIAN HIEROGLYPH F042;Lo;0;L;;;;;N;;;;; -1312E;EGYPTIAN HIEROGLYPH F043;Lo;0;L;;;;;N;;;;; -1312F;EGYPTIAN HIEROGLYPH F044;Lo;0;L;;;;;N;;;;; -13130;EGYPTIAN HIEROGLYPH F045;Lo;0;L;;;;;N;;;;; -13131;EGYPTIAN HIEROGLYPH F045A;Lo;0;L;;;;;N;;;;; -13132;EGYPTIAN HIEROGLYPH F046;Lo;0;L;;;;;N;;;;; -13133;EGYPTIAN HIEROGLYPH F046A;Lo;0;L;;;;;N;;;;; -13134;EGYPTIAN HIEROGLYPH F047;Lo;0;L;;;;;N;;;;; -13135;EGYPTIAN HIEROGLYPH F047A;Lo;0;L;;;;;N;;;;; -13136;EGYPTIAN HIEROGLYPH F048;Lo;0;L;;;;;N;;;;; -13137;EGYPTIAN HIEROGLYPH F049;Lo;0;L;;;;;N;;;;; -13138;EGYPTIAN HIEROGLYPH F050;Lo;0;L;;;;;N;;;;; -13139;EGYPTIAN HIEROGLYPH F051;Lo;0;L;;;;;N;;;;; -1313A;EGYPTIAN HIEROGLYPH F051A;Lo;0;L;;;;;N;;;;; -1313B;EGYPTIAN HIEROGLYPH F051B;Lo;0;L;;;;;N;;;;; -1313C;EGYPTIAN HIEROGLYPH F051C;Lo;0;L;;;;;N;;;;; -1313D;EGYPTIAN HIEROGLYPH F052;Lo;0;L;;;;;N;;;;; -1313E;EGYPTIAN HIEROGLYPH F053;Lo;0;L;;;;;N;;;;; -1313F;EGYPTIAN HIEROGLYPH G001;Lo;0;L;;;;;N;;;;; -13140;EGYPTIAN HIEROGLYPH G002;Lo;0;L;;;;;N;;;;; -13141;EGYPTIAN HIEROGLYPH G003;Lo;0;L;;;;;N;;;;; -13142;EGYPTIAN HIEROGLYPH G004;Lo;0;L;;;;;N;;;;; -13143;EGYPTIAN HIEROGLYPH G005;Lo;0;L;;;;;N;;;;; -13144;EGYPTIAN HIEROGLYPH G006;Lo;0;L;;;;;N;;;;; -13145;EGYPTIAN HIEROGLYPH G006A;Lo;0;L;;;;;N;;;;; -13146;EGYPTIAN HIEROGLYPH G007;Lo;0;L;;;;;N;;;;; -13147;EGYPTIAN HIEROGLYPH G007A;Lo;0;L;;;;;N;;;;; -13148;EGYPTIAN HIEROGLYPH G007B;Lo;0;L;;;;;N;;;;; -13149;EGYPTIAN HIEROGLYPH G008;Lo;0;L;;;;;N;;;;; -1314A;EGYPTIAN HIEROGLYPH G009;Lo;0;L;;;;;N;;;;; -1314B;EGYPTIAN HIEROGLYPH G010;Lo;0;L;;;;;N;;;;; -1314C;EGYPTIAN HIEROGLYPH G011;Lo;0;L;;;;;N;;;;; -1314D;EGYPTIAN HIEROGLYPH G011A;Lo;0;L;;;;;N;;;;; -1314E;EGYPTIAN HIEROGLYPH G012;Lo;0;L;;;;;N;;;;; -1314F;EGYPTIAN HIEROGLYPH G013;Lo;0;L;;;;;N;;;;; -13150;EGYPTIAN HIEROGLYPH G014;Lo;0;L;;;;;N;;;;; -13151;EGYPTIAN HIEROGLYPH G015;Lo;0;L;;;;;N;;;;; -13152;EGYPTIAN HIEROGLYPH G016;Lo;0;L;;;;;N;;;;; -13153;EGYPTIAN HIEROGLYPH G017;Lo;0;L;;;;;N;;;;; -13154;EGYPTIAN HIEROGLYPH G018;Lo;0;L;;;;;N;;;;; -13155;EGYPTIAN HIEROGLYPH G019;Lo;0;L;;;;;N;;;;; -13156;EGYPTIAN HIEROGLYPH G020;Lo;0;L;;;;;N;;;;; -13157;EGYPTIAN HIEROGLYPH G020A;Lo;0;L;;;;;N;;;;; -13158;EGYPTIAN HIEROGLYPH G021;Lo;0;L;;;;;N;;;;; -13159;EGYPTIAN HIEROGLYPH G022;Lo;0;L;;;;;N;;;;; -1315A;EGYPTIAN HIEROGLYPH G023;Lo;0;L;;;;;N;;;;; -1315B;EGYPTIAN HIEROGLYPH G024;Lo;0;L;;;;;N;;;;; -1315C;EGYPTIAN HIEROGLYPH G025;Lo;0;L;;;;;N;;;;; -1315D;EGYPTIAN HIEROGLYPH G026;Lo;0;L;;;;;N;;;;; -1315E;EGYPTIAN HIEROGLYPH G026A;Lo;0;L;;;;;N;;;;; -1315F;EGYPTIAN HIEROGLYPH G027;Lo;0;L;;;;;N;;;;; -13160;EGYPTIAN HIEROGLYPH G028;Lo;0;L;;;;;N;;;;; -13161;EGYPTIAN HIEROGLYPH G029;Lo;0;L;;;;;N;;;;; -13162;EGYPTIAN HIEROGLYPH G030;Lo;0;L;;;;;N;;;;; -13163;EGYPTIAN HIEROGLYPH G031;Lo;0;L;;;;;N;;;;; -13164;EGYPTIAN HIEROGLYPH G032;Lo;0;L;;;;;N;;;;; -13165;EGYPTIAN HIEROGLYPH G033;Lo;0;L;;;;;N;;;;; -13166;EGYPTIAN HIEROGLYPH G034;Lo;0;L;;;;;N;;;;; -13167;EGYPTIAN HIEROGLYPH G035;Lo;0;L;;;;;N;;;;; -13168;EGYPTIAN HIEROGLYPH G036;Lo;0;L;;;;;N;;;;; -13169;EGYPTIAN HIEROGLYPH G036A;Lo;0;L;;;;;N;;;;; -1316A;EGYPTIAN HIEROGLYPH G037;Lo;0;L;;;;;N;;;;; -1316B;EGYPTIAN HIEROGLYPH G037A;Lo;0;L;;;;;N;;;;; -1316C;EGYPTIAN HIEROGLYPH G038;Lo;0;L;;;;;N;;;;; -1316D;EGYPTIAN HIEROGLYPH G039;Lo;0;L;;;;;N;;;;; -1316E;EGYPTIAN HIEROGLYPH G040;Lo;0;L;;;;;N;;;;; -1316F;EGYPTIAN HIEROGLYPH G041;Lo;0;L;;;;;N;;;;; -13170;EGYPTIAN HIEROGLYPH G042;Lo;0;L;;;;;N;;;;; -13171;EGYPTIAN HIEROGLYPH G043;Lo;0;L;;;;;N;;;;; -13172;EGYPTIAN HIEROGLYPH G043A;Lo;0;L;;;;;N;;;;; -13173;EGYPTIAN HIEROGLYPH G044;Lo;0;L;;;;;N;;;;; -13174;EGYPTIAN HIEROGLYPH G045;Lo;0;L;;;;;N;;;;; -13175;EGYPTIAN HIEROGLYPH G045A;Lo;0;L;;;;;N;;;;; -13176;EGYPTIAN HIEROGLYPH G046;Lo;0;L;;;;;N;;;;; -13177;EGYPTIAN HIEROGLYPH G047;Lo;0;L;;;;;N;;;;; -13178;EGYPTIAN HIEROGLYPH G048;Lo;0;L;;;;;N;;;;; -13179;EGYPTIAN HIEROGLYPH G049;Lo;0;L;;;;;N;;;;; -1317A;EGYPTIAN HIEROGLYPH G050;Lo;0;L;;;;;N;;;;; -1317B;EGYPTIAN HIEROGLYPH G051;Lo;0;L;;;;;N;;;;; -1317C;EGYPTIAN HIEROGLYPH G052;Lo;0;L;;;;;N;;;;; -1317D;EGYPTIAN HIEROGLYPH G053;Lo;0;L;;;;;N;;;;; -1317E;EGYPTIAN HIEROGLYPH G054;Lo;0;L;;;;;N;;;;; -1317F;EGYPTIAN HIEROGLYPH H001;Lo;0;L;;;;;N;;;;; -13180;EGYPTIAN HIEROGLYPH H002;Lo;0;L;;;;;N;;;;; -13181;EGYPTIAN HIEROGLYPH H003;Lo;0;L;;;;;N;;;;; -13182;EGYPTIAN HIEROGLYPH H004;Lo;0;L;;;;;N;;;;; -13183;EGYPTIAN HIEROGLYPH H005;Lo;0;L;;;;;N;;;;; -13184;EGYPTIAN HIEROGLYPH H006;Lo;0;L;;;;;N;;;;; -13185;EGYPTIAN HIEROGLYPH H006A;Lo;0;L;;;;;N;;;;; -13186;EGYPTIAN HIEROGLYPH H007;Lo;0;L;;;;;N;;;;; -13187;EGYPTIAN HIEROGLYPH H008;Lo;0;L;;;;;N;;;;; -13188;EGYPTIAN HIEROGLYPH I001;Lo;0;L;;;;;N;;;;; -13189;EGYPTIAN HIEROGLYPH I002;Lo;0;L;;;;;N;;;;; -1318A;EGYPTIAN HIEROGLYPH I003;Lo;0;L;;;;;N;;;;; -1318B;EGYPTIAN HIEROGLYPH I004;Lo;0;L;;;;;N;;;;; -1318C;EGYPTIAN HIEROGLYPH I005;Lo;0;L;;;;;N;;;;; -1318D;EGYPTIAN HIEROGLYPH I005A;Lo;0;L;;;;;N;;;;; -1318E;EGYPTIAN HIEROGLYPH I006;Lo;0;L;;;;;N;;;;; -1318F;EGYPTIAN HIEROGLYPH I007;Lo;0;L;;;;;N;;;;; -13190;EGYPTIAN HIEROGLYPH I008;Lo;0;L;;;;;N;;;;; -13191;EGYPTIAN HIEROGLYPH I009;Lo;0;L;;;;;N;;;;; -13192;EGYPTIAN HIEROGLYPH I009A;Lo;0;L;;;;;N;;;;; -13193;EGYPTIAN HIEROGLYPH I010;Lo;0;L;;;;;N;;;;; -13194;EGYPTIAN HIEROGLYPH I010A;Lo;0;L;;;;;N;;;;; -13195;EGYPTIAN HIEROGLYPH I011;Lo;0;L;;;;;N;;;;; -13196;EGYPTIAN HIEROGLYPH I011A;Lo;0;L;;;;;N;;;;; -13197;EGYPTIAN HIEROGLYPH I012;Lo;0;L;;;;;N;;;;; -13198;EGYPTIAN HIEROGLYPH I013;Lo;0;L;;;;;N;;;;; -13199;EGYPTIAN HIEROGLYPH I014;Lo;0;L;;;;;N;;;;; -1319A;EGYPTIAN HIEROGLYPH I015;Lo;0;L;;;;;N;;;;; -1319B;EGYPTIAN HIEROGLYPH K001;Lo;0;L;;;;;N;;;;; -1319C;EGYPTIAN HIEROGLYPH K002;Lo;0;L;;;;;N;;;;; -1319D;EGYPTIAN HIEROGLYPH K003;Lo;0;L;;;;;N;;;;; -1319E;EGYPTIAN HIEROGLYPH K004;Lo;0;L;;;;;N;;;;; -1319F;EGYPTIAN HIEROGLYPH K005;Lo;0;L;;;;;N;;;;; -131A0;EGYPTIAN HIEROGLYPH K006;Lo;0;L;;;;;N;;;;; -131A1;EGYPTIAN HIEROGLYPH K007;Lo;0;L;;;;;N;;;;; -131A2;EGYPTIAN HIEROGLYPH K008;Lo;0;L;;;;;N;;;;; -131A3;EGYPTIAN HIEROGLYPH L001;Lo;0;L;;;;;N;;;;; -131A4;EGYPTIAN HIEROGLYPH L002;Lo;0;L;;;;;N;;;;; -131A5;EGYPTIAN HIEROGLYPH L002A;Lo;0;L;;;;;N;;;;; -131A6;EGYPTIAN HIEROGLYPH L003;Lo;0;L;;;;;N;;;;; -131A7;EGYPTIAN HIEROGLYPH L004;Lo;0;L;;;;;N;;;;; -131A8;EGYPTIAN HIEROGLYPH L005;Lo;0;L;;;;;N;;;;; -131A9;EGYPTIAN HIEROGLYPH L006;Lo;0;L;;;;;N;;;;; -131AA;EGYPTIAN HIEROGLYPH L006A;Lo;0;L;;;;;N;;;;; -131AB;EGYPTIAN HIEROGLYPH L007;Lo;0;L;;;;;N;;;;; -131AC;EGYPTIAN HIEROGLYPH L008;Lo;0;L;;;;;N;;;;; -131AD;EGYPTIAN HIEROGLYPH M001;Lo;0;L;;;;;N;;;;; -131AE;EGYPTIAN HIEROGLYPH M001A;Lo;0;L;;;;;N;;;;; -131AF;EGYPTIAN HIEROGLYPH M001B;Lo;0;L;;;;;N;;;;; -131B0;EGYPTIAN HIEROGLYPH M002;Lo;0;L;;;;;N;;;;; -131B1;EGYPTIAN HIEROGLYPH M003;Lo;0;L;;;;;N;;;;; -131B2;EGYPTIAN HIEROGLYPH M003A;Lo;0;L;;;;;N;;;;; -131B3;EGYPTIAN HIEROGLYPH M004;Lo;0;L;;;;;N;;;;; -131B4;EGYPTIAN HIEROGLYPH M005;Lo;0;L;;;;;N;;;;; -131B5;EGYPTIAN HIEROGLYPH M006;Lo;0;L;;;;;N;;;;; -131B6;EGYPTIAN HIEROGLYPH M007;Lo;0;L;;;;;N;;;;; -131B7;EGYPTIAN HIEROGLYPH M008;Lo;0;L;;;;;N;;;;; -131B8;EGYPTIAN HIEROGLYPH M009;Lo;0;L;;;;;N;;;;; -131B9;EGYPTIAN HIEROGLYPH M010;Lo;0;L;;;;;N;;;;; -131BA;EGYPTIAN HIEROGLYPH M010A;Lo;0;L;;;;;N;;;;; -131BB;EGYPTIAN HIEROGLYPH M011;Lo;0;L;;;;;N;;;;; -131BC;EGYPTIAN HIEROGLYPH M012;Lo;0;L;;;;;N;;;;; -131BD;EGYPTIAN HIEROGLYPH M012A;Lo;0;L;;;;;N;;;;; -131BE;EGYPTIAN HIEROGLYPH M012B;Lo;0;L;;;;;N;;;;; -131BF;EGYPTIAN HIEROGLYPH M012C;Lo;0;L;;;;;N;;;;; -131C0;EGYPTIAN HIEROGLYPH M012D;Lo;0;L;;;;;N;;;;; -131C1;EGYPTIAN HIEROGLYPH M012E;Lo;0;L;;;;;N;;;;; -131C2;EGYPTIAN HIEROGLYPH M012F;Lo;0;L;;;;;N;;;;; -131C3;EGYPTIAN HIEROGLYPH M012G;Lo;0;L;;;;;N;;;;; -131C4;EGYPTIAN HIEROGLYPH M012H;Lo;0;L;;;;;N;;;;; -131C5;EGYPTIAN HIEROGLYPH M013;Lo;0;L;;;;;N;;;;; -131C6;EGYPTIAN HIEROGLYPH M014;Lo;0;L;;;;;N;;;;; -131C7;EGYPTIAN HIEROGLYPH M015;Lo;0;L;;;;;N;;;;; -131C8;EGYPTIAN HIEROGLYPH M015A;Lo;0;L;;;;;N;;;;; -131C9;EGYPTIAN HIEROGLYPH M016;Lo;0;L;;;;;N;;;;; -131CA;EGYPTIAN HIEROGLYPH M016A;Lo;0;L;;;;;N;;;;; -131CB;EGYPTIAN HIEROGLYPH M017;Lo;0;L;;;;;N;;;;; -131CC;EGYPTIAN HIEROGLYPH M017A;Lo;0;L;;;;;N;;;;; -131CD;EGYPTIAN HIEROGLYPH M018;Lo;0;L;;;;;N;;;;; -131CE;EGYPTIAN HIEROGLYPH M019;Lo;0;L;;;;;N;;;;; -131CF;EGYPTIAN HIEROGLYPH M020;Lo;0;L;;;;;N;;;;; -131D0;EGYPTIAN HIEROGLYPH M021;Lo;0;L;;;;;N;;;;; -131D1;EGYPTIAN HIEROGLYPH M022;Lo;0;L;;;;;N;;;;; -131D2;EGYPTIAN HIEROGLYPH M022A;Lo;0;L;;;;;N;;;;; -131D3;EGYPTIAN HIEROGLYPH M023;Lo;0;L;;;;;N;;;;; -131D4;EGYPTIAN HIEROGLYPH M024;Lo;0;L;;;;;N;;;;; -131D5;EGYPTIAN HIEROGLYPH M024A;Lo;0;L;;;;;N;;;;; -131D6;EGYPTIAN HIEROGLYPH M025;Lo;0;L;;;;;N;;;;; -131D7;EGYPTIAN HIEROGLYPH M026;Lo;0;L;;;;;N;;;;; -131D8;EGYPTIAN HIEROGLYPH M027;Lo;0;L;;;;;N;;;;; -131D9;EGYPTIAN HIEROGLYPH M028;Lo;0;L;;;;;N;;;;; -131DA;EGYPTIAN HIEROGLYPH M028A;Lo;0;L;;;;;N;;;;; -131DB;EGYPTIAN HIEROGLYPH M029;Lo;0;L;;;;;N;;;;; -131DC;EGYPTIAN HIEROGLYPH M030;Lo;0;L;;;;;N;;;;; -131DD;EGYPTIAN HIEROGLYPH M031;Lo;0;L;;;;;N;;;;; -131DE;EGYPTIAN HIEROGLYPH M031A;Lo;0;L;;;;;N;;;;; -131DF;EGYPTIAN HIEROGLYPH M032;Lo;0;L;;;;;N;;;;; -131E0;EGYPTIAN HIEROGLYPH M033;Lo;0;L;;;;;N;;;;; -131E1;EGYPTIAN HIEROGLYPH M033A;Lo;0;L;;;;;N;;;;; -131E2;EGYPTIAN HIEROGLYPH M033B;Lo;0;L;;;;;N;;;;; -131E3;EGYPTIAN HIEROGLYPH M034;Lo;0;L;;;;;N;;;;; -131E4;EGYPTIAN HIEROGLYPH M035;Lo;0;L;;;;;N;;;;; -131E5;EGYPTIAN HIEROGLYPH M036;Lo;0;L;;;;;N;;;;; -131E6;EGYPTIAN HIEROGLYPH M037;Lo;0;L;;;;;N;;;;; -131E7;EGYPTIAN HIEROGLYPH M038;Lo;0;L;;;;;N;;;;; -131E8;EGYPTIAN HIEROGLYPH M039;Lo;0;L;;;;;N;;;;; -131E9;EGYPTIAN HIEROGLYPH M040;Lo;0;L;;;;;N;;;;; -131EA;EGYPTIAN HIEROGLYPH M040A;Lo;0;L;;;;;N;;;;; -131EB;EGYPTIAN HIEROGLYPH M041;Lo;0;L;;;;;N;;;;; -131EC;EGYPTIAN HIEROGLYPH M042;Lo;0;L;;;;;N;;;;; -131ED;EGYPTIAN HIEROGLYPH M043;Lo;0;L;;;;;N;;;;; -131EE;EGYPTIAN HIEROGLYPH M044;Lo;0;L;;;;;N;;;;; -131EF;EGYPTIAN HIEROGLYPH N001;Lo;0;L;;;;;N;;;;; -131F0;EGYPTIAN HIEROGLYPH N002;Lo;0;L;;;;;N;;;;; -131F1;EGYPTIAN HIEROGLYPH N003;Lo;0;L;;;;;N;;;;; -131F2;EGYPTIAN HIEROGLYPH N004;Lo;0;L;;;;;N;;;;; -131F3;EGYPTIAN HIEROGLYPH N005;Lo;0;L;;;;;N;;;;; -131F4;EGYPTIAN HIEROGLYPH N006;Lo;0;L;;;;;N;;;;; -131F5;EGYPTIAN HIEROGLYPH N007;Lo;0;L;;;;;N;;;;; -131F6;EGYPTIAN HIEROGLYPH N008;Lo;0;L;;;;;N;;;;; -131F7;EGYPTIAN HIEROGLYPH N009;Lo;0;L;;;;;N;;;;; -131F8;EGYPTIAN HIEROGLYPH N010;Lo;0;L;;;;;N;;;;; -131F9;EGYPTIAN HIEROGLYPH N011;Lo;0;L;;;;;N;;;;; -131FA;EGYPTIAN HIEROGLYPH N012;Lo;0;L;;;;;N;;;;; -131FB;EGYPTIAN HIEROGLYPH N013;Lo;0;L;;;;;N;;;;; -131FC;EGYPTIAN HIEROGLYPH N014;Lo;0;L;;;;;N;;;;; -131FD;EGYPTIAN HIEROGLYPH N015;Lo;0;L;;;;;N;;;;; -131FE;EGYPTIAN HIEROGLYPH N016;Lo;0;L;;;;;N;;;;; -131FF;EGYPTIAN HIEROGLYPH N017;Lo;0;L;;;;;N;;;;; -13200;EGYPTIAN HIEROGLYPH N018;Lo;0;L;;;;;N;;;;; -13201;EGYPTIAN HIEROGLYPH N018A;Lo;0;L;;;;;N;;;;; -13202;EGYPTIAN HIEROGLYPH N018B;Lo;0;L;;;;;N;;;;; -13203;EGYPTIAN HIEROGLYPH N019;Lo;0;L;;;;;N;;;;; -13204;EGYPTIAN HIEROGLYPH N020;Lo;0;L;;;;;N;;;;; -13205;EGYPTIAN HIEROGLYPH N021;Lo;0;L;;;;;N;;;;; -13206;EGYPTIAN HIEROGLYPH N022;Lo;0;L;;;;;N;;;;; -13207;EGYPTIAN HIEROGLYPH N023;Lo;0;L;;;;;N;;;;; -13208;EGYPTIAN HIEROGLYPH N024;Lo;0;L;;;;;N;;;;; -13209;EGYPTIAN HIEROGLYPH N025;Lo;0;L;;;;;N;;;;; -1320A;EGYPTIAN HIEROGLYPH N025A;Lo;0;L;;;;;N;;;;; -1320B;EGYPTIAN HIEROGLYPH N026;Lo;0;L;;;;;N;;;;; -1320C;EGYPTIAN HIEROGLYPH N027;Lo;0;L;;;;;N;;;;; -1320D;EGYPTIAN HIEROGLYPH N028;Lo;0;L;;;;;N;;;;; -1320E;EGYPTIAN HIEROGLYPH N029;Lo;0;L;;;;;N;;;;; -1320F;EGYPTIAN HIEROGLYPH N030;Lo;0;L;;;;;N;;;;; -13210;EGYPTIAN HIEROGLYPH N031;Lo;0;L;;;;;N;;;;; -13211;EGYPTIAN HIEROGLYPH N032;Lo;0;L;;;;;N;;;;; -13212;EGYPTIAN HIEROGLYPH N033;Lo;0;L;;;;;N;;;;; -13213;EGYPTIAN HIEROGLYPH N033A;Lo;0;L;;;;;N;;;;; -13214;EGYPTIAN HIEROGLYPH N034;Lo;0;L;;;;;N;;;;; -13215;EGYPTIAN HIEROGLYPH N034A;Lo;0;L;;;;;N;;;;; -13216;EGYPTIAN HIEROGLYPH N035;Lo;0;L;;;;;N;;;;; -13217;EGYPTIAN HIEROGLYPH N035A;Lo;0;L;;;;;N;;;;; -13218;EGYPTIAN HIEROGLYPH N036;Lo;0;L;;;;;N;;;;; -13219;EGYPTIAN HIEROGLYPH N037;Lo;0;L;;;;;N;;;;; -1321A;EGYPTIAN HIEROGLYPH N037A;Lo;0;L;;;;;N;;;;; -1321B;EGYPTIAN HIEROGLYPH N038;Lo;0;L;;;;;N;;;;; -1321C;EGYPTIAN HIEROGLYPH N039;Lo;0;L;;;;;N;;;;; -1321D;EGYPTIAN HIEROGLYPH N040;Lo;0;L;;;;;N;;;;; -1321E;EGYPTIAN HIEROGLYPH N041;Lo;0;L;;;;;N;;;;; -1321F;EGYPTIAN HIEROGLYPH N042;Lo;0;L;;;;;N;;;;; -13220;EGYPTIAN HIEROGLYPH NL001;Lo;0;L;;;;;N;;;;; -13221;EGYPTIAN HIEROGLYPH NL002;Lo;0;L;;;;;N;;;;; -13222;EGYPTIAN HIEROGLYPH NL003;Lo;0;L;;;;;N;;;;; -13223;EGYPTIAN HIEROGLYPH NL004;Lo;0;L;;;;;N;;;;; -13224;EGYPTIAN HIEROGLYPH NL005;Lo;0;L;;;;;N;;;;; -13225;EGYPTIAN HIEROGLYPH NL005A;Lo;0;L;;;;;N;;;;; -13226;EGYPTIAN HIEROGLYPH NL006;Lo;0;L;;;;;N;;;;; -13227;EGYPTIAN HIEROGLYPH NL007;Lo;0;L;;;;;N;;;;; -13228;EGYPTIAN HIEROGLYPH NL008;Lo;0;L;;;;;N;;;;; -13229;EGYPTIAN HIEROGLYPH NL009;Lo;0;L;;;;;N;;;;; -1322A;EGYPTIAN HIEROGLYPH NL010;Lo;0;L;;;;;N;;;;; -1322B;EGYPTIAN HIEROGLYPH NL011;Lo;0;L;;;;;N;;;;; -1322C;EGYPTIAN HIEROGLYPH NL012;Lo;0;L;;;;;N;;;;; -1322D;EGYPTIAN HIEROGLYPH NL013;Lo;0;L;;;;;N;;;;; -1322E;EGYPTIAN HIEROGLYPH NL014;Lo;0;L;;;;;N;;;;; -1322F;EGYPTIAN HIEROGLYPH NL015;Lo;0;L;;;;;N;;;;; -13230;EGYPTIAN HIEROGLYPH NL016;Lo;0;L;;;;;N;;;;; -13231;EGYPTIAN HIEROGLYPH NL017;Lo;0;L;;;;;N;;;;; -13232;EGYPTIAN HIEROGLYPH NL017A;Lo;0;L;;;;;N;;;;; -13233;EGYPTIAN HIEROGLYPH NL018;Lo;0;L;;;;;N;;;;; -13234;EGYPTIAN HIEROGLYPH NL019;Lo;0;L;;;;;N;;;;; -13235;EGYPTIAN HIEROGLYPH NL020;Lo;0;L;;;;;N;;;;; -13236;EGYPTIAN HIEROGLYPH NU001;Lo;0;L;;;;;N;;;;; -13237;EGYPTIAN HIEROGLYPH NU002;Lo;0;L;;;;;N;;;;; -13238;EGYPTIAN HIEROGLYPH NU003;Lo;0;L;;;;;N;;;;; -13239;EGYPTIAN HIEROGLYPH NU004;Lo;0;L;;;;;N;;;;; -1323A;EGYPTIAN HIEROGLYPH NU005;Lo;0;L;;;;;N;;;;; -1323B;EGYPTIAN HIEROGLYPH NU006;Lo;0;L;;;;;N;;;;; -1323C;EGYPTIAN HIEROGLYPH NU007;Lo;0;L;;;;;N;;;;; -1323D;EGYPTIAN HIEROGLYPH NU008;Lo;0;L;;;;;N;;;;; -1323E;EGYPTIAN HIEROGLYPH NU009;Lo;0;L;;;;;N;;;;; -1323F;EGYPTIAN HIEROGLYPH NU010;Lo;0;L;;;;;N;;;;; -13240;EGYPTIAN HIEROGLYPH NU010A;Lo;0;L;;;;;N;;;;; -13241;EGYPTIAN HIEROGLYPH NU011;Lo;0;L;;;;;N;;;;; -13242;EGYPTIAN HIEROGLYPH NU011A;Lo;0;L;;;;;N;;;;; -13243;EGYPTIAN HIEROGLYPH NU012;Lo;0;L;;;;;N;;;;; -13244;EGYPTIAN HIEROGLYPH NU013;Lo;0;L;;;;;N;;;;; -13245;EGYPTIAN HIEROGLYPH NU014;Lo;0;L;;;;;N;;;;; -13246;EGYPTIAN HIEROGLYPH NU015;Lo;0;L;;;;;N;;;;; -13247;EGYPTIAN HIEROGLYPH NU016;Lo;0;L;;;;;N;;;;; -13248;EGYPTIAN HIEROGLYPH NU017;Lo;0;L;;;;;N;;;;; -13249;EGYPTIAN HIEROGLYPH NU018;Lo;0;L;;;;;N;;;;; -1324A;EGYPTIAN HIEROGLYPH NU018A;Lo;0;L;;;;;N;;;;; -1324B;EGYPTIAN HIEROGLYPH NU019;Lo;0;L;;;;;N;;;;; -1324C;EGYPTIAN HIEROGLYPH NU020;Lo;0;L;;;;;N;;;;; -1324D;EGYPTIAN HIEROGLYPH NU021;Lo;0;L;;;;;N;;;;; -1324E;EGYPTIAN HIEROGLYPH NU022;Lo;0;L;;;;;N;;;;; -1324F;EGYPTIAN HIEROGLYPH NU022A;Lo;0;L;;;;;N;;;;; -13250;EGYPTIAN HIEROGLYPH O001;Lo;0;L;;;;;N;;;;; -13251;EGYPTIAN HIEROGLYPH O001A;Lo;0;L;;;;;N;;;;; -13252;EGYPTIAN HIEROGLYPH O002;Lo;0;L;;;;;N;;;;; -13253;EGYPTIAN HIEROGLYPH O003;Lo;0;L;;;;;N;;;;; -13254;EGYPTIAN HIEROGLYPH O004;Lo;0;L;;;;;N;;;;; -13255;EGYPTIAN HIEROGLYPH O005;Lo;0;L;;;;;N;;;;; -13256;EGYPTIAN HIEROGLYPH O005A;Lo;0;L;;;;;N;;;;; -13257;EGYPTIAN HIEROGLYPH O006;Lo;0;L;;;;;N;;;;; -13258;EGYPTIAN HIEROGLYPH O006A;Lo;0;L;;;;;N;;;;; -13259;EGYPTIAN HIEROGLYPH O006B;Lo;0;L;;;;;N;;;;; -1325A;EGYPTIAN HIEROGLYPH O006C;Lo;0;L;;;;;N;;;;; -1325B;EGYPTIAN HIEROGLYPH O006D;Lo;0;L;;;;;N;;;;; -1325C;EGYPTIAN HIEROGLYPH O006E;Lo;0;L;;;;;N;;;;; -1325D;EGYPTIAN HIEROGLYPH O006F;Lo;0;L;;;;;N;;;;; -1325E;EGYPTIAN HIEROGLYPH O007;Lo;0;L;;;;;N;;;;; -1325F;EGYPTIAN HIEROGLYPH O008;Lo;0;L;;;;;N;;;;; -13260;EGYPTIAN HIEROGLYPH O009;Lo;0;L;;;;;N;;;;; -13261;EGYPTIAN HIEROGLYPH O010;Lo;0;L;;;;;N;;;;; -13262;EGYPTIAN HIEROGLYPH O010A;Lo;0;L;;;;;N;;;;; -13263;EGYPTIAN HIEROGLYPH O010B;Lo;0;L;;;;;N;;;;; -13264;EGYPTIAN HIEROGLYPH O010C;Lo;0;L;;;;;N;;;;; -13265;EGYPTIAN HIEROGLYPH O011;Lo;0;L;;;;;N;;;;; -13266;EGYPTIAN HIEROGLYPH O012;Lo;0;L;;;;;N;;;;; -13267;EGYPTIAN HIEROGLYPH O013;Lo;0;L;;;;;N;;;;; -13268;EGYPTIAN HIEROGLYPH O014;Lo;0;L;;;;;N;;;;; -13269;EGYPTIAN HIEROGLYPH O015;Lo;0;L;;;;;N;;;;; -1326A;EGYPTIAN HIEROGLYPH O016;Lo;0;L;;;;;N;;;;; -1326B;EGYPTIAN HIEROGLYPH O017;Lo;0;L;;;;;N;;;;; -1326C;EGYPTIAN HIEROGLYPH O018;Lo;0;L;;;;;N;;;;; -1326D;EGYPTIAN HIEROGLYPH O019;Lo;0;L;;;;;N;;;;; -1326E;EGYPTIAN HIEROGLYPH O019A;Lo;0;L;;;;;N;;;;; -1326F;EGYPTIAN HIEROGLYPH O020;Lo;0;L;;;;;N;;;;; -13270;EGYPTIAN HIEROGLYPH O020A;Lo;0;L;;;;;N;;;;; -13271;EGYPTIAN HIEROGLYPH O021;Lo;0;L;;;;;N;;;;; -13272;EGYPTIAN HIEROGLYPH O022;Lo;0;L;;;;;N;;;;; -13273;EGYPTIAN HIEROGLYPH O023;Lo;0;L;;;;;N;;;;; -13274;EGYPTIAN HIEROGLYPH O024;Lo;0;L;;;;;N;;;;; -13275;EGYPTIAN HIEROGLYPH O024A;Lo;0;L;;;;;N;;;;; -13276;EGYPTIAN HIEROGLYPH O025;Lo;0;L;;;;;N;;;;; -13277;EGYPTIAN HIEROGLYPH O025A;Lo;0;L;;;;;N;;;;; -13278;EGYPTIAN HIEROGLYPH O026;Lo;0;L;;;;;N;;;;; -13279;EGYPTIAN HIEROGLYPH O027;Lo;0;L;;;;;N;;;;; -1327A;EGYPTIAN HIEROGLYPH O028;Lo;0;L;;;;;N;;;;; -1327B;EGYPTIAN HIEROGLYPH O029;Lo;0;L;;;;;N;;;;; -1327C;EGYPTIAN HIEROGLYPH O029A;Lo;0;L;;;;;N;;;;; -1327D;EGYPTIAN HIEROGLYPH O030;Lo;0;L;;;;;N;;;;; -1327E;EGYPTIAN HIEROGLYPH O030A;Lo;0;L;;;;;N;;;;; -1327F;EGYPTIAN HIEROGLYPH O031;Lo;0;L;;;;;N;;;;; -13280;EGYPTIAN HIEROGLYPH O032;Lo;0;L;;;;;N;;;;; -13281;EGYPTIAN HIEROGLYPH O033;Lo;0;L;;;;;N;;;;; -13282;EGYPTIAN HIEROGLYPH O033A;Lo;0;L;;;;;N;;;;; -13283;EGYPTIAN HIEROGLYPH O034;Lo;0;L;;;;;N;;;;; -13284;EGYPTIAN HIEROGLYPH O035;Lo;0;L;;;;;N;;;;; -13285;EGYPTIAN HIEROGLYPH O036;Lo;0;L;;;;;N;;;;; -13286;EGYPTIAN HIEROGLYPH O036A;Lo;0;L;;;;;N;;;;; -13287;EGYPTIAN HIEROGLYPH O036B;Lo;0;L;;;;;N;;;;; -13288;EGYPTIAN HIEROGLYPH O036C;Lo;0;L;;;;;N;;;;; -13289;EGYPTIAN HIEROGLYPH O036D;Lo;0;L;;;;;N;;;;; -1328A;EGYPTIAN HIEROGLYPH O037;Lo;0;L;;;;;N;;;;; -1328B;EGYPTIAN HIEROGLYPH O038;Lo;0;L;;;;;N;;;;; -1328C;EGYPTIAN HIEROGLYPH O039;Lo;0;L;;;;;N;;;;; -1328D;EGYPTIAN HIEROGLYPH O040;Lo;0;L;;;;;N;;;;; -1328E;EGYPTIAN HIEROGLYPH O041;Lo;0;L;;;;;N;;;;; -1328F;EGYPTIAN HIEROGLYPH O042;Lo;0;L;;;;;N;;;;; -13290;EGYPTIAN HIEROGLYPH O043;Lo;0;L;;;;;N;;;;; -13291;EGYPTIAN HIEROGLYPH O044;Lo;0;L;;;;;N;;;;; -13292;EGYPTIAN HIEROGLYPH O045;Lo;0;L;;;;;N;;;;; -13293;EGYPTIAN HIEROGLYPH O046;Lo;0;L;;;;;N;;;;; -13294;EGYPTIAN HIEROGLYPH O047;Lo;0;L;;;;;N;;;;; -13295;EGYPTIAN HIEROGLYPH O048;Lo;0;L;;;;;N;;;;; -13296;EGYPTIAN HIEROGLYPH O049;Lo;0;L;;;;;N;;;;; -13297;EGYPTIAN HIEROGLYPH O050;Lo;0;L;;;;;N;;;;; -13298;EGYPTIAN HIEROGLYPH O050A;Lo;0;L;;;;;N;;;;; -13299;EGYPTIAN HIEROGLYPH O050B;Lo;0;L;;;;;N;;;;; -1329A;EGYPTIAN HIEROGLYPH O051;Lo;0;L;;;;;N;;;;; -1329B;EGYPTIAN HIEROGLYPH P001;Lo;0;L;;;;;N;;;;; -1329C;EGYPTIAN HIEROGLYPH P001A;Lo;0;L;;;;;N;;;;; -1329D;EGYPTIAN HIEROGLYPH P002;Lo;0;L;;;;;N;;;;; -1329E;EGYPTIAN HIEROGLYPH P003;Lo;0;L;;;;;N;;;;; -1329F;EGYPTIAN HIEROGLYPH P003A;Lo;0;L;;;;;N;;;;; -132A0;EGYPTIAN HIEROGLYPH P004;Lo;0;L;;;;;N;;;;; -132A1;EGYPTIAN HIEROGLYPH P005;Lo;0;L;;;;;N;;;;; -132A2;EGYPTIAN HIEROGLYPH P006;Lo;0;L;;;;;N;;;;; -132A3;EGYPTIAN HIEROGLYPH P007;Lo;0;L;;;;;N;;;;; -132A4;EGYPTIAN HIEROGLYPH P008;Lo;0;L;;;;;N;;;;; -132A5;EGYPTIAN HIEROGLYPH P009;Lo;0;L;;;;;N;;;;; -132A6;EGYPTIAN HIEROGLYPH P010;Lo;0;L;;;;;N;;;;; -132A7;EGYPTIAN HIEROGLYPH P011;Lo;0;L;;;;;N;;;;; -132A8;EGYPTIAN HIEROGLYPH Q001;Lo;0;L;;;;;N;;;;; -132A9;EGYPTIAN HIEROGLYPH Q002;Lo;0;L;;;;;N;;;;; -132AA;EGYPTIAN HIEROGLYPH Q003;Lo;0;L;;;;;N;;;;; -132AB;EGYPTIAN HIEROGLYPH Q004;Lo;0;L;;;;;N;;;;; -132AC;EGYPTIAN HIEROGLYPH Q005;Lo;0;L;;;;;N;;;;; -132AD;EGYPTIAN HIEROGLYPH Q006;Lo;0;L;;;;;N;;;;; -132AE;EGYPTIAN HIEROGLYPH Q007;Lo;0;L;;;;;N;;;;; -132AF;EGYPTIAN HIEROGLYPH R001;Lo;0;L;;;;;N;;;;; -132B0;EGYPTIAN HIEROGLYPH R002;Lo;0;L;;;;;N;;;;; -132B1;EGYPTIAN HIEROGLYPH R002A;Lo;0;L;;;;;N;;;;; -132B2;EGYPTIAN HIEROGLYPH R003;Lo;0;L;;;;;N;;;;; -132B3;EGYPTIAN HIEROGLYPH R003A;Lo;0;L;;;;;N;;;;; -132B4;EGYPTIAN HIEROGLYPH R003B;Lo;0;L;;;;;N;;;;; -132B5;EGYPTIAN HIEROGLYPH R004;Lo;0;L;;;;;N;;;;; -132B6;EGYPTIAN HIEROGLYPH R005;Lo;0;L;;;;;N;;;;; -132B7;EGYPTIAN HIEROGLYPH R006;Lo;0;L;;;;;N;;;;; -132B8;EGYPTIAN HIEROGLYPH R007;Lo;0;L;;;;;N;;;;; -132B9;EGYPTIAN HIEROGLYPH R008;Lo;0;L;;;;;N;;;;; -132BA;EGYPTIAN HIEROGLYPH R009;Lo;0;L;;;;;N;;;;; -132BB;EGYPTIAN HIEROGLYPH R010;Lo;0;L;;;;;N;;;;; -132BC;EGYPTIAN HIEROGLYPH R010A;Lo;0;L;;;;;N;;;;; -132BD;EGYPTIAN HIEROGLYPH R011;Lo;0;L;;;;;N;;;;; -132BE;EGYPTIAN HIEROGLYPH R012;Lo;0;L;;;;;N;;;;; -132BF;EGYPTIAN HIEROGLYPH R013;Lo;0;L;;;;;N;;;;; -132C0;EGYPTIAN HIEROGLYPH R014;Lo;0;L;;;;;N;;;;; -132C1;EGYPTIAN HIEROGLYPH R015;Lo;0;L;;;;;N;;;;; -132C2;EGYPTIAN HIEROGLYPH R016;Lo;0;L;;;;;N;;;;; -132C3;EGYPTIAN HIEROGLYPH R016A;Lo;0;L;;;;;N;;;;; -132C4;EGYPTIAN HIEROGLYPH R017;Lo;0;L;;;;;N;;;;; -132C5;EGYPTIAN HIEROGLYPH R018;Lo;0;L;;;;;N;;;;; -132C6;EGYPTIAN HIEROGLYPH R019;Lo;0;L;;;;;N;;;;; -132C7;EGYPTIAN HIEROGLYPH R020;Lo;0;L;;;;;N;;;;; -132C8;EGYPTIAN HIEROGLYPH R021;Lo;0;L;;;;;N;;;;; -132C9;EGYPTIAN HIEROGLYPH R022;Lo;0;L;;;;;N;;;;; -132CA;EGYPTIAN HIEROGLYPH R023;Lo;0;L;;;;;N;;;;; -132CB;EGYPTIAN HIEROGLYPH R024;Lo;0;L;;;;;N;;;;; -132CC;EGYPTIAN HIEROGLYPH R025;Lo;0;L;;;;;N;;;;; -132CD;EGYPTIAN HIEROGLYPH R026;Lo;0;L;;;;;N;;;;; -132CE;EGYPTIAN HIEROGLYPH R027;Lo;0;L;;;;;N;;;;; -132CF;EGYPTIAN HIEROGLYPH R028;Lo;0;L;;;;;N;;;;; -132D0;EGYPTIAN HIEROGLYPH R029;Lo;0;L;;;;;N;;;;; -132D1;EGYPTIAN HIEROGLYPH S001;Lo;0;L;;;;;N;;;;; -132D2;EGYPTIAN HIEROGLYPH S002;Lo;0;L;;;;;N;;;;; -132D3;EGYPTIAN HIEROGLYPH S002A;Lo;0;L;;;;;N;;;;; -132D4;EGYPTIAN HIEROGLYPH S003;Lo;0;L;;;;;N;;;;; -132D5;EGYPTIAN HIEROGLYPH S004;Lo;0;L;;;;;N;;;;; -132D6;EGYPTIAN HIEROGLYPH S005;Lo;0;L;;;;;N;;;;; -132D7;EGYPTIAN HIEROGLYPH S006;Lo;0;L;;;;;N;;;;; -132D8;EGYPTIAN HIEROGLYPH S006A;Lo;0;L;;;;;N;;;;; -132D9;EGYPTIAN HIEROGLYPH S007;Lo;0;L;;;;;N;;;;; -132DA;EGYPTIAN HIEROGLYPH S008;Lo;0;L;;;;;N;;;;; -132DB;EGYPTIAN HIEROGLYPH S009;Lo;0;L;;;;;N;;;;; -132DC;EGYPTIAN HIEROGLYPH S010;Lo;0;L;;;;;N;;;;; -132DD;EGYPTIAN HIEROGLYPH S011;Lo;0;L;;;;;N;;;;; -132DE;EGYPTIAN HIEROGLYPH S012;Lo;0;L;;;;;N;;;;; -132DF;EGYPTIAN HIEROGLYPH S013;Lo;0;L;;;;;N;;;;; -132E0;EGYPTIAN HIEROGLYPH S014;Lo;0;L;;;;;N;;;;; -132E1;EGYPTIAN HIEROGLYPH S014A;Lo;0;L;;;;;N;;;;; -132E2;EGYPTIAN HIEROGLYPH S014B;Lo;0;L;;;;;N;;;;; -132E3;EGYPTIAN HIEROGLYPH S015;Lo;0;L;;;;;N;;;;; -132E4;EGYPTIAN HIEROGLYPH S016;Lo;0;L;;;;;N;;;;; -132E5;EGYPTIAN HIEROGLYPH S017;Lo;0;L;;;;;N;;;;; -132E6;EGYPTIAN HIEROGLYPH S017A;Lo;0;L;;;;;N;;;;; -132E7;EGYPTIAN HIEROGLYPH S018;Lo;0;L;;;;;N;;;;; -132E8;EGYPTIAN HIEROGLYPH S019;Lo;0;L;;;;;N;;;;; -132E9;EGYPTIAN HIEROGLYPH S020;Lo;0;L;;;;;N;;;;; -132EA;EGYPTIAN HIEROGLYPH S021;Lo;0;L;;;;;N;;;;; -132EB;EGYPTIAN HIEROGLYPH S022;Lo;0;L;;;;;N;;;;; -132EC;EGYPTIAN HIEROGLYPH S023;Lo;0;L;;;;;N;;;;; -132ED;EGYPTIAN HIEROGLYPH S024;Lo;0;L;;;;;N;;;;; -132EE;EGYPTIAN HIEROGLYPH S025;Lo;0;L;;;;;N;;;;; -132EF;EGYPTIAN HIEROGLYPH S026;Lo;0;L;;;;;N;;;;; -132F0;EGYPTIAN HIEROGLYPH S026A;Lo;0;L;;;;;N;;;;; -132F1;EGYPTIAN HIEROGLYPH S026B;Lo;0;L;;;;;N;;;;; -132F2;EGYPTIAN HIEROGLYPH S027;Lo;0;L;;;;;N;;;;; -132F3;EGYPTIAN HIEROGLYPH S028;Lo;0;L;;;;;N;;;;; -132F4;EGYPTIAN HIEROGLYPH S029;Lo;0;L;;;;;N;;;;; -132F5;EGYPTIAN HIEROGLYPH S030;Lo;0;L;;;;;N;;;;; -132F6;EGYPTIAN HIEROGLYPH S031;Lo;0;L;;;;;N;;;;; -132F7;EGYPTIAN HIEROGLYPH S032;Lo;0;L;;;;;N;;;;; -132F8;EGYPTIAN HIEROGLYPH S033;Lo;0;L;;;;;N;;;;; -132F9;EGYPTIAN HIEROGLYPH S034;Lo;0;L;;;;;N;;;;; -132FA;EGYPTIAN HIEROGLYPH S035;Lo;0;L;;;;;N;;;;; -132FB;EGYPTIAN HIEROGLYPH S035A;Lo;0;L;;;;;N;;;;; -132FC;EGYPTIAN HIEROGLYPH S036;Lo;0;L;;;;;N;;;;; -132FD;EGYPTIAN HIEROGLYPH S037;Lo;0;L;;;;;N;;;;; -132FE;EGYPTIAN HIEROGLYPH S038;Lo;0;L;;;;;N;;;;; -132FF;EGYPTIAN HIEROGLYPH S039;Lo;0;L;;;;;N;;;;; -13300;EGYPTIAN HIEROGLYPH S040;Lo;0;L;;;;;N;;;;; -13301;EGYPTIAN HIEROGLYPH S041;Lo;0;L;;;;;N;;;;; -13302;EGYPTIAN HIEROGLYPH S042;Lo;0;L;;;;;N;;;;; -13303;EGYPTIAN HIEROGLYPH S043;Lo;0;L;;;;;N;;;;; -13304;EGYPTIAN HIEROGLYPH S044;Lo;0;L;;;;;N;;;;; -13305;EGYPTIAN HIEROGLYPH S045;Lo;0;L;;;;;N;;;;; -13306;EGYPTIAN HIEROGLYPH S046;Lo;0;L;;;;;N;;;;; -13307;EGYPTIAN HIEROGLYPH T001;Lo;0;L;;;;;N;;;;; -13308;EGYPTIAN HIEROGLYPH T002;Lo;0;L;;;;;N;;;;; -13309;EGYPTIAN HIEROGLYPH T003;Lo;0;L;;;;;N;;;;; -1330A;EGYPTIAN HIEROGLYPH T003A;Lo;0;L;;;;;N;;;;; -1330B;EGYPTIAN HIEROGLYPH T004;Lo;0;L;;;;;N;;;;; -1330C;EGYPTIAN HIEROGLYPH T005;Lo;0;L;;;;;N;;;;; -1330D;EGYPTIAN HIEROGLYPH T006;Lo;0;L;;;;;N;;;;; -1330E;EGYPTIAN HIEROGLYPH T007;Lo;0;L;;;;;N;;;;; -1330F;EGYPTIAN HIEROGLYPH T007A;Lo;0;L;;;;;N;;;;; -13310;EGYPTIAN HIEROGLYPH T008;Lo;0;L;;;;;N;;;;; -13311;EGYPTIAN HIEROGLYPH T008A;Lo;0;L;;;;;N;;;;; -13312;EGYPTIAN HIEROGLYPH T009;Lo;0;L;;;;;N;;;;; -13313;EGYPTIAN HIEROGLYPH T009A;Lo;0;L;;;;;N;;;;; -13314;EGYPTIAN HIEROGLYPH T010;Lo;0;L;;;;;N;;;;; -13315;EGYPTIAN HIEROGLYPH T011;Lo;0;L;;;;;N;;;;; -13316;EGYPTIAN HIEROGLYPH T011A;Lo;0;L;;;;;N;;;;; -13317;EGYPTIAN HIEROGLYPH T012;Lo;0;L;;;;;N;;;;; -13318;EGYPTIAN HIEROGLYPH T013;Lo;0;L;;;;;N;;;;; -13319;EGYPTIAN HIEROGLYPH T014;Lo;0;L;;;;;N;;;;; -1331A;EGYPTIAN HIEROGLYPH T015;Lo;0;L;;;;;N;;;;; -1331B;EGYPTIAN HIEROGLYPH T016;Lo;0;L;;;;;N;;;;; -1331C;EGYPTIAN HIEROGLYPH T016A;Lo;0;L;;;;;N;;;;; -1331D;EGYPTIAN HIEROGLYPH T017;Lo;0;L;;;;;N;;;;; -1331E;EGYPTIAN HIEROGLYPH T018;Lo;0;L;;;;;N;;;;; -1331F;EGYPTIAN HIEROGLYPH T019;Lo;0;L;;;;;N;;;;; -13320;EGYPTIAN HIEROGLYPH T020;Lo;0;L;;;;;N;;;;; -13321;EGYPTIAN HIEROGLYPH T021;Lo;0;L;;;;;N;;;;; -13322;EGYPTIAN HIEROGLYPH T022;Lo;0;L;;;;;N;;;;; -13323;EGYPTIAN HIEROGLYPH T023;Lo;0;L;;;;;N;;;;; -13324;EGYPTIAN HIEROGLYPH T024;Lo;0;L;;;;;N;;;;; -13325;EGYPTIAN HIEROGLYPH T025;Lo;0;L;;;;;N;;;;; -13326;EGYPTIAN HIEROGLYPH T026;Lo;0;L;;;;;N;;;;; -13327;EGYPTIAN HIEROGLYPH T027;Lo;0;L;;;;;N;;;;; -13328;EGYPTIAN HIEROGLYPH T028;Lo;0;L;;;;;N;;;;; -13329;EGYPTIAN HIEROGLYPH T029;Lo;0;L;;;;;N;;;;; -1332A;EGYPTIAN HIEROGLYPH T030;Lo;0;L;;;;;N;;;;; -1332B;EGYPTIAN HIEROGLYPH T031;Lo;0;L;;;;;N;;;;; -1332C;EGYPTIAN HIEROGLYPH T032;Lo;0;L;;;;;N;;;;; -1332D;EGYPTIAN HIEROGLYPH T032A;Lo;0;L;;;;;N;;;;; -1332E;EGYPTIAN HIEROGLYPH T033;Lo;0;L;;;;;N;;;;; -1332F;EGYPTIAN HIEROGLYPH T033A;Lo;0;L;;;;;N;;;;; -13330;EGYPTIAN HIEROGLYPH T034;Lo;0;L;;;;;N;;;;; -13331;EGYPTIAN HIEROGLYPH T035;Lo;0;L;;;;;N;;;;; -13332;EGYPTIAN HIEROGLYPH T036;Lo;0;L;;;;;N;;;;; -13333;EGYPTIAN HIEROGLYPH U001;Lo;0;L;;;;;N;;;;; -13334;EGYPTIAN HIEROGLYPH U002;Lo;0;L;;;;;N;;;;; -13335;EGYPTIAN HIEROGLYPH U003;Lo;0;L;;;;;N;;;;; -13336;EGYPTIAN HIEROGLYPH U004;Lo;0;L;;;;;N;;;;; -13337;EGYPTIAN HIEROGLYPH U005;Lo;0;L;;;;;N;;;;; -13338;EGYPTIAN HIEROGLYPH U006;Lo;0;L;;;;;N;;;;; -13339;EGYPTIAN HIEROGLYPH U006A;Lo;0;L;;;;;N;;;;; -1333A;EGYPTIAN HIEROGLYPH U006B;Lo;0;L;;;;;N;;;;; -1333B;EGYPTIAN HIEROGLYPH U007;Lo;0;L;;;;;N;;;;; -1333C;EGYPTIAN HIEROGLYPH U008;Lo;0;L;;;;;N;;;;; -1333D;EGYPTIAN HIEROGLYPH U009;Lo;0;L;;;;;N;;;;; -1333E;EGYPTIAN HIEROGLYPH U010;Lo;0;L;;;;;N;;;;; -1333F;EGYPTIAN HIEROGLYPH U011;Lo;0;L;;;;;N;;;;; -13340;EGYPTIAN HIEROGLYPH U012;Lo;0;L;;;;;N;;;;; -13341;EGYPTIAN HIEROGLYPH U013;Lo;0;L;;;;;N;;;;; -13342;EGYPTIAN HIEROGLYPH U014;Lo;0;L;;;;;N;;;;; -13343;EGYPTIAN HIEROGLYPH U015;Lo;0;L;;;;;N;;;;; -13344;EGYPTIAN HIEROGLYPH U016;Lo;0;L;;;;;N;;;;; -13345;EGYPTIAN HIEROGLYPH U017;Lo;0;L;;;;;N;;;;; -13346;EGYPTIAN HIEROGLYPH U018;Lo;0;L;;;;;N;;;;; -13347;EGYPTIAN HIEROGLYPH U019;Lo;0;L;;;;;N;;;;; -13348;EGYPTIAN HIEROGLYPH U020;Lo;0;L;;;;;N;;;;; -13349;EGYPTIAN HIEROGLYPH U021;Lo;0;L;;;;;N;;;;; -1334A;EGYPTIAN HIEROGLYPH U022;Lo;0;L;;;;;N;;;;; -1334B;EGYPTIAN HIEROGLYPH U023;Lo;0;L;;;;;N;;;;; -1334C;EGYPTIAN HIEROGLYPH U023A;Lo;0;L;;;;;N;;;;; -1334D;EGYPTIAN HIEROGLYPH U024;Lo;0;L;;;;;N;;;;; -1334E;EGYPTIAN HIEROGLYPH U025;Lo;0;L;;;;;N;;;;; -1334F;EGYPTIAN HIEROGLYPH U026;Lo;0;L;;;;;N;;;;; -13350;EGYPTIAN HIEROGLYPH U027;Lo;0;L;;;;;N;;;;; -13351;EGYPTIAN HIEROGLYPH U028;Lo;0;L;;;;;N;;;;; -13352;EGYPTIAN HIEROGLYPH U029;Lo;0;L;;;;;N;;;;; -13353;EGYPTIAN HIEROGLYPH U029A;Lo;0;L;;;;;N;;;;; -13354;EGYPTIAN HIEROGLYPH U030;Lo;0;L;;;;;N;;;;; -13355;EGYPTIAN HIEROGLYPH U031;Lo;0;L;;;;;N;;;;; -13356;EGYPTIAN HIEROGLYPH U032;Lo;0;L;;;;;N;;;;; -13357;EGYPTIAN HIEROGLYPH U032A;Lo;0;L;;;;;N;;;;; -13358;EGYPTIAN HIEROGLYPH U033;Lo;0;L;;;;;N;;;;; -13359;EGYPTIAN HIEROGLYPH U034;Lo;0;L;;;;;N;;;;; -1335A;EGYPTIAN HIEROGLYPH U035;Lo;0;L;;;;;N;;;;; -1335B;EGYPTIAN HIEROGLYPH U036;Lo;0;L;;;;;N;;;;; -1335C;EGYPTIAN HIEROGLYPH U037;Lo;0;L;;;;;N;;;;; -1335D;EGYPTIAN HIEROGLYPH U038;Lo;0;L;;;;;N;;;;; -1335E;EGYPTIAN HIEROGLYPH U039;Lo;0;L;;;;;N;;;;; -1335F;EGYPTIAN HIEROGLYPH U040;Lo;0;L;;;;;N;;;;; -13360;EGYPTIAN HIEROGLYPH U041;Lo;0;L;;;;;N;;;;; -13361;EGYPTIAN HIEROGLYPH U042;Lo;0;L;;;;;N;;;;; -13362;EGYPTIAN HIEROGLYPH V001;Lo;0;L;;;;;N;;;;; -13363;EGYPTIAN HIEROGLYPH V001A;Lo;0;L;;;;;N;;;;; -13364;EGYPTIAN HIEROGLYPH V001B;Lo;0;L;;;;;N;;;;; -13365;EGYPTIAN HIEROGLYPH V001C;Lo;0;L;;;;;N;;;;; -13366;EGYPTIAN HIEROGLYPH V001D;Lo;0;L;;;;;N;;;;; -13367;EGYPTIAN HIEROGLYPH V001E;Lo;0;L;;;;;N;;;;; -13368;EGYPTIAN HIEROGLYPH V001F;Lo;0;L;;;;;N;;;;; -13369;EGYPTIAN HIEROGLYPH V001G;Lo;0;L;;;;;N;;;;; -1336A;EGYPTIAN HIEROGLYPH V001H;Lo;0;L;;;;;N;;;;; -1336B;EGYPTIAN HIEROGLYPH V001I;Lo;0;L;;;;;N;;;;; -1336C;EGYPTIAN HIEROGLYPH V002;Lo;0;L;;;;;N;;;;; -1336D;EGYPTIAN HIEROGLYPH V002A;Lo;0;L;;;;;N;;;;; -1336E;EGYPTIAN HIEROGLYPH V003;Lo;0;L;;;;;N;;;;; -1336F;EGYPTIAN HIEROGLYPH V004;Lo;0;L;;;;;N;;;;; -13370;EGYPTIAN HIEROGLYPH V005;Lo;0;L;;;;;N;;;;; -13371;EGYPTIAN HIEROGLYPH V006;Lo;0;L;;;;;N;;;;; -13372;EGYPTIAN HIEROGLYPH V007;Lo;0;L;;;;;N;;;;; -13373;EGYPTIAN HIEROGLYPH V007A;Lo;0;L;;;;;N;;;;; -13374;EGYPTIAN HIEROGLYPH V007B;Lo;0;L;;;;;N;;;;; -13375;EGYPTIAN HIEROGLYPH V008;Lo;0;L;;;;;N;;;;; -13376;EGYPTIAN HIEROGLYPH V009;Lo;0;L;;;;;N;;;;; -13377;EGYPTIAN HIEROGLYPH V010;Lo;0;L;;;;;N;;;;; -13378;EGYPTIAN HIEROGLYPH V011;Lo;0;L;;;;;N;;;;; -13379;EGYPTIAN HIEROGLYPH V011A;Lo;0;L;;;;;N;;;;; -1337A;EGYPTIAN HIEROGLYPH V011B;Lo;0;L;;;;;N;;;;; -1337B;EGYPTIAN HIEROGLYPH V011C;Lo;0;L;;;;;N;;;;; -1337C;EGYPTIAN HIEROGLYPH V012;Lo;0;L;;;;;N;;;;; -1337D;EGYPTIAN HIEROGLYPH V012A;Lo;0;L;;;;;N;;;;; -1337E;EGYPTIAN HIEROGLYPH V012B;Lo;0;L;;;;;N;;;;; -1337F;EGYPTIAN HIEROGLYPH V013;Lo;0;L;;;;;N;;;;; -13380;EGYPTIAN HIEROGLYPH V014;Lo;0;L;;;;;N;;;;; -13381;EGYPTIAN HIEROGLYPH V015;Lo;0;L;;;;;N;;;;; -13382;EGYPTIAN HIEROGLYPH V016;Lo;0;L;;;;;N;;;;; -13383;EGYPTIAN HIEROGLYPH V017;Lo;0;L;;;;;N;;;;; -13384;EGYPTIAN HIEROGLYPH V018;Lo;0;L;;;;;N;;;;; -13385;EGYPTIAN HIEROGLYPH V019;Lo;0;L;;;;;N;;;;; -13386;EGYPTIAN HIEROGLYPH V020;Lo;0;L;;;;;N;;;;; -13387;EGYPTIAN HIEROGLYPH V020A;Lo;0;L;;;;;N;;;;; -13388;EGYPTIAN HIEROGLYPH V020B;Lo;0;L;;;;;N;;;;; -13389;EGYPTIAN HIEROGLYPH V020C;Lo;0;L;;;;;N;;;;; -1338A;EGYPTIAN HIEROGLYPH V020D;Lo;0;L;;;;;N;;;;; -1338B;EGYPTIAN HIEROGLYPH V020E;Lo;0;L;;;;;N;;;;; -1338C;EGYPTIAN HIEROGLYPH V020F;Lo;0;L;;;;;N;;;;; -1338D;EGYPTIAN HIEROGLYPH V020G;Lo;0;L;;;;;N;;;;; -1338E;EGYPTIAN HIEROGLYPH V020H;Lo;0;L;;;;;N;;;;; -1338F;EGYPTIAN HIEROGLYPH V020I;Lo;0;L;;;;;N;;;;; -13390;EGYPTIAN HIEROGLYPH V020J;Lo;0;L;;;;;N;;;;; -13391;EGYPTIAN HIEROGLYPH V020K;Lo;0;L;;;;;N;;;;; -13392;EGYPTIAN HIEROGLYPH V020L;Lo;0;L;;;;;N;;;;; -13393;EGYPTIAN HIEROGLYPH V021;Lo;0;L;;;;;N;;;;; -13394;EGYPTIAN HIEROGLYPH V022;Lo;0;L;;;;;N;;;;; -13395;EGYPTIAN HIEROGLYPH V023;Lo;0;L;;;;;N;;;;; -13396;EGYPTIAN HIEROGLYPH V023A;Lo;0;L;;;;;N;;;;; -13397;EGYPTIAN HIEROGLYPH V024;Lo;0;L;;;;;N;;;;; -13398;EGYPTIAN HIEROGLYPH V025;Lo;0;L;;;;;N;;;;; -13399;EGYPTIAN HIEROGLYPH V026;Lo;0;L;;;;;N;;;;; -1339A;EGYPTIAN HIEROGLYPH V027;Lo;0;L;;;;;N;;;;; -1339B;EGYPTIAN HIEROGLYPH V028;Lo;0;L;;;;;N;;;;; -1339C;EGYPTIAN HIEROGLYPH V028A;Lo;0;L;;;;;N;;;;; -1339D;EGYPTIAN HIEROGLYPH V029;Lo;0;L;;;;;N;;;;; -1339E;EGYPTIAN HIEROGLYPH V029A;Lo;0;L;;;;;N;;;;; -1339F;EGYPTIAN HIEROGLYPH V030;Lo;0;L;;;;;N;;;;; -133A0;EGYPTIAN HIEROGLYPH V030A;Lo;0;L;;;;;N;;;;; -133A1;EGYPTIAN HIEROGLYPH V031;Lo;0;L;;;;;N;;;;; -133A2;EGYPTIAN HIEROGLYPH V031A;Lo;0;L;;;;;N;;;;; -133A3;EGYPTIAN HIEROGLYPH V032;Lo;0;L;;;;;N;;;;; -133A4;EGYPTIAN HIEROGLYPH V033;Lo;0;L;;;;;N;;;;; -133A5;EGYPTIAN HIEROGLYPH V033A;Lo;0;L;;;;;N;;;;; -133A6;EGYPTIAN HIEROGLYPH V034;Lo;0;L;;;;;N;;;;; -133A7;EGYPTIAN HIEROGLYPH V035;Lo;0;L;;;;;N;;;;; -133A8;EGYPTIAN HIEROGLYPH V036;Lo;0;L;;;;;N;;;;; -133A9;EGYPTIAN HIEROGLYPH V037;Lo;0;L;;;;;N;;;;; -133AA;EGYPTIAN HIEROGLYPH V037A;Lo;0;L;;;;;N;;;;; -133AB;EGYPTIAN HIEROGLYPH V038;Lo;0;L;;;;;N;;;;; -133AC;EGYPTIAN HIEROGLYPH V039;Lo;0;L;;;;;N;;;;; -133AD;EGYPTIAN HIEROGLYPH V040;Lo;0;L;;;;;N;;;;; -133AE;EGYPTIAN HIEROGLYPH V040A;Lo;0;L;;;;;N;;;;; -133AF;EGYPTIAN HIEROGLYPH W001;Lo;0;L;;;;;N;;;;; -133B0;EGYPTIAN HIEROGLYPH W002;Lo;0;L;;;;;N;;;;; -133B1;EGYPTIAN HIEROGLYPH W003;Lo;0;L;;;;;N;;;;; -133B2;EGYPTIAN HIEROGLYPH W003A;Lo;0;L;;;;;N;;;;; -133B3;EGYPTIAN HIEROGLYPH W004;Lo;0;L;;;;;N;;;;; -133B4;EGYPTIAN HIEROGLYPH W005;Lo;0;L;;;;;N;;;;; -133B5;EGYPTIAN HIEROGLYPH W006;Lo;0;L;;;;;N;;;;; -133B6;EGYPTIAN HIEROGLYPH W007;Lo;0;L;;;;;N;;;;; -133B7;EGYPTIAN HIEROGLYPH W008;Lo;0;L;;;;;N;;;;; -133B8;EGYPTIAN HIEROGLYPH W009;Lo;0;L;;;;;N;;;;; -133B9;EGYPTIAN HIEROGLYPH W009A;Lo;0;L;;;;;N;;;;; -133BA;EGYPTIAN HIEROGLYPH W010;Lo;0;L;;;;;N;;;;; -133BB;EGYPTIAN HIEROGLYPH W010A;Lo;0;L;;;;;N;;;;; -133BC;EGYPTIAN HIEROGLYPH W011;Lo;0;L;;;;;N;;;;; -133BD;EGYPTIAN HIEROGLYPH W012;Lo;0;L;;;;;N;;;;; -133BE;EGYPTIAN HIEROGLYPH W013;Lo;0;L;;;;;N;;;;; -133BF;EGYPTIAN HIEROGLYPH W014;Lo;0;L;;;;;N;;;;; -133C0;EGYPTIAN HIEROGLYPH W014A;Lo;0;L;;;;;N;;;;; -133C1;EGYPTIAN HIEROGLYPH W015;Lo;0;L;;;;;N;;;;; -133C2;EGYPTIAN HIEROGLYPH W016;Lo;0;L;;;;;N;;;;; -133C3;EGYPTIAN HIEROGLYPH W017;Lo;0;L;;;;;N;;;;; -133C4;EGYPTIAN HIEROGLYPH W017A;Lo;0;L;;;;;N;;;;; -133C5;EGYPTIAN HIEROGLYPH W018;Lo;0;L;;;;;N;;;;; -133C6;EGYPTIAN HIEROGLYPH W018A;Lo;0;L;;;;;N;;;;; -133C7;EGYPTIAN HIEROGLYPH W019;Lo;0;L;;;;;N;;;;; -133C8;EGYPTIAN HIEROGLYPH W020;Lo;0;L;;;;;N;;;;; -133C9;EGYPTIAN HIEROGLYPH W021;Lo;0;L;;;;;N;;;;; -133CA;EGYPTIAN HIEROGLYPH W022;Lo;0;L;;;;;N;;;;; -133CB;EGYPTIAN HIEROGLYPH W023;Lo;0;L;;;;;N;;;;; -133CC;EGYPTIAN HIEROGLYPH W024;Lo;0;L;;;;;N;;;;; -133CD;EGYPTIAN HIEROGLYPH W024A;Lo;0;L;;;;;N;;;;; -133CE;EGYPTIAN HIEROGLYPH W025;Lo;0;L;;;;;N;;;;; -133CF;EGYPTIAN HIEROGLYPH X001;Lo;0;L;;;;;N;;;;; -133D0;EGYPTIAN HIEROGLYPH X002;Lo;0;L;;;;;N;;;;; -133D1;EGYPTIAN HIEROGLYPH X003;Lo;0;L;;;;;N;;;;; -133D2;EGYPTIAN HIEROGLYPH X004;Lo;0;L;;;;;N;;;;; -133D3;EGYPTIAN HIEROGLYPH X004A;Lo;0;L;;;;;N;;;;; -133D4;EGYPTIAN HIEROGLYPH X004B;Lo;0;L;;;;;N;;;;; -133D5;EGYPTIAN HIEROGLYPH X005;Lo;0;L;;;;;N;;;;; -133D6;EGYPTIAN HIEROGLYPH X006;Lo;0;L;;;;;N;;;;; -133D7;EGYPTIAN HIEROGLYPH X006A;Lo;0;L;;;;;N;;;;; -133D8;EGYPTIAN HIEROGLYPH X007;Lo;0;L;;;;;N;;;;; -133D9;EGYPTIAN HIEROGLYPH X008;Lo;0;L;;;;;N;;;;; -133DA;EGYPTIAN HIEROGLYPH X008A;Lo;0;L;;;;;N;;;;; -133DB;EGYPTIAN HIEROGLYPH Y001;Lo;0;L;;;;;N;;;;; -133DC;EGYPTIAN HIEROGLYPH Y001A;Lo;0;L;;;;;N;;;;; -133DD;EGYPTIAN HIEROGLYPH Y002;Lo;0;L;;;;;N;;;;; -133DE;EGYPTIAN HIEROGLYPH Y003;Lo;0;L;;;;;N;;;;; -133DF;EGYPTIAN HIEROGLYPH Y004;Lo;0;L;;;;;N;;;;; -133E0;EGYPTIAN HIEROGLYPH Y005;Lo;0;L;;;;;N;;;;; -133E1;EGYPTIAN HIEROGLYPH Y006;Lo;0;L;;;;;N;;;;; -133E2;EGYPTIAN HIEROGLYPH Y007;Lo;0;L;;;;;N;;;;; -133E3;EGYPTIAN HIEROGLYPH Y008;Lo;0;L;;;;;N;;;;; -133E4;EGYPTIAN HIEROGLYPH Z001;Lo;0;L;;;;;N;;;;; -133E5;EGYPTIAN HIEROGLYPH Z002;Lo;0;L;;;;;N;;;;; -133E6;EGYPTIAN HIEROGLYPH Z002A;Lo;0;L;;;;;N;;;;; -133E7;EGYPTIAN HIEROGLYPH Z002B;Lo;0;L;;;;;N;;;;; -133E8;EGYPTIAN HIEROGLYPH Z002C;Lo;0;L;;;;;N;;;;; -133E9;EGYPTIAN HIEROGLYPH Z002D;Lo;0;L;;;;;N;;;;; -133EA;EGYPTIAN HIEROGLYPH Z003;Lo;0;L;;;;;N;;;;; -133EB;EGYPTIAN HIEROGLYPH Z003A;Lo;0;L;;;;;N;;;;; -133EC;EGYPTIAN HIEROGLYPH Z003B;Lo;0;L;;;;;N;;;;; -133ED;EGYPTIAN HIEROGLYPH Z004;Lo;0;L;;;;;N;;;;; -133EE;EGYPTIAN HIEROGLYPH Z004A;Lo;0;L;;;;;N;;;;; -133EF;EGYPTIAN HIEROGLYPH Z005;Lo;0;L;;;;;N;;;;; -133F0;EGYPTIAN HIEROGLYPH Z005A;Lo;0;L;;;;;N;;;;; -133F1;EGYPTIAN HIEROGLYPH Z006;Lo;0;L;;;;;N;;;;; -133F2;EGYPTIAN HIEROGLYPH Z007;Lo;0;L;;;;;N;;;;; -133F3;EGYPTIAN HIEROGLYPH Z008;Lo;0;L;;;;;N;;;;; -133F4;EGYPTIAN HIEROGLYPH Z009;Lo;0;L;;;;;N;;;;; -133F5;EGYPTIAN HIEROGLYPH Z010;Lo;0;L;;;;;N;;;;; -133F6;EGYPTIAN HIEROGLYPH Z011;Lo;0;L;;;;;N;;;;; -133F7;EGYPTIAN HIEROGLYPH Z012;Lo;0;L;;;;;N;;;;; -133F8;EGYPTIAN HIEROGLYPH Z013;Lo;0;L;;;;;N;;;;; -133F9;EGYPTIAN HIEROGLYPH Z014;Lo;0;L;;;;;N;;;;; -133FA;EGYPTIAN HIEROGLYPH Z015;Lo;0;L;;;;;N;;;;; -133FB;EGYPTIAN HIEROGLYPH Z015A;Lo;0;L;;;;;N;;;;; -133FC;EGYPTIAN HIEROGLYPH Z015B;Lo;0;L;;;;;N;;;;; -133FD;EGYPTIAN HIEROGLYPH Z015C;Lo;0;L;;;;;N;;;;; -133FE;EGYPTIAN HIEROGLYPH Z015D;Lo;0;L;;;;;N;;;;; -133FF;EGYPTIAN HIEROGLYPH Z015E;Lo;0;L;;;;;N;;;;; -13400;EGYPTIAN HIEROGLYPH Z015F;Lo;0;L;;;;;N;;;;; -13401;EGYPTIAN HIEROGLYPH Z015G;Lo;0;L;;;;;N;;;;; -13402;EGYPTIAN HIEROGLYPH Z015H;Lo;0;L;;;;;N;;;;; -13403;EGYPTIAN HIEROGLYPH Z015I;Lo;0;L;;;;;N;;;;; -13404;EGYPTIAN HIEROGLYPH Z016;Lo;0;L;;;;;N;;;;; -13405;EGYPTIAN HIEROGLYPH Z016A;Lo;0;L;;;;;N;;;;; -13406;EGYPTIAN HIEROGLYPH Z016B;Lo;0;L;;;;;N;;;;; -13407;EGYPTIAN HIEROGLYPH Z016C;Lo;0;L;;;;;N;;;;; -13408;EGYPTIAN HIEROGLYPH Z016D;Lo;0;L;;;;;N;;;;; -13409;EGYPTIAN HIEROGLYPH Z016E;Lo;0;L;;;;;N;;;;; -1340A;EGYPTIAN HIEROGLYPH Z016F;Lo;0;L;;;;;N;;;;; -1340B;EGYPTIAN HIEROGLYPH Z016G;Lo;0;L;;;;;N;;;;; -1340C;EGYPTIAN HIEROGLYPH Z016H;Lo;0;L;;;;;N;;;;; -1340D;EGYPTIAN HIEROGLYPH AA001;Lo;0;L;;;;;N;;;;; -1340E;EGYPTIAN HIEROGLYPH AA002;Lo;0;L;;;;;N;;;;; -1340F;EGYPTIAN HIEROGLYPH AA003;Lo;0;L;;;;;N;;;;; -13410;EGYPTIAN HIEROGLYPH AA004;Lo;0;L;;;;;N;;;;; -13411;EGYPTIAN HIEROGLYPH AA005;Lo;0;L;;;;;N;;;;; -13412;EGYPTIAN HIEROGLYPH AA006;Lo;0;L;;;;;N;;;;; -13413;EGYPTIAN HIEROGLYPH AA007;Lo;0;L;;;;;N;;;;; -13414;EGYPTIAN HIEROGLYPH AA007A;Lo;0;L;;;;;N;;;;; -13415;EGYPTIAN HIEROGLYPH AA007B;Lo;0;L;;;;;N;;;;; -13416;EGYPTIAN HIEROGLYPH AA008;Lo;0;L;;;;;N;;;;; -13417;EGYPTIAN HIEROGLYPH AA009;Lo;0;L;;;;;N;;;;; -13418;EGYPTIAN HIEROGLYPH AA010;Lo;0;L;;;;;N;;;;; -13419;EGYPTIAN HIEROGLYPH AA011;Lo;0;L;;;;;N;;;;; -1341A;EGYPTIAN HIEROGLYPH AA012;Lo;0;L;;;;;N;;;;; -1341B;EGYPTIAN HIEROGLYPH AA013;Lo;0;L;;;;;N;;;;; -1341C;EGYPTIAN HIEROGLYPH AA014;Lo;0;L;;;;;N;;;;; -1341D;EGYPTIAN HIEROGLYPH AA015;Lo;0;L;;;;;N;;;;; -1341E;EGYPTIAN HIEROGLYPH AA016;Lo;0;L;;;;;N;;;;; -1341F;EGYPTIAN HIEROGLYPH AA017;Lo;0;L;;;;;N;;;;; -13420;EGYPTIAN HIEROGLYPH AA018;Lo;0;L;;;;;N;;;;; -13421;EGYPTIAN HIEROGLYPH AA019;Lo;0;L;;;;;N;;;;; -13422;EGYPTIAN HIEROGLYPH AA020;Lo;0;L;;;;;N;;;;; -13423;EGYPTIAN HIEROGLYPH AA021;Lo;0;L;;;;;N;;;;; -13424;EGYPTIAN HIEROGLYPH AA022;Lo;0;L;;;;;N;;;;; -13425;EGYPTIAN HIEROGLYPH AA023;Lo;0;L;;;;;N;;;;; -13426;EGYPTIAN HIEROGLYPH AA024;Lo;0;L;;;;;N;;;;; -13427;EGYPTIAN HIEROGLYPH AA025;Lo;0;L;;;;;N;;;;; -13428;EGYPTIAN HIEROGLYPH AA026;Lo;0;L;;;;;N;;;;; -13429;EGYPTIAN HIEROGLYPH AA027;Lo;0;L;;;;;N;;;;; -1342A;EGYPTIAN HIEROGLYPH AA028;Lo;0;L;;;;;N;;;;; -1342B;EGYPTIAN HIEROGLYPH AA029;Lo;0;L;;;;;N;;;;; -1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;; -1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;; -1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;; -1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; -1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; -1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; -1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; -1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; -1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; -1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; -1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; -1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; -1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; -1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; -1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; -1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; -1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; -1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; -1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; -1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; -1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; -1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; -1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; -1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; -1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; -1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; -1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; -1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; -1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; -1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; -1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; -1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; -1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; -1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; -1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; -1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; -1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; -1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; -1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; -1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; -1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; -1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; -1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; -1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; -1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; -1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; -1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; -1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; -1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; -1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; -1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; -1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; -1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; -1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; -1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; -1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; -1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; -1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; -1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; -1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; -1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; -1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; -1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; -1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; -1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; -1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; -1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; -1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; -1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; -1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; -1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; -1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; -1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; -1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; -1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; -1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; -1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; -1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; -1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; -1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; -1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; -1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; -1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; -1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; -1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; -1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; -1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; -1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; -1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; -1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; -1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; -1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; -1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; -1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; -1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; -1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; -1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; -1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; -1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; -1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; -1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; -1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; -1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; -1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; -1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; -1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; -1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; -1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; -1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; -1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; -1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; -1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; -1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; -1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; -1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; -1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; -1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; -1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; -1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; -1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; -1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; -1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; -1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; -1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; -1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; -1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; -1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; -1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; -1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; -1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; -1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; -1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; -1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; -1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; -1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; -1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; -1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; -1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; -1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; -1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; -1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; -1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; -1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; -1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; -1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; -1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; -1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; -1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; -1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; -1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; -1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; -1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; -1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; -1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; -1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; -1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; -1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; -1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; -1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; -1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; -1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; -1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; -1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; -1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; -1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; -1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; -1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; -1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; -1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; -1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; -1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; -1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; -1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; -1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; -1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; -1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; -1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; -1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; -1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; -1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; -1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; -1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; -1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; -1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; -1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; -1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; -1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; -1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; -1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; -1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; -1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; -1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; -1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; -1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; -1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; -1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; -1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; -1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; -1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; -1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; -1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; -1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; -1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; -1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; -1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; -1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; -1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; -1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; -1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; -1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; -1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; -1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; -1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; -1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; -1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; -1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; -1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; -1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; -1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; -1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; -1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; -1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; -1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; -1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; -1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; -1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; -1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; -1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; -1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; -1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; -1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; -1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; -1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; -1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; -1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; -1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; -1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; -1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; -1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; -1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; -1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; -1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; -1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; -1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; -1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; -1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; -1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; -1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; -1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; -1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; -1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; -1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; -1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; -1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; -1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; -1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; -1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; -1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; -1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; -1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; -1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; -1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; -1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;So;0;L;;;;;N;;;;; -1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; -1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; -1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; -1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; -1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; -1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; -1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; -1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; -1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; -1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; -1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; -1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; -1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; -1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; -1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; -1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; -1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; -1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; -1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; -1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; -1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; -1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; -1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; -1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; -1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; -1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; -1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; -1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; -1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; -1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; -1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; -1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; -1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; -1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; -1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; -1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; -1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; -1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; -1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; -1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; -1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; -1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; -1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; -1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; -1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; -1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; -1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; -1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; -1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; -1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; -1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; -1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; -1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; -1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; -1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; -1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; -1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; -1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; -1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; -1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; -1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; -1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; -1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; -1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; -1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; -1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; -1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; -1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; -1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; -1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; -1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; -1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; -1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; -1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; -1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; -1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; -1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; -1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; -1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; -1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; -1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; -1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; -1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; -1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; -1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; -1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; -1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; -1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; -1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; -1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; -1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; -1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; -1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; -1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; -1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; -1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; -1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; -1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; -1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; -1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; -1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; -1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; -1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; -1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; -1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; -1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; -1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; -1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; -1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; -1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; -1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; -1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; -1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; -1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; -1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; -1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; -1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; -1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; -1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; -1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; -1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; -1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; -1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; -1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; -1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; -1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; -1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; -1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; -1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; -1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; -1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; -1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; -1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; -1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; -1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; -1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; -1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; -1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; -1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; -1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; -1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; -1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; -1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; -1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; -1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; -1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; -1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; -1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; -1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; -1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; -1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; -1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; -1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; -1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; -1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; -1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; -1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; -1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; -1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; -1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; -1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; -1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; -1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; -1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; -1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; -1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; -1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; -1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; -1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; -1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; -1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; -1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; -1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; -1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; -1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; -1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; -1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; -1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; -1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; -1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; -1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; -1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; -1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; -1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; -1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; -1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; -1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; -1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; -1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; -1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; -1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; -1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; -1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; -1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; -1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; -1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; -1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; -1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; -1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; -1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; -1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; -1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; -1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; -1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; -1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; -1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; -1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; -1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; -1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; -1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; -1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; -1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; -1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; -1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; -1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; -1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; -1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; -1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;; -1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;; -1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;; -1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;; -1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; -1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; -1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; -1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; -1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; -1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; -1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; -1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; -1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; -1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; -1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; -1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; -1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; -1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; -1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; -1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; -1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; -1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; -1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; -1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; -1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; -1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; -1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; -1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; -1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; -1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; -1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; -1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; -1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; -1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; -1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; -1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; -1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; -1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; -1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; -1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; -1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; -1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; -1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; -1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; -1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; -1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; -1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; -1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; -1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; -1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; -1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; -1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; -1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; -1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; -1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; -1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; -1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; -1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; -1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; -1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; -1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; -1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; -1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; -1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; -1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; -1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; -1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; -1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; -1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; -1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; -1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; -1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; -1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; -1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; -1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; -1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; -1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; -1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; -1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; -1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; -1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; -1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; -1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; -1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; -1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; -1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; -1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;; -1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;; -1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;; -1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;; -1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;; -1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;; -1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;; -1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;; -1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;; -1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;; -1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;; -1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;; -1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;; -1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;; -1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;; -1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;; -1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;; -1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;; -1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L; 0041;;;;N;;;;; -1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L; 0042;;;;N;;;;; -1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L; 0043;;;;N;;;;; -1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L; 0044;;;;N;;;;; -1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L; 0045;;;;N;;;;; -1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L; 0046;;;;N;;;;; -1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L; 0047;;;;N;;;;; -1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L; 0048;;;;N;;;;; -1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L; 0049;;;;N;;;;; -1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L; 004A;;;;N;;;;; -1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L; 004B;;;;N;;;;; -1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L; 004C;;;;N;;;;; -1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L; 004D;;;;N;;;;; -1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L; 004E;;;;N;;;;; -1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L; 004F;;;;N;;;;; -1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L; 0050;;;;N;;;;; -1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; -1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L; 0052;;;;N;;;;; -1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L; 0053;;;;N;;;;; -1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L; 0054;;;;N;;;;; -1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L; 0055;;;;N;;;;; -1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L; 0056;;;;N;;;;; -1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L; 0057;;;;N;;;;; -1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L; 0058;;;;N;;;;; -1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; -1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; -1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L; 0061;;;;N;;;;; -1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L; 0062;;;;N;;;;; -1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L; 0063;;;;N;;;;; -1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L; 0064;;;;N;;;;; -1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L; 0065;;;;N;;;;; -1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L; 0066;;;;N;;;;; -1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L; 0067;;;;N;;;;; -1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L; 0068;;;;N;;;;; -1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L; 0069;;;;N;;;;; -1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L; 006A;;;;N;;;;; -1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L; 006B;;;;N;;;;; -1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L; 006C;;;;N;;;;; -1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L; 006D;;;;N;;;;; -1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L; 006E;;;;N;;;;; -1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L; 006F;;;;N;;;;; -1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L; 0070;;;;N;;;;; -1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L; 0071;;;;N;;;;; -1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L; 0072;;;;N;;;;; -1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L; 0073;;;;N;;;;; -1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L; 0074;;;;N;;;;; -1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L; 0075;;;;N;;;;; -1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L; 0076;;;;N;;;;; -1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L; 0077;;;;N;;;;; -1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L; 0078;;;;N;;;;; -1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L; 0079;;;;N;;;;; -1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L; 007A;;;;N;;;;; -1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L; 0131;;;;N;;;;; -1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L; 0237;;;;N;;;;; -1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; -1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; -1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; -1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; -1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; -1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; -1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; -1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; -1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; -1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; -1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; -1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; -1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; -1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; -1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; -1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; -1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; -1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; -1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; -1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; -1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; -1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; -1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; -1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; -1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; -1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; -1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; -1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; -1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; -1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; -1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; -1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; -1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; -1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; -1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; -1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; -1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; -1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; -1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; -1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; -1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; -1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; -1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; -1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; -1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; -1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; -1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; -1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; -1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; -1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; -1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; -1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; -1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; -1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON; 2202;;;;Y;;;;; -1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; -1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; -1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; -1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; -1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; -1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; -1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L; 03DC;;;;N;;;;; -1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L; 03DD;;;;N;;;;; -1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; -1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; -1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; -1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; -1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; -1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; -1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; -1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; -1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; -1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; -1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;; -1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;; -1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;; -1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;; -1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;; -1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;; -1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;; -1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;; -1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;; -1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;; -1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;; -1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;; -1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;; -1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;; -1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;; -1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;; -1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;; -1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;; -1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;; -1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;; -1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;; -1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;; -1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;; -1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;; -1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;; -1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;; -1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;; -1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;; -1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;; -1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;; -1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;; -1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;; -1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;; -1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;; -1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;; -1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;; -1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;; -1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;; -1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;; -1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;; -1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;; -1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;; -1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;; -1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;; -1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;; -1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;; -1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;; -1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;; -1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;; -1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;; -1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;; -1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;; -1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;; -1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;; -1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;; -1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;; -1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;; -1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;; -1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;; -1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;; -1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;; -1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;; -1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;; -1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;; -1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;; -1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;; -1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;; -1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;; -1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;; -1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;; -1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;; -1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;; -1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;; -1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;; -1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;; -1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;; -1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;; -1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;; -1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;; -1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;; -1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;; -1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;; -1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;; -1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;; -1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;; -1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;; -1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;; -1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;; -1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;; -1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;; -1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;; -1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;; -1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;; -1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;; -1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;; -1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;; -1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;; -1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;; -1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;; -1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;; -1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;; -1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;; -1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;; -1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;; -1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;; -1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;; -1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;; -1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;; -1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;; -1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;; -1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;; -1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;; -1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;; -1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;; -1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;; -1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;; -1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;; -1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;; -1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;; -1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;; -1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;; -1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;; -1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;; -1F100;DIGIT ZERO FULL STOP;No;0;EN; 0030 002E;;0;0;N;;;;; -1F101;DIGIT ZERO COMMA;No;0;EN; 0030 002C;;0;0;N;;;;; -1F102;DIGIT ONE COMMA;No;0;EN; 0031 002C;;1;1;N;;;;; -1F103;DIGIT TWO COMMA;No;0;EN; 0032 002C;;2;2;N;;;;; -1F104;DIGIT THREE COMMA;No;0;EN; 0033 002C;;3;3;N;;;;; -1F105;DIGIT FOUR COMMA;No;0;EN; 0034 002C;;4;4;N;;;;; -1F106;DIGIT FIVE COMMA;No;0;EN; 0035 002C;;5;5;N;;;;; -1F107;DIGIT SIX COMMA;No;0;EN; 0036 002C;;6;6;N;;;;; -1F108;DIGIT SEVEN COMMA;No;0;EN; 0037 002C;;7;7;N;;;;; -1F109;DIGIT EIGHT COMMA;No;0;EN; 0038 002C;;8;8;N;;;;; -1F10A;DIGIT NINE COMMA;No;0;EN; 0039 002C;;9;9;N;;;;; -1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L; 0028 0041 0029;;;;N;;;;; -1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L; 0028 0042 0029;;;;N;;;;; -1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L; 0028 0043 0029;;;;N;;;;; -1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L; 0028 0044 0029;;;;N;;;;; -1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L; 0028 0045 0029;;;;N;;;;; -1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L; 0028 0046 0029;;;;N;;;;; -1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L; 0028 0047 0029;;;;N;;;;; -1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L; 0028 0048 0029;;;;N;;;;; -1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L; 0028 0049 0029;;;;N;;;;; -1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L; 0028 004A 0029;;;;N;;;;; -1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L; 0028 004B 0029;;;;N;;;;; -1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L; 0028 004C 0029;;;;N;;;;; -1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L; 0028 004D 0029;;;;N;;;;; -1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L; 0028 004E 0029;;;;N;;;;; -1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L; 0028 004F 0029;;;;N;;;;; -1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L; 0028 0050 0029;;;;N;;;;; -1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L; 0028 0051 0029;;;;N;;;;; -1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L; 0028 0052 0029;;;;N;;;;; -1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L; 0028 0053 0029;;;;N;;;;; -1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L; 0028 0054 0029;;;;N;;;;; -1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L; 0028 0055 0029;;;;N;;;;; -1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L; 0028 0056 0029;;;;N;;;;; -1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L; 0028 0057 0029;;;;N;;;;; -1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L; 0028 0058 0029;;;;N;;;;; -1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L; 0028 0059 0029;;;;N;;;;; -1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L; 0028 005A 0029;;;;N;;;;; -1F12A;TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;So;0;L; 3014 0053 3015;;;;N;;;;; -1F12B;CIRCLED ITALIC LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;; -1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;; -1F12D;CIRCLED CD;So;0;L; 0043 0044;;;;N;;;;; -1F12E;CIRCLED WZ;So;0;L; 0057 005A;;;;N;;;;; -1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;; -1F13D;SQUARED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;; -1F13F;SQUARED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;; -1F142;SQUARED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;; -1F146;SQUARED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;; -1F14A;SQUARED HV;So;0;L; 0048 0056;;;;N;;;;; -1F14B;SQUARED MV;So;0;L; 004D 0056;;;;N;;;;; -1F14C;SQUARED SD;So;0;L; 0053 0044;;;;N;;;;; -1F14D;SQUARED SS;So;0;L; 0053 0053;;;;N;;;;; -1F14E;SQUARED PPV;So;0;L; 0050 0050 0056;;;;N;;;;; -1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;; -1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; -1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;; -1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;; -1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;; -1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; -1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;; -1F18B;NEGATIVE SQUARED IC;So;0;L;;;;;N;;;;; -1F18C;NEGATIVE SQUARED PA;So;0;L;;;;;N;;;;; -1F18D;NEGATIVE SQUARED SA;So;0;L;;;;;N;;;;; -1F190;SQUARE DJ;So;0;L; 0044 004A;;;;N;;;;; -1F200;SQUARE HIRAGANA HOKA;So;0;L; 307B 304B;;;;N;;;;; -1F210;SQUARED CJK UNIFIED IDEOGRAPH-624B;So;0;L; 624B;;;;N;;;;; -1F211;SQUARED CJK UNIFIED IDEOGRAPH-5B57;So;0;L; 5B57;;;;N;;;;; -1F212;SQUARED CJK UNIFIED IDEOGRAPH-53CC;So;0;L; 53CC;;;;N;;;;; -1F213;SQUARED KATAKANA DE;So;0;L; 30C7;;;;N;;;;; -1F214;SQUARED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L; 4E8C;;;;N;;;;; -1F215;SQUARED CJK UNIFIED IDEOGRAPH-591A;So;0;L; 591A;;;;N;;;;; -1F216;SQUARED CJK UNIFIED IDEOGRAPH-89E3;So;0;L; 89E3;;;;N;;;;; -1F217;SQUARED CJK UNIFIED IDEOGRAPH-5929;So;0;L; 5929;;;;N;;;;; -1F218;SQUARED CJK UNIFIED IDEOGRAPH-4EA4;So;0;L; 4EA4;;;;N;;;;; -1F219;SQUARED CJK UNIFIED IDEOGRAPH-6620;So;0;L; 6620;;;;N;;;;; -1F21A;SQUARED CJK UNIFIED IDEOGRAPH-7121;So;0;L; 7121;;;;N;;;;; -1F21B;SQUARED CJK UNIFIED IDEOGRAPH-6599;So;0;L; 6599;;;;N;;;;; -1F21C;SQUARED CJK UNIFIED IDEOGRAPH-524D;So;0;L; 524D;;;;N;;;;; -1F21D;SQUARED CJK UNIFIED IDEOGRAPH-5F8C;So;0;L; 5F8C;;;;N;;;;; -1F21E;SQUARED CJK UNIFIED IDEOGRAPH-518D;So;0;L; 518D;;;;N;;;;; -1F21F;SQUARED CJK UNIFIED IDEOGRAPH-65B0;So;0;L; 65B0;;;;N;;;;; -1F220;SQUARED CJK UNIFIED IDEOGRAPH-521D;So;0;L; 521D;;;;N;;;;; -1F221;SQUARED CJK UNIFIED IDEOGRAPH-7D42;So;0;L; 7D42;;;;N;;;;; -1F222;SQUARED CJK UNIFIED IDEOGRAPH-751F;So;0;L; 751F;;;;N;;;;; -1F223;SQUARED CJK UNIFIED IDEOGRAPH-8CA9;So;0;L; 8CA9;;;;N;;;;; -1F224;SQUARED CJK UNIFIED IDEOGRAPH-58F0;So;0;L; 58F0;;;;N;;;;; -1F225;SQUARED CJK UNIFIED IDEOGRAPH-5439;So;0;L; 5439;;;;N;;;;; -1F226;SQUARED CJK UNIFIED IDEOGRAPH-6F14;So;0;L; 6F14;;;;N;;;;; -1F227;SQUARED CJK UNIFIED IDEOGRAPH-6295;So;0;L; 6295;;;;N;;;;; -1F228;SQUARED CJK UNIFIED IDEOGRAPH-6355;So;0;L; 6355;;;;N;;;;; -1F229;SQUARED CJK UNIFIED IDEOGRAPH-4E00;So;0;L; 4E00;;;;N;;;;; -1F22A;SQUARED CJK UNIFIED IDEOGRAPH-4E09;So;0;L; 4E09;;;;N;;;;; -1F22B;SQUARED CJK UNIFIED IDEOGRAPH-904A;So;0;L; 904A;;;;N;;;;; -1F22C;SQUARED CJK UNIFIED IDEOGRAPH-5DE6;So;0;L; 5DE6;;;;N;;;;; -1F22D;SQUARED CJK UNIFIED IDEOGRAPH-4E2D;So;0;L; 4E2D;;;;N;;;;; -1F22E;SQUARED CJK UNIFIED IDEOGRAPH-53F3;So;0;L; 53F3;;;;N;;;;; -1F22F;SQUARED CJK UNIFIED IDEOGRAPH-6307;So;0;L; 6307;;;;N;;;;; -1F230;SQUARED CJK UNIFIED IDEOGRAPH-8D70;So;0;L; 8D70;;;;N;;;;; -1F231;SQUARED CJK UNIFIED IDEOGRAPH-6253;So;0;L; 6253;;;;N;;;;; -1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L; 3014 672C 3015;;;;N;;;;; -1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L; 3014 4E09 3015;;;;N;;;;; -1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L; 3014 4E8C 3015;;;;N;;;;; -1F243;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;So;0;L; 3014 5B89 3015;;;;N;;;;; -1F244;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;So;0;L; 3014 70B9 3015;;;;N;;;;; -1F245;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;So;0;L; 3014 6253 3015;;;;N;;;;; -1F246;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;So;0;L; 3014 76D7 3015;;;;N;;;;; -1F247;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;So;0;L; 3014 52DD 3015;;;;N;;;;; -1F248;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;So;0;L; 3014 6557 3015;;;;N;;;;; -20000;;Lo;0;L;;;;;N;;;;; -2A6D6;;Lo;0;L;;;;;N;;;;; -2A700;;Lo;0;L;;;;;N;;;;; -2B734;;Lo;0;L;;;;;N;;;;; -2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; -2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; -2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; -2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; -2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; -2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; -2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; -2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; -2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; -2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; -2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; -2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; -2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; -2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; -2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; -2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; -2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; -2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; -2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; -2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; -2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; -2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; -2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; -2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; -2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; -2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; -2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; -2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; -2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; -2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; -2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; -2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; -2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; -2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; -2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; -2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; -2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; -2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; -2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; -2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; -2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; -2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; -2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; -2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; -2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; -2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; -2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; -2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; -2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; -2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; -2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; -2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; -2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; -2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; -2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; -2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; -2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; -2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; -2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; -2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; -2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; -2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; -2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; -2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; -2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; -2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; -2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; -2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; -2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; -2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; -2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; -2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; -2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; -2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; -2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; -2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; -2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; -2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; -2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; -2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; -2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; -2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; -2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; -2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; -2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; -2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; -2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; -2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; -2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; -2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; -2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; -2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; -2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; -2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; -2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; -2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; -2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; -2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; -2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; -2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; -2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; -2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; -2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; -2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; -2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; -2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; -2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; -2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; -2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; -2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; -2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; -2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; -2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; -2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; -2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; -2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; -2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; -2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; -2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; -2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; -2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; -2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; -2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; -2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; -2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; -2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; -2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; -2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; -2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; -2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; -2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; -2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; -2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; -2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; -2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; -2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; -2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; -2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; -2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; -2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; -2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; -2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; -2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; -2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; -2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;9;N;;;;; -2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; -2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; -2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; -2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; -2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; -2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; -2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; -2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; -2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; -2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; -2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; -2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; -2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; -2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; -2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; -2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; -2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; -2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; -2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; -2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; -2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; -2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; -2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; -2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; -2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; -2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; -2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; -2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; -2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; -2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; -2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; -2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; -2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; -2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; -2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; -2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; -2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; -2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; -2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; -2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; -2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; -2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; -2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; -2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; -2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; -2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; -2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; -2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; -2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; -2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; -2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; -2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; -2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; -2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; -2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; -2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; -2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; -2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; -2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; -2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; -2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; -2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; -2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; -2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; -2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; -2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; -2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; -2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; -2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; -2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; -2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; -2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; -2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; -2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; -2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; -2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; -2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; -2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; -2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; -2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; -2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; -2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; -2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; -2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; -2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; -2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; -2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; -2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; -2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; -2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; -2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; -2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; -2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; -2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; -2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; -2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; -2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; -2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; -2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; -2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; -2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; -2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; -2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; -2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; -2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; -2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; -2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; -2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; -2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; -2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; -2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; -2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; -2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; -2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; -2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; -2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; -2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; -2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; -2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; -2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; -2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; -2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; -2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; -2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; -2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; -2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; -2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; -2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; -2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; -2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; -2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; -2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; -2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; -2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; -2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; -2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; -2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; -2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; -2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; -2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; -2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; -2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; -2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; -2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; -2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; -2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; -2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; -2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; -2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; -2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; -2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; -2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; -2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; -2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; -2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; -2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; -2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; -2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; -2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; -2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; -2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; -2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; -2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; -2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; -2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; -2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; -2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; -2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; -2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; -2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; -2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; -2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; -2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; -2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; -2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; -2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; -2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; -2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; -2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; -2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; -2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; -2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; -2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; -2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; -2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; -2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; -2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; -2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; -2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; -2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; -2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; -2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; -2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; -2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; -2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; -2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; -2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; -2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; -2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; -2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; -2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; -2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; -2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; -2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; -2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; -2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; -2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; -2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; -2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; -2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; -2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; -2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; -2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; -2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; -2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; -2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; -2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; -2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; -2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; -2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; -2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; -2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; -2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; -2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; -2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; -2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; -2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; -2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; -2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; -2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; -2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; -2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; -2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; -2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; -2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; -2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; -2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; -2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; -2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; -2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; -2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; -2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; -2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; -2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; -2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; -2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; -2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; -2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; -2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; -2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; -2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; -2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; -2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; -2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; -2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; -2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; -2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; -2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; -2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; -2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; -2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; -2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; -2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; -2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; -2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; -2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; -2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; -2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; -2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; -2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; -2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; -2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; -2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; -2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; -2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; -2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; -2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; -2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; -2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; -2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; -2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; -2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; -2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; -2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; -2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; -2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; -2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; -2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; -2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; -2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; -2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; -2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; -2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; -2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; -2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; -2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; -2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; -2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; -2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; -2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; -2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; -2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; -2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; -2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; -2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; -2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; -2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; -2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; -2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; -2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; -2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; -2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; -2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; -2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; -2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; -2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; -2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; -2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; -2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; -2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; -2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; -2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; -2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; -2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; -2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; -2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; -2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; -2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; -2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; -2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; -2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; -2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; -2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; -2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; -2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; -2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; -2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; -2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; -2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; -2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; -2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; -2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; -2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; -2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; -2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; -2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; -2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; -2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; -2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; -2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; -2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; -2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; -2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; -2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; -2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; -2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; -2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; -2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; -2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; -2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; -2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; -2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; -2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; -2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; -2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; -2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; -2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; -2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; -2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; -2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; -2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; -2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; -2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; -2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; -2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; -2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; -2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; -2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; -2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; -2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; -2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; -2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; -2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; -2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; -2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; -2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; -2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; -2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; -2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; -2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; -2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; -2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; -2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; -2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; -2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; -2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; -2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; diff --git a/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php b/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php deleted file mode 100644 index ce2b1a2b6..000000000 --- a/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php +++ /dev/null @@ -1,218 +0,0 @@ - '0000', 'endhex'=>'007E', 'startdec'=> 0, 'enddec'=>126 , 'range'=>'Basic Latin'), -array('starthex'=> '00A0', 'endhex'=>'00FF', 'startdec'=> 160, 'enddec'=>255 , 'range'=>'Latin-1 Supplement'), -array('starthex'=> '0100', 'endhex'=>'017F', 'startdec'=> 256, 'enddec'=>383 , 'range'=>'Latin Extended-A'), -array('starthex'=> '0180', 'endhex'=>'024F', 'startdec'=> 384, 'enddec'=>591 , 'range'=>'Latin Extended-B'), -array('starthex'=> '0250', 'endhex'=>'02AF', 'startdec'=> 592, 'enddec'=>687 , 'range'=>'IPA Extensions'), -array('starthex'=> '02B0', 'endhex'=>'02FF', 'startdec'=> 688, 'enddec'=>767 , 'range'=>'Spacing Modifier Letters'), -array('starthex'=> '0300', 'endhex'=>'036F', 'startdec'=> 768, 'enddec'=>879 , 'range'=>'Combining Diacritical Marks', 'combining'=>true), -array('starthex'=> '0370', 'endhex'=>'03FF', 'startdec'=> 880, 'enddec'=>1023 , 'range'=>'Greek'), -array('starthex'=> '0400', 'endhex'=>'04FF', 'startdec'=> 1024, 'enddec'=>1279 , 'range'=>'Cyrillic'), -array('starthex'=> '0500', 'endhex'=>'052F', 'startdec'=> 1280, 'enddec'=>1327 , 'range'=>'Cyrillic Supplement'), -array('starthex'=> '0530', 'endhex'=>'058F', 'startdec'=> 1328, 'enddec'=>1423 , 'range'=>'Armenian'), -array('starthex'=> '0590', 'endhex'=>'05FF', 'startdec'=> 1424, 'enddec'=>1535 , 'range'=>'Hebrew', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0600', 'endhex'=>'06FF', 'startdec'=> 1536, 'enddec'=>1791 , 'range'=>'Arabic', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0700', 'endhex'=>'074F', 'startdec'=> 1792, 'enddec'=>1871 , 'range'=>'Syriac', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0750', 'endhex'=>'077F', 'startdec'=> 1872, 'enddec'=>1919 , 'range'=>'Arabic Supplement', 'rtl'=>true, 'special'=>true), -array('starthex'=> '0780', 'endhex'=>'07BF', 'startdec'=> 1920, 'enddec'=>1983 , 'range'=>'Thaana', 'rtl'=>true, 'special'=>true), -array('starthex'=> '07C0', 'endhex'=>'07FF', 'startdec'=> 1984, 'enddec'=>2047 , 'range'=>'N\'Ko (Mandenkan)', 'rtl'=>true), -array('starthex'=> '0800', 'endhex'=>'083E', 'startdec'=> 2048, 'enddec'=> 2110, 'range'=>'Samaritan', 'rtl'=>true), -array('starthex'=> '0900', 'endhex'=>'097F', 'startdec'=> 2304, 'enddec'=>2431 , 'range'=>'Devanagari', 'indic'=>true, 'special'=>true), -array('starthex'=> '0980', 'endhex'=>'09FF', 'startdec'=> 2432, 'enddec'=>2559 , 'range'=>'Bengali', 'indic'=>true, 'special'=>true), -array('starthex'=> '0A00', 'endhex'=>'0A7F', 'startdec'=> 2560, 'enddec'=>2687 , 'range'=>'Gurmukhi', 'indic'=>true, 'special'=>true), -array('starthex'=> '0A80', 'endhex'=>'0AFF', 'startdec'=> 2688, 'enddec'=>2815 , 'range'=>'Gujarati', 'indic'=>true, 'special'=>true), -array('starthex'=> '0B00', 'endhex'=>'0B7F', 'startdec'=> 2816, 'enddec'=>2943 , 'range'=>'Oriya', 'indic'=>true, 'special'=>true), -array('starthex'=> '0B80', 'endhex'=>'0BFF', 'startdec'=> 2944, 'enddec'=>3071 , 'range'=>'Tamil', 'indic'=>true, 'special'=>true), -array('starthex'=> '0C00', 'endhex'=>'0C7F', 'startdec'=> 3072, 'enddec'=>3199 , 'range'=>'Telugu', 'indic'=>true, 'special'=>true), -array('starthex'=> '0C80', 'endhex'=>'0CFF', 'startdec'=> 3200, 'enddec'=>3327 , 'range'=>'Kannada', 'indic'=>true, 'special'=>true), -array('starthex'=> '0D00', 'endhex'=>'0D7F', 'startdec'=> 3328, 'enddec'=>3455 , 'range'=>'Malayalam', 'indic'=>true, 'special'=>true), -array('starthex'=> '0D80', 'endhex'=>'0DFF', 'startdec'=> 3456, 'enddec'=>3583 , 'range'=>'Sinhala', 'special'=>true), -array('starthex'=> '0E00', 'endhex'=>'0E7F', 'startdec'=> 3584, 'enddec'=>3711 , 'range'=>'Thai'), -array('starthex'=> '0E80', 'endhex'=>'0EFF', 'startdec'=> 3712, 'enddec'=>3839 , 'range'=>'Lao'), -array('starthex'=> '0F00', 'endhex'=>'0FFF', 'startdec'=> 3840, 'enddec'=>4095 , 'range'=>'Tibetan', 'special'=>true), -array('starthex'=> '1000', 'endhex'=>'109F', 'startdec'=> 4096, 'enddec'=>4255 , 'range'=>'Myanmar', 'special'=>true), -array('starthex'=> '10A0', 'endhex'=>'10FF', 'startdec'=> 4256, 'enddec'=>4351 , 'range'=>'Georgian'), -array('starthex'=> '1100', 'endhex'=>'11FF', 'startdec'=> 4352, 'enddec'=>4607 , 'range'=>'Hangul Jamo', 'cjk'=>true), -array('starthex'=> '1200', 'endhex'=>'137F', 'startdec'=> 4608, 'enddec'=>4991 , 'range'=>'Ethiopic'), -array('starthex'=> '1380', 'endhex'=>'139F', 'startdec'=> 4992, 'enddec'=>5023 , 'range'=>'Ethiopic Supplement'), -array('starthex'=> '13A0', 'endhex'=>'13FF', 'startdec'=> 5024, 'enddec'=>5119 , 'range'=>'Cherokee'), -array('starthex'=> '1400', 'endhex'=>'167F', 'startdec'=> 5120, 'enddec'=>5759 , 'range'=>'Unified Canadian Aboriginal Syllabics'), -array('starthex'=> '1680', 'endhex'=>'169F', 'startdec'=> 5760, 'enddec'=>5791 , 'range'=>'Ogham'), -array('starthex'=> '16A0', 'endhex'=>'16FF', 'startdec'=> 5792, 'enddec'=>5887 , 'range'=>'Runic'), -array('starthex'=> '1700', 'endhex'=>'171F', 'startdec'=> 5888, 'enddec'=> 5919, 'range'=>'Tagalog (Philippine)'), -array('starthex'=> '1720', 'endhex'=>'173F', 'startdec'=> 5920, 'enddec'=> 5951, 'range'=>'Hanunoo (Philippine)'), -array('starthex'=> '1740', 'endhex'=>'175F', 'startdec'=> 5952, 'enddec'=> 5983, 'range'=>'Buhid (Philippine)'), -array('starthex'=> '1760', 'endhex'=>'177F', 'startdec'=> 5984, 'enddec'=> 6015, 'range'=>'Tagbanwa (Philippine)'), -array('starthex'=> '1780', 'endhex'=>'17FF', 'startdec'=> 6016, 'enddec'=>6143 , 'range'=>'Khmer', 'special'=>true), -array('starthex'=> '1800', 'endhex'=>'18AF', 'startdec'=> 6144, 'enddec'=>6319 , 'range'=>'Mongolian', 'vertical'=>true), -array('starthex'=> '18B0', 'endhex'=>'18F5', 'startdec'=> 6320, 'enddec'=>6389 , 'range'=>'Canadian Syllabics'), -array('starthex'=> '1900', 'endhex'=>'194F', 'startdec'=> 6400, 'enddec'=> 6479, 'range'=>'Limbu'), -array('starthex'=> '1950', 'endhex'=>'197F', 'startdec'=> 6480, 'enddec'=> 6527, 'range'=>'Tai Le'), -array('starthex'=> '1980', 'endhex'=>'19DF', 'startdec'=> 6528, 'enddec'=> 6623, 'range'=>'New Tai Lue'), -array('starthex'=> '19E0', 'endhex'=>'19FF', 'startdec'=> 6624, 'enddec'=> 6655, 'range'=>'Khmer Symbols', 'special'=>true), -array('starthex'=> '1A00', 'endhex'=>'1A1F', 'startdec'=> 6656, 'enddec'=> 6687, 'range'=>'Buginese'), -array('starthex'=> '1A20', 'endhex'=>'1AAF', 'startdec'=> 6688, 'enddec'=> 6831, 'range'=>'Tai Tham'), -array('starthex'=> '1B00', 'endhex'=>'1B7F', 'startdec'=> 6912, 'enddec'=> 7039, 'range'=>'Balinese', 'special'=>true), -array('starthex'=> '1B80', 'endhex'=>'1BBF', 'startdec'=> 7040, 'enddec'=> 7103, 'range'=>'Sundanese'), -array('starthex'=> '1C00', 'endhex'=>'1C4F', 'startdec'=> 7168, 'enddec'=> 7247, 'range'=>'Lepcha (Rong)'), -array('starthex'=> '1C50', 'endhex'=>'1C7F', 'startdec'=> 7248, 'enddec'=> 7295, 'range'=>'Ol Chiki (Santali / Ol Cemet)'), -array('starthex'=> '1CD0', 'endhex'=>'1CFF', 'startdec'=> 7376, 'enddec'=> 7423, 'range'=>'Vedic Extensions'), -array('starthex'=> '1D00', 'endhex'=>'1D7F', 'startdec'=> 7424, 'enddec'=> 7551, 'range'=>'Phonetic Extensions'), -array('starthex'=> '1D80', 'endhex'=>'1DBF', 'startdec'=> 7552, 'enddec'=> 7615, 'range'=>'Phonetic Extensions Supplement'), -array('starthex'=> '1DC0', 'endhex'=>'1DFF', 'startdec'=> 7616, 'enddec'=> 7679, 'range'=>'Combining Diacritical Marks Supplement', 'combining'=>true), -array('starthex'=> '1E00', 'endhex'=>'1EFF', 'startdec'=> 7680, 'enddec'=>7935 , 'range'=>'Latin Extended Additional'), -array('starthex'=> '1F00', 'endhex'=>'1FFF', 'startdec'=> 7936, 'enddec'=>8191 , 'range'=>'Greek Extended'), -array('starthex'=> '2000', 'endhex'=>'206F', 'startdec'=> 8192, 'enddec'=>8303 , 'range'=>'General Punctuation'), -array('starthex'=> '2070', 'endhex'=>'209F', 'startdec'=> 8304, 'enddec'=>8351 , 'range'=>'Superscripts and Subscripts'), -array('starthex'=> '20A0', 'endhex'=>'20CF', 'startdec'=> 8352, 'enddec'=>8399 , 'range'=>'Currency Symbols'), -array('starthex'=> '20D0', 'endhex'=>'20FF', 'startdec'=> 8400, 'enddec'=>8447 , 'range'=>'Combining Marks for Symbols', 'combining'=>true), -array('starthex'=> '2100', 'endhex'=>'214F', 'startdec'=> 8448, 'enddec'=>8527 , 'range'=>'Letterlike Symbols'), -array('starthex'=> '2150', 'endhex'=>'218F', 'startdec'=> 8528, 'enddec'=>8591 , 'range'=>'Number Forms'), -array('starthex'=> '2190', 'endhex'=>'21FF', 'startdec'=> 8592, 'enddec'=>8703 , 'range'=>'Arrows'), -array('starthex'=> '2200', 'endhex'=>'22FF', 'startdec'=> 8704, 'enddec'=>8959 , 'range'=>'Mathematical Operators'), -array('starthex'=> '2300', 'endhex'=>'23FF', 'startdec'=> 8960, 'enddec'=>9215 , 'range'=>'Miscellaneous Technical'), -array('starthex'=> '2400', 'endhex'=>'243F', 'startdec'=> 9216, 'enddec'=>9279 , 'range'=>'Control Pictures'), -array('starthex'=> '2440', 'endhex'=>'245F', 'startdec'=> 9280, 'enddec'=>9311 , 'range'=>'Optical Character Recognition'), -array('starthex'=> '2460', 'endhex'=>'24FF', 'startdec'=> 9312, 'enddec'=>9471 , 'range'=>'Enclosed Alphanumerics'), -array('starthex'=> '2500', 'endhex'=>'257F', 'startdec'=> 9472, 'enddec'=>9599 , 'range'=>'Box Drawing'), -array('starthex'=> '2580', 'endhex'=>'259F', 'startdec'=> 9600, 'enddec'=>9631 , 'range'=>'Block Elements'), -array('starthex'=> '25A0', 'endhex'=>'25FF', 'startdec'=> 9632, 'enddec'=>9727 , 'range'=>'Geometric Shapes'), -array('starthex'=> '2600', 'endhex'=>'26FF', 'startdec'=> 9728, 'enddec'=>9983 , 'range'=>'Miscellaneous Symbols'), -array('starthex'=> '2700', 'endhex'=>'27BF', 'startdec'=> 9984, 'enddec'=>10175 , 'range'=>'Dingbats'), -array('starthex'=> '27C0', 'endhex'=>'27EF', 'startdec'=> 10176, 'enddec'=> 10223, 'range'=>'Miscellaneous Mathematical Symbols-A'), -array('starthex'=> '27F0', 'endhex'=>'27FF', 'startdec'=> 10224, 'enddec'=> 10239, 'range'=>'Supplemental Arrows-A'), -array('starthex'=> '2800', 'endhex'=>'28FF', 'startdec'=> 10240, 'enddec'=>10495 , 'range'=>'Braille Patterns'), -array('starthex'=> '2900', 'endhex'=>'297F', 'startdec'=> 10496, 'enddec'=> 10623, 'range'=>'Supplemental Arrows-B'), -array('starthex'=> '2980', 'endhex'=>'29FF', 'startdec'=> 10624, 'enddec'=> 10751, 'range'=>'Miscellaneous Mathematical Symbols-B'), -array('starthex'=> '2A00', 'endhex'=>'2AFF', 'startdec'=> 10752, 'enddec'=> 11007, 'range'=>'Supplemental Mathematical Operators'), -array('starthex'=> '2B00', 'endhex'=>'2BFF', 'startdec'=> 11008, 'enddec'=> 11263, 'range'=>'Miscellaneous Symbols and Arrows'), -array('starthex'=> '2C00', 'endhex'=>'2C5F', 'startdec'=> 11264, 'enddec'=> 11359, 'range'=>'Glagolitic'), -array('starthex'=> '2C60', 'endhex'=>'2C7F', 'startdec'=> 11360, 'enddec'=> 11391, 'range'=>'Latin Extended-C'), -array('starthex'=> '2C80', 'endhex'=>'2CFF', 'startdec'=> 11392, 'enddec'=> 11519, 'range'=>'Coptic'), -array('starthex'=> '2D00', 'endhex'=>'2D2F', 'startdec'=> 11520, 'enddec'=> 11567, 'range'=>'Georgian Supplement'), -array('starthex'=> '2D30', 'endhex'=>'2D7F', 'startdec'=> 11568, 'enddec'=> 11647, 'range'=>'Tifinagh'), -array('starthex'=> '2D80', 'endhex'=>'2DDF', 'startdec'=> 11648, 'enddec'=> 11743, 'range'=>'Ethiopic Extended'), -array('starthex'=> '2DE0', 'endhex'=>'2DFF', 'startdec'=> 11744, 'enddec'=> 11775, 'range'=>'Cyrillic Extended-A'), -array('starthex'=> '2E00', 'endhex'=>'2E7F', 'startdec'=> 11776, 'enddec'=> 11903, 'range'=>'Supplemental Punctuation'), - -array('starthex'=> '2E80', 'endhex'=>'2EFF', 'startdec'=> 11904, 'enddec'=>12031 , 'range'=>'CJK Radicals Supplement', 'cjk'=>true), -array('starthex'=> '2F00', 'endhex'=>'2FDF', 'startdec'=> 12032, 'enddec'=>12255 , 'range'=>'Kangxi Radicals', 'cjk'=>true), -array('starthex'=> '2FF0', 'endhex'=>'2FFF', 'startdec'=> 12272, 'enddec'=>12287 , 'range'=>'Ideographic Description Characters', 'cjk'=>true), -array('starthex'=> '3000', 'endhex'=>'303F', 'startdec'=> 12288, 'enddec'=>12351 , 'range'=>'CJK Symbols and Punctuation', 'cjk'=>true), -array('starthex'=> '3040', 'endhex'=>'309F', 'startdec'=> 12352, 'enddec'=>12447 , 'range'=>'Hiragana', 'cjk'=>true), -array('starthex'=> '30A0', 'endhex'=>'30FF', 'startdec'=> 12448, 'enddec'=>12543 , 'range'=>'Katakana', 'cjk'=>true), -array('starthex'=> '3100', 'endhex'=>'312F', 'startdec'=> 12544, 'enddec'=>12591 , 'range'=>'Bopomofo', 'cjk'=>true), -array('starthex'=> '3130', 'endhex'=>'318F', 'startdec'=> 12592, 'enddec'=>12687 , 'range'=>'Hangul Compatibility Jamo', 'cjk'=>true), -array('starthex'=> '3190', 'endhex'=>'319F', 'startdec'=> 12688, 'enddec'=>12703 , 'range'=>'Kanbun', 'cjk'=>true), -array('starthex'=> '31A0', 'endhex'=>'31BF', 'startdec'=> 12704, 'enddec'=>12735 , 'range'=>'Bopomofo Extended', 'cjk'=>true), -array('starthex'=> '31C0', 'endhex'=>'31EF', 'startdec'=> 12736, 'enddec'=> 12783, 'range'=>'CJK Strokes', 'cjk'=>true), -array('starthex'=> '31F0', 'endhex'=>'31FF', 'startdec'=> 12784, 'enddec'=> 12799, 'range'=>'Katakana Phonetic Extensions', 'cjk'=>true), -array('starthex'=> '3200', 'endhex'=>'32FF', 'startdec'=> 12800, 'enddec'=>13055 , 'range'=>'Enclosed CJK Letters and Months', 'cjk'=>true), -array('starthex'=> '3300', 'endhex'=>'33FF', 'startdec'=> 13056, 'enddec'=>13311 , 'range'=>'CJK Compatibility', 'cjk'=>true), -array('starthex'=> '3400', 'endhex'=>'4DB5', 'startdec'=> 13312, 'enddec'=>19893 , 'range'=>'CJK Unified Ideographs Extension A', 'cjk'=>true), -array('starthex'=> '4DC0', 'endhex'=>'4DFF', 'startdec'=> 19904, 'enddec'=> 19967, 'range'=>'Yijing Hexagram Symbols', 'cjk'=>true), -array('starthex'=> '4E00', 'endhex'=>'9FFF', 'startdec'=> 19968, 'enddec'=>40959 , 'range'=>'CJK Unified Ideographs', 'cjk'=>true), -array('starthex'=> 'A000', 'endhex'=>'A48F', 'startdec'=> 40960, 'enddec'=>42127 , 'range'=>'Yi Syllables', 'cjk'=>true), -array('starthex'=> 'A490', 'endhex'=>'A4CF', 'startdec'=> 42128, 'enddec'=> 42191, 'range'=>'Yi Radicals', 'cjk'=>true), - -array('starthex'=> 'A4D0', 'endhex'=>'A4FF', 'startdec'=> 42192, 'enddec'=> 42239, 'range'=>'Lisu'), - -array('starthex'=> 'A500', 'endhex'=>'A63F', 'startdec'=> 42240, 'enddec'=> 42559, 'range'=>'Vai'), -array('starthex'=> 'A640', 'endhex'=>'A69F', 'startdec'=> 42560, 'enddec'=> 42655, 'range'=>'Cyrillic Extended-B'), - -array('starthex'=> 'A6A0', 'endhex'=>'A6FF', 'startdec'=> 42656, 'enddec'=> 42751, 'range'=>'Bamum'), - -array('starthex'=> 'A700', 'endhex'=>'A71F', 'startdec'=> 42752, 'enddec'=> 42783, 'range'=>'Modifier Tone Letters'), -array('starthex'=> 'A720', 'endhex'=>'A7FF', 'startdec'=> 42784, 'enddec'=> 43007, 'range'=>'Latin Extended-D'), -array('starthex'=> 'A800', 'endhex'=>'A82F', 'startdec'=> 43008, 'enddec'=> 43055, 'range'=>'Syloti Nagri'), - -array('starthex'=> 'A840', 'endhex'=>'A87F', 'startdec'=> 43072, 'enddec'=> 43135, 'range'=>'Phags-pa', 'vertical'=>true), -array('starthex'=> 'A880', 'endhex'=>'A8DF', 'startdec'=> 43136, 'enddec'=> 43231, 'range'=>'Saurashtra'), - -array('starthex'=> 'A900', 'endhex'=>'A92F', 'startdec'=> 43264, 'enddec'=> 43311, 'range'=>'Kayah Li'), -array('starthex'=> 'A930', 'endhex'=>'A95F', 'startdec'=> 43312, 'enddec'=> 43359, 'range'=>'Rejang'), - -array('starthex'=> 'A960', 'endhex'=>'A97F', 'startdec'=> 43360, 'enddec'=> 43391, 'range'=>'Hangul Choseong', 'cjk'=>true), -array('starthex'=> 'A980', 'endhex'=>'A9DF', 'startdec'=> 43392, 'enddec'=> 43487, 'range'=>'Javanese'), - -array('starthex'=> 'AA00', 'endhex'=>'AA5F', 'startdec'=> 43520, 'enddec'=> 43615, 'range'=>'Cham'), -array('starthex'=> 'AA60', 'endhex'=>'AA7B', 'startdec'=> 43616, 'enddec'=> 43647, 'range'=>'Myanmar', 'special'=>true), -array('starthex'=> 'AA80', 'endhex'=>'AADF', 'startdec'=> 43648, 'enddec'=> 43743, 'range'=>'Tai Viet'), - -array('starthex'=> 'ABC0', 'endhex'=>'ABF9', 'startdec'=> 43968, 'enddec'=> 44025, 'range'=>'Meetei Mayek'), - -array('starthex'=> 'AC00', 'endhex'=>'D7FF', 'startdec'=> 44032, 'enddec'=>55295 , 'range'=>'Hangul Syllables', 'cjk'=>true), - -/* -array('starthex'=> 'D800', 'endhex'=>'DB7F', 'startdec'=> 55296, 'enddec'=>56191 , 'range'=>'High Surrogates', 'reserved'=>true), -array('starthex'=> 'DB80', 'endhex'=>'DBFF', 'startdec'=> 56192, 'enddec'=>56319 , 'range'=>'High Private Use Surrogates', 'reserved'=>true), -array('starthex'=> 'DC00', 'endhex'=>'DFFF', 'startdec'=> 56320, 'enddec'=>57343 , 'range'=>'Low Surrogates', 'reserved'=>true), -*/ - -array('starthex'=> 'E000', 'endhex'=>'F8FF', 'startdec'=> 57344, 'enddec'=>63743 , 'range'=>'Private Use', 'pua'=>true), - -array('starthex'=> 'F900', 'endhex'=>'FAFF', 'startdec'=> 63744, 'enddec'=>64255 , 'range'=>'CJK Compatibility Ideographs', 'cjk'=>true), -array('starthex'=> 'FB00', 'endhex'=>'FB4F', 'startdec'=> 64256, 'enddec'=>64335 , 'range'=>'Alphabetic Presentation Forms'), -array('starthex'=> 'FB50', 'endhex'=>'FDFF', 'startdec'=> 64336, 'enddec'=>65023 , 'range'=>'Arabic Presentation Forms-A', 'rtl'=>true), - -array('starthex'=> 'FE00', 'endhex'=>'FE0F', 'startdec'=> 65024, 'enddec'=> 65039, 'range'=>'Variation Selectors'), - -array('starthex'=> 'FE10', 'endhex'=>'FE1F', 'startdec'=> 65040, 'enddec'=> 65055, 'range'=>'Vertical Forms'), -array('starthex'=> 'FE20', 'endhex'=>'FE2F', 'startdec'=> 65056, 'enddec'=>65071 , 'range'=>'Combining Half Marks', 'combining'=>true), -array('starthex'=> 'FE30', 'endhex'=>'FE4F', 'startdec'=> 65072, 'enddec'=>65103 , 'range'=>'CJK Compatibility Forms', 'cjk'=>true), -array('starthex'=> 'FE50', 'endhex'=>'FE6F', 'startdec'=> 65104, 'enddec'=>65135 , 'range'=>'Small Form Variants', 'cjk'=>true), -array('starthex'=> 'FE70', 'endhex'=>'FEFE', 'startdec'=> 65136, 'enddec'=>65278 , 'range'=>'Arabic Presentation Forms-B', 'rtl'=>true), -array('starthex'=> 'FEFF', 'endhex'=>'FEFF', 'startdec'=> 65279, 'enddec'=>65279 , 'range'=>'Specials'), -array('starthex'=> 'FF00', 'endhex'=>'FFEF', 'startdec'=> 65280, 'enddec'=>65519 , 'range'=>'Halfwidth and Fullwidth Forms', 'cjk'=>true), -array('starthex'=> 'FFF0', 'endhex'=>'FFFD', 'startdec'=> 65520, 'enddec'=>65533 , 'range'=>'Specials'), - -/* PLANE 1 */ - -array('starthex'=> '10000', 'endhex'=>'1007F', 'startdec'=> 65536 , 'enddec'=> 65663, 'range'=>'Linear B Syllabary'), -array('starthex'=> '10080', 'endhex'=>'100FF', 'startdec'=> 65664 , 'enddec'=> 65791, 'range'=>'Linear B Ideograms'), -array('starthex'=> '10100', 'endhex'=>'1013F', 'startdec'=> 65792 , 'enddec'=> 65855, 'range'=>'Aegean Numbers'), -array('starthex'=> '10140', 'endhex'=>'1018F', 'startdec'=> 65856 , 'enddec'=> 65935, 'range'=>'Ancient Greek Numbers'), -array('starthex'=> '10190', 'endhex'=>'101CF', 'startdec'=> 65936 , 'enddec'=> 65999, 'range'=>'Ancient Symbols'), -array('starthex'=> '101D0', 'endhex'=>'101FF', 'startdec'=> 66000 , 'enddec'=> 66047, 'range'=>'Phaistos Disc'), -array('starthex'=> '10280', 'endhex'=>'1029F', 'startdec'=> 66176 , 'enddec'=> 66207, 'range'=>'Lycian'), -array('starthex'=> '102A0', 'endhex'=>'102DF', 'startdec'=> 66208 , 'enddec'=> 66271, 'range'=>'Carian'), -array('starthex'=> '10300', 'endhex'=>'1032F', 'startdec'=> 66304 , 'enddec'=> 66351, 'range'=>'Old Italic'), -array('starthex'=> '10330', 'endhex'=>'1034F', 'startdec'=> 66352 , 'enddec'=> 66383, 'range'=>'Gothic'), -array('starthex'=> '10380', 'endhex'=>'1039F', 'startdec'=> 66432 , 'enddec'=> 66463, 'range'=>'Ugaritic'), -array('starthex'=> '103A0', 'endhex'=>'103DF', 'startdec'=> 66464 , 'enddec'=> 66527, 'range'=>'Old Persian'), -array('starthex'=> '10400', 'endhex'=>'1044F', 'startdec'=> 66560 , 'enddec'=> 66639, 'range'=>'Deseret'), -array('starthex'=> '10450', 'endhex'=>'1047F', 'startdec'=> 66640 , 'enddec'=> 66687, 'range'=>'Shavian'), -array('starthex'=> '10480', 'endhex'=>'104AF', 'startdec'=> 66688 , 'enddec'=> 66735, 'range'=>'Osmanya'), -array('starthex'=> '10800', 'endhex'=>'1083F', 'startdec'=> 67584 , 'enddec'=> 67647, 'range'=>'Cypriot Syllabary'), -array('starthex'=> '10900', 'endhex'=>'1091F', 'startdec'=> 67840 , 'enddec'=> 67871, 'range'=>'Phoenician'), -array('starthex'=> '10920', 'endhex'=>'1093F', 'startdec'=> 67872 , 'enddec'=> 67903, 'range'=>'Lydian'), -array('starthex'=> '10A00', 'endhex'=>'10A5F', 'startdec'=> 68096 , 'enddec'=> 68191, 'range'=>'Kharoshthi'), - -array('starthex'=> '11080', 'endhex'=>'110CF', 'startdec'=> 69760 , 'enddec'=> 69839, 'range'=>'Kaithi'), - -array('starthex'=> '12000', 'endhex'=>'123FF', 'startdec'=> 73728 , 'enddec'=> 74751, 'range'=>'Cuneiform (Sumero-Akkadian)'), -array('starthex'=> '12400', 'endhex'=>'1247F', 'startdec'=> 74752 , 'enddec'=> 74879, 'range'=>'Cuneiform Numbers and Punctuation'), - -array('starthex'=> '13000', 'endhex'=>'1342F', 'startdec'=> 77824 , 'enddec'=> 78895, 'range'=>'Egyptian Hieroglyphs'), - -array('starthex'=> '1D000', 'endhex'=>'1D0FF', 'startdec'=> 118784 , 'enddec'=> 119039, 'range'=>'Byzantine Musical Symbols'), -array('starthex'=> '1D100', 'endhex'=>'1D1FF', 'startdec'=> 119040 , 'enddec'=> 119295, 'range'=>'Musical Symbols'), -array('starthex'=> '1D200', 'endhex'=>'1D24F', 'startdec'=> 119296 , 'enddec'=> 119375, 'range'=>'Ancient Greek Musical Notation'), -array('starthex'=> '1D300', 'endhex'=>'1D35F', 'startdec'=> 119552 , 'enddec'=> 119647, 'range'=>'Tai Xuan Jing Symbols'), -array('starthex'=> '1D360', 'endhex'=>'1D37F', 'startdec'=> 119648 , 'enddec'=> 119679, 'range'=>'Counting Rod Numerals'), -array('starthex'=> '1D400', 'endhex'=>'1D7FF', 'startdec'=> 119808 , 'enddec'=> 120831, 'range'=>'Mathematical Alphanumeric Symbols'), -array('starthex'=> '1F000', 'endhex'=>'1F02F', 'startdec'=> 126976 , 'enddec'=> 127023, 'range'=>'Mahjong Tiles'), -array('starthex'=> '1F030', 'endhex'=>'1F09F', 'startdec'=> 127024 , 'enddec'=> 127135, 'range'=>'Domino Tiles'), - -/* PLANE 2 */ - -array('starthex'=> '20000', 'endhex'=>'2A6DF', 'startdec'=> 131072 , 'enddec'=> 173791, 'range'=>'CJK Unified Ideographs Extension B'), -array('starthex'=> '2A700', 'endhex'=>'2B734', 'startdec'=> 173824 , 'enddec'=> 177972, 'range'=>'CJK Unified Ideographs Extension C'), -array('starthex'=> '2F800', 'endhex'=>'2FA1F', 'startdec'=> 194560 , 'enddec'=> 195103, 'range'=>'CJK Compatibility Ideographs Supplement'), - -); - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/font_collections.php b/inc/3rdparty/libraries/mpdf/utils/font_collections.php deleted file mode 100644 index 20f387ef3..000000000 --- a/inc/3rdparty/libraries/mpdf/utils/font_collections.php +++ /dev/null @@ -1,72 +0,0 @@ -Font collection files found in '.$ttfdir.' directory'; -foreach($ff AS $f) { - $ret = array(); - if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-4,4))=='.ttcf') { // Mac ttcf - $ttf->getTTCFonts($ttfdir.$f); - $nf = $ttf->numTTCFonts; - echo '

      Font collection file ('.$f.') contains the following fonts:

      '; - for ($i=1; $i<=$nf; $i++) { - $ret = $ttf->extractCoreInfo($ttfdir.$f, $i); - $tfname = $ret[0]; - $bold = $ret[1]; - $italic = $ret[2]; - $fname = strtolower($tfname ); - $fname = preg_replace('/[ ()]/','',$fname ); - $style = ''; - if ($bold) { $style .= 'Bold'; } - if ($italic) { $style .= 'Italic'; } - if (!$style) { $style = 'Regular'; } - - - echo '
      ['.$i.'] '.$tfname.' ('.$fname.') '.$style.'
      '; - - } - echo '
      '; - } -} - - -exit; - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/font_coverage.php b/inc/3rdparty/libraries/mpdf/utils/font_coverage.php deleted file mode 100644 index 5286d743a..000000000 --- a/inc/3rdparty/libraries/mpdf/utils/font_coverage.php +++ /dev/null @@ -1,255 +0,0 @@ -SetDisplayMode('fullpage'); -$mpdf->useSubstitutions = true; -$mpdf->debug = true; -$mpdf->simpleTables = true; -if ($checkdir) { - $ttfdir = $checkdir; -} -else { $ttfdir = _MPDF_TTFONTPATH; } - - - -$mqr=ini_get("magic_quotes_runtime"); -if ($mqr) { set_magic_quotes_runtime(0); } -if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); } - -//============================================================== - $smp = true; - $maxt = 131071; -//============================================================== -//============================================================== -$unifile = file('UnicodeData.txt'); -$unichars = array(); -foreach($unifile AS $line) { - if (preg_match('//',$line,$m)) { - $rangename = ''; - continue; - } - else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), Last>/',$line,$m)) { - if ($rangename && $rangename == $m[2]) { - $endrange = hexdec($m[1]); - for ($i=$startrange;$i<=$endrange; $i++) { - $unichars[$i] = $i; - } - } - $rangename = ''; - } - else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), First>/',$line,$m)) { - $startrange = hexdec($m[1]); - $rangename = $m[2]; - } - else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});/',$line,$m)) { - $unichars[hexdec($m[1])] = hexdec($m[1]); - $rangename = ''; - } -} - -// loads array $unicode_ranges -include('UnicodeRanges.php'); -//============================================================== -$html = ''; - -//============================================================== -$ff = scandir($ttfdir); -$tempfontdata = array(); -foreach($ff AS $f) { - $ttf = new TTFontFile_Analysis(); - $ret = array(); - $isTTC = false; - if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf') { - $ret[] = $ttf->extractCoreInfo($ttfdir.$f); - } - for ($i=0; $i $ur) { - if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - $html .= '
      '; - } - } - $html .= ''; - - - foreach ($tempfontdata AS $fname => $v) { - $cw = ''; - if (file_exists((_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'))) { $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); } - else { - $mpdf->fontdata[$fname]['R'] = $tempfontdata[$fname]['file']; - $mpdf->AddFont($fname); - $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); - } - if (!$cw) { - continue; - die("Font data not available for $fname"); - } - - $counter=0; - $max = $maxt; - - // create HTML content - $html .= ''; - $html .= ''; - - foreach($unicode_ranges AS $urk => $ur) { - if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) { - if ($ur['pua'] || $ur['reserved'] || $ur['control']) { - $html .= ''; - } - else { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - $rangestartdec = $ur['startdec']; - $rangeenddec = $ur['enddec']; - $uniinrange = 0; - $fontinrange = 0; - for ($i=$rangestartdec; $i<=$rangeenddec; $i++) { - //if (isset($cw[$i])) { $fontinrange++; } - if ($mpdf->_charDefined($cw, $i)) { $fontinrange++; } - if (isset($unichars[$i])) { $uniinrange++; } - } - if ($uniinrange) { - if ($fontinrange) { - $pc = ($fontinrange/$uniinrange); - $str = '('.$fontinrange.'/'.$uniinrange.')'; - if ($pc==1) { - $fullcovers[$urk][] = $fname; - $html .= ''; - } - else if ($pc>1) { - $fullcovers[$urk][] = $fname; - $html .= ''; - } - else if ($pc>=0.9) { - $html .= ''; - $nearlycovers[$urk][] = $fname; - } - else if ($pc>0.75) { $html .= ''; } - else if ($pc>0.5) { $html .= ''; } - else if ($pc>0.25) { $html .= ''; } - else { $html .= ''; } - } - else { $html .= ''; } - } - else { $html .= ''; } - } - } - } - - - $html .= ''; - - } -//============================================================== - $html .= '
      '.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')
      '.$fname.''.$str.''.$str.''.$str.''.$str.''.$str.''.$str.'(0/0)
      '; -} - -$html .= '

      Fonts with full coverage of Unicode Ranges

      '; -$html .= ''; -//$html .= ''; -foreach($unicode_ranges AS $urk => $ur) { - if ($ur['pua'] || $ur['reserved'] || $ur['control']) { continue; } - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - $ext = $ext2 = ''; - if ($ur['combining']) { $ext = 'background-color:#DDDDFF;'; $ext2 = '
      Special positioning required'; } - if ($ur['vertical']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '
      Vertical positioning required'; } - if ($ur['special']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '
      Special processing required'; } - - - $html .= ''; - $arr = $fullcovers[$urk]; - $narr = $nearlycovers[$urk]; - if (is_array($arr)) { $html .= ''; } - else if (is_array($narr)) { $html .= ''; } - else { $html .= ''; } -} -$html.= '
      '.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'.$ext2.''. implode(', ',$arr). '
      '. implode(', ',$narr). ' (>90%)
      '; - - -//============================================================== -echo $html; - -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/font_dump.php b/inc/3rdparty/libraries/mpdf/utils/font_dump.php deleted file mode 100644 index 907314038..000000000 --- a/inc/3rdparty/libraries/mpdf/utils/font_dump.php +++ /dev/null @@ -1,222 +0,0 @@ -StartProgressBarOutput(2); - -$mpdf->SetDisplayMode('fullpage'); - -$mpdf->useSubstitutions = true; -$mpdf->debug = true; -$mpdf->simpleTables = true; -// force fonts to be embedded whole i.e. NOT susbet -$mpdf->percentSubset = 0; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - -// This generates a .mtx.php file if not already generated -$mpdf->WriteHTML(''); -$mpdf->WriteHTML('

      '.strtoupper($font).'

      '); // Separate Paragraphs defined by font -$html = ''; -//============================================================== -//============================================================== -//============================================================== -//============================================================== -$unifile = file('UnicodeData.txt'); -$unichars = array(); - -foreach($unifile AS $line) { - if ($smp && preg_match('/^(1[0-9A-Za-z]{4});/',$line,$m)) { - $unichars[hexdec($m[1])] = hexdec($m[1]); - } - else if (preg_match('/^([0-9A-Za-z]{4});/',$line,$m)) { - $unichars[hexdec($m[1])] = hexdec($m[1]); - } -} - -// loads array $unicode_ranges -include('UnicodeRanges.php'); -//============================================================== -//============================================================== - - - -$cw = file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); -if (!$cw) { die("Error - Must be able to read font metrics file: "._MPDF_TTFONTDATAPATH.$font.'.cw.dat'); } -$counter=0; - - -include(_MPDF_TTFONTDATAPATH.$font.'.mtx.php'); - -if ($smp) { - $max = 131071; -} -else { - $max = 65535; -} - - -$justfinishedblank = false; -$justfinishedblankinvalid = false; - - foreach($unicode_ranges AS $urk => $ur) { - if (0 >= $ur['startdec'] && 0 <= $ur['enddec']) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - break; - } - } - $lastrange = $range ; - // create HTML content - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - - $html .= ''; - for ($i = 0; $i < 16; $i++) { - $html .= ''; - } - - - // print each character - for ($i = 32; $i < $max; ++$i) { - if (($i > 0) AND (($i % 16) == 0)) { - $notthisline = true; - while($notthisline) { - for ($j = 0; $j < 16; $j++) { - if ($mpdf->_charDefined($cw, ($i + $j))) { - //if (isset($cw[($i+$j)])) { - $notthisline = false; - } - } - if ($notthisline) { - if ($showmissing) { - $range = ''; - foreach($unicode_ranges AS $urk => $ur) { - if ($i >= $ur['startdec'] && $i <= $ur['enddec']) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - break; - } - } - $anyvalid = false; - for ($j = 0; $j < 16; $j++) { - if (isset($unichars[$i+$j])) { $anyvalid = true; break; } - } - if ($range && $range == $lastrange) { - if (!$anyvalid) { - if (!$justfinishedblankinvalid) { - $html .= ''; - } - $justfinishedblankinvalid = true; - } - else if (!$justfinishedblank ) { - $html .= ''; - $justfinishedblank = true; - } - } - else if($range) { - $html .= '
      '.strtoupper($font).'
      '.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')
      -'.sprintf('%X', $i).'
       
       

      '; - $mpdf->WriteHTML($html); $html = ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - for ($k = 0; $k < 16; $k++) { - $html .= ''; - } - $justfinishedblank = false; - $justfinishedblankinvalid = false; - } - $lastrange = $range ; - } - $i +=16; - if ($i > $max) { break 2; } - } - } - foreach($unicode_ranges AS $urk => $ur) { - if ($i >= $ur['startdec'] && $i <= $ur['enddec']) { - $rangekey = $urk; - $range = $ur['range']; - $rangestart = $ur['starthex']; - $rangeend = $ur['endhex']; - break; - } - } - - if ($i > 0 && ($i % 16) == 0 && ($range != $lastrange)) { - $html .= '
      '.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')
      -'.sprintf('%X', $k).'

      '; - $mpdf->WriteHTML($html); $html = ''; - $html .= ''; - $html .= ''; - $html .= ''; - $html .= ''; - for ($k = 0; $k < 16; $k++) { - $html .= ''; - } - } - $lastrange = $range ; - $justfinishedblank = false; - $justfinishedblankinvalid = false; - $html .= ''; - $html .= ''; - } - if ($mpdf->_charDefined($cw, $i)) { $html .= ''; $counter++; } - else if (isset($unichars[$i])) { $html .= ''; } - else { $html .= ''; } - } - - if (($i % 16) > 0) { - for ($j = ($i % 16); $j < 16; ++$j) { $html .= ''; } - } - $html .= '
      '.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')
      -'.sprintf('%X', $k).'
      '.(floor($i / 16)*16).''.sprintf('%03X', floor($i / 16)).'-&#'.$i.';

      '; -//============================================================== -//============================================================== -$mpdf->WriteHTML($html); // Separate Paragraphs defined by font - -$mpdf->Output(); -exit; - -//============================================================== -//============================================================== -//============================================================== -//============================================================== - - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/font_names.php b/inc/3rdparty/libraries/mpdf/utils/font_names.php deleted file mode 100644 index 21773b866..000000000 --- a/inc/3rdparty/libraries/mpdf/utils/font_names.php +++ /dev/null @@ -1,200 +0,0 @@ -useSubstitutions = true; -if ($checkdir) { - $ttfdir = $checkdir; -} -else { $ttfdir = _MPDF_TTFONTPATH; } - -$mqr=ini_get("magic_quotes_runtime"); -if ($mqr) { set_magic_quotes_runtime(0); } -if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); } -$ttf = new TTFontFile(); - -$tempfontdata = array(); -$tempsansfonts = array(); -$tempseriffonts = array(); -$tempmonofonts = array(); -$tempfonttrans = array(); - -$ff = scandir($ttfdir); - -foreach($ff AS $f) { - $ret = array(); - $isTTC = false; - if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-5,5))=='.ttcf') { // Mac ttcf - $isTTC = true; - $ttf->getTTCFonts($ttfdir.$f); - $nf = $ttf->numTTCFonts; - for ($i=1; $i<=$nf; $i++) { - $ret[] = $ttf->extractCoreInfo($ttfdir.$f, $i); - } - } - else if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf' ) { - $ret[] = $ttf->extractCoreInfo($ttfdir.$f); - } - for ($i=0; $i'; - } - else { - $tfname = $ret[$i][0]; - $bold = $ret[$i][1]; - $italic = $ret[$i][2]; - $fname = strtolower($tfname ); - $fname = preg_replace('/[ ()]/','',$fname ); - $tempfonttrans[$tfname] = $fname; - $style = ''; - if ($bold) { $style .= 'B'; } - if ($italic) { $style .= 'I'; } - if (!$style) { $style = 'R'; } - $tempfontdata[$fname][$style] = $f; - if ($isTTC) { - $tempfontdata[$fname]['TTCfontID'][$style] = $ret[$i][4]; - } - //if ($ret[$i][5]) { $tempfontdata[$fname]['rtl'] = true; } - //if ($ret[$i][7]) { $tempfontdata[$fname]['cjk'] = true; } - if ($ret[$i][8]) { $tempfontdata[$fname]['sip'] = true; } - if ($ret[$i][9]) { $tempfontdata[$fname]['smp'] = true; } - - $ftype = $ret[$i][3]; // mono, sans or serif - if ($ftype=='sans') { $tempsansfonts[] = $fname; } - else if ($ftype=='serif') { $tempseriffonts[] = $fname; } - else if ($ftype=='mono') { $tempmonofonts[] = $fname; } - } - } - -} -$tempsansfonts = array_unique($tempsansfonts); -$tempseriffonts = array_unique($tempseriffonts ); -$tempmonofonts = array_unique($tempmonofonts ); -$tempfonttrans = array_unique($tempfonttrans); - -if (!$pdf) { - echo '

      Information

      '; -} - -foreach ($tempfontdata AS $fname => $v) { - if (!isset($tempfontdata[$fname]['R']) || !$tempfontdata[$fname]['R']) { - if (!$pdf) echo 'WARNING - Font file for '.$fname.' may be an italic cursive script, or extra-bold etc.
      '; - if (isset($tempfontdata[$fname]['I']) && $tempfontdata[$fname]['I']) { - $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['I']; - } - else if (isset($tempfontdata[$fname]['B']) && $tempfontdata[$fname]['B']) { - $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['B']; - } - else if (isset($tempfontdata[$fname]['BI']) && $tempfontdata[$fname]['BI']) { - $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['BI']; - } - } - if (isset($tempfontdata[$fname]['smp']) && $tempfontdata[$fname]['smp']) { - if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 1 SMP
      '; - $tempfontdata[$fname]['smp'] = false; - } - if (isset($tempfontdata[$fname]['sip']) && $tempfontdata[$fname]['sip']) { - if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 2 SIP
      '; - if (preg_match('/^(.*)-extb/',$fname, $fm)) { - if (isset($tempfontdata[($fm[1])]) && $tempfontdata[($fm[1])]) { - $tempfontdata[($fm[1])]['sip-ext'] = $fname; - if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1]).'
      '; - } - else if (isset($tempfontdata[($fm[1].'-exta')]) && $tempfontdata[($fm[1].'-exta')]) { - $tempfontdata[($fm[1].'-exta')]['sip-ext'] = $fname; - if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1].'-exta').'
      '; - } - } - // else { unset($tempfontdata[$fname]['sip']); } - } - unset($tempfontdata[$fname]['sip']); - unset($tempfontdata[$fname]['smp']); -} - -$mpdf->fontdata = array_merge($tempfontdata ,$mpdf->fontdata); - - $mpdf->available_unifonts = array(); - foreach ($mpdf->fontdata AS $f => $fs) { - if (isset($fs['R']) && $fs['R']) { $mpdf->available_unifonts[] = $f; } - if (isset($fs['B']) && $fs['B']) { $mpdf->available_unifonts[] = $f.'B'; } - if (isset($fs['I']) && $fs['I']) { $mpdf->available_unifonts[] = $f.'I'; } - if (isset($fs['BI']) && $fs['BI']) { $mpdf->available_unifonts[] = $f.'BI'; } - } - - $mpdf->default_available_fonts = $mpdf->available_unifonts; - -if (!$pdf) { - echo '
      '; - echo '

      Font names as parsed by mPDF

      '; -} - -ksort($tempfonttrans); -$html = ''; -foreach($tempfonttrans AS $on=>$mn) { - if (!file_exists($ttfdir.$mpdf->fontdata[$mn]['R'])) { continue; } - $ond = '"'.$on.'"'; - $html .= '

      '.$ond.' font is available as '.$mn; - if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) { - $html .= '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext']; - } - $html .= '

      '; -} - -if ($pdf) { - $mpdf->WriteHTML($html); - $mpdf->Output(); - exit; -} - -foreach($tempfonttrans AS $on=>$mn) { - $ond = '"'.$on.'"'; - echo '
      '.$ond.' font is available as '.$mn; - if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) { - echo '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext']; - } - echo '
      '; -} -echo '
      '; - -echo '

      Sample config_fonts.php file

      '; -echo '
      Remember to edit the following arrays to place your preferred default first in order:
      '; - -echo '
      ';
      -
      -ksort($tempfontdata);
      -echo '$this->fontdata = '.var_export($tempfontdata,true).";\n";
      -
      -sort($tempsansfonts);
      -echo '$this->sans_fonts = array(\''.implode("', '", $tempsansfonts)."');\n";
      -sort($tempseriffonts);
      -echo '$this->serif_fonts = array(\''.implode("', '", $tempseriffonts)."');\n";
      -sort($tempmonofonts);
      -echo '$this->mono_fonts = array(\''.implode("', '", $tempmonofonts)."');\n";
      -echo '
      '; - -exit; - -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/mpdf/utils/index.php b/inc/3rdparty/libraries/mpdf/utils/index.php deleted file mode 100644 index 544f7f2ef..000000000 --- a/inc/3rdparty/libraries/mpdf/utils/index.php +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -

      mPDF Font Utility scripts for Version 5.0

      -

      -Dump all characters from a font (font_dump.php) -

      -

      -Show a list of all font names available (font_names.php) -

      -

      -Show fonts in Collections .ttc (font_collections.php) -

      -

      -Show coverage of characters from all fonts (font_coverage.php) -

      - -

      Edit the scripts to change the font folder if you wish - this is set by default to /ttfonts/

      - - - - - diff --git a/inc/3rdparty/libraries/tcpdf/CHANGELOG.TXT b/inc/3rdparty/libraries/tcpdf/CHANGELOG.TXT new file mode 100644 index 000000000..a7dde3f08 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/CHANGELOG.TXT @@ -0,0 +1,2860 @@ +6.0.093 (2014-09-02) + - Security fix: some serialize/unserialize methods were replaced with json_encode/json_decode to avoid a potential object injection with user supplied content. Thanks to ownCloud Inc. for reporting this issue. + - K_TIMEZONE constant was added to the default configuration to supress date-time warnings. + +6.0.092 (2014-09-01) + - Bug item #956 "Monospaced fonts are not alignd at the baseline" was fixed. + - Bug item #964 "Problem when changing font size" was fixed. + - Bug item #969 "ImageSVG with radialGradient problem" was fixed. + - sRGB.icc file was replaced with the one from the Debian package icc-profiles-free (2.0.1+dfsg-1) + +6.0.091 (2014-08-13) + - Issue #325"Division by zero when css fontsize equals 0" was fixed. + +6.0.090 (2014-08-08) + - Starting from this version TCPDF is also available in GitHub at https://github.com/tecnickcom/TCPDF + - Function getmypid() was removed for better compatibility with shared hosting environments. + - Support for pulling SVG stroke opacity value from RGBa color was mergeg [adf006]. + - Bug item #951 "HTML Table within TCPDF columns doesnt flow correctly on page break ..." was fixed. + +6.0.089 (2014-07-16) + - Bug item #948 "bottom line of rowspan cell not work correctly" was fixed. + +6.0.088 (2014-07-09) + - Bug item #946 "Case sensitive type check causes broken match for SVG" was fixed. + - Bug item #945 "Imagick load doesn't account for passed data string " was fixed. + +6.0.087 (2014-06-25) + - A bug affecting fitcell option in Multicell was fixed. + +6.0.086 (2014-06-20) + - Bug item #938 "Hyphenation-dash extends outside of cell" was fixed (collateral effect). + +6.0.085 (2014-06-19) + - Some example images were replaced. + - A race condition bug was fixed. + - Bug item #938 "Hyphenation-dash extends outside of cell" was fixed. + +6.0.084 (2014-06-13) + - A bug related to MultiCell fitcell feature was fixed. + - Bug item #931 "Documentation error for setPageFormat()" was fixed. + +6.0.083 (2014-05-29) + - Bug item #928 "setHtmlVSpace with HR element" was fixed. + +6.0.082 (2014-05-23) + - Bug item #926 "test statement instead of assignment used in tcpdf_fonts.php" was fixed. + - Bug item #925 "924 transparent images bug" was fixed. + +6.0.081 (2014-05-22) + - Bug item #922 "writehtml tables thead repeating" was fixed. + - Patch #71 "External and internal links, local and remote" wa applied. + +6.0.080 (2014-05-20) + - Bug item #921 "Fatal error in hyphenateText() function" was fixed. + - Bug item #923 "Automatic Hyphenation error" was fixed. + - Patch #70 "Augument TCPDFBarcode classes with ability to return raw png image data" was applied. + +6.0.079 (2014-05-19) + - Patch item #69 "Named destinations, HTML internal and external links" was merged. + - Bug item #920 "hyphenateText() should not hyphenate the content of style-tags in HTML mode" was fixed. + - Image method now trigs an error in case the cache is now writeable. + - Fixed issue with layer default status. + +6.0.078 (2014-05-12) + - A warning issue in addTTFfont() method was fixed. + - Fonts were updated to include cbbox metrics. + +6.0.077 (2014-05-06) + - A Datamatrix barcode bug was fixed. + +6.0.076 (2014-05-06) + - A bug in Datamatrix Base256 encoding was fixed. + - Merged fix for SVG use/clip-gradient. + - Now it is possible to prefix a page number in Link methods with the * character to avoid been changed when adding/deleting/moving pages (see example_045.php). + +6.0.075 (2014-05-05) + - Bug #917 "Using realtive Units like ex or em for images distort output in HTML mode" was fixed. + +6.0.074 (2014-05-03) + - Part of Bug #917 "Using realtive Units like ex or em for images distort output in HTML mode" was fixed. + - Bug #915 "Problem with SVG Image using Radial Gradients" was fixed. + +6.0.073 (2014-04-29) + - Bug #913 "Possible bug with line-height" was fixed. + - Bug #914 "MultiCell and FitCell" was fixed. + - Bug #915 "Problem with SVG Image using Radial Gradients" was fixed. + +6.0.072 (2014-04-27) + - Deprecated curly braces substring syntax was replaced with square braces. + +6.0.071 (2014-04-25) + - Bug #911 "error with buffered png pics" was fixed. + +6.0.070 (2014-04-24) + - Bug #910 "An SVG image is being cut off (with clipping mask) when you use align options" was fixed. + +6.0.069 (2014-04-24) + - Datamatrix Base256 encoding was fixed. + +6.0.068 (2014-04-22) + - Some Datamatrix barcode bugs were fixed. + +6.0.067 (2014-04-21) + - startLayer() method signature was changed to include a new "lock" parameter. + +6.0.066 (2014-04-20) + - Bug #908 "Linebreak is not considered when getting length of the next string" was fixed. + +6.0.065 (2014-04-10) + - Bug #905 "RGB percentage color bug in convertHTMLColorToDec()" was fixed. + +6.0.064 (2014-04-07) + - Header and Footer fonts are now set by default. + - Bug #904 "PDF corrupted" was fixed. + +6.0.063 (2014-04-03) + - Method TCPDF_IMAGES::_parsepng() was fixed to support transparency in Indexed images. + +6.0.062 (2014-03-02) + - The method startLayer() now accepts the NULL value for the $print parameter to not set the print layer option. + +6.0.061 (2014-02-18) + - Bug #893 "Parsing error on streamed xref for secured pdf" was fixed. + +6.0.060 (2014-02-16) + - Bug #891 "Error on parsing hexa fields" was fixed. + - Bug #892 "Parsing pdf with trailing space at start" was fixed. + +6.0.059 (2014-02-03) + - SVG 'use' support was imporved. + +6.0.058 (2014-01-31) + - Bug #886 "Bugs with SVG using and " was fixed. + +6.0.057 (2014-01-26) + - Bug #883 "Parsing error" was fixed. + +6.0.056 (2014-01-25) + - The automatic cache folder selection now works also with some restricted hosting environments. + - CSS text-transform property is now supported (requires the multibyte string library for php) - see examle n. 061 (Thanks to Walter Ferraz). + - Bug #884 "Parsing error prev tag looking for" was fixed. + +6.0.055 (2014-01-15) + - Bug #880 "Error detecting hX tags (h1,h2..)" was fixed + - Bug #879 "Thead on the second page inherits style of previous tr" was fixed + +6.0.054 (2014-01-13) + - Bug #877 "Parenteses causing corrupt text" was fixed. + +6.0.053 (2014-01-03) + - Bug #876 "Cell padding should not be multiplied with number of lines in getStringHeight" was fixed. + - Patch #68 "Empty img src attribute leads to access of uninitialized string offset" was applied. + +6.0.052 (2013-12-12) + - Bug #871 "Datamatrix coding" was fixed. + +6.0.051 (2013-12-02) + - cbbox array values in addTTFfont() were converted to integers. + +6.0.050 (2013-12-01) + - The method getNumLines() was extended to support hyphenation. + - The CSS property line-height now supports non percentage values. + +6.0.050 (2013-11-27) + - A bug related to PNG images was fixed. + +6.0.048 (2013-11-24) + - SVG vars are now reset in ImageSVG() method. + +6.0.047 (2013-11-19) + - SVG support was extended to support some nested defs. + +6.0.046 (2013-11-17) + - preg_replace_callback functions were replaced to improve memory performances. + +6.0.045 (2013-11-17) + - Bug #862 "Parsing error on flate filter" was fixed. + +6.0.044 (2013-11-10) + - Bug #857 "Undefined offset error" was fixed. + - The uniord method now uses a static cache to improve performances (thanks to Mathieu Masseboeuf for the sugegstion). + - Two bugs in the TCPDF_FONTS class were fixed. + +6.0.043 (2013-10-29) + - Bug #854 "CSS instruction display" was fixed. + +6.0.042 (2013-10-25) + - Bug #852 "CMYK Colors Bug" was fixed. + +6.0.041 (2013-10-21) + - Bug #851 "Problem with images in PDF. PHP timing out" was fixed. + +6.0.040 (2013-10-20) + - Bug #849 "SVG import bug" was fixed. + +6.0.039 (2013-10-13) + - Bug #843 "Wrong call in parser" was fixed. + - Bug #844 "Wrong object type named" was fixed. + - Bug #845 "Parsing error on obj ref prefixed by '000000'" was fixed. + +6.0.038 (2013-10-06) + - Bug #841 "Division by zero warning at writeHTML a
    34. tag" was fixed. + +6.0.037 (2013-09-30) + - Method getAllSpotColors() was added to return all spot colors. + - Method colorRegistrationBar() was extended to automatically print all spot colors and support individual spot colors. + - The method registrationMarkCMYK() was added to print a registration mark for CMYK colors. + - A bug related to page groups was fixed. + - Gradient() method now supports CMYK equivalents of spot colors. + - Example n. 56 was updated. + +6.0.036 (2013-09-29) + - Methods for registration bars and crop marks were extended to support registration color (see example n. 56). + - New default spot colors were added to tcpdf_colors.php, including the 'All' and 'None' special registration colors. + +6.0.035 (2013-09-25) + - TCPDF_PARSER class was improved. + +6.0.034 (2013-09-24) + - Bug #839 "Error in xref parsing in mixed newline chars" was fixed. + +6.0.033 (2013-09-23) + - Bug fix related to PNG image transparency using GD library. + +6.0.032 (2013-09-23) + - Bug #838 "Fatal error when imagick cannot handle the image, even though GD is available and can" was fixed. + +6.0.031 (2013-09-18) + - Bug #836 "Optional EOL marker before endstream" was fixed. + - Some additional controls were added to avoid "division by zero" error with badly formatted input. + +6.0.030 (2013-09-17) + - Bug #835 "PDF417 and Cyrilic simbols" was fixed. + +6.0.029 (2013-09-15) + - Constants K_TCPDF_PARSER_THROW_EXCEPTION_ERROR and K_TCPDF_PARSER_IGNORE_DECODING_ERRORS where removed in favor of a new configuration array in the TCPDF_PARSER class. + - The TCPDF_PARSER class can now be configured using the new $cfg parameter. + +6.0.028 (2013-09-15) + - A debug print_r was removed form tcpdf_parser.php. + - TCPDF_FILTERS class now throws an exception in case of error. + - TCPDF_PARSER class now throws an exception in case of error unless you define the constant K_TCPDF_PARSER_THROW_EXCEPTION_ERROR to false. + - The constant K_TCPDF_PARSER_IGNORE_DECODING_ERRORS can be set to tru eto ignore decoding errors on TCPDF_PARSER. + +6.0.027 (2013-09-14) + - A bug in tcpdf_parser wen parsing hexadecimal strings was fixed. + - A bug in tcpdf_parser wen looking for statxref was fixed. + - A bug on RC4 encryption was fixed. + +6.0.026 (2013-09-14) + - A bug in tcpdf_parser wen decoding streams was fixed. + +6.0.025 (2013-09-04) + - A pregSplit() bug was fixed. + - Improved content loading from URLs. + - Improved font path loading. + +6.0.024 (2013-09-02) + - Bug #826 "addEmptySignatureAppearance issue" was fixed. + +6.0.023 (2013-08-05) + - GNU Freefont fonts were updated. + - Licensing and copyright information about fonts were improved. + - PNG image support was improved. + +6.0.022 (2013-08-02) + - fixing initialization problem for signature_appearance property. + +6.0.021 (2013-07-18) + - The bug caused by the preg_split function on some PHP 5.2.x versions was fixed. + +6.0.020 (2013-06-04) + - The method addTTFfont() was fixed (Bug item #813 Undefined offset). + +6.0.019 (2013-06-04) + - The magic constant __DIR__ was replaced with dirname(__FILE__) for php 5.2 compatibility. + - The exceptions raised by file_exists() function were suppressed. + +6.0.018 (2013-05-19) + - The barcode examples were changed to automatically search for the barcode class path (in case the examples directory is not installed under the TCPDF root). + +6.0.017 (2013-05-16) + - The command line tool tcpdf_addfont.php was improved. + - The php logic was removed from configuration files that now contains only constant defines. + - The tcpdf_autoconfig.php file was added to automatically set missing configuration values. + +6.0.016 (2013-05-15) + - The tcpdf_addfont.php tool was improved (thanks to Remi Collet). + - Constant K_PATH_IMAGES is now automatically set in configuration file. + +6.0.015 (2013-05-14) + - Some unused vars were removed from AddFont() method. + - Some directories were moved inside the examples directory. + - All examples were updated to reflect the new default structure. + - Source code were clean-up up to be more compatible with system packaging. + - Files encodings and permissions were reset. + - The command line tool tcpdf_addfont.php was added on the tools directory. + +6.0.014 (2013-04-13) + - The signature of addTTFfont() method includes a new parameter to link existing fonts instead of copying and compressing them. + +6.0.013 (2013-04-10) + - Add support for SVG dx and dy text/tspan attributes. + - replace require() with require_once(). + - fix some minor typos on documentation. + - fix a problem when deleting all pages. + +6.0.012 (2013-04-24) + - An error condition in addHtmlLink() method was fixed (bug #799). + +6.0.011 (2013-04-22) + - Minor documentation changes. + +6.0.010 (2013-04-03) + - The method Rect() was fixed to print borders correctly. + +6.0.009 (2013-04-02) + - Adding back some files that were not properly committed on the latest release. + +6.0.008 (2013-04-01) + - Duplicated encoding maps was removed from tcpdf_font_data.php. + - Fixing bug on AddTTFFont(). + +6.0.007 (2013-03-29) + - HTML/CSS font size conversion were improved. + +6.0.006 (2013-03-27) + - Bug related to SVG and EPS files on xobjects were fixed. + +6.0.005 (2013-03-26) + - Default font path was fixed. + +6.0.004 (2013-03-21) + - Return value of addTTFfont() method was fixed. + +6.0.003 (2013-03-20) + - A bug related to non-unicode mode was fixed. + +6.0.002 (2013-03-18) + - _getFIXED call on tcpdf_fonts.php was fixed. + +6.0.001 (2013-03-18) + - Fixed $uni_type call on tcpdf.php. + +6.0.000 (2013-03-17) + - IMPORTANT: PHP4 support has been removed starting from this version. + - Several TCPDF methods and vars were moved to new class files: tcpdf_static.php, tcpdf_colors.php, tcpdf_images.php, tcpdf_font_data.php, tcpdf_fonts.php. + - Files htmlcolors.php, spotcolors.php, unicode_data.php and ecodings_maps.php were removed. + - Barcode classes were renamed and new barcode examples were added. + - Class TCPDF_PARSER was improved. + +******************************************************************************** + +5.9.209 (2013-03-15) + - Image method was improved. + +5.9.208 (2013-03-15) + - objclone fuction was patched to support old imagick extensions. + - tcpdf_parser was improved to support Cross-Reference Streams and large streams. + +5.9.207 (2013-03-04) + - Datamatrix class was fixed (a debug echo was removed). + +5.9.206 (2013-02-22) + - Bug item #754 "PNG with alpha channel becomes gray scale" was fixed. + - Minor documentation fixes. + +5.9.205 (2013-02-06) + - The constant K_TCPDF_THROW_EXCEPTION_ERROR was added on configuration file to change the behavior of Error() method. + - PDF417 barcode bug was fixed. + +5.9.204 (2013-01-23) + - The method Bookmark() was extended to include named destinations, URLs, internal links or embedded files (see example n. 15). + - automatic path calculation on configuration file was fixed. + - Error() method was extended to throw new Exception if PHP > 5. + +5.9.203 (2013-01-22) + - Horizontal position of radiobuttons and checkboxes was adjusted. + +5.9.202 (2012-12-16) + - Vertical space problem after table was fixed. + +5.9.201 (2012-12-10) + - First 256 chars are now always included on font subset to overcome a problem reported on the forum. + +5.9.200 (2012-12-05) + - Bug item #768 "Rowspan with Pagebreak error" was fixed. + - Page regions now works also with limited MultiCell() cells. + +5.9.199 (2012-11-29) + - Internal setImageBuffer() method was improved. + +5.9.198 (2012-11-19) + - Datamatrix EDIFACT mode was fixed. + +5.9.197 (2012-11-06) + - Bug item #756 "TCPDF 5.9.196 shows line on top of all PDFs" was fixed. + +5.9.196 (2012-11-02) + - Several methods were improved to avoid output when the context is out of page. + - Bug item #755 "remove cached files before unsetting" was fixed. + +5.9.195 (2012-10-24) + - Method _putfonts() was improved. + +5.9.194 (2012-10-23) + - Text alignment on TextField() method was fixed. + +5.9.193 (2012-09-25) + - Support for named destinations on HTML links was added (i.e.: link to named destination). + +5.9.192 (2012-09-24) + - A problem on the releasing process was fixed. + +5.9.191 (2012-09-24) + - SVG image naow support svg and eps images. + +5.9.190 (2012-09-23) + - "page" word translation is now set to empty if not defined. + - Tooltip feature was added on the radiobutton annotation. + +5.9.189 (2012-09-18) + - Bug item #3568969 "ini_get safe_mode error" was fixed. + +5.9.188 (2012-09-15) + - A datamatrix barcode bug was fixed. + +5.9.187 (2012-09-14) + - Subset feature was extended to include the first 256 characters. + +5.9.186 (2012-09-13) + - barcodes.php file was resynced. + - Methods SetAbsX, SetAbsY, SetAbsXY where added to set the absolute pointer coordinates. + - Method getCharBBox were added to get single character bounding box. + - Signature of addTTFfont method was changed ($addcbbox paramter was added). + +5.9.185 (2012-09-12) + - Method _putfontwidths() was fixed. + +5.9.184 (2012-09-11) + - A problem with EAN barcodes was fixed. + +5.9.183 (2012-09-07) + - A problem with font names normalization was fixed. + +5.9.182 (2012-09-05) + - Bug item #3564982 "Infinite loop in Write() method" was fixed. + +5.9.181 (2012-08-31) + - composer.json file was added. + - Bug item #3563369 "Cached images are not unlinked some time" was fixed. + +5.9.180 (2012-08-22) + - Bug item #3560493 "Problems with nested cells in HTML" was fixed. + +5.9.179 (2012-08-04) + - SVG 'use' tag was fixed for 'circle' and 'ellipse' shift problem. + - Alpha status is now correctly stored and restored by getGraphicVars() and SetGraphicVars() methods. + +5.9.178 (2012-08-02) + - SVG 'use' tag was fixed for 'circle' and 'ellipse'. + +5.9.177 (2012-08-02) + - An additional control on annotations was fixed. + +5.9.176 (2012-07-25) + - A bug related to stroke width was fixed. + - A problem related to font spacing in HTML was fixed. + +5.9.175 (2012-07-25) + - The problem of missing letter on hyphen break was fixed. + +5.9.174 (2012-07-25) + - The problem of wrong filename when downloading PDF from an Android device was fixed. + - The method setHeaderData() was extended to set text and line color for header (see example n. 1). + - The method setFooterData() was added to set text and line color for footer (see example n. 1). + - The methods setTextShadow() and getTextShadow() were added to set text shadows (see example n. 1). + - The GetCharWidth() method was fixed for negative character spacing. + - A 'none' border mode is now correctly recognized. + - Break on hyphen problem was fixed. + +5.9.173 (2012-07-23) + - Some additional control wher added on barcode methods. + - The option CURLOPT_FOLLOWLOCATION on Image method is now disabled if PHP safe_mode is on or open_basedir is set. + - Method Bookmark() was extended to include X parameter. + - Method setDestination() was extended to include X parameter. + - A problem with Thai language was fixed. + +5.9.172 (2012-07-02) + - A PNG color profile issue was fixed. + +5.9.171 (2012-07-01) + - Some SVG rendering problems were fixed. + +5.9.170 (2012-06-27) + - Bug #3538227 "Numerous errors inserting shared images" was fixed. + +5.9.169 (2012-06-25) + - Some SVG rendering problems were fixed. + +5.9.168 (2012-06-22) + - Thai language rendering was fixed. + +5.9.167 (2012-06-22) + - Thai language rendering was fixed and improved. + - Method isCharDefined() was improved. + - Protected method replaceChar() was added. + - Font "kerning" word was corrected to "tracking". + +5.9.166 (2012-06-21) + - Array to string conversion on file_id creation was fixed. + - Thai language rendering was fixed (thanks to Atsawin Chaowanakritsanakul). + +5.9.165 (2012-06-07) + - Some HTML form related bugs were fixed. + +5.9.164 (2012-06-06) + - A bug introduced on the latest release was fixed. + +5.9.163 (2012-06-05) + - Method getGDgamma() was changed. + - Rendering performances of PNG images with alpha channel were improved. + +5.9.162 (2012-05-11) + - A bug related to long text on TD cells was fixed. + +5.9.161 (2012-05-09) + - A bug on XREF table was fixed (Bug ID: 3525051). + - Deprecated Imagick:clone was replaced. + - Method objclone() was fixed for PHP4. + +5.9.160 (2012-05-03) + - A bug on tcpdf_parser.php was fixed. + +5.9.159 (2012-04-30) + - Barcode classes were updated to fix PNG export Bug (ID: 3522291). + +5.9.158 (2012-04-22) + - Some SVG-related bugs were fixed. + +5.9.157 (2012-04-16) + - Some SVG-related bugs were fixed. + +5.9.156 (2012-04-10) + - Bug item #3515885 "TOC and booklet: left and right page exchanged". + - SetAutoPageBreak(false) now works also in multicolumn mode. + +5.9.155 (2012-04-02) + - Bug item #3512596 "font import problems" was fixed. + - Method addTTFfont() was modified to extract only specified Platform ID and Encoding ID (check the source code documentation). + - All fonts were updated. + - Bug item #3513867 "booklet and setHeaderTemplateAutoreset: header shifted left" was fixed. + - Bug item #3513749 "TCPDF Superscript/Subscript" was fixed. + +5.9.154 (2012-03-29) + - A debug echo was removed. + +5.9.153 (2012-03-28) + - A bug on font conversion was fixed. + - All fonts were updated. + - Method isCharDefined() was added to find if a character is defined on the selected font. + - Method replaceMissingChars() was added to automatically replace missing chars on selected font. + - SetFont() method was fixed. + +5.9.152 (2012-03-23) + - The following overprint methods were added: setOverprint(), getOverprint(). + - Signature of setAlpha() method was changed and method getAlpha() was added. + - stroke-opacity support was added on SVG. + - The following date methods were added: setDocCreationTimestamp(), setDocModificationTimestamp(), getDocCreationTimestamp(), getDocModificationTimestamp(), getFormattedDate(), getTimestamp(). + - Signature of _datestring() method was changed. + - Method getFontBBox() was added. + - Method setPageBoxTypes() was aded. + +5.9.151 (2012-03-22) + - Bug item #3509889 "Transform() distorts PDF" was fixed. + - Precision of real number were extended. + - ComboBox and ListBox methods were fixed. + - Bulgarian language file was added. + - addTOC() method was improved to include bookmark color and font style. + +5.9.150 (2012-03-16) + - A bug related to form fields in PDF/A mode was fixed. + +5.9.149 (2012-02-21) + - Bug item #3489933 "SVG Parser treats tspan like text" was fixed. + +5.9.148 (2012-02-17) + - Bug item #3488600 "Multiple radiobutton sets get first set value" was fixed. + +5.9.147 (2012-02-14) + - A problem with SVG gradients has been fixed. + +5.9.146 (2012-02-12) + - Bug item #3486880 "$filehash undefine error" was fixed. + - The default font is now the one specified at PDF_FONT_NAME_MAIN constant. + +5.9.145 (2012-01-28) + - Japanese language file was added. + - TCPDF license and README.TXT files were updated. + +5.9.144 (2012-01-12) + - HTML output on barcode classes was improved. + +5.9.143 (2012-01-08) + - Bug item #3471057 "setCreator() has no effect" was fixed. + +5.9.142 (2011-12-23) + - Source code documentation was updated. + +5.9.141 (2011-12-14) + - Some minor bugs were fixed. + +5.9.140 (2011-12-13) + - SVG now supports embedded images encoded as base64. + +5.9.139 (2011-12-11) + - Spot color methods were fixed. + +5.9.138 (2011-12-10) + - cropMark() method was improved (check source code documentation). + - Example n. 56 was updated. + - Bug item #3452390 "Check Box still not ticked when set to true" was fixed. + +5.9.137 (2011-12-01) + - Bug item #3447005 "Background color and border of Form Elements is printed" was fixed. + - Color support for Form elements was improved. + +5.9.136 (2011-11-27) + - Bug item #3443387 "SetMargins with keep option does not work for top margin" was fixed. + +5.9.135 (2011-11-04) + - Bug item #3433406 "Double keywords in description" was fixed. + +5.9.134 (2011-10-29) + - The default value for $defcol parameter on convertHTMLColorToDec() method was fixed. + - Deafult HTTP headers were changed to avoid browser caching. + - Some deprecated syntax were replaced. + +5.9.133 (2011-10-26) + - Bug item #3428446 "copyPage method not working when diskcache enabled" was fixed. + +5.9.132 (2011-10-20) + - Bug item #3426167 "bug in function convertHTMLColorToDec()" was fixed. + +5.9.131 (2011-10-13) + - An error message was added to ImagePngAlpha() method. + +5.9.130 (2011-10-12) + - Now you can set image data strings on HTML img tag by encoding the image binary data in this way: $imgsrc = '@'.base64_encode($imgdata); + +5.9.129 (2011-10-07) + - Core fonts metrics was fixed (replace all helvetica and times php files on fonts folder). + - Form fields support was improved and some problems were fixed (check the example n. 14). + - Bug item #3420249 "Issue with booklet and MultiCell" was fixed. + +5.9.128 (2011-10-06) + - Method addTTFfont() was improved (check the source code documentation). + - Method setExtraXMP() to set custom XMP data was added. + +5.9.127 (2011-10-04) + - Readonly mode option was activated for radiobuttons. + +5.9.126 (2011-10-03) + - Bug item #3417989 "Graphics State operator in form XObject fails to render" was fixed. + - Xobjects problems with transparency, gradients and spot colors were fixed. + +5.9.125 (2011-10-03) + - Support for 8-digit CMYK hexadecimal color representation was added (to be used with XHTML and SVG). + - Spot colors support was improved (check example n. 37). + - Color methods were improved. + +5.9.124 (2011-10-02) + - Core fonts were updated. + +5.9.123 (2011-10-02) + - The method addTTFfont() wad added to automatically convert TTF fonts (check the new fonts guide at http://www.tcpdf.org). + - Old font utils were removed. + - All fonts were updated and new arabic fonts were added (almohanad were removed and replaced by aefurat and aealarabiya). + - The file unicode_data.php was updated. + - The file encodings_maps.php was added. + - PDF/A files are now compressed to save space. + - XHTML input form fields now support text-alignment attribute. + +5.9.122 (2011-09-29) + - PDF/A-1b compliance was improved to pass some online testing. + +5.9.121 (2011-09-28) + - This version includes support for PDF/A-1b format (the class constructor signature was changed - see example n. 65). + - Method setSRGBmode() was added to force sRGB_IEC61966-2.1 black scaled ICC color profile for the whole document (file sRGB.icc was added). + - 14 new fonts were added to allow embedding core fonts (for PDF/A compliance). + - Font utils were fixed. + +5.9.120 (2011-09-22) + - This version includes a fix for _getTrueTypeFontSubset() method. + +5.9.119 (2011-09-19) + - This version includes a fix for extra page numbering on TOC. + +5.9.118 (2011-09-17) + - This version includes some changes that allows you to add a bookmark for a page that do not exist. + +5.9.117 (2011-09-15) + - TCPDFBarcode and TCPDF2DBarcode classes were extended to include a method for exporting barcodes as PNG images. + +5.9.116 (2011-09-14) + - Datamatrix class was improved and documentation was fixed. + +5.9.115 (2011-09-13) + - Datamatrix ECC200 barcode support was added (a new datamatrix.php file was added) - check example n. 50. + - getBarcodeHTML() method was added on TCPDFBarcode and TCPDF2DBarcode classes to return an HTML representation of the barcode. + - cURL options on Image() method were improved. + - A bug on write2DBarcode() was fixed. + +5.9.114 (2011-09-04) + - A bug related to column position was fixed. + +5.9.113 (2011-08-24) + - This release include two new experimental files for parsing an existing PDF document (the integration with TCPDF is under development). + +5.9.112 (2011-08-18) + - A newline character was added after the 'trailer' keyword for compatibility with some parsers. + - Support for layers was improved. + +5.9.111 (2011-08-17) + - Barcode CODE 39 default gap was restored at 1. + +5.9.110 (2011-08-17) + - Barcode CODE 39 was fixed. + +5.9.109 (2011-08-12) + - Method getNumLines() was fixed. + - A bug related to page break in multi-column mode was fixed. + +5.9.108 (2011-08-09) + - A bug on PHP4 version was fixed. + +5.9.107 (2011-08-08) + - This version includes a minor bugfix. + +5.9.106 (2011-08-04) + - This version includes transparency groups: check the new parameter on startTemplate() method and example 62. + +5.9.105 (2011-08-04) + - Bug item #3386153 "Check Box not ticked when set to true" was fixed. + +5.9.104 (2011-08-01) + - Bug item #3383698 "imagemagick, resize and dpi" was fixed. + +5.9.103 (2011-07-16) + - Alignment of XHTML lines was improved. + - Spell of the "length" word was fixed. + +5.9.102 (2011-07-13) + - Methods startLayer() and endLayer() were added to support arbitrary PDF layers. + - Some improvements/fixes for images were added (thanks to Brendan Abbott). + +5.9.101 (2011-07-07) + - Support for JPEG and PNG ICC Color Profiles was added. + - Method addEmptySignatureAppearance() was added to add empty signature fields (see example n. 52). + - Bug item #3354332 "Strange line spacing with reduced font-size in writeHTML" was fixed. + +5.9.100 (2011-06-29) + - An SVG bug has been fixed. + +5.9.099 (2011-06-27) + - Bug item #3335045 "Font freesans seems somehow corrupted in footer" was fixed. + +5.9.098 (2011-06-23) + - The Named Destination feature was fixed. + +5.9.097 (2011-06-23) + - The method setHtmlVSpace() now can be used also for tags: div, li, br, dt and dd. + - The Named Destination feature was added (check the example n. 15) - thanks to Christian Deligant. + +5.9.096 (2011-06-19) + - Bug item #3322234 "Surrogate pairs codes in arrUTF8ToUTF16BE" was fixed. + +5.9.095 (2011-06-18) + - Numbers alignment for Table-Of-Content methods was improved and fixed. + - Font subsetting was fixed to include all parts of composite fonts. + +5.9.094 (2011-06-17) + - Bug item #3317898 "Page Group numbering broken in 5.9.093" was fixed. + +5.9.093 (2011-06-16) + - Method setStartingPageNumber() was added to set starting page number (for automatic page numbering). + +5.9.092 (2011-06-15) + - Method _putpages() was improved. + - Bug item #3316678 "Memory overflow when use Rotate and SetAutoPageBreak" was fixed. + - Right alignment of page numbers was improved. + +5.9.090 (2011-06-14) + - Methods AliasNbPages() and AliasNumPage() were re-added as deprecated for backward compatibility. + +5.9.089 (2011-06-13) + - Example n. 8 was updated. + - Method sendOutputData() was changed to remove default compression (it was incompatible with some server settings). + - Bugs related to page group numbers were fixed. + - Method copyPage() was fixed. + - Method Image() was improved to include support for alternative and external images. + +5.9.088 (2011-06-01) + - Method getAutoPageBreak() was added (see example n. 51). + - Example n. 51 (full page background) was updated. + +5.9.087 (2011-06-01) + - Method sendOutputData() was improved to include deflate encoding. + - Barcode classes on PHP 4 version were fixed. + +5.9.086 (2011-05-31) + - Font files were updated (the ones on the previous release were broken). + - The script fonts/utils/makeallttffonts.php was updated and fixed. + - Output() method was improved to use compression when available. + +5.9.085 (2011-05-31) + - TCPDFBarcode class (barcodes.php) now includes getBarcodeSVG() and getBarcodeSVGcode() methods to get SVG image representation of the barcode. + - TCPDF2DBarcode class (2dbarcodes.php) now includes getBarcodeSVG() and getBarcodeSVGcode() methods to get SVG image representation of the barcode. + +5.9.084 (2011-05-29) + - Font files were updated. + - The file fonts/utils/makeallttffonts.php was updated. + - Bug item# 3308774 "Problems with font subsetting" was fixed. + +5.9.083 (2011-05-24) + - Bug item #3308387 "line height & SetCellHeightRatio" was fixed. + +5.9.082 (2011-05-22) + - Bug item #3305592 "Setting fill color <> text color breaks text clipping" was fixed. + +5.9.081 (2011-05-18) + - Method resetHeaderTemplate() was added to reset the xobject template used by Header() method. + - Method setHeaderTemplateAutoreset() was added to automatically reset the xobject template used by Header() method at each page. + +5.9.080 (2011-05-17) + - A problem related to file path calculation for images was fixed. + - A problem related to unsupressed getimagesize() error was fixed. + +5.9.079 (2011-05-16) + - Footer() method was changed to use C128 barcode as default (instead of the previous C128B). + +5.9.078 (2011-05-12) + - Bug item #3300878 "wrong rendering for html bullet list in some case" was fixed. + - Bug item #3301017 "Emphasized vs. font-weight" was fixed. + - Barcode Code 128 was improved to include AUTO mode (automatically switch between A, B and C modes). + - Examples n. 27 and 49 were updated. + +5.9.077 (2011-05-07) + - Bug item #3298591 "error code93" was fixed. + - SetLineStyle() function was improved. + +5.9.076 (2011-05-06) + - Bug item #3298264 "codebar 93 error" was fixed. + +5.9.075 (2011-05-02) + - Table header alignment when using WriteHTMLCell() or MultiCell() was fixed. + +5.9.074 (2011-04-28) + - Bug item #3294306 "CSS classes not work in table section" was fixed. + +5.9.073 (2011-04-27) + - A bug related to character entities on HTML cells was fixed. + +5.9.072 (2011-04-26) + - Method resetColumns() was added to remove multiple columns and reset page margins (example n. 10 was updated). + +5.9.071 (2011-04-19) + - Bug #3288574 "
      trouble" was fixed. + +5.9.069 (2011-04-19) + - Bug #3288763 "HTML-Table: non-breaking table rows: Bug" was fixed. + +5.9.068 (2011-04-15) + - Bookmark, addTOC and addHTMLTOC methods were improved to include font style and color (Examples 15, 49 and 59 were updated). + - Default $_SERVER['DOCUMENT_ROOT'] value on tcpdf_config.php file was changed. + +5.9.067 (2011-04-10) + - Performances were drastically improved (PDF documents are now created more quickly). + +5.9.066 (2011-04-09) + - A bug related to digital signature + encryption was fixed. + - A bug related to encryption + xobject templates was fixed. + +5.9.065 (2011-04-08) + - Bug item #3280512 "Text encoding iso-8859-2 crashes" was fixed. + +5.9.064 (2011-04-05) + - A bug related to character entities on HTML cells was fixed. + +5.9.063 (2011-04-01) + - Bug item #3267235 "WriteHTML() and image that doesn't fit on the page" was fixed. + +5.9.062 (2011-03-23) + - Bug item #3232650 "Using Write if there are pageRegions active creates error" was fixed. + - Bug item #3221891 "text input borders" was fixed. + - Bug item #3228958 "Adobe Reader 9.4.2 crash" was fixed. + +5.9.061 (2011-03-15) + - Bug item #3213488 "wrong function call in function Write" was fixed. + - Bug item #3203007 "list element with black background" was fixed. + +5.9.060 (2011-03-08) + - addTOC() method was fixed for text alignment problems. + +5.9.059 (2011-02-27) + - Default Header() method was improved to reduce document size. + +5.9.058 (2011-02-25) + - Image() method was improved to cache images with transparency layers (thanks to Korneliusz Jarzębski for reporting this problem). + +5.9.057 (2011-02-24) + - A problem with image caching system was fixed (thanks to Korneliusz Jarzębski for reporting this problem). + +5.9.056 (2011-02-22) + - A bug on fixHTMLCode() method was fixed. + - Automatic line break for HTML was fixed. + +5.9.055 (2011-02-17) + - Another bug related to HTML table page break was fixed. + +5.9.054 (2011-02-16) + - A bug related to HTML table page break was fixed. + +5.9.053 (2011-02-16) + - Support for HTML attribute display="none" was added. + +5.9.052 (2011-02-15) + - A bug related to HTML automatic newlines was fixed. + +5.9.051 (2011-02-12) + - "Commas at beginning of new lines" problem was fixed. + +5.9.050 (2011-02-11) + - Bug #3177606 "SVG Bar chart error" was fixed. + +5.9.049 (2011-02-03) + - Bug #3170777 "TCPDF creates a new page after a single line in writeHTML" was fixed. + +5.9.048 (2011-02-02) + - No changes. Just released to override previous release that was not uploaded correctly. + +5.9.047 (2011-01-28) + - Bug #3167115 "PDF error in (example 48)" was fixed (was introduced in 5.8.046). + +5.9.046 (2011-01-18) + - PDF view/print layers are now automatically turned off if not used (see setVisibility() method). + +5.9.045 (2011-01-17) + - HTML list support were improved. + +5.9.044 (2011-01-15) + - Bug #3158422 "writeHTMLCell Loop" was fixed. + - Some HTML image alignment problems were fixed. + +5.9.043 (2011-01-14) + - Bug #3158178 "PHP Notice" was fixed. + - Bug #3158193 "Endless loop in writeHTML" was fixed. + - Bug #3157764 "SVG Pie chart incorrectly rendered2". + +5.9.042 (2011-01-14) + - Some problems of the PHP4 version were fixed. + +5.9.041 (2011-01-13) + - A problem with SVG elliptical arc path was fixed (ref. bug #3156574). + - A problem related to font weight on HTML table headers was fixed. + +5.9.040 (2011-01-12) + - A bug related to empty pages after table was fixed. + +5.9.039 (2011-01-12) + - Bug item #3155759 "openssl_random_pseudo_bytes() slow under Windows" was fixed. + +5.9.038 (2011-01-11) + - Minor bugs were fixed. + +5.9.037 (2011-01-09) + - An alignment problem for HTML texts was fixed. + +5.9.036 (2011-01-07) + - A bug related to HTML tables on header was fixed. + +5.9.035 (2011-01-03) + - A problem related to HTML table border alignment was fixed. + - Bug #2996366 "FastCGI and Header Problems" was fixed. + +5.9.034 (2010-12-19) + - DejaVu and GNU Free fonts were updated. + +5.9.033 (2010-12-18) + - Source code documetnation was improved. + +5.9.032 (2010-12-18) + - Default font stretching and spacing values are now inherited by HTML methods. + +5.9.031 (2010-12-16) + - Source code documentation errors were fixed. + +5.9.030 (2010-12-16) + - Several source code documentation errors were fixed. + - Source code style was changed for Doxygen. + - Source code documentation was moved online to http://www.tcpdf.org + +5.9.029 (2010-12-04) + - The $fitbox parameter on Image() method was extended to specify image alignment inside the box (check the example n. 9). + +5.9.028 (2010-12-03) + - Font utils makefont.php and makeallttffonts.php were updated. + +5.9.027 (2010-12-01) + - Spot Colors are now better integrated with HTML mode. + - Method SetDocInfoUnicode() was added to turn on/off Unicode mode for document information dictionary (meta tags) - check the example n. 19. + +5.9.026 (2010-12-01) + - A problem with mixed text directions on HTML was fixed. + +5.9.025 (2010-12-01) + - The AddSpotColor() now automatically fills the spotcolor array (defined on spotcolors.php file). + +5.9.024 (2010-11-30) + - Bug item #3123612 "SVG not use gradientTransform in percentage mode" was fixed. + +5.9.023 (2010-11-25) + - A potential bug on SVG transcoder was fixed. + +5.9.022 (2010-11-21) + - Method ImageEPS includes support for EPS/AI Spot colors. + - Method ImageEPS includes a new parameter $fixoutvals to remove values outside the bounding box. + +5.9.021 (2010-11-20) + - Support for custom bullet points images was added (check the example n.6) + - Examples n. 6 and 61 were update (check the comments inside). + +5.9.020 (2010-11-19) + - A problem related to additional page when using multicolumn mode was fixed. + +5.9.019 (2010-11-19) + - An SVG bug was fixed. + - ImageSVG() and ImageEPS() methods now accepts image data streams (put the string on the $file parameter preceded by '@' character). + - Option 'E' was added to the $dest parameter of Output() method to return the document as base64 mime multi-part email attachment (RFC 2045). + +5.9.018 (2010-11-19) + - An SVG bug was fixed. + +5.9.017 (2010-11-16) + - Tagline color was set to transparent. + - The method fixHTMLCode() was added to automatically clean up HTML code (requires HTML Tidy). + +5.9.016 (2010-11-16) + - Bug item #3109705 "list item page break hanging bullet" was fixed. + +5.9.015 (2010-11-16) + - Bug item affecting QRCode was fixed. + - Some bugs affecting HTML lists were fixed. + - ImageSVG() and fitBlock() methods were improved to handle some SVG problems. + - Some problems with PHP4 compatibility were fixed. + +5.9.014 (2010-11-15) + - Bug item #3109464 "QRCode error" was fixed. + +5.9.013 (2010-11-15) + - Bug item #3109257 "Problem with interlaced GIFs and PNGs" was fixed. + - Image function now accepts image data streams (check example n. 9). + +5.9.012 (2010-11-12) + - Method getTCPDFVersion() was added. + - PDF_PRODUCER constant was removed. + - Method convertHTMLColorToDec() was improved. + - HTML colors now support spot color names defined on the new spotcolors.php file. + - The default method Header() was improved to support SVG and EPS/AI images. + - A bug on SVG importer was fixed. + +5.9.011 (2010-11-02) + - Bug item #3101486 "Bug Fix for image loading" was fixed. + +5.9.010 (2010-10-27) + - Support for CSS properties 'border-spacing' and 'padding' for tables were added. + - Several language files were added. + +5.9.009 (2010-10-21) + - HTML text alignment was improved to include the case of RTL text on LTR direction and LTR text on RTL direction. + +5.9.008 (2010-10-21) + - Bug item #3091502 "Bookmark oddity" was fixed. + - HTML internal links now accepts page number and Y position. + - The method write1DBarcode() was improved to accept separate horizontal and vertical padding (see example n. 27). + +5.9.007 (2010-10-20) + - Method adjustCellPadding() was fixed to handle bad input. + +5.9.006 (2010-10-19) + - Support for AES 256 bit encryption was added (see example n. 16). + - Method getNumLines() was fixed for the empty string case. + +5.9.005 (2010-10-18) + - Method addPageRegion() was changed to accept regions starting exactly from the top of the page. + +5.9.004 (2010-10-18) + - A bug related to annotations was fixed. + - The file unicode_data.php was canged to encapsulate all data in a class. + - The file htmlcolors.php was changed to remove the global variable. + +5.9.003 (2010-10-15) + - Support for no-write page regions was added. Check the example n. 64 and new methods setPageRegions(), addPageRegion(), getPageRegions(), removePageRegion(). + - A bug on Right-To-Left alignment was fixed. + +5.9.002 (2010-10-08) + - Cell method was improved to preserve the font stretching and spacing values when using the $stretch parameter (see example n. 4). + +5.9.001 (2010-10-07) + - The problem of blank page for nobr table higher than a single page was fixed. + +5.9.000 (2010-10-06) + - Support for text stretching and spacing (tracking) was added, see example n. 63 and methods setFontStretching(), getFontStretching(), setFontSpacing(), getFontSpacing(). + - Support for CSS properties 'font-stretch' and 'letter-spacing' was added (see example n. 63). + - The cMargin state was replaced by cell_padding array that can be set/get using setCellPadding() and getCellPadding() methods. + - Methods getCellPaddings() and setCellPaddings() were added to fine tune cell paddings (see example n. 5). + - Methods getCellMargins() and setCellMargins() were added to fine tune cell margins (see example n. 5). + - Method write1DBarcode() was improved to permit custom labels (see example n. 27). + - Method ImagePngAlpha() now includes support for ImageMagick to improve performances. + - XObject Template support was extended to support Multicell(), writeHTML() and writeHTMLCell() methods. + - The signature of getNumLines() and getStringHeight() methods is changed. + - Example n. 57 was updated. + +// ------------------------------------------------------------------- + +5.8.034 (2010-09-27) + - A bug related to SetFont on XObject templates was fixed. + +5.8.033 (2010-09-25) + - A problem with Footer() and multiple columns was fixed. + +5.8.032 (2010-09-22) + - Bug #3073165 "Issues with changes to addHTMLVertSpace()" was fixed. + +5.8.031 (2010-09-20) + - Bug #3071961 "Spaces in HTML" was fixed. + +5.8.030 (2010-09-17) + - SVG support was improved and some bugs were fixed. + +5.8.029 (2010-09-16) + - A problem with HTML borders was fixed. + +5.8.028 (2010-09-13) + - Bug #3065224 "mcrypt_create_iv error on TCPDF 5.8.027 on PHP 5.3.2" was fixed. + +5.8.027 (2010-09-13) + - Bug #3065118 "mcrypt_decrypt error on TCPDF 5.8.026 on PHP 5.3.2" was fixed. + +5.8.026 (2010-09-13) + - A bug on addHTMLTOC() method was fixed. Note: be sure that the #TOC_PAGE_NUMBER# template has enough width to be printed correctly. + +5.8.025 (2010-09-09) + - Bug #3062692 "Textarea inside a table" was fixed. + +5.8.024 (2010-09-08) + - Bug #3062005 "Undefined variable: ann_obj_id" was fixed. + +5.8.023 (2010-08-31) + - Forms bug added on version 5.8.019 was fixed. + +5.8.022 (2010-08-31) + - Bug #3056632 "SVG rendered vertically flipped" was fixed. + +5.8.021 (2010-08-30) + - A new CID-0 'chinese' font was added for traditional Chinese. + - Bug #3054287 'Inner tags are ignored due to "align" attribute' was fixed. + +5.8.020 (2010-08-26) + - CSS "catch-all" class selector is now supported. + +5.8.019 (2010-08-26) + - XObject Templates now includes support for links and annotations. + - A problem related to link alignment on cell was fixed. + - A problem related to SVG styles was fixed. + +5.8.018 (2010-08-25) + - Method getNumberOfColumns() was added. + - A problem related to table header was fixed. + - Method getSVGTransformMatrix() was fixed to apply SVG transformations in the correct order. + - SVG support was improved and several bugs were fixed. + +5.8.017 (2010-08-25) + - This version includes support for XObject Templates (see the new example n. 62). + - Methods starttemplate(), endTemplate() and printTemplate() were added (see the new example n. 62). + +5.8.016 (2010-08-24) + - Alignment problem on write2DBarcode was fixed. + +5.8.015 (2010-08-24) + - A problem arised with the latest bugfix was fixed. + +5.8.014 (2010-08-23) + - Method _getxobjectdict() was added for better compatibility with external extensions. + - A bug related to radiobuttons was fixed. + - Bug #3051509 "new line after punctuation marks" was fixed (partially). + +5.8.013 (2010-08-23) + - SVG support for 'direction' property was added. + - A problem on default width calculation for linear barcodes was fixed. + - New option was added to write1DBarcode() method to improve alignments (see example n. 27). + - Bug #3050896 "Nested HTML tables: styles are not applied" was fixed. + - Method _putresourcedict() was improved to include external XObject templates. + +5.8.012 (2010-08-22) + - Support for SVG 'text-anchor' property was added. + +5.8.011 (2010-08-21) + - Method write1DBarcode() was improved to be backward compatible (check the new example n. 27). + - Support for CSS width and height properties on images were added. + +5.8.010 (2010-08-20) + - Documentation of unhtmlentities() was fixed. + - The 'fitwidth' option was added and border color problem was fixed on write1DBarcode() method (check the example n. 27). + +5.8.009 (2010-08-20) + - Internal object numbering was improved. + - Some errors in object encryption were fixed. + +5.8.008 (2010-08-19) + - Method write1DBarcode() was changed, check the example n. 27. + - Method Footer() was changed to account for barcode changes. + - Automatic calculation of K_PATH_URL constant was fixed on configuration file. + - Method setEqualColumns() was fixed for $width=0 case. + - Method AddTOC() was fixed for multipage and multicolumn modes. + - Better support for SVG "font-family" property. + - A problem on default Page Zoom mode was fixed. + - Several Annotation bugs were fixed. + +5.8.007 (2010-08-18) + - A bug affecting HTML tables was fixed. + - Bug #3047500 "SVG not rendering paths properly" was fixed. + +5.8.006 (2010-08-17) + - A bug affecting HTML table nesting was fixed. + +5.8.005 (2010-08-17) + - A bug affecting the HTML 'select' tag in certain conditions was fixed. + +5.8.004 (2010-08-17) + - Better support for HTML "font-family" property. + - A bug related to HTML multicolumn was fixed. + +5.8.003 (2010-08-16) + - Better support for HTML "font-family" property. + +5.8.002 (2010-08-14) + - HTML alignments were improved + - IMPORTANT: Default regular expression to find spaces has been changed to exclude the non-breaking-space (160 DEC- A0 HEX). If you are using setSpacesRE() method, please read the new documentation. + - Example n. 1 was updated. + +5.8.001 (2010-08-12) + - Bug #3043650 "subsetchars incorrectly cached" was fixed. + +5.8.000 (2010-08-11) + - A control to avoid bookmarking page 0 was added. + - addTOC() method now includes support for multicolumn mode. + - Support for tables in multicolumn mode was improved. + - Example n.10 was updated. + - All trimming functions were replaced with stringLeftTrim(), stringRightTrim() and stringTrim(). + - HTML alignments were improved. + +------------------------------------------------------------ + +5.7.003 (2010-08-08) + - Bug #3041263 "php source ending is bad" was fixed (all PHP files were updated, including fonts). + +5.7.002 (2010-08-06) + - Methods copyPage(), movePage() and deletePage() were changed to account for internal markings. + +5.7.001 (2010-08-05) + - Bug #3040105 "Broken PDF when using TOC (example 45)" was fixed. + +5.7.000 (2010-08-03) + - CSS borders are now supported for HTML tables and other block tags (see example n. 61); + - Cell borders were improved (see example n. 57); + - Minor bugs were fixed. + +------------------------------------------------------------ + +5.6.000 (2010-07-31) + - A bug with object IDs was fixes. + - Performances were improved. + +------------------------------------------------------------ + +5.5.015 (2010-07-29) + - Automatic fix for unclosed self-closing tag. + - Support for deprecated 's' and 'strike' tags was added. + - Empty list items problem was fixed. + +5.5.014 (2010-07-15) + - Support for external images was improved. + +5.5.013 (2010-07-14) + - Bug #3029338 "FI and FO output destination filename bug" was fixed (previous fix was wrong). + +5.5.012 (2010-07-14) + - Bug #3029310 "Font baseline inconsistencies with line-height and font-size" was fixed. + - Bug #3029338 "FI and FO output destination filename bug" was fixed. + +5.5.011 (2010-07-09) + - Support for multiple CSS classes was added. + - The method getColumn() was added to return the current column number. + - Some regular Expressions were fixed to be more compatible with UTF-8. + +5.5.010 (2010-07-06) + - Bug item #3025772 "Borders in all image functions are still flawed" was fixed. + +5.5.009 (2010-07-05) + - A problem related to last page footer was fixed. + - Image alignments and fit-on-page features were improved. + +5.5.008 (2010-07-02) + - A problem on table header alignment in booklet mode was fixed. + - Default graphic vars are now applied for setHeader(); + +5.5.007 (2010-07-02) + - Attribute "readonly" was added to input and textarea form fields. + - Vertical alignment feature was added on MultiCell() method only for simple text mode (see example n. 5). + - Text-Fit feature was added on MultiCell() method only for simple text mode (see example n. 5). + +5.5.006 (2010-06-29) + - getStringHeight() and getNumLines() methods were fixed. + +5.5.005 (2010-06-28) + - Bug #3022170 "getFontDescent() does not return correct descent value" was fixed. + - Some problems with multicolumn mode were fixed. + +5.5.004 (2010-06-27) + - Bug #3021803 "SVG Border" was fixed. + +5.5.003 (2010-06-26) + - On Write() method, blank lines at the beginning of a page or column are now automatically removed. + +5.5.002 (2010-06-24) + - ToUnicode Identity-H name was replaced with a full CMap (to avoid preflight syntax error). + - Bug #3020638 "str_split() not available in php4" was fixed. + - Bug #3020665 "file_get_contents() too many parameters for php4" was fixed. + +5.5.001 (2010-06-23) + - A problem on image streams was fixed. + +5.5.000 (2010-06-22) + - Several PDF syntax errors (and related bugs) were fixed. + - Bug #3019090 "/Length values are wrong if AES encryption is used" was fixed. + +------------------------------------------------------------ + +5.4.003 (2010-06-19) + - A problem related to page boxes was fixed. + - Bug #3016920 "Font subsetting issues when editing pdf" was partially fixed (Note that flattening transparency layers is currently incompatible with TrueTypeUnicode fonts). + +5.4.002 (2010-06-18) + - A problem related with setProtection() method was fixed. + +5.4.001 (2010-06-18) + - A problem related with setProtection() method was fixed. + +5.4.000 (2010-06-18) + - The method setSignatureAppearance() was added, check the example n. 52. + - Several problems related to font subsetting were fixed. + +------------------------------------------------------------ + +5.3.010 (2010-06-15) + - Previous release was corrupted. + +5.3.009 (2010-06-15) + - Bug #3015934 "Bullets don't display correctly" was fixed. + +5.3.008 (2010-06-13) + - This version fixes some problems of SVG rasterization. + +5.3.007 (2010-06-13) + - This version improves SVG support. + +5.3.006 (2010-06-10) + - This version includes a change in uniqid calls for backward compatibility with PHP4. + +5.3.005 (2010-06-09) + - The method getPageSizeFromFormat() was changed to include all standard page formats (includes 281 page formats + variation). + +5.3.004 (2010-06-08) + - Bug #3013291 "HTML table cell width" was fixed. + - Bug #3013294 "HTML table cell alignment" was fixed. + - The columns widths of HTML tables are now inherited from the first row. + +5.3.003 (2010-06-08) + - Bug #3013102 "HTML table header misaligned after page break" was fixed. + +5.3.002 (2010-06-07) + - The methods setFontSubsetting() and setFontSubsetting() were added to control the default font subsetting mode (see example n. 1). + - Bug #3012596 "Whitespace should not appeared after use Thai top characters" was fixed. + - Examples n. 1, 14, and 54 were updated. + +5.3.001 (2010-06-06) + - Barcode PDF417 was improved to support Macro Code Blocks (see example n. 50). + +5.3.000 (2010-06-05) + - License was changed to GNU-LGPLv3 (see the updated LICENSE.TXT file). + - PDF417 barcode support was added (check the example n. 50). + - The method write2DBarcode() was improved (some parameters were added and other changed - check example n. 50). + +------------------------------------------------------------ + +5.2.000 (2010-06-02) + - IMPORTANT: Support for font subsetting was added by default to reduce the size of documents using large unicode font files. + If you embed the whole font in the PDF, the person on the other end can make changes to it even if he didn't have your font. + If you subset the font, file size of the PDF will be smaller but the person who receives your PDF would need to have your same font in order to make changes to your PDF. + - The signature of the SetFont() and AddFont() methods were changed to include the font subsetting option (subsetting is applied by default). + - Examples 14 and 54 were updated. + +------------------------------------------------------------ + +5.1.002 (2010-05-27) + - Bug #3007818 "SetAutoPageBreak fails with MultiCell" was fixed. + - A bug related to MultiCell() minimun height was fixed. + +5.1.001 (2010-05-26) + - The problem of blank page after table was fixed. + +5.1.000 (2010-05-25) + - This version includes support for CSS (Cascading Style Sheets) (see example n. 61). + - The convertHTMLColorToDec() method was improved. + +------------------------------------------------------------ + +5.0.014 (2010-05-21) + - A problem on color and style of HTML links was fixed. + - A bug relative to gradients was fixed. + - The getStringHeight() method was added and getNumLines() method was improved. + - All examples were updated. + +5.0.013 (2010-05-19) + - A bug related to page-breaks and table cells was fixed. + +5.0.012 (2010-05-19) + - Page orientation bug was fixed. + - The access to method setPageFormat() was changed to 'protected' because it is not intended to be directly called. + +5.0.011 (2010-05-19) + - Page orientation bug was fixed. + - Bug #3003966 "Multiple columns and nested lists" was fixed. + +5.0.010 (2010-05-17) + - The methods setPageFormat(), setPageOrientation() and related methods were extended to include page boxes, page rotations and page transitions. + - The method setPageBoxes() was added to set page boundaries (MediaBox, CropBox, BleedBox, TrimBox, ArtBox); + - A bug relative to underline, overline and linethrough was fixed. + +5.0.009 (2010-05-16) + - Bug #3002381 "Multiple columns and nested lists" was fixed. + +5.0.008 (2010-05-15) + - Bug "Columns WriteHTML and Justification" was fixed. + +5.0.007 (2010-05-14) + - Bug #3001347 "Bug when using WriteHTML with setEqualColumns()" was fixed. + - Bug #3001505 "problem with sup and sub tags at the beginning of a line" was fixed. + +5.0.006 (2010-05-13) + - Length of hr tag was fixed. + - An error on 2d barcode method was fixed. + +5.0.005 (2010-05-12) + - WARNING: The logic of permissions on the SetProtection() method has been inverted and extended (see example 16). Now you have to specify the features you want to block. + - SetProtection() method was extended to support RSA and AES 128 encryption and public-keys (see example 16). + - Bug #2999489 "setEqualColumns() and TOC uses wrong columns" was fixed (see the example 10). + +5.0.004 (2010-05-10) + - HTML line alignment when using sub and sup tags was fixed. + +5.0.003 (2010-05-07) + - Horizontal alignment was fixed for images and barcodes. Now the X coordinate is always relative to the left margin. Use GetAbsX() instead of GetX() to get the X relative to left margin. + - Header() method was changed to account for new image alignment rules. + +5.0.002 (2010-05-06) + - Bookmark() and related methods were fixed to accept HTML code. + - A problem on HTML links was fixed. + +5.0.001 (2010-05-06) + - Protected method _putstream was re-added for backward compatibility. + - The following method were added to display HTML Table Of Content (see example n. 59): + addTOCPage(), endTOCPage(), addHTMLTOC(). + +5.0.000 (2010-05-05) + - Method ImageSVG() was added to embedd SVG images (see example n. 58). Note that not all SVG images are supported. + - Method setRasterizeVectorImages() was added to enable/disable rasterization for vector images via ImageMagick library. + - Method RoundedRectXY() was added. + - Method PieSectorXY() was added. + - Gradient() method is now public and support new features. + - Shading to transparency is now supported. + - Image alignments were fixed. + - Support for dynamic images were improved. + - PDF_IMAGE_SCALE_RATIO has been changed to 1.25 for better compatibility with SVG. + - RAW and RAW2 modes were added to 2D Barcodes (see example n. 50). + - Automatic padding feature was added on barcodes (see examples n. 27 and 50). + - Bug #2995003 "Reproduced thead bug" was fixed. + - The Output() method now accepts FI and FD destinations to save the document on server before sending it to the client. + - Ellipse() method was improved and fixed (see page 2 of example n. 12). + +------------------------------------------------------------ + +4.9.018 (2010-04-21) + - Bug item #2990356 "Current font size not respected with more than two HTML

      " was fixed. + +4.9.017 (2010-04-21) + - Bug item #2990224 "Different behaviour for equivalent HTML strings" was fixed. + - Bug item #2990314 "Dash is not appearing with SHY character" was fixed. + +4.9.016 (2010-04-20) + - An error on htmlcolors.php was fixed. + - getImageFileType() method was improved. + - GIF images with transparency are now better supported. + - Automatic page orientation was improved. + +4.9.015 (2010-04-20) + - A new method copyPage() was added to clone pages (see example n. 44). + - Support for text overline was added. + - Underline and linethrough methods were fixed. + - Bug #2989058 "SHY character causes unnecessary word-wrapping" was fixed. + +4.9.014 (2010-04-18) + - Bug item #2988845 was fixed. + +4.9.013 (2010-04-15) + - Image() and ImageEPS() methods were fixed and improved; $fitonpage parameter was added. + +4.9.012 (2010-04-12) + - The hyphenateText() method was added to automatically hyphenate text (see example n. 46). + +4.9.011 (2010-04-07) + - Vertical alignments for Cell() method were improved (see example n. 57). + +4.9.010 (2010-04-06) + - Signature of Cell() method now includes new parameters for vertical alignment (see example n. 57). + - Text() method was extended to include all Cell() parameters. + - HTML line alignment procedure was changed to fix some bugs. + +4.9.009 (2010-04-05) + - Text() method was fixed for backward compatibility. + +4.9.008 (2010-04-03) + - Additional line space after table header was removed. + - Support for HTML lists in multicolumn mode was added. + - The method setTextRenderingMode() was added to set text rendering modes (see the example n. 26). + - The following HTML attributes were added to set text rendering modes (see the example n. 26): stroke, strokecolor, fill. + +4.9.007 (2010-04-03) + - Font Descent computation was fixed (patch #2981441). + +4.9.006 (2010-04-02) + - The constant K_TCPDF_CALLS_IN_HTML was added on configuration file to enable/disable the ability to call TCPDF methods in HTML. + - The usage of tcpdf tag in HTML mode was changed to remove the possible security flaw offered by the eval() function (thanks to Matthias Hecker for spotting this security problem). See the new example n. 49 for further information. + +4.9.005 (2010-04-01) + - Bug# 2980354 "Wrong File attachment description with security" was fixed. + - Several problems with HTML line alignment were fixed. + - The constant K_THAI_TOPCHAR was added on configuration file to enable/disable the special procedure used to avoid the overlappind of symbols on Thai language. + - A problem with font name directory was fixed. + - A bug on _destroy() method was fixed. + +4.9.004 (2010-03-31) + - Patch #979681 "GetCharWidth - default character width" was applied (bugfix). + +4.9.003 (2010-03-30) + - Problem of first
      on multiple columns was fixed. + - HTML line alignment was fixed. + - A QR-code bug was fixed. + +4.9.002 (2010-03-29) + - Patch #2978349 "$ignore_min_height is ignored in function Cell()" was applied. + - Bug #2978607 "2D Barcodes are wrong" was fixed. + - A problem with HTML block tags was fixed. + - Artificial italic for CID-0 fonts was added. + - Several multicolumn bugs were fixed. + - Support for HTML tables on multicolumn was added. + +4.9.001 (2010-03-28) + - QR Code minor bug was fixed. + - Multicolumn mode was added (see the new example n. 10). + - The following methods were added: setEqualColumns(), setColumnsArray(), selectColumn(). + - Thai diacritics support were changed (note that this is incompatible with html justification). + +4.9.000 (2010-03-27) + - QR Code (2D barcode) support was added (see example n. 50). + - The following methods were added to print crop and registration marks (see example n. 56): colorRegistrationBar(), cropMark(), registrationMark(). + - Limited support for CSS line-height property was added. + - Gradient method now supports Gray, RGB and CMYK space color. + - Example n. 51 was updated. + - Vertical alignment of font inside cell was fixed. + - Support for multiple Thai diacritics was added. + - Bug item #2974929 "Duplicate case values" was fixed. + - Bug item #2976729 "File attachment not working with security" was fixed. + +------------------------------------------------------------ + +4.8.039 (2010-03-20) + - Problems related to custom locale settings were fixed. + - Problems related to HTML on Header and Footer were fixed. + +4.8.038 (2010-03-13) + - Various bugs related to page-break in HTML mode were fixed. + - Bug item #2968974 "Another

      pagebreak problem" was fixed. + - Bug item #2969276 "justification problem" was fixed. + - Bug item #2969289 "bug when using justified text and custom headers" was fixed. + - Images are now automatically resized to be contained on the page. + - Some HTML line alignments were fixed. + - Signature of AddPage() and SetMargins() methods were changed to include an option to set default page margins. + +4.8.037 (2010-03-03) + - Bug item #2962068 was fixed. + - Bug item #2967017 "Problems with and pagebreaks" was fixed. + - Bug item #2967023 "table header lost with pagebreak" was fixed. + - Bug item #2967032 "Header lost with nested tables" was fixed. + +4.8.036 (2010-02-24) + - Automatic page break for HTML images was improved. + - Example 10 was updated. + - Japanese was removed from example 8 because the freeserif font doesn't contain japanese (you can display it using arialunicid0 font). + +4.8.035 (2010-02-23) + - Automatic page break for HTML images was added. + - Support for multicolumn HTML was added (example 10 was updated). + +4.8.034 (2010-02-17) + - Language files were updated. + +4.8.033 (2010-02-12) + - A bug related to protection mode with links was fixed. + +4.8.032 (2010-02-04) + - A bug related to $maxh parameter on Write() and MultiCell() was fixed. + - Support for body tag was added. + +4.8.031 (2010-01-30) + - Bug item #2941589 "paragraph justify not working on some non-C locales" was fixed. + +4.8.030 (2010-01-27) + - Some text alignment cases were fixed. + +4.8.029 (2010-01-27) + - Bug item #2941057 "TOC Error in PDF File Output" was fixed. + - Some text alignment cases were fixed. + +4.8.028 (2010-01-26) + - Text alignment for RTL mode was fixed. + +4.8.027 (2010-01-25) + - Bug item #2938412 "Table related problems - thead, nobr, table width" was fixed. + +4.8.026 (2010-01-19) + - The misspelled word "lenght" was replaced with "length" in some variables and comments. + +4.8.025 (2010-01-18) + - addExtGState() method was improved to reuse existing ExtGState objects. + +4.8.024 (2010-01-15) + - Justification mode for HTML was fixed (Bug item #2932470). + +4.8.023 (2010-01-15) + - Bug item #2932470 "Some HTML entities breaks justification" was fixed. + +4.8.022 (2010-01-14) + - Source code documentation was fixed. + +4.8.021 (2010-01-03) + - A Bug relative to Table Of Content index was fixed. + +4.8.020 (2009-12-21) + - Bug item #2918545 "Display problem of the first row of a table with larger font" was fixed. + - A Bug relative to table rowspan mode was fixed. + +4.8.019 (2009-12-16) + - Bug item #2915684 "Image size" was fixed. + - Bug item #2914995 "Image jpeg quality" was fixed. + - The signature of the Image() method was changed (check the documentation for the $resize parameter). + +4.8.018 (2009-12-15) + - Bug item #2914352 "write error" was fixed. + +4.8.017 (2009-11-27) + - THEAD problem when table is used on header/footer was fixed. + - A first line alignment on HTML justification was fixed. + - Method getImageFileType() was added. + - Images with unknown extension and type are now supported via ImageMagick PHP extension. + +4.8.016 (2009-11-21) + - Document Information Dictionary was fixed. + - CSS attributes 'page-break-before', 'page-break-after' and 'page-break-inside' are now supported. + - Problem of unclosed last page was fixed. + - Problem of 'thead' unnecessarily repeated on the next page was fixed. + +4.8.015 (2009-11-20) + - A problem with some PNG transparency images was fixed. + - Bug #2900762 "Sort issues in Bookmarks" was fixed. + - Text justification was fixed for various modes: underline, strikeout and background. + +4.8.014 (2009-11-04) + - Bug item #2891316 "writeHTML, underlining replacing spaces" was fixed. + - The handling of temporary RTL text direction mode was fixed. + +4.8.013 (2009-10-26) + - Bug item #2884729 "Problem with word-wrap and hyphen" was fixed. + +4.8.012 (2009-10-23) + - Table cell alignments for RTL booklet mode were fixed. + - Images and barcode alignments for booklet mode were fixed. + +4.8.011 (2009-10-22) + - DejaVu fonts were updated to latest version. + +4.8.010 (2009-10-21) + - Bookmark for TOC page was added. + - Signature of addTOC() method is changed. + - Bookmarks are now automatically sorted by page and Y position. + - Example n. 45 was updated. + - Example n. 55 was added to display all charactes available on core fonts. + +4.8.009 (2009-09-30) + - Compatibility with PHP 5.3 was improved. + - All examples were updated. + - Index file for examples was added. + +4.8.008 (2009-09-29) + - Example 49 was updated. + - Underline and linethrough now works with cell stretching mode. + +4.8.007 (2009-09-23) + - Infinite loop problem caused by nobr attribute was fixed. + +4.8.006 (2009-09-23) + - Bug item #2864522 "No images if DOCUMENT_ROOT=='/'" was fixed. + - Support for text-indent CSS attribute was added. + - Method rollbackTransaction() was changed to support self-reassigment of previous object (check source code documentation). + - Support for the HTML "nobr" attribute was added to avoid splitting a table or a table row on two pages (i.e.: ...). + +4.8.005 (2009-09-17) + - A bug relative to multiple transformations and annotations was fixed. + +4.8.004 (2009-09-16) + - A bug on _putannotsrefs() method was fixed. + +4.8.003 (2009-09-15) + - Bug item #2858754 "Division by zero" was fixed. + - A bug relative to HTML list items was fixed. + - A bug relative to form fields on multiple pages was fixed. + - PolyLine() method was added (see example n. 12). + - Signature of Polygon() method was changed. + +4.8.002 (2009-09-12) + - A problem related to CID-0 fonts offset was fixed: if the $cw[1] entry on the CID-0 font file is not defined, then a CID keys offset is introduced. + +4.8.001 (2009-09-09) + - The appearance streams (AP) for anotations form fields was fixed (see examples n. 14 and 54). + - Radiobuttons were fixed. + +4.8.000 (2009-09-07) + - This version includes some support for Forms fields (see example n. 14) and XHTML forms (see example n. 54). + - The following methods were changed to work without JavaScript: TextField(), RadioButton(), ListBox(), ComboBox(), CheckBox(), Button(). + - Support for Widget annotations was improved. + - Alignment of annotation objects was fixed (examples 36 and 41 were updated). + - addJavascriptObject() method was added. + - Signature of Image() method was changed. + - htmlcolors.php file was updated. + +------------------------------------------------------------ + +4.7.003 (2009-09-03) + - Support for TCPDF methods on HTML was improved (see example n. 49). + +4.7.002 (2009-09-02) + - Bug item #2848892 "writeHTML + table: Gaps between rows" was fixed. + - JavaScript support was fixed (see example n. 53). + +4.7.001 (2009-08-30) + - The Polygon() and Arrow() methods were fixed and improved (see example n. 12). + +4.7.000 (2009-08-29) + - This is a major release. + - Some procedures were internally optimized. + - The problem of mixed signature and annotations was fixed (example n. 52). + +4.6.030 (2009-08-29) + - IMPORTANT: percentages on table cell widths are now relative to the full table width (as in standard HTML). + - Various minor bugs were fixed. + - Example n. 52 (digital signature) was updated. + +4.6.029 (2009-08-26) + - PHP4 version was fixed. + +4.6.028 (2009-08-25) + - Signature algorithm was finally fixed (see example n. 52). + +4.6.027 (2009-08-24) + - TCPDF now supports unembedded TrueTypeUnicode Fonts (just comment the $file entry on the fonts' php file. + +4.6.026 (2009-08-21) + - Bug #2841693 "Problem with MultiCell and ishtml and justification" was fixed. + - Signature functions were improved but not yet fixed (tcpdf.crt and example n. 52 were updated). + +4.6.025 (2009-08-17) + - Carriage returns (\r) were removed from source code. + - Problem related to set_magic_quotes_runtime() depracated was fixed. + +4.6.024 (2009-08-07) + - Bug item #2833556 "justification using other units than mm" was fixed. + - Documentation was fixed/updated. + +4.6.023 (2009-08-02) + - Bug item #2830537 "MirrorH can show mask for transparent PNGs" was fixed. + +4.6.022 (2009-07-24) + - A bug relative to single line printing when using WriteHTMLCell() was fixed. + - Signature support were improved but is still experimental. + - Fonts Free and Dejavu were updated to latest versions. + +4.6.021 (2009-07-20) + - Bug item #2824015 "XHTML Ampersand & in hyperlink bug" was fixed. + - Bug item #2824036 "Image as hyperlink in table, text displaced at page break" was fixed. + - Links alignment on justified text was fixed. + - Unicode "\u" modifier was added to re_spaces variable by default. + +4.6.020 (2009-07-16) + - Bug item #2821921 "issue in example 18" was fixed. + - Signature of SetRTL() method was changed. + +4.6.019 (2009-07-13) + - Bug item #2820703 "xref table broken" was fixed. + +4.6.018 (2009-07-10) + - Bug item #2819319 "Text over text" was fixed. + - Method Arrow() was added to print graphic arrows (example 12 was updated). + +4.6.017 (2009-07-05) + - Bug item #2816079 "Example 48 not working" was fixed. + - The signature of the checkPageBreak() was changed. The parameter $addpage was added to turn off the automatic page creation. + +4.6.016 (2009-06-16) + - Method setSpacesRE() was added to set the regular expression used for detecting withespaces or word separators. If you are using chinese, try: setSpacesRE('/[\s\p{Z}\p{Lo}]/');, otherwise you can use setSpacesRE('/[\s\p{Z}]/'); + - The method _putinfo() now automatically fills the metadata with '?' in case of empty string. + +4.6.015 (2009-06-11) + - Bug #2804667 "word wrap bug" was fixed. + +4.6.014 (2009-06-04) + - Bug #2800931 "Table thead tag bug" was fixed. + - A bug related to
       tag was fixed.
      +
      +4.6.013 (2009-05-28)
      +	- List bullets position was fixed for RTL languages.
      +
      +4.6.012 (2009-05-23)
      +	- setUserRights() method doesn't work anymore unless you call the setSignature() method with the Adobe private key!
      +
      +4.6.011 (2009-05-18)
      +	- Signature of the Image() method was changed to include the new $fitbox parameter (see source code documentation).
      +
      +4.6.010 (2009-05-17)
      +	- Image() method was improved: now is possible to specify the maximum dimensions for a constraint box defined by $w and $h parameters, and setting the $resize parameter to null.
      +	-  tag indent problem was fixed.
      +	- $y parameter was added to checkPageBreak() method.
      +	- Bug n. 2791773 "writeHTML" was fixed.
      +
      +4.6.009 (2009-05-13)
      +	- xref table for embedded files was fixed.
      +
      +4.6.008 (2009-05-07)
      +	- setSignature() method was improved (but is still experimental).
      +	- Example n. 52 was added.
      +
      +4.6.007 (2009-05-05)
      +	- Bug #2786685 "writeHtmlCell and 
      in custom footer" was fixed. + - Table header repeating bug was fixed. + - Some newlines and tabs are now automatically removed from HTML strings. + +4.6.006 (2009-04-28) + - Support for "..." was added. + - By default TCPDF requires PCRE Unicode support turned on but now works also without it (with limited ability to detect some Unicode blank spaces). + +4.6.005 (2009-04-25) + - Points (pt) conversion in getHTMLUnitToUnits() was fixed. + - Default tcpdf.pem certificate file was added. + - Experimental support for signing document was added but it is not yet completed (some help is needed - I think that the calculation of the ByteRange is OK and the problem is on the signature calculation). + +4.6.004 (2009-04-23) + - Method deletePage() was added to delete pages (see example n. 44). + +4.6.003 (2009-04-21) + - The caching mechanism of the UTF8StringToArray() method was fixed. + +4.6.002 (2009-04-20) + - Documentation of rollbackTransaction() method was fixed. + - The setImageScale() and getImageScale() methods now set and get the adjusting parameter used by pixelsToUnits() method. + - HTML images now support other units of measure than pixels (getHTMLUnitToUnits() is now used instead of pixelsToUnits()). + - WARNING: PDF_IMAGE_SCALE_RATIO has been changed by default to 1. + +4.6.001 (2009-04-17) + - Spaces between HTML block tags are now automatically removed. + - The bug related to cMargin changes between tables was fixed. + +4.6.000 (2009-04-16) + - WARNING: THIS VERSION CHANGES THE BEHAVIOUR OF $x and $y parameters for several TCPDF methods: + zero coordinates for $x and $y are now valid coordinates; + set $x and $y as empty strings to get the current value. + - Some error caused by 'empty' funtion were fixed. + - Default color for convertHTMLColorToDec() method was changed to white and the return value for invalid color is false. + - HTML on footer bug was fixed. + - The following examples were fixed: 5,7,10,17,19,20,21,33,42,43. + +4.5.043 (2009-04-15) + - Barcode class (barcode.php) was extended to include new linear barcode types (see example n. 27): + C39 : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9 + C39+ : CODE 39 with checksum + C39E : CODE 39 EXTENDED + C39E+ : CODE 39 EXTENDED + CHECKSUM + C93 : CODE 93 - USS-93 + S25 : Standard 2 of 5 + S25+ : Standard 2 of 5 + CHECKSUM + I25 : Interleaved 2 of 5 + I25+ : Interleaved 2 of 5 + CHECKSUM + C128A : CODE 128 A + C128B : CODE 128 B + C128C : CODE 128 C + EAN2 : 2-Digits UPC-Based Extention + EAN5 : 5-Digits UPC-Based Extention + EAN8 : EAN 8 + EAN13 : EAN 13 + UPCA : UPC-A + UPCE : UPC-E + MSI : MSI (Variation of Plessey code) + MSI+ : MSI + CHECKSUM (modulo 11) + POSTNET : POSTNET + PLANET : PLANET + RMS4CC : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) + KIX : KIX (Klant index - Customer index) + IMB: Intelligent Mail Barcode - Onecode - USPS-B-3200 (NOTE: requires BCMath PHP extension) + CODABAR : CODABAR + CODE11 : CODE 11 + PHARMA : PHARMACODE + PHARMA2T : PHARMACODE TWO-TRACKS + +4.5.042 (2009-04-15) + - Method Write() was fixed for the strings containing only zero value. + +4.5.041 (2009-04-14) + - Barcode methods were fixed. + +4.5.040 (2009-04-14) + - Method Write() was fixed to handle empty strings. + +4.5.039 (2009-04-11) + - Support for linear barcodes was extended (see example n. 27 and barcodes.php documentation). + +4.5.038 (2009-04-10) + - Write() method was improved to support separators for Japanese, Korean, Chinese Traditional and Chinese Simplified. + +4.5.037 (2009-04-09) + - General performances were improved. + - The signature of the method utf8Bidi() was changed. + - The method UniArrSubString() was added. + - Experimental support for 2D barcodes were added (see example n. 50 and 2dbarcodes.php class). + +4.5.036 (2009-04-03) + - TCPDF methods can be called inside the HTML code (see example n. 49). + - All tag attributes, such as

      must be enclosed within double quotes. + +4.5.035 (2009-03-28) + - Bug #2717436 "writeHTML rowspan problem (continued)" was fixed. + - Bug #2719090 "writeHTML fix follow up" was fixed. + - The method _putuserrights() was changed to avoid Adobe Reader 9.1 crash. This broken the 'trick' that was used to display forms in Acrobat Reader. + +4.5.034 (2009-03-27) + - Bug #2716914 "Bug writeHTML of a table in body and footer related with pb" was fixed. + - Bug #2717056 ] "writeHTML problem when setting tr style" was fixed. + - The signature of the Cell() method was changed. + +4.5.033 (2009-03-27) + - The support for rowspan/colspan on HTML tables was improved (see example n. 48). + +4.5.032 (2009-03-23) + - setPrintFooter(false) bug was fixed. + +4.5.031 (2009-03-20) + - Table header support was extended to multiple pages. + +4.5.030 (2009-03-20) + - thead tag is now supported on HTML tables (header rows are repeated after page breaks). + - The startTransaction() was improved to autocommit. + - List bullets now uses the foreground color (putHtmlListBullet()). + +4.5.029 (2009-03-19) + - The following methods were added to UNDO commands (see example 47): startTransaction(), commitTransaction(), rollbackTransaction(). + - All examples were updated. + +4.5.028 (2009-03-18) + - Bug #2690945 "List Bugs" was fixed. + - HTML text alignment on lists was fixed. + - The constant PDF_FONT_MONOSPACED was added to the configuration file to define the default monospaced font. + - The following methods were fixed: getPageWidth(), getPageHeight(), getBreakMargin(). + - All examples were updated. + +4.5.027 (2009-03-16) + - Method getPageDimensions() was added to get page dimensions. + - The signature of the following methos were changed: getPageWidth(), getPageHeight(), getBreakMargin(). + - _parsepng() method was fixed for PNG URL images (fread bug). + +4.5.026 (2009-03-11) + - Bug #2681793 affecting URL images with spaces was fixed. + +4.5.025 (2009-03-10) + - A small bug affecting hyphenation support was fixed. + - The method SetDefaultMonospacedFont() was added to define the default monospaced font. + +4.5.024 (2009-03-07) + - The bug #2666493 was fixed "Footer corrupts document". + +4.5.023 (2009-03-06) + - The bug #2666688 was fixed "Rowspan in tables". + +4.5.022 (2009-03-05) + - The bug #2659676 was fixed "refer to #2157099 test 4 < BR > problem still not fixed". + - addTOC() function bug was fixed. + +4.5.020 (2009-03-03) + - The following bug was fixed: "function removeSHY corrupts unicode". + +4.5.019 (2009-02-28) + - The problem of decimal separator using different locale was fixed. + - The text hyphenation is now supported (see example n. 46). + +4.5.018 (2009-02-26) + - The _destroy() method was added to unset all class variables and frees memory. + - Now it's possible to call Output() method multiple times. + +4.5.017 (2009-02-24) + - A minor bug that raises a PHP warning was fixed. + +4.5.016 (2009-02-24) + - Bug item #2631200 "getNumLines() counts wrong" was fixed. + - Multiple attachments bug was fixed. + - All class variables are now cleared on Output() for memory otpimization. + +4.5.015 (2009-02-18) + - Bug item #2612553 "function Write() must not break a line on   character" was fixed. + +4.5.014 (2009-02-13) + - Bug item #2595015 "POSTNET Barcode Checksum Error" was fixed (on barcode.php). + - Pagebreak bug for barcode was fixed. + +4.5.013 (2009-02-12) + - border attribute is now supported on HTML images (only accepts the same values accepted by Cell()). + +4.5.012 (2009-02-12) + - An error on image border feature was fixed. + +4.5.011 (2009-02-12) + - HTML links for images are now supported. + - height attribute is now supported on HTML cells. + - $border parameter was added to Image() and ImageEps() methods. + - The method getNumLines() was added to estimate the number of lines required for the specified text. + +4.5.010 (2009-01-29) + - Bug n. 2546108 "BarCode Y position" was fixed. + +4.5.009 (2009-01-26) + - Bug n. 2538094 "Empty pdf file created" was fixed. + +4.5.008 (2009-01-26) + - setPage() method was fixed to correctly restore graphic states. + - Source code was cleaned up for performances. + +4.5.007 (2009-01-24) + - checkPageBreak() and write1DBarcode() methods were fixed. + - Source code was cleaned up for performances. + - barcodes.php was updated. + +4.5.006 (2009-01-23) + - getHTMLUnitToPoints() method was replaced by getHTMLUnitToUnits() to fix HTML units bugs. + +4.5.005 (2009-01-23) + - Page closing bug was fixed. + +4.5.004 (2009-01-21) + - The access of convertHTMLColorToDec() method was changed to public + - Fixed bug on UL tag. + +4.5.003 (2009-01-19) + - Fonts on different folders are now supported. + +4.5.002 (2009-01-07) + - addTOC() function was improved (see example n. 45). + +4.5.001 (2009-01-04) + - The signature of startPageGroup() function was changed. + - Method Footer() was improved to automatically print page or page-group number (see example n. 23). + - Protected method formatTOCPageNumber() was added to customize the format of page numbers on the Table Of Content. + - The signature of addTOC() was changed to include the font used for page numbers. + +4.5.000 (2009-01-03) + - A new $diskcache parameter was added to class constructor to enable disk caching and reduce RAM memory usage (see example n. 43). + - The method movePageTo() was added to move pages to previous positions (see example n. 44). + - The methods getAliasNumPage() and getPageNumGroupAlias() were added to get the alias for page number (needed when using movepageTo()). + - The methods addTOC() was added to print a Table Of Content (see example n. 45). + - Imagick class constant was removed for better compatibility with PHP4. + - All existing examples were updated and new examples were added. + +4.4.009 (2008-12-29) + - Examples 1 and 35 were fixed. + +4.4.008 (2008-12-28) + - Bug #2472169 "Unordered bullet size not adjusted for unit type" was fixed. + +4.4.007 (2008-12-23) + - Bug #2459935 "no unit conversion for header line" was fixed. + - Example n. 42 for image alpha channel was added. + - All examples were updated. + +4.4.006 (2008-12-11) + - Method setLIsymbol() was changed to reflect latest changes in HTML list handling. + +4.4.005 (2008-12-10) + - Bug item #2413870 "ordered list override value" was fixed. + +4.4.004 (2008-12-10) + - The protected method getHTMLUnitToPoints() was added to accept various HTML units of measure (em, ex, px, in, cm, mm, pt, pc, %). + - The method intToRoman() was added to convert integer number to Roman representation. + - Support fot HTML lists was improved: the CSS property list-style-type is now supported. + +4.4.003 (2008-12-09) + - Bug item #2412147 "Warning on line 3367" was fixed. + - Method setHtmlLinksStyle() was added to set default HTML link colors and font style. + - Method addHtmlLink() was changed to use color and style defined on the inline CSS. + +4.4.002 (2008-12-09) + - Borders on Multicell() were fixed. + - Problem of Multicell() on Header function (Bug item #2407579) was fixed. + - Problem on graphics tranformations applied to Multicell() was fixed. + - Support for ImageMagick was added. + - Width calculation for nested tables was fixed. + +4.4.001 (2008-12-08) + - Some missing core fonts were added on fonts directory. + - CID0 fonts rendering was fixed. + - HTML support was improved (

       and  tags are now supported).
      +	- Bug item #2406022 "Left padding bug in MultiCell with maxh" was fixed.
      +
      +4.4.000 (2008-12-07)
      +	- File attachments are now supported (see example n. 41).
      +	- Font functions were optimized to reduce document size.
      +	- makefont.php was updated.
      +	- Linux binaries were added on /fonts/utils
      +	- All fonts were updated.
      +	- $autopadding parameter was added to Multicell() to disable automatic padding features.
      +	- $maxh parameter was added to Multicell() and Write() to set a maximum height.
      +
      +4.3.009 (2008-12-05)
      +	- Bug item #2392989 (Custom header + setlinewidth + cell border bug) was fixed.
      +
      +4.3.008 (2008-12-05)
      +	- Bug item #2390566 "rect bug" was fixed.
      +	- File path was fixed for font embedded files.
      +	- SetFont() method signature was changed to include the font filename.
      +	- Some font-related methods were improved.
      +	- Methods getFontFamily() and getFontStyle() were added.
      +
      +4.3.007 (2008-12-03)
      +	- PNG alpha channel is now supported (GD library is required).
      +	- AddFont() function now support custom font file path on $file parameter.
      +	- The default width variable ($dw) is now always defined for any font.
      +	- The 'Style' attribute on CID-0 fonts was removed because of protection bug.
      +
      +4.3.006 (2008-12-01)
      +	- A regular expression on getHtmlDomArray() to find HTML tags was fixed.
      +
      +4.3.005 (2008-11-25)
      +	- makefont.php was fixed.
      +	- Bug item #2339877 was fixed (false loop condition detected on WriteHTML()).
      +	- Bug item #2336733 was fixed (lasth value update on Multicell() when border and fill are disabled).
      +	- Bug item #2342303 was fixed (automatic page-break on Image() and ImageEPS()).
      +
      +4.3.004 (2008-11-19)
      +	- Function _textstring() was fixed (bug 2309051).
      +	- All examples were updated.
      +
      +4.3.003 (2008-11-18)
      +	- CID-0 font bug was fixed.
      +	- Some functions were optimized.
      +	- Function getGroupPageNoFormatted() was added.
      +	- Example n. 23 was updated.
      +
      +4.3.002 (2008-11-17)
      +	- Bug item #2305518 "CID-0 font don't work with encryption" was fixed.
      +
      +4.3.001 (2008-11-17)
      +	- Bug item #2300007 "download mimetype pdf" was fixed.
      +	- Double quotes were replaced by single quotes to improve PHP performances.
      +	- A bug relative to HTML cell borders was fixed.
      +
      +4.3.000 (2008-11-14)
      +	- The function setOpenCell() was added to set the top/bottom cell sides to be open or closed when the cell cross the page.
      +	- A bug relative to list items indentation was fixed.
      +	- A bug relative to borders on HTML tables and Multicell was fixed.
      +	- A bug relative to rowspanned cells was fixed.
      +	- A bug relative to html images across pages was fixed.
      +
      +4.2.009 (2008-11-13)
      +	- Spaces between li tags are now automatically removed.
      +
      +4.2.008 (2008-11-12)
      +	- A bug relative to fill color on next page was fixed.
      +
      +4.2.007 (2008-11-12)
      +	- The function setListIndentWidth() was added to set custom indentation widht for HTML lists.
      +
      +4.2.006 (2008-11-06)
      +	- A bug relative to HTML justification was fixed.
      +
      +4.2.005 (2008-11-06)
      +	- A bug relative to HTML justification was fixed.
      +	- The methods formatPageNumber() and PageNoFormatted() were added to format page numbers.
      +	- Default Footer() method was changed to use PageNoFormatted() instead of PageNo().
      +	- Example 6 was updated.
      +
      +4.2.004 (2008-11-04)
      +	- Bug item n. 2217039 "filename handling improvement" was fixed.
      +
      +4.2.003 (2008-10-31)
      +	- Font style bug was fixed.
      +
      +4.2.002 (2008-10-31)
      +	- Bug item #2210922 (htm element br not work) was fixed.
      +	- Write() function was improved to support margin changes.
      +
      +4.2.001 (2008-10-30)
      +	- setHtmlVSpace($tagvs) function was added to set custom vertical spaces for HTML tags.
      +	- writeHTML() function now support margin changes during execution.
      +	- Signature of addHTMLVertSpace() function is changed.
      +
      +4.2.000 (2008-10-29)
      +	- htmlcolors.php was changed to support class-loaders.
      +	- ImageEps() function was improved in performances.
      +	- Signature of Link() And Annotation() functions were changed.
      +	- (Bug item #2198926) Links and Annotations alignment were fixed (support for geometric tranformations was added).
      +	- rowspan mode for HTML table cells was improved and fixed.
      +	- Booklet mode for double-sided pages was added; see SetBooklet() function and example n. 40.
      +	- lastPage() signature is changed.
      +	- Signature of Write() function is changed.
      +	- Some HTML justification problems were fixed.
      +	- Some functions were fixed to better support RTL mode.
      +	- Example n. 10 was changed to support RTL mode.
      +	- All examples were updated.
      +
      +4.1.004 (2008-10-23)
      +	- unicode_data.php was changed to support class-loaders.
      +	- Bug item #2186040/2 (writeHTML margin problem) was fixed.
      +
      +4.1.003 (2008-10-22)
      +	- Bug item #2185399 was fixed (rowspan and page break).
      +	- Bugs item #2186040 was fixed (writeHTML margin problem).
      +	- Newline after table was removed.
      +
      +4.1.002 (2008-10-21)
      +	- Bug item #2184525 was fixed (rowspan on HTML cell).
      +
      +4.1.001 (2008-10-21)
      +	- Support for "start" attribute was added to HTML ordered list.
      +	- unicode_data.php file was changed to include UTF-8 to ASCII table.
      +	- Some functions were modified to better support UTF-8 extensions to core fonts.
      +	- Support for images on HTML lists was improved.
      +	- Examples n. 1 and 6 were updated.
      +
      +4.1.000 (2008-10-18)
      +	- Page-break bug using HTML content was fixed.
      +	- The "false" parameter was reintroduced to class_exists function on PHP5 version to avoid autoload.
      +	- addHtmlLink() function was improved to support internal links (i.e.: link to page 23).
      +	- Justification alignment is now supported on HTML (see example n. 39).
      +	- example_006.php was updated.
      +
      +4.0.033 (2008-10-13)
      +	- Bug n. 2157099 was fixed.
      +	- SetX() and SetY() functions were improved.
      +	- SetY() includes a new parameter to avoid the X reset.
      +
      +4.0.032 (2008-10-10)
      +	- Bug n. 2156926 was fixed (bold, italic, underlined, linethrough).
      +	- setStyle() method was removed.
      +	- Configuration file was changed to use helvetica (non-unicode) font by default.
      +	- The use of mixed font types was improved.
      +	- All examples were updated.
      +
      +4.0.031 (2008-10-09)
      +	- _putannots() and _putbookmarks() links alignments were fixed.
      +
      +4.0.030 (2008-10-07)
      +	- _putbookmarks() function was fixed.
      +	- _putannots() was fixed to include internal links.
      +
      +4.0.029 (2008-09-27)
      +	- Infinite loop bug was fixed [Bug item #130309].
      +	- Multicell() problem on Header() was fixed.
      +
      +4.0.028 (2008-09-26)
      +	- setLIsymbol() was added to set the LI symbol used on UL lists.
      +	- Missing $padding and $encryption_key variables declarations were added [Bug item #2129058].
      +
      +4.0.027 (2008-09-19)
      +	- Bug #2118588 "Undefined offset in tcpdf.php on line 9581" was fixed.
      +	- arailunicid0.php font was updated.
      +	- The problem of javascript form fields duplication after saving was fixed.
      +
      +4.0.026 (2008-09-17)
      +	- convertHTMLColorToDec() function was improved to support rgb(RR,GG,BB) notation.
      +	- The following inline CSS attributes are now supported: text-decoration, color, background-color and font-size names: xx-small, x-small, small, medium, large, x-large, xx-large
      +	- Example n. 6 was updated.
      +
      +4.0.025 (2008-09-15)
      +	- _putcidfont0 function was improved to include CJK fonts (Chinese, Japanese, Korean, CJK, Asian fonts) without embedding.
      +	- arialunicid0 font was added (see the new example n. 38).
      +	- The following Unicode to CID-0 tables were added on fonts folder: uni2cid_ak12.php, uni2cid_aj16.php, uni2cid_ag15.php, uni2cid_ac15.php.
      +
      +4.0.024 (2008-09-12)
      +	- "stripos" function was replaced with "strpos + strtolower" for backward compatibility with PHP4.
      +	- support for Spot Colors were added. Check the new example n. 37 and the following new functions:
      +		AddSpotColor()
      +		SetDrawSpotColor()
      +		SetFillSpotColor()
      +		SetTextSpotColor()
      +		_putspotcolors()
      +	- Bookmark() function was improved to fix wrong levels.
      +	- $lasth changes after header/footer calls were fixed.
      +
      +4.0.023 (2008-09-05)
      +	- Some HTML related problems were fixed.
      +	- Image alignment on HTML was changed, now it always defaults to the normal mode (see example_006.php).
      +
      +4.0.022 (2008-08-28)
      +	- Line height on HTML was fixed.
      +	- Image inside an HTML cell problem was fixed.
      +	- A new "zarbold" persian font was added.
      +
      +4.0.021 (2008-08-24)
      +	- HTTP headers were fixed on Output function().
      +	- getAliasNbPages() and getPageGroupAlias() functions were changed to support non-unicode fonts on unicode documents.
      +	- Function Write() was fixed.
      +	- The problem of additional vertical spaces on HTML was fixed.
      +	- The problem of frame around HTML links was fixed.
      +
      +4.0.020 (2008-08-15)
      +	- "[2052259] WriteHTML  & " bug was fixed.
      +
      +4.0.019 (2008-08-13)
      +	- "Rowspan on first cell" bug was fixed.
      +
      +4.0.018 (2008-08-08)
      +	- Default cellpadding for HTML tables was fixed.
      +	- Annotation() function was added to support some PDF annotations (see example_036.php and section 8.4 of PDF reference 1.7).
      +	- HTML links are now correclty shifted during line alignments.
      +	- function getAliasNbPages() was added and Footer() was updated.
      +	- RowSpan mode for HTML tables was fixed.
      +	- Bugs item #2043610 "Multiple sizes vertical align wrong" was fixed.
      +	- ImageEPS() function was improved and RTL alignment was fixed (see example_032.php).
      +
      +4.0.017 (2008-08-05)
      +	- Missing CNZ and CEO style modes were added to Rect() function.
      +	- Fonts utils were updated to include support for OpenType fonts.
      +	- getLastH() function was added.
      +
      +4.0.016 (2008-07-30)
      +	- setPageMark() function was added. This function must be called after calling Image() function for a background image.
      +
      +4.0.015 (2008-07-29)
      +	- Some functions were changed to support different page formats (see example_028.php).
      +	- The signature of setPage() function is changed.
      +
      +4.0.014 (2008-07-29)
      +	- K_PATH_MAIN calculation on tcpdf_config.php was fixed.
      +	- HTML support for EPS/AI images was added (see example_006.php).
      +	- Bugs item #2030807 "Truncated text on multipage html fields" was fixed.
      +	- PDF header bug was fixed.
      +	- helvetica was added as default font family.
      +	- Stroke mode was fixed on Text function.
      +	- several minor bugs were fixed.
      +
      +4.0.013 (2008-07-27)
      +	- Bugs item #2027799 " Big spaces between lines after page break" was fixed.
      +	- K_PATH_MAIN calculation on tcpdf_config.php was changed.
      +	- Function setVisibility() was fixed to avoid the "Incorrect PDEObject type" error message.
      +
      +4.0.012 (2008-07-24)
      +	- Addpage(), Header() and Footer() functions were changed to simplify the implementation of external header/footer functions.
      +	- The following functions were added:
      +			setHeader()
      +			setFooter()
      +			getImageRBX()
      +			getImageRBY()
      +			getCellHeightRatio()
      +			getHeaderFont()
      +			getFooterFont()
      +			getRTL()
      +			getBarcode()
      +			getHeaderData()
      +			getHeaderMargin()
      +			getFooterMargin()
      +
      +4.0.011 (2008-07-23)
      +	- Font support was improved.
      +	- The folder /fonts/utils contains new utilities and instructions for embedd font files.
      +	- Documentation was updated.
      +
      +4.0.010 (2008-07-22)
      +	- HTML tables were fixed to work across pages.
      +	- Header() and Footer() functions were updated to preserve previous settings.
      +	- example_035.php was added.
      +
      +4.0.009 (2008-07-21)
      +	- UTF8StringToArray() function was fixed for non-unicode mode.
      +
      +4.0.008 (2008-07-21)
      +	- Barcodes alignment was fixed (see example_027.php).
      +	- unicode_data.php was updated.
      +	- Arabic shaping for "Zero-Width Non-Joiner" character (U+200C) was fixed.
      +
      +4.0.007 (2008-07-18)
      +	- str_split was replaced by preg_split for compatibility with PHP4 version.
      +	- Clipping mode was added to all graphic functions by using parameter $style = "CNZ" or "CEO" (see example_034.php).
      +
      +4.0.006 (2008-07-16)
      +	- HTML rowspan bug was fixed.
      +	- Line style for MultiCell() was fixed.
      +	- WriteHTML() function was improved.
      +	- CODE128C barcode was fixed (barcodes.php).
      +
      +4.0.005 (2008-07-11)
      +	- Bug [2015715] "PHP Error/Warning" was fixed.
      +
      +4.0.004 (2008-07-09)
      +	- HTML cell internal padding was fixed.
      +
      +4.0.003 (2008-07-08)
      +	- Removed URL encoding when F option is selected on Output() function.
      +	- fixed some minor bugs in html tables.
      +
      +4.0.002 (2008-07-07)
      +	- Bug [2000861] was still unfixed and has been fixed.
      +
      +4.0.001 (2008-07-05)
      +	- Bug [2000861] was fixed.
      +
      +4.0.000 (2008-07-03)
      +	- THIS IS A MAIN RELEASE THAT INCLUDES SEVERAL NEW FEATURES AND BUGFIXES
      +	- Signature fo SetTextColor() and SetFillColor() functions was changed (parameter $storeprev was removed).
      +	- HTML support was completely rewritten and improved (see example 6).
      +	- Alignments parameters were fixed.
      +	- Functions GetArrStringWidth() and GetStringWidth() now include font parameters.
      +	- Fonts support was improved.
      +	- All core fonts were replaced and moved to fonts/ directory.
      +	- The following functions were added: getMargins(), getFontSize(), getFontSizePt().
      +	- File config/tcpdf_config_old.php was renamed tcpdf_config_alt.php and updated.
      +	- Multicell and WriteHTMLCell fill function was fixed.
      +	- Several minor bugs were fixed.
      +	- barcodes.php was updated.
      +	- All examples were updated.
      +
      +------------------------------------------------------------
      +
      +3.1.001 (2008-06-13)
      +	- Bug [1992515] "K_PATH_FONTS default value wrong" was fixed.
      +	- Vera font was removed, DejaVu font and Free fonts were updated.
      +	- Image handling was improved.
      +	- All examples were updated.
      +
      +3.1.000 (2008-06-11)
      +	- setPDFVersion() was added to change the default PDF version (currently 1.7).
      +	- setViewerPreferences() was added to control the way the document is to be presented on the screen or printed (see example 29).
      +	- SetDisplayMode() signature was changed (new options were added).
      +	- LinearGradient(), RadialGradient(), CoonsPatchMesh() functions were added to print various color gradients (see example 30).
      +	- PieSector() function was added to render render pie charts (see example 31).
      +	- ImageEps() was added to display EPS and AI images with limited support (see example 32).
      +	- writeBarcode() function is now depracated, a new write1DBarcode() function was added. The barcode directory was removed and a new barcodes.php file was added.
      +	- The new write1DBarcode() function support more barcodes and do not need the GD library (see example 027). All barcodes are directly written to PDF using graphic functions.
      +	- HTML lists were improved and could be nested (you may now represent trees).
      +	- AddFont() bug was fixed.
      +	- _putfonts() bug was fixed.
      +	- graphics functions were fixed.
      +	- unicode_data.php file was updated (fixed).
      +	- almohanad font was updated.
      +	- example 18 was updated (Farsi and Arabic languages).
      +	- source code cleanup.
      +	- All examples were updated and new examples were added.
      +
      +3.0.015 (2008-06-06)
      +	- AddPage() function signature is changed to include page format.
      +	- example 28 was added to show page format changes.
      +	- setPageUnit() function was added to change the page units of measure.
      +	- setPageFormat() function was added to change the page format and orientation between pages.
      +	- setPageOrientation() function was added to change the page orientation.
      +	- Arabic font shaping was fixed for laa letter and square boxes (see the example 18).
      +
      +3.0.014 (2008-06-04)
      +	- Arabic font shaping was fixed.
      +	- setDefaultTableColumns() function was added.
      +	- $cell_height_ratio variable was added.
      +	- setCellHeightRatio() function was added to define the default height of cell repect font height.
      +
      +3.0.013 (2008-06-03)
      +	- Multicell height parameter was fixed.
      +	- Arabic font shaping was improved.
      +	- unicode_data.php was updated.
      +
      +3.0.012 (2008-05-30)
      +	- K_PATH_MAIN and K_PATH_URL constants are now automatically set on config file.
      +	- DOCUMENT_ROOT constant was fixed for IIS Webserver (config file was updated).
      +	- Arabic font shaping was improved.
      +	- TranslateY() function was fixed (bug [1977962]).
      +	- setVisibility() function was fixed.
      +	- writeBarcode() function was fixed to scale using $xref parameter.
      +	- All examples were updated.
      +
      +3.0.011 (2008-05-23)
      +	- CMYK color support was added to all graphic functions.
      +	- HTML table support was improved:
      +	  -- now it's possible to include additional html tags inside a cell;
      +	  -- colspan attribute was added.
      +	- example 006 was updated.
      +
      +3.0.010 (2008-05-21)
      +	- fixed $laa_array inclusion on utf8Bidi() function.
      +
      +3.0.009 (2008-05-20)
      +	- unicode_data.php was updated.
      +	- Arabic laa letter problem was fixed.
      +
      +3.0.008 (2008-05-12)
      +	- Arabic support was fixed and improved (unicode_data.php was updated).
      +	- Polycurve() function was added to draw a poly-Bezier curve.
      +	- list items alignment was fixed.
      +	- example 6 was updated.
      +
      +3.0.007 (2008-05-06)
      +	- Arabic support was fixed and improved.
      +	- AlMohanad (arabic) font was added.
      +	- C128 barcode bugs were fixed.
      +
      +3.0.006 (2008-04-21)
      +	- Condition to check negative width values was added.
      +
      +3.0.005 (2008-04-18)
      +	- back-Slash character escape was fixed on writeHTML() function.
      +	- Exampe 6 was updated.
      +
      +3.0.004 (2008-04-11)
      +	- Bug [1939304] (Right to Left Issue) was fixed.
      +
      +3.0.003 (2008-04-07)
      +	- Bug [1934523](Words between HTML tags in cell not kept on one line) was fixed.
      +	- "face" attribute of "font" tag is now fully supported.
      +
      +3.0.002 (2008-04-01)
      +	- Write() functions now return the number of cells and not the number of lines.
      +	- TCPDF is released under LGPL 2.1, or any later version.
      +
      +3.0.001 (2008-05-28)
      +	- _legacyparsejpeg() and _legacyparsepng() were renamed _parsejpeg() and _parsepng().
      +	- function writeBarcode() was fixed.
      +	- all examples were updated.
      +	- example 27 was added to show various barcodes.
      +
      +3.0.000 (2008-03-27)
      +	- private function pixelsToMillimeters() was changed to public function pixelsToUnits() to fix html image size bug.
      +	- Image-related functions were rewritten.
      +	- resize parameter was added to Image() signature to reduce the image size and fit width and height (see example 9).
      +	- TCPDF now supports all images supported by GD library: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM.
      +	- CMYK support was added to SetDrawColor(), SetFillColor(), SetTextColor() (see example 22).
      +	- Page Groups were added (see example 23).
      +	- setVisibility() function was added to restrict the rendering of some elements to screen or printout (see example 24).
      +	- All private variables and functions were changed to protected.
      +	- setAlpha() function was added to give transparency support for all objects (see example 25).
      +	- Clipping and stroke modes were added to Text() function (see example 26).
      +	- All examples were moved to "examples" directory.
      +	- function setJPEGQuality() was added to set the JPEG image comrpession (see example 9).
      +
      +2.9.000 (2008-03-26)
      +	- htmlcolors.php file was added to include html colors.
      +	- Support for HTML color names and three-digit hexadecimal color codes was added.
      +	- private function convertColorHexToDec() was renamed convertHTMLColorToDec().
      +	- color and bgcolor attributes are now supported on all HTML tags (color nesting is also supported).
      +	- Write() function were fixed.
      +	- example_006.php was updated.
      +	- private function setUserRights() was added to release user rights on Acrobat Reader (this allows to display forms, see example 14)
      +
      +2.8.000 (2008-03-20)
      +	- Private variables were changed to protected.
      +	- Function Write() was fixed and improved.
      +	- Support for dl, dt, dd, del HTML tags was introduced.
      +	- Line-trought mode was added for HTML and text.
      +	- Text vertical alignment on cells were fixed.
      +	- Examples were updated to reflect changes.
      +
      +2.7.002 (2008-03-13)
      +	- Bug "[1912142] Encrypted PDF created/modified date" was fixed.
      +
      +2.7.001 (2008-03-10)
      +	- Cell justification was fixed for non-unicode mode.
      +
      +2.7.000 (2008-03-09)
      +	- Cell() stretching mode 4 (forced character spacing) was fixed.
      +	- writeHTMLCell() now uses Multicell() to write.
      +	- Multicell() has a new parameter $ishtml to act as writeHTMLCell().
      +	- Write() speed was improved for non-arabic strings.
      +	- Example n. 20 was changed.
      +
      +2.6.000 (2008-03-07)
      +	- various alignments bugs were fixed.
      +
      +2.5.000 (2008-03-07)
      +	- Several bugs were fixed.
      +	- example_019.php was added to test non-unicode mode using old fonts.
      +
      +2.4.000 (2008-03-06)
      +	- RTL support was deeply improved.
      +	- GetStringWidth() was fixed to support RTL languages.
      +	- Text() RTL alignment was fixed.
      +	- Some functions were added: GetArrStringWidth(), GetCharWidth(), uniord(), utf8Bidi().
      +	- example_018.php was added and test_unicode.php was removed.
      +
      +2.3.000 (2008-03-05)
      +	- MultiCell() signature is changed. Now support multiple columns across pages (see example_017).
      +	- Write() signature is changed. Now support the cell mode to be used with MultiCell.
      +	- Header() and Footer() were changed.
      +	- The following functions were added: UTF8ArrSubString() and unichr().
      +	- Examples were updated to reflect last changes.
      +
      +2.2.004 (2008-03-04)
      +	- Several examples were added.
      +	- AddPage() Header() and Footer() were fixed.
      +	- Documentation is now available on http://www.tcpdf.org
      +
      +2.2.003 (2008-03-03)
      +	- [1894853] Performance of MultiCell() was improved.
      +	- RadioButton and ListBox functions were added.
      +	- javascript form functions were rewritten and properties names are changed. The properties function supported by form fields are listed on Possible values are listed on http://www.adobe.com/devnet/acrobat/pdfs/js_developer_guide.pdf.
      +
      +2.2.002 (2008-02-28)
      +	- [1900495] html images path was fixed.
      +	- Legacy image functions were reintroduced to allow PNG and JPEG support without GD library.
      +
      +2.2.001 (2008-02-16)
      +	- The bug "[1894700] bug with replace relative path" was fixed
      +	- Justification was fixed
      +
      +2.2.000 (2008-02-12)
      +	- fixed javascript bug introduced with latest release
      +
      +2.1.002 (2008-02-12)
      +	- Justify function was fixed on PHP4 version.
      +	- Bookmank function was added ([1578250] Table of contents).
      +	- Javascript and Form fields support was added ([1796359] Form fields).
      +
      +2.1.001 (2008-02-10)
      +	- The bug "[1885776] Race Condition in function justitfy" was fixed.
      +	- The bug "[1890217] xpdf complains that pdf is incorrect" was fixed.
      +
      +2.1.000 (2008-01-07)
      +	- FPDF_FONTPATH constant was changed to K_PATH_FONTS on config file
      +	- Bidirectional Algorithm to correctly reverse bidirectional languages was added.
      +	- SetLeftMargin, SetTopMargin, SetRightMargin functions were fixed.
      +	- SetCellPadding function was added.
      +	- writeHTML was updated with new parameters.
      +	- Text function was fixed.
      +	- MultiCell function was fixed, now works also across multiple pages.
      +	- Line width was fixed on Header and Footer functions and 
      tag. + - "GetImageSize" was renamed "getimagesize". + - Document version was changed from 1.3 to 1.5. + - _begindoc() function was fixed. + - ChangeDate was fixed and ModDate was added. + - The following functions were added: + setPage() : Move pointer to the specified document page. + getPage() : Get current document page number. + lastpage() : Reset pointer to the last document page. + getNumPages() : Get the total number of inserted pages. + GetNumChars() : count the number of (UTF-8) characters in a string. + - $stretch parameter was added to Cell() function to fit text on cell: + 0 = disabled + 1 = horizontal scaling only if necessary + 2 = forced horizontal scaling + 3 = character spacing only if necessary + 4 = forced character spacing + - Line function was fixed for RTL. + - Graphic transformation functions were added [1811158]: + StartTransform() + StopTransform() + ScaleX() + ScaleY() + ScaleXY() + Scale() + MirrorH() + MirrorV() + MirrorP() + MirrorL() + TranslateX() + TranslateY() + Translate() + Rotate() + SkewX() + SkewY() + Skew() + - Graphic function were added/updated [1688549]: + SetLineStyle() + _outPoint() + _outLine() + _outRect() + _outCurve() + Line() + Rect() + Curve + Ellipse + Circle + Polygon + RegularPolygon + +2.0.000 (2008-01-04) + - RTL (Right-To-Left) languages support was added. Language direction is set using the $l['a_meta_dir'] setting on /configure/language/xxx.php language files. + - setRTL($enable) method was added to manually enable/disable the RTL text direction. + - The attribute "dir" was added to support custom text direction on HTML tags. Possible values are: ltr - for Left-To-Right and RTL for Right-To-Left. + - RC4 40bit encryption was added. Check the SetProtection method. + - [1815213] Improved image support for GIF, JPEG, PNG formats. + - [1800094] Attribute "value" was added to ordered list items
    35. . + - Image function now has a new "align" parameter that indicates the alignment of the pointer next to image insertion and relative to image height. The value can be: + T: top-right for LTR or top-left for RTL + M: middle-right for LTR or middle-left for RTL + B: bottom-right for LTR or bottom-left for RTL + N: next line + - Attribute "align" was added to html tag to set the above image "align" parameter. Possible values are: + top: top-right for LTR or top-left for RTL + middle: middle-right for LTR or middle-left for RTL + bottom: bottom-right for LTR or bottom-left for RTL + - [1798103] newline was added after , and

      tages. + - [1816393] Documentation was updated. + - 'ln' parameter was fixed on writeHTMLCell. Now it's possible to print two or more columns across several pages; + - The method lastPage() was added to move the pointer on the last page; + +------------------------------------------------------------ + +1.53.0.TC034 (2007-07-30) + - fixed htmlentities conversion. + - MultiCell() function returns the number of cells. + +1.53.0.TC033 (2007-07-30) + - fixed bug 1762550: case sensitive for font files + - NOTE: all fonts files names must be in lowercase! + +1.53.0.TC032 (2007-07-27) + - setLastH method was added to resolve bug 1689071. + - all fonts names were converted in lowercase (bug 1713005). + - bug 1740954 was fixed. + - justification was added as Cell option. + +1.53.0.TC031 (2007-03-20) + - ToUnicode CMap were added on _puttruetypeunicode function. Now you may search and copy unicode text. + +1.53.0.TC030 (2007-03-06) + - fixed bug on PHP4 version. + +1.53.0.TC029 (2007-03-06) + - DejaVu Fonts were added. + +1.53.0.TC028 (2007-03-03) + - MultiCell function signature were changed: the $ln parameter were added. Check documentation for further information. + - Greek language were added on example sentences. + - setPrintHeader() and setPrintFooter() functions were added to enable or disable page header and footer. + +1.53.0.TC027 (2006-12-14) + - $attr['face'] bug were fixed. + - K_TCPDF_EXTERNAL_CONFIG control where introduced on /config/tcpdf_config.php to use external configuration files. + +1.53.0.TC026 (2006-10-28) + - writeHTML function call were fixed on examples. + +1.53.0.TC025 (2006-10-27) + - Bugs item #1421290 were fixed (0D - 0A substitution in some characters) + - Bugs item #1573174 were fixed (MultiCell documentation) + +1.53.0.TC024 (2006-09-26) + - getPageHeight() function were fixed (bug 1543476). + - fixed missing breaks on closedHTMLTagHandler function (bug 1535263). + - fixed extra spaces on Write function (bug 1535262). + +1.53.0.TC023 (2006-08-04) + - paths to barcode directory were fixed. + - documentation were updated. + +1.53.0.TC022 (2006-07-16) + - fixed bug: [ 1516858 ] Probs with PHP autoloader and class_exists() + +1.53.0.TC021 (2006-07-01) + - HTML attributes with whitespaces are now supported (thanks to Nelson Benitez for his support) + +1.53.0.TC020 (2006-06-23) + - code cleanup + +1.53.0.TC019 (2006-05-21) + - fixed and closing tags + +1.53.0.TC018 (2006-05-18) + - fixed font names bug + +1.53.0.TC017 (2006-05-18) + - the TTF2UFM utility to convert True Type fonts for TCPDF were included on fonts folder. + - new free unicode fonts were included on /fonts/freefont. + - test_unicode.php example were exended. + - parameter $fill were added on Write, writeHTML and writeHTMLCell functions. + - documentation were updated. + +1.53.0.TC016 (2006-03-09) + - fixed closing tag on html parser. + +1.53.0.TC016 (2005-08-28) + - fpdf.php and tcpdf.php files were joined in one single class (you can still extend TCPDF with your own class). + - fixed problem when mb_internal_encoding is set. + +1.53.0.TC014 (2005-05-29) + - fixed WriteHTMLCell new page issue. + +1.53.0.TC013 (2005-05-29) + - fixed WriteHTMLCell across pages. + +1.53.0.TC012 (2005-05-29) + - font color attribute bug were fixed. + +1.53.0.TC011 (2005-03-31) + - SetFont function were fixed (thank Sjaak Lauwers for bug notice). + +1.53.0.TC010 (2005-03-22) + - the html functions were improved (thanks to Manfred Vervuert for bug reporting). + +1.53.0.TC009 (2005-03-19) + - a wrong reference to convertColorHexToDec were fixed. + +1.53.0.TC008 (2005-02-07) + - removed some extra bytes from PHP files. + +1.53.0.TC007 (2005-01-08) + - fill attribute were removed from writeHTMLCell method. + +1.53.0.TC006 (2005-01-08) + - the documentation were updated. + +1.53.0.TC005 (2005-01-05) + - Steven Wittens's unicode methods were removed. + - All unicode methods were rewritten from scratch. + - TCPDF is now licensed as LGPL. + +1.53.0.TC004 (2005-01-04) + - this changelog were added. + - removed commercial fonts for licensing issue. + - Bitstream Vera Fonts were added (http://www.bitstream.com/font_rendering/products/dev_fonts/vera.html). + - Now the AddFont and SetFont functions returns the basic font if the styled version do not exist. + +EOF -------------------------------------------------------- diff --git a/inc/3rdparty/libraries/tcpdf/LICENSE.TXT b/inc/3rdparty/libraries/tcpdf/LICENSE.TXT new file mode 100644 index 000000000..daf21f7d3 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/LICENSE.TXT @@ -0,0 +1,858 @@ +********************************************************************** +* TCPDF LICENSE +********************************************************************** + + TCPDF is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + +********************************************************************** +********************************************************************** + + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + +********************************************************************** +********************************************************************** + + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + +********************************************************************** +********************************************************************** diff --git a/inc/3rdparty/libraries/tcpdf/README.TXT b/inc/3rdparty/libraries/tcpdf/README.TXT new file mode 100644 index 000000000..6d279ee23 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/README.TXT @@ -0,0 +1,115 @@ +TCPDF - README +============================================================ + +I WISH TO IMPROVE AND EXPAND TCPDF BUT I NEED YOUR SUPPORT. +PLEASE MAKE A DONATION: +http://sourceforge.net/donate/index.php?group_id=128076 + +------------------------------------------------------------ + +Name: TCPDF +Version: 6.0.093 +Release date: 2014-09-02 +Author: Nicola Asuni + +Copyright (c) 2002-2014: + Nicola Asuni + Tecnick.com LTD + www.tecnick.com + +URLs: + http://www.tcpdf.org + http://www.sourceforge.net/projects/tcpdf + +Description: + TCPDF is a PHP class for generating PDF files on-the-fly without requiring external extensions. + This library includes also a class to extract data from existing PDF documents and + classes to generate 1D and 2D barcodes in various formats. + +Main Features: + * no external libraries are required for the basic functions; + * all standard page formats, custom page formats, custom margins and units of measure; + * UTF-8 Unicode and Right-To-Left languages; + * TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 and CID-0 fonts; + * font subsetting; + * methods to publish some XHTML + CSS code, Javascript and Forms; + * images, graphic (geometric figures) and transformation methods; + * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http: www.imagemagick.org/www/formats.html) + * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417; + * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies; + * automatic page header and footer management; + * document encryption up to 256 bit and digital signature certifications; + * transactions to UNDO commands; + * PDF annotations, including links, text and file attachments; + * text rendering modes (fill, stroke and clipping); + * multiple columns mode; + * no-write page regions; + * bookmarks, named destinations and table of content; + * text hyphenation; + * text stretching and spacing (tracking); + * automatic page break, line break and text alignments including justification; + * automatic page numbering and page groups; + * move and delete pages; + * page compression (requires php-zlib extension); + * XOBject Templates; + * Layers and object visibility. + * PDF/A-1b support. + +Installation (full instructions on http: www.tcpdf.org): + 1. copy the folder on your Web server + 2. set your installation path and other parameters on the config/tcpdf_config.php + 3. call the examples/example_001.php page with your browser to see an example + +Source Code Documentation: + http://www.tcpdf.org + +Additional Documentation: + http://www.tcpdf.org + +License: + Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD + + TCPDF is free software: you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + TCPDF is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Lesser General Public License for more details. + + You should have received a copy of the License + along with TCPDF. If not, see + . + + See LICENSE.TXT file for more information. + +Third party fonts: + + This library may include third party font files released with different licenses. + + All the PHP files on the fonts directory are subject to the general TCPDF license (GNU-LGPLv3), + they do not contain any binary data but just a description of the general properties of a particular font. + These files can be also generated on the fly using the font utilities and TCPDF methods. + + All the original binary TTF font files have been renamed for compatibility with TCPDF and compressed using the gzcompress PHP function that uses the ZLIB data format (.z files). + + The binary files (.z) that begins with the prefix "free" have been extracted from the GNU FreeFont collection (GNU-GPLv3). + The binary files (.z) that begins with the prefix "pdfa" have been derived from the GNU FreeFont, so they are subject to the same license. + For the details of Copyright, License and other information, please check the files inside the directory fonts/freefont-20120503 + Link : http://www.gnu.org/software/freefont/ + + The binary files (.z) that begins with the prefix "dejavu" have been extracted from the DejaVu fonts 2.33 (Bitstream) collection. + For the details of Copyright, License and other information, please check the files inside the directory fonts/dejavu-fonts-ttf-2.33 + Link : http://dejavu-fonts.org + + The binary files (.z) that begins with the prefix "ae" have been extracted from the Arabeyes.org collection (GNU-GPLv2). + Link : http://projects.arabeyes.org/ + +ICC profile: + TCPDF includes the sRGB.icc profile from the icc-profiles-free Debian package: + https://packages.debian.org/source/stable/icc-profiles-free + + +============================================================ diff --git a/inc/3rdparty/libraries/tcpdf/composer.json b/inc/3rdparty/libraries/tcpdf/composer.json new file mode 100644 index 000000000..43107544e --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/composer.json @@ -0,0 +1,40 @@ +{ + "name": "tecnick.com/tcpdf", + "version": "6.0.093", + "homepage": "http://www.tcpdf.org/", + "type": "library", + "description": "TCPDF is a PHP class for generating PDF documents and barcodes.", + "keywords": ["PDF","tcpdf","PDFD32000-2008","qrcode","datamatrix","pdf417","barcodes"], + "license": "LGPLv3", + "authors": [ + { + "name": "Nicola Asuni", + "email": "info@tecnick.com", + "homepage": "http://nicolaasuni.tecnick.com" + } + ], + "require": { + "php": ">=5.3.0" + }, + "autoload": { + "classmap": [ + "fonts", + "config", + "include", + "tcpdf.php", + "tcpdf_parser.php", + "tcpdf_import.php", + "tcpdf_barcodes_1d.php", + "tcpdf_barcodes_2d.php", + "include/tcpdf_colors.php", + "include/tcpdf_filters.php", + "include/tcpdf_font_data.php", + "include/tcpdf_fonts.php", + "include/tcpdf_images.php", + "include/tcpdf_static.php", + "include/barcodes/datamatrix.php", + "include/barcodes/pdf417.php", + "include/barcodes/qrcode.php" + ] + } +} diff --git a/inc/3rdparty/libraries/tcpdf/config/tcpdf_config.php b/inc/3rdparty/libraries/tcpdf/config/tcpdf_config.php new file mode 100644 index 000000000..864a9d2d8 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/config/tcpdf_config.php @@ -0,0 +1,227 @@ +. +// +// See LICENSE.TXT file for more information. +//============================================================+ + +/** + * Configuration file for TCPDF. + * @author Nicola Asuni + * @package com.tecnick.tcpdf + * @version 4.9.005 + * @since 2004-10-27 + */ + +// IMPORTANT: +// If you define the constant K_TCPDF_EXTERNAL_CONFIG, all the following settings will be ignored. +// If you use the tcpdf_autoconfig.php, then you can overwrite some values here. + + +/** + * Installation path (/var/www/tcpdf/). + * By default it is automatically calculated but you can also set it as a fixed string to improve performances. + */ +//define ('K_PATH_MAIN', ''); + +/** + * URL path to tcpdf installation folder (http://localhost/tcpdf/). + * By default it is automatically set but you can also set it as a fixed string to improve performances. + */ +//define ('K_PATH_URL', ''); + +/** + * Path for PDF fonts. + * By default it is automatically set but you can also set it as a fixed string to improve performances. + */ +//define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/'); + +/** + * Default images directory. + * By default it is automatically set but you can also set it as a fixed string to improve performances. + */ +//define ('K_PATH_IMAGES', ''); + +/** + * Deafult image logo used be the default Header() method. + * Please set here your own logo or an empty string to disable it. + */ +//define ('PDF_HEADER_LOGO', ''); + +/** + * Header logo image width in user units. + */ +//define ('PDF_HEADER_LOGO_WIDTH', 0); + +/** + * Cache directory for temporary files (full path). + */ +//define ('K_PATH_CACHE', '/tmp/'); + +/** + * Generic name for a blank image. + */ +define ('K_BLANK_IMAGE', '_blank.png'); + +/** + * Page format. + */ +define ('PDF_PAGE_FORMAT', 'A4'); + +/** + * Page orientation (P=portrait, L=landscape). + */ +define ('PDF_PAGE_ORIENTATION', 'P'); + +/** + * Document creator. + */ +define ('PDF_CREATOR', 'TCPDF'); + +/** + * Document author. + */ +define ('PDF_AUTHOR', 'TCPDF'); + +/** + * Header title. + */ +define ('PDF_HEADER_TITLE', 'TCPDF Example'); + +/** + * Header description string. + */ +define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org"); + +/** + * Document unit of measure [pt=point, mm=millimeter, cm=centimeter, in=inch]. + */ +define ('PDF_UNIT', 'mm'); + +/** + * Header margin. + */ +define ('PDF_MARGIN_HEADER', 5); + +/** + * Footer margin. + */ +define ('PDF_MARGIN_FOOTER', 10); + +/** + * Top margin. + */ +define ('PDF_MARGIN_TOP', 27); + +/** + * Bottom margin. + */ +define ('PDF_MARGIN_BOTTOM', 25); + +/** + * Left margin. + */ +define ('PDF_MARGIN_LEFT', 15); + +/** + * Right margin. + */ +define ('PDF_MARGIN_RIGHT', 15); + +/** + * Default main font name. + */ +define ('PDF_FONT_NAME_MAIN', 'helvetica'); + +/** + * Default main font size. + */ +define ('PDF_FONT_SIZE_MAIN', 10); + +/** + * Default data font name. + */ +define ('PDF_FONT_NAME_DATA', 'helvetica'); + +/** + * Default data font size. + */ +define ('PDF_FONT_SIZE_DATA', 8); + +/** + * Default monospaced font name. + */ +define ('PDF_FONT_MONOSPACED', 'courier'); + +/** + * Ratio used to adjust the conversion of pixels to user units. + */ +define ('PDF_IMAGE_SCALE_RATIO', 1.25); + +/** + * Magnification factor for titles. + */ +define('HEAD_MAGNIFICATION', 1.1); + +/** + * Height of cell respect font height. + */ +define('K_CELL_HEIGHT_RATIO', 1.25); + +/** + * Title magnification respect main font size. + */ +define('K_TITLE_MAGNIFICATION', 1.3); + +/** + * Reduction factor for small font. + */ +define('K_SMALL_RATIO', 2/3); + +/** + * Set to true to enable the special procedure used to avoid the overlappind of symbols on Thai language. + */ +define('K_THAI_TOPCHARS', true); + +/** + * If true allows to call TCPDF methods using HTML syntax + * IMPORTANT: For security reason, disable this feature if you are printing user HTML content. + */ +define('K_TCPDF_CALLS_IN_HTML', true); + +/** + * If true and PHP version is greater than 5, then the Error() method throw new exception instead of terminating the execution. + */ +define('K_TCPDF_THROW_EXCEPTION_ERROR', false); + +/** + * Default timezone for datetime functions + */ +define('K_TIMEZONE', 'UTC'); + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courier.php b/inc/3rdparty/libraries/tcpdf/fonts/courier.php new file mode 100644 index 000000000..e935b6768 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/courier.php @@ -0,0 +1,12 @@ +33,'FontBBox'=>'[-23 -250 715 805]','ItalicAngle'=>0,'Ascent'=>805,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>426,'StemV'=>51,'StemH'=>51,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600); +$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courierb.php b/inc/3rdparty/libraries/tcpdf/fonts/courierb.php new file mode 100644 index 000000000..acb01b0d6 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/courierb.php @@ -0,0 +1,12 @@ +33,'FontBBox'=>'[-113 -250 749 801]','ItalicAngle'=>0,'Ascent'=>801,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>439,'StemV'=>106,'StemH'=>84,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600); +$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courierbi.php b/inc/3rdparty/libraries/tcpdf/fonts/courierbi.php new file mode 100644 index 000000000..631c623e9 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/courierbi.php @@ -0,0 +1,12 @@ +97,'FontBBox'=>'[-57 -250 869 801]','ItalicAngle'=>-12,'Ascent'=>801,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>439,'StemV'=>106,'StemH'=>84,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600); +$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/courieri.php b/inc/3rdparty/libraries/tcpdf/fonts/courieri.php new file mode 100644 index 000000000..5ae725d4a --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/courieri.php @@ -0,0 +1,12 @@ +97,'FontBBox'=>'[-27 -250 849 805]','ItalicAngle'=>-12,'Ascent'=>805,'Descent'=>-250,'Leading'=>0,'CapHeight'=>562,'XHeight'=>426,'StemV'=>51,'StemH'=>51,'AvgWidth'=>600,'MaxWidth'=>600,'MissingWidth'=>600); +$cw=array(0=>600,1=>600,2=>600,3=>600,4=>600,5=>600,6=>600,7=>600,8=>600,9=>600,10=>600,11=>600,12=>600,13=>600,14=>600,15=>600,16=>600,17=>600,18=>600,19=>600,20=>600,21=>600,22=>600,23=>600,24=>600,25=>600,26=>600,27=>600,28=>600,29=>600,30=>600,31=>600,32=>600,33=>600,34=>600,35=>600,36=>600,37=>600,38=>600,39=>600,40=>600,41=>600,42=>600,43=>600,44=>600,45=>600,46=>600,47=>600,48=>600,49=>600,50=>600,51=>600,52=>600,53=>600,54=>600,55=>600,56=>600,57=>600,58=>600,59=>600,60=>600,61=>600,62=>600,63=>600,64=>600,65=>600,66=>600,67=>600,68=>600,69=>600,70=>600,71=>600,72=>600,73=>600,74=>600,75=>600,76=>600,77=>600,78=>600,79=>600,80=>600,81=>600,82=>600,83=>600,84=>600,85=>600,86=>600,87=>600,88=>600,89=>600,90=>600,91=>600,92=>600,93=>600,94=>600,95=>600,96=>600,97=>600,98=>600,99=>600,100=>600,101=>600,102=>600,103=>600,104=>600,105=>600,106=>600,107=>600,108=>600,109=>600,110=>600,111=>600,112=>600,113=>600,114=>600,115=>600,116=>600,117=>600,118=>600,119=>600,120=>600,121=>600,122=>600,123=>600,124=>600,125=>600,126=>600,127=>600,128=>600,129=>600,130=>600,131=>600,132=>600,133=>600,134=>600,135=>600,136=>600,137=>600,138=>600,139=>600,140=>600,141=>600,142=>600,143=>600,144=>600,145=>600,146=>600,147=>600,148=>600,149=>600,150=>600,151=>600,152=>600,153=>600,154=>600,155=>600,156=>600,157=>600,158=>600,159=>600,160=>600,161=>600,162=>600,163=>600,164=>600,165=>600,166=>600,167=>600,168=>600,169=>600,170=>600,171=>600,172=>600,173=>600,174=>600,175=>600,176=>600,177=>600,178=>600,179=>600,180=>600,181=>600,182=>600,183=>600,184=>600,185=>600,186=>600,187=>600,188=>600,189=>600,190=>600,191=>600,192=>600,193=>600,194=>600,195=>600,196=>600,197=>600,198=>600,199=>600,200=>600,201=>600,202=>600,203=>600,204=>600,205=>600,206=>600,207=>600,208=>600,209=>600,210=>600,211=>600,212=>600,213=>600,214=>600,215=>600,216=>600,217=>600,218=>600,219=>600,220=>600,221=>600,222=>600,223=>600,224=>600,225=>600,226=>600,227=>600,228=>600,229=>600,230=>600,231=>600,232=>600,233=>600,234=>600,235=>600,236=>600,237=>600,238=>600,239=>600,240=>600,241=>600,242=>600,243=>600,244=>600,245=>600,246=>600,247=>600,248=>600,249=>600,250=>600,251=>600,252=>600,253=>600,254=>600,255=>600); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helvetica.php b/inc/3rdparty/libraries/tcpdf/fonts/helvetica.php new file mode 100644 index 000000000..d1aa6d851 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/helvetica.php @@ -0,0 +1,13 @@ +32,'FontBBox'=>'[-166 -225 1000 931]','ItalicAngle'=>0,'Ascent'=>931,'Descent'=>-225,'Leading'=>0,'CapHeight'=>718,'XHeight'=>523,'StemV'=>88,'StemH'=>76,'AvgWidth'=>513,'MaxWidth'=>1015,'MissingWidth'=>513); +$cw=array(0=>500,1=>500,2=>500,3=>500,4=>500,5=>500,6=>500,7=>500,8=>500,9=>500,10=>500,11=>500,12=>500,13=>500,14=>500,15=>500,16=>500,17=>500,18=>500,19=>500,20=>500,21=>500,22=>500,23=>500,24=>500,25=>500,26=>500,27=>500,28=>500,29=>500,30=>500,31=>500,32=>278,33=>278,34=>355,35=>556,36=>556,37=>889,38=>667,39=>191,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>278,59=>278,60=>584,61=>584,62=>584,63=>556,64=>1015,65=>667,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>500,75=>667,76=>556,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>278,92=>278,93=>277,94=>469,95=>556,96=>333,97=>556,98=>556,99=>500,100=>556,101=>556,102=>278,103=>556,104=>556,105=>222,106=>222,107=>500,108=>222,109=>833,110=>556,111=>556,112=>556,113=>556,114=>333,115=>500,116=>278,117=>556,118=>500,119=>722,120=>500,121=>500,122=>500,123=>334,124=>260,125=>334,126=>584,127=>500,128=>655,129=>500,130=>222,131=>278,132=>333,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>250,140=>1000,141=>500,142=>611,143=>500,144=>500,145=>222,146=>221,147=>333,148=>333,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>500,155=>250,156=>938,157=>500,158=>500,159=>667,160=>278,161=>278,162=>556,163=>556,164=>556,165=>556,166=>260,167=>556,168=>333,169=>737,170=>370,171=>448,172=>584,173=>333,174=>737,175=>333,176=>606,177=>584,178=>350,179=>350,180=>333,181=>556,182=>537,183=>278,184=>333,185=>350,186=>365,187=>448,188=>869,189=>869,190=>879,191=>556,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>666,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>896,231=>500,232=>556,233=>556,234=>556,235=>556,236=>251,237=>251,238=>251,239=>251,240=>556,241=>556,242=>556,243=>556,244=>556,245=>556,246=>556,247=>584,248=>611,249=>556,250=>556,251=>556,252=>556,253=>500,254=>555,255=>500); + +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helveticab.php b/inc/3rdparty/libraries/tcpdf/fonts/helveticab.php new file mode 100644 index 000000000..8d6047f6a --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/helveticab.php @@ -0,0 +1,12 @@ +32,'FontBBox'=>'[-170 -228 1003 962]','ItalicAngle'=>0,'Ascent'=>962,'Descent'=>-228,'Leading'=>0,'CapHeight'=>718,'XHeight'=>532,'StemV'=>140,'StemH'=>118,'AvgWidth'=>535,'MaxWidth'=>1000,'MissingWidth'=>535); +$cw=array(0=>278,1=>278,2=>278,3=>278,4=>278,5=>278,6=>278,7=>278,8=>278,9=>278,10=>278,11=>278,12=>278,13=>278,14=>278,15=>278,16=>278,17=>278,18=>278,19=>278,20=>278,21=>278,22=>278,23=>278,24=>278,25=>278,26=>278,27=>278,28=>278,29=>278,30=>278,31=>278,32=>278,33=>333,34=>474,35=>556,36=>556,37=>889,38=>722,39=>238,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>333,59=>333,60=>584,61=>584,62=>584,63=>611,64=>975,65=>722,66=>722,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>556,75=>722,76=>611,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>333,92=>278,93=>333,94=>584,95=>556,96=>333,97=>556,98=>611,99=>556,100=>611,101=>556,102=>333,103=>611,104=>611,105=>278,106=>278,107=>556,108=>278,109=>889,110=>611,111=>611,112=>611,113=>611,114=>389,115=>556,116=>333,117=>611,118=>556,119=>778,120=>556,121=>556,122=>500,123=>389,124=>280,125=>389,126=>584,127=>350,128=>556,129=>350,130=>278,131=>556,132=>500,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>333,140=>1000,141=>350,142=>611,143=>350,144=>350,145=>278,146=>278,147=>500,148=>500,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>556,155=>333,156=>944,157=>350,158=>500,159=>667,160=>278,161=>333,162=>556,163=>556,164=>556,165=>556,166=>280,167=>556,168=>333,169=>737,170=>370,171=>556,172=>584,173=>333,174=>737,175=>333,176=>400,177=>584,178=>333,179=>333,180=>333,181=>611,182=>556,183=>278,184=>333,185=>333,186=>365,187=>556,188=>834,189=>834,190=>834,191=>611,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>667,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>889,231=>556,232=>556,233=>556,234=>556,235=>556,236=>278,237=>278,238=>278,239=>278,240=>611,241=>611,242=>611,243=>611,244=>611,245=>611,246=>611,247=>584,248=>611,249=>611,250=>611,251=>611,252=>611,253=>556,254=>611,255=>556); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helveticabi.php b/inc/3rdparty/libraries/tcpdf/fonts/helveticabi.php new file mode 100644 index 000000000..e2ecf38df --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/helveticabi.php @@ -0,0 +1,12 @@ +96,'FontBBox'=>'[-174 -228 1114 962]','ItalicAngle'=>-12,'Ascent'=>962,'Descent'=>-228,'Leading'=>0,'CapHeight'=>718,'XHeight'=>532,'StemV'=>140,'StemH'=>118,'AvgWidth'=>535,'MaxWidth'=>1000,'MissingWidth'=>535); +$cw=array(0=>278,1=>278,2=>278,3=>278,4=>278,5=>278,6=>278,7=>278,8=>278,9=>278,10=>278,11=>278,12=>278,13=>278,14=>278,15=>278,16=>278,17=>278,18=>278,19=>278,20=>278,21=>278,22=>278,23=>278,24=>278,25=>278,26=>278,27=>278,28=>278,29=>278,30=>278,31=>278,32=>278,33=>333,34=>474,35=>556,36=>556,37=>889,38=>722,39=>238,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>333,59=>333,60=>584,61=>584,62=>584,63=>611,64=>975,65=>722,66=>722,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>556,75=>722,76=>611,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>333,92=>278,93=>333,94=>584,95=>556,96=>333,97=>556,98=>611,99=>556,100=>611,101=>556,102=>333,103=>611,104=>611,105=>278,106=>278,107=>556,108=>278,109=>889,110=>611,111=>611,112=>611,113=>611,114=>389,115=>556,116=>333,117=>611,118=>556,119=>778,120=>556,121=>556,122=>500,123=>389,124=>280,125=>389,126=>584,127=>350,128=>556,129=>350,130=>278,131=>556,132=>500,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>333,140=>1000,141=>350,142=>611,143=>350,144=>350,145=>278,146=>278,147=>500,148=>500,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>556,155=>333,156=>944,157=>350,158=>500,159=>667,160=>278,161=>333,162=>556,163=>556,164=>556,165=>556,166=>280,167=>556,168=>333,169=>737,170=>370,171=>556,172=>584,173=>333,174=>737,175=>333,176=>400,177=>584,178=>333,179=>333,180=>333,181=>611,182=>556,183=>278,184=>333,185=>333,186=>365,187=>556,188=>834,189=>834,190=>834,191=>611,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>667,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>889,231=>556,232=>556,233=>556,234=>556,235=>556,236=>278,237=>278,238=>278,239=>278,240=>611,241=>611,242=>611,243=>611,244=>611,245=>611,246=>611,247=>584,248=>611,249=>611,250=>611,251=>611,252=>611,253=>556,254=>611,255=>556); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/helveticai.php b/inc/3rdparty/libraries/tcpdf/fonts/helveticai.php new file mode 100644 index 000000000..0404aebd6 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/helveticai.php @@ -0,0 +1,12 @@ +96,'FontBBox'=>'[-170 -225 1116 931]','ItalicAngle'=>-12,'Ascent'=>931,'Descent'=>-225,'Leading'=>0,'CapHeight'=>718,'XHeight'=>523,'StemV'=>88,'StemH'=>76,'AvgWidth'=>513,'MaxWidth'=>1015,'MissingWidth'=>513); +$cw=array(0=>278,1=>278,2=>278,3=>278,4=>278,5=>278,6=>278,7=>278,8=>278,9=>278,10=>278,11=>278,12=>278,13=>278,14=>278,15=>278,16=>278,17=>278,18=>278,19=>278,20=>278,21=>278,22=>278,23=>278,24=>278,25=>278,26=>278,27=>278,28=>278,29=>278,30=>278,31=>278,32=>278,33=>278,34=>355,35=>556,36=>556,37=>889,38=>667,39=>191,40=>333,41=>333,42=>389,43=>584,44=>278,45=>333,46=>278,47=>278,48=>556,49=>556,50=>556,51=>556,52=>556,53=>556,54=>556,55=>556,56=>556,57=>556,58=>278,59=>278,60=>584,61=>584,62=>584,63=>556,64=>1015,65=>667,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>722,73=>278,74=>500,75=>667,76=>556,77=>833,78=>722,79=>778,80=>667,81=>778,82=>722,83=>667,84=>611,85=>722,86=>667,87=>944,88=>667,89=>667,90=>611,91=>278,92=>278,93=>278,94=>469,95=>556,96=>333,97=>556,98=>556,99=>500,100=>556,101=>556,102=>278,103=>556,104=>556,105=>222,106=>222,107=>500,108=>222,109=>833,110=>556,111=>556,112=>556,113=>556,114=>333,115=>500,116=>278,117=>556,118=>500,119=>722,120=>500,121=>500,122=>500,123=>334,124=>260,125=>334,126=>584,127=>350,128=>556,129=>350,130=>222,131=>556,132=>333,133=>1000,134=>556,135=>556,136=>333,137=>1000,138=>667,139=>333,140=>1000,141=>350,142=>611,143=>350,144=>350,145=>222,146=>222,147=>333,148=>333,149=>350,150=>556,151=>1000,152=>333,153=>1000,154=>500,155=>333,156=>944,157=>350,158=>500,159=>667,160=>278,161=>333,162=>556,163=>556,164=>556,165=>556,166=>260,167=>556,168=>333,169=>737,170=>370,171=>556,172=>584,173=>333,174=>737,175=>333,176=>400,177=>584,178=>333,179=>333,180=>333,181=>556,182=>537,183=>278,184=>333,185=>333,186=>365,187=>556,188=>834,189=>834,190=>834,191=>611,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>278,205=>278,206=>278,207=>278,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>584,216=>778,217=>722,218=>722,219=>722,220=>722,221=>667,222=>667,223=>611,224=>556,225=>556,226=>556,227=>556,228=>556,229=>556,230=>889,231=>500,232=>556,233=>556,234=>556,235=>556,236=>278,237=>278,238=>278,239=>278,240=>556,241=>556,242=>556,243=>556,244=>556,245=>556,246=>556,247=>584,248=>611,249=>556,250=>556,251=>556,252=>556,253=>500,254=>556,255=>500); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/symbol.php b/inc/3rdparty/libraries/tcpdf/fonts/symbol.php new file mode 100644 index 000000000..15f7f1ddd --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/symbol.php @@ -0,0 +1,12 @@ +4,'FontBBox'=>'[-180 -293 1090 1010]','ItalicAngle'=>0,'Ascent'=>1010,'Descent'=>-293,'Leading'=>0,'CapHeight'=>1010,'StemV'=>85,'StemH'=>92,'AvgWidth'=>587,'MaxWidth'=>1042,'MissingWidth'=>587); +$cw=array(0=>587,1=>587,2=>587,3=>587,4=>587,5=>587,6=>587,7=>587,8=>587,9=>587,10=>587,11=>587,12=>587,13=>587,14=>587,15=>587,16=>587,17=>587,18=>587,19=>587,20=>587,21=>587,22=>587,23=>587,24=>587,25=>587,26=>587,27=>587,28=>587,29=>587,30=>587,31=>587,32=>250,33=>333,34=>713,35=>500,36=>549,37=>833,38=>778,39=>439,40=>333,41=>333,42=>500,43=>549,44=>250,45=>549,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>278,59=>278,60=>549,61=>549,62=>549,63=>444,64=>549,65=>722,66=>667,67=>722,68=>612,69=>611,70=>763,71=>603,72=>722,73=>333,74=>631,75=>722,76=>686,77=>889,78=>722,79=>722,80=>768,81=>741,82=>556,83=>592,84=>611,85=>690,86=>439,87=>768,88=>645,89=>795,90=>611,91=>333,92=>863,93=>333,94=>658,95=>500,96=>500,97=>631,98=>549,99=>549,100=>494,101=>439,102=>521,103=>411,104=>603,105=>329,106=>603,107=>549,108=>549,109=>576,110=>521,111=>549,112=>549,113=>521,114=>549,115=>603,116=>439,117=>576,118=>713,119=>686,120=>493,121=>686,122=>494,123=>480,124=>200,125=>480,126=>549,127=>587,128=>587,129=>587,130=>587,131=>587,132=>587,133=>587,134=>587,135=>587,136=>587,137=>587,138=>587,139=>587,140=>587,141=>587,142=>587,143=>587,144=>587,145=>587,146=>587,147=>587,148=>587,149=>587,150=>587,151=>587,152=>587,153=>587,154=>587,155=>587,156=>587,157=>587,158=>587,159=>587,160=>750,161=>620,162=>247,163=>549,164=>167,165=>713,166=>500,167=>753,168=>753,169=>753,170=>753,171=>1042,172=>987,173=>603,174=>987,175=>603,176=>400,177=>549,178=>411,179=>549,180=>549,181=>713,182=>494,183=>460,184=>549,185=>549,186=>549,187=>549,188=>1000,189=>603,190=>1000,191=>658,192=>823,193=>686,194=>795,195=>987,196=>768,197=>768,198=>823,199=>768,200=>768,201=>713,202=>713,203=>713,204=>713,205=>713,206=>713,207=>713,208=>768,209=>713,210=>790,211=>790,212=>890,213=>823,214=>549,215=>250,216=>713,217=>603,218=>603,219=>1042,220=>987,221=>603,222=>987,223=>603,224=>494,225=>329,226=>790,227=>790,228=>786,229=>713,230=>384,231=>384,232=>384,233=>384,234=>384,235=>384,236=>494,237=>494,238=>494,239=>494,240=>587,241=>329,242=>274,243=>686,244=>686,245=>686,246=>384,247=>384,248=>384,249=>384,250=>384,251=>384,252=>494,253=>494,254=>494,255=>587); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/times.php b/inc/3rdparty/libraries/tcpdf/fonts/times.php new file mode 100644 index 000000000..cfcaf06cc --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/times.php @@ -0,0 +1,12 @@ +32,'FontBBox'=>'[-168 -218 1000 898]','ItalicAngle'=>0,'Ascent'=>898,'Descent'=>-218,'Leading'=>0,'CapHeight'=>662,'XHeight'=>450,'StemV'=>84,'StemH'=>28,'AvgWidth'=>495,'MaxWidth'=>1000,'MissingWidth'=>495); +$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>333,34=>408,35=>500,36=>500,37=>833,38=>778,39=>180,40=>333,41=>333,42=>500,43=>564,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>278,59=>278,60=>564,61=>564,62=>564,63=>444,64=>921,65=>722,66=>667,67=>667,68=>722,69=>611,70=>556,71=>722,72=>722,73=>333,74=>389,75=>722,76=>611,77=>889,78=>722,79=>722,80=>556,81=>722,82=>667,83=>556,84=>611,85=>722,86=>722,87=>944,88=>722,89=>722,90=>611,91=>333,92=>278,93=>333,94=>469,95=>500,96=>333,97=>444,98=>500,99=>444,100=>500,101=>444,102=>333,103=>500,104=>500,105=>278,106=>278,107=>500,108=>278,109=>778,110=>500,111=>500,112=>500,113=>500,114=>333,115=>389,116=>278,117=>500,118=>500,119=>722,120=>500,121=>500,122=>444,123=>480,124=>200,125=>480,126=>541,127=>350,128=>500,129=>350,130=>333,131=>500,132=>444,133=>1000,134=>500,135=>500,136=>333,137=>1000,138=>556,139=>333,140=>889,141=>350,142=>611,143=>350,144=>350,145=>333,146=>333,147=>444,148=>444,149=>350,150=>500,151=>1000,152=>333,153=>980,154=>389,155=>333,156=>722,157=>350,158=>444,159=>722,160=>250,161=>333,162=>500,163=>500,164=>500,165=>500,166=>200,167=>500,168=>333,169=>760,170=>276,171=>500,172=>564,173=>333,174=>760,175=>333,176=>400,177=>564,178=>300,179=>300,180=>333,181=>500,182=>453,183=>250,184=>333,185=>300,186=>310,187=>500,188=>750,189=>750,190=>750,191=>444,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>889,199=>667,200=>611,201=>611,202=>611,203=>611,204=>333,205=>333,206=>333,207=>333,208=>722,209=>722,210=>722,211=>722,212=>722,213=>722,214=>722,215=>564,216=>722,217=>722,218=>722,219=>722,220=>722,221=>722,222=>556,223=>500,224=>444,225=>444,226=>444,227=>444,228=>444,229=>444,230=>667,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>500,242=>500,243=>500,244=>500,245=>500,246=>500,247=>564,248=>500,249=>500,250=>500,251=>500,252=>500,253=>500,254=>500,255=>500); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/timesb.php b/inc/3rdparty/libraries/tcpdf/fonts/timesb.php new file mode 100644 index 000000000..9c41a7b51 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/timesb.php @@ -0,0 +1,12 @@ +32,'FontBBox'=>'[-168 -218 1000 935]','ItalicAngle'=>0,'Ascent'=>935,'Descent'=>-218,'Leading'=>0,'CapHeight'=>676,'XHeight'=>461,'StemV'=>139,'StemH'=>44,'AvgWidth'=>516,'MaxWidth'=>1000,'MissingWidth'=>516); +$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>333,34=>555,35=>500,36=>500,37=>1000,38=>833,39=>278,40=>333,41=>333,42=>500,43=>570,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>333,59=>333,60=>570,61=>570,62=>570,63=>500,64=>930,65=>722,66=>667,67=>722,68=>722,69=>667,70=>611,71=>778,72=>778,73=>389,74=>500,75=>778,76=>667,77=>944,78=>722,79=>778,80=>611,81=>778,82=>722,83=>556,84=>667,85=>722,86=>722,87=>1000,88=>722,89=>722,90=>667,91=>333,92=>278,93=>333,94=>581,95=>500,96=>333,97=>500,98=>556,99=>444,100=>556,101=>444,102=>333,103=>500,104=>556,105=>278,106=>333,107=>556,108=>278,109=>833,110=>556,111=>500,112=>556,113=>556,114=>444,115=>389,116=>333,117=>556,118=>500,119=>722,120=>500,121=>500,122=>444,123=>394,124=>220,125=>394,126=>520,127=>350,128=>500,129=>350,130=>333,131=>500,132=>500,133=>1000,134=>500,135=>500,136=>333,137=>1000,138=>556,139=>333,140=>1000,141=>350,142=>667,143=>350,144=>350,145=>333,146=>333,147=>500,148=>500,149=>350,150=>500,151=>1000,152=>333,153=>1000,154=>389,155=>333,156=>722,157=>350,158=>444,159=>722,160=>250,161=>333,162=>500,163=>500,164=>500,165=>500,166=>220,167=>500,168=>333,169=>747,170=>300,171=>500,172=>570,173=>333,174=>747,175=>333,176=>400,177=>570,178=>300,179=>300,180=>333,181=>556,182=>540,183=>250,184=>333,185=>300,186=>330,187=>500,188=>750,189=>750,190=>750,191=>500,192=>722,193=>722,194=>722,195=>722,196=>722,197=>722,198=>1000,199=>722,200=>667,201=>667,202=>667,203=>667,204=>389,205=>389,206=>389,207=>389,208=>722,209=>722,210=>778,211=>778,212=>778,213=>778,214=>778,215=>570,216=>778,217=>722,218=>722,219=>722,220=>722,221=>722,222=>611,223=>556,224=>500,225=>500,226=>500,227=>500,228=>500,229=>500,230=>722,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>556,242=>500,243=>500,244=>500,245=>500,246=>500,247=>570,248=>500,249=>556,250=>556,251=>556,252=>556,253=>500,254=>556,255=>500); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/timesbi.php b/inc/3rdparty/libraries/tcpdf/fonts/timesbi.php new file mode 100644 index 000000000..4feed7489 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/timesbi.php @@ -0,0 +1,12 @@ +96,'FontBBox'=>'[-200 -218 996 921]','ItalicAngle'=>-15,'Ascent'=>921,'Descent'=>-218,'Leading'=>0,'CapHeight'=>669,'XHeight'=>462,'StemV'=>121,'StemH'=>42,'AvgWidth'=>501,'MaxWidth'=>1000,'MissingWidth'=>501); +$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>389,34=>555,35=>500,36=>500,37=>833,38=>778,39=>278,40=>333,41=>333,42=>500,43=>570,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>333,59=>333,60=>570,61=>570,62=>570,63=>500,64=>832,65=>667,66=>667,67=>667,68=>722,69=>667,70=>667,71=>722,72=>778,73=>389,74=>500,75=>667,76=>611,77=>889,78=>722,79=>722,80=>611,81=>722,82=>667,83=>556,84=>611,85=>722,86=>667,87=>889,88=>667,89=>611,90=>611,91=>333,92=>278,93=>333,94=>570,95=>500,96=>333,97=>500,98=>500,99=>444,100=>500,101=>444,102=>333,103=>500,104=>556,105=>278,106=>278,107=>500,108=>278,109=>778,110=>556,111=>500,112=>500,113=>500,114=>389,115=>389,116=>278,117=>556,118=>444,119=>667,120=>500,121=>444,122=>389,123=>348,124=>220,125=>348,126=>570,127=>350,128=>500,129=>350,130=>333,131=>500,132=>500,133=>1000,134=>500,135=>500,136=>333,137=>1000,138=>556,139=>333,140=>944,141=>350,142=>611,143=>350,144=>350,145=>333,146=>333,147=>500,148=>500,149=>350,150=>500,151=>1000,152=>333,153=>1000,154=>389,155=>333,156=>722,157=>350,158=>389,159=>611,160=>250,161=>389,162=>500,163=>500,164=>500,165=>500,166=>220,167=>500,168=>333,169=>747,170=>266,171=>500,172=>606,173=>333,174=>747,175=>333,176=>400,177=>570,178=>300,179=>300,180=>333,181=>576,182=>500,183=>250,184=>333,185=>300,186=>300,187=>500,188=>750,189=>750,190=>750,191=>500,192=>667,193=>667,194=>667,195=>667,196=>667,197=>667,198=>944,199=>667,200=>667,201=>667,202=>667,203=>667,204=>389,205=>389,206=>389,207=>389,208=>722,209=>722,210=>722,211=>722,212=>722,213=>722,214=>722,215=>570,216=>722,217=>722,218=>722,219=>722,220=>722,221=>611,222=>611,223=>500,224=>500,225=>500,226=>500,227=>500,228=>500,229=>500,230=>722,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>556,242=>500,243=>500,244=>500,245=>500,246=>500,247=>570,248=>500,249=>556,250=>556,251=>556,252=>556,253=>444,254=>500,255=>444); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/timesi.php b/inc/3rdparty/libraries/tcpdf/fonts/timesi.php new file mode 100644 index 000000000..1e8b67349 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/timesi.php @@ -0,0 +1,12 @@ +96,'FontBBox'=>'[-169 -217 1010 883]','ItalicAngle'=>-15.5,'Ascent'=>883,'Descent'=>-217,'Leading'=>0,'CapHeight'=>653,'XHeight'=>441,'StemV'=>76,'StemH'=>32,'AvgWidth'=>491,'MaxWidth'=>1000,'MissingWidth'=>491); +$cw=array(0=>250,1=>250,2=>250,3=>250,4=>250,5=>250,6=>250,7=>250,8=>250,9=>250,10=>250,11=>250,12=>250,13=>250,14=>250,15=>250,16=>250,17=>250,18=>250,19=>250,20=>250,21=>250,22=>250,23=>250,24=>250,25=>250,26=>250,27=>250,28=>250,29=>250,30=>250,31=>250,32=>250,33=>333,34=>420,35=>500,36=>500,37=>833,38=>778,39=>214,40=>333,41=>333,42=>500,43=>675,44=>250,45=>333,46=>250,47=>278,48=>500,49=>500,50=>500,51=>500,52=>500,53=>500,54=>500,55=>500,56=>500,57=>500,58=>333,59=>333,60=>675,61=>675,62=>675,63=>500,64=>920,65=>611,66=>611,67=>667,68=>722,69=>611,70=>611,71=>722,72=>722,73=>333,74=>444,75=>667,76=>556,77=>833,78=>667,79=>722,80=>611,81=>722,82=>611,83=>500,84=>556,85=>722,86=>611,87=>833,88=>611,89=>556,90=>556,91=>389,92=>278,93=>389,94=>422,95=>500,96=>333,97=>500,98=>500,99=>444,100=>500,101=>444,102=>278,103=>500,104=>500,105=>278,106=>278,107=>444,108=>278,109=>722,110=>500,111=>500,112=>500,113=>500,114=>389,115=>389,116=>278,117=>500,118=>444,119=>667,120=>444,121=>444,122=>389,123=>400,124=>275,125=>400,126=>541,127=>350,128=>500,129=>350,130=>333,131=>500,132=>556,133=>889,134=>500,135=>500,136=>333,137=>1000,138=>500,139=>333,140=>944,141=>350,142=>556,143=>350,144=>350,145=>333,146=>333,147=>556,148=>556,149=>350,150=>500,151=>889,152=>333,153=>980,154=>389,155=>333,156=>667,157=>350,158=>389,159=>556,160=>250,161=>389,162=>500,163=>500,164=>500,165=>500,166=>275,167=>500,168=>333,169=>760,170=>276,171=>500,172=>675,173=>333,174=>760,175=>333,176=>400,177=>675,178=>300,179=>300,180=>333,181=>500,182=>523,183=>250,184=>333,185=>300,186=>310,187=>500,188=>750,189=>750,190=>750,191=>500,192=>611,193=>611,194=>611,195=>611,196=>611,197=>611,198=>889,199=>667,200=>611,201=>611,202=>611,203=>611,204=>333,205=>333,206=>333,207=>333,208=>722,209=>667,210=>722,211=>722,212=>722,213=>722,214=>722,215=>675,216=>722,217=>722,218=>722,219=>722,220=>722,221=>556,222=>611,223=>500,224=>500,225=>500,226=>500,227=>500,228=>500,229=>500,230=>667,231=>444,232=>444,233=>444,234=>444,235=>444,236=>278,237=>278,238=>278,239=>278,240=>500,241=>500,242=>500,243=>500,244=>500,245=>500,246=>500,247=>675,248=>500,249=>500,250=>500,251=>500,252=>500,253=>444,254=>500,255=>444); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/fonts/zapfdingbats.php b/inc/3rdparty/libraries/tcpdf/fonts/zapfdingbats.php new file mode 100644 index 000000000..4c0bd75d5 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/fonts/zapfdingbats.php @@ -0,0 +1,12 @@ +4,'FontBBox'=>'[-1 -143 981 820]','ItalicAngle'=>0,'Ascent'=>820,'Descent'=>-143,'Leading'=>0,'CapHeight'=>820,'StemV'=>90,'StemH'=>28,'AvgWidth'=>746,'MaxWidth'=>1016,'MissingWidth'=>746); +$cw=array(0=>746,1=>746,2=>746,3=>746,4=>746,5=>746,6=>746,7=>746,8=>746,9=>746,10=>746,11=>746,12=>746,13=>746,14=>746,15=>746,16=>746,17=>746,18=>746,19=>746,20=>746,21=>746,22=>746,23=>746,24=>746,25=>746,26=>746,27=>746,28=>746,29=>746,30=>746,31=>746,32=>278,33=>974,34=>961,35=>974,36=>980,37=>719,38=>789,39=>790,40=>791,41=>690,42=>960,43=>939,44=>549,45=>855,46=>911,47=>933,48=>911,49=>945,50=>974,51=>755,52=>846,53=>762,54=>761,55=>571,56=>677,57=>763,58=>760,59=>759,60=>754,61=>494,62=>552,63=>537,64=>577,65=>692,66=>786,67=>788,68=>788,69=>790,70=>793,71=>794,72=>816,73=>823,74=>789,75=>841,76=>823,77=>833,78=>816,79=>831,80=>923,81=>744,82=>723,83=>749,84=>790,85=>792,86=>695,87=>776,88=>768,89=>792,90=>759,91=>707,92=>708,93=>682,94=>701,95=>826,96=>815,97=>789,98=>789,99=>707,100=>687,101=>696,102=>689,103=>786,104=>787,105=>713,106=>791,107=>785,108=>791,109=>873,110=>761,111=>762,112=>762,113=>759,114=>759,115=>892,116=>892,117=>788,118=>784,119=>438,120=>138,121=>277,122=>415,123=>392,124=>392,125=>668,126=>668,127=>746,128=>390,129=>390,130=>317,131=>317,132=>276,133=>276,134=>509,135=>509,136=>410,137=>410,138=>234,139=>234,140=>334,141=>334,142=>746,143=>746,144=>746,145=>746,146=>746,147=>746,148=>746,149=>746,150=>746,151=>746,152=>746,153=>746,154=>746,155=>746,156=>746,157=>746,158=>746,159=>746,160=>746,161=>732,162=>544,163=>544,164=>910,165=>667,166=>760,167=>760,168=>776,169=>595,170=>694,171=>626,172=>788,173=>788,174=>788,175=>788,176=>788,177=>788,178=>788,179=>788,180=>788,181=>788,182=>788,183=>788,184=>788,185=>788,186=>788,187=>788,188=>788,189=>788,190=>788,191=>788,192=>788,193=>788,194=>788,195=>788,196=>788,197=>788,198=>788,199=>788,200=>788,201=>788,202=>788,203=>788,204=>788,205=>788,206=>788,207=>788,208=>788,209=>788,210=>788,211=>788,212=>894,213=>838,214=>1016,215=>458,216=>748,217=>924,218=>748,219=>918,220=>927,221=>928,222=>928,223=>834,224=>873,225=>828,226=>924,227=>924,228=>917,229=>930,230=>931,231=>463,232=>883,233=>836,234=>836,235=>867,236=>867,237=>696,238=>696,239=>874,240=>746,241=>874,242=>760,243=>946,244=>771,245=>865,246=>771,247=>888,248=>967,249=>888,250=>831,251=>873,252=>927,253=>970,254=>918,255=>746); +// --- EOF --- diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php new file mode 100644 index 000000000..c1067299c --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php @@ -0,0 +1,1176 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// DESCRIPTION : +// +// Class to create DataMatrix ECC 200 barcode arrays for TCPDF class. +// DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code. +//============================================================+ + +/** +* @file +* Class to create DataMatrix ECC 200 barcode arrays for TCPDF class. +* DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code. +* +* @package com.tecnick.tcpdf +* @author Nicola Asuni +* @version 1.0.008 +*/ + +// custom definitions +if (!defined('DATAMATRIXDEFS')) { + + /** + * Indicate that definitions for this class are set + */ + define('DATAMATRIXDEFS', true); + + // ----------------------------------------------------- + +} // end of custom definitions + +// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# + + +/** +* ASCII encoding: ASCII character 0 to 127 (1 byte per CW) +*/ +define('ENC_ASCII', 0); + +/** +* C40 encoding: Upper-case alphanumeric (3/2 bytes per CW) +*/ +define('ENC_C40', 1); + +/** +* TEXT encoding: Lower-case alphanumeric (3/2 bytes per CW) +*/ +define('ENC_TXT', 2); + +/** +* X12 encoding: ANSI X12 (3/2 byte per CW) +*/ +define('ENC_X12', 3); + +/** +* EDIFACT encoding: ASCII character 32 to 94 (4/3 bytes per CW) +*/ +define('ENC_EDF', 4); + +/** +* BASE 256 encoding: ASCII character 0 to 255 (1 byte per CW) +*/ +define('ENC_BASE256', 5); + +/** +* ASCII extended encoding: ASCII character 128 to 255 (1/2 byte per CW) +*/ +define('ENC_ASCII_EXT', 6); + +/** +* ASCII number encoding: ASCII digits (2 bytes per CW) +*/ +define('ENC_ASCII_NUM', 7); + +/** +* @class Datamatrix +* Class to create DataMatrix ECC 200 barcode arrays for TCPDF class. +* DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code. +* +* @package com.tecnick.tcpdf +* @author Nicola Asuni +* @version 1.0.004 +*/ +class Datamatrix { + + /** + * Barcode array to be returned which is readable by TCPDF. + * @protected + */ + protected $barcode_array = array(); + + /** + * Store last used encoding for data codewords. + * @protected + */ + protected $last_enc = ENC_ASCII; + + /** + * Table of Data Matrix ECC 200 Symbol Attributes:
        + *
      • total matrix rows (including finder pattern)
      • + *
      • total matrix cols (including finder pattern)
      • + *
      • total matrix rows (without finder pattern)
      • + *
      • total matrix cols (without finder pattern)
      • + *
      • region data rows (with finder pattern)
      • + *
      • region data col (with finder pattern)
      • + *
      • region data rows (without finder pattern)
      • + *
      • region data col (without finder pattern)
      • + *
      • horizontal regions
      • + *
      • vertical regions
      • + *
      • regions
      • + *
      • data codewords
      • + *
      • error codewords
      • + *
      • blocks
      • + *
      • data codewords per block
      • + *
      • error codewords per block
      • + *
      + * @protected + */ + protected $symbattr = array( + // square form --------------------------------------------------------------------------------------- + array(0x00a,0x00a,0x008,0x008,0x00a,0x00a,0x008,0x008,0x001,0x001,0x001,0x003,0x005,0x001,0x003,0x005), // 10x10 + array(0x00c,0x00c,0x00a,0x00a,0x00c,0x00c,0x00a,0x00a,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 12x12 + array(0x00e,0x00e,0x00c,0x00c,0x00e,0x00e,0x00c,0x00c,0x001,0x001,0x001,0x008,0x00a,0x001,0x008,0x00a), // 14x14 + array(0x010,0x010,0x00e,0x00e,0x010,0x010,0x00e,0x00e,0x001,0x001,0x001,0x00c,0x00c,0x001,0x00c,0x00c), // 16x16 + array(0x012,0x012,0x010,0x010,0x012,0x012,0x010,0x010,0x001,0x001,0x001,0x012,0x00e,0x001,0x012,0x00e), // 18x18 + array(0x014,0x014,0x012,0x012,0x014,0x014,0x012,0x012,0x001,0x001,0x001,0x016,0x012,0x001,0x016,0x012), // 20x20 + array(0x016,0x016,0x014,0x014,0x016,0x016,0x014,0x014,0x001,0x001,0x001,0x01e,0x014,0x001,0x01e,0x014), // 22x22 + array(0x018,0x018,0x016,0x016,0x018,0x018,0x016,0x016,0x001,0x001,0x001,0x024,0x018,0x001,0x024,0x018), // 24x24 + array(0x01a,0x01a,0x018,0x018,0x01a,0x01a,0x018,0x018,0x001,0x001,0x001,0x02c,0x01c,0x001,0x02c,0x01c), // 26x26 + array(0x020,0x020,0x01c,0x01c,0x010,0x010,0x00e,0x00e,0x002,0x002,0x004,0x03e,0x024,0x001,0x03e,0x024), // 32x32 + array(0x024,0x024,0x020,0x020,0x012,0x012,0x010,0x010,0x002,0x002,0x004,0x056,0x02a,0x001,0x056,0x02a), // 36x36 + array(0x028,0x028,0x024,0x024,0x014,0x014,0x012,0x012,0x002,0x002,0x004,0x072,0x030,0x001,0x072,0x030), // 40x40 + array(0x02c,0x02c,0x028,0x028,0x016,0x016,0x014,0x014,0x002,0x002,0x004,0x090,0x038,0x001,0x090,0x038), // 44x44 + array(0x030,0x030,0x02c,0x02c,0x018,0x018,0x016,0x016,0x002,0x002,0x004,0x0ae,0x044,0x001,0x0ae,0x044), // 48x48 + array(0x034,0x034,0x030,0x030,0x01a,0x01a,0x018,0x018,0x002,0x002,0x004,0x0cc,0x054,0x002,0x066,0x02a), // 52x52 + array(0x040,0x040,0x038,0x038,0x010,0x010,0x00e,0x00e,0x004,0x004,0x010,0x118,0x070,0x002,0x08c,0x038), // 64x64 + array(0x048,0x048,0x040,0x040,0x012,0x012,0x010,0x010,0x004,0x004,0x010,0x170,0x090,0x004,0x05c,0x024), // 72x72 + array(0x050,0x050,0x048,0x048,0x014,0x014,0x012,0x012,0x004,0x004,0x010,0x1c8,0x0c0,0x004,0x072,0x030), // 80x80 + array(0x058,0x058,0x050,0x050,0x016,0x016,0x014,0x014,0x004,0x004,0x010,0x240,0x0e0,0x004,0x090,0x038), // 88x88 + array(0x060,0x060,0x058,0x058,0x018,0x018,0x016,0x016,0x004,0x004,0x010,0x2b8,0x110,0x004,0x0ae,0x044), // 96x96 + array(0x068,0x068,0x060,0x060,0x01a,0x01a,0x018,0x018,0x004,0x004,0x010,0x330,0x150,0x006,0x088,0x038), // 104x104 + array(0x078,0x078,0x06c,0x06c,0x014,0x014,0x012,0x012,0x006,0x006,0x024,0x41a,0x198,0x006,0x0af,0x044), // 120x120 + array(0x084,0x084,0x078,0x078,0x016,0x016,0x014,0x014,0x006,0x006,0x024,0x518,0x1f0,0x008,0x0a3,0x03e), // 132x132 + array(0x090,0x090,0x084,0x084,0x018,0x018,0x016,0x016,0x006,0x006,0x024,0x616,0x26c,0x00a,0x09c,0x03e), // 144x144 + // rectangular form (currently unused) --------------------------------------------------------------------------- + array(0x008,0x012,0x006,0x010,0x008,0x012,0x006,0x010,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 8x18 + array(0x008,0x020,0x006,0x01c,0x008,0x010,0x006,0x00e,0x001,0x002,0x002,0x00a,0x00b,0x001,0x00a,0x00b), // 8x32 + array(0x00c,0x01a,0x00a,0x018,0x00c,0x01a,0x00a,0x018,0x001,0x001,0x001,0x010,0x00e,0x001,0x010,0x00e), // 12x26 + array(0x00c,0x024,0x00a,0x020,0x00c,0x012,0x00a,0x010,0x001,0x002,0x002,0x00c,0x012,0x001,0x00c,0x012), // 12x36 + array(0x010,0x024,0x00e,0x020,0x010,0x012,0x00e,0x010,0x001,0x002,0x002,0x020,0x018,0x001,0x020,0x018), // 16x36 + array(0x010,0x030,0x00e,0x02c,0x010,0x018,0x00e,0x016,0x001,0x002,0x002,0x031,0x01c,0x001,0x031,0x01c) // 16x48 + ); + + /** + * Map encodation modes whit character sets. + * @protected + */ + protected $chset_id = array(ENC_C40 => 'C40', ENC_TXT => 'TXT', ENC_X12 =>'X12'); + + /** + * Basic set of characters for each encodation mode. + * @protected + */ + protected $chset = array( + 'C40' => array( // Basic set for C40 ---------------------------------------------------------------------------- + 'S1'=>0x00,'S2'=>0x01,'S3'=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, // + 0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x41=>0x0e,0x42=>0x0f,0x43=>0x10,0x44=>0x11,0x45=>0x12,0x46=>0x13, // + 0x47=>0x14,0x48=>0x15,0x49=>0x16,0x4a=>0x17,0x4b=>0x18,0x4c=>0x19,0x4d=>0x1a,0x4e=>0x1b,0x4f=>0x1c,0x50=>0x1d, // + 0x51=>0x1e,0x52=>0x1f,0x53=>0x20,0x54=>0x21,0x55=>0x22,0x56=>0x23,0x57=>0x24,0x58=>0x25,0x59=>0x26,0x5a=>0x27),// + 'TXT' => array( // Basic set for TEXT --------------------------------------------------------------------------- + 'S1'=>0x00,'S2'=>0x01,'S3'=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, // + 0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x61=>0x0e,0x62=>0x0f,0x63=>0x10,0x64=>0x11,0x65=>0x12,0x66=>0x13, // + 0x67=>0x14,0x68=>0x15,0x69=>0x16,0x6a=>0x17,0x6b=>0x18,0x6c=>0x19,0x6d=>0x1a,0x6e=>0x1b,0x6f=>0x1c,0x70=>0x1d, // + 0x71=>0x1e,0x72=>0x1f,0x73=>0x20,0x74=>0x21,0x75=>0x22,0x76=>0x23,0x77=>0x24,0x78=>0x25,0x79=>0x26,0x7a=>0x27),// + 'SH1' => array( // Shift 1 set ---------------------------------------------------------------------------------- + 0x00=>0x00,0x01=>0x01,0x02=>0x02,0x03=>0x03,0x04=>0x04,0x05=>0x05,0x06=>0x06,0x07=>0x07,0x08=>0x08,0x09=>0x09, // + 0x0a=>0x0a,0x0b=>0x0b,0x0c=>0x0c,0x0d=>0x0d,0x0e=>0x0e,0x0f=>0x0f,0x10=>0x10,0x11=>0x11,0x12=>0x12,0x13=>0x13, // + 0x14=>0x14,0x15=>0x15,0x16=>0x16,0x17=>0x17,0x18=>0x18,0x19=>0x19,0x1a=>0x1a,0x1b=>0x1b,0x1c=>0x1c,0x1d=>0x1d, // + 0x1e=>0x1e,0x1f=>0x1f), // + 'SH2' => array( // Shift 2 set ---------------------------------------------------------------------------------- + 0x21=>0x00,0x22=>0x01,0x23=>0x02,0x24=>0x03,0x25=>0x04,0x26=>0x05,0x27=>0x06,0x28=>0x07,0x29=>0x08,0x2a=>0x09, // + 0x2b=>0x0a,0x2c=>0x0b,0x2d=>0x0c,0x2e=>0x0d,0x2f=>0x0e,0x3a=>0x0f,0x3b=>0x10,0x3c=>0x11,0x3d=>0x12,0x3e=>0x13, // + 0x3f=>0x14,0x40=>0x15,0x5b=>0x16,0x5c=>0x17,0x5d=>0x18,0x5e=>0x19,0x5f=>0x1a,'F1'=>0x1b,'US'=>0x1e), // + 'S3C' => array( // Shift 3 set for C40 -------------------------------------------------------------------------- + 0x60=>0x00,0x61=>0x01,0x62=>0x02,0x63=>0x03,0x64=>0x04,0x65=>0x05,0x66=>0x06,0x67=>0x07,0x68=>0x08,0x69=>0x09, // + 0x6a=>0x0a,0x6b=>0x0b,0x6c=>0x0c,0x6d=>0x0d,0x6e=>0x0e,0x6f=>0x0f,0x70=>0x10,0x71=>0x11,0x72=>0x12,0x73=>0x13, // + 0x74=>0x14,0x75=>0x15,0x76=>0x16,0x77=>0x17,0x78=>0x18,0x79=>0x19,0x7a=>0x1a,0x7b=>0x1b,0x7c=>0x1c,0x7d=>0x1d, // + 0x7e=>0x1e,0x7f=>0x1f), + 'S3T' => array( // Shift 3 set for TEXT ------------------------------------------------------------------------- + 0x60=>0x00,0x41=>0x01,0x42=>0x02,0x43=>0x03,0x44=>0x04,0x45=>0x05,0x46=>0x06,0x47=>0x07,0x48=>0x08,0x49=>0x09, // + 0x4a=>0x0a,0x4b=>0x0b,0x4c=>0x0c,0x4d=>0x0d,0x4e=>0x0e,0x4f=>0x0f,0x50=>0x10,0x51=>0x11,0x52=>0x12,0x53=>0x13, // + 0x54=>0x14,0x55=>0x15,0x56=>0x16,0x57=>0x17,0x58=>0x18,0x59=>0x19,0x5a=>0x1a,0x7b=>0x1b,0x7c=>0x1c,0x7d=>0x1d, // + 0x7e=>0x1e,0x7f=>0x1f), // + 'X12' => array( // Set for X12 ---------------------------------------------------------------------------------- + 0x0d=>0x00,0x2a=>0x01,0x3e=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, // + 0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x41=>0x0e,0x42=>0x0f,0x43=>0x10,0x44=>0x11,0x45=>0x12,0x46=>0x13, // + 0x47=>0x14,0x48=>0x15,0x49=>0x16,0x4a=>0x17,0x4b=>0x18,0x4c=>0x19,0x4d=>0x1a,0x4e=>0x1b,0x4f=>0x1c,0x50=>0x1d, // + 0x51=>0x1e,0x52=>0x1f,0x53=>0x20,0x54=>0x21,0x55=>0x22,0x56=>0x23,0x57=>0x24,0x58=>0x25,0x59=>0x26,0x5a=>0x27) // + ); + +// ----------------------------------------------------------------------------- + + /** + * This is the class constructor. + * Creates a datamatrix object + * @param $code (string) Code to represent using Datamatrix. + * @public + */ + public function __construct($code) { + $barcode_array = array(); + if ((is_null($code)) OR ($code == '\0') OR ($code == '')) { + return false; + } + // get data codewords + $cw = $this->getHighLevelEncoding($code); + // number of data codewords + $nd = count($cw); + // check size + if ($nd > 1558) { + return false; + } + // get minimum required matrix size. + foreach ($this->symbattr as $params) { + if ($params[11] >= $nd) { + break; + } + } + if ($params[11] < $nd) { + // too much data + return false; + } elseif ($params[11] > $nd) { + // add padding + if ((($params[11] - $nd) > 1) AND ($cw[($nd - 1)] != 254)) { + if ($this->last_enc == ENC_EDF) { + // switch to ASCII encoding + $cw[] = 124; + ++$nd; + } elseif (($this->last_enc != ENC_ASCII) AND ($this->last_enc != ENC_BASE256)) { + // switch to ASCII encoding + $cw[] = 254; + ++$nd; + } + } + if ($params[11] > $nd) { + // add first pad + $cw[] = 129; + ++$nd; + // add remaining pads + for ($i = $nd; $i < $params[11]; ++$i) { + $cw[] = $this->get253StateCodeword(129, $i); + } + } + } + // add error correction codewords + $cw = $this->getErrorCorrection($cw, $params[13], $params[14], $params[15]); + // initialize empty arrays + $grid = array_fill(0, ($params[2] * $params[3]), 0); + // get placement map + $places = $this->getPlacementMap($params[2], $params[3]); + // fill the grid with data + $grid = array(); + $i = 0; + // region data row max index + $rdri = ($params[4] - 1); + // region data column max index + $rdci = ($params[5] - 1); + // for each vertical region + for ($vr = 0; $vr < $params[9]; ++$vr) { + // for each row on region + for ($r = 0; $r < $params[4]; ++$r) { + // get row + $row = (($vr * $params[4]) + $r); + // for each horizontal region + for ($hr = 0; $hr < $params[8]; ++$hr) { + // for each column on region + for ($c = 0; $c < $params[5]; ++$c) { + // get column + $col = (($hr * $params[5]) + $c); + // braw bits by case + if ($r == 0) { + // top finder pattern + if ($c % 2) { + $grid[$row][$col] = 0; + } else { + $grid[$row][$col] = 1; + } + } elseif ($r == $rdri) { + // bottom finder pattern + $grid[$row][$col] = 1; + } elseif ($c == 0) { + // left finder pattern + $grid[$row][$col] = 1; + } elseif ($c == $rdci) { + // right finder pattern + if ($r % 2) { + $grid[$row][$col] = 1; + } else { + $grid[$row][$col] = 0; + } + } else { // data bit + if ($places[$i] < 2) { + $grid[$row][$col] = $places[$i]; + } else { + // codeword ID + $cw_id = (floor($places[$i] / 10) - 1); + // codeword BIT mask + $cw_bit = pow(2, (8 - ($places[$i] % 10))); + $grid[$row][$col] = (($cw[$cw_id] & $cw_bit) == 0) ? 0 : 1; + } + ++$i; + } + } + } + } + } + $this->barcode_array['num_rows'] = $params[0]; + $this->barcode_array['num_cols'] = $params[1]; + $this->barcode_array['bcode'] = $grid; + } + + /** + * Returns a barcode array which is readable by TCPDF + * @return array barcode array readable by TCPDF; + * @public + */ + public function getBarcodeArray() { + return $this->barcode_array; + } + + /** + * Product of two numbers in a Power-of-Two Galois Field + * @param $a (int) first number to multiply. + * @param $b (int) second number to multiply. + * @param $log (array) Log table. + * @param $alog (array) Anti-Log table. + * @param $gf (array) Number of Factors of the Reed-Solomon polynomial. + * @return int product + * @protected + */ + protected function getGFProduct($a, $b, $log, $alog, $gf) { + if (($a == 0) OR ($b == 0)) { + return 0; + } + return ($alog[($log[$a] + $log[$b]) % ($gf - 1)]); + } + + /** + * Add error correction codewords to data codewords array (ANNEX E). + * @param $wd (array) Array of datacodewords. + * @param $nb (int) Number of blocks. + * @param $nd (int) Number of data codewords per block. + * @param $nc (int) Number of correction codewords per block. + * @param $gf (int) numner of fields on log/antilog table (power of 2). + * @param $pp (int) The value of its prime modulus polynomial (301 for ECC200). + * @return array data codewords + error codewords + * @protected + */ + protected function getErrorCorrection($wd, $nb, $nd, $nc, $gf=256, $pp=301) { + // generate the log ($log) and antilog ($alog) tables + $log[0] = 0; + $alog[0] = 1; + for ($i = 1; $i < $gf; ++$i) { + $alog[$i] = ($alog[($i - 1)] * 2); + if ($alog[$i] >= $gf) { + $alog[$i] ^= $pp; + } + $log[$alog[$i]] = $i; + } + ksort($log); + // generate the polynomial coefficients (c) + $c = array_fill(0, ($nc + 1), 0); + $c[0] = 1; + for ($i = 1; $i <= $nc; ++$i) { + $c[$i] = $c[($i-1)]; + for ($j = ($i - 1); $j >= 1; --$j) { + $c[$j] = $c[($j - 1)] ^ $this->getGFProduct($c[$j], $alog[$i], $log, $alog, $gf); + } + $c[0] = $this->getGFProduct($c[0], $alog[$i], $log, $alog, $gf); + } + ksort($c); + // total number of data codewords + $num_wd = ($nb * $nd); + // total number of error codewords + $num_we = ($nb * $nc); + // for each block + for ($b = 0; $b < $nb; ++$b) { + // create interleaved data block + $block = array(); + for ($n = $b; $n < $num_wd; $n += $nb) { + $block[] = $wd[$n]; + } + // initialize error codewords + $we = array_fill(0, ($nc + 1), 0); + // calculate error correction codewords for this block + for ($i = 0; $i < $nd; ++$i) { + $k = ($we[0] ^ $block[$i]); + for ($j = 0; $j < $nc; ++$j) { + $we[$j] = ($we[($j + 1)] ^ $this->getGFProduct($k, $c[($nc - $j - 1)], $log, $alog, $gf)); + } + } + // add error codewords at the end of data codewords + $j = 0; + for ($i = $b; $i < $num_we; $i += $nb) { + $wd[($num_wd + $i)] = $we[$j]; + ++$j; + } + } + // reorder codewords + ksort($wd); + return $wd; + } + + /** + * Return the 253-state codeword + * @param $cwpad (int) Pad codeword. + * @param $cwpos (int) Number of data codewords from the beginning of encoded data. + * @return pad codeword + * @protected + */ + protected function get253StateCodeword($cwpad, $cwpos) { + $pad = ($cwpad + (((149 * $cwpos) % 253) + 1)); + if ($pad > 254) { + $pad -= 254; + } + return $pad; + } + + /** + * Return the 255-state codeword + * @param $cwpad (int) Pad codeword. + * @param $cwpos (int) Number of data codewords from the beginning of encoded data. + * @return pad codeword + * @protected + */ + protected function get255StateCodeword($cwpad, $cwpos) { + $pad = ($cwpad + (((149 * $cwpos) % 255) + 1)); + if ($pad > 255) { + $pad -= 256; + } + return $pad; + } + + /** + * Returns true if the char belongs to the selected mode + * @param $chr (int) Character (byte) to check. + * @param $mode (int) Current encoding mode. + * @return boolean true if the char is of the selected mode. + * @protected + */ + protected function isCharMode($chr, $mode) { + $status = false; + switch ($mode) { + case ENC_ASCII: { // ASCII character 0 to 127 + $status = (($chr >= 0) AND ($chr <= 127)); + break; + } + case ENC_C40: { // Upper-case alphanumeric + $status = (($chr == 32) OR (($chr >= 48) AND ($chr <= 57)) OR (($chr >= 65) AND ($chr <= 90))); + break; + } + case ENC_TXT: { // Lower-case alphanumeric + $status = (($chr == 32) OR (($chr >= 48) AND ($chr <= 57)) OR (($chr >= 97) AND ($chr <= 122))); + break; + } + case ENC_X12: { // ANSI X12 + $status = (($chr == 13) OR ($chr == 42) OR ($chr == 62)); + break; + } + case ENC_EDF: { // ASCII character 32 to 94 + $status = (($chr >= 32) AND ($chr <= 94)); + break; + } + case ENC_BASE256: { // Function character (FNC1, Structured Append, Reader Program, or Code Page) + $status = (($chr == 232) OR ($chr == 233) OR ($chr == 234) OR ($chr == 241)); + break; + } + case ENC_ASCII_EXT: { // ASCII character 128 to 255 + $status = (($chr >= 128) AND ($chr <= 255)); + break; + } + case ENC_ASCII_NUM: { // ASCII digits + $status = (($chr >= 48) AND ($chr <= 57)); + break; + } + } + return $status; + } + + /** + * The look-ahead test scans the data to be encoded to find the best mode (Annex P - steps from J to S). + * @param $data (string) data to encode + * @param $pos (int) current position + * @param $mode (int) current encoding mode + * @return int encoding mode + * @protected + */ + protected function lookAheadTest($data, $pos, $mode) { + $data_length = strlen($data); + if ($pos >= $data_length) { + return $mode; + } + $charscount = 0; // count processed chars + // STEP J + if ($mode == ENC_ASCII) { + $numch = array(0, 1, 1, 1, 1, 1.25); + } else { + $numch = array(1, 2, 2, 2, 2, 2.25); + $numch[$mode] = 0; + } + while (true) { + // STEP K + if (($pos + $charscount) == $data_length) { + if ($numch[ENC_ASCII] <= ceil(min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256]))) { + return ENC_ASCII; + } + if ($numch[ENC_BASE256] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF]))) { + return ENC_BASE256; + } + if ($numch[ENC_EDF] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_BASE256]))) { + return ENC_EDF; + } + if ($numch[ENC_TXT] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256]))) { + return ENC_TXT; + } + if ($numch[ENC_X12] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256]))) { + return ENC_X12; + } + return ENC_C40; + } + // get char + $chr = ord($data[$pos + $charscount]); + $charscount++; + // STEP L + if ($this->isCharMode($chr, ENC_ASCII_NUM)) { + $numch[ENC_ASCII] += (1 / 2); + } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { + $numch[ENC_ASCII] = ceil($numch[ENC_ASCII]); + $numch[ENC_ASCII] += 2; + } else { + $numch[ENC_ASCII] = ceil($numch[ENC_ASCII]); + $numch[ENC_ASCII] += 1; + } + // STEP M + if ($this->isCharMode($chr, ENC_C40)) { + $numch[ENC_C40] += (2 / 3); + } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { + $numch[ENC_C40] += (8 / 3); + } else { + $numch[ENC_C40] += (4 / 3); + } + // STEP N + if ($this->isCharMode($chr, ENC_TXT)) { + $numch[ENC_TXT] += (2 / 3); + } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { + $numch[ENC_TXT] += (8 / 3); + } else { + $numch[ENC_TXT] += (4 / 3); + } + // STEP O + if ($this->isCharMode($chr, ENC_X12) OR $this->isCharMode($chr, ENC_C40)) { + $numch[ENC_X12] += (2 / 3); + } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { + $numch[ENC_X12] += (13 / 3); + } else { + $numch[ENC_X12] += (10 / 3); + } + // STEP P + if ($this->isCharMode($chr, ENC_EDF)) { + $numch[ENC_EDF] += (3 / 4); + } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { + $numch[ENC_EDF] += (17 / 4); + } else { + $numch[ENC_EDF] += (13 / 4); + } + // STEP Q + if ($this->isCharMode($chr, ENC_BASE256)) { + $numch[ENC_BASE256] += 4; + } else { + $numch[ENC_BASE256] += 1; + } + // STEP R + if ($charscount >= 4) { + if (($numch[ENC_ASCII] + 1) <= min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256])) { + return ENC_ASCII; + } + if ((($numch[ENC_BASE256] + 1) <= $numch[ENC_ASCII]) + OR (($numch[ENC_BASE256] + 1) < min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF]))) { + return ENC_BASE256; + } + if (($numch[ENC_EDF] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_BASE256])) { + return ENC_EDF; + } + if (($numch[ENC_TXT] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256])) { + return ENC_TXT; + } + if (($numch[ENC_X12] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256])) { + return ENC_X12; + } + if (($numch[ENC_C40] + 1) < min($numch[ENC_ASCII], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256])) { + if ($numch[ENC_C40] < $numch[ENC_X12]) { + return ENC_C40; + } + if ($numch[ENC_C40] == $numch[ENC_X12]) { + $k = ($pos + $charscount + 1); + while ($k < $data_length) { + $tmpchr = ord($data{$k}); + if ($this->isCharMode($tmpchr, ENC_X12)) { + return ENC_X12; + } elseif (!($this->isCharMode($tmpchr, ENC_X12) OR $this->isCharMode($tmpchr, ENC_C40))) { + break; + } + ++$k; + } + return ENC_C40; + } + } + } + } // end of while + } + + /** + * Get the switching codeword to a new encoding mode (latch codeword) + * @param $mode (int) New encoding mode. + * @return (int) Switch codeword. + * @protected + */ + protected function getSwitchEncodingCodeword($mode) { + switch ($mode) { + case ENC_ASCII: { // ASCII character 0 to 127 + $cw = 254; + if ($this->last_enc == ENC_EDF) { + $cw = 124; + } + break; + } + case ENC_C40: { // Upper-case alphanumeric + $cw = 230; + break; + } + case ENC_TXT: { // Lower-case alphanumeric + $cw = 239; + break; + } + case ENC_X12: { // ANSI X12 + $cw = 238; + break; + } + case ENC_EDF: { // ASCII character 32 to 94 + $cw = 240; + break; + } + case ENC_BASE256: { // Function character (FNC1, Structured Append, Reader Program, or Code Page) + $cw = 231; + break; + } + } + return $cw; + } + + /** + * Choose the minimum matrix size and return the max number of data codewords. + * @param $numcw (int) Number of current codewords. + * @return number of data codewords in matrix + * @protected + */ + protected function getMaxDataCodewords($numcw) { + foreach ($this->symbattr as $key => $matrix) { + if ($matrix[11] >= $numcw) { + return $matrix[11]; + } + } + return 0; + } + + /** + * Get high level encoding using the minimum symbol data characters for ECC 200 + * @param $data (string) data to encode + * @return array of codewords + * @protected + */ + protected function getHighLevelEncoding($data) { + // STEP A. Start in ASCII encodation. + $enc = ENC_ASCII; // current encoding mode + $pos = 0; // current position + $cw = array(); // array of codewords to be returned + $cw_num = 0; // number of data codewords + $data_lenght = strlen($data); // number of chars + while ($pos < $data_lenght) { + // set last used encoding + $this->last_enc = $enc; + switch ($enc) { + case ENC_ASCII: { // STEP B. While in ASCII encodation + if (($data_lenght > 1) AND ($pos < ($data_lenght - 1)) AND ($this->isCharMode(ord($data[$pos]), ENC_ASCII_NUM) AND $this->isCharMode(ord($data[$pos + 1]), ENC_ASCII_NUM))) { + // 1. If the next data sequence is at least 2 consecutive digits, encode the next two digits as a double digit in ASCII mode. + $cw[] = (intval(substr($data, $pos, 2)) + 130); + ++$cw_num; + $pos += 2; + } else { + // 2. If the look-ahead test (starting at step J) indicates another mode, switch to that mode. + $newenc = $this->lookAheadTest($data, $pos, $enc); + if ($newenc != $enc) { + // switch to new encoding + $enc = $newenc; + $cw[] = $this->getSwitchEncodingCodeword($enc); + ++$cw_num; + } else { + // get new byte + $chr = ord($data[$pos]); + ++$pos; + if ($this->isCharMode($chr, ENC_ASCII_EXT)) { + // 3. If the next data character is extended ASCII (greater than 127) encode it in ASCII mode first using the Upper Shift (value 235) character. + $cw[] = 235; + $cw[] = ($chr - 127); + $cw_num += 2; + } else { + // 4. Otherwise process the next data character in ASCII encodation. + $cw[] = ($chr + 1); + ++$cw_num; + } + } + } + break; + } + case ENC_C40 : // Upper-case alphanumeric + case ENC_TXT : // Lower-case alphanumeric + case ENC_X12 : { // ANSI X12 + $temp_cw = array(); + $p = 0; + $epos = $pos; + // get charset ID + $set_id = $this->chset_id[$enc]; + // get basic charset for current encoding + $charset = $this->chset[$set_id]; + do { + // 2. process the next character in C40 encodation. + $chr = ord($data[$epos]); + ++$epos; + // check for extended character + if ($chr & 0x80) { + if ($enc == ENC_X12) { + return false; + } + $chr = ($chr & 0x7f); + $temp_cw[] = 1; // shift 2 + $temp_cw[] = 30; // upper shift + $p += 2; + } + if (isset($charset[$chr])) { + $temp_cw[] = $charset[$chr]; + ++$p; + } else { + if (isset($this->chset['SH1'][$chr])) { + $temp_cw[] = 0; // shift 1 + $shiftset = $this->chset['SH1']; + } elseif (isset($chr, $this->chset['SH2'][$chr])) { + $temp_cw[] = 1; // shift 2 + $shiftset = $this->chset['SH2']; + } elseif (($enc == ENC_C40) AND isset($this->chset['S3C'][$chr])) { + $temp_cw[] = 2; // shift 3 + $shiftset = $this->chset['S3C']; + } elseif (($enc == ENC_TXT) AND isset($this->chset['S3T'][$chr])) { + $temp_cw[] = 2; // shift 3 + $shiftset = $this->chset['S3T']; + } else { + return false; + } + $temp_cw[] = $shiftset[$chr]; + $p += 2; + } + if ($p >= 3) { + $c1 = array_shift($temp_cw); + $c2 = array_shift($temp_cw); + $c3 = array_shift($temp_cw); + $p -= 3; + $tmp = ((1600 * $c1) + (40 * $c2) + $c3 + 1); + $cw[] = ($tmp >> 8); + $cw[] = ($tmp % 256); + $cw_num += 2; + $pos = $epos; + // 1. If the C40 encoding is at the point of starting a new double symbol character and if the look-ahead test (starting at step J) indicates another mode, switch to that mode. + $newenc = $this->lookAheadTest($data, $pos, $enc); + if ($newenc != $enc) { + // switch to new encoding + $enc = $newenc; + if ($enc != ENC_ASCII) { + // set unlatch character + $cw[] = $this->getSwitchEncodingCodeword(ENC_ASCII); + ++$cw_num; + } + $cw[] = $this->getSwitchEncodingCodeword($enc); + ++$cw_num; + $pos -= $p; + $p = 0; + break; + } + } + } while (($p > 0) AND ($epos < $data_lenght)); + // process last data (if any) + if ($p > 0) { + // get remaining number of data symbols + $cwr = ($this->getMaxDataCodewords($cw_num) - $cw_num); + if (($cwr == 1) AND ($p == 1)) { + // d. If one symbol character remains and one C40 value (data character) remains to be encoded + $c1 = array_shift($temp_cw); + --$p; + $cw[] = ($chr + 1); + ++$cw_num; + $pos = $epos; + $enc = ENC_ASCII; + $this->last_enc = $enc; + } elseif (($cwr == 2) AND ($p == 1)) { + // c. If two symbol characters remain and only one C40 value (data character) remains to be encoded + $c1 = array_shift($temp_cw); + --$p; + $cw[] = 254; + $cw[] = ($chr + 1); + $cw_num += 2; + $pos = $epos; + $enc = ENC_ASCII; + $this->last_enc = $enc; + } elseif (($cwr == 2) AND ($p == 2)) { + // b. If two symbol characters remain and two C40 values remain to be encoded + $c1 = array_shift($temp_cw); + $c2 = array_shift($temp_cw); + $p -= 2; + $tmp = ((1600 * $c1) + (40 * $c2) + 1); + $cw[] = ($tmp >> 8); + $cw[] = ($tmp % 256); + $cw_num += 2; + $pos = $epos; + $enc = ENC_ASCII; + $this->last_enc = $enc; + } else { + // switch to ASCII encoding + if ($enc != ENC_ASCII) { + $enc = ENC_ASCII; + $this->last_enc = $enc; + $cw[] = $this->getSwitchEncodingCodeword($enc); + ++$cw_num; + $pos = ($epos - $p); + } + } + } + break; + } + case ENC_EDF: { // F. While in EDIFACT (EDF) encodation + // initialize temporary array with 0 lenght + $temp_cw = array(); + $epos = $pos; + $field_lenght = 0; + $newenc = $enc; + do { + // 2. process the next character in EDIFACT encodation. + $chr = ord($data[$epos]); + if ($this->isCharMode($chr, ENC_EDF)) { + ++$epos; + $temp_cw[] = $chr; + ++$field_lenght; + } + if (($field_lenght == 4) OR ($epos == $data_lenght) OR !$this->isCharMode($chr, ENC_EDF)) { + if (($epos == $data_lenght) AND ($field_lenght < 3)) { + $enc = ENC_ASCII; + $cw[] = $this->getSwitchEncodingCodeword($enc); + ++$cw_num; + break; + } + if ($field_lenght < 4) { + // set unlatch character + $temp_cw[] = 0x1f; + ++$field_lenght; + // fill empty characters + for ($i = $field_lenght; $i < 4; ++$i) { + $temp_cw[] = 0; + } + $enc = ENC_ASCII; + $this->last_enc = $enc; + } + // encodes four data characters in three codewords + $tcw = (($temp_cw[0] & 0x3F) << 2) + (($temp_cw[1] & 0x30) >> 4); + if ($tcw > 0) { + $cw[] = $tcw; + $cw_num++; + } + $tcw= (($temp_cw[1] & 0x0F) << 4) + (($temp_cw[2] & 0x3C) >> 2); + if ($tcw > 0) { + $cw[] = $tcw; + $cw_num++; + } + $tcw = (($temp_cw[2] & 0x03) << 6) + ($temp_cw[3] & 0x3F); + if ($tcw > 0) { + $cw[] = $tcw; + $cw_num++; + } + $temp_cw = array(); + $pos = $epos; + $field_lenght = 0; + if ($enc == ENC_ASCII) { + break; // exit from EDIFACT mode + } + } + } while ($epos < $data_lenght); + break; + } + case ENC_BASE256: { // G. While in Base 256 (B256) encodation + // initialize temporary array with 0 lenght + $temp_cw = array(); + $field_lenght = 0; + while (($pos < $data_lenght) AND ($field_lenght <= 1555)) { + $newenc = $this->lookAheadTest($data, $pos, $enc); + if ($newenc != $enc) { + // 1. If the look-ahead test (starting at step J) indicates another mode, switch to that mode. + $enc = $newenc; + break; // exit from B256 mode + } else { + // 2. Otherwise, process the next character in Base 256 encodation. + $chr = ord($data[$pos]); + ++$pos; + $temp_cw[] = $chr; + ++$field_lenght; + } + } + // set field lenght + if ($field_lenght <= 249) { + $cw[] = $this->get255StateCodeword($field_lenght, ($cw_num + 1)); + ++$cw_num; + } else { + $cw[] = $this->get255StateCodeword((floor($field_lenght / 250) + 249), ($cw_num + 1)); + $cw[] = $this->get255StateCodeword(($field_lenght % 250), ($cw_num + 2)); + $cw_num += 2; + } + if (!empty($temp_cw)) { + // add B256 field + foreach ($temp_cw as $p => $cht) { + $cw[] = $this->get255StateCodeword($cht, ($cw_num + $p + 1)); + } + } + break; + } + } // end of switch enc + } // end of while + return $cw; + } + + /** + * Places "chr+bit" with appropriate wrapping within array[]. + * (Annex F - ECC 200 symbol character placement) + * @param $marr (array) Array of symbols. + * @param $nrow (int) Number of rows. + * @param $ncol (int) Number of columns. + * @param $row (int) Row number. + * @param $col (int) Column number. + * @param $chr (int) Char byte. + * @param $bit (int) Bit. + * @return array + * @protected + */ + protected function placeModule($marr, $nrow, $ncol, $row, $col, $chr, $bit) { + if ($row < 0) { + $row += $nrow; + $col += (4 - (($nrow + 4) % 8)); + } + if ($col < 0) { + $col += $ncol; + $row += (4 - (($ncol + 4) % 8)); + } + $marr[(($row * $ncol) + $col)] = ((10 * $chr) + $bit); + return $marr; + } + + /** + * Places the 8 bits of a utah-shaped symbol character. + * (Annex F - ECC 200 symbol character placement) + * @param $marr (array) Array of symbols. + * @param $nrow (int) Number of rows. + * @param $ncol (int) Number of columns. + * @param $row (int) Row number. + * @param $col (int) Column number. + * @param $chr (int) Char byte. + * @return array + * @protected + */ + protected function placeUtah($marr, $nrow, $ncol, $row, $col, $chr) { + $marr = $this->placeModule($marr, $nrow, $ncol, $row-2, $col-2, $chr, 1); + $marr = $this->placeModule($marr, $nrow, $ncol, $row-2, $col-1, $chr, 2); + $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col-2, $chr, 3); + $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col-1, $chr, 4); + $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col, $chr, 5); + $marr = $this->placeModule($marr, $nrow, $ncol, $row, $col-2, $chr, 6); + $marr = $this->placeModule($marr, $nrow, $ncol, $row, $col-1, $chr, 7); + $marr = $this->placeModule($marr, $nrow, $ncol, $row, $col, $chr, 8); + return $marr; + } + + /** + * Places the 8 bits of the first special corner case. + * (Annex F - ECC 200 symbol character placement) + * @param $marr (array) Array of symbols. + * @param $nrow (int) Number of rows. + * @param $ncol (int) Number of columns. + * @param $chr (int) Char byte. + * @return array + * @protected + */ + protected function placeCornerA($marr, $nrow, $ncol, $chr) { + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 1); + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 1, $chr, 2); + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 2, $chr, 3); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 4); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 5); + $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 6); + $marr = $this->placeModule($marr, $nrow, $ncol, 2, $ncol-1, $chr, 7); + $marr = $this->placeModule($marr, $nrow, $ncol, 3, $ncol-1, $chr, 8); + return $marr; + } + + /** + * Places the 8 bits of the second special corner case. + * (Annex F - ECC 200 symbol character placement) + * @param $marr (array) Array of symbols. + * @param $nrow (int) Number of rows. + * @param $ncol (int) Number of columns. + * @param $chr (int) Char byte. + * @return array + * @protected + */ + protected function placeCornerB($marr, $nrow, $ncol, $chr) { + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-3, 0, $chr, 1); + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-2, 0, $chr, 2); + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 3); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-4, $chr, 4); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-3, $chr, 5); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 6); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 7); + $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 8); + return $marr; + } + + /** + * Places the 8 bits of the third special corner case. + * (Annex F - ECC 200 symbol character placement) + * @param $marr (array) Array of symbols. + * @param $nrow (int) Number of rows. + * @param $ncol (int) Number of columns. + * @param $chr (int) Char byte. + * @return array + * @protected + */ + protected function placeCornerC($marr, $nrow, $ncol, $chr) { + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-3, 0, $chr, 1); + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-2, 0, $chr, 2); + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 3); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 4); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 5); + $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 6); + $marr = $this->placeModule($marr, $nrow, $ncol, 2, $ncol-1, $chr, 7); + $marr = $this->placeModule($marr, $nrow, $ncol, 3, $ncol-1, $chr, 8); + return $marr; + } + + /** + * Places the 8 bits of the fourth special corner case. + * (Annex F - ECC 200 symbol character placement) + * @param $marr (array) Array of symbols. + * @param $nrow (int) Number of rows. + * @param $ncol (int) Number of columns. + * @param $chr (int) Char byte. + * @return array + * @protected + */ + protected function placeCornerD($marr, $nrow, $ncol, $chr) { + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 1); + $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, $ncol-1, $chr, 2); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-3, $chr, 3); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 4); + $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 5); + $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-3, $chr, 6); + $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-2, $chr, 7); + $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 8); + return $marr; + } + + /** + * Build a placement map. + * (Annex F - ECC 200 symbol character placement) + * @param $nrow (int) Number of rows. + * @param $ncol (int) Number of columns. + * @return array + * @protected + */ + protected function getPlacementMap($nrow, $ncol) { + // initialize array with zeros + $marr = array_fill(0, ($nrow * $ncol), 0); + // set starting values + $chr = 1; + $row = 4; + $col = 0; + do { + // repeatedly first check for one of the special corner cases, then + if (($row == $nrow) AND ($col == 0)) { + $marr = $this->placeCornerA($marr, $nrow, $ncol, $chr); + ++$chr; + } + if (($row == ($nrow - 2)) AND ($col == 0) AND ($ncol % 4)) { + $marr = $this->placeCornerB($marr, $nrow, $ncol, $chr); + ++$chr; + } + if (($row == ($nrow - 2)) AND ($col == 0) AND (($ncol % 8) == 4)) { + $marr = $this->placeCornerC($marr, $nrow, $ncol, $chr); + ++$chr; + } + if (($row == ($nrow + 4)) AND ($col == 2) AND (!($ncol % 8))) { + $marr = $this->placeCornerD($marr, $nrow, $ncol, $chr); + ++$chr; + } + // sweep upward diagonally, inserting successive characters, + do { + if (($row < $nrow) AND ($col >= 0) AND (!$marr[(($row * $ncol) + $col)])) { + $marr = $this->placeUtah($marr, $nrow, $ncol, $row, $col, $chr); + ++$chr; + } + $row -= 2; + $col += 2; + } while (($row >= 0) AND ($col < $ncol)); + ++$row; + $col += 3; + // & then sweep downward diagonally, inserting successive characters,... + do { + if (($row >= 0) AND ($col < $ncol) AND (!$marr[(($row * $ncol) + $col)])) { + $marr = $this->placeUtah($marr, $nrow, $ncol, $row, $col, $chr); + ++$chr; + } + $row += 2; + $col -= 2; + } while (($row < $nrow) AND ($col >= 0)); + $row += 3; + ++$col; + // ... until the entire array is scanned + } while (($row < $nrow) OR ($col < $ncol)); + // lastly, if the lower righthand corner is untouched, fill in fixed pattern + if (!$marr[(($nrow * $ncol) - 1)]) { + $marr[(($nrow * $ncol) - 1)] = 1; + $marr[(($nrow * $ncol) - $ncol - 2)] = 1; + } + return $marr; + } + +} // end DataMatrix class +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php new file mode 100644 index 000000000..07b36b90c --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php @@ -0,0 +1,996 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// DESCRIPTION : +// +// Class to create PDF417 barcode arrays for TCPDF class. +// PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. +// It is one of the most popular 2D codes because of its ability to be read with slightly modified handheld laser or linear CCD scanners. +// TECHNICAL DATA / FEATURES OF PDF417: +// Encodable Character Set: All 128 ASCII Characters (including extended) +// Code Type: Continuous, Multi-Row +// Symbol Height: 3 - 90 Rows +// Symbol Width: 90X - 583X +// Bidirectional Decoding: Yes +// Error Correction Characters: 2 - 512 +// Maximum Data Characters: 1850 text, 2710 digits, 1108 bytes +// +//============================================================+ + +/** + * @file + * Class to create PDF417 barcode arrays for TCPDF class. + * PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. + * (requires PHP bcmath extension) + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.005 + */ + +// definitions +if (!defined('PDF417DEFS')) { + + /** + * Indicate that definitions for this class are set + */ + define('PDF417DEFS', true); + + // ----------------------------------------------------- + + /** + * Row height respect X dimension of single module + */ + define('ROWHEIGHT', 4); + + /** + * Horizontal quiet zone in modules + */ + define('QUIETH', 2); + + /** + * Vertical quiet zone in modules + */ + define('QUIETV', 2); + +} // end of definitions + +// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# + +/** + * @class PDF417 + * Class to create PDF417 barcode arrays for TCPDF class. + * PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.003 + */ +class PDF417 { + + /** + * Barcode array to be returned which is readable by TCPDF. + * @protected + */ + protected $barcode_array = array(); + + /** + * Start pattern. + * @protected + */ + protected $start_pattern = '11111111010101000'; + + /** + * Stop pattern. + * @protected + */ + protected $stop_pattern = '111111101000101001'; + + /** + * Array of text Compaction Sub-Modes (values 0xFB - 0xFF are used for submode changers). + * @protected + */ + protected $textsubmodes = array( + array(0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x20,0xFD,0xFE,0xFF), // Alpha + array(0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x20,0xFD,0xFE,0xFF), // Lower + array(0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x26,0x0d,0x09,0x2c,0x3a,0x23,0x2d,0x2e,0x24,0x2f,0x2b,0x25,0x2a,0x3d,0x5e,0xFB,0x20,0xFD,0xFE,0xFF), // Mixed + array(0x3b,0x3c,0x3e,0x40,0x5b,0x5c,0x5d,0x5f,0x60,0x7e,0x21,0x0d,0x09,0x2c,0x3a,0x0a,0x2d,0x2e,0x24,0x2f,0x22,0x7c,0x2a,0x28,0x29,0x3f,0x7b,0x7d,0x27,0xFF) // Puntuaction + ); + + /** + * Array of switching codes for Text Compaction Sub-Modes. + * @protected + */ + protected $textlatch = array( + '01' => array(27), '02' => array(28), '03' => array(28,25), // + '10' => array(28,28), '12' => array(28), '13' => array(28,25), // + '20' => array(28), '21' => array(27), '23' => array(25), // + '30' => array(29), '31' => array(29,27), '32' => array(29,28) // + ); + + /** + * Clusters of codewords (0, 3, 6)
      + * Values are hex equivalents of binary representation of bars (1 = bar, 0 = space).
      + * The codewords numbered from 900 to 928 have special meaning, some enable to switch between modes in order to optimise the code:
        + *
      • 900 : Switch to "Text" mode
      • + *
      • 901 : Switch to "Byte" mode
      • + *
      • 902 : Switch to "Numeric" mode
      • + *
      • 903 - 912 : Reserved
      • + *
      • 913 : Switch to "Octet" only for the next codeword
      • + *
      • 914 - 920 : Reserved
      • + *
      • 921 : Initialization
      • + *
      • 922 : Terminator codeword for Macro PDF control block
      • + *
      • 923 : Sequence tag to identify the beginning of optional fields in the Macro PDF control block
      • + *
      • 924 : Switch to "Byte" mode (If the total number of byte is multiple of 6)
      • + *
      • 925 : Identifier for a user defined Extended Channel Interpretation (ECI)
      • + *
      • 926 : Identifier for a general purpose ECI format
      • + *
      • 927 : Identifier for an ECI of a character set or code page
      • + *
      • 928 : Macro marker codeword to indicate the beginning of a Macro PDF Control Block
      • + *
      + * @protected + */ + protected $clusters = array( + array( // cluster 0 ----------------------------------------------------------------------- + 0x1d5c0,0x1eaf0,0x1f57c,0x1d4e0,0x1ea78,0x1f53e,0x1a8c0,0x1d470,0x1a860,0x15040, // 10 + 0x1a830,0x15020,0x1adc0,0x1d6f0,0x1eb7c,0x1ace0,0x1d678,0x1eb3e,0x158c0,0x1ac70, // 20 + 0x15860,0x15dc0,0x1aef0,0x1d77c,0x15ce0,0x1ae78,0x1d73e,0x15c70,0x1ae3c,0x15ef0, // 30 + 0x1af7c,0x15e78,0x1af3e,0x15f7c,0x1f5fa,0x1d2e0,0x1e978,0x1f4be,0x1a4c0,0x1d270, // 40 + 0x1e93c,0x1a460,0x1d238,0x14840,0x1a430,0x1d21c,0x14820,0x1a418,0x14810,0x1a6e0, // 50 + 0x1d378,0x1e9be,0x14cc0,0x1a670,0x1d33c,0x14c60,0x1a638,0x1d31e,0x14c30,0x1a61c, // 60 + 0x14ee0,0x1a778,0x1d3be,0x14e70,0x1a73c,0x14e38,0x1a71e,0x14f78,0x1a7be,0x14f3c, // 70 + 0x14f1e,0x1a2c0,0x1d170,0x1e8bc,0x1a260,0x1d138,0x1e89e,0x14440,0x1a230,0x1d11c, // 80 + 0x14420,0x1a218,0x14410,0x14408,0x146c0,0x1a370,0x1d1bc,0x14660,0x1a338,0x1d19e, // 90 + 0x14630,0x1a31c,0x14618,0x1460c,0x14770,0x1a3bc,0x14738,0x1a39e,0x1471c,0x147bc, // 100 + 0x1a160,0x1d0b8,0x1e85e,0x14240,0x1a130,0x1d09c,0x14220,0x1a118,0x1d08e,0x14210, // 110 + 0x1a10c,0x14208,0x1a106,0x14360,0x1a1b8,0x1d0de,0x14330,0x1a19c,0x14318,0x1a18e, // 120 + 0x1430c,0x14306,0x1a1de,0x1438e,0x14140,0x1a0b0,0x1d05c,0x14120,0x1a098,0x1d04e, // 130 + 0x14110,0x1a08c,0x14108,0x1a086,0x14104,0x141b0,0x14198,0x1418c,0x140a0,0x1d02e, // 140 + 0x1a04c,0x1a046,0x14082,0x1cae0,0x1e578,0x1f2be,0x194c0,0x1ca70,0x1e53c,0x19460, // 150 + 0x1ca38,0x1e51e,0x12840,0x19430,0x12820,0x196e0,0x1cb78,0x1e5be,0x12cc0,0x19670, // 160 + 0x1cb3c,0x12c60,0x19638,0x12c30,0x12c18,0x12ee0,0x19778,0x1cbbe,0x12e70,0x1973c, // 170 + 0x12e38,0x12e1c,0x12f78,0x197be,0x12f3c,0x12fbe,0x1dac0,0x1ed70,0x1f6bc,0x1da60, // 180 + 0x1ed38,0x1f69e,0x1b440,0x1da30,0x1ed1c,0x1b420,0x1da18,0x1ed0e,0x1b410,0x1da0c, // 190 + 0x192c0,0x1c970,0x1e4bc,0x1b6c0,0x19260,0x1c938,0x1e49e,0x1b660,0x1db38,0x1ed9e, // 200 + 0x16c40,0x12420,0x19218,0x1c90e,0x16c20,0x1b618,0x16c10,0x126c0,0x19370,0x1c9bc, // 210 + 0x16ec0,0x12660,0x19338,0x1c99e,0x16e60,0x1b738,0x1db9e,0x16e30,0x12618,0x16e18, // 220 + 0x12770,0x193bc,0x16f70,0x12738,0x1939e,0x16f38,0x1b79e,0x16f1c,0x127bc,0x16fbc, // 230 + 0x1279e,0x16f9e,0x1d960,0x1ecb8,0x1f65e,0x1b240,0x1d930,0x1ec9c,0x1b220,0x1d918, // 240 + 0x1ec8e,0x1b210,0x1d90c,0x1b208,0x1b204,0x19160,0x1c8b8,0x1e45e,0x1b360,0x19130, // 250 + 0x1c89c,0x16640,0x12220,0x1d99c,0x1c88e,0x16620,0x12210,0x1910c,0x16610,0x1b30c, // 260 + 0x19106,0x12204,0x12360,0x191b8,0x1c8de,0x16760,0x12330,0x1919c,0x16730,0x1b39c, // 270 + 0x1918e,0x16718,0x1230c,0x12306,0x123b8,0x191de,0x167b8,0x1239c,0x1679c,0x1238e, // 280 + 0x1678e,0x167de,0x1b140,0x1d8b0,0x1ec5c,0x1b120,0x1d898,0x1ec4e,0x1b110,0x1d88c, // 290 + 0x1b108,0x1d886,0x1b104,0x1b102,0x12140,0x190b0,0x1c85c,0x16340,0x12120,0x19098, // 300 + 0x1c84e,0x16320,0x1b198,0x1d8ce,0x16310,0x12108,0x19086,0x16308,0x1b186,0x16304, // 310 + 0x121b0,0x190dc,0x163b0,0x12198,0x190ce,0x16398,0x1b1ce,0x1638c,0x12186,0x16386, // 320 + 0x163dc,0x163ce,0x1b0a0,0x1d858,0x1ec2e,0x1b090,0x1d84c,0x1b088,0x1d846,0x1b084, // 330 + 0x1b082,0x120a0,0x19058,0x1c82e,0x161a0,0x12090,0x1904c,0x16190,0x1b0cc,0x19046, // 340 + 0x16188,0x12084,0x16184,0x12082,0x120d8,0x161d8,0x161cc,0x161c6,0x1d82c,0x1d826, // 350 + 0x1b042,0x1902c,0x12048,0x160c8,0x160c4,0x160c2,0x18ac0,0x1c570,0x1e2bc,0x18a60, // 360 + 0x1c538,0x11440,0x18a30,0x1c51c,0x11420,0x18a18,0x11410,0x11408,0x116c0,0x18b70, // 370 + 0x1c5bc,0x11660,0x18b38,0x1c59e,0x11630,0x18b1c,0x11618,0x1160c,0x11770,0x18bbc, // 380 + 0x11738,0x18b9e,0x1171c,0x117bc,0x1179e,0x1cd60,0x1e6b8,0x1f35e,0x19a40,0x1cd30, // 390 + 0x1e69c,0x19a20,0x1cd18,0x1e68e,0x19a10,0x1cd0c,0x19a08,0x1cd06,0x18960,0x1c4b8, // 400 + 0x1e25e,0x19b60,0x18930,0x1c49c,0x13640,0x11220,0x1cd9c,0x1c48e,0x13620,0x19b18, // 410 + 0x1890c,0x13610,0x11208,0x13608,0x11360,0x189b8,0x1c4de,0x13760,0x11330,0x1cdde, // 420 + 0x13730,0x19b9c,0x1898e,0x13718,0x1130c,0x1370c,0x113b8,0x189de,0x137b8,0x1139c, // 430 + 0x1379c,0x1138e,0x113de,0x137de,0x1dd40,0x1eeb0,0x1f75c,0x1dd20,0x1ee98,0x1f74e, // 440 + 0x1dd10,0x1ee8c,0x1dd08,0x1ee86,0x1dd04,0x19940,0x1ccb0,0x1e65c,0x1bb40,0x19920, // 450 + 0x1eedc,0x1e64e,0x1bb20,0x1dd98,0x1eece,0x1bb10,0x19908,0x1cc86,0x1bb08,0x1dd86, // 460 + 0x19902,0x11140,0x188b0,0x1c45c,0x13340,0x11120,0x18898,0x1c44e,0x17740,0x13320, // 470 + 0x19998,0x1ccce,0x17720,0x1bb98,0x1ddce,0x18886,0x17710,0x13308,0x19986,0x17708, // 480 + 0x11102,0x111b0,0x188dc,0x133b0,0x11198,0x188ce,0x177b0,0x13398,0x199ce,0x17798, // 490 + 0x1bbce,0x11186,0x13386,0x111dc,0x133dc,0x111ce,0x177dc,0x133ce,0x1dca0,0x1ee58, // 500 + 0x1f72e,0x1dc90,0x1ee4c,0x1dc88,0x1ee46,0x1dc84,0x1dc82,0x198a0,0x1cc58,0x1e62e, // 510 + 0x1b9a0,0x19890,0x1ee6e,0x1b990,0x1dccc,0x1cc46,0x1b988,0x19884,0x1b984,0x19882, // 520 + 0x1b982,0x110a0,0x18858,0x1c42e,0x131a0,0x11090,0x1884c,0x173a0,0x13190,0x198cc, // 530 + 0x18846,0x17390,0x1b9cc,0x11084,0x17388,0x13184,0x11082,0x13182,0x110d8,0x1886e, // 540 + 0x131d8,0x110cc,0x173d8,0x131cc,0x110c6,0x173cc,0x131c6,0x110ee,0x173ee,0x1dc50, // 550 + 0x1ee2c,0x1dc48,0x1ee26,0x1dc44,0x1dc42,0x19850,0x1cc2c,0x1b8d0,0x19848,0x1cc26, // 560 + 0x1b8c8,0x1dc66,0x1b8c4,0x19842,0x1b8c2,0x11050,0x1882c,0x130d0,0x11048,0x18826, // 570 + 0x171d0,0x130c8,0x19866,0x171c8,0x1b8e6,0x11042,0x171c4,0x130c2,0x171c2,0x130ec, // 580 + 0x171ec,0x171e6,0x1ee16,0x1dc22,0x1cc16,0x19824,0x19822,0x11028,0x13068,0x170e8, // 590 + 0x11022,0x13062,0x18560,0x10a40,0x18530,0x10a20,0x18518,0x1c28e,0x10a10,0x1850c, // 600 + 0x10a08,0x18506,0x10b60,0x185b8,0x1c2de,0x10b30,0x1859c,0x10b18,0x1858e,0x10b0c, // 610 + 0x10b06,0x10bb8,0x185de,0x10b9c,0x10b8e,0x10bde,0x18d40,0x1c6b0,0x1e35c,0x18d20, // 620 + 0x1c698,0x18d10,0x1c68c,0x18d08,0x1c686,0x18d04,0x10940,0x184b0,0x1c25c,0x11b40, // 630 + 0x10920,0x1c6dc,0x1c24e,0x11b20,0x18d98,0x1c6ce,0x11b10,0x10908,0x18486,0x11b08, // 640 + 0x18d86,0x10902,0x109b0,0x184dc,0x11bb0,0x10998,0x184ce,0x11b98,0x18dce,0x11b8c, // 650 + 0x10986,0x109dc,0x11bdc,0x109ce,0x11bce,0x1cea0,0x1e758,0x1f3ae,0x1ce90,0x1e74c, // 660 + 0x1ce88,0x1e746,0x1ce84,0x1ce82,0x18ca0,0x1c658,0x19da0,0x18c90,0x1c64c,0x19d90, // 670 + 0x1cecc,0x1c646,0x19d88,0x18c84,0x19d84,0x18c82,0x19d82,0x108a0,0x18458,0x119a0, // 680 + 0x10890,0x1c66e,0x13ba0,0x11990,0x18ccc,0x18446,0x13b90,0x19dcc,0x10884,0x13b88, // 690 + 0x11984,0x10882,0x11982,0x108d8,0x1846e,0x119d8,0x108cc,0x13bd8,0x119cc,0x108c6, // 700 + 0x13bcc,0x119c6,0x108ee,0x119ee,0x13bee,0x1ef50,0x1f7ac,0x1ef48,0x1f7a6,0x1ef44, // 710 + 0x1ef42,0x1ce50,0x1e72c,0x1ded0,0x1ef6c,0x1e726,0x1dec8,0x1ef66,0x1dec4,0x1ce42, // 720 + 0x1dec2,0x18c50,0x1c62c,0x19cd0,0x18c48,0x1c626,0x1bdd0,0x19cc8,0x1ce66,0x1bdc8, // 730 + 0x1dee6,0x18c42,0x1bdc4,0x19cc2,0x1bdc2,0x10850,0x1842c,0x118d0,0x10848,0x18426, // 740 + 0x139d0,0x118c8,0x18c66,0x17bd0,0x139c8,0x19ce6,0x10842,0x17bc8,0x1bde6,0x118c2, // 750 + 0x17bc4,0x1086c,0x118ec,0x10866,0x139ec,0x118e6,0x17bec,0x139e6,0x17be6,0x1ef28, // 760 + 0x1f796,0x1ef24,0x1ef22,0x1ce28,0x1e716,0x1de68,0x1ef36,0x1de64,0x1ce22,0x1de62, // 770 + 0x18c28,0x1c616,0x19c68,0x18c24,0x1bce8,0x19c64,0x18c22,0x1bce4,0x19c62,0x1bce2, // 780 + 0x10828,0x18416,0x11868,0x18c36,0x138e8,0x11864,0x10822,0x179e8,0x138e4,0x11862, // 790 + 0x179e4,0x138e2,0x179e2,0x11876,0x179f6,0x1ef12,0x1de34,0x1de32,0x19c34,0x1bc74, // 800 + 0x1bc72,0x11834,0x13874,0x178f4,0x178f2,0x10540,0x10520,0x18298,0x10510,0x10508, // 810 + 0x10504,0x105b0,0x10598,0x1058c,0x10586,0x105dc,0x105ce,0x186a0,0x18690,0x1c34c, // 820 + 0x18688,0x1c346,0x18684,0x18682,0x104a0,0x18258,0x10da0,0x186d8,0x1824c,0x10d90, // 830 + 0x186cc,0x10d88,0x186c6,0x10d84,0x10482,0x10d82,0x104d8,0x1826e,0x10dd8,0x186ee, // 840 + 0x10dcc,0x104c6,0x10dc6,0x104ee,0x10dee,0x1c750,0x1c748,0x1c744,0x1c742,0x18650, // 850 + 0x18ed0,0x1c76c,0x1c326,0x18ec8,0x1c766,0x18ec4,0x18642,0x18ec2,0x10450,0x10cd0, // 860 + 0x10448,0x18226,0x11dd0,0x10cc8,0x10444,0x11dc8,0x10cc4,0x10442,0x11dc4,0x10cc2, // 870 + 0x1046c,0x10cec,0x10466,0x11dec,0x10ce6,0x11de6,0x1e7a8,0x1e7a4,0x1e7a2,0x1c728, // 880 + 0x1cf68,0x1e7b6,0x1cf64,0x1c722,0x1cf62,0x18628,0x1c316,0x18e68,0x1c736,0x19ee8, // 890 + 0x18e64,0x18622,0x19ee4,0x18e62,0x19ee2,0x10428,0x18216,0x10c68,0x18636,0x11ce8, // 900 + 0x10c64,0x10422,0x13de8,0x11ce4,0x10c62,0x13de4,0x11ce2,0x10436,0x10c76,0x11cf6, // 910 + 0x13df6,0x1f7d4,0x1f7d2,0x1e794,0x1efb4,0x1e792,0x1efb2,0x1c714,0x1cf34,0x1c712, // 920 + 0x1df74,0x1cf32,0x1df72,0x18614,0x18e34,0x18612,0x19e74,0x18e32,0x1bef4), // 929 + array( // cluster 3 ----------------------------------------------------------------------- + 0x1f560,0x1fab8,0x1ea40,0x1f530,0x1fa9c,0x1ea20,0x1f518,0x1fa8e,0x1ea10,0x1f50c, // 10 + 0x1ea08,0x1f506,0x1ea04,0x1eb60,0x1f5b8,0x1fade,0x1d640,0x1eb30,0x1f59c,0x1d620, // 20 + 0x1eb18,0x1f58e,0x1d610,0x1eb0c,0x1d608,0x1eb06,0x1d604,0x1d760,0x1ebb8,0x1f5de, // 30 + 0x1ae40,0x1d730,0x1eb9c,0x1ae20,0x1d718,0x1eb8e,0x1ae10,0x1d70c,0x1ae08,0x1d706, // 40 + 0x1ae04,0x1af60,0x1d7b8,0x1ebde,0x15e40,0x1af30,0x1d79c,0x15e20,0x1af18,0x1d78e, // 50 + 0x15e10,0x1af0c,0x15e08,0x1af06,0x15f60,0x1afb8,0x1d7de,0x15f30,0x1af9c,0x15f18, // 60 + 0x1af8e,0x15f0c,0x15fb8,0x1afde,0x15f9c,0x15f8e,0x1e940,0x1f4b0,0x1fa5c,0x1e920, // 70 + 0x1f498,0x1fa4e,0x1e910,0x1f48c,0x1e908,0x1f486,0x1e904,0x1e902,0x1d340,0x1e9b0, // 80 + 0x1f4dc,0x1d320,0x1e998,0x1f4ce,0x1d310,0x1e98c,0x1d308,0x1e986,0x1d304,0x1d302, // 90 + 0x1a740,0x1d3b0,0x1e9dc,0x1a720,0x1d398,0x1e9ce,0x1a710,0x1d38c,0x1a708,0x1d386, // 100 + 0x1a704,0x1a702,0x14f40,0x1a7b0,0x1d3dc,0x14f20,0x1a798,0x1d3ce,0x14f10,0x1a78c, // 110 + 0x14f08,0x1a786,0x14f04,0x14fb0,0x1a7dc,0x14f98,0x1a7ce,0x14f8c,0x14f86,0x14fdc, // 120 + 0x14fce,0x1e8a0,0x1f458,0x1fa2e,0x1e890,0x1f44c,0x1e888,0x1f446,0x1e884,0x1e882, // 130 + 0x1d1a0,0x1e8d8,0x1f46e,0x1d190,0x1e8cc,0x1d188,0x1e8c6,0x1d184,0x1d182,0x1a3a0, // 140 + 0x1d1d8,0x1e8ee,0x1a390,0x1d1cc,0x1a388,0x1d1c6,0x1a384,0x1a382,0x147a0,0x1a3d8, // 150 + 0x1d1ee,0x14790,0x1a3cc,0x14788,0x1a3c6,0x14784,0x14782,0x147d8,0x1a3ee,0x147cc, // 160 + 0x147c6,0x147ee,0x1e850,0x1f42c,0x1e848,0x1f426,0x1e844,0x1e842,0x1d0d0,0x1e86c, // 170 + 0x1d0c8,0x1e866,0x1d0c4,0x1d0c2,0x1a1d0,0x1d0ec,0x1a1c8,0x1d0e6,0x1a1c4,0x1a1c2, // 180 + 0x143d0,0x1a1ec,0x143c8,0x1a1e6,0x143c4,0x143c2,0x143ec,0x143e6,0x1e828,0x1f416, // 190 + 0x1e824,0x1e822,0x1d068,0x1e836,0x1d064,0x1d062,0x1a0e8,0x1d076,0x1a0e4,0x1a0e2, // 200 + 0x141e8,0x1a0f6,0x141e4,0x141e2,0x1e814,0x1e812,0x1d034,0x1d032,0x1a074,0x1a072, // 210 + 0x1e540,0x1f2b0,0x1f95c,0x1e520,0x1f298,0x1f94e,0x1e510,0x1f28c,0x1e508,0x1f286, // 220 + 0x1e504,0x1e502,0x1cb40,0x1e5b0,0x1f2dc,0x1cb20,0x1e598,0x1f2ce,0x1cb10,0x1e58c, // 230 + 0x1cb08,0x1e586,0x1cb04,0x1cb02,0x19740,0x1cbb0,0x1e5dc,0x19720,0x1cb98,0x1e5ce, // 240 + 0x19710,0x1cb8c,0x19708,0x1cb86,0x19704,0x19702,0x12f40,0x197b0,0x1cbdc,0x12f20, // 250 + 0x19798,0x1cbce,0x12f10,0x1978c,0x12f08,0x19786,0x12f04,0x12fb0,0x197dc,0x12f98, // 260 + 0x197ce,0x12f8c,0x12f86,0x12fdc,0x12fce,0x1f6a0,0x1fb58,0x16bf0,0x1f690,0x1fb4c, // 270 + 0x169f8,0x1f688,0x1fb46,0x168fc,0x1f684,0x1f682,0x1e4a0,0x1f258,0x1f92e,0x1eda0, // 280 + 0x1e490,0x1fb6e,0x1ed90,0x1f6cc,0x1f246,0x1ed88,0x1e484,0x1ed84,0x1e482,0x1ed82, // 290 + 0x1c9a0,0x1e4d8,0x1f26e,0x1dba0,0x1c990,0x1e4cc,0x1db90,0x1edcc,0x1e4c6,0x1db88, // 300 + 0x1c984,0x1db84,0x1c982,0x1db82,0x193a0,0x1c9d8,0x1e4ee,0x1b7a0,0x19390,0x1c9cc, // 310 + 0x1b790,0x1dbcc,0x1c9c6,0x1b788,0x19384,0x1b784,0x19382,0x1b782,0x127a0,0x193d8, // 320 + 0x1c9ee,0x16fa0,0x12790,0x193cc,0x16f90,0x1b7cc,0x193c6,0x16f88,0x12784,0x16f84, // 330 + 0x12782,0x127d8,0x193ee,0x16fd8,0x127cc,0x16fcc,0x127c6,0x16fc6,0x127ee,0x1f650, // 340 + 0x1fb2c,0x165f8,0x1f648,0x1fb26,0x164fc,0x1f644,0x1647e,0x1f642,0x1e450,0x1f22c, // 350 + 0x1ecd0,0x1e448,0x1f226,0x1ecc8,0x1f666,0x1ecc4,0x1e442,0x1ecc2,0x1c8d0,0x1e46c, // 360 + 0x1d9d0,0x1c8c8,0x1e466,0x1d9c8,0x1ece6,0x1d9c4,0x1c8c2,0x1d9c2,0x191d0,0x1c8ec, // 370 + 0x1b3d0,0x191c8,0x1c8e6,0x1b3c8,0x1d9e6,0x1b3c4,0x191c2,0x1b3c2,0x123d0,0x191ec, // 380 + 0x167d0,0x123c8,0x191e6,0x167c8,0x1b3e6,0x167c4,0x123c2,0x167c2,0x123ec,0x167ec, // 390 + 0x123e6,0x167e6,0x1f628,0x1fb16,0x162fc,0x1f624,0x1627e,0x1f622,0x1e428,0x1f216, // 400 + 0x1ec68,0x1f636,0x1ec64,0x1e422,0x1ec62,0x1c868,0x1e436,0x1d8e8,0x1c864,0x1d8e4, // 410 + 0x1c862,0x1d8e2,0x190e8,0x1c876,0x1b1e8,0x1d8f6,0x1b1e4,0x190e2,0x1b1e2,0x121e8, // 420 + 0x190f6,0x163e8,0x121e4,0x163e4,0x121e2,0x163e2,0x121f6,0x163f6,0x1f614,0x1617e, // 430 + 0x1f612,0x1e414,0x1ec34,0x1e412,0x1ec32,0x1c834,0x1d874,0x1c832,0x1d872,0x19074, // 440 + 0x1b0f4,0x19072,0x1b0f2,0x120f4,0x161f4,0x120f2,0x161f2,0x1f60a,0x1e40a,0x1ec1a, // 450 + 0x1c81a,0x1d83a,0x1903a,0x1b07a,0x1e2a0,0x1f158,0x1f8ae,0x1e290,0x1f14c,0x1e288, // 460 + 0x1f146,0x1e284,0x1e282,0x1c5a0,0x1e2d8,0x1f16e,0x1c590,0x1e2cc,0x1c588,0x1e2c6, // 470 + 0x1c584,0x1c582,0x18ba0,0x1c5d8,0x1e2ee,0x18b90,0x1c5cc,0x18b88,0x1c5c6,0x18b84, // 480 + 0x18b82,0x117a0,0x18bd8,0x1c5ee,0x11790,0x18bcc,0x11788,0x18bc6,0x11784,0x11782, // 490 + 0x117d8,0x18bee,0x117cc,0x117c6,0x117ee,0x1f350,0x1f9ac,0x135f8,0x1f348,0x1f9a6, // 500 + 0x134fc,0x1f344,0x1347e,0x1f342,0x1e250,0x1f12c,0x1e6d0,0x1e248,0x1f126,0x1e6c8, // 510 + 0x1f366,0x1e6c4,0x1e242,0x1e6c2,0x1c4d0,0x1e26c,0x1cdd0,0x1c4c8,0x1e266,0x1cdc8, // 520 + 0x1e6e6,0x1cdc4,0x1c4c2,0x1cdc2,0x189d0,0x1c4ec,0x19bd0,0x189c8,0x1c4e6,0x19bc8, // 530 + 0x1cde6,0x19bc4,0x189c2,0x19bc2,0x113d0,0x189ec,0x137d0,0x113c8,0x189e6,0x137c8, // 540 + 0x19be6,0x137c4,0x113c2,0x137c2,0x113ec,0x137ec,0x113e6,0x137e6,0x1fba8,0x175f0, // 550 + 0x1bafc,0x1fba4,0x174f8,0x1ba7e,0x1fba2,0x1747c,0x1743e,0x1f328,0x1f996,0x132fc, // 560 + 0x1f768,0x1fbb6,0x176fc,0x1327e,0x1f764,0x1f322,0x1767e,0x1f762,0x1e228,0x1f116, // 570 + 0x1e668,0x1e224,0x1eee8,0x1f776,0x1e222,0x1eee4,0x1e662,0x1eee2,0x1c468,0x1e236, // 580 + 0x1cce8,0x1c464,0x1dde8,0x1cce4,0x1c462,0x1dde4,0x1cce2,0x1dde2,0x188e8,0x1c476, // 590 + 0x199e8,0x188e4,0x1bbe8,0x199e4,0x188e2,0x1bbe4,0x199e2,0x1bbe2,0x111e8,0x188f6, // 600 + 0x133e8,0x111e4,0x177e8,0x133e4,0x111e2,0x177e4,0x133e2,0x177e2,0x111f6,0x133f6, // 610 + 0x1fb94,0x172f8,0x1b97e,0x1fb92,0x1727c,0x1723e,0x1f314,0x1317e,0x1f734,0x1f312, // 620 + 0x1737e,0x1f732,0x1e214,0x1e634,0x1e212,0x1ee74,0x1e632,0x1ee72,0x1c434,0x1cc74, // 630 + 0x1c432,0x1dcf4,0x1cc72,0x1dcf2,0x18874,0x198f4,0x18872,0x1b9f4,0x198f2,0x1b9f2, // 640 + 0x110f4,0x131f4,0x110f2,0x173f4,0x131f2,0x173f2,0x1fb8a,0x1717c,0x1713e,0x1f30a, // 650 + 0x1f71a,0x1e20a,0x1e61a,0x1ee3a,0x1c41a,0x1cc3a,0x1dc7a,0x1883a,0x1987a,0x1b8fa, // 660 + 0x1107a,0x130fa,0x171fa,0x170be,0x1e150,0x1f0ac,0x1e148,0x1f0a6,0x1e144,0x1e142, // 670 + 0x1c2d0,0x1e16c,0x1c2c8,0x1e166,0x1c2c4,0x1c2c2,0x185d0,0x1c2ec,0x185c8,0x1c2e6, // 680 + 0x185c4,0x185c2,0x10bd0,0x185ec,0x10bc8,0x185e6,0x10bc4,0x10bc2,0x10bec,0x10be6, // 690 + 0x1f1a8,0x1f8d6,0x11afc,0x1f1a4,0x11a7e,0x1f1a2,0x1e128,0x1f096,0x1e368,0x1e124, // 700 + 0x1e364,0x1e122,0x1e362,0x1c268,0x1e136,0x1c6e8,0x1c264,0x1c6e4,0x1c262,0x1c6e2, // 710 + 0x184e8,0x1c276,0x18de8,0x184e4,0x18de4,0x184e2,0x18de2,0x109e8,0x184f6,0x11be8, // 720 + 0x109e4,0x11be4,0x109e2,0x11be2,0x109f6,0x11bf6,0x1f9d4,0x13af8,0x19d7e,0x1f9d2, // 730 + 0x13a7c,0x13a3e,0x1f194,0x1197e,0x1f3b4,0x1f192,0x13b7e,0x1f3b2,0x1e114,0x1e334, // 740 + 0x1e112,0x1e774,0x1e332,0x1e772,0x1c234,0x1c674,0x1c232,0x1cef4,0x1c672,0x1cef2, // 750 + 0x18474,0x18cf4,0x18472,0x19df4,0x18cf2,0x19df2,0x108f4,0x119f4,0x108f2,0x13bf4, // 760 + 0x119f2,0x13bf2,0x17af0,0x1bd7c,0x17a78,0x1bd3e,0x17a3c,0x17a1e,0x1f9ca,0x1397c, // 770 + 0x1fbda,0x17b7c,0x1393e,0x17b3e,0x1f18a,0x1f39a,0x1f7ba,0x1e10a,0x1e31a,0x1e73a, // 780 + 0x1ef7a,0x1c21a,0x1c63a,0x1ce7a,0x1defa,0x1843a,0x18c7a,0x19cfa,0x1bdfa,0x1087a, // 790 + 0x118fa,0x139fa,0x17978,0x1bcbe,0x1793c,0x1791e,0x138be,0x179be,0x178bc,0x1789e, // 800 + 0x1785e,0x1e0a8,0x1e0a4,0x1e0a2,0x1c168,0x1e0b6,0x1c164,0x1c162,0x182e8,0x1c176, // 810 + 0x182e4,0x182e2,0x105e8,0x182f6,0x105e4,0x105e2,0x105f6,0x1f0d4,0x10d7e,0x1f0d2, // 820 + 0x1e094,0x1e1b4,0x1e092,0x1e1b2,0x1c134,0x1c374,0x1c132,0x1c372,0x18274,0x186f4, // 830 + 0x18272,0x186f2,0x104f4,0x10df4,0x104f2,0x10df2,0x1f8ea,0x11d7c,0x11d3e,0x1f0ca, // 840 + 0x1f1da,0x1e08a,0x1e19a,0x1e3ba,0x1c11a,0x1c33a,0x1c77a,0x1823a,0x1867a,0x18efa, // 850 + 0x1047a,0x10cfa,0x11dfa,0x13d78,0x19ebe,0x13d3c,0x13d1e,0x11cbe,0x13dbe,0x17d70, // 860 + 0x1bebc,0x17d38,0x1be9e,0x17d1c,0x17d0e,0x13cbc,0x17dbc,0x13c9e,0x17d9e,0x17cb8, // 870 + 0x1be5e,0x17c9c,0x17c8e,0x13c5e,0x17cde,0x17c5c,0x17c4e,0x17c2e,0x1c0b4,0x1c0b2, // 880 + 0x18174,0x18172,0x102f4,0x102f2,0x1e0da,0x1c09a,0x1c1ba,0x1813a,0x1837a,0x1027a, // 890 + 0x106fa,0x10ebe,0x11ebc,0x11e9e,0x13eb8,0x19f5e,0x13e9c,0x13e8e,0x11e5e,0x13ede, // 900 + 0x17eb0,0x1bf5c,0x17e98,0x1bf4e,0x17e8c,0x17e86,0x13e5c,0x17edc,0x13e4e,0x17ece, // 910 + 0x17e58,0x1bf2e,0x17e4c,0x17e46,0x13e2e,0x17e6e,0x17e2c,0x17e26,0x10f5e,0x11f5c, // 920 + 0x11f4e,0x13f58,0x19fae,0x13f4c,0x13f46,0x11f2e,0x13f6e,0x13f2c,0x13f26), // 929 + array( // cluster 6 ----------------------------------------------------------------------- + 0x1abe0,0x1d5f8,0x153c0,0x1a9f0,0x1d4fc,0x151e0,0x1a8f8,0x1d47e,0x150f0,0x1a87c, // 10 + 0x15078,0x1fad0,0x15be0,0x1adf8,0x1fac8,0x159f0,0x1acfc,0x1fac4,0x158f8,0x1ac7e, // 20 + 0x1fac2,0x1587c,0x1f5d0,0x1faec,0x15df8,0x1f5c8,0x1fae6,0x15cfc,0x1f5c4,0x15c7e, // 30 + 0x1f5c2,0x1ebd0,0x1f5ec,0x1ebc8,0x1f5e6,0x1ebc4,0x1ebc2,0x1d7d0,0x1ebec,0x1d7c8, // 40 + 0x1ebe6,0x1d7c4,0x1d7c2,0x1afd0,0x1d7ec,0x1afc8,0x1d7e6,0x1afc4,0x14bc0,0x1a5f0, // 50 + 0x1d2fc,0x149e0,0x1a4f8,0x1d27e,0x148f0,0x1a47c,0x14878,0x1a43e,0x1483c,0x1fa68, // 60 + 0x14df0,0x1a6fc,0x1fa64,0x14cf8,0x1a67e,0x1fa62,0x14c7c,0x14c3e,0x1f4e8,0x1fa76, // 70 + 0x14efc,0x1f4e4,0x14e7e,0x1f4e2,0x1e9e8,0x1f4f6,0x1e9e4,0x1e9e2,0x1d3e8,0x1e9f6, // 80 + 0x1d3e4,0x1d3e2,0x1a7e8,0x1d3f6,0x1a7e4,0x1a7e2,0x145e0,0x1a2f8,0x1d17e,0x144f0, // 90 + 0x1a27c,0x14478,0x1a23e,0x1443c,0x1441e,0x1fa34,0x146f8,0x1a37e,0x1fa32,0x1467c, // 100 + 0x1463e,0x1f474,0x1477e,0x1f472,0x1e8f4,0x1e8f2,0x1d1f4,0x1d1f2,0x1a3f4,0x1a3f2, // 110 + 0x142f0,0x1a17c,0x14278,0x1a13e,0x1423c,0x1421e,0x1fa1a,0x1437c,0x1433e,0x1f43a, // 120 + 0x1e87a,0x1d0fa,0x14178,0x1a0be,0x1413c,0x1411e,0x141be,0x140bc,0x1409e,0x12bc0, // 130 + 0x195f0,0x1cafc,0x129e0,0x194f8,0x1ca7e,0x128f0,0x1947c,0x12878,0x1943e,0x1283c, // 140 + 0x1f968,0x12df0,0x196fc,0x1f964,0x12cf8,0x1967e,0x1f962,0x12c7c,0x12c3e,0x1f2e8, // 150 + 0x1f976,0x12efc,0x1f2e4,0x12e7e,0x1f2e2,0x1e5e8,0x1f2f6,0x1e5e4,0x1e5e2,0x1cbe8, // 160 + 0x1e5f6,0x1cbe4,0x1cbe2,0x197e8,0x1cbf6,0x197e4,0x197e2,0x1b5e0,0x1daf8,0x1ed7e, // 170 + 0x169c0,0x1b4f0,0x1da7c,0x168e0,0x1b478,0x1da3e,0x16870,0x1b43c,0x16838,0x1b41e, // 180 + 0x1681c,0x125e0,0x192f8,0x1c97e,0x16de0,0x124f0,0x1927c,0x16cf0,0x1b67c,0x1923e, // 190 + 0x16c78,0x1243c,0x16c3c,0x1241e,0x16c1e,0x1f934,0x126f8,0x1937e,0x1fb74,0x1f932, // 200 + 0x16ef8,0x1267c,0x1fb72,0x16e7c,0x1263e,0x16e3e,0x1f274,0x1277e,0x1f6f4,0x1f272, // 210 + 0x16f7e,0x1f6f2,0x1e4f4,0x1edf4,0x1e4f2,0x1edf2,0x1c9f4,0x1dbf4,0x1c9f2,0x1dbf2, // 220 + 0x193f4,0x193f2,0x165c0,0x1b2f0,0x1d97c,0x164e0,0x1b278,0x1d93e,0x16470,0x1b23c, // 230 + 0x16438,0x1b21e,0x1641c,0x1640e,0x122f0,0x1917c,0x166f0,0x12278,0x1913e,0x16678, // 240 + 0x1b33e,0x1663c,0x1221e,0x1661e,0x1f91a,0x1237c,0x1fb3a,0x1677c,0x1233e,0x1673e, // 250 + 0x1f23a,0x1f67a,0x1e47a,0x1ecfa,0x1c8fa,0x1d9fa,0x191fa,0x162e0,0x1b178,0x1d8be, // 260 + 0x16270,0x1b13c,0x16238,0x1b11e,0x1621c,0x1620e,0x12178,0x190be,0x16378,0x1213c, // 270 + 0x1633c,0x1211e,0x1631e,0x121be,0x163be,0x16170,0x1b0bc,0x16138,0x1b09e,0x1611c, // 280 + 0x1610e,0x120bc,0x161bc,0x1209e,0x1619e,0x160b8,0x1b05e,0x1609c,0x1608e,0x1205e, // 290 + 0x160de,0x1605c,0x1604e,0x115e0,0x18af8,0x1c57e,0x114f0,0x18a7c,0x11478,0x18a3e, // 300 + 0x1143c,0x1141e,0x1f8b4,0x116f8,0x18b7e,0x1f8b2,0x1167c,0x1163e,0x1f174,0x1177e, // 310 + 0x1f172,0x1e2f4,0x1e2f2,0x1c5f4,0x1c5f2,0x18bf4,0x18bf2,0x135c0,0x19af0,0x1cd7c, // 320 + 0x134e0,0x19a78,0x1cd3e,0x13470,0x19a3c,0x13438,0x19a1e,0x1341c,0x1340e,0x112f0, // 330 + 0x1897c,0x136f0,0x11278,0x1893e,0x13678,0x19b3e,0x1363c,0x1121e,0x1361e,0x1f89a, // 340 + 0x1137c,0x1f9ba,0x1377c,0x1133e,0x1373e,0x1f13a,0x1f37a,0x1e27a,0x1e6fa,0x1c4fa, // 350 + 0x1cdfa,0x189fa,0x1bae0,0x1dd78,0x1eebe,0x174c0,0x1ba70,0x1dd3c,0x17460,0x1ba38, // 360 + 0x1dd1e,0x17430,0x1ba1c,0x17418,0x1ba0e,0x1740c,0x132e0,0x19978,0x1ccbe,0x176e0, // 370 + 0x13270,0x1993c,0x17670,0x1bb3c,0x1991e,0x17638,0x1321c,0x1761c,0x1320e,0x1760e, // 380 + 0x11178,0x188be,0x13378,0x1113c,0x17778,0x1333c,0x1111e,0x1773c,0x1331e,0x1771e, // 390 + 0x111be,0x133be,0x177be,0x172c0,0x1b970,0x1dcbc,0x17260,0x1b938,0x1dc9e,0x17230, // 400 + 0x1b91c,0x17218,0x1b90e,0x1720c,0x17206,0x13170,0x198bc,0x17370,0x13138,0x1989e, // 410 + 0x17338,0x1b99e,0x1731c,0x1310e,0x1730e,0x110bc,0x131bc,0x1109e,0x173bc,0x1319e, // 420 + 0x1739e,0x17160,0x1b8b8,0x1dc5e,0x17130,0x1b89c,0x17118,0x1b88e,0x1710c,0x17106, // 430 + 0x130b8,0x1985e,0x171b8,0x1309c,0x1719c,0x1308e,0x1718e,0x1105e,0x130de,0x171de, // 440 + 0x170b0,0x1b85c,0x17098,0x1b84e,0x1708c,0x17086,0x1305c,0x170dc,0x1304e,0x170ce, // 450 + 0x17058,0x1b82e,0x1704c,0x17046,0x1302e,0x1706e,0x1702c,0x17026,0x10af0,0x1857c, // 460 + 0x10a78,0x1853e,0x10a3c,0x10a1e,0x10b7c,0x10b3e,0x1f0ba,0x1e17a,0x1c2fa,0x185fa, // 470 + 0x11ae0,0x18d78,0x1c6be,0x11a70,0x18d3c,0x11a38,0x18d1e,0x11a1c,0x11a0e,0x10978, // 480 + 0x184be,0x11b78,0x1093c,0x11b3c,0x1091e,0x11b1e,0x109be,0x11bbe,0x13ac0,0x19d70, // 490 + 0x1cebc,0x13a60,0x19d38,0x1ce9e,0x13a30,0x19d1c,0x13a18,0x19d0e,0x13a0c,0x13a06, // 500 + 0x11970,0x18cbc,0x13b70,0x11938,0x18c9e,0x13b38,0x1191c,0x13b1c,0x1190e,0x13b0e, // 510 + 0x108bc,0x119bc,0x1089e,0x13bbc,0x1199e,0x13b9e,0x1bd60,0x1deb8,0x1ef5e,0x17a40, // 520 + 0x1bd30,0x1de9c,0x17a20,0x1bd18,0x1de8e,0x17a10,0x1bd0c,0x17a08,0x1bd06,0x17a04, // 530 + 0x13960,0x19cb8,0x1ce5e,0x17b60,0x13930,0x19c9c,0x17b30,0x1bd9c,0x19c8e,0x17b18, // 540 + 0x1390c,0x17b0c,0x13906,0x17b06,0x118b8,0x18c5e,0x139b8,0x1189c,0x17bb8,0x1399c, // 550 + 0x1188e,0x17b9c,0x1398e,0x17b8e,0x1085e,0x118de,0x139de,0x17bde,0x17940,0x1bcb0, // 560 + 0x1de5c,0x17920,0x1bc98,0x1de4e,0x17910,0x1bc8c,0x17908,0x1bc86,0x17904,0x17902, // 570 + 0x138b0,0x19c5c,0x179b0,0x13898,0x19c4e,0x17998,0x1bcce,0x1798c,0x13886,0x17986, // 580 + 0x1185c,0x138dc,0x1184e,0x179dc,0x138ce,0x179ce,0x178a0,0x1bc58,0x1de2e,0x17890, // 590 + 0x1bc4c,0x17888,0x1bc46,0x17884,0x17882,0x13858,0x19c2e,0x178d8,0x1384c,0x178cc, // 600 + 0x13846,0x178c6,0x1182e,0x1386e,0x178ee,0x17850,0x1bc2c,0x17848,0x1bc26,0x17844, // 610 + 0x17842,0x1382c,0x1786c,0x13826,0x17866,0x17828,0x1bc16,0x17824,0x17822,0x13816, // 620 + 0x17836,0x10578,0x182be,0x1053c,0x1051e,0x105be,0x10d70,0x186bc,0x10d38,0x1869e, // 630 + 0x10d1c,0x10d0e,0x104bc,0x10dbc,0x1049e,0x10d9e,0x11d60,0x18eb8,0x1c75e,0x11d30, // 640 + 0x18e9c,0x11d18,0x18e8e,0x11d0c,0x11d06,0x10cb8,0x1865e,0x11db8,0x10c9c,0x11d9c, // 650 + 0x10c8e,0x11d8e,0x1045e,0x10cde,0x11dde,0x13d40,0x19eb0,0x1cf5c,0x13d20,0x19e98, // 660 + 0x1cf4e,0x13d10,0x19e8c,0x13d08,0x19e86,0x13d04,0x13d02,0x11cb0,0x18e5c,0x13db0, // 670 + 0x11c98,0x18e4e,0x13d98,0x19ece,0x13d8c,0x11c86,0x13d86,0x10c5c,0x11cdc,0x10c4e, // 680 + 0x13ddc,0x11cce,0x13dce,0x1bea0,0x1df58,0x1efae,0x1be90,0x1df4c,0x1be88,0x1df46, // 690 + 0x1be84,0x1be82,0x13ca0,0x19e58,0x1cf2e,0x17da0,0x13c90,0x19e4c,0x17d90,0x1becc, // 700 + 0x19e46,0x17d88,0x13c84,0x17d84,0x13c82,0x17d82,0x11c58,0x18e2e,0x13cd8,0x11c4c, // 710 + 0x17dd8,0x13ccc,0x11c46,0x17dcc,0x13cc6,0x17dc6,0x10c2e,0x11c6e,0x13cee,0x17dee, // 720 + 0x1be50,0x1df2c,0x1be48,0x1df26,0x1be44,0x1be42,0x13c50,0x19e2c,0x17cd0,0x13c48, // 730 + 0x19e26,0x17cc8,0x1be66,0x17cc4,0x13c42,0x17cc2,0x11c2c,0x13c6c,0x11c26,0x17cec, // 740 + 0x13c66,0x17ce6,0x1be28,0x1df16,0x1be24,0x1be22,0x13c28,0x19e16,0x17c68,0x13c24, // 750 + 0x17c64,0x13c22,0x17c62,0x11c16,0x13c36,0x17c76,0x1be14,0x1be12,0x13c14,0x17c34, // 760 + 0x13c12,0x17c32,0x102bc,0x1029e,0x106b8,0x1835e,0x1069c,0x1068e,0x1025e,0x106de, // 770 + 0x10eb0,0x1875c,0x10e98,0x1874e,0x10e8c,0x10e86,0x1065c,0x10edc,0x1064e,0x10ece, // 780 + 0x11ea0,0x18f58,0x1c7ae,0x11e90,0x18f4c,0x11e88,0x18f46,0x11e84,0x11e82,0x10e58, // 790 + 0x1872e,0x11ed8,0x18f6e,0x11ecc,0x10e46,0x11ec6,0x1062e,0x10e6e,0x11eee,0x19f50, // 800 + 0x1cfac,0x19f48,0x1cfa6,0x19f44,0x19f42,0x11e50,0x18f2c,0x13ed0,0x19f6c,0x18f26, // 810 + 0x13ec8,0x11e44,0x13ec4,0x11e42,0x13ec2,0x10e2c,0x11e6c,0x10e26,0x13eec,0x11e66, // 820 + 0x13ee6,0x1dfa8,0x1efd6,0x1dfa4,0x1dfa2,0x19f28,0x1cf96,0x1bf68,0x19f24,0x1bf64, // 830 + 0x19f22,0x1bf62,0x11e28,0x18f16,0x13e68,0x11e24,0x17ee8,0x13e64,0x11e22,0x17ee4, // 840 + 0x13e62,0x17ee2,0x10e16,0x11e36,0x13e76,0x17ef6,0x1df94,0x1df92,0x19f14,0x1bf34, // 850 + 0x19f12,0x1bf32,0x11e14,0x13e34,0x11e12,0x17e74,0x13e32,0x17e72,0x1df8a,0x19f0a, // 860 + 0x1bf1a,0x11e0a,0x13e1a,0x17e3a,0x1035c,0x1034e,0x10758,0x183ae,0x1074c,0x10746, // 870 + 0x1032e,0x1076e,0x10f50,0x187ac,0x10f48,0x187a6,0x10f44,0x10f42,0x1072c,0x10f6c, // 880 + 0x10726,0x10f66,0x18fa8,0x1c7d6,0x18fa4,0x18fa2,0x10f28,0x18796,0x11f68,0x18fb6, // 890 + 0x11f64,0x10f22,0x11f62,0x10716,0x10f36,0x11f76,0x1cfd4,0x1cfd2,0x18f94,0x19fb4, // 900 + 0x18f92,0x19fb2,0x10f14,0x11f34,0x10f12,0x13f74,0x11f32,0x13f72,0x1cfca,0x18f8a, // 910 + 0x19f9a,0x10f0a,0x11f1a,0x13f3a,0x103ac,0x103a6,0x107a8,0x183d6,0x107a4,0x107a2, // 920 + 0x10396,0x107b6,0x187d4,0x187d2,0x10794,0x10fb4,0x10792,0x10fb2,0x1c7ea) // 929 + ); // end of $clusters array + + /** + * Array of factors of the Reed-Solomon polynomial equations used for error correction; one sub array for each correction level (0-8). + * @protected + */ + protected $rsfactors = array( + array( // ECL 0 (2 factors) ------------------------------------------------------------------------------- + 0x01b,0x395), // 2 + array( // ECL 1 (4 factors) ------------------------------------------------------------------------------- + 0x20a,0x238,0x2d3,0x329), // 4 + array( // ECL 2 (8 factors) ------------------------------------------------------------------------------- + 0x0ed,0x134,0x1b4,0x11c,0x286,0x28d,0x1ac,0x17b), // 8 + array( // ECL 3 (16 factors) ------------------------------------------------------------------------------ + 0x112,0x232,0x0e8,0x2f3,0x257,0x20c,0x321,0x084,0x127,0x074,0x1ba,0x1ac,0x127,0x02a,0x0b0,0x041),// 16 + array( // ECL 4 (32 factors) ------------------------------------------------------------------------------ + 0x169,0x23f,0x39a,0x20d,0x0b0,0x24a,0x280,0x141,0x218,0x2e6,0x2a5,0x2e6,0x2af,0x11c,0x0c1,0x205, // 16 + 0x111,0x1ee,0x107,0x093,0x251,0x320,0x23b,0x140,0x323,0x085,0x0e7,0x186,0x2ad,0x14a,0x03f,0x19a),// 32 + array( // ECL 5 (64 factors) ------------------------------------------------------------------------------ + 0x21b,0x1a6,0x006,0x05d,0x35e,0x303,0x1c5,0x06a,0x262,0x11f,0x06b,0x1f9,0x2dd,0x36d,0x17d,0x264, // 16 + 0x2d3,0x1dc,0x1ce,0x0ac,0x1ae,0x261,0x35a,0x336,0x21f,0x178,0x1ff,0x190,0x2a0,0x2fa,0x11b,0x0b8, // 32 + 0x1b8,0x023,0x207,0x01f,0x1cc,0x252,0x0e1,0x217,0x205,0x160,0x25d,0x09e,0x28b,0x0c9,0x1e8,0x1f6, // 48 + 0x288,0x2dd,0x2cd,0x053,0x194,0x061,0x118,0x303,0x348,0x275,0x004,0x17d,0x34b,0x26f,0x108,0x21f),// 64 + array( // ECL 6 (128 factors) ----------------------------------------------------------------------------- + 0x209,0x136,0x360,0x223,0x35a,0x244,0x128,0x17b,0x035,0x30b,0x381,0x1bc,0x190,0x39d,0x2ed,0x19f, // 16 + 0x336,0x05d,0x0d9,0x0d0,0x3a0,0x0f4,0x247,0x26c,0x0f6,0x094,0x1bf,0x277,0x124,0x38c,0x1ea,0x2c0, // 32 + 0x204,0x102,0x1c9,0x38b,0x252,0x2d3,0x2a2,0x124,0x110,0x060,0x2ac,0x1b0,0x2ae,0x25e,0x35c,0x239, // 48 + 0x0c1,0x0db,0x081,0x0ba,0x0ec,0x11f,0x0c0,0x307,0x116,0x0ad,0x028,0x17b,0x2c8,0x1cf,0x286,0x308, // 64 + 0x0ab,0x1eb,0x129,0x2fb,0x09c,0x2dc,0x05f,0x10e,0x1bf,0x05a,0x1fb,0x030,0x0e4,0x335,0x328,0x382, // 80 + 0x310,0x297,0x273,0x17a,0x17e,0x106,0x17c,0x25a,0x2f2,0x150,0x059,0x266,0x057,0x1b0,0x29e,0x268, // 96 + 0x09d,0x176,0x0f2,0x2d6,0x258,0x10d,0x177,0x382,0x34d,0x1c6,0x162,0x082,0x32e,0x24b,0x324,0x022, // 112 + 0x0d3,0x14a,0x21b,0x129,0x33b,0x361,0x025,0x205,0x342,0x13b,0x226,0x056,0x321,0x004,0x06c,0x21b),// 128 + array( // ECL 7 (256 factors) ----------------------------------------------------------------------------- + 0x20c,0x37e,0x04b,0x2fe,0x372,0x359,0x04a,0x0cc,0x052,0x24a,0x2c4,0x0fa,0x389,0x312,0x08a,0x2d0, // 16 + 0x35a,0x0c2,0x137,0x391,0x113,0x0be,0x177,0x352,0x1b6,0x2dd,0x0c2,0x118,0x0c9,0x118,0x33c,0x2f5, // 32 + 0x2c6,0x32e,0x397,0x059,0x044,0x239,0x00b,0x0cc,0x31c,0x25d,0x21c,0x391,0x321,0x2bc,0x31f,0x089, // 48 + 0x1b7,0x1a2,0x250,0x29c,0x161,0x35b,0x172,0x2b6,0x145,0x0f0,0x0d8,0x101,0x11c,0x225,0x0d1,0x374, // 64 + 0x13b,0x046,0x149,0x319,0x1ea,0x112,0x36d,0x0a2,0x2ed,0x32c,0x2ac,0x1cd,0x14e,0x178,0x351,0x209, // 80 + 0x133,0x123,0x323,0x2c8,0x013,0x166,0x18f,0x38c,0x067,0x1ff,0x033,0x008,0x205,0x0e1,0x121,0x1d6, // 96 + 0x27d,0x2db,0x042,0x0ff,0x395,0x10d,0x1cf,0x33e,0x2da,0x1b1,0x350,0x249,0x088,0x21a,0x38a,0x05a, // 112 + 0x002,0x122,0x2e7,0x0c7,0x28f,0x387,0x149,0x031,0x322,0x244,0x163,0x24c,0x0bc,0x1ce,0x00a,0x086, // 128 + 0x274,0x140,0x1df,0x082,0x2e3,0x047,0x107,0x13e,0x176,0x259,0x0c0,0x25d,0x08e,0x2a1,0x2af,0x0ea, // 144 + 0x2d2,0x180,0x0b1,0x2f0,0x25f,0x280,0x1c7,0x0c1,0x2b1,0x2c3,0x325,0x281,0x030,0x03c,0x2dc,0x26d, // 160 + 0x37f,0x220,0x105,0x354,0x28f,0x135,0x2b9,0x2f3,0x2f4,0x03c,0x0e7,0x305,0x1b2,0x1a5,0x2d6,0x210, // 176 + 0x1f7,0x076,0x031,0x31b,0x020,0x090,0x1f4,0x0ee,0x344,0x18a,0x118,0x236,0x13f,0x009,0x287,0x226, // 192 + 0x049,0x392,0x156,0x07e,0x020,0x2a9,0x14b,0x318,0x26c,0x03c,0x261,0x1b9,0x0b4,0x317,0x37d,0x2f2, // 208 + 0x25d,0x17f,0x0e4,0x2ed,0x2f8,0x0d5,0x036,0x129,0x086,0x036,0x342,0x12b,0x39a,0x0bf,0x38e,0x214, // 224 + 0x261,0x33d,0x0bd,0x014,0x0a7,0x01d,0x368,0x1c1,0x053,0x192,0x029,0x290,0x1f9,0x243,0x1e1,0x0ad, // 240 + 0x194,0x0fb,0x2b0,0x05f,0x1f1,0x22b,0x282,0x21f,0x133,0x09f,0x39c,0x22e,0x288,0x037,0x1f1,0x00a),// 256 + array( // ECL 8 (512 factors) ----------------------------------------------------------------------------- + 0x160,0x04d,0x175,0x1f8,0x023,0x257,0x1ac,0x0cf,0x199,0x23e,0x076,0x1f2,0x11d,0x17c,0x15e,0x1ec, // 16 + 0x0c5,0x109,0x398,0x09b,0x392,0x12b,0x0e5,0x283,0x126,0x367,0x132,0x058,0x057,0x0c1,0x160,0x30d, // 32 + 0x34e,0x04b,0x147,0x208,0x1b3,0x21f,0x0cb,0x29a,0x0f9,0x15a,0x30d,0x26d,0x280,0x10c,0x31a,0x216, // 48 + 0x21b,0x30d,0x198,0x186,0x284,0x066,0x1dc,0x1f3,0x122,0x278,0x221,0x025,0x35a,0x394,0x228,0x029, // 64 + 0x21e,0x121,0x07a,0x110,0x17f,0x320,0x1e5,0x062,0x2f0,0x1d8,0x2f9,0x06b,0x310,0x35c,0x292,0x2e5, // 80 + 0x122,0x0cc,0x2a9,0x197,0x357,0x055,0x063,0x03e,0x1e2,0x0b4,0x014,0x129,0x1c3,0x251,0x391,0x08e, // 96 + 0x328,0x2ac,0x11f,0x218,0x231,0x04c,0x28d,0x383,0x2d9,0x237,0x2e8,0x186,0x201,0x0c0,0x204,0x102, // 112 + 0x0f0,0x206,0x31a,0x18b,0x300,0x350,0x033,0x262,0x180,0x0a8,0x0be,0x33a,0x148,0x254,0x312,0x12f, // 128 + 0x23a,0x17d,0x19f,0x281,0x09c,0x0ed,0x097,0x1ad,0x213,0x0cf,0x2a4,0x2c6,0x059,0x0a8,0x130,0x192, // 144 + 0x028,0x2c4,0x23f,0x0a2,0x360,0x0e5,0x041,0x35d,0x349,0x200,0x0a4,0x1dd,0x0dd,0x05c,0x166,0x311, // 160 + 0x120,0x165,0x352,0x344,0x33b,0x2e0,0x2c3,0x05e,0x008,0x1ee,0x072,0x209,0x002,0x1f3,0x353,0x21f, // 176 + 0x098,0x2d9,0x303,0x05f,0x0f8,0x169,0x242,0x143,0x358,0x31d,0x121,0x033,0x2ac,0x1d2,0x215,0x334, // 192 + 0x29d,0x02d,0x386,0x1c4,0x0a7,0x156,0x0f4,0x0ad,0x023,0x1cf,0x28b,0x033,0x2bb,0x24f,0x1c4,0x242, // 208 + 0x025,0x07c,0x12a,0x14c,0x228,0x02b,0x1ab,0x077,0x296,0x309,0x1db,0x352,0x2fc,0x16c,0x242,0x38f, // 224 + 0x11b,0x2c7,0x1d8,0x1a4,0x0f5,0x120,0x252,0x18a,0x1ff,0x147,0x24d,0x309,0x2bb,0x2b0,0x02b,0x198, // 240 + 0x34a,0x17f,0x2d1,0x209,0x230,0x284,0x2ca,0x22f,0x03e,0x091,0x369,0x297,0x2c9,0x09f,0x2a0,0x2d9, // 256 + 0x270,0x03b,0x0c1,0x1a1,0x09e,0x0d1,0x233,0x234,0x157,0x2b5,0x06d,0x260,0x233,0x16d,0x0b5,0x304, // 272 + 0x2a5,0x136,0x0f8,0x161,0x2c4,0x19a,0x243,0x366,0x269,0x349,0x278,0x35c,0x121,0x218,0x023,0x309, // 288 + 0x26a,0x24a,0x1a8,0x341,0x04d,0x255,0x15a,0x10d,0x2f5,0x278,0x2b7,0x2ef,0x14b,0x0f7,0x0b8,0x02d, // 304 + 0x313,0x2a8,0x012,0x042,0x197,0x171,0x036,0x1ec,0x0e4,0x265,0x33e,0x39a,0x1b5,0x207,0x284,0x389, // 320 + 0x315,0x1a4,0x131,0x1b9,0x0cf,0x12c,0x37c,0x33b,0x08d,0x219,0x17d,0x296,0x201,0x038,0x0fc,0x155, // 336 + 0x0f2,0x31d,0x346,0x345,0x2d0,0x0e0,0x133,0x277,0x03d,0x057,0x230,0x136,0x2f4,0x299,0x18d,0x328, // 352 + 0x353,0x135,0x1d9,0x31b,0x17a,0x01f,0x287,0x393,0x1cb,0x326,0x24e,0x2db,0x1a9,0x0d8,0x224,0x0f9, // 368 + 0x141,0x371,0x2bb,0x217,0x2a1,0x30e,0x0d2,0x32f,0x389,0x12f,0x34b,0x39a,0x119,0x049,0x1d5,0x317, // 384 + 0x294,0x0a2,0x1f2,0x134,0x09b,0x1a6,0x38b,0x331,0x0bb,0x03e,0x010,0x1a9,0x217,0x150,0x11e,0x1b5, // 400 + 0x177,0x111,0x262,0x128,0x0b7,0x39b,0x074,0x29b,0x2ef,0x161,0x03e,0x16e,0x2b3,0x17b,0x2af,0x34a, // 416 + 0x025,0x165,0x2d0,0x2e6,0x14a,0x005,0x027,0x39b,0x137,0x1a8,0x0f2,0x2ed,0x141,0x036,0x29d,0x13c, // 432 + 0x156,0x12b,0x216,0x069,0x29b,0x1e8,0x280,0x2a0,0x240,0x21c,0x13c,0x1e6,0x2d1,0x262,0x02e,0x290, // 448 + 0x1bf,0x0ab,0x268,0x1d0,0x0be,0x213,0x129,0x141,0x2fa,0x2f0,0x215,0x0af,0x086,0x00e,0x17d,0x1b1, // 464 + 0x2cd,0x02d,0x06f,0x014,0x254,0x11c,0x2e0,0x08a,0x286,0x19b,0x36d,0x29d,0x08d,0x397,0x02d,0x30c, // 480 + 0x197,0x0a4,0x14c,0x383,0x0a5,0x2d6,0x258,0x145,0x1f2,0x28f,0x165,0x2f0,0x300,0x0df,0x351,0x287, // 496 + 0x03f,0x136,0x35f,0x0fb,0x16e,0x130,0x11a,0x2e2,0x2a3,0x19a,0x185,0x0f4,0x01f,0x079,0x12f,0x107) // 512 + ); + + /** + * This is the class constructor. + * Creates a PDF417 object + * @param $code (string) code to represent using PDF417 + * @param $ecl (int) error correction level (0-8); default -1 = automatic correction level + * @param $aspectratio (float) the width to height of the symbol (excluding quiet zones) + * @param $macro (array) information for macro block + * @public + */ + public function __construct($code, $ecl=-1, $aspectratio=2, $macro=array()) { + $barcode_array = array(); + if ((is_null($code)) OR ($code == '\0') OR ($code == '')) { + return false; + } + // get the input sequence array + $sequence = $this->getInputSequences($code); + $codewords = array(); // array of code-words + foreach($sequence as $seq) { + $cw = $this->getCompaction($seq[0], $seq[1], true); + $codewords = array_merge($codewords, $cw); + } + if ($codewords[0] == 900) { + // Text Alpha is the default mode, so remove the first code + array_shift($codewords); + } + // count number of codewords + $numcw = count($codewords); + if ($numcw > 925) { + // reached maximum data codeword capacity + return false; + } + // build macro control block codewords + if (!empty($macro)) { + $macrocw = array(); + // beginning of macro control block + $macrocw[] = 928; + // segment index + $cw = $this->getCompaction(902, sprintf('%05d', $macro['segment_index']), false); + $macrocw = array_merge($macrocw, $cw); + // file ID + $cw = $this->getCompaction(900, $macro['file_id'], false); + $macrocw = array_merge($macrocw, $cw); + // optional fields + $optmodes = array(900,902,902,900,900,902,902); + $optsize = array(-1,2,4,-1,-1,-1,2); + foreach ($optmodes as $k => $omode) { + if (isset($macro['option_'.$k])) { + $macrocw[] = 923; + $macrocw[] = $k; + if ($optsize[$k] == 2) { + $macro['option_'.$k] = sprintf('%05d', $macro['option_'.$k]); + } elseif ($optsize[$k] == 4) { + $macro['option_'.$k] = sprintf('%010d', $macro['option_'.$k]); + } + $cw = $this->getCompaction($omode, $macro['option_'.$k], false); + $macrocw = array_merge($macrocw, $cw); + } + } + if ($macro['segment_index'] == ($macro['segment_total'] - 1)) { + // end of control block + $macrocw[] = 922; + } + // update total codewords + $numcw += count($macrocw); + } + // set error correction level + $ecl = $this->getErrorCorrectionLevel($ecl, $numcw); + // number of codewords for error correction + $errsize = (2 << $ecl); + // calculate number of columns (number of codewords per row) and rows + $nce = ($numcw + $errsize + 1); + $cols = round((sqrt(4761 + (68 * $aspectratio * ROWHEIGHT * $nce)) - 69) / 34); + // adjust cols + if ($cols < 1) { + $cols = 1; + } elseif ($cols > 30) { + $cols = 30; + } + $rows = ceil($nce / $cols); + $size = ($cols * $rows); + // adjust rows + if (($rows < 3) OR ($rows > 90)) { + if ($rows < 3) { + $rows = 3; + } elseif ($rows > 90) { + $rows = 90; + } + $cols = ceil($size / $rows); + $size = ($cols * $rows); + } + if ($size > 928) { + // set dimensions to get maximum capacity + if (abs($aspectratio - (17 * 29 / 32)) < abs($aspectratio - (17 * 16 / 58))) { + $cols = 29; + $rows = 32; + } else { + $cols = 16; + $rows = 58; + } + $size = 928; + } + // calculate padding + $pad = ($size - $nce); + if ($pad > 0) { + if (($size - $rows) == $nce) { + --$rows; + $size -= $rows; + } else { + // add pading + $codewords = array_merge($codewords, array_fill(0, $pad, 900)); + } + } + if (!empty($macro)) { + // add macro section + $codewords = array_merge($codewords, $macrocw); + } + // Symbol Lenght Descriptor (number of data codewords including Symbol Lenght Descriptor and pad codewords) + $sld = $size - $errsize; + // add symbol length description + array_unshift($codewords, $sld); + // calculate error correction + $ecw = $this->getErrorCorrection($codewords, $ecl); + // add error correction codewords + $codewords = array_merge($codewords, $ecw); + // add horizontal quiet zones to start and stop patterns + $pstart = str_repeat('0', QUIETH).$this->start_pattern; + $pstop = $this->stop_pattern.str_repeat('0', QUIETH); + $barcode_array['num_rows'] = ($rows * ROWHEIGHT) + (2 * QUIETV); + $barcode_array['num_cols'] = (($cols + 2) * 17) + 35 + (2 * QUIETH); + $barcode_array['bcode'] = array(); + // build rows for vertical quiet zone + if (QUIETV > 0) { + $empty_row = array_fill(0, $barcode_array['num_cols'], 0); + for ($i = 0; $i < QUIETV; ++$i) { + // add vertical quiet rows + $barcode_array['bcode'][] = $empty_row; + } + } + $k = 0; // codeword index + $cid = 0; // initial cluster + // for each row + for ($r = 0; $r < $rows; ++$r) { + // row start code + $row = $pstart; + switch ($cid) { + case 0: { + $L = ((30 * intval($r / 3)) + intval(($rows - 1) / 3)); + break; + } + case 1: { + $L = ((30 * intval($r / 3)) + ($ecl * 3) + (($rows - 1) % 3)); + break; + } + case 2: { + $L = ((30 * intval($r / 3)) + ($cols - 1)); + break; + } + } + // left row indicator + $row .= sprintf('%17b', $this->clusters[$cid][$L]); + // for each column + for ($c = 0; $c < $cols; ++$c) { + $row .= sprintf('%17b', $this->clusters[$cid][$codewords[$k]]); + ++$k; + } + switch ($cid) { + case 0: { + $L = ((30 * intval($r / 3)) + ($cols - 1)); + break; + } + case 1: { + $L = ((30 * intval($r / 3)) + intval(($rows - 1) / 3)); + break; + } + case 2: { + $L = ((30 * intval($r / 3)) + ($ecl * 3) + (($rows - 1) % 3)); + break; + } + } + // right row indicator + $row .= sprintf('%17b', $this->clusters[$cid][$L]); + // row stop code + $row .= $pstop; + // convert the string to array + $arow = preg_split('//', $row, -1, PREG_SPLIT_NO_EMPTY); + // duplicate row to get the desired height + for ($h = 0; $h < ROWHEIGHT; ++$h) { + $barcode_array['bcode'][] = $arow; + } + ++$cid; + if ($cid > 2) { + $cid = 0; + } + } + if (QUIETV > 0) { + for ($i = 0; $i < QUIETV; ++$i) { + // add vertical quiet rows + $barcode_array['bcode'][] = $empty_row; + } + } + $this->barcode_array = $barcode_array; + } + + /** + * Returns a barcode array which is readable by TCPDF + * @return array barcode array readable by TCPDF; + * @public + */ + public function getBarcodeArray() { + return $this->barcode_array; + } + + /** + * Returns the error correction level (0-8) to be used + * @param $ecl (int) error correction level + * @param $numcw (int) number of data codewords + * @return int error correction level + * @protected + */ + protected function getErrorCorrectionLevel($ecl, $numcw) { + // get maximum correction level + $maxecl = 8; // starting error level + $maxerrsize = (928 - $numcw); // available codewords for error + while ($maxecl > 0) { + $errsize = (2 << $ecl); + if ($maxerrsize >= $errsize) { + break; + } + --$maxecl; + } + // check for automatic levels + if (($ecl < 0) OR ($ecl > 8)) { + if ($numcw < 41) { + $ecl = 2; + } elseif ($numcw < 161) { + $ecl = 3; + } elseif ($numcw < 321) { + $ecl = 4; + } elseif ($numcw < 864) { + $ecl = 5; + } else { + $ecl = $maxecl; + } + } + if ($ecl > $maxecl) { + $ecl = $maxecl; + } + return $ecl; + } + + /** + * Returns the error correction codewords + * @param $cw (array) array of codewords including Symbol Lenght Descriptor and pad + * @param $ecl (int) error correction level 0-8 + * @return array of error correction codewords + * @protected + */ + protected function getErrorCorrection($cw, $ecl) { + // get error correction coefficients + $ecc = $this->rsfactors[$ecl]; + // number of error correction factors + $eclsize = (2 << $ecl); + // maximum index for $rsfactors[$ecl] + $eclmaxid = ($eclsize - 1); + // initialize array of error correction codewords + $ecw = array_fill(0, $eclsize, 0); + // for each data codeword + foreach($cw as $k => $d) { + $t1 = ($d + $ecw[$eclmaxid]) % 929; + for ($j = $eclmaxid; $j > 0; --$j) { + $t2 = ($t1 * $ecc[$j]) % 929; + $t3 = 929 - $t2; + $ecw[$j] = ($ecw[($j - 1)] + $t3) % 929; + } + $t2 = ($t1 * $ecc[0]) % 929; + $t3 = 929 - $t2; + $ecw[0] = $t3 % 929; + } + foreach($ecw as $j => $e) { + if ($e != 0) { + $ecw[$j] = 929 - $e; + } + } + $ecw = array_reverse($ecw); + return $ecw; + } + + /** + * Create array of sequences from input + * @param $code (string) code + * @return bidimensional array containing characters and classification + * @protected + */ + protected function getInputSequences($code) { + $sequence_array = array(); // array to be returned + $numseq = array(); + // get numeric sequences + preg_match_all('/([0-9]{13,44})/', $code, $numseq, PREG_OFFSET_CAPTURE); + $numseq[1][] = array('', strlen($code)); + $offset = 0; + foreach($numseq[1] as $seq) { + $seqlen = strlen($seq[0]); + if ($seq[1] > 0) { + // extract text sequence before the number sequence + $prevseq = substr($code, $offset, ($seq[1] - $offset)); + $textseq = array(); + // get text sequences + preg_match_all('/([\x09\x0a\x0d\x20-\x7e]{5,})/', $prevseq, $textseq, PREG_OFFSET_CAPTURE); + $textseq[1][] = array('', strlen($prevseq)); + $txtoffset = 0; + foreach($textseq[1] as $txtseq) { + $txtseqlen = strlen($txtseq[0]); + if ($txtseq[1] > 0) { + // extract byte sequence before the text sequence + $prevtxtseq = substr($prevseq, $txtoffset, ($txtseq[1] - $txtoffset)); + if (strlen($prevtxtseq) > 0) { + // add BYTE sequence + if ((strlen($prevtxtseq) == 1) AND ((count($sequence_array) > 0) AND ($sequence_array[(count($sequence_array) - 1)][0] == 900))) { + $sequence_array[] = array(913, $prevtxtseq); + } elseif ((strlen($prevtxtseq) % 6) == 0) { + $sequence_array[] = array(924, $prevtxtseq); + } else { + $sequence_array[] = array(901, $prevtxtseq); + } + } + } + if ($txtseqlen > 0) { + // add numeric sequence + $sequence_array[] = array(900, $txtseq[0]); + } + $txtoffset = $txtseq[1] + $txtseqlen; + } + } + if ($seqlen > 0) { + // add numeric sequence + $sequence_array[] = array(902, $seq[0]); + } + $offset = $seq[1] + $seqlen; + } + return $sequence_array; + } + + /** + * Compact data by mode. + * @param $mode (int) compaction mode number + * @param $code (string) data to compact + * @param $addmode (boolean) if true add the mode codeword at first position + * @return array of codewords + * @protected + */ + protected function getCompaction($mode, $code, $addmode=true) { + $cw = array(); // array of codewords to return + switch($mode) { + case 900: { // Text Compaction mode latch + $submode = 0; // default Alpha sub-mode + $txtarr = array(); // array of characters and sub-mode switching characters + $codelen = strlen($code); + for ($i = 0; $i < $codelen; ++$i) { + $chval = ord($code{$i}); + if (($k = array_search($chval, $this->textsubmodes[$submode])) !== false) { + // we are on the same sub-mode + $txtarr[] = $k; + } else { + // the sub-mode is changed + for ($s = 0; $s < 4; ++$s) { + // search new sub-mode + if (($s != $submode) AND (($k = array_search($chval, $this->textsubmodes[$s])) !== false)) { + // $s is the new submode + if (((($i + 1) == $codelen) OR ((($i + 1) < $codelen) AND (array_search(ord($code{($i + 1)}), $this->textsubmodes[$submode]) !== false))) AND (($s == 3) OR (($s == 0) AND ($submode == 1)))) { + // shift (temporary change only for this char) + if ($s == 3) { + // shift to puntuaction + $txtarr[] = 29; + } else { + // shift from lower to alpha + $txtarr[] = 27; + } + } else { + // latch + $txtarr = array_merge($txtarr, $this->textlatch[''.$submode.$s]); + // set new submode + $submode = $s; + } + // add characted code to array + $txtarr[] = $k; + break; + } + } + } + } + $txtarrlen = count($txtarr); + if (($txtarrlen % 2) != 0) { + // add padding + $txtarr[] = 29; + ++$txtarrlen; + } + // calculate codewords + for ($i = 0; $i < $txtarrlen; $i += 2) { + $cw[] = (30 * $txtarr[$i]) + $txtarr[($i + 1)]; + } + break; + } + case 901: + case 924: { // Byte Compaction mode latch + while (($codelen = strlen($code)) > 0) { + if ($codelen > 6) { + $rest = substr($code, 6); + $code = substr($code, 0, 6); + $sublen = 6; + } else { + $rest = ''; + $sublen = strlen($code); + } + if ($sublen == 6) { + $t = bcmul(''.ord($code[0]), '1099511627776'); + $t = bcadd($t, bcmul(''.ord($code[1]), '4294967296')); + $t = bcadd($t, bcmul(''.ord($code[2]), '16777216')); + $t = bcadd($t, bcmul(''.ord($code[3]), '65536')); + $t = bcadd($t, bcmul(''.ord($code[4]), '256')); + $t = bcadd($t, ''.ord($code[5])); + // tmp array for the 6 bytes block + $cw6 = array(); + do { + $d = bcmod($t, '900'); + $t = bcdiv($t, '900'); + // prepend the value to the beginning of the array + array_unshift($cw6, $d); + } while ($t != '0'); + // append the result array at the end + $cw = array_merge($cw, $cw6); + } else { + for ($i = 0; $i < $sublen; ++$i) { + $cw[] = ord($code{$i}); + } + } + $code = $rest; + } + break; + } + case 902: { // Numeric Compaction mode latch + while (($codelen = strlen($code)) > 0) { + if ($codelen > 44) { + $rest = substr($code, 44); + $code = substr($code, 0, 44); + } else { + $rest = ''; + } + $t = '1'.$code; + do { + $d = bcmod($t, '900'); + $t = bcdiv($t, '900'); + array_unshift($cw, $d); + } while ($t != '0'); + $code = $rest; + } + break; + } + case 913: { // Byte Compaction mode shift + $cw[] = ord($code); + break; + } + } + if ($addmode) { + // add the compaction mode codeword at the beginning + array_unshift($cw, $mode); + } + return $cw; + } + +} // end PDF417 class + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php new file mode 100644 index 000000000..3127fe687 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php @@ -0,0 +1,2866 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// DESCRIPTION : +// +// Class to create QR-code arrays for TCPDF class. +// QR Code symbol is a 2D barcode that can be scanned by +// handy terminals such as a mobile phone with CCD. +// The capacity of QR Code is up to 7000 digits or 4000 +// characters, and has high robustness. +// This class supports QR Code model 2, described in +// JIS (Japanese Industrial Standards) X0510:2004 +// or ISO/IEC 18004. +// Currently the following features are not supported: +// ECI and FNC1 mode, Micro QR Code, QR Code model 1, +// Structured mode. +// +// This class is derived from the following projects: +// --------------------------------------------------------- +// "PHP QR Code encoder" +// License: GNU-LGPLv3 +// Copyright (C) 2010 by Dominik Dzienia +// http://phpqrcode.sourceforge.net/ +// https://sourceforge.net/projects/phpqrcode/ +// +// The "PHP QR Code encoder" is based on +// "C libqrencode library" (ver. 3.1.1) +// License: GNU-LGPL 2.1 +// Copyright (C) 2006-2010 by Kentaro Fukuchi +// http://megaui.net/fukuchi/works/qrencode/index.en.html +// +// Reed-Solomon code encoder is written by Phil Karn, KA9Q. +// Copyright (C) 2002-2006 Phil Karn, KA9Q +// +// QR Code is registered trademark of DENSO WAVE INCORPORATED +// http://www.denso-wave.com/qrcode/index-e.html +// --------------------------------------------------------- +//============================================================+ + +/** + * @file + * Class to create QR-code arrays for TCPDF class. + * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. + * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. + * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. + * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode. + * + * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). + * Please read comments on this class source file for full copyright and license information. + * + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.010 + */ + +// definitions +if (!defined('QRCODEDEFS')) { + + /** + * Indicate that definitions for this class are set + */ + define('QRCODEDEFS', true); + + // ----------------------------------------------------- + + // Encoding modes (characters which can be encoded in QRcode) + + /** + * Encoding mode + */ + define('QR_MODE_NL', -1); + + /** + * Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode. + */ + define('QR_MODE_NM', 0); + + /** + * Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode. + */ + define('QR_MODE_AN', 1); + + /** + * Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode. + */ + define('QR_MODE_8B', 2); + + /** + * Encoding mode KANJI. A KANJI character (multibyte character) is encoded to 13bit length. In theory, 1817 characters or less can be stored in a QRcode. + */ + define('QR_MODE_KJ', 3); + + /** + * Encoding mode STRUCTURED (currently unsupported) + */ + define('QR_MODE_ST', 4); + + // ----------------------------------------------------- + + // Levels of error correction. + // QRcode has a function of an error correcting for miss reading that white is black. + // Error correcting is defined in 4 level as below. + + /** + * Error correction level L : About 7% or less errors can be corrected. + */ + define('QR_ECLEVEL_L', 0); + + /** + * Error correction level M : About 15% or less errors can be corrected. + */ + define('QR_ECLEVEL_M', 1); + + /** + * Error correction level Q : About 25% or less errors can be corrected. + */ + define('QR_ECLEVEL_Q', 2); + + /** + * Error correction level H : About 30% or less errors can be corrected. + */ + define('QR_ECLEVEL_H', 3); + + // ----------------------------------------------------- + + // Version. Size of QRcode is defined as version. + // Version is from 1 to 40. + // Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. + // So version 40 is 177*177 matrix. + + /** + * Maximum QR Code version. + */ + define('QRSPEC_VERSION_MAX', 40); + + /** + * Maximum matrix size for maximum version (version 40 is 177*177 matrix). + */ + define('QRSPEC_WIDTH_MAX', 177); + + // ----------------------------------------------------- + + /** + * Matrix index to get width from $capacity array. + */ + define('QRCAP_WIDTH', 0); + + /** + * Matrix index to get number of words from $capacity array. + */ + define('QRCAP_WORDS', 1); + + /** + * Matrix index to get remainder from $capacity array. + */ + define('QRCAP_REMINDER', 2); + + /** + * Matrix index to get error correction level from $capacity array. + */ + define('QRCAP_EC', 3); + + // ----------------------------------------------------- + + // Structure (currently usupported) + + /** + * Number of header bits for structured mode + */ + define('STRUCTURE_HEADER_BITS', 20); + + /** + * Max number of symbols for structured mode + */ + define('MAX_STRUCTURED_SYMBOLS', 16); + + // ----------------------------------------------------- + + // Masks + + /** + * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column) + */ + define('N1', 3); + + /** + * Down point base value for case 2 mask pattern (module block of same color) + */ + define('N2', 3); + + /** + * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column) + */ + define('N3', 40); + + /** + * Down point base value for case 4 mask pattern (ration of dark modules in whole) + */ + define('N4', 10); + + // ----------------------------------------------------- + + // Optimization settings + + /** + * if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code + */ + define('QR_FIND_BEST_MASK', true); + + /** + * if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly + */ + define('QR_FIND_FROM_RANDOM', 2); + + /** + * when QR_FIND_BEST_MASK === false + */ + define('QR_DEFAULT_MASK', 2); + + // ----------------------------------------------------- + +} // end of definitions + +// #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# + +// for compatibility with PHP4 +if (!function_exists('str_split')) { + /** + * Convert a string to an array (needed for PHP4 compatibility) + * @param $string (string) The input string. + * @param $split_length (int) Maximum length of the chunk. + * @return If the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element. + */ + function str_split($string, $split_length=1) { + if ((strlen($string) > $split_length) OR (!$split_length)) { + do { + $c = strlen($string); + $parts[] = substr($string, 0, $split_length); + $string = substr($string, $split_length); + } while ($string !== false); + } else { + $parts = array($string); + } + return $parts; + } +} + +// ##################################################### + +/** + * @class QRcode + * Class to create QR-code arrays for TCPDF class. + * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. + * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. + * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. + * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode. + * + * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). + * Please read comments on this class source file for full copyright and license information. + * + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.010 + */ +class QRcode { + + /** + * Barcode array to be returned which is readable by TCPDF. + * @protected + */ + protected $barcode_array = array(); + + /** + * QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix. + * @protected + */ + protected $version = 0; + + /** + * Levels of error correction. See definitions for possible values. + * @protected + */ + protected $level = QR_ECLEVEL_L; + + /** + * Encoding mode. + * @protected + */ + protected $hint = QR_MODE_8B; + + /** + * Boolean flag, if true the input string will be converted to uppercase. + * @protected + */ + protected $casesensitive = true; + + /** + * Structured QR code (not supported yet). + * @protected + */ + protected $structured = 0; + + /** + * Mask data. + * @protected + */ + protected $data; + + // FrameFiller + + /** + * Width. + * @protected + */ + protected $width; + + /** + * Frame. + * @protected + */ + protected $frame; + + /** + * X position of bit. + * @protected + */ + protected $x; + + /** + * Y position of bit. + * @protected + */ + protected $y; + + /** + * Direction. + * @protected + */ + protected $dir; + + /** + * Single bit value. + * @protected + */ + protected $bit; + + // ---- QRrawcode ---- + + /** + * Data code. + * @protected + */ + protected $datacode = array(); + + /** + * Error correction code. + * @protected + */ + protected $ecccode = array(); + + /** + * Blocks. + * @protected + */ + protected $blocks; + + /** + * Reed-Solomon blocks. + * @protected + */ + protected $rsblocks = array(); //of RSblock + + /** + * Counter. + * @protected + */ + protected $count; + + /** + * Data length. + * @protected + */ + protected $dataLength; + + /** + * Error correction length. + * @protected + */ + protected $eccLength; + + /** + * Value b1. + * @protected + */ + protected $b1; + + // ---- QRmask ---- + + /** + * Run length. + * @protected + */ + protected $runLength = array(); + + // ---- QRsplit ---- + + /** + * Input data string. + * @protected + */ + protected $dataStr = ''; + + /** + * Input items. + * @protected + */ + protected $items; + + // Reed-Solomon items + + /** + * Reed-Solomon items. + * @protected + */ + protected $rsitems = array(); + + /** + * Array of frames. + * @protected + */ + protected $frames = array(); + + /** + * Alphabet-numeric convesion table. + * @protected + */ + protected $anTable = array( + -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, // + 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, // + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, // + -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, // + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -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 // + ); + + /** + * Array Table of the capacity of symbols. + * See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004. + * @protected + */ + protected $capacity = array( + array( 0, 0, 0, array( 0, 0, 0, 0)), // + array( 21, 26, 0, array( 7, 10, 13, 17)), // 1 + array( 25, 44, 7, array( 10, 16, 22, 28)), // + array( 29, 70, 7, array( 15, 26, 36, 44)), // + array( 33, 100, 7, array( 20, 36, 52, 64)), // + array( 37, 134, 7, array( 26, 48, 72, 88)), // 5 + array( 41, 172, 7, array( 36, 64, 96, 112)), // + array( 45, 196, 0, array( 40, 72, 108, 130)), // + array( 49, 242, 0, array( 48, 88, 132, 156)), // + array( 53, 292, 0, array( 60, 110, 160, 192)), // + array( 57, 346, 0, array( 72, 130, 192, 224)), // 10 + array( 61, 404, 0, array( 80, 150, 224, 264)), // + array( 65, 466, 0, array( 96, 176, 260, 308)), // + array( 69, 532, 0, array( 104, 198, 288, 352)), // + array( 73, 581, 3, array( 120, 216, 320, 384)), // + array( 77, 655, 3, array( 132, 240, 360, 432)), // 15 + array( 81, 733, 3, array( 144, 280, 408, 480)), // + array( 85, 815, 3, array( 168, 308, 448, 532)), // + array( 89, 901, 3, array( 180, 338, 504, 588)), // + array( 93, 991, 3, array( 196, 364, 546, 650)), // + array( 97, 1085, 3, array( 224, 416, 600, 700)), // 20 + array(101, 1156, 4, array( 224, 442, 644, 750)), // + array(105, 1258, 4, array( 252, 476, 690, 816)), // + array(109, 1364, 4, array( 270, 504, 750, 900)), // + array(113, 1474, 4, array( 300, 560, 810, 960)), // + array(117, 1588, 4, array( 312, 588, 870, 1050)), // 25 + array(121, 1706, 4, array( 336, 644, 952, 1110)), // + array(125, 1828, 4, array( 360, 700, 1020, 1200)), // + array(129, 1921, 3, array( 390, 728, 1050, 1260)), // + array(133, 2051, 3, array( 420, 784, 1140, 1350)), // + array(137, 2185, 3, array( 450, 812, 1200, 1440)), // 30 + array(141, 2323, 3, array( 480, 868, 1290, 1530)), // + array(145, 2465, 3, array( 510, 924, 1350, 1620)), // + array(149, 2611, 3, array( 540, 980, 1440, 1710)), // + array(153, 2761, 3, array( 570, 1036, 1530, 1800)), // + array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35 + array(161, 3034, 0, array( 600, 1120, 1680, 1980)), // + array(165, 3196, 0, array( 630, 1204, 1770, 2100)), // + array(169, 3362, 0, array( 660, 1260, 1860, 2220)), // + array(173, 3532, 0, array( 720, 1316, 1950, 2310)), // + array(177, 3706, 0, array( 750, 1372, 2040, 2430)) // 40 + ); + + /** + * Array Length indicator. + * @protected + */ + protected $lengthTableBits = array( + array(10, 12, 14), + array( 9, 11, 13), + array( 8, 16, 16), + array( 8, 10, 12) + ); + + /** + * Array Table of the error correction code (Reed-Solomon block). + * See Table 12-16 (pp.30-36), JIS X0510:2004. + * @protected + */ + protected $eccTable = array( + array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), // + array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1 + array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // + array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), // + array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), // + array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5 + array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), // + array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), // + array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), // + array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), // + array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), // 10 + array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), // + array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), // + array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), // + array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), // + array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), // 15 + array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), // + array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), // + array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), // + array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), // + array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), // 20 + array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), // + array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), // + array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), // + array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), // + array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), // 25 + array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), // + array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), // + array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), // + array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), // + array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30 + array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), // + array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), // + array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), // + array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), // + array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), // 35 + array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), // + array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), // + array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), // + array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), // + array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)) // 40 + ); + + /** + * Array Positions of alignment patterns. + * This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them. + * See Table 1 in Appendix E (pp.71) of JIS X0510:2004. + * @protected + */ + protected $alignmentPattern = array( + array( 0, 0), + array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5 + array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10 + array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15 + array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20 + array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25 + array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30 + array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35 + array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58) // 35-40 + ); + + /** + * Array Version information pattern (BCH coded). + * See Table 1 in Appendix D (pp.68) of JIS X0510:2004. + * size: [QRSPEC_VERSION_MAX - 6] + * @protected + */ + protected $versionPattern = array( + 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, // + 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, // + 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, // + 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, // + 0x27541, 0x28c69 + ); + + /** + * Array Format information + * @protected + */ + protected $formatInfo = array( + array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), // + array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), // + array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), // + array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) // + ); + + + // ------------------------------------------------- + // ------------------------------------------------- + + + /** + * This is the class constructor. + * Creates a QRcode object + * @param $code (string) code to represent using QRcode + * @param $eclevel (string) error level:
      • L : About 7% or less errors can be corrected.
      • M : About 15% or less errors can be corrected.
      • Q : About 25% or less errors can be corrected.
      • H : About 30% or less errors can be corrected.
      + * @public + * @since 1.0.000 + */ + public function __construct($code, $eclevel = 'L') { + $barcode_array = array(); + if ((is_null($code)) OR ($code == '\0') OR ($code == '')) { + return false; + } + // set error correction level + $this->level = array_search($eclevel, array('L', 'M', 'Q', 'H')); + if ($this->level === false) { + $this->level = QR_ECLEVEL_L; + } + if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) { + return false; + } + if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) { + return false; + } + $this->items = array(); + $this->encodeString($code); + if (is_null($this->data)) { + return false; + } + $qrTab = $this->binarize($this->data); + $size = count($qrTab); + $barcode_array['num_rows'] = $size; + $barcode_array['num_cols'] = $size; + $barcode_array['bcode'] = array(); + foreach ($qrTab as $line) { + $arrAdd = array(); + foreach (str_split($line) as $char) { + $arrAdd[] = ($char=='1')?1:0; + } + $barcode_array['bcode'][] = $arrAdd; + } + $this->barcode_array = $barcode_array; + } + + /** + * Returns a barcode array which is readable by TCPDF + * @return array barcode array readable by TCPDF; + * @public + */ + public function getBarcodeArray() { + return $this->barcode_array; + } + + /** + * Convert the frame in binary form + * @param $frame (array) array to binarize + * @return array frame in binary form + */ + protected function binarize($frame) { + $len = count($frame); + // the frame is square (width = height) + foreach ($frame as &$frameLine) { + for ($i=0; $i<$len; $i++) { + $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0'; + } + } + return $frame; + } + + /** + * Encode the input string to QR code + * @param $string (string) input string to encode + */ + protected function encodeString($string) { + $this->dataStr = $string; + if (!$this->casesensitive) { + $this->toUpper(); + } + $ret = $this->splitString(); + if ($ret < 0) { + return NULL; + } + $this->encodeMask(-1); + } + + /** + * Encode mask + * @param $mask (int) masking mode + */ + protected function encodeMask($mask) { + $spec = array(0, 0, 0, 0, 0); + $this->datacode = $this->getByteStream($this->items); + if (is_null($this->datacode)) { + return NULL; + } + $spec = $this->getEccSpec($this->version, $this->level, $spec); + $this->b1 = $this->rsBlockNum1($spec); + $this->dataLength = $this->rsDataLength($spec); + $this->eccLength = $this->rsEccLength($spec); + $this->ecccode = array_fill(0, $this->eccLength, 0); + $this->blocks = $this->rsBlockNum($spec); + $ret = $this->init($spec); + if ($ret < 0) { + return NULL; + } + $this->count = 0; + $this->width = $this->getWidth($this->version); + $this->frame = $this->newFrame($this->version); + $this->x = $this->width - 1; + $this->y = $this->width - 1; + $this->dir = -1; + $this->bit = -1; + // inteleaved data and ecc codes + for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) { + $code = $this->getCode(); + $bit = 0x80; + for ($j=0; $j<8; $j++) { + $addr = $this->getNextPosition(); + $this->setFrameAt($addr, 0x02 | (($bit & $code) != 0)); + $bit = $bit >> 1; + } + } + // remainder bits + $j = $this->getRemainder($this->version); + for ($i=0; $i<$j; $i++) { + $addr = $this->getNextPosition(); + $this->setFrameAt($addr, 0x02); + } + // masking + $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0); + if ($mask < 0) { + if (QR_FIND_BEST_MASK) { + $masked = $this->mask($this->width, $this->frame, $this->level); + } else { + $masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level); + } + } else { + $masked = $this->makeMask($this->width, $this->frame, $mask, $this->level); + } + if ($masked == NULL) { + return NULL; + } + $this->data = $masked; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // FrameFiller + + /** + * Set frame value at specified position + * @param $at (array) x,y position + * @param $val (int) value of the character to set + */ + protected function setFrameAt($at, $val) { + $this->frame[$at['y']][$at['x']] = chr($val); + } + + /** + * Get frame value at specified position + * @param $at (array) x,y position + * @return value at specified position + */ + protected function getFrameAt($at) { + return ord($this->frame[$at['y']][$at['x']]); + } + + /** + * Return the next frame position + * @return array of x,y coordinates + */ + protected function getNextPosition() { + do { + if ($this->bit == -1) { + $this->bit = 0; + return array('x'=>$this->x, 'y'=>$this->y); + } + $x = $this->x; + $y = $this->y; + $w = $this->width; + if ($this->bit == 0) { + $x--; + $this->bit++; + } else { + $x++; + $y += $this->dir; + $this->bit--; + } + if ($this->dir < 0) { + if ($y < 0) { + $y = 0; + $x -= 2; + $this->dir = 1; + if ($x == 6) { + $x--; + $y = 9; + } + } + } else { + if ($y == $w) { + $y = $w - 1; + $x -= 2; + $this->dir = -1; + if ($x == 6) { + $x--; + $y -= 8; + } + } + } + if (($x < 0) OR ($y < 0)) { + return NULL; + } + $this->x = $x; + $this->y = $y; + } while(ord($this->frame[$y][$x]) & 0x80); + return array('x'=>$x, 'y'=>$y); + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRrawcode + + /** + * Initialize code. + * @param $spec (array) array of ECC specification + * @return 0 in case of success, -1 in case of error + */ + protected function init($spec) { + $dl = $this->rsDataCodes1($spec); + $el = $this->rsEccCodes1($spec); + $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); + $blockNo = 0; + $dataPos = 0; + $eccPos = 0; + $endfor = $this->rsBlockNum1($spec); + for ($i=0; $i < $endfor; ++$i) { + $ecc = array_slice($this->ecccode, $eccPos); + $this->rsblocks[$blockNo] = array(); + $this->rsblocks[$blockNo]['dataLength'] = $dl; + $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos); + $this->rsblocks[$blockNo]['eccLength'] = $el; + $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc); + $this->rsblocks[$blockNo]['ecc'] = $ecc; + $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); + $dataPos += $dl; + $eccPos += $el; + $blockNo++; + } + if ($this->rsBlockNum2($spec) == 0) { + return 0; + } + $dl = $this->rsDataCodes2($spec); + $el = $this->rsEccCodes2($spec); + $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); + if ($rs == NULL) { + return -1; + } + $endfor = $this->rsBlockNum2($spec); + for ($i=0; $i < $endfor; ++$i) { + $ecc = array_slice($this->ecccode, $eccPos); + $this->rsblocks[$blockNo] = array(); + $this->rsblocks[$blockNo]['dataLength'] = $dl; + $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos); + $this->rsblocks[$blockNo]['eccLength'] = $el; + $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc); + $this->rsblocks[$blockNo]['ecc'] = $ecc; + $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc); + $dataPos += $dl; + $eccPos += $el; + $blockNo++; + } + return 0; + } + + /** + * Return Reed-Solomon block code. + * @return array rsblocks + */ + protected function getCode() { + if ($this->count < $this->dataLength) { + $row = $this->count % $this->blocks; + $col = $this->count / $this->blocks; + if ($col >= $this->rsblocks[0]['dataLength']) { + $row += $this->b1; + } + $ret = $this->rsblocks[$row]['data'][$col]; + } elseif ($this->count < $this->dataLength + $this->eccLength) { + $row = ($this->count - $this->dataLength) % $this->blocks; + $col = ($this->count - $this->dataLength) / $this->blocks; + $ret = $this->rsblocks[$row]['ecc'][$col]; + } else { + return 0; + } + $this->count++; + return $ret; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRmask + + /** + * Write Format Information on frame and returns the number of black bits + * @param $width (int) frame width + * @param $frame (array) frame + * @param $mask (array) masking mode + * @param $level (int) error correction level + * @return int blacks + */ + protected function writeFormatInformation($width, &$frame, $mask, $level) { + $blacks = 0; + $format = $this->getFormatInfo($mask, $level); + for ($i=0; $i<8; ++$i) { + if ($format & 1) { + $blacks += 2; + $v = 0x85; + } else { + $v = 0x84; + } + $frame[8][$width - 1 - $i] = chr($v); + if ($i < 6) { + $frame[$i][8] = chr($v); + } else { + $frame[$i + 1][8] = chr($v); + } + $format = $format >> 1; + } + for ($i=0; $i<7; ++$i) { + if ($format & 1) { + $blacks += 2; + $v = 0x85; + } else { + $v = 0x84; + } + $frame[$width - 7 + $i][8] = chr($v); + if ($i == 0) { + $frame[8][7] = chr($v); + } else { + $frame[8][6 - $i] = chr($v); + } + $format = $format >> 1; + } + return $blacks; + } + + /** + * mask0 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask0($x, $y) { + return ($x + $y) & 1; + } + + /** + * mask1 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask1($x, $y) { + return ($y & 1); + } + + /** + * mask2 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask2($x, $y) { + return ($x % 3); + } + + /** + * mask3 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask3($x, $y) { + return ($x + $y) % 3; + } + + /** + * mask4 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask4($x, $y) { + return (((int)($y / 2)) + ((int)($x / 3))) & 1; + } + + /** + * mask5 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask5($x, $y) { + return (($x * $y) & 1) + ($x * $y) % 3; + } + + /** + * mask6 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask6($x, $y) { + return ((($x * $y) & 1) + ($x * $y) % 3) & 1; + } + + /** + * mask7 + * @param $x (int) X position + * @param $y (int) Y position + * @return int mask + */ + protected function mask7($x, $y) { + return ((($x * $y) % 3) + (($x + $y) & 1)) & 1; + } + + /** + * Return bitmask + * @param $maskNo (int) mask number + * @param $width (int) width + * @param $frame (array) frame + * @return array bitmask + */ + protected function generateMaskNo($maskNo, $width, $frame) { + $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); + for ($y=0; $y<$width; ++$y) { + for ($x=0; $x<$width; ++$x) { + if (ord($frame[$y][$x]) & 0x80) { + $bitMask[$y][$x] = 0; + } else { + $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y); + $bitMask[$y][$x] = ($maskFunc == 0)?1:0; + } + } + } + return $bitMask; + } + + /** + * makeMaskNo + * @param $maskNo (int) + * @param $width (int) + * @param $s (int) + * @param $d (int) + * @param $maskGenOnly (boolean) + * @return int b + */ + protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) { + $b = 0; + $bitMask = array(); + $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); + if ($maskGenOnly) { + return; + } + $d = $s; + for ($y=0; $y<$width; ++$y) { + for ($x=0; $x<$width; ++$x) { + if ($bitMask[$y][$x] == 1) { + $d[$y][$x] = chr(ord($s[$y][$x]) ^ ((int)($bitMask[$y][$x]))); + } + $b += (int)(ord($d[$y][$x]) & 1); + } + } + return $b; + } + + /** + * makeMask + * @param $width (int) + * @param $frame (array) + * @param $maskNo (int) + * @param $level (int) + * @return array mask + */ + protected function makeMask($width, $frame, $maskNo, $level) { + $masked = array_fill(0, $width, str_repeat("\0", $width)); + $this->makeMaskNo($maskNo, $width, $frame, $masked); + $this->writeFormatInformation($width, $masked, $maskNo, $level); + return $masked; + } + + /** + * calcN1N3 + * @param $length (int) + * @return int demerit + */ + protected function calcN1N3($length) { + $demerit = 0; + for ($i=0; $i<$length; ++$i) { + if ($this->runLength[$i] >= 5) { + $demerit += (N1 + ($this->runLength[$i] - 5)); + } + if ($i & 1) { + if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) { + $fact = (int)($this->runLength[$i] / 3); + if (($this->runLength[$i-2] == $fact) + AND ($this->runLength[$i-1] == $fact) + AND ($this->runLength[$i+1] == $fact) + AND ($this->runLength[$i+2] == $fact)) { + if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) { + $demerit += N3; + } elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) { + $demerit += N3; + } + } + } + } + } + return $demerit; + } + + /** + * evaluateSymbol + * @param $width (int) + * @param $frame (array) + * @return int demerit + */ + protected function evaluateSymbol($width, $frame) { + $head = 0; + $demerit = 0; + for ($y=0; $y<$width; ++$y) { + $head = 0; + $this->runLength[0] = 1; + $frameY = $frame[$y]; + if ($y > 0) { + $frameYM = $frame[$y-1]; + } + for ($x=0; $x<$width; ++$x) { + if (($x > 0) AND ($y > 0)) { + $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]); + $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]); + if (($b22 | ($w22 ^ 1)) & 1) { + $demerit += N2; + } + } + if (($x == 0) AND (ord($frameY[$x]) & 1)) { + $this->runLength[0] = -1; + $head = 1; + $this->runLength[$head] = 1; + } elseif ($x > 0) { + if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) { + $head++; + $this->runLength[$head] = 1; + } else { + $this->runLength[$head]++; + } + } + } + $demerit += $this->calcN1N3($head+1); + } + for ($x=0; $x<$width; ++$x) { + $head = 0; + $this->runLength[0] = 1; + for ($y=0; $y<$width; ++$y) { + if (($y == 0) AND (ord($frame[$y][$x]) & 1)) { + $this->runLength[0] = -1; + $head = 1; + $this->runLength[$head] = 1; + } elseif ($y > 0) { + if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) { + $head++; + $this->runLength[$head] = 1; + } else { + $this->runLength[$head]++; + } + } + } + $demerit += $this->calcN1N3($head+1); + } + return $demerit; + } + + /** + * mask + * @param $width (int) + * @param $frame (array) + * @param $level (int) + * @return array best mask + */ + protected function mask($width, $frame, $level) { + $minDemerit = PHP_INT_MAX; + $bestMaskNum = 0; + $bestMask = array(); + $checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7); + if (QR_FIND_FROM_RANDOM !== false) { + $howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9); + for ($i = 0; $i < $howManuOut; ++$i) { + $remPos = rand (0, count($checked_masks)-1); + unset($checked_masks[$remPos]); + $checked_masks = array_values($checked_masks); + } + } + $bestMask = $frame; + foreach ($checked_masks as $i) { + $mask = array_fill(0, $width, str_repeat("\0", $width)); + $demerit = 0; + $blacks = 0; + $blacks = $this->makeMaskNo($i, $width, $frame, $mask); + $blacks += $this->writeFormatInformation($width, $mask, $i, $level); + $blacks = (int)(100 * $blacks / ($width * $width)); + $demerit = (int)((int)(abs($blacks - 50) / 5) * N4); + $demerit += $this->evaluateSymbol($width, $mask); + if ($demerit < $minDemerit) { + $minDemerit = $demerit; + $bestMask = $mask; + $bestMaskNum = $i; + } + } + return $bestMask; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRsplit + + /** + * Return true if the character at specified position is a number + * @param $str (string) string + * @param $pos (int) characted position + * @return boolean true of false + */ + protected function isdigitat($str, $pos) { + if ($pos >= strlen($str)) { + return false; + } + return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9'))); + } + + /** + * Return true if the character at specified position is an alphanumeric character + * @param $str (string) string + * @param $pos (int) characted position + * @return boolean true of false + */ + protected function isalnumat($str, $pos) { + if ($pos >= strlen($str)) { + return false; + } + return ($this->lookAnTable(ord($str[$pos])) >= 0); + } + + /** + * identifyMode + * @param $pos (int) + * @return int mode + */ + protected function identifyMode($pos) { + if ($pos >= strlen($this->dataStr)) { + return QR_MODE_NL; + } + $c = $this->dataStr[$pos]; + if ($this->isdigitat($this->dataStr, $pos)) { + return QR_MODE_NM; + } elseif ($this->isalnumat($this->dataStr, $pos)) { + return QR_MODE_AN; + } elseif ($this->hint == QR_MODE_KJ) { + if ($pos+1 < strlen($this->dataStr)) { + $d = $this->dataStr[$pos+1]; + $word = (ord($c) << 8) | ord($d); + if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) { + return QR_MODE_KJ; + } + } + } + return QR_MODE_8B; + } + + /** + * eatNum + * @return int run + */ + protected function eatNum() { + $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); + $p = 0; + while($this->isdigitat($this->dataStr, $p)) { + $p++; + } + $run = $p; + $mode = $this->identifyMode($p); + if ($mode == QR_MODE_8B) { + $dif = $this->estimateBitsModeNum($run) + 4 + $ln + + $this->estimateBitsMode8(1) // + 4 + l8 + - $this->estimateBitsMode8($run + 1); // - 4 - l8 + if ($dif > 0) { + return $this->eat8(); + } + } + if ($mode == QR_MODE_AN) { + $dif = $this->estimateBitsModeNum($run) + 4 + $ln + + $this->estimateBitsModeAn(1) // + 4 + la + - $this->estimateBitsModeAn($run + 1);// - 4 - la + if ($dif > 0) { + return $this->eatAn(); + } + } + $this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr)); + return $run; + } + + /** + * eatAn + * @return int run + */ + protected function eatAn() { + $la = $this->lengthIndicator(QR_MODE_AN, $this->version); + $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); + $p =1 ; + while($this->isalnumat($this->dataStr, $p)) { + if ($this->isdigitat($this->dataStr, $p)) { + $q = $p; + while($this->isdigitat($this->dataStr, $q)) { + $q++; + } + $dif = $this->estimateBitsModeAn($p) // + 4 + la + + $this->estimateBitsModeNum($q - $p) + 4 + $ln + - $this->estimateBitsModeAn($q); // - 4 - la + if ($dif < 0) { + break; + } else { + $p = $q; + } + } else { + $p++; + } + } + $run = $p; + if (!$this->isalnumat($this->dataStr, $p)) { + $dif = $this->estimateBitsModeAn($run) + 4 + $la + + $this->estimateBitsMode8(1) // + 4 + l8 + - $this->estimateBitsMode8($run + 1); // - 4 - l8 + if ($dif > 0) { + return $this->eat8(); + } + } + $this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr)); + return $run; + } + + /** + * eatKanji + * @return int run + */ + protected function eatKanji() { + $p = 0; + while($this->identifyMode($p) == QR_MODE_KJ) { + $p += 2; + } + $this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr)); + return $run; + } + + /** + * eat8 + * @return int run + */ + protected function eat8() { + $la = $this->lengthIndicator(QR_MODE_AN, $this->version); + $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); + $p = 1; + $dataStrLen = strlen($this->dataStr); + while($p < $dataStrLen) { + $mode = $this->identifyMode($p); + if ($mode == QR_MODE_KJ) { + break; + } + if ($mode == QR_MODE_NM) { + $q = $p; + while($this->isdigitat($this->dataStr, $q)) { + $q++; + } + $dif = $this->estimateBitsMode8($p) // + 4 + l8 + + $this->estimateBitsModeNum($q - $p) + 4 + $ln + - $this->estimateBitsMode8($q); // - 4 - l8 + if ($dif < 0) { + break; + } else { + $p = $q; + } + } elseif ($mode == QR_MODE_AN) { + $q = $p; + while($this->isalnumat($this->dataStr, $q)) { + $q++; + } + $dif = $this->estimateBitsMode8($p) // + 4 + l8 + + $this->estimateBitsModeAn($q - $p) + 4 + $la + - $this->estimateBitsMode8($q); // - 4 - l8 + if ($dif < 0) { + break; + } else { + $p = $q; + } + } else { + $p++; + } + } + $run = $p; + $this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr)); + return $run; + } + + /** + * splitString + * @return (int) + */ + protected function splitString() { + while (strlen($this->dataStr) > 0) { + $mode = $this->identifyMode(0); + switch ($mode) { + case QR_MODE_NM: { + $length = $this->eatNum(); + break; + } + case QR_MODE_AN: { + $length = $this->eatAn(); + break; + } + case QR_MODE_KJ: { + if ($hint == QR_MODE_KJ) { + $length = $this->eatKanji(); + } else { + $length = $this->eat8(); + } + break; + } + default: { + $length = $this->eat8(); + break; + } + } + if ($length == 0) { + return 0; + } + if ($length < 0) { + return -1; + } + $this->dataStr = substr($this->dataStr, $length); + } + return 0; + } + + /** + * toUpper + */ + protected function toUpper() { + $stringLen = strlen($this->dataStr); + $p = 0; + while ($p < $stringLen) { + $mode = $this->identifyMode(substr($this->dataStr, $p), $this->hint); + if ($mode == QR_MODE_KJ) { + $p += 2; + } else { + if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) { + $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32); + } + $p++; + } + } + return $this->dataStr; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRinputItem + + /** + * newInputItem + * @param $mode (int) + * @param $size (int) + * @param $data (array) + * @param $bstream (array) + * @return array input item + */ + protected function newInputItem($mode, $size, $data, $bstream=null) { + $setData = array_slice($data, 0, $size); + if (count($setData) < $size) { + $setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0)); + } + if (!$this->check($mode, $size, $setData)) { + return NULL; + } + $inputitem = array(); + $inputitem['mode'] = $mode; + $inputitem['size'] = $size; + $inputitem['data'] = $setData; + $inputitem['bstream'] = $bstream; + return $inputitem; + } + + /** + * encodeModeNum + * @param $inputitem (array) + * @param $version (int) + * @return array input item + */ + protected function encodeModeNum($inputitem, $version) { + $words = (int)($inputitem['size'] / 3); + $inputitem['bstream'] = array(); + $val = 0x1; + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']); + for ($i=0; $i < $words; ++$i) { + $val = (ord($inputitem['data'][$i*3 ]) - ord('0')) * 100; + $val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10; + $val += (ord($inputitem['data'][$i*3+2]) - ord('0')); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val); + } + if ($inputitem['size'] - $words * 3 == 1) { + $val = ord($inputitem['data'][$words*3]) - ord('0'); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val); + } elseif (($inputitem['size'] - ($words * 3)) == 2) { + $val = (ord($inputitem['data'][$words*3 ]) - ord('0')) * 10; + $val += (ord($inputitem['data'][$words*3+1]) - ord('0')); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val); + } + return $inputitem; + } + + /** + * encodeModeAn + * @param $inputitem (array) + * @param $version (int) + * @return array input item + */ + protected function encodeModeAn($inputitem, $version) { + $words = (int)($inputitem['size'] / 2); + $inputitem['bstream'] = array(); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']); + for ($i=0; $i < $words; ++$i) { + $val = (int)($this->lookAnTable(ord($inputitem['data'][$i*2])) * 45); + $val += (int)($this->lookAnTable(ord($inputitem['data'][($i*2)+1]))); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val); + } + if ($inputitem['size'] & 1) { + $val = $this->lookAnTable(ord($inputitem['data'][($words * 2)])); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val); + } + return $inputitem; + } + + /** + * encodeMode8 + * @param $inputitem (array) + * @param $version (int) + * @return array input item + */ + protected function encodeMode8($inputitem, $version) { + $inputitem['bstream'] = array(); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']); + for ($i=0; $i < $inputitem['size']; ++$i) { + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i])); + } + return $inputitem; + } + + /** + * encodeModeKanji + * @param $inputitem (array) + * @param $version (int) + * @return array input item + */ + protected function encodeModeKanji($inputitem, $version) { + $inputitem['bstream'] = array(); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2)); + for ($i=0; $i<$inputitem['size']; $i+=2) { + $val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]); + if ($val <= 0x9ffc) { + $val -= 0x8140; + } else { + $val -= 0xc140; + } + $h = ($val >> 8) * 0xc0; + $val = ($val & 0xff) + $h; + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val); + } + return $inputitem; + } + + /** + * encodeModeStructure + * @param $inputitem (array) + * @return array input item + */ + protected function encodeModeStructure($inputitem) { + $inputitem['bstream'] = array(); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1); + $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2])); + return $inputitem; + } + + /** + * encodeBitStream + * @param $inputitem (array) + * @param $version (int) + * @return array input item + */ + protected function encodeBitStream($inputitem, $version) { + $inputitem['bstream'] = array(); + $words = $this->maximumWords($inputitem['mode'], $version); + if ($inputitem['size'] > $words) { + $st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']); + $st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words)); + $st1 = $this->encodeBitStream($st1, $version); + $st2 = $this->encodeBitStream($st2, $version); + $inputitem['bstream'] = array(); + $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']); + $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']); + } else { + switch($inputitem['mode']) { + case QR_MODE_NM: { + $inputitem = $this->encodeModeNum($inputitem, $version); + break; + } + case QR_MODE_AN: { + $inputitem = $this->encodeModeAn($inputitem, $version); + break; + } + case QR_MODE_8B: { + $inputitem = $this->encodeMode8($inputitem, $version); + break; + } + case QR_MODE_KJ: { + $inputitem = $this->encodeModeKanji($inputitem, $version); + break; + } + case QR_MODE_ST: { + $inputitem = $this->encodeModeStructure($inputitem); + break; + } + default: { + break; + } + } + } + return $inputitem; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRinput + + /** + * Append data to an input object. + * The data is copied and appended to the input object. + * @param $items (arrray) input items + * @param $mode (int) encoding mode. + * @param $size (int) size of data (byte). + * @param $data (array) array of input data. + * @return items + * + */ + protected function appendNewInputItem($items, $mode, $size, $data) { + $newitem = $this->newInputItem($mode, $size, $data); + if (!empty($newitem)) { + $items[] = $newitem; + } + return $items; + } + + /** + * insertStructuredAppendHeader + * @param $items (array) + * @param $size (int) + * @param $index (int) + * @param $parity (int) + * @return array items + */ + protected function insertStructuredAppendHeader($items, $size, $index, $parity) { + if ($size > MAX_STRUCTURED_SYMBOLS) { + return -1; + } + if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) { + return -1; + } + $buf = array($size, $index, $parity); + $entry = $this->newInputItem(QR_MODE_ST, 3, buf); + array_unshift($items, $entry); + return $items; + } + + /** + * calcParity + * @param $items (array) + * @return int parity + */ + protected function calcParity($items) { + $parity = 0; + foreach ($items as $item) { + if ($item['mode'] != QR_MODE_ST) { + for ($i=$item['size']-1; $i>=0; --$i) { + $parity ^= $item['data'][$i]; + } + } + } + return $parity; + } + + /** + * checkModeNum + * @param $size (int) + * @param $data (array) + * @return boolean true or false + */ + protected function checkModeNum($size, $data) { + for ($i=0; $i<$size; ++$i) { + if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){ + return false; + } + } + return true; + } + + /** + * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19). + * @param $c (int) character value + * @return value + */ + protected function lookAnTable($c) { + return (($c > 127)?-1:$this->anTable[$c]); + } + + /** + * checkModeAn + * @param $size (int) + * @param $data (array) + * @return boolean true or false + */ + protected function checkModeAn($size, $data) { + for ($i=0; $i<$size; ++$i) { + if ($this->lookAnTable(ord($data[$i])) == -1) { + return false; + } + } + return true; + } + + /** + * estimateBitsModeNum + * @param $size (int) + * @return int number of bits + */ + protected function estimateBitsModeNum($size) { + $w = (int)($size / 3); + $bits = ($w * 10); + switch($size - ($w * 3)) { + case 1: { + $bits += 4; + break; + } + case 2: { + $bits += 7; + break; + } + } + return $bits; + } + + /** + * estimateBitsModeAn + * @param $size (int) + * @return int number of bits + */ + protected function estimateBitsModeAn($size) { + $bits = (int)($size * 5.5); // (size / 2 ) * 11 + if ($size & 1) { + $bits += 6; + } + return $bits; + } + + /** + * estimateBitsMode8 + * @param $size (int) + * @return int number of bits + */ + protected function estimateBitsMode8($size) { + return (int)($size * 8); + } + + /** + * estimateBitsModeKanji + * @param $size (int) + * @return int number of bits + */ + protected function estimateBitsModeKanji($size) { + return (int)($size * 6.5); // (size / 2 ) * 13 + } + + /** + * checkModeKanji + * @param $size (int) + * @param $data (array) + * @return boolean true or false + */ + protected function checkModeKanji($size, $data) { + if ($size & 1) { + return false; + } + for ($i=0; $i<$size; $i+=2) { + $val = (ord($data[$i]) << 8) | ord($data[$i+1]); + if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) { + return false; + } + } + return true; + } + + /** + * Validate the input data. + * @param $mode (int) encoding mode. + * @param $size (int) size of data (byte). + * @param $data (array) data to validate + * @return boolean true in case of valid data, false otherwise + */ + protected function check($mode, $size, $data) { + if ($size <= 0) { + return false; + } + switch($mode) { + case QR_MODE_NM: { + return $this->checkModeNum($size, $data); + } + case QR_MODE_AN: { + return $this->checkModeAn($size, $data); + } + case QR_MODE_KJ: { + return $this->checkModeKanji($size, $data); + } + case QR_MODE_8B: { + return true; + } + case QR_MODE_ST: { + return true; + } + default: { + break; + } + } + return false; + } + + /** + * estimateBitStreamSize + * @param $items (array) + * @param $version (int) + * @return int bits + */ + protected function estimateBitStreamSize($items, $version) { + $bits = 0; + if ($version == 0) { + $version = 1; + } + foreach ($items as $item) { + switch($item['mode']) { + case QR_MODE_NM: { + $bits = $this->estimateBitsModeNum($item['size']); + break; + } + case QR_MODE_AN: { + $bits = $this->estimateBitsModeAn($item['size']); + break; + } + case QR_MODE_8B: { + $bits = $this->estimateBitsMode8($item['size']); + break; + } + case QR_MODE_KJ: { + $bits = $this->estimateBitsModeKanji($item['size']); + break; + } + case QR_MODE_ST: { + return STRUCTURE_HEADER_BITS; + } + default: { + return 0; + } + } + $l = $this->lengthIndicator($item['mode'], $version); + $m = 1 << $l; + $num = (int)(($item['size'] + $m - 1) / $m); + $bits += $num * (4 + $l); + } + return $bits; + } + + /** + * estimateVersion + * @param $items (array) + * @return int version + */ + protected function estimateVersion($items) { + $version = 0; + $prev = 0; + do { + $prev = $version; + $bits = $this->estimateBitStreamSize($items, $prev); + $version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level); + if ($version < 0) { + return -1; + } + } while ($version > $prev); + return $version; + } + + /** + * lengthOfCode + * @param $mode (int) + * @param $version (int) + * @param $bits (int) + * @return int size + */ + protected function lengthOfCode($mode, $version, $bits) { + $payload = $bits - 4 - $this->lengthIndicator($mode, $version); + switch($mode) { + case QR_MODE_NM: { + $chunks = (int)($payload / 10); + $remain = $payload - $chunks * 10; + $size = $chunks * 3; + if ($remain >= 7) { + $size += 2; + } elseif ($remain >= 4) { + $size += 1; + } + break; + } + case QR_MODE_AN: { + $chunks = (int)($payload / 11); + $remain = $payload - $chunks * 11; + $size = $chunks * 2; + if ($remain >= 6) { + ++$size; + } + break; + } + case QR_MODE_8B: { + $size = (int)($payload / 8); + break; + } + case QR_MODE_KJ: { + $size = (int)(($payload / 13) * 2); + break; + } + case QR_MODE_ST: { + $size = (int)($payload / 8); + break; + } + default: { + $size = 0; + break; + } + } + $maxsize = $this->maximumWords($mode, $version); + if ($size < 0) { + $size = 0; + } + if ($size > $maxsize) { + $size = $maxsize; + } + return $size; + } + + /** + * createBitStream + * @param $items (array) + * @return array of items and total bits + */ + protected function createBitStream($items) { + $total = 0; + foreach ($items as $key => $item) { + $items[$key] = $this->encodeBitStream($item, $this->version); + $bits = count($items[$key]['bstream']); + $total += $bits; + } + return array($items, $total); + } + + /** + * convertData + * @param $items (array) + * @return array items + */ + protected function convertData($items) { + $ver = $this->estimateVersion($items); + if ($ver > $this->version) { + $this->version = $ver; + } + while (true) { + $cbs = $this->createBitStream($items); + $items = $cbs[0]; + $bits = $cbs[1]; + if ($bits < 0) { + return -1; + } + $ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level); + if ($ver < 0) { + return -1; + } elseif ($ver > $this->version) { + $this->version = $ver; + } else { + break; + } + } + return $items; + } + + /** + * Append Padding Bit to bitstream + * @param $bstream (array) + * @return array bitstream + */ + protected function appendPaddingBit($bstream) { + if (is_null($bstream)) { + return null; + } + $bits = count($bstream); + $maxwords = $this->getDataLength($this->version, $this->level); + $maxbits = $maxwords * 8; + if ($maxbits == $bits) { + return $bstream; + } + if ($maxbits - $bits < 5) { + return $this->appendNum($bstream, $maxbits - $bits, 0); + } + $bits += 4; + $words = (int)(($bits + 7) / 8); + $padding = array(); + $padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0); + $padlen = $maxwords - $words; + if ($padlen > 0) { + $padbuf = array(); + for ($i=0; $i<$padlen; ++$i) { + $padbuf[$i] = ($i&1)?0x11:0xec; + } + $padding = $this->appendBytes($padding, $padlen, $padbuf); + } + return $this->appendBitstream($bstream, $padding); + } + + /** + * mergeBitStream + * @param $items (array) items + * @return array bitstream + */ + protected function mergeBitStream($items) { + $items = $this->convertData($items); + if (!is_array($items)) { + return null; + } + $bstream = array(); + foreach ($items as $item) { + $bstream = $this->appendBitstream($bstream, $item['bstream']); + } + return $bstream; + } + + /** + * Returns a stream of bits. + * @param $items (int) + * @return array padded merged byte stream + */ + protected function getBitStream($items) { + $bstream = $this->mergeBitStream($items); + return $this->appendPaddingBit($bstream); + } + + /** + * Pack all bit streams padding bits into a byte array. + * @param $items (int) + * @return array padded merged byte stream + */ + protected function getByteStream($items) { + $bstream = $this->getBitStream($items); + return $this->bitstreamToByte($bstream); + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRbitstream + + /** + * Return an array with zeros + * @param $setLength (int) array size + * @return array + */ + protected function allocate($setLength) { + return array_fill(0, $setLength, 0); + } + + /** + * Return new bitstream from number + * @param $bits (int) number of bits + * @param $num (int) number + * @return array bitstream + */ + protected function newFromNum($bits, $num) { + $bstream = $this->allocate($bits); + $mask = 1 << ($bits - 1); + for ($i=0; $i<$bits; ++$i) { + if ($num & $mask) { + $bstream[$i] = 1; + } else { + $bstream[$i] = 0; + } + $mask = $mask >> 1; + } + return $bstream; + } + + /** + * Return new bitstream from bytes + * @param $size (int) size + * @param $data (array) bytes + * @return array bitstream + */ + protected function newFromBytes($size, $data) { + $bstream = $this->allocate($size * 8); + $p=0; + for ($i=0; $i<$size; ++$i) { + $mask = 0x80; + for ($j=0; $j<8; ++$j) { + if ($data[$i] & $mask) { + $bstream[$p] = 1; + } else { + $bstream[$p] = 0; + } + $p++; + $mask = $mask >> 1; + } + } + return $bstream; + } + + /** + * Append one bitstream to another + * @param $bitstream (array) original bitstream + * @param $append (array) bitstream to append + * @return array bitstream + */ + protected function appendBitstream($bitstream, $append) { + if ((!is_array($append)) OR (count($append) == 0)) { + return $bitstream; + } + if (count($bitstream) == 0) { + return $append; + } + return array_values(array_merge($bitstream, $append)); + } + + /** + * Append one bitstream created from number to another + * @param $bitstream (array) original bitstream + * @param $bits (int) number of bits + * @param $num (int) number + * @return array bitstream + */ + protected function appendNum($bitstream, $bits, $num) { + if ($bits == 0) { + return 0; + } + $b = $this->newFromNum($bits, $num); + return $this->appendBitstream($bitstream, $b); + } + + /** + * Append one bitstream created from bytes to another + * @param $bitstream (array) original bitstream + * @param $size (int) size + * @param $data (array) bytes + * @return array bitstream + */ + protected function appendBytes($bitstream, $size, $data) { + if ($size == 0) { + return 0; + } + $b = $this->newFromBytes($size, $data); + return $this->appendBitstream($bitstream, $b); + } + + /** + * Convert bitstream to bytes + * @param $bstream (array) original bitstream + * @return array of bytes + */ + protected function bitstreamToByte($bstream) { + if (is_null($bstream)) { + return null; + } + $size = count($bstream); + if ($size == 0) { + return array(); + } + $data = array_fill(0, (int)(($size + 7) / 8), 0); + $bytes = (int)($size / 8); + $p = 0; + for ($i=0; $i<$bytes; $i++) { + $v = 0; + for ($j=0; $j<8; $j++) { + $v = $v << 1; + $v |= $bstream[$p]; + $p++; + } + $data[$i] = $v; + } + if ($size & 7) { + $v = 0; + for ($j=0; $j<($size & 7); $j++) { + $v = $v << 1; + $v |= $bstream[$p]; + $p++; + } + $data[$bytes] = $v; + } + return $data; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRspec + + /** + * Replace a value on the array at the specified position + * @param $srctab (array) + * @param $x (int) X position + * @param $y (int) Y position + * @param $repl (string) value to replace + * @param $replLen (int) length of the repl string + * @return array srctab + */ + protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) { + $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); + return $srctab; + } + + /** + * Return maximum data code length (bytes) for the version. + * @param $version (int) version + * @param $level (int) error correction level + * @return int maximum size (bytes) + */ + protected function getDataLength($version, $level) { + return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level]; + } + + /** + * Return maximum error correction code length (bytes) for the version. + * @param $version (int) version + * @param $level (int) error correction level + * @return int ECC size (bytes) + */ + protected function getECCLength($version, $level){ + return $this->capacity[$version][QRCAP_EC][$level]; + } + + /** + * Return the width of the symbol for the version. + * @param $version (int) version + * @return int width + */ + protected function getWidth($version) { + return $this->capacity[$version][QRCAP_WIDTH]; + } + + /** + * Return the numer of remainder bits. + * @param $version (int) version + * @return int number of remainder bits + */ + protected function getRemainder($version) { + return $this->capacity[$version][QRCAP_REMINDER]; + } + + /** + * Return a version number that satisfies the input code length. + * @param $size (int) input code length (bytes) + * @param $level (int) error correction level + * @return int version number + */ + protected function getMinimumVersion($size, $level) { + for ($i = 1; $i <= QRSPEC_VERSION_MAX; ++$i) { + $words = ($this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level]); + if ($words >= $size) { + return $i; + } + } + // the size of input data is greater than QR capacity, try to lover the error correction mode + return -1; + } + + /** + * Return the size of length indicator for the mode and version. + * @param $mode (int) encoding mode + * @param $version (int) version + * @return int the size of the appropriate length indicator (bits). + */ + protected function lengthIndicator($mode, $version) { + if ($mode == QR_MODE_ST) { + return 0; + } + if ($version <= 9) { + $l = 0; + } elseif ($version <= 26) { + $l = 1; + } else { + $l = 2; + } + return $this->lengthTableBits[$mode][$l]; + } + + /** + * Return the maximum length for the mode and version. + * @param $mode (int) encoding mode + * @param $version (int) version + * @return int the maximum length (bytes) + */ + protected function maximumWords($mode, $version) { + if ($mode == QR_MODE_ST) { + return 3; + } + if ($version <= 9) { + $l = 0; + } else if ($version <= 26) { + $l = 1; + } else { + $l = 2; + } + $bits = $this->lengthTableBits[$mode][$l]; + $words = (1 << $bits) - 1; + if ($mode == QR_MODE_KJ) { + $words *= 2; // the number of bytes is required + } + return $words; + } + + /** + * Return an array of ECC specification. + * @param $version (int) version + * @param $level (int) error correction level + * @param $spec (array) an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code} + * @return array spec + */ + protected function getEccSpec($version, $level, $spec) { + if (count($spec) < 5) { + $spec = array(0, 0, 0, 0, 0); + } + $b1 = $this->eccTable[$version][$level][0]; + $b2 = $this->eccTable[$version][$level][1]; + $data = $this->getDataLength($version, $level); + $ecc = $this->getECCLength($version, $level); + if ($b2 == 0) { + $spec[0] = $b1; + $spec[1] = (int)($data / $b1); + $spec[2] = (int)($ecc / $b1); + $spec[3] = 0; + $spec[4] = 0; + } else { + $spec[0] = $b1; + $spec[1] = (int)($data / ($b1 + $b2)); + $spec[2] = (int)($ecc / ($b1 + $b2)); + $spec[3] = $b2; + $spec[4] = $spec[1] + 1; + } + return $spec; + } + + /** + * Put an alignment marker. + * @param $frame (array) frame + * @param $ox (int) X center coordinate of the pattern + * @param $oy (int) Y center coordinate of the pattern + * @return array frame + */ + protected function putAlignmentMarker($frame, $ox, $oy) { + $finder = array( + "\xa1\xa1\xa1\xa1\xa1", + "\xa1\xa0\xa0\xa0\xa1", + "\xa1\xa0\xa1\xa0\xa1", + "\xa1\xa0\xa0\xa0\xa1", + "\xa1\xa1\xa1\xa1\xa1" + ); + $yStart = $oy - 2; + $xStart = $ox - 2; + for ($y=0; $y < 5; $y++) { + $frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]); + } + return $frame; + } + + /** + * Put an alignment pattern. + * @param $version (int) version + * @param $frame (array) frame + * @param $width (int) width + * @return array frame + */ + protected function putAlignmentPattern($version, $frame, $width) { + if ($version < 2) { + return $frame; + } + $d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0]; + if ($d < 0) { + $w = 2; + } else { + $w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2); + } + if ($w * $w - 3 == 1) { + $x = $this->alignmentPattern[$version][0]; + $y = $this->alignmentPattern[$version][0]; + $frame = $this->putAlignmentMarker($frame, $x, $y); + return $frame; + } + $cx = $this->alignmentPattern[$version][0]; + $wo = $w - 1; + for ($x=1; $x < $wo; ++$x) { + $frame = $this->putAlignmentMarker($frame, 6, $cx); + $frame = $this->putAlignmentMarker($frame, $cx, 6); + $cx += $d; + } + $cy = $this->alignmentPattern[$version][0]; + for ($y=0; $y < $wo; ++$y) { + $cx = $this->alignmentPattern[$version][0]; + for ($x=0; $x < $wo; ++$x) { + $frame = $this->putAlignmentMarker($frame, $cx, $cy); + $cx += $d; + } + $cy += $d; + } + return $frame; + } + + /** + * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits. + * @param $version (int) version + * @return BCH encoded version information pattern + */ + protected function getVersionPattern($version) { + if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) { + return 0; + } + return $this->versionPattern[($version - 7)]; + } + + /** + * Return BCH encoded format information pattern. + * @param $mask (array) + * @param $level (int) error correction level + * @return BCH encoded format information pattern + */ + protected function getFormatInfo($mask, $level) { + if (($mask < 0) OR ($mask > 7)) { + return 0; + } + if (($level < 0) OR ($level > 3)) { + return 0; + } + return $this->formatInfo[$level][$mask]; + } + + /** + * Put a finder pattern. + * @param $frame (array) frame + * @param $ox (int) X center coordinate of the pattern + * @param $oy (int) Y center coordinate of the pattern + * @return array frame + */ + protected function putFinderPattern($frame, $ox, $oy) { + $finder = array( + "\xc1\xc1\xc1\xc1\xc1\xc1\xc1", + "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", + "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", + "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", + "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", + "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", + "\xc1\xc1\xc1\xc1\xc1\xc1\xc1" + ); + for ($y=0; $y < 7; $y++) { + $frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]); + } + return $frame; + } + + /** + * Return a copy of initialized frame. + * @param $version (int) version + * @return Array of unsigned char. + */ + protected function createFrame($version) { + $width = $this->capacity[$version][QRCAP_WIDTH]; + $frameLine = str_repeat ("\0", $width); + $frame = array_fill(0, $width, $frameLine); + // Finder pattern + $frame = $this->putFinderPattern($frame, 0, 0); + $frame = $this->putFinderPattern($frame, $width - 7, 0); + $frame = $this->putFinderPattern($frame, 0, $width - 7); + // Separator + $yOffset = $width - 7; + for ($y=0; $y < 7; ++$y) { + $frame[$y][7] = "\xc0"; + $frame[$y][$width - 8] = "\xc0"; + $frame[$yOffset][7] = "\xc0"; + ++$yOffset; + } + $setPattern = str_repeat("\xc0", 8); + $frame = $this->qrstrset($frame, 0, 7, $setPattern); + $frame = $this->qrstrset($frame, $width-8, 7, $setPattern); + $frame = $this->qrstrset($frame, 0, $width - 8, $setPattern); + // Format info + $setPattern = str_repeat("\x84", 9); + $frame = $this->qrstrset($frame, 0, 8, $setPattern); + $frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8); + $yOffset = $width - 8; + for ($y=0; $y < 8; ++$y,++$yOffset) { + $frame[$y][8] = "\x84"; + $frame[$yOffset][8] = "\x84"; + } + // Timing pattern + $wo = $width - 15; + for ($i=1; $i < $wo; ++$i) { + $frame[6][7+$i] = chr(0x90 | ($i & 1)); + $frame[7+$i][6] = chr(0x90 | ($i & 1)); + } + // Alignment pattern + $frame = $this->putAlignmentPattern($version, $frame, $width); + // Version information + if ($version >= 7) { + $vinf = $this->getVersionPattern($version); + $v = $vinf; + for ($x=0; $x<6; ++$x) { + for ($y=0; $y<3; ++$y) { + $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1)); + $v = $v >> 1; + } + } + $v = $vinf; + for ($y=0; $y<6; ++$y) { + for ($x=0; $x<3; ++$x) { + $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1)); + $v = $v >> 1; + } + } + } + // and a little bit... + $frame[$width - 8][8] = "\x81"; + return $frame; + } + + /** + * Set new frame for the specified version. + * @param $version (int) version + * @return Array of unsigned char. + */ + protected function newFrame($version) { + if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) { + return NULL; + } + if (!isset($this->frames[$version])) { + $this->frames[$version] = $this->createFrame($version); + } + if (is_null($this->frames[$version])) { + return NULL; + } + return $this->frames[$version]; + } + + /** + * Return block number 0 + * @param $spec (array) + * @return int value + */ + protected function rsBlockNum($spec) { + return ($spec[0] + $spec[3]); + } + + /** + * Return block number 1 + * @param $spec (array) + * @return int value + */ + protected function rsBlockNum1($spec) { + return $spec[0]; + } + + /** + * Return data codes 1 + * @param $spec (array) + * @return int value + */ + protected function rsDataCodes1($spec) { + return $spec[1]; + } + + /** + * Return ecc codes 1 + * @param $spec (array) + * @return int value + */ + protected function rsEccCodes1($spec) { + return $spec[2]; + } + + /** + * Return block number 2 + * @param $spec (array) + * @return int value + */ + protected function rsBlockNum2($spec) { + return $spec[3]; + } + + /** + * Return data codes 2 + * @param $spec (array) + * @return int value + */ + protected function rsDataCodes2($spec) { + return $spec[4]; + } + + /** + * Return ecc codes 2 + * @param $spec (array) + * @return int value + */ + protected function rsEccCodes2($spec) { + return $spec[2]; + } + + /** + * Return data length + * @param $spec (array) + * @return int value + */ + protected function rsDataLength($spec) { + return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); + } + + /** + * Return ecc length + * @param $spec (array) + * @return int value + */ + protected function rsEccLength($spec) { + return ($spec[0] + $spec[3]) * $spec[2]; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRrs + + /** + * Initialize a Reed-Solomon codec and add it to existing rsitems + * @param $symsize (int) symbol size, bits + * @param $gfpoly (int) Field generator polynomial coefficients + * @param $fcr (int) first root of RS code generator polynomial, index form + * @param $prim (int) primitive element to generate polynomial roots + * @param $nroots (int) RS code generator polynomial degree (number of roots) + * @param $pad (int) padding bytes at front of shortened block + * @return array Array of RS values:
      • mm = Bits per symbol;
      • nn = Symbols per block;
      • alpha_to = log lookup table array;
      • index_of = Antilog lookup table array;
      • genpoly = Generator polynomial array;
      • nroots = Number of generator;
      • roots = number of parity symbols;
      • fcr = First consecutive root, index form;
      • prim = Primitive element, index form;
      • iprim = prim-th root of 1, index form;
      • pad = Padding bytes in shortened block;
      • gfpoly
      . + */ + protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) { + foreach ($this->rsitems as $rs) { + if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize) + OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) { + continue; + } + return $rs; + } + $rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad); + array_unshift($this->rsitems, $rs); + return $rs; + } + + // - - - - - - - - - - - - - - - - - - - - - - - - - + + // QRrsItem + + /** + * modnn + * @param $rs (array) RS values + * @param $x (int) X position + * @return int X osition + */ + protected function modnn($rs, $x) { + while ($x >= $rs['nn']) { + $x -= $rs['nn']; + $x = ($x >> $rs['mm']) + ($x & $rs['nn']); + } + return $x; + } + + /** + * Initialize a Reed-Solomon codec and returns an array of values. + * @param $symsize (int) symbol size, bits + * @param $gfpoly (int) Field generator polynomial coefficients + * @param $fcr (int) first root of RS code generator polynomial, index form + * @param $prim (int) primitive element to generate polynomial roots + * @param $nroots (int) RS code generator polynomial degree (number of roots) + * @param $pad (int) padding bytes at front of shortened block + * @return array Array of RS values:
      • mm = Bits per symbol;
      • nn = Symbols per block;
      • alpha_to = log lookup table array;
      • index_of = Antilog lookup table array;
      • genpoly = Generator polynomial array;
      • nroots = Number of generator;
      • roots = number of parity symbols;
      • fcr = First consecutive root, index form;
      • prim = Primitive element, index form;
      • iprim = prim-th root of 1, index form;
      • pad = Padding bytes in shortened block;
      • gfpoly
      . + */ + protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) { + // Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2) + $rs = null; + // Check parameter ranges + if (($symsize < 0) OR ($symsize > 8)) { + return $rs; + } + if (($fcr < 0) OR ($fcr >= (1<<$symsize))) { + return $rs; + } + if (($prim <= 0) OR ($prim >= (1<<$symsize))) { + return $rs; + } + if (($nroots < 0) OR ($nroots >= (1<<$symsize))) { + return $rs; + } + if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) { + return $rs; + } + $rs = array(); + $rs['mm'] = $symsize; + $rs['nn'] = (1 << $symsize) - 1; + $rs['pad'] = $pad; + $rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0); + $rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0); + // PHP style macro replacement ;) + $NN =& $rs['nn']; + $A0 =& $NN; + // Generate Galois field lookup tables + $rs['index_of'][0] = $A0; // log(zero) = -inf + $rs['alpha_to'][$A0] = 0; // alpha**-inf = 0 + $sr = 1; + for ($i=0; $i<$rs['nn']; ++$i) { + $rs['index_of'][$sr] = $i; + $rs['alpha_to'][$i] = $sr; + $sr <<= 1; + if ($sr & (1 << $symsize)) { + $sr ^= $gfpoly; + } + $sr &= $rs['nn']; + } + if ($sr != 1) { + // field generator polynomial is not primitive! + return NULL; + } + // Form RS code generator polynomial from its roots + $rs['genpoly'] = array_fill(0, ($nroots + 1), 0); + $rs['fcr'] = $fcr; + $rs['prim'] = $prim; + $rs['nroots'] = $nroots; + $rs['gfpoly'] = $gfpoly; + // Find prim-th root of 1, used in decoding + for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) { + ; // intentional empty-body loop! + } + $rs['iprim'] = (int)($iprim / $prim); + $rs['genpoly'][0] = 1; + for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) { + $rs['genpoly'][$i+1] = 1; + // Multiply rs->genpoly[] by @**(root + x) + for ($j = $i; $j > 0; --$j) { + if ($rs['genpoly'][$j] != 0) { + $rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)]; + } else { + $rs['genpoly'][$j] = $rs['genpoly'][$j-1]; + } + } + // rs->genpoly[0] can never be zero + $rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)]; + } + // convert rs->genpoly[] to index form for quicker encoding + for ($i = 0; $i <= $nroots; ++$i) { + $rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]]; + } + return $rs; + } + + /** + * Encode a Reed-Solomon codec and returns the parity array + * @param $rs (array) RS values + * @param $data (array) data + * @param $parity (array) parity + * @return parity array + */ + protected function encode_rs_char($rs, $data, $parity) { + $MM =& $rs['mm']; // bits per symbol + $NN =& $rs['nn']; // the total number of symbols in a RS block + $ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form + $INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form + $GENPOLY =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form + $NROOTS =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block + $FCR =& $rs['fcr']; // first consecutive root, index form + $PRIM =& $rs['prim']; // primitive element, index form + $IPRIM =& $rs['iprim']; // prim-th root of 1, index form + $PAD =& $rs['pad']; // the number of pad symbols in a block + $A0 =& $NN; + $parity = array_fill(0, $NROOTS, 0); + for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) { + $feedback = $INDEX_OF[$data[$i] ^ $parity[0]]; + if ($feedback != $A0) { + // feedback term is non-zero + // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must + // always be for the polynomials constructed by init_rs() + $feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback); + for ($j=1; $j < $NROOTS; ++$j) { + $parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])]; + } + } + // Shift + array_shift($parity); + if ($feedback != $A0) { + array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]); + } else { + array_push($parity, 0); + } + } + return $parity; + } + +} // end QRcode class + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/sRGB.icc b/inc/3rdparty/libraries/tcpdf/include/sRGB.icc new file mode 100644 index 0000000000000000000000000000000000000000..1d8f7419c3bf2c6a3dd78f2c679fdefbda1776a3 GIT binary patch literal 6922 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 VE+#f@4I@33!-(c_IEmSS@NW)(3LO9d literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php new file mode 100644 index 000000000..77f1c4cc8 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php @@ -0,0 +1,462 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : Array of WEB safe colors +// +//============================================================+ + +/** + * @file + * PHP color class for TCPDF + * @author Nicola Asuni + * @package com.tecnick.tcpdf + */ + +/** + * @class TCPDF_COLORS + * PHP color class for TCPDF + * @package com.tecnick.tcpdf + * @version 1.0.004 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_COLORS { + + /** + * Array of WEB safe colors + * @public static + */ + public static $webcolor = array ( + 'aliceblue' => 'f0f8ff', + 'antiquewhite' => 'faebd7', + 'aqua' => '00ffff', + 'aquamarine' => '7fffd4', + 'azure' => 'f0ffff', + 'beige' => 'f5f5dc', + 'bisque' => 'ffe4c4', + 'black' => '000000', + 'blanchedalmond' => 'ffebcd', + 'blue' => '0000ff', + 'blueviolet' => '8a2be2', + 'brown' => 'a52a2a', + 'burlywood' => 'deb887', + 'cadetblue' => '5f9ea0', + 'chartreuse' => '7fff00', + 'chocolate' => 'd2691e', + 'coral' => 'ff7f50', + 'cornflowerblue' => '6495ed', + 'cornsilk' => 'fff8dc', + 'crimson' => 'dc143c', + 'cyan' => '00ffff', + 'darkblue' => '00008b', + 'darkcyan' => '008b8b', + 'darkgoldenrod' => 'b8860b', + 'dkgray' => 'a9a9a9', + 'darkgray' => 'a9a9a9', + 'darkgrey' => 'a9a9a9', + 'darkgreen' => '006400', + 'darkkhaki' => 'bdb76b', + 'darkmagenta' => '8b008b', + 'darkolivegreen' => '556b2f', + 'darkorange' => 'ff8c00', + 'darkorchid' => '9932cc', + 'darkred' => '8b0000', + 'darksalmon' => 'e9967a', + 'darkseagreen' => '8fbc8f', + 'darkslateblue' => '483d8b', + 'darkslategray' => '2f4f4f', + 'darkslategrey' => '2f4f4f', + 'darkturquoise' => '00ced1', + 'darkviolet' => '9400d3', + 'deeppink' => 'ff1493', + 'deepskyblue' => '00bfff', + 'dimgray' => '696969', + 'dimgrey' => '696969', + 'dodgerblue' => '1e90ff', + 'firebrick' => 'b22222', + 'floralwhite' => 'fffaf0', + 'forestgreen' => '228b22', + 'fuchsia' => 'ff00ff', + 'gainsboro' => 'dcdcdc', + 'ghostwhite' => 'f8f8ff', + 'gold' => 'ffd700', + 'goldenrod' => 'daa520', + 'gray' => '808080', + 'grey' => '808080', + 'green' => '008000', + 'greenyellow' => 'adff2f', + 'honeydew' => 'f0fff0', + 'hotpink' => 'ff69b4', + 'indianred' => 'cd5c5c', + 'indigo' => '4b0082', + 'ivory' => 'fffff0', + 'khaki' => 'f0e68c', + 'lavender' => 'e6e6fa', + 'lavenderblush' => 'fff0f5', + 'lawngreen' => '7cfc00', + 'lemonchiffon' => 'fffacd', + 'lightblue' => 'add8e6', + 'lightcoral' => 'f08080', + 'lightcyan' => 'e0ffff', + 'lightgoldenrodyellow' => 'fafad2', + 'ltgray' => 'd3d3d3', + 'lightgray' => 'd3d3d3', + 'lightgrey' => 'd3d3d3', + 'lightgreen' => '90ee90', + 'lightpink' => 'ffb6c1', + 'lightsalmon' => 'ffa07a', + 'lightseagreen' => '20b2aa', + 'lightskyblue' => '87cefa', + 'lightslategray' => '778899', + 'lightslategrey' => '778899', + 'lightsteelblue' => 'b0c4de', + 'lightyellow' => 'ffffe0', + 'lime' => '00ff00', + 'limegreen' => '32cd32', + 'linen' => 'faf0e6', + 'magenta' => 'ff00ff', + 'maroon' => '800000', + 'mediumaquamarine' => '66cdaa', + 'mediumblue' => '0000cd', + 'mediumorchid' => 'ba55d3', + 'mediumpurple' => '9370d8', + 'mediumseagreen' => '3cb371', + 'mediumslateblue' => '7b68ee', + 'mediumspringgreen' => '00fa9a', + 'mediumturquoise' => '48d1cc', + 'mediumvioletred' => 'c71585', + 'midnightblue' => '191970', + 'mintcream' => 'f5fffa', + 'mistyrose' => 'ffe4e1', + 'moccasin' => 'ffe4b5', + 'navajowhite' => 'ffdead', + 'navy' => '000080', + 'oldlace' => 'fdf5e6', + 'olive' => '808000', + 'olivedrab' => '6b8e23', + 'orange' => 'ffa500', + 'orangered' => 'ff4500', + 'orchid' => 'da70d6', + 'palegoldenrod' => 'eee8aa', + 'palegreen' => '98fb98', + 'paleturquoise' => 'afeeee', + 'palevioletred' => 'd87093', + 'papayawhip' => 'ffefd5', + 'peachpuff' => 'ffdab9', + 'peru' => 'cd853f', + 'pink' => 'ffc0cb', + 'plum' => 'dda0dd', + 'powderblue' => 'b0e0e6', + 'purple' => '800080', + 'red' => 'ff0000', + 'rosybrown' => 'bc8f8f', + 'royalblue' => '4169e1', + 'saddlebrown' => '8b4513', + 'salmon' => 'fa8072', + 'sandybrown' => 'f4a460', + 'seagreen' => '2e8b57', + 'seashell' => 'fff5ee', + 'sienna' => 'a0522d', + 'silver' => 'c0c0c0', + 'skyblue' => '87ceeb', + 'slateblue' => '6a5acd', + 'slategray' => '708090', + 'slategrey' => '708090', + 'snow' => 'fffafa', + 'springgreen' => '00ff7f', + 'steelblue' => '4682b4', + 'tan' => 'd2b48c', + 'teal' => '008080', + 'thistle' => 'd8bfd8', + 'tomato' => 'ff6347', + 'turquoise' => '40e0d0', + 'violet' => 'ee82ee', + 'wheat' => 'f5deb3', + 'white' => 'ffffff', + 'whitesmoke' => 'f5f5f5', + 'yellow' => 'ffff00', + 'yellowgreen' => '9acd32' + ); // end of web colors + + /** + * Array of valid JavaScript color names + * @public static + */ + public static $jscolor = array ('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray'); + + /** + * Array of Spot colors (C,M,Y,K,name) + * Color keys must be in lowercase and without spaces. + * As long as no open standard for spot colours exists, you have to buy a colour book by one of the colour manufacturers and insert the values and names of spot colours directly. + * Common industry standard spot colors are: ANPA-COLOR, DIC, FOCOLTONE, GCMI, HKS, PANTONE, TOYO, TRUMATCH. + * @public static + */ + public static $spotcolor = array ( + // special registration colors + 'none' => array( 0, 0, 0, 0, 'None'), + 'all' => array(100, 100, 100, 100, 'All'), + // standard CMYK colors + 'cyan' => array(100, 0, 0, 0, 'Cyan'), + 'magenta' => array( 0, 100, 0, 0, 'Magenta'), + 'yellow' => array( 0, 0, 100, 0, 'Yellow'), + 'key' => array( 0, 0, 0, 100, 'Key'), + // alias + 'white' => array( 0, 0, 0, 0, 'White'), + 'black' => array( 0, 0, 0, 100, 'Black'), + // standard RGB colors + 'red' => array( 0, 100, 100, 0, 'Red'), + 'green' => array(100, 0, 100, 0, 'Green'), + 'blue' => array(100, 100, 0, 0, 'Blue'), + // Add here standard spot colors or dynamically define them with AddSpotColor() + // ... + ); // end of spot colors + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + /** + * Return the Spot color array. + * @param $name (string) Name of the spot color. + * @param $spotc (array) Reference to an array of spot colors. + * @return (array) Spot color array or false if not defined. + * @since 5.9.125 (2011-10-03) + * @public static + */ + public static function getSpotColor($name, &$spotc) { + if (isset($spotc[$name])) { + return $spotc[$name]; + } + $color = preg_replace('/[\s]*/', '', $name); // remove extra spaces + $color = strtolower($color); + if (isset(self::$spotcolor[$color])) { + if (!isset($spotc[$name])) { + $i = (1 + count($spotc)); + $spotc[$name] = array('C' => self::$spotcolor[$color][0], 'M' => self::$spotcolor[$color][1], 'Y' => self::$spotcolor[$color][2], 'K' => self::$spotcolor[$color][3], 'name' => self::$spotcolor[$color][4], 'i' => $i); + } + return $spotc[self::$spotcolor[$color][4]]; + } + return false; + } + + /** + * Returns an array (RGB or CMYK) from an html color name, or a six-digit (i.e. #3FE5AA), or three-digit (i.e. #7FF) hexadecimal color, or a javascript color array, or javascript color name. + * @param $hcolor (string) HTML color. + * @param $spotc (array) Reference to an array of spot colors. + * @param $defcol (array) Color to return in case of error. + * @return array RGB or CMYK color, or false in case of error. + * @public static + */ + public static function convertHTMLColorToDec($hcolor, &$spotc, $defcol=array('R'=>128,'G'=>128,'B'=>128)) { + $color = preg_replace('/[\s]*/', '', $hcolor); // remove extra spaces + $color = strtolower($color); + // check for javascript color array syntax + if (strpos($color, '[') !== false) { + if (preg_match('/[\[][\"\'](t|g|rgb|cmyk)[\"\'][\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\]]/', $color, $m) > 0) { + $returncolor = array(); + switch ($m[1]) { + case 'cmyk': { + // RGB + $returncolor['C'] = max(0, min(100, (floatval($m[2]) * 100))); + $returncolor['M'] = max(0, min(100, (floatval($m[3]) * 100))); + $returncolor['Y'] = max(0, min(100, (floatval($m[4]) * 100))); + $returncolor['K'] = max(0, min(100, (floatval($m[5]) * 100))); + break; + } + case 'rgb': { + // RGB + $returncolor['R'] = max(0, min(255, (floatval($m[2]) * 255))); + $returncolor['G'] = max(0, min(255, (floatval($m[3]) * 255))); + $returncolor['B'] = max(0, min(255, (floatval($m[4]) * 255))); + break; + } + case 'g': { + // grayscale + $returncolor['G'] = max(0, min(255, (floatval($m[2]) * 255))); + break; + } + case 't': + default: { + // transparent (empty array) + break; + } + } + return $returncolor; + } + } elseif ((substr($color, 0, 4) != 'cmyk') AND (substr($color, 0, 3) != 'rgb') AND (($dotpos = strpos($color, '.')) !== false)) { + // remove class parent (i.e.: color.red) + $color = substr($color, ($dotpos + 1)); + if ($color == 'transparent') { + // transparent (empty array) + return array(); + } + } + if (strlen($color) == 0) { + return $defcol; + } + // RGB ARRAY + if (substr($color, 0, 3) == 'rgb') { + $codes = substr($color, 4); + $codes = str_replace(')', '', $codes); + $returncolor = explode(',', $codes); + foreach ($returncolor as $key => $val) { + if (strpos($val, '%') > 0) { + // percentage + $returncolor[$key] = (255 * intval($val) / 100); + } else { + $returncolor[$key] = intval($val); + } + // normalize value + $returncolor[$key] = max(0, min(255, $returncolor[$key])); + } + return $returncolor; + } + // CMYK ARRAY + if (substr($color, 0, 4) == 'cmyk') { + $codes = substr($color, 5); + $codes = str_replace(')', '', $codes); + $returncolor = explode(',', $codes); + foreach ($returncolor as $key => $val) { + if (strpos($val, '%') !== false) { + // percentage + $returncolor[$key] = (100 * intval($val) / 100); + } else { + $returncolor[$key] = intval($val); + } + // normalize value + $returncolor[$key] = max(0, min(100, $returncolor[$key])); + } + return $returncolor; + } + if ($color[0] != '#') { + // COLOR NAME + if (isset(self::$webcolor[$color])) { + // web color + $color_code = self::$webcolor[$color]; + } else { + // spot color + $returncolor = self::getSpotColor($color, $spotc); + if ($returncolor === false) { + $returncolor = $defcol; + } + return $returncolor; + } + } else { + $color_code = substr($color, 1); + } + // HEXADECIMAL REPRESENTATION + switch (strlen($color_code)) { + case 3: { + // 3-digit RGB hexadecimal representation + $r = substr($color_code, 0, 1); + $g = substr($color_code, 1, 1); + $b = substr($color_code, 2, 1); + $returncolor = array(); + $returncolor['R'] = max(0, min(255, hexdec($r.$r))); + $returncolor['G'] = max(0, min(255, hexdec($g.$g))); + $returncolor['B'] = max(0, min(255, hexdec($b.$b))); + break; + } + case 6: { + // 6-digit RGB hexadecimal representation + $returncolor = array(); + $returncolor['R'] = max(0, min(255, hexdec(substr($color_code, 0, 2)))); + $returncolor['G'] = max(0, min(255, hexdec(substr($color_code, 2, 2)))); + $returncolor['B'] = max(0, min(255, hexdec(substr($color_code, 4, 2)))); + break; + } + case 8: { + // 8-digit CMYK hexadecimal representation + $returncolor = array(); + $returncolor['C'] = max(0, min(100, round(hexdec(substr($color_code, 0, 2)) / 2.55))); + $returncolor['M'] = max(0, min(100, round(hexdec(substr($color_code, 2, 2)) / 2.55))); + $returncolor['Y'] = max(0, min(100, round(hexdec(substr($color_code, 4, 2)) / 2.55))); + $returncolor['K'] = max(0, min(100, round(hexdec(substr($color_code, 6, 2)) / 2.55))); + break; + } + default: { + $returncolor = $defcol; + break; + } + } + return $returncolor; + } + + /** + * Convert a color array into a string representation. + * @param $c (array) Array of colors. + * @return (string) The color array representation. + * @since 5.9.137 (2011-12-01) + * @public static + */ + public static function getColorStringFromArray($c) { + $c = array_values($c); + $color = '['; + switch (count($c)) { + case 4: { + // CMYK + $color .= sprintf('%F %F %F %F', (max(0, min(100, floatval($c[0]))) / 100), (max(0, min(100, floatval($c[1]))) / 100), (max(0, min(100, floatval($c[2]))) / 100), (max(0, min(100, floatval($c[3]))) / 100)); + break; + } + case 3: { + // RGB + $color .= sprintf('%F %F %F', (max(0, min(255, floatval($c[0]))) / 255), (max(0, min(255, floatval($c[1]))) / 255), (max(0, min(255, floatval($c[2]))) / 255)); + break; + } + case 1: { + // grayscale + $color .= sprintf('%F', (max(0, min(255, floatval($c[0]))) / 255)); + break; + } + } + $color .= ']'; + return $color; + } + + /** + * Convert color to javascript color. + * @param $color (string) color name or "#RRGGBB" + * @protected + * @since 2.1.002 (2008-02-12) + * @public static + */ + public static function _JScolor($color) { + if (substr($color, 0, 1) == '#') { + return sprintf("['RGB',%F,%F,%F]", (hexdec(substr($color, 1, 2)) / 255), (hexdec(substr($color, 3, 2)) / 255), (hexdec(substr($color, 5, 2)) / 255)); + } + if (!in_array($color, self::$jscolor)) { + // default transparent color + $color = $jscolor[0]; + } + return 'color.'.$color; + } + + +} // END OF TCPDF_COLORS CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php new file mode 100644 index 000000000..96584db54 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php @@ -0,0 +1,481 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters). +// +//============================================================+ + +/** + * @file + * This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters).
      + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.001 + */ + +/** + * @class TCPDF_FILTERS + * This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters).
      + * @package com.tecnick.tcpdf + * @brief This is a PHP class for decoding common PDF filters. + * @version 1.0.001 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_FILTERS { + + /** + * Define a list of available filter decoders. + * @private static + */ + private static $available_filters = array('ASCIIHexDecode', 'ASCII85Decode', 'LZWDecode', 'FlateDecode', 'RunLengthDecode'); + +// ----------------------------------------------------------------------------- + + /** + * Get a list of available decoding filters. + * @return (array) Array of available filter decoders. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function getAvailableFilters() { + return self::$available_filters; + } + + /** + * Decode data using the specified filter type. + * @param $filter (string) Filter name. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilter($filter, $data) { + switch ($filter) { + case 'ASCIIHexDecode': { + return self::decodeFilterASCIIHexDecode($data); + break; + } + case 'ASCII85Decode': { + return self::decodeFilterASCII85Decode($data); + break; + } + case 'LZWDecode': { + return self::decodeFilterLZWDecode($data); + break; + } + case 'FlateDecode': { + return self::decodeFilterFlateDecode($data); + break; + } + case 'RunLengthDecode': { + return self::decodeFilterRunLengthDecode($data); + break; + } + case 'CCITTFaxDecode': { + return self::decodeFilterCCITTFaxDecode($data); + break; + } + case 'JBIG2Decode': { + return self::decodeFilterJBIG2Decode($data); + break; + } + case 'DCTDecode': { + return self::decodeFilterDCTDecode($data); + break; + } + case 'JPXDecode': { + return self::decodeFilterJPXDecode($data); + break; + } + case 'Crypt': { + return self::decodeFilterCrypt($data); + break; + } + default: { + return self::decodeFilterStandard($data); + break; + } + } + } + + // --- FILTERS (PDF 32000-2008 - 7.4 Filters) ------------------------------ + + /** + * Standard + * Default decoding filter (leaves data unchanged). + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterStandard($data) { + return $data; + } + + /** + * ASCIIHexDecode + * Decodes data encoded in an ASCII hexadecimal representation, reproducing the original binary data. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterASCIIHexDecode($data) { + // intialize string to return + $decoded = ''; + // all white-space characters shall be ignored + $data = preg_replace('/[\s]/', '', $data); + // check for EOD character: GREATER-THAN SIGN (3Eh) + $eod = strpos($data, '>'); + if ($eod !== false) { + // remove EOD and extra data (if any) + $data = substr($data, 0, $eod); + $eod = true; + } + // get data length + $data_length = strlen($data); + if (($data_length % 2) != 0) { + // odd number of hexadecimal digits + if ($eod) { + // EOD shall behave as if a 0 (zero) followed the last digit + $data = substr($data, 0, -1).'0'.substr($data, -1); + } else { + self::Error('decodeFilterASCIIHexDecode: invalid code'); + } + } + // check for invalid characters + if (preg_match('/[^a-fA-F\d]/', $data) > 0) { + self::Error('decodeFilterASCIIHexDecode: invalid code'); + } + // get one byte of binary data for each pair of ASCII hexadecimal digits + $decoded = pack('H*', $data); + return $decoded; + } + + /** + * ASCII85Decode + * Decodes data encoded in an ASCII base-85 representation, reproducing the original binary data. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterASCII85Decode($data) { + // intialize string to return + $decoded = ''; + // all white-space characters shall be ignored + $data = preg_replace('/[\s]/', '', $data); + // remove start sequence 2-character sequence <~ (3Ch)(7Eh) + if (strpos($data, '<~') !== false) { + // remove EOD and extra data (if any) + $data = substr($data, 2); + } + // check for EOD: 2-character sequence ~> (7Eh)(3Eh) + $eod = strpos($data, '~>'); + if ($eod !== false) { + // remove EOD and extra data (if any) + $data = substr($data, 0, $eod); + } + // data length + $data_length = strlen($data); + // check for invalid characters + if (preg_match('/[^\x21-\x75,\x74]/', $data) > 0) { + self::Error('decodeFilterASCII85Decode: invalid code'); + } + // z sequence + $zseq = chr(0).chr(0).chr(0).chr(0); + // position inside a group of 4 bytes (0-3) + $group_pos = 0; + $tuple = 0; + $pow85 = array((85*85*85*85), (85*85*85), (85*85), 85, 1); + $last_pos = ($data_length - 1); + // for each byte + for ($i = 0; $i < $data_length; ++$i) { + // get char value + $char = ord($data[$i]); + if ($char == 122) { // 'z' + if ($group_pos == 0) { + $decoded .= $zseq; + } else { + self::Error('decodeFilterASCII85Decode: invalid code'); + } + } else { + // the value represented by a group of 5 characters should never be greater than 2^32 - 1 + $tuple += (($char - 33) * $pow85[$group_pos]); + if ($group_pos == 4) { + $decoded .= chr($tuple >> 24).chr($tuple >> 16).chr($tuple >> 8).chr($tuple); + $tuple = 0; + $group_pos = 0; + } else { + ++$group_pos; + } + } + } + if ($group_pos > 1) { + $tuple += $pow85[($group_pos - 1)]; + } + // last tuple (if any) + switch ($group_pos) { + case 4: { + $decoded .= chr($tuple >> 24).chr($tuple >> 16).chr($tuple >> 8); + break; + } + case 3: { + $decoded .= chr($tuple >> 24).chr($tuple >> 16); + break; + } + case 2: { + $decoded .= chr($tuple >> 24); + break; + } + case 1: { + self::Error('decodeFilterASCII85Decode: invalid code'); + break; + } + } + return $decoded; + } + + /** + * LZWDecode + * Decompresses data encoded using the LZW (Lempel-Ziv-Welch) adaptive compression method, reproducing the original text or binary data. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterLZWDecode($data) { + // intialize string to return + $decoded = ''; + // data length + $data_length = strlen($data); + // convert string to binary string + $bitstring = ''; + for ($i = 0; $i < $data_length; ++$i) { + $bitstring .= sprintf('%08b', ord($data{$i})); + } + // get the number of bits + $data_length = strlen($bitstring); + // initialize code length in bits + $bitlen = 9; + // initialize dictionary index + $dix = 258; + // initialize the dictionary (with the first 256 entries). + $dictionary = array(); + for ($i = 0; $i < 256; ++$i) { + $dictionary[$i] = chr($i); + } + // previous val + $prev_index = 0; + // while we encounter EOD marker (257), read code_length bits + while (($data_length > 0) AND (($index = bindec(substr($bitstring, 0, $bitlen))) != 257)) { + // remove read bits from string + $bitstring = substr($bitstring, $bitlen); + // update number of bits + $data_length -= $bitlen; + if ($index == 256) { // clear-table marker + // reset code length in bits + $bitlen = 9; + // reset dictionary index + $dix = 258; + $prev_index = 256; + // reset the dictionary (with the first 256 entries). + $dictionary = array(); + for ($i = 0; $i < 256; ++$i) { + $dictionary[$i] = chr($i); + } + } elseif ($prev_index == 256) { + // first entry + $decoded .= $dictionary[$index]; + $prev_index = $index; + } else { + // check if index exist in the dictionary + if ($index < $dix) { + // index exist on dictionary + $decoded .= $dictionary[$index]; + $dic_val = $dictionary[$prev_index].$dictionary[$index][0]; + // store current index + $prev_index = $index; + } else { + // index do not exist on dictionary + $dic_val = $dictionary[$prev_index].$dictionary[$prev_index][0]; + $decoded .= $dic_val; + } + // update dictionary + $dictionary[$dix] = $dic_val; + ++$dix; + // change bit length by case + if ($dix == 2047) { + $bitlen = 12; + } elseif ($dix == 1023) { + $bitlen = 11; + } elseif ($dix == 511) { + $bitlen = 10; + } + } + } + return $decoded; + } + + /** + * FlateDecode + * Decompresses data encoded using the zlib/deflate compression method, reproducing the original text or binary data. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterFlateDecode($data) { + // intialize string to return + $decoded = @gzuncompress($data); + if ($decoded === false) { + self::Error('decodeFilterFlateDecode: invalid code'); + } + return $decoded; + } + + /** + * RunLengthDecode + * Decompresses data encoded using a byte-oriented run-length encoding algorithm. + * @param $data (string) Data to decode. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterRunLengthDecode($data) { + // intialize string to return + $decoded = ''; + // data length + $data_length = strlen($data); + $i = 0; + while($i < $data_length) { + // get current byte value + $byte = ord($data{$i}); + if ($byte == 128) { + // a length value of 128 denote EOD + break; + } elseif ($byte < 128) { + // if the length byte is in the range 0 to 127 + // the following length + 1 (1 to 128) bytes shall be copied literally during decompression + $decoded .= substr($data, ($i + 1), ($byte + 1)); + // move to next block + $i += ($byte + 2); + } else { + // if length is in the range 129 to 255, + // the following single byte shall be copied 257 - length (2 to 128) times during decompression + $decoded .= str_repeat($data{($i + 1)}, (257 - $byte)); + // move to next block + $i += 2; + } + } + return $decoded; + } + + /** + * CCITTFaxDecode (NOT IMPLEMETED - RETURN AN EXCEPTION) + * Decompresses data encoded using the CCITT facsimile standard, reproducing the original data (typically monochrome image data at 1 bit per pixel). + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterCCITTFaxDecode($data) { + self::Error('~decodeFilterCCITTFaxDecode: this method has not been yet implemented'); + //return $data; + } + + /** + * JBIG2Decode (NOT IMPLEMETED - RETURN AN EXCEPTION) + * Decompresses data encoded using the JBIG2 standard, reproducing the original monochrome (1 bit per pixel) image data (or an approximation of that data). + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterJBIG2Decode($data) { + self::Error('~decodeFilterJBIG2Decode: this method has not been yet implemented'); + //return $data; + } + + /** + * DCTDecode (NOT IMPLEMETED - RETURN AN EXCEPTION) + * Decompresses data encoded using a DCT (discrete cosine transform) technique based on the JPEG standard, reproducing image sample data that approximates the original data. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterDCTDecode($data) { + self::Error('~decodeFilterDCTDecode: this method has not been yet implemented'); + //return $data; + } + + /** + * JPXDecode (NOT IMPLEMETED - RETURN AN EXCEPTION) + * Decompresses data encoded using the wavelet-based JPEG2000 standard, reproducing the original image data. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterJPXDecode($data) { + self::Error('~decodeFilterJPXDecode: this method has not been yet implemented'); + //return $data; + } + + /** + * Crypt (NOT IMPLEMETED - RETURN AN EXCEPTION) + * Decrypts data encrypted by a security handler, reproducing the data as it was before encryption. + * @param $data (string) Data to decode. + * @return Decoded data string. + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function decodeFilterCrypt($data) { + self::Error('~decodeFilterCrypt: this method has not been yet implemented'); + //return $data; + } + + // --- END FILTERS SECTION ------------------------------------------------- + + /** + * Throw an exception. + * @param $msg (string) The error message + * @since 1.0.000 (2011-05-23) + * @public static + */ + public static function Error($msg) { + throw new Exception('TCPDF_PARSER ERROR: '.$msg); + } + +} // END OF TCPDF_FILTERS CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php new file mode 100644 index 000000000..974e72ec7 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php @@ -0,0 +1,18447 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : Unicode data and encoding maps for TCPDF. +// +//============================================================+ + +/** + * @file + * Unicode data and encoding maps for TCPDF. + * @author Nicola Asuni + * @package com.tecnick.tcpdf + */ + +/** + * @class TCPDF_FONT_DATA + * Unicode data and encoding maps for TCPDF. + * @package com.tecnick.tcpdf + * @version 1.0.001 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_FONT_DATA { + +/** + * Unicode code for Left-to-Right Mark. + * @public + */ +public static $uni_LRM = 8206; + +/** + * Unicode code for Right-to-Left Mark. + * @public + */ +public static $uni_RLM = 8207; + +/** + * Unicode code for Left-to-Right Embedding. + * @public + */ +public static $uni_LRE = 8234; + +/** + * Unicode code for Right-to-Left Embedding. + * @public + */ +public static $uni_RLE = 8235; + +/** + * Unicode code for Pop Directional Format. + * @public + */ +public static $uni_PDF = 8236; + +/** + * Unicode code for Left-to-Right Override. + * @public + */ +public static $uni_LRO = 8237; + +/** + * Unicode code for Right-to-Left Override. + * @public + */ +public static $uni_RLO = 8238; + +/** + * Pattern to test RTL (Righ-To-Left) strings using regular expressions. + * @public + */ +public static $uni_RE_PATTERN_RTL = "/( + \xD6\xBE # R + | \xD7[\x80\x83\x86\x90-\xAA\xB0-\xB4] # R + | \xDF[\x80-\xAA\xB4\xB5\xBA] # R + | \xE2\x80\x8F # R + | \xEF\xAC[\x9D\x9F\xA0-\xA8\xAA-\xB6\xB8-\xBC\xBE] # R + | \xEF\xAD[\x80\x81\x83\x84\x86-\x8F] # R + | \xF0\x90\xA0[\x80-\x85\x88\x8A-\xB5\xB7\xB8\xBC\xBF] # R + | \xF0\x90\xA4[\x80-\x99] # R + | \xF0\x90\xA8[\x80\x90-\x93\x95-\x97\x99-\xB3] # R + | \xF0\x90\xA9[\x80-\x87\x90-\x98] # R + | \xE2\x80[\xAB\xAE] # RLE & RLO + )/x"; + +/** + * Pattern to test Arabic strings using regular expressions. Source: http://www.w3.org/International/questions/qa-forms-utf-8 + * @public + */ +public static $uni_RE_PATTERN_ARABIC = "/( + \xD8[\x80-\x83\x8B\x8D\x9B\x9E\x9F\xA1-\xBA] # AL + | \xD9[\x80-\x8A\xAD-\xAF\xB1-\xBF] # AL + | \xDA[\x80-\xBF] # AL + | \xDB[\x80-\x95\x9D\xA5\xA6\xAE\xAF\xBA-\xBF] # AL + | \xDC[\x80-\x8D\x90\x92-\xAF] # AL + | \xDD[\x8D-\xAD] # AL + | \xDE[\x80-\xA5\xB1] # AL + | \xEF\xAD[\x90-\xBF] # AL + | \xEF\xAE[\x80-\xB1] # AL + | \xEF\xAF[\x93-\xBF] # AL + | \xEF[\xB0-\xB3][\x80-\xBF] # AL + | \xEF\xB4[\x80-\xBD] # AL + | \xEF\xB5[\x90-\xBF] # AL + | \xEF\xB6[\x80-\x8F\x92-\xBF] # AL + | \xEF\xB7[\x80-\x87\xB0-\xBC] # AL + | \xEF\xB9[\xB0-\xB4\xB6-\xBF] # AL + | \xEF\xBA[\x80-\xBF] # AL + | \xEF\xBB[\x80-\xBC] # AL + | \xD9[\xA0-\xA9\xAB\xAC] # AN + )/x"; + +/** + * Array of Unicode types. + * @public + */ +public static $uni_type = array( +0=>'BN', +1=>'BN', +2=>'BN', +3=>'BN', +4=>'BN', +5=>'BN', +6=>'BN', +7=>'BN', +8=>'BN', +9=>'S', +10=>'B', +11=>'S', +12=>'WS', +13=>'B', +14=>'BN', +15=>'BN', +16=>'BN', +17=>'BN', +18=>'BN', +19=>'BN', +20=>'BN', +21=>'BN', +22=>'BN', +23=>'BN', +24=>'BN', +25=>'BN', +26=>'BN', +27=>'BN', +28=>'B', +29=>'B', +30=>'B', +31=>'S', +32=>'WS', +33=>'ON', +34=>'ON', +35=>'ET', +36=>'ET', +37=>'ET', +38=>'ON', +39=>'ON', +40=>'ON', +41=>'ON', +42=>'ON', +43=>'ES', +44=>'CS', +45=>'ES', +46=>'CS', +47=>'CS', +48=>'EN', +49=>'EN', +50=>'EN', +51=>'EN', +52=>'EN', +53=>'EN', +54=>'EN', +55=>'EN', +56=>'EN', +57=>'EN', +58=>'CS', +59=>'ON', +60=>'ON', +61=>'ON', +62=>'ON', +63=>'ON', +64=>'ON', +65=>'L', +66=>'L', +67=>'L', +68=>'L', +69=>'L', +70=>'L', +71=>'L', +72=>'L', +73=>'L', +74=>'L', +75=>'L', +76=>'L', +77=>'L', +78=>'L', +79=>'L', +80=>'L', +81=>'L', +82=>'L', +83=>'L', +84=>'L', +85=>'L', +86=>'L', +87=>'L', +88=>'L', +89=>'L', +90=>'L', +91=>'ON', +92=>'ON', +93=>'ON', +94=>'ON', +95=>'ON', +96=>'ON', +97=>'L', +98=>'L', +99=>'L', +100=>'L', +101=>'L', +102=>'L', +103=>'L', +104=>'L', +105=>'L', +106=>'L', +107=>'L', +108=>'L', +109=>'L', +110=>'L', +111=>'L', +112=>'L', +113=>'L', +114=>'L', +115=>'L', +116=>'L', +117=>'L', +118=>'L', +119=>'L', +120=>'L', +121=>'L', +122=>'L', +123=>'ON', +124=>'ON', +125=>'ON', +126=>'ON', +127=>'BN', +128=>'BN', +129=>'BN', +130=>'BN', +131=>'BN', +132=>'BN', +133=>'B', +134=>'BN', +135=>'BN', +136=>'BN', +137=>'BN', +138=>'BN', +139=>'BN', +140=>'BN', +141=>'BN', +142=>'BN', +143=>'BN', +144=>'BN', +145=>'BN', +146=>'BN', +147=>'BN', +148=>'BN', +149=>'BN', +150=>'BN', +151=>'BN', +152=>'BN', +153=>'BN', +154=>'BN', +155=>'BN', +156=>'BN', +157=>'BN', +158=>'BN', +159=>'BN', +160=>'CS', +161=>'ON', +162=>'ET', +163=>'ET', +164=>'ET', +165=>'ET', +166=>'ON', +167=>'ON', +168=>'ON', +169=>'ON', +170=>'L', +171=>'ON', +172=>'ON', +173=>'BN', +174=>'ON', +175=>'ON', +176=>'ET', +177=>'ET', +178=>'EN', +179=>'EN', +180=>'ON', +181=>'L', +182=>'ON', +183=>'ON', +184=>'ON', +185=>'EN', +186=>'L', +187=>'ON', +188=>'ON', +189=>'ON', +190=>'ON', +191=>'ON', +192=>'L', +193=>'L', +194=>'L', +195=>'L', +196=>'L', +197=>'L', +198=>'L', +199=>'L', +200=>'L', +201=>'L', +202=>'L', +203=>'L', +204=>'L', +205=>'L', +206=>'L', +207=>'L', +208=>'L', +209=>'L', +210=>'L', +211=>'L', +212=>'L', +213=>'L', +214=>'L', +215=>'ON', +216=>'L', +217=>'L', +218=>'L', +219=>'L', +220=>'L', +221=>'L', +222=>'L', +223=>'L', +224=>'L', +225=>'L', +226=>'L', +227=>'L', +228=>'L', +229=>'L', +230=>'L', +231=>'L', +232=>'L', +233=>'L', +234=>'L', +235=>'L', +236=>'L', +237=>'L', +238=>'L', +239=>'L', +240=>'L', +241=>'L', +242=>'L', +243=>'L', +244=>'L', +245=>'L', +246=>'L', +247=>'ON', +248=>'L', +249=>'L', +250=>'L', +251=>'L', +252=>'L', +253=>'L', +254=>'L', +255=>'L', +256=>'L', +257=>'L', +258=>'L', +259=>'L', +260=>'L', +261=>'L', +262=>'L', +263=>'L', +264=>'L', +265=>'L', +266=>'L', +267=>'L', +268=>'L', +269=>'L', +270=>'L', +271=>'L', +272=>'L', +273=>'L', +274=>'L', +275=>'L', +276=>'L', +277=>'L', +278=>'L', +279=>'L', +280=>'L', +281=>'L', +282=>'L', +283=>'L', +284=>'L', +285=>'L', +286=>'L', +287=>'L', +288=>'L', +289=>'L', +290=>'L', +291=>'L', +292=>'L', +293=>'L', +294=>'L', +295=>'L', +296=>'L', +297=>'L', +298=>'L', +299=>'L', +300=>'L', +301=>'L', +302=>'L', +303=>'L', +304=>'L', +305=>'L', +306=>'L', +307=>'L', +308=>'L', +309=>'L', +310=>'L', +311=>'L', +312=>'L', +313=>'L', +314=>'L', +315=>'L', +316=>'L', +317=>'L', +318=>'L', +319=>'L', +320=>'L', +321=>'L', +322=>'L', +323=>'L', +324=>'L', +325=>'L', +326=>'L', +327=>'L', +328=>'L', +329=>'L', +330=>'L', +331=>'L', +332=>'L', +333=>'L', +334=>'L', +335=>'L', +336=>'L', +337=>'L', +338=>'L', +339=>'L', +340=>'L', +341=>'L', +342=>'L', +343=>'L', +344=>'L', +345=>'L', +346=>'L', +347=>'L', +348=>'L', +349=>'L', +350=>'L', +351=>'L', +352=>'L', +353=>'L', +354=>'L', +355=>'L', +356=>'L', +357=>'L', +358=>'L', +359=>'L', +360=>'L', +361=>'L', +362=>'L', +363=>'L', +364=>'L', +365=>'L', +366=>'L', +367=>'L', +368=>'L', +369=>'L', +370=>'L', +371=>'L', +372=>'L', +373=>'L', +374=>'L', +375=>'L', +376=>'L', +377=>'L', +378=>'L', +379=>'L', +380=>'L', +381=>'L', +382=>'L', +383=>'L', +384=>'L', +385=>'L', +386=>'L', +387=>'L', +388=>'L', +389=>'L', +390=>'L', +391=>'L', +392=>'L', +393=>'L', +394=>'L', +395=>'L', +396=>'L', +397=>'L', +398=>'L', +399=>'L', +400=>'L', +401=>'L', +402=>'L', +403=>'L', +404=>'L', +405=>'L', +406=>'L', +407=>'L', +408=>'L', +409=>'L', +410=>'L', +411=>'L', +412=>'L', +413=>'L', +414=>'L', +415=>'L', +416=>'L', +417=>'L', +418=>'L', +419=>'L', +420=>'L', +421=>'L', +422=>'L', +423=>'L', +424=>'L', +425=>'L', +426=>'L', +427=>'L', +428=>'L', +429=>'L', +430=>'L', +431=>'L', +432=>'L', +433=>'L', +434=>'L', +435=>'L', +436=>'L', +437=>'L', +438=>'L', +439=>'L', +440=>'L', +441=>'L', +442=>'L', +443=>'L', +444=>'L', +445=>'L', +446=>'L', +447=>'L', +448=>'L', +449=>'L', +450=>'L', +451=>'L', +452=>'L', +453=>'L', +454=>'L', +455=>'L', +456=>'L', +457=>'L', +458=>'L', +459=>'L', +460=>'L', +461=>'L', +462=>'L', +463=>'L', +464=>'L', +465=>'L', +466=>'L', +467=>'L', +468=>'L', +469=>'L', +470=>'L', +471=>'L', +472=>'L', +473=>'L', +474=>'L', +475=>'L', +476=>'L', +477=>'L', +478=>'L', +479=>'L', +480=>'L', +481=>'L', +482=>'L', +483=>'L', +484=>'L', +485=>'L', +486=>'L', +487=>'L', +488=>'L', +489=>'L', +490=>'L', +491=>'L', +492=>'L', +493=>'L', +494=>'L', +495=>'L', +496=>'L', +497=>'L', +498=>'L', +499=>'L', +500=>'L', +501=>'L', +502=>'L', +503=>'L', +504=>'L', +505=>'L', +506=>'L', +507=>'L', +508=>'L', +509=>'L', +510=>'L', +511=>'L', +512=>'L', +513=>'L', +514=>'L', +515=>'L', +516=>'L', +517=>'L', +518=>'L', +519=>'L', +520=>'L', +521=>'L', +522=>'L', +523=>'L', +524=>'L', +525=>'L', +526=>'L', +527=>'L', +528=>'L', +529=>'L', +530=>'L', +531=>'L', +532=>'L', +533=>'L', +534=>'L', +535=>'L', +536=>'L', +537=>'L', +538=>'L', +539=>'L', +540=>'L', +541=>'L', +542=>'L', +543=>'L', +544=>'L', +545=>'L', +546=>'L', +547=>'L', +548=>'L', +549=>'L', +550=>'L', +551=>'L', +552=>'L', +553=>'L', +554=>'L', +555=>'L', +556=>'L', +557=>'L', +558=>'L', +559=>'L', +560=>'L', +561=>'L', +562=>'L', +563=>'L', +564=>'L', +565=>'L', +566=>'L', +567=>'L', +568=>'L', +569=>'L', +570=>'L', +571=>'L', +572=>'L', +573=>'L', +574=>'L', +575=>'L', +576=>'L', +577=>'L', +578=>'L', +579=>'L', +580=>'L', +581=>'L', +582=>'L', +583=>'L', +584=>'L', +585=>'L', +586=>'L', +587=>'L', +588=>'L', +589=>'L', +590=>'L', +591=>'L', +592=>'L', +593=>'L', +594=>'L', +595=>'L', +596=>'L', +597=>'L', +598=>'L', +599=>'L', +600=>'L', +601=>'L', +602=>'L', +603=>'L', +604=>'L', +605=>'L', +606=>'L', +607=>'L', +608=>'L', +609=>'L', +610=>'L', +611=>'L', +612=>'L', +613=>'L', +614=>'L', +615=>'L', +616=>'L', +617=>'L', +618=>'L', +619=>'L', +620=>'L', +621=>'L', +622=>'L', +623=>'L', +624=>'L', +625=>'L', +626=>'L', +627=>'L', +628=>'L', +629=>'L', +630=>'L', +631=>'L', +632=>'L', +633=>'L', +634=>'L', +635=>'L', +636=>'L', +637=>'L', +638=>'L', +639=>'L', +640=>'L', +641=>'L', +642=>'L', +643=>'L', +644=>'L', +645=>'L', +646=>'L', +647=>'L', +648=>'L', +649=>'L', +650=>'L', +651=>'L', +652=>'L', +653=>'L', +654=>'L', +655=>'L', +656=>'L', +657=>'L', +658=>'L', +659=>'L', +660=>'L', +661=>'L', +662=>'L', +663=>'L', +664=>'L', +665=>'L', +666=>'L', +667=>'L', +668=>'L', +669=>'L', +670=>'L', +671=>'L', +672=>'L', +673=>'L', +674=>'L', +675=>'L', +676=>'L', +677=>'L', +678=>'L', +679=>'L', +680=>'L', +681=>'L', +682=>'L', +683=>'L', +684=>'L', +685=>'L', +686=>'L', +687=>'L', +688=>'L', +689=>'L', +690=>'L', +691=>'L', +692=>'L', +693=>'L', +694=>'L', +695=>'L', +696=>'L', +697=>'ON', +698=>'ON', +699=>'L', +700=>'L', +701=>'L', +702=>'L', +703=>'L', +704=>'L', +705=>'L', +706=>'ON', +707=>'ON', +708=>'ON', +709=>'ON', +710=>'ON', +711=>'ON', +712=>'ON', +713=>'ON', +714=>'ON', +715=>'ON', +716=>'ON', +717=>'ON', +718=>'ON', +719=>'ON', +720=>'L', +721=>'L', +722=>'ON', +723=>'ON', +724=>'ON', +725=>'ON', +726=>'ON', +727=>'ON', +728=>'ON', +729=>'ON', +730=>'ON', +731=>'ON', +732=>'ON', +733=>'ON', +734=>'ON', +735=>'ON', +736=>'L', +737=>'L', +738=>'L', +739=>'L', +740=>'L', +741=>'ON', +742=>'ON', +743=>'ON', +744=>'ON', +745=>'ON', +746=>'ON', +747=>'ON', +748=>'ON', +749=>'ON', +750=>'L', +751=>'ON', +752=>'ON', +753=>'ON', +754=>'ON', +755=>'ON', +756=>'ON', +757=>'ON', +758=>'ON', +759=>'ON', +760=>'ON', +761=>'ON', +762=>'ON', +763=>'ON', +764=>'ON', +765=>'ON', +766=>'ON', +767=>'ON', +768=>'NSM', +769=>'NSM', +770=>'NSM', +771=>'NSM', +772=>'NSM', +773=>'NSM', +774=>'NSM', +775=>'NSM', +776=>'NSM', +777=>'NSM', +778=>'NSM', +779=>'NSM', +780=>'NSM', +781=>'NSM', +782=>'NSM', +783=>'NSM', +784=>'NSM', +785=>'NSM', +786=>'NSM', +787=>'NSM', +788=>'NSM', +789=>'NSM', +790=>'NSM', +791=>'NSM', +792=>'NSM', +793=>'NSM', +794=>'NSM', +795=>'NSM', +796=>'NSM', +797=>'NSM', +798=>'NSM', +799=>'NSM', +800=>'NSM', +801=>'NSM', +802=>'NSM', +803=>'NSM', +804=>'NSM', +805=>'NSM', +806=>'NSM', +807=>'NSM', +808=>'NSM', +809=>'NSM', +810=>'NSM', +811=>'NSM', +812=>'NSM', +813=>'NSM', +814=>'NSM', +815=>'NSM', +816=>'NSM', +817=>'NSM', +818=>'NSM', +819=>'NSM', +820=>'NSM', +821=>'NSM', +822=>'NSM', +823=>'NSM', +824=>'NSM', +825=>'NSM', +826=>'NSM', +827=>'NSM', +828=>'NSM', +829=>'NSM', +830=>'NSM', +831=>'NSM', +832=>'NSM', +833=>'NSM', +834=>'NSM', +835=>'NSM', +836=>'NSM', +837=>'NSM', +838=>'NSM', +839=>'NSM', +840=>'NSM', +841=>'NSM', +842=>'NSM', +843=>'NSM', +844=>'NSM', +845=>'NSM', +846=>'NSM', +847=>'NSM', +848=>'NSM', +849=>'NSM', +850=>'NSM', +851=>'NSM', +852=>'NSM', +853=>'NSM', +854=>'NSM', +855=>'NSM', +856=>'NSM', +857=>'NSM', +858=>'NSM', +859=>'NSM', +860=>'NSM', +861=>'NSM', +862=>'NSM', +863=>'NSM', +864=>'NSM', +865=>'NSM', +866=>'NSM', +867=>'NSM', +868=>'NSM', +869=>'NSM', +870=>'NSM', +871=>'NSM', +872=>'NSM', +873=>'NSM', +874=>'NSM', +875=>'NSM', +876=>'NSM', +877=>'NSM', +878=>'NSM', +879=>'NSM', +884=>'ON', +885=>'ON', +890=>'L', +891=>'L', +892=>'L', +893=>'L', +894=>'ON', +900=>'ON', +901=>'ON', +902=>'L', +903=>'ON', +904=>'L', +905=>'L', +906=>'L', +908=>'L', +910=>'L', +911=>'L', +912=>'L', +913=>'L', +914=>'L', +915=>'L', +916=>'L', +917=>'L', +918=>'L', +919=>'L', +920=>'L', +921=>'L', +922=>'L', +923=>'L', +924=>'L', +925=>'L', +926=>'L', +927=>'L', +928=>'L', +929=>'L', +931=>'L', +932=>'L', +933=>'L', +934=>'L', +935=>'L', +936=>'L', +937=>'L', +938=>'L', +939=>'L', +940=>'L', +941=>'L', +942=>'L', +943=>'L', +944=>'L', +945=>'L', +946=>'L', +947=>'L', +948=>'L', +949=>'L', +950=>'L', +951=>'L', +952=>'L', +953=>'L', +954=>'L', +955=>'L', +956=>'L', +957=>'L', +958=>'L', +959=>'L', +960=>'L', +961=>'L', +962=>'L', +963=>'L', +964=>'L', +965=>'L', +966=>'L', +967=>'L', +968=>'L', +969=>'L', +970=>'L', +971=>'L', +972=>'L', +973=>'L', +974=>'L', +976=>'L', +977=>'L', +978=>'L', +979=>'L', +980=>'L', +981=>'L', +982=>'L', +983=>'L', +984=>'L', +985=>'L', +986=>'L', +987=>'L', +988=>'L', +989=>'L', +990=>'L', +991=>'L', +992=>'L', +993=>'L', +994=>'L', +995=>'L', +996=>'L', +997=>'L', +998=>'L', +999=>'L', +1000=>'L', +1001=>'L', +1002=>'L', +1003=>'L', +1004=>'L', +1005=>'L', +1006=>'L', +1007=>'L', +1008=>'L', +1009=>'L', +1010=>'L', +1011=>'L', +1012=>'L', +1013=>'L', +1014=>'ON', +1015=>'L', +1016=>'L', +1017=>'L', +1018=>'L', +1019=>'L', +1020=>'L', +1021=>'L', +1022=>'L', +1023=>'L', +1024=>'L', +1025=>'L', +1026=>'L', +1027=>'L', +1028=>'L', +1029=>'L', +1030=>'L', +1031=>'L', +1032=>'L', +1033=>'L', +1034=>'L', +1035=>'L', +1036=>'L', +1037=>'L', +1038=>'L', +1039=>'L', +1040=>'L', +1041=>'L', +1042=>'L', +1043=>'L', +1044=>'L', +1045=>'L', +1046=>'L', +1047=>'L', +1048=>'L', +1049=>'L', +1050=>'L', +1051=>'L', +1052=>'L', +1053=>'L', +1054=>'L', +1055=>'L', +1056=>'L', +1057=>'L', +1058=>'L', +1059=>'L', +1060=>'L', +1061=>'L', +1062=>'L', +1063=>'L', +1064=>'L', +1065=>'L', +1066=>'L', +1067=>'L', +1068=>'L', +1069=>'L', +1070=>'L', +1071=>'L', +1072=>'L', +1073=>'L', +1074=>'L', +1075=>'L', +1076=>'L', +1077=>'L', +1078=>'L', +1079=>'L', +1080=>'L', +1081=>'L', +1082=>'L', +1083=>'L', +1084=>'L', +1085=>'L', +1086=>'L', +1087=>'L', +1088=>'L', +1089=>'L', +1090=>'L', +1091=>'L', +1092=>'L', +1093=>'L', +1094=>'L', +1095=>'L', +1096=>'L', +1097=>'L', +1098=>'L', +1099=>'L', +1100=>'L', +1101=>'L', +1102=>'L', +1103=>'L', +1104=>'L', +1105=>'L', +1106=>'L', +1107=>'L', +1108=>'L', +1109=>'L', +1110=>'L', +1111=>'L', +1112=>'L', +1113=>'L', +1114=>'L', +1115=>'L', +1116=>'L', +1117=>'L', +1118=>'L', +1119=>'L', +1120=>'L', +1121=>'L', +1122=>'L', +1123=>'L', +1124=>'L', +1125=>'L', +1126=>'L', +1127=>'L', +1128=>'L', +1129=>'L', +1130=>'L', +1131=>'L', +1132=>'L', +1133=>'L', +1134=>'L', +1135=>'L', +1136=>'L', +1137=>'L', +1138=>'L', +1139=>'L', +1140=>'L', +1141=>'L', +1142=>'L', +1143=>'L', +1144=>'L', +1145=>'L', +1146=>'L', +1147=>'L', +1148=>'L', +1149=>'L', +1150=>'L', +1151=>'L', +1152=>'L', +1153=>'L', +1154=>'L', +1155=>'NSM', +1156=>'NSM', +1157=>'NSM', +1158=>'NSM', +1160=>'NSM', +1161=>'NSM', +1162=>'L', +1163=>'L', +1164=>'L', +1165=>'L', +1166=>'L', +1167=>'L', +1168=>'L', +1169=>'L', +1170=>'L', +1171=>'L', +1172=>'L', +1173=>'L', +1174=>'L', +1175=>'L', +1176=>'L', +1177=>'L', +1178=>'L', +1179=>'L', +1180=>'L', +1181=>'L', +1182=>'L', +1183=>'L', +1184=>'L', +1185=>'L', +1186=>'L', +1187=>'L', +1188=>'L', +1189=>'L', +1190=>'L', +1191=>'L', +1192=>'L', +1193=>'L', +1194=>'L', +1195=>'L', +1196=>'L', +1197=>'L', +1198=>'L', +1199=>'L', +1200=>'L', +1201=>'L', +1202=>'L', +1203=>'L', +1204=>'L', +1205=>'L', +1206=>'L', +1207=>'L', +1208=>'L', +1209=>'L', +1210=>'L', +1211=>'L', +1212=>'L', +1213=>'L', +1214=>'L', +1215=>'L', +1216=>'L', +1217=>'L', +1218=>'L', +1219=>'L', +1220=>'L', +1221=>'L', +1222=>'L', +1223=>'L', +1224=>'L', +1225=>'L', +1226=>'L', +1227=>'L', +1228=>'L', +1229=>'L', +1230=>'L', +1231=>'L', +1232=>'L', +1233=>'L', +1234=>'L', +1235=>'L', +1236=>'L', +1237=>'L', +1238=>'L', +1239=>'L', +1240=>'L', +1241=>'L', +1242=>'L', +1243=>'L', +1244=>'L', +1245=>'L', +1246=>'L', +1247=>'L', +1248=>'L', +1249=>'L', +1250=>'L', +1251=>'L', +1252=>'L', +1253=>'L', +1254=>'L', +1255=>'L', +1256=>'L', +1257=>'L', +1258=>'L', +1259=>'L', +1260=>'L', +1261=>'L', +1262=>'L', +1263=>'L', +1264=>'L', +1265=>'L', +1266=>'L', +1267=>'L', +1268=>'L', +1269=>'L', +1270=>'L', +1271=>'L', +1272=>'L', +1273=>'L', +1274=>'L', +1275=>'L', +1276=>'L', +1277=>'L', +1278=>'L', +1279=>'L', +1280=>'L', +1281=>'L', +1282=>'L', +1283=>'L', +1284=>'L', +1285=>'L', +1286=>'L', +1287=>'L', +1288=>'L', +1289=>'L', +1290=>'L', +1291=>'L', +1292=>'L', +1293=>'L', +1294=>'L', +1295=>'L', +1296=>'L', +1297=>'L', +1298=>'L', +1299=>'L', +1329=>'L', +1330=>'L', +1331=>'L', +1332=>'L', +1333=>'L', +1334=>'L', +1335=>'L', +1336=>'L', +1337=>'L', +1338=>'L', +1339=>'L', +1340=>'L', +1341=>'L', +1342=>'L', +1343=>'L', +1344=>'L', +1345=>'L', +1346=>'L', +1347=>'L', +1348=>'L', +1349=>'L', +1350=>'L', +1351=>'L', +1352=>'L', +1353=>'L', +1354=>'L', +1355=>'L', +1356=>'L', +1357=>'L', +1358=>'L', +1359=>'L', +1360=>'L', +1361=>'L', +1362=>'L', +1363=>'L', +1364=>'L', +1365=>'L', +1366=>'L', +1369=>'L', +1370=>'L', +1371=>'L', +1372=>'L', +1373=>'L', +1374=>'L', +1375=>'L', +1377=>'L', +1378=>'L', +1379=>'L', +1380=>'L', +1381=>'L', +1382=>'L', +1383=>'L', +1384=>'L', +1385=>'L', +1386=>'L', +1387=>'L', +1388=>'L', +1389=>'L', +1390=>'L', +1391=>'L', +1392=>'L', +1393=>'L', +1394=>'L', +1395=>'L', +1396=>'L', +1397=>'L', +1398=>'L', +1399=>'L', +1400=>'L', +1401=>'L', +1402=>'L', +1403=>'L', +1404=>'L', +1405=>'L', +1406=>'L', +1407=>'L', +1408=>'L', +1409=>'L', +1410=>'L', +1411=>'L', +1412=>'L', +1413=>'L', +1414=>'L', +1415=>'L', +1417=>'L', +1418=>'ON', +1425=>'NSM', +1426=>'NSM', +1427=>'NSM', +1428=>'NSM', +1429=>'NSM', +1430=>'NSM', +1431=>'NSM', +1432=>'NSM', +1433=>'NSM', +1434=>'NSM', +1435=>'NSM', +1436=>'NSM', +1437=>'NSM', +1438=>'NSM', +1439=>'NSM', +1440=>'NSM', +1441=>'NSM', +1442=>'NSM', +1443=>'NSM', +1444=>'NSM', +1445=>'NSM', +1446=>'NSM', +1447=>'NSM', +1448=>'NSM', +1449=>'NSM', +1450=>'NSM', +1451=>'NSM', +1452=>'NSM', +1453=>'NSM', +1454=>'NSM', +1455=>'NSM', +1456=>'NSM', +1457=>'NSM', +1458=>'NSM', +1459=>'NSM', +1460=>'NSM', +1461=>'NSM', +1462=>'NSM', +1463=>'NSM', +1464=>'NSM', +1465=>'NSM', +1466=>'NSM', +1467=>'NSM', +1468=>'NSM', +1469=>'NSM', +1470=>'R', +1471=>'NSM', +1472=>'R', +1473=>'NSM', +1474=>'NSM', +1475=>'R', +1476=>'NSM', +1477=>'NSM', +1478=>'R', +1479=>'NSM', +1488=>'R', +1489=>'R', +1490=>'R', +1491=>'R', +1492=>'R', +1493=>'R', +1494=>'R', +1495=>'R', +1496=>'R', +1497=>'R', +1498=>'R', +1499=>'R', +1500=>'R', +1501=>'R', +1502=>'R', +1503=>'R', +1504=>'R', +1505=>'R', +1506=>'R', +1507=>'R', +1508=>'R', +1509=>'R', +1510=>'R', +1511=>'R', +1512=>'R', +1513=>'R', +1514=>'R', +1520=>'R', +1521=>'R', +1522=>'R', +1523=>'R', +1524=>'R', +1536=>'AL', +1537=>'AL', +1538=>'AL', +1539=>'AL', +1547=>'AL', +1548=>'CS', +1549=>'AL', +1550=>'ON', +1551=>'ON', +1552=>'NSM', +1553=>'NSM', +1554=>'NSM', +1555=>'NSM', +1556=>'NSM', +1557=>'NSM', +1563=>'AL', +1566=>'AL', +1567=>'AL', +1569=>'AL', +1570=>'AL', +1571=>'AL', +1572=>'AL', +1573=>'AL', +1574=>'AL', +1575=>'AL', +1576=>'AL', +1577=>'AL', +1578=>'AL', +1579=>'AL', +1580=>'AL', +1581=>'AL', +1582=>'AL', +1583=>'AL', +1584=>'AL', +1585=>'AL', +1586=>'AL', +1587=>'AL', +1588=>'AL', +1589=>'AL', +1590=>'AL', +1591=>'AL', +1592=>'AL', +1593=>'AL', +1594=>'AL', +1600=>'AL', +1601=>'AL', +1602=>'AL', +1603=>'AL', +1604=>'AL', +1605=>'AL', +1606=>'AL', +1607=>'AL', +1608=>'AL', +1609=>'AL', +1610=>'AL', +1611=>'NSM', +1612=>'NSM', +1613=>'NSM', +1614=>'NSM', +1615=>'NSM', +1616=>'NSM', +1617=>'NSM', +1618=>'NSM', +1619=>'NSM', +1620=>'NSM', +1621=>'NSM', +1622=>'NSM', +1623=>'NSM', +1624=>'NSM', +1625=>'NSM', +1626=>'NSM', +1627=>'NSM', +1628=>'NSM', +1629=>'NSM', +1630=>'NSM', +1632=>'AN', +1633=>'AN', +1634=>'AN', +1635=>'AN', +1636=>'AN', +1637=>'AN', +1638=>'AN', +1639=>'AN', +1640=>'AN', +1641=>'AN', +1642=>'ET', +1643=>'AN', +1644=>'AN', +1645=>'AL', +1646=>'AL', +1647=>'AL', +1648=>'NSM', +1649=>'AL', +1650=>'AL', +1651=>'AL', +1652=>'AL', +1653=>'AL', +1654=>'AL', +1655=>'AL', +1656=>'AL', +1657=>'AL', +1658=>'AL', +1659=>'AL', +1660=>'AL', +1661=>'AL', +1662=>'AL', +1663=>'AL', +1664=>'AL', +1665=>'AL', +1666=>'AL', +1667=>'AL', +1668=>'AL', +1669=>'AL', +1670=>'AL', +1671=>'AL', +1672=>'AL', +1673=>'AL', +1674=>'AL', +1675=>'AL', +1676=>'AL', +1677=>'AL', +1678=>'AL', +1679=>'AL', +1680=>'AL', +1681=>'AL', +1682=>'AL', +1683=>'AL', +1684=>'AL', +1685=>'AL', +1686=>'AL', +1687=>'AL', +1688=>'AL', +1689=>'AL', +1690=>'AL', +1691=>'AL', +1692=>'AL', +1693=>'AL', +1694=>'AL', +1695=>'AL', +1696=>'AL', +1697=>'AL', +1698=>'AL', +1699=>'AL', +1700=>'AL', +1701=>'AL', +1702=>'AL', +1703=>'AL', +1704=>'AL', +1705=>'AL', +1706=>'AL', +1707=>'AL', +1708=>'AL', +1709=>'AL', +1710=>'AL', +1711=>'AL', +1712=>'AL', +1713=>'AL', +1714=>'AL', +1715=>'AL', +1716=>'AL', +1717=>'AL', +1718=>'AL', +1719=>'AL', +1720=>'AL', +1721=>'AL', +1722=>'AL', +1723=>'AL', +1724=>'AL', +1725=>'AL', +1726=>'AL', +1727=>'AL', +1728=>'AL', +1729=>'AL', +1730=>'AL', +1731=>'AL', +1732=>'AL', +1733=>'AL', +1734=>'AL', +1735=>'AL', +1736=>'AL', +1737=>'AL', +1738=>'AL', +1739=>'AL', +1740=>'AL', +1741=>'AL', +1742=>'AL', +1743=>'AL', +1744=>'AL', +1745=>'AL', +1746=>'AL', +1747=>'AL', +1748=>'AL', +1749=>'AL', +1750=>'NSM', +1751=>'NSM', +1752=>'NSM', +1753=>'NSM', +1754=>'NSM', +1755=>'NSM', +1756=>'NSM', +1757=>'AL', +1758=>'NSM', +1759=>'NSM', +1760=>'NSM', +1761=>'NSM', +1762=>'NSM', +1763=>'NSM', +1764=>'NSM', +1765=>'AL', +1766=>'AL', +1767=>'NSM', +1768=>'NSM', +1769=>'ON', +1770=>'NSM', +1771=>'NSM', +1772=>'NSM', +1773=>'NSM', +1774=>'AL', +1775=>'AL', +1776=>'EN', +1777=>'EN', +1778=>'EN', +1779=>'EN', +1780=>'EN', +1781=>'EN', +1782=>'EN', +1783=>'EN', +1784=>'EN', +1785=>'EN', +1786=>'AL', +1787=>'AL', +1788=>'AL', +1789=>'AL', +1790=>'AL', +1791=>'AL', +1792=>'AL', +1793=>'AL', +1794=>'AL', +1795=>'AL', +1796=>'AL', +1797=>'AL', +1798=>'AL', +1799=>'AL', +1800=>'AL', +1801=>'AL', +1802=>'AL', +1803=>'AL', +1804=>'AL', +1805=>'AL', +1807=>'BN', +1808=>'AL', +1809=>'NSM', +1810=>'AL', +1811=>'AL', +1812=>'AL', +1813=>'AL', +1814=>'AL', +1815=>'AL', +1816=>'AL', +1817=>'AL', +1818=>'AL', +1819=>'AL', +1820=>'AL', +1821=>'AL', +1822=>'AL', +1823=>'AL', +1824=>'AL', +1825=>'AL', +1826=>'AL', +1827=>'AL', +1828=>'AL', +1829=>'AL', +1830=>'AL', +1831=>'AL', +1832=>'AL', +1833=>'AL', +1834=>'AL', +1835=>'AL', +1836=>'AL', +1837=>'AL', +1838=>'AL', +1839=>'AL', +1840=>'NSM', +1841=>'NSM', +1842=>'NSM', +1843=>'NSM', +1844=>'NSM', +1845=>'NSM', +1846=>'NSM', +1847=>'NSM', +1848=>'NSM', +1849=>'NSM', +1850=>'NSM', +1851=>'NSM', +1852=>'NSM', +1853=>'NSM', +1854=>'NSM', +1855=>'NSM', +1856=>'NSM', +1857=>'NSM', +1858=>'NSM', +1859=>'NSM', +1860=>'NSM', +1861=>'NSM', +1862=>'NSM', +1863=>'NSM', +1864=>'NSM', +1865=>'NSM', +1866=>'NSM', +1869=>'AL', +1870=>'AL', +1871=>'AL', +1872=>'AL', +1873=>'AL', +1874=>'AL', +1875=>'AL', +1876=>'AL', +1877=>'AL', +1878=>'AL', +1879=>'AL', +1880=>'AL', +1881=>'AL', +1882=>'AL', +1883=>'AL', +1884=>'AL', +1885=>'AL', +1886=>'AL', +1887=>'AL', +1888=>'AL', +1889=>'AL', +1890=>'AL', +1891=>'AL', +1892=>'AL', +1893=>'AL', +1894=>'AL', +1895=>'AL', +1896=>'AL', +1897=>'AL', +1898=>'AL', +1899=>'AL', +1900=>'AL', +1901=>'AL', +1920=>'AL', +1921=>'AL', +1922=>'AL', +1923=>'AL', +1924=>'AL', +1925=>'AL', +1926=>'AL', +1927=>'AL', +1928=>'AL', +1929=>'AL', +1930=>'AL', +1931=>'AL', +1932=>'AL', +1933=>'AL', +1934=>'AL', +1935=>'AL', +1936=>'AL', +1937=>'AL', +1938=>'AL', +1939=>'AL', +1940=>'AL', +1941=>'AL', +1942=>'AL', +1943=>'AL', +1944=>'AL', +1945=>'AL', +1946=>'AL', +1947=>'AL', +1948=>'AL', +1949=>'AL', +1950=>'AL', +1951=>'AL', +1952=>'AL', +1953=>'AL', +1954=>'AL', +1955=>'AL', +1956=>'AL', +1957=>'AL', +1958=>'NSM', +1959=>'NSM', +1960=>'NSM', +1961=>'NSM', +1962=>'NSM', +1963=>'NSM', +1964=>'NSM', +1965=>'NSM', +1966=>'NSM', +1967=>'NSM', +1968=>'NSM', +1969=>'AL', +1984=>'R', +1985=>'R', +1986=>'R', +1987=>'R', +1988=>'R', +1989=>'R', +1990=>'R', +1991=>'R', +1992=>'R', +1993=>'R', +1994=>'R', +1995=>'R', +1996=>'R', +1997=>'R', +1998=>'R', +1999=>'R', +2000=>'R', +2001=>'R', +2002=>'R', +2003=>'R', +2004=>'R', +2005=>'R', +2006=>'R', +2007=>'R', +2008=>'R', +2009=>'R', +2010=>'R', +2011=>'R', +2012=>'R', +2013=>'R', +2014=>'R', +2015=>'R', +2016=>'R', +2017=>'R', +2018=>'R', +2019=>'R', +2020=>'R', +2021=>'R', +2022=>'R', +2023=>'R', +2024=>'R', +2025=>'R', +2026=>'R', +2027=>'NSM', +2028=>'NSM', +2029=>'NSM', +2030=>'NSM', +2031=>'NSM', +2032=>'NSM', +2033=>'NSM', +2034=>'NSM', +2035=>'NSM', +2036=>'R', +2037=>'R', +2038=>'ON', +2039=>'ON', +2040=>'ON', +2041=>'ON', +2042=>'R', +2305=>'NSM', +2306=>'NSM', +2307=>'L', +2308=>'L', +2309=>'L', +2310=>'L', +2311=>'L', +2312=>'L', +2313=>'L', +2314=>'L', +2315=>'L', +2316=>'L', +2317=>'L', +2318=>'L', +2319=>'L', +2320=>'L', +2321=>'L', +2322=>'L', +2323=>'L', +2324=>'L', +2325=>'L', +2326=>'L', +2327=>'L', +2328=>'L', +2329=>'L', +2330=>'L', +2331=>'L', +2332=>'L', +2333=>'L', +2334=>'L', +2335=>'L', +2336=>'L', +2337=>'L', +2338=>'L', +2339=>'L', +2340=>'L', +2341=>'L', +2342=>'L', +2343=>'L', +2344=>'L', +2345=>'L', +2346=>'L', +2347=>'L', +2348=>'L', +2349=>'L', +2350=>'L', +2351=>'L', +2352=>'L', +2353=>'L', +2354=>'L', +2355=>'L', +2356=>'L', +2357=>'L', +2358=>'L', +2359=>'L', +2360=>'L', +2361=>'L', +2364=>'NSM', +2365=>'L', +2366=>'L', +2367=>'L', +2368=>'L', +2369=>'NSM', +2370=>'NSM', +2371=>'NSM', +2372=>'NSM', +2373=>'NSM', +2374=>'NSM', +2375=>'NSM', +2376=>'NSM', +2377=>'L', +2378=>'L', +2379=>'L', +2380=>'L', +2381=>'NSM', +2384=>'L', +2385=>'NSM', +2386=>'NSM', +2387=>'NSM', +2388=>'NSM', +2392=>'L', +2393=>'L', +2394=>'L', +2395=>'L', +2396=>'L', +2397=>'L', +2398=>'L', +2399=>'L', +2400=>'L', +2401=>'L', +2402=>'NSM', +2403=>'NSM', +2404=>'L', +2405=>'L', +2406=>'L', +2407=>'L', +2408=>'L', +2409=>'L', +2410=>'L', +2411=>'L', +2412=>'L', +2413=>'L', +2414=>'L', +2415=>'L', +2416=>'L', +2427=>'L', +2428=>'L', +2429=>'L', +2430=>'L', +2431=>'L', +2433=>'NSM', +2434=>'L', +2435=>'L', +2437=>'L', +2438=>'L', +2439=>'L', +2440=>'L', +2441=>'L', +2442=>'L', +2443=>'L', +2444=>'L', +2447=>'L', +2448=>'L', +2451=>'L', +2452=>'L', +2453=>'L', +2454=>'L', +2455=>'L', +2456=>'L', +2457=>'L', +2458=>'L', +2459=>'L', +2460=>'L', +2461=>'L', +2462=>'L', +2463=>'L', +2464=>'L', +2465=>'L', +2466=>'L', +2467=>'L', +2468=>'L', +2469=>'L', +2470=>'L', +2471=>'L', +2472=>'L', +2474=>'L', +2475=>'L', +2476=>'L', +2477=>'L', +2478=>'L', +2479=>'L', +2480=>'L', +2482=>'L', +2486=>'L', +2487=>'L', +2488=>'L', +2489=>'L', +2492=>'NSM', +2493=>'L', +2494=>'L', +2495=>'L', +2496=>'L', +2497=>'NSM', +2498=>'NSM', +2499=>'NSM', +2500=>'NSM', +2503=>'L', +2504=>'L', +2507=>'L', +2508=>'L', +2509=>'NSM', +2510=>'L', +2519=>'L', +2524=>'L', +2525=>'L', +2527=>'L', +2528=>'L', +2529=>'L', +2530=>'NSM', +2531=>'NSM', +2534=>'L', +2535=>'L', +2536=>'L', +2537=>'L', +2538=>'L', +2539=>'L', +2540=>'L', +2541=>'L', +2542=>'L', +2543=>'L', +2544=>'L', +2545=>'L', +2546=>'ET', +2547=>'ET', +2548=>'L', +2549=>'L', +2550=>'L', +2551=>'L', +2552=>'L', +2553=>'L', +2554=>'L', +2561=>'NSM', +2562=>'NSM', +2563=>'L', +2565=>'L', +2566=>'L', +2567=>'L', +2568=>'L', +2569=>'L', +2570=>'L', +2575=>'L', +2576=>'L', +2579=>'L', +2580=>'L', +2581=>'L', +2582=>'L', +2583=>'L', +2584=>'L', +2585=>'L', +2586=>'L', +2587=>'L', +2588=>'L', +2589=>'L', +2590=>'L', +2591=>'L', +2592=>'L', +2593=>'L', +2594=>'L', +2595=>'L', +2596=>'L', +2597=>'L', +2598=>'L', +2599=>'L', +2600=>'L', +2602=>'L', +2603=>'L', +2604=>'L', +2605=>'L', +2606=>'L', +2607=>'L', +2608=>'L', +2610=>'L', +2611=>'L', +2613=>'L', +2614=>'L', +2616=>'L', +2617=>'L', +2620=>'NSM', +2622=>'L', +2623=>'L', +2624=>'L', +2625=>'NSM', +2626=>'NSM', +2631=>'NSM', +2632=>'NSM', +2635=>'NSM', +2636=>'NSM', +2637=>'NSM', +2649=>'L', +2650=>'L', +2651=>'L', +2652=>'L', +2654=>'L', +2662=>'L', +2663=>'L', +2664=>'L', +2665=>'L', +2666=>'L', +2667=>'L', +2668=>'L', +2669=>'L', +2670=>'L', +2671=>'L', +2672=>'NSM', +2673=>'NSM', +2674=>'L', +2675=>'L', +2676=>'L', +2689=>'NSM', +2690=>'NSM', +2691=>'L', +2693=>'L', +2694=>'L', +2695=>'L', +2696=>'L', +2697=>'L', +2698=>'L', +2699=>'L', +2700=>'L', +2701=>'L', +2703=>'L', +2704=>'L', +2705=>'L', +2707=>'L', +2708=>'L', +2709=>'L', +2710=>'L', +2711=>'L', +2712=>'L', +2713=>'L', +2714=>'L', +2715=>'L', +2716=>'L', +2717=>'L', +2718=>'L', +2719=>'L', +2720=>'L', +2721=>'L', +2722=>'L', +2723=>'L', +2724=>'L', +2725=>'L', +2726=>'L', +2727=>'L', +2728=>'L', +2730=>'L', +2731=>'L', +2732=>'L', +2733=>'L', +2734=>'L', +2735=>'L', +2736=>'L', +2738=>'L', +2739=>'L', +2741=>'L', +2742=>'L', +2743=>'L', +2744=>'L', +2745=>'L', +2748=>'NSM', +2749=>'L', +2750=>'L', +2751=>'L', +2752=>'L', +2753=>'NSM', +2754=>'NSM', +2755=>'NSM', +2756=>'NSM', +2757=>'NSM', +2759=>'NSM', +2760=>'NSM', +2761=>'L', +2763=>'L', +2764=>'L', +2765=>'NSM', +2768=>'L', +2784=>'L', +2785=>'L', +2786=>'NSM', +2787=>'NSM', +2790=>'L', +2791=>'L', +2792=>'L', +2793=>'L', +2794=>'L', +2795=>'L', +2796=>'L', +2797=>'L', +2798=>'L', +2799=>'L', +2801=>'ET', +2817=>'NSM', +2818=>'L', +2819=>'L', +2821=>'L', +2822=>'L', +2823=>'L', +2824=>'L', +2825=>'L', +2826=>'L', +2827=>'L', +2828=>'L', +2831=>'L', +2832=>'L', +2835=>'L', +2836=>'L', +2837=>'L', +2838=>'L', +2839=>'L', +2840=>'L', +2841=>'L', +2842=>'L', +2843=>'L', +2844=>'L', +2845=>'L', +2846=>'L', +2847=>'L', +2848=>'L', +2849=>'L', +2850=>'L', +2851=>'L', +2852=>'L', +2853=>'L', +2854=>'L', +2855=>'L', +2856=>'L', +2858=>'L', +2859=>'L', +2860=>'L', +2861=>'L', +2862=>'L', +2863=>'L', +2864=>'L', +2866=>'L', +2867=>'L', +2869=>'L', +2870=>'L', +2871=>'L', +2872=>'L', +2873=>'L', +2876=>'NSM', +2877=>'L', +2878=>'L', +2879=>'NSM', +2880=>'L', +2881=>'NSM', +2882=>'NSM', +2883=>'NSM', +2887=>'L', +2888=>'L', +2891=>'L', +2892=>'L', +2893=>'NSM', +2902=>'NSM', +2903=>'L', +2908=>'L', +2909=>'L', +2911=>'L', +2912=>'L', +2913=>'L', +2918=>'L', +2919=>'L', +2920=>'L', +2921=>'L', +2922=>'L', +2923=>'L', +2924=>'L', +2925=>'L', +2926=>'L', +2927=>'L', +2928=>'L', +2929=>'L', +2946=>'NSM', +2947=>'L', +2949=>'L', +2950=>'L', +2951=>'L', +2952=>'L', +2953=>'L', +2954=>'L', +2958=>'L', +2959=>'L', +2960=>'L', +2962=>'L', +2963=>'L', +2964=>'L', +2965=>'L', +2969=>'L', +2970=>'L', +2972=>'L', +2974=>'L', +2975=>'L', +2979=>'L', +2980=>'L', +2984=>'L', +2985=>'L', +2986=>'L', +2990=>'L', +2991=>'L', +2992=>'L', +2993=>'L', +2994=>'L', +2995=>'L', +2996=>'L', +2997=>'L', +2998=>'L', +2999=>'L', +3000=>'L', +3001=>'L', +3006=>'L', +3007=>'L', +3008=>'NSM', +3009=>'L', +3010=>'L', +3014=>'L', +3015=>'L', +3016=>'L', +3018=>'L', +3019=>'L', +3020=>'L', +3021=>'NSM', +3031=>'L', +3046=>'L', +3047=>'L', +3048=>'L', +3049=>'L', +3050=>'L', +3051=>'L', +3052=>'L', +3053=>'L', +3054=>'L', +3055=>'L', +3056=>'L', +3057=>'L', +3058=>'L', +3059=>'ON', +3060=>'ON', +3061=>'ON', +3062=>'ON', +3063=>'ON', +3064=>'ON', +3065=>'ET', +3066=>'ON', +3073=>'L', +3074=>'L', +3075=>'L', +3077=>'L', +3078=>'L', +3079=>'L', +3080=>'L', +3081=>'L', +3082=>'L', +3083=>'L', +3084=>'L', +3086=>'L', +3087=>'L', +3088=>'L', +3090=>'L', +3091=>'L', +3092=>'L', +3093=>'L', +3094=>'L', +3095=>'L', +3096=>'L', +3097=>'L', +3098=>'L', +3099=>'L', +3100=>'L', +3101=>'L', +3102=>'L', +3103=>'L', +3104=>'L', +3105=>'L', +3106=>'L', +3107=>'L', +3108=>'L', +3109=>'L', +3110=>'L', +3111=>'L', +3112=>'L', +3114=>'L', +3115=>'L', +3116=>'L', +3117=>'L', +3118=>'L', +3119=>'L', +3120=>'L', +3121=>'L', +3122=>'L', +3123=>'L', +3125=>'L', +3126=>'L', +3127=>'L', +3128=>'L', +3129=>'L', +3134=>'NSM', +3135=>'NSM', +3136=>'NSM', +3137=>'L', +3138=>'L', +3139=>'L', +3140=>'L', +3142=>'NSM', +3143=>'NSM', +3144=>'NSM', +3146=>'NSM', +3147=>'NSM', +3148=>'NSM', +3149=>'NSM', +3157=>'NSM', +3158=>'NSM', +3168=>'L', +3169=>'L', +3174=>'L', +3175=>'L', +3176=>'L', +3177=>'L', +3178=>'L', +3179=>'L', +3180=>'L', +3181=>'L', +3182=>'L', +3183=>'L', +3202=>'L', +3203=>'L', +3205=>'L', +3206=>'L', +3207=>'L', +3208=>'L', +3209=>'L', +3210=>'L', +3211=>'L', +3212=>'L', +3214=>'L', +3215=>'L', +3216=>'L', +3218=>'L', +3219=>'L', +3220=>'L', +3221=>'L', +3222=>'L', +3223=>'L', +3224=>'L', +3225=>'L', +3226=>'L', +3227=>'L', +3228=>'L', +3229=>'L', +3230=>'L', +3231=>'L', +3232=>'L', +3233=>'L', +3234=>'L', +3235=>'L', +3236=>'L', +3237=>'L', +3238=>'L', +3239=>'L', +3240=>'L', +3242=>'L', +3243=>'L', +3244=>'L', +3245=>'L', +3246=>'L', +3247=>'L', +3248=>'L', +3249=>'L', +3250=>'L', +3251=>'L', +3253=>'L', +3254=>'L', +3255=>'L', +3256=>'L', +3257=>'L', +3260=>'NSM', +3261=>'L', +3262=>'L', +3263=>'L', +3264=>'L', +3265=>'L', +3266=>'L', +3267=>'L', +3268=>'L', +3270=>'L', +3271=>'L', +3272=>'L', +3274=>'L', +3275=>'L', +3276=>'NSM', +3277=>'NSM', +3285=>'L', +3286=>'L', +3294=>'L', +3296=>'L', +3297=>'L', +3298=>'NSM', +3299=>'NSM', +3302=>'L', +3303=>'L', +3304=>'L', +3305=>'L', +3306=>'L', +3307=>'L', +3308=>'L', +3309=>'L', +3310=>'L', +3311=>'L', +3313=>'ON', +3314=>'ON', +3330=>'L', +3331=>'L', +3333=>'L', +3334=>'L', +3335=>'L', +3336=>'L', +3337=>'L', +3338=>'L', +3339=>'L', +3340=>'L', +3342=>'L', +3343=>'L', +3344=>'L', +3346=>'L', +3347=>'L', +3348=>'L', +3349=>'L', +3350=>'L', +3351=>'L', +3352=>'L', +3353=>'L', +3354=>'L', +3355=>'L', +3356=>'L', +3357=>'L', +3358=>'L', +3359=>'L', +3360=>'L', +3361=>'L', +3362=>'L', +3363=>'L', +3364=>'L', +3365=>'L', +3366=>'L', +3367=>'L', +3368=>'L', +3370=>'L', +3371=>'L', +3372=>'L', +3373=>'L', +3374=>'L', +3375=>'L', +3376=>'L', +3377=>'L', +3378=>'L', +3379=>'L', +3380=>'L', +3381=>'L', +3382=>'L', +3383=>'L', +3384=>'L', +3385=>'L', +3390=>'L', +3391=>'L', +3392=>'L', +3393=>'NSM', +3394=>'NSM', +3395=>'NSM', +3398=>'L', +3399=>'L', +3400=>'L', +3402=>'L', +3403=>'L', +3404=>'L', +3405=>'NSM', +3415=>'L', +3424=>'L', +3425=>'L', +3430=>'L', +3431=>'L', +3432=>'L', +3433=>'L', +3434=>'L', +3435=>'L', +3436=>'L', +3437=>'L', +3438=>'L', +3439=>'L', +3458=>'L', +3459=>'L', +3461=>'L', +3462=>'L', +3463=>'L', +3464=>'L', +3465=>'L', +3466=>'L', +3467=>'L', +3468=>'L', +3469=>'L', +3470=>'L', +3471=>'L', +3472=>'L', +3473=>'L', +3474=>'L', +3475=>'L', +3476=>'L', +3477=>'L', +3478=>'L', +3482=>'L', +3483=>'L', +3484=>'L', +3485=>'L', +3486=>'L', +3487=>'L', +3488=>'L', +3489=>'L', +3490=>'L', +3491=>'L', +3492=>'L', +3493=>'L', +3494=>'L', +3495=>'L', +3496=>'L', +3497=>'L', +3498=>'L', +3499=>'L', +3500=>'L', +3501=>'L', +3502=>'L', +3503=>'L', +3504=>'L', +3505=>'L', +3507=>'L', +3508=>'L', +3509=>'L', +3510=>'L', +3511=>'L', +3512=>'L', +3513=>'L', +3514=>'L', +3515=>'L', +3517=>'L', +3520=>'L', +3521=>'L', +3522=>'L', +3523=>'L', +3524=>'L', +3525=>'L', +3526=>'L', +3530=>'NSM', +3535=>'L', +3536=>'L', +3537=>'L', +3538=>'NSM', +3539=>'NSM', +3540=>'NSM', +3542=>'NSM', +3544=>'L', +3545=>'L', +3546=>'L', +3547=>'L', +3548=>'L', +3549=>'L', +3550=>'L', +3551=>'L', +3570=>'L', +3571=>'L', +3572=>'L', +3585=>'L', +3586=>'L', +3587=>'L', +3588=>'L', +3589=>'L', +3590=>'L', +3591=>'L', +3592=>'L', +3593=>'L', +3594=>'L', +3595=>'L', +3596=>'L', +3597=>'L', +3598=>'L', +3599=>'L', +3600=>'L', +3601=>'L', +3602=>'L', +3603=>'L', +3604=>'L', +3605=>'L', +3606=>'L', +3607=>'L', +3608=>'L', +3609=>'L', +3610=>'L', +3611=>'L', +3612=>'L', +3613=>'L', +3614=>'L', +3615=>'L', +3616=>'L', +3617=>'L', +3618=>'L', +3619=>'L', +3620=>'L', +3621=>'L', +3622=>'L', +3623=>'L', +3624=>'L', +3625=>'L', +3626=>'L', +3627=>'L', +3628=>'L', +3629=>'L', +3630=>'L', +3631=>'L', +3632=>'L', +3633=>'NSM', +3634=>'L', +3635=>'L', +3636=>'NSM', +3637=>'NSM', +3638=>'NSM', +3639=>'NSM', +3640=>'NSM', +3641=>'NSM', +3642=>'NSM', +3647=>'ET', +3648=>'L', +3649=>'L', +3650=>'L', +3651=>'L', +3652=>'L', +3653=>'L', +3654=>'L', +3655=>'NSM', +3656=>'NSM', +3657=>'NSM', +3658=>'NSM', +3659=>'NSM', +3660=>'NSM', +3661=>'NSM', +3662=>'NSM', +3663=>'L', +3664=>'L', +3665=>'L', +3666=>'L', +3667=>'L', +3668=>'L', +3669=>'L', +3670=>'L', +3671=>'L', +3672=>'L', +3673=>'L', +3674=>'L', +3675=>'L', +3713=>'L', +3714=>'L', +3716=>'L', +3719=>'L', +3720=>'L', +3722=>'L', +3725=>'L', +3732=>'L', +3733=>'L', +3734=>'L', +3735=>'L', +3737=>'L', +3738=>'L', +3739=>'L', +3740=>'L', +3741=>'L', +3742=>'L', +3743=>'L', +3745=>'L', +3746=>'L', +3747=>'L', +3749=>'L', +3751=>'L', +3754=>'L', +3755=>'L', +3757=>'L', +3758=>'L', +3759=>'L', +3760=>'L', +3761=>'NSM', +3762=>'L', +3763=>'L', +3764=>'NSM', +3765=>'NSM', +3766=>'NSM', +3767=>'NSM', +3768=>'NSM', +3769=>'NSM', +3771=>'NSM', +3772=>'NSM', +3773=>'L', +3776=>'L', +3777=>'L', +3778=>'L', +3779=>'L', +3780=>'L', +3782=>'L', +3784=>'NSM', +3785=>'NSM', +3786=>'NSM', +3787=>'NSM', +3788=>'NSM', +3789=>'NSM', +3792=>'L', +3793=>'L', +3794=>'L', +3795=>'L', +3796=>'L', +3797=>'L', +3798=>'L', +3799=>'L', +3800=>'L', +3801=>'L', +3804=>'L', +3805=>'L', +3840=>'L', +3841=>'L', +3842=>'L', +3843=>'L', +3844=>'L', +3845=>'L', +3846=>'L', +3847=>'L', +3848=>'L', +3849=>'L', +3850=>'L', +3851=>'L', +3852=>'L', +3853=>'L', +3854=>'L', +3855=>'L', +3856=>'L', +3857=>'L', +3858=>'L', +3859=>'L', +3860=>'L', +3861=>'L', +3862=>'L', +3863=>'L', +3864=>'NSM', +3865=>'NSM', +3866=>'L', +3867=>'L', +3868=>'L', +3869=>'L', +3870=>'L', +3871=>'L', +3872=>'L', +3873=>'L', +3874=>'L', +3875=>'L', +3876=>'L', +3877=>'L', +3878=>'L', +3879=>'L', +3880=>'L', +3881=>'L', +3882=>'L', +3883=>'L', +3884=>'L', +3885=>'L', +3886=>'L', +3887=>'L', +3888=>'L', +3889=>'L', +3890=>'L', +3891=>'L', +3892=>'L', +3893=>'NSM', +3894=>'L', +3895=>'NSM', +3896=>'L', +3897=>'NSM', +3898=>'ON', +3899=>'ON', +3900=>'ON', +3901=>'ON', +3902=>'L', +3903=>'L', +3904=>'L', +3905=>'L', +3906=>'L', +3907=>'L', +3908=>'L', +3909=>'L', +3910=>'L', +3911=>'L', +3913=>'L', +3914=>'L', +3915=>'L', +3916=>'L', +3917=>'L', +3918=>'L', +3919=>'L', +3920=>'L', +3921=>'L', +3922=>'L', +3923=>'L', +3924=>'L', +3925=>'L', +3926=>'L', +3927=>'L', +3928=>'L', +3929=>'L', +3930=>'L', +3931=>'L', +3932=>'L', +3933=>'L', +3934=>'L', +3935=>'L', +3936=>'L', +3937=>'L', +3938=>'L', +3939=>'L', +3940=>'L', +3941=>'L', +3942=>'L', +3943=>'L', +3944=>'L', +3945=>'L', +3946=>'L', +3953=>'NSM', +3954=>'NSM', +3955=>'NSM', +3956=>'NSM', +3957=>'NSM', +3958=>'NSM', +3959=>'NSM', +3960=>'NSM', +3961=>'NSM', +3962=>'NSM', +3963=>'NSM', +3964=>'NSM', +3965=>'NSM', +3966=>'NSM', +3967=>'L', +3968=>'NSM', +3969=>'NSM', +3970=>'NSM', +3971=>'NSM', +3972=>'NSM', +3973=>'L', +3974=>'NSM', +3975=>'NSM', +3976=>'L', +3977=>'L', +3978=>'L', +3979=>'L', +3984=>'NSM', +3985=>'NSM', +3986=>'NSM', +3987=>'NSM', +3988=>'NSM', +3989=>'NSM', +3990=>'NSM', +3991=>'NSM', +3993=>'NSM', +3994=>'NSM', +3995=>'NSM', +3996=>'NSM', +3997=>'NSM', +3998=>'NSM', +3999=>'NSM', +4000=>'NSM', +4001=>'NSM', +4002=>'NSM', +4003=>'NSM', +4004=>'NSM', +4005=>'NSM', +4006=>'NSM', +4007=>'NSM', +4008=>'NSM', +4009=>'NSM', +4010=>'NSM', +4011=>'NSM', +4012=>'NSM', +4013=>'NSM', +4014=>'NSM', +4015=>'NSM', +4016=>'NSM', +4017=>'NSM', +4018=>'NSM', +4019=>'NSM', +4020=>'NSM', +4021=>'NSM', +4022=>'NSM', +4023=>'NSM', +4024=>'NSM', +4025=>'NSM', +4026=>'NSM', +4027=>'NSM', +4028=>'NSM', +4030=>'L', +4031=>'L', +4032=>'L', +4033=>'L', +4034=>'L', +4035=>'L', +4036=>'L', +4037=>'L', +4038=>'NSM', +4039=>'L', +4040=>'L', +4041=>'L', +4042=>'L', +4043=>'L', +4044=>'L', +4047=>'L', +4048=>'L', +4049=>'L', +4096=>'L', +4097=>'L', +4098=>'L', +4099=>'L', +4100=>'L', +4101=>'L', +4102=>'L', +4103=>'L', +4104=>'L', +4105=>'L', +4106=>'L', +4107=>'L', +4108=>'L', +4109=>'L', +4110=>'L', +4111=>'L', +4112=>'L', +4113=>'L', +4114=>'L', +4115=>'L', +4116=>'L', +4117=>'L', +4118=>'L', +4119=>'L', +4120=>'L', +4121=>'L', +4122=>'L', +4123=>'L', +4124=>'L', +4125=>'L', +4126=>'L', +4127=>'L', +4128=>'L', +4129=>'L', +4131=>'L', +4132=>'L', +4133=>'L', +4134=>'L', +4135=>'L', +4137=>'L', +4138=>'L', +4140=>'L', +4141=>'NSM', +4142=>'NSM', +4143=>'NSM', +4144=>'NSM', +4145=>'L', +4146=>'NSM', +4150=>'NSM', +4151=>'NSM', +4152=>'L', +4153=>'NSM', +4160=>'L', +4161=>'L', +4162=>'L', +4163=>'L', +4164=>'L', +4165=>'L', +4166=>'L', +4167=>'L', +4168=>'L', +4169=>'L', +4170=>'L', +4171=>'L', +4172=>'L', +4173=>'L', +4174=>'L', +4175=>'L', +4176=>'L', +4177=>'L', +4178=>'L', +4179=>'L', +4180=>'L', +4181=>'L', +4182=>'L', +4183=>'L', +4184=>'NSM', +4185=>'NSM', +4256=>'L', +4257=>'L', +4258=>'L', +4259=>'L', +4260=>'L', +4261=>'L', +4262=>'L', +4263=>'L', +4264=>'L', +4265=>'L', +4266=>'L', +4267=>'L', +4268=>'L', +4269=>'L', +4270=>'L', +4271=>'L', +4272=>'L', +4273=>'L', +4274=>'L', +4275=>'L', +4276=>'L', +4277=>'L', +4278=>'L', +4279=>'L', +4280=>'L', +4281=>'L', +4282=>'L', +4283=>'L', +4284=>'L', +4285=>'L', +4286=>'L', +4287=>'L', +4288=>'L', +4289=>'L', +4290=>'L', +4291=>'L', +4292=>'L', +4293=>'L', +4304=>'L', +4305=>'L', +4306=>'L', +4307=>'L', +4308=>'L', +4309=>'L', +4310=>'L', +4311=>'L', +4312=>'L', +4313=>'L', +4314=>'L', +4315=>'L', +4316=>'L', +4317=>'L', +4318=>'L', +4319=>'L', +4320=>'L', +4321=>'L', +4322=>'L', +4323=>'L', +4324=>'L', +4325=>'L', +4326=>'L', +4327=>'L', +4328=>'L', +4329=>'L', +4330=>'L', +4331=>'L', +4332=>'L', +4333=>'L', +4334=>'L', +4335=>'L', +4336=>'L', +4337=>'L', +4338=>'L', +4339=>'L', +4340=>'L', +4341=>'L', +4342=>'L', +4343=>'L', +4344=>'L', +4345=>'L', +4346=>'L', +4347=>'L', +4348=>'L', +4352=>'L', +4353=>'L', +4354=>'L', +4355=>'L', +4356=>'L', +4357=>'L', +4358=>'L', +4359=>'L', +4360=>'L', +4361=>'L', +4362=>'L', +4363=>'L', +4364=>'L', +4365=>'L', +4366=>'L', +4367=>'L', +4368=>'L', +4369=>'L', +4370=>'L', +4371=>'L', +4372=>'L', +4373=>'L', +4374=>'L', +4375=>'L', +4376=>'L', +4377=>'L', +4378=>'L', +4379=>'L', +4380=>'L', +4381=>'L', +4382=>'L', +4383=>'L', +4384=>'L', +4385=>'L', +4386=>'L', +4387=>'L', +4388=>'L', +4389=>'L', +4390=>'L', +4391=>'L', +4392=>'L', +4393=>'L', +4394=>'L', +4395=>'L', +4396=>'L', +4397=>'L', +4398=>'L', +4399=>'L', +4400=>'L', +4401=>'L', +4402=>'L', +4403=>'L', +4404=>'L', +4405=>'L', +4406=>'L', +4407=>'L', +4408=>'L', +4409=>'L', +4410=>'L', +4411=>'L', +4412=>'L', +4413=>'L', +4414=>'L', +4415=>'L', +4416=>'L', +4417=>'L', +4418=>'L', +4419=>'L', +4420=>'L', +4421=>'L', +4422=>'L', +4423=>'L', +4424=>'L', +4425=>'L', +4426=>'L', +4427=>'L', +4428=>'L', +4429=>'L', +4430=>'L', +4431=>'L', +4432=>'L', +4433=>'L', +4434=>'L', +4435=>'L', +4436=>'L', +4437=>'L', +4438=>'L', +4439=>'L', +4440=>'L', +4441=>'L', +4447=>'L', +4448=>'L', +4449=>'L', +4450=>'L', +4451=>'L', +4452=>'L', +4453=>'L', +4454=>'L', +4455=>'L', +4456=>'L', +4457=>'L', +4458=>'L', +4459=>'L', +4460=>'L', +4461=>'L', +4462=>'L', +4463=>'L', +4464=>'L', +4465=>'L', +4466=>'L', +4467=>'L', +4468=>'L', +4469=>'L', +4470=>'L', +4471=>'L', +4472=>'L', +4473=>'L', +4474=>'L', +4475=>'L', +4476=>'L', +4477=>'L', +4478=>'L', +4479=>'L', +4480=>'L', +4481=>'L', +4482=>'L', +4483=>'L', +4484=>'L', +4485=>'L', +4486=>'L', +4487=>'L', +4488=>'L', +4489=>'L', +4490=>'L', +4491=>'L', +4492=>'L', +4493=>'L', +4494=>'L', +4495=>'L', +4496=>'L', +4497=>'L', +4498=>'L', +4499=>'L', +4500=>'L', +4501=>'L', +4502=>'L', +4503=>'L', +4504=>'L', +4505=>'L', +4506=>'L', +4507=>'L', +4508=>'L', +4509=>'L', +4510=>'L', +4511=>'L', +4512=>'L', +4513=>'L', +4514=>'L', +4520=>'L', +4521=>'L', +4522=>'L', +4523=>'L', +4524=>'L', +4525=>'L', +4526=>'L', +4527=>'L', +4528=>'L', +4529=>'L', +4530=>'L', +4531=>'L', +4532=>'L', +4533=>'L', +4534=>'L', +4535=>'L', +4536=>'L', +4537=>'L', +4538=>'L', +4539=>'L', +4540=>'L', +4541=>'L', +4542=>'L', +4543=>'L', +4544=>'L', +4545=>'L', +4546=>'L', +4547=>'L', +4548=>'L', +4549=>'L', +4550=>'L', +4551=>'L', +4552=>'L', +4553=>'L', +4554=>'L', +4555=>'L', +4556=>'L', +4557=>'L', +4558=>'L', +4559=>'L', +4560=>'L', +4561=>'L', +4562=>'L', +4563=>'L', +4564=>'L', +4565=>'L', +4566=>'L', +4567=>'L', +4568=>'L', +4569=>'L', +4570=>'L', +4571=>'L', +4572=>'L', +4573=>'L', +4574=>'L', +4575=>'L', +4576=>'L', +4577=>'L', +4578=>'L', +4579=>'L', +4580=>'L', +4581=>'L', +4582=>'L', +4583=>'L', +4584=>'L', +4585=>'L', +4586=>'L', +4587=>'L', +4588=>'L', +4589=>'L', +4590=>'L', +4591=>'L', +4592=>'L', +4593=>'L', +4594=>'L', +4595=>'L', +4596=>'L', +4597=>'L', +4598=>'L', +4599=>'L', +4600=>'L', +4601=>'L', +4608=>'L', +4609=>'L', +4610=>'L', +4611=>'L', +4612=>'L', +4613=>'L', +4614=>'L', +4615=>'L', +4616=>'L', +4617=>'L', +4618=>'L', +4619=>'L', +4620=>'L', +4621=>'L', +4622=>'L', +4623=>'L', +4624=>'L', +4625=>'L', +4626=>'L', +4627=>'L', +4628=>'L', +4629=>'L', +4630=>'L', +4631=>'L', +4632=>'L', +4633=>'L', +4634=>'L', +4635=>'L', +4636=>'L', +4637=>'L', +4638=>'L', +4639=>'L', +4640=>'L', +4641=>'L', +4642=>'L', +4643=>'L', +4644=>'L', +4645=>'L', +4646=>'L', +4647=>'L', +4648=>'L', +4649=>'L', +4650=>'L', +4651=>'L', +4652=>'L', +4653=>'L', +4654=>'L', +4655=>'L', +4656=>'L', +4657=>'L', +4658=>'L', +4659=>'L', +4660=>'L', +4661=>'L', +4662=>'L', +4663=>'L', +4664=>'L', +4665=>'L', +4666=>'L', +4667=>'L', +4668=>'L', +4669=>'L', +4670=>'L', +4671=>'L', +4672=>'L', +4673=>'L', +4674=>'L', +4675=>'L', +4676=>'L', +4677=>'L', +4678=>'L', +4679=>'L', +4680=>'L', +4682=>'L', +4683=>'L', +4684=>'L', +4685=>'L', +4688=>'L', +4689=>'L', +4690=>'L', +4691=>'L', +4692=>'L', +4693=>'L', +4694=>'L', +4696=>'L', +4698=>'L', +4699=>'L', +4700=>'L', +4701=>'L', +4704=>'L', +4705=>'L', +4706=>'L', +4707=>'L', +4708=>'L', +4709=>'L', +4710=>'L', +4711=>'L', +4712=>'L', +4713=>'L', +4714=>'L', +4715=>'L', +4716=>'L', +4717=>'L', +4718=>'L', +4719=>'L', +4720=>'L', +4721=>'L', +4722=>'L', +4723=>'L', +4724=>'L', +4725=>'L', +4726=>'L', +4727=>'L', +4728=>'L', +4729=>'L', +4730=>'L', +4731=>'L', +4732=>'L', +4733=>'L', +4734=>'L', +4735=>'L', +4736=>'L', +4737=>'L', +4738=>'L', +4739=>'L', +4740=>'L', +4741=>'L', +4742=>'L', +4743=>'L', +4744=>'L', +4746=>'L', +4747=>'L', +4748=>'L', +4749=>'L', +4752=>'L', +4753=>'L', +4754=>'L', +4755=>'L', +4756=>'L', +4757=>'L', +4758=>'L', +4759=>'L', +4760=>'L', +4761=>'L', +4762=>'L', +4763=>'L', +4764=>'L', +4765=>'L', +4766=>'L', +4767=>'L', +4768=>'L', +4769=>'L', +4770=>'L', +4771=>'L', +4772=>'L', +4773=>'L', +4774=>'L', +4775=>'L', +4776=>'L', +4777=>'L', +4778=>'L', +4779=>'L', +4780=>'L', +4781=>'L', +4782=>'L', +4783=>'L', +4784=>'L', +4786=>'L', +4787=>'L', +4788=>'L', +4789=>'L', +4792=>'L', +4793=>'L', +4794=>'L', +4795=>'L', +4796=>'L', +4797=>'L', +4798=>'L', +4800=>'L', +4802=>'L', +4803=>'L', +4804=>'L', +4805=>'L', +4808=>'L', +4809=>'L', +4810=>'L', +4811=>'L', +4812=>'L', +4813=>'L', +4814=>'L', +4815=>'L', +4816=>'L', +4817=>'L', +4818=>'L', +4819=>'L', +4820=>'L', +4821=>'L', +4822=>'L', +4824=>'L', +4825=>'L', +4826=>'L', +4827=>'L', +4828=>'L', +4829=>'L', +4830=>'L', +4831=>'L', +4832=>'L', +4833=>'L', +4834=>'L', +4835=>'L', +4836=>'L', +4837=>'L', +4838=>'L', +4839=>'L', +4840=>'L', +4841=>'L', +4842=>'L', +4843=>'L', +4844=>'L', +4845=>'L', +4846=>'L', +4847=>'L', +4848=>'L', +4849=>'L', +4850=>'L', +4851=>'L', +4852=>'L', +4853=>'L', +4854=>'L', +4855=>'L', +4856=>'L', +4857=>'L', +4858=>'L', +4859=>'L', +4860=>'L', +4861=>'L', +4862=>'L', +4863=>'L', +4864=>'L', +4865=>'L', +4866=>'L', +4867=>'L', +4868=>'L', +4869=>'L', +4870=>'L', +4871=>'L', +4872=>'L', +4873=>'L', +4874=>'L', +4875=>'L', +4876=>'L', +4877=>'L', +4878=>'L', +4879=>'L', +4880=>'L', +4882=>'L', +4883=>'L', +4884=>'L', +4885=>'L', +4888=>'L', +4889=>'L', +4890=>'L', +4891=>'L', +4892=>'L', +4893=>'L', +4894=>'L', +4895=>'L', +4896=>'L', +4897=>'L', +4898=>'L', +4899=>'L', +4900=>'L', +4901=>'L', +4902=>'L', +4903=>'L', +4904=>'L', +4905=>'L', +4906=>'L', +4907=>'L', +4908=>'L', +4909=>'L', +4910=>'L', +4911=>'L', +4912=>'L', +4913=>'L', +4914=>'L', +4915=>'L', +4916=>'L', +4917=>'L', +4918=>'L', +4919=>'L', +4920=>'L', +4921=>'L', +4922=>'L', +4923=>'L', +4924=>'L', +4925=>'L', +4926=>'L', +4927=>'L', +4928=>'L', +4929=>'L', +4930=>'L', +4931=>'L', +4932=>'L', +4933=>'L', +4934=>'L', +4935=>'L', +4936=>'L', +4937=>'L', +4938=>'L', +4939=>'L', +4940=>'L', +4941=>'L', +4942=>'L', +4943=>'L', +4944=>'L', +4945=>'L', +4946=>'L', +4947=>'L', +4948=>'L', +4949=>'L', +4950=>'L', +4951=>'L', +4952=>'L', +4953=>'L', +4954=>'L', +4959=>'NSM', +4960=>'L', +4961=>'L', +4962=>'L', +4963=>'L', +4964=>'L', +4965=>'L', +4966=>'L', +4967=>'L', +4968=>'L', +4969=>'L', +4970=>'L', +4971=>'L', +4972=>'L', +4973=>'L', +4974=>'L', +4975=>'L', +4976=>'L', +4977=>'L', +4978=>'L', +4979=>'L', +4980=>'L', +4981=>'L', +4982=>'L', +4983=>'L', +4984=>'L', +4985=>'L', +4986=>'L', +4987=>'L', +4988=>'L', +4992=>'L', +4993=>'L', +4994=>'L', +4995=>'L', +4996=>'L', +4997=>'L', +4998=>'L', +4999=>'L', +5000=>'L', +5001=>'L', +5002=>'L', +5003=>'L', +5004=>'L', +5005=>'L', +5006=>'L', +5007=>'L', +5008=>'ON', +5009=>'ON', +5010=>'ON', +5011=>'ON', +5012=>'ON', +5013=>'ON', +5014=>'ON', +5015=>'ON', +5016=>'ON', +5017=>'ON', +5024=>'L', +5025=>'L', +5026=>'L', +5027=>'L', +5028=>'L', +5029=>'L', +5030=>'L', +5031=>'L', +5032=>'L', +5033=>'L', +5034=>'L', +5035=>'L', +5036=>'L', +5037=>'L', +5038=>'L', +5039=>'L', +5040=>'L', +5041=>'L', +5042=>'L', +5043=>'L', +5044=>'L', +5045=>'L', +5046=>'L', +5047=>'L', +5048=>'L', +5049=>'L', +5050=>'L', +5051=>'L', +5052=>'L', +5053=>'L', +5054=>'L', +5055=>'L', +5056=>'L', +5057=>'L', +5058=>'L', +5059=>'L', +5060=>'L', +5061=>'L', +5062=>'L', +5063=>'L', +5064=>'L', +5065=>'L', +5066=>'L', +5067=>'L', +5068=>'L', +5069=>'L', +5070=>'L', +5071=>'L', +5072=>'L', +5073=>'L', +5074=>'L', +5075=>'L', +5076=>'L', +5077=>'L', +5078=>'L', +5079=>'L', +5080=>'L', +5081=>'L', +5082=>'L', +5083=>'L', +5084=>'L', +5085=>'L', +5086=>'L', +5087=>'L', +5088=>'L', +5089=>'L', +5090=>'L', +5091=>'L', +5092=>'L', +5093=>'L', +5094=>'L', +5095=>'L', +5096=>'L', +5097=>'L', +5098=>'L', +5099=>'L', +5100=>'L', +5101=>'L', +5102=>'L', +5103=>'L', +5104=>'L', +5105=>'L', +5106=>'L', +5107=>'L', +5108=>'L', +5121=>'L', +5122=>'L', +5123=>'L', +5124=>'L', +5125=>'L', +5126=>'L', +5127=>'L', +5128=>'L', +5129=>'L', +5130=>'L', +5131=>'L', +5132=>'L', +5133=>'L', +5134=>'L', +5135=>'L', +5136=>'L', +5137=>'L', +5138=>'L', +5139=>'L', +5140=>'L', +5141=>'L', +5142=>'L', +5143=>'L', +5144=>'L', +5145=>'L', +5146=>'L', +5147=>'L', +5148=>'L', +5149=>'L', +5150=>'L', +5151=>'L', +5152=>'L', +5153=>'L', +5154=>'L', +5155=>'L', +5156=>'L', +5157=>'L', +5158=>'L', +5159=>'L', +5160=>'L', +5161=>'L', +5162=>'L', +5163=>'L', +5164=>'L', +5165=>'L', +5166=>'L', +5167=>'L', +5168=>'L', +5169=>'L', +5170=>'L', +5171=>'L', +5172=>'L', +5173=>'L', +5174=>'L', +5175=>'L', +5176=>'L', +5177=>'L', +5178=>'L', +5179=>'L', +5180=>'L', +5181=>'L', +5182=>'L', +5183=>'L', +5184=>'L', +5185=>'L', +5186=>'L', +5187=>'L', +5188=>'L', +5189=>'L', +5190=>'L', +5191=>'L', +5192=>'L', +5193=>'L', +5194=>'L', +5195=>'L', +5196=>'L', +5197=>'L', +5198=>'L', +5199=>'L', +5200=>'L', +5201=>'L', +5202=>'L', +5203=>'L', +5204=>'L', +5205=>'L', +5206=>'L', +5207=>'L', +5208=>'L', +5209=>'L', +5210=>'L', +5211=>'L', +5212=>'L', +5213=>'L', +5214=>'L', +5215=>'L', +5216=>'L', +5217=>'L', +5218=>'L', +5219=>'L', +5220=>'L', +5221=>'L', +5222=>'L', +5223=>'L', +5224=>'L', +5225=>'L', +5226=>'L', +5227=>'L', +5228=>'L', +5229=>'L', +5230=>'L', +5231=>'L', +5232=>'L', +5233=>'L', +5234=>'L', +5235=>'L', +5236=>'L', +5237=>'L', +5238=>'L', +5239=>'L', +5240=>'L', +5241=>'L', +5242=>'L', +5243=>'L', +5244=>'L', +5245=>'L', +5246=>'L', +5247=>'L', +5248=>'L', +5249=>'L', +5250=>'L', +5251=>'L', +5252=>'L', +5253=>'L', +5254=>'L', +5255=>'L', +5256=>'L', +5257=>'L', +5258=>'L', +5259=>'L', +5260=>'L', +5261=>'L', +5262=>'L', +5263=>'L', +5264=>'L', +5265=>'L', +5266=>'L', +5267=>'L', +5268=>'L', +5269=>'L', +5270=>'L', +5271=>'L', +5272=>'L', +5273=>'L', +5274=>'L', +5275=>'L', +5276=>'L', +5277=>'L', +5278=>'L', +5279=>'L', +5280=>'L', +5281=>'L', +5282=>'L', +5283=>'L', +5284=>'L', +5285=>'L', +5286=>'L', +5287=>'L', +5288=>'L', +5289=>'L', +5290=>'L', +5291=>'L', +5292=>'L', +5293=>'L', +5294=>'L', +5295=>'L', +5296=>'L', +5297=>'L', +5298=>'L', +5299=>'L', +5300=>'L', +5301=>'L', +5302=>'L', +5303=>'L', +5304=>'L', +5305=>'L', +5306=>'L', +5307=>'L', +5308=>'L', +5309=>'L', +5310=>'L', +5311=>'L', +5312=>'L', +5313=>'L', +5314=>'L', +5315=>'L', +5316=>'L', +5317=>'L', +5318=>'L', +5319=>'L', +5320=>'L', +5321=>'L', +5322=>'L', +5323=>'L', +5324=>'L', +5325=>'L', +5326=>'L', +5327=>'L', +5328=>'L', +5329=>'L', +5330=>'L', +5331=>'L', +5332=>'L', +5333=>'L', +5334=>'L', +5335=>'L', +5336=>'L', +5337=>'L', +5338=>'L', +5339=>'L', +5340=>'L', +5341=>'L', +5342=>'L', +5343=>'L', +5344=>'L', +5345=>'L', +5346=>'L', +5347=>'L', +5348=>'L', +5349=>'L', +5350=>'L', +5351=>'L', +5352=>'L', +5353=>'L', +5354=>'L', +5355=>'L', +5356=>'L', +5357=>'L', +5358=>'L', +5359=>'L', +5360=>'L', +5361=>'L', +5362=>'L', +5363=>'L', +5364=>'L', +5365=>'L', +5366=>'L', +5367=>'L', +5368=>'L', +5369=>'L', +5370=>'L', +5371=>'L', +5372=>'L', +5373=>'L', +5374=>'L', +5375=>'L', +5376=>'L', +5377=>'L', +5378=>'L', +5379=>'L', +5380=>'L', +5381=>'L', +5382=>'L', +5383=>'L', +5384=>'L', +5385=>'L', +5386=>'L', +5387=>'L', +5388=>'L', +5389=>'L', +5390=>'L', +5391=>'L', +5392=>'L', +5393=>'L', +5394=>'L', +5395=>'L', +5396=>'L', +5397=>'L', +5398=>'L', +5399=>'L', +5400=>'L', +5401=>'L', +5402=>'L', +5403=>'L', +5404=>'L', +5405=>'L', +5406=>'L', +5407=>'L', +5408=>'L', +5409=>'L', +5410=>'L', +5411=>'L', +5412=>'L', +5413=>'L', +5414=>'L', +5415=>'L', +5416=>'L', +5417=>'L', +5418=>'L', +5419=>'L', +5420=>'L', +5421=>'L', +5422=>'L', +5423=>'L', +5424=>'L', +5425=>'L', +5426=>'L', +5427=>'L', +5428=>'L', +5429=>'L', +5430=>'L', +5431=>'L', +5432=>'L', +5433=>'L', +5434=>'L', +5435=>'L', +5436=>'L', +5437=>'L', +5438=>'L', +5439=>'L', +5440=>'L', +5441=>'L', +5442=>'L', +5443=>'L', +5444=>'L', +5445=>'L', +5446=>'L', +5447=>'L', +5448=>'L', +5449=>'L', +5450=>'L', +5451=>'L', +5452=>'L', +5453=>'L', +5454=>'L', +5455=>'L', +5456=>'L', +5457=>'L', +5458=>'L', +5459=>'L', +5460=>'L', +5461=>'L', +5462=>'L', +5463=>'L', +5464=>'L', +5465=>'L', +5466=>'L', +5467=>'L', +5468=>'L', +5469=>'L', +5470=>'L', +5471=>'L', +5472=>'L', +5473=>'L', +5474=>'L', +5475=>'L', +5476=>'L', +5477=>'L', +5478=>'L', +5479=>'L', +5480=>'L', +5481=>'L', +5482=>'L', +5483=>'L', +5484=>'L', +5485=>'L', +5486=>'L', +5487=>'L', +5488=>'L', +5489=>'L', +5490=>'L', +5491=>'L', +5492=>'L', +5493=>'L', +5494=>'L', +5495=>'L', +5496=>'L', +5497=>'L', +5498=>'L', +5499=>'L', +5500=>'L', +5501=>'L', +5502=>'L', +5503=>'L', +5504=>'L', +5505=>'L', +5506=>'L', +5507=>'L', +5508=>'L', +5509=>'L', +5510=>'L', +5511=>'L', +5512=>'L', +5513=>'L', +5514=>'L', +5515=>'L', +5516=>'L', +5517=>'L', +5518=>'L', +5519=>'L', +5520=>'L', +5521=>'L', +5522=>'L', +5523=>'L', +5524=>'L', +5525=>'L', +5526=>'L', +5527=>'L', +5528=>'L', +5529=>'L', +5530=>'L', +5531=>'L', +5532=>'L', +5533=>'L', +5534=>'L', +5535=>'L', +5536=>'L', +5537=>'L', +5538=>'L', +5539=>'L', +5540=>'L', +5541=>'L', +5542=>'L', +5543=>'L', +5544=>'L', +5545=>'L', +5546=>'L', +5547=>'L', +5548=>'L', +5549=>'L', +5550=>'L', +5551=>'L', +5552=>'L', +5553=>'L', +5554=>'L', +5555=>'L', +5556=>'L', +5557=>'L', +5558=>'L', +5559=>'L', +5560=>'L', +5561=>'L', +5562=>'L', +5563=>'L', +5564=>'L', +5565=>'L', +5566=>'L', +5567=>'L', +5568=>'L', +5569=>'L', +5570=>'L', +5571=>'L', +5572=>'L', +5573=>'L', +5574=>'L', +5575=>'L', +5576=>'L', +5577=>'L', +5578=>'L', +5579=>'L', +5580=>'L', +5581=>'L', +5582=>'L', +5583=>'L', +5584=>'L', +5585=>'L', +5586=>'L', +5587=>'L', +5588=>'L', +5589=>'L', +5590=>'L', +5591=>'L', +5592=>'L', +5593=>'L', +5594=>'L', +5595=>'L', +5596=>'L', +5597=>'L', +5598=>'L', +5599=>'L', +5600=>'L', +5601=>'L', +5602=>'L', +5603=>'L', +5604=>'L', +5605=>'L', +5606=>'L', +5607=>'L', +5608=>'L', +5609=>'L', +5610=>'L', +5611=>'L', +5612=>'L', +5613=>'L', +5614=>'L', +5615=>'L', +5616=>'L', +5617=>'L', +5618=>'L', +5619=>'L', +5620=>'L', +5621=>'L', +5622=>'L', +5623=>'L', +5624=>'L', +5625=>'L', +5626=>'L', +5627=>'L', +5628=>'L', +5629=>'L', +5630=>'L', +5631=>'L', +5632=>'L', +5633=>'L', +5634=>'L', +5635=>'L', +5636=>'L', +5637=>'L', +5638=>'L', +5639=>'L', +5640=>'L', +5641=>'L', +5642=>'L', +5643=>'L', +5644=>'L', +5645=>'L', +5646=>'L', +5647=>'L', +5648=>'L', +5649=>'L', +5650=>'L', +5651=>'L', +5652=>'L', +5653=>'L', +5654=>'L', +5655=>'L', +5656=>'L', +5657=>'L', +5658=>'L', +5659=>'L', +5660=>'L', +5661=>'L', +5662=>'L', +5663=>'L', +5664=>'L', +5665=>'L', +5666=>'L', +5667=>'L', +5668=>'L', +5669=>'L', +5670=>'L', +5671=>'L', +5672=>'L', +5673=>'L', +5674=>'L', +5675=>'L', +5676=>'L', +5677=>'L', +5678=>'L', +5679=>'L', +5680=>'L', +5681=>'L', +5682=>'L', +5683=>'L', +5684=>'L', +5685=>'L', +5686=>'L', +5687=>'L', +5688=>'L', +5689=>'L', +5690=>'L', +5691=>'L', +5692=>'L', +5693=>'L', +5694=>'L', +5695=>'L', +5696=>'L', +5697=>'L', +5698=>'L', +5699=>'L', +5700=>'L', +5701=>'L', +5702=>'L', +5703=>'L', +5704=>'L', +5705=>'L', +5706=>'L', +5707=>'L', +5708=>'L', +5709=>'L', +5710=>'L', +5711=>'L', +5712=>'L', +5713=>'L', +5714=>'L', +5715=>'L', +5716=>'L', +5717=>'L', +5718=>'L', +5719=>'L', +5720=>'L', +5721=>'L', +5722=>'L', +5723=>'L', +5724=>'L', +5725=>'L', +5726=>'L', +5727=>'L', +5728=>'L', +5729=>'L', +5730=>'L', +5731=>'L', +5732=>'L', +5733=>'L', +5734=>'L', +5735=>'L', +5736=>'L', +5737=>'L', +5738=>'L', +5739=>'L', +5740=>'L', +5741=>'L', +5742=>'L', +5743=>'L', +5744=>'L', +5745=>'L', +5746=>'L', +5747=>'L', +5748=>'L', +5749=>'L', +5750=>'L', +5760=>'WS', +5761=>'L', +5762=>'L', +5763=>'L', +5764=>'L', +5765=>'L', +5766=>'L', +5767=>'L', +5768=>'L', +5769=>'L', +5770=>'L', +5771=>'L', +5772=>'L', +5773=>'L', +5774=>'L', +5775=>'L', +5776=>'L', +5777=>'L', +5778=>'L', +5779=>'L', +5780=>'L', +5781=>'L', +5782=>'L', +5783=>'L', +5784=>'L', +5785=>'L', +5786=>'L', +5787=>'ON', +5788=>'ON', +5792=>'L', +5793=>'L', +5794=>'L', +5795=>'L', +5796=>'L', +5797=>'L', +5798=>'L', +5799=>'L', +5800=>'L', +5801=>'L', +5802=>'L', +5803=>'L', +5804=>'L', +5805=>'L', +5806=>'L', +5807=>'L', +5808=>'L', +5809=>'L', +5810=>'L', +5811=>'L', +5812=>'L', +5813=>'L', +5814=>'L', +5815=>'L', +5816=>'L', +5817=>'L', +5818=>'L', +5819=>'L', +5820=>'L', +5821=>'L', +5822=>'L', +5823=>'L', +5824=>'L', +5825=>'L', +5826=>'L', +5827=>'L', +5828=>'L', +5829=>'L', +5830=>'L', +5831=>'L', +5832=>'L', +5833=>'L', +5834=>'L', +5835=>'L', +5836=>'L', +5837=>'L', +5838=>'L', +5839=>'L', +5840=>'L', +5841=>'L', +5842=>'L', +5843=>'L', +5844=>'L', +5845=>'L', +5846=>'L', +5847=>'L', +5848=>'L', +5849=>'L', +5850=>'L', +5851=>'L', +5852=>'L', +5853=>'L', +5854=>'L', +5855=>'L', +5856=>'L', +5857=>'L', +5858=>'L', +5859=>'L', +5860=>'L', +5861=>'L', +5862=>'L', +5863=>'L', +5864=>'L', +5865=>'L', +5866=>'L', +5867=>'L', +5868=>'L', +5869=>'L', +5870=>'L', +5871=>'L', +5872=>'L', +5888=>'L', +5889=>'L', +5890=>'L', +5891=>'L', +5892=>'L', +5893=>'L', +5894=>'L', +5895=>'L', +5896=>'L', +5897=>'L', +5898=>'L', +5899=>'L', +5900=>'L', +5902=>'L', +5903=>'L', +5904=>'L', +5905=>'L', +5906=>'NSM', +5907=>'NSM', +5908=>'NSM', +5920=>'L', +5921=>'L', +5922=>'L', +5923=>'L', +5924=>'L', +5925=>'L', +5926=>'L', +5927=>'L', +5928=>'L', +5929=>'L', +5930=>'L', +5931=>'L', +5932=>'L', +5933=>'L', +5934=>'L', +5935=>'L', +5936=>'L', +5937=>'L', +5938=>'NSM', +5939=>'NSM', +5940=>'NSM', +5941=>'L', +5942=>'L', +5952=>'L', +5953=>'L', +5954=>'L', +5955=>'L', +5956=>'L', +5957=>'L', +5958=>'L', +5959=>'L', +5960=>'L', +5961=>'L', +5962=>'L', +5963=>'L', +5964=>'L', +5965=>'L', +5966=>'L', +5967=>'L', +5968=>'L', +5969=>'L', +5970=>'NSM', +5971=>'NSM', +5984=>'L', +5985=>'L', +5986=>'L', +5987=>'L', +5988=>'L', +5989=>'L', +5990=>'L', +5991=>'L', +5992=>'L', +5993=>'L', +5994=>'L', +5995=>'L', +5996=>'L', +5998=>'L', +5999=>'L', +6000=>'L', +6002=>'NSM', +6003=>'NSM', +6016=>'L', +6017=>'L', +6018=>'L', +6019=>'L', +6020=>'L', +6021=>'L', +6022=>'L', +6023=>'L', +6024=>'L', +6025=>'L', +6026=>'L', +6027=>'L', +6028=>'L', +6029=>'L', +6030=>'L', +6031=>'L', +6032=>'L', +6033=>'L', +6034=>'L', +6035=>'L', +6036=>'L', +6037=>'L', +6038=>'L', +6039=>'L', +6040=>'L', +6041=>'L', +6042=>'L', +6043=>'L', +6044=>'L', +6045=>'L', +6046=>'L', +6047=>'L', +6048=>'L', +6049=>'L', +6050=>'L', +6051=>'L', +6052=>'L', +6053=>'L', +6054=>'L', +6055=>'L', +6056=>'L', +6057=>'L', +6058=>'L', +6059=>'L', +6060=>'L', +6061=>'L', +6062=>'L', +6063=>'L', +6064=>'L', +6065=>'L', +6066=>'L', +6067=>'L', +6068=>'L', +6069=>'L', +6070=>'L', +6071=>'NSM', +6072=>'NSM', +6073=>'NSM', +6074=>'NSM', +6075=>'NSM', +6076=>'NSM', +6077=>'NSM', +6078=>'L', +6079=>'L', +6080=>'L', +6081=>'L', +6082=>'L', +6083=>'L', +6084=>'L', +6085=>'L', +6086=>'NSM', +6087=>'L', +6088=>'L', +6089=>'NSM', +6090=>'NSM', +6091=>'NSM', +6092=>'NSM', +6093=>'NSM', +6094=>'NSM', +6095=>'NSM', +6096=>'NSM', +6097=>'NSM', +6098=>'NSM', +6099=>'NSM', +6100=>'L', +6101=>'L', +6102=>'L', +6103=>'L', +6104=>'L', +6105=>'L', +6106=>'L', +6107=>'ET', +6108=>'L', +6109=>'NSM', +6112=>'L', +6113=>'L', +6114=>'L', +6115=>'L', +6116=>'L', +6117=>'L', +6118=>'L', +6119=>'L', +6120=>'L', +6121=>'L', +6128=>'ON', +6129=>'ON', +6130=>'ON', +6131=>'ON', +6132=>'ON', +6133=>'ON', +6134=>'ON', +6135=>'ON', +6136=>'ON', +6137=>'ON', +6144=>'ON', +6145=>'ON', +6146=>'ON', +6147=>'ON', +6148=>'ON', +6149=>'ON', +6150=>'ON', +6151=>'ON', +6152=>'ON', +6153=>'ON', +6154=>'ON', +6155=>'NSM', +6156=>'NSM', +6157=>'NSM', +6158=>'WS', +6160=>'L', +6161=>'L', +6162=>'L', +6163=>'L', +6164=>'L', +6165=>'L', +6166=>'L', +6167=>'L', +6168=>'L', +6169=>'L', +6176=>'L', +6177=>'L', +6178=>'L', +6179=>'L', +6180=>'L', +6181=>'L', +6182=>'L', +6183=>'L', +6184=>'L', +6185=>'L', +6186=>'L', +6187=>'L', +6188=>'L', +6189=>'L', +6190=>'L', +6191=>'L', +6192=>'L', +6193=>'L', +6194=>'L', +6195=>'L', +6196=>'L', +6197=>'L', +6198=>'L', +6199=>'L', +6200=>'L', +6201=>'L', +6202=>'L', +6203=>'L', +6204=>'L', +6205=>'L', +6206=>'L', +6207=>'L', +6208=>'L', +6209=>'L', +6210=>'L', +6211=>'L', +6212=>'L', +6213=>'L', +6214=>'L', +6215=>'L', +6216=>'L', +6217=>'L', +6218=>'L', +6219=>'L', +6220=>'L', +6221=>'L', +6222=>'L', +6223=>'L', +6224=>'L', +6225=>'L', +6226=>'L', +6227=>'L', +6228=>'L', +6229=>'L', +6230=>'L', +6231=>'L', +6232=>'L', +6233=>'L', +6234=>'L', +6235=>'L', +6236=>'L', +6237=>'L', +6238=>'L', +6239=>'L', +6240=>'L', +6241=>'L', +6242=>'L', +6243=>'L', +6244=>'L', +6245=>'L', +6246=>'L', +6247=>'L', +6248=>'L', +6249=>'L', +6250=>'L', +6251=>'L', +6252=>'L', +6253=>'L', +6254=>'L', +6255=>'L', +6256=>'L', +6257=>'L', +6258=>'L', +6259=>'L', +6260=>'L', +6261=>'L', +6262=>'L', +6263=>'L', +6272=>'L', +6273=>'L', +6274=>'L', +6275=>'L', +6276=>'L', +6277=>'L', +6278=>'L', +6279=>'L', +6280=>'L', +6281=>'L', +6282=>'L', +6283=>'L', +6284=>'L', +6285=>'L', +6286=>'L', +6287=>'L', +6288=>'L', +6289=>'L', +6290=>'L', +6291=>'L', +6292=>'L', +6293=>'L', +6294=>'L', +6295=>'L', +6296=>'L', +6297=>'L', +6298=>'L', +6299=>'L', +6300=>'L', +6301=>'L', +6302=>'L', +6303=>'L', +6304=>'L', +6305=>'L', +6306=>'L', +6307=>'L', +6308=>'L', +6309=>'L', +6310=>'L', +6311=>'L', +6312=>'L', +6313=>'NSM', +6400=>'L', +6401=>'L', +6402=>'L', +6403=>'L', +6404=>'L', +6405=>'L', +6406=>'L', +6407=>'L', +6408=>'L', +6409=>'L', +6410=>'L', +6411=>'L', +6412=>'L', +6413=>'L', +6414=>'L', +6415=>'L', +6416=>'L', +6417=>'L', +6418=>'L', +6419=>'L', +6420=>'L', +6421=>'L', +6422=>'L', +6423=>'L', +6424=>'L', +6425=>'L', +6426=>'L', +6427=>'L', +6428=>'L', +6432=>'NSM', +6433=>'NSM', +6434=>'NSM', +6435=>'L', +6436=>'L', +6437=>'L', +6438=>'L', +6439=>'NSM', +6440=>'NSM', +6441=>'NSM', +6442=>'NSM', +6443=>'NSM', +6448=>'L', +6449=>'L', +6450=>'NSM', +6451=>'L', +6452=>'L', +6453=>'L', +6454=>'L', +6455=>'L', +6456=>'L', +6457=>'NSM', +6458=>'NSM', +6459=>'NSM', +6464=>'ON', +6468=>'ON', +6469=>'ON', +6470=>'L', +6471=>'L', +6472=>'L', +6473=>'L', +6474=>'L', +6475=>'L', +6476=>'L', +6477=>'L', +6478=>'L', +6479=>'L', +6480=>'L', +6481=>'L', +6482=>'L', +6483=>'L', +6484=>'L', +6485=>'L', +6486=>'L', +6487=>'L', +6488=>'L', +6489=>'L', +6490=>'L', +6491=>'L', +6492=>'L', +6493=>'L', +6494=>'L', +6495=>'L', +6496=>'L', +6497=>'L', +6498=>'L', +6499=>'L', +6500=>'L', +6501=>'L', +6502=>'L', +6503=>'L', +6504=>'L', +6505=>'L', +6506=>'L', +6507=>'L', +6508=>'L', +6509=>'L', +6512=>'L', +6513=>'L', +6514=>'L', +6515=>'L', +6516=>'L', +6528=>'L', +6529=>'L', +6530=>'L', +6531=>'L', +6532=>'L', +6533=>'L', +6534=>'L', +6535=>'L', +6536=>'L', +6537=>'L', +6538=>'L', +6539=>'L', +6540=>'L', +6541=>'L', +6542=>'L', +6543=>'L', +6544=>'L', +6545=>'L', +6546=>'L', +6547=>'L', +6548=>'L', +6549=>'L', +6550=>'L', +6551=>'L', +6552=>'L', +6553=>'L', +6554=>'L', +6555=>'L', +6556=>'L', +6557=>'L', +6558=>'L', +6559=>'L', +6560=>'L', +6561=>'L', +6562=>'L', +6563=>'L', +6564=>'L', +6565=>'L', +6566=>'L', +6567=>'L', +6568=>'L', +6569=>'L', +6576=>'L', +6577=>'L', +6578=>'L', +6579=>'L', +6580=>'L', +6581=>'L', +6582=>'L', +6583=>'L', +6584=>'L', +6585=>'L', +6586=>'L', +6587=>'L', +6588=>'L', +6589=>'L', +6590=>'L', +6591=>'L', +6592=>'L', +6593=>'L', +6594=>'L', +6595=>'L', +6596=>'L', +6597=>'L', +6598=>'L', +6599=>'L', +6600=>'L', +6601=>'L', +6608=>'L', +6609=>'L', +6610=>'L', +6611=>'L', +6612=>'L', +6613=>'L', +6614=>'L', +6615=>'L', +6616=>'L', +6617=>'L', +6622=>'ON', +6623=>'ON', +6624=>'ON', +6625=>'ON', +6626=>'ON', +6627=>'ON', +6628=>'ON', +6629=>'ON', +6630=>'ON', +6631=>'ON', +6632=>'ON', +6633=>'ON', +6634=>'ON', +6635=>'ON', +6636=>'ON', +6637=>'ON', +6638=>'ON', +6639=>'ON', +6640=>'ON', +6641=>'ON', +6642=>'ON', +6643=>'ON', +6644=>'ON', +6645=>'ON', +6646=>'ON', +6647=>'ON', +6648=>'ON', +6649=>'ON', +6650=>'ON', +6651=>'ON', +6652=>'ON', +6653=>'ON', +6654=>'ON', +6655=>'ON', +6656=>'L', +6657=>'L', +6658=>'L', +6659=>'L', +6660=>'L', +6661=>'L', +6662=>'L', +6663=>'L', +6664=>'L', +6665=>'L', +6666=>'L', +6667=>'L', +6668=>'L', +6669=>'L', +6670=>'L', +6671=>'L', +6672=>'L', +6673=>'L', +6674=>'L', +6675=>'L', +6676=>'L', +6677=>'L', +6678=>'L', +6679=>'NSM', +6680=>'NSM', +6681=>'L', +6682=>'L', +6683=>'L', +6686=>'L', +6687=>'L', +6912=>'NSM', +6913=>'NSM', +6914=>'NSM', +6915=>'NSM', +6916=>'L', +6917=>'L', +6918=>'L', +6919=>'L', +6920=>'L', +6921=>'L', +6922=>'L', +6923=>'L', +6924=>'L', +6925=>'L', +6926=>'L', +6927=>'L', +6928=>'L', +6929=>'L', +6930=>'L', +6931=>'L', +6932=>'L', +6933=>'L', +6934=>'L', +6935=>'L', +6936=>'L', +6937=>'L', +6938=>'L', +6939=>'L', +6940=>'L', +6941=>'L', +6942=>'L', +6943=>'L', +6944=>'L', +6945=>'L', +6946=>'L', +6947=>'L', +6948=>'L', +6949=>'L', +6950=>'L', +6951=>'L', +6952=>'L', +6953=>'L', +6954=>'L', +6955=>'L', +6956=>'L', +6957=>'L', +6958=>'L', +6959=>'L', +6960=>'L', +6961=>'L', +6962=>'L', +6963=>'L', +6964=>'NSM', +6965=>'L', +6966=>'NSM', +6967=>'NSM', +6968=>'NSM', +6969=>'NSM', +6970=>'NSM', +6971=>'L', +6972=>'NSM', +6973=>'L', +6974=>'L', +6975=>'L', +6976=>'L', +6977=>'L', +6978=>'NSM', +6979=>'L', +6980=>'L', +6981=>'L', +6982=>'L', +6983=>'L', +6984=>'L', +6985=>'L', +6986=>'L', +6987=>'L', +6992=>'L', +6993=>'L', +6994=>'L', +6995=>'L', +6996=>'L', +6997=>'L', +6998=>'L', +6999=>'L', +7000=>'L', +7001=>'L', +7002=>'L', +7003=>'L', +7004=>'L', +7005=>'L', +7006=>'L', +7007=>'L', +7008=>'L', +7009=>'L', +7010=>'L', +7011=>'L', +7012=>'L', +7013=>'L', +7014=>'L', +7015=>'L', +7016=>'L', +7017=>'L', +7018=>'L', +7019=>'NSM', +7020=>'NSM', +7021=>'NSM', +7022=>'NSM', +7023=>'NSM', +7024=>'NSM', +7025=>'NSM', +7026=>'NSM', +7027=>'NSM', +7028=>'L', +7029=>'L', +7030=>'L', +7031=>'L', +7032=>'L', +7033=>'L', +7034=>'L', +7035=>'L', +7036=>'L', +7424=>'L', +7425=>'L', +7426=>'L', +7427=>'L', +7428=>'L', +7429=>'L', +7430=>'L', +7431=>'L', +7432=>'L', +7433=>'L', +7434=>'L', +7435=>'L', +7436=>'L', +7437=>'L', +7438=>'L', +7439=>'L', +7440=>'L', +7441=>'L', +7442=>'L', +7443=>'L', +7444=>'L', +7445=>'L', +7446=>'L', +7447=>'L', +7448=>'L', +7449=>'L', +7450=>'L', +7451=>'L', +7452=>'L', +7453=>'L', +7454=>'L', +7455=>'L', +7456=>'L', +7457=>'L', +7458=>'L', +7459=>'L', +7460=>'L', +7461=>'L', +7462=>'L', +7463=>'L', +7464=>'L', +7465=>'L', +7466=>'L', +7467=>'L', +7468=>'L', +7469=>'L', +7470=>'L', +7471=>'L', +7472=>'L', +7473=>'L', +7474=>'L', +7475=>'L', +7476=>'L', +7477=>'L', +7478=>'L', +7479=>'L', +7480=>'L', +7481=>'L', +7482=>'L', +7483=>'L', +7484=>'L', +7485=>'L', +7486=>'L', +7487=>'L', +7488=>'L', +7489=>'L', +7490=>'L', +7491=>'L', +7492=>'L', +7493=>'L', +7494=>'L', +7495=>'L', +7496=>'L', +7497=>'L', +7498=>'L', +7499=>'L', +7500=>'L', +7501=>'L', +7502=>'L', +7503=>'L', +7504=>'L', +7505=>'L', +7506=>'L', +7507=>'L', +7508=>'L', +7509=>'L', +7510=>'L', +7511=>'L', +7512=>'L', +7513=>'L', +7514=>'L', +7515=>'L', +7516=>'L', +7517=>'L', +7518=>'L', +7519=>'L', +7520=>'L', +7521=>'L', +7522=>'L', +7523=>'L', +7524=>'L', +7525=>'L', +7526=>'L', +7527=>'L', +7528=>'L', +7529=>'L', +7530=>'L', +7531=>'L', +7532=>'L', +7533=>'L', +7534=>'L', +7535=>'L', +7536=>'L', +7537=>'L', +7538=>'L', +7539=>'L', +7540=>'L', +7541=>'L', +7542=>'L', +7543=>'L', +7544=>'L', +7545=>'L', +7546=>'L', +7547=>'L', +7548=>'L', +7549=>'L', +7550=>'L', +7551=>'L', +7552=>'L', +7553=>'L', +7554=>'L', +7555=>'L', +7556=>'L', +7557=>'L', +7558=>'L', +7559=>'L', +7560=>'L', +7561=>'L', +7562=>'L', +7563=>'L', +7564=>'L', +7565=>'L', +7566=>'L', +7567=>'L', +7568=>'L', +7569=>'L', +7570=>'L', +7571=>'L', +7572=>'L', +7573=>'L', +7574=>'L', +7575=>'L', +7576=>'L', +7577=>'L', +7578=>'L', +7579=>'L', +7580=>'L', +7581=>'L', +7582=>'L', +7583=>'L', +7584=>'L', +7585=>'L', +7586=>'L', +7587=>'L', +7588=>'L', +7589=>'L', +7590=>'L', +7591=>'L', +7592=>'L', +7593=>'L', +7594=>'L', +7595=>'L', +7596=>'L', +7597=>'L', +7598=>'L', +7599=>'L', +7600=>'L', +7601=>'L', +7602=>'L', +7603=>'L', +7604=>'L', +7605=>'L', +7606=>'L', +7607=>'L', +7608=>'L', +7609=>'L', +7610=>'L', +7611=>'L', +7612=>'L', +7613=>'L', +7614=>'L', +7615=>'L', +7616=>'NSM', +7617=>'NSM', +7618=>'NSM', +7619=>'NSM', +7620=>'NSM', +7621=>'NSM', +7622=>'NSM', +7623=>'NSM', +7624=>'NSM', +7625=>'NSM', +7626=>'NSM', +7678=>'NSM', +7679=>'NSM', +7680=>'L', +7681=>'L', +7682=>'L', +7683=>'L', +7684=>'L', +7685=>'L', +7686=>'L', +7687=>'L', +7688=>'L', +7689=>'L', +7690=>'L', +7691=>'L', +7692=>'L', +7693=>'L', +7694=>'L', +7695=>'L', +7696=>'L', +7697=>'L', +7698=>'L', +7699=>'L', +7700=>'L', +7701=>'L', +7702=>'L', +7703=>'L', +7704=>'L', +7705=>'L', +7706=>'L', +7707=>'L', +7708=>'L', +7709=>'L', +7710=>'L', +7711=>'L', +7712=>'L', +7713=>'L', +7714=>'L', +7715=>'L', +7716=>'L', +7717=>'L', +7718=>'L', +7719=>'L', +7720=>'L', +7721=>'L', +7722=>'L', +7723=>'L', +7724=>'L', +7725=>'L', +7726=>'L', +7727=>'L', +7728=>'L', +7729=>'L', +7730=>'L', +7731=>'L', +7732=>'L', +7733=>'L', +7734=>'L', +7735=>'L', +7736=>'L', +7737=>'L', +7738=>'L', +7739=>'L', +7740=>'L', +7741=>'L', +7742=>'L', +7743=>'L', +7744=>'L', +7745=>'L', +7746=>'L', +7747=>'L', +7748=>'L', +7749=>'L', +7750=>'L', +7751=>'L', +7752=>'L', +7753=>'L', +7754=>'L', +7755=>'L', +7756=>'L', +7757=>'L', +7758=>'L', +7759=>'L', +7760=>'L', +7761=>'L', +7762=>'L', +7763=>'L', +7764=>'L', +7765=>'L', +7766=>'L', +7767=>'L', +7768=>'L', +7769=>'L', +7770=>'L', +7771=>'L', +7772=>'L', +7773=>'L', +7774=>'L', +7775=>'L', +7776=>'L', +7777=>'L', +7778=>'L', +7779=>'L', +7780=>'L', +7781=>'L', +7782=>'L', +7783=>'L', +7784=>'L', +7785=>'L', +7786=>'L', +7787=>'L', +7788=>'L', +7789=>'L', +7790=>'L', +7791=>'L', +7792=>'L', +7793=>'L', +7794=>'L', +7795=>'L', +7796=>'L', +7797=>'L', +7798=>'L', +7799=>'L', +7800=>'L', +7801=>'L', +7802=>'L', +7803=>'L', +7804=>'L', +7805=>'L', +7806=>'L', +7807=>'L', +7808=>'L', +7809=>'L', +7810=>'L', +7811=>'L', +7812=>'L', +7813=>'L', +7814=>'L', +7815=>'L', +7816=>'L', +7817=>'L', +7818=>'L', +7819=>'L', +7820=>'L', +7821=>'L', +7822=>'L', +7823=>'L', +7824=>'L', +7825=>'L', +7826=>'L', +7827=>'L', +7828=>'L', +7829=>'L', +7830=>'L', +7831=>'L', +7832=>'L', +7833=>'L', +7834=>'L', +7835=>'L', +7840=>'L', +7841=>'L', +7842=>'L', +7843=>'L', +7844=>'L', +7845=>'L', +7846=>'L', +7847=>'L', +7848=>'L', +7849=>'L', +7850=>'L', +7851=>'L', +7852=>'L', +7853=>'L', +7854=>'L', +7855=>'L', +7856=>'L', +7857=>'L', +7858=>'L', +7859=>'L', +7860=>'L', +7861=>'L', +7862=>'L', +7863=>'L', +7864=>'L', +7865=>'L', +7866=>'L', +7867=>'L', +7868=>'L', +7869=>'L', +7870=>'L', +7871=>'L', +7872=>'L', +7873=>'L', +7874=>'L', +7875=>'L', +7876=>'L', +7877=>'L', +7878=>'L', +7879=>'L', +7880=>'L', +7881=>'L', +7882=>'L', +7883=>'L', +7884=>'L', +7885=>'L', +7886=>'L', +7887=>'L', +7888=>'L', +7889=>'L', +7890=>'L', +7891=>'L', +7892=>'L', +7893=>'L', +7894=>'L', +7895=>'L', +7896=>'L', +7897=>'L', +7898=>'L', +7899=>'L', +7900=>'L', +7901=>'L', +7902=>'L', +7903=>'L', +7904=>'L', +7905=>'L', +7906=>'L', +7907=>'L', +7908=>'L', +7909=>'L', +7910=>'L', +7911=>'L', +7912=>'L', +7913=>'L', +7914=>'L', +7915=>'L', +7916=>'L', +7917=>'L', +7918=>'L', +7919=>'L', +7920=>'L', +7921=>'L', +7922=>'L', +7923=>'L', +7924=>'L', +7925=>'L', +7926=>'L', +7927=>'L', +7928=>'L', +7929=>'L', +7936=>'L', +7937=>'L', +7938=>'L', +7939=>'L', +7940=>'L', +7941=>'L', +7942=>'L', +7943=>'L', +7944=>'L', +7945=>'L', +7946=>'L', +7947=>'L', +7948=>'L', +7949=>'L', +7950=>'L', +7951=>'L', +7952=>'L', +7953=>'L', +7954=>'L', +7955=>'L', +7956=>'L', +7957=>'L', +7960=>'L', +7961=>'L', +7962=>'L', +7963=>'L', +7964=>'L', +7965=>'L', +7968=>'L', +7969=>'L', +7970=>'L', +7971=>'L', +7972=>'L', +7973=>'L', +7974=>'L', +7975=>'L', +7976=>'L', +7977=>'L', +7978=>'L', +7979=>'L', +7980=>'L', +7981=>'L', +7982=>'L', +7983=>'L', +7984=>'L', +7985=>'L', +7986=>'L', +7987=>'L', +7988=>'L', +7989=>'L', +7990=>'L', +7991=>'L', +7992=>'L', +7993=>'L', +7994=>'L', +7995=>'L', +7996=>'L', +7997=>'L', +7998=>'L', +7999=>'L', +8000=>'L', +8001=>'L', +8002=>'L', +8003=>'L', +8004=>'L', +8005=>'L', +8008=>'L', +8009=>'L', +8010=>'L', +8011=>'L', +8012=>'L', +8013=>'L', +8016=>'L', +8017=>'L', +8018=>'L', +8019=>'L', +8020=>'L', +8021=>'L', +8022=>'L', +8023=>'L', +8025=>'L', +8027=>'L', +8029=>'L', +8031=>'L', +8032=>'L', +8033=>'L', +8034=>'L', +8035=>'L', +8036=>'L', +8037=>'L', +8038=>'L', +8039=>'L', +8040=>'L', +8041=>'L', +8042=>'L', +8043=>'L', +8044=>'L', +8045=>'L', +8046=>'L', +8047=>'L', +8048=>'L', +8049=>'L', +8050=>'L', +8051=>'L', +8052=>'L', +8053=>'L', +8054=>'L', +8055=>'L', +8056=>'L', +8057=>'L', +8058=>'L', +8059=>'L', +8060=>'L', +8061=>'L', +8064=>'L', +8065=>'L', +8066=>'L', +8067=>'L', +8068=>'L', +8069=>'L', +8070=>'L', +8071=>'L', +8072=>'L', +8073=>'L', +8074=>'L', +8075=>'L', +8076=>'L', +8077=>'L', +8078=>'L', +8079=>'L', +8080=>'L', +8081=>'L', +8082=>'L', +8083=>'L', +8084=>'L', +8085=>'L', +8086=>'L', +8087=>'L', +8088=>'L', +8089=>'L', +8090=>'L', +8091=>'L', +8092=>'L', +8093=>'L', +8094=>'L', +8095=>'L', +8096=>'L', +8097=>'L', +8098=>'L', +8099=>'L', +8100=>'L', +8101=>'L', +8102=>'L', +8103=>'L', +8104=>'L', +8105=>'L', +8106=>'L', +8107=>'L', +8108=>'L', +8109=>'L', +8110=>'L', +8111=>'L', +8112=>'L', +8113=>'L', +8114=>'L', +8115=>'L', +8116=>'L', +8118=>'L', +8119=>'L', +8120=>'L', +8121=>'L', +8122=>'L', +8123=>'L', +8124=>'L', +8125=>'ON', +8126=>'L', +8127=>'ON', +8128=>'ON', +8129=>'ON', +8130=>'L', +8131=>'L', +8132=>'L', +8134=>'L', +8135=>'L', +8136=>'L', +8137=>'L', +8138=>'L', +8139=>'L', +8140=>'L', +8141=>'ON', +8142=>'ON', +8143=>'ON', +8144=>'L', +8145=>'L', +8146=>'L', +8147=>'L', +8150=>'L', +8151=>'L', +8152=>'L', +8153=>'L', +8154=>'L', +8155=>'L', +8157=>'ON', +8158=>'ON', +8159=>'ON', +8160=>'L', +8161=>'L', +8162=>'L', +8163=>'L', +8164=>'L', +8165=>'L', +8166=>'L', +8167=>'L', +8168=>'L', +8169=>'L', +8170=>'L', +8171=>'L', +8172=>'L', +8173=>'ON', +8174=>'ON', +8175=>'ON', +8178=>'L', +8179=>'L', +8180=>'L', +8182=>'L', +8183=>'L', +8184=>'L', +8185=>'L', +8186=>'L', +8187=>'L', +8188=>'L', +8189=>'ON', +8190=>'ON', +8192=>'WS', +8193=>'WS', +8194=>'WS', +8195=>'WS', +8196=>'WS', +8197=>'WS', +8198=>'WS', +8199=>'WS', +8200=>'WS', +8201=>'WS', +8202=>'WS', +8203=>'BN', +8204=>'BN', +8205=>'BN', +8206=>'L', +8207=>'R', +8208=>'ON', +8209=>'ON', +8210=>'ON', +8211=>'ON', +8212=>'ON', +8213=>'ON', +8214=>'ON', +8215=>'ON', +8216=>'ON', +8217=>'ON', +8218=>'ON', +8219=>'ON', +8220=>'ON', +8221=>'ON', +8222=>'ON', +8223=>'ON', +8224=>'ON', +8225=>'ON', +8226=>'ON', +8227=>'ON', +8228=>'ON', +8229=>'ON', +8230=>'ON', +8231=>'ON', +8232=>'WS', +8233=>'B', +8234=>'LRE', +8235=>'RLE', +8236=>'PDF', +8237=>'LRO', +8238=>'RLO', +8239=>'CS', +8240=>'ET', +8241=>'ET', +8242=>'ET', +8243=>'ET', +8244=>'ET', +8245=>'ON', +8246=>'ON', +8247=>'ON', +8248=>'ON', +8249=>'ON', +8250=>'ON', +8251=>'ON', +8252=>'ON', +8253=>'ON', +8254=>'ON', +8255=>'ON', +8256=>'ON', +8257=>'ON', +8258=>'ON', +8259=>'ON', +8260=>'CS', +8261=>'ON', +8262=>'ON', +8263=>'ON', +8264=>'ON', +8265=>'ON', +8266=>'ON', +8267=>'ON', +8268=>'ON', +8269=>'ON', +8270=>'ON', +8271=>'ON', +8272=>'ON', +8273=>'ON', +8274=>'ON', +8275=>'ON', +8276=>'ON', +8277=>'ON', +8278=>'ON', +8279=>'ON', +8280=>'ON', +8281=>'ON', +8282=>'ON', +8283=>'ON', +8284=>'ON', +8285=>'ON', +8286=>'ON', +8287=>'WS', +8288=>'BN', +8289=>'BN', +8290=>'BN', +8291=>'BN', +8298=>'BN', +8299=>'BN', +8300=>'BN', +8301=>'BN', +8302=>'BN', +8303=>'BN', +8304=>'EN', +8305=>'L', +8308=>'EN', +8309=>'EN', +8310=>'EN', +8311=>'EN', +8312=>'EN', +8313=>'EN', +8314=>'ES', +8315=>'ES', +8316=>'ON', +8317=>'ON', +8318=>'ON', +8319=>'L', +8320=>'EN', +8321=>'EN', +8322=>'EN', +8323=>'EN', +8324=>'EN', +8325=>'EN', +8326=>'EN', +8327=>'EN', +8328=>'EN', +8329=>'EN', +8330=>'ES', +8331=>'ES', +8332=>'ON', +8333=>'ON', +8334=>'ON', +8336=>'L', +8337=>'L', +8338=>'L', +8339=>'L', +8340=>'L', +8352=>'ET', +8353=>'ET', +8354=>'ET', +8355=>'ET', +8356=>'ET', +8357=>'ET', +8358=>'ET', +8359=>'ET', +8360=>'ET', +8361=>'ET', +8362=>'ET', +8363=>'ET', +8364=>'ET', +8365=>'ET', +8366=>'ET', +8367=>'ET', +8368=>'ET', +8369=>'ET', +8370=>'ET', +8371=>'ET', +8372=>'ET', +8373=>'ET', +8400=>'NSM', +8401=>'NSM', +8402=>'NSM', +8403=>'NSM', +8404=>'NSM', +8405=>'NSM', +8406=>'NSM', +8407=>'NSM', +8408=>'NSM', +8409=>'NSM', +8410=>'NSM', +8411=>'NSM', +8412=>'NSM', +8413=>'NSM', +8414=>'NSM', +8415=>'NSM', +8416=>'NSM', +8417=>'NSM', +8418=>'NSM', +8419=>'NSM', +8420=>'NSM', +8421=>'NSM', +8422=>'NSM', +8423=>'NSM', +8424=>'NSM', +8425=>'NSM', +8426=>'NSM', +8427=>'NSM', +8428=>'NSM', +8429=>'NSM', +8430=>'NSM', +8431=>'NSM', +8448=>'ON', +8449=>'ON', +8450=>'L', +8451=>'ON', +8452=>'ON', +8453=>'ON', +8454=>'ON', +8455=>'L', +8456=>'ON', +8457=>'ON', +8458=>'L', +8459=>'L', +8460=>'L', +8461=>'L', +8462=>'L', +8463=>'L', +8464=>'L', +8465=>'L', +8466=>'L', +8467=>'L', +8468=>'ON', +8469=>'L', +8470=>'ON', +8471=>'ON', +8472=>'ON', +8473=>'L', +8474=>'L', +8475=>'L', +8476=>'L', +8477=>'L', +8478=>'ON', +8479=>'ON', +8480=>'ON', +8481=>'ON', +8482=>'ON', +8483=>'ON', +8484=>'L', +8485=>'ON', +8486=>'L', +8487=>'ON', +8488=>'L', +8489=>'ON', +8490=>'L', +8491=>'L', +8492=>'L', +8493=>'L', +8494=>'ET', +8495=>'L', +8496=>'L', +8497=>'L', +8498=>'L', +8499=>'L', +8500=>'L', +8501=>'L', +8502=>'L', +8503=>'L', +8504=>'L', +8505=>'L', +8506=>'ON', +8507=>'ON', +8508=>'L', +8509=>'L', +8510=>'L', +8511=>'L', +8512=>'ON', +8513=>'ON', +8514=>'ON', +8515=>'ON', +8516=>'ON', +8517=>'L', +8518=>'L', +8519=>'L', +8520=>'L', +8521=>'L', +8522=>'ON', +8523=>'ON', +8524=>'ON', +8525=>'ON', +8526=>'L', +8531=>'ON', +8532=>'ON', +8533=>'ON', +8534=>'ON', +8535=>'ON', +8536=>'ON', +8537=>'ON', +8538=>'ON', +8539=>'ON', +8540=>'ON', +8541=>'ON', +8542=>'ON', +8543=>'ON', +8544=>'L', +8545=>'L', +8546=>'L', +8547=>'L', +8548=>'L', +8549=>'L', +8550=>'L', +8551=>'L', +8552=>'L', +8553=>'L', +8554=>'L', +8555=>'L', +8556=>'L', +8557=>'L', +8558=>'L', +8559=>'L', +8560=>'L', +8561=>'L', +8562=>'L', +8563=>'L', +8564=>'L', +8565=>'L', +8566=>'L', +8567=>'L', +8568=>'L', +8569=>'L', +8570=>'L', +8571=>'L', +8572=>'L', +8573=>'L', +8574=>'L', +8575=>'L', +8576=>'L', +8577=>'L', +8578=>'L', +8579=>'L', +8580=>'L', +8592=>'ON', +8593=>'ON', +8594=>'ON', +8595=>'ON', +8596=>'ON', +8597=>'ON', +8598=>'ON', +8599=>'ON', +8600=>'ON', +8601=>'ON', +8602=>'ON', +8603=>'ON', +8604=>'ON', +8605=>'ON', +8606=>'ON', +8607=>'ON', +8608=>'ON', +8609=>'ON', +8610=>'ON', +8611=>'ON', +8612=>'ON', +8613=>'ON', +8614=>'ON', +8615=>'ON', +8616=>'ON', +8617=>'ON', +8618=>'ON', +8619=>'ON', +8620=>'ON', +8621=>'ON', +8622=>'ON', +8623=>'ON', +8624=>'ON', +8625=>'ON', +8626=>'ON', +8627=>'ON', +8628=>'ON', +8629=>'ON', +8630=>'ON', +8631=>'ON', +8632=>'ON', +8633=>'ON', +8634=>'ON', +8635=>'ON', +8636=>'ON', +8637=>'ON', +8638=>'ON', +8639=>'ON', +8640=>'ON', +8641=>'ON', +8642=>'ON', +8643=>'ON', +8644=>'ON', +8645=>'ON', +8646=>'ON', +8647=>'ON', +8648=>'ON', +8649=>'ON', +8650=>'ON', +8651=>'ON', +8652=>'ON', +8653=>'ON', +8654=>'ON', +8655=>'ON', +8656=>'ON', +8657=>'ON', +8658=>'ON', +8659=>'ON', +8660=>'ON', +8661=>'ON', +8662=>'ON', +8663=>'ON', +8664=>'ON', +8665=>'ON', +8666=>'ON', +8667=>'ON', +8668=>'ON', +8669=>'ON', +8670=>'ON', +8671=>'ON', +8672=>'ON', +8673=>'ON', +8674=>'ON', +8675=>'ON', +8676=>'ON', +8677=>'ON', +8678=>'ON', +8679=>'ON', +8680=>'ON', +8681=>'ON', +8682=>'ON', +8683=>'ON', +8684=>'ON', +8685=>'ON', +8686=>'ON', +8687=>'ON', +8688=>'ON', +8689=>'ON', +8690=>'ON', +8691=>'ON', +8692=>'ON', +8693=>'ON', +8694=>'ON', +8695=>'ON', +8696=>'ON', +8697=>'ON', +8698=>'ON', +8699=>'ON', +8700=>'ON', +8701=>'ON', +8702=>'ON', +8703=>'ON', +8704=>'ON', +8705=>'ON', +8706=>'ON', +8707=>'ON', +8708=>'ON', +8709=>'ON', +8710=>'ON', +8711=>'ON', +8712=>'ON', +8713=>'ON', +8714=>'ON', +8715=>'ON', +8716=>'ON', +8717=>'ON', +8718=>'ON', +8719=>'ON', +8720=>'ON', +8721=>'ON', +8722=>'ES', +8723=>'ET', +8724=>'ON', +8725=>'ON', +8726=>'ON', +8727=>'ON', +8728=>'ON', +8729=>'ON', +8730=>'ON', +8731=>'ON', +8732=>'ON', +8733=>'ON', +8734=>'ON', +8735=>'ON', +8736=>'ON', +8737=>'ON', +8738=>'ON', +8739=>'ON', +8740=>'ON', +8741=>'ON', +8742=>'ON', +8743=>'ON', +8744=>'ON', +8745=>'ON', +8746=>'ON', +8747=>'ON', +8748=>'ON', +8749=>'ON', +8750=>'ON', +8751=>'ON', +8752=>'ON', +8753=>'ON', +8754=>'ON', +8755=>'ON', +8756=>'ON', +8757=>'ON', +8758=>'ON', +8759=>'ON', +8760=>'ON', +8761=>'ON', +8762=>'ON', +8763=>'ON', +8764=>'ON', +8765=>'ON', +8766=>'ON', +8767=>'ON', +8768=>'ON', +8769=>'ON', +8770=>'ON', +8771=>'ON', +8772=>'ON', +8773=>'ON', +8774=>'ON', +8775=>'ON', +8776=>'ON', +8777=>'ON', +8778=>'ON', +8779=>'ON', +8780=>'ON', +8781=>'ON', +8782=>'ON', +8783=>'ON', +8784=>'ON', +8785=>'ON', +8786=>'ON', +8787=>'ON', +8788=>'ON', +8789=>'ON', +8790=>'ON', +8791=>'ON', +8792=>'ON', +8793=>'ON', +8794=>'ON', +8795=>'ON', +8796=>'ON', +8797=>'ON', +8798=>'ON', +8799=>'ON', +8800=>'ON', +8801=>'ON', +8802=>'ON', +8803=>'ON', +8804=>'ON', +8805=>'ON', +8806=>'ON', +8807=>'ON', +8808=>'ON', +8809=>'ON', +8810=>'ON', +8811=>'ON', +8812=>'ON', +8813=>'ON', +8814=>'ON', +8815=>'ON', +8816=>'ON', +8817=>'ON', +8818=>'ON', +8819=>'ON', +8820=>'ON', +8821=>'ON', +8822=>'ON', +8823=>'ON', +8824=>'ON', +8825=>'ON', +8826=>'ON', +8827=>'ON', +8828=>'ON', +8829=>'ON', +8830=>'ON', +8831=>'ON', +8832=>'ON', +8833=>'ON', +8834=>'ON', +8835=>'ON', +8836=>'ON', +8837=>'ON', +8838=>'ON', +8839=>'ON', +8840=>'ON', +8841=>'ON', +8842=>'ON', +8843=>'ON', +8844=>'ON', +8845=>'ON', +8846=>'ON', +8847=>'ON', +8848=>'ON', +8849=>'ON', +8850=>'ON', +8851=>'ON', +8852=>'ON', +8853=>'ON', +8854=>'ON', +8855=>'ON', +8856=>'ON', +8857=>'ON', +8858=>'ON', +8859=>'ON', +8860=>'ON', +8861=>'ON', +8862=>'ON', +8863=>'ON', +8864=>'ON', +8865=>'ON', +8866=>'ON', +8867=>'ON', +8868=>'ON', +8869=>'ON', +8870=>'ON', +8871=>'ON', +8872=>'ON', +8873=>'ON', +8874=>'ON', +8875=>'ON', +8876=>'ON', +8877=>'ON', +8878=>'ON', +8879=>'ON', +8880=>'ON', +8881=>'ON', +8882=>'ON', +8883=>'ON', +8884=>'ON', +8885=>'ON', +8886=>'ON', +8887=>'ON', +8888=>'ON', +8889=>'ON', +8890=>'ON', +8891=>'ON', +8892=>'ON', +8893=>'ON', +8894=>'ON', +8895=>'ON', +8896=>'ON', +8897=>'ON', +8898=>'ON', +8899=>'ON', +8900=>'ON', +8901=>'ON', +8902=>'ON', +8903=>'ON', +8904=>'ON', +8905=>'ON', +8906=>'ON', +8907=>'ON', +8908=>'ON', +8909=>'ON', +8910=>'ON', +8911=>'ON', +8912=>'ON', +8913=>'ON', +8914=>'ON', +8915=>'ON', +8916=>'ON', +8917=>'ON', +8918=>'ON', +8919=>'ON', +8920=>'ON', +8921=>'ON', +8922=>'ON', +8923=>'ON', +8924=>'ON', +8925=>'ON', +8926=>'ON', +8927=>'ON', +8928=>'ON', +8929=>'ON', +8930=>'ON', +8931=>'ON', +8932=>'ON', +8933=>'ON', +8934=>'ON', +8935=>'ON', +8936=>'ON', +8937=>'ON', +8938=>'ON', +8939=>'ON', +8940=>'ON', +8941=>'ON', +8942=>'ON', +8943=>'ON', +8944=>'ON', +8945=>'ON', +8946=>'ON', +8947=>'ON', +8948=>'ON', +8949=>'ON', +8950=>'ON', +8951=>'ON', +8952=>'ON', +8953=>'ON', +8954=>'ON', +8955=>'ON', +8956=>'ON', +8957=>'ON', +8958=>'ON', +8959=>'ON', +8960=>'ON', +8961=>'ON', +8962=>'ON', +8963=>'ON', +8964=>'ON', +8965=>'ON', +8966=>'ON', +8967=>'ON', +8968=>'ON', +8969=>'ON', +8970=>'ON', +8971=>'ON', +8972=>'ON', +8973=>'ON', +8974=>'ON', +8975=>'ON', +8976=>'ON', +8977=>'ON', +8978=>'ON', +8979=>'ON', +8980=>'ON', +8981=>'ON', +8982=>'ON', +8983=>'ON', +8984=>'ON', +8985=>'ON', +8986=>'ON', +8987=>'ON', +8988=>'ON', +8989=>'ON', +8990=>'ON', +8991=>'ON', +8992=>'ON', +8993=>'ON', +8994=>'ON', +8995=>'ON', +8996=>'ON', +8997=>'ON', +8998=>'ON', +8999=>'ON', +9000=>'ON', +9001=>'ON', +9002=>'ON', +9003=>'ON', +9004=>'ON', +9005=>'ON', +9006=>'ON', +9007=>'ON', +9008=>'ON', +9009=>'ON', +9010=>'ON', +9011=>'ON', +9012=>'ON', +9013=>'ON', +9014=>'L', +9015=>'L', +9016=>'L', +9017=>'L', +9018=>'L', +9019=>'L', +9020=>'L', +9021=>'L', +9022=>'L', +9023=>'L', +9024=>'L', +9025=>'L', +9026=>'L', +9027=>'L', +9028=>'L', +9029=>'L', +9030=>'L', +9031=>'L', +9032=>'L', +9033=>'L', +9034=>'L', +9035=>'L', +9036=>'L', +9037=>'L', +9038=>'L', +9039=>'L', +9040=>'L', +9041=>'L', +9042=>'L', +9043=>'L', +9044=>'L', +9045=>'L', +9046=>'L', +9047=>'L', +9048=>'L', +9049=>'L', +9050=>'L', +9051=>'L', +9052=>'L', +9053=>'L', +9054=>'L', +9055=>'L', +9056=>'L', +9057=>'L', +9058=>'L', +9059=>'L', +9060=>'L', +9061=>'L', +9062=>'L', +9063=>'L', +9064=>'L', +9065=>'L', +9066=>'L', +9067=>'L', +9068=>'L', +9069=>'L', +9070=>'L', +9071=>'L', +9072=>'L', +9073=>'L', +9074=>'L', +9075=>'L', +9076=>'L', +9077=>'L', +9078=>'L', +9079=>'L', +9080=>'L', +9081=>'L', +9082=>'L', +9083=>'ON', +9084=>'ON', +9085=>'ON', +9086=>'ON', +9087=>'ON', +9088=>'ON', +9089=>'ON', +9090=>'ON', +9091=>'ON', +9092=>'ON', +9093=>'ON', +9094=>'ON', +9095=>'ON', +9096=>'ON', +9097=>'ON', +9098=>'ON', +9099=>'ON', +9100=>'ON', +9101=>'ON', +9102=>'ON', +9103=>'ON', +9104=>'ON', +9105=>'ON', +9106=>'ON', +9107=>'ON', +9108=>'ON', +9109=>'L', +9110=>'ON', +9111=>'ON', +9112=>'ON', +9113=>'ON', +9114=>'ON', +9115=>'ON', +9116=>'ON', +9117=>'ON', +9118=>'ON', +9119=>'ON', +9120=>'ON', +9121=>'ON', +9122=>'ON', +9123=>'ON', +9124=>'ON', +9125=>'ON', +9126=>'ON', +9127=>'ON', +9128=>'ON', +9129=>'ON', +9130=>'ON', +9131=>'ON', +9132=>'ON', +9133=>'ON', +9134=>'ON', +9135=>'ON', +9136=>'ON', +9137=>'ON', +9138=>'ON', +9139=>'ON', +9140=>'ON', +9141=>'ON', +9142=>'ON', +9143=>'ON', +9144=>'ON', +9145=>'ON', +9146=>'ON', +9147=>'ON', +9148=>'ON', +9149=>'ON', +9150=>'ON', +9151=>'ON', +9152=>'ON', +9153=>'ON', +9154=>'ON', +9155=>'ON', +9156=>'ON', +9157=>'ON', +9158=>'ON', +9159=>'ON', +9160=>'ON', +9161=>'ON', +9162=>'ON', +9163=>'ON', +9164=>'ON', +9165=>'ON', +9166=>'ON', +9167=>'ON', +9168=>'ON', +9169=>'ON', +9170=>'ON', +9171=>'ON', +9172=>'ON', +9173=>'ON', +9174=>'ON', +9175=>'ON', +9176=>'ON', +9177=>'ON', +9178=>'ON', +9179=>'ON', +9180=>'ON', +9181=>'ON', +9182=>'ON', +9183=>'ON', +9184=>'ON', +9185=>'ON', +9186=>'ON', +9187=>'ON', +9188=>'ON', +9189=>'ON', +9190=>'ON', +9191=>'ON', +9216=>'ON', +9217=>'ON', +9218=>'ON', +9219=>'ON', +9220=>'ON', +9221=>'ON', +9222=>'ON', +9223=>'ON', +9224=>'ON', +9225=>'ON', +9226=>'ON', +9227=>'ON', +9228=>'ON', +9229=>'ON', +9230=>'ON', +9231=>'ON', +9232=>'ON', +9233=>'ON', +9234=>'ON', +9235=>'ON', +9236=>'ON', +9237=>'ON', +9238=>'ON', +9239=>'ON', +9240=>'ON', +9241=>'ON', +9242=>'ON', +9243=>'ON', +9244=>'ON', +9245=>'ON', +9246=>'ON', +9247=>'ON', +9248=>'ON', +9249=>'ON', +9250=>'ON', +9251=>'ON', +9252=>'ON', +9253=>'ON', +9254=>'ON', +9280=>'ON', +9281=>'ON', +9282=>'ON', +9283=>'ON', +9284=>'ON', +9285=>'ON', +9286=>'ON', +9287=>'ON', +9288=>'ON', +9289=>'ON', +9290=>'ON', +9312=>'ON', +9313=>'ON', +9314=>'ON', +9315=>'ON', +9316=>'ON', +9317=>'ON', +9318=>'ON', +9319=>'ON', +9320=>'ON', +9321=>'ON', +9322=>'ON', +9323=>'ON', +9324=>'ON', +9325=>'ON', +9326=>'ON', +9327=>'ON', +9328=>'ON', +9329=>'ON', +9330=>'ON', +9331=>'ON', +9332=>'ON', +9333=>'ON', +9334=>'ON', +9335=>'ON', +9336=>'ON', +9337=>'ON', +9338=>'ON', +9339=>'ON', +9340=>'ON', +9341=>'ON', +9342=>'ON', +9343=>'ON', +9344=>'ON', +9345=>'ON', +9346=>'ON', +9347=>'ON', +9348=>'ON', +9349=>'ON', +9350=>'ON', +9351=>'ON', +9352=>'EN', +9353=>'EN', +9354=>'EN', +9355=>'EN', +9356=>'EN', +9357=>'EN', +9358=>'EN', +9359=>'EN', +9360=>'EN', +9361=>'EN', +9362=>'EN', +9363=>'EN', +9364=>'EN', +9365=>'EN', +9366=>'EN', +9367=>'EN', +9368=>'EN', +9369=>'EN', +9370=>'EN', +9371=>'EN', +9372=>'L', +9373=>'L', +9374=>'L', +9375=>'L', +9376=>'L', +9377=>'L', +9378=>'L', +9379=>'L', +9380=>'L', +9381=>'L', +9382=>'L', +9383=>'L', +9384=>'L', +9385=>'L', +9386=>'L', +9387=>'L', +9388=>'L', +9389=>'L', +9390=>'L', +9391=>'L', +9392=>'L', +9393=>'L', +9394=>'L', +9395=>'L', +9396=>'L', +9397=>'L', +9398=>'L', +9399=>'L', +9400=>'L', +9401=>'L', +9402=>'L', +9403=>'L', +9404=>'L', +9405=>'L', +9406=>'L', +9407=>'L', +9408=>'L', +9409=>'L', +9410=>'L', +9411=>'L', +9412=>'L', +9413=>'L', +9414=>'L', +9415=>'L', +9416=>'L', +9417=>'L', +9418=>'L', +9419=>'L', +9420=>'L', +9421=>'L', +9422=>'L', +9423=>'L', +9424=>'L', +9425=>'L', +9426=>'L', +9427=>'L', +9428=>'L', +9429=>'L', +9430=>'L', +9431=>'L', +9432=>'L', +9433=>'L', +9434=>'L', +9435=>'L', +9436=>'L', +9437=>'L', +9438=>'L', +9439=>'L', +9440=>'L', +9441=>'L', +9442=>'L', +9443=>'L', +9444=>'L', +9445=>'L', +9446=>'L', +9447=>'L', +9448=>'L', +9449=>'L', +9450=>'ON', +9451=>'ON', +9452=>'ON', +9453=>'ON', +9454=>'ON', +9455=>'ON', +9456=>'ON', +9457=>'ON', +9458=>'ON', +9459=>'ON', +9460=>'ON', +9461=>'ON', +9462=>'ON', +9463=>'ON', +9464=>'ON', +9465=>'ON', +9466=>'ON', +9467=>'ON', +9468=>'ON', +9469=>'ON', +9470=>'ON', +9471=>'ON', +9472=>'ON', +9473=>'ON', +9474=>'ON', +9475=>'ON', +9476=>'ON', +9477=>'ON', +9478=>'ON', +9479=>'ON', +9480=>'ON', +9481=>'ON', +9482=>'ON', +9483=>'ON', +9484=>'ON', +9485=>'ON', +9486=>'ON', +9487=>'ON', +9488=>'ON', +9489=>'ON', +9490=>'ON', +9491=>'ON', +9492=>'ON', +9493=>'ON', +9494=>'ON', +9495=>'ON', +9496=>'ON', +9497=>'ON', +9498=>'ON', +9499=>'ON', +9500=>'ON', +9501=>'ON', +9502=>'ON', +9503=>'ON', +9504=>'ON', +9505=>'ON', +9506=>'ON', +9507=>'ON', +9508=>'ON', +9509=>'ON', +9510=>'ON', +9511=>'ON', +9512=>'ON', +9513=>'ON', +9514=>'ON', +9515=>'ON', +9516=>'ON', +9517=>'ON', +9518=>'ON', +9519=>'ON', +9520=>'ON', +9521=>'ON', +9522=>'ON', +9523=>'ON', +9524=>'ON', +9525=>'ON', +9526=>'ON', +9527=>'ON', +9528=>'ON', +9529=>'ON', +9530=>'ON', +9531=>'ON', +9532=>'ON', +9533=>'ON', +9534=>'ON', +9535=>'ON', +9536=>'ON', +9537=>'ON', +9538=>'ON', +9539=>'ON', +9540=>'ON', +9541=>'ON', +9542=>'ON', +9543=>'ON', +9544=>'ON', +9545=>'ON', +9546=>'ON', +9547=>'ON', +9548=>'ON', +9549=>'ON', +9550=>'ON', +9551=>'ON', +9552=>'ON', +9553=>'ON', +9554=>'ON', +9555=>'ON', +9556=>'ON', +9557=>'ON', +9558=>'ON', +9559=>'ON', +9560=>'ON', +9561=>'ON', +9562=>'ON', +9563=>'ON', +9564=>'ON', +9565=>'ON', +9566=>'ON', +9567=>'ON', +9568=>'ON', +9569=>'ON', +9570=>'ON', +9571=>'ON', +9572=>'ON', +9573=>'ON', +9574=>'ON', +9575=>'ON', +9576=>'ON', +9577=>'ON', +9578=>'ON', +9579=>'ON', +9580=>'ON', +9581=>'ON', +9582=>'ON', +9583=>'ON', +9584=>'ON', +9585=>'ON', +9586=>'ON', +9587=>'ON', +9588=>'ON', +9589=>'ON', +9590=>'ON', +9591=>'ON', +9592=>'ON', +9593=>'ON', +9594=>'ON', +9595=>'ON', +9596=>'ON', +9597=>'ON', +9598=>'ON', +9599=>'ON', +9600=>'ON', +9601=>'ON', +9602=>'ON', +9603=>'ON', +9604=>'ON', +9605=>'ON', +9606=>'ON', +9607=>'ON', +9608=>'ON', +9609=>'ON', +9610=>'ON', +9611=>'ON', +9612=>'ON', +9613=>'ON', +9614=>'ON', +9615=>'ON', +9616=>'ON', +9617=>'ON', +9618=>'ON', +9619=>'ON', +9620=>'ON', +9621=>'ON', +9622=>'ON', +9623=>'ON', +9624=>'ON', +9625=>'ON', +9626=>'ON', +9627=>'ON', +9628=>'ON', +9629=>'ON', +9630=>'ON', +9631=>'ON', +9632=>'ON', +9633=>'ON', +9634=>'ON', +9635=>'ON', +9636=>'ON', +9637=>'ON', +9638=>'ON', +9639=>'ON', +9640=>'ON', +9641=>'ON', +9642=>'ON', +9643=>'ON', +9644=>'ON', +9645=>'ON', +9646=>'ON', +9647=>'ON', +9648=>'ON', +9649=>'ON', +9650=>'ON', +9651=>'ON', +9652=>'ON', +9653=>'ON', +9654=>'ON', +9655=>'ON', +9656=>'ON', +9657=>'ON', +9658=>'ON', +9659=>'ON', +9660=>'ON', +9661=>'ON', +9662=>'ON', +9663=>'ON', +9664=>'ON', +9665=>'ON', +9666=>'ON', +9667=>'ON', +9668=>'ON', +9669=>'ON', +9670=>'ON', +9671=>'ON', +9672=>'ON', +9673=>'ON', +9674=>'ON', +9675=>'ON', +9676=>'ON', +9677=>'ON', +9678=>'ON', +9679=>'ON', +9680=>'ON', +9681=>'ON', +9682=>'ON', +9683=>'ON', +9684=>'ON', +9685=>'ON', +9686=>'ON', +9687=>'ON', +9688=>'ON', +9689=>'ON', +9690=>'ON', +9691=>'ON', +9692=>'ON', +9693=>'ON', +9694=>'ON', +9695=>'ON', +9696=>'ON', +9697=>'ON', +9698=>'ON', +9699=>'ON', +9700=>'ON', +9701=>'ON', +9702=>'ON', +9703=>'ON', +9704=>'ON', +9705=>'ON', +9706=>'ON', +9707=>'ON', +9708=>'ON', +9709=>'ON', +9710=>'ON', +9711=>'ON', +9712=>'ON', +9713=>'ON', +9714=>'ON', +9715=>'ON', +9716=>'ON', +9717=>'ON', +9718=>'ON', +9719=>'ON', +9720=>'ON', +9721=>'ON', +9722=>'ON', +9723=>'ON', +9724=>'ON', +9725=>'ON', +9726=>'ON', +9727=>'ON', +9728=>'ON', +9729=>'ON', +9730=>'ON', +9731=>'ON', +9732=>'ON', +9733=>'ON', +9734=>'ON', +9735=>'ON', +9736=>'ON', +9737=>'ON', +9738=>'ON', +9739=>'ON', +9740=>'ON', +9741=>'ON', +9742=>'ON', +9743=>'ON', +9744=>'ON', +9745=>'ON', +9746=>'ON', +9747=>'ON', +9748=>'ON', +9749=>'ON', +9750=>'ON', +9751=>'ON', +9752=>'ON', +9753=>'ON', +9754=>'ON', +9755=>'ON', +9756=>'ON', +9757=>'ON', +9758=>'ON', +9759=>'ON', +9760=>'ON', +9761=>'ON', +9762=>'ON', +9763=>'ON', +9764=>'ON', +9765=>'ON', +9766=>'ON', +9767=>'ON', +9768=>'ON', +9769=>'ON', +9770=>'ON', +9771=>'ON', +9772=>'ON', +9773=>'ON', +9774=>'ON', +9775=>'ON', +9776=>'ON', +9777=>'ON', +9778=>'ON', +9779=>'ON', +9780=>'ON', +9781=>'ON', +9782=>'ON', +9783=>'ON', +9784=>'ON', +9785=>'ON', +9786=>'ON', +9787=>'ON', +9788=>'ON', +9789=>'ON', +9790=>'ON', +9791=>'ON', +9792=>'ON', +9793=>'ON', +9794=>'ON', +9795=>'ON', +9796=>'ON', +9797=>'ON', +9798=>'ON', +9799=>'ON', +9800=>'ON', +9801=>'ON', +9802=>'ON', +9803=>'ON', +9804=>'ON', +9805=>'ON', +9806=>'ON', +9807=>'ON', +9808=>'ON', +9809=>'ON', +9810=>'ON', +9811=>'ON', +9812=>'ON', +9813=>'ON', +9814=>'ON', +9815=>'ON', +9816=>'ON', +9817=>'ON', +9818=>'ON', +9819=>'ON', +9820=>'ON', +9821=>'ON', +9822=>'ON', +9823=>'ON', +9824=>'ON', +9825=>'ON', +9826=>'ON', +9827=>'ON', +9828=>'ON', +9829=>'ON', +9830=>'ON', +9831=>'ON', +9832=>'ON', +9833=>'ON', +9834=>'ON', +9835=>'ON', +9836=>'ON', +9837=>'ON', +9838=>'ON', +9839=>'ON', +9840=>'ON', +9841=>'ON', +9842=>'ON', +9843=>'ON', +9844=>'ON', +9845=>'ON', +9846=>'ON', +9847=>'ON', +9848=>'ON', +9849=>'ON', +9850=>'ON', +9851=>'ON', +9852=>'ON', +9853=>'ON', +9854=>'ON', +9855=>'ON', +9856=>'ON', +9857=>'ON', +9858=>'ON', +9859=>'ON', +9860=>'ON', +9861=>'ON', +9862=>'ON', +9863=>'ON', +9864=>'ON', +9865=>'ON', +9866=>'ON', +9867=>'ON', +9868=>'ON', +9869=>'ON', +9870=>'ON', +9871=>'ON', +9872=>'ON', +9873=>'ON', +9874=>'ON', +9875=>'ON', +9876=>'ON', +9877=>'ON', +9878=>'ON', +9879=>'ON', +9880=>'ON', +9881=>'ON', +9882=>'ON', +9883=>'ON', +9884=>'ON', +9888=>'ON', +9889=>'ON', +9890=>'ON', +9891=>'ON', +9892=>'ON', +9893=>'ON', +9894=>'ON', +9895=>'ON', +9896=>'ON', +9897=>'ON', +9898=>'ON', +9899=>'ON', +9900=>'L', +9901=>'ON', +9902=>'ON', +9903=>'ON', +9904=>'ON', +9905=>'ON', +9906=>'ON', +9985=>'ON', +9986=>'ON', +9987=>'ON', +9988=>'ON', +9990=>'ON', +9991=>'ON', +9992=>'ON', +9993=>'ON', +9996=>'ON', +9997=>'ON', +9998=>'ON', +9999=>'ON', +10000=>'ON', +10001=>'ON', +10002=>'ON', +10003=>'ON', +10004=>'ON', +10005=>'ON', +10006=>'ON', +10007=>'ON', +10008=>'ON', +10009=>'ON', +10010=>'ON', +10011=>'ON', +10012=>'ON', +10013=>'ON', +10014=>'ON', +10015=>'ON', +10016=>'ON', +10017=>'ON', +10018=>'ON', +10019=>'ON', +10020=>'ON', +10021=>'ON', +10022=>'ON', +10023=>'ON', +10025=>'ON', +10026=>'ON', +10027=>'ON', +10028=>'ON', +10029=>'ON', +10030=>'ON', +10031=>'ON', +10032=>'ON', +10033=>'ON', +10034=>'ON', +10035=>'ON', +10036=>'ON', +10037=>'ON', +10038=>'ON', +10039=>'ON', +10040=>'ON', +10041=>'ON', +10042=>'ON', +10043=>'ON', +10044=>'ON', +10045=>'ON', +10046=>'ON', +10047=>'ON', +10048=>'ON', +10049=>'ON', +10050=>'ON', +10051=>'ON', +10052=>'ON', +10053=>'ON', +10054=>'ON', +10055=>'ON', +10056=>'ON', +10057=>'ON', +10058=>'ON', +10059=>'ON', +10061=>'ON', +10063=>'ON', +10064=>'ON', +10065=>'ON', +10066=>'ON', +10070=>'ON', +10072=>'ON', +10073=>'ON', +10074=>'ON', +10075=>'ON', +10076=>'ON', +10077=>'ON', +10078=>'ON', +10081=>'ON', +10082=>'ON', +10083=>'ON', +10084=>'ON', +10085=>'ON', +10086=>'ON', +10087=>'ON', +10088=>'ON', +10089=>'ON', +10090=>'ON', +10091=>'ON', +10092=>'ON', +10093=>'ON', +10094=>'ON', +10095=>'ON', +10096=>'ON', +10097=>'ON', +10098=>'ON', +10099=>'ON', +10100=>'ON', +10101=>'ON', +10102=>'ON', +10103=>'ON', +10104=>'ON', +10105=>'ON', +10106=>'ON', +10107=>'ON', +10108=>'ON', +10109=>'ON', +10110=>'ON', +10111=>'ON', +10112=>'ON', +10113=>'ON', +10114=>'ON', +10115=>'ON', +10116=>'ON', +10117=>'ON', +10118=>'ON', +10119=>'ON', +10120=>'ON', +10121=>'ON', +10122=>'ON', +10123=>'ON', +10124=>'ON', +10125=>'ON', +10126=>'ON', +10127=>'ON', +10128=>'ON', +10129=>'ON', +10130=>'ON', +10131=>'ON', +10132=>'ON', +10136=>'ON', +10137=>'ON', +10138=>'ON', +10139=>'ON', +10140=>'ON', +10141=>'ON', +10142=>'ON', +10143=>'ON', +10144=>'ON', +10145=>'ON', +10146=>'ON', +10147=>'ON', +10148=>'ON', +10149=>'ON', +10150=>'ON', +10151=>'ON', +10152=>'ON', +10153=>'ON', +10154=>'ON', +10155=>'ON', +10156=>'ON', +10157=>'ON', +10158=>'ON', +10159=>'ON', +10161=>'ON', +10162=>'ON', +10163=>'ON', +10164=>'ON', +10165=>'ON', +10166=>'ON', +10167=>'ON', +10168=>'ON', +10169=>'ON', +10170=>'ON', +10171=>'ON', +10172=>'ON', +10173=>'ON', +10174=>'ON', +10176=>'ON', +10177=>'ON', +10178=>'ON', +10179=>'ON', +10180=>'ON', +10181=>'ON', +10182=>'ON', +10183=>'ON', +10184=>'ON', +10185=>'ON', +10186=>'ON', +10192=>'ON', +10193=>'ON', +10194=>'ON', +10195=>'ON', +10196=>'ON', +10197=>'ON', +10198=>'ON', +10199=>'ON', +10200=>'ON', +10201=>'ON', +10202=>'ON', +10203=>'ON', +10204=>'ON', +10205=>'ON', +10206=>'ON', +10207=>'ON', +10208=>'ON', +10209=>'ON', +10210=>'ON', +10211=>'ON', +10212=>'ON', +10213=>'ON', +10214=>'ON', +10215=>'ON', +10216=>'ON', +10217=>'ON', +10218=>'ON', +10219=>'ON', +10224=>'ON', +10225=>'ON', +10226=>'ON', +10227=>'ON', +10228=>'ON', +10229=>'ON', +10230=>'ON', +10231=>'ON', +10232=>'ON', +10233=>'ON', +10234=>'ON', +10235=>'ON', +10236=>'ON', +10237=>'ON', +10238=>'ON', +10239=>'ON', +10240=>'L', +10241=>'L', +10242=>'L', +10243=>'L', +10244=>'L', +10245=>'L', +10246=>'L', +10247=>'L', +10248=>'L', +10249=>'L', +10250=>'L', +10251=>'L', +10252=>'L', +10253=>'L', +10254=>'L', +10255=>'L', +10256=>'L', +10257=>'L', +10258=>'L', +10259=>'L', +10260=>'L', +10261=>'L', +10262=>'L', +10263=>'L', +10264=>'L', +10265=>'L', +10266=>'L', +10267=>'L', +10268=>'L', +10269=>'L', +10270=>'L', +10271=>'L', +10272=>'L', +10273=>'L', +10274=>'L', +10275=>'L', +10276=>'L', +10277=>'L', +10278=>'L', +10279=>'L', +10280=>'L', +10281=>'L', +10282=>'L', +10283=>'L', +10284=>'L', +10285=>'L', +10286=>'L', +10287=>'L', +10288=>'L', +10289=>'L', +10290=>'L', +10291=>'L', +10292=>'L', +10293=>'L', +10294=>'L', +10295=>'L', +10296=>'L', +10297=>'L', +10298=>'L', +10299=>'L', +10300=>'L', +10301=>'L', +10302=>'L', +10303=>'L', +10304=>'L', +10305=>'L', +10306=>'L', +10307=>'L', +10308=>'L', +10309=>'L', +10310=>'L', +10311=>'L', +10312=>'L', +10313=>'L', +10314=>'L', +10315=>'L', +10316=>'L', +10317=>'L', +10318=>'L', +10319=>'L', +10320=>'L', +10321=>'L', +10322=>'L', +10323=>'L', +10324=>'L', +10325=>'L', +10326=>'L', +10327=>'L', +10328=>'L', +10329=>'L', +10330=>'L', +10331=>'L', +10332=>'L', +10333=>'L', +10334=>'L', +10335=>'L', +10336=>'L', +10337=>'L', +10338=>'L', +10339=>'L', +10340=>'L', +10341=>'L', +10342=>'L', +10343=>'L', +10344=>'L', +10345=>'L', +10346=>'L', +10347=>'L', +10348=>'L', +10349=>'L', +10350=>'L', +10351=>'L', +10352=>'L', +10353=>'L', +10354=>'L', +10355=>'L', +10356=>'L', +10357=>'L', +10358=>'L', +10359=>'L', +10360=>'L', +10361=>'L', +10362=>'L', +10363=>'L', +10364=>'L', +10365=>'L', +10366=>'L', +10367=>'L', +10368=>'L', +10369=>'L', +10370=>'L', +10371=>'L', +10372=>'L', +10373=>'L', +10374=>'L', +10375=>'L', +10376=>'L', +10377=>'L', +10378=>'L', +10379=>'L', +10380=>'L', +10381=>'L', +10382=>'L', +10383=>'L', +10384=>'L', +10385=>'L', +10386=>'L', +10387=>'L', +10388=>'L', +10389=>'L', +10390=>'L', +10391=>'L', +10392=>'L', +10393=>'L', +10394=>'L', +10395=>'L', +10396=>'L', +10397=>'L', +10398=>'L', +10399=>'L', +10400=>'L', +10401=>'L', +10402=>'L', +10403=>'L', +10404=>'L', +10405=>'L', +10406=>'L', +10407=>'L', +10408=>'L', +10409=>'L', +10410=>'L', +10411=>'L', +10412=>'L', +10413=>'L', +10414=>'L', +10415=>'L', +10416=>'L', +10417=>'L', +10418=>'L', +10419=>'L', +10420=>'L', +10421=>'L', +10422=>'L', +10423=>'L', +10424=>'L', +10425=>'L', +10426=>'L', +10427=>'L', +10428=>'L', +10429=>'L', +10430=>'L', +10431=>'L', +10432=>'L', +10433=>'L', +10434=>'L', +10435=>'L', +10436=>'L', +10437=>'L', +10438=>'L', +10439=>'L', +10440=>'L', +10441=>'L', +10442=>'L', +10443=>'L', +10444=>'L', +10445=>'L', +10446=>'L', +10447=>'L', +10448=>'L', +10449=>'L', +10450=>'L', +10451=>'L', +10452=>'L', +10453=>'L', +10454=>'L', +10455=>'L', +10456=>'L', +10457=>'L', +10458=>'L', +10459=>'L', +10460=>'L', +10461=>'L', +10462=>'L', +10463=>'L', +10464=>'L', +10465=>'L', +10466=>'L', +10467=>'L', +10468=>'L', +10469=>'L', +10470=>'L', +10471=>'L', +10472=>'L', +10473=>'L', +10474=>'L', +10475=>'L', +10476=>'L', +10477=>'L', +10478=>'L', +10479=>'L', +10480=>'L', +10481=>'L', +10482=>'L', +10483=>'L', +10484=>'L', +10485=>'L', +10486=>'L', +10487=>'L', +10488=>'L', +10489=>'L', +10490=>'L', +10491=>'L', +10492=>'L', +10493=>'L', +10494=>'L', +10495=>'L', +10496=>'ON', +10497=>'ON', +10498=>'ON', +10499=>'ON', +10500=>'ON', +10501=>'ON', +10502=>'ON', +10503=>'ON', +10504=>'ON', +10505=>'ON', +10506=>'ON', +10507=>'ON', +10508=>'ON', +10509=>'ON', +10510=>'ON', +10511=>'ON', +10512=>'ON', +10513=>'ON', +10514=>'ON', +10515=>'ON', +10516=>'ON', +10517=>'ON', +10518=>'ON', +10519=>'ON', +10520=>'ON', +10521=>'ON', +10522=>'ON', +10523=>'ON', +10524=>'ON', +10525=>'ON', +10526=>'ON', +10527=>'ON', +10528=>'ON', +10529=>'ON', +10530=>'ON', +10531=>'ON', +10532=>'ON', +10533=>'ON', +10534=>'ON', +10535=>'ON', +10536=>'ON', +10537=>'ON', +10538=>'ON', +10539=>'ON', +10540=>'ON', +10541=>'ON', +10542=>'ON', +10543=>'ON', +10544=>'ON', +10545=>'ON', +10546=>'ON', +10547=>'ON', +10548=>'ON', +10549=>'ON', +10550=>'ON', +10551=>'ON', +10552=>'ON', +10553=>'ON', +10554=>'ON', +10555=>'ON', +10556=>'ON', +10557=>'ON', +10558=>'ON', +10559=>'ON', +10560=>'ON', +10561=>'ON', +10562=>'ON', +10563=>'ON', +10564=>'ON', +10565=>'ON', +10566=>'ON', +10567=>'ON', +10568=>'ON', +10569=>'ON', +10570=>'ON', +10571=>'ON', +10572=>'ON', +10573=>'ON', +10574=>'ON', +10575=>'ON', +10576=>'ON', +10577=>'ON', +10578=>'ON', +10579=>'ON', +10580=>'ON', +10581=>'ON', +10582=>'ON', +10583=>'ON', +10584=>'ON', +10585=>'ON', +10586=>'ON', +10587=>'ON', +10588=>'ON', +10589=>'ON', +10590=>'ON', +10591=>'ON', +10592=>'ON', +10593=>'ON', +10594=>'ON', +10595=>'ON', +10596=>'ON', +10597=>'ON', +10598=>'ON', +10599=>'ON', +10600=>'ON', +10601=>'ON', +10602=>'ON', +10603=>'ON', +10604=>'ON', +10605=>'ON', +10606=>'ON', +10607=>'ON', +10608=>'ON', +10609=>'ON', +10610=>'ON', +10611=>'ON', +10612=>'ON', +10613=>'ON', +10614=>'ON', +10615=>'ON', +10616=>'ON', +10617=>'ON', +10618=>'ON', +10619=>'ON', +10620=>'ON', +10621=>'ON', +10622=>'ON', +10623=>'ON', +10624=>'ON', +10625=>'ON', +10626=>'ON', +10627=>'ON', +10628=>'ON', +10629=>'ON', +10630=>'ON', +10631=>'ON', +10632=>'ON', +10633=>'ON', +10634=>'ON', +10635=>'ON', +10636=>'ON', +10637=>'ON', +10638=>'ON', +10639=>'ON', +10640=>'ON', +10641=>'ON', +10642=>'ON', +10643=>'ON', +10644=>'ON', +10645=>'ON', +10646=>'ON', +10647=>'ON', +10648=>'ON', +10649=>'ON', +10650=>'ON', +10651=>'ON', +10652=>'ON', +10653=>'ON', +10654=>'ON', +10655=>'ON', +10656=>'ON', +10657=>'ON', +10658=>'ON', +10659=>'ON', +10660=>'ON', +10661=>'ON', +10662=>'ON', +10663=>'ON', +10664=>'ON', +10665=>'ON', +10666=>'ON', +10667=>'ON', +10668=>'ON', +10669=>'ON', +10670=>'ON', +10671=>'ON', +10672=>'ON', +10673=>'ON', +10674=>'ON', +10675=>'ON', +10676=>'ON', +10677=>'ON', +10678=>'ON', +10679=>'ON', +10680=>'ON', +10681=>'ON', +10682=>'ON', +10683=>'ON', +10684=>'ON', +10685=>'ON', +10686=>'ON', +10687=>'ON', +10688=>'ON', +10689=>'ON', +10690=>'ON', +10691=>'ON', +10692=>'ON', +10693=>'ON', +10694=>'ON', +10695=>'ON', +10696=>'ON', +10697=>'ON', +10698=>'ON', +10699=>'ON', +10700=>'ON', +10701=>'ON', +10702=>'ON', +10703=>'ON', +10704=>'ON', +10705=>'ON', +10706=>'ON', +10707=>'ON', +10708=>'ON', +10709=>'ON', +10710=>'ON', +10711=>'ON', +10712=>'ON', +10713=>'ON', +10714=>'ON', +10715=>'ON', +10716=>'ON', +10717=>'ON', +10718=>'ON', +10719=>'ON', +10720=>'ON', +10721=>'ON', +10722=>'ON', +10723=>'ON', +10724=>'ON', +10725=>'ON', +10726=>'ON', +10727=>'ON', +10728=>'ON', +10729=>'ON', +10730=>'ON', +10731=>'ON', +10732=>'ON', +10733=>'ON', +10734=>'ON', +10735=>'ON', +10736=>'ON', +10737=>'ON', +10738=>'ON', +10739=>'ON', +10740=>'ON', +10741=>'ON', +10742=>'ON', +10743=>'ON', +10744=>'ON', +10745=>'ON', +10746=>'ON', +10747=>'ON', +10748=>'ON', +10749=>'ON', +10750=>'ON', +10751=>'ON', +10752=>'ON', +10753=>'ON', +10754=>'ON', +10755=>'ON', +10756=>'ON', +10757=>'ON', +10758=>'ON', +10759=>'ON', +10760=>'ON', +10761=>'ON', +10762=>'ON', +10763=>'ON', +10764=>'ON', +10765=>'ON', +10766=>'ON', +10767=>'ON', +10768=>'ON', +10769=>'ON', +10770=>'ON', +10771=>'ON', +10772=>'ON', +10773=>'ON', +10774=>'ON', +10775=>'ON', +10776=>'ON', +10777=>'ON', +10778=>'ON', +10779=>'ON', +10780=>'ON', +10781=>'ON', +10782=>'ON', +10783=>'ON', +10784=>'ON', +10785=>'ON', +10786=>'ON', +10787=>'ON', +10788=>'ON', +10789=>'ON', +10790=>'ON', +10791=>'ON', +10792=>'ON', +10793=>'ON', +10794=>'ON', +10795=>'ON', +10796=>'ON', +10797=>'ON', +10798=>'ON', +10799=>'ON', +10800=>'ON', +10801=>'ON', +10802=>'ON', +10803=>'ON', +10804=>'ON', +10805=>'ON', +10806=>'ON', +10807=>'ON', +10808=>'ON', +10809=>'ON', +10810=>'ON', +10811=>'ON', +10812=>'ON', +10813=>'ON', +10814=>'ON', +10815=>'ON', +10816=>'ON', +10817=>'ON', +10818=>'ON', +10819=>'ON', +10820=>'ON', +10821=>'ON', +10822=>'ON', +10823=>'ON', +10824=>'ON', +10825=>'ON', +10826=>'ON', +10827=>'ON', +10828=>'ON', +10829=>'ON', +10830=>'ON', +10831=>'ON', +10832=>'ON', +10833=>'ON', +10834=>'ON', +10835=>'ON', +10836=>'ON', +10837=>'ON', +10838=>'ON', +10839=>'ON', +10840=>'ON', +10841=>'ON', +10842=>'ON', +10843=>'ON', +10844=>'ON', +10845=>'ON', +10846=>'ON', +10847=>'ON', +10848=>'ON', +10849=>'ON', +10850=>'ON', +10851=>'ON', +10852=>'ON', +10853=>'ON', +10854=>'ON', +10855=>'ON', +10856=>'ON', +10857=>'ON', +10858=>'ON', +10859=>'ON', +10860=>'ON', +10861=>'ON', +10862=>'ON', +10863=>'ON', +10864=>'ON', +10865=>'ON', +10866=>'ON', +10867=>'ON', +10868=>'ON', +10869=>'ON', +10870=>'ON', +10871=>'ON', +10872=>'ON', +10873=>'ON', +10874=>'ON', +10875=>'ON', +10876=>'ON', +10877=>'ON', +10878=>'ON', +10879=>'ON', +10880=>'ON', +10881=>'ON', +10882=>'ON', +10883=>'ON', +10884=>'ON', +10885=>'ON', +10886=>'ON', +10887=>'ON', +10888=>'ON', +10889=>'ON', +10890=>'ON', +10891=>'ON', +10892=>'ON', +10893=>'ON', +10894=>'ON', +10895=>'ON', +10896=>'ON', +10897=>'ON', +10898=>'ON', +10899=>'ON', +10900=>'ON', +10901=>'ON', +10902=>'ON', +10903=>'ON', +10904=>'ON', +10905=>'ON', +10906=>'ON', +10907=>'ON', +10908=>'ON', +10909=>'ON', +10910=>'ON', +10911=>'ON', +10912=>'ON', +10913=>'ON', +10914=>'ON', +10915=>'ON', +10916=>'ON', +10917=>'ON', +10918=>'ON', +10919=>'ON', +10920=>'ON', +10921=>'ON', +10922=>'ON', +10923=>'ON', +10924=>'ON', +10925=>'ON', +10926=>'ON', +10927=>'ON', +10928=>'ON', +10929=>'ON', +10930=>'ON', +10931=>'ON', +10932=>'ON', +10933=>'ON', +10934=>'ON', +10935=>'ON', +10936=>'ON', +10937=>'ON', +10938=>'ON', +10939=>'ON', +10940=>'ON', +10941=>'ON', +10942=>'ON', +10943=>'ON', +10944=>'ON', +10945=>'ON', +10946=>'ON', +10947=>'ON', +10948=>'ON', +10949=>'ON', +10950=>'ON', +10951=>'ON', +10952=>'ON', +10953=>'ON', +10954=>'ON', +10955=>'ON', +10956=>'ON', +10957=>'ON', +10958=>'ON', +10959=>'ON', +10960=>'ON', +10961=>'ON', +10962=>'ON', +10963=>'ON', +10964=>'ON', +10965=>'ON', +10966=>'ON', +10967=>'ON', +10968=>'ON', +10969=>'ON', +10970=>'ON', +10971=>'ON', +10972=>'ON', +10973=>'ON', +10974=>'ON', +10975=>'ON', +10976=>'ON', +10977=>'ON', +10978=>'ON', +10979=>'ON', +10980=>'ON', +10981=>'ON', +10982=>'ON', +10983=>'ON', +10984=>'ON', +10985=>'ON', +10986=>'ON', +10987=>'ON', +10988=>'ON', +10989=>'ON', +10990=>'ON', +10991=>'ON', +10992=>'ON', +10993=>'ON', +10994=>'ON', +10995=>'ON', +10996=>'ON', +10997=>'ON', +10998=>'ON', +10999=>'ON', +11000=>'ON', +11001=>'ON', +11002=>'ON', +11003=>'ON', +11004=>'ON', +11005=>'ON', +11006=>'ON', +11007=>'ON', +11008=>'ON', +11009=>'ON', +11010=>'ON', +11011=>'ON', +11012=>'ON', +11013=>'ON', +11014=>'ON', +11015=>'ON', +11016=>'ON', +11017=>'ON', +11018=>'ON', +11019=>'ON', +11020=>'ON', +11021=>'ON', +11022=>'ON', +11023=>'ON', +11024=>'ON', +11025=>'ON', +11026=>'ON', +11027=>'ON', +11028=>'ON', +11029=>'ON', +11030=>'ON', +11031=>'ON', +11032=>'ON', +11033=>'ON', +11034=>'ON', +11040=>'ON', +11041=>'ON', +11042=>'ON', +11043=>'ON', +11264=>'L', +11265=>'L', +11266=>'L', +11267=>'L', +11268=>'L', +11269=>'L', +11270=>'L', +11271=>'L', +11272=>'L', +11273=>'L', +11274=>'L', +11275=>'L', +11276=>'L', +11277=>'L', +11278=>'L', +11279=>'L', +11280=>'L', +11281=>'L', +11282=>'L', +11283=>'L', +11284=>'L', +11285=>'L', +11286=>'L', +11287=>'L', +11288=>'L', +11289=>'L', +11290=>'L', +11291=>'L', +11292=>'L', +11293=>'L', +11294=>'L', +11295=>'L', +11296=>'L', +11297=>'L', +11298=>'L', +11299=>'L', +11300=>'L', +11301=>'L', +11302=>'L', +11303=>'L', +11304=>'L', +11305=>'L', +11306=>'L', +11307=>'L', +11308=>'L', +11309=>'L', +11310=>'L', +11312=>'L', +11313=>'L', +11314=>'L', +11315=>'L', +11316=>'L', +11317=>'L', +11318=>'L', +11319=>'L', +11320=>'L', +11321=>'L', +11322=>'L', +11323=>'L', +11324=>'L', +11325=>'L', +11326=>'L', +11327=>'L', +11328=>'L', +11329=>'L', +11330=>'L', +11331=>'L', +11332=>'L', +11333=>'L', +11334=>'L', +11335=>'L', +11336=>'L', +11337=>'L', +11338=>'L', +11339=>'L', +11340=>'L', +11341=>'L', +11342=>'L', +11343=>'L', +11344=>'L', +11345=>'L', +11346=>'L', +11347=>'L', +11348=>'L', +11349=>'L', +11350=>'L', +11351=>'L', +11352=>'L', +11353=>'L', +11354=>'L', +11355=>'L', +11356=>'L', +11357=>'L', +11358=>'L', +11360=>'L', +11361=>'L', +11362=>'L', +11363=>'L', +11364=>'L', +11365=>'L', +11366=>'L', +11367=>'L', +11368=>'L', +11369=>'L', +11370=>'L', +11371=>'L', +11372=>'L', +11380=>'L', +11381=>'L', +11382=>'L', +11383=>'L', +11392=>'L', +11393=>'L', +11394=>'L', +11395=>'L', +11396=>'L', +11397=>'L', +11398=>'L', +11399=>'L', +11400=>'L', +11401=>'L', +11402=>'L', +11403=>'L', +11404=>'L', +11405=>'L', +11406=>'L', +11407=>'L', +11408=>'L', +11409=>'L', +11410=>'L', +11411=>'L', +11412=>'L', +11413=>'L', +11414=>'L', +11415=>'L', +11416=>'L', +11417=>'L', +11418=>'L', +11419=>'L', +11420=>'L', +11421=>'L', +11422=>'L', +11423=>'L', +11424=>'L', +11425=>'L', +11426=>'L', +11427=>'L', +11428=>'L', +11429=>'L', +11430=>'L', +11431=>'L', +11432=>'L', +11433=>'L', +11434=>'L', +11435=>'L', +11436=>'L', +11437=>'L', +11438=>'L', +11439=>'L', +11440=>'L', +11441=>'L', +11442=>'L', +11443=>'L', +11444=>'L', +11445=>'L', +11446=>'L', +11447=>'L', +11448=>'L', +11449=>'L', +11450=>'L', +11451=>'L', +11452=>'L', +11453=>'L', +11454=>'L', +11455=>'L', +11456=>'L', +11457=>'L', +11458=>'L', +11459=>'L', +11460=>'L', +11461=>'L', +11462=>'L', +11463=>'L', +11464=>'L', +11465=>'L', +11466=>'L', +11467=>'L', +11468=>'L', +11469=>'L', +11470=>'L', +11471=>'L', +11472=>'L', +11473=>'L', +11474=>'L', +11475=>'L', +11476=>'L', +11477=>'L', +11478=>'L', +11479=>'L', +11480=>'L', +11481=>'L', +11482=>'L', +11483=>'L', +11484=>'L', +11485=>'L', +11486=>'L', +11487=>'L', +11488=>'L', +11489=>'L', +11490=>'L', +11491=>'L', +11492=>'L', +11493=>'ON', +11494=>'ON', +11495=>'ON', +11496=>'ON', +11497=>'ON', +11498=>'ON', +11513=>'ON', +11514=>'ON', +11515=>'ON', +11516=>'ON', +11517=>'ON', +11518=>'ON', +11519=>'ON', +11520=>'L', +11521=>'L', +11522=>'L', +11523=>'L', +11524=>'L', +11525=>'L', +11526=>'L', +11527=>'L', +11528=>'L', +11529=>'L', +11530=>'L', +11531=>'L', +11532=>'L', +11533=>'L', +11534=>'L', +11535=>'L', +11536=>'L', +11537=>'L', +11538=>'L', +11539=>'L', +11540=>'L', +11541=>'L', +11542=>'L', +11543=>'L', +11544=>'L', +11545=>'L', +11546=>'L', +11547=>'L', +11548=>'L', +11549=>'L', +11550=>'L', +11551=>'L', +11552=>'L', +11553=>'L', +11554=>'L', +11555=>'L', +11556=>'L', +11557=>'L', +11568=>'L', +11569=>'L', +11570=>'L', +11571=>'L', +11572=>'L', +11573=>'L', +11574=>'L', +11575=>'L', +11576=>'L', +11577=>'L', +11578=>'L', +11579=>'L', +11580=>'L', +11581=>'L', +11582=>'L', +11583=>'L', +11584=>'L', +11585=>'L', +11586=>'L', +11587=>'L', +11588=>'L', +11589=>'L', +11590=>'L', +11591=>'L', +11592=>'L', +11593=>'L', +11594=>'L', +11595=>'L', +11596=>'L', +11597=>'L', +11598=>'L', +11599=>'L', +11600=>'L', +11601=>'L', +11602=>'L', +11603=>'L', +11604=>'L', +11605=>'L', +11606=>'L', +11607=>'L', +11608=>'L', +11609=>'L', +11610=>'L', +11611=>'L', +11612=>'L', +11613=>'L', +11614=>'L', +11615=>'L', +11616=>'L', +11617=>'L', +11618=>'L', +11619=>'L', +11620=>'L', +11621=>'L', +11631=>'L', +11648=>'L', +11649=>'L', +11650=>'L', +11651=>'L', +11652=>'L', +11653=>'L', +11654=>'L', +11655=>'L', +11656=>'L', +11657=>'L', +11658=>'L', +11659=>'L', +11660=>'L', +11661=>'L', +11662=>'L', +11663=>'L', +11664=>'L', +11665=>'L', +11666=>'L', +11667=>'L', +11668=>'L', +11669=>'L', +11670=>'L', +11680=>'L', +11681=>'L', +11682=>'L', +11683=>'L', +11684=>'L', +11685=>'L', +11686=>'L', +11688=>'L', +11689=>'L', +11690=>'L', +11691=>'L', +11692=>'L', +11693=>'L', +11694=>'L', +11696=>'L', +11697=>'L', +11698=>'L', +11699=>'L', +11700=>'L', +11701=>'L', +11702=>'L', +11704=>'L', +11705=>'L', +11706=>'L', +11707=>'L', +11708=>'L', +11709=>'L', +11710=>'L', +11712=>'L', +11713=>'L', +11714=>'L', +11715=>'L', +11716=>'L', +11717=>'L', +11718=>'L', +11720=>'L', +11721=>'L', +11722=>'L', +11723=>'L', +11724=>'L', +11725=>'L', +11726=>'L', +11728=>'L', +11729=>'L', +11730=>'L', +11731=>'L', +11732=>'L', +11733=>'L', +11734=>'L', +11736=>'L', +11737=>'L', +11738=>'L', +11739=>'L', +11740=>'L', +11741=>'L', +11742=>'L', +11776=>'ON', +11777=>'ON', +11778=>'ON', +11779=>'ON', +11780=>'ON', +11781=>'ON', +11782=>'ON', +11783=>'ON', +11784=>'ON', +11785=>'ON', +11786=>'ON', +11787=>'ON', +11788=>'ON', +11789=>'ON', +11790=>'ON', +11791=>'ON', +11792=>'ON', +11793=>'ON', +11794=>'ON', +11795=>'ON', +11796=>'ON', +11797=>'ON', +11798=>'ON', +11799=>'ON', +11804=>'ON', +11805=>'ON', +11904=>'ON', +11905=>'ON', +11906=>'ON', +11907=>'ON', +11908=>'ON', +11909=>'ON', +11910=>'ON', +11911=>'ON', +11912=>'ON', +11913=>'ON', +11914=>'ON', +11915=>'ON', +11916=>'ON', +11917=>'ON', +11918=>'ON', +11919=>'ON', +11920=>'ON', +11921=>'ON', +11922=>'ON', +11923=>'ON', +11924=>'ON', +11925=>'ON', +11926=>'ON', +11927=>'ON', +11928=>'ON', +11929=>'ON', +11931=>'ON', +11932=>'ON', +11933=>'ON', +11934=>'ON', +11935=>'ON', +11936=>'ON', +11937=>'ON', +11938=>'ON', +11939=>'ON', +11940=>'ON', +11941=>'ON', +11942=>'ON', +11943=>'ON', +11944=>'ON', +11945=>'ON', +11946=>'ON', +11947=>'ON', +11948=>'ON', +11949=>'ON', +11950=>'ON', +11951=>'ON', +11952=>'ON', +11953=>'ON', +11954=>'ON', +11955=>'ON', +11956=>'ON', +11957=>'ON', +11958=>'ON', +11959=>'ON', +11960=>'ON', +11961=>'ON', +11962=>'ON', +11963=>'ON', +11964=>'ON', +11965=>'ON', +11966=>'ON', +11967=>'ON', +11968=>'ON', +11969=>'ON', +11970=>'ON', +11971=>'ON', +11972=>'ON', +11973=>'ON', +11974=>'ON', +11975=>'ON', +11976=>'ON', +11977=>'ON', +11978=>'ON', +11979=>'ON', +11980=>'ON', +11981=>'ON', +11982=>'ON', +11983=>'ON', +11984=>'ON', +11985=>'ON', +11986=>'ON', +11987=>'ON', +11988=>'ON', +11989=>'ON', +11990=>'ON', +11991=>'ON', +11992=>'ON', +11993=>'ON', +11994=>'ON', +11995=>'ON', +11996=>'ON', +11997=>'ON', +11998=>'ON', +11999=>'ON', +12000=>'ON', +12001=>'ON', +12002=>'ON', +12003=>'ON', +12004=>'ON', +12005=>'ON', +12006=>'ON', +12007=>'ON', +12008=>'ON', +12009=>'ON', +12010=>'ON', +12011=>'ON', +12012=>'ON', +12013=>'ON', +12014=>'ON', +12015=>'ON', +12016=>'ON', +12017=>'ON', +12018=>'ON', +12019=>'ON', +12032=>'ON', +12033=>'ON', +12034=>'ON', +12035=>'ON', +12036=>'ON', +12037=>'ON', +12038=>'ON', +12039=>'ON', +12040=>'ON', +12041=>'ON', +12042=>'ON', +12043=>'ON', +12044=>'ON', +12045=>'ON', +12046=>'ON', +12047=>'ON', +12048=>'ON', +12049=>'ON', +12050=>'ON', +12051=>'ON', +12052=>'ON', +12053=>'ON', +12054=>'ON', +12055=>'ON', +12056=>'ON', +12057=>'ON', +12058=>'ON', +12059=>'ON', +12060=>'ON', +12061=>'ON', +12062=>'ON', +12063=>'ON', +12064=>'ON', +12065=>'ON', +12066=>'ON', +12067=>'ON', +12068=>'ON', +12069=>'ON', +12070=>'ON', +12071=>'ON', +12072=>'ON', +12073=>'ON', +12074=>'ON', +12075=>'ON', +12076=>'ON', +12077=>'ON', +12078=>'ON', +12079=>'ON', +12080=>'ON', +12081=>'ON', +12082=>'ON', +12083=>'ON', +12084=>'ON', +12085=>'ON', +12086=>'ON', +12087=>'ON', +12088=>'ON', +12089=>'ON', +12090=>'ON', +12091=>'ON', +12092=>'ON', +12093=>'ON', +12094=>'ON', +12095=>'ON', +12096=>'ON', +12097=>'ON', +12098=>'ON', +12099=>'ON', +12100=>'ON', +12101=>'ON', +12102=>'ON', +12103=>'ON', +12104=>'ON', +12105=>'ON', +12106=>'ON', +12107=>'ON', +12108=>'ON', +12109=>'ON', +12110=>'ON', +12111=>'ON', +12112=>'ON', +12113=>'ON', +12114=>'ON', +12115=>'ON', +12116=>'ON', +12117=>'ON', +12118=>'ON', +12119=>'ON', +12120=>'ON', +12121=>'ON', +12122=>'ON', +12123=>'ON', +12124=>'ON', +12125=>'ON', +12126=>'ON', +12127=>'ON', +12128=>'ON', +12129=>'ON', +12130=>'ON', +12131=>'ON', +12132=>'ON', +12133=>'ON', +12134=>'ON', +12135=>'ON', +12136=>'ON', +12137=>'ON', +12138=>'ON', +12139=>'ON', +12140=>'ON', +12141=>'ON', +12142=>'ON', +12143=>'ON', +12144=>'ON', +12145=>'ON', +12146=>'ON', +12147=>'ON', +12148=>'ON', +12149=>'ON', +12150=>'ON', +12151=>'ON', +12152=>'ON', +12153=>'ON', +12154=>'ON', +12155=>'ON', +12156=>'ON', +12157=>'ON', +12158=>'ON', +12159=>'ON', +12160=>'ON', +12161=>'ON', +12162=>'ON', +12163=>'ON', +12164=>'ON', +12165=>'ON', +12166=>'ON', +12167=>'ON', +12168=>'ON', +12169=>'ON', +12170=>'ON', +12171=>'ON', +12172=>'ON', +12173=>'ON', +12174=>'ON', +12175=>'ON', +12176=>'ON', +12177=>'ON', +12178=>'ON', +12179=>'ON', +12180=>'ON', +12181=>'ON', +12182=>'ON', +12183=>'ON', +12184=>'ON', +12185=>'ON', +12186=>'ON', +12187=>'ON', +12188=>'ON', +12189=>'ON', +12190=>'ON', +12191=>'ON', +12192=>'ON', +12193=>'ON', +12194=>'ON', +12195=>'ON', +12196=>'ON', +12197=>'ON', +12198=>'ON', +12199=>'ON', +12200=>'ON', +12201=>'ON', +12202=>'ON', +12203=>'ON', +12204=>'ON', +12205=>'ON', +12206=>'ON', +12207=>'ON', +12208=>'ON', +12209=>'ON', +12210=>'ON', +12211=>'ON', +12212=>'ON', +12213=>'ON', +12214=>'ON', +12215=>'ON', +12216=>'ON', +12217=>'ON', +12218=>'ON', +12219=>'ON', +12220=>'ON', +12221=>'ON', +12222=>'ON', +12223=>'ON', +12224=>'ON', +12225=>'ON', +12226=>'ON', +12227=>'ON', +12228=>'ON', +12229=>'ON', +12230=>'ON', +12231=>'ON', +12232=>'ON', +12233=>'ON', +12234=>'ON', +12235=>'ON', +12236=>'ON', +12237=>'ON', +12238=>'ON', +12239=>'ON', +12240=>'ON', +12241=>'ON', +12242=>'ON', +12243=>'ON', +12244=>'ON', +12245=>'ON', +12272=>'ON', +12273=>'ON', +12274=>'ON', +12275=>'ON', +12276=>'ON', +12277=>'ON', +12278=>'ON', +12279=>'ON', +12280=>'ON', +12281=>'ON', +12282=>'ON', +12283=>'ON', +12288=>'WS', +12289=>'ON', +12290=>'ON', +12291=>'ON', +12292=>'ON', +12293=>'L', +12294=>'L', +12295=>'L', +12296=>'ON', +12297=>'ON', +12298=>'ON', +12299=>'ON', +12300=>'ON', +12301=>'ON', +12302=>'ON', +12303=>'ON', +12304=>'ON', +12305=>'ON', +12306=>'ON', +12307=>'ON', +12308=>'ON', +12309=>'ON', +12310=>'ON', +12311=>'ON', +12312=>'ON', +12313=>'ON', +12314=>'ON', +12315=>'ON', +12316=>'ON', +12317=>'ON', +12318=>'ON', +12319=>'ON', +12320=>'ON', +12321=>'L', +12322=>'L', +12323=>'L', +12324=>'L', +12325=>'L', +12326=>'L', +12327=>'L', +12328=>'L', +12329=>'L', +12330=>'NSM', +12331=>'NSM', +12332=>'NSM', +12333=>'NSM', +12334=>'NSM', +12335=>'NSM', +12336=>'ON', +12337=>'L', +12338=>'L', +12339=>'L', +12340=>'L', +12341=>'L', +12342=>'ON', +12343=>'ON', +12344=>'L', +12345=>'L', +12346=>'L', +12347=>'L', +12348=>'L', +12349=>'ON', +12350=>'ON', +12351=>'ON', +12353=>'L', +12354=>'L', +12355=>'L', +12356=>'L', +12357=>'L', +12358=>'L', +12359=>'L', +12360=>'L', +12361=>'L', +12362=>'L', +12363=>'L', +12364=>'L', +12365=>'L', +12366=>'L', +12367=>'L', +12368=>'L', +12369=>'L', +12370=>'L', +12371=>'L', +12372=>'L', +12373=>'L', +12374=>'L', +12375=>'L', +12376=>'L', +12377=>'L', +12378=>'L', +12379=>'L', +12380=>'L', +12381=>'L', +12382=>'L', +12383=>'L', +12384=>'L', +12385=>'L', +12386=>'L', +12387=>'L', +12388=>'L', +12389=>'L', +12390=>'L', +12391=>'L', +12392=>'L', +12393=>'L', +12394=>'L', +12395=>'L', +12396=>'L', +12397=>'L', +12398=>'L', +12399=>'L', +12400=>'L', +12401=>'L', +12402=>'L', +12403=>'L', +12404=>'L', +12405=>'L', +12406=>'L', +12407=>'L', +12408=>'L', +12409=>'L', +12410=>'L', +12411=>'L', +12412=>'L', +12413=>'L', +12414=>'L', +12415=>'L', +12416=>'L', +12417=>'L', +12418=>'L', +12419=>'L', +12420=>'L', +12421=>'L', +12422=>'L', +12423=>'L', +12424=>'L', +12425=>'L', +12426=>'L', +12427=>'L', +12428=>'L', +12429=>'L', +12430=>'L', +12431=>'L', +12432=>'L', +12433=>'L', +12434=>'L', +12435=>'L', +12436=>'L', +12437=>'L', +12438=>'L', +12441=>'NSM', +12442=>'NSM', +12443=>'ON', +12444=>'ON', +12445=>'L', +12446=>'L', +12447=>'L', +12448=>'ON', +12449=>'L', +12450=>'L', +12451=>'L', +12452=>'L', +12453=>'L', +12454=>'L', +12455=>'L', +12456=>'L', +12457=>'L', +12458=>'L', +12459=>'L', +12460=>'L', +12461=>'L', +12462=>'L', +12463=>'L', +12464=>'L', +12465=>'L', +12466=>'L', +12467=>'L', +12468=>'L', +12469=>'L', +12470=>'L', +12471=>'L', +12472=>'L', +12473=>'L', +12474=>'L', +12475=>'L', +12476=>'L', +12477=>'L', +12478=>'L', +12479=>'L', +12480=>'L', +12481=>'L', +12482=>'L', +12483=>'L', +12484=>'L', +12485=>'L', +12486=>'L', +12487=>'L', +12488=>'L', +12489=>'L', +12490=>'L', +12491=>'L', +12492=>'L', +12493=>'L', +12494=>'L', +12495=>'L', +12496=>'L', +12497=>'L', +12498=>'L', +12499=>'L', +12500=>'L', +12501=>'L', +12502=>'L', +12503=>'L', +12504=>'L', +12505=>'L', +12506=>'L', +12507=>'L', +12508=>'L', +12509=>'L', +12510=>'L', +12511=>'L', +12512=>'L', +12513=>'L', +12514=>'L', +12515=>'L', +12516=>'L', +12517=>'L', +12518=>'L', +12519=>'L', +12520=>'L', +12521=>'L', +12522=>'L', +12523=>'L', +12524=>'L', +12525=>'L', +12526=>'L', +12527=>'L', +12528=>'L', +12529=>'L', +12530=>'L', +12531=>'L', +12532=>'L', +12533=>'L', +12534=>'L', +12535=>'L', +12536=>'L', +12537=>'L', +12538=>'L', +12539=>'ON', +12540=>'L', +12541=>'L', +12542=>'L', +12543=>'L', +12549=>'L', +12550=>'L', +12551=>'L', +12552=>'L', +12553=>'L', +12554=>'L', +12555=>'L', +12556=>'L', +12557=>'L', +12558=>'L', +12559=>'L', +12560=>'L', +12561=>'L', +12562=>'L', +12563=>'L', +12564=>'L', +12565=>'L', +12566=>'L', +12567=>'L', +12568=>'L', +12569=>'L', +12570=>'L', +12571=>'L', +12572=>'L', +12573=>'L', +12574=>'L', +12575=>'L', +12576=>'L', +12577=>'L', +12578=>'L', +12579=>'L', +12580=>'L', +12581=>'L', +12582=>'L', +12583=>'L', +12584=>'L', +12585=>'L', +12586=>'L', +12587=>'L', +12588=>'L', +12593=>'L', +12594=>'L', +12595=>'L', +12596=>'L', +12597=>'L', +12598=>'L', +12599=>'L', +12600=>'L', +12601=>'L', +12602=>'L', +12603=>'L', +12604=>'L', +12605=>'L', +12606=>'L', +12607=>'L', +12608=>'L', +12609=>'L', +12610=>'L', +12611=>'L', +12612=>'L', +12613=>'L', +12614=>'L', +12615=>'L', +12616=>'L', +12617=>'L', +12618=>'L', +12619=>'L', +12620=>'L', +12621=>'L', +12622=>'L', +12623=>'L', +12624=>'L', +12625=>'L', +12626=>'L', +12627=>'L', +12628=>'L', +12629=>'L', +12630=>'L', +12631=>'L', +12632=>'L', +12633=>'L', +12634=>'L', +12635=>'L', +12636=>'L', +12637=>'L', +12638=>'L', +12639=>'L', +12640=>'L', +12641=>'L', +12642=>'L', +12643=>'L', +12644=>'L', +12645=>'L', +12646=>'L', +12647=>'L', +12648=>'L', +12649=>'L', +12650=>'L', +12651=>'L', +12652=>'L', +12653=>'L', +12654=>'L', +12655=>'L', +12656=>'L', +12657=>'L', +12658=>'L', +12659=>'L', +12660=>'L', +12661=>'L', +12662=>'L', +12663=>'L', +12664=>'L', +12665=>'L', +12666=>'L', +12667=>'L', +12668=>'L', +12669=>'L', +12670=>'L', +12671=>'L', +12672=>'L', +12673=>'L', +12674=>'L', +12675=>'L', +12676=>'L', +12677=>'L', +12678=>'L', +12679=>'L', +12680=>'L', +12681=>'L', +12682=>'L', +12683=>'L', +12684=>'L', +12685=>'L', +12686=>'L', +12688=>'L', +12689=>'L', +12690=>'L', +12691=>'L', +12692=>'L', +12693=>'L', +12694=>'L', +12695=>'L', +12696=>'L', +12697=>'L', +12698=>'L', +12699=>'L', +12700=>'L', +12701=>'L', +12702=>'L', +12703=>'L', +12704=>'L', +12705=>'L', +12706=>'L', +12707=>'L', +12708=>'L', +12709=>'L', +12710=>'L', +12711=>'L', +12712=>'L', +12713=>'L', +12714=>'L', +12715=>'L', +12716=>'L', +12717=>'L', +12718=>'L', +12719=>'L', +12720=>'L', +12721=>'L', +12722=>'L', +12723=>'L', +12724=>'L', +12725=>'L', +12726=>'L', +12727=>'L', +12736=>'ON', +12737=>'ON', +12738=>'ON', +12739=>'ON', +12740=>'ON', +12741=>'ON', +12742=>'ON', +12743=>'ON', +12744=>'ON', +12745=>'ON', +12746=>'ON', +12747=>'ON', +12748=>'ON', +12749=>'ON', +12750=>'ON', +12751=>'ON', +12784=>'L', +12785=>'L', +12786=>'L', +12787=>'L', +12788=>'L', +12789=>'L', +12790=>'L', +12791=>'L', +12792=>'L', +12793=>'L', +12794=>'L', +12795=>'L', +12796=>'L', +12797=>'L', +12798=>'L', +12799=>'L', +12800=>'L', +12801=>'L', +12802=>'L', +12803=>'L', +12804=>'L', +12805=>'L', +12806=>'L', +12807=>'L', +12808=>'L', +12809=>'L', +12810=>'L', +12811=>'L', +12812=>'L', +12813=>'L', +12814=>'L', +12815=>'L', +12816=>'L', +12817=>'L', +12818=>'L', +12819=>'L', +12820=>'L', +12821=>'L', +12822=>'L', +12823=>'L', +12824=>'L', +12825=>'L', +12826=>'L', +12827=>'L', +12828=>'L', +12829=>'ON', +12830=>'ON', +12832=>'L', +12833=>'L', +12834=>'L', +12835=>'L', +12836=>'L', +12837=>'L', +12838=>'L', +12839=>'L', +12840=>'L', +12841=>'L', +12842=>'L', +12843=>'L', +12844=>'L', +12845=>'L', +12846=>'L', +12847=>'L', +12848=>'L', +12849=>'L', +12850=>'L', +12851=>'L', +12852=>'L', +12853=>'L', +12854=>'L', +12855=>'L', +12856=>'L', +12857=>'L', +12858=>'L', +12859=>'L', +12860=>'L', +12861=>'L', +12862=>'L', +12863=>'L', +12864=>'L', +12865=>'L', +12866=>'L', +12867=>'L', +12880=>'ON', +12881=>'ON', +12882=>'ON', +12883=>'ON', +12884=>'ON', +12885=>'ON', +12886=>'ON', +12887=>'ON', +12888=>'ON', +12889=>'ON', +12890=>'ON', +12891=>'ON', +12892=>'ON', +12893=>'ON', +12894=>'ON', +12895=>'ON', +12896=>'L', +12897=>'L', +12898=>'L', +12899=>'L', +12900=>'L', +12901=>'L', +12902=>'L', +12903=>'L', +12904=>'L', +12905=>'L', +12906=>'L', +12907=>'L', +12908=>'L', +12909=>'L', +12910=>'L', +12911=>'L', +12912=>'L', +12913=>'L', +12914=>'L', +12915=>'L', +12916=>'L', +12917=>'L', +12918=>'L', +12919=>'L', +12920=>'L', +12921=>'L', +12922=>'L', +12923=>'L', +12924=>'ON', +12925=>'ON', +12926=>'ON', +12927=>'L', +12928=>'L', +12929=>'L', +12930=>'L', +12931=>'L', +12932=>'L', +12933=>'L', +12934=>'L', +12935=>'L', +12936=>'L', +12937=>'L', +12938=>'L', +12939=>'L', +12940=>'L', +12941=>'L', +12942=>'L', +12943=>'L', +12944=>'L', +12945=>'L', +12946=>'L', +12947=>'L', +12948=>'L', +12949=>'L', +12950=>'L', +12951=>'L', +12952=>'L', +12953=>'L', +12954=>'L', +12955=>'L', +12956=>'L', +12957=>'L', +12958=>'L', +12959=>'L', +12960=>'L', +12961=>'L', +12962=>'L', +12963=>'L', +12964=>'L', +12965=>'L', +12966=>'L', +12967=>'L', +12968=>'L', +12969=>'L', +12970=>'L', +12971=>'L', +12972=>'L', +12973=>'L', +12974=>'L', +12975=>'L', +12976=>'L', +12977=>'ON', +12978=>'ON', +12979=>'ON', +12980=>'ON', +12981=>'ON', +12982=>'ON', +12983=>'ON', +12984=>'ON', +12985=>'ON', +12986=>'ON', +12987=>'ON', +12988=>'ON', +12989=>'ON', +12990=>'ON', +12991=>'ON', +12992=>'L', +12993=>'L', +12994=>'L', +12995=>'L', +12996=>'L', +12997=>'L', +12998=>'L', +12999=>'L', +13000=>'L', +13001=>'L', +13002=>'L', +13003=>'L', +13004=>'ON', +13005=>'ON', +13006=>'ON', +13007=>'ON', +13008=>'L', +13009=>'L', +13010=>'L', +13011=>'L', +13012=>'L', +13013=>'L', +13014=>'L', +13015=>'L', +13016=>'L', +13017=>'L', +13018=>'L', +13019=>'L', +13020=>'L', +13021=>'L', +13022=>'L', +13023=>'L', +13024=>'L', +13025=>'L', +13026=>'L', +13027=>'L', +13028=>'L', +13029=>'L', +13030=>'L', +13031=>'L', +13032=>'L', +13033=>'L', +13034=>'L', +13035=>'L', +13036=>'L', +13037=>'L', +13038=>'L', +13039=>'L', +13040=>'L', +13041=>'L', +13042=>'L', +13043=>'L', +13044=>'L', +13045=>'L', +13046=>'L', +13047=>'L', +13048=>'L', +13049=>'L', +13050=>'L', +13051=>'L', +13052=>'L', +13053=>'L', +13054=>'L', +13056=>'L', +13057=>'L', +13058=>'L', +13059=>'L', +13060=>'L', +13061=>'L', +13062=>'L', +13063=>'L', +13064=>'L', +13065=>'L', +13066=>'L', +13067=>'L', +13068=>'L', +13069=>'L', +13070=>'L', +13071=>'L', +13072=>'L', +13073=>'L', +13074=>'L', +13075=>'L', +13076=>'L', +13077=>'L', +13078=>'L', +13079=>'L', +13080=>'L', +13081=>'L', +13082=>'L', +13083=>'L', +13084=>'L', +13085=>'L', +13086=>'L', +13087=>'L', +13088=>'L', +13089=>'L', +13090=>'L', +13091=>'L', +13092=>'L', +13093=>'L', +13094=>'L', +13095=>'L', +13096=>'L', +13097=>'L', +13098=>'L', +13099=>'L', +13100=>'L', +13101=>'L', +13102=>'L', +13103=>'L', +13104=>'L', +13105=>'L', +13106=>'L', +13107=>'L', +13108=>'L', +13109=>'L', +13110=>'L', +13111=>'L', +13112=>'L', +13113=>'L', +13114=>'L', +13115=>'L', +13116=>'L', +13117=>'L', +13118=>'L', +13119=>'L', +13120=>'L', +13121=>'L', +13122=>'L', +13123=>'L', +13124=>'L', +13125=>'L', +13126=>'L', +13127=>'L', +13128=>'L', +13129=>'L', +13130=>'L', +13131=>'L', +13132=>'L', +13133=>'L', +13134=>'L', +13135=>'L', +13136=>'L', +13137=>'L', +13138=>'L', +13139=>'L', +13140=>'L', +13141=>'L', +13142=>'L', +13143=>'L', +13144=>'L', +13145=>'L', +13146=>'L', +13147=>'L', +13148=>'L', +13149=>'L', +13150=>'L', +13151=>'L', +13152=>'L', +13153=>'L', +13154=>'L', +13155=>'L', +13156=>'L', +13157=>'L', +13158=>'L', +13159=>'L', +13160=>'L', +13161=>'L', +13162=>'L', +13163=>'L', +13164=>'L', +13165=>'L', +13166=>'L', +13167=>'L', +13168=>'L', +13169=>'L', +13170=>'L', +13171=>'L', +13172=>'L', +13173=>'L', +13174=>'L', +13175=>'ON', +13176=>'ON', +13177=>'ON', +13178=>'ON', +13179=>'L', +13180=>'L', +13181=>'L', +13182=>'L', +13183=>'L', +13184=>'L', +13185=>'L', +13186=>'L', +13187=>'L', +13188=>'L', +13189=>'L', +13190=>'L', +13191=>'L', +13192=>'L', +13193=>'L', +13194=>'L', +13195=>'L', +13196=>'L', +13197=>'L', +13198=>'L', +13199=>'L', +13200=>'L', +13201=>'L', +13202=>'L', +13203=>'L', +13204=>'L', +13205=>'L', +13206=>'L', +13207=>'L', +13208=>'L', +13209=>'L', +13210=>'L', +13211=>'L', +13212=>'L', +13213=>'L', +13214=>'L', +13215=>'L', +13216=>'L', +13217=>'L', +13218=>'L', +13219=>'L', +13220=>'L', +13221=>'L', +13222=>'L', +13223=>'L', +13224=>'L', +13225=>'L', +13226=>'L', +13227=>'L', +13228=>'L', +13229=>'L', +13230=>'L', +13231=>'L', +13232=>'L', +13233=>'L', +13234=>'L', +13235=>'L', +13236=>'L', +13237=>'L', +13238=>'L', +13239=>'L', +13240=>'L', +13241=>'L', +13242=>'L', +13243=>'L', +13244=>'L', +13245=>'L', +13246=>'L', +13247=>'L', +13248=>'L', +13249=>'L', +13250=>'L', +13251=>'L', +13252=>'L', +13253=>'L', +13254=>'L', +13255=>'L', +13256=>'L', +13257=>'L', +13258=>'L', +13259=>'L', +13260=>'L', +13261=>'L', +13262=>'L', +13263=>'L', +13264=>'L', +13265=>'L', +13266=>'L', +13267=>'L', +13268=>'L', +13269=>'L', +13270=>'L', +13271=>'L', +13272=>'L', +13273=>'L', +13274=>'L', +13275=>'L', +13276=>'L', +13277=>'L', +13278=>'ON', +13279=>'ON', +13280=>'L', +13281=>'L', +13282=>'L', +13283=>'L', +13284=>'L', +13285=>'L', +13286=>'L', +13287=>'L', +13288=>'L', +13289=>'L', +13290=>'L', +13291=>'L', +13292=>'L', +13293=>'L', +13294=>'L', +13295=>'L', +13296=>'L', +13297=>'L', +13298=>'L', +13299=>'L', +13300=>'L', +13301=>'L', +13302=>'L', +13303=>'L', +13304=>'L', +13305=>'L', +13306=>'L', +13307=>'L', +13308=>'L', +13309=>'L', +13310=>'L', +13311=>'ON', +13312=>'L', +19893=>'L', +19904=>'ON', +19905=>'ON', +19906=>'ON', +19907=>'ON', +19908=>'ON', +19909=>'ON', +19910=>'ON', +19911=>'ON', +19912=>'ON', +19913=>'ON', +19914=>'ON', +19915=>'ON', +19916=>'ON', +19917=>'ON', +19918=>'ON', +19919=>'ON', +19920=>'ON', +19921=>'ON', +19922=>'ON', +19923=>'ON', +19924=>'ON', +19925=>'ON', +19926=>'ON', +19927=>'ON', +19928=>'ON', +19929=>'ON', +19930=>'ON', +19931=>'ON', +19932=>'ON', +19933=>'ON', +19934=>'ON', +19935=>'ON', +19936=>'ON', +19937=>'ON', +19938=>'ON', +19939=>'ON', +19940=>'ON', +19941=>'ON', +19942=>'ON', +19943=>'ON', +19944=>'ON', +19945=>'ON', +19946=>'ON', +19947=>'ON', +19948=>'ON', +19949=>'ON', +19950=>'ON', +19951=>'ON', +19952=>'ON', +19953=>'ON', +19954=>'ON', +19955=>'ON', +19956=>'ON', +19957=>'ON', +19958=>'ON', +19959=>'ON', +19960=>'ON', +19961=>'ON', +19962=>'ON', +19963=>'ON', +19964=>'ON', +19965=>'ON', +19966=>'ON', +19967=>'ON', +19968=>'L', +40891=>'L', +40960=>'L', +40961=>'L', +40962=>'L', +40963=>'L', +40964=>'L', +40965=>'L', +40966=>'L', +40967=>'L', +40968=>'L', +40969=>'L', +40970=>'L', +40971=>'L', +40972=>'L', +40973=>'L', +40974=>'L', +40975=>'L', +40976=>'L', +40977=>'L', +40978=>'L', +40979=>'L', +40980=>'L', +40981=>'L', +40982=>'L', +40983=>'L', +40984=>'L', +40985=>'L', +40986=>'L', +40987=>'L', +40988=>'L', +40989=>'L', +40990=>'L', +40991=>'L', +40992=>'L', +40993=>'L', +40994=>'L', +40995=>'L', +40996=>'L', +40997=>'L', +40998=>'L', +40999=>'L', +41000=>'L', +41001=>'L', +41002=>'L', +41003=>'L', +41004=>'L', +41005=>'L', +41006=>'L', +41007=>'L', +41008=>'L', +41009=>'L', +41010=>'L', +41011=>'L', +41012=>'L', +41013=>'L', +41014=>'L', +41015=>'L', +41016=>'L', +41017=>'L', +41018=>'L', +41019=>'L', +41020=>'L', +41021=>'L', +41022=>'L', +41023=>'L', +41024=>'L', +41025=>'L', +41026=>'L', +41027=>'L', +41028=>'L', +41029=>'L', +41030=>'L', +41031=>'L', +41032=>'L', +41033=>'L', +41034=>'L', +41035=>'L', +41036=>'L', +41037=>'L', +41038=>'L', +41039=>'L', +41040=>'L', +41041=>'L', +41042=>'L', +41043=>'L', +41044=>'L', +41045=>'L', +41046=>'L', +41047=>'L', +41048=>'L', +41049=>'L', +41050=>'L', +41051=>'L', +41052=>'L', +41053=>'L', +41054=>'L', +41055=>'L', +41056=>'L', +41057=>'L', +41058=>'L', +41059=>'L', +41060=>'L', +41061=>'L', +41062=>'L', +41063=>'L', +41064=>'L', +41065=>'L', +41066=>'L', +41067=>'L', +41068=>'L', +41069=>'L', +41070=>'L', +41071=>'L', +41072=>'L', +41073=>'L', +41074=>'L', +41075=>'L', +41076=>'L', +41077=>'L', +41078=>'L', +41079=>'L', +41080=>'L', +41081=>'L', +41082=>'L', +41083=>'L', +41084=>'L', +41085=>'L', +41086=>'L', +41087=>'L', +41088=>'L', +41089=>'L', +41090=>'L', +41091=>'L', +41092=>'L', +41093=>'L', +41094=>'L', +41095=>'L', +41096=>'L', +41097=>'L', +41098=>'L', +41099=>'L', +41100=>'L', +41101=>'L', +41102=>'L', +41103=>'L', +41104=>'L', +41105=>'L', +41106=>'L', +41107=>'L', +41108=>'L', +41109=>'L', +41110=>'L', +41111=>'L', +41112=>'L', +41113=>'L', +41114=>'L', +41115=>'L', +41116=>'L', +41117=>'L', +41118=>'L', +41119=>'L', +41120=>'L', +41121=>'L', +41122=>'L', +41123=>'L', +41124=>'L', +41125=>'L', +41126=>'L', +41127=>'L', +41128=>'L', +41129=>'L', +41130=>'L', +41131=>'L', +41132=>'L', +41133=>'L', +41134=>'L', +41135=>'L', +41136=>'L', +41137=>'L', +41138=>'L', +41139=>'L', +41140=>'L', +41141=>'L', +41142=>'L', +41143=>'L', +41144=>'L', +41145=>'L', +41146=>'L', +41147=>'L', +41148=>'L', +41149=>'L', +41150=>'L', +41151=>'L', +41152=>'L', +41153=>'L', +41154=>'L', +41155=>'L', +41156=>'L', +41157=>'L', +41158=>'L', +41159=>'L', +41160=>'L', +41161=>'L', +41162=>'L', +41163=>'L', +41164=>'L', +41165=>'L', +41166=>'L', +41167=>'L', +41168=>'L', +41169=>'L', +41170=>'L', +41171=>'L', +41172=>'L', +41173=>'L', +41174=>'L', +41175=>'L', +41176=>'L', +41177=>'L', +41178=>'L', +41179=>'L', +41180=>'L', +41181=>'L', +41182=>'L', +41183=>'L', +41184=>'L', +41185=>'L', +41186=>'L', +41187=>'L', +41188=>'L', +41189=>'L', +41190=>'L', +41191=>'L', +41192=>'L', +41193=>'L', +41194=>'L', +41195=>'L', +41196=>'L', +41197=>'L', +41198=>'L', +41199=>'L', +41200=>'L', +41201=>'L', +41202=>'L', +41203=>'L', +41204=>'L', +41205=>'L', +41206=>'L', +41207=>'L', +41208=>'L', +41209=>'L', +41210=>'L', +41211=>'L', +41212=>'L', +41213=>'L', +41214=>'L', +41215=>'L', +41216=>'L', +41217=>'L', +41218=>'L', +41219=>'L', +41220=>'L', +41221=>'L', +41222=>'L', +41223=>'L', +41224=>'L', +41225=>'L', +41226=>'L', +41227=>'L', +41228=>'L', +41229=>'L', +41230=>'L', +41231=>'L', +41232=>'L', +41233=>'L', +41234=>'L', +41235=>'L', +41236=>'L', +41237=>'L', +41238=>'L', +41239=>'L', +41240=>'L', +41241=>'L', +41242=>'L', +41243=>'L', +41244=>'L', +41245=>'L', +41246=>'L', +41247=>'L', +41248=>'L', +41249=>'L', +41250=>'L', +41251=>'L', +41252=>'L', +41253=>'L', +41254=>'L', +41255=>'L', +41256=>'L', +41257=>'L', +41258=>'L', +41259=>'L', +41260=>'L', +41261=>'L', +41262=>'L', +41263=>'L', +41264=>'L', +41265=>'L', +41266=>'L', +41267=>'L', +41268=>'L', +41269=>'L', +41270=>'L', +41271=>'L', +41272=>'L', +41273=>'L', +41274=>'L', +41275=>'L', +41276=>'L', +41277=>'L', +41278=>'L', +41279=>'L', +41280=>'L', +41281=>'L', +41282=>'L', +41283=>'L', +41284=>'L', +41285=>'L', +41286=>'L', +41287=>'L', +41288=>'L', +41289=>'L', +41290=>'L', +41291=>'L', +41292=>'L', +41293=>'L', +41294=>'L', +41295=>'L', +41296=>'L', +41297=>'L', +41298=>'L', +41299=>'L', +41300=>'L', +41301=>'L', +41302=>'L', +41303=>'L', +41304=>'L', +41305=>'L', +41306=>'L', +41307=>'L', +41308=>'L', +41309=>'L', +41310=>'L', +41311=>'L', +41312=>'L', +41313=>'L', +41314=>'L', +41315=>'L', +41316=>'L', +41317=>'L', +41318=>'L', +41319=>'L', +41320=>'L', +41321=>'L', +41322=>'L', +41323=>'L', +41324=>'L', +41325=>'L', +41326=>'L', +41327=>'L', +41328=>'L', +41329=>'L', +41330=>'L', +41331=>'L', +41332=>'L', +41333=>'L', +41334=>'L', +41335=>'L', +41336=>'L', +41337=>'L', +41338=>'L', +41339=>'L', +41340=>'L', +41341=>'L', +41342=>'L', +41343=>'L', +41344=>'L', +41345=>'L', +41346=>'L', +41347=>'L', +41348=>'L', +41349=>'L', +41350=>'L', +41351=>'L', +41352=>'L', +41353=>'L', +41354=>'L', +41355=>'L', +41356=>'L', +41357=>'L', +41358=>'L', +41359=>'L', +41360=>'L', +41361=>'L', +41362=>'L', +41363=>'L', +41364=>'L', +41365=>'L', +41366=>'L', +41367=>'L', +41368=>'L', +41369=>'L', +41370=>'L', +41371=>'L', +41372=>'L', +41373=>'L', +41374=>'L', +41375=>'L', +41376=>'L', +41377=>'L', +41378=>'L', +41379=>'L', +41380=>'L', +41381=>'L', +41382=>'L', +41383=>'L', +41384=>'L', +41385=>'L', +41386=>'L', +41387=>'L', +41388=>'L', +41389=>'L', +41390=>'L', +41391=>'L', +41392=>'L', +41393=>'L', +41394=>'L', +41395=>'L', +41396=>'L', +41397=>'L', +41398=>'L', +41399=>'L', +41400=>'L', +41401=>'L', +41402=>'L', +41403=>'L', +41404=>'L', +41405=>'L', +41406=>'L', +41407=>'L', +41408=>'L', +41409=>'L', +41410=>'L', +41411=>'L', +41412=>'L', +41413=>'L', +41414=>'L', +41415=>'L', +41416=>'L', +41417=>'L', +41418=>'L', +41419=>'L', +41420=>'L', +41421=>'L', +41422=>'L', +41423=>'L', +41424=>'L', +41425=>'L', +41426=>'L', +41427=>'L', +41428=>'L', +41429=>'L', +41430=>'L', +41431=>'L', +41432=>'L', +41433=>'L', +41434=>'L', +41435=>'L', +41436=>'L', +41437=>'L', +41438=>'L', +41439=>'L', +41440=>'L', +41441=>'L', +41442=>'L', +41443=>'L', +41444=>'L', +41445=>'L', +41446=>'L', +41447=>'L', +41448=>'L', +41449=>'L', +41450=>'L', +41451=>'L', +41452=>'L', +41453=>'L', +41454=>'L', +41455=>'L', +41456=>'L', +41457=>'L', +41458=>'L', +41459=>'L', +41460=>'L', +41461=>'L', +41462=>'L', +41463=>'L', +41464=>'L', +41465=>'L', +41466=>'L', +41467=>'L', +41468=>'L', +41469=>'L', +41470=>'L', +41471=>'L', +41472=>'L', +41473=>'L', +41474=>'L', +41475=>'L', +41476=>'L', +41477=>'L', +41478=>'L', +41479=>'L', +41480=>'L', +41481=>'L', +41482=>'L', +41483=>'L', +41484=>'L', +41485=>'L', +41486=>'L', +41487=>'L', +41488=>'L', +41489=>'L', +41490=>'L', +41491=>'L', +41492=>'L', +41493=>'L', +41494=>'L', +41495=>'L', +41496=>'L', +41497=>'L', +41498=>'L', +41499=>'L', +41500=>'L', +41501=>'L', +41502=>'L', +41503=>'L', +41504=>'L', +41505=>'L', +41506=>'L', +41507=>'L', +41508=>'L', +41509=>'L', +41510=>'L', +41511=>'L', +41512=>'L', +41513=>'L', +41514=>'L', +41515=>'L', +41516=>'L', +41517=>'L', +41518=>'L', +41519=>'L', +41520=>'L', +41521=>'L', +41522=>'L', +41523=>'L', +41524=>'L', +41525=>'L', +41526=>'L', +41527=>'L', +41528=>'L', +41529=>'L', +41530=>'L', +41531=>'L', +41532=>'L', +41533=>'L', +41534=>'L', +41535=>'L', +41536=>'L', +41537=>'L', +41538=>'L', +41539=>'L', +41540=>'L', +41541=>'L', +41542=>'L', +41543=>'L', +41544=>'L', +41545=>'L', +41546=>'L', +41547=>'L', +41548=>'L', +41549=>'L', +41550=>'L', +41551=>'L', +41552=>'L', +41553=>'L', +41554=>'L', +41555=>'L', +41556=>'L', +41557=>'L', +41558=>'L', +41559=>'L', +41560=>'L', +41561=>'L', +41562=>'L', +41563=>'L', +41564=>'L', +41565=>'L', +41566=>'L', +41567=>'L', +41568=>'L', +41569=>'L', +41570=>'L', +41571=>'L', +41572=>'L', +41573=>'L', +41574=>'L', +41575=>'L', +41576=>'L', +41577=>'L', +41578=>'L', +41579=>'L', +41580=>'L', +41581=>'L', +41582=>'L', +41583=>'L', +41584=>'L', +41585=>'L', +41586=>'L', +41587=>'L', +41588=>'L', +41589=>'L', +41590=>'L', +41591=>'L', +41592=>'L', +41593=>'L', +41594=>'L', +41595=>'L', +41596=>'L', +41597=>'L', +41598=>'L', +41599=>'L', +41600=>'L', +41601=>'L', +41602=>'L', +41603=>'L', +41604=>'L', +41605=>'L', +41606=>'L', +41607=>'L', +41608=>'L', +41609=>'L', +41610=>'L', +41611=>'L', +41612=>'L', +41613=>'L', +41614=>'L', +41615=>'L', +41616=>'L', +41617=>'L', +41618=>'L', +41619=>'L', +41620=>'L', +41621=>'L', +41622=>'L', +41623=>'L', +41624=>'L', +41625=>'L', +41626=>'L', +41627=>'L', +41628=>'L', +41629=>'L', +41630=>'L', +41631=>'L', +41632=>'L', +41633=>'L', +41634=>'L', +41635=>'L', +41636=>'L', +41637=>'L', +41638=>'L', +41639=>'L', +41640=>'L', +41641=>'L', +41642=>'L', +41643=>'L', +41644=>'L', +41645=>'L', +41646=>'L', +41647=>'L', +41648=>'L', +41649=>'L', +41650=>'L', +41651=>'L', +41652=>'L', +41653=>'L', +41654=>'L', +41655=>'L', +41656=>'L', +41657=>'L', +41658=>'L', +41659=>'L', +41660=>'L', +41661=>'L', +41662=>'L', +41663=>'L', +41664=>'L', +41665=>'L', +41666=>'L', +41667=>'L', +41668=>'L', +41669=>'L', +41670=>'L', +41671=>'L', +41672=>'L', +41673=>'L', +41674=>'L', +41675=>'L', +41676=>'L', +41677=>'L', +41678=>'L', +41679=>'L', +41680=>'L', +41681=>'L', +41682=>'L', +41683=>'L', +41684=>'L', +41685=>'L', +41686=>'L', +41687=>'L', +41688=>'L', +41689=>'L', +41690=>'L', +41691=>'L', +41692=>'L', +41693=>'L', +41694=>'L', +41695=>'L', +41696=>'L', +41697=>'L', +41698=>'L', +41699=>'L', +41700=>'L', +41701=>'L', +41702=>'L', +41703=>'L', +41704=>'L', +41705=>'L', +41706=>'L', +41707=>'L', +41708=>'L', +41709=>'L', +41710=>'L', +41711=>'L', +41712=>'L', +41713=>'L', +41714=>'L', +41715=>'L', +41716=>'L', +41717=>'L', +41718=>'L', +41719=>'L', +41720=>'L', +41721=>'L', +41722=>'L', +41723=>'L', +41724=>'L', +41725=>'L', +41726=>'L', +41727=>'L', +41728=>'L', +41729=>'L', +41730=>'L', +41731=>'L', +41732=>'L', +41733=>'L', +41734=>'L', +41735=>'L', +41736=>'L', +41737=>'L', +41738=>'L', +41739=>'L', +41740=>'L', +41741=>'L', +41742=>'L', +41743=>'L', +41744=>'L', +41745=>'L', +41746=>'L', +41747=>'L', +41748=>'L', +41749=>'L', +41750=>'L', +41751=>'L', +41752=>'L', +41753=>'L', +41754=>'L', +41755=>'L', +41756=>'L', +41757=>'L', +41758=>'L', +41759=>'L', +41760=>'L', +41761=>'L', +41762=>'L', +41763=>'L', +41764=>'L', +41765=>'L', +41766=>'L', +41767=>'L', +41768=>'L', +41769=>'L', +41770=>'L', +41771=>'L', +41772=>'L', +41773=>'L', +41774=>'L', +41775=>'L', +41776=>'L', +41777=>'L', +41778=>'L', +41779=>'L', +41780=>'L', +41781=>'L', +41782=>'L', +41783=>'L', +41784=>'L', +41785=>'L', +41786=>'L', +41787=>'L', +41788=>'L', +41789=>'L', +41790=>'L', +41791=>'L', +41792=>'L', +41793=>'L', +41794=>'L', +41795=>'L', +41796=>'L', +41797=>'L', +41798=>'L', +41799=>'L', +41800=>'L', +41801=>'L', +41802=>'L', +41803=>'L', +41804=>'L', +41805=>'L', +41806=>'L', +41807=>'L', +41808=>'L', +41809=>'L', +41810=>'L', +41811=>'L', +41812=>'L', +41813=>'L', +41814=>'L', +41815=>'L', +41816=>'L', +41817=>'L', +41818=>'L', +41819=>'L', +41820=>'L', +41821=>'L', +41822=>'L', +41823=>'L', +41824=>'L', +41825=>'L', +41826=>'L', +41827=>'L', +41828=>'L', +41829=>'L', +41830=>'L', +41831=>'L', +41832=>'L', +41833=>'L', +41834=>'L', +41835=>'L', +41836=>'L', +41837=>'L', +41838=>'L', +41839=>'L', +41840=>'L', +41841=>'L', +41842=>'L', +41843=>'L', +41844=>'L', +41845=>'L', +41846=>'L', +41847=>'L', +41848=>'L', +41849=>'L', +41850=>'L', +41851=>'L', +41852=>'L', +41853=>'L', +41854=>'L', +41855=>'L', +41856=>'L', +41857=>'L', +41858=>'L', +41859=>'L', +41860=>'L', +41861=>'L', +41862=>'L', +41863=>'L', +41864=>'L', +41865=>'L', +41866=>'L', +41867=>'L', +41868=>'L', +41869=>'L', +41870=>'L', +41871=>'L', +41872=>'L', +41873=>'L', +41874=>'L', +41875=>'L', +41876=>'L', +41877=>'L', +41878=>'L', +41879=>'L', +41880=>'L', +41881=>'L', +41882=>'L', +41883=>'L', +41884=>'L', +41885=>'L', +41886=>'L', +41887=>'L', +41888=>'L', +41889=>'L', +41890=>'L', +41891=>'L', +41892=>'L', +41893=>'L', +41894=>'L', +41895=>'L', +41896=>'L', +41897=>'L', +41898=>'L', +41899=>'L', +41900=>'L', +41901=>'L', +41902=>'L', +41903=>'L', +41904=>'L', +41905=>'L', +41906=>'L', +41907=>'L', +41908=>'L', +41909=>'L', +41910=>'L', +41911=>'L', +41912=>'L', +41913=>'L', +41914=>'L', +41915=>'L', +41916=>'L', +41917=>'L', +41918=>'L', +41919=>'L', +41920=>'L', +41921=>'L', +41922=>'L', +41923=>'L', +41924=>'L', +41925=>'L', +41926=>'L', +41927=>'L', +41928=>'L', +41929=>'L', +41930=>'L', +41931=>'L', +41932=>'L', +41933=>'L', +41934=>'L', +41935=>'L', +41936=>'L', +41937=>'L', +41938=>'L', +41939=>'L', +41940=>'L', +41941=>'L', +41942=>'L', +41943=>'L', +41944=>'L', +41945=>'L', +41946=>'L', +41947=>'L', +41948=>'L', +41949=>'L', +41950=>'L', +41951=>'L', +41952=>'L', +41953=>'L', +41954=>'L', +41955=>'L', +41956=>'L', +41957=>'L', +41958=>'L', +41959=>'L', +41960=>'L', +41961=>'L', +41962=>'L', +41963=>'L', +41964=>'L', +41965=>'L', +41966=>'L', +41967=>'L', +41968=>'L', +41969=>'L', +41970=>'L', +41971=>'L', +41972=>'L', +41973=>'L', +41974=>'L', +41975=>'L', +41976=>'L', +41977=>'L', +41978=>'L', +41979=>'L', +41980=>'L', +41981=>'L', +41982=>'L', +41983=>'L', +41984=>'L', +41985=>'L', +41986=>'L', +41987=>'L', +41988=>'L', +41989=>'L', +41990=>'L', +41991=>'L', +41992=>'L', +41993=>'L', +41994=>'L', +41995=>'L', +41996=>'L', +41997=>'L', +41998=>'L', +41999=>'L', +42000=>'L', +42001=>'L', +42002=>'L', +42003=>'L', +42004=>'L', +42005=>'L', +42006=>'L', +42007=>'L', +42008=>'L', +42009=>'L', +42010=>'L', +42011=>'L', +42012=>'L', +42013=>'L', +42014=>'L', +42015=>'L', +42016=>'L', +42017=>'L', +42018=>'L', +42019=>'L', +42020=>'L', +42021=>'L', +42022=>'L', +42023=>'L', +42024=>'L', +42025=>'L', +42026=>'L', +42027=>'L', +42028=>'L', +42029=>'L', +42030=>'L', +42031=>'L', +42032=>'L', +42033=>'L', +42034=>'L', +42035=>'L', +42036=>'L', +42037=>'L', +42038=>'L', +42039=>'L', +42040=>'L', +42041=>'L', +42042=>'L', +42043=>'L', +42044=>'L', +42045=>'L', +42046=>'L', +42047=>'L', +42048=>'L', +42049=>'L', +42050=>'L', +42051=>'L', +42052=>'L', +42053=>'L', +42054=>'L', +42055=>'L', +42056=>'L', +42057=>'L', +42058=>'L', +42059=>'L', +42060=>'L', +42061=>'L', +42062=>'L', +42063=>'L', +42064=>'L', +42065=>'L', +42066=>'L', +42067=>'L', +42068=>'L', +42069=>'L', +42070=>'L', +42071=>'L', +42072=>'L', +42073=>'L', +42074=>'L', +42075=>'L', +42076=>'L', +42077=>'L', +42078=>'L', +42079=>'L', +42080=>'L', +42081=>'L', +42082=>'L', +42083=>'L', +42084=>'L', +42085=>'L', +42086=>'L', +42087=>'L', +42088=>'L', +42089=>'L', +42090=>'L', +42091=>'L', +42092=>'L', +42093=>'L', +42094=>'L', +42095=>'L', +42096=>'L', +42097=>'L', +42098=>'L', +42099=>'L', +42100=>'L', +42101=>'L', +42102=>'L', +42103=>'L', +42104=>'L', +42105=>'L', +42106=>'L', +42107=>'L', +42108=>'L', +42109=>'L', +42110=>'L', +42111=>'L', +42112=>'L', +42113=>'L', +42114=>'L', +42115=>'L', +42116=>'L', +42117=>'L', +42118=>'L', +42119=>'L', +42120=>'L', +42121=>'L', +42122=>'L', +42123=>'L', +42124=>'L', +42128=>'ON', +42129=>'ON', +42130=>'ON', +42131=>'ON', +42132=>'ON', +42133=>'ON', +42134=>'ON', +42135=>'ON', +42136=>'ON', +42137=>'ON', +42138=>'ON', +42139=>'ON', +42140=>'ON', +42141=>'ON', +42142=>'ON', +42143=>'ON', +42144=>'ON', +42145=>'ON', +42146=>'ON', +42147=>'ON', +42148=>'ON', +42149=>'ON', +42150=>'ON', +42151=>'ON', +42152=>'ON', +42153=>'ON', +42154=>'ON', +42155=>'ON', +42156=>'ON', +42157=>'ON', +42158=>'ON', +42159=>'ON', +42160=>'ON', +42161=>'ON', +42162=>'ON', +42163=>'ON', +42164=>'ON', +42165=>'ON', +42166=>'ON', +42167=>'ON', +42168=>'ON', +42169=>'ON', +42170=>'ON', +42171=>'ON', +42172=>'ON', +42173=>'ON', +42174=>'ON', +42175=>'ON', +42176=>'ON', +42177=>'ON', +42178=>'ON', +42179=>'ON', +42180=>'ON', +42181=>'ON', +42182=>'ON', +42752=>'ON', +42753=>'ON', +42754=>'ON', +42755=>'ON', +42756=>'ON', +42757=>'ON', +42758=>'ON', +42759=>'ON', +42760=>'ON', +42761=>'ON', +42762=>'ON', +42763=>'ON', +42764=>'ON', +42765=>'ON', +42766=>'ON', +42767=>'ON', +42768=>'ON', +42769=>'ON', +42770=>'ON', +42771=>'ON', +42772=>'ON', +42773=>'ON', +42774=>'ON', +42775=>'ON', +42776=>'ON', +42777=>'ON', +42778=>'ON', +42784=>'ON', +42785=>'ON', +43008=>'L', +43009=>'L', +43010=>'NSM', +43011=>'L', +43012=>'L', +43013=>'L', +43014=>'NSM', +43015=>'L', +43016=>'L', +43017=>'L', +43018=>'L', +43019=>'NSM', +43020=>'L', +43021=>'L', +43022=>'L', +43023=>'L', +43024=>'L', +43025=>'L', +43026=>'L', +43027=>'L', +43028=>'L', +43029=>'L', +43030=>'L', +43031=>'L', +43032=>'L', +43033=>'L', +43034=>'L', +43035=>'L', +43036=>'L', +43037=>'L', +43038=>'L', +43039=>'L', +43040=>'L', +43041=>'L', +43042=>'L', +43043=>'L', +43044=>'L', +43045=>'NSM', +43046=>'NSM', +43047=>'L', +43048=>'ON', +43049=>'ON', +43050=>'ON', +43051=>'ON', +43072=>'L', +43073=>'L', +43074=>'L', +43075=>'L', +43076=>'L', +43077=>'L', +43078=>'L', +43079=>'L', +43080=>'L', +43081=>'L', +43082=>'L', +43083=>'L', +43084=>'L', +43085=>'L', +43086=>'L', +43087=>'L', +43088=>'L', +43089=>'L', +43090=>'L', +43091=>'L', +43092=>'L', +43093=>'L', +43094=>'L', +43095=>'L', +43096=>'L', +43097=>'L', +43098=>'L', +43099=>'L', +43100=>'L', +43101=>'L', +43102=>'L', +43103=>'L', +43104=>'L', +43105=>'L', +43106=>'L', +43107=>'L', +43108=>'L', +43109=>'L', +43110=>'L', +43111=>'L', +43112=>'L', +43113=>'L', +43114=>'L', +43115=>'L', +43116=>'L', +43117=>'L', +43118=>'L', +43119=>'L', +43120=>'L', +43121=>'L', +43122=>'L', +43123=>'L', +43124=>'ON', +43125=>'ON', +43126=>'ON', +43127=>'ON', +44032=>'L', +55203=>'L', +55296=>'L', +56191=>'L', +56192=>'L', +56319=>'L', +56320=>'L', +57343=>'L', +57344=>'L', +63743=>'L', +63744=>'L', +63745=>'L', +63746=>'L', +63747=>'L', +63748=>'L', +63749=>'L', +63750=>'L', +63751=>'L', +63752=>'L', +63753=>'L', +63754=>'L', +63755=>'L', +63756=>'L', +63757=>'L', +63758=>'L', +63759=>'L', +63760=>'L', +63761=>'L', +63762=>'L', +63763=>'L', +63764=>'L', +63765=>'L', +63766=>'L', +63767=>'L', +63768=>'L', +63769=>'L', +63770=>'L', +63771=>'L', +63772=>'L', +63773=>'L', +63774=>'L', +63775=>'L', +63776=>'L', +63777=>'L', +63778=>'L', +63779=>'L', +63780=>'L', +63781=>'L', +63782=>'L', +63783=>'L', +63784=>'L', +63785=>'L', +63786=>'L', +63787=>'L', +63788=>'L', +63789=>'L', +63790=>'L', +63791=>'L', +63792=>'L', +63793=>'L', +63794=>'L', +63795=>'L', +63796=>'L', +63797=>'L', +63798=>'L', +63799=>'L', +63800=>'L', +63801=>'L', +63802=>'L', +63803=>'L', +63804=>'L', +63805=>'L', +63806=>'L', +63807=>'L', +63808=>'L', +63809=>'L', +63810=>'L', +63811=>'L', +63812=>'L', +63813=>'L', +63814=>'L', +63815=>'L', +63816=>'L', +63817=>'L', +63818=>'L', +63819=>'L', +63820=>'L', +63821=>'L', +63822=>'L', +63823=>'L', +63824=>'L', +63825=>'L', +63826=>'L', +63827=>'L', +63828=>'L', +63829=>'L', +63830=>'L', +63831=>'L', +63832=>'L', +63833=>'L', +63834=>'L', +63835=>'L', +63836=>'L', +63837=>'L', +63838=>'L', +63839=>'L', +63840=>'L', +63841=>'L', +63842=>'L', +63843=>'L', +63844=>'L', +63845=>'L', +63846=>'L', +63847=>'L', +63848=>'L', +63849=>'L', +63850=>'L', +63851=>'L', +63852=>'L', +63853=>'L', +63854=>'L', +63855=>'L', +63856=>'L', +63857=>'L', +63858=>'L', +63859=>'L', +63860=>'L', +63861=>'L', +63862=>'L', +63863=>'L', +63864=>'L', +63865=>'L', +63866=>'L', +63867=>'L', +63868=>'L', +63869=>'L', +63870=>'L', +63871=>'L', +63872=>'L', +63873=>'L', +63874=>'L', +63875=>'L', +63876=>'L', +63877=>'L', +63878=>'L', +63879=>'L', +63880=>'L', +63881=>'L', +63882=>'L', +63883=>'L', +63884=>'L', +63885=>'L', +63886=>'L', +63887=>'L', +63888=>'L', +63889=>'L', +63890=>'L', +63891=>'L', +63892=>'L', +63893=>'L', +63894=>'L', +63895=>'L', +63896=>'L', +63897=>'L', +63898=>'L', +63899=>'L', +63900=>'L', +63901=>'L', +63902=>'L', +63903=>'L', +63904=>'L', +63905=>'L', +63906=>'L', +63907=>'L', +63908=>'L', +63909=>'L', +63910=>'L', +63911=>'L', +63912=>'L', +63913=>'L', +63914=>'L', +63915=>'L', +63916=>'L', +63917=>'L', +63918=>'L', +63919=>'L', +63920=>'L', +63921=>'L', +63922=>'L', +63923=>'L', +63924=>'L', +63925=>'L', +63926=>'L', +63927=>'L', +63928=>'L', +63929=>'L', +63930=>'L', +63931=>'L', +63932=>'L', +63933=>'L', +63934=>'L', +63935=>'L', +63936=>'L', +63937=>'L', +63938=>'L', +63939=>'L', +63940=>'L', +63941=>'L', +63942=>'L', +63943=>'L', +63944=>'L', +63945=>'L', +63946=>'L', +63947=>'L', +63948=>'L', +63949=>'L', +63950=>'L', +63951=>'L', +63952=>'L', +63953=>'L', +63954=>'L', +63955=>'L', +63956=>'L', +63957=>'L', +63958=>'L', +63959=>'L', +63960=>'L', +63961=>'L', +63962=>'L', +63963=>'L', +63964=>'L', +63965=>'L', +63966=>'L', +63967=>'L', +63968=>'L', +63969=>'L', +63970=>'L', +63971=>'L', +63972=>'L', +63973=>'L', +63974=>'L', +63975=>'L', +63976=>'L', +63977=>'L', +63978=>'L', +63979=>'L', +63980=>'L', +63981=>'L', +63982=>'L', +63983=>'L', +63984=>'L', +63985=>'L', +63986=>'L', +63987=>'L', +63988=>'L', +63989=>'L', +63990=>'L', +63991=>'L', +63992=>'L', +63993=>'L', +63994=>'L', +63995=>'L', +63996=>'L', +63997=>'L', +63998=>'L', +63999=>'L', +64000=>'L', +64001=>'L', +64002=>'L', +64003=>'L', +64004=>'L', +64005=>'L', +64006=>'L', +64007=>'L', +64008=>'L', +64009=>'L', +64010=>'L', +64011=>'L', +64012=>'L', +64013=>'L', +64014=>'L', +64015=>'L', +64016=>'L', +64017=>'L', +64018=>'L', +64019=>'L', +64020=>'L', +64021=>'L', +64022=>'L', +64023=>'L', +64024=>'L', +64025=>'L', +64026=>'L', +64027=>'L', +64028=>'L', +64029=>'L', +64030=>'L', +64031=>'L', +64032=>'L', +64033=>'L', +64034=>'L', +64035=>'L', +64036=>'L', +64037=>'L', +64038=>'L', +64039=>'L', +64040=>'L', +64041=>'L', +64042=>'L', +64043=>'L', +64044=>'L', +64045=>'L', +64048=>'L', +64049=>'L', +64050=>'L', +64051=>'L', +64052=>'L', +64053=>'L', +64054=>'L', +64055=>'L', +64056=>'L', +64057=>'L', +64058=>'L', +64059=>'L', +64060=>'L', +64061=>'L', +64062=>'L', +64063=>'L', +64064=>'L', +64065=>'L', +64066=>'L', +64067=>'L', +64068=>'L', +64069=>'L', +64070=>'L', +64071=>'L', +64072=>'L', +64073=>'L', +64074=>'L', +64075=>'L', +64076=>'L', +64077=>'L', +64078=>'L', +64079=>'L', +64080=>'L', +64081=>'L', +64082=>'L', +64083=>'L', +64084=>'L', +64085=>'L', +64086=>'L', +64087=>'L', +64088=>'L', +64089=>'L', +64090=>'L', +64091=>'L', +64092=>'L', +64093=>'L', +64094=>'L', +64095=>'L', +64096=>'L', +64097=>'L', +64098=>'L', +64099=>'L', +64100=>'L', +64101=>'L', +64102=>'L', +64103=>'L', +64104=>'L', +64105=>'L', +64106=>'L', +64112=>'L', +64113=>'L', +64114=>'L', +64115=>'L', +64116=>'L', +64117=>'L', +64118=>'L', +64119=>'L', +64120=>'L', +64121=>'L', +64122=>'L', +64123=>'L', +64124=>'L', +64125=>'L', +64126=>'L', +64127=>'L', +64128=>'L', +64129=>'L', +64130=>'L', +64131=>'L', +64132=>'L', +64133=>'L', +64134=>'L', +64135=>'L', +64136=>'L', +64137=>'L', +64138=>'L', +64139=>'L', +64140=>'L', +64141=>'L', +64142=>'L', +64143=>'L', +64144=>'L', +64145=>'L', +64146=>'L', +64147=>'L', +64148=>'L', +64149=>'L', +64150=>'L', +64151=>'L', +64152=>'L', +64153=>'L', +64154=>'L', +64155=>'L', +64156=>'L', +64157=>'L', +64158=>'L', +64159=>'L', +64160=>'L', +64161=>'L', +64162=>'L', +64163=>'L', +64164=>'L', +64165=>'L', +64166=>'L', +64167=>'L', +64168=>'L', +64169=>'L', +64170=>'L', +64171=>'L', +64172=>'L', +64173=>'L', +64174=>'L', +64175=>'L', +64176=>'L', +64177=>'L', +64178=>'L', +64179=>'L', +64180=>'L', +64181=>'L', +64182=>'L', +64183=>'L', +64184=>'L', +64185=>'L', +64186=>'L', +64187=>'L', +64188=>'L', +64189=>'L', +64190=>'L', +64191=>'L', +64192=>'L', +64193=>'L', +64194=>'L', +64195=>'L', +64196=>'L', +64197=>'L', +64198=>'L', +64199=>'L', +64200=>'L', +64201=>'L', +64202=>'L', +64203=>'L', +64204=>'L', +64205=>'L', +64206=>'L', +64207=>'L', +64208=>'L', +64209=>'L', +64210=>'L', +64211=>'L', +64212=>'L', +64213=>'L', +64214=>'L', +64215=>'L', +64216=>'L', +64217=>'L', +64256=>'L', +64257=>'L', +64258=>'L', +64259=>'L', +64260=>'L', +64261=>'L', +64262=>'L', +64275=>'L', +64276=>'L', +64277=>'L', +64278=>'L', +64279=>'L', +64285=>'R', +64286=>'NSM', +64287=>'R', +64288=>'R', +64289=>'R', +64290=>'R', +64291=>'R', +64292=>'R', +64293=>'R', +64294=>'R', +64295=>'R', +64296=>'R', +64297=>'ES', +64298=>'R', +64299=>'R', +64300=>'R', +64301=>'R', +64302=>'R', +64303=>'R', +64304=>'R', +64305=>'R', +64306=>'R', +64307=>'R', +64308=>'R', +64309=>'R', +64310=>'R', +64312=>'R', +64313=>'R', +64314=>'R', +64315=>'R', +64316=>'R', +64318=>'R', +64320=>'R', +64321=>'R', +64323=>'R', +64324=>'R', +64326=>'R', +64327=>'R', +64328=>'R', +64329=>'R', +64330=>'R', +64331=>'R', +64332=>'R', +64333=>'R', +64334=>'R', +64335=>'R', +64336=>'AL', +64337=>'AL', +64338=>'AL', +64339=>'AL', +64340=>'AL', +64341=>'AL', +64342=>'AL', +64343=>'AL', +64344=>'AL', +64345=>'AL', +64346=>'AL', +64347=>'AL', +64348=>'AL', +64349=>'AL', +64350=>'AL', +64351=>'AL', +64352=>'AL', +64353=>'AL', +64354=>'AL', +64355=>'AL', +64356=>'AL', +64357=>'AL', +64358=>'AL', +64359=>'AL', +64360=>'AL', +64361=>'AL', +64362=>'AL', +64363=>'AL', +64364=>'AL', +64365=>'AL', +64366=>'AL', +64367=>'AL', +64368=>'AL', +64369=>'AL', +64370=>'AL', +64371=>'AL', +64372=>'AL', +64373=>'AL', +64374=>'AL', +64375=>'AL', +64376=>'AL', +64377=>'AL', +64378=>'AL', +64379=>'AL', +64380=>'AL', +64381=>'AL', +64382=>'AL', +64383=>'AL', +64384=>'AL', +64385=>'AL', +64386=>'AL', +64387=>'AL', +64388=>'AL', +64389=>'AL', +64390=>'AL', +64391=>'AL', +64392=>'AL', +64393=>'AL', +64394=>'AL', +64395=>'AL', +64396=>'AL', +64397=>'AL', +64398=>'AL', +64399=>'AL', +64400=>'AL', +64401=>'AL', +64402=>'AL', +64403=>'AL', +64404=>'AL', +64405=>'AL', +64406=>'AL', +64407=>'AL', +64408=>'AL', +64409=>'AL', +64410=>'AL', +64411=>'AL', +64412=>'AL', +64413=>'AL', +64414=>'AL', +64415=>'AL', +64416=>'AL', +64417=>'AL', +64418=>'AL', +64419=>'AL', +64420=>'AL', +64421=>'AL', +64422=>'AL', +64423=>'AL', +64424=>'AL', +64425=>'AL', +64426=>'AL', +64427=>'AL', +64428=>'AL', +64429=>'AL', +64430=>'AL', +64431=>'AL', +64432=>'AL', +64433=>'AL', +64467=>'AL', +64468=>'AL', +64469=>'AL', +64470=>'AL', +64471=>'AL', +64472=>'AL', +64473=>'AL', +64474=>'AL', +64475=>'AL', +64476=>'AL', +64477=>'AL', +64478=>'AL', +64479=>'AL', +64480=>'AL', +64481=>'AL', +64482=>'AL', +64483=>'AL', +64484=>'AL', +64485=>'AL', +64486=>'AL', +64487=>'AL', +64488=>'AL', +64489=>'AL', +64490=>'AL', +64491=>'AL', +64492=>'AL', +64493=>'AL', +64494=>'AL', +64495=>'AL', +64496=>'AL', +64497=>'AL', +64498=>'AL', +64499=>'AL', +64500=>'AL', +64501=>'AL', +64502=>'AL', +64503=>'AL', +64504=>'AL', +64505=>'AL', +64506=>'AL', +64507=>'AL', +64508=>'AL', +64509=>'AL', +64510=>'AL', +64511=>'AL', +64512=>'AL', +64513=>'AL', +64514=>'AL', +64515=>'AL', +64516=>'AL', +64517=>'AL', +64518=>'AL', +64519=>'AL', +64520=>'AL', +64521=>'AL', +64522=>'AL', +64523=>'AL', +64524=>'AL', +64525=>'AL', +64526=>'AL', +64527=>'AL', +64528=>'AL', +64529=>'AL', +64530=>'AL', +64531=>'AL', +64532=>'AL', +64533=>'AL', +64534=>'AL', +64535=>'AL', +64536=>'AL', +64537=>'AL', +64538=>'AL', +64539=>'AL', +64540=>'AL', +64541=>'AL', +64542=>'AL', +64543=>'AL', +64544=>'AL', +64545=>'AL', +64546=>'AL', +64547=>'AL', +64548=>'AL', +64549=>'AL', +64550=>'AL', +64551=>'AL', +64552=>'AL', +64553=>'AL', +64554=>'AL', +64555=>'AL', +64556=>'AL', +64557=>'AL', +64558=>'AL', +64559=>'AL', +64560=>'AL', +64561=>'AL', +64562=>'AL', +64563=>'AL', +64564=>'AL', +64565=>'AL', +64566=>'AL', +64567=>'AL', +64568=>'AL', +64569=>'AL', +64570=>'AL', +64571=>'AL', +64572=>'AL', +64573=>'AL', +64574=>'AL', +64575=>'AL', +64576=>'AL', +64577=>'AL', +64578=>'AL', +64579=>'AL', +64580=>'AL', +64581=>'AL', +64582=>'AL', +64583=>'AL', +64584=>'AL', +64585=>'AL', +64586=>'AL', +64587=>'AL', +64588=>'AL', +64589=>'AL', +64590=>'AL', +64591=>'AL', +64592=>'AL', +64593=>'AL', +64594=>'AL', +64595=>'AL', +64596=>'AL', +64597=>'AL', +64598=>'AL', +64599=>'AL', +64600=>'AL', +64601=>'AL', +64602=>'AL', +64603=>'AL', +64604=>'AL', +64605=>'AL', +64606=>'AL', +64607=>'AL', +64608=>'AL', +64609=>'AL', +64610=>'AL', +64611=>'AL', +64612=>'AL', +64613=>'AL', +64614=>'AL', +64615=>'AL', +64616=>'AL', +64617=>'AL', +64618=>'AL', +64619=>'AL', +64620=>'AL', +64621=>'AL', +64622=>'AL', +64623=>'AL', +64624=>'AL', +64625=>'AL', +64626=>'AL', +64627=>'AL', +64628=>'AL', +64629=>'AL', +64630=>'AL', +64631=>'AL', +64632=>'AL', +64633=>'AL', +64634=>'AL', +64635=>'AL', +64636=>'AL', +64637=>'AL', +64638=>'AL', +64639=>'AL', +64640=>'AL', +64641=>'AL', +64642=>'AL', +64643=>'AL', +64644=>'AL', +64645=>'AL', +64646=>'AL', +64647=>'AL', +64648=>'AL', +64649=>'AL', +64650=>'AL', +64651=>'AL', +64652=>'AL', +64653=>'AL', +64654=>'AL', +64655=>'AL', +64656=>'AL', +64657=>'AL', +64658=>'AL', +64659=>'AL', +64660=>'AL', +64661=>'AL', +64662=>'AL', +64663=>'AL', +64664=>'AL', +64665=>'AL', +64666=>'AL', +64667=>'AL', +64668=>'AL', +64669=>'AL', +64670=>'AL', +64671=>'AL', +64672=>'AL', +64673=>'AL', +64674=>'AL', +64675=>'AL', +64676=>'AL', +64677=>'AL', +64678=>'AL', +64679=>'AL', +64680=>'AL', +64681=>'AL', +64682=>'AL', +64683=>'AL', +64684=>'AL', +64685=>'AL', +64686=>'AL', +64687=>'AL', +64688=>'AL', +64689=>'AL', +64690=>'AL', +64691=>'AL', +64692=>'AL', +64693=>'AL', +64694=>'AL', +64695=>'AL', +64696=>'AL', +64697=>'AL', +64698=>'AL', +64699=>'AL', +64700=>'AL', +64701=>'AL', +64702=>'AL', +64703=>'AL', +64704=>'AL', +64705=>'AL', +64706=>'AL', +64707=>'AL', +64708=>'AL', +64709=>'AL', +64710=>'AL', +64711=>'AL', +64712=>'AL', +64713=>'AL', +64714=>'AL', +64715=>'AL', +64716=>'AL', +64717=>'AL', +64718=>'AL', +64719=>'AL', +64720=>'AL', +64721=>'AL', +64722=>'AL', +64723=>'AL', +64724=>'AL', +64725=>'AL', +64726=>'AL', +64727=>'AL', +64728=>'AL', +64729=>'AL', +64730=>'AL', +64731=>'AL', +64732=>'AL', +64733=>'AL', +64734=>'AL', +64735=>'AL', +64736=>'AL', +64737=>'AL', +64738=>'AL', +64739=>'AL', +64740=>'AL', +64741=>'AL', +64742=>'AL', +64743=>'AL', +64744=>'AL', +64745=>'AL', +64746=>'AL', +64747=>'AL', +64748=>'AL', +64749=>'AL', +64750=>'AL', +64751=>'AL', +64752=>'AL', +64753=>'AL', +64754=>'AL', +64755=>'AL', +64756=>'AL', +64757=>'AL', +64758=>'AL', +64759=>'AL', +64760=>'AL', +64761=>'AL', +64762=>'AL', +64763=>'AL', +64764=>'AL', +64765=>'AL', +64766=>'AL', +64767=>'AL', +64768=>'AL', +64769=>'AL', +64770=>'AL', +64771=>'AL', +64772=>'AL', +64773=>'AL', +64774=>'AL', +64775=>'AL', +64776=>'AL', +64777=>'AL', +64778=>'AL', +64779=>'AL', +64780=>'AL', +64781=>'AL', +64782=>'AL', +64783=>'AL', +64784=>'AL', +64785=>'AL', +64786=>'AL', +64787=>'AL', +64788=>'AL', +64789=>'AL', +64790=>'AL', +64791=>'AL', +64792=>'AL', +64793=>'AL', +64794=>'AL', +64795=>'AL', +64796=>'AL', +64797=>'AL', +64798=>'AL', +64799=>'AL', +64800=>'AL', +64801=>'AL', +64802=>'AL', +64803=>'AL', +64804=>'AL', +64805=>'AL', +64806=>'AL', +64807=>'AL', +64808=>'AL', +64809=>'AL', +64810=>'AL', +64811=>'AL', +64812=>'AL', +64813=>'AL', +64814=>'AL', +64815=>'AL', +64816=>'AL', +64817=>'AL', +64818=>'AL', +64819=>'AL', +64820=>'AL', +64821=>'AL', +64822=>'AL', +64823=>'AL', +64824=>'AL', +64825=>'AL', +64826=>'AL', +64827=>'AL', +64828=>'AL', +64829=>'AL', +64830=>'ON', +64831=>'ON', +64848=>'AL', +64849=>'AL', +64850=>'AL', +64851=>'AL', +64852=>'AL', +64853=>'AL', +64854=>'AL', +64855=>'AL', +64856=>'AL', +64857=>'AL', +64858=>'AL', +64859=>'AL', +64860=>'AL', +64861=>'AL', +64862=>'AL', +64863=>'AL', +64864=>'AL', +64865=>'AL', +64866=>'AL', +64867=>'AL', +64868=>'AL', +64869=>'AL', +64870=>'AL', +64871=>'AL', +64872=>'AL', +64873=>'AL', +64874=>'AL', +64875=>'AL', +64876=>'AL', +64877=>'AL', +64878=>'AL', +64879=>'AL', +64880=>'AL', +64881=>'AL', +64882=>'AL', +64883=>'AL', +64884=>'AL', +64885=>'AL', +64886=>'AL', +64887=>'AL', +64888=>'AL', +64889=>'AL', +64890=>'AL', +64891=>'AL', +64892=>'AL', +64893=>'AL', +64894=>'AL', +64895=>'AL', +64896=>'AL', +64897=>'AL', +64898=>'AL', +64899=>'AL', +64900=>'AL', +64901=>'AL', +64902=>'AL', +64903=>'AL', +64904=>'AL', +64905=>'AL', +64906=>'AL', +64907=>'AL', +64908=>'AL', +64909=>'AL', +64910=>'AL', +64911=>'AL', +64914=>'AL', +64915=>'AL', +64916=>'AL', +64917=>'AL', +64918=>'AL', +64919=>'AL', +64920=>'AL', +64921=>'AL', +64922=>'AL', +64923=>'AL', +64924=>'AL', +64925=>'AL', +64926=>'AL', +64927=>'AL', +64928=>'AL', +64929=>'AL', +64930=>'AL', +64931=>'AL', +64932=>'AL', +64933=>'AL', +64934=>'AL', +64935=>'AL', +64936=>'AL', +64937=>'AL', +64938=>'AL', +64939=>'AL', +64940=>'AL', +64941=>'AL', +64942=>'AL', +64943=>'AL', +64944=>'AL', +64945=>'AL', +64946=>'AL', +64947=>'AL', +64948=>'AL', +64949=>'AL', +64950=>'AL', +64951=>'AL', +64952=>'AL', +64953=>'AL', +64954=>'AL', +64955=>'AL', +64956=>'AL', +64957=>'AL', +64958=>'AL', +64959=>'AL', +64960=>'AL', +64961=>'AL', +64962=>'AL', +64963=>'AL', +64964=>'AL', +64965=>'AL', +64966=>'AL', +64967=>'AL', +65008=>'AL', +65009=>'AL', +65010=>'AL', +65011=>'AL', +65012=>'AL', +65013=>'AL', +65014=>'AL', +65015=>'AL', +65016=>'AL', +65017=>'AL', +65018=>'AL', +65019=>'AL', +65020=>'AL', +65021=>'ON', +65024=>'NSM', +65025=>'NSM', +65026=>'NSM', +65027=>'NSM', +65028=>'NSM', +65029=>'NSM', +65030=>'NSM', +65031=>'NSM', +65032=>'NSM', +65033=>'NSM', +65034=>'NSM', +65035=>'NSM', +65036=>'NSM', +65037=>'NSM', +65038=>'NSM', +65039=>'NSM', +65040=>'ON', +65041=>'ON', +65042=>'ON', +65043=>'ON', +65044=>'ON', +65045=>'ON', +65046=>'ON', +65047=>'ON', +65048=>'ON', +65049=>'ON', +65056=>'NSM', +65057=>'NSM', +65058=>'NSM', +65059=>'NSM', +65072=>'ON', +65073=>'ON', +65074=>'ON', +65075=>'ON', +65076=>'ON', +65077=>'ON', +65078=>'ON', +65079=>'ON', +65080=>'ON', +65081=>'ON', +65082=>'ON', +65083=>'ON', +65084=>'ON', +65085=>'ON', +65086=>'ON', +65087=>'ON', +65088=>'ON', +65089=>'ON', +65090=>'ON', +65091=>'ON', +65092=>'ON', +65093=>'ON', +65094=>'ON', +65095=>'ON', +65096=>'ON', +65097=>'ON', +65098=>'ON', +65099=>'ON', +65100=>'ON', +65101=>'ON', +65102=>'ON', +65103=>'ON', +65104=>'CS', +65105=>'ON', +65106=>'CS', +65108=>'ON', +65109=>'CS', +65110=>'ON', +65111=>'ON', +65112=>'ON', +65113=>'ON', +65114=>'ON', +65115=>'ON', +65116=>'ON', +65117=>'ON', +65118=>'ON', +65119=>'ET', +65120=>'ON', +65121=>'ON', +65122=>'ES', +65123=>'ES', +65124=>'ON', +65125=>'ON', +65126=>'ON', +65128=>'ON', +65129=>'ET', +65130=>'ET', +65131=>'ON', +65136=>'AL', +65137=>'AL', +65138=>'AL', +65139=>'AL', +65140=>'AL', +65142=>'AL', +65143=>'AL', +65144=>'AL', +65145=>'AL', +65146=>'AL', +65147=>'AL', +65148=>'AL', +65149=>'AL', +65150=>'AL', +65151=>'AL', +65152=>'AL', +65153=>'AL', +65154=>'AL', +65155=>'AL', +65156=>'AL', +65157=>'AL', +65158=>'AL', +65159=>'AL', +65160=>'AL', +65161=>'AL', +65162=>'AL', +65163=>'AL', +65164=>'AL', +65165=>'AL', +65166=>'AL', +65167=>'AL', +65168=>'AL', +65169=>'AL', +65170=>'AL', +65171=>'AL', +65172=>'AL', +65173=>'AL', +65174=>'AL', +65175=>'AL', +65176=>'AL', +65177=>'AL', +65178=>'AL', +65179=>'AL', +65180=>'AL', +65181=>'AL', +65182=>'AL', +65183=>'AL', +65184=>'AL', +65185=>'AL', +65186=>'AL', +65187=>'AL', +65188=>'AL', +65189=>'AL', +65190=>'AL', +65191=>'AL', +65192=>'AL', +65193=>'AL', +65194=>'AL', +65195=>'AL', +65196=>'AL', +65197=>'AL', +65198=>'AL', +65199=>'AL', +65200=>'AL', +65201=>'AL', +65202=>'AL', +65203=>'AL', +65204=>'AL', +65205=>'AL', +65206=>'AL', +65207=>'AL', +65208=>'AL', +65209=>'AL', +65210=>'AL', +65211=>'AL', +65212=>'AL', +65213=>'AL', +65214=>'AL', +65215=>'AL', +65216=>'AL', +65217=>'AL', +65218=>'AL', +65219=>'AL', +65220=>'AL', +65221=>'AL', +65222=>'AL', +65223=>'AL', +65224=>'AL', +65225=>'AL', +65226=>'AL', +65227=>'AL', +65228=>'AL', +65229=>'AL', +65230=>'AL', +65231=>'AL', +65232=>'AL', +65233=>'AL', +65234=>'AL', +65235=>'AL', +65236=>'AL', +65237=>'AL', +65238=>'AL', +65239=>'AL', +65240=>'AL', +65241=>'AL', +65242=>'AL', +65243=>'AL', +65244=>'AL', +65245=>'AL', +65246=>'AL', +65247=>'AL', +65248=>'AL', +65249=>'AL', +65250=>'AL', +65251=>'AL', +65252=>'AL', +65253=>'AL', +65254=>'AL', +65255=>'AL', +65256=>'AL', +65257=>'AL', +65258=>'AL', +65259=>'AL', +65260=>'AL', +65261=>'AL', +65262=>'AL', +65263=>'AL', +65264=>'AL', +65265=>'AL', +65266=>'AL', +65267=>'AL', +65268=>'AL', +65269=>'AL', +65270=>'AL', +65271=>'AL', +65272=>'AL', +65273=>'AL', +65274=>'AL', +65275=>'AL', +65276=>'AL', +65279=>'BN', +65281=>'ON', +65282=>'ON', +65283=>'ET', +65284=>'ET', +65285=>'ET', +65286=>'ON', +65287=>'ON', +65288=>'ON', +65289=>'ON', +65290=>'ON', +65291=>'ES', +65292=>'CS', +65293=>'ES', +65294=>'CS', +65295=>'CS', +65296=>'EN', +65297=>'EN', +65298=>'EN', +65299=>'EN', +65300=>'EN', +65301=>'EN', +65302=>'EN', +65303=>'EN', +65304=>'EN', +65305=>'EN', +65306=>'CS', +65307=>'ON', +65308=>'ON', +65309=>'ON', +65310=>'ON', +65311=>'ON', +65312=>'ON', +65313=>'L', +65314=>'L', +65315=>'L', +65316=>'L', +65317=>'L', +65318=>'L', +65319=>'L', +65320=>'L', +65321=>'L', +65322=>'L', +65323=>'L', +65324=>'L', +65325=>'L', +65326=>'L', +65327=>'L', +65328=>'L', +65329=>'L', +65330=>'L', +65331=>'L', +65332=>'L', +65333=>'L', +65334=>'L', +65335=>'L', +65336=>'L', +65337=>'L', +65338=>'L', +65339=>'ON', +65340=>'ON', +65341=>'ON', +65342=>'ON', +65343=>'ON', +65344=>'ON', +65345=>'L', +65346=>'L', +65347=>'L', +65348=>'L', +65349=>'L', +65350=>'L', +65351=>'L', +65352=>'L', +65353=>'L', +65354=>'L', +65355=>'L', +65356=>'L', +65357=>'L', +65358=>'L', +65359=>'L', +65360=>'L', +65361=>'L', +65362=>'L', +65363=>'L', +65364=>'L', +65365=>'L', +65366=>'L', +65367=>'L', +65368=>'L', +65369=>'L', +65370=>'L', +65371=>'ON', +65372=>'ON', +65373=>'ON', +65374=>'ON', +65375=>'ON', +65376=>'ON', +65377=>'ON', +65378=>'ON', +65379=>'ON', +65380=>'ON', +65381=>'ON', +65382=>'L', +65383=>'L', +65384=>'L', +65385=>'L', +65386=>'L', +65387=>'L', +65388=>'L', +65389=>'L', +65390=>'L', +65391=>'L', +65392=>'L', +65393=>'L', +65394=>'L', +65395=>'L', +65396=>'L', +65397=>'L', +65398=>'L', +65399=>'L', +65400=>'L', +65401=>'L', +65402=>'L', +65403=>'L', +65404=>'L', +65405=>'L', +65406=>'L', +65407=>'L', +65408=>'L', +65409=>'L', +65410=>'L', +65411=>'L', +65412=>'L', +65413=>'L', +65414=>'L', +65415=>'L', +65416=>'L', +65417=>'L', +65418=>'L', +65419=>'L', +65420=>'L', +65421=>'L', +65422=>'L', +65423=>'L', +65424=>'L', +65425=>'L', +65426=>'L', +65427=>'L', +65428=>'L', +65429=>'L', +65430=>'L', +65431=>'L', +65432=>'L', +65433=>'L', +65434=>'L', +65435=>'L', +65436=>'L', +65437=>'L', +65438=>'L', +65439=>'L', +65440=>'L', +65441=>'L', +65442=>'L', +65443=>'L', +65444=>'L', +65445=>'L', +65446=>'L', +65447=>'L', +65448=>'L', +65449=>'L', +65450=>'L', +65451=>'L', +65452=>'L', +65453=>'L', +65454=>'L', +65455=>'L', +65456=>'L', +65457=>'L', +65458=>'L', +65459=>'L', +65460=>'L', +65461=>'L', +65462=>'L', +65463=>'L', +65464=>'L', +65465=>'L', +65466=>'L', +65467=>'L', +65468=>'L', +65469=>'L', +65470=>'L', +65474=>'L', +65475=>'L', +65476=>'L', +65477=>'L', +65478=>'L', +65479=>'L', +65482=>'L', +65483=>'L', +65484=>'L', +65485=>'L', +65486=>'L', +65487=>'L', +65490=>'L', +65491=>'L', +65492=>'L', +65493=>'L', +65494=>'L', +65495=>'L', +65498=>'L', +65499=>'L', +65500=>'L', +65504=>'ET', +65505=>'ET', +65506=>'ON', +65507=>'ON', +65508=>'ON', +65509=>'ET', +65510=>'ET', +65512=>'ON', +65513=>'ON', +65514=>'ON', +65515=>'ON', +65516=>'ON', +65517=>'ON', +65518=>'ON', +65529=>'ON', +65530=>'ON', +65531=>'ON', +65532=>'ON', +65533=>'ON', +65536=>'L', +65537=>'L', +65538=>'L', +65539=>'L', +65540=>'L', +65541=>'L', +65542=>'L', +65543=>'L', +65544=>'L', +65545=>'L', +65546=>'L', +65547=>'L', +65549=>'L', +65550=>'L', +65551=>'L', +65552=>'L', +65553=>'L', +65554=>'L', +65555=>'L', +65556=>'L', +65557=>'L', +65558=>'L', +65559=>'L', +65560=>'L', +65561=>'L', +65562=>'L', +65563=>'L', +65564=>'L', +65565=>'L', +65566=>'L', +65567=>'L', +65568=>'L', +65569=>'L', +65570=>'L', +65571=>'L', +65572=>'L', +65573=>'L', +65574=>'L', +65576=>'L', +65577=>'L', +65578=>'L', +65579=>'L', +65580=>'L', +65581=>'L', +65582=>'L', +65583=>'L', +65584=>'L', +65585=>'L', +65586=>'L', +65587=>'L', +65588=>'L', +65589=>'L', +65590=>'L', +65591=>'L', +65592=>'L', +65593=>'L', +65594=>'L', +65596=>'L', +65597=>'L', +65599=>'L', +65600=>'L', +65601=>'L', +65602=>'L', +65603=>'L', +65604=>'L', +65605=>'L', +65606=>'L', +65607=>'L', +65608=>'L', +65609=>'L', +65610=>'L', +65611=>'L', +65612=>'L', +65613=>'L', +65616=>'L', +65617=>'L', +65618=>'L', +65619=>'L', +65620=>'L', +65621=>'L', +65622=>'L', +65623=>'L', +65624=>'L', +65625=>'L', +65626=>'L', +65627=>'L', +65628=>'L', +65629=>'L', +65664=>'L', +65665=>'L', +65666=>'L', +65667=>'L', +65668=>'L', +65669=>'L', +65670=>'L', +65671=>'L', +65672=>'L', +65673=>'L', +65674=>'L', +65675=>'L', +65676=>'L', +65677=>'L', +65678=>'L', +65679=>'L', +65680=>'L', +65681=>'L', +65682=>'L', +65683=>'L', +65684=>'L', +65685=>'L', +65686=>'L', +65687=>'L', +65688=>'L', +65689=>'L', +65690=>'L', +65691=>'L', +65692=>'L', +65693=>'L', +65694=>'L', +65695=>'L', +65696=>'L', +65697=>'L', +65698=>'L', +65699=>'L', +65700=>'L', +65701=>'L', +65702=>'L', +65703=>'L', +65704=>'L', +65705=>'L', +65706=>'L', +65707=>'L', +65708=>'L', +65709=>'L', +65710=>'L', +65711=>'L', +65712=>'L', +65713=>'L', +65714=>'L', +65715=>'L', +65716=>'L', +65717=>'L', +65718=>'L', +65719=>'L', +65720=>'L', +65721=>'L', +65722=>'L', +65723=>'L', +65724=>'L', +65725=>'L', +65726=>'L', +65727=>'L', +65728=>'L', +65729=>'L', +65730=>'L', +65731=>'L', +65732=>'L', +65733=>'L', +65734=>'L', +65735=>'L', +65736=>'L', +65737=>'L', +65738=>'L', +65739=>'L', +65740=>'L', +65741=>'L', +65742=>'L', +65743=>'L', +65744=>'L', +65745=>'L', +65746=>'L', +65747=>'L', +65748=>'L', +65749=>'L', +65750=>'L', +65751=>'L', +65752=>'L', +65753=>'L', +65754=>'L', +65755=>'L', +65756=>'L', +65757=>'L', +65758=>'L', +65759=>'L', +65760=>'L', +65761=>'L', +65762=>'L', +65763=>'L', +65764=>'L', +65765=>'L', +65766=>'L', +65767=>'L', +65768=>'L', +65769=>'L', +65770=>'L', +65771=>'L', +65772=>'L', +65773=>'L', +65774=>'L', +65775=>'L', +65776=>'L', +65777=>'L', +65778=>'L', +65779=>'L', +65780=>'L', +65781=>'L', +65782=>'L', +65783=>'L', +65784=>'L', +65785=>'L', +65786=>'L', +65792=>'L', +65793=>'ON', +65794=>'L', +65799=>'L', +65800=>'L', +65801=>'L', +65802=>'L', +65803=>'L', +65804=>'L', +65805=>'L', +65806=>'L', +65807=>'L', +65808=>'L', +65809=>'L', +65810=>'L', +65811=>'L', +65812=>'L', +65813=>'L', +65814=>'L', +65815=>'L', +65816=>'L', +65817=>'L', +65818=>'L', +65819=>'L', +65820=>'L', +65821=>'L', +65822=>'L', +65823=>'L', +65824=>'L', +65825=>'L', +65826=>'L', +65827=>'L', +65828=>'L', +65829=>'L', +65830=>'L', +65831=>'L', +65832=>'L', +65833=>'L', +65834=>'L', +65835=>'L', +65836=>'L', +65837=>'L', +65838=>'L', +65839=>'L', +65840=>'L', +65841=>'L', +65842=>'L', +65843=>'L', +65847=>'L', +65848=>'L', +65849=>'L', +65850=>'L', +65851=>'L', +65852=>'L', +65853=>'L', +65854=>'L', +65855=>'L', +65856=>'ON', +65857=>'ON', +65858=>'ON', +65859=>'ON', +65860=>'ON', +65861=>'ON', +65862=>'ON', +65863=>'ON', +65864=>'ON', +65865=>'ON', +65866=>'ON', +65867=>'ON', +65868=>'ON', +65869=>'ON', +65870=>'ON', +65871=>'ON', +65872=>'ON', +65873=>'ON', +65874=>'ON', +65875=>'ON', +65876=>'ON', +65877=>'ON', +65878=>'ON', +65879=>'ON', +65880=>'ON', +65881=>'ON', +65882=>'ON', +65883=>'ON', +65884=>'ON', +65885=>'ON', +65886=>'ON', +65887=>'ON', +65888=>'ON', +65889=>'ON', +65890=>'ON', +65891=>'ON', +65892=>'ON', +65893=>'ON', +65894=>'ON', +65895=>'ON', +65896=>'ON', +65897=>'ON', +65898=>'ON', +65899=>'ON', +65900=>'ON', +65901=>'ON', +65902=>'ON', +65903=>'ON', +65904=>'ON', +65905=>'ON', +65906=>'ON', +65907=>'ON', +65908=>'ON', +65909=>'ON', +65910=>'ON', +65911=>'ON', +65912=>'ON', +65913=>'ON', +65914=>'ON', +65915=>'ON', +65916=>'ON', +65917=>'ON', +65918=>'ON', +65919=>'ON', +65920=>'ON', +65921=>'ON', +65922=>'ON', +65923=>'ON', +65924=>'ON', +65925=>'ON', +65926=>'ON', +65927=>'ON', +65928=>'ON', +65929=>'ON', +65930=>'ON', +66304=>'L', +66305=>'L', +66306=>'L', +66307=>'L', +66308=>'L', +66309=>'L', +66310=>'L', +66311=>'L', +66312=>'L', +66313=>'L', +66314=>'L', +66315=>'L', +66316=>'L', +66317=>'L', +66318=>'L', +66319=>'L', +66320=>'L', +66321=>'L', +66322=>'L', +66323=>'L', +66324=>'L', +66325=>'L', +66326=>'L', +66327=>'L', +66328=>'L', +66329=>'L', +66330=>'L', +66331=>'L', +66332=>'L', +66333=>'L', +66334=>'L', +66336=>'L', +66337=>'L', +66338=>'L', +66339=>'L', +66352=>'L', +66353=>'L', +66354=>'L', +66355=>'L', +66356=>'L', +66357=>'L', +66358=>'L', +66359=>'L', +66360=>'L', +66361=>'L', +66362=>'L', +66363=>'L', +66364=>'L', +66365=>'L', +66366=>'L', +66367=>'L', +66368=>'L', +66369=>'L', +66370=>'L', +66371=>'L', +66372=>'L', +66373=>'L', +66374=>'L', +66375=>'L', +66376=>'L', +66377=>'L', +66378=>'L', +66432=>'L', +66433=>'L', +66434=>'L', +66435=>'L', +66436=>'L', +66437=>'L', +66438=>'L', +66439=>'L', +66440=>'L', +66441=>'L', +66442=>'L', +66443=>'L', +66444=>'L', +66445=>'L', +66446=>'L', +66447=>'L', +66448=>'L', +66449=>'L', +66450=>'L', +66451=>'L', +66452=>'L', +66453=>'L', +66454=>'L', +66455=>'L', +66456=>'L', +66457=>'L', +66458=>'L', +66459=>'L', +66460=>'L', +66461=>'L', +66463=>'L', +66464=>'L', +66465=>'L', +66466=>'L', +66467=>'L', +66468=>'L', +66469=>'L', +66470=>'L', +66471=>'L', +66472=>'L', +66473=>'L', +66474=>'L', +66475=>'L', +66476=>'L', +66477=>'L', +66478=>'L', +66479=>'L', +66480=>'L', +66481=>'L', +66482=>'L', +66483=>'L', +66484=>'L', +66485=>'L', +66486=>'L', +66487=>'L', +66488=>'L', +66489=>'L', +66490=>'L', +66491=>'L', +66492=>'L', +66493=>'L', +66494=>'L', +66495=>'L', +66496=>'L', +66497=>'L', +66498=>'L', +66499=>'L', +66504=>'L', +66505=>'L', +66506=>'L', +66507=>'L', +66508=>'L', +66509=>'L', +66510=>'L', +66511=>'L', +66512=>'L', +66513=>'L', +66514=>'L', +66515=>'L', +66516=>'L', +66517=>'L', +66560=>'L', +66561=>'L', +66562=>'L', +66563=>'L', +66564=>'L', +66565=>'L', +66566=>'L', +66567=>'L', +66568=>'L', +66569=>'L', +66570=>'L', +66571=>'L', +66572=>'L', +66573=>'L', +66574=>'L', +66575=>'L', +66576=>'L', +66577=>'L', +66578=>'L', +66579=>'L', +66580=>'L', +66581=>'L', +66582=>'L', +66583=>'L', +66584=>'L', +66585=>'L', +66586=>'L', +66587=>'L', +66588=>'L', +66589=>'L', +66590=>'L', +66591=>'L', +66592=>'L', +66593=>'L', +66594=>'L', +66595=>'L', +66596=>'L', +66597=>'L', +66598=>'L', +66599=>'L', +66600=>'L', +66601=>'L', +66602=>'L', +66603=>'L', +66604=>'L', +66605=>'L', +66606=>'L', +66607=>'L', +66608=>'L', +66609=>'L', +66610=>'L', +66611=>'L', +66612=>'L', +66613=>'L', +66614=>'L', +66615=>'L', +66616=>'L', +66617=>'L', +66618=>'L', +66619=>'L', +66620=>'L', +66621=>'L', +66622=>'L', +66623=>'L', +66624=>'L', +66625=>'L', +66626=>'L', +66627=>'L', +66628=>'L', +66629=>'L', +66630=>'L', +66631=>'L', +66632=>'L', +66633=>'L', +66634=>'L', +66635=>'L', +66636=>'L', +66637=>'L', +66638=>'L', +66639=>'L', +66640=>'L', +66641=>'L', +66642=>'L', +66643=>'L', +66644=>'L', +66645=>'L', +66646=>'L', +66647=>'L', +66648=>'L', +66649=>'L', +66650=>'L', +66651=>'L', +66652=>'L', +66653=>'L', +66654=>'L', +66655=>'L', +66656=>'L', +66657=>'L', +66658=>'L', +66659=>'L', +66660=>'L', +66661=>'L', +66662=>'L', +66663=>'L', +66664=>'L', +66665=>'L', +66666=>'L', +66667=>'L', +66668=>'L', +66669=>'L', +66670=>'L', +66671=>'L', +66672=>'L', +66673=>'L', +66674=>'L', +66675=>'L', +66676=>'L', +66677=>'L', +66678=>'L', +66679=>'L', +66680=>'L', +66681=>'L', +66682=>'L', +66683=>'L', +66684=>'L', +66685=>'L', +66686=>'L', +66687=>'L', +66688=>'L', +66689=>'L', +66690=>'L', +66691=>'L', +66692=>'L', +66693=>'L', +66694=>'L', +66695=>'L', +66696=>'L', +66697=>'L', +66698=>'L', +66699=>'L', +66700=>'L', +66701=>'L', +66702=>'L', +66703=>'L', +66704=>'L', +66705=>'L', +66706=>'L', +66707=>'L', +66708=>'L', +66709=>'L', +66710=>'L', +66711=>'L', +66712=>'L', +66713=>'L', +66714=>'L', +66715=>'L', +66716=>'L', +66717=>'L', +66720=>'L', +66721=>'L', +66722=>'L', +66723=>'L', +66724=>'L', +66725=>'L', +66726=>'L', +66727=>'L', +66728=>'L', +66729=>'L', +67584=>'R', +67585=>'R', +67586=>'R', +67587=>'R', +67588=>'R', +67589=>'R', +67592=>'R', +67594=>'R', +67595=>'R', +67596=>'R', +67597=>'R', +67598=>'R', +67599=>'R', +67600=>'R', +67601=>'R', +67602=>'R', +67603=>'R', +67604=>'R', +67605=>'R', +67606=>'R', +67607=>'R', +67608=>'R', +67609=>'R', +67610=>'R', +67611=>'R', +67612=>'R', +67613=>'R', +67614=>'R', +67615=>'R', +67616=>'R', +67617=>'R', +67618=>'R', +67619=>'R', +67620=>'R', +67621=>'R', +67622=>'R', +67623=>'R', +67624=>'R', +67625=>'R', +67626=>'R', +67627=>'R', +67628=>'R', +67629=>'R', +67630=>'R', +67631=>'R', +67632=>'R', +67633=>'R', +67634=>'R', +67635=>'R', +67636=>'R', +67637=>'R', +67639=>'R', +67640=>'R', +67644=>'R', +67647=>'R', +67840=>'R', +67841=>'R', +67842=>'R', +67843=>'R', +67844=>'R', +67845=>'R', +67846=>'R', +67847=>'R', +67848=>'R', +67849=>'R', +67850=>'R', +67851=>'R', +67852=>'R', +67853=>'R', +67854=>'R', +67855=>'R', +67856=>'R', +67857=>'R', +67858=>'R', +67859=>'R', +67860=>'R', +67861=>'R', +67862=>'R', +67863=>'R', +67864=>'R', +67865=>'R', +67871=>'ON', +68096=>'R', +68097=>'NSM', +68098=>'NSM', +68099=>'NSM', +68101=>'NSM', +68102=>'NSM', +68108=>'NSM', +68109=>'NSM', +68110=>'NSM', +68111=>'NSM', +68112=>'R', +68113=>'R', +68114=>'R', +68115=>'R', +68117=>'R', +68118=>'R', +68119=>'R', +68121=>'R', +68122=>'R', +68123=>'R', +68124=>'R', +68125=>'R', +68126=>'R', +68127=>'R', +68128=>'R', +68129=>'R', +68130=>'R', +68131=>'R', +68132=>'R', +68133=>'R', +68134=>'R', +68135=>'R', +68136=>'R', +68137=>'R', +68138=>'R', +68139=>'R', +68140=>'R', +68141=>'R', +68142=>'R', +68143=>'R', +68144=>'R', +68145=>'R', +68146=>'R', +68147=>'R', +68152=>'NSM', +68153=>'NSM', +68154=>'NSM', +68159=>'NSM', +68160=>'R', +68161=>'R', +68162=>'R', +68163=>'R', +68164=>'R', +68165=>'R', +68166=>'R', +68167=>'R', +68176=>'R', +68177=>'R', +68178=>'R', +68179=>'R', +68180=>'R', +68181=>'R', +68182=>'R', +68183=>'R', +68184=>'R', +73728=>'L', +73729=>'L', +73730=>'L', +73731=>'L', +73732=>'L', +73733=>'L', +73734=>'L', +73735=>'L', +73736=>'L', +73737=>'L', +73738=>'L', +73739=>'L', +73740=>'L', +73741=>'L', +73742=>'L', +73743=>'L', +73744=>'L', +73745=>'L', +73746=>'L', +73747=>'L', +73748=>'L', +73749=>'L', +73750=>'L', +73751=>'L', +73752=>'L', +73753=>'L', +73754=>'L', +73755=>'L', +73756=>'L', +73757=>'L', +73758=>'L', +73759=>'L', +73760=>'L', +73761=>'L', +73762=>'L', +73763=>'L', +73764=>'L', +73765=>'L', +73766=>'L', +73767=>'L', +73768=>'L', +73769=>'L', +73770=>'L', +73771=>'L', +73772=>'L', +73773=>'L', +73774=>'L', +73775=>'L', +73776=>'L', +73777=>'L', +73778=>'L', +73779=>'L', +73780=>'L', +73781=>'L', +73782=>'L', +73783=>'L', +73784=>'L', +73785=>'L', +73786=>'L', +73787=>'L', +73788=>'L', +73789=>'L', +73790=>'L', +73791=>'L', +73792=>'L', +73793=>'L', +73794=>'L', +73795=>'L', +73796=>'L', +73797=>'L', +73798=>'L', +73799=>'L', +73800=>'L', +73801=>'L', +73802=>'L', +73803=>'L', +73804=>'L', +73805=>'L', +73806=>'L', +73807=>'L', +73808=>'L', +73809=>'L', +73810=>'L', +73811=>'L', +73812=>'L', +73813=>'L', +73814=>'L', +73815=>'L', +73816=>'L', +73817=>'L', +73818=>'L', +73819=>'L', +73820=>'L', +73821=>'L', +73822=>'L', +73823=>'L', +73824=>'L', +73825=>'L', +73826=>'L', +73827=>'L', +73828=>'L', +73829=>'L', +73830=>'L', +73831=>'L', +73832=>'L', +73833=>'L', +73834=>'L', +73835=>'L', +73836=>'L', +73837=>'L', +73838=>'L', +73839=>'L', +73840=>'L', +73841=>'L', +73842=>'L', +73843=>'L', +73844=>'L', +73845=>'L', +73846=>'L', +73847=>'L', +73848=>'L', +73849=>'L', +73850=>'L', +73851=>'L', +73852=>'L', +73853=>'L', +73854=>'L', +73855=>'L', +73856=>'L', +73857=>'L', +73858=>'L', +73859=>'L', +73860=>'L', +73861=>'L', +73862=>'L', +73863=>'L', +73864=>'L', +73865=>'L', +73866=>'L', +73867=>'L', +73868=>'L', +73869=>'L', +73870=>'L', +73871=>'L', +73872=>'L', +73873=>'L', +73874=>'L', +73875=>'L', +73876=>'L', +73877=>'L', +73878=>'L', +73879=>'L', +73880=>'L', +73881=>'L', +73882=>'L', +73883=>'L', +73884=>'L', +73885=>'L', +73886=>'L', +73887=>'L', +73888=>'L', +73889=>'L', +73890=>'L', +73891=>'L', +73892=>'L', +73893=>'L', +73894=>'L', +73895=>'L', +73896=>'L', +73897=>'L', +73898=>'L', +73899=>'L', +73900=>'L', +73901=>'L', +73902=>'L', +73903=>'L', +73904=>'L', +73905=>'L', +73906=>'L', +73907=>'L', +73908=>'L', +73909=>'L', +73910=>'L', +73911=>'L', +73912=>'L', +73913=>'L', +73914=>'L', +73915=>'L', +73916=>'L', +73917=>'L', +73918=>'L', +73919=>'L', +73920=>'L', +73921=>'L', +73922=>'L', +73923=>'L', +73924=>'L', +73925=>'L', +73926=>'L', +73927=>'L', +73928=>'L', +73929=>'L', +73930=>'L', +73931=>'L', +73932=>'L', +73933=>'L', +73934=>'L', +73935=>'L', +73936=>'L', +73937=>'L', +73938=>'L', +73939=>'L', +73940=>'L', +73941=>'L', +73942=>'L', +73943=>'L', +73944=>'L', +73945=>'L', +73946=>'L', +73947=>'L', +73948=>'L', +73949=>'L', +73950=>'L', +73951=>'L', +73952=>'L', +73953=>'L', +73954=>'L', +73955=>'L', +73956=>'L', +73957=>'L', +73958=>'L', +73959=>'L', +73960=>'L', +73961=>'L', +73962=>'L', +73963=>'L', +73964=>'L', +73965=>'L', +73966=>'L', +73967=>'L', +73968=>'L', +73969=>'L', +73970=>'L', +73971=>'L', +73972=>'L', +73973=>'L', +73974=>'L', +73975=>'L', +73976=>'L', +73977=>'L', +73978=>'L', +73979=>'L', +73980=>'L', +73981=>'L', +73982=>'L', +73983=>'L', +73984=>'L', +73985=>'L', +73986=>'L', +73987=>'L', +73988=>'L', +73989=>'L', +73990=>'L', +73991=>'L', +73992=>'L', +73993=>'L', +73994=>'L', +73995=>'L', +73996=>'L', +73997=>'L', +73998=>'L', +73999=>'L', +74000=>'L', +74001=>'L', +74002=>'L', +74003=>'L', +74004=>'L', +74005=>'L', +74006=>'L', +74007=>'L', +74008=>'L', +74009=>'L', +74010=>'L', +74011=>'L', +74012=>'L', +74013=>'L', +74014=>'L', +74015=>'L', +74016=>'L', +74017=>'L', +74018=>'L', +74019=>'L', +74020=>'L', +74021=>'L', +74022=>'L', +74023=>'L', +74024=>'L', +74025=>'L', +74026=>'L', +74027=>'L', +74028=>'L', +74029=>'L', +74030=>'L', +74031=>'L', +74032=>'L', +74033=>'L', +74034=>'L', +74035=>'L', +74036=>'L', +74037=>'L', +74038=>'L', +74039=>'L', +74040=>'L', +74041=>'L', +74042=>'L', +74043=>'L', +74044=>'L', +74045=>'L', +74046=>'L', +74047=>'L', +74048=>'L', +74049=>'L', +74050=>'L', +74051=>'L', +74052=>'L', +74053=>'L', +74054=>'L', +74055=>'L', +74056=>'L', +74057=>'L', +74058=>'L', +74059=>'L', +74060=>'L', +74061=>'L', +74062=>'L', +74063=>'L', +74064=>'L', +74065=>'L', +74066=>'L', +74067=>'L', +74068=>'L', +74069=>'L', +74070=>'L', +74071=>'L', +74072=>'L', +74073=>'L', +74074=>'L', +74075=>'L', +74076=>'L', +74077=>'L', +74078=>'L', +74079=>'L', +74080=>'L', +74081=>'L', +74082=>'L', +74083=>'L', +74084=>'L', +74085=>'L', +74086=>'L', +74087=>'L', +74088=>'L', +74089=>'L', +74090=>'L', +74091=>'L', +74092=>'L', +74093=>'L', +74094=>'L', +74095=>'L', +74096=>'L', +74097=>'L', +74098=>'L', +74099=>'L', +74100=>'L', +74101=>'L', +74102=>'L', +74103=>'L', +74104=>'L', +74105=>'L', +74106=>'L', +74107=>'L', +74108=>'L', +74109=>'L', +74110=>'L', +74111=>'L', +74112=>'L', +74113=>'L', +74114=>'L', +74115=>'L', +74116=>'L', +74117=>'L', +74118=>'L', +74119=>'L', +74120=>'L', +74121=>'L', +74122=>'L', +74123=>'L', +74124=>'L', +74125=>'L', +74126=>'L', +74127=>'L', +74128=>'L', +74129=>'L', +74130=>'L', +74131=>'L', +74132=>'L', +74133=>'L', +74134=>'L', +74135=>'L', +74136=>'L', +74137=>'L', +74138=>'L', +74139=>'L', +74140=>'L', +74141=>'L', +74142=>'L', +74143=>'L', +74144=>'L', +74145=>'L', +74146=>'L', +74147=>'L', +74148=>'L', +74149=>'L', +74150=>'L', +74151=>'L', +74152=>'L', +74153=>'L', +74154=>'L', +74155=>'L', +74156=>'L', +74157=>'L', +74158=>'L', +74159=>'L', +74160=>'L', +74161=>'L', +74162=>'L', +74163=>'L', +74164=>'L', +74165=>'L', +74166=>'L', +74167=>'L', +74168=>'L', +74169=>'L', +74170=>'L', +74171=>'L', +74172=>'L', +74173=>'L', +74174=>'L', +74175=>'L', +74176=>'L', +74177=>'L', +74178=>'L', +74179=>'L', +74180=>'L', +74181=>'L', +74182=>'L', +74183=>'L', +74184=>'L', +74185=>'L', +74186=>'L', +74187=>'L', +74188=>'L', +74189=>'L', +74190=>'L', +74191=>'L', +74192=>'L', +74193=>'L', +74194=>'L', +74195=>'L', +74196=>'L', +74197=>'L', +74198=>'L', +74199=>'L', +74200=>'L', +74201=>'L', +74202=>'L', +74203=>'L', +74204=>'L', +74205=>'L', +74206=>'L', +74207=>'L', +74208=>'L', +74209=>'L', +74210=>'L', +74211=>'L', +74212=>'L', +74213=>'L', +74214=>'L', +74215=>'L', +74216=>'L', +74217=>'L', +74218=>'L', +74219=>'L', +74220=>'L', +74221=>'L', +74222=>'L', +74223=>'L', +74224=>'L', +74225=>'L', +74226=>'L', +74227=>'L', +74228=>'L', +74229=>'L', +74230=>'L', +74231=>'L', +74232=>'L', +74233=>'L', +74234=>'L', +74235=>'L', +74236=>'L', +74237=>'L', +74238=>'L', +74239=>'L', +74240=>'L', +74241=>'L', +74242=>'L', +74243=>'L', +74244=>'L', +74245=>'L', +74246=>'L', +74247=>'L', +74248=>'L', +74249=>'L', +74250=>'L', +74251=>'L', +74252=>'L', +74253=>'L', +74254=>'L', +74255=>'L', +74256=>'L', +74257=>'L', +74258=>'L', +74259=>'L', +74260=>'L', +74261=>'L', +74262=>'L', +74263=>'L', +74264=>'L', +74265=>'L', +74266=>'L', +74267=>'L', +74268=>'L', +74269=>'L', +74270=>'L', +74271=>'L', +74272=>'L', +74273=>'L', +74274=>'L', +74275=>'L', +74276=>'L', +74277=>'L', +74278=>'L', +74279=>'L', +74280=>'L', +74281=>'L', +74282=>'L', +74283=>'L', +74284=>'L', +74285=>'L', +74286=>'L', +74287=>'L', +74288=>'L', +74289=>'L', +74290=>'L', +74291=>'L', +74292=>'L', +74293=>'L', +74294=>'L', +74295=>'L', +74296=>'L', +74297=>'L', +74298=>'L', +74299=>'L', +74300=>'L', +74301=>'L', +74302=>'L', +74303=>'L', +74304=>'L', +74305=>'L', +74306=>'L', +74307=>'L', +74308=>'L', +74309=>'L', +74310=>'L', +74311=>'L', +74312=>'L', +74313=>'L', +74314=>'L', +74315=>'L', +74316=>'L', +74317=>'L', +74318=>'L', +74319=>'L', +74320=>'L', +74321=>'L', +74322=>'L', +74323=>'L', +74324=>'L', +74325=>'L', +74326=>'L', +74327=>'L', +74328=>'L', +74329=>'L', +74330=>'L', +74331=>'L', +74332=>'L', +74333=>'L', +74334=>'L', +74335=>'L', +74336=>'L', +74337=>'L', +74338=>'L', +74339=>'L', +74340=>'L', +74341=>'L', +74342=>'L', +74343=>'L', +74344=>'L', +74345=>'L', +74346=>'L', +74347=>'L', +74348=>'L', +74349=>'L', +74350=>'L', +74351=>'L', +74352=>'L', +74353=>'L', +74354=>'L', +74355=>'L', +74356=>'L', +74357=>'L', +74358=>'L', +74359=>'L', +74360=>'L', +74361=>'L', +74362=>'L', +74363=>'L', +74364=>'L', +74365=>'L', +74366=>'L', +74367=>'L', +74368=>'L', +74369=>'L', +74370=>'L', +74371=>'L', +74372=>'L', +74373=>'L', +74374=>'L', +74375=>'L', +74376=>'L', +74377=>'L', +74378=>'L', +74379=>'L', +74380=>'L', +74381=>'L', +74382=>'L', +74383=>'L', +74384=>'L', +74385=>'L', +74386=>'L', +74387=>'L', +74388=>'L', +74389=>'L', +74390=>'L', +74391=>'L', +74392=>'L', +74393=>'L', +74394=>'L', +74395=>'L', +74396=>'L', +74397=>'L', +74398=>'L', +74399=>'L', +74400=>'L', +74401=>'L', +74402=>'L', +74403=>'L', +74404=>'L', +74405=>'L', +74406=>'L', +74407=>'L', +74408=>'L', +74409=>'L', +74410=>'L', +74411=>'L', +74412=>'L', +74413=>'L', +74414=>'L', +74415=>'L', +74416=>'L', +74417=>'L', +74418=>'L', +74419=>'L', +74420=>'L', +74421=>'L', +74422=>'L', +74423=>'L', +74424=>'L', +74425=>'L', +74426=>'L', +74427=>'L', +74428=>'L', +74429=>'L', +74430=>'L', +74431=>'L', +74432=>'L', +74433=>'L', +74434=>'L', +74435=>'L', +74436=>'L', +74437=>'L', +74438=>'L', +74439=>'L', +74440=>'L', +74441=>'L', +74442=>'L', +74443=>'L', +74444=>'L', +74445=>'L', +74446=>'L', +74447=>'L', +74448=>'L', +74449=>'L', +74450=>'L', +74451=>'L', +74452=>'L', +74453=>'L', +74454=>'L', +74455=>'L', +74456=>'L', +74457=>'L', +74458=>'L', +74459=>'L', +74460=>'L', +74461=>'L', +74462=>'L', +74463=>'L', +74464=>'L', +74465=>'L', +74466=>'L', +74467=>'L', +74468=>'L', +74469=>'L', +74470=>'L', +74471=>'L', +74472=>'L', +74473=>'L', +74474=>'L', +74475=>'L', +74476=>'L', +74477=>'L', +74478=>'L', +74479=>'L', +74480=>'L', +74481=>'L', +74482=>'L', +74483=>'L', +74484=>'L', +74485=>'L', +74486=>'L', +74487=>'L', +74488=>'L', +74489=>'L', +74490=>'L', +74491=>'L', +74492=>'L', +74493=>'L', +74494=>'L', +74495=>'L', +74496=>'L', +74497=>'L', +74498=>'L', +74499=>'L', +74500=>'L', +74501=>'L', +74502=>'L', +74503=>'L', +74504=>'L', +74505=>'L', +74506=>'L', +74507=>'L', +74508=>'L', +74509=>'L', +74510=>'L', +74511=>'L', +74512=>'L', +74513=>'L', +74514=>'L', +74515=>'L', +74516=>'L', +74517=>'L', +74518=>'L', +74519=>'L', +74520=>'L', +74521=>'L', +74522=>'L', +74523=>'L', +74524=>'L', +74525=>'L', +74526=>'L', +74527=>'L', +74528=>'L', +74529=>'L', +74530=>'L', +74531=>'L', +74532=>'L', +74533=>'L', +74534=>'L', +74535=>'L', +74536=>'L', +74537=>'L', +74538=>'L', +74539=>'L', +74540=>'L', +74541=>'L', +74542=>'L', +74543=>'L', +74544=>'L', +74545=>'L', +74546=>'L', +74547=>'L', +74548=>'L', +74549=>'L', +74550=>'L', +74551=>'L', +74552=>'L', +74553=>'L', +74554=>'L', +74555=>'L', +74556=>'L', +74557=>'L', +74558=>'L', +74559=>'L', +74560=>'L', +74561=>'L', +74562=>'L', +74563=>'L', +74564=>'L', +74565=>'L', +74566=>'L', +74567=>'L', +74568=>'L', +74569=>'L', +74570=>'L', +74571=>'L', +74572=>'L', +74573=>'L', +74574=>'L', +74575=>'L', +74576=>'L', +74577=>'L', +74578=>'L', +74579=>'L', +74580=>'L', +74581=>'L', +74582=>'L', +74583=>'L', +74584=>'L', +74585=>'L', +74586=>'L', +74587=>'L', +74588=>'L', +74589=>'L', +74590=>'L', +74591=>'L', +74592=>'L', +74593=>'L', +74594=>'L', +74595=>'L', +74596=>'L', +74597=>'L', +74598=>'L', +74599=>'L', +74600=>'L', +74601=>'L', +74602=>'L', +74603=>'L', +74604=>'L', +74605=>'L', +74606=>'L', +74752=>'L', +74753=>'L', +74754=>'L', +74755=>'L', +74756=>'L', +74757=>'L', +74758=>'L', +74759=>'L', +74760=>'L', +74761=>'L', +74762=>'L', +74763=>'L', +74764=>'L', +74765=>'L', +74766=>'L', +74767=>'L', +74768=>'L', +74769=>'L', +74770=>'L', +74771=>'L', +74772=>'L', +74773=>'L', +74774=>'L', +74775=>'L', +74776=>'L', +74777=>'L', +74778=>'L', +74779=>'L', +74780=>'L', +74781=>'L', +74782=>'L', +74783=>'L', +74784=>'L', +74785=>'L', +74786=>'L', +74787=>'L', +74788=>'L', +74789=>'L', +74790=>'L', +74791=>'L', +74792=>'L', +74793=>'L', +74794=>'L', +74795=>'L', +74796=>'L', +74797=>'L', +74798=>'L', +74799=>'L', +74800=>'L', +74801=>'L', +74802=>'L', +74803=>'L', +74804=>'L', +74805=>'L', +74806=>'L', +74807=>'L', +74808=>'L', +74809=>'L', +74810=>'L', +74811=>'L', +74812=>'L', +74813=>'L', +74814=>'L', +74815=>'L', +74816=>'L', +74817=>'L', +74818=>'L', +74819=>'L', +74820=>'L', +74821=>'L', +74822=>'L', +74823=>'L', +74824=>'L', +74825=>'L', +74826=>'L', +74827=>'L', +74828=>'L', +74829=>'L', +74830=>'L', +74831=>'L', +74832=>'L', +74833=>'L', +74834=>'L', +74835=>'L', +74836=>'L', +74837=>'L', +74838=>'L', +74839=>'L', +74840=>'L', +74841=>'L', +74842=>'L', +74843=>'L', +74844=>'L', +74845=>'L', +74846=>'L', +74847=>'L', +74848=>'L', +74849=>'L', +74850=>'L', +74864=>'L', +74865=>'L', +74866=>'L', +74867=>'L', +118784=>'L', +118785=>'L', +118786=>'L', +118787=>'L', +118788=>'L', +118789=>'L', +118790=>'L', +118791=>'L', +118792=>'L', +118793=>'L', +118794=>'L', +118795=>'L', +118796=>'L', +118797=>'L', +118798=>'L', +118799=>'L', +118800=>'L', +118801=>'L', +118802=>'L', +118803=>'L', +118804=>'L', +118805=>'L', +118806=>'L', +118807=>'L', +118808=>'L', +118809=>'L', +118810=>'L', +118811=>'L', +118812=>'L', +118813=>'L', +118814=>'L', +118815=>'L', +118816=>'L', +118817=>'L', +118818=>'L', +118819=>'L', +118820=>'L', +118821=>'L', +118822=>'L', +118823=>'L', +118824=>'L', +118825=>'L', +118826=>'L', +118827=>'L', +118828=>'L', +118829=>'L', +118830=>'L', +118831=>'L', +118832=>'L', +118833=>'L', +118834=>'L', +118835=>'L', +118836=>'L', +118837=>'L', +118838=>'L', +118839=>'L', +118840=>'L', +118841=>'L', +118842=>'L', +118843=>'L', +118844=>'L', +118845=>'L', +118846=>'L', +118847=>'L', +118848=>'L', +118849=>'L', +118850=>'L', +118851=>'L', +118852=>'L', +118853=>'L', +118854=>'L', +118855=>'L', +118856=>'L', +118857=>'L', +118858=>'L', +118859=>'L', +118860=>'L', +118861=>'L', +118862=>'L', +118863=>'L', +118864=>'L', +118865=>'L', +118866=>'L', +118867=>'L', +118868=>'L', +118869=>'L', +118870=>'L', +118871=>'L', +118872=>'L', +118873=>'L', +118874=>'L', +118875=>'L', +118876=>'L', +118877=>'L', +118878=>'L', +118879=>'L', +118880=>'L', +118881=>'L', +118882=>'L', +118883=>'L', +118884=>'L', +118885=>'L', +118886=>'L', +118887=>'L', +118888=>'L', +118889=>'L', +118890=>'L', +118891=>'L', +118892=>'L', +118893=>'L', +118894=>'L', +118895=>'L', +118896=>'L', +118897=>'L', +118898=>'L', +118899=>'L', +118900=>'L', +118901=>'L', +118902=>'L', +118903=>'L', +118904=>'L', +118905=>'L', +118906=>'L', +118907=>'L', +118908=>'L', +118909=>'L', +118910=>'L', +118911=>'L', +118912=>'L', +118913=>'L', +118914=>'L', +118915=>'L', +118916=>'L', +118917=>'L', +118918=>'L', +118919=>'L', +118920=>'L', +118921=>'L', +118922=>'L', +118923=>'L', +118924=>'L', +118925=>'L', +118926=>'L', +118927=>'L', +118928=>'L', +118929=>'L', +118930=>'L', +118931=>'L', +118932=>'L', +118933=>'L', +118934=>'L', +118935=>'L', +118936=>'L', +118937=>'L', +118938=>'L', +118939=>'L', +118940=>'L', +118941=>'L', +118942=>'L', +118943=>'L', +118944=>'L', +118945=>'L', +118946=>'L', +118947=>'L', +118948=>'L', +118949=>'L', +118950=>'L', +118951=>'L', +118952=>'L', +118953=>'L', +118954=>'L', +118955=>'L', +118956=>'L', +118957=>'L', +118958=>'L', +118959=>'L', +118960=>'L', +118961=>'L', +118962=>'L', +118963=>'L', +118964=>'L', +118965=>'L', +118966=>'L', +118967=>'L', +118968=>'L', +118969=>'L', +118970=>'L', +118971=>'L', +118972=>'L', +118973=>'L', +118974=>'L', +118975=>'L', +118976=>'L', +118977=>'L', +118978=>'L', +118979=>'L', +118980=>'L', +118981=>'L', +118982=>'L', +118983=>'L', +118984=>'L', +118985=>'L', +118986=>'L', +118987=>'L', +118988=>'L', +118989=>'L', +118990=>'L', +118991=>'L', +118992=>'L', +118993=>'L', +118994=>'L', +118995=>'L', +118996=>'L', +118997=>'L', +118998=>'L', +118999=>'L', +119000=>'L', +119001=>'L', +119002=>'L', +119003=>'L', +119004=>'L', +119005=>'L', +119006=>'L', +119007=>'L', +119008=>'L', +119009=>'L', +119010=>'L', +119011=>'L', +119012=>'L', +119013=>'L', +119014=>'L', +119015=>'L', +119016=>'L', +119017=>'L', +119018=>'L', +119019=>'L', +119020=>'L', +119021=>'L', +119022=>'L', +119023=>'L', +119024=>'L', +119025=>'L', +119026=>'L', +119027=>'L', +119028=>'L', +119029=>'L', +119040=>'L', +119041=>'L', +119042=>'L', +119043=>'L', +119044=>'L', +119045=>'L', +119046=>'L', +119047=>'L', +119048=>'L', +119049=>'L', +119050=>'L', +119051=>'L', +119052=>'L', +119053=>'L', +119054=>'L', +119055=>'L', +119056=>'L', +119057=>'L', +119058=>'L', +119059=>'L', +119060=>'L', +119061=>'L', +119062=>'L', +119063=>'L', +119064=>'L', +119065=>'L', +119066=>'L', +119067=>'L', +119068=>'L', +119069=>'L', +119070=>'L', +119071=>'L', +119072=>'L', +119073=>'L', +119074=>'L', +119075=>'L', +119076=>'L', +119077=>'L', +119078=>'L', +119082=>'L', +119083=>'L', +119084=>'L', +119085=>'L', +119086=>'L', +119087=>'L', +119088=>'L', +119089=>'L', +119090=>'L', +119091=>'L', +119092=>'L', +119093=>'L', +119094=>'L', +119095=>'L', +119096=>'L', +119097=>'L', +119098=>'L', +119099=>'L', +119100=>'L', +119101=>'L', +119102=>'L', +119103=>'L', +119104=>'L', +119105=>'L', +119106=>'L', +119107=>'L', +119108=>'L', +119109=>'L', +119110=>'L', +119111=>'L', +119112=>'L', +119113=>'L', +119114=>'L', +119115=>'L', +119116=>'L', +119117=>'L', +119118=>'L', +119119=>'L', +119120=>'L', +119121=>'L', +119122=>'L', +119123=>'L', +119124=>'L', +119125=>'L', +119126=>'L', +119127=>'L', +119128=>'L', +119129=>'L', +119130=>'L', +119131=>'L', +119132=>'L', +119133=>'L', +119134=>'L', +119135=>'L', +119136=>'L', +119137=>'L', +119138=>'L', +119139=>'L', +119140=>'L', +119141=>'L', +119142=>'L', +119143=>'NSM', +119144=>'NSM', +119145=>'NSM', +119146=>'L', +119147=>'L', +119148=>'L', +119149=>'L', +119150=>'L', +119151=>'L', +119152=>'L', +119153=>'L', +119154=>'L', +119155=>'BN', +119156=>'BN', +119157=>'BN', +119158=>'BN', +119159=>'BN', +119160=>'BN', +119161=>'BN', +119162=>'BN', +119163=>'NSM', +119164=>'NSM', +119165=>'NSM', +119166=>'NSM', +119167=>'NSM', +119168=>'NSM', +119169=>'NSM', +119170=>'NSM', +119171=>'L', +119172=>'L', +119173=>'NSM', +119174=>'NSM', +119175=>'NSM', +119176=>'NSM', +119177=>'NSM', +119178=>'NSM', +119179=>'NSM', +119180=>'L', +119181=>'L', +119182=>'L', +119183=>'L', +119184=>'L', +119185=>'L', +119186=>'L', +119187=>'L', +119188=>'L', +119189=>'L', +119190=>'L', +119191=>'L', +119192=>'L', +119193=>'L', +119194=>'L', +119195=>'L', +119196=>'L', +119197=>'L', +119198=>'L', +119199=>'L', +119200=>'L', +119201=>'L', +119202=>'L', +119203=>'L', +119204=>'L', +119205=>'L', +119206=>'L', +119207=>'L', +119208=>'L', +119209=>'L', +119210=>'NSM', +119211=>'NSM', +119212=>'NSM', +119213=>'NSM', +119214=>'L', +119215=>'L', +119216=>'L', +119217=>'L', +119218=>'L', +119219=>'L', +119220=>'L', +119221=>'L', +119222=>'L', +119223=>'L', +119224=>'L', +119225=>'L', +119226=>'L', +119227=>'L', +119228=>'L', +119229=>'L', +119230=>'L', +119231=>'L', +119232=>'L', +119233=>'L', +119234=>'L', +119235=>'L', +119236=>'L', +119237=>'L', +119238=>'L', +119239=>'L', +119240=>'L', +119241=>'L', +119242=>'L', +119243=>'L', +119244=>'L', +119245=>'L', +119246=>'L', +119247=>'L', +119248=>'L', +119249=>'L', +119250=>'L', +119251=>'L', +119252=>'L', +119253=>'L', +119254=>'L', +119255=>'L', +119256=>'L', +119257=>'L', +119258=>'L', +119259=>'L', +119260=>'L', +119261=>'L', +119296=>'ON', +119297=>'ON', +119298=>'ON', +119299=>'ON', +119300=>'ON', +119301=>'ON', +119302=>'ON', +119303=>'ON', +119304=>'ON', +119305=>'ON', +119306=>'ON', +119307=>'ON', +119308=>'ON', +119309=>'ON', +119310=>'ON', +119311=>'ON', +119312=>'ON', +119313=>'ON', +119314=>'ON', +119315=>'ON', +119316=>'ON', +119317=>'ON', +119318=>'ON', +119319=>'ON', +119320=>'ON', +119321=>'ON', +119322=>'ON', +119323=>'ON', +119324=>'ON', +119325=>'ON', +119326=>'ON', +119327=>'ON', +119328=>'ON', +119329=>'ON', +119330=>'ON', +119331=>'ON', +119332=>'ON', +119333=>'ON', +119334=>'ON', +119335=>'ON', +119336=>'ON', +119337=>'ON', +119338=>'ON', +119339=>'ON', +119340=>'ON', +119341=>'ON', +119342=>'ON', +119343=>'ON', +119344=>'ON', +119345=>'ON', +119346=>'ON', +119347=>'ON', +119348=>'ON', +119349=>'ON', +119350=>'ON', +119351=>'ON', +119352=>'ON', +119353=>'ON', +119354=>'ON', +119355=>'ON', +119356=>'ON', +119357=>'ON', +119358=>'ON', +119359=>'ON', +119360=>'ON', +119361=>'ON', +119362=>'NSM', +119363=>'NSM', +119364=>'NSM', +119365=>'ON', +119552=>'ON', +119553=>'ON', +119554=>'ON', +119555=>'ON', +119556=>'ON', +119557=>'ON', +119558=>'ON', +119559=>'ON', +119560=>'ON', +119561=>'ON', +119562=>'ON', +119563=>'ON', +119564=>'ON', +119565=>'ON', +119566=>'ON', +119567=>'ON', +119568=>'ON', +119569=>'ON', +119570=>'ON', +119571=>'ON', +119572=>'ON', +119573=>'ON', +119574=>'ON', +119575=>'ON', +119576=>'ON', +119577=>'ON', +119578=>'ON', +119579=>'ON', +119580=>'ON', +119581=>'ON', +119582=>'ON', +119583=>'ON', +119584=>'ON', +119585=>'ON', +119586=>'ON', +119587=>'ON', +119588=>'ON', +119589=>'ON', +119590=>'ON', +119591=>'ON', +119592=>'ON', +119593=>'ON', +119594=>'ON', +119595=>'ON', +119596=>'ON', +119597=>'ON', +119598=>'ON', +119599=>'ON', +119600=>'ON', +119601=>'ON', +119602=>'ON', +119603=>'ON', +119604=>'ON', +119605=>'ON', +119606=>'ON', +119607=>'ON', +119608=>'ON', +119609=>'ON', +119610=>'ON', +119611=>'ON', +119612=>'ON', +119613=>'ON', +119614=>'ON', +119615=>'ON', +119616=>'ON', +119617=>'ON', +119618=>'ON', +119619=>'ON', +119620=>'ON', +119621=>'ON', +119622=>'ON', +119623=>'ON', +119624=>'ON', +119625=>'ON', +119626=>'ON', +119627=>'ON', +119628=>'ON', +119629=>'ON', +119630=>'ON', +119631=>'ON', +119632=>'ON', +119633=>'ON', +119634=>'ON', +119635=>'ON', +119636=>'ON', +119637=>'ON', +119638=>'ON', +119648=>'L', +119649=>'L', +119650=>'L', +119651=>'L', +119652=>'L', +119653=>'L', +119654=>'L', +119655=>'L', +119656=>'L', +119657=>'L', +119658=>'L', +119659=>'L', +119660=>'L', +119661=>'L', +119662=>'L', +119663=>'L', +119664=>'L', +119665=>'L', +119808=>'L', +119809=>'L', +119810=>'L', +119811=>'L', +119812=>'L', +119813=>'L', +119814=>'L', +119815=>'L', +119816=>'L', +119817=>'L', +119818=>'L', +119819=>'L', +119820=>'L', +119821=>'L', +119822=>'L', +119823=>'L', +119824=>'L', +119825=>'L', +119826=>'L', +119827=>'L', +119828=>'L', +119829=>'L', +119830=>'L', +119831=>'L', +119832=>'L', +119833=>'L', +119834=>'L', +119835=>'L', +119836=>'L', +119837=>'L', +119838=>'L', +119839=>'L', +119840=>'L', +119841=>'L', +119842=>'L', +119843=>'L', +119844=>'L', +119845=>'L', +119846=>'L', +119847=>'L', +119848=>'L', +119849=>'L', +119850=>'L', +119851=>'L', +119852=>'L', +119853=>'L', +119854=>'L', +119855=>'L', +119856=>'L', +119857=>'L', +119858=>'L', +119859=>'L', +119860=>'L', +119861=>'L', +119862=>'L', +119863=>'L', +119864=>'L', +119865=>'L', +119866=>'L', +119867=>'L', +119868=>'L', +119869=>'L', +119870=>'L', +119871=>'L', +119872=>'L', +119873=>'L', +119874=>'L', +119875=>'L', +119876=>'L', +119877=>'L', +119878=>'L', +119879=>'L', +119880=>'L', +119881=>'L', +119882=>'L', +119883=>'L', +119884=>'L', +119885=>'L', +119886=>'L', +119887=>'L', +119888=>'L', +119889=>'L', +119890=>'L', +119891=>'L', +119892=>'L', +119894=>'L', +119895=>'L', +119896=>'L', +119897=>'L', +119898=>'L', +119899=>'L', +119900=>'L', +119901=>'L', +119902=>'L', +119903=>'L', +119904=>'L', +119905=>'L', +119906=>'L', +119907=>'L', +119908=>'L', +119909=>'L', +119910=>'L', +119911=>'L', +119912=>'L', +119913=>'L', +119914=>'L', +119915=>'L', +119916=>'L', +119917=>'L', +119918=>'L', +119919=>'L', +119920=>'L', +119921=>'L', +119922=>'L', +119923=>'L', +119924=>'L', +119925=>'L', +119926=>'L', +119927=>'L', +119928=>'L', +119929=>'L', +119930=>'L', +119931=>'L', +119932=>'L', +119933=>'L', +119934=>'L', +119935=>'L', +119936=>'L', +119937=>'L', +119938=>'L', +119939=>'L', +119940=>'L', +119941=>'L', +119942=>'L', +119943=>'L', +119944=>'L', +119945=>'L', +119946=>'L', +119947=>'L', +119948=>'L', +119949=>'L', +119950=>'L', +119951=>'L', +119952=>'L', +119953=>'L', +119954=>'L', +119955=>'L', +119956=>'L', +119957=>'L', +119958=>'L', +119959=>'L', +119960=>'L', +119961=>'L', +119962=>'L', +119963=>'L', +119964=>'L', +119966=>'L', +119967=>'L', +119970=>'L', +119973=>'L', +119974=>'L', +119977=>'L', +119978=>'L', +119979=>'L', +119980=>'L', +119982=>'L', +119983=>'L', +119984=>'L', +119985=>'L', +119986=>'L', +119987=>'L', +119988=>'L', +119989=>'L', +119990=>'L', +119991=>'L', +119992=>'L', +119993=>'L', +119995=>'L', +119997=>'L', +119998=>'L', +119999=>'L', +120000=>'L', +120001=>'L', +120002=>'L', +120003=>'L', +120005=>'L', +120006=>'L', +120007=>'L', +120008=>'L', +120009=>'L', +120010=>'L', +120011=>'L', +120012=>'L', +120013=>'L', +120014=>'L', +120015=>'L', +120016=>'L', +120017=>'L', +120018=>'L', +120019=>'L', +120020=>'L', +120021=>'L', +120022=>'L', +120023=>'L', +120024=>'L', +120025=>'L', +120026=>'L', +120027=>'L', +120028=>'L', +120029=>'L', +120030=>'L', +120031=>'L', +120032=>'L', +120033=>'L', +120034=>'L', +120035=>'L', +120036=>'L', +120037=>'L', +120038=>'L', +120039=>'L', +120040=>'L', +120041=>'L', +120042=>'L', +120043=>'L', +120044=>'L', +120045=>'L', +120046=>'L', +120047=>'L', +120048=>'L', +120049=>'L', +120050=>'L', +120051=>'L', +120052=>'L', +120053=>'L', +120054=>'L', +120055=>'L', +120056=>'L', +120057=>'L', +120058=>'L', +120059=>'L', +120060=>'L', +120061=>'L', +120062=>'L', +120063=>'L', +120064=>'L', +120065=>'L', +120066=>'L', +120067=>'L', +120068=>'L', +120069=>'L', +120071=>'L', +120072=>'L', +120073=>'L', +120074=>'L', +120077=>'L', +120078=>'L', +120079=>'L', +120080=>'L', +120081=>'L', +120082=>'L', +120083=>'L', +120084=>'L', +120086=>'L', +120087=>'L', +120088=>'L', +120089=>'L', +120090=>'L', +120091=>'L', +120092=>'L', +120094=>'L', +120095=>'L', +120096=>'L', +120097=>'L', +120098=>'L', +120099=>'L', +120100=>'L', +120101=>'L', +120102=>'L', +120103=>'L', +120104=>'L', +120105=>'L', +120106=>'L', +120107=>'L', +120108=>'L', +120109=>'L', +120110=>'L', +120111=>'L', +120112=>'L', +120113=>'L', +120114=>'L', +120115=>'L', +120116=>'L', +120117=>'L', +120118=>'L', +120119=>'L', +120120=>'L', +120121=>'L', +120123=>'L', +120124=>'L', +120125=>'L', +120126=>'L', +120128=>'L', +120129=>'L', +120130=>'L', +120131=>'L', +120132=>'L', +120134=>'L', +120138=>'L', +120139=>'L', +120140=>'L', +120141=>'L', +120142=>'L', +120143=>'L', +120144=>'L', +120146=>'L', +120147=>'L', +120148=>'L', +120149=>'L', +120150=>'L', +120151=>'L', +120152=>'L', +120153=>'L', +120154=>'L', +120155=>'L', +120156=>'L', +120157=>'L', +120158=>'L', +120159=>'L', +120160=>'L', +120161=>'L', +120162=>'L', +120163=>'L', +120164=>'L', +120165=>'L', +120166=>'L', +120167=>'L', +120168=>'L', +120169=>'L', +120170=>'L', +120171=>'L', +120172=>'L', +120173=>'L', +120174=>'L', +120175=>'L', +120176=>'L', +120177=>'L', +120178=>'L', +120179=>'L', +120180=>'L', +120181=>'L', +120182=>'L', +120183=>'L', +120184=>'L', +120185=>'L', +120186=>'L', +120187=>'L', +120188=>'L', +120189=>'L', +120190=>'L', +120191=>'L', +120192=>'L', +120193=>'L', +120194=>'L', +120195=>'L', +120196=>'L', +120197=>'L', +120198=>'L', +120199=>'L', +120200=>'L', +120201=>'L', +120202=>'L', +120203=>'L', +120204=>'L', +120205=>'L', +120206=>'L', +120207=>'L', +120208=>'L', +120209=>'L', +120210=>'L', +120211=>'L', +120212=>'L', +120213=>'L', +120214=>'L', +120215=>'L', +120216=>'L', +120217=>'L', +120218=>'L', +120219=>'L', +120220=>'L', +120221=>'L', +120222=>'L', +120223=>'L', +120224=>'L', +120225=>'L', +120226=>'L', +120227=>'L', +120228=>'L', +120229=>'L', +120230=>'L', +120231=>'L', +120232=>'L', +120233=>'L', +120234=>'L', +120235=>'L', +120236=>'L', +120237=>'L', +120238=>'L', +120239=>'L', +120240=>'L', +120241=>'L', +120242=>'L', +120243=>'L', +120244=>'L', +120245=>'L', +120246=>'L', +120247=>'L', +120248=>'L', +120249=>'L', +120250=>'L', +120251=>'L', +120252=>'L', +120253=>'L', +120254=>'L', +120255=>'L', +120256=>'L', +120257=>'L', +120258=>'L', +120259=>'L', +120260=>'L', +120261=>'L', +120262=>'L', +120263=>'L', +120264=>'L', +120265=>'L', +120266=>'L', +120267=>'L', +120268=>'L', +120269=>'L', +120270=>'L', +120271=>'L', +120272=>'L', +120273=>'L', +120274=>'L', +120275=>'L', +120276=>'L', +120277=>'L', +120278=>'L', +120279=>'L', +120280=>'L', +120281=>'L', +120282=>'L', +120283=>'L', +120284=>'L', +120285=>'L', +120286=>'L', +120287=>'L', +120288=>'L', +120289=>'L', +120290=>'L', +120291=>'L', +120292=>'L', +120293=>'L', +120294=>'L', +120295=>'L', +120296=>'L', +120297=>'L', +120298=>'L', +120299=>'L', +120300=>'L', +120301=>'L', +120302=>'L', +120303=>'L', +120304=>'L', +120305=>'L', +120306=>'L', +120307=>'L', +120308=>'L', +120309=>'L', +120310=>'L', +120311=>'L', +120312=>'L', +120313=>'L', +120314=>'L', +120315=>'L', +120316=>'L', +120317=>'L', +120318=>'L', +120319=>'L', +120320=>'L', +120321=>'L', +120322=>'L', +120323=>'L', +120324=>'L', +120325=>'L', +120326=>'L', +120327=>'L', +120328=>'L', +120329=>'L', +120330=>'L', +120331=>'L', +120332=>'L', +120333=>'L', +120334=>'L', +120335=>'L', +120336=>'L', +120337=>'L', +120338=>'L', +120339=>'L', +120340=>'L', +120341=>'L', +120342=>'L', +120343=>'L', +120344=>'L', +120345=>'L', +120346=>'L', +120347=>'L', +120348=>'L', +120349=>'L', +120350=>'L', +120351=>'L', +120352=>'L', +120353=>'L', +120354=>'L', +120355=>'L', +120356=>'L', +120357=>'L', +120358=>'L', +120359=>'L', +120360=>'L', +120361=>'L', +120362=>'L', +120363=>'L', +120364=>'L', +120365=>'L', +120366=>'L', +120367=>'L', +120368=>'L', +120369=>'L', +120370=>'L', +120371=>'L', +120372=>'L', +120373=>'L', +120374=>'L', +120375=>'L', +120376=>'L', +120377=>'L', +120378=>'L', +120379=>'L', +120380=>'L', +120381=>'L', +120382=>'L', +120383=>'L', +120384=>'L', +120385=>'L', +120386=>'L', +120387=>'L', +120388=>'L', +120389=>'L', +120390=>'L', +120391=>'L', +120392=>'L', +120393=>'L', +120394=>'L', +120395=>'L', +120396=>'L', +120397=>'L', +120398=>'L', +120399=>'L', +120400=>'L', +120401=>'L', +120402=>'L', +120403=>'L', +120404=>'L', +120405=>'L', +120406=>'L', +120407=>'L', +120408=>'L', +120409=>'L', +120410=>'L', +120411=>'L', +120412=>'L', +120413=>'L', +120414=>'L', +120415=>'L', +120416=>'L', +120417=>'L', +120418=>'L', +120419=>'L', +120420=>'L', +120421=>'L', +120422=>'L', +120423=>'L', +120424=>'L', +120425=>'L', +120426=>'L', +120427=>'L', +120428=>'L', +120429=>'L', +120430=>'L', +120431=>'L', +120432=>'L', +120433=>'L', +120434=>'L', +120435=>'L', +120436=>'L', +120437=>'L', +120438=>'L', +120439=>'L', +120440=>'L', +120441=>'L', +120442=>'L', +120443=>'L', +120444=>'L', +120445=>'L', +120446=>'L', +120447=>'L', +120448=>'L', +120449=>'L', +120450=>'L', +120451=>'L', +120452=>'L', +120453=>'L', +120454=>'L', +120455=>'L', +120456=>'L', +120457=>'L', +120458=>'L', +120459=>'L', +120460=>'L', +120461=>'L', +120462=>'L', +120463=>'L', +120464=>'L', +120465=>'L', +120466=>'L', +120467=>'L', +120468=>'L', +120469=>'L', +120470=>'L', +120471=>'L', +120472=>'L', +120473=>'L', +120474=>'L', +120475=>'L', +120476=>'L', +120477=>'L', +120478=>'L', +120479=>'L', +120480=>'L', +120481=>'L', +120482=>'L', +120483=>'L', +120484=>'L', +120485=>'L', +120488=>'L', +120489=>'L', +120490=>'L', +120491=>'L', +120492=>'L', +120493=>'L', +120494=>'L', +120495=>'L', +120496=>'L', +120497=>'L', +120498=>'L', +120499=>'L', +120500=>'L', +120501=>'L', +120502=>'L', +120503=>'L', +120504=>'L', +120505=>'L', +120506=>'L', +120507=>'L', +120508=>'L', +120509=>'L', +120510=>'L', +120511=>'L', +120512=>'L', +120513=>'L', +120514=>'L', +120515=>'L', +120516=>'L', +120517=>'L', +120518=>'L', +120519=>'L', +120520=>'L', +120521=>'L', +120522=>'L', +120523=>'L', +120524=>'L', +120525=>'L', +120526=>'L', +120527=>'L', +120528=>'L', +120529=>'L', +120530=>'L', +120531=>'L', +120532=>'L', +120533=>'L', +120534=>'L', +120535=>'L', +120536=>'L', +120537=>'L', +120538=>'L', +120539=>'L', +120540=>'L', +120541=>'L', +120542=>'L', +120543=>'L', +120544=>'L', +120545=>'L', +120546=>'L', +120547=>'L', +120548=>'L', +120549=>'L', +120550=>'L', +120551=>'L', +120552=>'L', +120553=>'L', +120554=>'L', +120555=>'L', +120556=>'L', +120557=>'L', +120558=>'L', +120559=>'L', +120560=>'L', +120561=>'L', +120562=>'L', +120563=>'L', +120564=>'L', +120565=>'L', +120566=>'L', +120567=>'L', +120568=>'L', +120569=>'L', +120570=>'L', +120571=>'L', +120572=>'L', +120573=>'L', +120574=>'L', +120575=>'L', +120576=>'L', +120577=>'L', +120578=>'L', +120579=>'L', +120580=>'L', +120581=>'L', +120582=>'L', +120583=>'L', +120584=>'L', +120585=>'L', +120586=>'L', +120587=>'L', +120588=>'L', +120589=>'L', +120590=>'L', +120591=>'L', +120592=>'L', +120593=>'L', +120594=>'L', +120595=>'L', +120596=>'L', +120597=>'L', +120598=>'L', +120599=>'L', +120600=>'L', +120601=>'L', +120602=>'L', +120603=>'L', +120604=>'L', +120605=>'L', +120606=>'L', +120607=>'L', +120608=>'L', +120609=>'L', +120610=>'L', +120611=>'L', +120612=>'L', +120613=>'L', +120614=>'L', +120615=>'L', +120616=>'L', +120617=>'L', +120618=>'L', +120619=>'L', +120620=>'L', +120621=>'L', +120622=>'L', +120623=>'L', +120624=>'L', +120625=>'L', +120626=>'L', +120627=>'L', +120628=>'L', +120629=>'L', +120630=>'L', +120631=>'L', +120632=>'L', +120633=>'L', +120634=>'L', +120635=>'L', +120636=>'L', +120637=>'L', +120638=>'L', +120639=>'L', +120640=>'L', +120641=>'L', +120642=>'L', +120643=>'L', +120644=>'L', +120645=>'L', +120646=>'L', +120647=>'L', +120648=>'L', +120649=>'L', +120650=>'L', +120651=>'L', +120652=>'L', +120653=>'L', +120654=>'L', +120655=>'L', +120656=>'L', +120657=>'L', +120658=>'L', +120659=>'L', +120660=>'L', +120661=>'L', +120662=>'L', +120663=>'L', +120664=>'L', +120665=>'L', +120666=>'L', +120667=>'L', +120668=>'L', +120669=>'L', +120670=>'L', +120671=>'L', +120672=>'L', +120673=>'L', +120674=>'L', +120675=>'L', +120676=>'L', +120677=>'L', +120678=>'L', +120679=>'L', +120680=>'L', +120681=>'L', +120682=>'L', +120683=>'L', +120684=>'L', +120685=>'L', +120686=>'L', +120687=>'L', +120688=>'L', +120689=>'L', +120690=>'L', +120691=>'L', +120692=>'L', +120693=>'L', +120694=>'L', +120695=>'L', +120696=>'L', +120697=>'L', +120698=>'L', +120699=>'L', +120700=>'L', +120701=>'L', +120702=>'L', +120703=>'L', +120704=>'L', +120705=>'L', +120706=>'L', +120707=>'L', +120708=>'L', +120709=>'L', +120710=>'L', +120711=>'L', +120712=>'L', +120713=>'L', +120714=>'L', +120715=>'L', +120716=>'L', +120717=>'L', +120718=>'L', +120719=>'L', +120720=>'L', +120721=>'L', +120722=>'L', +120723=>'L', +120724=>'L', +120725=>'L', +120726=>'L', +120727=>'L', +120728=>'L', +120729=>'L', +120730=>'L', +120731=>'L', +120732=>'L', +120733=>'L', +120734=>'L', +120735=>'L', +120736=>'L', +120737=>'L', +120738=>'L', +120739=>'L', +120740=>'L', +120741=>'L', +120742=>'L', +120743=>'L', +120744=>'L', +120745=>'L', +120746=>'L', +120747=>'L', +120748=>'L', +120749=>'L', +120750=>'L', +120751=>'L', +120752=>'L', +120753=>'L', +120754=>'L', +120755=>'L', +120756=>'L', +120757=>'L', +120758=>'L', +120759=>'L', +120760=>'L', +120761=>'L', +120762=>'L', +120763=>'L', +120764=>'L', +120765=>'L', +120766=>'L', +120767=>'L', +120768=>'L', +120769=>'L', +120770=>'L', +120771=>'L', +120772=>'L', +120773=>'L', +120774=>'L', +120775=>'L', +120776=>'L', +120777=>'L', +120778=>'L', +120779=>'L', +120782=>'EN', +120783=>'EN', +120784=>'EN', +120785=>'EN', +120786=>'EN', +120787=>'EN', +120788=>'EN', +120789=>'EN', +120790=>'EN', +120791=>'EN', +120792=>'EN', +120793=>'EN', +120794=>'EN', +120795=>'EN', +120796=>'EN', +120797=>'EN', +120798=>'EN', +120799=>'EN', +120800=>'EN', +120801=>'EN', +120802=>'EN', +120803=>'EN', +120804=>'EN', +120805=>'EN', +120806=>'EN', +120807=>'EN', +120808=>'EN', +120809=>'EN', +120810=>'EN', +120811=>'EN', +120812=>'EN', +120813=>'EN', +120814=>'EN', +120815=>'EN', +120816=>'EN', +120817=>'EN', +120818=>'EN', +120819=>'EN', +120820=>'EN', +120821=>'EN', +120822=>'EN', +120823=>'EN', +120824=>'EN', +120825=>'EN', +120826=>'EN', +120827=>'EN', +120828=>'EN', +120829=>'EN', +120830=>'EN', +120831=>'EN', +131072=>'L', +173782=>'L', +194560=>'L', +194561=>'L', +194562=>'L', +194563=>'L', +194564=>'L', +194565=>'L', +194566=>'L', +194567=>'L', +194568=>'L', +194569=>'L', +194570=>'L', +194571=>'L', +194572=>'L', +194573=>'L', +194574=>'L', +194575=>'L', +194576=>'L', +194577=>'L', +194578=>'L', +194579=>'L', +194580=>'L', +194581=>'L', +194582=>'L', +194583=>'L', +194584=>'L', +194585=>'L', +194586=>'L', +194587=>'L', +194588=>'L', +194589=>'L', +194590=>'L', +194591=>'L', +194592=>'L', +194593=>'L', +194594=>'L', +194595=>'L', +194596=>'L', +194597=>'L', +194598=>'L', +194599=>'L', +194600=>'L', +194601=>'L', +194602=>'L', +194603=>'L', +194604=>'L', +194605=>'L', +194606=>'L', +194607=>'L', +194608=>'L', +194609=>'L', +194610=>'L', +194611=>'L', +194612=>'L', +194613=>'L', +194614=>'L', +194615=>'L', +194616=>'L', +194617=>'L', +194618=>'L', +194619=>'L', +194620=>'L', +194621=>'L', +194622=>'L', +194623=>'L', +194624=>'L', +194625=>'L', +194626=>'L', +194627=>'L', +194628=>'L', +194629=>'L', +194630=>'L', +194631=>'L', +194632=>'L', +194633=>'L', +194634=>'L', +194635=>'L', +194636=>'L', +194637=>'L', +194638=>'L', +194639=>'L', +194640=>'L', +194641=>'L', +194642=>'L', +194643=>'L', +194644=>'L', +194645=>'L', +194646=>'L', +194647=>'L', +194648=>'L', +194649=>'L', +194650=>'L', +194651=>'L', +194652=>'L', +194653=>'L', +194654=>'L', +194655=>'L', +194656=>'L', +194657=>'L', +194658=>'L', +194659=>'L', +194660=>'L', +194661=>'L', +194662=>'L', +194663=>'L', +194664=>'L', +194665=>'L', +194666=>'L', +194667=>'L', +194668=>'L', +194669=>'L', +194670=>'L', +194671=>'L', +194672=>'L', +194673=>'L', +194674=>'L', +194675=>'L', +194676=>'L', +194677=>'L', +194678=>'L', +194679=>'L', +194680=>'L', +194681=>'L', +194682=>'L', +194683=>'L', +194684=>'L', +194685=>'L', +194686=>'L', +194687=>'L', +194688=>'L', +194689=>'L', +194690=>'L', +194691=>'L', +194692=>'L', +194693=>'L', +194694=>'L', +194695=>'L', +194696=>'L', +194697=>'L', +194698=>'L', +194699=>'L', +194700=>'L', +194701=>'L', +194702=>'L', +194703=>'L', +194704=>'L', +194705=>'L', +194706=>'L', +194707=>'L', +194708=>'L', +194709=>'L', +194710=>'L', +194711=>'L', +194712=>'L', +194713=>'L', +194714=>'L', +194715=>'L', +194716=>'L', +194717=>'L', +194718=>'L', +194719=>'L', +194720=>'L', +194721=>'L', +194722=>'L', +194723=>'L', +194724=>'L', +194725=>'L', +194726=>'L', +194727=>'L', +194728=>'L', +194729=>'L', +194730=>'L', +194731=>'L', +194732=>'L', +194733=>'L', +194734=>'L', +194735=>'L', +194736=>'L', +194737=>'L', +194738=>'L', +194739=>'L', +194740=>'L', +194741=>'L', +194742=>'L', +194743=>'L', +194744=>'L', +194745=>'L', +194746=>'L', +194747=>'L', +194748=>'L', +194749=>'L', +194750=>'L', +194751=>'L', +194752=>'L', +194753=>'L', +194754=>'L', +194755=>'L', +194756=>'L', +194757=>'L', +194758=>'L', +194759=>'L', +194760=>'L', +194761=>'L', +194762=>'L', +194763=>'L', +194764=>'L', +194765=>'L', +194766=>'L', +194767=>'L', +194768=>'L', +194769=>'L', +194770=>'L', +194771=>'L', +194772=>'L', +194773=>'L', +194774=>'L', +194775=>'L', +194776=>'L', +194777=>'L', +194778=>'L', +194779=>'L', +194780=>'L', +194781=>'L', +194782=>'L', +194783=>'L', +194784=>'L', +194785=>'L', +194786=>'L', +194787=>'L', +194788=>'L', +194789=>'L', +194790=>'L', +194791=>'L', +194792=>'L', +194793=>'L', +194794=>'L', +194795=>'L', +194796=>'L', +194797=>'L', +194798=>'L', +194799=>'L', +194800=>'L', +194801=>'L', +194802=>'L', +194803=>'L', +194804=>'L', +194805=>'L', +194806=>'L', +194807=>'L', +194808=>'L', +194809=>'L', +194810=>'L', +194811=>'L', +194812=>'L', +194813=>'L', +194814=>'L', +194815=>'L', +194816=>'L', +194817=>'L', +194818=>'L', +194819=>'L', +194820=>'L', +194821=>'L', +194822=>'L', +194823=>'L', +194824=>'L', +194825=>'L', +194826=>'L', +194827=>'L', +194828=>'L', +194829=>'L', +194830=>'L', +194831=>'L', +194832=>'L', +194833=>'L', +194834=>'L', +194835=>'L', +194836=>'L', +194837=>'L', +194838=>'L', +194839=>'L', +194840=>'L', +194841=>'L', +194842=>'L', +194843=>'L', +194844=>'L', +194845=>'L', +194846=>'L', +194847=>'L', +194848=>'L', +194849=>'L', +194850=>'L', +194851=>'L', +194852=>'L', +194853=>'L', +194854=>'L', +194855=>'L', +194856=>'L', +194857=>'L', +194858=>'L', +194859=>'L', +194860=>'L', +194861=>'L', +194862=>'L', +194863=>'L', +194864=>'L', +194865=>'L', +194866=>'L', +194867=>'L', +194868=>'L', +194869=>'L', +194870=>'L', +194871=>'L', +194872=>'L', +194873=>'L', +194874=>'L', +194875=>'L', +194876=>'L', +194877=>'L', +194878=>'L', +194879=>'L', +194880=>'L', +194881=>'L', +194882=>'L', +194883=>'L', +194884=>'L', +194885=>'L', +194886=>'L', +194887=>'L', +194888=>'L', +194889=>'L', +194890=>'L', +194891=>'L', +194892=>'L', +194893=>'L', +194894=>'L', +194895=>'L', +194896=>'L', +194897=>'L', +194898=>'L', +194899=>'L', +194900=>'L', +194901=>'L', +194902=>'L', +194903=>'L', +194904=>'L', +194905=>'L', +194906=>'L', +194907=>'L', +194908=>'L', +194909=>'L', +194910=>'L', +194911=>'L', +194912=>'L', +194913=>'L', +194914=>'L', +194915=>'L', +194916=>'L', +194917=>'L', +194918=>'L', +194919=>'L', +194920=>'L', +194921=>'L', +194922=>'L', +194923=>'L', +194924=>'L', +194925=>'L', +194926=>'L', +194927=>'L', +194928=>'L', +194929=>'L', +194930=>'L', +194931=>'L', +194932=>'L', +194933=>'L', +194934=>'L', +194935=>'L', +194936=>'L', +194937=>'L', +194938=>'L', +194939=>'L', +194940=>'L', +194941=>'L', +194942=>'L', +194943=>'L', +194944=>'L', +194945=>'L', +194946=>'L', +194947=>'L', +194948=>'L', +194949=>'L', +194950=>'L', +194951=>'L', +194952=>'L', +194953=>'L', +194954=>'L', +194955=>'L', +194956=>'L', +194957=>'L', +194958=>'L', +194959=>'L', +194960=>'L', +194961=>'L', +194962=>'L', +194963=>'L', +194964=>'L', +194965=>'L', +194966=>'L', +194967=>'L', +194968=>'L', +194969=>'L', +194970=>'L', +194971=>'L', +194972=>'L', +194973=>'L', +194974=>'L', +194975=>'L', +194976=>'L', +194977=>'L', +194978=>'L', +194979=>'L', +194980=>'L', +194981=>'L', +194982=>'L', +194983=>'L', +194984=>'L', +194985=>'L', +194986=>'L', +194987=>'L', +194988=>'L', +194989=>'L', +194990=>'L', +194991=>'L', +194992=>'L', +194993=>'L', +194994=>'L', +194995=>'L', +194996=>'L', +194997=>'L', +194998=>'L', +194999=>'L', +195000=>'L', +195001=>'L', +195002=>'L', +195003=>'L', +195004=>'L', +195005=>'L', +195006=>'L', +195007=>'L', +195008=>'L', +195009=>'L', +195010=>'L', +195011=>'L', +195012=>'L', +195013=>'L', +195014=>'L', +195015=>'L', +195016=>'L', +195017=>'L', +195018=>'L', +195019=>'L', +195020=>'L', +195021=>'L', +195022=>'L', +195023=>'L', +195024=>'L', +195025=>'L', +195026=>'L', +195027=>'L', +195028=>'L', +195029=>'L', +195030=>'L', +195031=>'L', +195032=>'L', +195033=>'L', +195034=>'L', +195035=>'L', +195036=>'L', +195037=>'L', +195038=>'L', +195039=>'L', +195040=>'L', +195041=>'L', +195042=>'L', +195043=>'L', +195044=>'L', +195045=>'L', +195046=>'L', +195047=>'L', +195048=>'L', +195049=>'L', +195050=>'L', +195051=>'L', +195052=>'L', +195053=>'L', +195054=>'L', +195055=>'L', +195056=>'L', +195057=>'L', +195058=>'L', +195059=>'L', +195060=>'L', +195061=>'L', +195062=>'L', +195063=>'L', +195064=>'L', +195065=>'L', +195066=>'L', +195067=>'L', +195068=>'L', +195069=>'L', +195070=>'L', +195071=>'L', +195072=>'L', +195073=>'L', +195074=>'L', +195075=>'L', +195076=>'L', +195077=>'L', +195078=>'L', +195079=>'L', +195080=>'L', +195081=>'L', +195082=>'L', +195083=>'L', +195084=>'L', +195085=>'L', +195086=>'L', +195087=>'L', +195088=>'L', +195089=>'L', +195090=>'L', +195091=>'L', +195092=>'L', +195093=>'L', +195094=>'L', +195095=>'L', +195096=>'L', +195097=>'L', +195098=>'L', +195099=>'L', +195100=>'L', +195101=>'L', +917505=>'BN', +917536=>'BN', +917537=>'BN', +917538=>'BN', +917539=>'BN', +917540=>'BN', +917541=>'BN', +917542=>'BN', +917543=>'BN', +917544=>'BN', +917545=>'BN', +917546=>'BN', +917547=>'BN', +917548=>'BN', +917549=>'BN', +917550=>'BN', +917551=>'BN', +917552=>'BN', +917553=>'BN', +917554=>'BN', +917555=>'BN', +917556=>'BN', +917557=>'BN', +917558=>'BN', +917559=>'BN', +917560=>'BN', +917561=>'BN', +917562=>'BN', +917563=>'BN', +917564=>'BN', +917565=>'BN', +917566=>'BN', +917567=>'BN', +917568=>'BN', +917569=>'BN', +917570=>'BN', +917571=>'BN', +917572=>'BN', +917573=>'BN', +917574=>'BN', +917575=>'BN', +917576=>'BN', +917577=>'BN', +917578=>'BN', +917579=>'BN', +917580=>'BN', +917581=>'BN', +917582=>'BN', +917583=>'BN', +917584=>'BN', +917585=>'BN', +917586=>'BN', +917587=>'BN', +917588=>'BN', +917589=>'BN', +917590=>'BN', +917591=>'BN', +917592=>'BN', +917593=>'BN', +917594=>'BN', +917595=>'BN', +917596=>'BN', +917597=>'BN', +917598=>'BN', +917599=>'BN', +917600=>'BN', +917601=>'BN', +917602=>'BN', +917603=>'BN', +917604=>'BN', +917605=>'BN', +917606=>'BN', +917607=>'BN', +917608=>'BN', +917609=>'BN', +917610=>'BN', +917611=>'BN', +917612=>'BN', +917613=>'BN', +917614=>'BN', +917615=>'BN', +917616=>'BN', +917617=>'BN', +917618=>'BN', +917619=>'BN', +917620=>'BN', +917621=>'BN', +917622=>'BN', +917623=>'BN', +917624=>'BN', +917625=>'BN', +917626=>'BN', +917627=>'BN', +917628=>'BN', +917629=>'BN', +917630=>'BN', +917631=>'BN', +917760=>'NSM', +917761=>'NSM', +917762=>'NSM', +917763=>'NSM', +917764=>'NSM', +917765=>'NSM', +917766=>'NSM', +917767=>'NSM', +917768=>'NSM', +917769=>'NSM', +917770=>'NSM', +917771=>'NSM', +917772=>'NSM', +917773=>'NSM', +917774=>'NSM', +917775=>'NSM', +917776=>'NSM', +917777=>'NSM', +917778=>'NSM', +917779=>'NSM', +917780=>'NSM', +917781=>'NSM', +917782=>'NSM', +917783=>'NSM', +917784=>'NSM', +917785=>'NSM', +917786=>'NSM', +917787=>'NSM', +917788=>'NSM', +917789=>'NSM', +917790=>'NSM', +917791=>'NSM', +917792=>'NSM', +917793=>'NSM', +917794=>'NSM', +917795=>'NSM', +917796=>'NSM', +917797=>'NSM', +917798=>'NSM', +917799=>'NSM', +917800=>'NSM', +917801=>'NSM', +917802=>'NSM', +917803=>'NSM', +917804=>'NSM', +917805=>'NSM', +917806=>'NSM', +917807=>'NSM', +917808=>'NSM', +917809=>'NSM', +917810=>'NSM', +917811=>'NSM', +917812=>'NSM', +917813=>'NSM', +917814=>'NSM', +917815=>'NSM', +917816=>'NSM', +917817=>'NSM', +917818=>'NSM', +917819=>'NSM', +917820=>'NSM', +917821=>'NSM', +917822=>'NSM', +917823=>'NSM', +917824=>'NSM', +917825=>'NSM', +917826=>'NSM', +917827=>'NSM', +917828=>'NSM', +917829=>'NSM', +917830=>'NSM', +917831=>'NSM', +917832=>'NSM', +917833=>'NSM', +917834=>'NSM', +917835=>'NSM', +917836=>'NSM', +917837=>'NSM', +917838=>'NSM', +917839=>'NSM', +917840=>'NSM', +917841=>'NSM', +917842=>'NSM', +917843=>'NSM', +917844=>'NSM', +917845=>'NSM', +917846=>'NSM', +917847=>'NSM', +917848=>'NSM', +917849=>'NSM', +917850=>'NSM', +917851=>'NSM', +917852=>'NSM', +917853=>'NSM', +917854=>'NSM', +917855=>'NSM', +917856=>'NSM', +917857=>'NSM', +917858=>'NSM', +917859=>'NSM', +917860=>'NSM', +917861=>'NSM', +917862=>'NSM', +917863=>'NSM', +917864=>'NSM', +917865=>'NSM', +917866=>'NSM', +917867=>'NSM', +917868=>'NSM', +917869=>'NSM', +917870=>'NSM', +917871=>'NSM', +917872=>'NSM', +917873=>'NSM', +917874=>'NSM', +917875=>'NSM', +917876=>'NSM', +917877=>'NSM', +917878=>'NSM', +917879=>'NSM', +917880=>'NSM', +917881=>'NSM', +917882=>'NSM', +917883=>'NSM', +917884=>'NSM', +917885=>'NSM', +917886=>'NSM', +917887=>'NSM', +917888=>'NSM', +917889=>'NSM', +917890=>'NSM', +917891=>'NSM', +917892=>'NSM', +917893=>'NSM', +917894=>'NSM', +917895=>'NSM', +917896=>'NSM', +917897=>'NSM', +917898=>'NSM', +917899=>'NSM', +917900=>'NSM', +917901=>'NSM', +917902=>'NSM', +917903=>'NSM', +917904=>'NSM', +917905=>'NSM', +917906=>'NSM', +917907=>'NSM', +917908=>'NSM', +917909=>'NSM', +917910=>'NSM', +917911=>'NSM', +917912=>'NSM', +917913=>'NSM', +917914=>'NSM', +917915=>'NSM', +917916=>'NSM', +917917=>'NSM', +917918=>'NSM', +917919=>'NSM', +917920=>'NSM', +917921=>'NSM', +917922=>'NSM', +917923=>'NSM', +917924=>'NSM', +917925=>'NSM', +917926=>'NSM', +917927=>'NSM', +917928=>'NSM', +917929=>'NSM', +917930=>'NSM', +917931=>'NSM', +917932=>'NSM', +917933=>'NSM', +917934=>'NSM', +917935=>'NSM', +917936=>'NSM', +917937=>'NSM', +917938=>'NSM', +917939=>'NSM', +917940=>'NSM', +917941=>'NSM', +917942=>'NSM', +917943=>'NSM', +917944=>'NSM', +917945=>'NSM', +917946=>'NSM', +917947=>'NSM', +917948=>'NSM', +917949=>'NSM', +917950=>'NSM', +917951=>'NSM', +917952=>'NSM', +917953=>'NSM', +917954=>'NSM', +917955=>'NSM', +917956=>'NSM', +917957=>'NSM', +917958=>'NSM', +917959=>'NSM', +917960=>'NSM', +917961=>'NSM', +917962=>'NSM', +917963=>'NSM', +917964=>'NSM', +917965=>'NSM', +917966=>'NSM', +917967=>'NSM', +917968=>'NSM', +917969=>'NSM', +917970=>'NSM', +917971=>'NSM', +917972=>'NSM', +917973=>'NSM', +917974=>'NSM', +917975=>'NSM', +917976=>'NSM', +917977=>'NSM', +917978=>'NSM', +917979=>'NSM', +917980=>'NSM', +917981=>'NSM', +917982=>'NSM', +917983=>'NSM', +917984=>'NSM', +917985=>'NSM', +917986=>'NSM', +917987=>'NSM', +917988=>'NSM', +917989=>'NSM', +917990=>'NSM', +917991=>'NSM', +917992=>'NSM', +917993=>'NSM', +917994=>'NSM', +917995=>'NSM', +917996=>'NSM', +917997=>'NSM', +917998=>'NSM', +917999=>'NSM', +983040=>'L', +1048573=>'L', +1048576=>'L', +1114109=>'L' +); + +/** + * Mirror unicode characters. For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/ + * @public + */ +public static $uni_mirror = array ( +0x0028=>0x0029, +0x0029=>0x0028, +0x003C=>0x003E, +0x003E=>0x003C, +0x005B=>0x005D, +0x005D=>0x005B, +0x007B=>0x007D, +0x007D=>0x007B, +0x00AB=>0x00BB, +0x00BB=>0x00AB, +0x0F3A=>0x0F3B, +0x0F3B=>0x0F3A, +0x0F3C=>0x0F3D, +0x0F3D=>0x0F3C, +0x169B=>0x169C, +0x169C=>0x169B, +0x2018=>0x2019, +0x2019=>0x2018, +0x201C=>0x201D, +0x201D=>0x201C, +0x2039=>0x203A, +0x203A=>0x2039, +0x2045=>0x2046, +0x2046=>0x2045, +0x207D=>0x207E, +0x207E=>0x207D, +0x208D=>0x208E, +0x208E=>0x208D, +0x2208=>0x220B, +0x2209=>0x220C, +0x220A=>0x220D, +0x220B=>0x2208, +0x220C=>0x2209, +0x220D=>0x220A, +0x2215=>0x29F5, +0x223C=>0x223D, +0x223D=>0x223C, +0x2243=>0x22CD, +0x2252=>0x2253, +0x2253=>0x2252, +0x2254=>0x2255, +0x2255=>0x2254, +0x2264=>0x2265, +0x2265=>0x2264, +0x2266=>0x2267, +0x2267=>0x2266, +0x2268=>0x2269, +0x2269=>0x2268, +0x226A=>0x226B, +0x226B=>0x226A, +0x226E=>0x226F, +0x226F=>0x226E, +0x2270=>0x2271, +0x2271=>0x2270, +0x2272=>0x2273, +0x2273=>0x2272, +0x2274=>0x2275, +0x2275=>0x2274, +0x2276=>0x2277, +0x2277=>0x2276, +0x2278=>0x2279, +0x2279=>0x2278, +0x227A=>0x227B, +0x227B=>0x227A, +0x227C=>0x227D, +0x227D=>0x227C, +0x227E=>0x227F, +0x227F=>0x227E, +0x2280=>0x2281, +0x2281=>0x2280, +0x2282=>0x2283, +0x2283=>0x2282, +0x2284=>0x2285, +0x2285=>0x2284, +0x2286=>0x2287, +0x2287=>0x2286, +0x2288=>0x2289, +0x2289=>0x2288, +0x228A=>0x228B, +0x228B=>0x228A, +0x228F=>0x2290, +0x2290=>0x228F, +0x2291=>0x2292, +0x2292=>0x2291, +0x2298=>0x29B8, +0x22A2=>0x22A3, +0x22A3=>0x22A2, +0x22A6=>0x2ADE, +0x22A8=>0x2AE4, +0x22A9=>0x2AE3, +0x22AB=>0x2AE5, +0x22B0=>0x22B1, +0x22B1=>0x22B0, +0x22B2=>0x22B3, +0x22B3=>0x22B2, +0x22B4=>0x22B5, +0x22B5=>0x22B4, +0x22B6=>0x22B7, +0x22B7=>0x22B6, +0x22C9=>0x22CA, +0x22CA=>0x22C9, +0x22CB=>0x22CC, +0x22CC=>0x22CB, +0x22CD=>0x2243, +0x22D0=>0x22D1, +0x22D1=>0x22D0, +0x22D6=>0x22D7, +0x22D7=>0x22D6, +0x22D8=>0x22D9, +0x22D9=>0x22D8, +0x22DA=>0x22DB, +0x22DB=>0x22DA, +0x22DC=>0x22DD, +0x22DD=>0x22DC, +0x22DE=>0x22DF, +0x22DF=>0x22DE, +0x22E0=>0x22E1, +0x22E1=>0x22E0, +0x22E2=>0x22E3, +0x22E3=>0x22E2, +0x22E4=>0x22E5, +0x22E5=>0x22E4, +0x22E6=>0x22E7, +0x22E7=>0x22E6, +0x22E8=>0x22E9, +0x22E9=>0x22E8, +0x22EA=>0x22EB, +0x22EB=>0x22EA, +0x22EC=>0x22ED, +0x22ED=>0x22EC, +0x22F0=>0x22F1, +0x22F1=>0x22F0, +0x22F2=>0x22FA, +0x22F3=>0x22FB, +0x22F4=>0x22FC, +0x22F6=>0x22FD, +0x22F7=>0x22FE, +0x22FA=>0x22F2, +0x22FB=>0x22F3, +0x22FC=>0x22F4, +0x22FD=>0x22F6, +0x22FE=>0x22F7, +0x2308=>0x2309, +0x2309=>0x2308, +0x230A=>0x230B, +0x230B=>0x230A, +0x2329=>0x232A, +0x232A=>0x2329, +0x2768=>0x2769, +0x2769=>0x2768, +0x276A=>0x276B, +0x276B=>0x276A, +0x276C=>0x276D, +0x276D=>0x276C, +0x276E=>0x276F, +0x276F=>0x276E, +0x2770=>0x2771, +0x2771=>0x2770, +0x2772=>0x2773, +0x2773=>0x2772, +0x2774=>0x2775, +0x2775=>0x2774, +0x27C3=>0x27C4, +0x27C4=>0x27C3, +0x27C5=>0x27C6, +0x27C6=>0x27C5, +0x27D5=>0x27D6, +0x27D6=>0x27D5, +0x27DD=>0x27DE, +0x27DE=>0x27DD, +0x27E2=>0x27E3, +0x27E3=>0x27E2, +0x27E4=>0x27E5, +0x27E5=>0x27E4, +0x27E6=>0x27E7, +0x27E7=>0x27E6, +0x27E8=>0x27E9, +0x27E9=>0x27E8, +0x27EA=>0x27EB, +0x27EB=>0x27EA, +0x2983=>0x2984, +0x2984=>0x2983, +0x2985=>0x2986, +0x2986=>0x2985, +0x2987=>0x2988, +0x2988=>0x2987, +0x2989=>0x298A, +0x298A=>0x2989, +0x298B=>0x298C, +0x298C=>0x298B, +0x298D=>0x2990, +0x298E=>0x298F, +0x298F=>0x298E, +0x2990=>0x298D, +0x2991=>0x2992, +0x2992=>0x2991, +0x2993=>0x2994, +0x2994=>0x2993, +0x2995=>0x2996, +0x2996=>0x2995, +0x2997=>0x2998, +0x2998=>0x2997, +0x29B8=>0x2298, +0x29C0=>0x29C1, +0x29C1=>0x29C0, +0x29C4=>0x29C5, +0x29C5=>0x29C4, +0x29CF=>0x29D0, +0x29D0=>0x29CF, +0x29D1=>0x29D2, +0x29D2=>0x29D1, +0x29D4=>0x29D5, +0x29D5=>0x29D4, +0x29D8=>0x29D9, +0x29D9=>0x29D8, +0x29DA=>0x29DB, +0x29DB=>0x29DA, +0x29F5=>0x2215, +0x29F8=>0x29F9, +0x29F9=>0x29F8, +0x29FC=>0x29FD, +0x29FD=>0x29FC, +0x2A2B=>0x2A2C, +0x2A2C=>0x2A2B, +0x2A2D=>0x2A2E, +0x2A2E=>0x2A2D, +0x2A34=>0x2A35, +0x2A35=>0x2A34, +0x2A3C=>0x2A3D, +0x2A3D=>0x2A3C, +0x2A64=>0x2A65, +0x2A65=>0x2A64, +0x2A79=>0x2A7A, +0x2A7A=>0x2A79, +0x2A7D=>0x2A7E, +0x2A7E=>0x2A7D, +0x2A7F=>0x2A80, +0x2A80=>0x2A7F, +0x2A81=>0x2A82, +0x2A82=>0x2A81, +0x2A83=>0x2A84, +0x2A84=>0x2A83, +0x2A8B=>0x2A8C, +0x2A8C=>0x2A8B, +0x2A91=>0x2A92, +0x2A92=>0x2A91, +0x2A93=>0x2A94, +0x2A94=>0x2A93, +0x2A95=>0x2A96, +0x2A96=>0x2A95, +0x2A97=>0x2A98, +0x2A98=>0x2A97, +0x2A99=>0x2A9A, +0x2A9A=>0x2A99, +0x2A9B=>0x2A9C, +0x2A9C=>0x2A9B, +0x2AA1=>0x2AA2, +0x2AA2=>0x2AA1, +0x2AA6=>0x2AA7, +0x2AA7=>0x2AA6, +0x2AA8=>0x2AA9, +0x2AA9=>0x2AA8, +0x2AAA=>0x2AAB, +0x2AAB=>0x2AAA, +0x2AAC=>0x2AAD, +0x2AAD=>0x2AAC, +0x2AAF=>0x2AB0, +0x2AB0=>0x2AAF, +0x2AB3=>0x2AB4, +0x2AB4=>0x2AB3, +0x2ABB=>0x2ABC, +0x2ABC=>0x2ABB, +0x2ABD=>0x2ABE, +0x2ABE=>0x2ABD, +0x2ABF=>0x2AC0, +0x2AC0=>0x2ABF, +0x2AC1=>0x2AC2, +0x2AC2=>0x2AC1, +0x2AC3=>0x2AC4, +0x2AC4=>0x2AC3, +0x2AC5=>0x2AC6, +0x2AC6=>0x2AC5, +0x2ACD=>0x2ACE, +0x2ACE=>0x2ACD, +0x2ACF=>0x2AD0, +0x2AD0=>0x2ACF, +0x2AD1=>0x2AD2, +0x2AD2=>0x2AD1, +0x2AD3=>0x2AD4, +0x2AD4=>0x2AD3, +0x2AD5=>0x2AD6, +0x2AD6=>0x2AD5, +0x2ADE=>0x22A6, +0x2AE3=>0x22A9, +0x2AE4=>0x22A8, +0x2AE5=>0x22AB, +0x2AEC=>0x2AED, +0x2AED=>0x2AEC, +0x2AF7=>0x2AF8, +0x2AF8=>0x2AF7, +0x2AF9=>0x2AFA, +0x2AFA=>0x2AF9, +0x2E02=>0x2E03, +0x2E03=>0x2E02, +0x2E04=>0x2E05, +0x2E05=>0x2E04, +0x2E09=>0x2E0A, +0x2E0A=>0x2E09, +0x2E0C=>0x2E0D, +0x2E0D=>0x2E0C, +0x2E1C=>0x2E1D, +0x2E1D=>0x2E1C, +0x3008=>0x3009, +0x3009=>0x3008, +0x300A=>0x300B, +0x300B=>0x300A, +0x300C=>0x300D, +0x300D=>0x300C, +0x300E=>0x300F, +0x300F=>0x300E, +0x3010=>0x3011, +0x3011=>0x3010, +0x3014=>0x3015, +0x3015=>0x3014, +0x3016=>0x3017, +0x3017=>0x3016, +0x3018=>0x3019, +0x3019=>0x3018, +0x301A=>0x301B, +0x301B=>0x301A, +0x301D=>0x301E, +0x301E=>0x301D, +0xFE59=>0xFE5A, +0xFE5A=>0xFE59, +0xFE5B=>0xFE5C, +0xFE5C=>0xFE5B, +0xFE5D=>0xFE5E, +0xFE5E=>0xFE5D, +0xFE64=>0xFE65, +0xFE65=>0xFE64, +0xFF08=>0xFF09, +0xFF09=>0xFF08, +0xFF1C=>0xFF1E, +0xFF1E=>0xFF1C, +0xFF3B=>0xFF3D, +0xFF3D=>0xFF3B, +0xFF5B=>0xFF5D, +0xFF5D=>0xFF5B, +0xFF5F=>0xFF60, +0xFF60=>0xFF5F, +0xFF62=>0xFF63, +0xFF63=>0xFF62); + +/** + * Arabic shape substitutions: char code => (isolated, final, initial, medial). + * @public + */ +public static $uni_arabicsubst = array( +1569=>array(65152), +1570=>array(65153, 65154, 65153, 65154), +1571=>array(65155, 65156, 65155, 65156), +1572=>array(65157, 65158), +1573=>array(65159, 65160, 65159, 65160), +1574=>array(65161, 65162, 65163, 65164), +1575=>array(65165, 65166, 65165, 65166), +1576=>array(65167, 65168, 65169, 65170), +1577=>array(65171, 65172), +1578=>array(65173, 65174, 65175, 65176), +1579=>array(65177, 65178, 65179, 65180), +1580=>array(65181, 65182, 65183, 65184), +1581=>array(65185, 65186, 65187, 65188), +1582=>array(65189, 65190, 65191, 65192), +1583=>array(65193, 65194, 65193, 65194), +1584=>array(65195, 65196, 65195, 65196), +1585=>array(65197, 65198, 65197, 65198), +1586=>array(65199, 65200, 65199, 65200), +1587=>array(65201, 65202, 65203, 65204), +1588=>array(65205, 65206, 65207, 65208), +1589=>array(65209, 65210, 65211, 65212), +1590=>array(65213, 65214, 65215, 65216), +1591=>array(65217, 65218, 65219, 65220), +1592=>array(65221, 65222, 65223, 65224), +1593=>array(65225, 65226, 65227, 65228), +1594=>array(65229, 65230, 65231, 65232), +1601=>array(65233, 65234, 65235, 65236), +1602=>array(65237, 65238, 65239, 65240), +1603=>array(65241, 65242, 65243, 65244), +1604=>array(65245, 65246, 65247, 65248), +1605=>array(65249, 65250, 65251, 65252), +1606=>array(65253, 65254, 65255, 65256), +1607=>array(65257, 65258, 65259, 65260), +1608=>array(65261, 65262, 65261, 65262), +1609=>array(65263, 65264, 64488, 64489), +1610=>array(65265, 65266, 65267, 65268), +1649=>array(64336, 64337), +1655=>array(64477), +1657=>array(64358, 64359, 64360, 64361), +1658=>array(64350, 64351, 64352, 64353), +1659=>array(64338, 64339, 64340, 64341), +1662=>array(64342, 64343, 64344, 64345), +1663=>array(64354, 64355, 64356, 64357), +1664=>array(64346, 64347, 64348, 64349), +1667=>array(64374, 64375, 64376, 64377), +1668=>array(64370, 64371, 64372, 64373), +1670=>array(64378, 64379, 64380, 64381), +1671=>array(64382, 64383, 64384, 64385), +1672=>array(64392, 64393), +1676=>array(64388, 64389), +1677=>array(64386, 64387), +1678=>array(64390, 64391), +1681=>array(64396, 64397), +1688=>array(64394, 64395, 64394, 64395), +1700=>array(64362, 64363, 64364, 64365), +1702=>array(64366, 64367, 64368, 64369), +1705=>array(64398, 64399, 64400, 64401), +1709=>array(64467, 64468, 64469, 64470), +1711=>array(64402, 64403, 64404, 64405), +1713=>array(64410, 64411, 64412, 64413), +1715=>array(64406, 64407, 64408, 64409), +1722=>array(64414, 64415), +1723=>array(64416, 64417, 64418, 64419), +1726=>array(64426, 64427, 64428, 64429), +1728=>array(64420, 64421), +1729=>array(64422, 64423, 64424, 64425), +1733=>array(64480, 64481), +1734=>array(64473, 64474), +1735=>array(64471, 64472), +1736=>array(64475, 64476), +1737=>array(64482, 64483), +1739=>array(64478, 64479), +1740=>array(64508, 64509, 64510, 64511), +1744=>array(64484, 64485, 64486, 64487), +1746=>array(64430, 64431), +1747=>array(64432, 64433) +); + +/** + * Arabic laa letter: (char code => isolated, final, initial, medial). + * @public + */ +public static $uni_laa_array = array ( +1570 =>array(65269, 65270, 65269, 65270), +1571 =>array(65271, 65272, 65271, 65272), +1573 =>array(65273, 65274, 65273, 65274), +1575 =>array(65275, 65276, 65275, 65276) +); + +/** + * Array of character substitutions for sequences of two diacritics symbols. + * Putting the combining mark and character in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner. + * second NSM char code => substitution char + * @public + */ +public static $uni_diacritics = array ( +1612=>64606, # Shadda + Dammatan +1613=>64607, # Shadda + Kasratan +1614=>64608, # Shadda + Fatha +1615=>64609, # Shadda + Damma +1616=>64610 # Shadda + Kasra +); + +/** + * Array of character substitutions from UTF-8 Unicode to Latin1. + * @public + */ +public static $uni_utf8tolatin = array ( +8364=>128, # Euro1 +338=>140, # OE +352=>138, # Scaron +376=>159, # Ydieresis +381=>142, # Zcaron2 +8226=>149, # bullet3 +710=>136, # circumflex +8224=>134, # dagger +8225=>135, # daggerdbl +8230=>133, # ellipsis +8212=>151, # emdash +8211=>150, # endash +402=>131, # florin +8249=>139, # guilsinglleft +8250=>155, # guilsinglright +339=>156, # oe +8240=>137, # perthousand +8222=>132, # quotedblbase +8220=>147, # quotedblleft +8221=>148, # quotedblright +8216=>145, # quoteleft +8217=>146, # quoteright +8218=>130, # quotesinglbase +353=>154, # scaron +732=>152, # tilde +8482=>153, # trademark +382=>158 # zcaron2 +); + +/** + * Array of Encoding Maps. + * @public static + */ +public static $encmap = array( + +// encoding map for: cp874 +'cp874' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'ellipsis',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'), + +// encoding map for: cp1250 +'cp1250' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'Sacute',141=>'Tcaron',142=>'Zcaron',143=>'Zacute',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'sacute',157=>'tcaron',158=>'zcaron',159=>'zacute',160=>'space',161=>'caron',162=>'breve',163=>'Lslash',164=>'currency',165=>'Aogonek',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'Scedilla',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'ogonek',179=>'lslash',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'aogonek',186=>'scedilla',187=>'guillemotright',188=>'Lcaron',189=>'hungarumlaut',190=>'lcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'), + +// encoding map for: cp1251 +'cp1251' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'afii10051',129=>'afii10052',130=>'quotesinglbase',131=>'afii10100',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'Euro',137=>'perthousand',138=>'afii10058',139=>'guilsinglleft',140=>'afii10059',141=>'afii10061',142=>'afii10060',143=>'afii10145',144=>'afii10099',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii10106',155=>'guilsinglright',156=>'afii10107',157=>'afii10109',158=>'afii10108',159=>'afii10193',160=>'space',161=>'afii10062',162=>'afii10110',163=>'afii10057',164=>'currency',165=>'afii10050',166=>'brokenbar',167=>'section',168=>'afii10023',169=>'copyright',170=>'afii10053',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii10056',176=>'degree',177=>'plusminus',178=>'afii10055',179=>'afii10103',180=>'afii10098',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'afii10071',185=>'afii61352',186=>'afii10101',187=>'guillemotright',188=>'afii10105',189=>'afii10054',190=>'afii10102',191=>'afii10104',192=>'afii10017',193=>'afii10018',194=>'afii10019',195=>'afii10020',196=>'afii10021',197=>'afii10022',198=>'afii10024',199=>'afii10025',200=>'afii10026',201=>'afii10027',202=>'afii10028',203=>'afii10029',204=>'afii10030',205=>'afii10031',206=>'afii10032',207=>'afii10033',208=>'afii10034',209=>'afii10035',210=>'afii10036',211=>'afii10037',212=>'afii10038',213=>'afii10039',214=>'afii10040',215=>'afii10041',216=>'afii10042',217=>'afii10043',218=>'afii10044',219=>'afii10045',220=>'afii10046',221=>'afii10047',222=>'afii10048',223=>'afii10049',224=>'afii10065',225=>'afii10066',226=>'afii10067',227=>'afii10068',228=>'afii10069',229=>'afii10070',230=>'afii10072',231=>'afii10073',232=>'afii10074',233=>'afii10075',234=>'afii10076',235=>'afii10077',236=>'afii10078',237=>'afii10079',238=>'afii10080',239=>'afii10081',240=>'afii10082',241=>'afii10083',242=>'afii10084',243=>'afii10085',244=>'afii10086',245=>'afii10087',246=>'afii10088',247=>'afii10089',248=>'afii10090',249=>'afii10091',250=>'afii10092',251=>'afii10093',252=>'afii10094',253=>'afii10095',254=>'afii10096',255=>'afii10097'), + +// encoding map for: cp1252 +'cp1252' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'Zcaron',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'zcaron',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), + +// encoding map for: cp1253 +'cp1253' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'dieresistonos',162=>'Alphatonos',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'), + +// encoding map for: cp1254 +'cp1254' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'), + +// encoding map for: cp1255 +'cp1255' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'afii57636',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'multiply',171=>'guillemotleft',172=>'logicalnot',173=>'sfthyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'middot',184=>'cedilla',185=>'onesuperior',186=>'divide',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'afii57799',193=>'afii57801',194=>'afii57800',195=>'afii57802',196=>'afii57793',197=>'afii57794',198=>'afii57795',199=>'afii57798',200=>'afii57797',201=>'afii57806',202=>'.notdef',203=>'afii57796',204=>'afii57807',205=>'afii57839',206=>'afii57645',207=>'afii57841',208=>'afii57842',209=>'afii57804',210=>'afii57803',211=>'afii57658',212=>'afii57716',213=>'afii57717',214=>'afii57718',215=>'gereshhebrew',216=>'gershayimhebrew',217=>'.notdef',218=>'.notdef',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'.notdef',224=>'afii57664',225=>'afii57665',226=>'afii57666',227=>'afii57667',228=>'afii57668',229=>'afii57669',230=>'afii57670',231=>'afii57671',232=>'afii57672',233=>'afii57673',234=>'afii57674',235=>'afii57675',236=>'afii57676',237=>'afii57677',238=>'afii57678',239=>'afii57679',240=>'afii57680',241=>'afii57681',242=>'afii57682',243=>'afii57683',244=>'afii57684',245=>'afii57685',246=>'afii57686',247=>'afii57687',248=>'afii57688',249=>'afii57689',250=>'afii57690',251=>'.notdef',252=>'.notdef',253=>'afii299',254=>'afii300',255=>'.notdef'), + +// encoding map for: cp1256 +'cp1256' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'afii57506',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'afii57511',139=>'guilsinglleft',140=>'OE',141=>'afii57507',142=>'afii57508',143=>'afii57512',144=>'afii57509',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii57513',155=>'guilsinglright',156=>'oe',157=>'afii61664',158=>'afii301',159=>'afii57514',160=>'space',161=>'afii57388',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'afii57403',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'afii57407',192=>'.notdef',193=>'afii57409',194=>'afii57410',195=>'afii57411',196=>'afii57412',197=>'afii57413',198=>'afii57414',199=>'afii57415',200=>'afii57416',201=>'afii57417',202=>'afii57418',203=>'afii57419',204=>'afii57420',205=>'afii57421',206=>'afii57422',207=>'afii57423',208=>'afii57424',209=>'afii57425',210=>'afii57426',211=>'afii57427',212=>'afii57428',213=>'afii57429',214=>'afii57430',215=>'multiply',216=>'afii57431',217=>'afii57432',218=>'afii57433',219=>'afii57434',220=>'afii57440',221=>'afii57441',222=>'afii57442',223=>'afii57443',224=>'agrave',225=>'afii57444',226=>'acircumflex',227=>'afii57445',228=>'afii57446',229=>'afii57470',230=>'afii57448',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'afii57449',237=>'afii57450',238=>'icircumflex',239=>'idieresis',240=>'afii57451',241=>'afii57452',242=>'afii57453',243=>'afii57454',244=>'ocircumflex',245=>'afii57455',246=>'afii57456',247=>'divide',248=>'afii57457',249=>'ugrave',250=>'afii57458',251=>'ucircumflex',252=>'udieresis',253=>'afii299',254=>'afii300',255=>'afii57519'), + +// encoding map for: cp1257 +'cp1257' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'dieresis',142=>'caron',143=>'cedilla',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'macron',158=>'ogonek',159=>'.notdef',160=>'space',161=>'.notdef',162=>'cent',163=>'sterling',164=>'currency',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'Oslash',169=>'copyright',170=>'Rcommaaccent',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'AE',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'oslash',185=>'onesuperior',186=>'rcommaaccent',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'ae',192=>'Aogonek',193=>'Iogonek',194=>'Amacron',195=>'Cacute',196=>'Adieresis',197=>'Aring',198=>'Eogonek',199=>'Emacron',200=>'Ccaron',201=>'Eacute',202=>'Zacute',203=>'Edotaccent',204=>'Gcommaaccent',205=>'Kcommaaccent',206=>'Imacron',207=>'Lcommaaccent',208=>'Scaron',209=>'Nacute',210=>'Ncommaaccent',211=>'Oacute',212=>'Omacron',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Uogonek',217=>'Lslash',218=>'Sacute',219=>'Umacron',220=>'Udieresis',221=>'Zdotaccent',222=>'Zcaron',223=>'germandbls',224=>'aogonek',225=>'iogonek',226=>'amacron',227=>'cacute',228=>'adieresis',229=>'aring',230=>'eogonek',231=>'emacron',232=>'ccaron',233=>'eacute',234=>'zacute',235=>'edotaccent',236=>'gcommaaccent',237=>'kcommaaccent',238=>'imacron',239=>'lcommaaccent',240=>'scaron',241=>'nacute',242=>'ncommaaccent',243=>'oacute',244=>'omacron',245=>'otilde',246=>'odieresis',247=>'divide',248=>'uogonek',249=>'lslash',250=>'sacute',251=>'umacron',252=>'udieresis',253=>'zdotaccent',254=>'zcaron',255=>'dotaccent'), + +// encoding map for: cp1258 +'cp1258' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'gravecomb',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Ntilde',210=>'hookabovecomb',211=>'Oacute',212=>'Ocircumflex',213=>'Ohorn',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Uhorn',222=>'tildecomb',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'acutecomb',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'ntilde',242=>'dotbelowcomb',243=>'oacute',244=>'ocircumflex',245=>'ohorn',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'uhorn',254=>'dong',255=>'ydieresis'), + +// encoding map for: iso-8859-1 +'iso-8859-1' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), + +// encoding map for: iso-8859-2 +'iso-8859-2' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'breve',163=>'Lslash',164=>'currency',165=>'Lcaron',166=>'Sacute',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Scedilla',171=>'Tcaron',172=>'Zacute',173=>'hyphen',174=>'Zcaron',175=>'Zdotaccent',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'lslash',180=>'acute',181=>'lcaron',182=>'sacute',183=>'caron',184=>'cedilla',185=>'scaron',186=>'scedilla',187=>'tcaron',188=>'zacute',189=>'hungarumlaut',190=>'zcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'), + +// encoding map for: iso-8859-4 +'iso-8859-4' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'kgreenlandic',163=>'Rcommaaccent',164=>'currency',165=>'Itilde',166=>'Lcommaaccent',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Emacron',171=>'Gcommaaccent',172=>'Tbar',173=>'hyphen',174=>'Zcaron',175=>'macron',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'rcommaaccent',180=>'acute',181=>'itilde',182=>'lcommaaccent',183=>'caron',184=>'cedilla',185=>'scaron',186=>'emacron',187=>'gcommaaccent',188=>'tbar',189=>'Eng',190=>'zcaron',191=>'eng',192=>'Amacron',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Iogonek',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Edotaccent',205=>'Iacute',206=>'Icircumflex',207=>'Imacron',208=>'Dcroat',209=>'Ncommaaccent',210=>'Omacron',211=>'Kcommaaccent',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Uogonek',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Utilde',222=>'Umacron',223=>'germandbls',224=>'amacron',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'iogonek',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'edotaccent',237=>'iacute',238=>'icircumflex',239=>'imacron',240=>'dcroat',241=>'ncommaaccent',242=>'omacron',243=>'kcommaaccent',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'uogonek',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'utilde',254=>'umacron',255=>'dotaccent'), + +// encoding map for: iso-8859-5 +'iso-8859-5' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'afii10023',162=>'afii10051',163=>'afii10052',164=>'afii10053',165=>'afii10054',166=>'afii10055',167=>'afii10056',168=>'afii10057',169=>'afii10058',170=>'afii10059',171=>'afii10060',172=>'afii10061',173=>'hyphen',174=>'afii10062',175=>'afii10145',176=>'afii10017',177=>'afii10018',178=>'afii10019',179=>'afii10020',180=>'afii10021',181=>'afii10022',182=>'afii10024',183=>'afii10025',184=>'afii10026',185=>'afii10027',186=>'afii10028',187=>'afii10029',188=>'afii10030',189=>'afii10031',190=>'afii10032',191=>'afii10033',192=>'afii10034',193=>'afii10035',194=>'afii10036',195=>'afii10037',196=>'afii10038',197=>'afii10039',198=>'afii10040',199=>'afii10041',200=>'afii10042',201=>'afii10043',202=>'afii10044',203=>'afii10045',204=>'afii10046',205=>'afii10047',206=>'afii10048',207=>'afii10049',208=>'afii10065',209=>'afii10066',210=>'afii10067',211=>'afii10068',212=>'afii10069',213=>'afii10070',214=>'afii10072',215=>'afii10073',216=>'afii10074',217=>'afii10075',218=>'afii10076',219=>'afii10077',220=>'afii10078',221=>'afii10079',222=>'afii10080',223=>'afii10081',224=>'afii10082',225=>'afii10083',226=>'afii10084',227=>'afii10085',228=>'afii10086',229=>'afii10087',230=>'afii10088',231=>'afii10089',232=>'afii10090',233=>'afii10091',234=>'afii10092',235=>'afii10093',236=>'afii10094',237=>'afii10095',238=>'afii10096',239=>'afii10097',240=>'afii61352',241=>'afii10071',242=>'afii10099',243=>'afii10100',244=>'afii10101',245=>'afii10102',246=>'afii10103',247=>'afii10104',248=>'afii10105',249=>'afii10106',250=>'afii10107',251=>'afii10108',252=>'afii10109',253=>'section',254=>'afii10110',255=>'afii10193'), + +// encoding map for: iso-8859-7 +'iso-8859-7' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'quoteleft',162=>'quoteright',163=>'sterling',164=>'.notdef',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'.notdef',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'dieresistonos',182=>'Alphatonos',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'), + +// encoding map for: iso-8859-9 +'iso-8859-9' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'), + +// encoding map for: iso-8859-11 +'iso-8859-11' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'), + +// encoding map for: iso-8859-15 +'iso-8859-15' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'Euro',165=>'yen',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'Zcaron',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), + +// encoding map for: iso-8859-16 +'iso-8859-16' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'aogonek',163=>'Lslash',164=>'Euro',165=>'quotedblbase',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'Scommaaccent',171=>'guillemotleft',172=>'Zacute',173=>'hyphen',174=>'zacute',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'Ccaron',179=>'lslash',180=>'Zcaron',181=>'quotedblright',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'ccaron',186=>'scommaaccent',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'zdotaccent',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Cacute',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Nacute',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'Sacute',216=>'Uhungarumlaut',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Eogonek',222=>'Tcommaaccent',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'cacute',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'nacute',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'sacute',248=>'uhungarumlaut',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'eogonek',254=>'tcommaaccent',255=>'ydieresis'), + +// encoding map for: koi8-r +'koi8-r' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'periodcentered',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'SF520000',165=>'SF390000',166=>'SF220000',167=>'SF210000',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'SF270000',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'SF200000',181=>'SF230000',182=>'SF470000',183=>'SF480000',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'SF530000',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'), + +// encoding map for: koi8-u +'koi8-u' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'bullet',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'afii10101',165=>'SF390000',166=>'afii10103',167=>'afii10104',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'afii10098',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'afii10053',181=>'SF230000',182=>'afii10055',183=>'afii10056',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'afii10050',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'), + +// encoding map for: symbol +'symbol' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'universal',35=>'numbersign',36=>'existential',37=>'percent',38=>'ampersand',39=>'suchthat',40=>'parenleft',41=>'parenright',42=>'asteriskmath',43=>'plus',44=>'comma',45=>'minus',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'congruent',65=>'Alpha',66=>'Beta',67=>'Chi',68=>'Delta',69=>'Epsilon',70=>'Phi',71=>'Gamma',72=>'Eta',73=>'Iota',74=>'theta1',75=>'Kappa',76=>'Lambda',77=>'Mu',78=>'Nu',79=>'Omicron',80=>'Pi',81=>'Theta',82=>'Rho',83=>'Sigma',84=>'Tau',85=>'Upsilon',86=>'sigma1',87=>'Omega',88=>'Xi',89=>'Psi',90=>'Zeta',91=>'bracketleft',92=>'therefore',93=>'bracketright',94=>'perpendicular',95=>'underscore',96=>'radicalex',97=>'alpha',98=>'beta',99=>'chi',100=>'delta',101=>'epsilon',102=>'phi',103=>'gamma',104=>'eta',105=>'iota',106=>'phi1',107=>'kappa',108=>'lambda',109=>'mu',110=>'nu',111=>'omicron',112=>'pi',113=>'theta',114=>'rho',115=>'sigma',116=>'tau',117=>'upsilon',118=>'omega1',119=>'omega',120=>'xi',121=>'psi',122=>'zeta',123=>'braceleft',124=>'bar',125=>'braceright',126=>'similar',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'Euro',161=>'Upsilon1',162=>'minute',163=>'lessequal',164=>'fraction',165=>'infinity',166=>'florin',167=>'club',168=>'diamond',169=>'heart',170=>'spade',171=>'arrowboth',172=>'arrowleft',173=>'arrowup',174=>'arrowright',175=>'arrowdown',176=>'degree',177=>'plusminus',178=>'second',179=>'greaterequal',180=>'multiply',181=>'proportional',182=>'partialdiff',183=>'bullet',184=>'divide',185=>'notequal',186=>'equivalence',187=>'approxequal',188=>'ellipsis',189=>'arrowvertex',190=>'arrowhorizex',191=>'carriagereturn',192=>'aleph',193=>'Ifraktur',194=>'Rfraktur',195=>'weierstrass',196=>'circlemultiply',197=>'circleplus',198=>'emptyset',199=>'intersection',200=>'union',201=>'propersuperset',202=>'reflexsuperset',203=>'notsubset',204=>'propersubset',205=>'reflexsubset',206=>'element',207=>'notelement',208=>'angle',209=>'gradient',210=>'registerserif',211=>'copyrightserif',212=>'trademarkserif',213=>'product',214=>'radical',215=>'dotmath',216=>'logicalnot',217=>'logicaland',218=>'logicalor',219=>'arrowdblboth',220=>'arrowdblleft',221=>'arrowdblup',222=>'arrowdblright',223=>'arrowdbldown',224=>'lozenge',225=>'angleleft',226=>'registersans',227=>'copyrightsans',228=>'trademarksans',229=>'summation',230=>'parenlefttp',231=>'parenleftex',232=>'parenleftbt',233=>'bracketlefttp',234=>'bracketleftex',235=>'bracketleftbt',236=>'bracelefttp',237=>'braceleftmid',238=>'braceleftbt',239=>'braceex',240=>'.notdef',241=>'angleright',242=>'integral',243=>'integraltp',244=>'integralex',245=>'integralbt',246=>'parenrighttp',247=>'parenrightex',248=>'parenrightbt',249=>'bracketrighttp',250=>'bracketrightex',251=>'bracketrightbt',252=>'bracerighttp',253=>'bracerightmid',254=>'bracerightbt',255=>'.notdef',1226=>'registered',1227=>'copyright',1228=>'trademark') + +); // end of encoding maps + +/** + * ToUnicode map for Identity-H stream + * @public static + */ +public static $uni_identity_h = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n/WMode 0 def\n1 begincodespacerange\n<0000> \nendcodespacerange\n100 beginbfrange\n<0000> <00ff> <0000>\n<0100> <01ff> <0100>\n<0200> <02ff> <0200>\n<0300> <03ff> <0300>\n<0400> <04ff> <0400>\n<0500> <05ff> <0500>\n<0600> <06ff> <0600>\n<0700> <07ff> <0700>\n<0800> <08ff> <0800>\n<0900> <09ff> <0900>\n<0a00> <0aff> <0a00>\n<0b00> <0bff> <0b00>\n<0c00> <0cff> <0c00>\n<0d00> <0dff> <0d00>\n<0e00> <0eff> <0e00>\n<0f00> <0fff> <0f00>\n<1000> <10ff> <1000>\n<1100> <11ff> <1100>\n<1200> <12ff> <1200>\n<1300> <13ff> <1300>\n<1400> <14ff> <1400>\n<1500> <15ff> <1500>\n<1600> <16ff> <1600>\n<1700> <17ff> <1700>\n<1800> <18ff> <1800>\n<1900> <19ff> <1900>\n<1a00> <1aff> <1a00>\n<1b00> <1bff> <1b00>\n<1c00> <1cff> <1c00>\n<1d00> <1dff> <1d00>\n<1e00> <1eff> <1e00>\n<1f00> <1fff> <1f00>\n<2000> <20ff> <2000>\n<2100> <21ff> <2100>\n<2200> <22ff> <2200>\n<2300> <23ff> <2300>\n<2400> <24ff> <2400>\n<2500> <25ff> <2500>\n<2600> <26ff> <2600>\n<2700> <27ff> <2700>\n<2800> <28ff> <2800>\n<2900> <29ff> <2900>\n<2a00> <2aff> <2a00>\n<2b00> <2bff> <2b00>\n<2c00> <2cff> <2c00>\n<2d00> <2dff> <2d00>\n<2e00> <2eff> <2e00>\n<2f00> <2fff> <2f00>\n<3000> <30ff> <3000>\n<3100> <31ff> <3100>\n<3200> <32ff> <3200>\n<3300> <33ff> <3300>\n<3400> <34ff> <3400>\n<3500> <35ff> <3500>\n<3600> <36ff> <3600>\n<3700> <37ff> <3700>\n<3800> <38ff> <3800>\n<3900> <39ff> <3900>\n<3a00> <3aff> <3a00>\n<3b00> <3bff> <3b00>\n<3c00> <3cff> <3c00>\n<3d00> <3dff> <3d00>\n<3e00> <3eff> <3e00>\n<3f00> <3fff> <3f00>\n<4000> <40ff> <4000>\n<4100> <41ff> <4100>\n<4200> <42ff> <4200>\n<4300> <43ff> <4300>\n<4400> <44ff> <4400>\n<4500> <45ff> <4500>\n<4600> <46ff> <4600>\n<4700> <47ff> <4700>\n<4800> <48ff> <4800>\n<4900> <49ff> <4900>\n<4a00> <4aff> <4a00>\n<4b00> <4bff> <4b00>\n<4c00> <4cff> <4c00>\n<4d00> <4dff> <4d00>\n<4e00> <4eff> <4e00>\n<4f00> <4fff> <4f00>\n<5000> <50ff> <5000>\n<5100> <51ff> <5100>\n<5200> <52ff> <5200>\n<5300> <53ff> <5300>\n<5400> <54ff> <5400>\n<5500> <55ff> <5500>\n<5600> <56ff> <5600>\n<5700> <57ff> <5700>\n<5800> <58ff> <5800>\n<5900> <59ff> <5900>\n<5a00> <5aff> <5a00>\n<5b00> <5bff> <5b00>\n<5c00> <5cff> <5c00>\n<5d00> <5dff> <5d00>\n<5e00> <5eff> <5e00>\n<5f00> <5fff> <5f00>\n<6000> <60ff> <6000>\n<6100> <61ff> <6100>\n<6200> <62ff> <6200>\n<6300> <63ff> <6300>\nendbfrange\n100 beginbfrange\n<6400> <64ff> <6400>\n<6500> <65ff> <6500>\n<6600> <66ff> <6600>\n<6700> <67ff> <6700>\n<6800> <68ff> <6800>\n<6900> <69ff> <6900>\n<6a00> <6aff> <6a00>\n<6b00> <6bff> <6b00>\n<6c00> <6cff> <6c00>\n<6d00> <6dff> <6d00>\n<6e00> <6eff> <6e00>\n<6f00> <6fff> <6f00>\n<7000> <70ff> <7000>\n<7100> <71ff> <7100>\n<7200> <72ff> <7200>\n<7300> <73ff> <7300>\n<7400> <74ff> <7400>\n<7500> <75ff> <7500>\n<7600> <76ff> <7600>\n<7700> <77ff> <7700>\n<7800> <78ff> <7800>\n<7900> <79ff> <7900>\n<7a00> <7aff> <7a00>\n<7b00> <7bff> <7b00>\n<7c00> <7cff> <7c00>\n<7d00> <7dff> <7d00>\n<7e00> <7eff> <7e00>\n<7f00> <7fff> <7f00>\n<8000> <80ff> <8000>\n<8100> <81ff> <8100>\n<8200> <82ff> <8200>\n<8300> <83ff> <8300>\n<8400> <84ff> <8400>\n<8500> <85ff> <8500>\n<8600> <86ff> <8600>\n<8700> <87ff> <8700>\n<8800> <88ff> <8800>\n<8900> <89ff> <8900>\n<8a00> <8aff> <8a00>\n<8b00> <8bff> <8b00>\n<8c00> <8cff> <8c00>\n<8d00> <8dff> <8d00>\n<8e00> <8eff> <8e00>\n<8f00> <8fff> <8f00>\n<9000> <90ff> <9000>\n<9100> <91ff> <9100>\n<9200> <92ff> <9200>\n<9300> <93ff> <9300>\n<9400> <94ff> <9400>\n<9500> <95ff> <9500>\n<9600> <96ff> <9600>\n<9700> <97ff> <9700>\n<9800> <98ff> <9800>\n<9900> <99ff> <9900>\n<9a00> <9aff> <9a00>\n<9b00> <9bff> <9b00>\n<9c00> <9cff> <9c00>\n<9d00> <9dff> <9d00>\n<9e00> <9eff> <9e00>\n<9f00> <9fff> <9f00>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nendbfrange\n56 beginbfrange\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"; + +} // END OF TCPDF_FONT_DATA CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php new file mode 100644 index 000000000..a7f0486a9 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php @@ -0,0 +1,2583 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description :Font methods for TCPDF library. +// +//============================================================+ + +/** + * @file + * Unicode data and font methods for TCPDF library. + * @author Nicola Asuni + * @package com.tecnick.tcpdf + */ + +/** + * @class TCPDF_FONTS + * Font methods for TCPDF library. + * @package com.tecnick.tcpdf + * @version 1.0.013 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_FONTS { + + /** + * Static cache used for speed up uniord performances + * @protected + */ + protected static $cache_uniord = array(); + + /** + * Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable). + * @param $fontfile (string) Font file (full path). + * @param $fonttype (string) Font type. Leave empty for autodetect mode. Valid values are: TrueTypeUnicode, TrueType, Type1, CID0JP = CID-0 Japanese, CID0KR = CID-0 Korean, CID0CS = CID-0 Chinese Simplified, CID0CT = CID-0 Chinese Traditional. + * @param $enc (string) Name of the encoding table to use. Leave empty for default mode. Omit this parameter for TrueType Unicode and symbolic fonts like Symbol or ZapfDingBats. + * @param $flags (int) Unsigned 32-bit integer containing flags specifying various characteristics of the font (PDF32000:2008 - 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for symbol or +32 for non-symbol; +64 for italic. Fixed and Italic mode are generally autodetected so you have to set it to 32 = non-symbolic font (default) or 4 = symbolic font. + * @param $outpath (string) Output path for generated font files (must be writeable by the web server). Leave empty for default font folder. + * @param $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1). + * @param $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4. + * @param $addcbbox (boolean) If true includes the character bounding box information on the php font file. + * @param $link (boolean) If true link to system font instead of copying the font data (not transportable) - Note: do not work with Type1 fonts. + * @return (string) TCPDF font name or boolean false in case of error. + * @author Nicola Asuni + * @since 5.9.123 (2010-09-30) + * @public static + */ + public static function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false, $link=false) { + if (!file_exists($fontfile)) { + // Could not find file + return false; + } + // font metrics + $fmetric = array(); + // build new font name for TCPDF compatibility + $font_path_parts = pathinfo($fontfile); + if (!isset($font_path_parts['filename'])) { + $font_path_parts['filename'] = substr($font_path_parts['basename'], 0, -(strlen($font_path_parts['extension']) + 1)); + } + $font_name = strtolower($font_path_parts['filename']); + $font_name = preg_replace('/[^a-z0-9_]/', '', $font_name); + $search = array('bold', 'oblique', 'italic', 'regular'); + $replace = array('b', 'i', 'i', ''); + $font_name = str_replace($search, $replace, $font_name); + if (empty($font_name)) { + // set generic name + $font_name = 'tcpdffont'; + } + // set output path + if (empty($outpath)) { + $outpath = self::_getfontpath(); + } + // check if this font already exist + if (@file_exists($outpath.$font_name.'.php')) { + // this font already exist (delete it from fonts folder to rebuild it) + return $font_name; + } + $fmetric['file'] = $font_name; + $fmetric['ctg'] = $font_name.'.ctg.z'; + // get font data + $font = file_get_contents($fontfile); + $fmetric['originalsize'] = strlen($font); + // autodetect font type + if (empty($fonttype)) { + if (TCPDF_STATIC::_getULONG($font, 0) == 0x10000) { + // True Type (Unicode or not) + $fonttype = 'TrueTypeUnicode'; + } elseif (substr($font, 0, 4) == 'OTTO') { + // Open Type (Unicode or not) + //Unsupported font format: OpenType with CFF data + return false; + } else { + // Type 1 + $fonttype = 'Type1'; + } + } + // set font type + switch ($fonttype) { + case 'CID0CT': + case 'CID0CS': + case 'CID0KR': + case 'CID0JP': { + $fmetric['type'] = 'cidfont0'; + break; + } + case 'Type1': { + $fmetric['type'] = 'Type1'; + if (empty($enc) AND (($flags & 4) == 0)) { + $enc = 'cp1252'; + } + break; + } + case 'TrueType': { + $fmetric['type'] = 'TrueType'; + break; + } + case 'TrueTypeUnicode': + default: { + $fmetric['type'] = 'TrueTypeUnicode'; + break; + } + } + // set encoding maps (if any) + $fmetric['enc'] = preg_replace('/[^A-Za-z0-9_\-]/', '', $enc); + $fmetric['diff'] = ''; + if (($fmetric['type'] == 'TrueType') OR ($fmetric['type'] == 'Type1')) { + if (!empty($enc) AND ($enc != 'cp1252') AND isset(TCPDF_FONT_DATA::$encmap[$enc])) { + // build differences from reference encoding + $enc_ref = TCPDF_FONT_DATA::$encmap['cp1252']; + $enc_target = TCPDF_FONT_DATA::$encmap[$enc]; + $last = 0; + for ($i = 32; $i <= 255; ++$i) { + if ($enc_target != $enc_ref[$i]) { + if ($i != ($last + 1)) { + $fmetric['diff'] .= $i.' '; + } + $last = $i; + $fmetric['diff'] .= '/'.$enc_target[$i].' '; + } + } + } + } + // parse the font by type + if ($fmetric['type'] == 'Type1') { + // ---------- TYPE 1 ---------- + // read first segment + $a = unpack('Cmarker/Ctype/Vsize', substr($font, 0, 6)); + if ($a['marker'] != 128) { + // Font file is not a valid binary Type1 + return false; + } + $fmetric['size1'] = $a['size']; + $data = substr($font, 6, $fmetric['size1']); + // read second segment + $a = unpack('Cmarker/Ctype/Vsize', substr($font, (6 + $fmetric['size1']), 6)); + if ($a['marker'] != 128) { + // Font file is not a valid binary Type1 + return false; + } + $fmetric['size2'] = $a['size']; + $encrypted = substr($font, (12 + $fmetric['size1']), $fmetric['size2']); + $data .= $encrypted; + // store compressed font + $fmetric['file'] .= '.z'; + $fp = fopen($outpath.$fmetric['file'], 'wb'); + fwrite($fp, gzcompress($data)); + fclose($fp); + // get font info + $fmetric['Flags'] = $flags; + preg_match ('#/FullName[\s]*\(([^\)]*)#', $font, $matches); + $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $matches[1]); + preg_match('#/FontBBox[\s]*{([^}]*)#', $font, $matches); + $fmetric['bbox'] = trim($matches[1]); + $bv = explode(' ', $fmetric['bbox']); + $fmetric['Ascent'] = intval($bv[3]); + $fmetric['Descent'] = intval($bv[1]); + preg_match('#/ItalicAngle[\s]*([0-9\+\-]*)#', $font, $matches); + $fmetric['italicAngle'] = intval($matches[1]); + if ($fmetric['italicAngle'] != 0) { + $fmetric['Flags'] |= 64; + } + preg_match('#/UnderlinePosition[\s]*([0-9\+\-]*)#', $font, $matches); + $fmetric['underlinePosition'] = intval($matches[1]); + preg_match('#/UnderlineThickness[\s]*([0-9\+\-]*)#', $font, $matches); + $fmetric['underlineThickness'] = intval($matches[1]); + preg_match('#/isFixedPitch[\s]*([^\s]*)#', $font, $matches); + if ($matches[1] == 'true') { + $fmetric['Flags'] |= 1; + } + // get internal map + $imap = array(); + if (preg_match_all('#dup[\s]([0-9]+)[\s]*/([^\s]*)[\s]put#sU', $font, $fmap, PREG_SET_ORDER) > 0) { + foreach ($fmap as $v) { + $imap[$v[2]] = $v[1]; + } + } + // decrypt eexec encrypted part + $r = 55665; // eexec encryption constant + $c1 = 52845; + $c2 = 22719; + $elen = strlen($encrypted); + $eplain = ''; + for ($i = 0; $i < $elen; ++$i) { + $chr = ord($encrypted[$i]); + $eplain .= chr($chr ^ ($r >> 8)); + $r = ((($chr + $r) * $c1 + $c2) % 65536); + } + if (preg_match('#/ForceBold[\s]*([^\s]*)#', $eplain, $matches) > 0) { + if ($matches[1] == 'true') { + $fmetric['Flags'] |= 0x40000; + } + } + if (preg_match('#/StdVW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { + $fmetric['StemV'] = intval($matches[1]); + } else { + $fmetric['StemV'] = 70; + } + if (preg_match('#/StdHW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { + $fmetric['StemH'] = intval($matches[1]); + } else { + $fmetric['StemH'] = 30; + } + if (preg_match('#/BlueValues[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { + $bv = explode(' ', $matches[1]); + if (count($bv) >= 6) { + $v1 = intval($bv[2]); + $v2 = intval($bv[4]); + if ($v1 <= $v2) { + $fmetric['XHeight'] = $v1; + $fmetric['CapHeight'] = $v2; + } else { + $fmetric['XHeight'] = $v2; + $fmetric['CapHeight'] = $v1; + } + } else { + $fmetric['XHeight'] = 450; + $fmetric['CapHeight'] = 700; + } + } else { + $fmetric['XHeight'] = 450; + $fmetric['CapHeight'] = 700; + } + // get the number of random bytes at the beginning of charstrings + if (preg_match('#/lenIV[\s]*([0-9]*)#', $eplain, $matches) > 0) { + $lenIV = intval($matches[1]); + } else { + $lenIV = 4; + } + $fmetric['Leading'] = 0; + // get charstring data + $eplain = substr($eplain, (strpos($eplain, '/CharStrings') + 1)); + preg_match_all('#/([A-Za-z0-9\.]*)[\s][0-9]+[\s]RD[\s](.*)[\s]ND#sU', $eplain, $matches, PREG_SET_ORDER); + if (!empty($enc) AND isset(TCPDF_FONT_DATA::$encmap[$enc])) { + $enc_map = TCPDF_FONT_DATA::$encmap[$enc]; + } else { + $enc_map = false; + } + $fmetric['cw'] = ''; + $fmetric['MaxWidth'] = 0; + $cwidths = array(); + foreach ($matches as $k => $v) { + $cid = 0; + if (isset($imap[$v[1]])) { + $cid = $imap[$v[1]]; + } elseif ($enc_map !== false) { + $cid = array_search($v[1], $enc_map); + if ($cid === false) { + $cid = 0; + } elseif ($cid > 1000) { + $cid -= 1000; + } + } + // decrypt charstring encrypted part + $r = 4330; // charstring encryption constant + $c1 = 52845; + $c2 = 22719; + $cd = $v[2]; + $clen = strlen($cd); + $ccom = array(); + for ($i = 0; $i < $clen; ++$i) { + $chr = ord($cd[$i]); + $ccom[] = ($chr ^ ($r >> 8)); + $r = ((($chr + $r) * $c1 + $c2) % 65536); + } + // decode numbers + $cdec = array(); + $ck = 0; + $i = $lenIV; + while ($i < $clen) { + if ($ccom[$i] < 32) { + $cdec[$ck] = $ccom[$i]; + if (($ck > 0) AND ($cdec[$ck] == 13)) { + // hsbw command: update width + $cwidths[$cid] = $cdec[($ck - 1)]; + } + ++$i; + } elseif (($ccom[$i] >= 32) AND ($ccom[$i] <= 246)) { + $cdec[$ck] = ($ccom[$i] - 139); + ++$i; + } elseif (($ccom[$i] >= 247) AND ($ccom[$i] <= 250)) { + $cdec[$ck] = ((($ccom[$i] - 247) * 256) + $ccom[($i + 1)] + 108); + $i += 2; + } elseif (($ccom[$i] >= 251) AND ($ccom[$i] <= 254)) { + $cdec[$ck] = ((-($ccom[$i] - 251) * 256) - $ccom[($i + 1)] - 108); + $i += 2; + } elseif ($ccom[$i] == 255) { + $sval = chr($ccom[($i + 1)]).chr($ccom[($i + 2)]).chr($ccom[($i + 3)]).chr($ccom[($i + 4)]); + $vsval = unpack('li', $sval); + $cdec[$ck] = $vsval['i']; + $i += 5; + } + ++$ck; + } + } // end for each matches + $fmetric['MissingWidth'] = $cwidths[0]; + $fmetric['MaxWidth'] = $fmetric['MissingWidth']; + $fmetric['AvgWidth'] = 0; + // set chars widths + for ($cid = 0; $cid <= 255; ++$cid) { + if (isset($cwidths[$cid])) { + if ($cwidths[$cid] > $fmetric['MaxWidth']) { + $fmetric['MaxWidth'] = $cwidths[$cid]; + } + $fmetric['AvgWidth'] += $cwidths[$cid]; + $fmetric['cw'] .= ','.$cid.'=>'.$cwidths[$cid]; + } else { + $fmetric['cw'] .= ','.$cid.'=>'.$fmetric['MissingWidth']; + } + } + $fmetric['AvgWidth'] = round($fmetric['AvgWidth'] / count($cwidths)); + } else { + // ---------- TRUE TYPE ---------- + if ($fmetric['type'] != 'cidfont0') { + if ($link) { + // creates a symbolic link to the existing font + symlink($fontfile, $outpath.$fmetric['file']); + } else { + // store compressed font + $fmetric['file'] .= '.z'; + $fp = fopen($outpath.$fmetric['file'], 'wb'); + fwrite($fp, gzcompress($font)); + fclose($fp); + } + } + $offset = 0; // offset position of the font data + if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) { + // sfnt version must be 0x00010000 for TrueType version 1.0. + return false; + } + $offset += 4; + // get number of tables + $numTables = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + // skip searchRange, entrySelector and rangeShift + $offset += 6; + // tables array + $table = array(); + // ---------- get tables ---------- + for ($i = 0; $i < $numTables; ++$i) { + // get table info + $tag = substr($font, $offset, 4); + $offset += 4; + $table[$tag] = array(); + $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + } + // check magicNumber + $offset = $table['head']['offset'] + 12; + if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) { + // magicNumber must be 0x5F0F3CF5 + return false; + } + $offset += 4; + $offset += 2; // skip flags + // get FUnits + $fmetric['unitsPerEm'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + // units ratio constant + $urk = (1000 / $fmetric['unitsPerEm']); + $offset += 16; // skip created, modified + $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + $fmetric['bbox'] = ''.$xMin.' '.$yMin.' '.$xMax.' '.$yMax.''; + $macStyle = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + // PDF font flags + $fmetric['Flags'] = $flags; + if (($macStyle & 2) == 2) { + // italic flag + $fmetric['Flags'] |= 64; + } + // get offset mode (indexToLocFormat : 0 = short, 1 = long) + $offset = $table['head']['offset'] + 50; + $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0); + $offset += 2; + // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table + $indexToLoc = array(); + $offset = $table['loca']['offset']; + if ($short_offset) { + // short version + $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1 + for ($i = 0; $i < $tot_num_glyphs; ++$i) { + $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2; + $offset += 2; + } + } else { + // long version + $tot_num_glyphs = floor($table['loca']['length'] / 4); // numGlyphs + 1 + for ($i = 0; $i < $tot_num_glyphs; ++$i) { + $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + } + } + // get glyphs indexes of chars from cmap table + $offset = $table['cmap']['offset'] + 2; + $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $encodingTables = array(); + for ($i = 0; $i < $numEncodingTables; ++$i) { + $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + } + // ---------- get os/2 metrics ---------- + $offset = $table['OS/2']['offset']; + $offset += 2; // skip version + // xAvgCharWidth + $fmetric['AvgWidth'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + // usWeightClass + $usWeightClass = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); + // estimate StemV and StemH (400 = usWeightClass for Normal - Regular font) + $fmetric['StemV'] = round((70 * $usWeightClass) / 400); + $fmetric['StemH'] = round((30 * $usWeightClass) / 400); + $offset += 2; + $offset += 2; // usWidthClass + $fsType = TCPDF_STATIC::_getSHORT($font, $offset); + $offset += 2; + if ($fsType == 2) { + // This Font cannot be modified, embedded or exchanged in any manner without first obtaining permission of the legal owner. + return false; + } + // ---------- get font name ---------- + $fmetric['name'] = ''; + $offset = $table['name']['offset']; + $offset += 2; // skip Format selector (=0). + // Number of NameRecords that follow n. + $numNameRecords = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + // Offset to start of string storage (from start of table). + $stringStorageOffset = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + for ($i = 0; $i < $numNameRecords; ++$i) { + $offset += 6; // skip Platform ID, Platform-specific encoding ID, Language ID. + // Name ID. + $nameID = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + if ($nameID == 6) { + // String length (in bytes). + $stringLength = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + // String offset from start of storage area (in bytes). + $stringOffset = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $offset = ($table['name']['offset'] + $stringStorageOffset + $stringOffset); + $fmetric['name'] = substr($font, $offset, $stringLength); + $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $fmetric['name']); + break; + } else { + $offset += 4; // skip String length, String offset + } + } + if (empty($fmetric['name'])) { + $fmetric['name'] = $font_name; + } + // ---------- get post data ---------- + $offset = $table['post']['offset']; + $offset += 4; // skip Format Type + $fmetric['italicAngle'] = TCPDF_STATIC::_getFIXED($font, $offset); + $offset += 4; + $fmetric['underlinePosition'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + $fmetric['underlineThickness'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + $isFixedPitch = (TCPDF_STATIC::_getULONG($font, $offset) == 0) ? false : true; + $offset += 2; + if ($isFixedPitch) { + $fmetric['Flags'] |= 1; + } + // ---------- get hhea data ---------- + $offset = $table['hhea']['offset']; + $offset += 4; // skip Table version number + // Ascender + $fmetric['Ascent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + // Descender + $fmetric['Descent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + // LineGap + $fmetric['Leading'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); + $offset += 2; + // advanceWidthMax + $fmetric['MaxWidth'] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); + $offset += 2; + $offset += 22; // skip some values + // get the number of hMetric entries in hmtx table + $numberOfHMetrics = TCPDF_STATIC::_getUSHORT($font, $offset); + // ---------- get maxp data ---------- + $offset = $table['maxp']['offset']; + $offset += 4; // skip Table version number + // get the the number of glyphs in the font. + $numGlyphs = TCPDF_STATIC::_getUSHORT($font, $offset); + // ---------- get CIDToGIDMap ---------- + $ctg = array(); + foreach ($encodingTables as $enctable) { + // get only specified Platform ID and Encoding ID + if (($enctable['platformID'] == $platid) AND ($enctable['encodingID'] == $encid)) { + $offset = $table['cmap']['offset'] + $enctable['offset']; + $format = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + switch ($format) { + case 0: { // Format 0: Byte encoding table + $offset += 4; // skip length and version/language + for ($c = 0; $c < 256; ++$c) { + $g = TCPDF_STATIC::_getBYTE($font, $offset); + $ctg[$c] = $g; + ++$offset; + } + break; + } + case 2: { // Format 2: High-byte mapping through table + $offset += 4; // skip length and version/language + $numSubHeaders = 0; + for ($i = 0; $i < 256; ++$i) { + // Array that maps high bytes to subHeaders: value is subHeader index * 8. + $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8); + $offset += 2; + if ($numSubHeaders < $subHeaderKeys[$i]) { + $numSubHeaders = $subHeaderKeys[$i]; + } + } + // the number of subHeaders is equal to the max of subHeaderKeys + 1 + ++$numSubHeaders; + // read subHeader structures + $subHeaders = array(); + $numGlyphIndexArray = 0; + for ($k = 0; $k < $numSubHeaders; ++$k) { + $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8)); + $subHeaders[$k]['idRangeOffset'] /= 2; + $numGlyphIndexArray += $subHeaders[$k]['entryCount']; + } + for ($k = 0; $k < $numGlyphIndexArray; ++$k) { + $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + for ($i = 0; $i < 256; ++$i) { + $k = $subHeaderKeys[$i]; + if ($k == 0) { + // one byte code + $c = $i; + $g = $glyphIndexArray[0]; + $ctg[$c] = $g; + } else { + // two bytes code + $start_byte = $subHeaders[$k]['firstCode']; + $end_byte = $start_byte + $subHeaders[$k]['entryCount']; + for ($j = $start_byte; $j < $end_byte; ++$j) { + // combine high and low bytes + $c = (($i << 8) + $j); + $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']); + $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536; + if ($g < 0) { + $g = 0; + } + $ctg[$c] = $g; + } + } + } + break; + } + case 4: { // Format 4: Segment mapping to delta values + $length = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $offset += 2; // skip version/language + $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2); + $offset += 2; + $offset += 6; // skip searchRange, entrySelector, rangeShift + $endCount = array(); // array of end character codes for each segment + for ($k = 0; $k < $segCount; ++$k) { + $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $offset += 2; // skip reservedPad + $startCount = array(); // array of start character codes for each segment + for ($k = 0; $k < $segCount; ++$k) { + $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $idDelta = array(); // delta for all character codes in segment + for ($k = 0; $k < $segCount; ++$k) { + $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $idRangeOffset = array(); // Offsets into glyphIdArray or 0 + for ($k = 0; $k < $segCount; ++$k) { + $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $gidlen = (floor($length / 2) - 8 - (4 * $segCount)); + $glyphIdArray = array(); // glyph index array + for ($k = 0; $k < $gidlen; ++$k) { + $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + for ($k = 0; $k < $segCount; ++$k) { + for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) { + if ($idRangeOffset[$k] == 0) { + $g = ($idDelta[$k] + $c) % 65536; + } else { + $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k)); + $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536; + } + if ($g < 0) { + $g = 0; + } + $ctg[$c] = $g; + } + } + break; + } + case 6: { // Format 6: Trimmed table mapping + $offset += 4; // skip length and version/language + $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + for ($k = 0; $k < $entryCount; ++$k) { + $c = ($k + $firstCode); + $g = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $ctg[$c] = $g; + } + break; + } + case 8: { // Format 8: Mixed 16-bit and 32-bit coverage + $offset += 10; // skip reserved, length and version/language + for ($k = 0; $k < 8192; ++$k) { + $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset); + ++$offset; + } + $nGroups = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($i = 0; $i < $nGroups; ++$i) { + $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($k = $startCharCode; $k <= $endCharCode; ++$k) { + $is32idx = floor($c / 8); + if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) { + $c = $k; + } else { + // 32 bit format + // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4) + //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232 + //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888 + $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888; + } + $ctg[$c] = 0; + ++$startGlyphID; + } + } + break; + } + case 10: { // Format 10: Trimmed array + $offset += 10; // skip reserved, length and version/language + $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $numChars = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($k = 0; $k < $numChars; ++$k) { + $c = ($k + $startCharCode); + $g = TCPDF_STATIC::_getUSHORT($font, $offset); + $ctg[$c] = $g; + $offset += 2; + } + break; + } + case 12: { // Format 12: Segmented coverage + $offset += 10; // skip length and version/language + $nGroups = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($k = 0; $k < $nGroups; ++$k) { + $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($c = $startCharCode; $c <= $endCharCode; ++$c) { + $ctg[$c] = $startGlyphCode; + ++$startGlyphCode; + } + } + break; + } + case 13: { // Format 13: Many-to-one range mappings + // to be implemented ... + break; + } + case 14: { // Format 14: Unicode Variation Sequences + // to be implemented ... + break; + } + } + } + } + if (!isset($ctg[0])) { + $ctg[0] = 0; + } + // get xHeight (height of x) + $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[120]] + 4); + $yMin = TCPDF_STATIC::_getFWORD($font, $offset); + $offset += 4; + $yMax = TCPDF_STATIC::_getFWORD($font, $offset); + $offset += 2; + $fmetric['XHeight'] = round(($yMax - $yMin) * $urk); + // get CapHeight (height of H) + $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[72]] + 4); + $yMin = TCPDF_STATIC::_getFWORD($font, $offset); + $offset += 4; + $yMax = TCPDF_STATIC::_getFWORD($font, $offset); + $offset += 2; + $fmetric['CapHeight'] = round(($yMax - $yMin) * $urk); + // ceate widths array + $cw = array(); + $offset = $table['hmtx']['offset']; + for ($i = 0 ; $i < $numberOfHMetrics; ++$i) { + $cw[$i] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); + $offset += 4; // skip lsb + } + if ($numberOfHMetrics < $numGlyphs) { + // fill missing widths with the last value + $cw = array_pad($cw, $numGlyphs, $cw[($numberOfHMetrics - 1)]); + } + $fmetric['MissingWidth'] = $cw[0]; + $fmetric['cw'] = ''; + $fmetric['cbbox'] = ''; + for ($cid = 0; $cid <= 65535; ++$cid) { + if (isset($ctg[$cid])) { + if (isset($cw[$ctg[$cid]])) { + $fmetric['cw'] .= ','.$cid.'=>'.$cw[$ctg[$cid]]; + } + if ($addcbbox AND isset($indexToLoc[$ctg[$cid]])) { + $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[$cid]]); + $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 2) * $urk); + $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 4) * $urk); + $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 6) * $urk); + $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 8) * $urk); + $fmetric['cbbox'] .= ','.$cid.'=>array('.$xMin.','.$yMin.','.$xMax.','.$yMax.')'; + } + } + } + } // end of true type + if (($fmetric['type'] == 'TrueTypeUnicode') AND (count($ctg) == 256)) { + $fmetric['type'] = 'TrueType'; + } + // ---------- create php font file ---------- + $pfile = '<'.'?'.'php'."\n"; + $pfile .= '// TCPDF FONT FILE DESCRIPTION'."\n"; + $pfile .= '$type=\''.$fmetric['type'].'\';'."\n"; + $pfile .= '$name=\''.$fmetric['name'].'\';'."\n"; + $pfile .= '$up='.$fmetric['underlinePosition'].';'."\n"; + $pfile .= '$ut='.$fmetric['underlineThickness'].';'."\n"; + if ($fmetric['MissingWidth'] > 0) { + $pfile .= '$dw='.$fmetric['MissingWidth'].';'."\n"; + } else { + $pfile .= '$dw='.$fmetric['AvgWidth'].';'."\n"; + } + $pfile .= '$diff=\''.$fmetric['diff'].'\';'."\n"; + if ($fmetric['type'] == 'Type1') { + // Type 1 + $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n"; + $pfile .= '$file=\''.$fmetric['file'].'\';'."\n"; + $pfile .= '$size1='.$fmetric['size1'].';'."\n"; + $pfile .= '$size2='.$fmetric['size2'].';'."\n"; + } else { + $pfile .= '$originalsize='.$fmetric['originalsize'].';'."\n"; + if ($fmetric['type'] == 'cidfont0') { + // CID-0 + switch ($fonttype) { + case 'CID0JP': { + $pfile .= '// Japanese'."\n"; + $pfile .= '$enc=\'UniJIS-UTF16-H\';'."\n"; + $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Japan1\',\'Supplement\'=>5);'."\n"; + $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n"; + break; + } + case 'CID0KR': { + $pfile .= '// Korean'."\n"; + $pfile .= '$enc=\'UniKS-UTF16-H\';'."\n"; + $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Korea1\',\'Supplement\'=>0);'."\n"; + $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ak12.php\');'."\n"; + break; + } + case 'CID0CS': { + $pfile .= '// Chinese Simplified'."\n"; + $pfile .= '$enc=\'UniGB-UTF16-H\';'."\n"; + $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'GB1\',\'Supplement\'=>2);'."\n"; + $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ag15.php\');'."\n"; + break; + } + case 'CID0CT': + default: { + $pfile .= '// Chinese Traditional'."\n"; + $pfile .= '$enc=\'UniCNS-UTF16-H\';'."\n"; + $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'CNS1\',\'Supplement\'=>0);'."\n"; + $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n"; + break; + } + } + } else { + // TrueType + $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n"; + $pfile .= '$file=\''.$fmetric['file'].'\';'."\n"; + $pfile .= '$ctg=\''.$fmetric['ctg'].'\';'."\n"; + // create CIDToGIDMap + $cidtogidmap = str_pad('', 131072, "\x00"); // (256 * 256 * 2) = 131072 + foreach ($ctg as $cid => $gid) { + $cidtogidmap = self::updateCIDtoGIDmap($cidtogidmap, $cid, $ctg[$cid]); + } + // store compressed CIDToGIDMap + $fp = fopen($outpath.$fmetric['ctg'], 'wb'); + fwrite($fp, gzcompress($cidtogidmap)); + fclose($fp); + } + } + $pfile .= '$desc=array('; + $pfile .= '\'Flags\'=>'.$fmetric['Flags'].','; + $pfile .= '\'FontBBox\'=>\'['.$fmetric['bbox'].']\','; + $pfile .= '\'ItalicAngle\'=>'.$fmetric['italicAngle'].','; + $pfile .= '\'Ascent\'=>'.$fmetric['Ascent'].','; + $pfile .= '\'Descent\'=>'.$fmetric['Descent'].','; + $pfile .= '\'Leading\'=>'.$fmetric['Leading'].','; + $pfile .= '\'CapHeight\'=>'.$fmetric['CapHeight'].','; + $pfile .= '\'XHeight\'=>'.$fmetric['XHeight'].','; + $pfile .= '\'StemV\'=>'.$fmetric['StemV'].','; + $pfile .= '\'StemH\'=>'.$fmetric['StemH'].','; + $pfile .= '\'AvgWidth\'=>'.$fmetric['AvgWidth'].','; + $pfile .= '\'MaxWidth\'=>'.$fmetric['MaxWidth'].','; + $pfile .= '\'MissingWidth\'=>'.$fmetric['MissingWidth'].''; + $pfile .= ');'."\n"; + if (!empty($fmetric['cbbox'])) { + $pfile .= '$cbbox=array('.substr($fmetric['cbbox'], 1).');'."\n"; + } + $pfile .= '$cw=array('.substr($fmetric['cw'], 1).');'."\n"; + $pfile .= '// --- EOF ---'."\n"; + // store file + $fp = fopen($outpath.$font_name.'.php', 'w'); + fwrite($fp, $pfile); + fclose($fp); + // return TCPDF font name + return $font_name; + } + + /** + * Returs the checksum of a TTF table. + * @param $table (string) table to check + * @param $length (int) length of table in bytes + * @return int checksum + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getTTFtableChecksum($table, $length) { + $sum = 0; + $tlen = ($length / 4); + $offset = 0; + for ($i = 0; $i < $tlen; ++$i) { + $v = unpack('Ni', substr($table, $offset, 4)); + $sum += $v['i']; + $offset += 4; + } + $sum = unpack('Ni', pack('N', $sum)); + return $sum['i']; + } + + /** + * Returns a subset of the TrueType font data without the unused glyphs. + * @param $font (string) TrueType font data. + * @param $subsetchars (array) Array of used characters (the glyphs to keep). + * @return (string) A subset of TrueType font data without the unused glyphs. + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getTrueTypeFontSubset($font, $subsetchars) { + ksort($subsetchars); + $offset = 0; // offset position of the font data + if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) { + // sfnt version must be 0x00010000 for TrueType version 1.0. + return $font; + } + $offset += 4; + // get number of tables + $numTables = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + // skip searchRange, entrySelector and rangeShift + $offset += 6; + // tables array + $table = array(); + // for each table + for ($i = 0; $i < $numTables; ++$i) { + // get table info + $tag = substr($font, $offset, 4); + $offset += 4; + $table[$tag] = array(); + $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + } + // check magicNumber + $offset = $table['head']['offset'] + 12; + if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) { + // magicNumber must be 0x5F0F3CF5 + return $font; + } + $offset += 4; + // get offset mode (indexToLocFormat : 0 = short, 1 = long) + $offset = $table['head']['offset'] + 50; + $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0); + $offset += 2; + // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table + $indexToLoc = array(); + $offset = $table['loca']['offset']; + if ($short_offset) { + // short version + $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1 + for ($i = 0; $i < $tot_num_glyphs; ++$i) { + $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2; + $offset += 2; + } + } else { + // long version + $tot_num_glyphs = ($table['loca']['length'] / 4); // numGlyphs + 1 + for ($i = 0; $i < $tot_num_glyphs; ++$i) { + $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + } + } + // get glyphs indexes of chars from cmap table + $subsetglyphs = array(); // glyph IDs on key + $subsetglyphs[0] = true; // character codes that do not correspond to any glyph in the font should be mapped to glyph index 0 + $offset = $table['cmap']['offset'] + 2; + $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $encodingTables = array(); + for ($i = 0; $i < $numEncodingTables; ++$i) { + $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + } + foreach ($encodingTables as $enctable) { + // get all platforms and encodings + $offset = $table['cmap']['offset'] + $enctable['offset']; + $format = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + switch ($format) { + case 0: { // Format 0: Byte encoding table + $offset += 4; // skip length and version/language + for ($c = 0; $c < 256; ++$c) { + if (isset($subsetchars[$c])) { + $g = TCPDF_STATIC::_getBYTE($font, $offset); + $subsetglyphs[$g] = true; + } + ++$offset; + } + break; + } + case 2: { // Format 2: High-byte mapping through table + $offset += 4; // skip length and version/language + $numSubHeaders = 0; + for ($i = 0; $i < 256; ++$i) { + // Array that maps high bytes to subHeaders: value is subHeader index * 8. + $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8); + $offset += 2; + if ($numSubHeaders < $subHeaderKeys[$i]) { + $numSubHeaders = $subHeaderKeys[$i]; + } + } + // the number of subHeaders is equal to the max of subHeaderKeys + 1 + ++$numSubHeaders; + // read subHeader structures + $subHeaders = array(); + $numGlyphIndexArray = 0; + for ($k = 0; $k < $numSubHeaders; ++$k) { + $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8)); + $subHeaders[$k]['idRangeOffset'] /= 2; + $numGlyphIndexArray += $subHeaders[$k]['entryCount']; + } + for ($k = 0; $k < $numGlyphIndexArray; ++$k) { + $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + for ($i = 0; $i < 256; ++$i) { + $k = $subHeaderKeys[$i]; + if ($k == 0) { + // one byte code + $c = $i; + if (isset($subsetchars[$c])) { + $g = $glyphIndexArray[0]; + $subsetglyphs[$g] = true; + } + } else { + // two bytes code + $start_byte = $subHeaders[$k]['firstCode']; + $end_byte = $start_byte + $subHeaders[$k]['entryCount']; + for ($j = $start_byte; $j < $end_byte; ++$j) { + // combine high and low bytes + $c = (($i << 8) + $j); + if (isset($subsetchars[$c])) { + $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']); + $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536; + if ($g < 0) { + $g = 0; + } + $subsetglyphs[$g] = true; + } + } + } + } + break; + } + case 4: { // Format 4: Segment mapping to delta values + $length = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $offset += 2; // skip version/language + $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2); + $offset += 2; + $offset += 6; // skip searchRange, entrySelector, rangeShift + $endCount = array(); // array of end character codes for each segment + for ($k = 0; $k < $segCount; ++$k) { + $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $offset += 2; // skip reservedPad + $startCount = array(); // array of start character codes for each segment + for ($k = 0; $k < $segCount; ++$k) { + $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $idDelta = array(); // delta for all character codes in segment + for ($k = 0; $k < $segCount; ++$k) { + $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $idRangeOffset = array(); // Offsets into glyphIdArray or 0 + for ($k = 0; $k < $segCount; ++$k) { + $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + $gidlen = (floor($length / 2) - 8 - (4 * $segCount)); + $glyphIdArray = array(); // glyph index array + for ($k = 0; $k < $gidlen; ++$k) { + $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + } + for ($k = 0; $k < $segCount; ++$k) { + for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) { + if (isset($subsetchars[$c])) { + if ($idRangeOffset[$k] == 0) { + $g = ($idDelta[$k] + $c) % 65536; + } else { + $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k)); + $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536; + } + if ($g < 0) { + $g = 0; + } + $subsetglyphs[$g] = true; + } + } + } + break; + } + case 6: { // Format 6: Trimmed table mapping + $offset += 4; // skip length and version/language + $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + for ($k = 0; $k < $entryCount; ++$k) { + $c = ($k + $firstCode); + if (isset($subsetchars[$c])) { + $g = TCPDF_STATIC::_getUSHORT($font, $offset); + $subsetglyphs[$g] = true; + } + $offset += 2; + } + break; + } + case 8: { // Format 8: Mixed 16-bit and 32-bit coverage + $offset += 10; // skip reserved, length and version/language + for ($k = 0; $k < 8192; ++$k) { + $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset); + ++$offset; + } + $nGroups = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($i = 0; $i < $nGroups; ++$i) { + $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($k = $startCharCode; $k <= $endCharCode; ++$k) { + $is32idx = floor($c / 8); + if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) { + $c = $k; + } else { + // 32 bit format + // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4) + //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232 + //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888 + $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888; + } + if (isset($subsetchars[$c])) { + $subsetglyphs[$startGlyphID] = true; + } + ++$startGlyphID; + } + } + break; + } + case 10: { // Format 10: Trimmed array + $offset += 10; // skip reserved, length and version/language + $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $numChars = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($k = 0; $k < $numChars; ++$k) { + $c = ($k + $startCharCode); + if (isset($subsetchars[$c])) { + $g = TCPDF_STATIC::_getUSHORT($font, $offset); + $subsetglyphs[$g] = true; + } + $offset += 2; + } + break; + } + case 12: { // Format 12: Segmented coverage + $offset += 10; // skip length and version/language + $nGroups = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($k = 0; $k < $nGroups; ++$k) { + $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset); + $offset += 4; + for ($c = $startCharCode; $c <= $endCharCode; ++$c) { + if (isset($subsetchars[$c])) { + $subsetglyphs[$startGlyphCode] = true; + } + ++$startGlyphCode; + } + } + break; + } + case 13: { // Format 13: Many-to-one range mappings + // to be implemented ... + break; + } + case 14: { // Format 14: Unicode Variation Sequences + // to be implemented ... + break; + } + } + } + // include all parts of composite glyphs + $new_sga = $subsetglyphs; + while (!empty($new_sga)) { + $sga = $new_sga; + $new_sga = array(); + foreach ($sga as $key => $val) { + if (isset($indexToLoc[$key])) { + $offset = ($table['glyf']['offset'] + $indexToLoc[$key]); + $numberOfContours = TCPDF_STATIC::_getSHORT($font, $offset); + $offset += 2; + if ($numberOfContours < 0) { // composite glyph + $offset += 8; // skip xMin, yMin, xMax, yMax + do { + $flags = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + $glyphIndex = TCPDF_STATIC::_getUSHORT($font, $offset); + $offset += 2; + if (!isset($subsetglyphs[$glyphIndex])) { + // add missing glyphs + $new_sga[$glyphIndex] = true; + } + // skip some bytes by case + if ($flags & 1) { + $offset += 4; + } else { + $offset += 2; + } + if ($flags & 8) { + $offset += 2; + } elseif ($flags & 64) { + $offset += 4; + } elseif ($flags & 128) { + $offset += 8; + } + } while ($flags & 32); + } + } + } + $subsetglyphs += $new_sga; + } + // sort glyphs by key (and remove duplicates) + ksort($subsetglyphs); + // build new glyf and loca tables + $glyf = ''; + $loca = ''; + $offset = 0; + $glyf_offset = $table['glyf']['offset']; + for ($i = 0; $i < $tot_num_glyphs; ++$i) { + if (isset($subsetglyphs[$i])) { + $length = ($indexToLoc[($i + 1)] - $indexToLoc[$i]); + $glyf .= substr($font, ($glyf_offset + $indexToLoc[$i]), $length); + } else { + $length = 0; + } + if ($short_offset) { + $loca .= pack('n', floor($offset / 2)); + } else { + $loca .= pack('N', $offset); + } + $offset += $length; + } + // array of table names to preserve (loca and glyf tables will be added later) + // the cmap table is not needed and shall not be present, since the mapping from character codes to glyph descriptions is provided separately + $table_names = array ('head', 'hhea', 'hmtx', 'maxp', 'cvt ', 'fpgm', 'prep'); // minimum required table names + // get the tables to preserve + $offset = 12; + foreach ($table as $tag => $val) { + if (in_array($tag, $table_names)) { + $table[$tag]['data'] = substr($font, $table[$tag]['offset'], $table[$tag]['length']); + if ($tag == 'head') { + // set the checkSumAdjustment to 0 + $table[$tag]['data'] = substr($table[$tag]['data'], 0, 8)."\x0\x0\x0\x0".substr($table[$tag]['data'], 12); + } + $pad = 4 - ($table[$tag]['length'] % 4); + if ($pad != 4) { + // the length of a table must be a multiple of four bytes + $table[$tag]['length'] += $pad; + $table[$tag]['data'] .= str_repeat("\x0", $pad); + } + $table[$tag]['offset'] = $offset; + $offset += $table[$tag]['length']; + // check sum is not changed (so keep the following line commented) + //$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length']); + } else { + unset($table[$tag]); + } + } + // add loca + $table['loca']['data'] = $loca; + $table['loca']['length'] = strlen($loca); + $pad = 4 - ($table['loca']['length'] % 4); + if ($pad != 4) { + // the length of a table must be a multiple of four bytes + $table['loca']['length'] += $pad; + $table['loca']['data'] .= str_repeat("\x0", $pad); + } + $table['loca']['offset'] = $offset; + $table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length']); + $offset += $table['loca']['length']; + // add glyf + $table['glyf']['data'] = $glyf; + $table['glyf']['length'] = strlen($glyf); + $pad = 4 - ($table['glyf']['length'] % 4); + if ($pad != 4) { + // the length of a table must be a multiple of four bytes + $table['glyf']['length'] += $pad; + $table['glyf']['data'] .= str_repeat("\x0", $pad); + } + $table['glyf']['offset'] = $offset; + $table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length']); + // rebuild font + $font = ''; + $font .= pack('N', 0x10000); // sfnt version + $numTables = count($table); + $font .= pack('n', $numTables); // numTables + $entrySelector = floor(log($numTables, 2)); + $searchRange = pow(2, $entrySelector) * 16; + $rangeShift = ($numTables * 16) - $searchRange; + $font .= pack('n', $searchRange); // searchRange + $font .= pack('n', $entrySelector); // entrySelector + $font .= pack('n', $rangeShift); // rangeShift + $offset = ($numTables * 16); + foreach ($table as $tag => $data) { + $font .= $tag; // tag + $font .= pack('N', $data['checkSum']); // checkSum + $font .= pack('N', ($data['offset'] + $offset)); // offset + $font .= pack('N', $data['length']); // length + } + foreach ($table as $data) { + $font .= $data['data']; + } + // set checkSumAdjustment on head table + $checkSumAdjustment = 0xB1B0AFBA - self::_getTTFtableChecksum($font, strlen($font)); + $font = substr($font, 0, $table['head']['offset'] + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + 12); + return $font; + } + + /** + * Outputs font widths + * @param $font (array) font data + * @param $cidoffset (int) offset for CID values + * @return PDF command string for font widths + * @author Nicola Asuni + * @since 4.4.000 (2008-12-07) + * @public static + */ + public static function _putfontwidths($font, $cidoffset=0) { + ksort($font['cw']); + $rangeid = 0; + $range = array(); + $prevcid = -2; + $prevwidth = -1; + $interval = false; + // for each character + foreach ($font['cw'] as $cid => $width) { + $cid -= $cidoffset; + if ($font['subset'] AND (!isset($font['subsetchars'][$cid]))) { + // ignore the unused characters (font subsetting) + continue; + } + if ($width != $font['dw']) { + if ($cid == ($prevcid + 1)) { + // consecutive CID + if ($width == $prevwidth) { + if ($width == $range[$rangeid][0]) { + $range[$rangeid][] = $width; + } else { + array_pop($range[$rangeid]); + // new range + $rangeid = $prevcid; + $range[$rangeid] = array(); + $range[$rangeid][] = $prevwidth; + $range[$rangeid][] = $width; + } + $interval = true; + $range[$rangeid]['interval'] = true; + } else { + if ($interval) { + // new range + $rangeid = $cid; + $range[$rangeid] = array(); + $range[$rangeid][] = $width; + } else { + $range[$rangeid][] = $width; + } + $interval = false; + } + } else { + // new range + $rangeid = $cid; + $range[$rangeid] = array(); + $range[$rangeid][] = $width; + $interval = false; + } + $prevcid = $cid; + $prevwidth = $width; + } + } + // optimize ranges + $prevk = -1; + $nextk = -1; + $prevint = false; + foreach ($range as $k => $ws) { + $cws = count($ws); + if (($k == $nextk) AND (!$prevint) AND ((!isset($ws['interval'])) OR ($cws < 4))) { + if (isset($range[$k]['interval'])) { + unset($range[$k]['interval']); + } + $range[$prevk] = array_merge($range[$prevk], $range[$k]); + unset($range[$k]); + } else { + $prevk = $k; + } + $nextk = $k + $cws; + if (isset($ws['interval'])) { + if ($cws > 3) { + $prevint = true; + } else { + $prevint = false; + } + if (isset($range[$k]['interval'])) { + unset($range[$k]['interval']); + } + --$nextk; + } else { + $prevint = false; + } + } + // output data + $w = ''; + foreach ($range as $k => $ws) { + if (count(array_count_values($ws)) == 1) { + // interval mode is more compact + $w .= ' '.$k.' '.($k + count($ws) - 1).' '.$ws[0]; + } else { + // range mode + $w .= ' '.$k.' [ '.implode(' ', $ws).' ]'; + } + } + return '/W ['.$w.' ]'; + } + + /** + * Returns the unicode caracter specified by the value + * @param $c (int) UTF-8 value + * @param $unicode (boolean) True if we are in unicode mode, false otherwise. + * @return Returns the specified character. + * @since 2.3.000 (2008-03-05) + * @public static + */ + public static function unichr($c, $unicode=true) { + if (!$unicode) { + return chr($c); + } elseif ($c <= 0x7F) { + // one byte + return chr($c); + } elseif ($c <= 0x7FF) { + // two bytes + return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F); + } elseif ($c <= 0xFFFF) { + // three bytes + return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); + } elseif ($c <= 0x10FFFF) { + // four bytes + return chr(0xF0 | $c >> 18).chr(0x80 | $c >> 12 & 0x3F).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); + } else { + return ''; + } + } + + /** + * Returns the unicode caracter specified by UTF-8 value + * @param $c (int) UTF-8 value + * @return Returns the specified character. + * @public static + */ + public static function unichrUnicode($c) { + return self::unichr($c, true); + } + + /** + * Returns the unicode caracter specified by ASCII value + * @param $c (int) UTF-8 value + * @return Returns the specified character. + * @public static + */ + public static function unichrASCII($c) { + return self::unichr($c, false); + } + + /** + * Converts array of UTF-8 characters to UTF16-BE string.
      + * Based on: http://www.faqs.org/rfcs/rfc2781.html + *
      +	 *   Encoding UTF-16:
      +	 *
      +	 *   Encoding of a single character from an ISO 10646 character value to
      +	 *    UTF-16 proceeds as follows. Let U be the character number, no greater
      +	 *    than 0x10FFFF.
      +	 *
      +	 *    1) If U < 0x10000, encode U as a 16-bit unsigned integer and
      +	 *       terminate.
      +	 *
      +	 *    2) Let U' = U - 0x10000. Because U is less than or equal to 0x10FFFF,
      +	 *       U' must be less than or equal to 0xFFFFF. That is, U' can be
      +	 *       represented in 20 bits.
      +	 *
      +	 *    3) Initialize two 16-bit unsigned integers, W1 and W2, to 0xD800 and
      +	 *       0xDC00, respectively. These integers each have 10 bits free to
      +	 *       encode the character value, for a total of 20 bits.
      +	 *
      +	 *    4) Assign the 10 high-order bits of the 20-bit U' to the 10 low-order
      +	 *       bits of W1 and the 10 low-order bits of U' to the 10 low-order
      +	 *       bits of W2. Terminate.
      +	 *
      +	 *    Graphically, steps 2 through 4 look like:
      +	 *    U' = yyyyyyyyyyxxxxxxxxxx
      +	 *    W1 = 110110yyyyyyyyyy
      +	 *    W2 = 110111xxxxxxxxxx
      +	 * 
      + * @param $unicode (array) array containing UTF-8 unicode values + * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF) + * @return string + * @protected + * @author Nicola Asuni + * @since 2.1.000 (2008-01-08) + * @public static + */ + public static function arrUTF8ToUTF16BE($unicode, $setbom=false) { + $outstr = ''; // string to be returned + if ($setbom) { + $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM) + } + foreach ($unicode as $char) { + if ($char == 0x200b) { + // skip Unicode Character 'ZERO WIDTH SPACE' (DEC:8203, U+200B) + } elseif ($char == 0xFFFD) { + $outstr .= "\xFF\xFD"; // replacement character + } elseif ($char < 0x10000) { + $outstr .= chr($char >> 0x08); + $outstr .= chr($char & 0xFF); + } else { + $char -= 0x10000; + $w1 = 0xD800 | ($char >> 0x0a); + $w2 = 0xDC00 | ($char & 0x3FF); + $outstr .= chr($w1 >> 0x08); + $outstr .= chr($w1 & 0xFF); + $outstr .= chr($w2 >> 0x08); + $outstr .= chr($w2 & 0xFF); + } + } + return $outstr; + } + + /** + * Convert an array of UTF8 values to array of unicode characters + * @param $ta (array) The input array of UTF8 values. + * @param $isunicode (boolean) True for Unicode mode, false otherwise. + * @return Return array of unicode characters + * @since 4.5.037 (2009-04-07) + * @public static + */ + public static function UTF8ArrayToUniArray($ta, $isunicode=true) { + if ($isunicode) { + return array_map(array('TCPDF_FONTS', 'unichrUnicode'), $ta); + } + return array_map(array('TCPDF_FONTS', 'unichrASCII'), $ta); + } + + /** + * Extract a slice of the $strarr array and return it as string. + * @param $strarr (string) The input array of characters. + * @param $start (int) the starting element of $strarr. + * @param $end (int) first element that will not be returned. + * @param $unicode (boolean) True if we are in unicode mode, false otherwise. + * @return Return part of a string + * @public static + */ + public static function UTF8ArrSubString($strarr, $start='', $end='', $unicode=true) { + if (strlen($start) == 0) { + $start = 0; + } + if (strlen($end) == 0) { + $end = count($strarr); + } + $string = ''; + for ($i = $start; $i < $end; ++$i) { + $string .= self::unichr($strarr[$i], $unicode); + } + return $string; + } + + /** + * Extract a slice of the $uniarr array and return it as string. + * @param $uniarr (string) The input array of characters. + * @param $start (int) the starting element of $strarr. + * @param $end (int) first element that will not be returned. + * @return Return part of a string + * @since 4.5.037 (2009-04-07) + * @public static + */ + public static function UniArrSubString($uniarr, $start='', $end='') { + if (strlen($start) == 0) { + $start = 0; + } + if (strlen($end) == 0) { + $end = count($uniarr); + } + $string = ''; + for ($i=$start; $i < $end; ++$i) { + $string .= $uniarr[$i]; + } + return $string; + } + + /** + * Update the CIDToGIDMap string with a new value. + * @param $map (string) CIDToGIDMap. + * @param $cid (int) CID value. + * @param $gid (int) GID value. + * @return (string) CIDToGIDMap. + * @author Nicola Asuni + * @since 5.9.123 (2011-09-29) + * @public static + */ + public static function updateCIDtoGIDmap($map, $cid, $gid) { + if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) { + if ($gid > 0xFFFF) { + $gid -= 0x10000; + } + $map[($cid * 2)] = chr($gid >> 8); + $map[(($cid * 2) + 1)] = chr($gid & 0xFF); + } + return $map; + } + + /** + * Return fonts path + * @return string + * @public static + */ + public static function _getfontpath() { + if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) { + if (substr($fdir, -1) != '/') { + $fdir .= '/'; + } + define('K_PATH_FONTS', $fdir); + } + return defined('K_PATH_FONTS') ? K_PATH_FONTS : ''; + } + + /** + * Return font full path + * @param $file (string) Font file name. + * @param $fontdir (string) Font directory (set to false fto search on default directories) + * @return string Font full path or empty string + * @author Nicola Asuni + * @since 6.0.025 + * @public static + */ + public static function getFontFullPath($file, $fontdir=false) { + $fontfile = ''; + // search files on various directories + if (($fontdir !== false) AND @file_exists($fontdir.$file)) { + $fontfile = $fontdir.$file; + } elseif (@file_exists(self::_getfontpath().$file)) { + $fontfile = self::_getfontpath().$file; + } elseif (@file_exists($file)) { + $fontfile = $file; + } + return $fontfile; + } + + /** + * Converts UTF-8 characters array to array of Latin1 characters array
      + * @param $unicode (array) array containing UTF-8 unicode values + * @return array + * @author Nicola Asuni + * @since 4.8.023 (2010-01-15) + * @public static + */ + public static function UTF8ArrToLatin1Arr($unicode) { + $outarr = array(); // array to be returned + foreach ($unicode as $char) { + if ($char < 256) { + $outarr[] = $char; + } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) { + // map from UTF-8 + $outarr[] = TCPDF_FONT_DATA::$uni_utf8tolatin[$char]; + } elseif ($char == 0xFFFD) { + // skip + } else { + $outarr[] = 63; // '?' character + } + } + return $outarr; + } + + /** + * Converts UTF-8 characters array to array of Latin1 string
      + * @param $unicode (array) array containing UTF-8 unicode values + * @return array + * @author Nicola Asuni + * @since 4.8.023 (2010-01-15) + * @public static + */ + public static function UTF8ArrToLatin1($unicode) { + $outstr = ''; // string to be returned + foreach ($unicode as $char) { + if ($char < 256) { + $outstr .= chr($char); + } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) { + // map from UTF-8 + $outstr .= chr(TCPDF_FONT_DATA::$uni_utf8tolatin[$char]); + } elseif ($char == 0xFFFD) { + // skip + } else { + $outstr .= '?'; + } + } + return $outstr; + } + + /** + * Converts UTF-8 character to integer value.
      + * Uses the getUniord() method if the value is not cached. + * @param $uch (string) character string to process. + * @return integer Unicode value + * @public static + */ + public static function uniord($uch) { + if (!isset(self::$cache_uniord[$uch])) { + self::$cache_uniord[$uch] = self::getUniord($uch); + } + return self::$cache_uniord[$uch]; + } + + /** + * Converts UTF-8 character to integer value.
      + * Invalid byte sequences will be replaced with 0xFFFD (replacement character)
      + * Based on: http://www.faqs.org/rfcs/rfc3629.html + *
      +	 *    Char. number range  |        UTF-8 octet sequence
      +	 *       (hexadecimal)    |              (binary)
      +	 *    --------------------+-----------------------------------------------
      +	 *    0000 0000-0000 007F | 0xxxxxxx
      +	 *    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
      +	 *    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
      +	 *    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
      +	 *    ---------------------------------------------------------------------
      +	 *
      +	 *   ABFN notation:
      +	 *   ---------------------------------------------------------------------
      +	 *   UTF8-octets = *( UTF8-char )
      +	 *   UTF8-char   = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4
      +	 *   UTF8-1      = %x00-7F
      +	 *   UTF8-2      = %xC2-DF UTF8-tail
      +	 *
      +	 *   UTF8-3      = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) /
      +	 *                 %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
      +	 *   UTF8-4      = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) /
      +	 *                 %xF4 %x80-8F 2( UTF8-tail )
      +	 *   UTF8-tail   = %x80-BF
      +	 *   ---------------------------------------------------------------------
      +	 * 
      + * @param $uch (string) character string to process. + * @return integer Unicode value + * @author Nicola Asuni + * @public static + */ + public static function getUniord($uch) { + if (function_exists('mb_convert_encoding')) { + list(, $char) = @unpack('N', mb_convert_encoding($uch, 'UCS-4BE', 'UTF-8')); + if ($char >= 0) { + return $char; + } + } + $bytes = array(); // array containing single character byte sequences + $countbytes = 0; + $numbytes = 1; // number of octetc needed to represent the UTF-8 character + $length = strlen($uch); + for ($i = 0; $i < $length; ++$i) { + $char = ord($uch[$i]); // get one string character at time + if ($countbytes == 0) { // get starting octect + if ($char <= 0x7F) { + return $char; // use the character "as is" because is ASCII + } elseif (($char >> 0x05) == 0x06) { // 2 bytes character (0x06 = 110 BIN) + $bytes[] = ($char - 0xC0) << 0x06; + ++$countbytes; + $numbytes = 2; + } elseif (($char >> 0x04) == 0x0E) { // 3 bytes character (0x0E = 1110 BIN) + $bytes[] = ($char - 0xE0) << 0x0C; + ++$countbytes; + $numbytes = 3; + } elseif (($char >> 0x03) == 0x1E) { // 4 bytes character (0x1E = 11110 BIN) + $bytes[] = ($char - 0xF0) << 0x12; + ++$countbytes; + $numbytes = 4; + } else { + // use replacement character for other invalid sequences + return 0xFFFD; + } + } elseif (($char >> 0x06) == 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN + $bytes[] = $char - 0x80; + ++$countbytes; + if ($countbytes == $numbytes) { + // compose UTF-8 bytes to a single unicode value + $char = $bytes[0]; + for ($j = 1; $j < $numbytes; ++$j) { + $char += ($bytes[$j] << (($numbytes - $j - 1) * 0x06)); + } + if ((($char >= 0xD800) AND ($char <= 0xDFFF)) OR ($char >= 0x10FFFF)) { + // The definition of UTF-8 prohibits encoding character numbers between + // U+D800 and U+DFFF, which are reserved for use with the UTF-16 + // encoding form (as surrogate pairs) and do not directly represent + // characters. + return 0xFFFD; // use replacement character + } else { + return $char; + } + } + } else { + // use replacement character for other invalid sequences + return 0xFFFD; + } + } + return 0xFFFD; + } + + /** + * Converts UTF-8 strings to codepoints array.
      + * Invalid byte sequences will be replaced with 0xFFFD (replacement character)
      + * @param $str (string) string to process. + * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. + * @param $currentfont (array) Reference to current font array. + * @return array containing codepoints (UTF-8 characters values) + * @author Nicola Asuni + * @public static + */ + public static function UTF8StringToArray($str, $isunicode=true, &$currentfont) { + if ($isunicode) { + // requires PCRE unicode support turned on + $chars = TCPDF_STATIC::pregSplit('//','u', $str, -1, PREG_SPLIT_NO_EMPTY); + $carr = array_map(array('TCPDF_FONTS', 'uniord'), $chars); + } else { + $chars = str_split($str); + $carr = array_map('ord', $chars); + } + $currentfont['subsetchars'] += array_fill_keys($carr, true); + return $carr; + } + + /** + * Converts UTF-8 strings to Latin1 when using the standard 14 core fonts.
      + * @param $str (string) string to process. + * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. + * @param $currentfont (array) Reference to current font array. + * @return string + * @since 3.2.000 (2008-06-23) + * @public static + */ + public static function UTF8ToLatin1($str, $isunicode=true, &$currentfont) { + $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values + return self::UTF8ArrToLatin1($unicode); + } + + /** + * Converts UTF-8 strings to UTF16-BE.
      + * @param $str (string) string to process. + * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF) + * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. + * @param $currentfont (array) Reference to current font array. + * @return string + * @author Nicola Asuni + * @since 1.53.0.TC005 (2005-01-05) + * @public static + */ + public static function UTF8ToUTF16BE($str, $setbom=false, $isunicode=true, &$currentfont) { + if (!$isunicode) { + return $str; // string is not in unicode + } + $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values + return self::arrUTF8ToUTF16BE($unicode, $setbom); + } + + /** + * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). + * @param $str (string) string to manipulate. + * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF) + * @param $forcertl (bool) if true forces RTL text direction + * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. + * @param $currentfont (array) Reference to current font array. + * @return string + * @author Nicola Asuni + * @since 2.1.000 (2008-01-08) + * @public static + */ + public static function utf8StrRev($str, $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) { + return self::utf8StrArrRev(self::UTF8StringToArray($str, $isunicode, $currentfont), $str, $setbom, $forcertl, $isunicode, $currentfont); + } + + /** + * Reverse the RLT substrings array using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). + * @param $arr (array) array of unicode values. + * @param $str (string) string to manipulate (or empty value). + * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF) + * @param $forcertl (bool) if true forces RTL text direction + * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. + * @param $currentfont (array) Reference to current font array. + * @return string + * @author Nicola Asuni + * @since 4.9.000 (2010-03-27) + * @public static + */ + public static function utf8StrArrRev($arr, $str='', $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) { + return self::arrUTF8ToUTF16BE(self::utf8Bidi($arr, $str, $forcertl, $isunicode, $currentfont), $setbom); + } + + /** + * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). + * @param $ta (array) array of characters composing the string. + * @param $str (string) string to process + * @param $forcertl (bool) if 'R' forces RTL, if 'L' forces LTR + * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. + * @param $currentfont (array) Reference to current font array. + * @return array of unicode chars + * @author Nicola Asuni + * @since 2.4.000 (2008-03-06) + * @public static + */ + public static function utf8Bidi($ta, $str='', $forcertl=false, $isunicode=true, &$currentfont) { + // paragraph embedding level + $pel = 0; + // max level + $maxlevel = 0; + if (TCPDF_STATIC::empty_string($str)) { + // create string from array + $str = self::UTF8ArrSubString($ta, '', '', $isunicode); + } + // check if string contains arabic text + if (preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_ARABIC, $str)) { + $arabic = true; + } else { + $arabic = false; + } + // check if string contains RTL text + if (!($forcertl OR $arabic OR preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_RTL, $str))) { + return $ta; + } + + // get number of chars + $numchars = count($ta); + + if ($forcertl == 'R') { + $pel = 1; + } elseif ($forcertl == 'L') { + $pel = 0; + } else { + // P2. In each paragraph, find the first character of type L, AL, or R. + // P3. If a character is found in P2 and it is of type AL or R, then set the paragraph embedding level to one; otherwise, set it to zero. + for ($i=0; $i < $numchars; ++$i) { + $type = TCPDF_FONT_DATA::$uni_type[$ta[$i]]; + if ($type == 'L') { + $pel = 0; + break; + } elseif (($type == 'AL') OR ($type == 'R')) { + $pel = 1; + break; + } + } + } + + // Current Embedding Level + $cel = $pel; + // directional override status + $dos = 'N'; + $remember = array(); + // start-of-level-run + $sor = $pel % 2 ? 'R' : 'L'; + $eor = $sor; + + // Array of characters data + $chardata = Array(); + + // X1. Begin by setting the current embedding level to the paragraph embedding level. Set the directional override status to neutral. Process each character iteratively, applying rules X2 through X9. Only embedding levels from 0 to 61 are valid in this phase. + // In the resolution of levels in rules I1 and I2, the maximum embedding level of 62 can be reached. + for ($i=0; $i < $numchars; ++$i) { + if ($ta[$i] == TCPDF_FONT_DATA::$uni_RLE) { + // X2. With each RLE, compute the least greater odd embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + ($cel % 2) + 1; + if ($next_level < 62) { + $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLE, 'cel' => $cel, 'dos' => $dos); + $cel = $next_level; + $dos = 'N'; + $sor = $eor; + $eor = $cel % 2 ? 'R' : 'L'; + } + } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRE) { + // X3. With each LRE, compute the least greater even embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + 2 - ($cel % 2); + if ( $next_level < 62 ) { + $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRE, 'cel' => $cel, 'dos' => $dos); + $cel = $next_level; + $dos = 'N'; + $sor = $eor; + $eor = $cel % 2 ? 'R' : 'L'; + } + } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_RLO) { + // X4. With each RLO, compute the least greater odd embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to right-to-left. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + ($cel % 2) + 1; + if ($next_level < 62) { + $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLO, 'cel' => $cel, 'dos' => $dos); + $cel = $next_level; + $dos = 'R'; + $sor = $eor; + $eor = $cel % 2 ? 'R' : 'L'; + } + } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRO) { + // X5. With each LRO, compute the least greater even embedding level. + // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to left-to-right. + // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. + $next_level = $cel + 2 - ($cel % 2); + if ( $next_level < 62 ) { + $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRO, 'cel' => $cel, 'dos' => $dos); + $cel = $next_level; + $dos = 'L'; + $sor = $eor; + $eor = $cel % 2 ? 'R' : 'L'; + } + } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_PDF) { + // X7. With each PDF, determine the matching embedding or override code. If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override. + if (count($remember)) { + $last = count($remember ) - 1; + if (($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLE) OR + ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRE) OR + ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLO) OR + ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRO)) { + $match = array_pop($remember); + $cel = $match['cel']; + $dos = $match['dos']; + $sor = $eor; + $eor = ($cel > $match['cel'] ? $cel : $match['cel']) % 2 ? 'R' : 'L'; + } + } + } elseif (($ta[$i] != TCPDF_FONT_DATA::$uni_RLE) AND + ($ta[$i] != TCPDF_FONT_DATA::$uni_LRE) AND + ($ta[$i] != TCPDF_FONT_DATA::$uni_RLO) AND + ($ta[$i] != TCPDF_FONT_DATA::$uni_LRO) AND + ($ta[$i] != TCPDF_FONT_DATA::$uni_PDF)) { + // X6. For all types besides RLE, LRE, RLO, LRO, and PDF: + // a. Set the level of the current character to the current embedding level. + // b. Whenever the directional override status is not neutral, reset the current character type to the directional override status. + if ($dos != 'N') { + $chardir = $dos; + } else { + if (isset(TCPDF_FONT_DATA::$uni_type[$ta[$i]])) { + $chardir = TCPDF_FONT_DATA::$uni_type[$ta[$i]]; + } else { + $chardir = 'L'; + } + } + // stores string characters and other information + $chardata[] = array('char' => $ta[$i], 'level' => $cel, 'type' => $chardir, 'sor' => $sor, 'eor' => $eor); + } + } // end for each char + + // X8. All explicit directional embeddings and overrides are completely terminated at the end of each paragraph. Paragraph separators are not included in the embedding. + // X9. Remove all RLE, LRE, RLO, LRO, PDF, and BN codes. + // X10. The remaining rules are applied to each run of characters at the same level. For each run, determine the start-of-level-run (sor) and end-of-level-run (eor) type, either L or R. This depends on the higher of the two levels on either side of the boundary (at the start or end of the paragraph, the level of the 'other' run is the base embedding level). If the higher level is odd, the type is R; otherwise, it is L. + + // 3.3.3 Resolving Weak Types + // Weak types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used. + // Nonspacing marks are now resolved based on the previous characters. + $numchars = count($chardata); + + // W1. Examine each nonspacing mark (NSM) in the level run, and change the type of the NSM to the type of the previous character. If the NSM is at the start of the level run, it will get the type of sor. + $prevlevel = -1; // track level changes + $levcount = 0; // counts consecutive chars at the same level + for ($i=0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == 'NSM') { + if ($levcount) { + $chardata[$i]['type'] = $chardata[$i]['sor']; + } elseif ($i > 0) { + $chardata[$i]['type'] = $chardata[($i-1)]['type']; + } + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sor) is found. If an AL is found, change the type of the European number to Arabic number. + $prevlevel = -1; + $levcount = 0; + for ($i=0; $i < $numchars; ++$i) { + if ($chardata[$i]['char'] == 'EN') { + for ($j=$levcount; $j >= 0; $j--) { + if ($chardata[$j]['type'] == 'AL') { + $chardata[$i]['type'] = 'AN'; + } elseif (($chardata[$j]['type'] == 'L') OR ($chardata[$j]['type'] == 'R')) { + break; + } + } + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + // W3. Change all ALs to R. + for ($i=0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == 'AL') { + $chardata[$i]['type'] = 'R'; + } + } + + // W4. A single European separator between two European numbers changes to a European number. A single common separator between two numbers of the same type changes to that type. + $prevlevel = -1; + $levcount = 0; + for ($i=0; $i < $numchars; ++$i) { + if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { + if (($chardata[$i]['type'] == 'ES') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) { + $chardata[$i]['type'] = 'EN'; + } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) { + $chardata[$i]['type'] = 'EN'; + } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'AN') AND ($chardata[($i+1)]['type'] == 'AN')) { + $chardata[$i]['type'] = 'AN'; + } + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers. + $prevlevel = -1; + $levcount = 0; + for ($i=0; $i < $numchars; ++$i) { + if ($chardata[$i]['type'] == 'ET') { + if (($levcount > 0) AND ($chardata[($i-1)]['type'] == 'EN')) { + $chardata[$i]['type'] = 'EN'; + } else { + $j = $i+1; + while (($j < $numchars) AND ($chardata[$j]['level'] == $prevlevel)) { + if ($chardata[$j]['type'] == 'EN') { + $chardata[$i]['type'] = 'EN'; + break; + } elseif ($chardata[$j]['type'] != 'ET') { + break; + } + ++$j; + } + } + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + // W6. Otherwise, separators and terminators change to Other Neutral. + $prevlevel = -1; + $levcount = 0; + for ($i=0; $i < $numchars; ++$i) { + if (($chardata[$i]['type'] == 'ET') OR ($chardata[$i]['type'] == 'ES') OR ($chardata[$i]['type'] == 'CS')) { + $chardata[$i]['type'] = 'ON'; + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + //W7. Search backward from each instance of a European number until the first strong type (R, L, or sor) is found. If an L is found, then change the type of the European number to L. + $prevlevel = -1; + $levcount = 0; + for ($i=0; $i < $numchars; ++$i) { + if ($chardata[$i]['char'] == 'EN') { + for ($j=$levcount; $j >= 0; $j--) { + if ($chardata[$j]['type'] == 'L') { + $chardata[$i]['type'] = 'L'; + } elseif ($chardata[$j]['type'] == 'R') { + break; + } + } + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + // N1. A sequence of neutrals takes the direction of the surrounding strong text if the text on both sides has the same direction. European and Arabic numbers act as if they were R in terms of their influence on neutrals. Start-of-level-run (sor) and end-of-level-run (eor) are used at level run boundaries. + $prevlevel = -1; + $levcount = 0; + for ($i=0; $i < $numchars; ++$i) { + if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { + if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) { + $chardata[$i]['type'] = 'L'; + } elseif (($chardata[$i]['type'] == 'N') AND + (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND + (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) { + $chardata[$i]['type'] = 'R'; + } elseif ($chardata[$i]['type'] == 'N') { + // N2. Any remaining neutrals take the embedding direction + $chardata[$i]['type'] = $chardata[$i]['sor']; + } + } elseif (($levcount == 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { + // first char + if (($chardata[$i]['type'] == 'N') AND ($chardata[$i]['sor'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) { + $chardata[$i]['type'] = 'L'; + } elseif (($chardata[$i]['type'] == 'N') AND + (($chardata[$i]['sor'] == 'R') OR ($chardata[$i]['sor'] == 'EN') OR ($chardata[$i]['sor'] == 'AN')) AND + (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) { + $chardata[$i]['type'] = 'R'; + } elseif ($chardata[$i]['type'] == 'N') { + // N2. Any remaining neutrals take the embedding direction + $chardata[$i]['type'] = $chardata[$i]['sor']; + } + } elseif (($levcount > 0) AND ((($i+1) == $numchars) OR (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] != $prevlevel))) { + //last char + if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[$i]['eor'] == 'L')) { + $chardata[$i]['type'] = 'L'; + } elseif (($chardata[$i]['type'] == 'N') AND + (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND + (($chardata[$i]['eor'] == 'R') OR ($chardata[$i]['eor'] == 'EN') OR ($chardata[$i]['eor'] == 'AN'))) { + $chardata[$i]['type'] = 'R'; + } elseif ($chardata[$i]['type'] == 'N') { + // N2. Any remaining neutrals take the embedding direction + $chardata[$i]['type'] = $chardata[$i]['sor']; + } + } elseif ($chardata[$i]['type'] == 'N') { + // N2. Any remaining neutrals take the embedding direction + $chardata[$i]['type'] = $chardata[$i]['sor']; + } + if ($chardata[$i]['level'] != $prevlevel) { + $levcount = 0; + } else { + ++$levcount; + } + $prevlevel = $chardata[$i]['level']; + } + + // I1. For all characters with an even (left-to-right) embedding direction, those of type R go up one level and those of type AN or EN go up two levels. + // I2. For all characters with an odd (right-to-left) embedding direction, those of type L, EN or AN go up one level. + for ($i=0; $i < $numchars; ++$i) { + $odd = $chardata[$i]['level'] % 2; + if ($odd) { + if (($chardata[$i]['type'] == 'L') OR ($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) { + $chardata[$i]['level'] += 1; + } + } else { + if ($chardata[$i]['type'] == 'R') { + $chardata[$i]['level'] += 1; + } elseif (($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) { + $chardata[$i]['level'] += 2; + } + } + $maxlevel = max($chardata[$i]['level'],$maxlevel); + } + + // L1. On each line, reset the embedding level of the following characters to the paragraph embedding level: + // 1. Segment separators, + // 2. Paragraph separators, + // 3. Any sequence of whitespace characters preceding a segment separator or paragraph separator, and + // 4. Any sequence of white space characters at the end of the line. + for ($i=0; $i < $numchars; ++$i) { + if (($chardata[$i]['type'] == 'B') OR ($chardata[$i]['type'] == 'S')) { + $chardata[$i]['level'] = $pel; + } elseif ($chardata[$i]['type'] == 'WS') { + $j = $i+1; + while ($j < $numchars) { + if ((($chardata[$j]['type'] == 'B') OR ($chardata[$j]['type'] == 'S')) OR + (($j == ($numchars-1)) AND ($chardata[$j]['type'] == 'WS'))) { + $chardata[$i]['level'] = $pel; + break; + } elseif ($chardata[$j]['type'] != 'WS') { + break; + } + ++$j; + } + } + } + + // Arabic Shaping + // Cursively connected scripts, such as Arabic or Syriac, require the selection of positional character shapes that depend on adjacent characters. Shaping is logically applied after the Bidirectional Algorithm is used and is limited to characters within the same directional run. + if ($arabic) { + $endedletter = array(1569,1570,1571,1572,1573,1575,1577,1583,1584,1585,1586,1608,1688); + $alfletter = array(1570,1571,1573,1575); + $chardata2 = $chardata; + $laaletter = false; + $charAL = array(); + $x = 0; + for ($i=0; $i < $numchars; ++$i) { + if ((TCPDF_FONT_DATA::$uni_type[$chardata[$i]['char']] == 'AL') OR ($chardata[$i]['char'] == 32) OR ($chardata[$i]['char'] == 8204)) { + $charAL[$x] = $chardata[$i]; + $charAL[$x]['i'] = $i; + $chardata[$i]['x'] = $x; + ++$x; + } + } + $numAL = $x; + for ($i=0; $i < $numchars; ++$i) { + $thischar = $chardata[$i]; + if ($i > 0) { + $prevchar = $chardata[($i-1)]; + } else { + $prevchar = false; + } + if (($i+1) < $numchars) { + $nextchar = $chardata[($i+1)]; + } else { + $nextchar = false; + } + if (TCPDF_FONT_DATA::$uni_type[$thischar['char']] == 'AL') { + $x = $thischar['x']; + if ($x > 0) { + $prevchar = $charAL[($x-1)]; + } else { + $prevchar = false; + } + if (($x+1) < $numAL) { + $nextchar = $charAL[($x+1)]; + } else { + $nextchar = false; + } + // if laa letter + if (($prevchar !== false) AND ($prevchar['char'] == 1604) AND (in_array($thischar['char'], $alfletter))) { + $arabicarr = TCPDF_FONT_DATA::$uni_laa_array; + $laaletter = true; + if ($x > 1) { + $prevchar = $charAL[($x-2)]; + } else { + $prevchar = false; + } + } else { + $arabicarr = TCPDF_FONT_DATA::$uni_arabicsubst; + $laaletter = false; + } + if (($prevchar !== false) AND ($nextchar !== false) AND + ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND + ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND + ($prevchar['type'] == $thischar['type']) AND + ($nextchar['type'] == $thischar['type']) AND + ($nextchar['char'] != 1567)) { + if (in_array($prevchar['char'], $endedletter)) { + if (isset($arabicarr[$thischar['char']][2])) { + // initial + $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2]; + } + } else { + if (isset($arabicarr[$thischar['char']][3])) { + // medial + $chardata2[$i]['char'] = $arabicarr[$thischar['char']][3]; + } + } + } elseif (($nextchar !== false) AND + ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND + ($nextchar['type'] == $thischar['type']) AND + ($nextchar['char'] != 1567)) { + if (isset($arabicarr[$chardata[$i]['char']][2])) { + // initial + $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2]; + } + } elseif ((($prevchar !== false) AND + ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND + ($prevchar['type'] == $thischar['type'])) OR + (($nextchar !== false) AND ($nextchar['char'] == 1567))) { + // final + if (($i > 1) AND ($thischar['char'] == 1607) AND + ($chardata[$i-1]['char'] == 1604) AND + ($chardata[$i-2]['char'] == 1604)) { + //Allah Word + // mark characters to delete with false + $chardata2[$i-2]['char'] = false; + $chardata2[$i-1]['char'] = false; + $chardata2[$i]['char'] = 65010; + } else { + if (($prevchar !== false) AND in_array($prevchar['char'], $endedletter)) { + if (isset($arabicarr[$thischar['char']][0])) { + // isolated + $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0]; + } + } else { + if (isset($arabicarr[$thischar['char']][1])) { + // final + $chardata2[$i]['char'] = $arabicarr[$thischar['char']][1]; + } + } + } + } elseif (isset($arabicarr[$thischar['char']][0])) { + // isolated + $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0]; + } + // if laa letter + if ($laaletter) { + // mark characters to delete with false + $chardata2[($charAL[($x-1)]['i'])]['char'] = false; + } + } // end if AL (Arabic Letter) + } // end for each char + /* + * Combining characters that can occur with Arabic Shadda (0651 HEX, 1617 DEC) are replaced. + * Putting the combining mark and shadda in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner. + */ + for ($i = 0; $i < ($numchars-1); ++$i) { + if (($chardata2[$i]['char'] == 1617) AND (isset(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])]))) { + // check if the subtitution font is defined on current font + if (isset($currentfont['cw'][(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])])])) { + $chardata2[$i]['char'] = false; + $chardata2[$i+1]['char'] = TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])]; + } + } + } + // remove marked characters + foreach ($chardata2 as $key => $value) { + if ($value['char'] === false) { + unset($chardata2[$key]); + } + } + $chardata = array_values($chardata2); + $numchars = count($chardata); + unset($chardata2); + unset($arabicarr); + unset($laaletter); + unset($charAL); + } + + // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher. + for ($j=$maxlevel; $j > 0; $j--) { + $ordarray = Array(); + $revarr = Array(); + $onlevel = false; + for ($i=0; $i < $numchars; ++$i) { + if ($chardata[$i]['level'] >= $j) { + $onlevel = true; + if (isset(TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']])) { + // L4. A character is depicted by a mirrored glyph if and only if (a) the resolved directionality of that character is R, and (b) the Bidi_Mirrored property value of that character is true. + $chardata[$i]['char'] = TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']]; + } + $revarr[] = $chardata[$i]; + } else { + if ($onlevel) { + $revarr = array_reverse($revarr); + $ordarray = array_merge($ordarray, $revarr); + $revarr = Array(); + $onlevel = false; + } + $ordarray[] = $chardata[$i]; + } + } + if ($onlevel) { + $revarr = array_reverse($revarr); + $ordarray = array_merge($ordarray, $revarr); + } + $chardata = $ordarray; + } + $ordarray = array(); + foreach ($chardata as $cd) { + $ordarray[] = $cd['char']; + // store char values for subsetting + $currentfont['subsetchars'][$cd['char']] = true; + } + return $ordarray; + } + + /** + * Get a reference font size. + * @param $size (string) String containing font size value. + * @param $refsize (float) Reference font size in points. + * @return float value in points + * @public static + */ + public static function getFontRefSize($size, $refsize=12) { + switch ($size) { + case 'xx-small': { + $size = ($refsize - 4); + break; + } + case 'x-small': { + $size = ($refsize - 3); + break; + } + case 'small': { + $size = ($refsize - 2); + break; + } + case 'medium': { + $size = $refsize; + break; + } + case 'large': { + $size = ($refsize + 2); + break; + } + case 'x-large': { + $size = ($refsize + 4); + break; + } + case 'xx-large': { + $size = ($refsize + 6); + break; + } + case 'smaller': { + $size = ($refsize - 3); + break; + } + case 'larger': { + $size = ($refsize + 3); + break; + } + } + return $size; + } + +} // END OF TCPDF_FONTS CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php new file mode 100644 index 000000000..150832ef1 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php @@ -0,0 +1,355 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : +// Static image methods used by the TCPDF class. +// +//============================================================+ + +/** + * @file + * This is a PHP class that contains static image methods for the TCPDF class.
      + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.003 + */ + +/** + * @class TCPDF_IMAGES + * Static image methods used by the TCPDF class. + * @package com.tecnick.tcpdf + * @brief PHP class for generating PDF documents without requiring external extensions. + * @version 1.0.003 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_IMAGES { + + /** + * Array of hinheritable SVG properties. + * @since 5.0.000 (2010-05-02) + * @public static + */ + public static $svginheritprop = array('clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cursor', 'direction', 'fill', 'fill-opacity', 'fill-rule', 'font', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'image-rendering', 'kerning', 'letter-spacing', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'pointer-events', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-rendering', 'visibility', 'word-spacing', 'writing-mode'); + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + /** + * Return the image type given the file name or array returned by getimagesize() function. + * @param $imgfile (string) image file name + * @param $iminfo (array) array of image information returned by getimagesize() function. + * @return string image type + * @since 4.8.017 (2009-11-27) + * @public static + */ + public static function getImageFileType($imgfile, $iminfo=array()) { + $type = ''; + if (isset($iminfo['mime']) AND !empty($iminfo['mime'])) { + $mime = explode('/', $iminfo['mime']); + if ((count($mime) > 1) AND ($mime[0] == 'image') AND (!empty($mime[1]))) { + $type = strtolower(trim($mime[1])); + } + } + if (empty($type)) { + $fileinfo = pathinfo($imgfile); + if (isset($fileinfo['extension']) AND (!TCPDF_STATIC::empty_string($fileinfo['extension']))) { + $type = strtolower(trim($fileinfo['extension'])); + } + } + if ($type == 'jpg') { + $type = 'jpeg'; + } + return $type; + } + + /** + * Set the transparency for the given GD image. + * @param $new_image (image) GD image object + * @param $image (image) GD image object. + * return GD image object. + * @since 4.9.016 (2010-04-20) + * @public static + */ + public static function setGDImageTransparency($new_image, $image) { + // transparency index + $tid = imagecolortransparent($image); + // default transparency color + $tcol = array('red' => 255, 'green' => 255, 'blue' => 255); + if ($tid >= 0) { + // get the colors for the transparency index + $tcol = imagecolorsforindex($image, $tid); + } + $tid = imagecolorallocate($new_image, $tcol['red'], $tcol['green'], $tcol['blue']); + imagefill($new_image, 0, 0, $tid); + imagecolortransparent($new_image, $tid); + return $new_image; + } + + /** + * Convert the loaded image to a PNG and then return a structure for the PDF creator. + * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant. + * @param $image (image) Image object. + * return image PNG image object. + * @since 4.9.016 (2010-04-20) + * @public static + */ + public static function _toPNG($image) { + // set temporary image file name + $tempname = TCPDF_STATIC::getObjFilename('img'); + // turn off interlaced mode + imageinterlace($image, 0); + // create temporary PNG image + imagepng($image, $tempname); + // remove image from memory + imagedestroy($image); + // get PNG image data + $retvars = self::_parsepng($tempname); + // tidy up by removing temporary image + unlink($tempname); + return $retvars; + } + + /** + * Convert the loaded image to a JPEG and then return a structure for the PDF creator. + * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant. + * @param $image (image) Image object. + * @param $quality (int) JPEG quality. + * return image JPEG image object. + * @public static + */ + public static function _toJPEG($image, $quality) { + $tempname = TCPDF_STATIC::getObjFilename('img'); + imagejpeg($image, $tempname, $quality); + imagedestroy($image); + $retvars = self::_parsejpeg($tempname); + // tidy up by removing temporary image + unlink($tempname); + return $retvars; + } + + /** + * Extract info from a JPEG file without using the GD library. + * @param $file (string) image file to parse + * @return array structure containing the image data + * @public static + */ + public static function _parsejpeg($file) { + $a = getimagesize($file); + if (empty($a)) { + //Missing or incorrect image file + return false; + } + if ($a[2] != 2) { + // Not a JPEG file + return false; + } + // bits per pixel + $bpc = isset($a['bits']) ? intval($a['bits']) : 8; + // number of image channels + if (!isset($a['channels'])) { + $channels = 3; + } else { + $channels = intval($a['channels']); + } + // default colour space + switch ($channels) { + case 1: { + $colspace = 'DeviceGray'; + break; + } + case 3: { + $colspace = 'DeviceRGB'; + break; + } + case 4: { + $colspace = 'DeviceCMYK'; + break; + } + default: { + $channels = 3; + $colspace = 'DeviceRGB'; + break; + } + } + // get file content + $data = file_get_contents($file); + // check for embedded ICC profile + $icc = array(); + $offset = 0; + while (($pos = strpos($data, "ICC_PROFILE\0", $offset)) !== false) { + // get ICC sequence length + $length = (TCPDF_STATIC::_getUSHORT($data, ($pos - 2)) - 16); + // marker sequence number + $msn = max(1, ord($data[($pos + 12)])); + // number of markers (total of APP2 used) + $nom = max(1, ord($data[($pos + 13)])); + // get sequence segment + $icc[($msn - 1)] = substr($data, ($pos + 14), $length); + // move forward to next sequence + $offset = ($pos + 14 + $length); + } + // order and compact ICC segments + if (count($icc) > 0) { + ksort($icc); + $icc = implode('', $icc); + if ((ord($icc[36]) != 0x61) OR (ord($icc[37]) != 0x63) OR (ord($icc[38]) != 0x73) OR (ord($icc[39]) != 0x70)) { + // invalid ICC profile + $icc = false; + } + } else { + $icc = false; + } + return array('w' => $a[0], 'h' => $a[1], 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'DCTDecode', 'data' => $data); + } + + /** + * Extract info from a PNG file without using the GD library. + * @param $file (string) image file to parse + * @return array structure containing the image data + * @public static + */ + public static function _parsepng($file) { + $f = @fopen($file, 'rb'); + if ($f === false) { + // Can't open image file + return false; + } + //Check signature + if (fread($f, 8) != chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { + // Not a PNG file + return false; + } + //Read header chunk + fread($f, 4); + if (fread($f, 4) != 'IHDR') { + //Incorrect PNG file + return false; + } + $w = TCPDF_STATIC::_freadint($f); + $h = TCPDF_STATIC::_freadint($f); + $bpc = ord(fread($f, 1)); + $ct = ord(fread($f, 1)); + if ($ct == 0) { + $colspace = 'DeviceGray'; + } elseif ($ct == 2) { + $colspace = 'DeviceRGB'; + } elseif ($ct == 3) { + $colspace = 'Indexed'; + } else { + // alpha channel + fclose($f); + return 'pngalpha'; + } + if (ord(fread($f, 1)) != 0) { + // Unknown compression method + fclose($f); + return false; + } + if (ord(fread($f, 1)) != 0) { + // Unknown filter method + fclose($f); + return false; + } + if (ord(fread($f, 1)) != 0) { + // Interlacing not supported + fclose($f); + return false; + } + fread($f, 4); + $channels = ($ct == 2 ? 3 : 1); + $parms = '/DecodeParms << /Predictor 15 /Colors '.$channels.' /BitsPerComponent '.$bpc.' /Columns '.$w.' >>'; + //Scan chunks looking for palette, transparency and image data + $pal = ''; + $trns = ''; + $data = ''; + $icc = false; + do { + $n = TCPDF_STATIC::_freadint($f); + $type = fread($f, 4); + if ($type == 'PLTE') { + // read palette + $pal = TCPDF_STATIC::rfread($f, $n); + fread($f, 4); + } elseif ($type == 'tRNS') { + // read transparency info + $t = TCPDF_STATIC::rfread($f, $n); + if ($ct == 0) { // DeviceGray + $trns = array(ord($t[1])); + } elseif ($ct == 2) { // DeviceRGB + $trns = array(ord($t[1]), ord($t[3]), ord($t[5])); + } else { // Indexed + if ($n > 0) { + $trns = array(); + for ($i = 0; $i < $n; ++ $i) { + $trns[] = ord($t{$i}); + } + } + } + fread($f, 4); + } elseif ($type == 'IDAT') { + // read image data block + $data .= TCPDF_STATIC::rfread($f, $n); + fread($f, 4); + } elseif ($type == 'iCCP') { + // skip profile name + $len = 0; + while ((ord(fread($f, 1)) != 0) AND ($len < 80)) { + ++$len; + } + // get compression method + if (ord(fread($f, 1)) != 0) { + // Unknown filter method + fclose($f); + return false; + } + // read ICC Color Profile + $icc = TCPDF_STATIC::rfread($f, ($n - $len - 2)); + // decompress profile + $icc = gzuncompress($icc); + fread($f, 4); + } elseif ($type == 'IEND') { + break; + } else { + TCPDF_STATIC::rfread($f, $n + 4); + } + } while ($n); + if (($colspace == 'Indexed') AND (empty($pal))) { + // Missing palette + fclose($f); + return false; + } + fclose($f); + return array('w' => $w, 'h' => $h, 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'FlateDecode', 'parms' => $parms, 'pal' => $pal, 'trns' => $trns, 'data' => $data); + } + +} // END OF TCPDF_IMAGES CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php new file mode 100644 index 000000000..e657446aa --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php @@ -0,0 +1,2851 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : +// Static methods used by the TCPDF class. +// +//============================================================+ + +/** + * @file + * This is a PHP class that contains static methods for the TCPDF class.
      + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.004 + */ + +/** + * @class TCPDF_STATIC + * Static methods used by the TCPDF class. + * @package com.tecnick.tcpdf + * @brief PHP class for generating PDF documents without requiring external extensions. + * @version 1.0.004 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_STATIC { + + /** + * Current TCPDF version. + * @private static + */ + private static $tcpdf_version = '6.0.093'; + + /** + * String alias for total number of pages. + * @public static + */ + public static $alias_tot_pages = '{:ptp:}'; + + /** + * String alias for page number. + * @public static + */ + public static $alias_num_page = '{:pnp:}'; + + /** + * String alias for total number of pages in a single group. + * @public static + */ + public static $alias_group_tot_pages = '{:ptg:}'; + + /** + * String alias for group page number. + * @public static + */ + public static $alias_group_num_page = '{:png:}'; + + /** + * String alias for right shift compensation used to correctly align page numbers on the right. + * @public static + */ + public static $alias_right_shift = '{rsc:'; + + /** + * Encryption padding string. + * @public static + */ + public static $enc_padding = "\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A"; + + /** + * ByteRange placemark used during digital signature process. + * @since 4.6.028 (2009-08-25) + * @public static + */ + public static $byterange_string = '/ByteRange[0 ********** ********** **********]'; + + /** + * Array page boxes names + * @public static + */ + public static $pageboxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'); + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + /** + * Return the current TCPDF version. + * @return TCPDF version string + * @since 5.9.012 (2010-11-10) + * @public static + */ + public static function getTCPDFVersion() { + return self::$tcpdf_version; + } + + /** + * Return the current TCPDF producer. + * @return TCPDF producer string + * @since 6.0.000 (2013-03-16) + * @public static + */ + public static function getTCPDFProducer() { + return "\x54\x43\x50\x44\x46\x20".self::getTCPDFVersion()."\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29"; + } + + /** + * Sets the current active configuration setting of magic_quotes_runtime (if the set_magic_quotes_runtime function exist) + * @param $mqr (boolean) FALSE for off, TRUE for on. + * @since 4.6.025 (2009-08-17) + * @public static + */ + public static function set_mqr($mqr) { + if (!defined('PHP_VERSION_ID')) { + $version = PHP_VERSION; + define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4])); + } + if (PHP_VERSION_ID < 50300) { + @set_magic_quotes_runtime($mqr); + } + } + + /** + * Gets the current active configuration setting of magic_quotes_runtime (if the get_magic_quotes_runtime function exist) + * @return Returns 0 if magic quotes runtime is off or get_magic_quotes_runtime doesn't exist, 1 otherwise. + * @since 4.6.025 (2009-08-17) + * @public static + */ + public static function get_mqr() { + if (!defined('PHP_VERSION_ID')) { + $version = PHP_VERSION; + define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4])); + } + if (PHP_VERSION_ID < 50300) { + return @get_magic_quotes_runtime(); + } + return 0; + } + + /** + * Get page dimensions from format name. + * @param $format (mixed) The format name. It can be:
        + *
      • ISO 216 A Series + 2 SIS 014711 extensions
      • + *
      • A0 (841x1189 mm ; 33.11x46.81 in)
      • + *
      • A1 (594x841 mm ; 23.39x33.11 in)
      • + *
      • A2 (420x594 mm ; 16.54x23.39 in)
      • + *
      • A3 (297x420 mm ; 11.69x16.54 in)
      • + *
      • A4 (210x297 mm ; 8.27x11.69 in)
      • + *
      • A5 (148x210 mm ; 5.83x8.27 in)
      • + *
      • A6 (105x148 mm ; 4.13x5.83 in)
      • + *
      • A7 (74x105 mm ; 2.91x4.13 in)
      • + *
      • A8 (52x74 mm ; 2.05x2.91 in)
      • + *
      • A9 (37x52 mm ; 1.46x2.05 in)
      • + *
      • A10 (26x37 mm ; 1.02x1.46 in)
      • + *
      • A11 (18x26 mm ; 0.71x1.02 in)
      • + *
      • A12 (13x18 mm ; 0.51x0.71 in)
      • + *
      • ISO 216 B Series + 2 SIS 014711 extensions
      • + *
      • B0 (1000x1414 mm ; 39.37x55.67 in)
      • + *
      • B1 (707x1000 mm ; 27.83x39.37 in)
      • + *
      • B2 (500x707 mm ; 19.69x27.83 in)
      • + *
      • B3 (353x500 mm ; 13.90x19.69 in)
      • + *
      • B4 (250x353 mm ; 9.84x13.90 in)
      • + *
      • B5 (176x250 mm ; 6.93x9.84 in)
      • + *
      • B6 (125x176 mm ; 4.92x6.93 in)
      • + *
      • B7 (88x125 mm ; 3.46x4.92 in)
      • + *
      • B8 (62x88 mm ; 2.44x3.46 in)
      • + *
      • B9 (44x62 mm ; 1.73x2.44 in)
      • + *
      • B10 (31x44 mm ; 1.22x1.73 in)
      • + *
      • B11 (22x31 mm ; 0.87x1.22 in)
      • + *
      • B12 (15x22 mm ; 0.59x0.87 in)
      • + *
      • ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION
      • + *
      • C0 (917x1297 mm ; 36.10x51.06 in)
      • + *
      • C1 (648x917 mm ; 25.51x36.10 in)
      • + *
      • C2 (458x648 mm ; 18.03x25.51 in)
      • + *
      • C3 (324x458 mm ; 12.76x18.03 in)
      • + *
      • C4 (229x324 mm ; 9.02x12.76 in)
      • + *
      • C5 (162x229 mm ; 6.38x9.02 in)
      • + *
      • C6 (114x162 mm ; 4.49x6.38 in)
      • + *
      • C7 (81x114 mm ; 3.19x4.49 in)
      • + *
      • C8 (57x81 mm ; 2.24x3.19 in)
      • + *
      • C9 (40x57 mm ; 1.57x2.24 in)
      • + *
      • C10 (28x40 mm ; 1.10x1.57 in)
      • + *
      • C11 (20x28 mm ; 0.79x1.10 in)
      • + *
      • C12 (14x20 mm ; 0.55x0.79 in)
      • + *
      • C76 (81x162 mm ; 3.19x6.38 in)
      • + *
      • DL (110x220 mm ; 4.33x8.66 in)
      • + *
      • SIS 014711 E Series
      • + *
      • E0 (879x1241 mm ; 34.61x48.86 in)
      • + *
      • E1 (620x879 mm ; 24.41x34.61 in)
      • + *
      • E2 (440x620 mm ; 17.32x24.41 in)
      • + *
      • E3 (310x440 mm ; 12.20x17.32 in)
      • + *
      • E4 (220x310 mm ; 8.66x12.20 in)
      • + *
      • E5 (155x220 mm ; 6.10x8.66 in)
      • + *
      • E6 (110x155 mm ; 4.33x6.10 in)
      • + *
      • E7 (78x110 mm ; 3.07x4.33 in)
      • + *
      • E8 (55x78 mm ; 2.17x3.07 in)
      • + *
      • E9 (39x55 mm ; 1.54x2.17 in)
      • + *
      • E10 (27x39 mm ; 1.06x1.54 in)
      • + *
      • E11 (19x27 mm ; 0.75x1.06 in)
      • + *
      • E12 (13x19 mm ; 0.51x0.75 in)
      • + *
      • SIS 014711 G Series
      • + *
      • G0 (958x1354 mm ; 37.72x53.31 in)
      • + *
      • G1 (677x958 mm ; 26.65x37.72 in)
      • + *
      • G2 (479x677 mm ; 18.86x26.65 in)
      • + *
      • G3 (338x479 mm ; 13.31x18.86 in)
      • + *
      • G4 (239x338 mm ; 9.41x13.31 in)
      • + *
      • G5 (169x239 mm ; 6.65x9.41 in)
      • + *
      • G6 (119x169 mm ; 4.69x6.65 in)
      • + *
      • G7 (84x119 mm ; 3.31x4.69 in)
      • + *
      • G8 (59x84 mm ; 2.32x3.31 in)
      • + *
      • G9 (42x59 mm ; 1.65x2.32 in)
      • + *
      • G10 (29x42 mm ; 1.14x1.65 in)
      • + *
      • G11 (21x29 mm ; 0.83x1.14 in)
      • + *
      • G12 (14x21 mm ; 0.55x0.83 in)
      • + *
      • ISO Press
      • + *
      • RA0 (860x1220 mm ; 33.86x48.03 in)
      • + *
      • RA1 (610x860 mm ; 24.02x33.86 in)
      • + *
      • RA2 (430x610 mm ; 16.93x24.02 in)
      • + *
      • RA3 (305x430 mm ; 12.01x16.93 in)
      • + *
      • RA4 (215x305 mm ; 8.46x12.01 in)
      • + *
      • SRA0 (900x1280 mm ; 35.43x50.39 in)
      • + *
      • SRA1 (640x900 mm ; 25.20x35.43 in)
      • + *
      • SRA2 (450x640 mm ; 17.72x25.20 in)
      • + *
      • SRA3 (320x450 mm ; 12.60x17.72 in)
      • + *
      • SRA4 (225x320 mm ; 8.86x12.60 in)
      • + *
      • German DIN 476
      • + *
      • 4A0 (1682x2378 mm ; 66.22x93.62 in)
      • + *
      • 2A0 (1189x1682 mm ; 46.81x66.22 in)
      • + *
      • Variations on the ISO Standard
      • + *
      • A2_EXTRA (445x619 mm ; 17.52x24.37 in)
      • + *
      • A3+ (329x483 mm ; 12.95x19.02 in)
      • + *
      • A3_EXTRA (322x445 mm ; 12.68x17.52 in)
      • + *
      • A3_SUPER (305x508 mm ; 12.01x20.00 in)
      • + *
      • SUPER_A3 (305x487 mm ; 12.01x19.17 in)
      • + *
      • A4_EXTRA (235x322 mm ; 9.25x12.68 in)
      • + *
      • A4_SUPER (229x322 mm ; 9.02x12.68 in)
      • + *
      • SUPER_A4 (227x356 mm ; 8.94x14.02 in)
      • + *
      • A4_LONG (210x348 mm ; 8.27x13.70 in)
      • + *
      • F4 (210x330 mm ; 8.27x12.99 in)
      • + *
      • SO_B5_EXTRA (202x276 mm ; 7.95x10.87 in)
      • + *
      • A5_EXTRA (173x235 mm ; 6.81x9.25 in)
      • + *
      • ANSI Series
      • + *
      • ANSI_E (864x1118 mm ; 34.00x44.00 in)
      • + *
      • ANSI_D (559x864 mm ; 22.00x34.00 in)
      • + *
      • ANSI_C (432x559 mm ; 17.00x22.00 in)
      • + *
      • ANSI_B (279x432 mm ; 11.00x17.00 in)
      • + *
      • ANSI_A (216x279 mm ; 8.50x11.00 in)
      • + *
      • Traditional 'Loose' North American Paper Sizes
      • + *
      • LEDGER, USLEDGER (432x279 mm ; 17.00x11.00 in)
      • + *
      • TABLOID, USTABLOID, BIBLE, ORGANIZERK (279x432 mm ; 11.00x17.00 in)
      • + *
      • LETTER, USLETTER, ORGANIZERM (216x279 mm ; 8.50x11.00 in)
      • + *
      • LEGAL, USLEGAL (216x356 mm ; 8.50x14.00 in)
      • + *
      • GLETTER, GOVERNMENTLETTER (203x267 mm ; 8.00x10.50 in)
      • + *
      • JLEGAL, JUNIORLEGAL (203x127 mm ; 8.00x5.00 in)
      • + *
      • Other North American Paper Sizes
      • + *
      • QUADDEMY (889x1143 mm ; 35.00x45.00 in)
      • + *
      • SUPER_B (330x483 mm ; 13.00x19.00 in)
      • + *
      • QUARTO (229x279 mm ; 9.00x11.00 in)
      • + *
      • FOLIO, GOVERNMENTLEGAL (216x330 mm ; 8.50x13.00 in)
      • + *
      • EXECUTIVE, MONARCH (184x267 mm ; 7.25x10.50 in)
      • + *
      • MEMO, STATEMENT, ORGANIZERL (140x216 mm ; 5.50x8.50 in)
      • + *
      • FOOLSCAP (210x330 mm ; 8.27x13.00 in)
      • + *
      • COMPACT (108x171 mm ; 4.25x6.75 in)
      • + *
      • ORGANIZERJ (70x127 mm ; 2.75x5.00 in)
      • + *
      • Canadian standard CAN 2-9.60M
      • + *
      • P1 (560x860 mm ; 22.05x33.86 in)
      • + *
      • P2 (430x560 mm ; 16.93x22.05 in)
      • + *
      • P3 (280x430 mm ; 11.02x16.93 in)
      • + *
      • P4 (215x280 mm ; 8.46x11.02 in)
      • + *
      • P5 (140x215 mm ; 5.51x8.46 in)
      • + *
      • P6 (107x140 mm ; 4.21x5.51 in)
      • + *
      • North American Architectural Sizes
      • + *
      • ARCH_E (914x1219 mm ; 36.00x48.00 in)
      • + *
      • ARCH_E1 (762x1067 mm ; 30.00x42.00 in)
      • + *
      • ARCH_D (610x914 mm ; 24.00x36.00 in)
      • + *
      • ARCH_C, BROADSHEET (457x610 mm ; 18.00x24.00 in)
      • + *
      • ARCH_B (305x457 mm ; 12.00x18.00 in)
      • + *
      • ARCH_A (229x305 mm ; 9.00x12.00 in)
      • + *
      • Announcement Envelopes
      • + *
      • ANNENV_A2 (111x146 mm ; 4.37x5.75 in)
      • + *
      • ANNENV_A6 (121x165 mm ; 4.75x6.50 in)
      • + *
      • ANNENV_A7 (133x184 mm ; 5.25x7.25 in)
      • + *
      • ANNENV_A8 (140x206 mm ; 5.50x8.12 in)
      • + *
      • ANNENV_A10 (159x244 mm ; 6.25x9.62 in)
      • + *
      • ANNENV_SLIM (98x225 mm ; 3.87x8.87 in)
      • + *
      • Commercial Envelopes
      • + *
      • COMMENV_N6_1/4 (89x152 mm ; 3.50x6.00 in)
      • + *
      • COMMENV_N6_3/4 (92x165 mm ; 3.62x6.50 in)
      • + *
      • COMMENV_N8 (98x191 mm ; 3.87x7.50 in)
      • + *
      • COMMENV_N9 (98x225 mm ; 3.87x8.87 in)
      • + *
      • COMMENV_N10 (105x241 mm ; 4.12x9.50 in)
      • + *
      • COMMENV_N11 (114x263 mm ; 4.50x10.37 in)
      • + *
      • COMMENV_N12 (121x279 mm ; 4.75x11.00 in)
      • + *
      • COMMENV_N14 (127x292 mm ; 5.00x11.50 in)
      • + *
      • Catalogue Envelopes
      • + *
      • CATENV_N1 (152x229 mm ; 6.00x9.00 in)
      • + *
      • CATENV_N1_3/4 (165x241 mm ; 6.50x9.50 in)
      • + *
      • CATENV_N2 (165x254 mm ; 6.50x10.00 in)
      • + *
      • CATENV_N3 (178x254 mm ; 7.00x10.00 in)
      • + *
      • CATENV_N6 (191x267 mm ; 7.50x10.50 in)
      • + *
      • CATENV_N7 (203x279 mm ; 8.00x11.00 in)
      • + *
      • CATENV_N8 (210x286 mm ; 8.25x11.25 in)
      • + *
      • CATENV_N9_1/2 (216x267 mm ; 8.50x10.50 in)
      • + *
      • CATENV_N9_3/4 (222x286 mm ; 8.75x11.25 in)
      • + *
      • CATENV_N10_1/2 (229x305 mm ; 9.00x12.00 in)
      • + *
      • CATENV_N12_1/2 (241x318 mm ; 9.50x12.50 in)
      • + *
      • CATENV_N13_1/2 (254x330 mm ; 10.00x13.00 in)
      • + *
      • CATENV_N14_1/4 (286x311 mm ; 11.25x12.25 in)
      • + *
      • CATENV_N14_1/2 (292x368 mm ; 11.50x14.50 in)
      • + *
      • Japanese (JIS P 0138-61) Standard B-Series
      • + *
      • JIS_B0 (1030x1456 mm ; 40.55x57.32 in)
      • + *
      • JIS_B1 (728x1030 mm ; 28.66x40.55 in)
      • + *
      • JIS_B2 (515x728 mm ; 20.28x28.66 in)
      • + *
      • JIS_B3 (364x515 mm ; 14.33x20.28 in)
      • + *
      • JIS_B4 (257x364 mm ; 10.12x14.33 in)
      • + *
      • JIS_B5 (182x257 mm ; 7.17x10.12 in)
      • + *
      • JIS_B6 (128x182 mm ; 5.04x7.17 in)
      • + *
      • JIS_B7 (91x128 mm ; 3.58x5.04 in)
      • + *
      • JIS_B8 (64x91 mm ; 2.52x3.58 in)
      • + *
      • JIS_B9 (45x64 mm ; 1.77x2.52 in)
      • + *
      • JIS_B10 (32x45 mm ; 1.26x1.77 in)
      • + *
      • JIS_B11 (22x32 mm ; 0.87x1.26 in)
      • + *
      • JIS_B12 (16x22 mm ; 0.63x0.87 in)
      • + *
      • PA Series
      • + *
      • PA0 (840x1120 mm ; 33.07x44.09 in)
      • + *
      • PA1 (560x840 mm ; 22.05x33.07 in)
      • + *
      • PA2 (420x560 mm ; 16.54x22.05 in)
      • + *
      • PA3 (280x420 mm ; 11.02x16.54 in)
      • + *
      • PA4 (210x280 mm ; 8.27x11.02 in)
      • + *
      • PA5 (140x210 mm ; 5.51x8.27 in)
      • + *
      • PA6 (105x140 mm ; 4.13x5.51 in)
      • + *
      • PA7 (70x105 mm ; 2.76x4.13 in)
      • + *
      • PA8 (52x70 mm ; 2.05x2.76 in)
      • + *
      • PA9 (35x52 mm ; 1.38x2.05 in)
      • + *
      • PA10 (26x35 mm ; 1.02x1.38 in)
      • + *
      • Standard Photographic Print Sizes
      • + *
      • PASSPORT_PHOTO (35x45 mm ; 1.38x1.77 in)
      • + *
      • E (82x120 mm ; 3.25x4.72 in)
      • + *
      • 3R, L (89x127 mm ; 3.50x5.00 in)
      • + *
      • 4R, KG (102x152 mm ; 4.02x5.98 in)
      • + *
      • 4D (120x152 mm ; 4.72x5.98 in)
      • + *
      • 5R, 2L (127x178 mm ; 5.00x7.01 in)
      • + *
      • 6R, 8P (152x203 mm ; 5.98x7.99 in)
      • + *
      • 8R, 6P (203x254 mm ; 7.99x10.00 in)
      • + *
      • S8R, 6PW (203x305 mm ; 7.99x12.01 in)
      • + *
      • 10R, 4P (254x305 mm ; 10.00x12.01 in)
      • + *
      • S10R, 4PW (254x381 mm ; 10.00x15.00 in)
      • + *
      • 11R (279x356 mm ; 10.98x14.02 in)
      • + *
      • S11R (279x432 mm ; 10.98x17.01 in)
      • + *
      • 12R (305x381 mm ; 12.01x15.00 in)
      • + *
      • S12R (305x456 mm ; 12.01x17.95 in)
      • + *
      • Common Newspaper Sizes
      • + *
      • NEWSPAPER_BROADSHEET (750x600 mm ; 29.53x23.62 in)
      • + *
      • NEWSPAPER_BERLINER (470x315 mm ; 18.50x12.40 in)
      • + *
      • NEWSPAPER_COMPACT, NEWSPAPER_TABLOID (430x280 mm ; 16.93x11.02 in)
      • + *
      • Business Cards
      • + *
      • CREDIT_CARD, BUSINESS_CARD, BUSINESS_CARD_ISO7810 (54x86 mm ; 2.13x3.37 in)
      • + *
      • BUSINESS_CARD_ISO216 (52x74 mm ; 2.05x2.91 in)
      • + *
      • BUSINESS_CARD_IT, BUSINESS_CARD_UK, BUSINESS_CARD_FR, BUSINESS_CARD_DE, BUSINESS_CARD_ES (55x85 mm ; 2.17x3.35 in)
      • + *
      • BUSINESS_CARD_US, BUSINESS_CARD_CA (51x89 mm ; 2.01x3.50 in)
      • + *
      • BUSINESS_CARD_JP (55x91 mm ; 2.17x3.58 in)
      • + *
      • BUSINESS_CARD_HK (54x90 mm ; 2.13x3.54 in)
      • + *
      • BUSINESS_CARD_AU, BUSINESS_CARD_DK, BUSINESS_CARD_SE (55x90 mm ; 2.17x3.54 in)
      • + *
      • BUSINESS_CARD_RU, BUSINESS_CARD_CZ, BUSINESS_CARD_FI, BUSINESS_CARD_HU, BUSINESS_CARD_IL (50x90 mm ; 1.97x3.54 in)
      • + *
      • Billboards
      • + *
      • 4SHEET (1016x1524 mm ; 40.00x60.00 in)
      • + *
      • 6SHEET (1200x1800 mm ; 47.24x70.87 in)
      • + *
      • 12SHEET (3048x1524 mm ; 120.00x60.00 in)
      • + *
      • 16SHEET (2032x3048 mm ; 80.00x120.00 in)
      • + *
      • 32SHEET (4064x3048 mm ; 160.00x120.00 in)
      • + *
      • 48SHEET (6096x3048 mm ; 240.00x120.00 in)
      • + *
      • 64SHEET (8128x3048 mm ; 320.00x120.00 in)
      • + *
      • 96SHEET (12192x3048 mm ; 480.00x120.00 in)
      • + *
      • Old Imperial English (some are still used in USA)
      • + *
      • EN_EMPEROR (1219x1829 mm ; 48.00x72.00 in)
      • + *
      • EN_ANTIQUARIAN (787x1346 mm ; 31.00x53.00 in)
      • + *
      • EN_GRAND_EAGLE (730x1067 mm ; 28.75x42.00 in)
      • + *
      • EN_DOUBLE_ELEPHANT (679x1016 mm ; 26.75x40.00 in)
      • + *
      • EN_ATLAS (660x864 mm ; 26.00x34.00 in)
      • + *
      • EN_COLOMBIER (597x876 mm ; 23.50x34.50 in)
      • + *
      • EN_ELEPHANT (584x711 mm ; 23.00x28.00 in)
      • + *
      • EN_DOUBLE_DEMY (572x902 mm ; 22.50x35.50 in)
      • + *
      • EN_IMPERIAL (559x762 mm ; 22.00x30.00 in)
      • + *
      • EN_PRINCESS (546x711 mm ; 21.50x28.00 in)
      • + *
      • EN_CARTRIDGE (533x660 mm ; 21.00x26.00 in)
      • + *
      • EN_DOUBLE_LARGE_POST (533x838 mm ; 21.00x33.00 in)
      • + *
      • EN_ROYAL (508x635 mm ; 20.00x25.00 in)
      • + *
      • EN_SHEET, EN_HALF_POST (495x597 mm ; 19.50x23.50 in)
      • + *
      • EN_SUPER_ROYAL (483x686 mm ; 19.00x27.00 in)
      • + *
      • EN_DOUBLE_POST (483x775 mm ; 19.00x30.50 in)
      • + *
      • EN_MEDIUM (445x584 mm ; 17.50x23.00 in)
      • + *
      • EN_DEMY (445x572 mm ; 17.50x22.50 in)
      • + *
      • EN_LARGE_POST (419x533 mm ; 16.50x21.00 in)
      • + *
      • EN_COPY_DRAUGHT (406x508 mm ; 16.00x20.00 in)
      • + *
      • EN_POST (394x489 mm ; 15.50x19.25 in)
      • + *
      • EN_CROWN (381x508 mm ; 15.00x20.00 in)
      • + *
      • EN_PINCHED_POST (375x470 mm ; 14.75x18.50 in)
      • + *
      • EN_BRIEF (343x406 mm ; 13.50x16.00 in)
      • + *
      • EN_FOOLSCAP (343x432 mm ; 13.50x17.00 in)
      • + *
      • EN_SMALL_FOOLSCAP (337x419 mm ; 13.25x16.50 in)
      • + *
      • EN_POTT (318x381 mm ; 12.50x15.00 in)
      • + *
      • Old Imperial Belgian
      • + *
      • BE_GRAND_AIGLE (700x1040 mm ; 27.56x40.94 in)
      • + *
      • BE_COLOMBIER (620x850 mm ; 24.41x33.46 in)
      • + *
      • BE_DOUBLE_CARRE (620x920 mm ; 24.41x36.22 in)
      • + *
      • BE_ELEPHANT (616x770 mm ; 24.25x30.31 in)
      • + *
      • BE_PETIT_AIGLE (600x840 mm ; 23.62x33.07 in)
      • + *
      • BE_GRAND_JESUS (550x730 mm ; 21.65x28.74 in)
      • + *
      • BE_JESUS (540x730 mm ; 21.26x28.74 in)
      • + *
      • BE_RAISIN (500x650 mm ; 19.69x25.59 in)
      • + *
      • BE_GRAND_MEDIAN (460x605 mm ; 18.11x23.82 in)
      • + *
      • BE_DOUBLE_POSTE (435x565 mm ; 17.13x22.24 in)
      • + *
      • BE_COQUILLE (430x560 mm ; 16.93x22.05 in)
      • + *
      • BE_PETIT_MEDIAN (415x530 mm ; 16.34x20.87 in)
      • + *
      • BE_RUCHE (360x460 mm ; 14.17x18.11 in)
      • + *
      • BE_PROPATRIA (345x430 mm ; 13.58x16.93 in)
      • + *
      • BE_LYS (317x397 mm ; 12.48x15.63 in)
      • + *
      • BE_POT (307x384 mm ; 12.09x15.12 in)
      • + *
      • BE_ROSETTE (270x347 mm ; 10.63x13.66 in)
      • + *
      • Old Imperial French
      • + *
      • FR_UNIVERS (1000x1300 mm ; 39.37x51.18 in)
      • + *
      • FR_DOUBLE_COLOMBIER (900x1260 mm ; 35.43x49.61 in)
      • + *
      • FR_GRANDE_MONDE (900x1260 mm ; 35.43x49.61 in)
      • + *
      • FR_DOUBLE_SOLEIL (800x1200 mm ; 31.50x47.24 in)
      • + *
      • FR_DOUBLE_JESUS (760x1120 mm ; 29.92x44.09 in)
      • + *
      • FR_GRAND_AIGLE (750x1060 mm ; 29.53x41.73 in)
      • + *
      • FR_PETIT_AIGLE (700x940 mm ; 27.56x37.01 in)
      • + *
      • FR_DOUBLE_RAISIN (650x1000 mm ; 25.59x39.37 in)
      • + *
      • FR_JOURNAL (650x940 mm ; 25.59x37.01 in)
      • + *
      • FR_COLOMBIER_AFFICHE (630x900 mm ; 24.80x35.43 in)
      • + *
      • FR_DOUBLE_CAVALIER (620x920 mm ; 24.41x36.22 in)
      • + *
      • FR_CLOCHE (600x800 mm ; 23.62x31.50 in)
      • + *
      • FR_SOLEIL (600x800 mm ; 23.62x31.50 in)
      • + *
      • FR_DOUBLE_CARRE (560x900 mm ; 22.05x35.43 in)
      • + *
      • FR_DOUBLE_COQUILLE (560x880 mm ; 22.05x34.65 in)
      • + *
      • FR_JESUS (560x760 mm ; 22.05x29.92 in)
      • + *
      • FR_RAISIN (500x650 mm ; 19.69x25.59 in)
      • + *
      • FR_CAVALIER (460x620 mm ; 18.11x24.41 in)
      • + *
      • FR_DOUBLE_COURONNE (460x720 mm ; 18.11x28.35 in)
      • + *
      • FR_CARRE (450x560 mm ; 17.72x22.05 in)
      • + *
      • FR_COQUILLE (440x560 mm ; 17.32x22.05 in)
      • + *
      • FR_DOUBLE_TELLIERE (440x680 mm ; 17.32x26.77 in)
      • + *
      • FR_DOUBLE_CLOCHE (400x600 mm ; 15.75x23.62 in)
      • + *
      • FR_DOUBLE_POT (400x620 mm ; 15.75x24.41 in)
      • + *
      • FR_ECU (400x520 mm ; 15.75x20.47 in)
      • + *
      • FR_COURONNE (360x460 mm ; 14.17x18.11 in)
      • + *
      • FR_TELLIERE (340x440 mm ; 13.39x17.32 in)
      • + *
      • FR_POT (310x400 mm ; 12.20x15.75 in)
      • + *
      + * @return array containing page width and height in points + * @since 5.0.010 (2010-05-17) + * @public static + */ + public static function getPageSizeFromFormat($format) { + // Paper cordinates are calculated in this way: (inches * 72) where (1 inch = 25.4 mm) + switch (strtoupper($format)) { + // ISO 216 A Series + 2 SIS 014711 extensions + case 'A0' : {$pf = array( 2383.937, 3370.394); break;} + case 'A1' : {$pf = array( 1683.780, 2383.937); break;} + case 'A2' : {$pf = array( 1190.551, 1683.780); break;} + case 'A3' : {$pf = array( 841.890, 1190.551); break;} + case 'A4' : {$pf = array( 595.276, 841.890); break;} + case 'A5' : {$pf = array( 419.528, 595.276); break;} + case 'A6' : {$pf = array( 297.638, 419.528); break;} + case 'A7' : {$pf = array( 209.764, 297.638); break;} + case 'A8' : {$pf = array( 147.402, 209.764); break;} + case 'A9' : {$pf = array( 104.882, 147.402); break;} + case 'A10': {$pf = array( 73.701, 104.882); break;} + case 'A11': {$pf = array( 51.024, 73.701); break;} + case 'A12': {$pf = array( 36.850, 51.024); break;} + // ISO 216 B Series + 2 SIS 014711 extensions + case 'B0' : {$pf = array( 2834.646, 4008.189); break;} + case 'B1' : {$pf = array( 2004.094, 2834.646); break;} + case 'B2' : {$pf = array( 1417.323, 2004.094); break;} + case 'B3' : {$pf = array( 1000.630, 1417.323); break;} + case 'B4' : {$pf = array( 708.661, 1000.630); break;} + case 'B5' : {$pf = array( 498.898, 708.661); break;} + case 'B6' : {$pf = array( 354.331, 498.898); break;} + case 'B7' : {$pf = array( 249.449, 354.331); break;} + case 'B8' : {$pf = array( 175.748, 249.449); break;} + case 'B9' : {$pf = array( 124.724, 175.748); break;} + case 'B10': {$pf = array( 87.874, 124.724); break;} + case 'B11': {$pf = array( 62.362, 87.874); break;} + case 'B12': {$pf = array( 42.520, 62.362); break;} + // ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION + case 'C0' : {$pf = array( 2599.370, 3676.535); break;} + case 'C1' : {$pf = array( 1836.850, 2599.370); break;} + case 'C2' : {$pf = array( 1298.268, 1836.850); break;} + case 'C3' : {$pf = array( 918.425, 1298.268); break;} + case 'C4' : {$pf = array( 649.134, 918.425); break;} + case 'C5' : {$pf = array( 459.213, 649.134); break;} + case 'C6' : {$pf = array( 323.150, 459.213); break;} + case 'C7' : {$pf = array( 229.606, 323.150); break;} + case 'C8' : {$pf = array( 161.575, 229.606); break;} + case 'C9' : {$pf = array( 113.386, 161.575); break;} + case 'C10': {$pf = array( 79.370, 113.386); break;} + case 'C11': {$pf = array( 56.693, 79.370); break;} + case 'C12': {$pf = array( 39.685, 56.693); break;} + case 'C76': {$pf = array( 229.606, 459.213); break;} + case 'DL' : {$pf = array( 311.811, 623.622); break;} + // SIS 014711 E Series + case 'E0' : {$pf = array( 2491.654, 3517.795); break;} + case 'E1' : {$pf = array( 1757.480, 2491.654); break;} + case 'E2' : {$pf = array( 1247.244, 1757.480); break;} + case 'E3' : {$pf = array( 878.740, 1247.244); break;} + case 'E4' : {$pf = array( 623.622, 878.740); break;} + case 'E5' : {$pf = array( 439.370, 623.622); break;} + case 'E6' : {$pf = array( 311.811, 439.370); break;} + case 'E7' : {$pf = array( 221.102, 311.811); break;} + case 'E8' : {$pf = array( 155.906, 221.102); break;} + case 'E9' : {$pf = array( 110.551, 155.906); break;} + case 'E10': {$pf = array( 76.535, 110.551); break;} + case 'E11': {$pf = array( 53.858, 76.535); break;} + case 'E12': {$pf = array( 36.850, 53.858); break;} + // SIS 014711 G Series + case 'G0' : {$pf = array( 2715.591, 3838.110); break;} + case 'G1' : {$pf = array( 1919.055, 2715.591); break;} + case 'G2' : {$pf = array( 1357.795, 1919.055); break;} + case 'G3' : {$pf = array( 958.110, 1357.795); break;} + case 'G4' : {$pf = array( 677.480, 958.110); break;} + case 'G5' : {$pf = array( 479.055, 677.480); break;} + case 'G6' : {$pf = array( 337.323, 479.055); break;} + case 'G7' : {$pf = array( 238.110, 337.323); break;} + case 'G8' : {$pf = array( 167.244, 238.110); break;} + case 'G9' : {$pf = array( 119.055, 167.244); break;} + case 'G10': {$pf = array( 82.205, 119.055); break;} + case 'G11': {$pf = array( 59.528, 82.205); break;} + case 'G12': {$pf = array( 39.685, 59.528); break;} + // ISO Press + case 'RA0': {$pf = array( 2437.795, 3458.268); break;} + case 'RA1': {$pf = array( 1729.134, 2437.795); break;} + case 'RA2': {$pf = array( 1218.898, 1729.134); break;} + case 'RA3': {$pf = array( 864.567, 1218.898); break;} + case 'RA4': {$pf = array( 609.449, 864.567); break;} + case 'SRA0': {$pf = array( 2551.181, 3628.346); break;} + case 'SRA1': {$pf = array( 1814.173, 2551.181); break;} + case 'SRA2': {$pf = array( 1275.591, 1814.173); break;} + case 'SRA3': {$pf = array( 907.087, 1275.591); break;} + case 'SRA4': {$pf = array( 637.795, 907.087); break;} + // German DIN 476 + case '4A0': {$pf = array( 4767.874, 6740.787); break;} + case '2A0': {$pf = array( 3370.394, 4767.874); break;} + // Variations on the ISO Standard + case 'A2_EXTRA' : {$pf = array( 1261.417, 1754.646); break;} + case 'A3+' : {$pf = array( 932.598, 1369.134); break;} + case 'A3_EXTRA' : {$pf = array( 912.756, 1261.417); break;} + case 'A3_SUPER' : {$pf = array( 864.567, 1440.000); break;} + case 'SUPER_A3' : {$pf = array( 864.567, 1380.472); break;} + case 'A4_EXTRA' : {$pf = array( 666.142, 912.756); break;} + case 'A4_SUPER' : {$pf = array( 649.134, 912.756); break;} + case 'SUPER_A4' : {$pf = array( 643.465, 1009.134); break;} + case 'A4_LONG' : {$pf = array( 595.276, 986.457); break;} + case 'F4' : {$pf = array( 595.276, 935.433); break;} + case 'SO_B5_EXTRA': {$pf = array( 572.598, 782.362); break;} + case 'A5_EXTRA' : {$pf = array( 490.394, 666.142); break;} + // ANSI Series + case 'ANSI_E': {$pf = array( 2448.000, 3168.000); break;} + case 'ANSI_D': {$pf = array( 1584.000, 2448.000); break;} + case 'ANSI_C': {$pf = array( 1224.000, 1584.000); break;} + case 'ANSI_B': {$pf = array( 792.000, 1224.000); break;} + case 'ANSI_A': {$pf = array( 612.000, 792.000); break;} + // Traditional 'Loose' North American Paper Sizes + case 'USLEDGER': + case 'LEDGER' : {$pf = array( 1224.000, 792.000); break;} + case 'ORGANIZERK': + case 'BIBLE': + case 'USTABLOID': + case 'TABLOID': {$pf = array( 792.000, 1224.000); break;} + case 'ORGANIZERM': + case 'USLETTER': + case 'LETTER' : {$pf = array( 612.000, 792.000); break;} + case 'USLEGAL': + case 'LEGAL' : {$pf = array( 612.000, 1008.000); break;} + case 'GOVERNMENTLETTER': + case 'GLETTER': {$pf = array( 576.000, 756.000); break;} + case 'JUNIORLEGAL': + case 'JLEGAL' : {$pf = array( 576.000, 360.000); break;} + // Other North American Paper Sizes + case 'QUADDEMY': {$pf = array( 2520.000, 3240.000); break;} + case 'SUPER_B': {$pf = array( 936.000, 1368.000); break;} + case 'QUARTO': {$pf = array( 648.000, 792.000); break;} + case 'GOVERNMENTLEGAL': + case 'FOLIO': {$pf = array( 612.000, 936.000); break;} + case 'MONARCH': + case 'EXECUTIVE': {$pf = array( 522.000, 756.000); break;} + case 'ORGANIZERL': + case 'STATEMENT': + case 'MEMO': {$pf = array( 396.000, 612.000); break;} + case 'FOOLSCAP': {$pf = array( 595.440, 936.000); break;} + case 'COMPACT': {$pf = array( 306.000, 486.000); break;} + case 'ORGANIZERJ': {$pf = array( 198.000, 360.000); break;} + // Canadian standard CAN 2-9.60M + case 'P1': {$pf = array( 1587.402, 2437.795); break;} + case 'P2': {$pf = array( 1218.898, 1587.402); break;} + case 'P3': {$pf = array( 793.701, 1218.898); break;} + case 'P4': {$pf = array( 609.449, 793.701); break;} + case 'P5': {$pf = array( 396.850, 609.449); break;} + case 'P6': {$pf = array( 303.307, 396.850); break;} + // North American Architectural Sizes + case 'ARCH_E' : {$pf = array( 2592.000, 3456.000); break;} + case 'ARCH_E1': {$pf = array( 2160.000, 3024.000); break;} + case 'ARCH_D' : {$pf = array( 1728.000, 2592.000); break;} + case 'BROADSHEET': + case 'ARCH_C' : {$pf = array( 1296.000, 1728.000); break;} + case 'ARCH_B' : {$pf = array( 864.000, 1296.000); break;} + case 'ARCH_A' : {$pf = array( 648.000, 864.000); break;} + // --- North American Envelope Sizes --- + // - Announcement Envelopes + case 'ANNENV_A2' : {$pf = array( 314.640, 414.000); break;} + case 'ANNENV_A6' : {$pf = array( 342.000, 468.000); break;} + case 'ANNENV_A7' : {$pf = array( 378.000, 522.000); break;} + case 'ANNENV_A8' : {$pf = array( 396.000, 584.640); break;} + case 'ANNENV_A10' : {$pf = array( 450.000, 692.640); break;} + case 'ANNENV_SLIM': {$pf = array( 278.640, 638.640); break;} + // - Commercial Envelopes + case 'COMMENV_N6_1/4': {$pf = array( 252.000, 432.000); break;} + case 'COMMENV_N6_3/4': {$pf = array( 260.640, 468.000); break;} + case 'COMMENV_N8' : {$pf = array( 278.640, 540.000); break;} + case 'COMMENV_N9' : {$pf = array( 278.640, 638.640); break;} + case 'COMMENV_N10' : {$pf = array( 296.640, 684.000); break;} + case 'COMMENV_N11' : {$pf = array( 324.000, 746.640); break;} + case 'COMMENV_N12' : {$pf = array( 342.000, 792.000); break;} + case 'COMMENV_N14' : {$pf = array( 360.000, 828.000); break;} + // - Catalogue Envelopes + case 'CATENV_N1' : {$pf = array( 432.000, 648.000); break;} + case 'CATENV_N1_3/4' : {$pf = array( 468.000, 684.000); break;} + case 'CATENV_N2' : {$pf = array( 468.000, 720.000); break;} + case 'CATENV_N3' : {$pf = array( 504.000, 720.000); break;} + case 'CATENV_N6' : {$pf = array( 540.000, 756.000); break;} + case 'CATENV_N7' : {$pf = array( 576.000, 792.000); break;} + case 'CATENV_N8' : {$pf = array( 594.000, 810.000); break;} + case 'CATENV_N9_1/2' : {$pf = array( 612.000, 756.000); break;} + case 'CATENV_N9_3/4' : {$pf = array( 630.000, 810.000); break;} + case 'CATENV_N10_1/2': {$pf = array( 648.000, 864.000); break;} + case 'CATENV_N12_1/2': {$pf = array( 684.000, 900.000); break;} + case 'CATENV_N13_1/2': {$pf = array( 720.000, 936.000); break;} + case 'CATENV_N14_1/4': {$pf = array( 810.000, 882.000); break;} + case 'CATENV_N14_1/2': {$pf = array( 828.000, 1044.000); break;} + // Japanese (JIS P 0138-61) Standard B-Series + case 'JIS_B0' : {$pf = array( 2919.685, 4127.244); break;} + case 'JIS_B1' : {$pf = array( 2063.622, 2919.685); break;} + case 'JIS_B2' : {$pf = array( 1459.843, 2063.622); break;} + case 'JIS_B3' : {$pf = array( 1031.811, 1459.843); break;} + case 'JIS_B4' : {$pf = array( 728.504, 1031.811); break;} + case 'JIS_B5' : {$pf = array( 515.906, 728.504); break;} + case 'JIS_B6' : {$pf = array( 362.835, 515.906); break;} + case 'JIS_B7' : {$pf = array( 257.953, 362.835); break;} + case 'JIS_B8' : {$pf = array( 181.417, 257.953); break;} + case 'JIS_B9' : {$pf = array( 127.559, 181.417); break;} + case 'JIS_B10': {$pf = array( 90.709, 127.559); break;} + case 'JIS_B11': {$pf = array( 62.362, 90.709); break;} + case 'JIS_B12': {$pf = array( 45.354, 62.362); break;} + // PA Series + case 'PA0' : {$pf = array( 2381.102, 3174.803,); break;} + case 'PA1' : {$pf = array( 1587.402, 2381.102); break;} + case 'PA2' : {$pf = array( 1190.551, 1587.402); break;} + case 'PA3' : {$pf = array( 793.701, 1190.551); break;} + case 'PA4' : {$pf = array( 595.276, 793.701); break;} + case 'PA5' : {$pf = array( 396.850, 595.276); break;} + case 'PA6' : {$pf = array( 297.638, 396.850); break;} + case 'PA7' : {$pf = array( 198.425, 297.638); break;} + case 'PA8' : {$pf = array( 147.402, 198.425); break;} + case 'PA9' : {$pf = array( 99.213, 147.402); break;} + case 'PA10': {$pf = array( 73.701, 99.213); break;} + // Standard Photographic Print Sizes + case 'PASSPORT_PHOTO': {$pf = array( 99.213, 127.559); break;} + case 'E' : {$pf = array( 233.858, 340.157); break;} + case 'L': + case '3R' : {$pf = array( 252.283, 360.000); break;} + case 'KG': + case '4R' : {$pf = array( 289.134, 430.866); break;} + case '4D' : {$pf = array( 340.157, 430.866); break;} + case '2L': + case '5R' : {$pf = array( 360.000, 504.567); break;} + case '8P': + case '6R' : {$pf = array( 430.866, 575.433); break;} + case '6P': + case '8R' : {$pf = array( 575.433, 720.000); break;} + case '6PW': + case 'S8R' : {$pf = array( 575.433, 864.567); break;} + case '4P': + case '10R' : {$pf = array( 720.000, 864.567); break;} + case '4PW': + case 'S10R': {$pf = array( 720.000, 1080.000); break;} + case '11R' : {$pf = array( 790.866, 1009.134); break;} + case 'S11R': {$pf = array( 790.866, 1224.567); break;} + case '12R' : {$pf = array( 864.567, 1080.000); break;} + case 'S12R': {$pf = array( 864.567, 1292.598); break;} + // Common Newspaper Sizes + case 'NEWSPAPER_BROADSHEET': {$pf = array( 2125.984, 1700.787); break;} + case 'NEWSPAPER_BERLINER' : {$pf = array( 1332.283, 892.913); break;} + case 'NEWSPAPER_TABLOID': + case 'NEWSPAPER_COMPACT' : {$pf = array( 1218.898, 793.701); break;} + // Business Cards + case 'CREDIT_CARD': + case 'BUSINESS_CARD': + case 'BUSINESS_CARD_ISO7810': {$pf = array( 153.014, 242.646); break;} + case 'BUSINESS_CARD_ISO216' : {$pf = array( 147.402, 209.764); break;} + case 'BUSINESS_CARD_IT': + case 'BUSINESS_CARD_UK': + case 'BUSINESS_CARD_FR': + case 'BUSINESS_CARD_DE': + case 'BUSINESS_CARD_ES' : {$pf = array( 155.906, 240.945); break;} + case 'BUSINESS_CARD_CA': + case 'BUSINESS_CARD_US' : {$pf = array( 144.567, 252.283); break;} + case 'BUSINESS_CARD_JP' : {$pf = array( 155.906, 257.953); break;} + case 'BUSINESS_CARD_HK' : {$pf = array( 153.071, 255.118); break;} + case 'BUSINESS_CARD_AU': + case 'BUSINESS_CARD_DK': + case 'BUSINESS_CARD_SE' : {$pf = array( 155.906, 255.118); break;} + case 'BUSINESS_CARD_RU': + case 'BUSINESS_CARD_CZ': + case 'BUSINESS_CARD_FI': + case 'BUSINESS_CARD_HU': + case 'BUSINESS_CARD_IL' : {$pf = array( 141.732, 255.118); break;} + // Billboards + case '4SHEET' : {$pf = array( 2880.000, 4320.000); break;} + case '6SHEET' : {$pf = array( 3401.575, 5102.362); break;} + case '12SHEET': {$pf = array( 8640.000, 4320.000); break;} + case '16SHEET': {$pf = array( 5760.000, 8640.000); break;} + case '32SHEET': {$pf = array(11520.000, 8640.000); break;} + case '48SHEET': {$pf = array(17280.000, 8640.000); break;} + case '64SHEET': {$pf = array(23040.000, 8640.000); break;} + case '96SHEET': {$pf = array(34560.000, 8640.000); break;} + // Old European Sizes + // - Old Imperial English Sizes + case 'EN_EMPEROR' : {$pf = array( 3456.000, 5184.000); break;} + case 'EN_ANTIQUARIAN' : {$pf = array( 2232.000, 3816.000); break;} + case 'EN_GRAND_EAGLE' : {$pf = array( 2070.000, 3024.000); break;} + case 'EN_DOUBLE_ELEPHANT' : {$pf = array( 1926.000, 2880.000); break;} + case 'EN_ATLAS' : {$pf = array( 1872.000, 2448.000); break;} + case 'EN_COLOMBIER' : {$pf = array( 1692.000, 2484.000); break;} + case 'EN_ELEPHANT' : {$pf = array( 1656.000, 2016.000); break;} + case 'EN_DOUBLE_DEMY' : {$pf = array( 1620.000, 2556.000); break;} + case 'EN_IMPERIAL' : {$pf = array( 1584.000, 2160.000); break;} + case 'EN_PRINCESS' : {$pf = array( 1548.000, 2016.000); break;} + case 'EN_CARTRIDGE' : {$pf = array( 1512.000, 1872.000); break;} + case 'EN_DOUBLE_LARGE_POST': {$pf = array( 1512.000, 2376.000); break;} + case 'EN_ROYAL' : {$pf = array( 1440.000, 1800.000); break;} + case 'EN_SHEET': + case 'EN_HALF_POST' : {$pf = array( 1404.000, 1692.000); break;} + case 'EN_SUPER_ROYAL' : {$pf = array( 1368.000, 1944.000); break;} + case 'EN_DOUBLE_POST' : {$pf = array( 1368.000, 2196.000); break;} + case 'EN_MEDIUM' : {$pf = array( 1260.000, 1656.000); break;} + case 'EN_DEMY' : {$pf = array( 1260.000, 1620.000); break;} + case 'EN_LARGE_POST' : {$pf = array( 1188.000, 1512.000); break;} + case 'EN_COPY_DRAUGHT' : {$pf = array( 1152.000, 1440.000); break;} + case 'EN_POST' : {$pf = array( 1116.000, 1386.000); break;} + case 'EN_CROWN' : {$pf = array( 1080.000, 1440.000); break;} + case 'EN_PINCHED_POST' : {$pf = array( 1062.000, 1332.000); break;} + case 'EN_BRIEF' : {$pf = array( 972.000, 1152.000); break;} + case 'EN_FOOLSCAP' : {$pf = array( 972.000, 1224.000); break;} + case 'EN_SMALL_FOOLSCAP' : {$pf = array( 954.000, 1188.000); break;} + case 'EN_POTT' : {$pf = array( 900.000, 1080.000); break;} + // - Old Imperial Belgian Sizes + case 'BE_GRAND_AIGLE' : {$pf = array( 1984.252, 2948.031); break;} + case 'BE_COLOMBIER' : {$pf = array( 1757.480, 2409.449); break;} + case 'BE_DOUBLE_CARRE': {$pf = array( 1757.480, 2607.874); break;} + case 'BE_ELEPHANT' : {$pf = array( 1746.142, 2182.677); break;} + case 'BE_PETIT_AIGLE' : {$pf = array( 1700.787, 2381.102); break;} + case 'BE_GRAND_JESUS' : {$pf = array( 1559.055, 2069.291); break;} + case 'BE_JESUS' : {$pf = array( 1530.709, 2069.291); break;} + case 'BE_RAISIN' : {$pf = array( 1417.323, 1842.520); break;} + case 'BE_GRAND_MEDIAN': {$pf = array( 1303.937, 1714.961); break;} + case 'BE_DOUBLE_POSTE': {$pf = array( 1233.071, 1601.575); break;} + case 'BE_COQUILLE' : {$pf = array( 1218.898, 1587.402); break;} + case 'BE_PETIT_MEDIAN': {$pf = array( 1176.378, 1502.362); break;} + case 'BE_RUCHE' : {$pf = array( 1020.472, 1303.937); break;} + case 'BE_PROPATRIA' : {$pf = array( 977.953, 1218.898); break;} + case 'BE_LYS' : {$pf = array( 898.583, 1125.354); break;} + case 'BE_POT' : {$pf = array( 870.236, 1088.504); break;} + case 'BE_ROSETTE' : {$pf = array( 765.354, 983.622); break;} + // - Old Imperial French Sizes + case 'FR_UNIVERS' : {$pf = array( 2834.646, 3685.039); break;} + case 'FR_DOUBLE_COLOMBIER' : {$pf = array( 2551.181, 3571.654); break;} + case 'FR_GRANDE_MONDE' : {$pf = array( 2551.181, 3571.654); break;} + case 'FR_DOUBLE_SOLEIL' : {$pf = array( 2267.717, 3401.575); break;} + case 'FR_DOUBLE_JESUS' : {$pf = array( 2154.331, 3174.803); break;} + case 'FR_GRAND_AIGLE' : {$pf = array( 2125.984, 3004.724); break;} + case 'FR_PETIT_AIGLE' : {$pf = array( 1984.252, 2664.567); break;} + case 'FR_DOUBLE_RAISIN' : {$pf = array( 1842.520, 2834.646); break;} + case 'FR_JOURNAL' : {$pf = array( 1842.520, 2664.567); break;} + case 'FR_COLOMBIER_AFFICHE': {$pf = array( 1785.827, 2551.181); break;} + case 'FR_DOUBLE_CAVALIER' : {$pf = array( 1757.480, 2607.874); break;} + case 'FR_CLOCHE' : {$pf = array( 1700.787, 2267.717); break;} + case 'FR_SOLEIL' : {$pf = array( 1700.787, 2267.717); break;} + case 'FR_DOUBLE_CARRE' : {$pf = array( 1587.402, 2551.181); break;} + case 'FR_DOUBLE_COQUILLE' : {$pf = array( 1587.402, 2494.488); break;} + case 'FR_JESUS' : {$pf = array( 1587.402, 2154.331); break;} + case 'FR_RAISIN' : {$pf = array( 1417.323, 1842.520); break;} + case 'FR_CAVALIER' : {$pf = array( 1303.937, 1757.480); break;} + case 'FR_DOUBLE_COURONNE' : {$pf = array( 1303.937, 2040.945); break;} + case 'FR_CARRE' : {$pf = array( 1275.591, 1587.402); break;} + case 'FR_COQUILLE' : {$pf = array( 1247.244, 1587.402); break;} + case 'FR_DOUBLE_TELLIERE' : {$pf = array( 1247.244, 1927.559); break;} + case 'FR_DOUBLE_CLOCHE' : {$pf = array( 1133.858, 1700.787); break;} + case 'FR_DOUBLE_POT' : {$pf = array( 1133.858, 1757.480); break;} + case 'FR_ECU' : {$pf = array( 1133.858, 1474.016); break;} + case 'FR_COURONNE' : {$pf = array( 1020.472, 1303.937); break;} + case 'FR_TELLIERE' : {$pf = array( 963.780, 1247.244); break;} + case 'FR_POT' : {$pf = array( 878.740, 1133.858); break;} + // DEFAULT ISO A4 + default: {$pf = array( 595.276, 841.890); break;} + } + return $pf; + } + + /** + * Set page boundaries. + * @param $page (int) page number + * @param $type (string) valid values are:
      • 'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;
      • 'CropBox' : the visible region of default user space;
      • 'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;
      • 'TrimBox' : the intended dimensions of the finished page after trimming;
      • 'ArtBox' : the page's meaningful content (including potential white space).
      + * @param $llx (float) lower-left x coordinate in user units. + * @param $lly (float) lower-left y coordinate in user units. + * @param $urx (float) upper-right x coordinate in user units. + * @param $ury (float) upper-right y coordinate in user units. + * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points. + * @param $k (float) Scale factor (number of points in user unit). + * @param $pagedim (array) Array of page dimensions. + * @return pagedim array of page dimensions. + * @since 5.0.010 (2010-05-17) + * @public static + */ + public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) { + if (!isset($pagedim[$page])) { + // initialize array + $pagedim[$page] = array(); + } + if (!in_array($type, self::$pageboxes)) { + return; + } + if ($points) { + $k = 1; + } + $pagedim[$page][$type]['llx'] = ($llx * $k); + $pagedim[$page][$type]['lly'] = ($lly * $k); + $pagedim[$page][$type]['urx'] = ($urx * $k); + $pagedim[$page][$type]['ury'] = ($ury * $k); + return $pagedim; + } + + /** + * Swap X and Y coordinates of page boxes (change page boxes orientation). + * @param $page (int) page number + * @param $pagedim (array) Array of page dimensions. + * @return pagedim array of page dimensions. + * @since 5.0.010 (2010-05-17) + * @public static + */ + public static function swapPageBoxCoordinates($page, $pagedim) { + foreach (self::$pageboxes as $type) { + // swap X and Y coordinates + if (isset($pagedim[$page][$type])) { + $tmp = $pagedim[$page][$type]['llx']; + $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly']; + $pagedim[$page][$type]['lly'] = $tmp; + $tmp = $pagedim[$page][$type]['urx']; + $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury']; + $pagedim[$page][$type]['ury'] = $tmp; + } + } + return $pagedim; + } + + /** + * Get the canonical page layout mode. + * @param $layout (string) The page layout. Possible values are:
      • SinglePage Display one page at a time
      • OneColumn Display the pages in one column
      • TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left
      • TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right
      • TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left
      • TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right
      + * @return (string) Canonical page layout name. + * @public static + */ + public static function getPageLayoutMode($layout='SinglePage') { + switch ($layout) { + case 'default': + case 'single': + case 'SinglePage': { + $layout_mode = 'SinglePage'; + break; + } + case 'continuous': + case 'OneColumn': { + $layout_mode = 'OneColumn'; + break; + } + case 'two': + case 'TwoColumnLeft': { + $layout_mode = 'TwoColumnLeft'; + break; + } + case 'TwoColumnRight': { + $layout_mode = 'TwoColumnRight'; + break; + } + case 'TwoPageLeft': { + $layout_mode = 'TwoPageLeft'; + break; + } + case 'TwoPageRight': { + $layout_mode = 'TwoPageRight'; + break; + } + default: { + $layout_mode = 'SinglePage'; + } + } + return $layout_mode; + } + + /** + * Get the canonical page layout mode. + * @param $mode (string) A name object specifying how the document should be displayed when opened:
      • UseNone Neither document outline nor thumbnail images visible
      • UseOutlines Document outline visible
      • UseThumbs Thumbnail images visible
      • FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible
      • UseOC (PDF 1.5) Optional content group panel visible
      • UseAttachments (PDF 1.6) Attachments panel visible
      + * @return (string) Canonical page mode name. + * @public static + */ + public static function getPageMode($mode='UseNone') { + switch ($mode) { + case 'UseNone': { + $page_mode = 'UseNone'; + break; + } + case 'UseOutlines': { + $page_mode = 'UseOutlines'; + break; + } + case 'UseThumbs': { + $page_mode = 'UseThumbs'; + break; + } + case 'FullScreen': { + $page_mode = 'FullScreen'; + break; + } + case 'UseOC': { + $page_mode = 'UseOC'; + break; + } + case '': { + $page_mode = 'UseAttachments'; + break; + } + default: { + $page_mode = 'UseNone'; + } + } + return $page_mode; + } + + /** + * Check if the URL exist. + * @param $url (string) URL to check. + * @return Boolean true if the URl exist, false otherwise. + * @since 5.9.204 (2013-01-28) + * @public static + */ + public static function isValidURL($url) { + $headers = @get_headers($url); + return (strpos($headers[0], '200') !== false); + } + + /** + * Removes SHY characters from text. + * Unicode Data:
        + *
      • Name : SOFT HYPHEN, commonly abbreviated as SHY
      • + *
      • HTML Entity (decimal): "&#173;"
      • + *
      • HTML Entity (hex): "&#xad;"
      • + *
      • HTML Entity (named): "&shy;"
      • + *
      • How to type in Microsoft Windows: [Alt +00AD] or [Alt 0173]
      • + *
      • UTF-8 (hex): 0xC2 0xAD (c2ad)
      • + *
      • UTF-8 character: chr(194).chr(173)
      • + *
      + * @param $txt (string) input string + * @param $unicode (boolean) True if we are in unicode mode, false otherwise. + * @return string without SHY characters. + * @since (4.5.019) 2009-02-28 + * @public static + */ + public static function removeSHY($txt='', $unicode=true) { + $txt = preg_replace('/([\\xc2]{1}[\\xad]{1})/', '', $txt); + if (!$unicode) { + $txt = preg_replace('/([\\xad]{1})/', '', $txt); + } + return $txt; + } + + + /** + * Get the border mode accounting for multicell position (opens bottom side of multicell crossing pages) + * @param $brd (mixed) Indicates if borders must be drawn around the cell block. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $position (string) multicell position: 'start', 'middle', 'end' + * @param $opencell (boolean) True when the cell is left open at the page bottom, false otherwise. + * @return border mode array + * @since 4.4.002 (2008-12-09) + * @public static + */ + public static function getBorderMode($brd, $position='start', $opencell=true) { + if ((!$opencell) OR empty($brd)) { + return $brd; + } + if ($brd == 1) { + $brd = 'LTRB'; + } + if (is_string($brd)) { + // convert string to array + $slen = strlen($brd); + $newbrd = array(); + for ($i = 0; $i < $slen; ++$i) { + $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter'); + } + $brd = $newbrd; + } + foreach ($brd as $border => $style) { + switch ($position) { + case 'start': { + if (strpos($border, 'B') !== false) { + // remove bottom line + $newkey = str_replace('B', '', $border); + if (strlen($newkey) > 0) { + $brd[$newkey] = $style; + } + unset($brd[$border]); + } + break; + } + case 'middle': { + if (strpos($border, 'B') !== false) { + // remove bottom line + $newkey = str_replace('B', '', $border); + if (strlen($newkey) > 0) { + $brd[$newkey] = $style; + } + unset($brd[$border]); + $border = $newkey; + } + if (strpos($border, 'T') !== false) { + // remove bottom line + $newkey = str_replace('T', '', $border); + if (strlen($newkey) > 0) { + $brd[$newkey] = $style; + } + unset($brd[$border]); + } + break; + } + case 'end': { + if (strpos($border, 'T') !== false) { + // remove bottom line + $newkey = str_replace('T', '', $border); + if (strlen($newkey) > 0) { + $brd[$newkey] = $style; + } + unset($brd[$border]); + } + break; + } + } + } + return $brd; + } + + /** + * Determine whether a string is empty. + * @param $str (string) string to be checked + * @return boolean true if string is empty + * @since 4.5.044 (2009-04-16) + * @public static + */ + public static function empty_string($str) { + return (is_null($str) OR (is_string($str) AND (strlen($str) == 0))); + } + + /** + * Returns a temporary filename for caching object on filesystem. + * @param $type (string) Type of file (name of the subdir on the tcpdf cache folder). + * @return string filename. + * @since 4.5.000 (2008-12-31) + * @public static + */ + public static function getObjFilename($type='tmp') { + return tempnam(K_PATH_CACHE, '__tcpdf_'.$type.'_'.md5(uniqid('', true).rand().microtime(true)).'_'); + } + + /** + * Add "\" before "\", "(" and ")" + * @param $s (string) string to escape. + * @return string escaped string. + * @public static + */ + public static function _escape($s) { + // the chr(13) substitution fixes the Bugs item #1421290. + return strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r')); + } + + /** + * Escape some special characters (< > &) for XML output. + * @param $str (string) Input string to convert. + * @return converted string + * @since 5.9.121 (2011-09-28) + * @public static + */ + public static function _escapeXML($str) { + $replaceTable = array("\0" => '', '&' => '&', '<' => '<', '>' => '>'); + $str = strtr($str, $replaceTable); + return $str; + } + + /** + * Creates a copy of a class object + * @param $object (object) class object to be cloned + * @return cloned object + * @since 4.5.029 (2009-03-19) + * @public static + */ + public static function objclone($object) { + if (($object instanceof Imagick) AND (version_compare(phpversion('imagick'), '3.0.1') !== 1)) { + // on the versions after 3.0.1 the clone() method was deprecated in favour of clone keyword + return @$object->clone(); + } + return @clone($object); + } + + /** + * Ouput input data and compress it if possible. + * @param $data (string) Data to output. + * @param $length (int) Data length in bytes. + * @since 5.9.086 + * @public static + */ + public static function sendOutputData($data, $length) { + if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) { + // the content length may vary if the server is using compression + header('Content-Length: '.$length); + } + echo $data; + } + + /** + * Replace page number aliases with number. + * @param $page (string) Page content. + * @param $replace (array) Array of replacements (array keys are replacement strings, values are alias arrays). + * @param $diff (int) If passed, this will be set to the total char number difference between alias and replacements. + * @return replaced page content and updated $diff parameter as array. + * @public static + */ + public static function replacePageNumAliases($page, $replace, $diff=0) { + foreach ($replace as $rep) { + foreach ($rep[3] as $a) { + if (strpos($page, $a) !== false) { + $page = str_replace($a, $rep[0], $page); + $diff += ($rep[2] - $rep[1]); + } + } + } + return array($page, $diff); + } + + /** + * Returns timestamp in seconds from formatted date-time. + * @param $date (string) Formatted date-time. + * @return int seconds. + * @since 5.9.152 (2012-03-23) + * @public static + */ + public static function getTimestamp($date) { + if (($date[0] == 'D') AND ($date[1] == ':')) { + // remove date prefix if present + $date = substr($date, 2); + } + return strtotime($date); + } + + /** + * Returns a formatted date-time. + * @param $time (int) Time in seconds. + * @return string escaped date string. + * @since 5.9.152 (2012-03-23) + * @public static + */ + public static function getFormattedDate($time) { + return substr_replace(date('YmdHisO', intval($time)), '\'', (0 - 2), 0).'\''; + } + + /** + * Get ULONG from string (Big Endian 32-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 32 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getULONG($str, $offset) { + $v = unpack('Ni', substr($str, $offset, 4)); + return $v['i']; + } + + /** + * Get USHORT from string (Big Endian 16-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getUSHORT($str, $offset) { + $v = unpack('ni', substr($str, $offset, 2)); + return $v['i']; + } + + /** + * Get SHORT from string (Big Endian 16-bit signed integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getSHORT($str, $offset) { + $v = unpack('si', substr($str, $offset, 2)); + return $v['i']; + } + + /** + * Get FWORD from string (Big Endian 16-bit signed integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getFWORD($str, $offset) { + $v = self::_getUSHORT($str, $offset); + if ($v > 0x7fff) { + $v -= 0x10000; + } + return $v; + } + + /** + * Get UFWORD from string (Big Endian 16-bit unsigned integer). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getUFWORD($str, $offset) { + $v = self::_getUSHORT($str, $offset); + return $v; + } + + /** + * Get FIXED from string (32-bit signed fixed-point number (16.16). + * @param $str (string) string from where to extract value + * @param $offset (int) point from where to read the data + * @return int 16 bit value + * @author Nicola Asuni + * @since 5.9.123 (2011-09-30) + * @public static + */ + public static function _getFIXED($str, $offset) { + // mantissa + $m = self::_getFWORD($str, $offset); + // fraction + $f = self::_getUSHORT($str, ($offset + 2)); + $v = floatval(''.$m.'.'.$f.''); + return $v; + } + + /** + * Get BYTE from string (8-bit unsigned integer). + * @param $str (string) String from where to extract value. + * @param $offset (int) Point from where to read the data. + * @return int 8 bit value + * @author Nicola Asuni + * @since 5.2.000 (2010-06-02) + * @public static + */ + public static function _getBYTE($str, $offset) { + $v = unpack('Ci', substr($str, $offset, 1)); + return $v['i']; + } + /** + * Binary-safe and URL-safe file read. + * Reads up to length bytes from the file pointer referenced by handle. Reading stops as soon as one of the following conditions is met: length bytes have been read; EOF (end of file) is reached. + * @param $handle (resource) + * @param $length (int) + * @return Returns the read string or FALSE in case of error. + * @author Nicola Asuni + * @since 4.5.027 (2009-03-16) + * @public static + */ + public static function rfread($handle, $length) { + $data = fread($handle, $length); + if ($data === false) { + return false; + } + $rest = ($length - strlen($data)); + if ($rest > 0) { + $data .= self::rfread($handle, $rest); + } + return $data; + } + + /** + * Read a 4-byte (32 bit) integer from file. + * @param $f (string) file name. + * @return 4-byte integer + * @public static + */ + public static function _freadint($f) { + $a = unpack('Ni', fread($f, 4)); + return $a['i']; + } + + /** + * Returns a string containing random data to be used as a seed for encryption methods. + * @param $seed (string) starting seed value + * @return string containing random data + * @author Nicola Asuni + * @since 5.9.006 (2010-10-19) + * @public static + */ + public static function getRandomSeed($seed='') { + $seed .= microtime(); + if (function_exists('openssl_random_pseudo_bytes') AND (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) { + // this is not used on windows systems because it is very slow for a know bug + $seed .= openssl_random_pseudo_bytes(512); + } else { + for ($i = 0; $i < 23; ++$i) { + $seed .= uniqid('', true); + } + } + $seed .= uniqid('', true); + $seed .= rand(); + $seed .= __FILE__; + if (isset($_SERVER['REMOTE_ADDR'])) { + $seed .= $_SERVER['REMOTE_ADDR']; + } + if (isset($_SERVER['HTTP_USER_AGENT'])) { + $seed .= $_SERVER['HTTP_USER_AGENT']; + } + if (isset($_SERVER['HTTP_ACCEPT'])) { + $seed .= $_SERVER['HTTP_ACCEPT']; + } + if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { + $seed .= $_SERVER['HTTP_ACCEPT_ENCODING']; + } + if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { + $seed .= $_SERVER['HTTP_ACCEPT_LANGUAGE']; + } + if (isset($_SERVER['HTTP_ACCEPT_CHARSET'])) { + $seed .= $_SERVER['HTTP_ACCEPT_CHARSET']; + } + $seed .= rand(); + $seed .= uniqid('', true); + $seed .= microtime(); + return $seed; + } + + /** + * Encrypts a string using MD5 and returns it's value as a binary string. + * @param $str (string) input string + * @return String MD5 encrypted binary string + * @since 2.0.000 (2008-01-02) + * @public static + */ + public static function _md5_16($str) { + return pack('H*', md5($str)); + } + + /** + * Returns the input text exrypted using AES algorithm and the specified key. + * This method requires mcrypt. + * @param $key (string) encryption key + * @param $text (String) input text to be encrypted + * @return String encrypted text + * @author Nicola Asuni + * @since 5.0.005 (2010-05-11) + * @public static + */ + public static function _AES($key, $text) { + // padding (RFC 2898, PKCS #5: Password-Based Cryptography Specification Version 2.0) + $padding = 16 - (strlen($text) % 16); + $text .= str_repeat(chr($padding), $padding); + $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND); + $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv); + $text = $iv.$text; + return $text; + } + + /** + * Returns the input text encrypted using RC4 algorithm and the specified key. + * RC4 is the standard encryption algorithm used in PDF format + * @param $key (string) Encryption key. + * @param $text (String) Input text to be encrypted. + * @param $last_enc_key (String) Reference to last RC4 key encrypted. + * @param $last_enc_key_c (String) Reference to last RC4 computed key. + * @return String encrypted text + * @since 2.0.000 (2008-01-02) + * @author Klemen Vodopivec, Nicola Asuni + * @public static + */ + public static function _RC4($key, $text, &$last_enc_key, &$last_enc_key_c) { + if (function_exists('mcrypt_encrypt') AND ($out = @mcrypt_encrypt(MCRYPT_ARCFOUR, $key, $text, MCRYPT_MODE_STREAM, ''))) { + // try to use mcrypt function if exist + return $out; + } + if ($last_enc_key != $key) { + $k = str_repeat($key, ((256 / strlen($key)) + 1)); + $rc4 = range(0, 255); + $j = 0; + for ($i = 0; $i < 256; ++$i) { + $t = $rc4[$i]; + $j = ($j + $t + ord($k[$i])) % 256; + $rc4[$i] = $rc4[$j]; + $rc4[$j] = $t; + } + $last_enc_key = $key; + $last_enc_key_c = $rc4; + } else { + $rc4 = $last_enc_key_c; + } + $len = strlen($text); + $a = 0; + $b = 0; + $out = ''; + for ($i = 0; $i < $len; ++$i) { + $a = ($a + 1) % 256; + $t = $rc4[$a]; + $b = ($b + $t) % 256; + $rc4[$a] = $rc4[$b]; + $rc4[$b] = $t; + $k = $rc4[($rc4[$a] + $rc4[$b]) % 256]; + $out .= chr(ord($text[$i]) ^ $k); + } + return $out; + } + + /** + * Return the premission code used on encryption (P value). + * @param $permissions (Array) the set of permissions (specify the ones you want to block). + * @param $mode (int) encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit. + * @since 5.0.005 (2010-05-12) + * @author Nicola Asuni + * @public static + */ + public static function getUserPermissionCode($permissions, $mode=0) { + $options = array( + 'owner' => 2, // bit 2 -- inverted logic: cleared by default + 'print' => 4, // bit 3 + 'modify' => 8, // bit 4 + 'copy' => 16, // bit 5 + 'annot-forms' => 32, // bit 6 + 'fill-forms' => 256, // bit 9 + 'extract' => 512, // bit 10 + 'assemble' => 1024,// bit 11 + 'print-high' => 2048 // bit 12 + ); + $protection = 2147422012; // 32 bit: (01111111 11111111 00001111 00111100) + foreach ($permissions as $permission) { + if (isset($options[$permission])) { + if (($mode > 0) OR ($options[$permission] <= 32)) { + // set only valid permissions + if ($options[$permission] == 2) { + // the logic for bit 2 is inverted (cleared by default) + $protection += $options[$permission]; + } else { + $protection -= $options[$permission]; + } + } + } + } + return $protection; + } + + /** + * Convert hexadecimal string to string + * @param $bs (string) byte-string to convert + * @return String + * @since 5.0.005 (2010-05-12) + * @author Nicola Asuni + * @public static + */ + public static function convertHexStringToString($bs) { + $string = ''; // string to be returned + $bslength = strlen($bs); + if (($bslength % 2) != 0) { + // padding + $bs .= '0'; + ++$bslength; + } + for ($i = 0; $i < $bslength; $i += 2) { + $string .= chr(hexdec($bs[$i].$bs[($i + 1)])); + } + return $string; + } + + /** + * Convert string to hexadecimal string (byte string) + * @param $s (string) string to convert + * @return byte string + * @since 5.0.010 (2010-05-17) + * @author Nicola Asuni + * @public static + */ + public static function convertStringToHexString($s) { + $bs = ''; + $chars = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY); + foreach ($chars as $c) { + $bs .= sprintf('%02s', dechex(ord($c))); + } + return $bs; + } + + /** + * Convert encryption P value to a string of bytes, low-order byte first. + * @param $protection (string) 32bit encryption permission value (P value) + * @return String + * @since 5.0.005 (2010-05-12) + * @author Nicola Asuni + * @public static + */ + public static function getEncPermissionsString($protection) { + $binprot = sprintf('%032b', $protection); + $str = chr(bindec(substr($binprot, 24, 8))); + $str .= chr(bindec(substr($binprot, 16, 8))); + $str .= chr(bindec(substr($binprot, 8, 8))); + $str .= chr(bindec(substr($binprot, 0, 8))); + return $str; + } + + /** + * Encode a name object. + * @param $name (string) Name object to encode. + * @return (string) Encoded name object. + * @author Nicola Asuni + * @since 5.9.097 (2011-06-23) + * @public static + */ + public static function encodeNameObject($name) { + $escname = ''; + $length = strlen($name); + for ($i = 0; $i < $length; ++$i) { + $chr = $name[$i]; + if (preg_match('/[0-9a-zA-Z#_=-]/', $chr) == 1) { + $escname .= $chr; + } else { + $escname .= sprintf('#%02X', ord($chr)); + } + } + return $escname; + } + + /** + * Convert JavaScript form fields properties array to Annotation Properties array. + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @param $spot_colors (array) Reference to spot colors array. + * @param $rtl (boolean) True if in Right-To-Left text direction mode, false otherwise. + * @return array of annotation properties + * @author Nicola Asuni + * @since 4.8.000 (2009-09-06) + * @public static + */ + public static function getAnnotOptFromJSProp($prop, &$spot_colors, $rtl=false) { + if (isset($prop['aopt']) AND is_array($prop['aopt'])) { + // the annotation options area lready defined + return $prop['aopt']; + } + $opt = array(); // value to be returned + // alignment: Controls how the text is laid out within the text field. + if (isset($prop['alignment'])) { + switch ($prop['alignment']) { + case 'left': { + $opt['q'] = 0; + break; + } + case 'center': { + $opt['q'] = 1; + break; + } + case 'right': { + $opt['q'] = 2; + break; + } + default: { + $opt['q'] = ($rtl)?2:0; + break; + } + } + } + // lineWidth: Specifies the thickness of the border when stroking the perimeter of a field's rectangle. + if (isset($prop['lineWidth'])) { + $linewidth = intval($prop['lineWidth']); + } else { + $linewidth = 1; + } + // borderStyle: The border style for a field. + if (isset($prop['borderStyle'])) { + switch ($prop['borderStyle']) { + case 'border.d': + case 'dashed': { + $opt['border'] = array(0, 0, $linewidth, array(3, 2)); + $opt['bs'] = array('w'=>$linewidth, 's'=>'D', 'd'=>array(3, 2)); + break; + } + case 'border.b': + case 'beveled': { + $opt['border'] = array(0, 0, $linewidth); + $opt['bs'] = array('w'=>$linewidth, 's'=>'B'); + break; + } + case 'border.i': + case 'inset': { + $opt['border'] = array(0, 0, $linewidth); + $opt['bs'] = array('w'=>$linewidth, 's'=>'I'); + break; + } + case 'border.u': + case 'underline': { + $opt['border'] = array(0, 0, $linewidth); + $opt['bs'] = array('w'=>$linewidth, 's'=>'U'); + break; + } + case 'border.s': + case 'solid': { + $opt['border'] = array(0, 0, $linewidth); + $opt['bs'] = array('w'=>$linewidth, 's'=>'S'); + break; + } + default: { + break; + } + } + } + if (isset($prop['border']) AND is_array($prop['border'])) { + $opt['border'] = $prop['border']; + } + if (!isset($opt['mk'])) { + $opt['mk'] = array(); + } + if (!isset($opt['mk']['if'])) { + $opt['mk']['if'] = array(); + } + $opt['mk']['if']['a'] = array(0.5, 0.5); + // buttonAlignX: Controls how space is distributed from the left of the button face with respect to the icon. + if (isset($prop['buttonAlignX'])) { + $opt['mk']['if']['a'][0] = $prop['buttonAlignX']; + } + // buttonAlignY: Controls how unused space is distributed from the bottom of the button face with respect to the icon. + if (isset($prop['buttonAlignY'])) { + $opt['mk']['if']['a'][1] = $prop['buttonAlignY']; + } + // buttonFitBounds: If true, the extent to which the icon may be scaled is set to the bounds of the button field. + if (isset($prop['buttonFitBounds']) AND ($prop['buttonFitBounds'] == 'true')) { + $opt['mk']['if']['fb'] = true; + } + // buttonScaleHow: Controls how the icon is scaled (if necessary) to fit inside the button face. + if (isset($prop['buttonScaleHow'])) { + switch ($prop['buttonScaleHow']) { + case 'scaleHow.proportional': { + $opt['mk']['if']['s'] = 'P'; + break; + } + case 'scaleHow.anamorphic': { + $opt['mk']['if']['s'] = 'A'; + break; + } + } + } + // buttonScaleWhen: Controls when an icon is scaled to fit inside the button face. + if (isset($prop['buttonScaleWhen'])) { + switch ($prop['buttonScaleWhen']) { + case 'scaleWhen.always': { + $opt['mk']['if']['sw'] = 'A'; + break; + } + case 'scaleWhen.never': { + $opt['mk']['if']['sw'] = 'N'; + break; + } + case 'scaleWhen.tooBig': { + $opt['mk']['if']['sw'] = 'B'; + break; + } + case 'scaleWhen.tooSmall': { + $opt['mk']['if']['sw'] = 'S'; + break; + } + } + } + // buttonPosition: Controls how the text and the icon of the button are positioned with respect to each other within the button face. + if (isset($prop['buttonPosition'])) { + switch ($prop['buttonPosition']) { + case 0: + case 'position.textOnly': { + $opt['mk']['tp'] = 0; + break; + } + case 1: + case 'position.iconOnly': { + $opt['mk']['tp'] = 1; + break; + } + case 2: + case 'position.iconTextV': { + $opt['mk']['tp'] = 2; + break; + } + case 3: + case 'position.textIconV': { + $opt['mk']['tp'] = 3; + break; + } + case 4: + case 'position.iconTextH': { + $opt['mk']['tp'] = 4; + break; + } + case 5: + case 'position.textIconH': { + $opt['mk']['tp'] = 5; + break; + } + case 6: + case 'position.overlay': { + $opt['mk']['tp'] = 6; + break; + } + } + } + // fillColor: Specifies the background color for a field. + if (isset($prop['fillColor'])) { + if (is_array($prop['fillColor'])) { + $opt['mk']['bg'] = $prop['fillColor']; + } else { + $opt['mk']['bg'] = TCPDF_COLORS::convertHTMLColorToDec($prop['fillColor'], $spot_colors); + } + } + // strokeColor: Specifies the stroke color for a field that is used to stroke the rectangle of the field with a line as large as the line width. + if (isset($prop['strokeColor'])) { + if (is_array($prop['strokeColor'])) { + $opt['mk']['bc'] = $prop['strokeColor']; + } else { + $opt['mk']['bc'] = TCPDF_COLORS::convertHTMLColorToDec($prop['strokeColor'], $spot_colors); + } + } + // rotation: The rotation of a widget in counterclockwise increments. + if (isset($prop['rotation'])) { + $opt['mk']['r'] = $prop['rotation']; + } + // charLimit: Limits the number of characters that a user can type into a text field. + if (isset($prop['charLimit'])) { + $opt['maxlen'] = intval($prop['charLimit']); + } + if (!isset($ff)) { + $ff = 0; // default value + } + // readonly: The read-only characteristic of a field. If a field is read-only, the user can see the field but cannot change it. + if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) { + $ff += 1 << 0; + } + // required: Specifies whether a field requires a value. + if (isset($prop['required']) AND ($prop['required'] == 'true')) { + $ff += 1 << 1; + } + // multiline: Controls how text is wrapped within the field. + if (isset($prop['multiline']) AND ($prop['multiline'] == 'true')) { + $ff += 1 << 12; + } + // password: Specifies whether the field should display asterisks when data is entered in the field. + if (isset($prop['password']) AND ($prop['password'] == 'true')) { + $ff += 1 << 13; + } + // NoToggleToOff: If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. + if (isset($prop['NoToggleToOff']) AND ($prop['NoToggleToOff'] == 'true')) { + $ff += 1 << 14; + } + // Radio: If set, the field is a set of radio buttons. + if (isset($prop['Radio']) AND ($prop['Radio'] == 'true')) { + $ff += 1 << 15; + } + // Pushbutton: If set, the field is a pushbutton that does not retain a permanent value. + if (isset($prop['Pushbutton']) AND ($prop['Pushbutton'] == 'true')) { + $ff += 1 << 16; + } + // Combo: If set, the field is a combo box; if clear, the field is a list box. + if (isset($prop['Combo']) AND ($prop['Combo'] == 'true')) { + $ff += 1 << 17; + } + // editable: Controls whether a combo box is editable. + if (isset($prop['editable']) AND ($prop['editable'] == 'true')) { + $ff += 1 << 18; + } + // Sort: If set, the field's option items shall be sorted alphabetically. + if (isset($prop['Sort']) AND ($prop['Sort'] == 'true')) { + $ff += 1 << 19; + } + // fileSelect: If true, sets the file-select flag in the Options tab of the text field (Field is Used for File Selection). + if (isset($prop['fileSelect']) AND ($prop['fileSelect'] == 'true')) { + $ff += 1 << 20; + } + // multipleSelection: If true, indicates that a list box allows a multiple selection of items. + if (isset($prop['multipleSelection']) AND ($prop['multipleSelection'] == 'true')) { + $ff += 1 << 21; + } + // doNotSpellCheck: If true, spell checking is not performed on this editable text field. + if (isset($prop['doNotSpellCheck']) AND ($prop['doNotSpellCheck'] == 'true')) { + $ff += 1 << 22; + } + // doNotScroll: If true, the text field does not scroll and the user, therefore, is limited by the rectangular region designed for the field. + if (isset($prop['doNotScroll']) AND ($prop['doNotScroll'] == 'true')) { + $ff += 1 << 23; + } + // comb: If set to true, the field background is drawn as series of boxes (one for each character in the value of the field) and each character of the content is drawn within those boxes. The number of boxes drawn is determined from the charLimit property. It applies only to text fields. The setter will also raise if any of the following field properties are also set multiline, password, and fileSelect. A side-effect of setting this property is that the doNotScroll property is also set. + if (isset($prop['comb']) AND ($prop['comb'] == 'true')) { + $ff += 1 << 24; + } + // radiosInUnison: If false, even if a group of radio buttons have the same name and export value, they behave in a mutually exclusive fashion, like HTML radio buttons. + if (isset($prop['radiosInUnison']) AND ($prop['radiosInUnison'] == 'true')) { + $ff += 1 << 25; + } + // richText: If true, the field allows rich text formatting. + if (isset($prop['richText']) AND ($prop['richText'] == 'true')) { + $ff += 1 << 25; + } + // commitOnSelChange: Controls whether a field value is committed after a selection change. + if (isset($prop['commitOnSelChange']) AND ($prop['commitOnSelChange'] == 'true')) { + $ff += 1 << 26; + } + $opt['ff'] = $ff; + // defaultValue: The default value of a field - that is, the value that the field is set to when the form is reset. + if (isset($prop['defaultValue'])) { + $opt['dv'] = $prop['defaultValue']; + } + $f = 4; // default value for annotation flags + // readonly: The read-only characteristic of a field. If a field is read-only, the user can see the field but cannot change it. + if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) { + $f += 1 << 6; + } + // display: Controls whether the field is hidden or visible on screen and in print. + if (isset($prop['display'])) { + if ($prop['display'] == 'display.visible') { + // + } elseif ($prop['display'] == 'display.hidden') { + $f += 1 << 1; + } elseif ($prop['display'] == 'display.noPrint') { + $f -= 1 << 2; + } elseif ($prop['display'] == 'display.noView') { + $f += 1 << 5; + } + } + $opt['f'] = $f; + // currentValueIndices: Reads and writes single or multiple values of a list box or combo box. + if (isset($prop['currentValueIndices']) AND is_array($prop['currentValueIndices'])) { + $opt['i'] = $prop['currentValueIndices']; + } + // value: The value of the field data that the user has entered. + if (isset($prop['value'])) { + if (is_array($prop['value'])) { + $opt['opt'] = array(); + foreach ($prop['value'] AS $key => $optval) { + // exportValues: An array of strings representing the export values for the field. + if (isset($prop['exportValues'][$key])) { + $opt['opt'][$key] = array($prop['exportValues'][$key], $prop['value'][$key]); + } else { + $opt['opt'][$key] = $prop['value'][$key]; + } + } + } else { + $opt['v'] = $prop['value']; + } + } + // richValue: This property specifies the text contents and formatting of a rich text field. + if (isset($prop['richValue'])) { + $opt['rv'] = $prop['richValue']; + } + // submitName: If nonempty, used during form submission instead of name. Only applicable if submitting in HTML format (that is, URL-encoded). + if (isset($prop['submitName'])) { + $opt['tm'] = $prop['submitName']; + } + // name: Fully qualified field name. + if (isset($prop['name'])) { + $opt['t'] = $prop['name']; + } + // userName: The user name (short description string) of the field. + if (isset($prop['userName'])) { + $opt['tu'] = $prop['userName']; + } + // highlight: Defines how a button reacts when a user clicks it. + if (isset($prop['highlight'])) { + switch ($prop['highlight']) { + case 'none': + case 'highlight.n': { + $opt['h'] = 'N'; + break; + } + case 'invert': + case 'highlight.i': { + $opt['h'] = 'i'; + break; + } + case 'push': + case 'highlight.p': { + $opt['h'] = 'P'; + break; + } + case 'outline': + case 'highlight.o': { + $opt['h'] = 'O'; + break; + } + } + } + // Unsupported options: + // - calcOrderIndex: Changes the calculation order of fields in the document. + // - delay: Delays the redrawing of a field's appearance. + // - defaultStyle: This property defines the default style attributes for the form field. + // - style: Allows the user to set the glyph style of a check box or radio button. + // - textColor, textFont, textSize + return $opt; + } + + /** + * Format the page numbers. + * This method can be overriden for custom formats. + * @param $num (int) page number + * @since 4.2.005 (2008-11-06) + * @public static + */ + public static function formatPageNumber($num) { + return number_format((float)$num, 0, '', '.'); + } + + /** + * Format the page numbers on the Table Of Content. + * This method can be overriden for custom formats. + * @param $num (int) page number + * @since 4.5.001 (2009-01-04) + * @see addTOC(), addHTMLTOC() + * @public static + */ + public static function formatTOCPageNumber($num) { + return number_format((float)$num, 0, '', '.'); + } + + /** + * Extracts the CSS properties from a CSS string. + * @param $cssdata (string) string containing CSS definitions. + * @return An array where the keys are the CSS selectors and the values are the CSS properties. + * @author Nicola Asuni + * @since 5.1.000 (2010-05-25) + * @public static + */ + public static function extractCSSproperties($cssdata) { + if (empty($cssdata)) { + return array(); + } + // remove comments + $cssdata = preg_replace('/\/\*[^\*]*\*\//', '', $cssdata); + // remove newlines and multiple spaces + $cssdata = preg_replace('/[\s]+/', ' ', $cssdata); + // remove some spaces + $cssdata = preg_replace('/[\s]*([;:\{\}]{1})[\s]*/', '\\1', $cssdata); + // remove empty blocks + $cssdata = preg_replace('/([^\}\{]+)\{\}/', '', $cssdata); + // replace media type parenthesis + $cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1§', $cssdata); + $cssdata = preg_replace('/\}\}/si', '}§', $cssdata); + // trim string + $cssdata = trim($cssdata); + // find media blocks (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv) + $cssblocks = array(); + $matches = array(); + if (preg_match_all('/@media[\s]+([^\§]*)§([^§]*)§/i', $cssdata, $matches) > 0) { + foreach ($matches[1] as $key => $type) { + $cssblocks[$type] = $matches[2][$key]; + } + // remove media blocks + $cssdata = preg_replace('/@media[\s]+([^\§]*)§([^§]*)§/i', '', $cssdata); + } + // keep 'all' and 'print' media, other media types are discarded + if (isset($cssblocks['all']) AND !empty($cssblocks['all'])) { + $cssdata .= $cssblocks['all']; + } + if (isset($cssblocks['print']) AND !empty($cssblocks['print'])) { + $cssdata .= $cssblocks['print']; + } + // reset css blocks array + $cssblocks = array(); + $matches = array(); + // explode css data string into array + if (substr($cssdata, -1) == '}') { + // remove last parethesis + $cssdata = substr($cssdata, 0, -1); + } + $matches = explode('}', $cssdata); + foreach ($matches as $key => $block) { + // index 0 contains the CSS selector, index 1 contains CSS properties + $cssblocks[$key] = explode('{', $block); + if (!isset($cssblocks[$key][1])) { + // remove empty definitions + unset($cssblocks[$key]); + } + } + // split groups of selectors (comma-separated list of selectors) + foreach ($cssblocks as $key => $block) { + if (strpos($block[0], ',') > 0) { + $selectors = explode(',', $block[0]); + foreach ($selectors as $sel) { + $cssblocks[] = array(0 => trim($sel), 1 => $block[1]); + } + unset($cssblocks[$key]); + } + } + // covert array to selector => properties + $cssdata = array(); + foreach ($cssblocks as $block) { + $selector = $block[0]; + // calculate selector's specificity + $matches = array(); + $a = 0; // the declaration is not from is a 'style' attribute + $b = intval(preg_match_all('/[\#]/', $selector, $matches)); // number of ID attributes + $c = intval(preg_match_all('/[\[\.]/', $selector, $matches)); // number of other attributes + $c += intval(preg_match_all('/[\:]link|visited|hover|active|focus|target|lang|enabled|disabled|checked|indeterminate|root|nth|first|last|only|empty|contains|not/i', $selector, $matches)); // number of pseudo-classes + $d = intval(preg_match_all('/[\>\+\~\s]{1}[a-zA-Z0-9]+/', ' '.$selector, $matches)); // number of element names + $d += intval(preg_match_all('/[\:][\:]/', $selector, $matches)); // number of pseudo-elements + $specificity = $a.$b.$c.$d; + // add specificity to the beginning of the selector + $cssdata[$specificity.' '.$selector] = $block[1]; + } + // sort selectors alphabetically to account for specificity + ksort($cssdata, SORT_STRING); + // return array + return $cssdata; + } + + /** + * Cleanup HTML code (requires HTML Tidy library). + * @param $html (string) htmlcode to fix + * @param $default_css (string) CSS commands to add + * @param $tagvs (array) parameters for setHtmlVSpace method + * @param $tidy_options (array) options for tidy_parse_string function + * @param $tagvspaces (array) Array of vertical spaces for tags. + * @return string XHTML code cleaned up + * @author Nicola Asuni + * @since 5.9.017 (2010-11-16) + * @see setHtmlVSpace() + * @public static + */ + public static function fixHTMLCode($html, $default_css='', $tagvs='', $tidy_options='', &$tagvspaces) { + // configure parameters for HTML Tidy + if ($tidy_options === '') { + $tidy_options = array ( + 'clean' => 1, + 'drop-empty-paras' => 0, + 'drop-proprietary-attributes' => 1, + 'fix-backslash' => 1, + 'hide-comments' => 1, + 'join-styles' => 1, + 'lower-literals' => 1, + 'merge-divs' => 1, + 'merge-spans' => 1, + 'output-xhtml' => 1, + 'word-2000' => 1, + 'wrap' => 0, + 'output-bom' => 0, + //'char-encoding' => 'utf8', + //'input-encoding' => 'utf8', + //'output-encoding' => 'utf8' + ); + } + // clean up the HTML code + $tidy = tidy_parse_string($html, $tidy_options); + // fix the HTML + $tidy->cleanRepair(); + // get the CSS part + $tidy_head = tidy_get_head($tidy); + $css = $tidy_head->value; + $css = preg_replace('/]+)>/ims', ''; + // get the body part + $tidy_body = tidy_get_body($tidy); + $html = $tidy_body->value; + // fix some self-closing tags + $html = str_replace('
      ', '
      ', $html); + // remove some empty tag blocks + $html = preg_replace('/]*)><\/div>/', '', $html); + $html = preg_replace('/]*)><\/p>/', '', $html); + if ($tagvs !== '') { + // set vertical space for some XHTML tags + $tagvspaces = $tagvs; + } + // return the cleaned XHTML code + CSS + return $css.$html; + } + + /** + * Returns true if the CSS selector is valid for the selected HTML tag + * @param $dom (array) array of HTML tags and properties + * @param $key (int) key of the current HTML tag + * @param $selector (string) CSS selector string + * @return true if the selector is valid, false otherwise + * @since 5.1.000 (2010-05-25) + * @public static + */ + public static function isValidCSSSelectorForTag($dom, $key, $selector) { + $valid = false; // value to be returned + $tag = $dom[$key]['value']; + $class = array(); + if (isset($dom[$key]['attribute']['class']) AND !empty($dom[$key]['attribute']['class'])) { + $class = explode(' ', strtolower($dom[$key]['attribute']['class'])); + } + $id = ''; + if (isset($dom[$key]['attribute']['id']) AND !empty($dom[$key]['attribute']['id'])) { + $id = strtolower($dom[$key]['attribute']['id']); + } + $selector = preg_replace('/([\>\+\~\s]{1})([\.]{1})([^\>\+\~\s]*)/si', '\\1*.\\3', $selector); + $matches = array(); + if (preg_match_all('/([\>\+\~\s]{1})([a-zA-Z0-9\*]+)([^\>\+\~\s]*)/si', $selector, $matches, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE) > 0) { + $parentop = array_pop($matches[1]); + $operator = $parentop[0]; + $offset = $parentop[1]; + $lasttag = array_pop($matches[2]); + $lasttag = strtolower(trim($lasttag[0])); + if (($lasttag == '*') OR ($lasttag == $tag)) { + // the last element on selector is our tag or 'any tag' + $attrib = array_pop($matches[3]); + $attrib = strtolower(trim($attrib[0])); + if (!empty($attrib)) { + // check if matches class, id, attribute, pseudo-class or pseudo-element + switch ($attrib[0]) { + case '.': { // class + if (in_array(substr($attrib, 1), $class)) { + $valid = true; + } + break; + } + case '#': { // ID + if (substr($attrib, 1) == $id) { + $valid = true; + } + break; + } + case '[': { // attribute + $attrmatch = array(); + if (preg_match('/\[([a-zA-Z0-9]*)[\s]*([\~\^\$\*\|\=]*)[\s]*["]?([^"\]]*)["]?\]/i', $attrib, $attrmatch) > 0) { + $att = strtolower($attrmatch[1]); + $val = $attrmatch[3]; + if (isset($dom[$key]['attribute'][$att])) { + switch ($attrmatch[2]) { + case '=': { + if ($dom[$key]['attribute'][$att] == $val) { + $valid = true; + } + break; + } + case '~=': { + if (in_array($val, explode(' ', $dom[$key]['attribute'][$att]))) { + $valid = true; + } + break; + } + case '^=': { + if ($val == substr($dom[$key]['attribute'][$att], 0, strlen($val))) { + $valid = true; + } + break; + } + case '$=': { + if ($val == substr($dom[$key]['attribute'][$att], -strlen($val))) { + $valid = true; + } + break; + } + case '*=': { + if (strpos($dom[$key]['attribute'][$att], $val) !== false) { + $valid = true; + } + break; + } + case '|=': { + if ($dom[$key]['attribute'][$att] == $val) { + $valid = true; + } elseif (preg_match('/'.$val.'[\-]{1}/i', $dom[$key]['attribute'][$att]) > 0) { + $valid = true; + } + break; + } + default: { + $valid = true; + } + } + } + } + break; + } + case ':': { // pseudo-class or pseudo-element + if ($attrib[1] == ':') { // pseudo-element + // pseudo-elements are not supported! + // (::first-line, ::first-letter, ::before, ::after) + } else { // pseudo-class + // pseudo-classes are not supported! + // (:root, :nth-child(n), :nth-last-child(n), :nth-of-type(n), :nth-last-of-type(n), :first-child, :last-child, :first-of-type, :last-of-type, :only-child, :only-of-type, :empty, :link, :visited, :active, :hover, :focus, :target, :lang(fr), :enabled, :disabled, :checked) + } + break; + } + } // end of switch + } else { + $valid = true; + } + if ($valid AND ($offset > 0)) { + $valid = false; + // check remaining selector part + $selector = substr($selector, 0, $offset); + switch ($operator) { + case ' ': { // descendant of an element + while ($dom[$key]['parent'] > 0) { + if (self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector)) { + $valid = true; + break; + } else { + $key = $dom[$key]['parent']; + } + } + break; + } + case '>': { // child of an element + $valid = self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector); + break; + } + case '+': { // immediately preceded by an element + for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) { + if ($dom[$i]['tag'] AND $dom[$i]['opening']) { + $valid = self::isValidCSSSelectorForTag($dom, $i, $selector); + break; + } + } + break; + } + case '~': { // preceded by an element + for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) { + if ($dom[$i]['tag'] AND $dom[$i]['opening']) { + if (self::isValidCSSSelectorForTag($dom, $i, $selector)) { + break; + } + } + } + break; + } + } + } + } + } + return $valid; + } + + /** + * Returns the styles array that apply for the selected HTML tag. + * @param $dom (array) array of HTML tags and properties + * @param $key (int) key of the current HTML tag + * @param $css (array) array of CSS properties + * @return array containing CSS properties + * @since 5.1.000 (2010-05-25) + * @public static + */ + public static function getCSSdataArray($dom, $key, $css) { + $cssarray = array(); // style to be returned + // get parent CSS selectors + $selectors = array(); + if (isset($dom[($dom[$key]['parent'])]['csssel'])) { + $selectors = $dom[($dom[$key]['parent'])]['csssel']; + } + // get all styles that apply + foreach($css as $selector => $style) { + $pos = strpos($selector, ' '); + // get specificity + $specificity = substr($selector, 0, $pos); + // remove specificity + $selector = substr($selector, $pos); + // check if this selector apply to current tag + if (self::isValidCSSSelectorForTag($dom, $key, $selector)) { + if (!in_array($selector, $selectors)) { + // add style if not already added on parent selector + $cssarray[] = array('k' => $selector, 's' => $specificity, 'c' => $style); + $selectors[] = $selector; + } + } + } + if (isset($dom[$key]['attribute']['style'])) { + // attach inline style (latest properties have high priority) + $cssarray[] = array('k' => '', 's' => '1000', 'c' => $dom[$key]['attribute']['style']); + } + // order the css array to account for specificity + $cssordered = array(); + foreach ($cssarray as $key => $val) { + $skey = sprintf('%04d', $key); + $cssordered[$val['s'].'_'.$skey] = $val; + } + // sort selectors alphabetically to account for specificity + ksort($cssordered, SORT_STRING); + return array($selectors, $cssordered); + } + + /** + * Compact CSS data array into single string. + * @param $css (array) array of CSS properties + * @return string containing merged CSS properties + * @since 5.9.070 (2011-04-19) + * @public static + */ + public static function getTagStyleFromCSSarray($css) { + $tagstyle = ''; // value to be returned + foreach ($css as $style) { + // split single css commands + $csscmds = explode(';', $style['c']); + foreach ($csscmds as $cmd) { + if (!empty($cmd)) { + $pos = strpos($cmd, ':'); + if ($pos !== false) { + $cmd = substr($cmd, 0, ($pos + 1)); + if (strpos($tagstyle, $cmd) !== false) { + // remove duplicate commands (last commands have high priority) + $tagstyle = preg_replace('/'.$cmd.'[^;]+/i', '', $tagstyle); + } + } + } + } + $tagstyle .= ';'.$style['c']; + } + // remove multiple semicolons + $tagstyle = preg_replace('/[;]+/', ';', $tagstyle); + return $tagstyle; + } + + /** + * Returns the Roman representation of an integer number + * @param $number (int) number to convert + * @return string roman representation of the specified number + * @since 4.4.004 (2008-12-10) + * @public static + */ + public static function intToRoman($number) { + $roman = ''; + while ($number >= 1000) { + $roman .= 'M'; + $number -= 1000; + } + while ($number >= 900) { + $roman .= 'CM'; + $number -= 900; + } + while ($number >= 500) { + $roman .= 'D'; + $number -= 500; + } + while ($number >= 400) { + $roman .= 'CD'; + $number -= 400; + } + while ($number >= 100) { + $roman .= 'C'; + $number -= 100; + } + while ($number >= 90) { + $roman .= 'XC'; + $number -= 90; + } + while ($number >= 50) { + $roman .= 'L'; + $number -= 50; + } + while ($number >= 40) { + $roman .= 'XL'; + $number -= 40; + } + while ($number >= 10) { + $roman .= 'X'; + $number -= 10; + } + while ($number >= 9) { + $roman .= 'IX'; + $number -= 9; + } + while ($number >= 5) { + $roman .= 'V'; + $number -= 5; + } + while ($number >= 4) { + $roman .= 'IV'; + $number -= 4; + } + while ($number >= 1) { + $roman .= 'I'; + --$number; + } + return $roman; + } + + /** + * Find position of last occurrence of a substring in a string + * @param $haystack (string) The string to search in. + * @param $needle (string) substring to search. + * @param $offset (int) May be specified to begin searching an arbitrary number of characters into the string. + * @return Returns the position where the needle exists. Returns FALSE if the needle was not found. + * @since 4.8.038 (2010-03-13) + * @public static + */ + public static function revstrpos($haystack, $needle, $offset = 0) { + $length = strlen($haystack); + $offset = ($offset > 0)?($length - $offset):abs($offset); + $pos = strpos(strrev($haystack), strrev($needle), $offset); + return ($pos === false)?false:($length - $pos - strlen($needle)); + } + + /** + * Serialize an array of parameters to be used with TCPDF tag in HTML code. + * @param $data (array) parameters array + * @return string containing serialized data + * @since 4.9.006 (2010-04-02) + * @public static + */ + public static function serializeTCPDFtagParameters($data) { + return urlencode(json_encode($data)); + } + + /** + * Unserialize parameters to be used with TCPDF tag in HTML code. + * @param $data (string) serialized data + * @return array containing unserialized data + * @public static + */ + public static function unserializeTCPDFtagParameters($data) { + return json_decode(urldecode($data), true); + } + + /** + * Returns an array of hyphenation patterns. + * @param $file (string) TEX file containing hypenation patterns. TEX pattrns can be downloaded from http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/ + * @return array of hyphenation patterns + * @author Nicola Asuni + * @since 4.9.012 (2010-04-12) + * @public static + */ + public static function getHyphenPatternsFromTEX($file) { + // TEX patterns are available at: + // http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/ + $data = file_get_contents($file); + $patterns = array(); + // remove comments + $data = preg_replace('/\%[^\n]*/', '', $data); + // extract the patterns part + preg_match('/\\\\patterns\{([^\}]*)\}/i', $data, $matches); + $data = trim(substr($matches[0], 10, -1)); + // extract each pattern + $patterns_array = preg_split('/[\s]+/', $data); + // create new language array of patterns + $patterns = array(); + foreach($patterns_array as $val) { + if (!TCPDF_STATIC::empty_string($val)) { + $val = trim($val); + $val = str_replace('\'', '\\\'', $val); + $key = preg_replace('/[0-9]+/', '', $val); + $patterns[$key] = $val; + } + } + return $patterns; + } + + /** + * Get the Path-Painting Operators. + * @param $style (string) Style of rendering. Possible values are: + *
        + *
      • S or D: Stroke the path.
      • + *
      • s or d: Close and stroke the path.
      • + *
      • f or F: Fill the path, using the nonzero winding number rule to determine the region to fill.
      • + *
      • f* or F*: Fill the path, using the even-odd rule to determine the region to fill.
      • + *
      • B or FD or DF: Fill and then stroke the path, using the nonzero winding number rule to determine the region to fill.
      • + *
      • B* or F*D or DF*: Fill and then stroke the path, using the even-odd rule to determine the region to fill.
      • + *
      • b or fd or df: Close, fill, and then stroke the path, using the nonzero winding number rule to determine the region to fill.
      • + *
      • b or f*d or df*: Close, fill, and then stroke the path, using the even-odd rule to determine the region to fill.
      • + *
      • CNZ: Clipping mode using the even-odd rule to determine which regions lie inside the clipping path.
      • + *
      • CEO: Clipping mode using the nonzero winding number rule to determine which regions lie inside the clipping path
      • + *
      • n: End the path object without filling or stroking it.
      • + *
      + * @param $default (string) default style + * @author Nicola Asuni + * @since 5.0.000 (2010-04-30) + * @public static + */ + public static function getPathPaintOperator($style, $default='S') { + $op = ''; + switch($style) { + case 'S': + case 'D': { + $op = 'S'; + break; + } + case 's': + case 'd': { + $op = 's'; + break; + } + case 'f': + case 'F': { + $op = 'f'; + break; + } + case 'f*': + case 'F*': { + $op = 'f*'; + break; + } + case 'B': + case 'FD': + case 'DF': { + $op = 'B'; + break; + } + case 'B*': + case 'F*D': + case 'DF*': { + $op = 'B*'; + break; + } + case 'b': + case 'fd': + case 'df': { + $op = 'b'; + break; + } + case 'b*': + case 'f*d': + case 'df*': { + $op = 'b*'; + break; + } + case 'CNZ': { + $op = 'W n'; + break; + } + case 'CEO': { + $op = 'W* n'; + break; + } + case 'n': { + $op = 'n'; + break; + } + default: { + if (!empty($default)) { + $op = self::getPathPaintOperator($default, ''); + } else { + $op = ''; + } + } + } + return $op; + } + + /** + * Get the product of two SVG tranformation matrices + * @param $ta (array) first SVG tranformation matrix + * @param $tb (array) second SVG tranformation matrix + * @return transformation array + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @public static + */ + public static function getTransformationMatrixProduct($ta, $tb) { + $tm = array(); + $tm[0] = ($ta[0] * $tb[0]) + ($ta[2] * $tb[1]); + $tm[1] = ($ta[1] * $tb[0]) + ($ta[3] * $tb[1]); + $tm[2] = ($ta[0] * $tb[2]) + ($ta[2] * $tb[3]); + $tm[3] = ($ta[1] * $tb[2]) + ($ta[3] * $tb[3]); + $tm[4] = ($ta[0] * $tb[4]) + ($ta[2] * $tb[5]) + $ta[4]; + $tm[5] = ($ta[1] * $tb[4]) + ($ta[3] * $tb[5]) + $ta[5]; + return $tm; + } + + /** + * Get the tranformation matrix from SVG transform attribute + * @param $attribute (string) transformation + * @return array of transformations + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @public static + */ + public static function getSVGTransformMatrix($attribute) { + // identity matrix + $tm = array(1, 0, 0, 1, 0, 0); + $transform = array(); + if (preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)[\s]*\(([^\)]+)\)/si', $attribute, $transform, PREG_SET_ORDER) > 0) { + foreach ($transform as $key => $data) { + if (!empty($data[2])) { + $a = 1; + $b = 0; + $c = 0; + $d = 1; + $e = 0; + $f = 0; + $regs = array(); + switch ($data[1]) { + case 'matrix': { + if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { + $a = $regs[1]; + $b = $regs[2]; + $c = $regs[3]; + $d = $regs[4]; + $e = $regs[5]; + $f = $regs[6]; + } + break; + } + case 'translate': { + if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { + $e = $regs[1]; + $f = $regs[2]; + } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) { + $e = $regs[1]; + } + break; + } + case 'scale': { + if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { + $a = $regs[1]; + $d = $regs[2]; + } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) { + $a = $regs[1]; + $d = $a; + } + break; + } + case 'rotate': { + if (preg_match('/([0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { + $ang = deg2rad($regs[1]); + $x = $regs[2]; + $y = $regs[3]; + $a = cos($ang); + $b = sin($ang); + $c = -$b; + $d = $a; + $e = ($x * (1 - $a)) - ($y * $c); + $f = ($y * (1 - $d)) - ($x * $b); + } elseif (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) { + $ang = deg2rad($regs[1]); + $a = cos($ang); + $b = sin($ang); + $c = -$b; + $d = $a; + $e = 0; + $f = 0; + } + break; + } + case 'skewX': { + if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) { + $c = tan(deg2rad($regs[1])); + } + break; + } + case 'skewY': { + if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) { + $b = tan(deg2rad($regs[1])); + } + break; + } + } + $tm = self::getTransformationMatrixProduct($tm, array($a, $b, $c, $d, $e, $f)); + } + } + } + return $tm; + } + + /** + * Returns the angle in radiants between two vectors + * @param $x1 (int) X coordinate of first vector point + * @param $y1 (int) Y coordinate of first vector point + * @param $x2 (int) X coordinate of second vector point + * @param $y2 (int) Y coordinate of second vector point + * @author Nicola Asuni + * @since 5.0.000 (2010-05-04) + * @public static + */ + public static function getVectorsAngle($x1, $y1, $x2, $y2) { + $dprod = ($x1 * $x2) + ($y1 * $y2); + $dist1 = sqrt(($x1 * $x1) + ($y1 * $y1)); + $dist2 = sqrt(($x2 * $x2) + ($y2 * $y2)); + $angle = acos($dprod / ($dist1 * $dist2)); + if (is_nan($angle)) { + $angle = M_PI; + } + if ((($x1 * $y2) - ($x2 * $y1)) < 0) { + $angle *= -1; + } + return $angle; + } + + /** + * Split string by a regular expression. + * This is a wrapper for the preg_split function to avoid the bug: https://bugs.php.net/bug.php?id=45850 + * @param $pattern (string) The regular expression pattern to search for without the modifiers, as a string. + * @param $modifiers (string) The modifiers part of the pattern, + * @param $subject (string) The input string. + * @param $limit (int) If specified, then only substrings up to limit are returned with the rest of the string being placed in the last substring. A limit of -1, 0 or NULL means "no limit" and, as is standard across PHP, you can use NULL to skip to the flags parameter. + * @param $flags (int) The flags as specified on the preg_split PHP function. + * @return Returns an array containing substrings of subject split along boundaries matched by pattern.modifier + * @author Nicola Asuni + * @since 6.0.023 + * @public static + */ + public static function pregSplit($pattern, $modifiers, $subject, $limit=NULL, $flags=NULL) { + // the bug only happens on PHP 5.2 when using the u modifier + if ((strpos($modifiers, 'u') === FALSE) OR (count(preg_split('//u', "\n\t", -1, PREG_SPLIT_NO_EMPTY)) == 2)) { + return preg_split($pattern.$modifiers, $subject, $limit, $flags); + } + // preg_split is bugged - try alternative solution + $ret = array(); + while (($nl = strpos($subject, "\n")) !== FALSE) { + $ret = array_merge($ret, preg_split($pattern.$modifiers, substr($subject, 0, $nl), $limit, $flags)); + $ret[] = "\n"; + $subject = substr($subject, ($nl + 1)); + } + if (strlen($subject) > 0) { + $ret = array_merge($ret, preg_split($pattern.$modifiers, $subject, $limit, $flags)); + } + return $ret; + } + + /** + * Reads entire file into a string. + * The file can be also an URL. + * @param $file (string) Name of the file or URL to read. + * @return The function returns the read data or FALSE on failure. + * @author Nicola Asuni + * @since 6.0.025 + * @public static + */ + public static function fileGetContents($file) { + //$file = html_entity_decode($file); + // array of possible alternative paths/URLs + $alt = array($file); + // replace URL relative path with full real server path + if ((strlen($file) > 1) + AND ($file[0] == '/') + AND ($file[1] != '/') + AND !empty($_SERVER['DOCUMENT_ROOT']) + AND ($_SERVER['DOCUMENT_ROOT'] != '/')) { + $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']); + if (($findroot === false) OR ($findroot > 1)) { + if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') { + $tmp = substr($_SERVER['DOCUMENT_ROOT'], 0, -1).$file; + } else { + $tmp = $_SERVER['DOCUMENT_ROOT'].$file; + } + $alt[] = htmlspecialchars_decode(urldecode($tmp)); + } + } + // URL mode + $url = $file; + // check for missing protocol + if (preg_match('%^/{2}%', $url)) { + if (preg_match('%^([^:]+:)//%i', K_PATH_URL, $match)) { + $url = $match[1].str_replace(' ', '%20', $url); + $alt[] = $url; + } + } + $urldata = @parse_url($url); + if (!isset($urldata['query']) OR (strlen($urldata['query']) <= 0)) { + if (strpos($url, K_PATH_URL) === 0) { + // convert URL to full server path + $tmp = str_replace(K_PATH_URL, K_PATH_MAIN, $url); + $tmp = htmlspecialchars_decode(urldecode($tmp)); + $alt[] = $tmp; + } + } + if (isset($_SERVER['SCRIPT_URI'])) { + $urldata = @parse_url($_SERVER['SCRIPT_URI']); + $alt[] = $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file; + } + foreach ($alt as $f) { + $ret = @file_get_contents($f); + if (($ret === FALSE) + AND !ini_get('allow_url_fopen') + AND function_exists('curl_init') + AND preg_match('%^(https?|ftp)://%', $f)) { + // try to get remote file data using cURL + $cs = curl_init(); // curl session + curl_setopt($cs, CURLOPT_URL, $f); + curl_setopt($cs, CURLOPT_BINARYTRANSFER, true); + curl_setopt($cs, CURLOPT_FAILONERROR, true); + curl_setopt($cs, CURLOPT_RETURNTRANSFER, true); + if ((ini_get('open_basedir') == '') AND (!ini_get('safe_mode'))) { + curl_setopt($cs, CURLOPT_FOLLOWLOCATION, true); + } + curl_setopt($cs, CURLOPT_CONNECTTIMEOUT, 5); + curl_setopt($cs, CURLOPT_TIMEOUT, 30); + curl_setopt($cs, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($cs, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($cs, CURLOPT_USERAGENT, 'TCPDF'); + $ret = curl_exec($cs); + curl_close($cs); + } + if ($ret !== FALSE) { + break; + } + } + return $ret; + } + +} // END OF TCPDF_STATIC CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf.php b/inc/3rdparty/libraries/tcpdf/tcpdf.php new file mode 100644 index 000000000..78694a0e4 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tcpdf.php @@ -0,0 +1,24573 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : +// This is a PHP class for generating PDF documents without requiring external extensions. +// +// NOTE: +// This class was originally derived in 2002 from the Public +// Domain FPDF class by Olivier Plathey (http://www.fpdf.org), +// but now is almost entirely rewritten and contains thousands of +// new lines of code and hundreds new features. +// +// Main features: +// * no external libraries are required for the basic functions; +// * all standard page formats, custom page formats, custom margins and units of measure; +// * UTF-8 Unicode and Right-To-Left languages; +// * TrueTypeUnicode, TrueType, Type1 and CID-0 fonts; +// * font subsetting; +// * methods to publish some XHTML + CSS code, Javascript and Forms; +// * images, graphic (geometric figures) and transformation methods; +// * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html) +// * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417; +// * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies; +// * automatic page header and footer management; +// * document encryption up to 256 bit and digital signature certifications; +// * transactions to UNDO commands; +// * PDF annotations, including links, text and file attachments; +// * text rendering modes (fill, stroke and clipping); +// * multiple columns mode; +// * no-write page regions; +// * bookmarks, named destinations and table of content; +// * text hyphenation; +// * text stretching and spacing (tracking); +// * automatic page break, line break and text alignments including justification; +// * automatic page numbering and page groups; +// * move and delete pages; +// * page compression (requires php-zlib extension); +// * XOBject Templates; +// * Layers and object visibility. +// * PDF/A-1b support +//============================================================+ + +/** + * @file + * This is a PHP class for generating PDF documents without requiring external extensions.
      + * TCPDF project (http://www.tcpdf.org) was originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.
      + *

      TCPDF main features are:

      + *
        + *
      • no external libraries are required for the basic functions;
      • + *
      • all standard page formats, custom page formats, custom margins and units of measure;
      • + *
      • UTF-8 Unicode and Right-To-Left languages;
      • + *
      • TrueTypeUnicode, TrueType, Type1 and CID-0 fonts;
      • + *
      • font subsetting;
      • + *
      • methods to publish some XHTML + CSS code, Javascript and Forms;
      • + *
      • images, graphic (geometric figures) and transformation methods; + *
      • supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/www/formats.html)
      • + *
      • 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extention, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;
      • + *
      • JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;
      • + *
      • automatic page header and footer management;
      • + *
      • document encryption up to 256 bit and digital signature certifications;
      • + *
      • transactions to UNDO commands;
      • + *
      • PDF annotations, including links, text and file attachments;
      • + *
      • text rendering modes (fill, stroke and clipping);
      • + *
      • multiple columns mode;
      • + *
      • no-write page regions;
      • + *
      • bookmarks, named destinations and table of content;
      • + *
      • text hyphenation;
      • + *
      • text stretching and spacing (tracking);
      • + *
      • automatic page break, line break and text alignments including justification;
      • + *
      • automatic page numbering and page groups;
      • + *
      • move and delete pages;
      • + *
      • page compression (requires php-zlib extension);
      • + *
      • XOBject Templates;
      • + *
      • Layers and object visibility;
      • + *
      • PDF/A-1b support.
      • + *
      + * Tools to encode your unicode fonts are on fonts/utils directory.

      + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 6.0.093 + */ + +// TCPDF configuration +require_once(dirname(__FILE__).'/tcpdf_autoconfig.php'); +// TCPDF static font methods and data +require_once(dirname(__FILE__).'/include/tcpdf_font_data.php'); +// TCPDF static font methods and data +require_once(dirname(__FILE__).'/include/tcpdf_fonts.php'); +// TCPDF static color methods and data +require_once(dirname(__FILE__).'/include/tcpdf_colors.php'); +// TCPDF static image methods and data +require_once(dirname(__FILE__).'/include/tcpdf_images.php'); +// TCPDF static methods and data +require_once(dirname(__FILE__).'/include/tcpdf_static.php'); + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/** + * @class TCPDF + * PHP class for generating PDF documents without requiring external extensions. + * TCPDF project (http://www.tcpdf.org) has been originally derived in 2002 from the Public Domain FPDF class by Olivier Plathey (http://www.fpdf.org), but now is almost entirely rewritten.
      + * @package com.tecnick.tcpdf + * @brief PHP class for generating PDF documents without requiring external extensions. + * @version 6.0.093 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF { + + // Protected properties + + /** + * Current page number. + * @protected + */ + protected $page; + + /** + * Current object number. + * @protected + */ + protected $n; + + /** + * Array of object offsets. + * @protected + */ + protected $offsets = array(); + + /** + * Array of object IDs for each page. + * @protected + */ + protected $pageobjects = array(); + + /** + * Buffer holding in-memory PDF. + * @protected + */ + protected $buffer; + + /** + * Array containing pages. + * @protected + */ + protected $pages = array(); + + /** + * Current document state. + * @protected + */ + protected $state; + + /** + * Compression flag. + * @protected + */ + protected $compress; + + /** + * Current page orientation (P = Portrait, L = Landscape). + * @protected + */ + protected $CurOrientation; + + /** + * Page dimensions. + * @protected + */ + protected $pagedim = array(); + + /** + * Scale factor (number of points in user unit). + * @protected + */ + protected $k; + + /** + * Width of page format in points. + * @protected + */ + protected $fwPt; + + /** + * Height of page format in points. + * @protected + */ + protected $fhPt; + + /** + * Current width of page in points. + * @protected + */ + protected $wPt; + + /** + * Current height of page in points. + * @protected + */ + protected $hPt; + + /** + * Current width of page in user unit. + * @protected + */ + protected $w; + + /** + * Current height of page in user unit. + * @protected + */ + protected $h; + + /** + * Left margin. + * @protected + */ + protected $lMargin; + + /** + * Right margin. + * @protected + */ + protected $rMargin; + + /** + * Cell left margin (used by regions). + * @protected + */ + protected $clMargin; + + /** + * Cell right margin (used by regions). + * @protected + */ + protected $crMargin; + + /** + * Top margin. + * @protected + */ + protected $tMargin; + + /** + * Page break margin. + * @protected + */ + protected $bMargin; + + /** + * Array of cell internal paddings ('T' => top, 'R' => right, 'B' => bottom, 'L' => left). + * @since 5.9.000 (2010-10-03) + * @protected + */ + protected $cell_padding = array('T' => 0, 'R' => 0, 'B' => 0, 'L' => 0); + + /** + * Array of cell margins ('T' => top, 'R' => right, 'B' => bottom, 'L' => left). + * @since 5.9.000 (2010-10-04) + * @protected + */ + protected $cell_margin = array('T' => 0, 'R' => 0, 'B' => 0, 'L' => 0); + + /** + * Current horizontal position in user unit for cell positioning. + * @protected + */ + protected $x; + + /** + * Current vertical position in user unit for cell positioning. + * @protected + */ + protected $y; + + /** + * Height of last cell printed. + * @protected + */ + protected $lasth; + + /** + * Line width in user unit. + * @protected + */ + protected $LineWidth; + + /** + * Array of standard font names. + * @protected + */ + protected $CoreFonts; + + /** + * Array of used fonts. + * @protected + */ + protected $fonts = array(); + + /** + * Array of font files. + * @protected + */ + protected $FontFiles = array(); + + /** + * Array of encoding differences. + * @protected + */ + protected $diffs = array(); + + /** + * Array of used images. + * @protected + */ + protected $images = array(); + + /** + * Array of cached files. + * @protected + */ + protected $cached_files = array(); + + /** + * Array of Annotations in pages. + * @protected + */ + protected $PageAnnots = array(); + + /** + * Array of internal links. + * @protected + */ + protected $links = array(); + + /** + * Current font family. + * @protected + */ + protected $FontFamily; + + /** + * Current font style. + * @protected + */ + protected $FontStyle; + + /** + * Current font ascent (distance between font top and baseline). + * @protected + * @since 2.8.000 (2007-03-29) + */ + protected $FontAscent; + + /** + * Current font descent (distance between font bottom and baseline). + * @protected + * @since 2.8.000 (2007-03-29) + */ + protected $FontDescent; + + /** + * Underlining flag. + * @protected + */ + protected $underline; + + /** + * Overlining flag. + * @protected + */ + protected $overline; + + /** + * Current font info. + * @protected + */ + protected $CurrentFont; + + /** + * Current font size in points. + * @protected + */ + protected $FontSizePt; + + /** + * Current font size in user unit. + * @protected + */ + protected $FontSize; + + /** + * Commands for drawing color. + * @protected + */ + protected $DrawColor; + + /** + * Commands for filling color. + * @protected + */ + protected $FillColor; + + /** + * Commands for text color. + * @protected + */ + protected $TextColor; + + /** + * Indicates whether fill and text colors are different. + * @protected + */ + protected $ColorFlag; + + /** + * Automatic page breaking. + * @protected + */ + protected $AutoPageBreak; + + /** + * Threshold used to trigger page breaks. + * @protected + */ + protected $PageBreakTrigger; + + /** + * Flag set when processing page header. + * @protected + */ + protected $InHeader = false; + + /** + * Flag set when processing page footer. + * @protected + */ + protected $InFooter = false; + + /** + * Zoom display mode. + * @protected + */ + protected $ZoomMode; + + /** + * Layout display mode. + * @protected + */ + protected $LayoutMode; + + /** + * If true set the document information dictionary in Unicode. + * @protected + */ + protected $docinfounicode = true; + + /** + * Document title. + * @protected + */ + protected $title = ''; + + /** + * Document subject. + * @protected + */ + protected $subject = ''; + + /** + * Document author. + * @protected + */ + protected $author = ''; + + /** + * Document keywords. + * @protected + */ + protected $keywords = ''; + + /** + * Document creator. + * @protected + */ + protected $creator = ''; + + /** + * Starting page number. + * @protected + */ + protected $starting_page_number = 1; + + /** + * The right-bottom (or left-bottom for RTL) corner X coordinate of last inserted image. + * @since 2002-07-31 + * @author Nicola Asuni + * @protected + */ + protected $img_rb_x; + + /** + * The right-bottom corner Y coordinate of last inserted image. + * @since 2002-07-31 + * @author Nicola Asuni + * @protected + */ + protected $img_rb_y; + + /** + * Adjusting factor to convert pixels to user units. + * @since 2004-06-14 + * @author Nicola Asuni + * @protected + */ + protected $imgscale = 1; + + /** + * Boolean flag set to true when the input text is unicode (require unicode fonts). + * @since 2005-01-02 + * @author Nicola Asuni + * @protected + */ + protected $isunicode = false; + + /** + * PDF version. + * @since 1.5.3 + * @protected + */ + protected $PDFVersion = '1.7'; + + /** + * ID of the stored default header template (-1 = not set). + * @protected + */ + protected $header_xobjid = false; + + /** + * If true reset the Header Xobject template at each page + * @protected + */ + protected $header_xobj_autoreset = false; + + /** + * Minimum distance between header and top page margin. + * @protected + */ + protected $header_margin; + + /** + * Minimum distance between footer and bottom page margin. + * @protected + */ + protected $footer_margin; + + /** + * Original left margin value. + * @protected + * @since 1.53.0.TC013 + */ + protected $original_lMargin; + + /** + * Original right margin value. + * @protected + * @since 1.53.0.TC013 + */ + protected $original_rMargin; + + /** + * Default font used on page header. + * @protected + */ + protected $header_font; + + /** + * Default font used on page footer. + * @protected + */ + protected $footer_font; + + /** + * Language templates. + * @protected + */ + protected $l; + + /** + * Barcode to print on page footer (only if set). + * @protected + */ + protected $barcode = false; + + /** + * Boolean flag to print/hide page header. + * @protected + */ + protected $print_header = true; + + /** + * Boolean flag to print/hide page footer. + * @protected + */ + protected $print_footer = true; + + /** + * Header image logo. + * @protected + */ + protected $header_logo = ''; + + /** + * Width of header image logo in user units. + * @protected + */ + protected $header_logo_width = 30; + + /** + * Title to be printed on default page header. + * @protected + */ + protected $header_title = ''; + + /** + * String to pring on page header after title. + * @protected + */ + protected $header_string = ''; + + /** + * Color for header text (RGB array). + * @since 5.9.174 (2012-07-25) + * @protected + */ + protected $header_text_color = array(0,0,0); + + /** + * Color for header line (RGB array). + * @since 5.9.174 (2012-07-25) + * @protected + */ + protected $header_line_color = array(0,0,0); + + /** + * Color for footer text (RGB array). + * @since 5.9.174 (2012-07-25) + * @protected + */ + protected $footer_text_color = array(0,0,0); + + /** + * Color for footer line (RGB array). + * @since 5.9.174 (2012-07-25) + * @protected + */ + protected $footer_line_color = array(0,0,0); + + /** + * Text shadow data array. + * @since 5.9.174 (2012-07-25) + * @protected + */ + protected $txtshadow = array('enabled'=>false, 'depth_w'=>0, 'depth_h'=>0, 'color'=>false, 'opacity'=>1, 'blend_mode'=>'Normal'); + + /** + * Default number of columns for html table. + * @protected + */ + protected $default_table_columns = 4; + + // variables for html parser + + /** + * HTML PARSER: array to store current link and rendering styles. + * @protected + */ + protected $HREF = array(); + + /** + * List of available fonts on filesystem. + * @protected + */ + protected $fontlist = array(); + + /** + * Current foreground color. + * @protected + */ + protected $fgcolor; + + /** + * HTML PARSER: array of boolean values, true in case of ordered list (OL), false otherwise. + * @protected + */ + protected $listordered = array(); + + /** + * HTML PARSER: array count list items on nested lists. + * @protected + */ + protected $listcount = array(); + + /** + * HTML PARSER: current list nesting level. + * @protected + */ + protected $listnum = 0; + + /** + * HTML PARSER: indent amount for lists. + * @protected + */ + protected $listindent = 0; + + /** + * HTML PARSER: current list indententation level. + * @protected + */ + protected $listindentlevel = 0; + + /** + * Current background color. + * @protected + */ + protected $bgcolor; + + /** + * Temporary font size in points. + * @protected + */ + protected $tempfontsize = 10; + + /** + * Spacer string for LI tags. + * @protected + */ + protected $lispacer = ''; + + /** + * Default encoding. + * @protected + * @since 1.53.0.TC010 + */ + protected $encoding = 'UTF-8'; + + /** + * PHP internal encoding. + * @protected + * @since 1.53.0.TC016 + */ + protected $internal_encoding; + + /** + * Boolean flag to indicate if the document language is Right-To-Left. + * @protected + * @since 2.0.000 + */ + protected $rtl = false; + + /** + * Boolean flag used to force RTL or LTR string direction. + * @protected + * @since 2.0.000 + */ + protected $tmprtl = false; + + // --- Variables used for document encryption: + + /** + * IBoolean flag indicating whether document is protected. + * @protected + * @since 2.0.000 (2008-01-02) + */ + protected $encrypted; + + /** + * Array containing encryption settings. + * @protected + * @since 5.0.005 (2010-05-11) + */ + protected $encryptdata = array(); + + /** + * Last RC4 key encrypted (cached for optimisation). + * @protected + * @since 2.0.000 (2008-01-02) + */ + protected $last_enc_key; + + /** + * Last RC4 computed key. + * @protected + * @since 2.0.000 (2008-01-02) + */ + protected $last_enc_key_c; + + /** + * File ID (used on document trailer). + * @protected + * @since 5.0.005 (2010-05-12) + */ + protected $file_id; + + // --- bookmark --- + + /** + * Outlines for bookmark. + * @protected + * @since 2.1.002 (2008-02-12) + */ + protected $outlines = array(); + + /** + * Outline root for bookmark. + * @protected + * @since 2.1.002 (2008-02-12) + */ + protected $OutlineRoot; + + // --- javascript and form --- + + /** + * Javascript code. + * @protected + * @since 2.1.002 (2008-02-12) + */ + protected $javascript = ''; + + /** + * Javascript counter. + * @protected + * @since 2.1.002 (2008-02-12) + */ + protected $n_js; + + /** + * line through state + * @protected + * @since 2.8.000 (2008-03-19) + */ + protected $linethrough; + + /** + * Array with additional document-wide usage rights for the document. + * @protected + * @since 5.8.014 (2010-08-23) + */ + protected $ur = array(); + + /** + * DPI (Dot Per Inch) Document Resolution (do not change). + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected $dpi = 72; + + /** + * Array of page numbers were a new page group was started (the page numbers are the keys of the array). + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected $newpagegroup = array(); + + /** + * Array that contains the number of pages in each page group. + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected $pagegroups = array(); + + /** + * Current page group number. + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected $currpagegroup = 0; + + /** + * Array of transparency objects and parameters. + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected $extgstates; + + /** + * Set the default JPEG compression quality (1-100). + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected $jpeg_quality; + + /** + * Default cell height ratio. + * @protected + * @since 3.0.014 (2008-05-23) + */ + protected $cell_height_ratio = K_CELL_HEIGHT_RATIO; + + /** + * PDF viewer preferences. + * @protected + * @since 3.1.000 (2008-06-09) + */ + protected $viewer_preferences; + + /** + * A name object specifying how the document should be displayed when opened. + * @protected + * @since 3.1.000 (2008-06-09) + */ + protected $PageMode; + + /** + * Array for storing gradient information. + * @protected + * @since 3.1.000 (2008-06-09) + */ + protected $gradients = array(); + + /** + * Array used to store positions inside the pages buffer (keys are the page numbers). + * @protected + * @since 3.2.000 (2008-06-26) + */ + protected $intmrk = array(); + + /** + * Array used to store positions inside the pages buffer (keys are the page numbers). + * @protected + * @since 5.7.000 (2010-08-03) + */ + protected $bordermrk = array(); + + /** + * Array used to store page positions to track empty pages (keys are the page numbers). + * @protected + * @since 5.8.007 (2010-08-18) + */ + protected $emptypagemrk = array(); + + /** + * Array used to store content positions inside the pages buffer (keys are the page numbers). + * @protected + * @since 4.6.021 (2009-07-20) + */ + protected $cntmrk = array(); + + /** + * Array used to store footer positions of each page. + * @protected + * @since 3.2.000 (2008-07-01) + */ + protected $footerpos = array(); + + /** + * Array used to store footer length of each page. + * @protected + * @since 4.0.014 (2008-07-29) + */ + protected $footerlen = array(); + + /** + * Boolean flag to indicate if a new line is created. + * @protected + * @since 3.2.000 (2008-07-01) + */ + protected $newline = true; + + /** + * End position of the latest inserted line. + * @protected + * @since 3.2.000 (2008-07-01) + */ + protected $endlinex = 0; + + /** + * PDF string for width value of the last line. + * @protected + * @since 4.0.006 (2008-07-16) + */ + protected $linestyleWidth = ''; + + /** + * PDF string for CAP value of the last line. + * @protected + * @since 4.0.006 (2008-07-16) + */ + protected $linestyleCap = '0 J'; + + /** + * PDF string for join value of the last line. + * @protected + * @since 4.0.006 (2008-07-16) + */ + protected $linestyleJoin = '0 j'; + + /** + * PDF string for dash value of the last line. + * @protected + * @since 4.0.006 (2008-07-16) + */ + protected $linestyleDash = '[] 0 d'; + + /** + * Boolean flag to indicate if marked-content sequence is open. + * @protected + * @since 4.0.013 (2008-07-28) + */ + protected $openMarkedContent = false; + + /** + * Count the latest inserted vertical spaces on HTML. + * @protected + * @since 4.0.021 (2008-08-24) + */ + protected $htmlvspace = 0; + + /** + * Array of Spot colors. + * @protected + * @since 4.0.024 (2008-09-12) + */ + protected $spot_colors = array(); + + /** + * Symbol used for HTML unordered list items. + * @protected + * @since 4.0.028 (2008-09-26) + */ + protected $lisymbol = ''; + + /** + * String used to mark the beginning and end of EPS image blocks. + * @protected + * @since 4.1.000 (2008-10-18) + */ + protected $epsmarker = 'x#!#EPS#!#x'; + + /** + * Array of transformation matrix. + * @protected + * @since 4.2.000 (2008-10-29) + */ + protected $transfmatrix = array(); + + /** + * Current key for transformation matrix. + * @protected + * @since 4.8.005 (2009-09-17) + */ + protected $transfmatrix_key = 0; + + /** + * Booklet mode for double-sided pages. + * @protected + * @since 4.2.000 (2008-10-29) + */ + protected $booklet = false; + + /** + * Epsilon value used for float calculations. + * @protected + * @since 4.2.000 (2008-10-29) + */ + protected $feps = 0.005; + + /** + * Array used for custom vertical spaces for HTML tags. + * @protected + * @since 4.2.001 (2008-10-30) + */ + protected $tagvspaces = array(); + + /** + * HTML PARSER: custom indent amount for lists. Negative value means disabled. + * @protected + * @since 4.2.007 (2008-11-12) + */ + protected $customlistindent = -1; + + /** + * Boolean flag to indicate if the border of the cell sides that cross the page should be removed. + * @protected + * @since 4.2.010 (2008-11-14) + */ + protected $opencell = true; + + /** + * Array of files to embedd. + * @protected + * @since 4.4.000 (2008-12-07) + */ + protected $embeddedfiles = array(); + + /** + * Boolean flag to indicate if we are inside a PRE tag. + * @protected + * @since 4.4.001 (2008-12-08) + */ + protected $premode = false; + + /** + * Array used to store positions of graphics transformation blocks inside the page buffer. + * keys are the page numbers + * @protected + * @since 4.4.002 (2008-12-09) + */ + protected $transfmrk = array(); + + /** + * Default color for html links. + * @protected + * @since 4.4.003 (2008-12-09) + */ + protected $htmlLinkColorArray = array(0, 0, 255); + + /** + * Default font style to add to html links. + * @protected + * @since 4.4.003 (2008-12-09) + */ + protected $htmlLinkFontStyle = 'U'; + + /** + * Counts the number of pages. + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected $numpages = 0; + + /** + * Array containing page lengths in bytes. + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected $pagelen = array(); + + /** + * Counts the number of pages. + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected $numimages = 0; + + /** + * Store the image keys. + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected $imagekeys = array(); + + /** + * Length of the buffer in bytes. + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected $bufferlen = 0; + + /** + * If true enables disk caching. + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected $diskcache = false; + + /** + * Counts the number of fonts. + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected $numfonts = 0; + + /** + * Store the font keys. + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected $fontkeys = array(); + + /** + * Store the font object IDs. + * @protected + * @since 4.8.001 (2009-09-09) + */ + protected $font_obj_ids = array(); + + /** + * Store the fage status (true when opened, false when closed). + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected $pageopen = array(); + + /** + * Default monospace font. + * @protected + * @since 4.5.025 (2009-03-10) + */ + protected $default_monospaced_font = 'courier'; + + /** + * Cloned copy of the current class object. + * @protected + * @since 4.5.029 (2009-03-19) + */ + protected $objcopy; + + /** + * Array used to store the lengths of cache files. + * @protected + * @since 4.5.029 (2009-03-19) + */ + protected $cache_file_length = array(); + + /** + * Table header content to be repeated on each new page. + * @protected + * @since 4.5.030 (2009-03-20) + */ + protected $thead = ''; + + /** + * Margins used for table header. + * @protected + * @since 4.5.030 (2009-03-20) + */ + protected $theadMargins = array(); + + /** + * Boolean flag to enable document digital signature. + * @protected + * @since 4.6.005 (2009-04-24) + */ + protected $sign = false; + + /** + * Digital signature data. + * @protected + * @since 4.6.005 (2009-04-24) + */ + protected $signature_data = array(); + + /** + * Digital signature max length. + * @protected + * @since 4.6.005 (2009-04-24) + */ + protected $signature_max_length = 11742; + + /** + * Data for digital signature appearance. + * @protected + * @since 5.3.011 (2010-06-16) + */ + protected $signature_appearance = array('page' => 1, 'rect' => '0 0 0 0'); + + /** + * Array of empty digital signature appearances. + * @protected + * @since 5.9.101 (2011-07-06) + */ + protected $empty_signature_appearance = array(); + + /** + * Boolean flag to enable document timestamping with TSA. + * @protected + * @since 6.0.085 (2014-06-19) + */ + protected $tsa_timestamp = false; + + /** + * Timestamping data. + * @protected + * @since 6.0.085 (2014-06-19) + */ + protected $tsa_data = array(); + + /** + * Regular expression used to find blank characters (required for word-wrapping). + * @protected + * @since 4.6.006 (2009-04-28) + */ + protected $re_spaces = '/[^\S\xa0]/'; + + /** + * Array of $re_spaces parts. + * @protected + * @since 5.5.011 (2010-07-09) + */ + protected $re_space = array('p' => '[^\S\xa0]', 'm' => ''); + + /** + * Digital signature object ID. + * @protected + * @since 4.6.022 (2009-06-23) + */ + protected $sig_obj_id = 0; + + /** + * ID of page objects. + * @protected + * @since 4.7.000 (2009-08-29) + */ + protected $page_obj_id = array(); + + /** + * List of form annotations IDs. + * @protected + * @since 4.8.000 (2009-09-07) + */ + protected $form_obj_id = array(); + + /** + * Deafult Javascript field properties. Possible values are described on official Javascript for Acrobat API reference. Annotation options can be directly specified using the 'aopt' entry. + * @protected + * @since 4.8.000 (2009-09-07) + */ + protected $default_form_prop = array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 255), 'strokeColor'=>array(128, 128, 128)); + + /** + * Javascript objects array. + * @protected + * @since 4.8.000 (2009-09-07) + */ + protected $js_objects = array(); + + /** + * Current form action (used during XHTML rendering). + * @protected + * @since 4.8.000 (2009-09-07) + */ + protected $form_action = ''; + + /** + * Current form encryption type (used during XHTML rendering). + * @protected + * @since 4.8.000 (2009-09-07) + */ + protected $form_enctype = 'application/x-www-form-urlencoded'; + + /** + * Current method to submit forms. + * @protected + * @since 4.8.000 (2009-09-07) + */ + protected $form_mode = 'post'; + + /** + * List of fonts used on form fields (fontname => fontkey). + * @protected + * @since 4.8.001 (2009-09-09) + */ + protected $annotation_fonts = array(); + + /** + * List of radio buttons parent objects. + * @protected + * @since 4.8.001 (2009-09-09) + */ + protected $radiobutton_groups = array(); + + /** + * List of radio group objects IDs. + * @protected + * @since 4.8.001 (2009-09-09) + */ + protected $radio_groups = array(); + + /** + * Text indentation value (used for text-indent CSS attribute). + * @protected + * @since 4.8.006 (2009-09-23) + */ + protected $textindent = 0; + + /** + * Store page number when startTransaction() is called. + * @protected + * @since 4.8.006 (2009-09-23) + */ + protected $start_transaction_page = 0; + + /** + * Store Y position when startTransaction() is called. + * @protected + * @since 4.9.001 (2010-03-28) + */ + protected $start_transaction_y = 0; + + /** + * True when we are printing the thead section on a new page. + * @protected + * @since 4.8.027 (2010-01-25) + */ + protected $inthead = false; + + /** + * Array of column measures (width, space, starting Y position). + * @protected + * @since 4.9.001 (2010-03-28) + */ + protected $columns = array(); + + /** + * Number of colums. + * @protected + * @since 4.9.001 (2010-03-28) + */ + protected $num_columns = 1; + + /** + * Current column number. + * @protected + * @since 4.9.001 (2010-03-28) + */ + protected $current_column = 0; + + /** + * Starting page for columns. + * @protected + * @since 4.9.001 (2010-03-28) + */ + protected $column_start_page = 0; + + /** + * Maximum page and column selected. + * @protected + * @since 5.8.000 (2010-08-11) + */ + protected $maxselcol = array('page' => 0, 'column' => 0); + + /** + * Array of: X difference between table cell x start and starting page margin, cellspacing, cellpadding. + * @protected + * @since 5.8.000 (2010-08-11) + */ + protected $colxshift = array('x' => 0, 's' => array('H' => 0, 'V' => 0), 'p' => array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0)); + + /** + * Text rendering mode: 0 = Fill text; 1 = Stroke text; 2 = Fill, then stroke text; 3 = Neither fill nor stroke text (invisible); 4 = Fill text and add to path for clipping; 5 = Stroke text and add to path for clipping; 6 = Fill, then stroke text and add to path for clipping; 7 = Add text to path for clipping. + * @protected + * @since 4.9.008 (2010-04-03) + */ + protected $textrendermode = 0; + + /** + * Text stroke width in doc units. + * @protected + * @since 4.9.008 (2010-04-03) + */ + protected $textstrokewidth = 0; + + /** + * Current stroke color. + * @protected + * @since 4.9.008 (2010-04-03) + */ + protected $strokecolor; + + /** + * Default unit of measure for document. + * @protected + * @since 5.0.000 (2010-04-22) + */ + protected $pdfunit = 'mm'; + + /** + * Boolean flag true when we are on TOC (Table Of Content) page. + * @protected + */ + protected $tocpage = false; + + /** + * Boolean flag: if true convert vector images (SVG, EPS) to raster image using GD or ImageMagick library. + * @protected + * @since 5.0.000 (2010-04-26) + */ + protected $rasterize_vector_images = false; + + /** + * Boolean flag: if true enables font subsetting by default. + * @protected + * @since 5.3.002 (2010-06-07) + */ + protected $font_subsetting = true; + + /** + * Array of default graphic settings. + * @protected + * @since 5.5.008 (2010-07-02) + */ + protected $default_graphic_vars = array(); + + /** + * Array of XObjects. + * @protected + * @since 5.8.014 (2010-08-23) + */ + protected $xobjects = array(); + + /** + * Boolean value true when we are inside an XObject. + * @protected + * @since 5.8.017 (2010-08-24) + */ + protected $inxobj = false; + + /** + * Current XObject ID. + * @protected + * @since 5.8.017 (2010-08-24) + */ + protected $xobjid = ''; + + /** + * Percentage of character stretching. + * @protected + * @since 5.9.000 (2010-09-29) + */ + protected $font_stretching = 100; + + /** + * Increases or decreases the space between characters in a text by the specified amount (tracking). + * @protected + * @since 5.9.000 (2010-09-29) + */ + protected $font_spacing = 0; + + /** + * Array of no-write regions. + * ('page' => page number or empy for current page, 'xt' => X top, 'yt' => Y top, 'xb' => X bottom, 'yb' => Y bottom, 'side' => page side 'L' = left or 'R' = right) + * @protected + * @since 5.9.003 (2010-10-14) + */ + protected $page_regions = array(); + + /** + * Boolean value true when page region check is active. + * @protected + */ + protected $check_page_regions = true; + + /** + * Array of PDF layers data. + * @protected + * @since 5.9.102 (2011-07-13) + */ + protected $pdflayers = array(); + + /** + * A dictionary of names and corresponding destinations (Dests key on document Catalog). + * @protected + * @since 5.9.097 (2011-06-23) + */ + protected $dests = array(); + + /** + * Object ID for Named Destinations + * @protected + * @since 5.9.097 (2011-06-23) + */ + protected $n_dests; + + /** + * Embedded Files Names + * @protected + * @since 5.9.204 (2013-01-23) + */ + protected $efnames = array(); + + /** + * Directory used for the last SVG image. + * @protected + * @since 5.0.000 (2010-05-05) + */ + protected $svgdir = ''; + + /** + * Deafult unit of measure for SVG. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svgunit = 'px'; + + /** + * Array of SVG gradients. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svggradients = array(); + + /** + * ID of last SVG gradient. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svggradientid = 0; + + /** + * Boolean value true when in SVG defs group. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svgdefsmode = false; + + /** + * Array of SVG defs. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svgdefs = array(); + + /** + * Boolean value true when in SVG clipPath tag. + * @protected + * @since 5.0.000 (2010-04-26) + */ + protected $svgclipmode = false; + + /** + * Array of SVG clipPath commands. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svgclippaths = array(); + + /** + * Array of SVG clipPath tranformation matrix. + * @protected + * @since 5.8.022 (2010-08-31) + */ + protected $svgcliptm = array(); + + /** + * ID of last SVG clipPath. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svgclipid = 0; + + /** + * SVG text. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svgtext = ''; + + /** + * SVG text properties. + * @protected + * @since 5.8.013 (2010-08-23) + */ + protected $svgtextmode = array(); + + /** + * Array of SVG properties. + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected $svgstyles = array(array( + 'alignment-baseline' => 'auto', + 'baseline-shift' => 'baseline', + 'clip' => 'auto', + 'clip-path' => 'none', + 'clip-rule' => 'nonzero', + 'color' => 'black', + 'color-interpolation' => 'sRGB', + 'color-interpolation-filters' => 'linearRGB', + 'color-profile' => 'auto', + 'color-rendering' => 'auto', + 'cursor' => 'auto', + 'direction' => 'ltr', + 'display' => 'inline', + 'dominant-baseline' => 'auto', + 'enable-background' => 'accumulate', + 'fill' => 'black', + 'fill-opacity' => 1, + 'fill-rule' => 'nonzero', + 'filter' => 'none', + 'flood-color' => 'black', + 'flood-opacity' => 1, + 'font' => '', + 'font-family' => 'helvetica', + 'font-size' => 'medium', + 'font-size-adjust' => 'none', + 'font-stretch' => 'normal', + 'font-style' => 'normal', + 'font-variant' => 'normal', + 'font-weight' => 'normal', + 'glyph-orientation-horizontal' => '0deg', + 'glyph-orientation-vertical' => 'auto', + 'image-rendering' => 'auto', + 'kerning' => 'auto', + 'letter-spacing' => 'normal', + 'lighting-color' => 'white', + 'marker' => '', + 'marker-end' => 'none', + 'marker-mid' => 'none', + 'marker-start' => 'none', + 'mask' => 'none', + 'opacity' => 1, + 'overflow' => 'auto', + 'pointer-events' => 'visiblePainted', + 'shape-rendering' => 'auto', + 'stop-color' => 'black', + 'stop-opacity' => 1, + 'stroke' => 'none', + 'stroke-dasharray' => 'none', + 'stroke-dashoffset' => 0, + 'stroke-linecap' => 'butt', + 'stroke-linejoin' => 'miter', + 'stroke-miterlimit' => 4, + 'stroke-opacity' => 1, + 'stroke-width' => 1, + 'text-anchor' => 'start', + 'text-decoration' => 'none', + 'text-rendering' => 'auto', + 'unicode-bidi' => 'normal', + 'visibility' => 'visible', + 'word-spacing' => 'normal', + 'writing-mode' => 'lr-tb', + 'text-color' => 'black', + 'transfmatrix' => array(1, 0, 0, 1, 0, 0) + )); + + /** + * If true force sRGB color profile for all document. + * @protected + * @since 5.9.121 (2011-09-28) + */ + protected $force_srgb = false; + + /** + * If true set the document to PDF/A mode. + * @protected + * @since 5.9.121 (2011-09-27) + */ + protected $pdfa_mode = false; + + /** + * Document creation date-time + * @protected + * @since 5.9.152 (2012-03-22) + */ + protected $doc_creation_timestamp; + + /** + * Document modification date-time + * @protected + * @since 5.9.152 (2012-03-22) + */ + protected $doc_modification_timestamp; + + /** + * Custom XMP data. + * @protected + * @since 5.9.128 (2011-10-06) + */ + protected $custom_xmp = ''; + + /** + * Overprint mode array. + * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008). + * @protected + * @since 5.9.152 (2012-03-23) + */ + protected $overprint = array('OP' => false, 'op' => false, 'OPM' => 0); + + /** + * Alpha mode array. + * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008). + * @protected + * @since 5.9.152 (2012-03-23) + */ + protected $alpha = array('CA' => 1, 'ca' => 1, 'BM' => '/Normal', 'AIS' => false); + + /** + * Define the page boundaries boxes to be set on document. + * @protected + * @since 5.9.152 (2012-03-23) + */ + protected $page_boxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'); + + /** + * If true print TCPDF meta link. + * @protected + * @since 5.9.152 (2012-03-23) + */ + protected $tcpdflink = true; + + /** + * Cache array for computed GD gamma values. + * @protected + * @since 5.9.1632 (2012-06-05) + */ + protected $gdgammacache = array(); + + //------------------------------------------------------------ + // METHODS + //------------------------------------------------------------ + + /** + * This is the class constructor. + * It allows to set up the page format, the orientation and the measure unit used in all the methods (except for the font sizes). + * + * IMPORTANT: Please note that this method sets the mb_internal_encoding to ASCII, so if you are using the mbstring module functions with TCPDF you need to correctly set/unset the mb_internal_encoding when needed. + * + * @param $orientation (string) page orientation. Possible values are (case insensitive):
      • P or Portrait (default)
      • L or Landscape
      • '' (empty string) for automatic orientation
      + * @param $unit (string) User measure unit. Possible values are:
      • pt: point
      • mm: millimeter (default)
      • cm: centimeter
      • in: inch

      A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This is a very common unit in typography; font sizes are expressed in that unit. + * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat(). + * @param $unicode (boolean) TRUE means that the input text is unicode (default = true) + * @param $encoding (string) Charset encoding (used only when converting back html entities); default is UTF-8. + * @param $diskcache (boolean) If TRUE reduce the RAM memory usage by caching temporary data on filesystem (slower). + * @param $pdfa (boolean) If TRUE set the document to PDF/A mode. + * @public + * @see getPageSizeFromFormat(), setPageFormat() + */ + public function __construct($orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8', $diskcache=false, $pdfa=false) { + /* Set internal character encoding to ASCII */ + if (function_exists('mb_internal_encoding') AND mb_internal_encoding()) { + $this->internal_encoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + // set file ID for trailer + $serformat = (is_array($format) ? json_encode($format) : $format); + $this->file_id = md5(TCPDF_STATIC::getRandomSeed('TCPDF'.$orientation.$unit.$serformat.$encoding)); + $this->font_obj_ids = array(); + $this->page_obj_id = array(); + $this->form_obj_id = array(); + // set pdf/a mode + $this->pdfa_mode = $pdfa; + $this->force_srgb = false; + // set disk caching + $this->diskcache = $diskcache ? true : false; + // set language direction + $this->rtl = false; + $this->tmprtl = false; + // some checks + $this->_dochecks(); + // initialization of properties + $this->isunicode = $unicode; + $this->page = 0; + $this->transfmrk[0] = array(); + $this->pagedim = array(); + $this->n = 2; + $this->buffer = ''; + $this->pages = array(); + $this->state = 0; + $this->fonts = array(); + $this->FontFiles = array(); + $this->diffs = array(); + $this->images = array(); + $this->links = array(); + $this->gradients = array(); + $this->InFooter = false; + $this->lasth = 0; + $this->FontFamily = defined('PDF_FONT_NAME_MAIN')?PDF_FONT_NAME_MAIN:'helvetica'; + $this->FontStyle = ''; + $this->FontSizePt = 12; + $this->underline = false; + $this->overline = false; + $this->linethrough = false; + $this->DrawColor = '0 G'; + $this->FillColor = '0 g'; + $this->TextColor = '0 g'; + $this->ColorFlag = false; + $this->pdflayers = array(); + // encryption values + $this->encrypted = false; + $this->last_enc_key = ''; + // standard Unicode fonts + $this->CoreFonts = array( + 'courier'=>'Courier', + 'courierB'=>'Courier-Bold', + 'courierI'=>'Courier-Oblique', + 'courierBI'=>'Courier-BoldOblique', + 'helvetica'=>'Helvetica', + 'helveticaB'=>'Helvetica-Bold', + 'helveticaI'=>'Helvetica-Oblique', + 'helveticaBI'=>'Helvetica-BoldOblique', + 'times'=>'Times-Roman', + 'timesB'=>'Times-Bold', + 'timesI'=>'Times-Italic', + 'timesBI'=>'Times-BoldItalic', + 'symbol'=>'Symbol', + 'zapfdingbats'=>'ZapfDingbats' + ); + // set scale factor + $this->setPageUnit($unit); + // set page format and orientation + $this->setPageFormat($format, $orientation); + // page margins (1 cm) + $margin = 28.35 / $this->k; + $this->SetMargins($margin, $margin); + $this->clMargin = $this->lMargin; + $this->crMargin = $this->rMargin; + // internal cell padding + $cpadding = $margin / 10; + $this->setCellPaddings($cpadding, 0, $cpadding, 0); + // cell margins + $this->setCellMargins(0, 0, 0, 0); + // line width (0.2 mm) + $this->LineWidth = 0.57 / $this->k; + $this->linestyleWidth = sprintf('%F w', ($this->LineWidth * $this->k)); + $this->linestyleCap = '0 J'; + $this->linestyleJoin = '0 j'; + $this->linestyleDash = '[] 0 d'; + // automatic page break + $this->SetAutoPageBreak(true, (2 * $margin)); + // full width display mode + $this->SetDisplayMode('fullwidth'); + // compression + $this->SetCompression(); + // set default PDF version number + $this->setPDFVersion(); + $this->tcpdflink = true; + $this->encoding = $encoding; + $this->HREF = array(); + $this->getFontsList(); + $this->fgcolor = array('R' => 0, 'G' => 0, 'B' => 0); + $this->strokecolor = array('R' => 0, 'G' => 0, 'B' => 0); + $this->bgcolor = array('R' => 255, 'G' => 255, 'B' => 255); + $this->extgstates = array(); + $this->setTextShadow(); + // signature + $this->sign = false; + $this->tsa_timestamp = false; + $this->tsa_data = array(); + $this->signature_appearance = array('page' => 1, 'rect' => '0 0 0 0', 'name' => 'Signature'); + $this->empty_signature_appearance = array(); + // user's rights + $this->ur['enabled'] = false; + $this->ur['document'] = '/FullSave'; + $this->ur['annots'] = '/Create/Delete/Modify/Copy/Import/Export'; + $this->ur['form'] = '/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate'; + $this->ur['signature'] = '/Modify'; + $this->ur['ef'] = '/Create/Delete/Modify/Import'; + $this->ur['formex'] = ''; + // set default JPEG quality + $this->jpeg_quality = 75; + // initialize some settings + TCPDF_FONTS::utf8Bidi(array(''), '', false, $this->isunicode, $this->CurrentFont); + // set default font + $this->SetFont($this->FontFamily, $this->FontStyle, $this->FontSizePt); + $this->setHeaderFont(array($this->FontFamily, $this->FontStyle, $this->FontSizePt)); + $this->setFooterFont(array($this->FontFamily, $this->FontStyle, $this->FontSizePt)); + // check if PCRE Unicode support is enabled + if ($this->isunicode AND (@preg_match('/\pL/u', 'a') == 1)) { + // PCRE unicode support is turned ON + // \s : any whitespace character + // \p{Z} : any separator + // \p{Lo} : Unicode letter or ideograph that does not have lowercase and uppercase variants. Is used to chunk chinese words. + // \xa0 : Unicode Character 'NO-BREAK SPACE' (U+00A0) + //$this->setSpacesRE('/(?!\xa0)[\s\p{Z}\p{Lo}]/u'); + $this->setSpacesRE('/(?!\xa0)[\s\p{Z}]/u'); + } else { + // PCRE unicode support is turned OFF + $this->setSpacesRE('/[^\S\xa0]/'); + } + $this->default_form_prop = array('lineWidth'=>1, 'borderStyle'=>'solid', 'fillColor'=>array(255, 255, 255), 'strokeColor'=>array(128, 128, 128)); + // set document creation and modification timestamp + $this->doc_creation_timestamp = time(); + $this->doc_modification_timestamp = $this->doc_creation_timestamp; + // get default graphic vars + $this->default_graphic_vars = $this->getGraphicVars(); + $this->header_xobj_autoreset = false; + $this->custom_xmp = ''; + } + + /** + * Default destructor. + * @public + * @since 1.53.0.TC016 + */ + public function __destruct() { + // restore internal encoding + if (isset($this->internal_encoding) AND !empty($this->internal_encoding)) { + mb_internal_encoding($this->internal_encoding); + } + // unset all class variables + $this->_destroy(true); + } + + /** + * Set the units of measure for the document. + * @param $unit (string) User measure unit. Possible values are:
      • pt: point
      • mm: millimeter (default)
      • cm: centimeter
      • in: inch

      A point equals 1/72 of inch, that is to say about 0.35 mm (an inch being 2.54 cm). This is a very common unit in typography; font sizes are expressed in that unit. + * @public + * @since 3.0.015 (2008-06-06) + */ + public function setPageUnit($unit) { + $unit = strtolower($unit); + //Set scale factor + switch ($unit) { + // points + case 'px': + case 'pt': { + $this->k = 1; + break; + } + // millimeters + case 'mm': { + $this->k = $this->dpi / 25.4; + break; + } + // centimeters + case 'cm': { + $this->k = $this->dpi / 2.54; + break; + } + // inches + case 'in': { + $this->k = $this->dpi; + break; + } + // unsupported unit + default : { + $this->Error('Incorrect unit: '.$unit); + break; + } + } + $this->pdfunit = $unit; + if (isset($this->CurOrientation)) { + $this->setPageOrientation($this->CurOrientation); + } + } + + /** + * Change the format of the current page + * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() documentation or an array of two numbers (width, height) or an array containing the following measures and options:
        + *
      • ['format'] = page format name (one of the above);
      • + *
      • ['Rotate'] : The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90.
      • + *
      • ['PZ'] : The page's preferred zoom (magnification) factor.
      • + *
      • ['MediaBox'] : the boundaries of the physical medium on which the page shall be displayed or printed:
      • + *
      • ['MediaBox']['llx'] : lower-left x coordinate
      • + *
      • ['MediaBox']['lly'] : lower-left y coordinate
      • + *
      • ['MediaBox']['urx'] : upper-right x coordinate
      • + *
      • ['MediaBox']['ury'] : upper-right y coordinate
      • + *
      • ['CropBox'] : the visible region of default user space:
      • + *
      • ['CropBox']['llx'] : lower-left x coordinate
      • + *
      • ['CropBox']['lly'] : lower-left y coordinate
      • + *
      • ['CropBox']['urx'] : upper-right x coordinate
      • + *
      • ['CropBox']['ury'] : upper-right y coordinate
      • + *
      • ['BleedBox'] : the region to which the contents of the page shall be clipped when output in a production environment:
      • + *
      • ['BleedBox']['llx'] : lower-left x coordinate
      • + *
      • ['BleedBox']['lly'] : lower-left y coordinate
      • + *
      • ['BleedBox']['urx'] : upper-right x coordinate
      • + *
      • ['BleedBox']['ury'] : upper-right y coordinate
      • + *
      • ['TrimBox'] : the intended dimensions of the finished page after trimming:
      • + *
      • ['TrimBox']['llx'] : lower-left x coordinate
      • + *
      • ['TrimBox']['lly'] : lower-left y coordinate
      • + *
      • ['TrimBox']['urx'] : upper-right x coordinate
      • + *
      • ['TrimBox']['ury'] : upper-right y coordinate
      • + *
      • ['ArtBox'] : the extent of the page's meaningful content:
      • + *
      • ['ArtBox']['llx'] : lower-left x coordinate
      • + *
      • ['ArtBox']['lly'] : lower-left y coordinate
      • + *
      • ['ArtBox']['urx'] : upper-right x coordinate
      • + *
      • ['ArtBox']['ury'] : upper-right y coordinate
      • + *
      • ['BoxColorInfo'] :specify the colours and other visual characteristics that should be used in displaying guidelines on the screen for each of the possible page boundaries other than the MediaBox:
      • + *
      • ['BoxColorInfo'][BOXTYPE]['C'] : an array of three numbers in the range 0-255, representing the components in the DeviceRGB colour space.
      • + *
      • ['BoxColorInfo'][BOXTYPE]['W'] : the guideline width in default user units
      • + *
      • ['BoxColorInfo'][BOXTYPE]['S'] : the guideline style: S = Solid; D = Dashed
      • + *
      • ['BoxColorInfo'][BOXTYPE]['D'] : dash array defining a pattern of dashes and gaps to be used in drawing dashed guidelines
      • + *
      • ['trans'] : the style and duration of the visual transition to use when moving from another page to the given page during a presentation
      • + *
      • ['trans']['Dur'] : The page's display duration (also called its advance timing): the maximum length of time, in seconds, that the page shall be displayed during presentations before the viewer application shall automatically advance to the next page.
      • + *
      • ['trans']['S'] : transition style : Split, Blinds, Box, Wipe, Dissolve, Glitter, R, Fly, Push, Cover, Uncover, Fade
      • + *
      • ['trans']['D'] : The duration of the transition effect, in seconds.
      • + *
      • ['trans']['Dm'] : (Split and Blinds transition styles only) The dimension in which the specified transition effect shall occur: H = Horizontal, V = Vertical. Default value: H.
      • + *
      • ['trans']['M'] : (Split, Box and Fly transition styles only) The direction of motion for the specified transition effect: I = Inward from the edges of the page, O = Outward from the center of the pageDefault value: I.
      • + *
      • ['trans']['Di'] : (Wipe, Glitter, Fly, Cover, Uncover and Push transition styles only) The direction in which the specified transition effect shall moves, expressed in degrees counterclockwise starting from a left-to-right direction. If the value is a number, it shall be one of: 0 = Left to right, 90 = Bottom to top (Wipe only), 180 = Right to left (Wipe only), 270 = Top to bottom, 315 = Top-left to bottom-right (Glitter only). If the value is a name, it shall be None, which is relevant only for the Fly transition when the value of SS is not 1.0. Default value: 0.
      • + *
      • ['trans']['SS'] : (Fly transition style only) The starting or ending scale at which the changes shall be drawn. If M specifies an inward transition, the scale of the changes drawn shall progress from SS to 1.0 over the course of the transition. If M specifies an outward transition, the scale of the changes drawn shall progress from 1.0 to SS over the course of the transition. Default: 1.0.
      • + *
      • ['trans']['B'] : (Fly transition style only) If true, the area that shall be flown in is rectangular and opaque. Default: false.
      • + *
      + * @param $orientation (string) page orientation. Possible values are (case insensitive):
        + *
      • P or Portrait (default)
      • + *
      • L or Landscape
      • + *
      • '' (empty string) for automatic orientation
      • + *
      + * @protected + * @since 3.0.015 (2008-06-06) + * @see getPageSizeFromFormat() + */ + protected function setPageFormat($format, $orientation='P') { + if (!empty($format) AND isset($this->pagedim[$this->page])) { + // remove inherited values + unset($this->pagedim[$this->page]); + } + if (is_string($format)) { + // get page measures from format name + $pf = TCPDF_STATIC::getPageSizeFromFormat($format); + $this->fwPt = $pf[0]; + $this->fhPt = $pf[1]; + } else { + // the boundaries of the physical medium on which the page shall be displayed or printed + if (isset($format['MediaBox'])) { + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'MediaBox', $format['MediaBox']['llx'], $format['MediaBox']['lly'], $format['MediaBox']['urx'], $format['MediaBox']['ury'], false, $this->k, $this->pagedim); + $this->fwPt = (($format['MediaBox']['urx'] - $format['MediaBox']['llx']) * $this->k); + $this->fhPt = (($format['MediaBox']['ury'] - $format['MediaBox']['lly']) * $this->k); + } else { + if (isset($format[0]) AND is_numeric($format[0]) AND isset($format[1]) AND is_numeric($format[1])) { + $pf = array(($format[0] * $this->k), ($format[1] * $this->k)); + } else { + if (!isset($format['format'])) { + // default value + $format['format'] = 'A4'; + } + $pf = TCPDF_STATIC::getPageSizeFromFormat($format['format']); + } + $this->fwPt = $pf[0]; + $this->fhPt = $pf[1]; + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'MediaBox', 0, 0, $this->fwPt, $this->fhPt, true, $this->k, $this->pagedim); + } + // the visible region of default user space + if (isset($format['CropBox'])) { + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'CropBox', $format['CropBox']['llx'], $format['CropBox']['lly'], $format['CropBox']['urx'], $format['CropBox']['ury'], false, $this->k, $this->pagedim); + } + // the region to which the contents of the page shall be clipped when output in a production environment + if (isset($format['BleedBox'])) { + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'BleedBox', $format['BleedBox']['llx'], $format['BleedBox']['lly'], $format['BleedBox']['urx'], $format['BleedBox']['ury'], false, $this->k, $this->pagedim); + } + // the intended dimensions of the finished page after trimming + if (isset($format['TrimBox'])) { + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'TrimBox', $format['TrimBox']['llx'], $format['TrimBox']['lly'], $format['TrimBox']['urx'], $format['TrimBox']['ury'], false, $this->k, $this->pagedim); + } + // the page's meaningful content (including potential white space) + if (isset($format['ArtBox'])) { + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'ArtBox', $format['ArtBox']['llx'], $format['ArtBox']['lly'], $format['ArtBox']['urx'], $format['ArtBox']['ury'], false, $this->k, $this->pagedim); + } + // specify the colours and other visual characteristics that should be used in displaying guidelines on the screen for the various page boundaries + if (isset($format['BoxColorInfo'])) { + $this->pagedim[$this->page]['BoxColorInfo'] = $format['BoxColorInfo']; + } + if (isset($format['Rotate']) AND (($format['Rotate'] % 90) == 0)) { + // The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90. + $this->pagedim[$this->page]['Rotate'] = intval($format['Rotate']); + } + if (isset($format['PZ'])) { + // The page's preferred zoom (magnification) factor + $this->pagedim[$this->page]['PZ'] = floatval($format['PZ']); + } + if (isset($format['trans'])) { + // The style and duration of the visual transition to use when moving from another page to the given page during a presentation + if (isset($format['trans']['Dur'])) { + // The page's display duration + $this->pagedim[$this->page]['trans']['Dur'] = floatval($format['trans']['Dur']); + } + $stansition_styles = array('Split', 'Blinds', 'Box', 'Wipe', 'Dissolve', 'Glitter', 'R', 'Fly', 'Push', 'Cover', 'Uncover', 'Fade'); + if (isset($format['trans']['S']) AND in_array($format['trans']['S'], $stansition_styles)) { + // The transition style that shall be used when moving to this page from another during a presentation + $this->pagedim[$this->page]['trans']['S'] = $format['trans']['S']; + $valid_effect = array('Split', 'Blinds'); + $valid_vals = array('H', 'V'); + if (isset($format['trans']['Dm']) AND in_array($format['trans']['S'], $valid_effect) AND in_array($format['trans']['Dm'], $valid_vals)) { + $this->pagedim[$this->page]['trans']['Dm'] = $format['trans']['Dm']; + } + $valid_effect = array('Split', 'Box', 'Fly'); + $valid_vals = array('I', 'O'); + if (isset($format['trans']['M']) AND in_array($format['trans']['S'], $valid_effect) AND in_array($format['trans']['M'], $valid_vals)) { + $this->pagedim[$this->page]['trans']['M'] = $format['trans']['M']; + } + $valid_effect = array('Wipe', 'Glitter', 'Fly', 'Cover', 'Uncover', 'Push'); + if (isset($format['trans']['Di']) AND in_array($format['trans']['S'], $valid_effect)) { + if (((($format['trans']['Di'] == 90) OR ($format['trans']['Di'] == 180)) AND ($format['trans']['S'] == 'Wipe')) + OR (($format['trans']['Di'] == 315) AND ($format['trans']['S'] == 'Glitter')) + OR (($format['trans']['Di'] == 0) OR ($format['trans']['Di'] == 270))) { + $this->pagedim[$this->page]['trans']['Di'] = intval($format['trans']['Di']); + } + } + if (isset($format['trans']['SS']) AND ($format['trans']['S'] == 'Fly')) { + $this->pagedim[$this->page]['trans']['SS'] = floatval($format['trans']['SS']); + } + if (isset($format['trans']['B']) AND ($format['trans']['B'] === true) AND ($format['trans']['S'] == 'Fly')) { + $this->pagedim[$this->page]['trans']['B'] = 'true'; + } + } else { + $this->pagedim[$this->page]['trans']['S'] = 'R'; + } + if (isset($format['trans']['D'])) { + // The duration of the transition effect, in seconds + $this->pagedim[$this->page]['trans']['D'] = floatval($format['trans']['D']); + } else { + $this->pagedim[$this->page]['trans']['D'] = 1; + } + } + } + $this->setPageOrientation($orientation); + } + + /** + * Set page orientation. + * @param $orientation (string) page orientation. Possible values are (case insensitive):
      • P or Portrait (default)
      • L or Landscape
      • '' (empty string) for automatic orientation
      + * @param $autopagebreak (boolean) Boolean indicating if auto-page-break mode should be on or off. + * @param $bottommargin (float) bottom margin of the page. + * @public + * @since 3.0.015 (2008-06-06) + */ + public function setPageOrientation($orientation, $autopagebreak='', $bottommargin='') { + if (!isset($this->pagedim[$this->page]['MediaBox'])) { + // the boundaries of the physical medium on which the page shall be displayed or printed + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'MediaBox', 0, 0, $this->fwPt, $this->fhPt, true, $this->k, $this->pagedim); + } + if (!isset($this->pagedim[$this->page]['CropBox'])) { + // the visible region of default user space + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'CropBox', $this->pagedim[$this->page]['MediaBox']['llx'], $this->pagedim[$this->page]['MediaBox']['lly'], $this->pagedim[$this->page]['MediaBox']['urx'], $this->pagedim[$this->page]['MediaBox']['ury'], true, $this->k, $this->pagedim); + } + if (!isset($this->pagedim[$this->page]['BleedBox'])) { + // the region to which the contents of the page shall be clipped when output in a production environment + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'BleedBox', $this->pagedim[$this->page]['CropBox']['llx'], $this->pagedim[$this->page]['CropBox']['lly'], $this->pagedim[$this->page]['CropBox']['urx'], $this->pagedim[$this->page]['CropBox']['ury'], true, $this->k, $this->pagedim); + } + if (!isset($this->pagedim[$this->page]['TrimBox'])) { + // the intended dimensions of the finished page after trimming + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'TrimBox', $this->pagedim[$this->page]['CropBox']['llx'], $this->pagedim[$this->page]['CropBox']['lly'], $this->pagedim[$this->page]['CropBox']['urx'], $this->pagedim[$this->page]['CropBox']['ury'], true, $this->k, $this->pagedim); + } + if (!isset($this->pagedim[$this->page]['ArtBox'])) { + // the page's meaningful content (including potential white space) + $this->pagedim = TCPDF_STATIC::setPageBoxes($this->page, 'ArtBox', $this->pagedim[$this->page]['CropBox']['llx'], $this->pagedim[$this->page]['CropBox']['lly'], $this->pagedim[$this->page]['CropBox']['urx'], $this->pagedim[$this->page]['CropBox']['ury'], true, $this->k, $this->pagedim); + } + if (!isset($this->pagedim[$this->page]['Rotate'])) { + // The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90. + $this->pagedim[$this->page]['Rotate'] = 0; + } + if (!isset($this->pagedim[$this->page]['PZ'])) { + // The page's preferred zoom (magnification) factor + $this->pagedim[$this->page]['PZ'] = 1; + } + if ($this->fwPt > $this->fhPt) { + // landscape + $default_orientation = 'L'; + } else { + // portrait + $default_orientation = 'P'; + } + $valid_orientations = array('P', 'L'); + if (empty($orientation)) { + $orientation = $default_orientation; + } else { + $orientation = strtoupper($orientation[0]); + } + if (in_array($orientation, $valid_orientations) AND ($orientation != $default_orientation)) { + $this->CurOrientation = $orientation; + $this->wPt = $this->fhPt; + $this->hPt = $this->fwPt; + } else { + $this->CurOrientation = $default_orientation; + $this->wPt = $this->fwPt; + $this->hPt = $this->fhPt; + } + if ((abs($this->pagedim[$this->page]['MediaBox']['urx'] - $this->hPt) < $this->feps) AND (abs($this->pagedim[$this->page]['MediaBox']['ury'] - $this->wPt) < $this->feps)){ + // swap X and Y coordinates (change page orientation) + $this->pagedim = TCPDF_STATIC::swapPageBoxCoordinates($this->page, $this->pagedim); + } + $this->w = ($this->wPt / $this->k); + $this->h = ($this->hPt / $this->k); + if (TCPDF_STATIC::empty_string($autopagebreak)) { + if (isset($this->AutoPageBreak)) { + $autopagebreak = $this->AutoPageBreak; + } else { + $autopagebreak = true; + } + } + if (TCPDF_STATIC::empty_string($bottommargin)) { + if (isset($this->bMargin)) { + $bottommargin = $this->bMargin; + } else { + // default value = 2 cm + $bottommargin = 2 * 28.35 / $this->k; + } + } + $this->SetAutoPageBreak($autopagebreak, $bottommargin); + // store page dimensions + $this->pagedim[$this->page]['w'] = $this->wPt; + $this->pagedim[$this->page]['h'] = $this->hPt; + $this->pagedim[$this->page]['wk'] = $this->w; + $this->pagedim[$this->page]['hk'] = $this->h; + $this->pagedim[$this->page]['tm'] = $this->tMargin; + $this->pagedim[$this->page]['bm'] = $bottommargin; + $this->pagedim[$this->page]['lm'] = $this->lMargin; + $this->pagedim[$this->page]['rm'] = $this->rMargin; + $this->pagedim[$this->page]['pb'] = $autopagebreak; + $this->pagedim[$this->page]['or'] = $this->CurOrientation; + $this->pagedim[$this->page]['olm'] = $this->original_lMargin; + $this->pagedim[$this->page]['orm'] = $this->original_rMargin; + } + + /** + * Set regular expression to detect withespaces or word separators. + * The pattern delimiter must be the forward-slash character "/". + * Some example patterns are: + *
      +	 * Non-Unicode or missing PCRE unicode support: "/[^\S\xa0]/"
      +	 * Unicode and PCRE unicode support: "/(?!\xa0)[\s\p{Z}]/u"
      +	 * Unicode and PCRE unicode support in Chinese mode: "/(?!\xa0)[\s\p{Z}\p{Lo}]/u"
      +	 * if PCRE unicode support is turned ON ("\P" is the negate class of "\p"):
      +	 *      \s     : any whitespace character
      +	 *      \p{Z}  : any separator
      +	 *      \p{Lo} : Unicode letter or ideograph that does not have lowercase and uppercase variants. Is used to chunk chinese words.
      +	 *      \xa0   : Unicode Character 'NO-BREAK SPACE' (U+00A0)
      +	 * 
      + * @param $re (string) regular expression (leave empty for default). + * @public + * @since 4.6.016 (2009-06-15) + */ + public function setSpacesRE($re='/[^\S\xa0]/') { + $this->re_spaces = $re; + $re_parts = explode('/', $re); + // get pattern parts + $this->re_space = array(); + if (isset($re_parts[1]) AND !empty($re_parts[1])) { + $this->re_space['p'] = $re_parts[1]; + } else { + $this->re_space['p'] = '[\s]'; + } + // set pattern modifiers + if (isset($re_parts[2]) AND !empty($re_parts[2])) { + $this->re_space['m'] = $re_parts[2]; + } else { + $this->re_space['m'] = ''; + } + } + + /** + * Enable or disable Right-To-Left language mode + * @param $enable (Boolean) if true enable Right-To-Left language mode. + * @param $resetx (Boolean) if true reset the X position on direction change. + * @public + * @since 2.0.000 (2008-01-03) + */ + public function setRTL($enable, $resetx=true) { + $enable = $enable ? true : false; + $resetx = ($resetx AND ($enable != $this->rtl)); + $this->rtl = $enable; + $this->tmprtl = false; + if ($resetx) { + $this->Ln(0); + } + } + + /** + * Return the RTL status + * @return boolean + * @public + * @since 4.0.012 (2008-07-24) + */ + public function getRTL() { + return $this->rtl; + } + + /** + * Force temporary RTL language direction + * @param $mode (mixed) can be false, 'L' for LTR or 'R' for RTL + * @public + * @since 2.1.000 (2008-01-09) + */ + public function setTempRTL($mode) { + $newmode = false; + switch (strtoupper($mode)) { + case 'LTR': + case 'L': { + if ($this->rtl) { + $newmode = 'L'; + } + break; + } + case 'RTL': + case 'R': { + if (!$this->rtl) { + $newmode = 'R'; + } + break; + } + case false: + default: { + $newmode = false; + break; + } + } + $this->tmprtl = $newmode; + } + + /** + * Return the current temporary RTL status + * @return boolean + * @public + * @since 4.8.014 (2009-11-04) + */ + public function isRTLTextDir() { + return ($this->rtl OR ($this->tmprtl == 'R')); + } + + /** + * Set the last cell height. + * @param $h (float) cell height. + * @author Nicola Asuni + * @public + * @since 1.53.0.TC034 + */ + public function setLastH($h) { + $this->lasth = $h; + } + + /** + * Return the cell height + * @param $fontsize (int) Font size in internal units + * @param $padding (boolean) If true add cell padding + * @public + */ + public function getCellHeight($fontsize, $padding=TRUE) { + $height = ($fontsize * $this->cell_height_ratio); + if ($padding) { + $height += ($this->cell_padding['T'] + $this->cell_padding['B']); + } + return round($height, 6); + } + + /** + * Reset the last cell height. + * @public + * @since 5.9.000 (2010-10-03) + */ + public function resetLastH() { + $this->lasth = $this->getCellHeight($this->FontSize); + } + + /** + * Get the last cell height. + * @return last cell height + * @public + * @since 4.0.017 (2008-08-05) + */ + public function getLastH() { + return $this->lasth; + } + + /** + * Set the adjusting factor to convert pixels to user units. + * @param $scale (float) adjusting factor to convert pixels to user units. + * @author Nicola Asuni + * @public + * @since 1.5.2 + */ + public function setImageScale($scale) { + $this->imgscale = $scale; + } + + /** + * Returns the adjusting factor to convert pixels to user units. + * @return float adjusting factor to convert pixels to user units. + * @author Nicola Asuni + * @public + * @since 1.5.2 + */ + public function getImageScale() { + return $this->imgscale; + } + + /** + * Returns an array of page dimensions: + *
      • $this->pagedim[$this->page]['w'] = page width in points
      • $this->pagedim[$this->page]['h'] = height in points
      • $this->pagedim[$this->page]['wk'] = page width in user units
      • $this->pagedim[$this->page]['hk'] = page height in user units
      • $this->pagedim[$this->page]['tm'] = top margin
      • $this->pagedim[$this->page]['bm'] = bottom margin
      • $this->pagedim[$this->page]['lm'] = left margin
      • $this->pagedim[$this->page]['rm'] = right margin
      • $this->pagedim[$this->page]['pb'] = auto page break
      • $this->pagedim[$this->page]['or'] = page orientation
      • $this->pagedim[$this->page]['olm'] = original left margin
      • $this->pagedim[$this->page]['orm'] = original right margin
      • $this->pagedim[$this->page]['Rotate'] = The number of degrees by which the page shall be rotated clockwise when displayed or printed. The value shall be a multiple of 90.
      • $this->pagedim[$this->page]['PZ'] = The page's preferred zoom (magnification) factor.
      • $this->pagedim[$this->page]['trans'] : the style and duration of the visual transition to use when moving from another page to the given page during a presentation
        • $this->pagedim[$this->page]['trans']['Dur'] = The page's display duration (also called its advance timing): the maximum length of time, in seconds, that the page shall be displayed during presentations before the viewer application shall automatically advance to the next page.
        • $this->pagedim[$this->page]['trans']['S'] = transition style : Split, Blinds, Box, Wipe, Dissolve, Glitter, R, Fly, Push, Cover, Uncover, Fade
        • $this->pagedim[$this->page]['trans']['D'] = The duration of the transition effect, in seconds.
        • $this->pagedim[$this->page]['trans']['Dm'] = (Split and Blinds transition styles only) The dimension in which the specified transition effect shall occur: H = Horizontal, V = Vertical. Default value: H.
        • $this->pagedim[$this->page]['trans']['M'] = (Split, Box and Fly transition styles only) The direction of motion for the specified transition effect: I = Inward from the edges of the page, O = Outward from the center of the pageDefault value: I.
        • $this->pagedim[$this->page]['trans']['Di'] = (Wipe, Glitter, Fly, Cover, Uncover and Push transition styles only) The direction in which the specified transition effect shall moves, expressed in degrees counterclockwise starting from a left-to-right direction. If the value is a number, it shall be one of: 0 = Left to right, 90 = Bottom to top (Wipe only), 180 = Right to left (Wipe only), 270 = Top to bottom, 315 = Top-left to bottom-right (Glitter only). If the value is a name, it shall be None, which is relevant only for the Fly transition when the value of SS is not 1.0. Default value: 0.
        • $this->pagedim[$this->page]['trans']['SS'] = (Fly transition style only) The starting or ending scale at which the changes shall be drawn. If M specifies an inward transition, the scale of the changes drawn shall progress from SS to 1.0 over the course of the transition. If M specifies an outward transition, the scale of the changes drawn shall progress from 1.0 to SS over the course of the transition. Default: 1.0.
        • $this->pagedim[$this->page]['trans']['B'] = (Fly transition style only) If true, the area that shall be flown in is rectangular and opaque. Default: false.
      • $this->pagedim[$this->page]['MediaBox'] : the boundaries of the physical medium on which the page shall be displayed or printed
        • $this->pagedim[$this->page]['MediaBox']['llx'] = lower-left x coordinate in points
        • $this->pagedim[$this->page]['MediaBox']['lly'] = lower-left y coordinate in points
        • $this->pagedim[$this->page]['MediaBox']['urx'] = upper-right x coordinate in points
        • $this->pagedim[$this->page]['MediaBox']['ury'] = upper-right y coordinate in points
      • $this->pagedim[$this->page]['CropBox'] : the visible region of default user space
        • $this->pagedim[$this->page]['CropBox']['llx'] = lower-left x coordinate in points
        • $this->pagedim[$this->page]['CropBox']['lly'] = lower-left y coordinate in points
        • $this->pagedim[$this->page]['CropBox']['urx'] = upper-right x coordinate in points
        • $this->pagedim[$this->page]['CropBox']['ury'] = upper-right y coordinate in points
      • $this->pagedim[$this->page]['BleedBox'] : the region to which the contents of the page shall be clipped when output in a production environment
        • $this->pagedim[$this->page]['BleedBox']['llx'] = lower-left x coordinate in points
        • $this->pagedim[$this->page]['BleedBox']['lly'] = lower-left y coordinate in points
        • $this->pagedim[$this->page]['BleedBox']['urx'] = upper-right x coordinate in points
        • $this->pagedim[$this->page]['BleedBox']['ury'] = upper-right y coordinate in points
      • $this->pagedim[$this->page]['TrimBox'] : the intended dimensions of the finished page after trimming
        • $this->pagedim[$this->page]['TrimBox']['llx'] = lower-left x coordinate in points
        • $this->pagedim[$this->page]['TrimBox']['lly'] = lower-left y coordinate in points
        • $this->pagedim[$this->page]['TrimBox']['urx'] = upper-right x coordinate in points
        • $this->pagedim[$this->page]['TrimBox']['ury'] = upper-right y coordinate in points
      • $this->pagedim[$this->page]['ArtBox'] : the extent of the page's meaningful content
        • $this->pagedim[$this->page]['ArtBox']['llx'] = lower-left x coordinate in points
        • $this->pagedim[$this->page]['ArtBox']['lly'] = lower-left y coordinate in points
        • $this->pagedim[$this->page]['ArtBox']['urx'] = upper-right x coordinate in points
        • $this->pagedim[$this->page]['ArtBox']['ury'] = upper-right y coordinate in points
      + * @param $pagenum (int) page number (empty = current page) + * @return array of page dimensions. + * @author Nicola Asuni + * @public + * @since 4.5.027 (2009-03-16) + */ + public function getPageDimensions($pagenum='') { + if (empty($pagenum)) { + $pagenum = $this->page; + } + return $this->pagedim[$pagenum]; + } + + /** + * Returns the page width in units. + * @param $pagenum (int) page number (empty = current page) + * @return int page width. + * @author Nicola Asuni + * @public + * @since 1.5.2 + * @see getPageDimensions() + */ + public function getPageWidth($pagenum='') { + if (empty($pagenum)) { + return $this->w; + } + return $this->pagedim[$pagenum]['w']; + } + + /** + * Returns the page height in units. + * @param $pagenum (int) page number (empty = current page) + * @return int page height. + * @author Nicola Asuni + * @public + * @since 1.5.2 + * @see getPageDimensions() + */ + public function getPageHeight($pagenum='') { + if (empty($pagenum)) { + return $this->h; + } + return $this->pagedim[$pagenum]['h']; + } + + /** + * Returns the page break margin. + * @param $pagenum (int) page number (empty = current page) + * @return int page break margin. + * @author Nicola Asuni + * @public + * @since 1.5.2 + * @see getPageDimensions() + */ + public function getBreakMargin($pagenum='') { + if (empty($pagenum)) { + return $this->bMargin; + } + return $this->pagedim[$pagenum]['bm']; + } + + /** + * Returns the scale factor (number of points in user unit). + * @return int scale factor. + * @author Nicola Asuni + * @public + * @since 1.5.2 + */ + public function getScaleFactor() { + return $this->k; + } + + /** + * Defines the left, top and right margins. + * @param $left (float) Left margin. + * @param $top (float) Top margin. + * @param $right (float) Right margin. Default value is the left one. + * @param $keepmargins (boolean) if true overwrites the default page margins + * @public + * @since 1.0 + * @see SetLeftMargin(), SetTopMargin(), SetRightMargin(), SetAutoPageBreak() + */ + public function SetMargins($left, $top, $right=-1, $keepmargins=false) { + //Set left, top and right margins + $this->lMargin = $left; + $this->tMargin = $top; + if ($right == -1) { + $right = $left; + } + $this->rMargin = $right; + if ($keepmargins) { + // overwrite original values + $this->original_lMargin = $this->lMargin; + $this->original_rMargin = $this->rMargin; + } + } + + /** + * Defines the left margin. The method can be called before creating the first page. If the current abscissa gets out of page, it is brought back to the margin. + * @param $margin (float) The margin. + * @public + * @since 1.4 + * @see SetTopMargin(), SetRightMargin(), SetAutoPageBreak(), SetMargins() + */ + public function SetLeftMargin($margin) { + //Set left margin + $this->lMargin = $margin; + if (($this->page > 0) AND ($this->x < $margin)) { + $this->x = $margin; + } + } + + /** + * Defines the top margin. The method can be called before creating the first page. + * @param $margin (float) The margin. + * @public + * @since 1.5 + * @see SetLeftMargin(), SetRightMargin(), SetAutoPageBreak(), SetMargins() + */ + public function SetTopMargin($margin) { + //Set top margin + $this->tMargin = $margin; + if (($this->page > 0) AND ($this->y < $margin)) { + $this->y = $margin; + } + } + + /** + * Defines the right margin. The method can be called before creating the first page. + * @param $margin (float) The margin. + * @public + * @since 1.5 + * @see SetLeftMargin(), SetTopMargin(), SetAutoPageBreak(), SetMargins() + */ + public function SetRightMargin($margin) { + $this->rMargin = $margin; + if (($this->page > 0) AND ($this->x > ($this->w - $margin))) { + $this->x = $this->w - $margin; + } + } + + /** + * Set the same internal Cell padding for top, right, bottom, left- + * @param $pad (float) internal padding. + * @public + * @since 2.1.000 (2008-01-09) + * @see getCellPaddings(), setCellPaddings() + */ + public function SetCellPadding($pad) { + if ($pad >= 0) { + $this->cell_padding['L'] = $pad; + $this->cell_padding['T'] = $pad; + $this->cell_padding['R'] = $pad; + $this->cell_padding['B'] = $pad; + } + } + + /** + * Set the internal Cell paddings. + * @param $left (float) left padding + * @param $top (float) top padding + * @param $right (float) right padding + * @param $bottom (float) bottom padding + * @public + * @since 5.9.000 (2010-10-03) + * @see getCellPaddings(), SetCellPadding() + */ + public function setCellPaddings($left='', $top='', $right='', $bottom='') { + if (($left !== '') AND ($left >= 0)) { + $this->cell_padding['L'] = $left; + } + if (($top !== '') AND ($top >= 0)) { + $this->cell_padding['T'] = $top; + } + if (($right !== '') AND ($right >= 0)) { + $this->cell_padding['R'] = $right; + } + if (($bottom !== '') AND ($bottom >= 0)) { + $this->cell_padding['B'] = $bottom; + } + } + + /** + * Get the internal Cell padding array. + * @return array of padding values + * @public + * @since 5.9.000 (2010-10-03) + * @see setCellPaddings(), SetCellPadding() + */ + public function getCellPaddings() { + return $this->cell_padding; + } + + /** + * Set the internal Cell margins. + * @param $left (float) left margin + * @param $top (float) top margin + * @param $right (float) right margin + * @param $bottom (float) bottom margin + * @public + * @since 5.9.000 (2010-10-03) + * @see getCellMargins() + */ + public function setCellMargins($left='', $top='', $right='', $bottom='') { + if (($left !== '') AND ($left >= 0)) { + $this->cell_margin['L'] = $left; + } + if (($top !== '') AND ($top >= 0)) { + $this->cell_margin['T'] = $top; + } + if (($right !== '') AND ($right >= 0)) { + $this->cell_margin['R'] = $right; + } + if (($bottom !== '') AND ($bottom >= 0)) { + $this->cell_margin['B'] = $bottom; + } + } + + /** + * Get the internal Cell margin array. + * @return array of margin values + * @public + * @since 5.9.000 (2010-10-03) + * @see setCellMargins() + */ + public function getCellMargins() { + return $this->cell_margin; + } + + /** + * Adjust the internal Cell padding array to take account of the line width. + * @param $brd (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @return array of adjustments + * @public + * @since 5.9.000 (2010-10-03) + */ + protected function adjustCellPadding($brd=0) { + if (empty($brd)) { + return; + } + if (is_string($brd)) { + // convert string to array + $slen = strlen($brd); + $newbrd = array(); + for ($i = 0; $i < $slen; ++$i) { + $newbrd[$brd[$i]] = true; + } + $brd = $newbrd; + } elseif (($brd === 1) OR ($brd === true) OR (is_numeric($brd) AND (intval($brd) > 0))) { + $brd = array('LRTB' => true); + } + if (!is_array($brd)) { + return; + } + // store current cell padding + $cp = $this->cell_padding; + // select border mode + if (isset($brd['mode'])) { + $mode = $brd['mode']; + unset($brd['mode']); + } else { + $mode = 'normal'; + } + // process borders + foreach ($brd as $border => $style) { + $line_width = $this->LineWidth; + if (is_array($style) AND isset($style['width'])) { + // get border width + $line_width = $style['width']; + } + $adj = 0; // line width inside the cell + switch ($mode) { + case 'ext': { + $adj = 0; + break; + } + case 'int': { + $adj = $line_width; + break; + } + case 'normal': + default: { + $adj = ($line_width / 2); + break; + } + } + // correct internal cell padding if required to avoid overlap between text and lines + if ((strpos($border,'T') !== false) AND ($this->cell_padding['T'] < $adj)) { + $this->cell_padding['T'] = $adj; + } + if ((strpos($border,'R') !== false) AND ($this->cell_padding['R'] < $adj)) { + $this->cell_padding['R'] = $adj; + } + if ((strpos($border,'B') !== false) AND ($this->cell_padding['B'] < $adj)) { + $this->cell_padding['B'] = $adj; + } + if ((strpos($border,'L') !== false) AND ($this->cell_padding['L'] < $adj)) { + $this->cell_padding['L'] = $adj; + } + } + return array('T' => ($this->cell_padding['T'] - $cp['T']), 'R' => ($this->cell_padding['R'] - $cp['R']), 'B' => ($this->cell_padding['B'] - $cp['B']), 'L' => ($this->cell_padding['L'] - $cp['L'])); + } + + /** + * Enables or disables the automatic page breaking mode. When enabling, the second parameter is the distance from the bottom of the page that defines the triggering limit. By default, the mode is on and the margin is 2 cm. + * @param $auto (boolean) Boolean indicating if mode should be on or off. + * @param $margin (float) Distance from the bottom of the page. + * @public + * @since 1.0 + * @see Cell(), MultiCell(), AcceptPageBreak() + */ + public function SetAutoPageBreak($auto, $margin=0) { + $this->AutoPageBreak = $auto ? true : false; + $this->bMargin = $margin; + $this->PageBreakTrigger = $this->h - $margin; + } + + /** + * Return the auto-page-break mode (true or false). + * @return boolean auto-page-break mode + * @public + * @since 5.9.088 + */ + public function getAutoPageBreak() { + return $this->AutoPageBreak; + } + + /** + * Defines the way the document is to be displayed by the viewer. + * @param $zoom (mixed) The zoom to use. It can be one of the following string values or a number indicating the zooming factor to use.
      • fullpage: displays the entire page on screen
      • fullwidth: uses maximum width of window
      • real: uses real size (equivalent to 100% zoom)
      • default: uses viewer default mode
      + * @param $layout (string) The page layout. Possible values are:
      • SinglePage Display one page at a time
      • OneColumn Display the pages in one column
      • TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left
      • TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right
      • TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left
      • TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right
      + * @param $mode (string) A name object specifying how the document should be displayed when opened:
      • UseNone Neither document outline nor thumbnail images visible
      • UseOutlines Document outline visible
      • UseThumbs Thumbnail images visible
      • FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible
      • UseOC (PDF 1.5) Optional content group panel visible
      • UseAttachments (PDF 1.6) Attachments panel visible
      + * @public + * @since 1.2 + */ + public function SetDisplayMode($zoom, $layout='SinglePage', $mode='UseNone') { + if (($zoom == 'fullpage') OR ($zoom == 'fullwidth') OR ($zoom == 'real') OR ($zoom == 'default') OR (!is_string($zoom))) { + $this->ZoomMode = $zoom; + } else { + $this->Error('Incorrect zoom display mode: '.$zoom); + } + $this->LayoutMode = TCPDF_STATIC::getPageLayoutMode($layout); + $this->PageMode = TCPDF_STATIC::getPageMode($mode); + } + + /** + * Activates or deactivates page compression. When activated, the internal representation of each page is compressed, which leads to a compression ratio of about 2 for the resulting document. Compression is on by default. + * Note: the Zlib extension is required for this feature. If not present, compression will be turned off. + * @param $compress (boolean) Boolean indicating if compression must be enabled. + * @public + * @since 1.4 + */ + public function SetCompression($compress=true) { + if (function_exists('gzcompress')) { + $this->compress = $compress ? true : false; + } else { + $this->compress = false; + } + } + + /** + * Set flag to force sRGB_IEC61966-2.1 black scaled ICC color profile for the whole document. + * @param $mode (boolean) If true force sRGB output intent. + * @public + * @since 5.9.121 (2011-09-28) + */ + public function setSRGBmode($mode=false) { + $this->force_srgb = $mode ? true : false; + } + + /** + * Turn on/off Unicode mode for document information dictionary (meta tags). + * This has effect only when unicode mode is set to false. + * @param $unicode (boolean) if true set the meta information in Unicode + * @since 5.9.027 (2010-12-01) + * @public + */ + public function SetDocInfoUnicode($unicode=true) { + $this->docinfounicode = $unicode ? true : false; + } + + /** + * Defines the title of the document. + * @param $title (string) The title. + * @public + * @since 1.2 + * @see SetAuthor(), SetCreator(), SetKeywords(), SetSubject() + */ + public function SetTitle($title) { + $this->title = $title; + } + + /** + * Defines the subject of the document. + * @param $subject (string) The subject. + * @public + * @since 1.2 + * @see SetAuthor(), SetCreator(), SetKeywords(), SetTitle() + */ + public function SetSubject($subject) { + $this->subject = $subject; + } + + /** + * Defines the author of the document. + * @param $author (string) The name of the author. + * @public + * @since 1.2 + * @see SetCreator(), SetKeywords(), SetSubject(), SetTitle() + */ + public function SetAuthor($author) { + $this->author = $author; + } + + /** + * Associates keywords with the document, generally in the form 'keyword1 keyword2 ...'. + * @param $keywords (string) The list of keywords. + * @public + * @since 1.2 + * @see SetAuthor(), SetCreator(), SetSubject(), SetTitle() + */ + public function SetKeywords($keywords) { + $this->keywords = $keywords; + } + + /** + * Defines the creator of the document. This is typically the name of the application that generates the PDF. + * @param $creator (string) The name of the creator. + * @public + * @since 1.2 + * @see SetAuthor(), SetKeywords(), SetSubject(), SetTitle() + */ + public function SetCreator($creator) { + $this->creator = $creator; + } + + /** + * Throw an exception or print an error message and die if the K_TCPDF_PARSER_THROW_EXCEPTION_ERROR constant is set to true. + * @param $msg (string) The error message + * @public + * @since 1.0 + */ + public function Error($msg) { + // unset all class variables + $this->_destroy(true); + if (defined('K_TCPDF_THROW_EXCEPTION_ERROR') AND !K_TCPDF_THROW_EXCEPTION_ERROR) { + die('TCPDF ERROR: '.$msg); + } else { + throw new Exception('TCPDF ERROR: '.$msg); + } + } + + /** + * This method begins the generation of the PDF document. + * It is not necessary to call it explicitly because AddPage() does it automatically. + * Note: no page is created by this method + * @public + * @since 1.0 + * @see AddPage(), Close() + */ + public function Open() { + $this->state = 1; + } + + /** + * Terminates the PDF document. + * It is not necessary to call this method explicitly because Output() does it automatically. + * If the document contains no page, AddPage() is called to prevent from getting an invalid document. + * @public + * @since 1.0 + * @see Open(), Output() + */ + public function Close() { + if ($this->state == 3) { + return; + } + if ($this->page == 0) { + $this->AddPage(); + } + $this->endLayer(); + if ($this->tcpdflink) { + // save current graphic settings + $gvars = $this->getGraphicVars(); + $this->setEqualColumns(); + $this->lastpage(true); + $this->SetAutoPageBreak(false); + $this->x = 0; + $this->y = $this->h - (1 / $this->k); + $this->lMargin = 0; + $this->_outSaveGraphicsState(); + $font = defined('PDF_FONT_NAME_MAIN')?PDF_FONT_NAME_MAIN:'helvetica'; + $this->SetFont($font, '', 1); + $this->setTextRenderingMode(0, false, false); + $msg = "\x50\x6f\x77\x65\x72\x65\x64\x20\x62\x79\x20\x54\x43\x50\x44\x46\x20\x28\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29"; + $lnk = "\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67"; + $this->Cell(0, 0, $msg, 0, 0, 'L', 0, $lnk, 0, false, 'D', 'B'); + $this->_outRestoreGraphicsState(); + // restore graphic settings + $this->setGraphicVars($gvars); + } + // close page + $this->endPage(); + // close document + $this->_enddoc(); + // unset all class variables (except critical ones) + $this->_destroy(false); + } + + /** + * Move pointer at the specified document page and update page dimensions. + * @param $pnum (int) page number (1 ... numpages) + * @param $resetmargins (boolean) if true reset left, right, top margins and Y position. + * @public + * @since 2.1.000 (2008-01-07) + * @see getPage(), lastpage(), getNumPages() + */ + public function setPage($pnum, $resetmargins=false) { + if (($pnum == $this->page) AND ($this->state == 2)) { + return; + } + if (($pnum > 0) AND ($pnum <= $this->numpages)) { + $this->state = 2; + // save current graphic settings + //$gvars = $this->getGraphicVars(); + $oldpage = $this->page; + $this->page = $pnum; + $this->wPt = $this->pagedim[$this->page]['w']; + $this->hPt = $this->pagedim[$this->page]['h']; + $this->w = $this->pagedim[$this->page]['wk']; + $this->h = $this->pagedim[$this->page]['hk']; + $this->tMargin = $this->pagedim[$this->page]['tm']; + $this->bMargin = $this->pagedim[$this->page]['bm']; + $this->original_lMargin = $this->pagedim[$this->page]['olm']; + $this->original_rMargin = $this->pagedim[$this->page]['orm']; + $this->AutoPageBreak = $this->pagedim[$this->page]['pb']; + $this->CurOrientation = $this->pagedim[$this->page]['or']; + $this->SetAutoPageBreak($this->AutoPageBreak, $this->bMargin); + // restore graphic settings + //$this->setGraphicVars($gvars); + if ($resetmargins) { + $this->lMargin = $this->pagedim[$this->page]['olm']; + $this->rMargin = $this->pagedim[$this->page]['orm']; + $this->SetY($this->tMargin); + } else { + // account for booklet mode + if ($this->pagedim[$this->page]['olm'] != $this->pagedim[$oldpage]['olm']) { + $deltam = $this->pagedim[$this->page]['olm'] - $this->pagedim[$this->page]['orm']; + $this->lMargin += $deltam; + $this->rMargin -= $deltam; + } + } + } else { + $this->Error('Wrong page number on setPage() function: '.$pnum); + } + } + + /** + * Reset pointer to the last document page. + * @param $resetmargins (boolean) if true reset left, right, top margins and Y position. + * @public + * @since 2.0.000 (2008-01-04) + * @see setPage(), getPage(), getNumPages() + */ + public function lastPage($resetmargins=false) { + $this->setPage($this->getNumPages(), $resetmargins); + } + + /** + * Get current document page number. + * @return int page number + * @public + * @since 2.1.000 (2008-01-07) + * @see setPage(), lastpage(), getNumPages() + */ + public function getPage() { + return $this->page; + } + + /** + * Get the total number of insered pages. + * @return int number of pages + * @public + * @since 2.1.000 (2008-01-07) + * @see setPage(), getPage(), lastpage() + */ + public function getNumPages() { + return $this->numpages; + } + + /** + * Adds a new TOC (Table Of Content) page to the document. + * @param $orientation (string) page orientation. + * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat(). + * @param $keepmargins (boolean) if true overwrites the default page margins with the current margins + * @public + * @since 5.0.001 (2010-05-06) + * @see AddPage(), startPage(), endPage(), endTOCPage() + */ + public function addTOCPage($orientation='', $format='', $keepmargins=false) { + $this->AddPage($orientation, $format, $keepmargins, true); + } + + /** + * Terminate the current TOC (Table Of Content) page + * @public + * @since 5.0.001 (2010-05-06) + * @see AddPage(), startPage(), endPage(), addTOCPage() + */ + public function endTOCPage() { + $this->endPage(true); + } + + /** + * Adds a new page to the document. If a page is already present, the Footer() method is called first to output the footer (if enabled). Then the page is added, the current position set to the top-left corner according to the left and top margins (or top-right if in RTL mode), and Header() is called to display the header (if enabled). + * The origin of the coordinate system is at the top-left corner (or top-right for RTL) and increasing ordinates go downwards. + * @param $orientation (string) page orientation. Possible values are (case insensitive):
      • P or PORTRAIT (default)
      • L or LANDSCAPE
      + * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat(). + * @param $keepmargins (boolean) if true overwrites the default page margins with the current margins + * @param $tocpage (boolean) if true set the tocpage state to true (the added page will be used to display Table Of Content). + * @public + * @since 1.0 + * @see startPage(), endPage(), addTOCPage(), endTOCPage(), getPageSizeFromFormat(), setPageFormat() + */ + public function AddPage($orientation='', $format='', $keepmargins=false, $tocpage=false) { + if ($this->inxobj) { + // we are inside an XObject template + return; + } + if (!isset($this->original_lMargin) OR $keepmargins) { + $this->original_lMargin = $this->lMargin; + } + if (!isset($this->original_rMargin) OR $keepmargins) { + $this->original_rMargin = $this->rMargin; + } + // terminate previous page + $this->endPage(); + // start new page + $this->startPage($orientation, $format, $tocpage); + } + + /** + * Terminate the current page + * @param $tocpage (boolean) if true set the tocpage state to false (end the page used to display Table Of Content). + * @public + * @since 4.2.010 (2008-11-14) + * @see AddPage(), startPage(), addTOCPage(), endTOCPage() + */ + public function endPage($tocpage=false) { + // check if page is already closed + if (($this->page == 0) OR ($this->numpages > $this->page) OR (!$this->pageopen[$this->page])) { + return; + } + // print page footer + $this->setFooter(); + // close page + $this->_endpage(); + // mark page as closed + $this->pageopen[$this->page] = false; + if ($tocpage) { + $this->tocpage = false; + } + } + + /** + * Starts a new page to the document. The page must be closed using the endPage() function. + * The origin of the coordinate system is at the top-left corner and increasing ordinates go downwards. + * @param $orientation (string) page orientation. Possible values are (case insensitive):
      • P or PORTRAIT (default)
      • L or LANDSCAPE
      + * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat(). + * @param $tocpage (boolean) if true the page is designated to contain the Table-Of-Content. + * @since 4.2.010 (2008-11-14) + * @see AddPage(), endPage(), addTOCPage(), endTOCPage(), getPageSizeFromFormat(), setPageFormat() + * @public + */ + public function startPage($orientation='', $format='', $tocpage=false) { + if ($tocpage) { + $this->tocpage = true; + } + // move page numbers of documents to be attached + if ($this->tocpage) { + // move reference to unexistent pages (used for page attachments) + // adjust outlines + $tmpoutlines = $this->outlines; + foreach ($tmpoutlines as $key => $outline) { + if (!$outline['f'] AND ($outline['p'] > $this->numpages)) { + $this->outlines[$key]['p'] = ($outline['p'] + 1); + } + } + // adjust dests + $tmpdests = $this->dests; + foreach ($tmpdests as $key => $dest) { + if (!$dest['f'] AND ($dest['p'] > $this->numpages)) { + $this->dests[$key]['p'] = ($dest['p'] + 1); + } + } + // adjust links + $tmplinks = $this->links; + foreach ($tmplinks as $key => $link) { + if (!$link['f'] AND ($link['p'] > $this->numpages)) { + $this->links[$key]['p'] = ($link['p'] + 1); + } + } + } + if ($this->numpages > $this->page) { + // this page has been already added + $this->setPage($this->page + 1); + $this->SetY($this->tMargin); + return; + } + // start a new page + if ($this->state == 0) { + $this->Open(); + } + ++$this->numpages; + $this->swapMargins($this->booklet); + // save current graphic settings + $gvars = $this->getGraphicVars(); + // start new page + $this->_beginpage($orientation, $format); + // mark page as open + $this->pageopen[$this->page] = true; + // restore graphic settings + $this->setGraphicVars($gvars); + // mark this point + $this->setPageMark(); + // print page header + $this->setHeader(); + // restore graphic settings + $this->setGraphicVars($gvars); + // mark this point + $this->setPageMark(); + // print table header (if any) + $this->setTableHeader(); + // set mark for empty page check + $this->emptypagemrk[$this->page]= $this->pagelen[$this->page]; + } + + /** + * Set start-writing mark on current page stream used to put borders and fills. + * Borders and fills are always created after content and inserted on the position marked by this method. + * This function must be called after calling Image() function for a background image. + * Background images must be always inserted before calling Multicell() or WriteHTMLCell() or WriteHTML() functions. + * @public + * @since 4.0.016 (2008-07-30) + */ + public function setPageMark() { + $this->intmrk[$this->page] = $this->pagelen[$this->page]; + $this->bordermrk[$this->page] = $this->intmrk[$this->page]; + $this->setContentMark(); + } + + /** + * Set start-writing mark on selected page. + * Borders and fills are always created after content and inserted on the position marked by this method. + * @param $page (int) page number (default is the current page) + * @protected + * @since 4.6.021 (2009-07-20) + */ + protected function setContentMark($page=0) { + if ($page <= 0) { + $page = $this->page; + } + if (isset($this->footerlen[$page])) { + $this->cntmrk[$page] = $this->pagelen[$page] - $this->footerlen[$page]; + } else { + $this->cntmrk[$page] = $this->pagelen[$page]; + } + } + + /** + * Set header data. + * @param $ln (string) header image logo + * @param $lw (string) header image logo width in mm + * @param $ht (string) string to print as title on document header + * @param $hs (string) string to print on document header + * @param $tc (array) RGB array color for text. + * @param $lc (array) RGB array color for line. + * @public + */ + public function setHeaderData($ln='', $lw=0, $ht='', $hs='', $tc=array(0,0,0), $lc=array(0,0,0)) { + $this->header_logo = $ln; + $this->header_logo_width = $lw; + $this->header_title = $ht; + $this->header_string = $hs; + $this->header_text_color = $tc; + $this->header_line_color = $lc; + } + + /** + * Set footer data. + * @param $tc (array) RGB array color for text. + * @param $lc (array) RGB array color for line. + * @public + */ + public function setFooterData($tc=array(0,0,0), $lc=array(0,0,0)) { + $this->footer_text_color = $tc; + $this->footer_line_color = $lc; + } + + /** + * Returns header data: + *
      • $ret['logo'] = logo image
      • $ret['logo_width'] = width of the image logo in user units
      • $ret['title'] = header title
      • $ret['string'] = header description string
      + * @return array() + * @public + * @since 4.0.012 (2008-07-24) + */ + public function getHeaderData() { + $ret = array(); + $ret['logo'] = $this->header_logo; + $ret['logo_width'] = $this->header_logo_width; + $ret['title'] = $this->header_title; + $ret['string'] = $this->header_string; + $ret['text_color'] = $this->header_text_color; + $ret['line_color'] = $this->header_line_color; + return $ret; + } + + /** + * Set header margin. + * (minimum distance between header and top page margin) + * @param $hm (int) distance in user units + * @public + */ + public function setHeaderMargin($hm=10) { + $this->header_margin = $hm; + } + + /** + * Returns header margin in user units. + * @return float + * @since 4.0.012 (2008-07-24) + * @public + */ + public function getHeaderMargin() { + return $this->header_margin; + } + + /** + * Set footer margin. + * (minimum distance between footer and bottom page margin) + * @param $fm (int) distance in user units + * @public + */ + public function setFooterMargin($fm=10) { + $this->footer_margin = $fm; + } + + /** + * Returns footer margin in user units. + * @return float + * @since 4.0.012 (2008-07-24) + * @public + */ + public function getFooterMargin() { + return $this->footer_margin; + } + /** + * Set a flag to print page header. + * @param $val (boolean) set to true to print the page header (default), false otherwise. + * @public + */ + public function setPrintHeader($val=true) { + $this->print_header = $val ? true : false; + } + + /** + * Set a flag to print page footer. + * @param $val (boolean) set to true to print the page footer (default), false otherwise. + * @public + */ + public function setPrintFooter($val=true) { + $this->print_footer = $val ? true : false; + } + + /** + * Return the right-bottom (or left-bottom for RTL) corner X coordinate of last inserted image + * @return float + * @public + */ + public function getImageRBX() { + return $this->img_rb_x; + } + + /** + * Return the right-bottom (or left-bottom for RTL) corner Y coordinate of last inserted image + * @return float + * @public + */ + public function getImageRBY() { + return $this->img_rb_y; + } + + /** + * Reset the xobject template used by Header() method. + * @public + */ + public function resetHeaderTemplate() { + $this->header_xobjid = false; + } + + /** + * Set a flag to automatically reset the xobject template used by Header() method at each page. + * @param $val (boolean) set to true to reset Header xobject template at each page, false otherwise. + * @public + */ + public function setHeaderTemplateAutoreset($val=true) { + $this->header_xobj_autoreset = $val ? true : false; + } + + /** + * This method is used to render the page header. + * It is automatically called by AddPage() and could be overwritten in your own inherited class. + * @public + */ + public function Header() { + if ($this->header_xobjid === false) { + // start a new XObject Template + $this->header_xobjid = $this->startTemplate($this->w, $this->tMargin); + $headerfont = $this->getHeaderFont(); + $headerdata = $this->getHeaderData(); + $this->y = $this->header_margin; + if ($this->rtl) { + $this->x = $this->w - $this->original_rMargin; + } else { + $this->x = $this->original_lMargin; + } + if (($headerdata['logo']) AND ($headerdata['logo'] != K_BLANK_IMAGE)) { + $imgtype = TCPDF_IMAGES::getImageFileType(K_PATH_IMAGES.$headerdata['logo']); + if (($imgtype == 'eps') OR ($imgtype == 'ai')) { + $this->ImageEps(K_PATH_IMAGES.$headerdata['logo'], '', '', $headerdata['logo_width']); + } elseif ($imgtype == 'svg') { + $this->ImageSVG(K_PATH_IMAGES.$headerdata['logo'], '', '', $headerdata['logo_width']); + } else { + $this->Image(K_PATH_IMAGES.$headerdata['logo'], '', '', $headerdata['logo_width']); + } + $imgy = $this->getImageRBY(); + } else { + $imgy = $this->y; + } + $cell_height = $this->getCellHeight($headerfont[2] / $this->k); + // set starting margin for text data cell + if ($this->getRTL()) { + $header_x = $this->original_rMargin + ($headerdata['logo_width'] * 1.1); + } else { + $header_x = $this->original_lMargin + ($headerdata['logo_width'] * 1.1); + } + $cw = $this->w - $this->original_lMargin - $this->original_rMargin - ($headerdata['logo_width'] * 1.1); + $this->SetTextColorArray($this->header_text_color); + // header title + $this->SetFont($headerfont[0], 'B', $headerfont[2] + 1); + $this->SetX($header_x); + $this->Cell($cw, $cell_height, $headerdata['title'], 0, 1, '', 0, '', 0); + // header string + $this->SetFont($headerfont[0], $headerfont[1], $headerfont[2]); + $this->SetX($header_x); + $this->MultiCell($cw, $cell_height, $headerdata['string'], 0, '', 0, 1, '', '', true, 0, false, true, 0, 'T', false); + // print an ending header line + $this->SetLineStyle(array('width' => 0.85 / $this->k, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $headerdata['line_color'])); + $this->SetY((2.835 / $this->k) + max($imgy, $this->y)); + if ($this->rtl) { + $this->SetX($this->original_rMargin); + } else { + $this->SetX($this->original_lMargin); + } + $this->Cell(($this->w - $this->original_lMargin - $this->original_rMargin), 0, '', 'T', 0, 'C'); + $this->endTemplate(); + } + // print header template + $x = 0; + $dx = 0; + if (!$this->header_xobj_autoreset AND $this->booklet AND (($this->page % 2) == 0)) { + // adjust margins for booklet mode + $dx = ($this->original_lMargin - $this->original_rMargin); + } + if ($this->rtl) { + $x = $this->w + $dx; + } else { + $x = 0 + $dx; + } + $this->printTemplate($this->header_xobjid, $x, 0, 0, 0, '', '', false); + if ($this->header_xobj_autoreset) { + // reset header xobject template at each page + $this->header_xobjid = false; + } + } + + /** + * This method is used to render the page footer. + * It is automatically called by AddPage() and could be overwritten in your own inherited class. + * @public + */ + public function Footer() { + $cur_y = $this->y; + $this->SetTextColorArray($this->footer_text_color); + //set style for cell border + $line_width = (0.85 / $this->k); + $this->SetLineStyle(array('width' => $line_width, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $this->footer_line_color)); + //print document barcode + $barcode = $this->getBarcode(); + if (!empty($barcode)) { + $this->Ln($line_width); + $barcode_width = round(($this->w - $this->original_lMargin - $this->original_rMargin) / 3); + $style = array( + 'position' => $this->rtl?'R':'L', + 'align' => $this->rtl?'R':'L', + 'stretch' => false, + 'fitwidth' => true, + 'cellfitalign' => '', + 'border' => false, + 'padding' => 0, + 'fgcolor' => array(0,0,0), + 'bgcolor' => false, + 'text' => false + ); + $this->write1DBarcode($barcode, 'C128', '', $cur_y + $line_width, '', (($this->footer_margin / 3) - $line_width), 0.3, $style, ''); + } + $w_page = isset($this->l['w_page']) ? $this->l['w_page'].' ' : ''; + if (empty($this->pagegroups)) { + $pagenumtxt = $w_page.$this->getAliasNumPage().' / '.$this->getAliasNbPages(); + } else { + $pagenumtxt = $w_page.$this->getPageNumGroupAlias().' / '.$this->getPageGroupAlias(); + } + $this->SetY($cur_y); + //Print page number + if ($this->getRTL()) { + $this->SetX($this->original_rMargin); + $this->Cell(0, 0, $pagenumtxt, 'T', 0, 'L'); + } else { + $this->SetX($this->original_lMargin); + $this->Cell(0, 0, $this->getAliasRightShift().$pagenumtxt, 'T', 0, 'R'); + } + } + + /** + * This method is used to render the page header. + * @protected + * @since 4.0.012 (2008-07-24) + */ + protected function setHeader() { + if (!$this->print_header OR ($this->state != 2)) { + return; + } + $this->InHeader = true; + $this->setGraphicVars($this->default_graphic_vars); + $temp_thead = $this->thead; + $temp_theadMargins = $this->theadMargins; + $lasth = $this->lasth; + $newline = $this->newline; + $this->_outSaveGraphicsState(); + $this->rMargin = $this->original_rMargin; + $this->lMargin = $this->original_lMargin; + $this->SetCellPadding(0); + //set current position + if ($this->rtl) { + $this->SetXY($this->original_rMargin, $this->header_margin); + } else { + $this->SetXY($this->original_lMargin, $this->header_margin); + } + $this->SetFont($this->header_font[0], $this->header_font[1], $this->header_font[2]); + $this->Header(); + //restore position + if ($this->rtl) { + $this->SetXY($this->original_rMargin, $this->tMargin); + } else { + $this->SetXY($this->original_lMargin, $this->tMargin); + } + $this->_outRestoreGraphicsState(); + $this->lasth = $lasth; + $this->thead = $temp_thead; + $this->theadMargins = $temp_theadMargins; + $this->newline = $newline; + $this->InHeader = false; + } + + /** + * This method is used to render the page footer. + * @protected + * @since 4.0.012 (2008-07-24) + */ + protected function setFooter() { + if ($this->state != 2) { + return; + } + $this->InFooter = true; + // save current graphic settings + $gvars = $this->getGraphicVars(); + // mark this point + $this->footerpos[$this->page] = $this->pagelen[$this->page]; + $this->_out("\n"); + if ($this->print_footer) { + $this->setGraphicVars($this->default_graphic_vars); + $this->current_column = 0; + $this->num_columns = 1; + $temp_thead = $this->thead; + $temp_theadMargins = $this->theadMargins; + $lasth = $this->lasth; + $this->_outSaveGraphicsState(); + $this->rMargin = $this->original_rMargin; + $this->lMargin = $this->original_lMargin; + $this->SetCellPadding(0); + //set current position + $footer_y = $this->h - $this->footer_margin; + if ($this->rtl) { + $this->SetXY($this->original_rMargin, $footer_y); + } else { + $this->SetXY($this->original_lMargin, $footer_y); + } + $this->SetFont($this->footer_font[0], $this->footer_font[1], $this->footer_font[2]); + $this->Footer(); + //restore position + if ($this->rtl) { + $this->SetXY($this->original_rMargin, $this->tMargin); + } else { + $this->SetXY($this->original_lMargin, $this->tMargin); + } + $this->_outRestoreGraphicsState(); + $this->lasth = $lasth; + $this->thead = $temp_thead; + $this->theadMargins = $temp_theadMargins; + } + // restore graphic settings + $this->setGraphicVars($gvars); + $this->current_column = $gvars['current_column']; + $this->num_columns = $gvars['num_columns']; + // calculate footer length + $this->footerlen[$this->page] = $this->pagelen[$this->page] - $this->footerpos[$this->page] + 1; + $this->InFooter = false; + } + + /** + * Check if we are on the page body (excluding page header and footer). + * @return true if we are not in page header nor in page footer, false otherwise. + * @protected + * @since 5.9.091 (2011-06-15) + */ + protected function inPageBody() { + return (($this->InHeader === false) AND ($this->InFooter === false)); + } + + /** + * This method is used to render the table header on new page (if any). + * @protected + * @since 4.5.030 (2009-03-25) + */ + protected function setTableHeader() { + if ($this->num_columns > 1) { + // multi column mode + return; + } + if (isset($this->theadMargins['top'])) { + // restore the original top-margin + $this->tMargin = $this->theadMargins['top']; + $this->pagedim[$this->page]['tm'] = $this->tMargin; + $this->y = $this->tMargin; + } + if (!TCPDF_STATIC::empty_string($this->thead) AND (!$this->inthead)) { + // set margins + $prev_lMargin = $this->lMargin; + $prev_rMargin = $this->rMargin; + $prev_cell_padding = $this->cell_padding; + $this->lMargin = $this->theadMargins['lmargin'] + ($this->pagedim[$this->page]['olm'] - $this->pagedim[$this->theadMargins['page']]['olm']); + $this->rMargin = $this->theadMargins['rmargin'] + ($this->pagedim[$this->page]['orm'] - $this->pagedim[$this->theadMargins['page']]['orm']); + $this->cell_padding = $this->theadMargins['cell_padding']; + if ($this->rtl) { + $this->x = $this->w - $this->rMargin; + } else { + $this->x = $this->lMargin; + } + // account for special "cell" mode + if ($this->theadMargins['cell']) { + if ($this->rtl) { + $this->x -= $this->cell_padding['R']; + } else { + $this->x += $this->cell_padding['L']; + } + } + $gvars = $this->getGraphicVars(); + if (!empty($this->theadMargins['gvars'])) { + // set the correct graphic style + $this->setGraphicVars($this->theadMargins['gvars']); + $this->rMargin = $gvars['rMargin']; + $this->lMargin = $gvars['lMargin']; + } + // print table header + $this->writeHTML($this->thead, false, false, false, false, ''); + $this->setGraphicVars($gvars); + // set new top margin to skip the table headers + if (!isset($this->theadMargins['top'])) { + $this->theadMargins['top'] = $this->tMargin; + } + // store end of header position + if (!isset($this->columns[0]['th'])) { + $this->columns[0]['th'] = array(); + } + $this->columns[0]['th']['\''.$this->page.'\''] = $this->y; + $this->tMargin = $this->y; + $this->pagedim[$this->page]['tm'] = $this->tMargin; + $this->lasth = 0; + $this->lMargin = $prev_lMargin; + $this->rMargin = $prev_rMargin; + $this->cell_padding = $prev_cell_padding; + } + } + + /** + * Returns the current page number. + * @return int page number + * @public + * @since 1.0 + * @see getAliasNbPages() + */ + public function PageNo() { + return $this->page; + } + + /** + * Returns the array of spot colors. + * @return (array) Spot colors array. + * @public + * @since 6.0.038 (2013-09-30) + */ + public function getAllSpotColors() { + return $this->spot_colors; + } + + /** + * Defines a new spot color. + * It can be expressed in RGB components or gray scale. + * The method can be called before the first page is created and the value is retained from page to page. + * @param $name (string) Full name of the spot color. + * @param $c (float) Cyan color for CMYK. Value between 0 and 100. + * @param $m (float) Magenta color for CMYK. Value between 0 and 100. + * @param $y (float) Yellow color for CMYK. Value between 0 and 100. + * @param $k (float) Key (Black) color for CMYK. Value between 0 and 100. + * @public + * @since 4.0.024 (2008-09-12) + * @see SetDrawSpotColor(), SetFillSpotColor(), SetTextSpotColor() + */ + public function AddSpotColor($name, $c, $m, $y, $k) { + if (!isset($this->spot_colors[$name])) { + $i = (1 + count($this->spot_colors)); + $this->spot_colors[$name] = array('C' => $c, 'M' => $m, 'Y' => $y, 'K' => $k, 'name' => $name, 'i' => $i); + } + } + + /** + * Set the spot color for the specified type ('draw', 'fill', 'text'). + * @param $type (string) Type of object affected by this color: ('draw', 'fill', 'text'). + * @param $name (string) Name of the spot color. + * @param $tint (float) Intensity of the color (from 0 to 100 ; 100 = full intensity by default). + * @return (string) PDF color command. + * @public + * @since 5.9.125 (2011-10-03) + */ + public function setSpotColor($type, $name, $tint=100) { + $spotcolor = TCPDF_COLORS::getSpotColor($name, $this->spot_colors); + if ($spotcolor === false) { + $this->Error('Undefined spot color: '.$name.', you must add it using the AddSpotColor() method.'); + } + $tint = (max(0, min(100, $tint)) / 100); + $pdfcolor = sprintf('/CS%d ', $this->spot_colors[$name]['i']); + switch ($type) { + case 'draw': { + $pdfcolor .= sprintf('CS %F SCN', $tint); + $this->DrawColor = $pdfcolor; + $this->strokecolor = $spotcolor; + break; + } + case 'fill': { + $pdfcolor .= sprintf('cs %F scn', $tint); + $this->FillColor = $pdfcolor; + $this->bgcolor = $spotcolor; + break; + } + case 'text': { + $pdfcolor .= sprintf('cs %F scn', $tint); + $this->TextColor = $pdfcolor; + $this->fgcolor = $spotcolor; + break; + } + } + $this->ColorFlag = ($this->FillColor != $this->TextColor); + if ($this->state == 2) { + $this->_out($pdfcolor); + } + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['spot_colors'][$name] = $this->spot_colors[$name]; + } + return $pdfcolor; + } + + /** + * Defines the spot color used for all drawing operations (lines, rectangles and cell borders). + * @param $name (string) Name of the spot color. + * @param $tint (float) Intensity of the color (from 0 to 100 ; 100 = full intensity by default). + * @public + * @since 4.0.024 (2008-09-12) + * @see AddSpotColor(), SetFillSpotColor(), SetTextSpotColor() + */ + public function SetDrawSpotColor($name, $tint=100) { + $this->setSpotColor('draw', $name, $tint); + } + + /** + * Defines the spot color used for all filling operations (filled rectangles and cell backgrounds). + * @param $name (string) Name of the spot color. + * @param $tint (float) Intensity of the color (from 0 to 100 ; 100 = full intensity by default). + * @public + * @since 4.0.024 (2008-09-12) + * @see AddSpotColor(), SetDrawSpotColor(), SetTextSpotColor() + */ + public function SetFillSpotColor($name, $tint=100) { + $this->setSpotColor('fill', $name, $tint); + } + + /** + * Defines the spot color used for text. + * @param $name (string) Name of the spot color. + * @param $tint (int) Intensity of the color (from 0 to 100 ; 100 = full intensity by default). + * @public + * @since 4.0.024 (2008-09-12) + * @see AddSpotColor(), SetDrawSpotColor(), SetFillSpotColor() + */ + public function SetTextSpotColor($name, $tint=100) { + $this->setSpotColor('text', $name, $tint); + } + + /** + * Set the color array for the specified type ('draw', 'fill', 'text'). + * It can be expressed in RGB, CMYK or GRAY SCALE components. + * The method can be called before the first page is created and the value is retained from page to page. + * @param $type (string) Type of object affected by this color: ('draw', 'fill', 'text'). + * @param $color (array) Array of colors (1=gray, 3=RGB, 4=CMYK or 5=spotcolor=CMYK+name values). + * @param $ret (boolean) If true do not send the PDF command. + * @return (string) The PDF command or empty string. + * @public + * @since 3.1.000 (2008-06-11) + */ + public function setColorArray($type, $color, $ret=false) { + if (is_array($color)) { + $color = array_values($color); + // component: grey, RGB red or CMYK cyan + $c = isset($color[0]) ? $color[0] : -1; + // component: RGB green or CMYK magenta + $m = isset($color[1]) ? $color[1] : -1; + // component: RGB blue or CMYK yellow + $y = isset($color[2]) ? $color[2] : -1; + // component: CMYK black + $k = isset($color[3]) ? $color[3] : -1; + // color name + $name = isset($color[4]) ? $color[4] : ''; + if ($c >= 0) { + return $this->setColor($type, $c, $m, $y, $k, $ret, $name); + } + } + return ''; + } + + /** + * Defines the color used for all drawing operations (lines, rectangles and cell borders). + * It can be expressed in RGB, CMYK or GRAY SCALE components. + * The method can be called before the first page is created and the value is retained from page to page. + * @param $color (array) Array of colors (1, 3 or 4 values). + * @param $ret (boolean) If true do not send the PDF command. + * @return string the PDF command + * @public + * @since 3.1.000 (2008-06-11) + * @see SetDrawColor() + */ + public function SetDrawColorArray($color, $ret=false) { + return $this->setColorArray('draw', $color, $ret); + } + + /** + * Defines the color used for all filling operations (filled rectangles and cell backgrounds). + * It can be expressed in RGB, CMYK or GRAY SCALE components. + * The method can be called before the first page is created and the value is retained from page to page. + * @param $color (array) Array of colors (1, 3 or 4 values). + * @param $ret (boolean) If true do not send the PDF command. + * @public + * @since 3.1.000 (2008-6-11) + * @see SetFillColor() + */ + public function SetFillColorArray($color, $ret=false) { + return $this->setColorArray('fill', $color, $ret); + } + + /** + * Defines the color used for text. It can be expressed in RGB components or gray scale. + * The method can be called before the first page is created and the value is retained from page to page. + * @param $color (array) Array of colors (1, 3 or 4 values). + * @param $ret (boolean) If true do not send the PDF command. + * @public + * @since 3.1.000 (2008-6-11) + * @see SetFillColor() + */ + public function SetTextColorArray($color, $ret=false) { + return $this->setColorArray('text', $color, $ret); + } + + /** + * Defines the color used by the specified type ('draw', 'fill', 'text'). + * @param $type (string) Type of object affected by this color: ('draw', 'fill', 'text'). + * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100). + * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100). + * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100). + * @param $col4 (float) KEY (BLACK) color for CMYK (0-100). + * @param $ret (boolean) If true do not send the command. + * @param $name (string) spot color name (if any) + * @return (string) The PDF command or empty string. + * @public + * @since 5.9.125 (2011-10-03) + */ + public function setColor($type, $col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') { + // set default values + if (!is_numeric($col1)) { + $col1 = 0; + } + if (!is_numeric($col2)) { + $col2 = -1; + } + if (!is_numeric($col3)) { + $col3 = -1; + } + if (!is_numeric($col4)) { + $col4 = -1; + } + // set color by case + $suffix = ''; + if (($col2 == -1) AND ($col3 == -1) AND ($col4 == -1)) { + // Grey scale + $col1 = max(0, min(255, $col1)); + $intcolor = array('G' => $col1); + $pdfcolor = sprintf('%F ', ($col1 / 255)); + $suffix = 'g'; + } elseif ($col4 == -1) { + // RGB + $col1 = max(0, min(255, $col1)); + $col2 = max(0, min(255, $col2)); + $col3 = max(0, min(255, $col3)); + $intcolor = array('R' => $col1, 'G' => $col2, 'B' => $col3); + $pdfcolor = sprintf('%F %F %F ', ($col1 / 255), ($col2 / 255), ($col3 / 255)); + $suffix = 'rg'; + } else { + $col1 = max(0, min(100, $col1)); + $col2 = max(0, min(100, $col2)); + $col3 = max(0, min(100, $col3)); + $col4 = max(0, min(100, $col4)); + if (empty($name)) { + // CMYK + $intcolor = array('C' => $col1, 'M' => $col2, 'Y' => $col3, 'K' => $col4); + $pdfcolor = sprintf('%F %F %F %F ', ($col1 / 100), ($col2 / 100), ($col3 / 100), ($col4 / 100)); + $suffix = 'k'; + } else { + // SPOT COLOR + $intcolor = array('C' => $col1, 'M' => $col2, 'Y' => $col3, 'K' => $col4, 'name' => $name); + $this->AddSpotColor($name, $col1, $col2, $col3, $col4); + $pdfcolor = $this->setSpotColor($type, $name, 100); + } + } + switch ($type) { + case 'draw': { + $pdfcolor .= strtoupper($suffix); + $this->DrawColor = $pdfcolor; + $this->strokecolor = $intcolor; + break; + } + case 'fill': { + $pdfcolor .= $suffix; + $this->FillColor = $pdfcolor; + $this->bgcolor = $intcolor; + break; + } + case 'text': { + $pdfcolor .= $suffix; + $this->TextColor = $pdfcolor; + $this->fgcolor = $intcolor; + break; + } + } + $this->ColorFlag = ($this->FillColor != $this->TextColor); + if (($type != 'text') AND ($this->state == 2)) { + if (!$ret) { + $this->_out($pdfcolor); + } + return $pdfcolor; + } + return ''; + } + + /** + * Defines the color used for all drawing operations (lines, rectangles and cell borders). It can be expressed in RGB components or gray scale. The method can be called before the first page is created and the value is retained from page to page. + * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100). + * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100). + * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100). + * @param $col4 (float) KEY (BLACK) color for CMYK (0-100). + * @param $ret (boolean) If true do not send the command. + * @param $name (string) spot color name (if any) + * @return string the PDF command + * @public + * @since 1.3 + * @see SetDrawColorArray(), SetFillColor(), SetTextColor(), Line(), Rect(), Cell(), MultiCell() + */ + public function SetDrawColor($col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') { + return $this->setColor('draw', $col1, $col2, $col3, $col4, $ret, $name); + } + + /** + * Defines the color used for all filling operations (filled rectangles and cell backgrounds). It can be expressed in RGB components or gray scale. The method can be called before the first page is created and the value is retained from page to page. + * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100). + * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100). + * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100). + * @param $col4 (float) KEY (BLACK) color for CMYK (0-100). + * @param $ret (boolean) If true do not send the command. + * @param $name (string) Spot color name (if any). + * @return (string) The PDF command. + * @public + * @since 1.3 + * @see SetFillColorArray(), SetDrawColor(), SetTextColor(), Rect(), Cell(), MultiCell() + */ + public function SetFillColor($col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') { + return $this->setColor('fill', $col1, $col2, $col3, $col4, $ret, $name); + } + + /** + * Defines the color used for text. It can be expressed in RGB components or gray scale. The method can be called before the first page is created and the value is retained from page to page. + * @param $col1 (float) GRAY level for single color, or Red color for RGB (0-255), or CYAN color for CMYK (0-100). + * @param $col2 (float) GREEN color for RGB (0-255), or MAGENTA color for CMYK (0-100). + * @param $col3 (float) BLUE color for RGB (0-255), or YELLOW color for CMYK (0-100). + * @param $col4 (float) KEY (BLACK) color for CMYK (0-100). + * @param $ret (boolean) If true do not send the command. + * @param $name (string) Spot color name (if any). + * @return (string) Empty string. + * @public + * @since 1.3 + * @see SetTextColorArray(), SetDrawColor(), SetFillColor(), Text(), Cell(), MultiCell() + */ + public function SetTextColor($col1=0, $col2=-1, $col3=-1, $col4=-1, $ret=false, $name='') { + return $this->setColor('text', $col1, $col2, $col3, $col4, $ret, $name); + } + + /** + * Returns the length of a string in user unit. A font must be selected.
      + * @param $s (string) The string whose length is to be computed + * @param $fontname (string) Family font. It can be either a name defined by AddFont() or one of the standard families. It is also possible to pass an empty string, in that case, the current family is retained. + * @param $fontstyle (string) Font style. Possible values are (case insensitive):
      • empty string: regular
      • B: bold
      • I: italic
      • U: underline
      • D: line-through
      • O: overline
      or any combination. The default value is regular. + * @param $fontsize (float) Font size in points. The default value is the current size. + * @param $getarray (boolean) if true returns an array of characters widths, if false returns the total length. + * @return mixed int total string length or array of characted widths + * @author Nicola Asuni + * @public + * @since 1.2 + */ + public function GetStringWidth($s, $fontname='', $fontstyle='', $fontsize=0, $getarray=false) { + return $this->GetArrStringWidth(TCPDF_FONTS::utf8Bidi(TCPDF_FONTS::UTF8StringToArray($s, $this->isunicode, $this->CurrentFont), $s, $this->tmprtl, $this->isunicode, $this->CurrentFont), $fontname, $fontstyle, $fontsize, $getarray); + } + + /** + * Returns the string length of an array of chars in user unit or an array of characters widths. A font must be selected.
      + * @param $sa (string) The array of chars whose total length is to be computed + * @param $fontname (string) Family font. It can be either a name defined by AddFont() or one of the standard families. It is also possible to pass an empty string, in that case, the current family is retained. + * @param $fontstyle (string) Font style. Possible values are (case insensitive):
      • empty string: regular
      • B: bold
      • I: italic
      • U: underline
      • D: line through
      • O: overline
      or any combination. The default value is regular. + * @param $fontsize (float) Font size in points. The default value is the current size. + * @param $getarray (boolean) if true returns an array of characters widths, if false returns the total length. + * @return mixed int total string length or array of characted widths + * @author Nicola Asuni + * @public + * @since 2.4.000 (2008-03-06) + */ + public function GetArrStringWidth($sa, $fontname='', $fontstyle='', $fontsize=0, $getarray=false) { + // store current values + if (!TCPDF_STATIC::empty_string($fontname)) { + $prev_FontFamily = $this->FontFamily; + $prev_FontStyle = $this->FontStyle; + $prev_FontSizePt = $this->FontSizePt; + $this->SetFont($fontname, $fontstyle, $fontsize, '', 'default', false); + } + // convert UTF-8 array to Latin1 if required + if ($this->isunicode AND (!$this->isUnicodeFont())) { + $sa = TCPDF_FONTS::UTF8ArrToLatin1Arr($sa); + } + $w = 0; // total width + $wa = array(); // array of characters widths + foreach ($sa as $ck => $char) { + // character width + $cw = $this->GetCharWidth($char, isset($sa[($ck + 1)])); + $wa[] = $cw; + $w += $cw; + } + // restore previous values + if (!TCPDF_STATIC::empty_string($fontname)) { + $this->SetFont($prev_FontFamily, $prev_FontStyle, $prev_FontSizePt, '', 'default', false); + } + if ($getarray) { + return $wa; + } + return $w; + } + + /** + * Returns the length of the char in user unit for the current font considering current stretching and spacing (tracking). + * @param $char (int) The char code whose length is to be returned + * @param $notlast (boolean) If false ignore the font-spacing. + * @return float char width + * @author Nicola Asuni + * @public + * @since 2.4.000 (2008-03-06) + */ + public function GetCharWidth($char, $notlast=true) { + // get raw width + $chw = $this->getRawCharWidth($char); + if (($this->font_spacing < 0) OR (($this->font_spacing > 0) AND $notlast)) { + // increase/decrease font spacing + $chw += $this->font_spacing; + } + if ($this->font_stretching != 100) { + // fixed stretching mode + $chw *= ($this->font_stretching / 100); + } + return $chw; + } + + /** + * Returns the length of the char in user unit for the current font. + * @param $char (int) The char code whose length is to be returned + * @return float char width + * @author Nicola Asuni + * @public + * @since 5.9.000 (2010-09-28) + */ + public function getRawCharWidth($char) { + if ($char == 173) { + // SHY character will not be printed + return (0); + } + if (isset($this->CurrentFont['cw'][$char])) { + $w = $this->CurrentFont['cw'][$char]; + } elseif (isset($this->CurrentFont['dw'])) { + // default width + $w = $this->CurrentFont['dw']; + } elseif (isset($this->CurrentFont['cw'][32])) { + // default width + $w = $this->CurrentFont['cw'][32]; + } else { + $w = 600; + } + return $this->getAbsFontMeasure($w); + } + + /** + * Returns the numbero of characters in a string. + * @param $s (string) The input string. + * @return int number of characters + * @public + * @since 2.0.0001 (2008-01-07) + */ + public function GetNumChars($s) { + if ($this->isUnicodeFont()) { + return count(TCPDF_FONTS::UTF8StringToArray($s, $this->isunicode, $this->CurrentFont)); + } + return strlen($s); + } + + /** + * Fill the list of available fonts ($this->fontlist). + * @protected + * @since 4.0.013 (2008-07-28) + */ + protected function getFontsList() { + if (($fontsdir = opendir(TCPDF_FONTS::_getfontpath())) !== false) { + while (($file = readdir($fontsdir)) !== false) { + if (substr($file, -4) == '.php') { + array_push($this->fontlist, strtolower(basename($file, '.php'))); + } + } + closedir($fontsdir); + } + } + + /** + * Returns the unicode caracter specified by the value + * @param $c (int) UTF-8 value + * @return Returns the specified character. + * @since 2.3.000 (2008-03-05) + * @public + * @deprecated + */ + public function unichr($c) { + return TCPDF_FONTS::unichr($c, $this->isunicode); + } + + /** + * Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable). + * @param $fontfile (string) Font file (full path). + * @param $fonttype (string) Font type. Leave empty for autodetect mode. Valid values are: TrueTypeUnicode, TrueType, Type1, CID0JP = CID-0 Japanese, CID0KR = CID-0 Korean, CID0CS = CID-0 Chinese Simplified, CID0CT = CID-0 Chinese Traditional. + * @param $enc (string) Name of the encoding table to use. Leave empty for default mode. Omit this parameter for TrueType Unicode and symbolic fonts like Symbol or ZapfDingBats. + * @param $flags (int) Unsigned 32-bit integer containing flags specifying various characteristics of the font (PDF32000:2008 - 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for symbol or +32 for non-symbol; +64 for italic. Fixed and Italic mode are generally autodetected so you have to set it to 32 = non-symbolic font (default) or 4 = symbolic font. + * @param $outpath (string) Output path for generated font files (must be writeable by the web server). Leave empty for default font folder. + * @param $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1). + * @param $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4. + * @param $addcbbox (boolean) If true includes the character bounding box information on the php font file. + * @return (string) TCPDF font name. + * @author Nicola Asuni + * @since 5.9.123 (2010-09-30) + * @public + * @deprecated + */ + public function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false) { + return TCPDF_FONTS::addTTFfont($fontfile, $fonttype, $enc, $flags, $outpath, $platid, $encid, $addcbbox); + } + + /** + * Imports a TrueType, Type1, core, or CID0 font and makes it available. + * It is necessary to generate a font definition file first (read /fonts/utils/README.TXT). + * The definition file (and the font file itself when embedding) must be present either in the current directory or in the one indicated by K_PATH_FONTS if the constant is defined. If it could not be found, the error "Could not include font definition file" is generated. + * @param $family (string) Font family. The name can be chosen arbitrarily. If it is a standard family name, it will override the corresponding font. + * @param $style (string) Font style. Possible values are (case insensitive):
      • empty string: regular (default)
      • B: bold
      • I: italic
      • BI or IB: bold italic
      + * @param $fontfile (string) The font definition file. By default, the name is built from the family and style, in lower case with no spaces. + * @return array containing the font data, or false in case of error. + * @param $subset (mixed) if true embedd only a subset of the font (stores only the information related to the used characters); if false embedd full font; if 'default' uses the default value set using setFontSubsetting(). This option is valid only for TrueTypeUnicode fonts. If you want to enable users to change the document, set this parameter to false. If you subset the font, the person who receives your PDF would need to have your same font in order to make changes to your PDF. The file size of the PDF would also be smaller because you are embedding only part of a font. + * @public + * @since 1.5 + * @see SetFont(), setFontSubsetting() + */ + public function AddFont($family, $style='', $fontfile='', $subset='default') { + if ($subset === 'default') { + $subset = $this->font_subsetting; + } + if ($this->pdfa_mode) { + $subset = false; + } + if (TCPDF_STATIC::empty_string($family)) { + if (!TCPDF_STATIC::empty_string($this->FontFamily)) { + $family = $this->FontFamily; + } else { + $this->Error('Empty font family'); + } + } + // move embedded styles on $style + if (substr($family, -1) == 'I') { + $style .= 'I'; + $family = substr($family, 0, -1); + } + if (substr($family, -1) == 'B') { + $style .= 'B'; + $family = substr($family, 0, -1); + } + // normalize family name + $family = strtolower($family); + if ((!$this->isunicode) AND ($family == 'arial')) { + $family = 'helvetica'; + } + if (($family == 'symbol') OR ($family == 'zapfdingbats')) { + $style = ''; + } + if ($this->pdfa_mode AND (isset($this->CoreFonts[$family]))) { + // all fonts must be embedded + $family = 'pdfa'.$family; + } + $tempstyle = strtoupper($style); + $style = ''; + // underline + if (strpos($tempstyle, 'U') !== false) { + $this->underline = true; + } else { + $this->underline = false; + } + // line-through (deleted) + if (strpos($tempstyle, 'D') !== false) { + $this->linethrough = true; + } else { + $this->linethrough = false; + } + // overline + if (strpos($tempstyle, 'O') !== false) { + $this->overline = true; + } else { + $this->overline = false; + } + // bold + if (strpos($tempstyle, 'B') !== false) { + $style .= 'B'; + } + // oblique + if (strpos($tempstyle, 'I') !== false) { + $style .= 'I'; + } + $bistyle = $style; + $fontkey = $family.$style; + $font_style = $style.($this->underline ? 'U' : '').($this->linethrough ? 'D' : '').($this->overline ? 'O' : ''); + $fontdata = array('fontkey' => $fontkey, 'family' => $family, 'style' => $font_style); + // check if the font has been already added + $fb = $this->getFontBuffer($fontkey); + if ($fb !== false) { + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['fonts'][$fontkey] = $fb['i']; + } + return $fontdata; + } + // get specified font directory (if any) + $fontdir = false; + if (!TCPDF_STATIC::empty_string($fontfile)) { + $fontdir = dirname($fontfile); + if (TCPDF_STATIC::empty_string($fontdir) OR ($fontdir == '.')) { + $fontdir = ''; + } else { + $fontdir .= '/'; + } + } + // true when the font style variation is missing + $missing_style = false; + // search and include font file + if (TCPDF_STATIC::empty_string($fontfile) OR (!@file_exists($fontfile))) { + // build a standard filenames for specified font + $tmp_fontfile = str_replace(' ', '', $family).strtolower($style).'.php'; + $fontfile = TCPDF_FONTS::getFontFullPath($tmp_fontfile, $fontdir); + if (TCPDF_STATIC::empty_string($fontfile)) { + $missing_style = true; + // try to remove the style part + $tmp_fontfile = str_replace(' ', '', $family).'.php'; + $fontfile = TCPDF_FONTS::getFontFullPath($tmp_fontfile, $fontdir); + } + } + // include font file + if (!TCPDF_STATIC::empty_string($fontfile) AND (@file_exists($fontfile))) { + include($fontfile); + } else { + $this->Error('Could not include font definition file: '.$family.''); + } + // check font parameters + if ((!isset($type)) OR (!isset($cw))) { + $this->Error('The font definition file has a bad format: '.$fontfile.''); + } + // SET default parameters + if (!isset($file) OR TCPDF_STATIC::empty_string($file)) { + $file = ''; + } + if (!isset($enc) OR TCPDF_STATIC::empty_string($enc)) { + $enc = ''; + } + if (!isset($cidinfo) OR TCPDF_STATIC::empty_string($cidinfo)) { + $cidinfo = array('Registry'=>'Adobe', 'Ordering'=>'Identity', 'Supplement'=>0); + $cidinfo['uni2cid'] = array(); + } + if (!isset($ctg) OR TCPDF_STATIC::empty_string($ctg)) { + $ctg = ''; + } + if (!isset($desc) OR TCPDF_STATIC::empty_string($desc)) { + $desc = array(); + } + if (!isset($up) OR TCPDF_STATIC::empty_string($up)) { + $up = -100; + } + if (!isset($ut) OR TCPDF_STATIC::empty_string($ut)) { + $ut = 50; + } + if (!isset($cw) OR TCPDF_STATIC::empty_string($cw)) { + $cw = array(); + } + if (!isset($dw) OR TCPDF_STATIC::empty_string($dw)) { + // set default width + if (isset($desc['MissingWidth']) AND ($desc['MissingWidth'] > 0)) { + $dw = $desc['MissingWidth']; + } elseif (isset($cw[32])) { + $dw = $cw[32]; + } else { + $dw = 600; + } + } + ++$this->numfonts; + if ($type == 'core') { + $name = $this->CoreFonts[$fontkey]; + $subset = false; + } elseif (($type == 'TrueType') OR ($type == 'Type1')) { + $subset = false; + } elseif ($type == 'TrueTypeUnicode') { + $enc = 'Identity-H'; + } elseif ($type == 'cidfont0') { + if ($this->pdfa_mode) { + $this->Error('All fonts must be embedded in PDF/A mode!'); + } + } else { + $this->Error('Unknow font type: '.$type.''); + } + // set name if unset + if (!isset($name) OR empty($name)) { + $name = $fontkey; + } + // create artificial font style variations if missing (only works with non-embedded fonts) + if (($type != 'core') AND $missing_style) { + // style variations + $styles = array('' => '', 'B' => ',Bold', 'I' => ',Italic', 'BI' => ',BoldItalic'); + $name .= $styles[$bistyle]; + // artificial bold + if (strpos($bistyle, 'B') !== false) { + if (isset($desc['StemV'])) { + // from normal to bold + $desc['StemV'] = round($desc['StemV'] * 1.75); + } else { + // bold + $desc['StemV'] = 123; + } + } + // artificial italic + if (strpos($bistyle, 'I') !== false) { + if (isset($desc['ItalicAngle'])) { + $desc['ItalicAngle'] -= 11; + } else { + $desc['ItalicAngle'] = -11; + } + if (isset($desc['Flags'])) { + $desc['Flags'] |= 64; //bit 7 + } else { + $desc['Flags'] = 64; + } + } + } + // check if the array of characters bounding boxes is defined + if (!isset($cbbox)) { + $cbbox = array(); + } + // initialize subsetchars + $subsetchars = array_fill(0, 255, true); + $this->setFontBuffer($fontkey, array('fontkey' => $fontkey, 'i' => $this->numfonts, 'type' => $type, 'name' => $name, 'desc' => $desc, 'up' => $up, 'ut' => $ut, 'cw' => $cw, 'cbbox' => $cbbox, 'dw' => $dw, 'enc' => $enc, 'cidinfo' => $cidinfo, 'file' => $file, 'ctg' => $ctg, 'subset' => $subset, 'subsetchars' => $subsetchars)); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['fonts'][$fontkey] = $this->numfonts; + } + if (isset($diff) AND (!empty($diff))) { + //Search existing encodings + $d = 0; + $nb = count($this->diffs); + for ($i=1; $i <= $nb; ++$i) { + if ($this->diffs[$i] == $diff) { + $d = $i; + break; + } + } + if ($d == 0) { + $d = $nb + 1; + $this->diffs[$d] = $diff; + } + $this->setFontSubBuffer($fontkey, 'diff', $d); + } + if (!TCPDF_STATIC::empty_string($file)) { + if (!isset($this->FontFiles[$file])) { + if ((strcasecmp($type,'TrueType') == 0) OR (strcasecmp($type, 'TrueTypeUnicode') == 0)) { + $this->FontFiles[$file] = array('length1' => $originalsize, 'fontdir' => $fontdir, 'subset' => $subset, 'fontkeys' => array($fontkey)); + } elseif ($type != 'core') { + $this->FontFiles[$file] = array('length1' => $size1, 'length2' => $size2, 'fontdir' => $fontdir, 'subset' => $subset, 'fontkeys' => array($fontkey)); + } + } else { + // update fontkeys that are sharing this font file + $this->FontFiles[$file]['subset'] = ($this->FontFiles[$file]['subset'] AND $subset); + if (!in_array($fontkey, $this->FontFiles[$file]['fontkeys'])) { + $this->FontFiles[$file]['fontkeys'][] = $fontkey; + } + } + } + return $fontdata; + } + + /** + * Sets the font used to print character strings. + * The font can be either a standard one or a font added via the AddFont() method. Standard fonts use Windows encoding cp1252 (Western Europe). + * The method can be called before the first page is created and the font is retained from page to page. + * If you just wish to change the current font size, it is simpler to call SetFontSize(). + * Note: for the standard fonts, the font metric files must be accessible. There are three possibilities for this:
      • They are in the current directory (the one where the running script lies)
      • They are in one of the directories defined by the include_path parameter
      • They are in the directory defined by the K_PATH_FONTS constant

      + * @param $family (string) Family font. It can be either a name defined by AddFont() or one of the standard Type1 families (case insensitive):
      • times (Times-Roman)
      • timesb (Times-Bold)
      • timesi (Times-Italic)
      • timesbi (Times-BoldItalic)
      • helvetica (Helvetica)
      • helveticab (Helvetica-Bold)
      • helveticai (Helvetica-Oblique)
      • helveticabi (Helvetica-BoldOblique)
      • courier (Courier)
      • courierb (Courier-Bold)
      • courieri (Courier-Oblique)
      • courierbi (Courier-BoldOblique)
      • symbol (Symbol)
      • zapfdingbats (ZapfDingbats)
      It is also possible to pass an empty string. In that case, the current family is retained. + * @param $style (string) Font style. Possible values are (case insensitive):
      • empty string: regular
      • B: bold
      • I: italic
      • U: underline
      • D: line through
      • O: overline
      or any combination. The default value is regular. Bold and italic styles do not apply to Symbol and ZapfDingbats basic fonts or other fonts when not defined. + * @param $size (float) Font size in points. The default value is the current size. If no size has been specified since the beginning of the document, the value taken is 12 + * @param $fontfile (string) The font definition file. By default, the name is built from the family and style, in lower case with no spaces. + * @param $subset (mixed) if true embedd only a subset of the font (stores only the information related to the used characters); if false embedd full font; if 'default' uses the default value set using setFontSubsetting(). This option is valid only for TrueTypeUnicode fonts. If you want to enable users to change the document, set this parameter to false. If you subset the font, the person who receives your PDF would need to have your same font in order to make changes to your PDF. The file size of the PDF would also be smaller because you are embedding only part of a font. + * @param $out (boolean) if true output the font size command, otherwise only set the font properties. + * @author Nicola Asuni + * @public + * @since 1.0 + * @see AddFont(), SetFontSize() + */ + public function SetFont($family, $style='', $size=null, $fontfile='', $subset='default', $out=true) { + //Select a font; size given in points + if ($size === null) { + $size = $this->FontSizePt; + } + if ($size < 0) { + $size = 0; + } + // try to add font (if not already added) + $fontdata = $this->AddFont($family, $style, $fontfile, $subset); + $this->FontFamily = $fontdata['family']; + $this->FontStyle = $fontdata['style']; + if (isset($this->CurrentFont['fontkey']) AND isset($this->CurrentFont['subsetchars'])) { + // save subset chars of the previous font + $this->setFontSubBuffer($this->CurrentFont['fontkey'], 'subsetchars', $this->CurrentFont['subsetchars']); + } + $this->CurrentFont = $this->getFontBuffer($fontdata['fontkey']); + $this->SetFontSize($size, $out); + } + + /** + * Defines the size of the current font. + * @param $size (float) The font size in points. + * @param $out (boolean) if true output the font size command, otherwise only set the font properties. + * @public + * @since 1.0 + * @see SetFont() + */ + public function SetFontSize($size, $out=true) { + // font size in points + $this->FontSizePt = $size; + // font size in user units + $this->FontSize = $size / $this->k; + // calculate some font metrics + if (isset($this->CurrentFont['desc']['FontBBox'])) { + $bbox = explode(' ', substr($this->CurrentFont['desc']['FontBBox'], 1, -1)); + $font_height = ((intval($bbox[3]) - intval($bbox[1])) * $size / 1000); + } else { + $font_height = $size * 1.219; + } + if (isset($this->CurrentFont['desc']['Ascent']) AND ($this->CurrentFont['desc']['Ascent'] > 0)) { + $font_ascent = ($this->CurrentFont['desc']['Ascent'] * $size / 1000); + } + if (isset($this->CurrentFont['desc']['Descent']) AND ($this->CurrentFont['desc']['Descent'] <= 0)) { + $font_descent = (- $this->CurrentFont['desc']['Descent'] * $size / 1000); + } + if (!isset($font_ascent) AND !isset($font_descent)) { + // core font + $font_ascent = 0.76 * $font_height; + $font_descent = $font_height - $font_ascent; + } elseif (!isset($font_descent)) { + $font_descent = $font_height - $font_ascent; + } elseif (!isset($font_ascent)) { + $font_ascent = $font_height - $font_descent; + } + $this->FontAscent = ($font_ascent / $this->k); + $this->FontDescent = ($font_descent / $this->k); + if ($out AND ($this->page > 0) AND (isset($this->CurrentFont['i'])) AND ($this->state == 2)) { + $this->_out(sprintf('BT /F%d %F Tf ET', $this->CurrentFont['i'], $this->FontSizePt)); + } + } + + /** + * Returns the bounding box of the current font in user units. + * @return array + * @public + * @since 5.9.152 (2012-03-23) + */ + public function getFontBBox() { + $fbbox = array(); + if (isset($this->CurrentFont['desc']['FontBBox'])) { + $tmpbbox = explode(' ', substr($this->CurrentFont['desc']['FontBBox'], 1, -1)); + $fbbox = array_map(array($this,'getAbsFontMeasure'), $tmpbbox); + } else { + // Find max width + if (isset($this->CurrentFont['desc']['MaxWidth'])) { + $maxw = $this->getAbsFontMeasure(intval($this->CurrentFont['desc']['MaxWidth'])); + } else { + $maxw = 0; + if (isset($this->CurrentFont['desc']['MissingWidth'])) { + $maxw = max($maxw, $this->CurrentFont['desc']['MissingWidth']); + } + if (isset($this->CurrentFont['desc']['AvgWidth'])) { + $maxw = max($maxw, $this->CurrentFont['desc']['AvgWidth']); + } + if (isset($this->CurrentFont['dw'])) { + $maxw = max($maxw, $this->CurrentFont['dw']); + } + foreach ($this->CurrentFont['cw'] as $char => $w) { + $maxw = max($maxw, $w); + } + if ($maxw == 0) { + $maxw = 600; + } + $maxw = $this->getAbsFontMeasure($maxw); + } + $fbbox = array(0, (0 - $this->FontDescent), $maxw, $this->FontAscent); + } + return $fbbox; + } + + /** + * Convert a relative font measure into absolute value. + * @param $s (int) Font measure. + * @return float Absolute measure. + * @since 5.9.186 (2012-09-13) + */ + public function getAbsFontMeasure($s) { + return ($s * $this->FontSize / 1000); + } + + /** + * Returns the glyph bounding box of the specified character in the current font in user units. + * @param $char (int) Input character code. + * @return mixed array(xMin, yMin, xMax, yMax) or FALSE if not defined. + * @since 5.9.186 (2012-09-13) + */ + public function getCharBBox($char) { + if (isset($this->CurrentFont['cbbox'][$char])) { + return array_map(array($this,'getAbsFontMeasure'), $this->CurrentFont['cbbox'][intval($char)]); + } + return false; + } + + /** + * Return the font descent value + * @param $font (string) font name + * @param $style (string) font style + * @param $size (float) The size (in points) + * @return int font descent + * @public + * @author Nicola Asuni + * @since 4.9.003 (2010-03-30) + */ + public function getFontDescent($font, $style='', $size=0) { + $fontdata = $this->AddFont($font, $style); + $fontinfo = $this->getFontBuffer($fontdata['fontkey']); + if (isset($fontinfo['desc']['Descent']) AND ($fontinfo['desc']['Descent'] <= 0)) { + $descent = (- $fontinfo['desc']['Descent'] * $size / 1000); + } else { + $descent = (1.219 * 0.24 * $size); + } + return ($descent / $this->k); + } + + /** + * Return the font ascent value. + * @param $font (string) font name + * @param $style (string) font style + * @param $size (float) The size (in points) + * @return int font ascent + * @public + * @author Nicola Asuni + * @since 4.9.003 (2010-03-30) + */ + public function getFontAscent($font, $style='', $size=0) { + $fontdata = $this->AddFont($font, $style); + $fontinfo = $this->getFontBuffer($fontdata['fontkey']); + if (isset($fontinfo['desc']['Ascent']) AND ($fontinfo['desc']['Ascent'] > 0)) { + $ascent = ($fontinfo['desc']['Ascent'] * $size / 1000); + } else { + $ascent = 1.219 * 0.76 * $size; + } + return ($ascent / $this->k); + } + + /** + * Return true in the character is present in the specified font. + * @param $char (mixed) Character to check (integer value or string) + * @param $font (string) Font name (family name). + * @param $style (string) Font style. + * @return (boolean) true if the char is defined, false otherwise. + * @public + * @since 5.9.153 (2012-03-28) + */ + public function isCharDefined($char, $font='', $style='') { + if (is_string($char)) { + // get character code + $char = TCPDF_FONTS::UTF8StringToArray($char, $this->isunicode, $this->CurrentFont); + $char = $char[0]; + } + if (TCPDF_STATIC::empty_string($font)) { + if (TCPDF_STATIC::empty_string($style)) { + return (isset($this->CurrentFont['cw'][intval($char)])); + } + $font = $this->FontFamily; + } + $fontdata = $this->AddFont($font, $style); + $fontinfo = $this->getFontBuffer($fontdata['fontkey']); + return (isset($fontinfo['cw'][intval($char)])); + } + + /** + * Replace missing font characters on selected font with specified substitutions. + * @param $text (string) Text to process. + * @param $font (string) Font name (family name). + * @param $style (string) Font style. + * @param $subs (array) Array of possible character substitutions. The key is the character to check (integer value) and the value is a single intege value or an array of possible substitutes. + * @return (string) Processed text. + * @public + * @since 5.9.153 (2012-03-28) + */ + public function replaceMissingChars($text, $font='', $style='', $subs=array()) { + if (empty($subs)) { + return $text; + } + if (TCPDF_STATIC::empty_string($font)) { + $font = $this->FontFamily; + } + $fontdata = $this->AddFont($font, $style); + $fontinfo = $this->getFontBuffer($fontdata['fontkey']); + $uniarr = TCPDF_FONTS::UTF8StringToArray($text, $this->isunicode, $this->CurrentFont); + foreach ($uniarr as $k => $chr) { + if (!isset($fontinfo['cw'][$chr])) { + // this character is missing on the selected font + if (isset($subs[$chr])) { + // we have available substitutions + if (is_array($subs[$chr])) { + foreach($subs[$chr] as $s) { + if (isset($fontinfo['cw'][$s])) { + $uniarr[$k] = $s; + break; + } + } + } elseif (isset($fontinfo['cw'][$subs[$chr]])) { + $uniarr[$k] = $subs[$chr]; + } + } + } + } + return TCPDF_FONTS::UniArrSubString(TCPDF_FONTS::UTF8ArrayToUniArray($uniarr, $this->isunicode)); + } + + /** + * Defines the default monospaced font. + * @param $font (string) Font name. + * @public + * @since 4.5.025 + */ + public function SetDefaultMonospacedFont($font) { + $this->default_monospaced_font = $font; + } + + /** + * Creates a new internal link and returns its identifier. An internal link is a clickable area which directs to another place within the document.
      + * The identifier can then be passed to Cell(), Write(), Image() or Link(). The destination is defined with SetLink(). + * @public + * @since 1.5 + * @see Cell(), Write(), Image(), Link(), SetLink() + */ + public function AddLink() { + // create a new internal link + $n = count($this->links) + 1; + $this->links[$n] = array('p' => 0, 'y' => 0, 'f' => false); + return $n; + } + + /** + * Defines the page and position a link points to. + * @param $link (int) The link identifier returned by AddLink() + * @param $y (float) Ordinate of target position; -1 indicates the current position. The default value is 0 (top of page) + * @param $page (int) Number of target page; -1 indicates the current page (default value). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages. + * @public + * @since 1.5 + * @see AddLink() + */ + public function SetLink($link, $y=0, $page=-1) { + $fixed = false; + if (!empty($page) AND ($page[0] == '*')) { + $page = intval(substr($page, 1)); + // this page number will not be changed when moving/add/deleting pages + $fixed = true; + } + if ($page < 0) { + $page = $this->page; + } + if ($y == -1) { + $y = $this->y; + } + $this->links[$link] = array('p' => $page, 'y' => $y, 'f' => $fixed); + } + + /** + * Puts a link on a rectangular area of the page. + * Text or image links are generally put via Cell(), Write() or Image(), but this method can be useful for instance to define a clickable area inside an image. + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $w (float) Width of the rectangle + * @param $h (float) Height of the rectangle + * @param $link (mixed) URL or identifier returned by AddLink() + * @param $spaces (int) number of spaces on the text to link + * @public + * @since 1.5 + * @see AddLink(), Annotation(), Cell(), Write(), Image() + */ + public function Link($x, $y, $w, $h, $link, $spaces=0) { + $this->Annotation($x, $y, $w, $h, $link, array('Subtype'=>'Link'), $spaces); + } + + /** + * Puts a markup annotation on a rectangular area of the page. + * !!!!THE ANNOTATION SUPPORT IS NOT YET FULLY IMPLEMENTED !!!! + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $w (float) Width of the rectangle + * @param $h (float) Height of the rectangle + * @param $text (string) annotation text or alternate content + * @param $opt (array) array of options (see section 8.4 of PDF reference 1.7). + * @param $spaces (int) number of spaces on the text to link + * @public + * @since 4.0.018 (2008-08-06) + */ + public function Annotation($x, $y, $w, $h, $text, $opt=array('Subtype'=>'Text'), $spaces=0) { + if ($this->inxobj) { + // store parameters for later use on template + $this->xobjects[$this->xobjid]['annotations'][] = array('x' => $x, 'y' => $y, 'w' => $w, 'h' => $h, 'text' => $text, 'opt' => $opt, 'spaces' => $spaces); + return; + } + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + // recalculate coordinates to account for graphic transformations + if (isset($this->transfmatrix) AND !empty($this->transfmatrix)) { + for ($i=$this->transfmatrix_key; $i > 0; --$i) { + $maxid = count($this->transfmatrix[$i]) - 1; + for ($j=$maxid; $j >= 0; --$j) { + $ctm = $this->transfmatrix[$i][$j]; + if (isset($ctm['a'])) { + $x = $x * $this->k; + $y = ($this->h - $y) * $this->k; + $w = $w * $this->k; + $h = $h * $this->k; + // top left + $xt = $x; + $yt = $y; + $x1 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e']; + $y1 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f']; + // top right + $xt = $x + $w; + $yt = $y; + $x2 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e']; + $y2 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f']; + // bottom left + $xt = $x; + $yt = $y - $h; + $x3 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e']; + $y3 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f']; + // bottom right + $xt = $x + $w; + $yt = $y - $h; + $x4 = ($ctm['a'] * $xt) + ($ctm['c'] * $yt) + $ctm['e']; + $y4 = ($ctm['b'] * $xt) + ($ctm['d'] * $yt) + $ctm['f']; + // new coordinates (rectangle area) + $x = min($x1, $x2, $x3, $x4); + $y = max($y1, $y2, $y3, $y4); + $w = (max($x1, $x2, $x3, $x4) - $x) / $this->k; + $h = ($y - min($y1, $y2, $y3, $y4)) / $this->k; + $x = $x / $this->k; + $y = $this->h - ($y / $this->k); + } + } + } + } + if ($this->page <= 0) { + $page = 1; + } else { + $page = $this->page; + } + if (!isset($this->PageAnnots[$page])) { + $this->PageAnnots[$page] = array(); + } + $this->PageAnnots[$page][] = array('n' => ++$this->n, 'x' => $x, 'y' => $y, 'w' => $w, 'h' => $h, 'txt' => $text, 'opt' => $opt, 'numspaces' => $spaces); + if (!$this->pdfa_mode) { + if ((($opt['Subtype'] == 'FileAttachment') OR ($opt['Subtype'] == 'Sound')) AND (!TCPDF_STATIC::empty_string($opt['FS'])) + AND (@file_exists($opt['FS']) OR TCPDF_STATIC::isValidURL($opt['FS'])) + AND (!isset($this->embeddedfiles[basename($opt['FS'])]))) { + $this->embeddedfiles[basename($opt['FS'])] = array('f' => ++$this->n, 'n' => ++$this->n, 'file' => $opt['FS']); + } + } + // Add widgets annotation's icons + if (isset($opt['mk']['i']) AND @file_exists($opt['mk']['i'])) { + $this->Image($opt['mk']['i'], '', '', 10, 10, '', '', '', false, 300, '', false, false, 0, false, true); + } + if (isset($opt['mk']['ri']) AND @file_exists($opt['mk']['ri'])) { + $this->Image($opt['mk']['ri'], '', '', 0, 0, '', '', '', false, 300, '', false, false, 0, false, true); + } + if (isset($opt['mk']['ix']) AND @file_exists($opt['mk']['ix'])) { + $this->Image($opt['mk']['ix'], '', '', 0, 0, '', '', '', false, 300, '', false, false, 0, false, true); + } + } + + /** + * Embedd the attached files. + * @since 4.4.000 (2008-12-07) + * @protected + * @see Annotation() + */ + protected function _putEmbeddedFiles() { + if ($this->pdfa_mode) { + // embedded files are not allowed in PDF/A mode + return; + } + reset($this->embeddedfiles); + foreach ($this->embeddedfiles as $filename => $filedata) { + $data = TCPDF_STATIC::fileGetContents($filedata['file']); + if ($data !== FALSE) { + $rawsize = strlen($data); + if ($rawsize > 0) { + // update name tree + $this->efnames[$filename] = $filedata['f'].' 0 R'; + // embedded file specification object + $out = $this->_getobj($filedata['f'])."\n"; + $out .= '<_datastring($filename, $filedata['f']).' /EF <> >>'; + $out .= "\n".'endobj'; + $this->_out($out); + // embedded file object + $filter = ''; + if ($this->compress) { + $data = gzcompress($data); + $filter = ' /Filter /FlateDecode'; + } + $stream = $this->_getrawstream($data, $filedata['n']); + $out = $this->_getobj($filedata['n'])."\n"; + $out .= '<< /Type /EmbeddedFile'.$filter.' /Length '.strlen($stream).' /Params <> >>'; + $out .= ' stream'."\n".$stream."\n".'endstream'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + } + } + + /** + * Prints a text cell at the specified position. + * This method allows to place a string precisely on the page. + * @param $x (float) Abscissa of the cell origin + * @param $y (float) Ordinate of the cell origin + * @param $txt (string) String to print + * @param $fstroke (int) outline size in user units (false = disable) + * @param $fclip (boolean) if true activate clipping mode (you must call StartTransform() before this function and StopTransform() to stop the clipping tranformation). + * @param $ffill (boolean) if true fills the text + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $ln (int) Indicates where the current position should go after the call. Possible values are:
      • 0: to the right (or left for RTL languages)
      • 1: to the beginning of the next line
      • 2: below
      Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0. + * @param $align (string) Allows to center or align the text. Possible values are:
      • L or empty string: left align (default value)
      • C: center
      • R: right align
      • J: justify
      + * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false). + * @param $link (mixed) URL or identifier returned by AddLink(). + * @param $stretch (int) font stretch mode:
      • 0 = disabled
      • 1 = horizontal scaling only if text is larger than cell width
      • 2 = forced horizontal scaling to fit cell width
      • 3 = character spacing only if text is larger than cell width
      • 4 = forced character spacing to fit cell width
      General font stretching and scaling values will be preserved when possible. + * @param $ignore_min_height (boolean) if true ignore automatic minimum height value. + * @param $calign (string) cell vertical alignment relative to the specified Y value. Possible values are:
      • T : cell top
      • A : font top
      • L : font baseline
      • D : font bottom
      • B : cell bottom
      + * @param $valign (string) text vertical alignment inside the cell. Possible values are:
      • T : top
      • C : center
      • B : bottom
      + * @param $rtloff (boolean) if true uses the page top-left corner as origin of axis for $x and $y initial position. + * @public + * @since 1.0 + * @see Cell(), Write(), MultiCell(), WriteHTML(), WriteHTMLCell() + */ + public function Text($x, $y, $txt, $fstroke=false, $fclip=false, $ffill=true, $border=0, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M', $rtloff=false) { + $textrendermode = $this->textrendermode; + $textstrokewidth = $this->textstrokewidth; + $this->setTextRenderingMode($fstroke, $ffill, $fclip); + $this->SetXY($x, $y, $rtloff); + $this->Cell(0, 0, $txt, $border, $ln, $align, $fill, $link, $stretch, $ignore_min_height, $calign, $valign); + // restore previous rendering mode + $this->textrendermode = $textrendermode; + $this->textstrokewidth = $textstrokewidth; + } + + /** + * Whenever a page break condition is met, the method is called, and the break is issued or not depending on the returned value. + * The default implementation returns a value according to the mode selected by SetAutoPageBreak().
      + * This method is called automatically and should not be called directly by the application. + * @return boolean + * @public + * @since 1.4 + * @see SetAutoPageBreak() + */ + public function AcceptPageBreak() { + if ($this->num_columns > 1) { + // multi column mode + if ($this->current_column < ($this->num_columns - 1)) { + // go to next column + $this->selectColumn($this->current_column + 1); + } elseif ($this->AutoPageBreak) { + // add a new page + $this->AddPage(); + // set first column + $this->selectColumn(0); + } + // avoid page breaking from checkPageBreak() + return false; + } + return $this->AutoPageBreak; + } + + /** + * Add page if needed. + * @param $h (float) Cell height. Default value: 0. + * @param $y (mixed) starting y position, leave empty for current position. + * @param $addpage (boolean) if true add a page, otherwise only return the true/false state + * @return boolean true in case of page break, false otherwise. + * @since 3.2.000 (2008-07-01) + * @protected + */ + protected function checkPageBreak($h=0, $y='', $addpage=true) { + if (TCPDF_STATIC::empty_string($y)) { + $y = $this->y; + } + $current_page = $this->page; + if ((($y + $h) > $this->PageBreakTrigger) AND ($this->inPageBody()) AND ($this->AcceptPageBreak())) { + if ($addpage) { + //Automatic page break + $x = $this->x; + $this->AddPage($this->CurOrientation); + $this->y = $this->tMargin; + $oldpage = $this->page - 1; + if ($this->rtl) { + if ($this->pagedim[$this->page]['orm'] != $this->pagedim[$oldpage]['orm']) { + $this->x = $x - ($this->pagedim[$this->page]['orm'] - $this->pagedim[$oldpage]['orm']); + } else { + $this->x = $x; + } + } else { + if ($this->pagedim[$this->page]['olm'] != $this->pagedim[$oldpage]['olm']) { + $this->x = $x + ($this->pagedim[$this->page]['olm'] - $this->pagedim[$oldpage]['olm']); + } else { + $this->x = $x; + } + } + } + return true; + } + if ($current_page != $this->page) { + // account for columns mode + return true; + } + return false; + } + + /** + * Prints a cell (rectangular area) with optional borders, background color and character string. The upper-left corner of the cell corresponds to the current position. The text can be aligned or centered. After the call, the current position moves to the right or to the next line. It is possible to put a link on the text.
      + * If automatic page breaking is enabled and the cell goes beyond the limit, a page break is done before outputting. + * @param $w (float) Cell width. If 0, the cell extends up to the right margin. + * @param $h (float) Cell height. Default value: 0. + * @param $txt (string) String to print. Default value: empty string. + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $ln (int) Indicates where the current position should go after the call. Possible values are:
      • 0: to the right (or left for RTL languages)
      • 1: to the beginning of the next line
      • 2: below
      Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0. + * @param $align (string) Allows to center or align the text. Possible values are:
      • L or empty string: left align (default value)
      • C: center
      • R: right align
      • J: justify
      + * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false). + * @param $link (mixed) URL or identifier returned by AddLink(). + * @param $stretch (int) font stretch mode:
      • 0 = disabled
      • 1 = horizontal scaling only if text is larger than cell width
      • 2 = forced horizontal scaling to fit cell width
      • 3 = character spacing only if text is larger than cell width
      • 4 = forced character spacing to fit cell width
      General font stretching and scaling values will be preserved when possible. + * @param $ignore_min_height (boolean) if true ignore automatic minimum height value. + * @param $calign (string) cell vertical alignment relative to the specified Y value. Possible values are:
      • T : cell top
      • C : center
      • B : cell bottom
      • A : font top
      • L : font baseline
      • D : font bottom
      + * @param $valign (string) text vertical alignment inside the cell. Possible values are:
      • T : top
      • C : center
      • B : bottom
      + * @public + * @since 1.0 + * @see SetFont(), SetDrawColor(), SetFillColor(), SetTextColor(), SetLineWidth(), AddLink(), Ln(), MultiCell(), Write(), SetAutoPageBreak() + */ + public function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M') { + $prev_cell_margin = $this->cell_margin; + $prev_cell_padding = $this->cell_padding; + $this->adjustCellPadding($border); + if (!$ignore_min_height) { + $min_cell_height = $this->getCellHeight($this->FontSize); + if ($h < $min_cell_height) { + $h = $min_cell_height; + } + } + $this->checkPageBreak($h + $this->cell_margin['T'] + $this->cell_margin['B']); + // apply text shadow if enabled + if ($this->txtshadow['enabled']) { + // save data + $x = $this->x; + $y = $this->y; + $bc = $this->bgcolor; + $fc = $this->fgcolor; + $sc = $this->strokecolor; + $alpha = $this->alpha; + // print shadow + $this->x += $this->txtshadow['depth_w']; + $this->y += $this->txtshadow['depth_h']; + $this->SetFillColorArray($this->txtshadow['color']); + $this->SetTextColorArray($this->txtshadow['color']); + $this->SetDrawColorArray($this->txtshadow['color']); + if ($this->txtshadow['opacity'] != $alpha['CA']) { + $this->setAlpha($this->txtshadow['opacity'], $this->txtshadow['blend_mode']); + } + if ($this->state == 2) { + $this->_out($this->getCellCode($w, $h, $txt, $border, $ln, $align, $fill, $link, $stretch, true, $calign, $valign)); + } + //restore data + $this->x = $x; + $this->y = $y; + $this->SetFillColorArray($bc); + $this->SetTextColorArray($fc); + $this->SetDrawColorArray($sc); + if ($this->txtshadow['opacity'] != $alpha['CA']) { + $this->setAlpha($alpha['CA'], $alpha['BM'], $alpha['ca'], $alpha['AIS']); + } + } + if ($this->state == 2) { + $this->_out($this->getCellCode($w, $h, $txt, $border, $ln, $align, $fill, $link, $stretch, true, $calign, $valign)); + } + $this->cell_padding = $prev_cell_padding; + $this->cell_margin = $prev_cell_margin; + } + + /** + * Returns the PDF string code to print a cell (rectangular area) with optional borders, background color and character string. The upper-left corner of the cell corresponds to the current position. The text can be aligned or centered. After the call, the current position moves to the right or to the next line. It is possible to put a link on the text.
      + * If automatic page breaking is enabled and the cell goes beyond the limit, a page break is done before outputting. + * @param $w (float) Cell width. If 0, the cell extends up to the right margin. + * @param $h (float) Cell height. Default value: 0. + * @param $txt (string) String to print. Default value: empty string. + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $ln (int) Indicates where the current position should go after the call. Possible values are:
      • 0: to the right (or left for RTL languages)
      • 1: to the beginning of the next line
      • 2: below
      Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0. + * @param $align (string) Allows to center or align the text. Possible values are:
      • L or empty string: left align (default value)
      • C: center
      • R: right align
      • J: justify
      + * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false). + * @param $link (mixed) URL or identifier returned by AddLink(). + * @param $stretch (int) font stretch mode:
      • 0 = disabled
      • 1 = horizontal scaling only if text is larger than cell width
      • 2 = forced horizontal scaling to fit cell width
      • 3 = character spacing only if text is larger than cell width
      • 4 = forced character spacing to fit cell width
      General font stretching and scaling values will be preserved when possible. + * @param $ignore_min_height (boolean) if true ignore automatic minimum height value. + * @param $calign (string) cell vertical alignment relative to the specified Y value. Possible values are:
      • T : cell top
      • C : center
      • B : cell bottom
      • A : font top
      • L : font baseline
      • D : font bottom
      + * @param $valign (string) text vertical alignment inside the cell. Possible values are:
      • T : top
      • M : middle
      • B : bottom
      + * @return string containing cell code + * @protected + * @since 1.0 + * @see Cell() + */ + protected function getCellCode($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='', $stretch=0, $ignore_min_height=false, $calign='T', $valign='M') { + // replace 'NO-BREAK SPACE' (U+00A0) character with a simple space + $txt = str_replace(TCPDF_FONTS::unichr(160, $this->isunicode), ' ', $txt); + $prev_cell_margin = $this->cell_margin; + $prev_cell_padding = $this->cell_padding; + $txt = TCPDF_STATIC::removeSHY($txt, $this->isunicode); + $rs = ''; //string to be returned + $this->adjustCellPadding($border); + if (!$ignore_min_height) { + $min_cell_height = $this->getCellHeight($this->FontSize); + if ($h < $min_cell_height) { + $h = $min_cell_height; + } + } + $k = $this->k; + // check page for no-write regions and adapt page margins if necessary + list($this->x, $this->y) = $this->checkPageRegions($h, $this->x, $this->y); + if ($this->rtl) { + $x = $this->x - $this->cell_margin['R']; + } else { + $x = $this->x + $this->cell_margin['L']; + } + $y = $this->y + $this->cell_margin['T']; + $prev_font_stretching = $this->font_stretching; + $prev_font_spacing = $this->font_spacing; + // cell vertical alignment + switch ($calign) { + case 'A': { + // font top + switch ($valign) { + case 'T': { + // top + $y -= $this->cell_padding['T']; + break; + } + case 'B': { + // bottom + $y -= ($h - $this->cell_padding['B'] - $this->FontAscent - $this->FontDescent); + break; + } + default: + case 'C': + case 'M': { + // center + $y -= (($h - $this->FontAscent - $this->FontDescent) / 2); + break; + } + } + break; + } + case 'L': { + // font baseline + switch ($valign) { + case 'T': { + // top + $y -= ($this->cell_padding['T'] + $this->FontAscent); + break; + } + case 'B': { + // bottom + $y -= ($h - $this->cell_padding['B'] - $this->FontDescent); + break; + } + default: + case 'C': + case 'M': { + // center + $y -= (($h + $this->FontAscent - $this->FontDescent) / 2); + break; + } + } + break; + } + case 'D': { + // font bottom + switch ($valign) { + case 'T': { + // top + $y -= ($this->cell_padding['T'] + $this->FontAscent + $this->FontDescent); + break; + } + case 'B': { + // bottom + $y -= ($h - $this->cell_padding['B']); + break; + } + default: + case 'C': + case 'M': { + // center + $y -= (($h + $this->FontAscent + $this->FontDescent) / 2); + break; + } + } + break; + } + case 'B': { + // cell bottom + $y -= $h; + break; + } + case 'C': + case 'M': { + // cell center + $y -= ($h / 2); + break; + } + default: + case 'T': { + // cell top + break; + } + } + // text vertical alignment + switch ($valign) { + case 'T': { + // top + $yt = $y + $this->cell_padding['T']; + break; + } + case 'B': { + // bottom + $yt = $y + $h - $this->cell_padding['B'] - $this->FontAscent - $this->FontDescent; + break; + } + default: + case 'C': + case 'M': { + // center + $yt = $y + (($h - $this->FontAscent - $this->FontDescent) / 2); + break; + } + } + $basefonty = $yt + $this->FontAscent; + if (TCPDF_STATIC::empty_string($w) OR ($w <= 0)) { + if ($this->rtl) { + $w = $x - $this->lMargin; + } else { + $w = $this->w - $this->rMargin - $x; + } + } + $s = ''; + // fill and borders + if (is_string($border) AND (strlen($border) == 4)) { + // full border + $border = 1; + } + if ($fill OR ($border == 1)) { + if ($fill) { + $op = ($border == 1) ? 'B' : 'f'; + } else { + $op = 'S'; + } + if ($this->rtl) { + $xk = (($x - $w) * $k); + } else { + $xk = ($x * $k); + } + $s .= sprintf('%F %F %F %F re %s ', $xk, (($this->h - $y) * $k), ($w * $k), (-$h * $k), $op); + } + // draw borders + $s .= $this->getCellBorder($x, $y, $w, $h, $border); + if ($txt != '') { + $txt2 = $txt; + if ($this->isunicode) { + if (($this->CurrentFont['type'] == 'core') OR ($this->CurrentFont['type'] == 'TrueType') OR ($this->CurrentFont['type'] == 'Type1')) { + $txt2 = TCPDF_FONTS::UTF8ToLatin1($txt2, $this->isunicode, $this->CurrentFont); + } else { + $unicode = TCPDF_FONTS::UTF8StringToArray($txt, $this->isunicode, $this->CurrentFont); // array of UTF-8 unicode values + $unicode = TCPDF_FONTS::utf8Bidi($unicode, '', $this->tmprtl, $this->isunicode, $this->CurrentFont); + // replace thai chars (if any) + if (defined('K_THAI_TOPCHARS') AND (K_THAI_TOPCHARS == true)) { + // number of chars + $numchars = count($unicode); + // po pla, for far, for fan + $longtail = array(0x0e1b, 0x0e1d, 0x0e1f); + // do chada, to patak + $lowtail = array(0x0e0e, 0x0e0f); + // mai hun arkad, sara i, sara ii, sara ue, sara uee + $upvowel = array(0x0e31, 0x0e34, 0x0e35, 0x0e36, 0x0e37); + // mai ek, mai tho, mai tri, mai chattawa, karan + $tonemark = array(0x0e48, 0x0e49, 0x0e4a, 0x0e4b, 0x0e4c); + // sara u, sara uu, pinthu + $lowvowel = array(0x0e38, 0x0e39, 0x0e3a); + $output = array(); + for ($i = 0; $i < $numchars; $i++) { + if (($unicode[$i] >= 0x0e00) && ($unicode[$i] <= 0x0e5b)) { + $ch0 = $unicode[$i]; + $ch1 = ($i > 0) ? $unicode[($i - 1)] : 0; + $ch2 = ($i > 1) ? $unicode[($i - 2)] : 0; + $chn = ($i < ($numchars - 1)) ? $unicode[($i + 1)] : 0; + if (in_array($ch0, $tonemark)) { + if ($chn == 0x0e33) { + // sara um + if (in_array($ch1, $longtail)) { + // tonemark at upper left + $output[] = $this->replaceChar($ch0, (0xf713 + $ch0 - 0x0e48)); + } else { + // tonemark at upper right (normal position) + $output[] = $ch0; + } + } elseif (in_array($ch1, $longtail) OR (in_array($ch2, $longtail) AND in_array($ch1, $lowvowel))) { + // tonemark at lower left + $output[] = $this->replaceChar($ch0, (0xf705 + $ch0 - 0x0e48)); + } elseif (in_array($ch1, $upvowel)) { + if (in_array($ch2, $longtail)) { + // tonemark at upper left + $output[] = $this->replaceChar($ch0, (0xf713 + $ch0 - 0x0e48)); + } else { + // tonemark at upper right (normal position) + $output[] = $ch0; + } + } else { + // tonemark at lower right + $output[] = $this->replaceChar($ch0, (0xf70a + $ch0 - 0x0e48)); + } + } elseif (($ch0 == 0x0e33) AND (in_array($ch1, $longtail) OR (in_array($ch2, $longtail) AND in_array($ch1, $tonemark)))) { + // add lower left nikhahit and sara aa + if ($this->isCharDefined(0xf711) AND $this->isCharDefined(0x0e32)) { + $output[] = 0xf711; + $this->CurrentFont['subsetchars'][0xf711] = true; + $output[] = 0x0e32; + $this->CurrentFont['subsetchars'][0x0e32] = true; + } else { + $output[] = $ch0; + } + } elseif (in_array($ch1, $longtail)) { + if ($ch0 == 0x0e31) { + // lower left mai hun arkad + $output[] = $this->replaceChar($ch0, 0xf710); + } elseif (in_array($ch0, $upvowel)) { + // lower left + $output[] = $this->replaceChar($ch0, (0xf701 + $ch0 - 0x0e34)); + } elseif ($ch0 == 0x0e47) { + // lower left mai tai koo + $output[] = $this->replaceChar($ch0, 0xf712); + } else { + // normal character + $output[] = $ch0; + } + } elseif (in_array($ch1, $lowtail) AND in_array($ch0, $lowvowel)) { + // lower vowel + $output[] = $this->replaceChar($ch0, (0xf718 + $ch0 - 0x0e38)); + } elseif (($ch0 == 0x0e0d) AND in_array($chn, $lowvowel)) { + // yo ying without lower part + $output[] = $this->replaceChar($ch0, 0xf70f); + } elseif (($ch0 == 0x0e10) AND in_array($chn, $lowvowel)) { + // tho santan without lower part + $output[] = $this->replaceChar($ch0, 0xf700); + } else { + $output[] = $ch0; + } + } else { + // non-thai character + $output[] = $unicode[$i]; + } + } + $unicode = $output; + // update font subsetchars + $this->setFontSubBuffer($this->CurrentFont['fontkey'], 'subsetchars', $this->CurrentFont['subsetchars']); + } // end of K_THAI_TOPCHARS + $txt2 = TCPDF_FONTS::arrUTF8ToUTF16BE($unicode, false); + } + } + $txt2 = TCPDF_STATIC::_escape($txt2); + // get current text width (considering general font stretching and spacing) + $txwidth = $this->GetStringWidth($txt); + $width = $txwidth; + // check for stretch mode + if ($stretch > 0) { + // calculate ratio between cell width and text width + if ($width <= 0) { + $ratio = 1; + } else { + $ratio = (($w - $this->cell_padding['L'] - $this->cell_padding['R']) / $width); + } + // check if stretching is required + if (($ratio < 1) OR (($ratio > 1) AND (($stretch % 2) == 0))) { + // the text will be stretched to fit cell width + if ($stretch > 2) { + // set new character spacing + $this->font_spacing += ($w - $this->cell_padding['L'] - $this->cell_padding['R'] - $width) / (max(($this->GetNumChars($txt) - 1), 1) * ($this->font_stretching / 100)); + } else { + // set new horizontal stretching + $this->font_stretching *= $ratio; + } + // recalculate text width (the text fills the entire cell) + $width = $w - $this->cell_padding['L'] - $this->cell_padding['R']; + // reset alignment + $align = ''; + } + } + if ($this->font_stretching != 100) { + // apply font stretching + $rs .= sprintf('BT %F Tz ET ', $this->font_stretching); + } + if ($this->font_spacing != 0) { + // increase/decrease font spacing + $rs .= sprintf('BT %F Tc ET ', ($this->font_spacing * $this->k)); + } + if ($this->ColorFlag AND ($this->textrendermode < 4)) { + $s .= 'q '.$this->TextColor.' '; + } + // rendering mode + $s .= sprintf('BT %d Tr %F w ET ', $this->textrendermode, ($this->textstrokewidth * $this->k)); + // count number of spaces + $ns = substr_count($txt, chr(32)); + // Justification + $spacewidth = 0; + if (($align == 'J') AND ($ns > 0)) { + if ($this->isUnicodeFont()) { + // get string width without spaces + $width = $this->GetStringWidth(str_replace(' ', '', $txt)); + // calculate average space width + $spacewidth = -1000 * ($w - $width - $this->cell_padding['L'] - $this->cell_padding['R']) / ($ns?$ns:1) / ($this->FontSize?$this->FontSize:1); + if ($this->font_stretching != 100) { + // word spacing is affected by stretching + $spacewidth /= ($this->font_stretching / 100); + } + // set word position to be used with TJ operator + $txt2 = str_replace(chr(0).chr(32), ') '.sprintf('%F', $spacewidth).' (', $txt2); + $unicode_justification = true; + } else { + // get string width + $width = $txwidth; + // new space width + $spacewidth = (($w - $width - $this->cell_padding['L'] - $this->cell_padding['R']) / ($ns?$ns:1)) * $this->k; + if ($this->font_stretching != 100) { + // word spacing (Tw) is affected by stretching + $spacewidth /= ($this->font_stretching / 100); + } + // set word spacing + $rs .= sprintf('BT %F Tw ET ', $spacewidth); + } + $width = $w - $this->cell_padding['L'] - $this->cell_padding['R']; + } + // replace carriage return characters + $txt2 = str_replace("\r", ' ', $txt2); + switch ($align) { + case 'C': { + $dx = ($w - $width) / 2; + break; + } + case 'R': { + if ($this->rtl) { + $dx = $this->cell_padding['R']; + } else { + $dx = $w - $width - $this->cell_padding['R']; + } + break; + } + case 'L': { + if ($this->rtl) { + $dx = $w - $width - $this->cell_padding['L']; + } else { + $dx = $this->cell_padding['L']; + } + break; + } + case 'J': + default: { + if ($this->rtl) { + $dx = $this->cell_padding['R']; + } else { + $dx = $this->cell_padding['L']; + } + break; + } + } + if ($this->rtl) { + $xdx = $x - $dx - $width; + } else { + $xdx = $x + $dx; + } + $xdk = $xdx * $k; + // print text + $s .= sprintf('BT %F %F Td [(%s)] TJ ET', $xdk, (($this->h - $basefonty) * $k), $txt2); + if (isset($uniblock)) { + // print overlapping characters as separate string + $xshift = 0; // horizontal shift + $ty = (($this->h - $basefonty + (0.2 * $this->FontSize)) * $k); + $spw = (($w - $txwidth - $this->cell_padding['L'] - $this->cell_padding['R']) / ($ns?$ns:1)); + foreach ($uniblock as $uk => $uniarr) { + if (($uk % 2) == 0) { + // x space to skip + if ($spacewidth != 0) { + // justification shift + $xshift += (count(array_keys($uniarr, 32)) * $spw); + } + $xshift += $this->GetArrStringWidth($uniarr); // + shift justification + } else { + // character to print + $topchr = TCPDF_FONTS::arrUTF8ToUTF16BE($uniarr, false); + $topchr = TCPDF_STATIC::_escape($topchr); + $s .= sprintf(' BT %F %F Td [(%s)] TJ ET', ($xdk + ($xshift * $k)), $ty, $topchr); + } + } + } + if ($this->underline) { + $s .= ' '.$this->_dounderlinew($xdx, $basefonty, $width); + } + if ($this->linethrough) { + $s .= ' '.$this->_dolinethroughw($xdx, $basefonty, $width); + } + if ($this->overline) { + $s .= ' '.$this->_dooverlinew($xdx, $basefonty, $width); + } + if ($this->ColorFlag AND ($this->textrendermode < 4)) { + $s .= ' Q'; + } + if ($link) { + $this->Link($xdx, $yt, $width, ($this->FontAscent + $this->FontDescent), $link, $ns); + } + } + // output cell + if ($s) { + // output cell + $rs .= $s; + if ($this->font_spacing != 0) { + // reset font spacing mode + $rs .= ' BT 0 Tc ET'; + } + if ($this->font_stretching != 100) { + // reset font stretching mode + $rs .= ' BT 100 Tz ET'; + } + } + // reset word spacing + if (!$this->isUnicodeFont() AND ($align == 'J')) { + $rs .= ' BT 0 Tw ET'; + } + // reset stretching and spacing + $this->font_stretching = $prev_font_stretching; + $this->font_spacing = $prev_font_spacing; + $this->lasth = $h; + if ($ln > 0) { + //Go to the beginning of the next line + $this->y = $y + $h + $this->cell_margin['B']; + if ($ln == 1) { + if ($this->rtl) { + $this->x = $this->w - $this->rMargin; + } else { + $this->x = $this->lMargin; + } + } + } else { + // go left or right by case + if ($this->rtl) { + $this->x = $x - $w - $this->cell_margin['L']; + } else { + $this->x = $x + $w + $this->cell_margin['R']; + } + } + $gstyles = ''.$this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor.' '.$this->FillColor."\n"; + $rs = $gstyles.$rs; + $this->cell_padding = $prev_cell_padding; + $this->cell_margin = $prev_cell_margin; + return $rs; + } + + /** + * Replace a char if is defined on the current font. + * @param $oldchar (int) Integer code (unicode) of the character to replace. + * @param $newchar (int) Integer code (unicode) of the new character. + * @return int the replaced char or the old char in case the new char i not defined + * @protected + * @since 5.9.167 (2012-06-22) + */ + protected function replaceChar($oldchar, $newchar) { + if ($this->isCharDefined($newchar)) { + // add the new char on the subset list + $this->CurrentFont['subsetchars'][$newchar] = true; + // return the new character + return $newchar; + } + // return the old char + return $oldchar; + } + + /** + * Returns the code to draw the cell border + * @param $x (float) X coordinate. + * @param $y (float) Y coordinate. + * @param $w (float) Cell width. + * @param $h (float) Cell height. + * @param $brd (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @return string containing cell border code + * @protected + * @see SetLineStyle() + * @since 5.7.000 (2010-08-02) + */ + protected function getCellBorder($x, $y, $w, $h, $brd) { + $s = ''; // string to be returned + if (empty($brd)) { + return $s; + } + if ($brd == 1) { + $brd = array('LRTB' => true); + } + // calculate coordinates for border + $k = $this->k; + if ($this->rtl) { + $xeL = ($x - $w) * $k; + $xeR = $x * $k; + } else { + $xeL = $x * $k; + $xeR = ($x + $w) * $k; + } + $yeL = (($this->h - ($y + $h)) * $k); + $yeT = (($this->h - $y) * $k); + $xeT = $xeL; + $xeB = $xeR; + $yeR = $yeT; + $yeB = $yeL; + if (is_string($brd)) { + // convert string to array + $slen = strlen($brd); + $newbrd = array(); + for ($i = 0; $i < $slen; ++$i) { + $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter'); + } + $brd = $newbrd; + } + if (isset($brd['mode'])) { + $mode = $brd['mode']; + unset($brd['mode']); + } else { + $mode = 'normal'; + } + foreach ($brd as $border => $style) { + if (is_array($style) AND !empty($style)) { + // apply border style + $prev_style = $this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor.' '; + $s .= $this->SetLineStyle($style, true)."\n"; + } + switch ($mode) { + case 'ext': { + $off = (($this->LineWidth / 2) * $k); + $xL = $xeL - $off; + $xR = $xeR + $off; + $yT = $yeT + $off; + $yL = $yeL - $off; + $xT = $xL; + $xB = $xR; + $yR = $yT; + $yB = $yL; + $w += $this->LineWidth; + $h += $this->LineWidth; + break; + } + case 'int': { + $off = ($this->LineWidth / 2) * $k; + $xL = $xeL + $off; + $xR = $xeR - $off; + $yT = $yeT - $off; + $yL = $yeL + $off; + $xT = $xL; + $xB = $xR; + $yR = $yT; + $yB = $yL; + $w -= $this->LineWidth; + $h -= $this->LineWidth; + break; + } + case 'normal': + default: { + $xL = $xeL; + $xT = $xeT; + $xB = $xeB; + $xR = $xeR; + $yL = $yeL; + $yT = $yeT; + $yB = $yeB; + $yR = $yeR; + break; + } + } + // draw borders by case + if (strlen($border) == 4) { + $s .= sprintf('%F %F %F %F re S ', $xT, $yT, ($w * $k), (-$h * $k)); + } elseif (strlen($border) == 3) { + if (strpos($border,'B') === false) { // LTR + $s .= sprintf('%F %F m ', $xL, $yL); + $s .= sprintf('%F %F l ', $xT, $yT); + $s .= sprintf('%F %F l ', $xR, $yR); + $s .= sprintf('%F %F l ', $xB, $yB); + $s .= 'S '; + } elseif (strpos($border,'L') === false) { // TRB + $s .= sprintf('%F %F m ', $xT, $yT); + $s .= sprintf('%F %F l ', $xR, $yR); + $s .= sprintf('%F %F l ', $xB, $yB); + $s .= sprintf('%F %F l ', $xL, $yL); + $s .= 'S '; + } elseif (strpos($border,'T') === false) { // RBL + $s .= sprintf('%F %F m ', $xR, $yR); + $s .= sprintf('%F %F l ', $xB, $yB); + $s .= sprintf('%F %F l ', $xL, $yL); + $s .= sprintf('%F %F l ', $xT, $yT); + $s .= 'S '; + } elseif (strpos($border,'R') === false) { // BLT + $s .= sprintf('%F %F m ', $xB, $yB); + $s .= sprintf('%F %F l ', $xL, $yL); + $s .= sprintf('%F %F l ', $xT, $yT); + $s .= sprintf('%F %F l ', $xR, $yR); + $s .= 'S '; + } + } elseif (strlen($border) == 2) { + if ((strpos($border,'L') !== false) AND (strpos($border,'T') !== false)) { // LT + $s .= sprintf('%F %F m ', $xL, $yL); + $s .= sprintf('%F %F l ', $xT, $yT); + $s .= sprintf('%F %F l ', $xR, $yR); + $s .= 'S '; + } elseif ((strpos($border,'T') !== false) AND (strpos($border,'R') !== false)) { // TR + $s .= sprintf('%F %F m ', $xT, $yT); + $s .= sprintf('%F %F l ', $xR, $yR); + $s .= sprintf('%F %F l ', $xB, $yB); + $s .= 'S '; + } elseif ((strpos($border,'R') !== false) AND (strpos($border,'B') !== false)) { // RB + $s .= sprintf('%F %F m ', $xR, $yR); + $s .= sprintf('%F %F l ', $xB, $yB); + $s .= sprintf('%F %F l ', $xL, $yL); + $s .= 'S '; + } elseif ((strpos($border,'B') !== false) AND (strpos($border,'L') !== false)) { // BL + $s .= sprintf('%F %F m ', $xB, $yB); + $s .= sprintf('%F %F l ', $xL, $yL); + $s .= sprintf('%F %F l ', $xT, $yT); + $s .= 'S '; + } elseif ((strpos($border,'L') !== false) AND (strpos($border,'R') !== false)) { // LR + $s .= sprintf('%F %F m ', $xL, $yL); + $s .= sprintf('%F %F l ', $xT, $yT); + $s .= 'S '; + $s .= sprintf('%F %F m ', $xR, $yR); + $s .= sprintf('%F %F l ', $xB, $yB); + $s .= 'S '; + } elseif ((strpos($border,'T') !== false) AND (strpos($border,'B') !== false)) { // TB + $s .= sprintf('%F %F m ', $xT, $yT); + $s .= sprintf('%F %F l ', $xR, $yR); + $s .= 'S '; + $s .= sprintf('%F %F m ', $xB, $yB); + $s .= sprintf('%F %F l ', $xL, $yL); + $s .= 'S '; + } + } else { // strlen($border) == 1 + if (strpos($border,'L') !== false) { // L + $s .= sprintf('%F %F m ', $xL, $yL); + $s .= sprintf('%F %F l ', $xT, $yT); + $s .= 'S '; + } elseif (strpos($border,'T') !== false) { // T + $s .= sprintf('%F %F m ', $xT, $yT); + $s .= sprintf('%F %F l ', $xR, $yR); + $s .= 'S '; + } elseif (strpos($border,'R') !== false) { // R + $s .= sprintf('%F %F m ', $xR, $yR); + $s .= sprintf('%F %F l ', $xB, $yB); + $s .= 'S '; + } elseif (strpos($border,'B') !== false) { // B + $s .= sprintf('%F %F m ', $xB, $yB); + $s .= sprintf('%F %F l ', $xL, $yL); + $s .= 'S '; + } + } + if (is_array($style) AND !empty($style)) { + // reset border style to previous value + $s .= "\n".$this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor."\n"; + } + } + return $s; + } + + /** + * This method allows printing text with line breaks. + * They can be automatic (as soon as the text reaches the right border of the cell) or explicit (via the \n character). As many cells as necessary are output, one below the other.
      + * Text can be aligned, centered or justified. The cell block can be framed and the background painted. + * @param $w (float) Width of cells. If 0, they extend up to the right margin of the page. + * @param $h (float) Cell minimum height. The cell extends automatically if needed. + * @param $txt (string) String to print + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $align (string) Allows to center or align the text. Possible values are:
      • L or empty string: left align
      • C: center
      • R: right align
      • J: justification (default value when $ishtml=false)
      + * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false). + * @param $ln (int) Indicates where the current position should go after the call. Possible values are:
      • 0: to the right
      • 1: to the beginning of the next line [DEFAULT]
      • 2: below
      + * @param $x (float) x position in user units + * @param $y (float) y position in user units + * @param $reseth (boolean) if true reset the last cell height (default true). + * @param $stretch (int) font stretch mode:
      • 0 = disabled
      • 1 = horizontal scaling only if text is larger than cell width
      • 2 = forced horizontal scaling to fit cell width
      • 3 = character spacing only if text is larger than cell width
      • 4 = forced character spacing to fit cell width
      General font stretching and scaling values will be preserved when possible. + * @param $ishtml (boolean) INTERNAL USE ONLY -- set to true if $txt is HTML content (default = false). Never set this parameter to true, use instead writeHTMLCell() or writeHTML() methods. + * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width. + * @param $maxh (float) maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature. This feature works only when $ishtml=false. + * @param $valign (string) Vertical alignment of text (requires $maxh = $h > 0). Possible values are:
      • T: TOP
      • M: middle
      • B: bottom
      . This feature works only when $ishtml=false and the cell must fit in a single page. + * @param $fitcell (boolean) if true attempt to fit all the text within the cell by reducing the font size (do not work in HTML mode). $maxh must be greater than 0 and wqual to $h. + * @return int Return the number of cells or 1 for html mode. + * @public + * @since 1.3 + * @see SetFont(), SetDrawColor(), SetFillColor(), SetTextColor(), SetLineWidth(), Cell(), Write(), SetAutoPageBreak() + */ + public function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0, $valign='T', $fitcell=false) { + $prev_cell_margin = $this->cell_margin; + $prev_cell_padding = $this->cell_padding; + // adjust internal padding + $this->adjustCellPadding($border); + $mc_padding = $this->cell_padding; + $mc_margin = $this->cell_margin; + $this->cell_padding['T'] = 0; + $this->cell_padding['B'] = 0; + $this->setCellMargins(0, 0, 0, 0); + if (TCPDF_STATIC::empty_string($this->lasth) OR $reseth) { + // reset row height + $this->resetLastH(); + } + if (!TCPDF_STATIC::empty_string($y)) { + $this->SetY($y); + } else { + $y = $this->GetY(); + } + $resth = 0; + if (($h > 0) AND $this->inPageBody() AND (($y + $h + $mc_margin['T'] + $mc_margin['B']) > $this->PageBreakTrigger)) { + // spit cell in more pages/columns + $newh = ($this->PageBreakTrigger - $y); + $resth = ($h - $newh); // cell to be printed on the next page/column + $h = $newh; + } + // get current page number + $startpage = $this->page; + // get current column + $startcolumn = $this->current_column; + if (!TCPDF_STATIC::empty_string($x)) { + $this->SetX($x); + } else { + $x = $this->GetX(); + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions(0, $x, $y); + // apply margins + $oy = $y + $mc_margin['T']; + if ($this->rtl) { + $ox = ($this->w - $x - $mc_margin['R']); + } else { + $ox = ($x + $mc_margin['L']); + } + $this->x = $ox; + $this->y = $oy; + // set width + if (TCPDF_STATIC::empty_string($w) OR ($w <= 0)) { + if ($this->rtl) { + $w = ($this->x - $this->lMargin - $mc_margin['L']); + } else { + $w = ($this->w - $this->x - $this->rMargin - $mc_margin['R']); + } + } + // store original margin values + $lMargin = $this->lMargin; + $rMargin = $this->rMargin; + if ($this->rtl) { + $this->rMargin = ($this->w - $this->x); + $this->lMargin = ($this->x - $w); + } else { + $this->lMargin = ($this->x); + $this->rMargin = ($this->w - $this->x - $w); + } + $this->clMargin = $this->lMargin; + $this->crMargin = $this->rMargin; + if ($autopadding) { + // add top padding + $this->y += $mc_padding['T']; + } + if ($ishtml) { // ******* Write HTML text + $this->writeHTML($txt, true, false, $reseth, true, $align); + $nl = 1; + } else { // ******* Write simple text + $prev_FontSizePt = $this->FontSizePt; + if ($fitcell) { + // ajust height values + $tobottom = ($this->h - $this->y - $this->bMargin - $this->cell_padding['T'] - $this->cell_padding['B']); + $h = $maxh = max(min($h, $tobottom), min($maxh, $tobottom)); + } + // vertical alignment + if ($maxh > 0) { + // get text height + $text_height = $this->getStringHeight($w, $txt, $reseth, $autopadding, $mc_padding, $border); + if ($fitcell AND ($text_height > $maxh) AND ($this->FontSizePt > 1)) { + // try to reduce font size to fit text on cell (use a quick search algorithm) + $fmin = 1; + $fmax = $this->FontSizePt; + $diff_epsilon = (1 / $this->k); // one point (min resolution) + $maxit = (2 * min(100, max(10, intval($fmax)))); // max number of iterations + while ($maxit >= 0) { + $fmid = (($fmax + $fmin) / 2); + $this->SetFontSize($fmid, false); + $this->resetLastH(); + $text_height = $this->getStringHeight($w, $txt, $reseth, $autopadding, $mc_padding, $border); + $diff = ($maxh - $text_height); + if ($diff >= 0) { + if ($diff <= $diff_epsilon) { + break; + } + $fmin = $fmid; + } else { + $fmax = $fmid; + } + --$maxit; + } + if ($maxit < 0) { + // premature exit, we get the minimum font value to fit the cell + $this->SetFontSize($fmin); + $this->resetLastH(); + $text_height = $this->getStringHeight($w, $txt, $reseth, $autopadding, $mc_padding, $border); + } else { + $this->SetFontSize($fmid); + $this->resetLastH(); + } + } + if ($text_height < $maxh) { + if ($valign == 'M') { + // text vertically centered + $this->y += (($maxh - $text_height) / 2); + } elseif ($valign == 'B') { + // text vertically aligned on bottom + $this->y += ($maxh - $text_height); + } + } + } + $nl = $this->Write($this->lasth, $txt, '', 0, $align, true, $stretch, false, true, $maxh, 0, $mc_margin); + if ($fitcell) { + // restore font size + $this->SetFontSize($prev_FontSizePt); + } + } + if ($autopadding) { + // add bottom padding + $this->y += $mc_padding['B']; + } + // Get end-of-text Y position + $currentY = $this->y; + // get latest page number + $endpage = $this->page; + if ($resth > 0) { + $skip = ($endpage - $startpage); + $tmpresth = $resth; + while ($tmpresth > 0) { + if ($skip <= 0) { + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + } + if ($this->num_columns > 1) { + $tmpresth -= ($this->h - $this->y - $this->bMargin); + } else { + $tmpresth -= ($this->h - $this->tMargin - $this->bMargin); + } + --$skip; + } + $currentY = $this->y; + $endpage = $this->page; + } + // get latest column + $endcolumn = $this->current_column; + if ($this->num_columns == 0) { + $this->num_columns = 1; + } + // disable page regions check + $check_page_regions = $this->check_page_regions; + $this->check_page_regions = false; + // get border modes + $border_start = TCPDF_STATIC::getBorderMode($border, $position='start', $this->opencell); + $border_end = TCPDF_STATIC::getBorderMode($border, $position='end', $this->opencell); + $border_middle = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell); + // design borders around HTML cells. + for ($page = $startpage; $page <= $endpage; ++$page) { // for each page + $ccode = ''; + $this->setPage($page); + if ($this->num_columns < 2) { + // single-column mode + $this->SetX($x); + $this->y = $this->tMargin; + } + // account for margin changes + if ($page > $startpage) { + if (($this->rtl) AND ($this->pagedim[$page]['orm'] != $this->pagedim[$startpage]['orm'])) { + $this->x -= ($this->pagedim[$page]['orm'] - $this->pagedim[$startpage]['orm']); + } elseif ((!$this->rtl) AND ($this->pagedim[$page]['olm'] != $this->pagedim[$startpage]['olm'])) { + $this->x += ($this->pagedim[$page]['olm'] - $this->pagedim[$startpage]['olm']); + } + } + if ($startpage == $endpage) { + // single page + for ($column = $startcolumn; $column <= $endcolumn; ++$column) { // for each column + $this->selectColumn($column); + if ($this->rtl) { + $this->x -= $mc_margin['R']; + } else { + $this->x += $mc_margin['L']; + } + if ($startcolumn == $endcolumn) { // single column + $cborder = $border; + $h = max($h, ($currentY - $oy)); + $this->y = $oy; + } elseif ($column == $startcolumn) { // first column + $cborder = $border_start; + $this->y = $oy; + $h = $this->h - $this->y - $this->bMargin; + } elseif ($column == $endcolumn) { // end column + $cborder = $border_end; + $h = $currentY - $this->y; + if ($resth > $h) { + $h = $resth; + } + } else { // middle column + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + $resth -= $h; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } elseif ($page == $startpage) { // first page + for ($column = $startcolumn; $column < $this->num_columns; ++$column) { // for each column + $this->selectColumn($column); + if ($this->rtl) { + $this->x -= $mc_margin['R']; + } else { + $this->x += $mc_margin['L']; + } + if ($column == $startcolumn) { // first column + $cborder = $border_start; + $this->y = $oy; + $h = $this->h - $this->y - $this->bMargin; + } else { // middle column + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + $resth -= $h; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } elseif ($page == $endpage) { // last page + for ($column = 0; $column <= $endcolumn; ++$column) { // for each column + $this->selectColumn($column); + if ($this->rtl) { + $this->x -= $mc_margin['R']; + } else { + $this->x += $mc_margin['L']; + } + if ($column == $endcolumn) { + // end column + $cborder = $border_end; + $h = $currentY - $this->y; + if ($resth > $h) { + $h = $resth; + } + } else { + // middle column + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + $resth -= $h; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } else { // middle page + for ($column = 0; $column < $this->num_columns; ++$column) { // for each column + $this->selectColumn($column); + if ($this->rtl) { + $this->x -= $mc_margin['R']; + } else { + $this->x += $mc_margin['L']; + } + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + $resth -= $h; + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } + if ($cborder OR $fill) { + $offsetlen = strlen($ccode); + // draw border and fill + if ($this->inxobj) { + // we are inside an XObject template + if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) { + $pagemarkkey = key($this->xobjects[$this->xobjid]['transfmrk']); + $pagemark = $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey]; + $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey] += $offsetlen; + } else { + $pagemark = $this->xobjects[$this->xobjid]['intmrk']; + $this->xobjects[$this->xobjid]['intmrk'] += $offsetlen; + } + $pagebuff = $this->xobjects[$this->xobjid]['outdata']; + $pstart = substr($pagebuff, 0, $pagemark); + $pend = substr($pagebuff, $pagemark); + $this->xobjects[$this->xobjid]['outdata'] = $pstart.$ccode.$pend; + } else { + if (end($this->transfmrk[$this->page]) !== false) { + $pagemarkkey = key($this->transfmrk[$this->page]); + $pagemark = $this->transfmrk[$this->page][$pagemarkkey]; + $this->transfmrk[$this->page][$pagemarkkey] += $offsetlen; + } elseif ($this->InFooter) { + $pagemark = $this->footerpos[$this->page]; + $this->footerpos[$this->page] += $offsetlen; + } else { + $pagemark = $this->intmrk[$this->page]; + $this->intmrk[$this->page] += $offsetlen; + } + $pagebuff = $this->getPageBuffer($this->page); + $pstart = substr($pagebuff, 0, $pagemark); + $pend = substr($pagebuff, $pagemark); + $this->setPageBuffer($this->page, $pstart.$ccode.$pend); + } + } + } // end for each page + // restore page regions check + $this->check_page_regions = $check_page_regions; + // Get end-of-cell Y position + $currentY = $this->GetY(); + // restore previous values + if ($this->num_columns > 1) { + $this->selectColumn(); + } else { + // restore original margins + $this->lMargin = $lMargin; + $this->rMargin = $rMargin; + if ($this->page > $startpage) { + // check for margin variations between pages (i.e. booklet mode) + $dl = ($this->pagedim[$this->page]['olm'] - $this->pagedim[$startpage]['olm']); + $dr = ($this->pagedim[$this->page]['orm'] - $this->pagedim[$startpage]['orm']); + if (($dl != 0) OR ($dr != 0)) { + $this->lMargin += $dl; + $this->rMargin += $dr; + } + } + } + if ($ln > 0) { + //Go to the beginning of the next line + $this->SetY($currentY + $mc_margin['B']); + if ($ln == 2) { + $this->SetX($x + $w + $mc_margin['L'] + $mc_margin['R']); + } + } else { + // go left or right by case + $this->setPage($startpage); + $this->y = $y; + $this->SetX($x + $w + $mc_margin['L'] + $mc_margin['R']); + } + $this->setContentMark(); + $this->cell_padding = $prev_cell_padding; + $this->cell_margin = $prev_cell_margin; + $this->clMargin = $this->lMargin; + $this->crMargin = $this->rMargin; + return $nl; + } + + /** + * This method return the estimated number of lines for print a simple text string using Multicell() method. + * @param $txt (string) String for calculating his height + * @param $w (float) Width of cells. If 0, they extend up to the right margin of the page. + * @param $reseth (boolean) if true reset the last cell height (default false). + * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width (default true). + * @param $cellpadding (float) Internal cell padding, if empty uses default cell padding. + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @return float Return the minimal height needed for multicell method for printing the $txt param. + * @author Alexander Escalona Fern\E1ndez, Nicola Asuni + * @public + * @since 4.5.011 + */ + public function getNumLines($txt, $w=0, $reseth=false, $autopadding=true, $cellpadding='', $border=0) { + if ($txt === NULL) { + return 0; + } + if ($txt === '') { + // empty string + return 1; + } + // adjust internal padding + $prev_cell_padding = $this->cell_padding; + $prev_lasth = $this->lasth; + if (is_array($cellpadding)) { + $this->cell_padding = $cellpadding; + } + $this->adjustCellPadding($border); + if (TCPDF_STATIC::empty_string($w) OR ($w <= 0)) { + if ($this->rtl) { + $w = $this->x - $this->lMargin; + } else { + $w = $this->w - $this->rMargin - $this->x; + } + } + $wmax = $w - $this->cell_padding['L'] - $this->cell_padding['R']; + if ($reseth) { + // reset row height + $this->resetLastH(); + } + $lines = 1; + $sum = 0; + $chars = TCPDF_FONTS::utf8Bidi(TCPDF_FONTS::UTF8StringToArray($txt, $this->isunicode, $this->CurrentFont), $txt, $this->tmprtl, $this->isunicode, $this->CurrentFont); + $charsWidth = $this->GetArrStringWidth($chars, '', '', 0, true); + $length = count($chars); + $lastSeparator = -1; + for ($i = 0; $i < $length; ++$i) { + $c = $chars[$i]; + $charWidth = $charsWidth[$i]; + if (($c != 160) + AND (($c == 173) + OR preg_match($this->re_spaces, TCPDF_FONTS::unichr($c, $this->isunicode)) + OR (($c == 45) + AND ($i > 0) AND ($i < ($length - 1)) + AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($chars[($i - 1)], $this->isunicode)) + AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($chars[($i + 1)], $this->isunicode)) + ) + ) + ) { + $lastSeparator = $i; + } + if ((($sum + $charWidth) > $wmax) OR ($c == 10)) { + ++$lines; + if ($c == 10) { + $lastSeparator = -1; + $sum = 0; + } elseif ($lastSeparator != -1) { + $i = $lastSeparator; + $lastSeparator = -1; + $sum = 0; + } else { + $sum = $charWidth; + } + } else { + $sum += $charWidth; + } + } + if ($chars[($length - 1)] == 10) { + --$lines; + } + $this->cell_padding = $prev_cell_padding; + $this->lasth = $prev_lasth; + return $lines; + } + + /** + * This method return the estimated height needed for printing a simple text string using the Multicell() method. + * Generally, if you want to know the exact height for a block of content you can use the following alternative technique: + * @pre + * // store current object + * $pdf->startTransaction(); + * // store starting values + * $start_y = $pdf->GetY(); + * $start_page = $pdf->getPage(); + * // call your printing functions with your parameters + * // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * $pdf->MultiCell($w=0, $h=0, $txt, $border=1, $align='L', $fill=false, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0); + * // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * // get the new Y + * $end_y = $pdf->GetY(); + * $end_page = $pdf->getPage(); + * // calculate height + * $height = 0; + * if ($end_page == $start_page) { + * $height = $end_y - $start_y; + * } else { + * for ($page=$start_page; $page <= $end_page; ++$page) { + * $this->setPage($page); + * if ($page == $start_page) { + * // first page + * $height = $this->h - $start_y - $this->bMargin; + * } elseif ($page == $end_page) { + * // last page + * $height = $end_y - $this->tMargin; + * } else { + * $height = $this->h - $this->tMargin - $this->bMargin; + * } + * } + * } + * // restore previous object + * $pdf = $pdf->rollbackTransaction(); + * + * @param $w (float) Width of cells. If 0, they extend up to the right margin of the page. + * @param $txt (string) String for calculating his height + * @param $reseth (boolean) if true reset the last cell height (default false). + * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width (default true). + * @param $cellpadding (float) Internal cell padding, if empty uses default cell padding. + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @return float Return the minimal height needed for multicell method for printing the $txt param. + * @author Nicola Asuni, Alexander Escalona Fern\E1ndez + * @public + */ + public function getStringHeight($w, $txt, $reseth=false, $autopadding=true, $cellpadding='', $border=0) { + // adjust internal padding + $prev_cell_padding = $this->cell_padding; + $prev_lasth = $this->lasth; + if (is_array($cellpadding)) { + $this->cell_padding = $cellpadding; + } + $this->adjustCellPadding($border); + $lines = $this->getNumLines($txt, $w, $reseth, $autopadding, $cellpadding, $border); + $height = $this->getCellHeight(($lines * $this->FontSize), $autopadding); + $this->cell_padding = $prev_cell_padding; + $this->lasth = $prev_lasth; + return $height; + } + + /** + * This method prints text from the current position.
      + * @param $h (float) Line height + * @param $txt (string) String to print + * @param $link (mixed) URL or identifier returned by AddLink() + * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false). + * @param $align (string) Allows to center or align the text. Possible values are:
      • L or empty string: left align (default value)
      • C: center
      • R: right align
      • J: justify
      + * @param $ln (boolean) if true set cursor at the bottom of the line, otherwise set cursor at the top of the line. + * @param $stretch (int) font stretch mode:
      • 0 = disabled
      • 1 = horizontal scaling only if text is larger than cell width
      • 2 = forced horizontal scaling to fit cell width
      • 3 = character spacing only if text is larger than cell width
      • 4 = forced character spacing to fit cell width
      General font stretching and scaling values will be preserved when possible. + * @param $firstline (boolean) if true prints only the first line and return the remaining string. + * @param $firstblock (boolean) if true the string is the starting of a line. + * @param $maxh (float) maximum height. It should be >= $h and less then remaining space to the bottom of the page, or 0 for disable this feature. + * @param $wadj (float) first line width will be reduced by this amount (used in HTML mode). + * @param $margin (array) margin array of the parent container + * @return mixed Return the number of cells or the remaining string if $firstline = true. + * @public + * @since 1.5 + */ + public function Write($h, $txt, $link='', $fill=false, $align='', $ln=false, $stretch=0, $firstline=false, $firstblock=false, $maxh=0, $wadj=0, $margin='') { + // check page for no-write regions and adapt page margins if necessary + list($this->x, $this->y) = $this->checkPageRegions($h, $this->x, $this->y); + if (strlen($txt) == 0) { + // fix empty text + $txt = ' '; + } + if ($margin === '') { + // set default margins + $margin = $this->cell_margin; + } + // remove carriage returns + $s = str_replace("\r", '', $txt); + // check if string contains arabic text + if (preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_ARABIC, $s)) { + $arabic = true; + } else { + $arabic = false; + } + // check if string contains RTL text + if ($arabic OR ($this->tmprtl == 'R') OR preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_RTL, $s)) { + $rtlmode = true; + } else { + $rtlmode = false; + } + // get a char width + $chrwidth = $this->GetCharWidth(46); // dot character + // get array of unicode values + $chars = TCPDF_FONTS::UTF8StringToArray($s, $this->isunicode, $this->CurrentFont); + // calculate maximum width for a single character on string + $chrw = $this->GetArrStringWidth($chars, '', '', 0, true); + array_walk($chrw, array($this, 'getRawCharWidth')); + $maxchwidth = max($chrw); + // get array of chars + $uchars = TCPDF_FONTS::UTF8ArrayToUniArray($chars, $this->isunicode); + // get the number of characters + $nb = count($chars); + // replacement for SHY character (minus symbol) + $shy_replacement = 45; + $shy_replacement_char = TCPDF_FONTS::unichr($shy_replacement, $this->isunicode); + // widht for SHY replacement + $shy_replacement_width = $this->GetCharWidth($shy_replacement); + // page width + $pw = $w = $this->w - $this->lMargin - $this->rMargin; + // calculate remaining line width ($w) + if ($this->rtl) { + $w = $this->x - $this->lMargin; + } else { + $w = $this->w - $this->rMargin - $this->x; + } + // max column width + $wmax = ($w - $wadj); + if (!$firstline) { + $wmax -= ($this->cell_padding['L'] + $this->cell_padding['R']); + } + if ((!$firstline) AND (($chrwidth > $wmax) OR ($maxchwidth > $wmax))) { + // the maximum width character do not fit on column + return ''; + } + // minimum row height + $row_height = max($h, $this->getCellHeight($this->FontSize)); + // max Y + $maxy = $this->y + $maxh - max($row_height, $h); + $start_page = $this->page; + $i = 0; // character position + $j = 0; // current starting position + $sep = -1; // position of the last blank space + $prevsep = $sep; // previous separator + $shy = false; // true if the last blank is a soft hypen (SHY) + $prevshy = $shy; // previous shy mode + $l = 0; // current string length + $nl = 0; //number of lines + $linebreak = false; + $pc = 0; // previous character + // for each character + while ($i < $nb) { + if (($maxh > 0) AND ($this->y > $maxy) ) { + break; + } + //Get the current character + $c = $chars[$i]; + if ($c == 10) { // 10 = "\n" = new line + //Explicit line break + if ($align == 'J') { + if ($this->rtl) { + $talign = 'R'; + } else { + $talign = 'L'; + } + } else { + $talign = $align; + } + $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $i); + if ($firstline) { + $startx = $this->x; + $tmparr = array_slice($chars, $j, ($i - $j)); + if ($rtlmode) { + $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont); + } + $linew = $this->GetArrStringWidth($tmparr); + unset($tmparr); + if ($this->rtl) { + $this->endlinex = $startx - $linew; + } else { + $this->endlinex = $startx + $linew; + } + $w = $linew; + $tmpcellpadding = $this->cell_padding; + if ($maxh == 0) { + $this->SetCellPadding(0); + } + } + if ($firstblock AND $this->isRTLTextDir()) { + $tmpstr = $this->stringRightTrim($tmpstr); + } + // Skip newlines at the begining of a page or column + if (!empty($tmpstr) OR ($this->y < ($this->PageBreakTrigger - $row_height))) { + $this->Cell($w, $h, $tmpstr, 0, 1, $talign, $fill, $link, $stretch); + } + unset($tmpstr); + if ($firstline) { + $this->cell_padding = $tmpcellpadding; + return (TCPDF_FONTS::UniArrSubString($uchars, $i)); + } + ++$nl; + $j = $i + 1; + $l = 0; + $sep = -1; + $prevsep = $sep; + $shy = false; + // account for margin changes + if ((($this->y + $this->lasth) > $this->PageBreakTrigger) AND ($this->inPageBody())) { + $this->AcceptPageBreak(); + if ($this->rtl) { + $this->x -= $margin['R']; + } else { + $this->x += $margin['L']; + } + $this->lMargin += $margin['L']; + $this->rMargin += $margin['R']; + } + $w = $this->getRemainingWidth(); + $wmax = ($w - $this->cell_padding['L'] - $this->cell_padding['R']); + } else { + // 160 is the non-breaking space. + // 173 is SHY (Soft Hypen). + // \p{Z} or \p{Separator}: any kind of Unicode whitespace or invisible separator. + // \p{Lo} or \p{Other_Letter}: a Unicode letter or ideograph that does not have lowercase and uppercase variants. + // \p{Lo} is needed because Chinese characters are packed next to each other without spaces in between. + if (($c != 160) + AND (($c == 173) + OR preg_match($this->re_spaces, TCPDF_FONTS::unichr($c, $this->isunicode)) + OR (($c == 45) + AND ($i < ($nb - 1)) + AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($pc, $this->isunicode)) + AND @preg_match('/[\p{L}]/'.$this->re_space['m'], TCPDF_FONTS::unichr($chars[($i + 1)], $this->isunicode)) + ) + ) + ) { + // update last blank space position + $prevsep = $sep; + $sep = $i; + // check if is a SHY + if (($c == 173) OR ($c == 45)) { + $prevshy = $shy; + $shy = true; + if ($pc == 45) { + $tmp_shy_replacement_width = 0; + $tmp_shy_replacement_char = ''; + } else { + $tmp_shy_replacement_width = $shy_replacement_width; + $tmp_shy_replacement_char = $shy_replacement_char; + } + } else { + $shy = false; + } + } + // update string length + if ($this->isUnicodeFont() AND ($arabic)) { + // with bidirectional algorithm some chars may be changed affecting the line length + // *** very slow *** + $l = $this->GetArrStringWidth(TCPDF_FONTS::utf8Bidi(array_slice($chars, $j, ($i - $j)), '', $this->tmprtl, $this->isunicode, $this->CurrentFont)); + } else { + $l += $this->GetCharWidth($c); + } + if (($l > $wmax) OR (($c == 173) AND (($l + $tmp_shy_replacement_width) >= $wmax))) { + if (($c == 173) AND (($l + $tmp_shy_replacement_width) > $wmax)) { + $sep = $prevsep; + $shy = $prevshy; + } + // we have reached the end of column + if ($sep == -1) { + // check if the line was already started + if (($this->rtl AND ($this->x <= ($this->w - $this->rMargin - $this->cell_padding['R'] - $margin['R'] - $chrwidth))) + OR ((!$this->rtl) AND ($this->x >= ($this->lMargin + $this->cell_padding['L'] + $margin['L'] + $chrwidth)))) { + // print a void cell and go to next line + $this->Cell($w, $h, '', 0, 1); + $linebreak = true; + if ($firstline) { + return (TCPDF_FONTS::UniArrSubString($uchars, $j)); + } + } else { + // truncate the word because do not fit on column + $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $i); + if ($firstline) { + $startx = $this->x; + $tmparr = array_slice($chars, $j, ($i - $j)); + if ($rtlmode) { + $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont); + } + $linew = $this->GetArrStringWidth($tmparr); + unset($tmparr); + if ($this->rtl) { + $this->endlinex = $startx - $linew; + } else { + $this->endlinex = $startx + $linew; + } + $w = $linew; + $tmpcellpadding = $this->cell_padding; + if ($maxh == 0) { + $this->SetCellPadding(0); + } + } + if ($firstblock AND $this->isRTLTextDir()) { + $tmpstr = $this->stringRightTrim($tmpstr); + } + $this->Cell($w, $h, $tmpstr, 0, 1, $align, $fill, $link, $stretch); + unset($tmpstr); + if ($firstline) { + $this->cell_padding = $tmpcellpadding; + return (TCPDF_FONTS::UniArrSubString($uchars, $i)); + } + $j = $i; + --$i; + } + } else { + // word wrapping + if ($this->rtl AND (!$firstblock) AND ($sep < $i)) { + $endspace = 1; + } else { + $endspace = 0; + } + // check the length of the next string + $strrest = TCPDF_FONTS::UniArrSubString($uchars, ($sep + $endspace)); + $nextstr = TCPDF_STATIC::pregSplit('/'.$this->re_space['p'].'/', $this->re_space['m'], $this->stringTrim($strrest)); + if (isset($nextstr[0]) AND ($this->GetStringWidth($nextstr[0]) > $pw)) { + // truncate the word because do not fit on a full page width + $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $i); + if ($firstline) { + $startx = $this->x; + $tmparr = array_slice($chars, $j, ($i - $j)); + if ($rtlmode) { + $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont); + } + $linew = $this->GetArrStringWidth($tmparr); + unset($tmparr); + if ($this->rtl) { + $this->endlinex = ($startx - $linew); + } else { + $this->endlinex = ($startx + $linew); + } + $w = $linew; + $tmpcellpadding = $this->cell_padding; + if ($maxh == 0) { + $this->SetCellPadding(0); + } + } + if ($firstblock AND $this->isRTLTextDir()) { + $tmpstr = $this->stringRightTrim($tmpstr); + } + $this->Cell($w, $h, $tmpstr, 0, 1, $align, $fill, $link, $stretch); + unset($tmpstr); + if ($firstline) { + $this->cell_padding = $tmpcellpadding; + return (TCPDF_FONTS::UniArrSubString($uchars, $i)); + } + $j = $i; + --$i; + } else { + // word wrapping + if ($shy) { + // add hypen (minus symbol) at the end of the line + $shy_width = $tmp_shy_replacement_width; + if ($this->rtl) { + $shy_char_left = $tmp_shy_replacement_char; + $shy_char_right = ''; + } else { + $shy_char_left = ''; + $shy_char_right = $tmp_shy_replacement_char; + } + } else { + $shy_width = 0; + $shy_char_left = ''; + $shy_char_right = ''; + } + $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, ($sep + $endspace)); + if ($firstline) { + $startx = $this->x; + $tmparr = array_slice($chars, $j, (($sep + $endspace) - $j)); + if ($rtlmode) { + $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont); + } + $linew = $this->GetArrStringWidth($tmparr); + unset($tmparr); + if ($this->rtl) { + $this->endlinex = $startx - $linew - $shy_width; + } else { + $this->endlinex = $startx + $linew + $shy_width; + } + $w = $linew; + $tmpcellpadding = $this->cell_padding; + if ($maxh == 0) { + $this->SetCellPadding(0); + } + } + // print the line + if ($firstblock AND $this->isRTLTextDir()) { + $tmpstr = $this->stringRightTrim($tmpstr); + } + $this->Cell($w, $h, $shy_char_left.$tmpstr.$shy_char_right, 0, 1, $align, $fill, $link, $stretch); + unset($tmpstr); + if ($firstline) { + if ($chars[$sep] == 45) { + $endspace += 1; + } + // return the remaining text + $this->cell_padding = $tmpcellpadding; + return (TCPDF_FONTS::UniArrSubString($uchars, ($sep + $endspace))); + } + $i = $sep; + $sep = -1; + $shy = false; + $j = ($i + 1); + } + } + // account for margin changes + if ((($this->y + $this->lasth) > $this->PageBreakTrigger) AND ($this->inPageBody())) { + $this->AcceptPageBreak(); + if ($this->rtl) { + $this->x -= $margin['R']; + } else { + $this->x += $margin['L']; + } + $this->lMargin += $margin['L']; + $this->rMargin += $margin['R']; + } + $w = $this->getRemainingWidth(); + $wmax = $w - $this->cell_padding['L'] - $this->cell_padding['R']; + if ($linebreak) { + $linebreak = false; + } else { + ++$nl; + $l = 0; + } + } + } + // save last character + $pc = $c; + ++$i; + } // end while i < nb + // print last substring (if any) + if ($l > 0) { + switch ($align) { + case 'J': + case 'C': { + $w = $w; + break; + } + case 'L': { + if ($this->rtl) { + $w = $w; + } else { + $w = $l; + } + break; + } + case 'R': { + if ($this->rtl) { + $w = $l; + } else { + $w = $w; + } + break; + } + default: { + $w = $l; + break; + } + } + $tmpstr = TCPDF_FONTS::UniArrSubString($uchars, $j, $nb); + if ($firstline) { + $startx = $this->x; + $tmparr = array_slice($chars, $j, ($nb - $j)); + if ($rtlmode) { + $tmparr = TCPDF_FONTS::utf8Bidi($tmparr, $tmpstr, $this->tmprtl, $this->isunicode, $this->CurrentFont); + } + $linew = $this->GetArrStringWidth($tmparr); + unset($tmparr); + if ($this->rtl) { + $this->endlinex = $startx - $linew; + } else { + $this->endlinex = $startx + $linew; + } + $w = $linew; + $tmpcellpadding = $this->cell_padding; + if ($maxh == 0) { + $this->SetCellPadding(0); + } + } + if ($firstblock AND $this->isRTLTextDir()) { + $tmpstr = $this->stringRightTrim($tmpstr); + } + $this->Cell($w, $h, $tmpstr, 0, $ln, $align, $fill, $link, $stretch); + unset($tmpstr); + if ($firstline) { + $this->cell_padding = $tmpcellpadding; + return (TCPDF_FONTS::UniArrSubString($uchars, $nb)); + } + ++$nl; + } + if ($firstline) { + return ''; + } + return $nl; + } + + /** + * Returns the remaining width between the current position and margins. + * @return int Return the remaining width + * @protected + */ + protected function getRemainingWidth() { + list($this->x, $this->y) = $this->checkPageRegions(0, $this->x, $this->y); + if ($this->rtl) { + return ($this->x - $this->lMargin); + } else { + return ($this->w - $this->rMargin - $this->x); + } + } + + /** + * Set the block dimensions accounting for page breaks and page/column fitting + * @param $w (float) width + * @param $h (float) height + * @param $x (float) X coordinate + * @param $y (float) Y coodiante + * @param $fitonpage (boolean) if true the block is resized to not exceed page dimensions. + * @return array($w, $h, $x, $y) + * @protected + * @since 5.5.009 (2010-07-05) + */ + protected function fitBlock($w, $h, $x, $y, $fitonpage=false) { + if ($w <= 0) { + // set maximum width + $w = ($this->w - $this->lMargin - $this->rMargin); + if ($w <= 0) { + $w = 1; + } + } + if ($h <= 0) { + // set maximum height + $h = ($this->PageBreakTrigger - $this->tMargin); + if ($h <= 0) { + $h = 1; + } + } + // resize the block to be vertically contained on a single page or single column + if ($fitonpage OR $this->AutoPageBreak) { + $ratio_wh = ($w / $h); + if ($h > ($this->PageBreakTrigger - $this->tMargin)) { + $h = $this->PageBreakTrigger - $this->tMargin; + $w = ($h * $ratio_wh); + } + // resize the block to be horizontally contained on a single page or single column + if ($fitonpage) { + $maxw = ($this->w - $this->lMargin - $this->rMargin); + if ($w > $maxw) { + $w = $maxw; + $h = ($w / $ratio_wh); + } + } + } + // Check whether we need a new page or new column first as this does not fit + $prev_x = $this->x; + $prev_y = $this->y; + if ($this->checkPageBreak($h, $y) OR ($this->y < $prev_y)) { + $y = $this->y; + if ($this->rtl) { + $x += ($prev_x - $this->x); + } else { + $x += ($this->x - $prev_x); + } + $this->newline = true; + } + // resize the block to be contained on the remaining available page or column space + if ($fitonpage) { + $ratio_wh = ($w / $h); + if (($y + $h) > $this->PageBreakTrigger) { + $h = $this->PageBreakTrigger - $y; + $w = ($h * $ratio_wh); + } + if ((!$this->rtl) AND (($x + $w) > ($this->w - $this->rMargin))) { + $w = $this->w - $this->rMargin - $x; + $h = ($w / $ratio_wh); + } elseif (($this->rtl) AND (($x - $w) < ($this->lMargin))) { + $w = $x - $this->lMargin; + $h = ($w / $ratio_wh); + } + } + return array($w, $h, $x, $y); + } + + /** + * Puts an image in the page. + * The upper-left corner must be given. + * The dimensions can be specified in different ways:
        + *
      • explicit width and height (expressed in user unit)
      • + *
      • one explicit dimension, the other being calculated automatically in order to keep the original proportions
      • + *
      • no explicit dimension, in which case the image is put at 72 dpi
      + * Supported formats are JPEG and PNG images whitout GD library and all images supported by GD: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM; + * The format can be specified explicitly or inferred from the file extension.
      + * It is possible to put a link on the image.
      + * Remark: if an image is used several times, only one copy will be embedded in the file.
      + * @param $file (string) Name of the file containing the image or a '@' character followed by the image data string. To link an image without embedding it on the document, set an asterisk character before the URL (i.e.: '*http://www.example.com/image.jpg'). + * @param $x (float) Abscissa of the upper-left corner (LTR) or upper-right corner (RTL). + * @param $y (float) Ordinate of the upper-left corner (LTR) or upper-right corner (RTL). + * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $type (string) Image format. Possible values are (case insensitive): JPEG and PNG (whitout GD library) and all images supported by GD: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM;. If not specified, the type is inferred from the file extension. + * @param $link (mixed) URL or identifier returned by AddLink(). + * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:
      • T: top-right for LTR or top-left for RTL
      • M: middle-right for LTR or middle-left for RTL
      • B: bottom-right for LTR or bottom-left for RTL
      • N: next line
      + * @param $resize (mixed) If true resize (reduce) the image to fit $w and $h (requires GD or ImageMagick library); if false do not resize; if 2 force resize in all cases (upscaling and downscaling). + * @param $dpi (int) dot-per-inch resolution used on resize + * @param $palign (string) Allows to center or align the image on the current line. Possible values are:
      • L : left align
      • C : center
      • R : right align
      • '' : empty string : left for LTR or right for RTL
      + * @param $ismask (boolean) true if this image is a mask, false otherwise + * @param $imgmask (mixed) image object returned by this function or false + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $fitbox (mixed) If not false scale image dimensions proportionally to fit within the ($w, $h) box. $fitbox can be true or a 2 characters string indicating the image alignment inside the box. The first character indicate the horizontal alignment (L = left, C = center, R = right) the second character indicate the vertical algnment (T = top, M = middle, B = bottom). + * @param $hidden (boolean) If true do not display the image. + * @param $fitonpage (boolean) If true the image is resized to not exceed page dimensions. + * @param $alt (boolean) If true the image will be added as alternative and not directly printed (the ID of the image will be returned). + * @param $altimgs (array) Array of alternate images IDs. Each alternative image must be an array with two values: an integer representing the image ID (the value returned by the Image method) and a boolean value to indicate if the image is the default for printing. + * @return image information + * @public + * @since 1.1 + */ + public function Image($file, $x='', $y='', $w=0, $h=0, $type='', $link='', $align='', $resize=false, $dpi=300, $palign='', $ismask=false, $imgmask=false, $border=0, $fitbox=false, $hidden=false, $fitonpage=false, $alt=false, $altimgs=array()) { + if ($this->state != 2) { + return; + } + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + $exurl = ''; // external streams + $imsize = FALSE; + // check if we are passing an image as file or string + if ($file[0] === '@') { + // image from string + $imgdata = substr($file, 1); + } else { // image file + if ($file[0] === '*') { + // image as external stream + $file = substr($file, 1); + $exurl = $file; + } + // check if is a local file + if (!@file_exists($file)) { + // try to encode spaces on filename + $tfile = str_replace(' ', '%20', $file); + if (@file_exists($tfile)) { + $file = $tfile; + } + } + if (($imsize = @getimagesize($file)) === FALSE) { + if (in_array($file, $this->imagekeys)) { + // get existing image data + $info = $this->getImageBuffer($file); + $imsize = array($info['w'], $info['h']); + } elseif (strpos($file, '__tcpdf_img') === FALSE) { + $imgdata = TCPDF_STATIC::fileGetContents($file); + } + } + } + if (!empty($imgdata)) { + // copy image to cache + $original_file = $file; + $file = TCPDF_STATIC::getObjFilename('img'); + $fp = fopen($file, 'w'); + if (!$fp) { + $this->Error('Unable to write file: '.$file); + } + fwrite($fp, $imgdata); + fclose($fp); + unset($imgdata); + $imsize = @getimagesize($file); + if ($imsize === FALSE) { + unlink($file); + $file = $original_file; + } else { + $this->cached_files[] = $file; + } + } + if ($imsize === FALSE) { + if (($w > 0) AND ($h > 0)) { + // get measures from specified data + $pw = $this->getHTMLUnitToUnits($w, 0, $this->pdfunit, true) * $this->imgscale * $this->k; + $ph = $this->getHTMLUnitToUnits($h, 0, $this->pdfunit, true) * $this->imgscale * $this->k; + $imsize = array($pw, $ph); + } else { + $this->Error('[Image] Unable to get the size of the image: '.$file); + } + } + // file hash + $filehash = md5($this->file_id.$file); + // get original image width and height in pixels + list($pixw, $pixh) = $imsize; + // calculate image width and height on document + if (($w <= 0) AND ($h <= 0)) { + // convert image size to document unit + $w = $this->pixelsToUnits($pixw); + $h = $this->pixelsToUnits($pixh); + } elseif ($w <= 0) { + $w = $h * $pixw / $pixh; + } elseif ($h <= 0) { + $h = $w * $pixh / $pixw; + } elseif (($fitbox !== false) AND ($w > 0) AND ($h > 0)) { + if (strlen($fitbox) !== 2) { + // set default alignment + $fitbox = '--'; + } + // scale image dimensions proportionally to fit within the ($w, $h) box + if ((($w * $pixh) / ($h * $pixw)) < 1) { + // store current height + $oldh = $h; + // calculate new height + $h = $w * $pixh / $pixw; + // height difference + $hdiff = ($oldh - $h); + // vertical alignment + switch (strtoupper($fitbox[1])) { + case 'T': { + break; + } + case 'M': { + $y += ($hdiff / 2); + break; + } + case 'B': { + $y += $hdiff; + break; + } + } + } else { + // store current width + $oldw = $w; + // calculate new width + $w = $h * $pixw / $pixh; + // width difference + $wdiff = ($oldw - $w); + // horizontal alignment + switch (strtoupper($fitbox[0])) { + case 'L': { + if ($this->rtl) { + $x -= $wdiff; + } + break; + } + case 'C': { + if ($this->rtl) { + $x -= ($wdiff / 2); + } else { + $x += ($wdiff / 2); + } + break; + } + case 'R': { + if (!$this->rtl) { + $x += $wdiff; + } + break; + } + } + } + } + // fit the image on available space + list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage); + // calculate new minimum dimensions in pixels + $neww = round($w * $this->k * $dpi / $this->dpi); + $newh = round($h * $this->k * $dpi / $this->dpi); + // check if resize is necessary (resize is used only to reduce the image) + $newsize = ($neww * $newh); + $pixsize = ($pixw * $pixh); + if (intval($resize) == 2) { + $resize = true; + } elseif ($newsize >= $pixsize) { + $resize = false; + } + // check if image has been already added on document + $newimage = true; + if (in_array($file, $this->imagekeys)) { + $newimage = false; + // get existing image data + $info = $this->getImageBuffer($file); + if (strpos($file, '__tcpdf_imgmask_') === FALSE) { + // check if the newer image is larger + $oldsize = ($info['w'] * $info['h']); + if ((($oldsize < $newsize) AND ($resize)) OR (($oldsize < $pixsize) AND (!$resize))) { + $newimage = true; + } + } + } elseif (($ismask === false) AND ($imgmask === false) AND (strpos($file, '__tcpdf_imgmask_') === FALSE)) { + // create temp image file (without alpha channel) + $tempfile_plain = K_PATH_CACHE.'__tcpdf_imgmask_plain_'.$filehash; + // create temp alpha file + $tempfile_alpha = K_PATH_CACHE.'__tcpdf_imgmask_alpha_'.$filehash; + // check for cached images + if (in_array($tempfile_plain, $this->imagekeys)) { + // get existing image data + $info = $this->getImageBuffer($tempfile_plain); + // check if the newer image is larger + $oldsize = ($info['w'] * $info['h']); + if ((($oldsize < $newsize) AND ($resize)) OR (($oldsize < $pixsize) AND (!$resize))) { + $newimage = true; + } else { + $newimage = false; + // embed mask image + $imgmask = $this->Image($tempfile_alpha, $x, $y, $w, $h, 'PNG', '', '', $resize, $dpi, '', true, false); + // embed image, masked with previously embedded mask + return $this->Image($tempfile_plain, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, false, $imgmask); + } + } + } + if ($newimage) { + //First use of image, get info + $type = strtolower($type); + if ($type == '') { + $type = TCPDF_IMAGES::getImageFileType($file, $imsize); + } elseif ($type == 'jpg') { + $type = 'jpeg'; + } + $mqr = TCPDF_STATIC::get_mqr(); + TCPDF_STATIC::set_mqr(false); + // Specific image handlers (defined on TCPDF_IMAGES CLASS) + $mtd = '_parse'.$type; + // GD image handler function + $gdfunction = 'imagecreatefrom'.$type; + $info = false; + if ((method_exists('TCPDF_IMAGES', $mtd)) AND (!($resize AND (function_exists($gdfunction) OR extension_loaded('imagick'))))) { + // TCPDF image functions + $info = TCPDF_IMAGES::$mtd($file); + if (($ismask === false) AND ($imgmask === false) AND (strpos($file, '__tcpdf_imgmask_') === FALSE) + AND (($info === 'pngalpha') OR (isset($info['trns']) AND !empty($info['trns'])))) { + return $this->ImagePngAlpha($file, $x, $y, $pixw, $pixh, $w, $h, 'PNG', $link, $align, $resize, $dpi, $palign, $filehash); + } + } + if (($info === false) AND function_exists($gdfunction)) { + try { + // GD library + $img = $gdfunction($file); + if ($img !== false) { + if ($resize) { + $imgr = imagecreatetruecolor($neww, $newh); + if (($type == 'gif') OR ($type == 'png')) { + $imgr = TCPDF_IMAGES::setGDImageTransparency($imgr, $img); + } + imagecopyresampled($imgr, $img, 0, 0, 0, 0, $neww, $newh, $pixw, $pixh); + $img = $imgr; + } + if (($type == 'gif') OR ($type == 'png')) { + $info = TCPDF_IMAGES::_toPNG($img); + } else { + $info = TCPDF_IMAGES::_toJPEG($img, $this->jpeg_quality); + } + } + } catch(Exception $e) { + $info = false; + } + } + if (($info === false) AND extension_loaded('imagick')) { + try { + // ImageMagick library + $img = new Imagick(); + if ($type == 'svg') { + if ($file[0] === '@') { + // image from string + $svgimg = substr($file, 1); + } else { + // get SVG file content + $svgimg = TCPDF_STATIC::fileGetContents($file); + } + if ($svgimg !== FALSE) { + // get width and height + $regs = array(); + if (preg_match('/]*)>/si', $svgimg, $regs)) { + $svgtag = $regs[1]; + $tmp = array(); + if (preg_match('/[\s]+width[\s]*=[\s]*"([^"]*)"/si', $svgtag, $tmp)) { + $ow = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false); + $owu = sprintf('%F', ($ow * $dpi / 72)).$this->pdfunit; + $svgtag = preg_replace('/[\s]+width[\s]*=[\s]*"[^"]*"/si', ' width="'.$owu.'"', $svgtag, 1); + } else { + $ow = $w; + } + $tmp = array(); + if (preg_match('/[\s]+height[\s]*=[\s]*"([^"]*)"/si', $svgtag, $tmp)) { + $oh = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false); + $ohu = sprintf('%F', ($oh * $dpi / 72)).$this->pdfunit; + $svgtag = preg_replace('/[\s]+height[\s]*=[\s]*"[^"]*"/si', ' height="'.$ohu.'"', $svgtag, 1); + } else { + $oh = $h; + } + $tmp = array(); + if (!preg_match('/[\s]+viewBox[\s]*=[\s]*"[\s]*([0-9\.]+)[\s]+([0-9\.]+)[\s]+([0-9\.]+)[\s]+([0-9\.]+)[\s]*"/si', $svgtag, $tmp)) { + $vbw = ($ow * $this->imgscale * $this->k); + $vbh = ($oh * $this->imgscale * $this->k); + $vbox = sprintf(' viewBox="0 0 %F %F" ', $vbw, $vbh); + $svgtag = $vbox.$svgtag; + } + $svgimg = preg_replace('/]*)>/si', '', $svgimg, 1); + } + $img->readImageBlob($svgimg); + } + } else { + $img->readImage($file); + } + if ($resize) { + $img->resizeImage($neww, $newh, 10, 1, false); + } + $img->setCompressionQuality($this->jpeg_quality); + $img->setImageFormat('jpeg'); + $tempname = TCPDF_STATIC::getObjFilename('img'); + $img->writeImage($tempname); + $info = TCPDF_IMAGES::_parsejpeg($tempname); + unlink($tempname); + $img->destroy(); + } catch(Exception $e) { + $info = false; + } + } + if ($info === false) { + // unable to process image + return; + } + TCPDF_STATIC::set_mqr($mqr); + if ($ismask) { + // force grayscale + $info['cs'] = 'DeviceGray'; + } + if ($imgmask !== false) { + $info['masked'] = $imgmask; + } + if (!empty($exurl)) { + $info['exurl'] = $exurl; + } + // array of alternative images + $info['altimgs'] = $altimgs; + // add image to document + $info['i'] = $this->setImageBuffer($file, $info); + } + // set alignment + $this->img_rb_y = $y + $h; + // set alignment + if ($this->rtl) { + if ($palign == 'L') { + $ximg = $this->lMargin; + } elseif ($palign == 'C') { + $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $ximg = $this->w - $this->rMargin - $w; + } else { + $ximg = $x - $w; + } + $this->img_rb_x = $ximg; + } else { + if ($palign == 'L') { + $ximg = $this->lMargin; + } elseif ($palign == 'C') { + $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $ximg = $this->w - $this->rMargin - $w; + } else { + $ximg = $x; + } + $this->img_rb_x = $ximg + $w; + } + if ($ismask OR $hidden) { + // image is not displayed + return $info['i']; + } + $xkimg = $ximg * $this->k; + if (!$alt) { + // only non-alternative immages will be set + $this->_out(sprintf('q %F 0 0 %F %F %F cm /I%u Do Q', ($w * $this->k), ($h * $this->k), $xkimg, (($this->h - ($y + $h)) * $this->k), $info['i'])); + } + if (!empty($border)) { + $bx = $this->x; + $by = $this->y; + $this->x = $ximg; + if ($this->rtl) { + $this->x += $w; + } + $this->y = $y; + $this->Cell($w, $h, '', $border, 0, '', 0, '', 0, true); + $this->x = $bx; + $this->y = $by; + } + if ($link) { + $this->Link($ximg, $y, $w, $h, $link, 0); + } + // set pointer to align the next text/objects + switch($align) { + case 'T': { + $this->y = $y; + $this->x = $this->img_rb_x; + break; + } + case 'M': { + $this->y = $y + round($h/2); + $this->x = $this->img_rb_x; + break; + } + case 'B': { + $this->y = $this->img_rb_y; + $this->x = $this->img_rb_x; + break; + } + case 'N': { + $this->SetY($this->img_rb_y); + break; + } + default:{ + break; + } + } + $this->endlinex = $this->img_rb_x; + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['images'][] = $info['i']; + } + return $info['i']; + } + + /** + * Extract info from a PNG image with alpha channel using the Imagick or GD library. + * @param $file (string) Name of the file containing the image. + * @param $x (float) Abscissa of the upper-left corner. + * @param $y (float) Ordinate of the upper-left corner. + * @param $wpx (float) Original width of the image in pixels. + * @param $hpx (float) original height of the image in pixels. + * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $type (string) Image format. Possible values are (case insensitive): JPEG and PNG (whitout GD library) and all images supported by GD: GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM;. If not specified, the type is inferred from the file extension. + * @param $link (mixed) URL or identifier returned by AddLink(). + * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:
      • T: top-right for LTR or top-left for RTL
      • M: middle-right for LTR or middle-left for RTL
      • B: bottom-right for LTR or bottom-left for RTL
      • N: next line
      + * @param $resize (boolean) If true resize (reduce) the image to fit $w and $h (requires GD library). + * @param $dpi (int) dot-per-inch resolution used on resize + * @param $palign (string) Allows to center or align the image on the current line. Possible values are:
      • L : left align
      • C : center
      • R : right align
      • '' : empty string : left for LTR or right for RTL
      + * @param $filehash (string) File hash used to build unique file names. + * @author Nicola Asuni + * @protected + * @since 4.3.007 (2008-12-04) + * @see Image() + */ + protected function ImagePngAlpha($file, $x, $y, $wpx, $hpx, $w, $h, $type, $link, $align, $resize, $dpi, $palign, $filehash='') { + // create temp images + if (empty($filehash)) { + $filehash = md5($this->file_id.$file); + } + // create temp image file (without alpha channel) + $tempfile_plain = K_PATH_CACHE.'__tcpdf_imgmask_plain_'.$filehash; + // create temp alpha file + $tempfile_alpha = K_PATH_CACHE.'__tcpdf_imgmask_alpha_'.$filehash; + $parsed = false; + $parse_error = ''; + // ImageMagick extension + if (($parsed === false) AND extension_loaded('imagick')) { + try { + // ImageMagick library + $img = new Imagick(); + $img->readImage($file); + // clone image object + $imga = TCPDF_STATIC::objclone($img); + // extract alpha channel + if (method_exists($img, 'setImageAlphaChannel') AND defined('Imagick::ALPHACHANNEL_EXTRACT')) { + $img->setImageAlphaChannel(Imagick::ALPHACHANNEL_EXTRACT); + } else { + $img->separateImageChannel(8); // 8 = (imagick::CHANNEL_ALPHA | imagick::CHANNEL_OPACITY | imagick::CHANNEL_MATTE); + $img->negateImage(true); + } + $img->setImageFormat('png'); + $img->writeImage($tempfile_alpha); + // remove alpha channel + if (method_exists($imga, 'setImageMatte')) { + $imga->setImageMatte(false); + } else { + $imga->separateImageChannel(39); // 39 = (imagick::CHANNEL_ALL & ~(imagick::CHANNEL_ALPHA | imagick::CHANNEL_OPACITY | imagick::CHANNEL_MATTE)); + } + $imga->setImageFormat('png'); + $imga->writeImage($tempfile_plain); + $parsed = true; + } catch (Exception $e) { + // Imagemagick fails, try with GD + $parse_error = 'Imagick library error: '.$e->getMessage(); + } + } + // GD extension + if (($parsed === false) AND function_exists('imagecreatefrompng')) { + try { + // generate images + $img = imagecreatefrompng($file); + $imgalpha = imagecreate($wpx, $hpx); + // generate gray scale palette (0 -> 255) + for ($c = 0; $c < 256; ++$c) { + ImageColorAllocate($imgalpha, $c, $c, $c); + } + // extract alpha channel + for ($xpx = 0; $xpx < $wpx; ++$xpx) { + for ($ypx = 0; $ypx < $hpx; ++$ypx) { + $color = imagecolorat($img, $xpx, $ypx); + // get and correct gamma color + $alpha = $this->getGDgamma($img, $color); + imagesetpixel($imgalpha, $xpx, $ypx, $alpha); + } + } + imagepng($imgalpha, $tempfile_alpha); + imagedestroy($imgalpha); + // extract image without alpha channel + $imgplain = imagecreatetruecolor($wpx, $hpx); + imagecopy($imgplain, $img, 0, 0, 0, 0, $wpx, $hpx); + imagepng($imgplain, $tempfile_plain); + imagedestroy($imgplain); + $parsed = true; + } catch (Exception $e) { + // GD fails + $parse_error = 'GD library error: '.$e->getMessage(); + } + } + if ($parsed === false) { + if (empty($parse_error)) { + $this->Error('TCPDF requires the Imagick or GD extension to handle PNG images with alpha channel.'); + } else { + $this->Error($parse_error); + } + } + // embed mask image + $imgmask = $this->Image($tempfile_alpha, $x, $y, $w, $h, 'PNG', '', '', $resize, $dpi, '', true, false); + // embed image, masked with previously embedded mask + $this->Image($tempfile_plain, $x, $y, $w, $h, $type, $link, $align, $resize, $dpi, $palign, false, $imgmask); + // remove temp files + unlink($tempfile_alpha); + unlink($tempfile_plain); + } + + /** + * Get the GD-corrected PNG gamma value from alpha color + * @param $img (int) GD image Resource ID. + * @param $c (int) alpha color + * @protected + * @since 4.3.007 (2008-12-04) + */ + protected function getGDgamma($img, $c) { + if (!isset($this->gdgammacache['#'.$c])) { + $colors = imagecolorsforindex($img, $c); + // GD alpha is only 7 bit (0 -> 127) + $this->gdgammacache['#'.$c] = (((127 - $colors['alpha']) / 127) * 255); + // correct gamma + $this->gdgammacache['#'.$c] = (pow(($this->gdgammacache['#'.$c] / 255), 2.2) * 255); + // store the latest values on cache to improve performances + if (count($this->gdgammacache) > 8) { + // remove one element from the cache array + array_shift($this->gdgammacache); + } + } + return $this->gdgammacache['#'.$c]; + } + + /** + * Performs a line break. + * The current abscissa goes back to the left margin and the ordinate increases by the amount passed in parameter. + * @param $h (float) The height of the break. By default, the value equals the height of the last printed cell. + * @param $cell (boolean) if true add the current left (or right o for RTL) padding to the X coordinate + * @public + * @since 1.0 + * @see Cell() + */ + public function Ln($h='', $cell=false) { + if (($this->num_columns > 1) AND ($this->y == $this->columns[$this->current_column]['y']) AND isset($this->columns[$this->current_column]['x']) AND ($this->x == $this->columns[$this->current_column]['x'])) { + // revove vertical space from the top of the column + return; + } + if ($cell) { + if ($this->rtl) { + $cellpadding = $this->cell_padding['R']; + } else { + $cellpadding = $this->cell_padding['L']; + } + } else { + $cellpadding = 0; + } + if ($this->rtl) { + $this->x = $this->w - $this->rMargin - $cellpadding; + } else { + $this->x = $this->lMargin + $cellpadding; + } + if (is_string($h)) { + $this->y += $this->lasth; + } else { + $this->y += $h; + } + $this->newline = true; + } + + /** + * Returns the relative X value of current position. + * The value is relative to the left border for LTR languages and to the right border for RTL languages. + * @return float + * @public + * @since 1.2 + * @see SetX(), GetY(), SetY() + */ + public function GetX() { + //Get x position + if ($this->rtl) { + return ($this->w - $this->x); + } else { + return $this->x; + } + } + + /** + * Returns the absolute X value of current position. + * @return float + * @public + * @since 1.2 + * @see SetX(), GetY(), SetY() + */ + public function GetAbsX() { + return $this->x; + } + + /** + * Returns the ordinate of the current position. + * @return float + * @public + * @since 1.0 + * @see SetY(), GetX(), SetX() + */ + public function GetY() { + return $this->y; + } + + /** + * Defines the abscissa of the current position. + * If the passed value is negative, it is relative to the right of the page (or left if language is RTL). + * @param $x (float) The value of the abscissa in user units. + * @param $rtloff (boolean) if true always uses the page top-left corner as origin of axis. + * @public + * @since 1.2 + * @see GetX(), GetY(), SetY(), SetXY() + */ + public function SetX($x, $rtloff=false) { + $x = floatval($x); + if (!$rtloff AND $this->rtl) { + if ($x >= 0) { + $this->x = $this->w - $x; + } else { + $this->x = abs($x); + } + } else { + if ($x >= 0) { + $this->x = $x; + } else { + $this->x = $this->w + $x; + } + } + if ($this->x < 0) { + $this->x = 0; + } + if ($this->x > $this->w) { + $this->x = $this->w; + } + } + + /** + * Moves the current abscissa back to the left margin and sets the ordinate. + * If the passed value is negative, it is relative to the bottom of the page. + * @param $y (float) The value of the ordinate in user units. + * @param $resetx (bool) if true (default) reset the X position. + * @param $rtloff (boolean) if true always uses the page top-left corner as origin of axis. + * @public + * @since 1.0 + * @see GetX(), GetY(), SetY(), SetXY() + */ + public function SetY($y, $resetx=true, $rtloff=false) { + $y = floatval($y); + if ($resetx) { + //reset x + if (!$rtloff AND $this->rtl) { + $this->x = $this->w - $this->rMargin; + } else { + $this->x = $this->lMargin; + } + } + if ($y >= 0) { + $this->y = $y; + } else { + $this->y = $this->h + $y; + } + if ($this->y < 0) { + $this->y = 0; + } + if ($this->y > $this->h) { + $this->y = $this->h; + } + } + + /** + * Defines the abscissa and ordinate of the current position. + * If the passed values are negative, they are relative respectively to the right and bottom of the page. + * @param $x (float) The value of the abscissa. + * @param $y (float) The value of the ordinate. + * @param $rtloff (boolean) if true always uses the page top-left corner as origin of axis. + * @public + * @since 1.2 + * @see SetX(), SetY() + */ + public function SetXY($x, $y, $rtloff=false) { + $this->SetY($y, false, $rtloff); + $this->SetX($x, $rtloff); + } + + /** + * Set the absolute X coordinate of the current pointer. + * @param $x (float) The value of the abscissa in user units. + * @public + * @since 5.9.186 (2012-09-13) + * @see setAbsX(), setAbsY(), SetAbsXY() + */ + public function SetAbsX($x) { + $this->x = floatval($x); + } + + /** + * Set the absolute Y coordinate of the current pointer. + * @param $y (float) (float) The value of the ordinate in user units. + * @public + * @since 5.9.186 (2012-09-13) + * @see setAbsX(), setAbsY(), SetAbsXY() + */ + public function SetAbsY($y) { + $this->y = floatval($y); + } + + /** + * Set the absolute X and Y coordinates of the current pointer. + * @param $x (float) The value of the abscissa in user units. + * @param $y (float) (float) The value of the ordinate in user units. + * @public + * @since 5.9.186 (2012-09-13) + * @see setAbsX(), setAbsY(), SetAbsXY() + */ + public function SetAbsXY($x, $y) { + $this->SetAbsX($x); + $this->SetAbsY($y); + } + + /** + * Send the document to a given destination: string, local file or browser. + * In the last case, the plug-in may be used (if present) or a download ("Save as" dialog box) may be forced.
      + * The method first calls Close() if necessary to terminate the document. + * @param $name (string) The name of the file when saved. Note that special characters are removed and blanks characters are replaced with the underscore character. + * @param $dest (string) Destination where to send the document. It can take one of the following values:
      • I: send the file inline to the browser (default). The plug-in is used if available. The name given by name is used when one selects the "Save as" option on the link generating the PDF.
      • D: send to the browser and force a file download with the name given by name.
      • F: save to a local server file with the name given by name.
      • S: return the document as a string (name is ignored).
      • FI: equivalent to F + I option
      • FD: equivalent to F + D option
      • E: return the document as base64 mime multi-part email attachment (RFC 2045)
      + * @public + * @since 1.0 + * @see Close() + */ + public function Output($name='doc.pdf', $dest='I') { + //Output PDF to some destination + //Finish document if necessary + if ($this->state < 3) { + $this->Close(); + } + //Normalize parameters + if (is_bool($dest)) { + $dest = $dest ? 'D' : 'F'; + } + $dest = strtoupper($dest); + if ($dest[0] != 'F') { + $name = preg_replace('/[\s]+/', '_', $name); + $name = preg_replace('/[^a-zA-Z0-9_\.-]/', '', $name); + } + if ($this->sign) { + // *** apply digital signature to the document *** + // get the document content + $pdfdoc = $this->getBuffer(); + // remove last newline + $pdfdoc = substr($pdfdoc, 0, -1); + // Remove the original buffer + if (isset($this->diskcache) AND $this->diskcache) { + // remove buffer file from cache + unlink($this->buffer); + } + unset($this->buffer); + // remove filler space + $byterange_string_len = strlen(TCPDF_STATIC::$byterange_string); + // define the ByteRange + $byte_range = array(); + $byte_range[0] = 0; + $byte_range[1] = strpos($pdfdoc, TCPDF_STATIC::$byterange_string) + $byterange_string_len + 10; + $byte_range[2] = $byte_range[1] + $this->signature_max_length + 2; + $byte_range[3] = strlen($pdfdoc) - $byte_range[2]; + $pdfdoc = substr($pdfdoc, 0, $byte_range[1]).substr($pdfdoc, $byte_range[2]); + // replace the ByteRange + $byterange = sprintf('/ByteRange[0 %u %u %u]', $byte_range[1], $byte_range[2], $byte_range[3]); + $byterange .= str_repeat(' ', ($byterange_string_len - strlen($byterange))); + $pdfdoc = str_replace(TCPDF_STATIC::$byterange_string, $byterange, $pdfdoc); + // write the document to a temporary folder + $tempdoc = TCPDF_STATIC::getObjFilename('doc'); + $f = fopen($tempdoc, 'wb'); + if (!$f) { + $this->Error('Unable to create temporary file: '.$tempdoc); + } + $pdfdoc_length = strlen($pdfdoc); + fwrite($f, $pdfdoc, $pdfdoc_length); + fclose($f); + // get digital signature via openssl library + $tempsign = TCPDF_STATIC::getObjFilename('sig'); + if (empty($this->signature_data['extracerts'])) { + openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED); + } else { + openssl_pkcs7_sign($tempdoc, $tempsign, $this->signature_data['signcert'], array($this->signature_data['privkey'], $this->signature_data['password']), array(), PKCS7_BINARY | PKCS7_DETACHED, $this->signature_data['extracerts']); + } + unlink($tempdoc); + // read signature + $signature = file_get_contents($tempsign); + unlink($tempsign); + // extract signature + $signature = substr($signature, $pdfdoc_length); + $signature = substr($signature, (strpos($signature, "%%EOF\n\n------") + 13)); + $tmparr = explode("\n\n", $signature); + $signature = $tmparr[1]; + unset($tmparr); + // decode signature + $signature = base64_decode(trim($signature)); + // add TSA timestamp to signature + $signature = $this->applyTSA($signature); + // convert signature to hex + $signature = current(unpack('H*', $signature)); + $signature = str_pad($signature, $this->signature_max_length, '0'); + // disable disk caching + $this->diskcache = false; + // Add signature to the document + $this->buffer = substr($pdfdoc, 0, $byte_range[1]).'<'.$signature.'>'.substr($pdfdoc, $byte_range[1]); + $this->bufferlen = strlen($this->buffer); + } + switch($dest) { + case 'I': { + // Send PDF to the standard output + if (ob_get_contents()) { + $this->Error('Some data has already been output, can\'t send PDF file'); + } + if (php_sapi_name() != 'cli') { + // send output to a browser + header('Content-Type: application/pdf'); + if (headers_sent()) { + $this->Error('Some data has already been output to browser, can\'t send PDF file'); + } + header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1'); + //header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1 + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + header('Content-Disposition: inline; filename="'.basename($name).'"'); + TCPDF_STATIC::sendOutputData($this->getBuffer(), $this->bufferlen); + } else { + echo $this->getBuffer(); + } + break; + } + case 'D': { + // download PDF as file + if (ob_get_contents()) { + $this->Error('Some data has already been output, can\'t send PDF file'); + } + header('Content-Description: File Transfer'); + if (headers_sent()) { + $this->Error('Some data has already been output to browser, can\'t send PDF file'); + } + header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1'); + //header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1 + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + // force download dialog + if (strpos(php_sapi_name(), 'cgi') === false) { + header('Content-Type: application/force-download'); + header('Content-Type: application/octet-stream', false); + header('Content-Type: application/download', false); + header('Content-Type: application/pdf', false); + } else { + header('Content-Type: application/pdf'); + } + // use the Content-Disposition header to supply a recommended filename + header('Content-Disposition: attachment; filename="'.basename($name).'"'); + header('Content-Transfer-Encoding: binary'); + TCPDF_STATIC::sendOutputData($this->getBuffer(), $this->bufferlen); + break; + } + case 'F': + case 'FI': + case 'FD': { + // save PDF to a local file + if ($this->diskcache) { + copy($this->buffer, $name); + } else { + $f = fopen($name, 'wb'); + if (!$f) { + $this->Error('Unable to create output file: '.$name); + } + fwrite($f, $this->getBuffer(), $this->bufferlen); + fclose($f); + } + if ($dest == 'FI') { + // send headers to browser + header('Content-Type: application/pdf'); + header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1'); + //header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1 + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + header('Content-Disposition: inline; filename="'.basename($name).'"'); + TCPDF_STATIC::sendOutputData(file_get_contents($name), filesize($name)); + } elseif ($dest == 'FD') { + // send headers to browser + if (ob_get_contents()) { + $this->Error('Some data has already been output, can\'t send PDF file'); + } + header('Content-Description: File Transfer'); + if (headers_sent()) { + $this->Error('Some data has already been output to browser, can\'t send PDF file'); + } + header('Cache-Control: private, must-revalidate, post-check=0, pre-check=0, max-age=1'); + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + // force download dialog + if (strpos(php_sapi_name(), 'cgi') === false) { + header('Content-Type: application/force-download'); + header('Content-Type: application/octet-stream', false); + header('Content-Type: application/download', false); + header('Content-Type: application/pdf', false); + } else { + header('Content-Type: application/pdf'); + } + // use the Content-Disposition header to supply a recommended filename + header('Content-Disposition: attachment; filename="'.basename($name).'"'); + header('Content-Transfer-Encoding: binary'); + TCPDF_STATIC::sendOutputData(file_get_contents($name), filesize($name)); + } + break; + } + case 'E': { + // return PDF as base64 mime multi-part email attachment (RFC 2045) + $retval = 'Content-Type: application/pdf;'."\r\n"; + $retval .= ' name="'.$name.'"'."\r\n"; + $retval .= 'Content-Transfer-Encoding: base64'."\r\n"; + $retval .= 'Content-Disposition: attachment;'."\r\n"; + $retval .= ' filename="'.$name.'"'."\r\n\r\n"; + $retval .= chunk_split(base64_encode($this->getBuffer()), 76, "\r\n"); + return $retval; + } + case 'S': { + // returns PDF as a string + return $this->getBuffer(); + } + default: { + $this->Error('Incorrect output destination: '.$dest); + } + } + return ''; + } + + /** + * Unset all class variables except the following critical variables. + * @param $destroyall (boolean) if true destroys all class variables, otherwise preserves critical variables. + * @param $preserve_objcopy (boolean) if true preserves the objcopy variable + * @public + * @since 4.5.016 (2009-02-24) + */ + public function _destroy($destroyall=false, $preserve_objcopy=false) { + if ($destroyall AND isset($this->diskcache) AND $this->diskcache AND (!$preserve_objcopy) AND (!TCPDF_STATIC::empty_string($this->buffer))) { + // remove buffer file from cache + unlink($this->buffer); + } + if ($destroyall AND !empty($this->cached_files)) { + // remove cached files + foreach ($this->cached_files as $cachefile) { + if (is_file($cachefile)) { + unlink($cachefile); + } + } + unset($this->cached_files); + } + $preserve = array( + 'internal_encoding', + 'state', + 'bufferlen', + 'buffer', + 'diskcache', + 'cached_files', + 'sign', + 'signature_data', + 'signature_max_length', + 'byterange_string', + 'tsa_timestamp', + 'tsa_data' + ); + foreach (array_keys(get_object_vars($this)) as $val) { + if ($destroyall OR !in_array($val, $preserve)) { + if ((!$preserve_objcopy OR ($val != 'objcopy')) AND isset($this->$val)) { + unset($this->$val); + } + } + } + } + + /** + * Check for locale-related bug + * @protected + */ + protected function _dochecks() { + //Check for locale-related bug + if (1.1 == 1) { + $this->Error('Don\'t alter the locale before including class file'); + } + //Check for decimal separator + if (sprintf('%.1F', 1.0) != '1.0') { + setlocale(LC_NUMERIC, 'C'); + } + } + + /** + * Return an array containing variations for the basic page number alias. + * @param $a (string) Base alias. + * @return array of page number aliases + * @protected + */ + protected function getInternalPageNumberAliases($a= '') { + $alias = array(); + // build array of Unicode + ASCII variants (the order is important) + $alias = array('u' => array(), 'a' => array()); + $u = '{'.$a.'}'; + $alias['u'][] = TCPDF_STATIC::_escape($u); + if ($this->isunicode) { + $alias['u'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::UTF8ToLatin1($u, $this->isunicode, $this->CurrentFont)); + $alias['u'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::utf8StrRev($u, false, $this->tmprtl, $this->isunicode, $this->CurrentFont)); + $alias['a'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::UTF8ToLatin1($a, $this->isunicode, $this->CurrentFont)); + $alias['a'][] = TCPDF_STATIC::_escape(TCPDF_FONTS::utf8StrRev($a, false, $this->tmprtl, $this->isunicode, $this->CurrentFont)); + } + $alias['a'][] = TCPDF_STATIC::_escape($a); + return $alias; + } + + /** + * Return an array containing all internal page aliases. + * @return array of page number aliases + * @protected + */ + protected function getAllInternalPageNumberAliases() { + $basic_alias = array(TCPDF_STATIC::$alias_tot_pages, TCPDF_STATIC::$alias_num_page, TCPDF_STATIC::$alias_group_tot_pages, TCPDF_STATIC::$alias_group_num_page, TCPDF_STATIC::$alias_right_shift); + $pnalias = array(); + foreach($basic_alias as $k => $a) { + $pnalias[$k] = $this->getInternalPageNumberAliases($a); + } + return $pnalias; + } + + /** + * Replace right shift page number aliases with spaces to correct right alignment. + * This works perfectly only when using monospaced fonts. + * @param $page (string) Page content. + * @param $aliases (array) Array of page aliases. + * @param $diff (int) initial difference to add. + * @return replaced page content. + * @protected + */ + protected function replaceRightShiftPageNumAliases($page, $aliases, $diff) { + foreach ($aliases as $type => $alias) { + foreach ($alias as $a) { + // find position of compensation factor + $startnum = (strpos($a, ':') + 1); + $a = substr($a, 0, $startnum); + if (($pos = strpos($page, $a)) !== false) { + // end of alias + $endnum = strpos($page, '}', $pos); + // string to be replaced + $aa = substr($page, $pos, ($endnum - $pos + 1)); + // get compensation factor + $ratio = substr($page, ($pos + $startnum), ($endnum - $pos - $startnum)); + $ratio = preg_replace('/[^0-9\.]/', '', $ratio); + $ratio = floatval($ratio); + if ($type == 'u') { + $chrdiff = floor(($diff + 12) * $ratio); + $shift = str_repeat(' ', $chrdiff); + $shift = TCPDF_FONTS::UTF8ToUTF16BE($shift, false, $this->isunicode, $this->CurrentFont); + } else { + $chrdiff = floor(($diff + 11) * $ratio); + $shift = str_repeat(' ', $chrdiff); + } + $page = str_replace($aa, $shift, $page); + } + } + } + return $page; + } + + /** + * Set page boxes to be included on page descriptions. + * @param $boxes (array) Array of page boxes to set on document: ('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'). + * @protected + */ + protected function setPageBoxTypes($boxes) { + $this->page_boxes = array(); + foreach ($boxes as $box) { + if (in_array($box, TCPDF_STATIC::$pageboxes)) { + $this->page_boxes[] = $box; + } + } + } + + /** + * Output pages (and replace page number aliases). + * @protected + */ + protected function _putpages() { + $filter = ($this->compress) ? '/Filter /FlateDecode ' : ''; + // get internal aliases for page numbers + $pnalias = $this->getAllInternalPageNumberAliases(); + $num_pages = $this->numpages; + $ptpa = TCPDF_STATIC::formatPageNumber(($this->starting_page_number + $num_pages - 1)); + $ptpu = TCPDF_FONTS::UTF8ToUTF16BE($ptpa, false, $this->isunicode, $this->CurrentFont); + $ptp_num_chars = $this->GetNumChars($ptpa); + $pagegroupnum = 0; + $groupnum = 0; + $ptgu = 1; + $ptga = 1; + $ptg_num_chars = 1; + for ($n = 1; $n <= $num_pages; ++$n) { + // get current page + $temppage = $this->getPageBuffer($n); + $pagelen = strlen($temppage); + // set replacements for total pages number + $pnpa = TCPDF_STATIC::formatPageNumber(($this->starting_page_number + $n - 1)); + $pnpu = TCPDF_FONTS::UTF8ToUTF16BE($pnpa, false, $this->isunicode, $this->CurrentFont); + $pnp_num_chars = $this->GetNumChars($pnpa); + $pdiff = 0; // difference used for right shift alignment of page numbers + $gdiff = 0; // difference used for right shift alignment of page group numbers + if (!empty($this->pagegroups)) { + if (isset($this->newpagegroup[$n])) { + $pagegroupnum = 0; + ++$groupnum; + $ptga = TCPDF_STATIC::formatPageNumber($this->pagegroups[$groupnum]); + $ptgu = TCPDF_FONTS::UTF8ToUTF16BE($ptga, false, $this->isunicode, $this->CurrentFont); + $ptg_num_chars = $this->GetNumChars($ptga); + } + ++$pagegroupnum; + $pnga = TCPDF_STATIC::formatPageNumber($pagegroupnum); + $pngu = TCPDF_FONTS::UTF8ToUTF16BE($pnga, false, $this->isunicode, $this->CurrentFont); + $png_num_chars = $this->GetNumChars($pnga); + // replace page numbers + $replace = array(); + $replace[] = array($ptgu, $ptg_num_chars, 9, $pnalias[2]['u']); + $replace[] = array($ptga, $ptg_num_chars, 7, $pnalias[2]['a']); + $replace[] = array($pngu, $png_num_chars, 9, $pnalias[3]['u']); + $replace[] = array($pnga, $png_num_chars, 7, $pnalias[3]['a']); + list($temppage, $gdiff) = TCPDF_STATIC::replacePageNumAliases($temppage, $replace, $gdiff); + } + // replace page numbers + $replace = array(); + $replace[] = array($ptpu, $ptp_num_chars, 9, $pnalias[0]['u']); + $replace[] = array($ptpa, $ptp_num_chars, 7, $pnalias[0]['a']); + $replace[] = array($pnpu, $pnp_num_chars, 9, $pnalias[1]['u']); + $replace[] = array($pnpa, $pnp_num_chars, 7, $pnalias[1]['a']); + list($temppage, $pdiff) = TCPDF_STATIC::replacePageNumAliases($temppage, $replace, $pdiff); + // replace right shift alias + $temppage = $this->replaceRightShiftPageNumAliases($temppage, $pnalias[4], max($pdiff, $gdiff)); + // replace EPS marker + $temppage = str_replace($this->epsmarker, '', $temppage); + //Page + $this->page_obj_id[$n] = $this->_newobj(); + $out = '<<'; + $out .= ' /Type /Page'; + $out .= ' /Parent 1 0 R'; + if (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A')) { + $out .= ' /LastModified '.$this->_datestring(0, $this->doc_modification_timestamp); + } + $out .= ' /Resources 2 0 R'; + foreach ($this->page_boxes as $box) { + $out .= ' /'.$box; + $out .= sprintf(' [%F %F %F %F]', $this->pagedim[$n][$box]['llx'], $this->pagedim[$n][$box]['lly'], $this->pagedim[$n][$box]['urx'], $this->pagedim[$n][$box]['ury']); + } + if (isset($this->pagedim[$n]['BoxColorInfo']) AND !empty($this->pagedim[$n]['BoxColorInfo'])) { + $out .= ' /BoxColorInfo <<'; + foreach ($this->page_boxes as $box) { + if (isset($this->pagedim[$n]['BoxColorInfo'][$box])) { + $out .= ' /'.$box.' <<'; + if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['C'])) { + $color = $this->pagedim[$n]['BoxColorInfo'][$box]['C']; + $out .= ' /C ['; + $out .= sprintf(' %F %F %F', ($color[0] / 255), ($color[1] / 255), ($color[2] / 255)); + $out .= ' ]'; + } + if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['W'])) { + $out .= ' /W '.($this->pagedim[$n]['BoxColorInfo'][$box]['W'] * $this->k); + } + if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['S'])) { + $out .= ' /S /'.$this->pagedim[$n]['BoxColorInfo'][$box]['S']; + } + if (isset($this->pagedim[$n]['BoxColorInfo'][$box]['D'])) { + $dashes = $this->pagedim[$n]['BoxColorInfo'][$box]['D']; + $out .= ' /D ['; + foreach ($dashes as $dash) { + $out .= sprintf(' %F', ($dash * $this->k)); + } + $out .= ' ]'; + } + $out .= ' >>'; + } + } + $out .= ' >>'; + } + $out .= ' /Contents '.($this->n + 1).' 0 R'; + $out .= ' /Rotate '.$this->pagedim[$n]['Rotate']; + if (!$this->pdfa_mode) { + $out .= ' /Group << /Type /Group /S /Transparency /CS /DeviceRGB >>'; + } + if (isset($this->pagedim[$n]['trans']) AND !empty($this->pagedim[$n]['trans'])) { + // page transitions + if (isset($this->pagedim[$n]['trans']['Dur'])) { + $out .= ' /Dur '.$this->pagedim[$n]['trans']['Dur']; + } + $out .= ' /Trans <<'; + $out .= ' /Type /Trans'; + if (isset($this->pagedim[$n]['trans']['S'])) { + $out .= ' /S /'.$this->pagedim[$n]['trans']['S']; + } + if (isset($this->pagedim[$n]['trans']['D'])) { + $out .= ' /D '.$this->pagedim[$n]['trans']['D']; + } + if (isset($this->pagedim[$n]['trans']['Dm'])) { + $out .= ' /Dm /'.$this->pagedim[$n]['trans']['Dm']; + } + if (isset($this->pagedim[$n]['trans']['M'])) { + $out .= ' /M /'.$this->pagedim[$n]['trans']['M']; + } + if (isset($this->pagedim[$n]['trans']['Di'])) { + $out .= ' /Di '.$this->pagedim[$n]['trans']['Di']; + } + if (isset($this->pagedim[$n]['trans']['SS'])) { + $out .= ' /SS '.$this->pagedim[$n]['trans']['SS']; + } + if (isset($this->pagedim[$n]['trans']['B'])) { + $out .= ' /B '.$this->pagedim[$n]['trans']['B']; + } + $out .= ' >>'; + } + $out .= $this->_getannotsrefs($n); + $out .= ' /PZ '.$this->pagedim[$n]['PZ']; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + //Page content + $p = ($this->compress) ? gzcompress($temppage) : $temppage; + $this->_newobj(); + $p = $this->_getrawstream($p); + $this->_out('<<'.$filter.'/Length '.strlen($p).'>> stream'."\n".$p."\n".'endstream'."\n".'endobj'); + if ($this->diskcache) { + // remove temporary files + unlink($this->pages[$n]); + } + } + //Pages root + $out = $this->_getobj(1)."\n"; + $out .= '<< /Type /Pages /Kids ['; + foreach($this->page_obj_id as $page_obj) { + $out .= ' '.$page_obj.' 0 R'; + } + $out .= ' ] /Count '.$num_pages.' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + + /** + * Output references to page annotations + * @param $n (int) page number + * @protected + * @author Nicola Asuni + * @since 4.7.000 (2008-08-29) + * @deprecated + */ + protected function _putannotsrefs($n) { + $this->_out($this->_getannotsrefs($n)); + } + + /** + * Get references to page annotations. + * @param $n (int) page number + * @return string + * @protected + * @author Nicola Asuni + * @since 5.0.010 (2010-05-17) + */ + protected function _getannotsrefs($n) { + if (!(isset($this->PageAnnots[$n]) OR ($this->sign AND isset($this->signature_data['cert_type'])))) { + return ''; + } + $out = ' /Annots ['; + if (isset($this->PageAnnots[$n])) { + foreach ($this->PageAnnots[$n] as $key => $val) { + if (!in_array($val['n'], $this->radio_groups)) { + $out .= ' '.$val['n'].' 0 R'; + } + } + // add radiobutton groups + if (isset($this->radiobutton_groups[$n])) { + foreach ($this->radiobutton_groups[$n] as $key => $data) { + if (isset($data['n'])) { + $out .= ' '.$data['n'].' 0 R'; + } + } + } + } + if ($this->sign AND ($n == $this->signature_appearance['page']) AND isset($this->signature_data['cert_type'])) { + // set reference for signature object + $out .= ' '.$this->sig_obj_id.' 0 R'; + } + if (!empty($this->empty_signature_appearance)) { + foreach ($this->empty_signature_appearance as $esa) { + if ($esa['page'] == $n) { + // set reference for empty signature objects + $out .= ' '.$esa['objid'].' 0 R'; + } + } + } + $out .= ' ]'; + return $out; + } + + /** + * Output annotations objects for all pages. + * !!! THIS METHOD IS NOT YET COMPLETED !!! + * See section 12.5 of PDF 32000_2008 reference. + * @protected + * @author Nicola Asuni + * @since 4.0.018 (2008-08-06) + */ + protected function _putannotsobjs() { + // reset object counter + for ($n=1; $n <= $this->numpages; ++$n) { + if (isset($this->PageAnnots[$n])) { + // set page annotations + foreach ($this->PageAnnots[$n] as $key => $pl) { + $annot_obj_id = $this->PageAnnots[$n][$key]['n']; + // create annotation object for grouping radiobuttons + if (isset($this->radiobutton_groups[$n][$pl['txt']]) AND is_array($this->radiobutton_groups[$n][$pl['txt']])) { + $radio_button_obj_id = $this->radiobutton_groups[$n][$pl['txt']]['n']; + $annots = '<<'; + $annots .= ' /Type /Annot'; + $annots .= ' /Subtype /Widget'; + $annots .= ' /Rect [0 0 0 0]'; + if ($this->radiobutton_groups[$n][$pl['txt']]['#readonly#']) { + // read only + $annots .= ' /F 68'; + $annots .= ' /Ff 49153'; + } else { + $annots .= ' /F 4'; // default print for PDF/A + $annots .= ' /Ff 49152'; + } + $annots .= ' /T '.$this->_datastring($pl['txt'], $radio_button_obj_id); + if (isset($pl['opt']['tu']) AND is_string($pl['opt']['tu'])) { + $annots .= ' /TU '.$this->_datastring($pl['opt']['tu'], $radio_button_obj_id); + } + $annots .= ' /FT /Btn'; + $annots .= ' /Kids ['; + $defval = ''; + foreach ($this->radiobutton_groups[$n][$pl['txt']] as $key => $data) { + if (isset($data['kid'])) { + $annots .= ' '.$data['kid'].' 0 R'; + if ($data['def'] !== 'Off') { + $defval = $data['def']; + } + } + } + $annots .= ' ]'; + if (!empty($defval)) { + $annots .= ' /V /'.$defval; + } + $annots .= ' >>'; + $this->_out($this->_getobj($radio_button_obj_id)."\n".$annots."\n".'endobj'); + $this->form_obj_id[] = $radio_button_obj_id; + // store object id to be used on Parent entry of Kids + $this->radiobutton_groups[$n][$pl['txt']] = $radio_button_obj_id; + } + $formfield = false; + $pl['opt'] = array_change_key_case($pl['opt'], CASE_LOWER); + $a = $pl['x'] * $this->k; + $b = $this->pagedim[$n]['h'] - (($pl['y'] + $pl['h']) * $this->k); + $c = $pl['w'] * $this->k; + $d = $pl['h'] * $this->k; + $rect = sprintf('%F %F %F %F', $a, $b, $a+$c, $b+$d); + // create new annotation object + $annots = '<_textstring($pl['txt'], $annot_obj_id); + $annots .= ' /P '.$this->page_obj_id[$n].' 0 R'; + $annots .= ' /NM '.$this->_datastring(sprintf('%04u-%04u', $n, $key), $annot_obj_id); + $annots .= ' /M '.$this->_datestring($annot_obj_id, $this->doc_modification_timestamp); + if (isset($pl['opt']['f'])) { + $fval = 0; + if (is_array($pl['opt']['f'])) { + foreach ($pl['opt']['f'] as $f) { + switch (strtolower($f)) { + case 'invisible': { + $fval += 1 << 0; + break; + } + case 'hidden': { + $fval += 1 << 1; + break; + } + case 'print': { + $fval += 1 << 2; + break; + } + case 'nozoom': { + $fval += 1 << 3; + break; + } + case 'norotate': { + $fval += 1 << 4; + break; + } + case 'noview': { + $fval += 1 << 5; + break; + } + case 'readonly': { + $fval += 1 << 6; + break; + } + case 'locked': { + $fval += 1 << 8; + break; + } + case 'togglenoview': { + $fval += 1 << 9; + break; + } + case 'lockedcontents': { + $fval += 1 << 10; + break; + } + default: { + break; + } + } + } + } else { + $fval = intval($pl['opt']['f']); + } + } else { + $fval = 4; + } + if ($this->pdfa_mode) { + // force print flag for PDF/A mode + $fval |= 4; + } + $annots .= ' /F '.intval($fval); + if (isset($pl['opt']['as']) AND is_string($pl['opt']['as'])) { + $annots .= ' /AS /'.$pl['opt']['as']; + } + if (isset($pl['opt']['ap'])) { + // appearance stream + $annots .= ' /AP <<'; + if (is_array($pl['opt']['ap'])) { + foreach ($pl['opt']['ap'] as $apmode => $apdef) { + // $apmode can be: n = normal; r = rollover; d = down; + $annots .= ' /'.strtoupper($apmode); + if (is_array($apdef)) { + $annots .= ' <<'; + foreach ($apdef as $apstate => $stream) { + // reference to XObject that define the appearance for this mode-state + $apsobjid = $this->_putAPXObject($c, $d, $stream); + $annots .= ' /'.$apstate.' '.$apsobjid.' 0 R'; + } + $annots .= ' >>'; + } else { + // reference to XObject that define the appearance for this mode + $apsobjid = $this->_putAPXObject($c, $d, $apdef); + $annots .= ' '.$apsobjid.' 0 R'; + } + } + } else { + $annots .= $pl['opt']['ap']; + } + $annots .= ' >>'; + } + if (isset($pl['opt']['bs']) AND (is_array($pl['opt']['bs']))) { + $annots .= ' /BS <<'; + $annots .= ' /Type /Border'; + if (isset($pl['opt']['bs']['w'])) { + $annots .= ' /W '.intval($pl['opt']['bs']['w']); + } + $bstyles = array('S', 'D', 'B', 'I', 'U'); + if (isset($pl['opt']['bs']['s']) AND in_array($pl['opt']['bs']['s'], $bstyles)) { + $annots .= ' /S /'.$pl['opt']['bs']['s']; + } + if (isset($pl['opt']['bs']['d']) AND (is_array($pl['opt']['bs']['d']))) { + $annots .= ' /D ['; + foreach ($pl['opt']['bs']['d'] as $cord) { + $annots .= ' '.intval($cord); + } + $annots .= ']'; + } + $annots .= ' >>'; + } else { + $annots .= ' /Border ['; + if (isset($pl['opt']['border']) AND (count($pl['opt']['border']) >= 3)) { + $annots .= intval($pl['opt']['border'][0]).' '; + $annots .= intval($pl['opt']['border'][1]).' '; + $annots .= intval($pl['opt']['border'][2]); + if (isset($pl['opt']['border'][3]) AND is_array($pl['opt']['border'][3])) { + $annots .= ' ['; + foreach ($pl['opt']['border'][3] as $dash) { + $annots .= intval($dash).' '; + } + $annots .= ']'; + } + } else { + $annots .= '0 0 0'; + } + $annots .= ']'; + } + if (isset($pl['opt']['be']) AND (is_array($pl['opt']['be']))) { + $annots .= ' /BE <<'; + $bstyles = array('S', 'C'); + if (isset($pl['opt']['be']['s']) AND in_array($pl['opt']['be']['s'], $bstyles)) { + $annots .= ' /S /'.$pl['opt']['bs']['s']; + } else { + $annots .= ' /S /S'; + } + if (isset($pl['opt']['be']['i']) AND ($pl['opt']['be']['i'] >= 0) AND ($pl['opt']['be']['i'] <= 2)) { + $annots .= ' /I '.sprintf(' %F', $pl['opt']['be']['i']); + } + $annots .= '>>'; + } + if (isset($pl['opt']['c']) AND (is_array($pl['opt']['c'])) AND !empty($pl['opt']['c'])) { + $annots .= ' /C '.TCPDF_COLORS::getColorStringFromArray($pl['opt']['c']); + } + //$annots .= ' /StructParent '; + //$annots .= ' /OC '; + $markups = array('text', 'freetext', 'line', 'square', 'circle', 'polygon', 'polyline', 'highlight', 'underline', 'squiggly', 'strikeout', 'stamp', 'caret', 'ink', 'fileattachment', 'sound'); + if (in_array(strtolower($pl['opt']['subtype']), $markups)) { + // this is a markup type + if (isset($pl['opt']['t']) AND is_string($pl['opt']['t'])) { + $annots .= ' /T '.$this->_textstring($pl['opt']['t'], $annot_obj_id); + } + //$annots .= ' /Popup '; + if (isset($pl['opt']['ca'])) { + $annots .= ' /CA '.sprintf('%F', floatval($pl['opt']['ca'])); + } + if (isset($pl['opt']['rc'])) { + $annots .= ' /RC '.$this->_textstring($pl['opt']['rc'], $annot_obj_id); + } + $annots .= ' /CreationDate '.$this->_datestring($annot_obj_id, $this->doc_creation_timestamp); + //$annots .= ' /IRT '; + if (isset($pl['opt']['subj'])) { + $annots .= ' /Subj '.$this->_textstring($pl['opt']['subj'], $annot_obj_id); + } + //$annots .= ' /RT '; + //$annots .= ' /IT '; + //$annots .= ' /ExData '; + } + $lineendings = array('Square', 'Circle', 'Diamond', 'OpenArrow', 'ClosedArrow', 'None', 'Butt', 'ROpenArrow', 'RClosedArrow', 'Slash'); + // Annotation types + switch (strtolower($pl['opt']['subtype'])) { + case 'text': { + if (isset($pl['opt']['open'])) { + $annots .= ' /Open '. (strtolower($pl['opt']['open']) == 'true' ? 'true' : 'false'); + } + $iconsapp = array('Comment', 'Help', 'Insert', 'Key', 'NewParagraph', 'Note', 'Paragraph'); + if (isset($pl['opt']['name']) AND in_array($pl['opt']['name'], $iconsapp)) { + $annots .= ' /Name /'.$pl['opt']['name']; + } else { + $annots .= ' /Name /Note'; + } + $statemodels = array('Marked', 'Review'); + if (isset($pl['opt']['statemodel']) AND in_array($pl['opt']['statemodel'], $statemodels)) { + $annots .= ' /StateModel /'.$pl['opt']['statemodel']; + } else { + $pl['opt']['statemodel'] = 'Marked'; + $annots .= ' /StateModel /'.$pl['opt']['statemodel']; + } + if ($pl['opt']['statemodel'] == 'Marked') { + $states = array('Accepted', 'Unmarked'); + } else { + $states = array('Accepted', 'Rejected', 'Cancelled', 'Completed', 'None'); + } + if (isset($pl['opt']['state']) AND in_array($pl['opt']['state'], $states)) { + $annots .= ' /State /'.$pl['opt']['state']; + } else { + if ($pl['opt']['statemodel'] == 'Marked') { + $annots .= ' /State /Unmarked'; + } else { + $annots .= ' /State /None'; + } + } + break; + } + case 'link': { + if (is_string($pl['txt'])) { + if ($pl['txt'][0] == '#') { + // internal destination + $annots .= ' /Dest /'.TCPDF_STATIC::encodeNameObject(substr($pl['txt'], 1)); + } elseif ($pl['txt'][0] == '%') { + // embedded PDF file + $filename = basename(substr($pl['txt'], 1)); + $annots .= ' /A << /S /GoToE /D [0 /Fit] /NewWindow true /T << /R /C /P '.($n - 1).' /A '.$this->embeddedfiles[$filename]['a'].' >> >>'; + } elseif ($pl['txt'][0] == '*') { + // embedded generic file + $filename = basename(substr($pl['txt'], 1)); + $jsa = 'var D=event.target.doc;var MyData=D.dataObjects;for (var i in MyData) if (MyData[i].path=="'.$filename.'") D.exportDataObject( { cName : MyData[i].name, nLaunch : 2});'; + $annots .= ' /A << /S /JavaScript /JS '.$this->_textstring($jsa, $annot_obj_id).'>>'; + } else { + $parsedUrl = parse_url($pl['txt']); + if (empty($parsedUrl['scheme']) AND (strtolower(substr($parsedUrl['path'], -4)) == '.pdf')) { + // relative link to a PDF file + $dest = '[0 /Fit]'; // default page 0 + if (!empty($parsedUrl['fragment'])) { + // check for named destination + $tmp = explode('=', $parsedUrl['fragment']); + $dest = '('.((count($tmp) == 2) ? $tmp[1] : $tmp[0]).')'; + } + $annots .= ' /A <_datastring($this->unhtmlentities($parsedUrl['path']), $annot_obj_id).' /NewWindow true>>'; + } else { + // external URI link + $annots .= ' /A <_datastring($this->unhtmlentities($pl['txt']), $annot_obj_id).'>>'; + } + } + } elseif (isset($this->links[$pl['txt']])) { + // internal link ID + $l = $this->links[$pl['txt']]; + if (isset($this->page_obj_id[($l['p'])])) { + $annots .= sprintf(' /Dest [%u 0 R /XYZ 0 %F null]', $this->page_obj_id[($l['p'])], ($this->pagedim[$l['p']]['h'] - ($l['y'] * $this->k))); + } + } + $hmodes = array('N', 'I', 'O', 'P'); + if (isset($pl['opt']['h']) AND in_array($pl['opt']['h'], $hmodes)) { + $annots .= ' /H /'.$pl['opt']['h']; + } else { + $annots .= ' /H /I'; + } + //$annots .= ' /PA '; + //$annots .= ' /Quadpoints '; + break; + } + case 'freetext': { + if (isset($pl['opt']['da']) AND !empty($pl['opt']['da'])) { + $annots .= ' /DA ('.$pl['opt']['da'].')'; + } + if (isset($pl['opt']['q']) AND ($pl['opt']['q'] >= 0) AND ($pl['opt']['q'] <= 2)) { + $annots .= ' /Q '.intval($pl['opt']['q']); + } + if (isset($pl['opt']['rc'])) { + $annots .= ' /RC '.$this->_textstring($pl['opt']['rc'], $annot_obj_id); + } + if (isset($pl['opt']['ds'])) { + $annots .= ' /DS '.$this->_textstring($pl['opt']['ds'], $annot_obj_id); + } + if (isset($pl['opt']['cl']) AND is_array($pl['opt']['cl'])) { + $annots .= ' /CL ['; + foreach ($pl['opt']['cl'] as $cl) { + $annots .= sprintf('%F ', $cl * $this->k); + } + $annots .= ']'; + } + $tfit = array('FreeText', 'FreeTextCallout', 'FreeTextTypeWriter'); + if (isset($pl['opt']['it']) AND in_array($pl['opt']['it'], $tfit)) { + $annots .= ' /IT /'.$pl['opt']['it']; + } + if (isset($pl['opt']['rd']) AND is_array($pl['opt']['rd'])) { + $l = $pl['opt']['rd'][0] * $this->k; + $r = $pl['opt']['rd'][1] * $this->k; + $t = $pl['opt']['rd'][2] * $this->k; + $b = $pl['opt']['rd'][3] * $this->k; + $annots .= ' /RD ['.sprintf('%F %F %F %F', $l, $r, $t, $b).']'; + } + if (isset($pl['opt']['le']) AND in_array($pl['opt']['le'], $lineendings)) { + $annots .= ' /LE /'.$pl['opt']['le']; + } + break; + } + case 'line': { + break; + } + case 'square': { + break; + } + case 'circle': { + break; + } + case 'polygon': { + break; + } + case 'polyline': { + break; + } + case 'highlight': { + break; + } + case 'underline': { + break; + } + case 'squiggly': { + break; + } + case 'strikeout': { + break; + } + case 'stamp': { + break; + } + case 'caret': { + break; + } + case 'ink': { + break; + } + case 'popup': { + break; + } + case 'fileattachment': { + if ($this->pdfa_mode) { + // embedded files are not allowed in PDF/A mode + break; + } + if (!isset($pl['opt']['fs'])) { + break; + } + $filename = basename($pl['opt']['fs']); + if (isset($this->embeddedfiles[$filename]['f'])) { + $annots .= ' /FS '.$this->embeddedfiles[$filename]['f'].' 0 R'; + $iconsapp = array('Graph', 'Paperclip', 'PushPin', 'Tag'); + if (isset($pl['opt']['name']) AND in_array($pl['opt']['name'], $iconsapp)) { + $annots .= ' /Name /'.$pl['opt']['name']; + } else { + $annots .= ' /Name /PushPin'; + } + // index (zero-based) of the annotation in the Annots array of this page + $this->embeddedfiles[$filename]['a'] = $key; + } + break; + } + case 'sound': { + if (!isset($pl['opt']['fs'])) { + break; + } + $filename = basename($pl['opt']['fs']); + if (isset($this->embeddedfiles[$filename]['f'])) { + // ... TO BE COMPLETED ... + // /R /C /B /E /CO /CP + $annots .= ' /Sound '.$this->embeddedfiles[$filename]['f'].' 0 R'; + $iconsapp = array('Speaker', 'Mic'); + if (isset($pl['opt']['name']) AND in_array($pl['opt']['name'], $iconsapp)) { + $annots .= ' /Name /'.$pl['opt']['name']; + } else { + $annots .= ' /Name /Speaker'; + } + } + break; + } + case 'movie': { + break; + } + case 'widget': { + $hmode = array('N', 'I', 'O', 'P', 'T'); + if (isset($pl['opt']['h']) AND in_array($pl['opt']['h'], $hmode)) { + $annots .= ' /H /'.$pl['opt']['h']; + } + if (isset($pl['opt']['mk']) AND (is_array($pl['opt']['mk'])) AND !empty($pl['opt']['mk'])) { + $annots .= ' /MK <<'; + if (isset($pl['opt']['mk']['r'])) { + $annots .= ' /R '.$pl['opt']['mk']['r']; + } + if (isset($pl['opt']['mk']['bc']) AND (is_array($pl['opt']['mk']['bc']))) { + $annots .= ' /BC '.TCPDF_COLORS::getColorStringFromArray($pl['opt']['mk']['bc']); + } + if (isset($pl['opt']['mk']['bg']) AND (is_array($pl['opt']['mk']['bg']))) { + $annots .= ' /BG '.TCPDF_COLORS::getColorStringFromArray($pl['opt']['mk']['bg']); + } + if (isset($pl['opt']['mk']['ca'])) { + $annots .= ' /CA '.$pl['opt']['mk']['ca']; + } + if (isset($pl['opt']['mk']['rc'])) { + $annots .= ' /RC '.$pl['opt']['mk']['rc']; + } + if (isset($pl['opt']['mk']['ac'])) { + $annots .= ' /AC '.$pl['opt']['mk']['ac']; + } + if (isset($pl['opt']['mk']['i'])) { + $info = $this->getImageBuffer($pl['opt']['mk']['i']); + if ($info !== false) { + $annots .= ' /I '.$info['n'].' 0 R'; + } + } + if (isset($pl['opt']['mk']['ri'])) { + $info = $this->getImageBuffer($pl['opt']['mk']['ri']); + if ($info !== false) { + $annots .= ' /RI '.$info['n'].' 0 R'; + } + } + if (isset($pl['opt']['mk']['ix'])) { + $info = $this->getImageBuffer($pl['opt']['mk']['ix']); + if ($info !== false) { + $annots .= ' /IX '.$info['n'].' 0 R'; + } + } + if (isset($pl['opt']['mk']['if']) AND (is_array($pl['opt']['mk']['if'])) AND !empty($pl['opt']['mk']['if'])) { + $annots .= ' /IF <<'; + $if_sw = array('A', 'B', 'S', 'N'); + if (isset($pl['opt']['mk']['if']['sw']) AND in_array($pl['opt']['mk']['if']['sw'], $if_sw)) { + $annots .= ' /SW /'.$pl['opt']['mk']['if']['sw']; + } + $if_s = array('A', 'P'); + if (isset($pl['opt']['mk']['if']['s']) AND in_array($pl['opt']['mk']['if']['s'], $if_s)) { + $annots .= ' /S /'.$pl['opt']['mk']['if']['s']; + } + if (isset($pl['opt']['mk']['if']['a']) AND (is_array($pl['opt']['mk']['if']['a'])) AND !empty($pl['opt']['mk']['if']['a'])) { + $annots .= sprintf(' /A [%F %F]', $pl['opt']['mk']['if']['a'][0], $pl['opt']['mk']['if']['a'][1]); + } + if (isset($pl['opt']['mk']['if']['fb']) AND ($pl['opt']['mk']['if']['fb'])) { + $annots .= ' /FB true'; + } + $annots .= '>>'; + } + if (isset($pl['opt']['mk']['tp']) AND ($pl['opt']['mk']['tp'] >= 0) AND ($pl['opt']['mk']['tp'] <= 6)) { + $annots .= ' /TP '.intval($pl['opt']['mk']['tp']); + } + $annots .= '>>'; + } // end MK + // --- Entries for field dictionaries --- + if (isset($this->radiobutton_groups[$n][$pl['txt']])) { + // set parent + $annots .= ' /Parent '.$this->radiobutton_groups[$n][$pl['txt']].' 0 R'; + } + if (isset($pl['opt']['t']) AND is_string($pl['opt']['t'])) { + $annots .= ' /T '.$this->_datastring($pl['opt']['t'], $annot_obj_id); + } + if (isset($pl['opt']['tu']) AND is_string($pl['opt']['tu'])) { + $annots .= ' /TU '.$this->_datastring($pl['opt']['tu'], $annot_obj_id); + } + if (isset($pl['opt']['tm']) AND is_string($pl['opt']['tm'])) { + $annots .= ' /TM '.$this->_datastring($pl['opt']['tm'], $annot_obj_id); + } + if (isset($pl['opt']['ff'])) { + if (is_array($pl['opt']['ff'])) { + // array of bit settings + $flag = 0; + foreach($pl['opt']['ff'] as $val) { + $flag += 1 << ($val - 1); + } + } else { + $flag = intval($pl['opt']['ff']); + } + $annots .= ' /Ff '.$flag; + } + if (isset($pl['opt']['maxlen'])) { + $annots .= ' /MaxLen '.intval($pl['opt']['maxlen']); + } + if (isset($pl['opt']['v'])) { + $annots .= ' /V'; + if (is_array($pl['opt']['v'])) { + foreach ($pl['opt']['v'] AS $optval) { + if (is_float($optval)) { + $optval = sprintf('%F', $optval); + } + $annots .= ' '.$optval; + } + } else { + $annots .= ' '.$this->_textstring($pl['opt']['v'], $annot_obj_id); + } + } + if (isset($pl['opt']['dv'])) { + $annots .= ' /DV'; + if (is_array($pl['opt']['dv'])) { + foreach ($pl['opt']['dv'] AS $optval) { + if (is_float($optval)) { + $optval = sprintf('%F', $optval); + } + $annots .= ' '.$optval; + } + } else { + $annots .= ' '.$this->_textstring($pl['opt']['dv'], $annot_obj_id); + } + } + if (isset($pl['opt']['rv'])) { + $annots .= ' /RV'; + if (is_array($pl['opt']['rv'])) { + foreach ($pl['opt']['rv'] AS $optval) { + if (is_float($optval)) { + $optval = sprintf('%F', $optval); + } + $annots .= ' '.$optval; + } + } else { + $annots .= ' '.$this->_textstring($pl['opt']['rv'], $annot_obj_id); + } + } + if (isset($pl['opt']['a']) AND !empty($pl['opt']['a'])) { + $annots .= ' /A << '.$pl['opt']['a'].' >>'; + } + if (isset($pl['opt']['aa']) AND !empty($pl['opt']['aa'])) { + $annots .= ' /AA << '.$pl['opt']['aa'].' >>'; + } + if (isset($pl['opt']['da']) AND !empty($pl['opt']['da'])) { + $annots .= ' /DA ('.$pl['opt']['da'].')'; + } + if (isset($pl['opt']['q']) AND ($pl['opt']['q'] >= 0) AND ($pl['opt']['q'] <= 2)) { + $annots .= ' /Q '.intval($pl['opt']['q']); + } + if (isset($pl['opt']['opt']) AND (is_array($pl['opt']['opt'])) AND !empty($pl['opt']['opt'])) { + $annots .= ' /Opt ['; + foreach($pl['opt']['opt'] AS $copt) { + if (is_array($copt)) { + $annots .= ' ['.$this->_textstring($copt[0], $annot_obj_id).' '.$this->_textstring($copt[1], $annot_obj_id).']'; + } else { + $annots .= ' '.$this->_textstring($copt, $annot_obj_id); + } + } + $annots .= ']'; + } + if (isset($pl['opt']['ti'])) { + $annots .= ' /TI '.intval($pl['opt']['ti']); + } + if (isset($pl['opt']['i']) AND (is_array($pl['opt']['i'])) AND !empty($pl['opt']['i'])) { + $annots .= ' /I ['; + foreach($pl['opt']['i'] AS $copt) { + $annots .= intval($copt).' '; + } + $annots .= ']'; + } + break; + } + case 'screen': { + break; + } + case 'printermark': { + break; + } + case 'trapnet': { + break; + } + case 'watermark': { + break; + } + case '3d': { + break; + } + default: { + break; + } + } + $annots .= '>>'; + // create new annotation object + $this->_out($this->_getobj($annot_obj_id)."\n".$annots."\n".'endobj'); + if ($formfield AND !isset($this->radiobutton_groups[$n][$pl['txt']])) { + // store reference of form object + $this->form_obj_id[] = $annot_obj_id; + } + } + } + } // end for each page + } + + /** + * Put appearance streams XObject used to define annotation's appearance states. + * @param $w (int) annotation width + * @param $h (int) annotation height + * @param $stream (string) appearance stream + * @return int object ID + * @protected + * @since 4.8.001 (2009-09-09) + */ + protected function _putAPXObject($w=0, $h=0, $stream='') { + $stream = trim($stream); + $out = $this->_getobj()."\n"; + $this->xobjects['AX'.$this->n] = array('n' => $this->n); + $out .= '<<'; + $out .= ' /Type /XObject'; + $out .= ' /Subtype /Form'; + $out .= ' /FormType 1'; + if ($this->compress) { + $stream = gzcompress($stream); + $out .= ' /Filter /FlateDecode'; + } + $rect = sprintf('%F %F', $w, $h); + $out .= ' /BBox [0 0 '.$rect.']'; + $out .= ' /Matrix [1 0 0 1 0 0]'; + $out .= ' /Resources 2 0 R'; + $stream = $this->_getrawstream($stream); + $out .= ' /Length '.strlen($stream); + $out .= ' >>'; + $out .= ' stream'."\n".$stream."\n".'endstream'; + $out .= "\n".'endobj'; + $this->_out($out); + return $this->n; + } + + /** + * Output fonts. + * @author Nicola Asuni + * @protected + */ + protected function _putfonts() { + $nf = $this->n; + foreach ($this->diffs as $diff) { + //Encodings + $this->_newobj(); + $this->_out('<< /Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.'] >>'."\n".'endobj'); + } + $mqr = TCPDF_STATIC::get_mqr(); + TCPDF_STATIC::set_mqr(false); + foreach ($this->FontFiles as $file => $info) { + // search and get font file to embedd + $fontfile = TCPDF_FONTS::getFontFullPath($file, $info['fontdir']); + if (!TCPDF_STATIC::empty_string($fontfile)) { + $font = file_get_contents($fontfile); + $compressed = (substr($file, -2) == '.z'); + if ((!$compressed) AND (isset($info['length2']))) { + $header = (ord($font[0]) == 128); + if ($header) { + // strip first binary header + $font = substr($font, 6); + } + if ($header AND (ord($font[$info['length1']]) == 128)) { + // strip second binary header + $font = substr($font, 0, $info['length1']).substr($font, ($info['length1'] + 6)); + } + } elseif ($info['subset'] AND ((!$compressed) OR ($compressed AND function_exists('gzcompress')))) { + if ($compressed) { + // uncompress font + $font = gzuncompress($font); + } + // merge subset characters + $subsetchars = array(); // used chars + foreach ($info['fontkeys'] as $fontkey) { + $fontinfo = $this->getFontBuffer($fontkey); + $subsetchars += $fontinfo['subsetchars']; + } + // rebuild a font subset + $font = TCPDF_FONTS::_getTrueTypeFontSubset($font, $subsetchars); + // calculate new font length + $info['length1'] = strlen($font); + if ($compressed) { + // recompress font + $font = gzcompress($font); + } + } + $this->_newobj(); + $this->FontFiles[$file]['n'] = $this->n; + $stream = $this->_getrawstream($font); + $out = '<< /Length '.strlen($stream); + if ($compressed) { + $out .= ' /Filter /FlateDecode'; + } + $out .= ' /Length1 '.$info['length1']; + if (isset($info['length2'])) { + $out .= ' /Length2 '.$info['length2'].' /Length3 0'; + } + $out .= ' >>'; + $out .= ' stream'."\n".$stream."\n".'endstream'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + TCPDF_STATIC::set_mqr($mqr); + foreach ($this->fontkeys as $k) { + //Font objects + $font = $this->getFontBuffer($k); + $type = $font['type']; + $name = $font['name']; + if ($type == 'core') { + // standard core font + $out = $this->_getobj($this->font_obj_ids[$k])."\n"; + $out .= '<annotation_fonts[$k] = $font['i']; + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } elseif (($type == 'Type1') OR ($type == 'TrueType')) { + // additional Type1 or TrueType font + $out = $this->_getobj($this->font_obj_ids[$k])."\n"; + $out .= '<n + 1).' 0 R'; + $out .= ' /FontDescriptor '.($this->n + 2).' 0 R'; + if ($font['enc']) { + if (isset($font['diff'])) { + $out .= ' /Encoding '.($nf + $font['diff']).' 0 R'; + } else { + $out .= ' /Encoding /WinAnsiEncoding'; + } + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + // Widths + $this->_newobj(); + $s = '['; + for ($i = 32; $i < 256; ++$i) { + if (isset($font['cw'][$i])) { + $s .= $font['cw'][$i].' '; + } else { + $s .= $font['dw'].' '; + } + } + $s .= ']'; + $s .= "\n".'endobj'; + $this->_out($s); + //Descriptor + $this->_newobj(); + $s = '< $fdv) { + if (is_float($fdv)) { + $fdv = sprintf('%F', $fdv); + } + $s .= ' /'.$fdk.' '.$fdv.''; + } + if (!TCPDF_STATIC::empty_string($font['file'])) { + $s .= ' /FontFile'.($type == 'Type1' ? '' : '2').' '.$this->FontFiles[$font['file']]['n'].' 0 R'; + } + $s .= '>>'; + $s .= "\n".'endobj'; + $this->_out($s); + } else { + // additional types + $mtd = '_put'.strtolower($type); + if (!method_exists($this, $mtd)) { + $this->Error('Unsupported font type: '.$type); + } + $this->$mtd($font); + } + } + } + + /** + * Adds unicode fonts.
      + * Based on PDF Reference 1.3 (section 5) + * @param $font (array) font data + * @protected + * @author Nicola Asuni + * @since 1.52.0.TC005 (2005-01-05) + */ + protected function _puttruetypeunicode($font) { + $fontname = ''; + if ($font['subset']) { + // change name for font subsetting + $subtag = sprintf('%06u', $font['i']); + $subtag = strtr($subtag, '0123456789', 'ABCDEFGHIJ'); + $fontname .= $subtag.'+'; + } + $fontname .= $font['name']; + // Type0 Font + // A composite font composed of other fonts, organized hierarchically + $out = $this->_getobj($this->font_obj_ids[$font['fontkey']])."\n"; + $out .= '<< /Type /Font'; + $out .= ' /Subtype /Type0'; + $out .= ' /BaseFont /'.$fontname; + $out .= ' /Name /F'.$font['i']; + $out .= ' /Encoding /'.$font['enc']; + $out .= ' /ToUnicode '.($this->n + 1).' 0 R'; + $out .= ' /DescendantFonts ['.($this->n + 2).' 0 R]'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + // ToUnicode map for Identity-H + $stream = TCPDF_FONT_DATA::$uni_identity_h; + // ToUnicode Object + $this->_newobj(); + $stream = ($this->compress) ? gzcompress($stream) : $stream; + $filter = ($this->compress) ? '/Filter /FlateDecode ' : ''; + $stream = $this->_getrawstream($stream); + $this->_out('<<'.$filter.'/Length '.strlen($stream).'>> stream'."\n".$stream."\n".'endstream'."\n".'endobj'); + // CIDFontType2 + // A CIDFont whose glyph descriptions are based on TrueType font technology + $oid = $this->_newobj(); + $out = '<< /Type /Font'; + $out .= ' /Subtype /CIDFontType2'; + $out .= ' /BaseFont /'.$fontname; + // A dictionary containing entries that define the character collection of the CIDFont. + $cidinfo = '/Registry '.$this->_datastring($font['cidinfo']['Registry'], $oid); + $cidinfo .= ' /Ordering '.$this->_datastring($font['cidinfo']['Ordering'], $oid); + $cidinfo .= ' /Supplement '.$font['cidinfo']['Supplement']; + $out .= ' /CIDSystemInfo << '.$cidinfo.' >>'; + $out .= ' /FontDescriptor '.($this->n + 1).' 0 R'; + $out .= ' /DW '.$font['dw']; // default width + $out .= "\n".TCPDF_FONTS::_putfontwidths($font, 0); + if (isset($font['ctg']) AND (!TCPDF_STATIC::empty_string($font['ctg']))) { + $out .= "\n".'/CIDToGIDMap '.($this->n + 2).' 0 R'; + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + // Font descriptor + // A font descriptor describing the CIDFont default metrics other than its glyph widths + $this->_newobj(); + $out = '<< /Type /FontDescriptor'; + $out .= ' /FontName /'.$fontname; + foreach ($font['desc'] as $key => $value) { + if (is_float($value)) { + $value = sprintf('%F', $value); + } + $out .= ' /'.$key.' '.$value; + } + $fontdir = false; + if (!TCPDF_STATIC::empty_string($font['file'])) { + // A stream containing a TrueType font + $out .= ' /FontFile2 '.$this->FontFiles[$font['file']]['n'].' 0 R'; + $fontdir = $this->FontFiles[$font['file']]['fontdir']; + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + if (isset($font['ctg']) AND (!TCPDF_STATIC::empty_string($font['ctg']))) { + $this->_newobj(); + // Embed CIDToGIDMap + // A specification of the mapping from CIDs to glyph indices + // search and get CTG font file to embedd + $ctgfile = strtolower($font['ctg']); + // search and get ctg font file to embedd + $fontfile = TCPDF_FONTS::getFontFullPath($ctgfile, $fontdir); + if (TCPDF_STATIC::empty_string($fontfile)) { + $this->Error('Font file not found: '.$ctgfile); + } + $stream = $this->_getrawstream(file_get_contents($fontfile)); + $out = '<< /Length '.strlen($stream).''; + if (substr($fontfile, -2) == '.z') { // check file extension + // Decompresses data encoded using the public-domain + // zlib/deflate compression method, reproducing the + // original text or binary data + $out .= ' /Filter /FlateDecode'; + } + $out .= ' >>'; + $out .= ' stream'."\n".$stream."\n".'endstream'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + + /** + * Output CID-0 fonts. + * A Type 0 CIDFont contains glyph descriptions based on the Adobe Type 1 font format + * @param $font (array) font data + * @protected + * @author Andrew Whitehead, Nicola Asuni, Yukihiro Nakadaira + * @since 3.2.000 (2008-06-23) + */ + protected function _putcidfont0($font) { + $cidoffset = 0; + if (!isset($font['cw'][1])) { + $cidoffset = 31; + } + if (isset($font['cidinfo']['uni2cid'])) { + // convert unicode to cid. + $uni2cid = $font['cidinfo']['uni2cid']; + $cw = array(); + foreach ($font['cw'] as $uni => $width) { + if (isset($uni2cid[$uni])) { + $cw[($uni2cid[$uni] + $cidoffset)] = $width; + } elseif ($uni < 256) { + $cw[$uni] = $width; + } // else unknown character + } + $font = array_merge($font, array('cw' => $cw)); + } + $name = $font['name']; + $enc = $font['enc']; + if ($enc) { + $longname = $name.'-'.$enc; + } else { + $longname = $name; + } + $out = $this->_getobj($this->font_obj_ids[$font['fontkey']])."\n"; + $out .= '<n + 1).' 0 R]'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + $oid = $this->_newobj(); + $out = '<_datastring($font['cidinfo']['Registry'], $oid); + $cidinfo .= ' /Ordering '.$this->_datastring($font['cidinfo']['Ordering'], $oid); + $cidinfo .= ' /Supplement '.$font['cidinfo']['Supplement']; + $out .= ' /CIDSystemInfo <<'.$cidinfo.'>>'; + $out .= ' /FontDescriptor '.($this->n + 1).' 0 R'; + $out .= ' /DW '.$font['dw']; + $out .= "\n".TCPDF_FONTS::_putfontwidths($font, $cidoffset); + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + $this->_newobj(); + $s = '< $v) { + if ($k != 'Style') { + if (is_float($v)) { + $v = sprintf('%F', $v); + } + $s .= ' /'.$k.' '.$v.''; + } + } + $s .= '>>'; + $s .= "\n".'endobj'; + $this->_out($s); + } + + /** + * Output images. + * @protected + */ + protected function _putimages() { + $filter = ($this->compress) ? '/Filter /FlateDecode ' : ''; + foreach ($this->imagekeys as $file) { + $info = $this->getImageBuffer($file); + // set object for alternate images array + if ((!$this->pdfa_mode) AND isset($info['altimgs']) AND !empty($info['altimgs'])) { + $altoid = $this->_newobj(); + $out = '['; + foreach ($info['altimgs'] as $altimage) { + if (isset($this->xobjects['I'.$altimage[0]]['n'])) { + $out .= ' << /Image '.$this->xobjects['I'.$altimage[0]]['n'].' 0 R'; + $out .= ' /DefaultForPrinting'; + if ($altimage[1] === true) { + $out .= ' true'; + } else { + $out .= ' false'; + } + $out .= ' >>'; + } + } + $out .= ' ]'; + $out .= "\n".'endobj'; + $this->_out($out); + } + // set image object + $oid = $this->_newobj(); + $this->xobjects['I'.$info['i']] = array('n' => $oid); + $this->setImageSubBuffer($file, 'n', $this->n); + $out = '<n - 1).' 0 R'; + } + // set color space + $icc = false; + if (isset($info['icc']) AND ($info['icc'] !== false)) { + // ICC Colour Space + $icc = true; + $out .= ' /ColorSpace [/ICCBased '.($this->n + 1).' 0 R]'; + } elseif ($info['cs'] == 'Indexed') { + // Indexed Colour Space + $out .= ' /ColorSpace [/Indexed /DeviceRGB '.((strlen($info['pal']) / 3) - 1).' '.($this->n + 1).' 0 R]'; + } else { + // Device Colour Space + $out .= ' /ColorSpace /'.$info['cs']; + } + if ($info['cs'] == 'DeviceCMYK') { + $out .= ' /Decode [1 0 1 0 1 0 1 0]'; + } + $out .= ' /BitsPerComponent '.$info['bpc']; + if (isset($altoid) AND ($altoid > 0)) { + // reference to alternate images dictionary + $out .= ' /Alternates '.$altoid.' 0 R'; + } + if (isset($info['exurl']) AND !empty($info['exurl'])) { + // external stream + $out .= ' /Length 0'; + $out .= ' /F << /FS /URL /F '.$this->_datastring($info['exurl'], $oid).' >>'; + if (isset($info['f'])) { + $out .= ' /FFilter /'.$info['f']; + } + $out .= ' >>'; + $out .= ' stream'."\n".'endstream'; + } else { + if (isset($info['f'])) { + $out .= ' /Filter /'.$info['f']; + } + if (isset($info['parms'])) { + $out .= ' '.$info['parms']; + } + if (isset($info['trns']) AND is_array($info['trns'])) { + $trns = ''; + $count_info = count($info['trns']); + if ($info['cs'] == 'Indexed') { + $maxval =(pow(2, $info['bpc']) - 1); + for ($i = 0; $i < $count_info; ++$i) { + if (($info['trns'][$i] != 0) AND ($info['trns'][$i] != $maxval)) { + // this is not a binary type mask @TODO: create a SMask + $trns = ''; + break; + } elseif (empty($trns) AND ($info['trns'][$i] == 0)) { + // store the first fully transparent value + $trns .= $i.' '.$i.' '; + } + } + } else { + // grayscale or RGB + for ($i = 0; $i < $count_info; ++$i) { + if ($info['trns'][$i] == 0) { + $trns .= $info['trns'][$i].' '.$info['trns'][$i].' '; + } + } + } + // Colour Key Masking + if (!empty($trns)) { + $out .= ' /Mask ['.$trns.']'; + } + } + $stream = $this->_getrawstream($info['data']); + $out .= ' /Length '.strlen($stream).' >>'; + $out .= ' stream'."\n".$stream."\n".'endstream'; + } + $out .= "\n".'endobj'; + $this->_out($out); + if ($icc) { + // ICC colour profile + $this->_newobj(); + $icc = ($this->compress) ? gzcompress($info['icc']) : $info['icc']; + $icc = $this->_getrawstream($icc); + $this->_out('<> stream'."\n".$icc."\n".'endstream'."\n".'endobj'); + } elseif ($info['cs'] == 'Indexed') { + // colour palette + $this->_newobj(); + $pal = ($this->compress) ? gzcompress($info['pal']) : $info['pal']; + $pal = $this->_getrawstream($pal); + $this->_out('<<'.$filter.'/Length '.strlen($pal).'>> stream'."\n".$pal."\n".'endstream'."\n".'endobj'); + } + } + } + + /** + * Output Form XObjects Templates. + * @author Nicola Asuni + * @since 5.8.017 (2010-08-24) + * @protected + * @see startTemplate(), endTemplate(), printTemplate() + */ + protected function _putxobjects() { + foreach ($this->xobjects as $key => $data) { + if (isset($data['outdata'])) { + $stream = str_replace($this->epsmarker, '', trim($data['outdata'])); + $out = $this->_getobj($data['n'])."\n"; + $out .= '<<'; + $out .= ' /Type /XObject'; + $out .= ' /Subtype /Form'; + $out .= ' /FormType 1'; + if ($this->compress) { + $stream = gzcompress($stream); + $out .= ' /Filter /FlateDecode'; + } + $out .= sprintf(' /BBox [%F %F %F %F]', ($data['x'] * $this->k), (-$data['y'] * $this->k), (($data['w'] + $data['x']) * $this->k), (($data['h'] - $data['y']) * $this->k)); + $out .= ' /Matrix [1 0 0 1 0 0]'; + $out .= ' /Resources <<'; + $out .= ' /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'; + if (!$this->pdfa_mode) { + // transparency + if (isset($data['extgstates']) AND !empty($data['extgstates'])) { + $out .= ' /ExtGState <<'; + foreach ($data['extgstates'] as $k => $extgstate) { + if (isset($this->extgstates[$k]['name'])) { + $out .= ' /'.$this->extgstates[$k]['name']; + } else { + $out .= ' /GS'.$k; + } + $out .= ' '.$this->extgstates[$k]['n'].' 0 R'; + } + $out .= ' >>'; + } + if (isset($data['gradients']) AND !empty($data['gradients'])) { + $gp = ''; + $gs = ''; + foreach ($data['gradients'] as $id => $grad) { + // gradient patterns + $gp .= ' /p'.$id.' '.$this->gradients[$id]['pattern'].' 0 R'; + // gradient shadings + $gs .= ' /Sh'.$id.' '.$this->gradients[$id]['id'].' 0 R'; + } + $out .= ' /Pattern <<'.$gp.' >>'; + $out .= ' /Shading <<'.$gs.' >>'; + } + } + // spot colors + if (isset($data['spot_colors']) AND !empty($data['spot_colors'])) { + $out .= ' /ColorSpace <<'; + foreach ($data['spot_colors'] as $name => $color) { + $out .= ' /CS'.$color['i'].' '.$this->spot_colors[$name]['n'].' 0 R'; + } + $out .= ' >>'; + } + // fonts + if (!empty($data['fonts'])) { + $out .= ' /Font <<'; + foreach ($data['fonts'] as $fontkey => $fontid) { + $out .= ' /F'.$fontid.' '.$this->font_obj_ids[$fontkey].' 0 R'; + } + $out .= ' >>'; + } + // images or nested xobjects + if (!empty($data['images']) OR !empty($data['xobjects'])) { + $out .= ' /XObject <<'; + foreach ($data['images'] as $imgid) { + $out .= ' /I'.$imgid.' '.$this->xobjects['I'.$imgid]['n'].' 0 R'; + } + foreach ($data['xobjects'] as $sub_id => $sub_objid) { + $out .= ' /'.$sub_id.' '.$sub_objid['n'].' 0 R'; + } + $out .= ' >>'; + } + $out .= ' >>'; //end resources + if (isset($data['group']) AND ($data['group'] !== false)) { + // set transparency group + $out .= ' /Group << /Type /Group /S /Transparency'; + if (is_array($data['group'])) { + if (isset($data['group']['CS']) AND !empty($data['group']['CS'])) { + $out .= ' /CS /'.$data['group']['CS']; + } + if (isset($data['group']['I'])) { + $out .= ' /I /'.($data['group']['I']===true?'true':'false'); + } + if (isset($data['group']['K'])) { + $out .= ' /K /'.($data['group']['K']===true?'true':'false'); + } + } + $out .= ' >>'; + } + $stream = $this->_getrawstream($stream, $data['n']); + $out .= ' /Length '.strlen($stream); + $out .= ' >>'; + $out .= ' stream'."\n".$stream."\n".'endstream'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + } + + /** + * Output Spot Colors Resources. + * @protected + * @since 4.0.024 (2008-09-12) + */ + protected function _putspotcolors() { + foreach ($this->spot_colors as $name => $color) { + $this->_newobj(); + $this->spot_colors[$name]['n'] = $this->n; + $out = '[/Separation /'.str_replace(' ', '#20', $name); + $out .= ' /DeviceCMYK <<'; + $out .= ' /Range [0 1 0 1 0 1 0 1] /C0 [0 0 0 0]'; + $out .= ' '.sprintf('/C1 [%F %F %F %F] ', ($color['C'] / 100), ($color['M'] / 100), ($color['Y'] / 100), ($color['K'] / 100)); + $out .= ' /FunctionType 2 /Domain [0 1] /N 1>>]'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + + /** + * Return XObjects Dictionary. + * @return string XObjects dictionary + * @protected + * @since 5.8.014 (2010-08-23) + */ + protected function _getxobjectdict() { + $out = ''; + foreach ($this->xobjects as $id => $objid) { + $out .= ' /'.$id.' '.$objid['n'].' 0 R'; + } + return $out; + } + + /** + * Output Resources Dictionary. + * @protected + */ + protected function _putresourcedict() { + $out = $this->_getobj(2)."\n"; + $out .= '<< /ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'; + $out .= ' /Font <<'; + foreach ($this->fontkeys as $fontkey) { + $font = $this->getFontBuffer($fontkey); + $out .= ' /F'.$font['i'].' '.$font['n'].' 0 R'; + } + $out .= ' >>'; + $out .= ' /XObject <<'; + $out .= $this->_getxobjectdict(); + $out .= ' >>'; + // layers + if (!empty($this->pdflayers)) { + $out .= ' /Properties <<'; + foreach ($this->pdflayers as $layer) { + $out .= ' /'.$layer['layer'].' '.$layer['objid'].' 0 R'; + } + $out .= ' >>'; + } + if (!$this->pdfa_mode) { + // transparency + if (isset($this->extgstates) AND !empty($this->extgstates)) { + $out .= ' /ExtGState <<'; + foreach ($this->extgstates as $k => $extgstate) { + if (isset($extgstate['name'])) { + $out .= ' /'.$extgstate['name']; + } else { + $out .= ' /GS'.$k; + } + $out .= ' '.$extgstate['n'].' 0 R'; + } + $out .= ' >>'; + } + if (isset($this->gradients) AND !empty($this->gradients)) { + $gp = ''; + $gs = ''; + foreach ($this->gradients as $id => $grad) { + // gradient patterns + $gp .= ' /p'.$id.' '.$grad['pattern'].' 0 R'; + // gradient shadings + $gs .= ' /Sh'.$id.' '.$grad['id'].' 0 R'; + } + $out .= ' /Pattern <<'.$gp.' >>'; + $out .= ' /Shading <<'.$gs.' >>'; + } + } + // spot colors + if (isset($this->spot_colors) AND !empty($this->spot_colors)) { + $out .= ' /ColorSpace <<'; + foreach ($this->spot_colors as $color) { + $out .= ' /CS'.$color['i'].' '.$color['n'].' 0 R'; + } + $out .= ' >>'; + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + + /** + * Output Resources. + * @protected + */ + protected function _putresources() { + $this->_putextgstates(); + $this->_putocg(); + $this->_putfonts(); + $this->_putimages(); + $this->_putspotcolors(); + $this->_putshaders(); + $this->_putxobjects(); + $this->_putresourcedict(); + $this->_putdests(); + $this->_putEmbeddedFiles(); + $this->_putannotsobjs(); + $this->_putjavascript(); + $this->_putbookmarks(); + $this->_putencryption(); + } + + /** + * Adds some Metadata information (Document Information Dictionary) + * (see Chapter 14.3.3 Document Information Dictionary of PDF32000_2008.pdf Reference) + * @return int object id + * @protected + */ + protected function _putinfo() { + $oid = $this->_newobj(); + $out = '<<'; + // store current isunicode value + $prev_isunicode = $this->isunicode; + if ($this->docinfounicode) { + $this->isunicode = true; + } + if (!TCPDF_STATIC::empty_string($this->title)) { + // The document's title. + $out .= ' /Title '.$this->_textstring($this->title, $oid); + } + if (!TCPDF_STATIC::empty_string($this->author)) { + // The name of the person who created the document. + $out .= ' /Author '.$this->_textstring($this->author, $oid); + } + if (!TCPDF_STATIC::empty_string($this->subject)) { + // The subject of the document. + $out .= ' /Subject '.$this->_textstring($this->subject, $oid); + } + if (!TCPDF_STATIC::empty_string($this->keywords)) { + // Keywords associated with the document. + $out .= ' /Keywords '.$this->_textstring($this->keywords, $oid); + } + if (!TCPDF_STATIC::empty_string($this->creator)) { + // If the document was converted to PDF from another format, the name of the conforming product that created the original document from which it was converted. + $out .= ' /Creator '.$this->_textstring($this->creator, $oid); + } + // restore previous isunicode value + $this->isunicode = $prev_isunicode; + // default producer + $out .= ' /Producer '.$this->_textstring(TCPDF_STATIC::getTCPDFProducer(), $oid); + // The date and time the document was created, in human-readable form + $out .= ' /CreationDate '.$this->_datestring(0, $this->doc_creation_timestamp); + // The date and time the document was most recently modified, in human-readable form + $out .= ' /ModDate '.$this->_datestring(0, $this->doc_modification_timestamp); + // A name object indicating whether the document has been modified to include trapping information + $out .= ' /Trapped /False'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + return $oid; + } + + /** + * Set additional XMP data to be added on the default XMP data just before the end of "x:xmpmeta" tag. + * IMPORTANT: This data is added as-is without controls, so you have to validate your data before using this method! + * @param $xmp (string) Custom XMP data. + * @since 5.9.128 (2011-10-06) + * @public + */ + public function setExtraXMP($xmp) { + $this->custom_xmp = $xmp; + } + + /** + * Put XMP data object and return ID. + * @return (int) The object ID. + * @since 5.9.121 (2011-09-28) + * @protected + */ + protected function _putXMP() { + $oid = $this->_newobj(); + // store current isunicode value + $prev_isunicode = $this->isunicode; + $this->isunicode = true; + $prev_encrypted = $this->encrypted; + $this->encrypted = false; + // set XMP data + $xmp = 'isunicode).'" id="W5M0MpCehiHzreSzNTczkc9d"?>'."\n"; + $xmp .= ''."\n"; + $xmp .= "\t".''."\n"; + $xmp .= "\t\t".''."\n"; + $xmp .= "\t\t\t".'application/pdf'."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''.TCPDF_STATIC::_escapeXML($this->title).''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''.TCPDF_STATIC::_escapeXML($this->author).''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''.TCPDF_STATIC::_escapeXML($this->subject).''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''.TCPDF_STATIC::_escapeXML($this->keywords).''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t".''."\n"; + // convert doc creation date format + $dcdate = TCPDF_STATIC::getFormattedDate($this->doc_creation_timestamp); + $doccreationdate = substr($dcdate, 0, 4).'-'.substr($dcdate, 4, 2).'-'.substr($dcdate, 6, 2); + $doccreationdate .= 'T'.substr($dcdate, 8, 2).':'.substr($dcdate, 10, 2).':'.substr($dcdate, 12, 2); + $doccreationdate .= '+'.substr($dcdate, 15, 2).':'.substr($dcdate, 18, 2); + $doccreationdate = TCPDF_STATIC::_escapeXML($doccreationdate); + // convert doc modification date format + $dmdate = TCPDF_STATIC::getFormattedDate($this->doc_modification_timestamp); + $docmoddate = substr($dmdate, 0, 4).'-'.substr($dmdate, 4, 2).'-'.substr($dmdate, 6, 2); + $docmoddate .= 'T'.substr($dmdate, 8, 2).':'.substr($dmdate, 10, 2).':'.substr($dmdate, 12, 2); + $docmoddate .= '+'.substr($dmdate, 15, 2).':'.substr($dmdate, 18, 2); + $docmoddate = TCPDF_STATIC::_escapeXML($docmoddate); + $xmp .= "\t\t".''."\n"; + $xmp .= "\t\t\t".''.$doccreationdate.''."\n"; + $xmp .= "\t\t\t".''.$this->creator.''."\n"; + $xmp .= "\t\t\t".''.$docmoddate.''."\n"; + $xmp .= "\t\t\t".''.$doccreationdate.''."\n"; + $xmp .= "\t\t".''."\n"; + $xmp .= "\t\t".''."\n"; + $xmp .= "\t\t\t".''.TCPDF_STATIC::_escapeXML($this->keywords).''."\n"; + $xmp .= "\t\t\t".''.TCPDF_STATIC::_escapeXML(TCPDF_STATIC::getTCPDFProducer()).''."\n"; + $xmp .= "\t\t".''."\n"; + $xmp .= "\t\t".''."\n"; + $uuid = 'uuid:'.substr($this->file_id, 0, 8).'-'.substr($this->file_id, 8, 4).'-'.substr($this->file_id, 12, 4).'-'.substr($this->file_id, 16, 4).'-'.substr($this->file_id, 20, 12); + $xmp .= "\t\t\t".''.$uuid.''."\n"; + $xmp .= "\t\t\t".''.$uuid.''."\n"; + $xmp .= "\t\t".''."\n"; + if ($this->pdfa_mode) { + $xmp .= "\t\t".''."\n"; + $xmp .= "\t\t\t".'1'."\n"; + $xmp .= "\t\t\t".'B'."\n"; + $xmp .= "\t\t".''."\n"; + } + // XMP extension schemas + $xmp .= "\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t".'http://ns.adobe.com/pdf/1.3/'."\n"; + $xmp .= "\t\t\t\t\t\t".'pdf'."\n"; + $xmp .= "\t\t\t\t\t\t".'Adobe PDF Schema'."\n"; + $xmp .= "\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t".'http://ns.adobe.com/xap/1.0/mm/'."\n"; + $xmp .= "\t\t\t\t\t\t".'xmpMM'."\n"; + $xmp .= "\t\t\t\t\t\t".'XMP Media Management Schema'."\n"; + $xmp .= "\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'internal'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'UUID based identifier for specific incarnation of a document'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'InstanceID'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'URI'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t".'http://www.aiim.org/pdfa/ns/id/'."\n"; + $xmp .= "\t\t\t\t\t\t".'pdfaid'."\n"; + $xmp .= "\t\t\t\t\t\t".'PDF/A ID Schema'."\n"; + $xmp .= "\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'internal'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'Part of PDF/A standard'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'part'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'Integer'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'internal'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'Amendment of PDF/A standard'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'amd'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'Text'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'internal'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'Conformance level of PDF/A standard'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'conformance'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t\t".'Text'."\n"; + $xmp .= "\t\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t\t".''."\n"; + $xmp .= "\t\t\t\t".''."\n"; + $xmp .= "\t\t\t".''."\n"; + $xmp .= "\t\t".''."\n"; + $xmp .= "\t".''."\n"; + $xmp .= $this->custom_xmp; + $xmp .= ''."\n"; + $xmp .= ''; + $out = '<< /Type /Metadata /Subtype /XML /Length '.strlen($xmp).' >> stream'."\n".$xmp."\n".'endstream'."\n".'endobj'; + // restore previous isunicode value + $this->isunicode = $prev_isunicode; + $this->encrypted = $prev_encrypted; + $this->_out($out); + return $oid; + } + + /** + * Output Catalog. + * @return int object id + * @protected + */ + protected function _putcatalog() { + // put XMP + $xmpobj = $this->_putXMP(); + // if required, add standard sRGB_IEC61966-2.1 blackscaled ICC colour profile + if ($this->pdfa_mode OR $this->force_srgb) { + $iccobj = $this->_newobj(); + $icc = file_get_contents(dirname(__FILE__).'/include/sRGB.icc'); + $filter = ''; + if ($this->compress) { + $filter = ' /Filter /FlateDecode'; + $icc = gzcompress($icc); + } + $icc = $this->_getrawstream($icc); + $this->_out('<> stream'."\n".$icc."\n".'endstream'."\n".'endobj'); + } + // start catalog + $oid = $this->_newobj(); + $out = '<< /Type /Catalog'; + $out .= ' /Version /'.$this->PDFVersion; + //$out .= ' /Extensions <<>>'; + $out .= ' /Pages 1 0 R'; + //$out .= ' /PageLabels ' //...; + $out .= ' /Names <<'; + if ((!$this->pdfa_mode) AND !empty($this->n_js)) { + $out .= ' /JavaScript '.$this->n_js; + } + if (!empty($this->efnames)) { + $out .= ' /EmbeddedFiles <efnames AS $fn => $fref) { + $out .= ' '.$this->_datastring($fn).' '.$fref; + } + $out .= ' ]>>'; + } + $out .= ' >>'; + if (!empty($this->dests)) { + $out .= ' /Dests '.($this->n_dests).' 0 R'; + } + $out .= $this->_putviewerpreferences(); + if (isset($this->LayoutMode) AND (!TCPDF_STATIC::empty_string($this->LayoutMode))) { + $out .= ' /PageLayout /'.$this->LayoutMode; + } + if (isset($this->PageMode) AND (!TCPDF_STATIC::empty_string($this->PageMode))) { + $out .= ' /PageMode /'.$this->PageMode; + } + if (count($this->outlines) > 0) { + $out .= ' /Outlines '.$this->OutlineRoot.' 0 R'; + $out .= ' /PageMode /UseOutlines'; + } + //$out .= ' /Threads []'; + if ($this->ZoomMode == 'fullpage') { + $out .= ' /OpenAction ['.$this->page_obj_id[1].' 0 R /Fit]'; + } elseif ($this->ZoomMode == 'fullwidth') { + $out .= ' /OpenAction ['.$this->page_obj_id[1].' 0 R /FitH null]'; + } elseif ($this->ZoomMode == 'real') { + $out .= ' /OpenAction ['.$this->page_obj_id[1].' 0 R /XYZ null null 1]'; + } elseif (!is_string($this->ZoomMode)) { + $out .= sprintf(' /OpenAction ['.$this->page_obj_id[1].' 0 R /XYZ null null %F]', ($this->ZoomMode / 100)); + } + //$out .= ' /AA <<>>'; + //$out .= ' /URI <<>>'; + $out .= ' /Metadata '.$xmpobj.' 0 R'; + //$out .= ' /StructTreeRoot <<>>'; + //$out .= ' /MarkInfo <<>>'; + if (isset($this->l['a_meta_language'])) { + $out .= ' /Lang '.$this->_textstring($this->l['a_meta_language'], $oid); + } + //$out .= ' /SpiderInfo <<>>'; + // set OutputIntent to sRGB IEC61966-2.1 if required + if ($this->pdfa_mode OR $this->force_srgb) { + $out .= ' /OutputIntents [<<'; + $out .= ' /Type /OutputIntent'; + $out .= ' /S /GTS_PDFA1'; + $out .= ' /OutputCondition '.$this->_textstring('sRGB IEC61966-2.1', $oid); + $out .= ' /OutputConditionIdentifier '.$this->_textstring('sRGB IEC61966-2.1', $oid); + $out .= ' /RegistryName '.$this->_textstring('http://www.color.org', $oid); + $out .= ' /Info '.$this->_textstring('sRGB IEC61966-2.1', $oid); + $out .= ' /DestOutputProfile '.$iccobj.' 0 R'; + $out .= ' >>]'; + } + //$out .= ' /PieceInfo <<>>'; + if (!empty($this->pdflayers)) { + $lyrobjs = ''; + $lyrobjs_off = ''; + $lyrobjs_lock = ''; + foreach ($this->pdflayers as $layer) { + $layer_obj_ref = ' '.$layer['objid'].' 0 R'; + $lyrobjs .= $layer_obj_ref; + if ($layer['view'] === false) { + $lyrobjs_off .= $layer_obj_ref; + } + if ($layer['lock']) { + $lyrobjs_lock .= $layer_obj_ref; + } + } + $out .= ' /OCProperties << /OCGs ['.$lyrobjs.']'; + $out .= ' /D <<'; + $out .= ' /Name '.$this->_textstring('Layers', $oid); + $out .= ' /Creator '.$this->_textstring('TCPDF', $oid); + $out .= ' /BaseState /ON'; + $out .= ' /OFF ['.$lyrobjs_off.']'; + $out .= ' /Locked ['.$lyrobjs_lock.']'; + $out .= ' /Intent /View'; + $out .= ' /AS ['; + $out .= ' << /Event /Print /OCGs ['.$lyrobjs.'] /Category [/Print] >>'; + $out .= ' << /Event /View /OCGs ['.$lyrobjs.'] /Category [/View] >>'; + $out .= ' ]'; + $out .= ' /Order ['.$lyrobjs.']'; + $out .= ' /ListMode /AllPages'; + //$out .= ' /RBGroups ['..']'; + //$out .= ' /Locked ['..']'; + $out .= ' >>'; + $out .= ' >>'; + } + // AcroForm + if (!empty($this->form_obj_id) + OR ($this->sign AND isset($this->signature_data['cert_type'])) + OR !empty($this->empty_signature_appearance)) { + $out .= ' /AcroForm <<'; + $objrefs = ''; + if ($this->sign AND isset($this->signature_data['cert_type'])) { + // set reference for signature object + $objrefs .= $this->sig_obj_id.' 0 R'; + } + if (!empty($this->empty_signature_appearance)) { + foreach ($this->empty_signature_appearance as $esa) { + // set reference for empty signature objects + $objrefs .= ' '.$esa['objid'].' 0 R'; + } + } + if (!empty($this->form_obj_id)) { + foreach($this->form_obj_id as $objid) { + $objrefs .= ' '.$objid.' 0 R'; + } + } + $out .= ' /Fields ['.$objrefs.']'; + // It's better to turn off this value and set the appearance stream for each annotation (/AP) to avoid conflicts with signature fields. + if (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A')) { + $out .= ' /NeedAppearances false'; + } + if ($this->sign AND isset($this->signature_data['cert_type'])) { + if ($this->signature_data['cert_type'] > 0) { + $out .= ' /SigFlags 3'; + } else { + $out .= ' /SigFlags 1'; + } + } + //$out .= ' /CO '; + if (isset($this->annotation_fonts) AND !empty($this->annotation_fonts)) { + $out .= ' /DR <<'; + $out .= ' /Font <<'; + foreach ($this->annotation_fonts as $fontkey => $fontid) { + $out .= ' /F'.$fontid.' '.$this->font_obj_ids[$fontkey].' 0 R'; + } + $out .= ' >> >>'; + } + $font = $this->getFontBuffer('helvetica'); + $out .= ' /DA (/F'.$font['i'].' 0 Tf 0 g)'; + $out .= ' /Q '.(($this->rtl)?'2':'0'); + //$out .= ' /XFA '; + $out .= ' >>'; + // signatures + if ($this->sign AND isset($this->signature_data['cert_type']) + AND (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A'))) { + if ($this->signature_data['cert_type'] > 0) { + $out .= ' /Perms << /DocMDP '.($this->sig_obj_id + 1).' 0 R >>'; + } else { + $out .= ' /Perms << /UR3 '.($this->sig_obj_id + 1).' 0 R >>'; + } + } + } + //$out .= ' /Legal <<>>'; + //$out .= ' /Requirements []'; + //$out .= ' /Collection <<>>'; + //$out .= ' /NeedsRendering true'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + return $oid; + } + + /** + * Output viewer preferences. + * @return string for viewer preferences + * @author Nicola asuni + * @since 3.1.000 (2008-06-09) + * @protected + */ + protected function _putviewerpreferences() { + $vp = $this->viewer_preferences; + $out = ' /ViewerPreferences <<'; + if ($this->rtl) { + $out .= ' /Direction /R2L'; + } else { + $out .= ' /Direction /L2R'; + } + if (isset($vp['HideToolbar']) AND ($vp['HideToolbar'])) { + $out .= ' /HideToolbar true'; + } + if (isset($vp['HideMenubar']) AND ($vp['HideMenubar'])) { + $out .= ' /HideMenubar true'; + } + if (isset($vp['HideWindowUI']) AND ($vp['HideWindowUI'])) { + $out .= ' /HideWindowUI true'; + } + if (isset($vp['FitWindow']) AND ($vp['FitWindow'])) { + $out .= ' /FitWindow true'; + } + if (isset($vp['CenterWindow']) AND ($vp['CenterWindow'])) { + $out .= ' /CenterWindow true'; + } + if (isset($vp['DisplayDocTitle']) AND ($vp['DisplayDocTitle'])) { + $out .= ' /DisplayDocTitle true'; + } + if (isset($vp['NonFullScreenPageMode'])) { + $out .= ' /NonFullScreenPageMode /'.$vp['NonFullScreenPageMode']; + } + if (isset($vp['ViewArea'])) { + $out .= ' /ViewArea /'.$vp['ViewArea']; + } + if (isset($vp['ViewClip'])) { + $out .= ' /ViewClip /'.$vp['ViewClip']; + } + if (isset($vp['PrintArea'])) { + $out .= ' /PrintArea /'.$vp['PrintArea']; + } + if (isset($vp['PrintClip'])) { + $out .= ' /PrintClip /'.$vp['PrintClip']; + } + if (isset($vp['PrintScaling'])) { + $out .= ' /PrintScaling /'.$vp['PrintScaling']; + } + if (isset($vp['Duplex']) AND (!TCPDF_STATIC::empty_string($vp['Duplex']))) { + $out .= ' /Duplex /'.$vp['Duplex']; + } + if (isset($vp['PickTrayByPDFSize'])) { + if ($vp['PickTrayByPDFSize']) { + $out .= ' /PickTrayByPDFSize true'; + } else { + $out .= ' /PickTrayByPDFSize false'; + } + } + if (isset($vp['PrintPageRange'])) { + $PrintPageRangeNum = ''; + foreach ($vp['PrintPageRange'] as $k => $v) { + $PrintPageRangeNum .= ' '.($v - 1).''; + } + $out .= ' /PrintPageRange ['.substr($PrintPageRangeNum,1).']'; + } + if (isset($vp['NumCopies'])) { + $out .= ' /NumCopies '.intval($vp['NumCopies']); + } + $out .= ' >>'; + return $out; + } + + /** + * Output PDF File Header (7.5.2). + * @protected + */ + protected function _putheader() { + $this->_out('%PDF-'.$this->PDFVersion); + $this->_out('%'.chr(0xe2).chr(0xe3).chr(0xcf).chr(0xd3)); + } + + /** + * Output end of document (EOF). + * @protected + */ + protected function _enddoc() { + if (isset($this->CurrentFont['fontkey']) AND isset($this->CurrentFont['subsetchars'])) { + // save subset chars of the previous font + $this->setFontSubBuffer($this->CurrentFont['fontkey'], 'subsetchars', $this->CurrentFont['subsetchars']); + } + $this->state = 1; + $this->_putheader(); + $this->_putpages(); + $this->_putresources(); + // empty signature fields + if (!empty($this->empty_signature_appearance)) { + foreach ($this->empty_signature_appearance as $key => $esa) { + // widget annotation for empty signature + $out = $this->_getobj($esa['objid'])."\n"; + $out .= '<< /Type /Annot'; + $out .= ' /Subtype /Widget'; + $out .= ' /Rect ['.$esa['rect'].']'; + $out .= ' /P '.$this->page_obj_id[($esa['page'])].' 0 R'; // link to signature appearance page + $out .= ' /F 4'; + $out .= ' /FT /Sig'; + $signame = $esa['name'].sprintf(' [%03d]', ($key + 1)); + $out .= ' /T '.$this->_textstring($signame, $esa['objid']); + $out .= ' /Ff 0'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + // Signature + if ($this->sign AND isset($this->signature_data['cert_type'])) { + // widget annotation for signature + $out = $this->_getobj($this->sig_obj_id)."\n"; + $out .= '<< /Type /Annot'; + $out .= ' /Subtype /Widget'; + $out .= ' /Rect ['.$this->signature_appearance['rect'].']'; + $out .= ' /P '.$this->page_obj_id[($this->signature_appearance['page'])].' 0 R'; // link to signature appearance page + $out .= ' /F 4'; + $out .= ' /FT /Sig'; + $out .= ' /T '.$this->_textstring($this->signature_appearance['name'], $this->sig_obj_id); + $out .= ' /Ff 0'; + $out .= ' /V '.($this->sig_obj_id + 1).' 0 R'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + // signature + $this->_putsignature(); + } + // Info + $objid_info = $this->_putinfo(); + // Catalog + $objid_catalog = $this->_putcatalog(); + // Cross-ref + $o = $this->bufferlen; + // XREF section + $this->_out('xref'); + $this->_out('0 '.($this->n + 1)); + $this->_out('0000000000 65535 f '); + $freegen = ($this->n + 2); + for ($i=1; $i <= $this->n; ++$i) { + if (!isset($this->offsets[$i]) AND ($i > 1)) { + $this->_out(sprintf('0000000000 %05d f ', $freegen)); + ++$freegen; + } else { + $this->_out(sprintf('%010d 00000 n ', $this->offsets[$i])); + } + } + // TRAILER + $out = 'trailer'."\n"; + $out .= '<<'; + $out .= ' /Size '.($this->n + 1); + $out .= ' /Root '.$objid_catalog.' 0 R'; + $out .= ' /Info '.$objid_info.' 0 R'; + if ($this->encrypted) { + $out .= ' /Encrypt '.$this->encryptdata['objid'].' 0 R'; + } + $out .= ' /ID [ <'.$this->file_id.'> <'.$this->file_id.'> ]'; + $out .= ' >>'; + $this->_out($out); + $this->_out('startxref'); + $this->_out($o); + $this->_out('%%EOF'); + $this->state = 3; // end-of-doc + if ($this->diskcache) { + // remove temporary files used for images + foreach ($this->imagekeys as $key) { + // remove temporary files + unlink($this->images[$key]); + } + foreach ($this->fontkeys as $key) { + // remove temporary files + unlink($this->fonts[$key]); + } + } + } + + /** + * Initialize a new page. + * @param $orientation (string) page orientation. Possible values are (case insensitive):
      • P or PORTRAIT (default)
      • L or LANDSCAPE
      + * @param $format (mixed) The format used for pages. It can be either: one of the string values specified at getPageSizeFromFormat() or an array of parameters specified at setPageFormat(). + * @protected + * @see getPageSizeFromFormat(), setPageFormat() + */ + protected function _beginpage($orientation='', $format='') { + ++$this->page; + $this->pageobjects[$this->page] = array(); + $this->setPageBuffer($this->page, ''); + // initialize array for graphics tranformation positions inside a page buffer + $this->transfmrk[$this->page] = array(); + $this->state = 2; + if (TCPDF_STATIC::empty_string($orientation)) { + if (isset($this->CurOrientation)) { + $orientation = $this->CurOrientation; + } elseif ($this->fwPt > $this->fhPt) { + // landscape + $orientation = 'L'; + } else { + // portrait + $orientation = 'P'; + } + } + if (TCPDF_STATIC::empty_string($format)) { + $this->pagedim[$this->page] = $this->pagedim[($this->page - 1)]; + $this->setPageOrientation($orientation); + } else { + $this->setPageFormat($format, $orientation); + } + if ($this->rtl) { + $this->x = $this->w - $this->rMargin; + } else { + $this->x = $this->lMargin; + } + $this->y = $this->tMargin; + if (isset($this->newpagegroup[$this->page])) { + // start a new group + $this->currpagegroup = $this->newpagegroup[$this->page]; + $this->pagegroups[$this->currpagegroup] = 1; + } elseif (isset($this->currpagegroup) AND ($this->currpagegroup > 0)) { + ++$this->pagegroups[$this->currpagegroup]; + } + } + + /** + * Mark end of page. + * @protected + */ + protected function _endpage() { + $this->setVisibility('all'); + $this->state = 1; + } + + /** + * Begin a new object and return the object number. + * @return int object number + * @protected + */ + protected function _newobj() { + $this->_out($this->_getobj()); + return $this->n; + } + + /** + * Return the starting object string for the selected object ID. + * @param $objid (int) Object ID (leave empty to get a new ID). + * @return string the starting object string + * @protected + * @since 5.8.009 (2010-08-20) + */ + protected function _getobj($objid='') { + if ($objid === '') { + ++$this->n; + $objid = $this->n; + } + $this->offsets[$objid] = $this->bufferlen; + $this->pageobjects[$this->page][] = $objid; + return $objid.' 0 obj'; + } + + /** + * Underline text. + * @param $x (int) X coordinate + * @param $y (int) Y coordinate + * @param $txt (string) text to underline + * @protected + */ + protected function _dounderline($x, $y, $txt) { + $w = $this->GetStringWidth($txt); + return $this->_dounderlinew($x, $y, $w); + } + + /** + * Underline for rectangular text area. + * @param $x (int) X coordinate + * @param $y (int) Y coordinate + * @param $w (int) width to underline + * @protected + * @since 4.8.008 (2009-09-29) + */ + protected function _dounderlinew($x, $y, $w) { + $linew = - $this->CurrentFont['ut'] / 1000 * $this->FontSizePt; + return sprintf('%F %F %F %F re f', $x * $this->k, ((($this->h - $y) * $this->k) + $linew), $w * $this->k, $linew); + } + + /** + * Line through text. + * @param $x (int) X coordinate + * @param $y (int) Y coordinate + * @param $txt (string) text to linethrough + * @protected + */ + protected function _dolinethrough($x, $y, $txt) { + $w = $this->GetStringWidth($txt); + return $this->_dolinethroughw($x, $y, $w); + } + + /** + * Line through for rectangular text area. + * @param $x (int) X coordinate + * @param $y (int) Y coordinate + * @param $w (int) line length (width) + * @protected + * @since 4.9.008 (2009-09-29) + */ + protected function _dolinethroughw($x, $y, $w) { + $linew = - $this->CurrentFont['ut'] / 1000 * $this->FontSizePt; + return sprintf('%F %F %F %F re f', $x * $this->k, ((($this->h - $y) * $this->k) + $linew + ($this->FontSizePt / 3)), $w * $this->k, $linew); + } + + /** + * Overline text. + * @param $x (int) X coordinate + * @param $y (int) Y coordinate + * @param $txt (string) text to overline + * @protected + * @since 4.9.015 (2010-04-19) + */ + protected function _dooverline($x, $y, $txt) { + $w = $this->GetStringWidth($txt); + return $this->_dooverlinew($x, $y, $w); + } + + /** + * Overline for rectangular text area. + * @param $x (int) X coordinate + * @param $y (int) Y coordinate + * @param $w (int) width to overline + * @protected + * @since 4.9.015 (2010-04-19) + */ + protected function _dooverlinew($x, $y, $w) { + $linew = - $this->CurrentFont['ut'] / 1000 * $this->FontSizePt; + return sprintf('%F %F %F %F re f', $x * $this->k, (($this->h - $y + $this->FontAscent) * $this->k) - $linew, $w * $this->k, $linew); + + } + + /** + * Format a data string for meta information + * @param $s (string) data string to escape. + * @param $n (int) object ID + * @return string escaped string. + * @protected + */ + protected function _datastring($s, $n=0) { + if ($n == 0) { + $n = $this->n; + } + $s = $this->_encrypt_data($n, $s); + return '('. TCPDF_STATIC::_escape($s).')'; + } + + /** + * Set the document creation timestamp + * @param $time (mixed) Document creation timestamp in seconds or date-time string. + * @public + * @since 5.9.152 (2012-03-23) + */ + public function setDocCreationTimestamp($time) { + if (is_string($time)) { + $time = TCPDF_STATIC::getTimestamp($time); + } + $this->doc_creation_timestamp = intval($time); + } + + /** + * Set the document modification timestamp + * @param $time (mixed) Document modification timestamp in seconds or date-time string. + * @public + * @since 5.9.152 (2012-03-23) + */ + public function setDocModificationTimestamp($time) { + if (is_string($time)) { + $time = TCPDF_STATIC::getTimestamp($time); + } + $this->doc_modification_timestamp = intval($time); + } + + /** + * Returns document creation timestamp in seconds. + * @return (int) Creation timestamp in seconds. + * @public + * @since 5.9.152 (2012-03-23) + */ + public function getDocCreationTimestamp() { + return $this->doc_creation_timestamp; + } + + /** + * Returns document modification timestamp in seconds. + * @return (int) Modfication timestamp in seconds. + * @public + * @since 5.9.152 (2012-03-23) + */ + public function getDocModificationTimestamp() { + return $this->doc_modification_timestamp; + } + + /** + * Returns a formatted date for meta information + * @param $n (int) Object ID. + * @param $timestamp (int) Timestamp to convert. + * @return string escaped date string. + * @protected + * @since 4.6.028 (2009-08-25) + */ + protected function _datestring($n=0, $timestamp=0) { + if ((empty($timestamp)) OR ($timestamp < 0)) { + $timestamp = $this->doc_creation_timestamp; + } + return $this->_datastring('D:'.TCPDF_STATIC::getFormattedDate($timestamp), $n); + } + + /** + * Format a text string for meta information + * @param $s (string) string to escape. + * @param $n (int) object ID + * @return string escaped string. + * @protected + */ + protected function _textstring($s, $n=0) { + if ($this->isunicode) { + //Convert string to UTF-16BE + $s = TCPDF_FONTS::UTF8ToUTF16BE($s, true, $this->isunicode, $this->CurrentFont); + } + return $this->_datastring($s, $n); + } + + /** + * THIS METHOD IS DEPRECATED + * Format a text string + * @param $s (string) string to escape. + * @return string escaped string. + * @protected + * @deprecated + */ + protected function _escapetext($s) { + if ($this->isunicode) { + if (($this->CurrentFont['type'] == 'core') OR ($this->CurrentFont['type'] == 'TrueType') OR ($this->CurrentFont['type'] == 'Type1')) { + $s = TCPDF_FONTS::UTF8ToLatin1($s, $this->isunicode, $this->CurrentFont); + } else { + //Convert string to UTF-16BE and reverse RTL language + $s = TCPDF_FONTS::utf8StrRev($s, false, $this->tmprtl, $this->isunicode, $this->CurrentFont); + } + } + return TCPDF_STATIC::_escape($s); + } + + /** + * get raw output stream. + * @param $s (string) string to output. + * @param $n (int) object reference for encryption mode + * @protected + * @author Nicola Asuni + * @since 5.5.000 (2010-06-22) + */ + protected function _getrawstream($s, $n=0) { + if ($n <= 0) { + // default to current object + $n = $this->n; + } + return $this->_encrypt_data($n, $s); + } + + /** + * Format output stream (DEPRECATED). + * @param $s (string) string to output. + * @param $n (int) object reference for encryption mode + * @protected + * @deprecated + */ + protected function _getstream($s, $n=0) { + return 'stream'."\n".$this->_getrawstream($s, $n)."\n".'endstream'; + } + + /** + * Output a stream (DEPRECATED). + * @param $s (string) string to output. + * @param $n (int) object reference for encryption mode + * @protected + * @deprecated + */ + protected function _putstream($s, $n=0) { + $this->_out($this->_getstream($s, $n)); + } + + /** + * Output a string to the document. + * @param $s (string) string to output. + * @protected + */ + protected function _out($s) { + if ($this->state == 2) { + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['outdata'] .= $s."\n"; + } elseif ((!$this->InFooter) AND isset($this->footerlen[$this->page]) AND ($this->footerlen[$this->page] > 0)) { + // puts data before page footer + $pagebuff = $this->getPageBuffer($this->page); + $page = substr($pagebuff, 0, -$this->footerlen[$this->page]); + $footer = substr($pagebuff, -$this->footerlen[$this->page]); + $this->setPageBuffer($this->page, $page.$s."\n".$footer); + // update footer position + $this->footerpos[$this->page] += strlen($s."\n"); + } else { + // set page data + $this->setPageBuffer($this->page, $s."\n", true); + } + } elseif ($this->state > 0) { + // set general data + $this->setBuffer($s."\n"); + } + } + + /** + * Set header font. + * @param $font (array) Array describing the basic font parameters: (family, style, size). + * @public + * @since 1.1 + */ + public function setHeaderFont($font) { + $this->header_font = $font; + } + + /** + * Get header font. + * @return array() Array describing the basic font parameters: (family, style, size). + * @public + * @since 4.0.012 (2008-07-24) + */ + public function getHeaderFont() { + return $this->header_font; + } + + /** + * Set footer font. + * @param $font (array) Array describing the basic font parameters: (family, style, size). + * @public + * @since 1.1 + */ + public function setFooterFont($font) { + $this->footer_font = $font; + } + + /** + * Get Footer font. + * @return array() Array describing the basic font parameters: (family, style, size). + * @public + * @since 4.0.012 (2008-07-24) + */ + public function getFooterFont() { + return $this->footer_font; + } + + /** + * Set language array. + * @param $language (array) + * @public + * @since 1.1 + */ + public function setLanguageArray($language) { + $this->l = $language; + if (isset($this->l['a_meta_dir'])) { + $this->rtl = $this->l['a_meta_dir']=='rtl' ? true : false; + } else { + $this->rtl = false; + } + } + + /** + * Returns the PDF data. + * @public + */ + public function getPDFData() { + if ($this->state < 3) { + $this->Close(); + } + return $this->buffer; + } + + /** + * Output anchor link. + * @param $url (string) link URL or internal link (i.e.: <a href="#23,4.5">link to page 23 at 4.5 Y position</a>) + * @param $name (string) link name + * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false). + * @param $firstline (boolean) if true prints only the first line and return the remaining string. + * @param $color (array) array of RGB text color + * @param $style (string) font style (U, D, B, I) + * @param $firstblock (boolean) if true the string is the starting of a line. + * @return the number of cells used or the remaining text if $firstline = true; + * @public + */ + public function addHtmlLink($url, $name, $fill=false, $firstline=false, $color='', $style=-1, $firstblock=false) { + if (isset($url[1]) AND ($url[0] == '#')) { + // convert url to internal link + $lnkdata = explode(',', $url); + if (isset($lnkdata[0]) ) { + $page = substr($lnkdata[0], 1); + if (isset($lnkdata[1]) AND (strlen($lnkdata[1]) > 0)) { + $lnky = floatval($lnkdata[1]); + } else { + $lnky = 0; + } + $url = $this->AddLink(); + $this->SetLink($url, $lnky, $page); + } + } + // store current settings + $prevcolor = $this->fgcolor; + $prevstyle = $this->FontStyle; + if (empty($color)) { + $this->SetTextColorArray($this->htmlLinkColorArray); + } else { + $this->SetTextColorArray($color); + } + if ($style == -1) { + $this->SetFont('', $this->FontStyle.$this->htmlLinkFontStyle); + } else { + $this->SetFont('', $this->FontStyle.$style); + } + $ret = $this->Write($this->lasth, $name, $url, $fill, '', false, 0, $firstline, $firstblock, 0); + // restore settings + $this->SetFont('', $prevstyle); + $this->SetTextColorArray($prevcolor); + return $ret; + } + + /** + * Converts pixels to User's Units. + * @param $px (int) pixels + * @return float value in user's unit + * @public + * @see setImageScale(), getImageScale() + */ + public function pixelsToUnits($px) { + return ($px / ($this->imgscale * $this->k)); + } + + /** + * Reverse function for htmlentities. + * Convert entities in UTF-8. + * @param $text_to_convert (string) Text to convert. + * @return string converted text string + * @public + */ + public function unhtmlentities($text_to_convert) { + return @html_entity_decode($text_to_convert, ENT_QUOTES, $this->encoding); + } + + // ENCRYPTION METHODS ---------------------------------- + + /** + * Compute encryption key depending on object number where the encrypted data is stored. + * This is used for all strings and streams without crypt filter specifier. + * @param $n (int) object number + * @return int object key + * @protected + * @author Nicola Asuni + * @since 2.0.000 (2008-01-02) + */ + protected function _objectkey($n) { + $objkey = $this->encryptdata['key'].pack('VXxx', $n); + if ($this->encryptdata['mode'] == 2) { // AES-128 + // AES padding + $objkey .= "\x73\x41\x6C\x54"; // sAlT + } + $objkey = substr(TCPDF_STATIC::_md5_16($objkey), 0, (($this->encryptdata['Length'] / 8) + 5)); + $objkey = substr($objkey, 0, 16); + return $objkey; + } + + /** + * Encrypt the input string. + * @param $n (int) object number + * @param $s (string) data string to encrypt + * @return encrypted string + * @protected + * @author Nicola Asuni + * @since 5.0.005 (2010-05-11) + */ + protected function _encrypt_data($n, $s) { + if (!$this->encrypted) { + return $s; + } + switch ($this->encryptdata['mode']) { + case 0: // RC4-40 + case 1: { // RC4-128 + $s = TCPDF_STATIC::_RC4($this->_objectkey($n), $s, $this->last_enc_key, $this->last_enc_key_c); + break; + } + case 2: { // AES-128 + $s = TCPDF_STATIC::_AES($this->_objectkey($n), $s); + break; + } + case 3: { // AES-256 + $s = TCPDF_STATIC::_AES($this->encryptdata['key'], $s); + break; + } + } + return $s; + } + + /** + * Put encryption on PDF document. + * @protected + * @author Nicola Asuni + * @since 2.0.000 (2008-01-02) + */ + protected function _putencryption() { + if (!$this->encrypted) { + return; + } + $this->encryptdata['objid'] = $this->_newobj(); + $out = '<<'; + if (!isset($this->encryptdata['Filter']) OR empty($this->encryptdata['Filter'])) { + $this->encryptdata['Filter'] = 'Standard'; + } + $out .= ' /Filter /'.$this->encryptdata['Filter']; + if (isset($this->encryptdata['SubFilter']) AND !empty($this->encryptdata['SubFilter'])) { + $out .= ' /SubFilter /'.$this->encryptdata['SubFilter']; + } + if (!isset($this->encryptdata['V']) OR empty($this->encryptdata['V'])) { + $this->encryptdata['V'] = 1; + } + // V is a code specifying the algorithm to be used in encrypting and decrypting the document + $out .= ' /V '.$this->encryptdata['V']; + if (isset($this->encryptdata['Length']) AND !empty($this->encryptdata['Length'])) { + // The length of the encryption key, in bits. The value shall be a multiple of 8, in the range 40 to 256 + $out .= ' /Length '.$this->encryptdata['Length']; + } else { + $out .= ' /Length 40'; + } + if ($this->encryptdata['V'] >= 4) { + if (!isset($this->encryptdata['StmF']) OR empty($this->encryptdata['StmF'])) { + $this->encryptdata['StmF'] = 'Identity'; + } + if (!isset($this->encryptdata['StrF']) OR empty($this->encryptdata['StrF'])) { + // The name of the crypt filter that shall be used when decrypting all strings in the document. + $this->encryptdata['StrF'] = 'Identity'; + } + // A dictionary whose keys shall be crypt filter names and whose values shall be the corresponding crypt filter dictionaries. + if (isset($this->encryptdata['CF']) AND !empty($this->encryptdata['CF'])) { + $out .= ' /CF <<'; + $out .= ' /'.$this->encryptdata['StmF'].' <<'; + $out .= ' /Type /CryptFilter'; + if (isset($this->encryptdata['CF']['CFM']) AND !empty($this->encryptdata['CF']['CFM'])) { + // The method used + $out .= ' /CFM /'.$this->encryptdata['CF']['CFM']; + if ($this->encryptdata['pubkey']) { + $out .= ' /Recipients ['; + foreach ($this->encryptdata['Recipients'] as $rec) { + $out .= ' <'.$rec.'>'; + } + $out .= ' ]'; + if (isset($this->encryptdata['CF']['EncryptMetadata']) AND (!$this->encryptdata['CF']['EncryptMetadata'])) { + $out .= ' /EncryptMetadata false'; + } else { + $out .= ' /EncryptMetadata true'; + } + } + } else { + $out .= ' /CFM /None'; + } + if (isset($this->encryptdata['CF']['AuthEvent']) AND !empty($this->encryptdata['CF']['AuthEvent'])) { + // The event to be used to trigger the authorization that is required to access encryption keys used by this filter. + $out .= ' /AuthEvent /'.$this->encryptdata['CF']['AuthEvent']; + } else { + $out .= ' /AuthEvent /DocOpen'; + } + if (isset($this->encryptdata['CF']['Length']) AND !empty($this->encryptdata['CF']['Length'])) { + // The bit length of the encryption key. + $out .= ' /Length '.$this->encryptdata['CF']['Length']; + } + $out .= ' >> >>'; + } + // The name of the crypt filter that shall be used by default when decrypting streams. + $out .= ' /StmF /'.$this->encryptdata['StmF']; + // The name of the crypt filter that shall be used when decrypting all strings in the document. + $out .= ' /StrF /'.$this->encryptdata['StrF']; + if (isset($this->encryptdata['EFF']) AND !empty($this->encryptdata['EFF'])) { + // The name of the crypt filter that shall be used when encrypting embedded file streams that do not have their own crypt filter specifier. + $out .= ' /EFF /'.$this->encryptdata['']; + } + } + // Additional encryption dictionary entries for the standard security handler + if ($this->encryptdata['pubkey']) { + if (($this->encryptdata['V'] < 4) AND isset($this->encryptdata['Recipients']) AND !empty($this->encryptdata['Recipients'])) { + $out .= ' /Recipients ['; + foreach ($this->encryptdata['Recipients'] as $rec) { + $out .= ' <'.$rec.'>'; + } + $out .= ' ]'; + } + } else { + $out .= ' /R'; + if ($this->encryptdata['V'] == 5) { // AES-256 + $out .= ' 5'; + $out .= ' /OE ('.TCPDF_STATIC::_escape($this->encryptdata['OE']).')'; + $out .= ' /UE ('.TCPDF_STATIC::_escape($this->encryptdata['UE']).')'; + $out .= ' /Perms ('.TCPDF_STATIC::_escape($this->encryptdata['perms']).')'; + } elseif ($this->encryptdata['V'] == 4) { // AES-128 + $out .= ' 4'; + } elseif ($this->encryptdata['V'] < 2) { // RC-40 + $out .= ' 2'; + } else { // RC-128 + $out .= ' 3'; + } + $out .= ' /O ('.TCPDF_STATIC::_escape($this->encryptdata['O']).')'; + $out .= ' /U ('.TCPDF_STATIC::_escape($this->encryptdata['U']).')'; + $out .= ' /P '.$this->encryptdata['P']; + if (isset($this->encryptdata['EncryptMetadata']) AND (!$this->encryptdata['EncryptMetadata'])) { + $out .= ' /EncryptMetadata false'; + } else { + $out .= ' /EncryptMetadata true'; + } + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + + /** + * Compute U value (used for encryption) + * @return string U value + * @protected + * @since 2.0.000 (2008-01-02) + * @author Nicola Asuni + */ + protected function _Uvalue() { + if ($this->encryptdata['mode'] == 0) { // RC4-40 + return TCPDF_STATIC::_RC4($this->encryptdata['key'], TCPDF_STATIC::$enc_padding, $this->last_enc_key, $this->last_enc_key_c); + } elseif ($this->encryptdata['mode'] < 3) { // RC4-128, AES-128 + $tmp = TCPDF_STATIC::_md5_16(TCPDF_STATIC::$enc_padding.$this->encryptdata['fileid']); + $enc = TCPDF_STATIC::_RC4($this->encryptdata['key'], $tmp, $this->last_enc_key, $this->last_enc_key_c); + $len = strlen($tmp); + for ($i = 1; $i <= 19; ++$i) { + $ek = ''; + for ($j = 0; $j < $len; ++$j) { + $ek .= chr(ord($this->encryptdata['key'][$j]) ^ $i); + } + $enc = TCPDF_STATIC::_RC4($ek, $enc, $this->last_enc_key, $this->last_enc_key_c); + } + $enc .= str_repeat("\x00", 16); + return substr($enc, 0, 32); + } elseif ($this->encryptdata['mode'] == 3) { // AES-256 + $seed = TCPDF_STATIC::_md5_16(TCPDF_STATIC::getRandomSeed()); + // User Validation Salt + $this->encryptdata['UVS'] = substr($seed, 0, 8); + // User Key Salt + $this->encryptdata['UKS'] = substr($seed, 8, 16); + return hash('sha256', $this->encryptdata['user_password'].$this->encryptdata['UVS'], true).$this->encryptdata['UVS'].$this->encryptdata['UKS']; + } + } + + /** + * Compute UE value (used for encryption) + * @return string UE value + * @protected + * @since 5.9.006 (2010-10-19) + * @author Nicola Asuni + */ + protected function _UEvalue() { + $hashkey = hash('sha256', $this->encryptdata['user_password'].$this->encryptdata['UKS'], true); + $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); + return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv); + } + + /** + * Compute O value (used for encryption) + * @return string O value + * @protected + * @since 2.0.000 (2008-01-02) + * @author Nicola Asuni + */ + protected function _Ovalue() { + if ($this->encryptdata['mode'] < 3) { // RC4-40, RC4-128, AES-128 + $tmp = TCPDF_STATIC::_md5_16($this->encryptdata['owner_password']); + if ($this->encryptdata['mode'] > 0) { + for ($i = 0; $i < 50; ++$i) { + $tmp = TCPDF_STATIC::_md5_16($tmp); + } + } + $owner_key = substr($tmp, 0, ($this->encryptdata['Length'] / 8)); + $enc = TCPDF_STATIC::_RC4($owner_key, $this->encryptdata['user_password'], $this->last_enc_key, $this->last_enc_key_c); + if ($this->encryptdata['mode'] > 0) { + $len = strlen($owner_key); + for ($i = 1; $i <= 19; ++$i) { + $ek = ''; + for ($j = 0; $j < $len; ++$j) { + $ek .= chr(ord($owner_key[$j]) ^ $i); + } + $enc = TCPDF_STATIC::_RC4($ek, $enc, $this->last_enc_key, $this->last_enc_key_c); + } + } + return $enc; + } elseif ($this->encryptdata['mode'] == 3) { // AES-256 + $seed = TCPDF_STATIC::_md5_16(TCPDF_STATIC::getRandomSeed()); + // Owner Validation Salt + $this->encryptdata['OVS'] = substr($seed, 0, 8); + // Owner Key Salt + $this->encryptdata['OKS'] = substr($seed, 8, 16); + return hash('sha256', $this->encryptdata['owner_password'].$this->encryptdata['OVS'].$this->encryptdata['U'], true).$this->encryptdata['OVS'].$this->encryptdata['OKS']; + } + } + + /** + * Compute OE value (used for encryption) + * @return string OE value + * @protected + * @since 5.9.006 (2010-10-19) + * @author Nicola Asuni + */ + protected function _OEvalue() { + $hashkey = hash('sha256', $this->encryptdata['owner_password'].$this->encryptdata['OKS'].$this->encryptdata['U'], true); + $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)); + return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $hashkey, $this->encryptdata['key'], MCRYPT_MODE_CBC, $iv); + } + + /** + * Convert password for AES-256 encryption mode + * @param $password (string) password + * @return string password + * @protected + * @since 5.9.006 (2010-10-19) + * @author Nicola Asuni + */ + protected function _fixAES256Password($password) { + $psw = ''; // password to be returned + $psw_array = TCPDF_FONTS::utf8Bidi(TCPDF_FONTS::UTF8StringToArray($password, $this->isunicode, $this->CurrentFont), $password, $this->rtl, $this->isunicode, $this->CurrentFont); + foreach ($psw_array as $c) { + $psw .= TCPDF_FONTS::unichr($c, $this->isunicode); + } + return substr($psw, 0, 127); + } + + /** + * Compute encryption key + * @protected + * @since 2.0.000 (2008-01-02) + * @author Nicola Asuni + */ + protected function _generateencryptionkey() { + $keybytelen = ($this->encryptdata['Length'] / 8); + if (!$this->encryptdata['pubkey']) { // standard mode + if ($this->encryptdata['mode'] == 3) { // AES-256 + // generate 256 bit random key + $this->encryptdata['key'] = substr(hash('sha256', TCPDF_STATIC::getRandomSeed(), true), 0, $keybytelen); + // truncate passwords + $this->encryptdata['user_password'] = $this->_fixAES256Password($this->encryptdata['user_password']); + $this->encryptdata['owner_password'] = $this->_fixAES256Password($this->encryptdata['owner_password']); + // Compute U value + $this->encryptdata['U'] = $this->_Uvalue(); + // Compute UE value + $this->encryptdata['UE'] = $this->_UEvalue(); + // Compute O value + $this->encryptdata['O'] = $this->_Ovalue(); + // Compute OE value + $this->encryptdata['OE'] = $this->_OEvalue(); + // Compute P value + $this->encryptdata['P'] = $this->encryptdata['protection']; + // Computing the encryption dictionary's Perms (permissions) value + $perms = TCPDF_STATIC::getEncPermissionsString($this->encryptdata['protection']); // bytes 0-3 + $perms .= chr(255).chr(255).chr(255).chr(255); // bytes 4-7 + if (isset($this->encryptdata['CF']['EncryptMetadata']) AND (!$this->encryptdata['CF']['EncryptMetadata'])) { // byte 8 + $perms .= 'F'; + } else { + $perms .= 'T'; + } + $perms .= 'adb'; // bytes 9-11 + $perms .= 'nick'; // bytes 12-15 + $iv = str_repeat("\x00", mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB)); + $this->encryptdata['perms'] = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->encryptdata['key'], $perms, MCRYPT_MODE_ECB, $iv); + } else { // RC4-40, RC4-128, AES-128 + // Pad passwords + $this->encryptdata['user_password'] = substr($this->encryptdata['user_password'].TCPDF_STATIC::$enc_padding, 0, 32); + $this->encryptdata['owner_password'] = substr($this->encryptdata['owner_password'].TCPDF_STATIC::$enc_padding, 0, 32); + // Compute O value + $this->encryptdata['O'] = $this->_Ovalue(); + // get default permissions (reverse byte order) + $permissions = TCPDF_STATIC::getEncPermissionsString($this->encryptdata['protection']); + // Compute encryption key + $tmp = TCPDF_STATIC::_md5_16($this->encryptdata['user_password'].$this->encryptdata['O'].$permissions.$this->encryptdata['fileid']); + if ($this->encryptdata['mode'] > 0) { + for ($i = 0; $i < 50; ++$i) { + $tmp = TCPDF_STATIC::_md5_16(substr($tmp, 0, $keybytelen)); + } + } + $this->encryptdata['key'] = substr($tmp, 0, $keybytelen); + // Compute U value + $this->encryptdata['U'] = $this->_Uvalue(); + // Compute P value + $this->encryptdata['P'] = $this->encryptdata['protection']; + } + } else { // Public-Key mode + // random 20-byte seed + $seed = sha1(TCPDF_STATIC::getRandomSeed(), true); + $recipient_bytes = ''; + foreach ($this->encryptdata['pubkeys'] as $pubkey) { + // for each public certificate + if (isset($pubkey['p'])) { + $pkprotection = TCPDF_STATIC::getUserPermissionCode($pubkey['p'], $this->encryptdata['mode']); + } else { + $pkprotection = $this->encryptdata['protection']; + } + // get default permissions (reverse byte order) + $pkpermissions = TCPDF_STATIC::getEncPermissionsString($pkprotection); + // envelope data + $envelope = $seed.$pkpermissions; + // write the envelope data to a temporary file + $tempkeyfile = TCPDF_STATIC::getObjFilename('key'); + $f = fopen($tempkeyfile, 'wb'); + if (!$f) { + $this->Error('Unable to create temporary key file: '.$tempkeyfile); + } + $envelope_length = strlen($envelope); + fwrite($f, $envelope, $envelope_length); + fclose($f); + $tempencfile = TCPDF_STATIC::getObjFilename('enc'); + if (!openssl_pkcs7_encrypt($tempkeyfile, $tempencfile, $pubkey['c'], array(), PKCS7_BINARY | PKCS7_DETACHED)) { + $this->Error('Unable to encrypt the file: '.$tempkeyfile); + } + unlink($tempkeyfile); + // read encryption signature + $signature = file_get_contents($tempencfile, false, null, $envelope_length); + unlink($tempencfile); + // extract signature + $signature = substr($signature, strpos($signature, 'Content-Disposition')); + $tmparr = explode("\n\n", $signature); + $signature = trim($tmparr[1]); + unset($tmparr); + // decode signature + $signature = base64_decode($signature); + // convert signature to hex + $hexsignature = current(unpack('H*', $signature)); + // store signature on recipients array + $this->encryptdata['Recipients'][] = $hexsignature; + // The bytes of each item in the Recipients array of PKCS#7 objects in the order in which they appear in the array + $recipient_bytes .= $signature; + } + // calculate encryption key + if ($this->encryptdata['mode'] == 3) { // AES-256 + $this->encryptdata['key'] = substr(hash('sha256', $seed.$recipient_bytes, true), 0, $keybytelen); + } else { // RC4-40, RC4-128, AES-128 + $this->encryptdata['key'] = substr(sha1($seed.$recipient_bytes, true), 0, $keybytelen); + } + } + } + + /** + * Set document protection + * Remark: the protection against modification is for people who have the full Acrobat product. + * If you don't set any password, the document will open as usual. If you set a user password, the PDF viewer will ask for it before displaying the document. The master password, if different from the user one, can be used to get full access. + * Note: protecting a document requires to encrypt it, which increases the processing time a lot. This can cause a PHP time-out in some cases, especially if the document contains images or fonts. + * @param $permissions (Array) the set of permissions (specify the ones you want to block):
      • print : Print the document;
      • modify : Modify the contents of the document by operations other than those controlled by 'fill-forms', 'extract' and 'assemble';
      • copy : Copy or otherwise extract text and graphics from the document;
      • annot-forms : Add or modify text annotations, fill in interactive form fields, and, if 'modify' is also set, create or modify interactive form fields (including signature fields);
      • fill-forms : Fill in existing interactive form fields (including signature fields), even if 'annot-forms' is not specified;
      • extract : Extract text and graphics (in support of accessibility to users with disabilities or for other purposes);
      • assemble : Assemble the document (insert, rotate, or delete pages and create bookmarks or thumbnail images), even if 'modify' is not set;
      • print-high : Print the document to a representation from which a faithful digital copy of the PDF content could be generated. When this is not set, printing is limited to a low-level representation of the appearance, possibly of degraded quality.
      • owner : (inverted logic - only for public-key) when set permits change of encryption and enables all other permissions.
      + * @param $user_pass (String) user password. Empty by default. + * @param $owner_pass (String) owner password. If not specified, a random value is used. + * @param $mode (int) encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit. + * @param $pubkeys (String) array of recipients containing public-key certificates ('c') and permissions ('p'). For example: array(array('c' => 'file://../examples/data/cert/tcpdf.crt', 'p' => array('print'))) + * @public + * @since 2.0.000 (2008-01-02) + * @author Nicola Asuni + */ + public function SetProtection($permissions=array('print', 'modify', 'copy', 'annot-forms', 'fill-forms', 'extract', 'assemble', 'print-high'), $user_pass='', $owner_pass=null, $mode=0, $pubkeys=null) { + if ($this->pdfa_mode) { + // encryption is not allowed in PDF/A mode + return; + } + $this->encryptdata['protection'] = TCPDF_STATIC::getUserPermissionCode($permissions, $mode); + if (($pubkeys !== null) AND (is_array($pubkeys))) { + // public-key mode + $this->encryptdata['pubkeys'] = $pubkeys; + if ($mode == 0) { + // public-Key Security requires at least 128 bit + $mode = 1; + } + if (!function_exists('openssl_pkcs7_encrypt')) { + $this->Error('Public-Key Security requires openssl library.'); + } + // Set Public-Key filter (availabe are: Entrust.PPKEF, Adobe.PPKLite, Adobe.PubSec) + $this->encryptdata['pubkey'] = true; + $this->encryptdata['Filter'] = 'Adobe.PubSec'; + $this->encryptdata['StmF'] = 'DefaultCryptFilter'; + $this->encryptdata['StrF'] = 'DefaultCryptFilter'; + } else { + // standard mode (password mode) + $this->encryptdata['pubkey'] = false; + $this->encryptdata['Filter'] = 'Standard'; + $this->encryptdata['StmF'] = 'StdCF'; + $this->encryptdata['StrF'] = 'StdCF'; + } + if ($mode > 1) { // AES + if (!extension_loaded('mcrypt')) { + $this->Error('AES encryption requires mcrypt library (http://www.php.net/manual/en/mcrypt.requirements.php).'); + } + if (mcrypt_get_cipher_name(MCRYPT_RIJNDAEL_128) === false) { + $this->Error('AES encryption requires MCRYPT_RIJNDAEL_128 cypher.'); + } + if (($mode == 3) AND !function_exists('hash')) { + // the Hash extension requires no external libraries and is enabled by default as of PHP 5.1.2. + $this->Error('AES 256 encryption requires HASH Message Digest Framework (http://www.php.net/manual/en/book.hash.php).'); + } + } + if ($owner_pass === null) { + $owner_pass = md5(TCPDF_STATIC::getRandomSeed()); + } + $this->encryptdata['user_password'] = $user_pass; + $this->encryptdata['owner_password'] = $owner_pass; + $this->encryptdata['mode'] = $mode; + switch ($mode) { + case 0: { // RC4 40 bit + $this->encryptdata['V'] = 1; + $this->encryptdata['Length'] = 40; + $this->encryptdata['CF']['CFM'] = 'V2'; + break; + } + case 1: { // RC4 128 bit + $this->encryptdata['V'] = 2; + $this->encryptdata['Length'] = 128; + $this->encryptdata['CF']['CFM'] = 'V2'; + if ($this->encryptdata['pubkey']) { + $this->encryptdata['SubFilter'] = 'adbe.pkcs7.s4'; + $this->encryptdata['Recipients'] = array(); + } + break; + } + case 2: { // AES 128 bit + $this->encryptdata['V'] = 4; + $this->encryptdata['Length'] = 128; + $this->encryptdata['CF']['CFM'] = 'AESV2'; + $this->encryptdata['CF']['Length'] = 128; + if ($this->encryptdata['pubkey']) { + $this->encryptdata['SubFilter'] = 'adbe.pkcs7.s5'; + $this->encryptdata['Recipients'] = array(); + } + break; + } + case 3: { // AES 256 bit + $this->encryptdata['V'] = 5; + $this->encryptdata['Length'] = 256; + $this->encryptdata['CF']['CFM'] = 'AESV3'; + $this->encryptdata['CF']['Length'] = 256; + if ($this->encryptdata['pubkey']) { + $this->encryptdata['SubFilter'] = 'adbe.pkcs7.s5'; + $this->encryptdata['Recipients'] = array(); + } + break; + } + } + $this->encrypted = true; + $this->encryptdata['fileid'] = TCPDF_STATIC::convertHexStringToString($this->file_id); + $this->_generateencryptionkey(); + } + + // END OF ENCRYPTION FUNCTIONS ------------------------- + + // START TRANSFORMATIONS SECTION ----------------------- + + /** + * Starts a 2D tranformation saving current graphic state. + * This function must be called before scaling, mirroring, translation, rotation and skewing. + * Use StartTransform() before, and StopTransform() after the transformations to restore the normal behavior. + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function StartTransform() { + if ($this->state != 2) { + return; + } + $this->_outSaveGraphicsState(); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['transfmrk'][] = strlen($this->xobjects[$this->xobjid]['outdata']); + } else { + $this->transfmrk[$this->page][] = $this->pagelen[$this->page]; + } + ++$this->transfmatrix_key; + $this->transfmatrix[$this->transfmatrix_key] = array(); + } + + /** + * Stops a 2D tranformation restoring previous graphic state. + * This function must be called after scaling, mirroring, translation, rotation and skewing. + * Use StartTransform() before, and StopTransform() after the transformations to restore the normal behavior. + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function StopTransform() { + if ($this->state != 2) { + return; + } + $this->_outRestoreGraphicsState(); + if (isset($this->transfmatrix[$this->transfmatrix_key])) { + array_pop($this->transfmatrix[$this->transfmatrix_key]); + --$this->transfmatrix_key; + } + if ($this->inxobj) { + // we are inside an XObject template + array_pop($this->xobjects[$this->xobjid]['transfmrk']); + } else { + array_pop($this->transfmrk[$this->page]); + } + } + /** + * Horizontal Scaling. + * @param $s_x (float) scaling factor for width as percent. 0 is not allowed. + * @param $x (int) abscissa of the scaling center. Default is current x position + * @param $y (int) ordinate of the scaling center. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function ScaleX($s_x, $x='', $y='') { + $this->Scale($s_x, 100, $x, $y); + } + + /** + * Vertical Scaling. + * @param $s_y (float) scaling factor for height as percent. 0 is not allowed. + * @param $x (int) abscissa of the scaling center. Default is current x position + * @param $y (int) ordinate of the scaling center. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function ScaleY($s_y, $x='', $y='') { + $this->Scale(100, $s_y, $x, $y); + } + + /** + * Vertical and horizontal proportional Scaling. + * @param $s (float) scaling factor for width and height as percent. 0 is not allowed. + * @param $x (int) abscissa of the scaling center. Default is current x position + * @param $y (int) ordinate of the scaling center. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function ScaleXY($s, $x='', $y='') { + $this->Scale($s, $s, $x, $y); + } + + /** + * Vertical and horizontal non-proportional Scaling. + * @param $s_x (float) scaling factor for width as percent. 0 is not allowed. + * @param $s_y (float) scaling factor for height as percent. 0 is not allowed. + * @param $x (int) abscissa of the scaling center. Default is current x position + * @param $y (int) ordinate of the scaling center. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function Scale($s_x, $s_y, $x='', $y='') { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + if (($s_x == 0) OR ($s_y == 0)) { + $this->Error('Please do not use values equal to zero for scaling'); + } + $y = ($this->h - $y) * $this->k; + $x *= $this->k; + //calculate elements of transformation matrix + $s_x /= 100; + $s_y /= 100; + $tm = array(); + $tm[0] = $s_x; + $tm[1] = 0; + $tm[2] = 0; + $tm[3] = $s_y; + $tm[4] = $x * (1 - $s_x); + $tm[5] = $y * (1 - $s_y); + //scale the coordinate system + $this->Transform($tm); + } + + /** + * Horizontal Mirroring. + * @param $x (int) abscissa of the point. Default is current x position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function MirrorH($x='') { + $this->Scale(-100, 100, $x); + } + + /** + * Verical Mirroring. + * @param $y (int) ordinate of the point. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function MirrorV($y='') { + $this->Scale(100, -100, '', $y); + } + + /** + * Point reflection mirroring. + * @param $x (int) abscissa of the point. Default is current x position + * @param $y (int) ordinate of the point. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function MirrorP($x='',$y='') { + $this->Scale(-100, -100, $x, $y); + } + + /** + * Reflection against a straight line through point (x, y) with the gradient angle (angle). + * @param $angle (float) gradient angle of the straight line. Default is 0 (horizontal line). + * @param $x (int) abscissa of the point. Default is current x position + * @param $y (int) ordinate of the point. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function MirrorL($angle=0, $x='',$y='') { + $this->Scale(-100, 100, $x, $y); + $this->Rotate(-2*($angle-90), $x, $y); + } + + /** + * Translate graphic object horizontally. + * @param $t_x (int) movement to the right (or left for RTL) + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function TranslateX($t_x) { + $this->Translate($t_x, 0); + } + + /** + * Translate graphic object vertically. + * @param $t_y (int) movement to the bottom + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function TranslateY($t_y) { + $this->Translate(0, $t_y); + } + + /** + * Translate graphic object horizontally and vertically. + * @param $t_x (int) movement to the right + * @param $t_y (int) movement to the bottom + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function Translate($t_x, $t_y) { + //calculate elements of transformation matrix + $tm = array(); + $tm[0] = 1; + $tm[1] = 0; + $tm[2] = 0; + $tm[3] = 1; + $tm[4] = $t_x * $this->k; + $tm[5] = -$t_y * $this->k; + //translate the coordinate system + $this->Transform($tm); + } + + /** + * Rotate object. + * @param $angle (float) angle in degrees for counter-clockwise rotation + * @param $x (int) abscissa of the rotation center. Default is current x position + * @param $y (int) ordinate of the rotation center. Default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function Rotate($angle, $x='', $y='') { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + $y = ($this->h - $y) * $this->k; + $x *= $this->k; + //calculate elements of transformation matrix + $tm = array(); + $tm[0] = cos(deg2rad($angle)); + $tm[1] = sin(deg2rad($angle)); + $tm[2] = -$tm[1]; + $tm[3] = $tm[0]; + $tm[4] = $x + ($tm[1] * $y) - ($tm[0] * $x); + $tm[5] = $y - ($tm[0] * $y) - ($tm[1] * $x); + //rotate the coordinate system around ($x,$y) + $this->Transform($tm); + } + + /** + * Skew horizontally. + * @param $angle_x (float) angle in degrees between -90 (skew to the left) and 90 (skew to the right) + * @param $x (int) abscissa of the skewing center. default is current x position + * @param $y (int) ordinate of the skewing center. default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function SkewX($angle_x, $x='', $y='') { + $this->Skew($angle_x, 0, $x, $y); + } + + /** + * Skew vertically. + * @param $angle_y (float) angle in degrees between -90 (skew to the bottom) and 90 (skew to the top) + * @param $x (int) abscissa of the skewing center. default is current x position + * @param $y (int) ordinate of the skewing center. default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function SkewY($angle_y, $x='', $y='') { + $this->Skew(0, $angle_y, $x, $y); + } + + /** + * Skew. + * @param $angle_x (float) angle in degrees between -90 (skew to the left) and 90 (skew to the right) + * @param $angle_y (float) angle in degrees between -90 (skew to the bottom) and 90 (skew to the top) + * @param $x (int) abscissa of the skewing center. default is current x position + * @param $y (int) ordinate of the skewing center. default is current y position + * @public + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + public function Skew($angle_x, $angle_y, $x='', $y='') { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + if (($angle_x <= -90) OR ($angle_x >= 90) OR ($angle_y <= -90) OR ($angle_y >= 90)) { + $this->Error('Please use values between -90 and +90 degrees for Skewing.'); + } + $x *= $this->k; + $y = ($this->h - $y) * $this->k; + //calculate elements of transformation matrix + $tm = array(); + $tm[0] = 1; + $tm[1] = tan(deg2rad($angle_y)); + $tm[2] = tan(deg2rad($angle_x)); + $tm[3] = 1; + $tm[4] = -$tm[2] * $y; + $tm[5] = -$tm[1] * $x; + //skew the coordinate system + $this->Transform($tm); + } + + /** + * Apply graphic transformations. + * @param $tm (array) transformation matrix + * @protected + * @since 2.1.000 (2008-01-07) + * @see StartTransform(), StopTransform() + */ + protected function Transform($tm) { + if ($this->state != 2) { + return; + } + $this->_out(sprintf('%F %F %F %F %F %F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); + // add tranformation matrix + $this->transfmatrix[$this->transfmatrix_key][] = array('a' => $tm[0], 'b' => $tm[1], 'c' => $tm[2], 'd' => $tm[3], 'e' => $tm[4], 'f' => $tm[5]); + // update transformation mark + if ($this->inxobj) { + // we are inside an XObject template + if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) { + $key = key($this->xobjects[$this->xobjid]['transfmrk']); + $this->xobjects[$this->xobjid]['transfmrk'][$key] = strlen($this->xobjects[$this->xobjid]['outdata']); + } + } elseif (end($this->transfmrk[$this->page]) !== false) { + $key = key($this->transfmrk[$this->page]); + $this->transfmrk[$this->page][$key] = $this->pagelen[$this->page]; + } + } + + // END TRANSFORMATIONS SECTION ------------------------- + + // START GRAPHIC FUNCTIONS SECTION --------------------- + // The following section is based on the code provided by David Hernandez Sanz + + /** + * Defines the line width. By default, the value equals 0.2 mm. The method can be called before the first page is created and the value is retained from page to page. + * @param $width (float) The width. + * @public + * @since 1.0 + * @see Line(), Rect(), Cell(), MultiCell() + */ + public function SetLineWidth($width) { + //Set line width + $this->LineWidth = $width; + $this->linestyleWidth = sprintf('%F w', ($width * $this->k)); + if ($this->state == 2) { + $this->_out($this->linestyleWidth); + } + } + + /** + * Returns the current the line width. + * @return int Line width + * @public + * @since 2.1.000 (2008-01-07) + * @see Line(), SetLineWidth() + */ + public function GetLineWidth() { + return $this->LineWidth; + } + + /** + * Set line style. + * @param $style (array) Line style. Array with keys among the following: + *
        + *
      • width (float): Width of the line in user units.
      • + *
      • cap (string): Type of cap to put on the line. Possible values are: + * butt, round, square. The difference between "square" and "butt" is that + * "square" projects a flat end past the end of the line.
      • + *
      • join (string): Type of join. Possible values are: miter, round, + * bevel.
      • + *
      • dash (mixed): Dash pattern. Is 0 (without dash) or string with + * series of length values, which are the lengths of the on and off dashes. + * For example: "2" represents 2 on, 2 off, 2 on, 2 off, ...; "2,1" is 2 on, + * 1 off, 2 on, 1 off, ...
      • + *
      • phase (integer): Modifier on the dash pattern which is used to shift + * the point at which the pattern starts.
      • + *
      • color (array): Draw color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName).
      • + *
      + * @param $ret (boolean) if true do not send the command. + * @return string the PDF command + * @public + * @since 2.1.000 (2008-01-08) + */ + public function SetLineStyle($style, $ret=false) { + $s = ''; // string to be returned + if (!is_array($style)) { + return; + } + if (isset($style['width'])) { + $this->LineWidth = $style['width']; + $this->linestyleWidth = sprintf('%F w', ($style['width'] * $this->k)); + $s .= $this->linestyleWidth.' '; + } + if (isset($style['cap'])) { + $ca = array('butt' => 0, 'round'=> 1, 'square' => 2); + if (isset($ca[$style['cap']])) { + $this->linestyleCap = $ca[$style['cap']].' J'; + $s .= $this->linestyleCap.' '; + } + } + if (isset($style['join'])) { + $ja = array('miter' => 0, 'round' => 1, 'bevel' => 2); + if (isset($ja[$style['join']])) { + $this->linestyleJoin = $ja[$style['join']].' j'; + $s .= $this->linestyleJoin.' '; + } + } + if (isset($style['dash'])) { + $dash_string = ''; + if ($style['dash']) { + if (preg_match('/^.+,/', $style['dash']) > 0) { + $tab = explode(',', $style['dash']); + } else { + $tab = array($style['dash']); + } + $dash_string = ''; + foreach ($tab as $i => $v) { + if ($i) { + $dash_string .= ' '; + } + $dash_string .= sprintf('%F', $v); + } + } + if (!isset($style['phase']) OR !$style['dash']) { + $style['phase'] = 0; + } + $this->linestyleDash = sprintf('[%s] %F d', $dash_string, $style['phase']); + $s .= $this->linestyleDash.' '; + } + if (isset($style['color'])) { + $s .= $this->SetDrawColorArray($style['color'], true).' '; + } + if (!$ret AND ($this->state == 2)) { + $this->_out($s); + } + return $s; + } + + /** + * Begin a new subpath by moving the current point to coordinates (x, y), omitting any connecting line segment. + * @param $x (float) Abscissa of point. + * @param $y (float) Ordinate of point. + * @protected + * @since 2.1.000 (2008-01-08) + */ + protected function _outPoint($x, $y) { + if ($this->state == 2) { + $this->_out(sprintf('%F %F m', ($x * $this->k), (($this->h - $y) * $this->k))); + } + } + + /** + * Append a straight line segment from the current point to the point (x, y). + * The new current point shall be (x, y). + * @param $x (float) Abscissa of end point. + * @param $y (float) Ordinate of end point. + * @protected + * @since 2.1.000 (2008-01-08) + */ + protected function _outLine($x, $y) { + if ($this->state == 2) { + $this->_out(sprintf('%F %F l', ($x * $this->k), (($this->h - $y) * $this->k))); + } + } + + /** + * Append a rectangle to the current path as a complete subpath, with lower-left corner (x, y) and dimensions widthand height in user space. + * @param $x (float) Abscissa of upper-left corner. + * @param $y (float) Ordinate of upper-left corner. + * @param $w (float) Width. + * @param $h (float) Height. + * @param $op (string) options + * @protected + * @since 2.1.000 (2008-01-08) + */ + protected function _outRect($x, $y, $w, $h, $op) { + if ($this->state == 2) { + $this->_out(sprintf('%F %F %F %F re %s', ($x * $this->k), (($this->h - $y) * $this->k), ($w * $this->k), (-$h * $this->k), $op)); + } + } + + /** + * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x2, y2) as the Bezier control points. + * The new current point shall be (x3, y3). + * @param $x1 (float) Abscissa of control point 1. + * @param $y1 (float) Ordinate of control point 1. + * @param $x2 (float) Abscissa of control point 2. + * @param $y2 (float) Ordinate of control point 2. + * @param $x3 (float) Abscissa of end point. + * @param $y3 (float) Ordinate of end point. + * @protected + * @since 2.1.000 (2008-01-08) + */ + protected function _outCurve($x1, $y1, $x2, $y2, $x3, $y3) { + if ($this->state == 2) { + $this->_out(sprintf('%F %F %F %F %F %F c', ($x1 * $this->k), (($this->h - $y1) * $this->k), ($x2 * $this->k), (($this->h - $y2) * $this->k), ($x3 * $this->k), (($this->h - $y3) * $this->k))); + } + } + + /** + * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using the current point and (x2, y2) as the Bezier control points. + * The new current point shall be (x3, y3). + * @param $x2 (float) Abscissa of control point 2. + * @param $y2 (float) Ordinate of control point 2. + * @param $x3 (float) Abscissa of end point. + * @param $y3 (float) Ordinate of end point. + * @protected + * @since 4.9.019 (2010-04-26) + */ + protected function _outCurveV($x2, $y2, $x3, $y3) { + if ($this->state == 2) { + $this->_out(sprintf('%F %F %F %F v', ($x2 * $this->k), (($this->h - $y2) * $this->k), ($x3 * $this->k), (($this->h - $y3) * $this->k))); + } + } + + /** + * Append a cubic Bezier curve to the current path. The curve shall extend from the current point to the point (x3, y3), using (x1, y1) and (x3, y3) as the Bezier control points. + * The new current point shall be (x3, y3). + * @param $x1 (float) Abscissa of control point 1. + * @param $y1 (float) Ordinate of control point 1. + * @param $x3 (float) Abscissa of end point. + * @param $y3 (float) Ordinate of end point. + * @protected + * @since 2.1.000 (2008-01-08) + */ + protected function _outCurveY($x1, $y1, $x3, $y3) { + if ($this->state == 2) { + $this->_out(sprintf('%F %F %F %F y', ($x1 * $this->k), (($this->h - $y1) * $this->k), ($x3 * $this->k), (($this->h - $y3) * $this->k))); + } + } + + /** + * Draws a line between two points. + * @param $x1 (float) Abscissa of first point. + * @param $y1 (float) Ordinate of first point. + * @param $x2 (float) Abscissa of second point. + * @param $y2 (float) Ordinate of second point. + * @param $style (array) Line style. Array like for SetLineStyle(). Default value: default line style (empty array). + * @public + * @since 1.0 + * @see SetLineWidth(), SetDrawColor(), SetLineStyle() + */ + public function Line($x1, $y1, $x2, $y2, $style=array()) { + if ($this->state != 2) { + return; + } + if (is_array($style)) { + $this->SetLineStyle($style); + } + $this->_outPoint($x1, $y1); + $this->_outLine($x2, $y2); + $this->_out('S'); + } + + /** + * Draws a rectangle. + * @param $x (float) Abscissa of upper-left corner. + * @param $y (float) Ordinate of upper-left corner. + * @param $w (float) Width. + * @param $h (float) Height. + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $border_style (array) Border style of rectangle. Array with keys among the following: + *
        + *
      • all: Line style of all borders. Array like for SetLineStyle().
      • + *
      • L, T, R, B or combinations: Line style of left, top, right or bottom border. Array like for SetLineStyle().
      • + *
      + * If a key is not present or is null, the correspondent border is not drawn. Default value: default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @public + * @since 1.0 + * @see SetLineStyle() + */ + public function Rect($x, $y, $w, $h, $style='', $border_style=array(), $fill_color=array()) { + if ($this->state != 2) { + return; + } + if (empty($style)) { + $style = 'S'; + } + if (!(strpos($style, 'F') === false) AND !empty($fill_color)) { + // set background color + $this->SetFillColorArray($fill_color); + } + if (!empty($border_style)) { + if (isset($border_style['all']) AND !empty($border_style['all'])) { + //set global style for border + $this->SetLineStyle($border_style['all']); + $border_style = array(); + } else { + // remove stroke operator from style + $opnostroke = array('S' => '', 'D' => '', 's' => '', 'd' => '', 'B' => 'F', 'FD' => 'F', 'DF' => 'F', 'B*' => 'F*', 'F*D' => 'F*', 'DF*' => 'F*', 'b' => 'f', 'fd' => 'f', 'df' => 'f', 'b*' => 'f*', 'f*d' => 'f*', 'df*' => 'f*' ); + if (isset($opnostroke[$style])) { + $style = $opnostroke[$style]; + } + } + } + if (!empty($style)) { + $op = TCPDF_STATIC::getPathPaintOperator($style); + $this->_outRect($x, $y, $w, $h, $op); + } + if (!empty($border_style)) { + $border_style2 = array(); + foreach ($border_style as $line => $value) { + $length = strlen($line); + for ($i = 0; $i < $length; ++$i) { + $border_style2[$line[$i]] = $value; + } + } + $border_style = $border_style2; + if (isset($border_style['L']) AND $border_style['L']) { + $this->Line($x, $y, $x, $y + $h, $border_style['L']); + } + if (isset($border_style['T']) AND $border_style['T']) { + $this->Line($x, $y, $x + $w, $y, $border_style['T']); + } + if (isset($border_style['R']) AND $border_style['R']) { + $this->Line($x + $w, $y, $x + $w, $y + $h, $border_style['R']); + } + if (isset($border_style['B']) AND $border_style['B']) { + $this->Line($x, $y + $h, $x + $w, $y + $h, $border_style['B']); + } + } + } + + /** + * Draws a Bezier curve. + * The Bezier curve is a tangent to the line between the control points at + * either end of the curve. + * @param $x0 (float) Abscissa of start point. + * @param $y0 (float) Ordinate of start point. + * @param $x1 (float) Abscissa of control point 1. + * @param $y1 (float) Ordinate of control point 1. + * @param $x2 (float) Abscissa of control point 2. + * @param $y2 (float) Ordinate of control point 2. + * @param $x3 (float) Abscissa of end point. + * @param $y3 (float) Ordinate of end point. + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of curve. Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @public + * @see SetLineStyle() + * @since 2.1.000 (2008-01-08) + */ + public function Curve($x0, $y0, $x1, $y1, $x2, $y2, $x3, $y3, $style='', $line_style=array(), $fill_color=array()) { + if ($this->state != 2) { + return; + } + if (!(false === strpos($style, 'F')) AND isset($fill_color)) { + $this->SetFillColorArray($fill_color); + } + $op = TCPDF_STATIC::getPathPaintOperator($style); + if ($line_style) { + $this->SetLineStyle($line_style); + } + $this->_outPoint($x0, $y0); + $this->_outCurve($x1, $y1, $x2, $y2, $x3, $y3); + $this->_out($op); + } + + /** + * Draws a poly-Bezier curve. + * Each Bezier curve segment is a tangent to the line between the control points at + * either end of the curve. + * @param $x0 (float) Abscissa of start point. + * @param $y0 (float) Ordinate of start point. + * @param $segments (float) An array of bezier descriptions. Format: array(x1, y1, x2, y2, x3, y3). + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of curve. Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @public + * @see SetLineStyle() + * @since 3.0008 (2008-05-12) + */ + public function Polycurve($x0, $y0, $segments, $style='', $line_style=array(), $fill_color=array()) { + if ($this->state != 2) { + return; + } + if (!(false === strpos($style, 'F')) AND isset($fill_color)) { + $this->SetFillColorArray($fill_color); + } + $op = TCPDF_STATIC::getPathPaintOperator($style); + if ($op == 'f') { + $line_style = array(); + } + if ($line_style) { + $this->SetLineStyle($line_style); + } + $this->_outPoint($x0, $y0); + foreach ($segments as $segment) { + list($x1, $y1, $x2, $y2, $x3, $y3) = $segment; + $this->_outCurve($x1, $y1, $x2, $y2, $x3, $y3); + } + $this->_out($op); + } + + /** + * Draws an ellipse. + * An ellipse is formed from n Bezier curves. + * @param $x0 (float) Abscissa of center point. + * @param $y0 (float) Ordinate of center point. + * @param $rx (float) Horizontal radius. + * @param $ry (float) Vertical radius (if ry = 0 then is a circle, see Circle()). Default value: 0. + * @param $angle: (float) Angle oriented (anti-clockwise). Default value: 0. + * @param $astart: (float) Angle start of draw line. Default value: 0. + * @param $afinish: (float) Angle finish of draw line. Default value: 360. + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of ellipse. Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @param $nc (integer) Number of curves used to draw a 90 degrees portion of ellipse. + * @author Nicola Asuni + * @public + * @since 2.1.000 (2008-01-08) + */ + public function Ellipse($x0, $y0, $rx, $ry='', $angle=0, $astart=0, $afinish=360, $style='', $line_style=array(), $fill_color=array(), $nc=2) { + if ($this->state != 2) { + return; + } + if (TCPDF_STATIC::empty_string($ry) OR ($ry == 0)) { + $ry = $rx; + } + if (!(false === strpos($style, 'F')) AND isset($fill_color)) { + $this->SetFillColorArray($fill_color); + } + $op = TCPDF_STATIC::getPathPaintOperator($style); + if ($op == 'f') { + $line_style = array(); + } + if ($line_style) { + $this->SetLineStyle($line_style); + } + $this->_outellipticalarc($x0, $y0, $rx, $ry, $angle, $astart, $afinish, false, $nc, true, true, false); + $this->_out($op); + } + + /** + * Append an elliptical arc to the current path. + * An ellipse is formed from n Bezier curves. + * @param $xc (float) Abscissa of center point. + * @param $yc (float) Ordinate of center point. + * @param $rx (float) Horizontal radius. + * @param $ry (float) Vertical radius (if ry = 0 then is a circle, see Circle()). Default value: 0. + * @param $xang: (float) Angle between the X-axis and the major axis of the ellipse. Default value: 0. + * @param $angs: (float) Angle start of draw line. Default value: 0. + * @param $angf: (float) Angle finish of draw line. Default value: 360. + * @param $pie (boolean) if true do not mark the border point (used to draw pie sectors). + * @param $nc (integer) Number of curves used to draw a 90 degrees portion of ellipse. + * @param $startpoint (boolean) if true output a starting point. + * @param $ccw (boolean) if true draws in counter-clockwise. + * @param $svg (boolean) if true the angles are in svg mode (already calculated). + * @return array bounding box coordinates (x min, y min, x max, y max) + * @author Nicola Asuni + * @protected + * @since 4.9.019 (2010-04-26) + */ + protected function _outellipticalarc($xc, $yc, $rx, $ry, $xang=0, $angs=0, $angf=360, $pie=false, $nc=2, $startpoint=true, $ccw=true, $svg=false) { + if (($rx <= 0) OR ($ry < 0)) { + return; + } + $k = $this->k; + if ($nc < 2) { + $nc = 2; + } + $xmin = 2147483647; + $ymin = 2147483647; + $xmax = 0; + $ymax = 0; + if ($pie) { + // center of the arc + $this->_outPoint($xc, $yc); + } + $xang = deg2rad((float) $xang); + $angs = deg2rad((float) $angs); + $angf = deg2rad((float) $angf); + if ($svg) { + $as = $angs; + $af = $angf; + } else { + $as = atan2((sin($angs) / $ry), (cos($angs) / $rx)); + $af = atan2((sin($angf) / $ry), (cos($angf) / $rx)); + } + if ($as < 0) { + $as += (2 * M_PI); + } + if ($af < 0) { + $af += (2 * M_PI); + } + if ($ccw AND ($as > $af)) { + // reverse rotation + $as -= (2 * M_PI); + } elseif (!$ccw AND ($as < $af)) { + // reverse rotation + $af -= (2 * M_PI); + } + $total_angle = ($af - $as); + if ($nc < 2) { + $nc = 2; + } + // total arcs to draw + $nc *= (2 * abs($total_angle) / M_PI); + $nc = round($nc) + 1; + // angle of each arc + $arcang = ($total_angle / $nc); + // center point in PDF coordinates + $x0 = $xc; + $y0 = ($this->h - $yc); + // starting angle + $ang = $as; + $alpha = sin($arcang) * ((sqrt(4 + (3 * pow(tan(($arcang) / 2), 2))) - 1) / 3); + $cos_xang = cos($xang); + $sin_xang = sin($xang); + $cos_ang = cos($ang); + $sin_ang = sin($ang); + // first arc point + $px1 = $x0 + ($rx * $cos_xang * $cos_ang) - ($ry * $sin_xang * $sin_ang); + $py1 = $y0 + ($rx * $sin_xang * $cos_ang) + ($ry * $cos_xang * $sin_ang); + // first Bezier control point + $qx1 = ($alpha * ((-$rx * $cos_xang * $sin_ang) - ($ry * $sin_xang * $cos_ang))); + $qy1 = ($alpha * ((-$rx * $sin_xang * $sin_ang) + ($ry * $cos_xang * $cos_ang))); + if ($pie) { + // line from center to arc starting point + $this->_outLine($px1, $this->h - $py1); + } elseif ($startpoint) { + // arc starting point + $this->_outPoint($px1, $this->h - $py1); + } + // draw arcs + for ($i = 1; $i <= $nc; ++$i) { + // starting angle + $ang = $as + ($i * $arcang); + if ($i == $nc) { + $ang = $af; + } + $cos_ang = cos($ang); + $sin_ang = sin($ang); + // second arc point + $px2 = $x0 + ($rx * $cos_xang * $cos_ang) - ($ry * $sin_xang * $sin_ang); + $py2 = $y0 + ($rx * $sin_xang * $cos_ang) + ($ry * $cos_xang * $sin_ang); + // second Bezier control point + $qx2 = ($alpha * ((-$rx * $cos_xang * $sin_ang) - ($ry * $sin_xang * $cos_ang))); + $qy2 = ($alpha * ((-$rx * $sin_xang * $sin_ang) + ($ry * $cos_xang * $cos_ang))); + // draw arc + $cx1 = ($px1 + $qx1); + $cy1 = ($this->h - ($py1 + $qy1)); + $cx2 = ($px2 - $qx2); + $cy2 = ($this->h - ($py2 - $qy2)); + $cx3 = $px2; + $cy3 = ($this->h - $py2); + $this->_outCurve($cx1, $cy1, $cx2, $cy2, $cx3, $cy3); + // get bounding box coordinates + $xmin = min($xmin, $cx1, $cx2, $cx3); + $ymin = min($ymin, $cy1, $cy2, $cy3); + $xmax = max($xmax, $cx1, $cx2, $cx3); + $ymax = max($ymax, $cy1, $cy2, $cy3); + // move to next point + $px1 = $px2; + $py1 = $py2; + $qx1 = $qx2; + $qy1 = $qy2; + } + if ($pie) { + $this->_outLine($xc, $yc); + // get bounding box coordinates + $xmin = min($xmin, $xc); + $ymin = min($ymin, $yc); + $xmax = max($xmax, $xc); + $ymax = max($ymax, $yc); + } + return array($xmin, $ymin, $xmax, $ymax); + } + + /** + * Draws a circle. + * A circle is formed from n Bezier curves. + * @param $x0 (float) Abscissa of center point. + * @param $y0 (float) Ordinate of center point. + * @param $r (float) Radius. + * @param $angstr: (float) Angle start of draw line. Default value: 0. + * @param $angend: (float) Angle finish of draw line. Default value: 360. + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of circle. Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(red, green, blue). Default value: default color (empty array). + * @param $nc (integer) Number of curves used to draw a 90 degrees portion of circle. + * @public + * @since 2.1.000 (2008-01-08) + */ + public function Circle($x0, $y0, $r, $angstr=0, $angend=360, $style='', $line_style=array(), $fill_color=array(), $nc=2) { + $this->Ellipse($x0, $y0, $r, $r, 0, $angstr, $angend, $style, $line_style, $fill_color, $nc); + } + + /** + * Draws a polygonal line + * @param $p (array) Points 0 to ($np - 1). Array with values (x0, y0, x1, y1,..., x(np-1), y(np - 1)) + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of polygon. Array with keys among the following: + *
        + *
      • all: Line style of all lines. Array like for SetLineStyle().
      • + *
      • 0 to ($np - 1): Line style of each line. Array like for SetLineStyle().
      • + *
      + * If a key is not present or is null, not draws the line. Default value is default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @since 4.8.003 (2009-09-15) + * @public + */ + public function PolyLine($p, $style='', $line_style=array(), $fill_color=array()) { + $this->Polygon($p, $style, $line_style, $fill_color, false); + } + + /** + * Draws a polygon. + * @param $p (array) Points 0 to ($np - 1). Array with values (x0, y0, x1, y1,..., x(np-1), y(np - 1)) + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of polygon. Array with keys among the following: + *
        + *
      • all: Line style of all lines. Array like for SetLineStyle().
      • + *
      • 0 to ($np - 1): Line style of each line. Array like for SetLineStyle().
      • + *
      + * If a key is not present or is null, not draws the line. Default value is default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @param $closed (boolean) if true the polygon is closes, otherwise will remain open + * @public + * @since 2.1.000 (2008-01-08) + */ + public function Polygon($p, $style='', $line_style=array(), $fill_color=array(), $closed=true) { + if ($this->state != 2) { + return; + } + $nc = count($p); // number of coordinates + $np = $nc / 2; // number of points + if ($closed) { + // close polygon by adding the first 2 points at the end (one line) + for ($i = 0; $i < 4; ++$i) { + $p[$nc + $i] = $p[$i]; + } + // copy style for the last added line + if (isset($line_style[0])) { + $line_style[$np] = $line_style[0]; + } + $nc += 4; + } + if (!(false === strpos($style, 'F')) AND isset($fill_color)) { + $this->SetFillColorArray($fill_color); + } + $op = TCPDF_STATIC::getPathPaintOperator($style); + if ($op == 'f') { + $line_style = array(); + } + $draw = true; + if ($line_style) { + if (isset($line_style['all'])) { + $this->SetLineStyle($line_style['all']); + } else { + $draw = false; + if ($op == 'B') { + // draw fill + $op = 'f'; + $this->_outPoint($p[0], $p[1]); + for ($i = 2; $i < $nc; $i = $i + 2) { + $this->_outLine($p[$i], $p[$i + 1]); + } + $this->_out($op); + } + // draw outline + $this->_outPoint($p[0], $p[1]); + for ($i = 2; $i < $nc; $i = $i + 2) { + $line_num = ($i / 2) - 1; + if (isset($line_style[$line_num])) { + if ($line_style[$line_num] != 0) { + if (is_array($line_style[$line_num])) { + $this->_out('S'); + $this->SetLineStyle($line_style[$line_num]); + $this->_outPoint($p[$i - 2], $p[$i - 1]); + $this->_outLine($p[$i], $p[$i + 1]); + $this->_out('S'); + $this->_outPoint($p[$i], $p[$i + 1]); + } else { + $this->_outLine($p[$i], $p[$i + 1]); + } + } + } else { + $this->_outLine($p[$i], $p[$i + 1]); + } + } + $this->_out($op); + } + } + if ($draw) { + $this->_outPoint($p[0], $p[1]); + for ($i = 2; $i < $nc; $i = $i + 2) { + $this->_outLine($p[$i], $p[$i + 1]); + } + $this->_out($op); + } + } + + /** + * Draws a regular polygon. + * @param $x0 (float) Abscissa of center point. + * @param $y0 (float) Ordinate of center point. + * @param $r: (float) Radius of inscribed circle. + * @param $ns (integer) Number of sides. + * @param $angle (float) Angle oriented (anti-clockwise). Default value: 0. + * @param $draw_circle (boolean) Draw inscribed circle or not. Default value: false. + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of polygon sides. Array with keys among the following: + *
        + *
      • all: Line style of all sides. Array like for SetLineStyle().
      • + *
      • 0 to ($ns - 1): Line style of each side. Array like for SetLineStyle().
      • + *
      + * If a key is not present or is null, not draws the side. Default value is default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(red, green, blue). Default value: default color (empty array). + * @param $circle_style (string) Style of rendering of inscribed circle (if draws). Possible values are: + *
        + *
      • D or empty string: Draw (default).
      • + *
      • F: Fill.
      • + *
      • DF or FD: Draw and fill.
      • + *
      • CNZ: Clipping mode (using the even-odd rule to determine which regions lie inside the clipping path).
      • + *
      • CEO: Clipping mode (using the nonzero winding number rule to determine which regions lie inside the clipping path).
      • + *
      + * @param $circle_outLine_style (array) Line style of inscribed circle (if draws). Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $circle_fill_color (array) Fill color of inscribed circle (if draws). Format: array(red, green, blue). Default value: default color (empty array). + * @public + * @since 2.1.000 (2008-01-08) + */ + public function RegularPolygon($x0, $y0, $r, $ns, $angle=0, $draw_circle=false, $style='', $line_style=array(), $fill_color=array(), $circle_style='', $circle_outLine_style=array(), $circle_fill_color=array()) { + if (3 > $ns) { + $ns = 3; + } + if ($draw_circle) { + $this->Circle($x0, $y0, $r, 0, 360, $circle_style, $circle_outLine_style, $circle_fill_color); + } + $p = array(); + for ($i = 0; $i < $ns; ++$i) { + $a = $angle + ($i * 360 / $ns); + $a_rad = deg2rad((float) $a); + $p[] = $x0 + ($r * sin($a_rad)); + $p[] = $y0 + ($r * cos($a_rad)); + } + $this->Polygon($p, $style, $line_style, $fill_color); + } + + /** + * Draws a star polygon + * @param $x0 (float) Abscissa of center point. + * @param $y0 (float) Ordinate of center point. + * @param $r (float) Radius of inscribed circle. + * @param $nv (integer) Number of vertices. + * @param $ng (integer) Number of gap (if ($ng % $nv = 1) then is a regular polygon). + * @param $angle: (float) Angle oriented (anti-clockwise). Default value: 0. + * @param $draw_circle: (boolean) Draw inscribed circle or not. Default value is false. + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $line_style (array) Line style of polygon sides. Array with keys among the following: + *
        + *
      • all: Line style of all sides. Array like for + * SetLineStyle().
      • + *
      • 0 to (n - 1): Line style of each side. Array like for SetLineStyle().
      • + *
      + * If a key is not present or is null, not draws the side. Default value is default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(red, green, blue). Default value: default color (empty array). + * @param $circle_style (string) Style of rendering of inscribed circle (if draws). Possible values are: + *
        + *
      • D or empty string: Draw (default).
      • + *
      • F: Fill.
      • + *
      • DF or FD: Draw and fill.
      • + *
      • CNZ: Clipping mode (using the even-odd rule to determine which regions lie inside the clipping path).
      • + *
      • CEO: Clipping mode (using the nonzero winding number rule to determine which regions lie inside the clipping path).
      • + *
      + * @param $circle_outLine_style (array) Line style of inscribed circle (if draws). Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $circle_fill_color (array) Fill color of inscribed circle (if draws). Format: array(red, green, blue). Default value: default color (empty array). + * @public + * @since 2.1.000 (2008-01-08) + */ + public function StarPolygon($x0, $y0, $r, $nv, $ng, $angle=0, $draw_circle=false, $style='', $line_style=array(), $fill_color=array(), $circle_style='', $circle_outLine_style=array(), $circle_fill_color=array()) { + if ($nv < 2) { + $nv = 2; + } + if ($draw_circle) { + $this->Circle($x0, $y0, $r, 0, 360, $circle_style, $circle_outLine_style, $circle_fill_color); + } + $p2 = array(); + $visited = array(); + for ($i = 0; $i < $nv; ++$i) { + $a = $angle + ($i * 360 / $nv); + $a_rad = deg2rad((float) $a); + $p2[] = $x0 + ($r * sin($a_rad)); + $p2[] = $y0 + ($r * cos($a_rad)); + $visited[] = false; + } + $p = array(); + $i = 0; + do { + $p[] = $p2[$i * 2]; + $p[] = $p2[($i * 2) + 1]; + $visited[$i] = true; + $i += $ng; + $i %= $nv; + } while (!$visited[$i]); + $this->Polygon($p, $style, $line_style, $fill_color); + } + + /** + * Draws a rounded rectangle. + * @param $x (float) Abscissa of upper-left corner. + * @param $y (float) Ordinate of upper-left corner. + * @param $w (float) Width. + * @param $h (float) Height. + * @param $r (float) the radius of the circle used to round off the corners of the rectangle. + * @param $round_corner (string) Draws rounded corner or not. String with a 0 (not rounded i-corner) or 1 (rounded i-corner) in i-position. Positions are, in order and begin to 0: top right, bottom right, bottom left and top left. Default value: all rounded corner ("1111"). + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $border_style (array) Border style of rectangle. Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @public + * @since 2.1.000 (2008-01-08) + */ + public function RoundedRect($x, $y, $w, $h, $r, $round_corner='1111', $style='', $border_style=array(), $fill_color=array()) { + $this->RoundedRectXY($x, $y, $w, $h, $r, $r, $round_corner, $style, $border_style, $fill_color); + } + + /** + * Draws a rounded rectangle. + * @param $x (float) Abscissa of upper-left corner. + * @param $y (float) Ordinate of upper-left corner. + * @param $w (float) Width. + * @param $h (float) Height. + * @param $rx (float) the x-axis radius of the ellipse used to round off the corners of the rectangle. + * @param $ry (float) the y-axis radius of the ellipse used to round off the corners of the rectangle. + * @param $round_corner (string) Draws rounded corner or not. String with a 0 (not rounded i-corner) or 1 (rounded i-corner) in i-position. Positions are, in order and begin to 0: top right, bottom right, bottom left and top left. Default value: all rounded corner ("1111"). + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $border_style (array) Border style of rectangle. Array like for SetLineStyle(). Default value: default line style (empty array). + * @param $fill_color (array) Fill color. Format: array(GREY) or array(R,G,B) or array(C,M,Y,K) or array(C,M,Y,K,SpotColorName). Default value: default color (empty array). + * @public + * @since 4.9.019 (2010-04-22) + */ + public function RoundedRectXY($x, $y, $w, $h, $rx, $ry, $round_corner='1111', $style='', $border_style=array(), $fill_color=array()) { + if ($this->state != 2) { + return; + } + if (($round_corner == '0000') OR (($rx == $ry) AND ($rx == 0))) { + // Not rounded + $this->Rect($x, $y, $w, $h, $style, $border_style, $fill_color); + return; + } + // Rounded + if (!(false === strpos($style, 'F')) AND isset($fill_color)) { + $this->SetFillColorArray($fill_color); + } + $op = TCPDF_STATIC::getPathPaintOperator($style); + if ($op == 'f') { + $border_style = array(); + } + if ($border_style) { + $this->SetLineStyle($border_style); + } + $MyArc = 4 / 3 * (sqrt(2) - 1); + $this->_outPoint($x + $rx, $y); + $xc = $x + $w - $rx; + $yc = $y + $ry; + $this->_outLine($xc, $y); + if ($round_corner[0]) { + $this->_outCurve($xc + ($rx * $MyArc), $yc - $ry, $xc + $rx, $yc - ($ry * $MyArc), $xc + $rx, $yc); + } else { + $this->_outLine($x + $w, $y); + } + $xc = $x + $w - $rx; + $yc = $y + $h - $ry; + $this->_outLine($x + $w, $yc); + if ($round_corner[1]) { + $this->_outCurve($xc + $rx, $yc + ($ry * $MyArc), $xc + ($rx * $MyArc), $yc + $ry, $xc, $yc + $ry); + } else { + $this->_outLine($x + $w, $y + $h); + } + $xc = $x + $rx; + $yc = $y + $h - $ry; + $this->_outLine($xc, $y + $h); + if ($round_corner[2]) { + $this->_outCurve($xc - ($rx * $MyArc), $yc + $ry, $xc - $rx, $yc + ($ry * $MyArc), $xc - $rx, $yc); + } else { + $this->_outLine($x, $y + $h); + } + $xc = $x + $rx; + $yc = $y + $ry; + $this->_outLine($x, $yc); + if ($round_corner[3]) { + $this->_outCurve($xc - $rx, $yc - ($ry * $MyArc), $xc - ($rx * $MyArc), $yc - $ry, $xc, $yc - $ry); + } else { + $this->_outLine($x, $y); + $this->_outLine($x + $rx, $y); + } + $this->_out($op); + } + + /** + * Draws a grahic arrow. + * @param $x0 (float) Abscissa of first point. + * @param $y0 (float) Ordinate of first point. + * @param $x1 (float) Abscissa of second point. + * @param $y1 (float) Ordinate of second point. + * @param $head_style (int) (0 = draw only arrowhead arms, 1 = draw closed arrowhead, but no fill, 2 = closed and filled arrowhead, 3 = filled arrowhead) + * @param $arm_size (float) length of arrowhead arms + * @param $arm_angle (int) angle between an arm and the shaft + * @author Piotr Galecki, Nicola Asuni, Andy Meier + * @since 4.6.018 (2009-07-10) + */ + public function Arrow($x0, $y0, $x1, $y1, $head_style=0, $arm_size=5, $arm_angle=15) { + // getting arrow direction angle + // 0 deg angle is when both arms go along X axis. angle grows clockwise. + $dir_angle = atan2(($y0 - $y1), ($x0 - $x1)); + if ($dir_angle < 0) { + $dir_angle += (2 * M_PI); + } + $arm_angle = deg2rad($arm_angle); + $sx1 = $x1; + $sy1 = $y1; + if ($head_style > 0) { + // calculate the stopping point for the arrow shaft + $sx1 = $x1 + (($arm_size - $this->LineWidth) * cos($dir_angle)); + $sy1 = $y1 + (($arm_size - $this->LineWidth) * sin($dir_angle)); + } + // main arrow line / shaft + $this->Line($x0, $y0, $sx1, $sy1); + // left arrowhead arm tip + $x2L = $x1 + ($arm_size * cos($dir_angle + $arm_angle)); + $y2L = $y1 + ($arm_size * sin($dir_angle + $arm_angle)); + // right arrowhead arm tip + $x2R = $x1 + ($arm_size * cos($dir_angle - $arm_angle)); + $y2R = $y1 + ($arm_size * sin($dir_angle - $arm_angle)); + $mode = 'D'; + $style = array(); + switch ($head_style) { + case 0: { + // draw only arrowhead arms + $mode = 'D'; + $style = array(1, 1, 0); + break; + } + case 1: { + // draw closed arrowhead, but no fill + $mode = 'D'; + break; + } + case 2: { + // closed and filled arrowhead + $mode = 'DF'; + break; + } + case 3: { + // filled arrowhead + $mode = 'F'; + break; + } + } + $this->Polygon(array($x2L, $y2L, $x1, $y1, $x2R, $y2R), $mode, $style, array()); + } + + // END GRAPHIC FUNCTIONS SECTION ----------------------- + + /** + * Add a Named Destination. + * NOTE: destination names are unique, so only last entry will be saved. + * @param $name (string) Destination name. + * @param $y (float) Y position in user units of the destiantion on the selected page (default = -1 = current position; 0 = page start;). + * @param $page (int|string) Target page number (leave empty for current page). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages. + * @param $x (float) X position in user units of the destiantion on the selected page (default = -1 = current position;). + * @return (string) Stripped named destination identifier or false in case of error. + * @public + * @author Christian Deligant, Nicola Asuni + * @since 5.9.097 (2011-06-23) + */ + public function setDestination($name, $y=-1, $page='', $x=-1) { + // remove unsupported characters + $name = TCPDF_STATIC::encodeNameObject($name); + if (TCPDF_STATIC::empty_string($name)) { + return false; + } + if ($y == -1) { + $y = $this->GetY(); + } elseif ($y < 0) { + $y = 0; + } elseif ($y > $this->h) { + $y = $this->h; + } + if ($x == -1) { + $x = $this->GetX(); + } elseif ($x < 0) { + $x = 0; + } elseif ($x > $this->w) { + $x = $this->w; + } + $fixed = false; + if (!empty($page) AND ($page[0] == '*')) { + $page = intval(substr($page, 1)); + // this page number will not be changed when moving/add/deleting pages + $fixed = true; + } + if (empty($page)) { + $page = $this->PageNo(); + if (empty($page)) { + return; + } + } + $this->dests[$name] = array('x' => $x, 'y' => $y, 'p' => $page, 'f' => $fixed); + return $name; + } + + /** + * Return the Named Destination array. + * @return (array) Named Destination array. + * @public + * @author Nicola Asuni + * @since 5.9.097 (2011-06-23) + */ + public function getDestination() { + return $this->dests; + } + + /** + * Insert Named Destinations. + * @protected + * @author Johannes G\FCntert, Nicola Asuni + * @since 5.9.098 (2011-06-23) + */ + protected function _putdests() { + if (empty($this->dests)) { + return; + } + $this->n_dests = $this->_newobj(); + $out = ' <<'; + foreach($this->dests as $name => $o) { + $out .= ' /'.$name.' '.sprintf('[%u 0 R /XYZ %F %F null]', $this->page_obj_id[($o['p'])], ($o['x'] * $this->k), ($this->pagedim[$o['p']]['h'] - ($o['y'] * $this->k))); + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + + /** + * Adds a bookmark - alias for Bookmark(). + * @param $txt (string) Bookmark description. + * @param $level (int) Bookmark level (minimum value is 0). + * @param $y (float) Y position in user units of the bookmark on the selected page (default = -1 = current position; 0 = page start;). + * @param $page (int|string) Target page number (leave empty for current page). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages. + * @param $style (string) Font style: B = Bold, I = Italic, BI = Bold + Italic. + * @param $color (array) RGB color array (values from 0 to 255). + * @param $x (float) X position in user units of the bookmark on the selected page (default = -1 = current position;). + * @param $link (mixed) URL, or numerical link ID, or named destination (# character followed by the destination name), or embedded file (* character followed by the file name). + * @public + */ + public function setBookmark($txt, $level=0, $y=-1, $page='', $style='', $color=array(0,0,0), $x=-1, $link='') { + $this->Bookmark($txt, $level, $y, $page, $style, $color, $x, $link); + } + + /** + * Adds a bookmark. + * @param $txt (string) Bookmark description. + * @param $level (int) Bookmark level (minimum value is 0). + * @param $y (float) Y position in user units of the bookmark on the selected page (default = -1 = current position; 0 = page start;). + * @param $page (int|string) Target page number (leave empty for current page). If you prefix a page number with the * character, then this page will not be changed when adding/deleting/moving pages. + * @param $style (string) Font style: B = Bold, I = Italic, BI = Bold + Italic. + * @param $color (array) RGB color array (values from 0 to 255). + * @param $x (float) X position in user units of the bookmark on the selected page (default = -1 = current position;). + * @param $link (mixed) URL, or numerical link ID, or named destination (# character followed by the destination name), or embedded file (* character followed by the file name). + * @public + * @since 2.1.002 (2008-02-12) + */ + public function Bookmark($txt, $level=0, $y=-1, $page='', $style='', $color=array(0,0,0), $x=-1, $link='') { + if ($level < 0) { + $level = 0; + } + if (isset($this->outlines[0])) { + $lastoutline = end($this->outlines); + $maxlevel = $lastoutline['l'] + 1; + } else { + $maxlevel = 0; + } + if ($level > $maxlevel) { + $level = $maxlevel; + } + if ($y == -1) { + $y = $this->GetY(); + } elseif ($y < 0) { + $y = 0; + } elseif ($y > $this->h) { + $y = $this->h; + } + if ($x == -1) { + $x = $this->GetX(); + } elseif ($x < 0) { + $x = 0; + } elseif ($x > $this->w) { + $x = $this->w; + } + $fixed = false; + if (!empty($page) AND ($page[0] == '*')) { + $page = intval(substr($page, 1)); + // this page number will not be changed when moving/add/deleting pages + $fixed = true; + } + if (empty($page)) { + $page = $this->PageNo(); + if (empty($page)) { + return; + } + } + $this->outlines[] = array('t' => $txt, 'l' => $level, 'x' => $x, 'y' => $y, 'p' => $page, 'f' => $fixed, 's' => strtoupper($style), 'c' => $color, 'u' => $link); + } + + /** + * Sort bookmarks for page and key. + * @protected + * @since 5.9.119 (2011-09-19) + */ + protected function sortBookmarks() { + // get sorting columns + $outline_p = array(); + $outline_y = array(); + foreach ($this->outlines as $key => $row) { + $outline_p[$key] = $row['p']; + $outline_k[$key] = $key; + } + // sort outlines by page and original position + array_multisort($outline_p, SORT_NUMERIC, SORT_ASC, $outline_k, SORT_NUMERIC, SORT_ASC, $this->outlines); + } + + /** + * Create a bookmark PDF string. + * @protected + * @author Olivier Plathey, Nicola Asuni + * @since 2.1.002 (2008-02-12) + */ + protected function _putbookmarks() { + $nb = count($this->outlines); + if ($nb == 0) { + return; + } + // sort bookmarks + $this->sortBookmarks(); + $lru = array(); + $level = 0; + foreach ($this->outlines as $i => $o) { + if ($o['l'] > 0) { + $parent = $lru[($o['l'] - 1)]; + //Set parent and last pointers + $this->outlines[$i]['parent'] = $parent; + $this->outlines[$parent]['last'] = $i; + if ($o['l'] > $level) { + //Level increasing: set first pointer + $this->outlines[$parent]['first'] = $i; + } + } else { + $this->outlines[$i]['parent'] = $nb; + } + if (($o['l'] <= $level) AND ($i > 0)) { + //Set prev and next pointers + $prev = $lru[$o['l']]; + $this->outlines[$prev]['next'] = $i; + $this->outlines[$i]['prev'] = $prev; + } + $lru[$o['l']] = $i; + $level = $o['l']; + } + //Outline items + $n = $this->n + 1; + $nltags = '/|<\/(blockquote|dd|dl|div|dt|h1|h2|h3|h4|h5|h6|hr|li|ol|p|pre|ul|tcpdf|table|tr|td)>/si'; + foreach ($this->outlines as $i => $o) { + $oid = $this->_newobj(); + // covert HTML title to string + $title = preg_replace($nltags, "\n", $o['t']); + $title = preg_replace("/[\r]+/si", '', $title); + $title = preg_replace("/[\n]+/si", "\n", $title); + $title = strip_tags($title); + $title = $this->stringTrim($title); + $out = '<_textstring($title, $oid); + $out .= ' /Parent '.($n + $o['parent']).' 0 R'; + if (isset($o['prev'])) { + $out .= ' /Prev '.($n + $o['prev']).' 0 R'; + } + if (isset($o['next'])) { + $out .= ' /Next '.($n + $o['next']).' 0 R'; + } + if (isset($o['first'])) { + $out .= ' /First '.($n + $o['first']).' 0 R'; + } + if (isset($o['last'])) { + $out .= ' /Last '.($n + $o['last']).' 0 R'; + } + if (isset($o['u']) AND !empty($o['u'])) { + // link + if (is_string($o['u'])) { + if ($o['u'][0] == '#') { + // internal destination + $out .= ' /Dest /'.TCPDF_STATIC::encodeNameObject(substr($o['u'], 1)); + } elseif ($o['u'][0] == '%') { + // embedded PDF file + $filename = basename(substr($o['u'], 1)); + $out .= ' /A <embeddedfiles[$filename]['a'].' >> >>'; + } elseif ($o['u'][0] == '*') { + // embedded generic file + $filename = basename(substr($o['u'], 1)); + $jsa = 'var D=event.target.doc;var MyData=D.dataObjects;for (var i in MyData) if (MyData[i].path=="'.$filename.'") D.exportDataObject( { cName : MyData[i].name, nLaunch : 2});'; + $out .= ' /A <_textstring($jsa, $oid).'>>'; + } else { + // external URI link + $out .= ' /A <_datastring($this->unhtmlentities($o['u']), $oid).'>>'; + } + } elseif (isset($this->links[$o['u']])) { + // internal link ID + $l = $this->links[$o['u']]; + if (isset($this->page_obj_id[($l['p'])])) { + $out .= sprintf(' /Dest [%u 0 R /XYZ 0 %F null]', $this->page_obj_id[($l['p'])], ($this->pagedim[$l['p']]['h'] - ($l['y'] * $this->k))); + } + } + } elseif (isset($this->page_obj_id[($o['p'])])) { + // link to a page + $out .= ' '.sprintf('/Dest [%u 0 R /XYZ %F %F null]', $this->page_obj_id[($o['p'])], ($o['x'] * $this->k), ($this->pagedim[$o['p']]['h'] - ($o['y'] * $this->k))); + } + // set font style + $style = 0; + if (!empty($o['s'])) { + // bold + if (strpos($o['s'], 'B') !== false) { + $style |= 2; + } + // oblique + if (strpos($o['s'], 'I') !== false) { + $style |= 1; + } + } + $out .= sprintf(' /F %d', $style); + // set bookmark color + if (isset($o['c']) AND is_array($o['c']) AND (count($o['c']) == 3)) { + $color = array_values($o['c']); + $out .= sprintf(' /C [%F %F %F]', ($color[0] / 255), ($color[1] / 255), ($color[2] / 255)); + } else { + // black + $out .= ' /C [0.0 0.0 0.0]'; + } + $out .= ' /Count 0'; // normally closed item + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + //Outline root + $this->OutlineRoot = $this->_newobj(); + $this->_out('<< /Type /Outlines /First '.$n.' 0 R /Last '.($n + $lru[0]).' 0 R >>'."\n".'endobj'); + } + + // --- JAVASCRIPT ------------------------------------------------------ + + /** + * Adds a javascript + * @param $script (string) Javascript code + * @public + * @author Johannes G\FCntert, Nicola Asuni + * @since 2.1.002 (2008-02-12) + */ + public function IncludeJS($script) { + $this->javascript .= $script; + } + + /** + * Adds a javascript object and return object ID + * @param $script (string) Javascript code + * @param $onload (boolean) if true executes this object when opening the document + * @return int internal object ID + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-07) + */ + public function addJavascriptObject($script, $onload=false) { + if ($this->pdfa_mode) { + // javascript is not allowed in PDF/A mode + return false; + } + ++$this->n; + $this->js_objects[$this->n] = array('n' => $this->n, 'js' => $script, 'onload' => $onload); + return $this->n; + } + + /** + * Create a javascript PDF string. + * @protected + * @author Johannes G\FCntert, Nicola Asuni + * @since 2.1.002 (2008-02-12) + */ + protected function _putjavascript() { + if ($this->pdfa_mode OR (empty($this->javascript) AND empty($this->js_objects))) { + return; + } + if (strpos($this->javascript, 'this.addField') > 0) { + if (!$this->ur['enabled']) { + //$this->setUserRights(); + } + // the following two lines are used to avoid form fields duplication after saving + // The addField method only works when releasing user rights (UR3) + $jsa = sprintf("ftcpdfdocsaved=this.addField('%s','%s',%d,[%F,%F,%F,%F]);", 'tcpdfdocsaved', 'text', 0, 0, 1, 0, 1); + $jsb = "getField('tcpdfdocsaved').value='saved';"; + $this->javascript = $jsa."\n".$this->javascript."\n".$jsb; + } + // name tree for javascript + $this->n_js = '<< /Names ['; + if (!empty($this->javascript)) { + $this->n_js .= ' (EmbeddedJS) '.($this->n + 1).' 0 R'; + } + if (!empty($this->js_objects)) { + foreach ($this->js_objects as $key => $val) { + if ($val['onload']) { + $this->n_js .= ' (JS'.$key.') '.$key.' 0 R'; + } + } + } + $this->n_js .= ' ] >>'; + // default Javascript object + if (!empty($this->javascript)) { + $obj_id = $this->_newobj(); + $out = '<< /S /JavaScript'; + $out .= ' /JS '.$this->_textstring($this->javascript, $obj_id); + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + // additional Javascript objects + if (!empty($this->js_objects)) { + foreach ($this->js_objects as $key => $val) { + $out = $this->_getobj($key)."\n".' << /S /JavaScript /JS '.$this->_textstring($val['js'], $key).' >>'."\n".'endobj'; + $this->_out($out); + } + } + } + + /** + * Adds a javascript form field. + * @param $type (string) field type + * @param $name (string) field name + * @param $x (int) horizontal position + * @param $y (int) vertical position + * @param $w (int) width + * @param $h (int) height + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @protected + * @author Denis Van Nuffelen, Nicola Asuni + * @since 2.1.002 (2008-02-12) + */ + protected function _addfield($type, $name, $x, $y, $w, $h, $prop) { + if ($this->rtl) { + $x = $x - $w; + } + // the followind avoid fields duplication after saving the document + $this->javascript .= "if (getField('tcpdfdocsaved').value != 'saved') {"; + $k = $this->k; + $this->javascript .= sprintf("f".$name."=this.addField('%s','%s',%u,[%F,%F,%F,%F]);", $name, $type, $this->PageNo()-1, $x*$k, ($this->h-$y)*$k+1, ($x+$w)*$k, ($this->h-$y-$h)*$k+1)."\n"; + $this->javascript .= 'f'.$name.'.textSize='.$this->FontSizePt.";\n"; + while (list($key, $val) = each($prop)) { + if (strcmp(substr($key, -5), 'Color') == 0) { + $val = TCPDF_COLORS::_JScolor($val); + } else { + $val = "'".$val."'"; + } + $this->javascript .= 'f'.$name.'.'.$key.'='.$val.";\n"; + } + if ($this->rtl) { + $this->x -= $w; + } else { + $this->x += $w; + } + $this->javascript .= '}'; + } + + // --- FORM FIELDS ----------------------------------------------------- + + + + /** + * Set default properties for form fields. + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-06) + */ + public function setFormDefaultProp($prop=array()) { + $this->default_form_prop = $prop; + } + + /** + * Return the default properties for form fields. + * @return array $prop javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-06) + */ + public function getFormDefaultProp() { + return $this->default_form_prop; + } + + /** + * Creates a text field + * @param $name (string) field name + * @param $w (float) Width of the rectangle + * @param $h (float) Height of the rectangle + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference. + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered). + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-07) + */ + public function TextField($name, $w, $h, $prop=array(), $opt=array(), $x='', $y='', $js=false) { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + if ($js) { + $this->_addfield('text', $name, $x, $y, $w, $h, $prop); + return; + } + // get default style + $prop = array_merge($this->getFormDefaultProp(), $prop); + // get annotation data + $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl); + // set default appearance stream + $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i']; + $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor); + $popt['da'] = $fontstyle; + // build appearance stream + $popt['ap'] = array(); + $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' '; + $text = ''; + if (isset($prop['value']) AND !empty($prop['value'])) { + $text = $prop['value']; + } elseif (isset($opt['v']) AND !empty($opt['v'])) { + $text = $opt['v']; + } + $tmpid = $this->startTemplate($w, $h, false); + $align = ''; + if (isset($popt['q'])) { + switch ($popt['q']) { + case 0: { + $align = 'L'; + break; + } + case 1: { + $align = 'C'; + break; + } + case 2: { + $align = 'R'; + break; + } + default: { + $align = ''; + break; + } + } + } + $this->MultiCell($w, $h, $text, 0, $align, false, 0, 0, 0, true, 0, false, true, 0, 'T', false); + $this->endTemplate(); + --$this->n; + $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata']; + unset($this->xobjects[$tmpid]); + $popt['ap']['n'] .= 'Q EMC'; + // merge options + $opt = array_merge($popt, $opt); + // remove some conflicting options + unset($opt['bs']); + // set remaining annotation data + $opt['Subtype'] = 'Widget'; + $opt['ft'] = 'Tx'; + $opt['t'] = $name; + // Additional annotation's parameters (check _putannotsobj() method): + //$opt['f'] + //$opt['as'] + //$opt['bs'] + //$opt['be'] + //$opt['c'] + //$opt['border'] + //$opt['h'] + //$opt['mk']; + //$opt['mk']['r'] + //$opt['mk']['bc']; + //$opt['mk']['bg']; + unset($opt['mk']['ca']); + unset($opt['mk']['rc']); + unset($opt['mk']['ac']); + unset($opt['mk']['i']); + unset($opt['mk']['ri']); + unset($opt['mk']['ix']); + unset($opt['mk']['if']); + //$opt['mk']['if']['sw']; + //$opt['mk']['if']['s']; + //$opt['mk']['if']['a']; + //$opt['mk']['if']['fb']; + unset($opt['mk']['tp']); + //$opt['tu'] + //$opt['tm'] + //$opt['ff'] + //$opt['v'] + //$opt['dv'] + //$opt['a'] + //$opt['aa'] + //$opt['q'] + $this->Annotation($x, $y, $w, $h, $name, $opt, 0); + if ($this->rtl) { + $this->x -= $w; + } else { + $this->x += $w; + } + } + + /** + * Creates a RadioButton field. + * @param $name (string) Field name. + * @param $w (int) Width of the radio button. + * @param $prop (array) Javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @param $opt (array) Annotation parameters. Possible values are described on official PDF32000_2008 reference. + * @param $onvalue (string) Value to be returned if selected. + * @param $checked (boolean) Define the initial state. + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $js (boolean) If true put the field using JavaScript (requires Acrobat Writer to be rendered). + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-07) + */ + public function RadioButton($name, $w, $prop=array(), $opt=array(), $onvalue='On', $checked=false, $x='', $y='', $js=false) { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($w, $x, $y); + if ($js) { + $this->_addfield('radiobutton', $name, $x, $y, $w, $w, $prop); + return; + } + if (TCPDF_STATIC::empty_string($onvalue)) { + $onvalue = 'On'; + } + if ($checked) { + $defval = $onvalue; + } else { + $defval = 'Off'; + } + // set font + $font = 'zapfdingbats'; + if ($this->pdfa_mode) { + // all fonts must be embedded + $font = 'pdfa'.$font; + } + $this->AddFont($font); + $tmpfont = $this->getFontBuffer($font); + // set data for parent group + if (!isset($this->radiobutton_groups[$this->page])) { + $this->radiobutton_groups[$this->page] = array(); + } + if (!isset($this->radiobutton_groups[$this->page][$name])) { + $this->radiobutton_groups[$this->page][$name] = array(); + ++$this->n; + $this->radiobutton_groups[$this->page][$name]['n'] = $this->n; + $this->radio_groups[] = $this->n; + } + $kid = ($this->n + 1); + // save object ID to be added on Kids entry on parent object + $this->radiobutton_groups[$this->page][$name][] = array('kid' => $kid, 'def' => $defval); + // get default style + $prop = array_merge($this->getFormDefaultProp(), $prop); + $prop['NoToggleToOff'] = 'true'; + $prop['Radio'] = 'true'; + $prop['borderStyle'] = 'inset'; + // get annotation data + $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl); + // set additional default options + $this->annotation_fonts[$tmpfont['fontkey']] = $tmpfont['i']; + $fontstyle = sprintf('/F%d %F Tf %s', $tmpfont['i'], $this->FontSizePt, $this->TextColor); + $popt['da'] = $fontstyle; + // build appearance stream + $popt['ap'] = array(); + $popt['ap']['n'] = array(); + $fx = ((($w - $this->getAbsFontMeasure($tmpfont['cw'][108])) / 2) * $this->k); + $fy = (($w - ((($tmpfont['desc']['Ascent'] - $tmpfont['desc']['Descent']) * $this->FontSizePt / 1000) / $this->k)) * $this->k); + $popt['ap']['n'][$onvalue] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(108).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy); + $popt['ap']['n']['Off'] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(109).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy); + if (!isset($popt['mk'])) { + $popt['mk'] = array(); + } + $popt['mk']['ca'] = '(l)'; + // merge options + $opt = array_merge($popt, $opt); + // set remaining annotation data + $opt['Subtype'] = 'Widget'; + $opt['ft'] = 'Btn'; + if ($checked) { + $opt['v'] = array('/'.$onvalue); + $opt['as'] = $onvalue; + } else { + $opt['as'] = 'Off'; + } + // store readonly flag + if (!isset($this->radiobutton_groups[$this->page][$name]['#readonly#'])) { + $this->radiobutton_groups[$this->page][$name]['#readonly#'] = false; + } + $this->radiobutton_groups[$this->page][$name]['#readonly#'] |= ($opt['f'] & 64); + $this->Annotation($x, $y, $w, $w, $name, $opt, 0); + if ($this->rtl) { + $this->x -= $w; + } else { + $this->x += $w; + } + } + + /** + * Creates a List-box field + * @param $name (string) field name + * @param $w (int) width + * @param $h (int) height + * @param $values (array) array containing the list of values. + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference. + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered). + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-07) + */ + public function ListBox($name, $w, $h, $values, $prop=array(), $opt=array(), $x='', $y='', $js=false) { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + if ($js) { + $this->_addfield('listbox', $name, $x, $y, $w, $h, $prop); + $s = ''; + foreach ($values as $value) { + if (is_array($value)) { + $s .= ',[\''.addslashes($value[1]).'\',\''.addslashes($value[0]).'\']'; + } else { + $s .= ',[\''.addslashes($value).'\',\''.addslashes($value).'\']'; + } + } + $this->javascript .= 'f'.$name.'.setItems('.substr($s, 1).');'."\n"; + return; + } + // get default style + $prop = array_merge($this->getFormDefaultProp(), $prop); + // get annotation data + $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl); + // set additional default values + $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i']; + $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor); + $popt['da'] = $fontstyle; + // build appearance stream + $popt['ap'] = array(); + $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' '; + $text = ''; + foreach($values as $item) { + if (is_array($item)) { + $text .= $item[1]."\n"; + } else { + $text .= $item."\n"; + } + } + $tmpid = $this->startTemplate($w, $h, false); + $this->MultiCell($w, $h, $text, 0, '', false, 0, 0, 0, true, 0, false, true, 0, 'T', false); + $this->endTemplate(); + --$this->n; + $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata']; + unset($this->xobjects[$tmpid]); + $popt['ap']['n'] .= 'Q EMC'; + // merge options + $opt = array_merge($popt, $opt); + // set remaining annotation data + $opt['Subtype'] = 'Widget'; + $opt['ft'] = 'Ch'; + $opt['t'] = $name; + $opt['opt'] = $values; + unset($opt['mk']['ca']); + unset($opt['mk']['rc']); + unset($opt['mk']['ac']); + unset($opt['mk']['i']); + unset($opt['mk']['ri']); + unset($opt['mk']['ix']); + unset($opt['mk']['if']); + unset($opt['mk']['tp']); + $this->Annotation($x, $y, $w, $h, $name, $opt, 0); + if ($this->rtl) { + $this->x -= $w; + } else { + $this->x += $w; + } + } + + /** + * Creates a Combo-box field + * @param $name (string) field name + * @param $w (int) width + * @param $h (int) height + * @param $values (array) array containing the list of values. + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference. + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered). + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-07) + */ + public function ComboBox($name, $w, $h, $values, $prop=array(), $opt=array(), $x='', $y='', $js=false) { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + if ($js) { + $this->_addfield('combobox', $name, $x, $y, $w, $h, $prop); + $s = ''; + foreach ($values as $value) { + if (is_array($value)) { + $s .= ',[\''.addslashes($value[1]).'\',\''.addslashes($value[0]).'\']'; + } else { + $s .= ',[\''.addslashes($value).'\',\''.addslashes($value).'\']'; + } + } + $this->javascript .= 'f'.$name.'.setItems('.substr($s, 1).');'."\n"; + return; + } + // get default style + $prop = array_merge($this->getFormDefaultProp(), $prop); + $prop['Combo'] = true; + // get annotation data + $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl); + // set additional default options + $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i']; + $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor); + $popt['da'] = $fontstyle; + // build appearance stream + $popt['ap'] = array(); + $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' '; + $text = ''; + foreach($values as $item) { + if (is_array($item)) { + $text .= $item[1]."\n"; + } else { + $text .= $item."\n"; + } + } + $tmpid = $this->startTemplate($w, $h, false); + $this->MultiCell($w, $h, $text, 0, '', false, 0, 0, 0, true, 0, false, true, 0, 'T', false); + $this->endTemplate(); + --$this->n; + $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata']; + unset($this->xobjects[$tmpid]); + $popt['ap']['n'] .= 'Q EMC'; + // merge options + $opt = array_merge($popt, $opt); + // set remaining annotation data + $opt['Subtype'] = 'Widget'; + $opt['ft'] = 'Ch'; + $opt['t'] = $name; + $opt['opt'] = $values; + unset($opt['mk']['ca']); + unset($opt['mk']['rc']); + unset($opt['mk']['ac']); + unset($opt['mk']['i']); + unset($opt['mk']['ri']); + unset($opt['mk']['ix']); + unset($opt['mk']['if']); + unset($opt['mk']['tp']); + $this->Annotation($x, $y, $w, $h, $name, $opt, 0); + if ($this->rtl) { + $this->x -= $w; + } else { + $this->x += $w; + } + } + + /** + * Creates a CheckBox field + * @param $name (string) field name + * @param $w (int) width + * @param $checked (boolean) define the initial state. + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference. + * @param $onvalue (string) value to be returned if selected. + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered). + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-07) + */ + public function CheckBox($name, $w, $checked=false, $prop=array(), $opt=array(), $onvalue='Yes', $x='', $y='', $js=false) { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($w, $x, $y); + if ($js) { + $this->_addfield('checkbox', $name, $x, $y, $w, $w, $prop); + return; + } + if (!isset($prop['value'])) { + $prop['value'] = array('Yes'); + } + // get default style + $prop = array_merge($this->getFormDefaultProp(), $prop); + $prop['borderStyle'] = 'inset'; + // get annotation data + $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl); + // set additional default options + $font = 'zapfdingbats'; + if ($this->pdfa_mode) { + // all fonts must be embedded + $font = 'pdfa'.$font; + } + $this->AddFont($font); + $tmpfont = $this->getFontBuffer($font); + $this->annotation_fonts[$tmpfont['fontkey']] = $tmpfont['i']; + $fontstyle = sprintf('/F%d %F Tf %s', $tmpfont['i'], $this->FontSizePt, $this->TextColor); + $popt['da'] = $fontstyle; + // build appearance stream + $popt['ap'] = array(); + $popt['ap']['n'] = array(); + $fx = ((($w - $this->getAbsFontMeasure($tmpfont['cw'][110])) / 2) * $this->k); + $fy = (($w - ((($tmpfont['desc']['Ascent'] - $tmpfont['desc']['Descent']) * $this->FontSizePt / 1000) / $this->k)) * $this->k); + $popt['ap']['n']['Yes'] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(110).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy); + $popt['ap']['n']['Off'] = sprintf('q %s BT /F%d %F Tf %F %F Td ('.chr(111).') Tj ET Q', $this->TextColor, $tmpfont['i'], $this->FontSizePt, $fx, $fy); + // merge options + $opt = array_merge($popt, $opt); + // set remaining annotation data + $opt['Subtype'] = 'Widget'; + $opt['ft'] = 'Btn'; + $opt['t'] = $name; + if (TCPDF_STATIC::empty_string($onvalue)) { + $onvalue = 'Yes'; + } + $opt['opt'] = array($onvalue); + if ($checked) { + $opt['v'] = array('/Yes'); + $opt['as'] = 'Yes'; + } else { + $opt['v'] = array('/Off'); + $opt['as'] = 'Off'; + } + $this->Annotation($x, $y, $w, $w, $name, $opt, 0); + if ($this->rtl) { + $this->x -= $w; + } else { + $this->x += $w; + } + } + + /** + * Creates a button field + * @param $name (string) field name + * @param $w (int) width + * @param $h (int) height + * @param $caption (string) caption. + * @param $action (mixed) action triggered by pressing the button. Use a string to specify a javascript action. Use an array to specify a form action options as on section 12.7.5 of PDF32000_2008. + * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. + * @param $opt (array) annotation parameters. Possible values are described on official PDF32000_2008 reference. + * @param $x (float) Abscissa of the upper-left corner of the rectangle + * @param $y (float) Ordinate of the upper-left corner of the rectangle + * @param $js (boolean) if true put the field using JavaScript (requires Acrobat Writer to be rendered). + * @public + * @author Nicola Asuni + * @since 4.8.000 (2009-09-07) + */ + public function Button($name, $w, $h, $caption, $action, $prop=array(), $opt=array(), $x='', $y='', $js=false) { + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + if ($js) { + $this->_addfield('button', $name, $this->x, $this->y, $w, $h, $prop); + $this->javascript .= 'f'.$name.".buttonSetCaption('".addslashes($caption)."');\n"; + $this->javascript .= 'f'.$name.".setAction('MouseUp','".addslashes($action)."');\n"; + $this->javascript .= 'f'.$name.".highlight='push';\n"; + $this->javascript .= 'f'.$name.".print=false;\n"; + return; + } + // get default style + $prop = array_merge($this->getFormDefaultProp(), $prop); + $prop['Pushbutton'] = 'true'; + $prop['highlight'] = 'push'; + $prop['display'] = 'display.noPrint'; + // get annotation data + $popt = TCPDF_STATIC::getAnnotOptFromJSProp($prop, $this->spot_colors, $this->rtl); + $this->annotation_fonts[$this->CurrentFont['fontkey']] = $this->CurrentFont['i']; + $fontstyle = sprintf('/F%d %F Tf %s', $this->CurrentFont['i'], $this->FontSizePt, $this->TextColor); + $popt['da'] = $fontstyle; + // build appearance stream + $popt['ap'] = array(); + $popt['ap']['n'] = '/Tx BMC q '.$fontstyle.' '; + $tmpid = $this->startTemplate($w, $h, false); + $bw = (2 / $this->k); // border width + $border = array( + 'L' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(231)), + 'R' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(51)), + 'T' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(231)), + 'B' => array('width' => $bw, 'cap' => 'square', 'join' => 'miter', 'dash' => 0, 'color' => array(51))); + $this->SetFillColor(204); + $this->Cell($w, $h, $caption, $border, 0, 'C', true, '', 1, false, 'T', 'M'); + $this->endTemplate(); + --$this->n; + $popt['ap']['n'] .= $this->xobjects[$tmpid]['outdata']; + unset($this->xobjects[$tmpid]); + $popt['ap']['n'] .= 'Q EMC'; + // set additional default options + if (!isset($popt['mk'])) { + $popt['mk'] = array(); + } + $ann_obj_id = ($this->n + 1); + if (!empty($action) AND !is_array($action)) { + $ann_obj_id = ($this->n + 2); + } + $popt['mk']['ca'] = $this->_textstring($caption, $ann_obj_id); + $popt['mk']['rc'] = $this->_textstring($caption, $ann_obj_id); + $popt['mk']['ac'] = $this->_textstring($caption, $ann_obj_id); + // merge options + $opt = array_merge($popt, $opt); + // set remaining annotation data + $opt['Subtype'] = 'Widget'; + $opt['ft'] = 'Btn'; + $opt['t'] = $caption; + $opt['v'] = $name; + if (!empty($action)) { + if (is_array($action)) { + // form action options as on section 12.7.5 of PDF32000_2008. + $opt['aa'] = '/D <<'; + $bmode = array('SubmitForm', 'ResetForm', 'ImportData'); + foreach ($action AS $key => $val) { + if (($key == 'S') AND in_array($val, $bmode)) { + $opt['aa'] .= ' /S /'.$val; + } elseif (($key == 'F') AND (!empty($val))) { + $opt['aa'] .= ' /F '.$this->_datastring($val, $ann_obj_id); + } elseif (($key == 'Fields') AND is_array($val) AND !empty($val)) { + $opt['aa'] .= ' /Fields ['; + foreach ($val AS $field) { + $opt['aa'] .= ' '.$this->_textstring($field, $ann_obj_id); + } + $opt['aa'] .= ']'; + } elseif (($key == 'Flags')) { + $ff = 0; + if (is_array($val)) { + foreach ($val AS $flag) { + switch ($flag) { + case 'Include/Exclude': { + $ff += 1 << 0; + break; + } + case 'IncludeNoValueFields': { + $ff += 1 << 1; + break; + } + case 'ExportFormat': { + $ff += 1 << 2; + break; + } + case 'GetMethod': { + $ff += 1 << 3; + break; + } + case 'SubmitCoordinates': { + $ff += 1 << 4; + break; + } + case 'XFDF': { + $ff += 1 << 5; + break; + } + case 'IncludeAppendSaves': { + $ff += 1 << 6; + break; + } + case 'IncludeAnnotations': { + $ff += 1 << 7; + break; + } + case 'SubmitPDF': { + $ff += 1 << 8; + break; + } + case 'CanonicalFormat': { + $ff += 1 << 9; + break; + } + case 'ExclNonUserAnnots': { + $ff += 1 << 10; + break; + } + case 'ExclFKey': { + $ff += 1 << 11; + break; + } + case 'EmbedForm': { + $ff += 1 << 13; + break; + } + } + } + } else { + $ff = intval($val); + } + $opt['aa'] .= ' /Flags '.$ff; + } + } + $opt['aa'] .= ' >>'; + } else { + // Javascript action or raw action command + $js_obj_id = $this->addJavascriptObject($action); + $opt['aa'] = '/D '.$js_obj_id.' 0 R'; + } + } + $this->Annotation($x, $y, $w, $h, $name, $opt, 0); + if ($this->rtl) { + $this->x -= $w; + } else { + $this->x += $w; + } + } + + // --- END FORMS FIELDS ------------------------------------------------ + + /** + * Add certification signature (DocMDP or UR3) + * You can set only one signature type + * @protected + * @author Nicola Asuni + * @since 4.6.008 (2009-05-07) + */ + protected function _putsignature() { + if ((!$this->sign) OR (!isset($this->signature_data['cert_type']))) { + return; + } + $sigobjid = ($this->sig_obj_id + 1); + $out = $this->_getobj($sigobjid)."\n"; + $out .= '<< /Type /Sig'; + $out .= ' /Filter /Adobe.PPKLite'; + $out .= ' /SubFilter /adbe.pkcs7.detached'; + $out .= ' '.TCPDF_STATIC::$byterange_string; + $out .= ' /Contents<'.str_repeat('0', $this->signature_max_length).'>'; + if (empty($this->signature_data['approval']) OR ($this->signature_data['approval'] != 'A')) { + $out .= ' /Reference ['; // array of signature reference dictionaries + $out .= ' << /Type /SigRef'; + if ($this->signature_data['cert_type'] > 0) { + $out .= ' /TransformMethod /DocMDP'; + $out .= ' /TransformParams <<'; + $out .= ' /Type /TransformParams'; + $out .= ' /P '.$this->signature_data['cert_type']; + $out .= ' /V /1.2'; + } else { + $out .= ' /TransformMethod /UR3'; + $out .= ' /TransformParams <<'; + $out .= ' /Type /TransformParams'; + $out .= ' /V /2.2'; + if (!TCPDF_STATIC::empty_string($this->ur['document'])) { + $out .= ' /Document['.$this->ur['document'].']'; + } + if (!TCPDF_STATIC::empty_string($this->ur['form'])) { + $out .= ' /Form['.$this->ur['form'].']'; + } + if (!TCPDF_STATIC::empty_string($this->ur['signature'])) { + $out .= ' /Signature['.$this->ur['signature'].']'; + } + if (!TCPDF_STATIC::empty_string($this->ur['annots'])) { + $out .= ' /Annots['.$this->ur['annots'].']'; + } + if (!TCPDF_STATIC::empty_string($this->ur['ef'])) { + $out .= ' /EF['.$this->ur['ef'].']'; + } + if (!TCPDF_STATIC::empty_string($this->ur['formex'])) { + $out .= ' /FormEX['.$this->ur['formex'].']'; + } + } + $out .= ' >>'; // close TransformParams + // optional digest data (values must be calculated and replaced later) + //$out .= ' /Data ********** 0 R'; + //$out .= ' /DigestMethod/MD5'; + //$out .= ' /DigestLocation[********** 34]'; + //$out .= ' /DigestValue<********************************>'; + $out .= ' >>'; + $out .= ' ]'; // end of reference + } + if (isset($this->signature_data['info']['Name']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['Name'])) { + $out .= ' /Name '.$this->_textstring($this->signature_data['info']['Name'], $sigobjid); + } + if (isset($this->signature_data['info']['Location']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['Location'])) { + $out .= ' /Location '.$this->_textstring($this->signature_data['info']['Location'], $sigobjid); + } + if (isset($this->signature_data['info']['Reason']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['Reason'])) { + $out .= ' /Reason '.$this->_textstring($this->signature_data['info']['Reason'], $sigobjid); + } + if (isset($this->signature_data['info']['ContactInfo']) AND !TCPDF_STATIC::empty_string($this->signature_data['info']['ContactInfo'])) { + $out .= ' /ContactInfo '.$this->_textstring($this->signature_data['info']['ContactInfo'], $sigobjid); + } + $out .= ' /M '.$this->_datestring($sigobjid, $this->doc_modification_timestamp); + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + + /** + * Set User's Rights for PDF Reader + * WARNING: This is experimental and currently do not work. + * Check the PDF Reference 8.7.1 Transform Methods, + * Table 8.105 Entries in the UR transform parameters dictionary + * @param $enable (boolean) if true enable user's rights on PDF reader + * @param $document (string) Names specifying additional document-wide usage rights for the document. The only defined value is "/FullSave", which permits a user to save the document along with modified form and/or annotation data. + * @param $annots (string) Names specifying additional annotation-related usage rights for the document. Valid names in PDF 1.5 and later are /Create/Delete/Modify/Copy/Import/Export, which permit the user to perform the named operation on annotations. + * @param $form (string) Names specifying additional form-field-related usage rights for the document. Valid names are: /Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate + * @param $signature (string) Names specifying additional signature-related usage rights for the document. The only defined value is /Modify, which permits a user to apply a digital signature to an existing signature form field or clear a signed signature form field. + * @param $ef (string) Names specifying additional usage rights for named embedded files in the document. Valid names are /Create/Delete/Modify/Import, which permit the user to perform the named operation on named embedded files + Names specifying additional embedded-files-related usage rights for the document. + * @param $formex (string) Names specifying additional form-field-related usage rights. The only valid name is BarcodePlaintext, which permits text form field data to be encoded as a plaintext two-dimensional barcode. + * @public + * @author Nicola Asuni + * @since 2.9.000 (2008-03-26) + */ + public function setUserRights( + $enable=true, + $document='/FullSave', + $annots='/Create/Delete/Modify/Copy/Import/Export', + $form='/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate', + $signature='/Modify', + $ef='/Create/Delete/Modify/Import', + $formex='') { + $this->ur['enabled'] = $enable; + $this->ur['document'] = $document; + $this->ur['annots'] = $annots; + $this->ur['form'] = $form; + $this->ur['signature'] = $signature; + $this->ur['ef'] = $ef; + $this->ur['formex'] = $formex; + if (!$this->sign) { + $this->setSignature('', '', '', '', 0, array()); + } + } + + /** + * Enable document signature (requires the OpenSSL Library). + * The digital signature improve document authenticity and integrity and allows o enable extra features on Acrobat Reader. + * To create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt + * To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12 + * To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes + * @param $signing_cert (mixed) signing certificate (string or filename prefixed with 'file://') + * @param $private_key (mixed) private key (string or filename prefixed with 'file://') + * @param $private_key_password (string) password + * @param $extracerts (string) specifies the name of a file containing a bunch of extra certificates to include in the signature which can for example be used to help the recipient to verify the certificate that you used. + * @param $cert_type (int) The access permissions granted for this document. Valid values shall be: 1 = No changes to the document shall be permitted; any change to the document shall invalidate the signature; 2 = Permitted changes shall be filling in forms, instantiating page templates, and signing; other changes shall invalidate the signature; 3 = Permitted changes shall be the same as for 2, as well as annotation creation, deletion, and modification; other changes shall invalidate the signature. + * @param $info (array) array of option information: Name, Location, Reason, ContactInfo. + * @param $approval (string) Enable approval signature eg. for PDF incremental update + * @public + * @author Nicola Asuni + * @since 4.6.005 (2009-04-24) + */ + public function setSignature($signing_cert='', $private_key='', $private_key_password='', $extracerts='', $cert_type=2, $info=array(), $approval='') { + // to create self-signed signature: openssl req -x509 -nodes -days 365000 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt + // to export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12 + // to convert pfx certificate to pem: openssl + // OpenSSL> pkcs12 -in -out -nodes + $this->sign = true; + ++$this->n; + $this->sig_obj_id = $this->n; // signature widget + ++$this->n; // signature object ($this->sig_obj_id + 1) + $this->signature_data = array(); + if (strlen($signing_cert) == 0) { + $this->Error('Please provide a certificate file and password!'); + } + if (strlen($private_key) == 0) { + $private_key = $signing_cert; + } + $this->signature_data['signcert'] = $signing_cert; + $this->signature_data['privkey'] = $private_key; + $this->signature_data['password'] = $private_key_password; + $this->signature_data['extracerts'] = $extracerts; + $this->signature_data['cert_type'] = $cert_type; + $this->signature_data['info'] = $info; + $this->signature_data['approval'] = $approval; + } + + /** + * Set the digital signature appearance (a cliccable rectangle area to get signature properties) + * @param $x (float) Abscissa of the upper-left corner. + * @param $y (float) Ordinate of the upper-left corner. + * @param $w (float) Width of the signature area. + * @param $h (float) Height of the signature area. + * @param $page (int) option page number (if < 0 the current page is used). + * @param $name (string) Name of the signature. + * @public + * @author Nicola Asuni + * @since 5.3.011 (2010-06-17) + */ + public function setSignatureAppearance($x=0, $y=0, $w=0, $h=0, $page=-1, $name='') { + $this->signature_appearance = $this->getSignatureAppearanceArray($x, $y, $w, $h, $page, $name); + } + + /** + * Add an empty digital signature appearance (a cliccable rectangle area to get signature properties) + * @param $x (float) Abscissa of the upper-left corner. + * @param $y (float) Ordinate of the upper-left corner. + * @param $w (float) Width of the signature area. + * @param $h (float) Height of the signature area. + * @param $page (int) option page number (if < 0 the current page is used). + * @param $name (string) Name of the signature. + * @public + * @author Nicola Asuni + * @since 5.9.101 (2011-07-06) + */ + public function addEmptySignatureAppearance($x=0, $y=0, $w=0, $h=0, $page=-1, $name='') { + ++$this->n; + $this->empty_signature_appearance[] = array('objid' => $this->n) + $this->getSignatureAppearanceArray($x, $y, $w, $h, $page, $name); + } + + /** + * Get the array that defines the signature appearance (page and rectangle coordinates). + * @param $x (float) Abscissa of the upper-left corner. + * @param $y (float) Ordinate of the upper-left corner. + * @param $w (float) Width of the signature area. + * @param $h (float) Height of the signature area. + * @param $page (int) option page number (if < 0 the current page is used). + * @param $name (string) Name of the signature. + * @return (array) Array defining page and rectangle coordinates of signature appearance. + * @protected + * @author Nicola Asuni + * @since 5.9.101 (2011-07-06) + */ + protected function getSignatureAppearanceArray($x=0, $y=0, $w=0, $h=0, $page=-1, $name='') { + $sigapp = array(); + if (($page < 1) OR ($page > $this->numpages)) { + $sigapp['page'] = $this->page; + } else { + $sigapp['page'] = intval($page); + } + if (empty($name)) { + $sigapp['name'] = 'Signature'; + } else { + $sigapp['name'] = $name; + } + $a = $x * $this->k; + $b = $this->pagedim[($sigapp['page'])]['h'] - (($y + $h) * $this->k); + $c = $w * $this->k; + $d = $h * $this->k; + $sigapp['rect'] = sprintf('%F %F %F %F', $a, $b, ($a + $c), ($b + $d)); + return $sigapp; + } + + /** + * Enable document timestamping (requires the OpenSSL Library). + * The trusted timestamping improve document security that means that no one should be able to change the document once it has been recorded. + * Use with digital signature only! + * @param $tsa_host (string) Time Stamping Authority (TSA) server (prefixed with 'https://') + * @param $tsa_username (string) Specifies the username for TSA authorization (optional) OR specifies the TSA authorization PEM file (see: example_66.php, optional) + * @param $tsa_password (string) Specifies the password for TSA authorization (optional) + * @param $tsa_cert (string) Specifies the location of TSA certificate for authorization (optional for cURL) + * @public + * @author Richard Stockinger + * @since 6.0.090 (2014-06-16) + */ + public function setTimeStamp($tsa_host='', $tsa_username='', $tsa_password='', $tsa_cert='') { + $this->tsa_data = array(); + if (!function_exists('curl_init')) { + $this->Error('Please enable cURL PHP extension!'); + } + if (strlen($tsa_host) == 0) { + $this->Error('Please specify the host of Time Stamping Authority (TSA)!'); + } + $this->tsa_data['tsa_host'] = $tsa_host; + if (is_file($tsa_username)) { + $this->tsa_data['tsa_auth'] = $tsa_username; + } else { + $this->tsa_data['tsa_username'] = $tsa_username; + } + $this->tsa_data['tsa_password'] = $tsa_password; + $this->tsa_data['tsa_cert'] = $tsa_cert; + $this->tsa_timestamp = true; + } + + /** + * NOT YET IMPLEMENTED + * Request TSA for a timestamp + * @param $signature (string) Digital signature as binary string + * @return (string) Timestamped digital signature + * @protected + * @author Richard Stockinger + * @since 6.0.090 (2014-06-16) + */ + protected function applyTSA($signature) { + if (!$this->tsa_timestamp) { + return $signature; + } + //@TODO: implement this feature + return $signature; + } + + /** + * Create a new page group. + * NOTE: call this function before calling AddPage() + * @param $page (int) starting group page (leave empty for next page). + * @public + * @since 3.0.000 (2008-03-27) + */ + public function startPageGroup($page='') { + if (empty($page)) { + $page = $this->page + 1; + } + $this->newpagegroup[$page] = sizeof($this->newpagegroup) + 1; + } + + /** + * Set the starting page number. + * @param $num (int) Starting page number. + * @since 5.9.093 (2011-06-16) + * @public + */ + public function setStartingPageNumber($num=1) { + $this->starting_page_number = max(0, intval($num)); + } + + /** + * Returns the string alias used right align page numbers. + * If the current font is unicode type, the returned string wil contain an additional open curly brace. + * @return string + * @since 5.9.099 (2011-06-27) + * @public + */ + public function getAliasRightShift() { + // calculate aproximatively the ratio between widths of aliases and replacements. + $ref = '{'.TCPDF_STATIC::$alias_right_shift.'}{'.TCPDF_STATIC::$alias_tot_pages.'}{'.TCPDF_STATIC::$alias_num_page.'}'; + $rep = str_repeat(' ', $this->GetNumChars($ref)); + $wrep = $this->GetStringWidth($rep); + if ($wrep > 0) { + $wdiff = max(1, ($this->GetStringWidth($ref) / $wrep)); + } else { + $wdiff = 1; + } + $sdiff = sprintf('%F', $wdiff); + $alias = TCPDF_STATIC::$alias_right_shift.$sdiff.'}'; + if ($this->isUnicodeFont()) { + $alias = '{'.$alias; + } + return $alias; + } + + /** + * Returns the string alias used for the total number of pages. + * If the current font is unicode type, the returned string is surrounded by additional curly braces. + * This alias will be replaced by the total number of pages in the document. + * @return string + * @since 4.0.018 (2008-08-08) + * @public + */ + public function getAliasNbPages() { + if ($this->isUnicodeFont()) { + return '{'.TCPDF_STATIC::$alias_tot_pages.'}'; + } + return TCPDF_STATIC::$alias_tot_pages; + } + + /** + * Returns the string alias used for the page number. + * If the current font is unicode type, the returned string is surrounded by additional curly braces. + * This alias will be replaced by the page number. + * @return string + * @since 4.5.000 (2009-01-02) + * @public + */ + public function getAliasNumPage() { + if ($this->isUnicodeFont()) { + return '{'.TCPDF_STATIC::$alias_num_page.'}'; + } + return TCPDF_STATIC::$alias_num_page; + } + + /** + * Return the alias for the total number of pages in the current page group. + * If the current font is unicode type, the returned string is surrounded by additional curly braces. + * This alias will be replaced by the total number of pages in this group. + * @return alias of the current page group + * @public + * @since 3.0.000 (2008-03-27) + */ + public function getPageGroupAlias() { + if ($this->isUnicodeFont()) { + return '{'.TCPDF_STATIC::$alias_group_tot_pages.'}'; + } + return TCPDF_STATIC::$alias_group_tot_pages; + } + + /** + * Return the alias for the page number on the current page group. + * If the current font is unicode type, the returned string is surrounded by additional curly braces. + * This alias will be replaced by the page number (relative to the belonging group). + * @return alias of the current page group + * @public + * @since 4.5.000 (2009-01-02) + */ + public function getPageNumGroupAlias() { + if ($this->isUnicodeFont()) { + return '{'.TCPDF_STATIC::$alias_group_num_page.'}'; + } + return TCPDF_STATIC::$alias_group_num_page; + } + + /** + * Return the current page in the group. + * @return current page in the group + * @public + * @since 3.0.000 (2008-03-27) + */ + public function getGroupPageNo() { + return $this->pagegroups[$this->currpagegroup]; + } + + /** + * Returns the current group page number formatted as a string. + * @public + * @since 4.3.003 (2008-11-18) + * @see PaneNo(), formatPageNumber() + */ + public function getGroupPageNoFormatted() { + return TCPDF_STATIC::formatPageNumber($this->getGroupPageNo()); + } + + /** + * Returns the current page number formatted as a string. + * @public + * @since 4.2.005 (2008-11-06) + * @see PaneNo(), formatPageNumber() + */ + public function PageNoFormatted() { + return TCPDF_STATIC::formatPageNumber($this->PageNo()); + } + + /** + * Put pdf layers. + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected function _putocg() { + if (empty($this->pdflayers)) { + return; + } + foreach ($this->pdflayers as $key => $layer) { + $this->pdflayers[$key]['objid'] = $this->_newobj(); + $out = '<< /Type /OCG'; + $out .= ' /Name '.$this->_textstring($layer['name'], $this->pdflayers[$key]['objid']); + $out .= ' /Usage <<'; + if (isset($layer['print']) AND ($layer['print'] !== NULL)) { + $out .= ' /Print <>'; + } + $out .= ' /View <>'; + $out .= ' >> >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + + /** + * Start a new pdf layer. + * @param $name (string) Layer name (only a-z letters and numbers). Leave empty for automatic name. + * @param $print (boolean|null) Set to TRUE to print this layer, FALSE to not print and NULL to not set this option + * @param $view (boolean) Set to true to view this layer. + * @param $lock (boolean) If true lock the layer + * @public + * @since 5.9.102 (2011-07-13) + */ + public function startLayer($name='', $print=true, $view=true, $lock=true) { + if ($this->state != 2) { + return; + } + $layer = sprintf('LYR%03d', (count($this->pdflayers) + 1)); + if (empty($name)) { + $name = $layer; + } else { + $name = preg_replace('/[^a-zA-Z0-9_\-]/', '', $name); + } + $this->pdflayers[] = array('layer' => $layer, 'name' => $name, 'print' => $print, 'view' => $view, 'lock' => $lock); + $this->openMarkedContent = true; + $this->_out('/OC /'.$layer.' BDC'); + } + + /** + * End the current PDF layer. + * @public + * @since 5.9.102 (2011-07-13) + */ + public function endLayer() { + if ($this->state != 2) { + return; + } + if ($this->openMarkedContent) { + // close existing open marked-content layer + $this->_out('EMC'); + $this->openMarkedContent = false; + } + } + + /** + * Set the visibility of the successive elements. + * This can be useful, for instance, to put a background + * image or color that will show on screen but won't print. + * @param $v (string) visibility mode. Legal values are: all, print, screen or view. + * @public + * @since 3.0.000 (2008-03-27) + */ + public function setVisibility($v) { + if ($this->state != 2) { + return; + } + $this->endLayer(); + switch($v) { + case 'print': { + $this->startLayer('Print', true, false); + break; + } + case 'view': + case 'screen': { + $this->startLayer('View', false, true); + break; + } + case 'all': { + $this->_out(''); + break; + } + default: { + $this->Error('Incorrect visibility: '.$v); + break; + } + } + } + + /** + * Add transparency parameters to the current extgstate + * @param $parms (array) parameters + * @return the number of extgstates + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected function addExtGState($parms) { + if ($this->pdfa_mode) { + // transparencies are not allowed in PDF/A mode + return; + } + // check if this ExtGState already exist + foreach ($this->extgstates as $i => $ext) { + if ($ext['parms'] == $parms) { + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['extgstates'][$i] = $ext; + } + // return reference to existing ExtGState + return $i; + } + } + $n = (count($this->extgstates) + 1); + $this->extgstates[$n] = array('parms' => $parms); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['extgstates'][$n] = $this->extgstates[$n]; + } + return $n; + } + + /** + * Add an extgstate + * @param $gs (array) extgstate + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected function setExtGState($gs) { + if ($this->pdfa_mode OR ($this->state != 2)) { + // transparency is not allowed in PDF/A mode + return; + } + $this->_out(sprintf('/GS%d gs', $gs)); + } + + /** + * Put extgstates for object transparency + * @protected + * @since 3.0.000 (2008-03-27) + */ + protected function _putextgstates() { + foreach ($this->extgstates as $i => $ext) { + $this->extgstates[$i]['n'] = $this->_newobj(); + $out = '<< /Type /ExtGState'; + foreach ($ext['parms'] as $k => $v) { + if (is_float($v)) { + $v = sprintf('%F', $v); + } elseif ($v === true) { + $v = 'true'; + } elseif ($v === false) { + $v = 'false'; + } + $out .= ' /'.$k.' '.$v; + } + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + + /** + * Set overprint mode for stroking (OP) and non-stroking (op) painting operations. + * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008). + * @param $stroking (boolean) If true apply overprint for stroking operations. + * @param $nonstroking (boolean) If true apply overprint for painting operations other than stroking. + * @param $mode (integer) Overprint mode: (0 = each source colour component value replaces the value previously painted for the corresponding device colorant; 1 = a tint value of 0.0 for a source colour component shall leave the corresponding component of the previously painted colour unchanged). + * @public + * @since 5.9.152 (2012-03-23) + */ + public function setOverprint($stroking=true, $nonstroking='', $mode=0) { + if ($this->state != 2) { + return; + } + $stroking = $stroking ? true : false; + if (TCPDF_STATIC::empty_string($nonstroking)) { + // default value if not set + $nonstroking = $stroking; + } else { + $nonstroking = $nonstroking ? true : false; + } + if (($mode != 0) AND ($mode != 1)) { + $mode = 0; + } + $this->overprint = array('OP' => $stroking, 'op' => $nonstroking, 'OPM' => $mode); + $gs = $this->addExtGState($this->overprint); + $this->setExtGState($gs); + } + + /** + * Get the overprint mode array (OP, op, OPM). + * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008). + * @return array. + * @public + * @since 5.9.152 (2012-03-23) + */ + public function getOverprint() { + return $this->overprint; + } + + /** + * Set alpha for stroking (CA) and non-stroking (ca) operations. + * @param $stroking (float) Alpha value for stroking operations: real value from 0 (transparent) to 1 (opaque). + * @param $bm (string) blend mode, one of the following: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity + * @param $nonstroking (float) Alpha value for non-stroking operations: real value from 0 (transparent) to 1 (opaque). + * @param $ais (boolean) + * @public + * @since 3.0.000 (2008-03-27) + */ + public function setAlpha($stroking=1, $bm='Normal', $nonstroking='', $ais=false) { + if ($this->pdfa_mode) { + // transparency is not allowed in PDF/A mode + return; + } + $stroking = floatval($stroking); + if (TCPDF_STATIC::empty_string($nonstroking)) { + // default value if not set + $nonstroking = $stroking; + } else { + $nonstroking = floatval($nonstroking); + } + if ($bm[0] == '/') { + // remove trailing slash + $bm = substr($bm, 1); + } + if (!in_array($bm, array('Normal', 'Multiply', 'Screen', 'Overlay', 'Darken', 'Lighten', 'ColorDodge', 'ColorBurn', 'HardLight', 'SoftLight', 'Difference', 'Exclusion', 'Hue', 'Saturation', 'Color', 'Luminosity'))) { + $bm = 'Normal'; + } + $ais = $ais ? true : false; + $this->alpha = array('CA' => $stroking, 'ca' => $nonstroking, 'BM' => '/'.$bm, 'AIS' => $ais); + $gs = $this->addExtGState($this->alpha); + $this->setExtGState($gs); + } + + /** + * Get the alpha mode array (CA, ca, BM, AIS). + * (Check the "Entries in a Graphics State Parameter Dictionary" on PDF 32000-1:2008). + * @return array. + * @public + * @since 5.9.152 (2012-03-23) + */ + public function getAlpha() { + return $this->alpha; + } + + /** + * Set the default JPEG compression quality (1-100) + * @param $quality (int) JPEG quality, integer between 1 and 100 + * @public + * @since 3.0.000 (2008-03-27) + */ + public function setJPEGQuality($quality) { + if (($quality < 1) OR ($quality > 100)) { + $quality = 75; + } + $this->jpeg_quality = intval($quality); + } + + /** + * Set the default number of columns in a row for HTML tables. + * @param $cols (int) number of columns + * @public + * @since 3.0.014 (2008-06-04) + */ + public function setDefaultTableColumns($cols=4) { + $this->default_table_columns = intval($cols); + } + + /** + * Set the height of the cell (line height) respect the font height. + * @param $h (int) cell proportion respect font height (typical value = 1.25). + * @public + * @since 3.0.014 (2008-06-04) + */ + public function setCellHeightRatio($h) { + $this->cell_height_ratio = $h; + } + + /** + * return the height of cell repect font height. + * @public + * @since 4.0.012 (2008-07-24) + */ + public function getCellHeightRatio() { + return $this->cell_height_ratio; + } + + /** + * Set the PDF version (check PDF reference for valid values). + * @param $version (string) PDF document version. + * @public + * @since 3.1.000 (2008-06-09) + */ + public function setPDFVersion($version='1.7') { + if ($this->pdfa_mode) { + // PDF/A mode + $this->PDFVersion = '1.4'; + } else { + $this->PDFVersion = $version; + } + } + + /** + * Set the viewer preferences dictionary controlling the way the document is to be presented on the screen or in print. + * (see Section 8.1 of PDF reference, "Viewer Preferences"). + *
      • HideToolbar boolean (Optional) A flag specifying whether to hide the viewer application's tool bars when the document is active. Default value: false.
      • HideMenubar boolean (Optional) A flag specifying whether to hide the viewer application's menu bar when the document is active. Default value: false.
      • HideWindowUI boolean (Optional) A flag specifying whether to hide user interface elements in the document's window (such as scroll bars and navigation controls), leaving only the document's contents displayed. Default value: false.
      • FitWindow boolean (Optional) A flag specifying whether to resize the document's window to fit the size of the first displayed page. Default value: false.
      • CenterWindow boolean (Optional) A flag specifying whether to position the document's window in the center of the screen. Default value: false.
      • DisplayDocTitle boolean (Optional; PDF 1.4) A flag specifying whether the window's title bar should display the document title taken from the Title entry of the document information dictionary (see Section 10.2.1, "Document Information Dictionary"). If false, the title bar should instead display the name of the PDF file containing the document. Default value: false.
      • NonFullScreenPageMode name (Optional) The document's page mode, specifying how to display the document on exiting full-screen mode:
        • UseNone Neither document outline nor thumbnail images visible
        • UseOutlines Document outline visible
        • UseThumbs Thumbnail images visible
        • UseOC Optional content group panel visible
        This entry is meaningful only if the value of the PageMode entry in the catalog dictionary (see Section 3.6.1, "Document Catalog") is FullScreen; it is ignored otherwise. Default value: UseNone.
      • ViewArea name (Optional; PDF 1.4) The name of the page boundary representing the area of a page to be displayed when viewing the document on the screen. Valid values are (see Section 10.10.1, "Page Boundaries").:
        • MediaBox
        • CropBox (default)
        • BleedBox
        • TrimBox
        • ArtBox
      • ViewClip name (Optional; PDF 1.4) The name of the page boundary to which the contents of a page are to be clipped when viewing the document on the screen. Valid values are (see Section 10.10.1, "Page Boundaries").:
        • MediaBox
        • CropBox (default)
        • BleedBox
        • TrimBox
        • ArtBox
      • PrintArea name (Optional; PDF 1.4) The name of the page boundary representing the area of a page to be rendered when printing the document. Valid values are (see Section 10.10.1, "Page Boundaries").:
        • MediaBox
        • CropBox (default)
        • BleedBox
        • TrimBox
        • ArtBox
      • PrintClip name (Optional; PDF 1.4) The name of the page boundary to which the contents of a page are to be clipped when printing the document. Valid values are (see Section 10.10.1, "Page Boundaries").:
        • MediaBox
        • CropBox (default)
        • BleedBox
        • TrimBox
        • ArtBox
      • PrintScaling name (Optional; PDF 1.6) The page scaling option to be selected when a print dialog is displayed for this document. Valid values are:
        • None, which indicates that the print dialog should reflect no page scaling
        • AppDefault (default), which indicates that applications should use the current print scaling
      • Duplex name (Optional; PDF 1.7) The paper handling option to use when printing the file from the print dialog. The following values are valid:
        • Simplex - Print single-sided
        • DuplexFlipShortEdge - Duplex and flip on the short edge of the sheet
        • DuplexFlipLongEdge - Duplex and flip on the long edge of the sheet
        Default value: none
      • PickTrayByPDFSize boolean (Optional; PDF 1.7) A flag specifying whether the PDF page size is used to select the input paper tray. This setting influences only the preset values used to populate the print dialog presented by a PDF viewer application. If PickTrayByPDFSize is true, the check box in the print dialog associated with input paper tray is checked. Note: This setting has no effect on Mac OS systems, which do not provide the ability to pick the input tray by size.
      • PrintPageRange array (Optional; PDF 1.7) The page numbers used to initialize the print dialog box when the file is printed. The first page of the PDF file is denoted by 1. Each pair consists of the first and last pages in the sub-range. An odd number of integers causes this entry to be ignored. Negative numbers cause the entire array to be ignored. Default value: as defined by PDF viewer application
      • NumCopies integer (Optional; PDF 1.7) The number of copies to be printed when the print dialog is opened for this file. Supported values are the integers 2 through 5. Values outside this range are ignored. Default value: as defined by PDF viewer application, but typically 1
      + * @param $preferences (array) array of options. + * @author Nicola Asuni + * @public + * @since 3.1.000 (2008-06-09) + */ + public function setViewerPreferences($preferences) { + $this->viewer_preferences = $preferences; + } + + /** + * Paints color transition registration bars + * @param $x (float) abscissa of the top left corner of the rectangle. + * @param $y (float) ordinate of the top left corner of the rectangle. + * @param $w (float) width of the rectangle. + * @param $h (float) height of the rectangle. + * @param $transition (boolean) if true prints tcolor transitions to white. + * @param $vertical (boolean) if true prints bar vertically. + * @param $colors (string) colors to print separated by comma. Valid values are: A,W,R,G,B,C,M,Y,K,RGB,CMYK,ALL,ALLSPOT,. Where: A = grayscale black, W = grayscale white, R = RGB red, G RGB green, B RGB blue, C = CMYK cyan, M = CMYK magenta, Y = CMYK yellow, K = CMYK key/black, RGB = RGB registration color, CMYK = CMYK registration color, ALL = Spot registration color, ALLSPOT = print all defined spot colors, = name of the spot color to print. + * @author Nicola Asuni + * @since 4.9.000 (2010-03-26) + * @public + */ + public function colorRegistrationBar($x, $y, $w, $h, $transition=true, $vertical=false, $colors='A,R,G,B,C,M,Y,K') { + if (strpos($colors, 'ALLSPOT') !== false) { + // expand spot colors + $spot_colors = ''; + foreach ($this->spot_colors as $spot_color_name => $v) { + $spot_colors .= ','.$spot_color_name; + } + if (!empty($spot_colors)) { + $spot_colors = substr($spot_colors, 1); + $colors = str_replace('ALLSPOT', $spot_colors, $colors); + } else { + $colors = str_replace('ALLSPOT', 'NONE', $colors); + } + } + $bars = explode(',', $colors); + $numbars = count($bars); // number of bars to print + if ($numbars <= 0) { + return; + } + // set bar measures + if ($vertical) { + $coords = array(0, 0, 0, 1); + $wb = $w / $numbars; // bar width + $hb = $h; // bar height + $xd = $wb; // delta x + $yd = 0; // delta y + } else { + $coords = array(1, 0, 0, 0); + $wb = $w; // bar width + $hb = $h / $numbars; // bar height + $xd = 0; // delta x + $yd = $hb; // delta y + } + $xb = $x; + $yb = $y; + foreach ($bars as $col) { + switch ($col) { + // set transition colors + case 'A': { // BLACK (GRAYSCALE) + $col_a = array(255); + $col_b = array(0); + break; + } + case 'W': { // WHITE (GRAYSCALE) + $col_a = array(0); + $col_b = array(255); + break; + } + case 'R': { // RED (RGB) + $col_a = array(255,255,255); + $col_b = array(255,0,0); + break; + } + case 'G': { // GREEN (RGB) + $col_a = array(255,255,255); + $col_b = array(0,255,0); + break; + } + case 'B': { // BLUE (RGB) + $col_a = array(255,255,255); + $col_b = array(0,0,255); + break; + } + case 'C': { // CYAN (CMYK) + $col_a = array(0,0,0,0); + $col_b = array(100,0,0,0); + break; + } + case 'M': { // MAGENTA (CMYK) + $col_a = array(0,0,0,0); + $col_b = array(0,100,0,0); + break; + } + case 'Y': { // YELLOW (CMYK) + $col_a = array(0,0,0,0); + $col_b = array(0,0,100,0); + break; + } + case 'K': { // KEY - BLACK (CMYK) + $col_a = array(0,0,0,0); + $col_b = array(0,0,0,100); + break; + } + case 'RGB': { // BLACK REGISTRATION (RGB) + $col_a = array(255,255,255); + $col_b = array(0,0,0); + break; + } + case 'CMYK': { // BLACK REGISTRATION (CMYK) + $col_a = array(0,0,0,0); + $col_b = array(100,100,100,100); + break; + } + case 'ALL': { // SPOT COLOR REGISTRATION + $col_a = array(0,0,0,0,'None'); + $col_b = array(100,100,100,100,'All'); + break; + } + case 'NONE': { // SKIP THIS COLOR + $col_a = array(0,0,0,0,'None'); + $col_b = array(0,0,0,0,'None'); + break; + } + default: { // SPECIFIC SPOT COLOR NAME + $col_a = array(0,0,0,0,'None'); + $col_b = TCPDF_COLORS::getSpotColor($col, $this->spot_colors); + if ($col_b === false) { + // in case of error defaults to the registration color + $col_b = array(100,100,100,100,'All'); + } + break; + } + } + if ($col != 'NONE') { + if ($transition) { + // color gradient + $this->LinearGradient($xb, $yb, $wb, $hb, $col_a, $col_b, $coords); + } else { + $this->SetFillColorArray($col_b); + // colored rectangle + $this->Rect($xb, $yb, $wb, $hb, 'F', array()); + } + $xb += $xd; + $yb += $yd; + } + } + } + + /** + * Paints crop marks. + * @param $x (float) abscissa of the crop mark center. + * @param $y (float) ordinate of the crop mark center. + * @param $w (float) width of the crop mark. + * @param $h (float) height of the crop mark. + * @param $type (string) type of crop mark, one symbol per type separated by comma: T = TOP, F = BOTTOM, L = LEFT, R = RIGHT, TL = A = TOP-LEFT, TR = B = TOP-RIGHT, BL = C = BOTTOM-LEFT, BR = D = BOTTOM-RIGHT. + * @param $color (array) crop mark color (default spot registration color). + * @author Nicola Asuni + * @since 4.9.000 (2010-03-26) + * @public + */ + public function cropMark($x, $y, $w, $h, $type='T,R,B,L', $color=array(100,100,100,100,'All')) { + $this->SetLineStyle(array('width' => (0.5 / $this->k), 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $color)); + $type = strtoupper($type); + $type = preg_replace('/[^A-Z\-\,]*/', '', $type); + // split type in single components + $type = str_replace('-', ',', $type); + $type = str_replace('TL', 'T,L', $type); + $type = str_replace('TR', 'T,R', $type); + $type = str_replace('BL', 'F,L', $type); + $type = str_replace('BR', 'F,R', $type); + $type = str_replace('A', 'T,L', $type); + $type = str_replace('B', 'T,R', $type); + $type = str_replace('T,RO', 'BO', $type); + $type = str_replace('C', 'F,L', $type); + $type = str_replace('D', 'F,R', $type); + $crops = explode(',', strtoupper($type)); + // remove duplicates + $crops = array_unique($crops); + $dw = ($w / 4); // horizontal space to leave before the intersection point + $dh = ($h / 4); // vertical space to leave before the intersection point + foreach ($crops as $crop) { + switch ($crop) { + case 'T': + case 'TOP': { + $x1 = $x; + $y1 = ($y - $h); + $x2 = $x; + $y2 = ($y - $dh); + break; + } + case 'F': + case 'BOTTOM': { + $x1 = $x; + $y1 = ($y + $dh); + $x2 = $x; + $y2 = ($y + $h); + break; + } + case 'L': + case 'LEFT': { + $x1 = ($x - $w); + $y1 = $y; + $x2 = ($x - $dw); + $y2 = $y; + break; + } + case 'R': + case 'RIGHT': { + $x1 = ($x + $dw); + $y1 = $y; + $x2 = ($x + $w); + $y2 = $y; + break; + } + } + $this->Line($x1, $y1, $x2, $y2); + } + } + + /** + * Paints a registration mark + * @param $x (float) abscissa of the registration mark center. + * @param $y (float) ordinate of the registration mark center. + * @param $r (float) radius of the crop mark. + * @param $double (boolean) if true print two concentric crop marks. + * @param $cola (array) crop mark color (default spot registration color 'All'). + * @param $colb (array) second crop mark color (default spot registration color 'None'). + * @author Nicola Asuni + * @since 4.9.000 (2010-03-26) + * @public + */ + public function registrationMark($x, $y, $r, $double=false, $cola=array(100,100,100,100,'All'), $colb=array(0,0,0,0,'None')) { + $line_style = array('width' => max((0.5 / $this->k),($r / 30)), 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => $cola); + $this->SetFillColorArray($cola); + $this->PieSector($x, $y, $r, 90, 180, 'F'); + $this->PieSector($x, $y, $r, 270, 360, 'F'); + $this->Circle($x, $y, $r, 0, 360, 'C', $line_style, array(), 8); + if ($double) { + $ri = $r * 0.5; + $this->SetFillColorArray($colb); + $this->PieSector($x, $y, $ri, 90, 180, 'F'); + $this->PieSector($x, $y, $ri, 270, 360, 'F'); + $this->SetFillColorArray($cola); + $this->PieSector($x, $y, $ri, 0, 90, 'F'); + $this->PieSector($x, $y, $ri, 180, 270, 'F'); + $this->Circle($x, $y, $ri, 0, 360, 'C', $line_style, array(), 8); + } + } + + /** + * Paints a CMYK registration mark + * @param $x (float) abscissa of the registration mark center. + * @param $y (float) ordinate of the registration mark center. + * @param $r (float) radius of the crop mark. + * @author Nicola Asuni + * @since 6.0.038 (2013-09-30) + * @public + */ + public function registrationMarkCMYK($x, $y, $r) { + // line width + $lw = max((0.5 / $this->k),($r / 8)); + // internal radius + $ri = ($r * 0.6); + // external radius + $re = ($r * 1.3); + // Cyan + $this->SetFillColorArray(array(100,0,0,0)); + $this->PieSector($x, $y, $ri, 270, 360, 'F'); + // Magenta + $this->SetFillColorArray(array(0,100,0,0)); + $this->PieSector($x, $y, $ri, 0, 90, 'F'); + // Yellow + $this->SetFillColorArray(array(0,0,100,0)); + $this->PieSector($x, $y, $ri, 90, 180, 'F'); + // Key - black + $this->SetFillColorArray(array(0,0,0,100)); + $this->PieSector($x, $y, $ri, 180, 270, 'F'); + // registration color + $line_style = array('width' => $lw, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(100,100,100,100,'All')); + $this->SetFillColorArray(array(100,100,100,100,'All')); + // external circle + $this->Circle($x, $y, $r, 0, 360, 'C', $line_style, array(), 8); + // cross lines + $this->Line($x, ($y - $re), $x, ($y - $ri)); + $this->Line($x, ($y + $ri), $x, ($y + $re)); + $this->Line(($x - $re), $y, ($x - $ri), $y); + $this->Line(($x + $ri), $y, ($x + $re), $y); + } + + /** + * Paints a linear colour gradient. + * @param $x (float) abscissa of the top left corner of the rectangle. + * @param $y (float) ordinate of the top left corner of the rectangle. + * @param $w (float) width of the rectangle. + * @param $h (float) height of the rectangle. + * @param $col1 (array) first color (Grayscale, RGB or CMYK components). + * @param $col2 (array) second color (Grayscale, RGB or CMYK components). + * @param $coords (array) array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). The default value is from left to right (x1=0, y1=0, x2=1, y2=0). + * @author Andreas W\FCrmser, Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function LinearGradient($x, $y, $w, $h, $col1=array(), $col2=array(), $coords=array(0,0,1,0)) { + $this->Clip($x, $y, $w, $h); + $this->Gradient(2, $coords, array(array('color' => $col1, 'offset' => 0, 'exponent' => 1), array('color' => $col2, 'offset' => 1, 'exponent' => 1)), array(), false); + } + + /** + * Paints a radial colour gradient. + * @param $x (float) abscissa of the top left corner of the rectangle. + * @param $y (float) ordinate of the top left corner of the rectangle. + * @param $w (float) width of the rectangle. + * @param $h (float) height of the rectangle. + * @param $col1 (array) first color (Grayscale, RGB or CMYK components). + * @param $col2 (array) second color (Grayscale, RGB or CMYK components). + * @param $coords (array) array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). (fx, fy) should be inside the circle, otherwise some areas will not be defined. + * @author Andreas W\FCrmser, Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function RadialGradient($x, $y, $w, $h, $col1=array(), $col2=array(), $coords=array(0.5,0.5,0.5,0.5,1)) { + $this->Clip($x, $y, $w, $h); + $this->Gradient(3, $coords, array(array('color' => $col1, 'offset' => 0, 'exponent' => 1), array('color' => $col2, 'offset' => 1, 'exponent' => 1)), array(), false); + } + + /** + * Paints a coons patch mesh. + * @param $x (float) abscissa of the top left corner of the rectangle. + * @param $y (float) ordinate of the top left corner of the rectangle. + * @param $w (float) width of the rectangle. + * @param $h (float) height of the rectangle. + * @param $col1 (array) first color (lower left corner) (RGB components). + * @param $col2 (array) second color (lower right corner) (RGB components). + * @param $col3 (array) third color (upper right corner) (RGB components). + * @param $col4 (array) fourth color (upper left corner) (RGB components). + * @param $coords (array)
      • for one patch mesh: array(float x1, float y1, .... float x12, float y12): 12 pairs of coordinates (normally from 0 to 1) which specify the Bezier control points that define the patch. First pair is the lower left edge point, next is its right control point (control point 2). Then the other points are defined in the order: control point 1, edge point, control point 2 going counter-clockwise around the patch. Last (x12, y12) is the first edge point's left control point (control point 1).
      • for two or more patch meshes: array[number of patches]: arrays with the following keys for each patch: f: where to put that patch (0 = first patch, 1, 2, 3 = right, top and left of precedent patch - I didn't figure this out completely - just try and error ;-) points: 12 pairs of coordinates of the Bezier control points as above for the first patch, 8 pairs of coordinates for the following patches, ignoring the coordinates already defined by the precedent patch (I also didn't figure out the order of these - also: try and see what's happening) colors: must be 4 colors for the first patch, 2 colors for the following patches
      + * @param $coords_min (array) minimum value used by the coordinates. If a coordinate's value is smaller than this it will be cut to coords_min. default: 0 + * @param $coords_max (array) maximum value used by the coordinates. If a coordinate's value is greater than this it will be cut to coords_max. default: 1 + * @param $antialias (boolean) A flag indicating whether to filter the shading function to prevent aliasing artifacts. + * @author Andreas W\FCrmser, Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function CoonsPatchMesh($x, $y, $w, $h, $col1=array(), $col2=array(), $col3=array(), $col4=array(), $coords=array(0.00,0.0,0.33,0.00,0.67,0.00,1.00,0.00,1.00,0.33,1.00,0.67,1.00,1.00,0.67,1.00,0.33,1.00,0.00,1.00,0.00,0.67,0.00,0.33), $coords_min=0, $coords_max=1, $antialias=false) { + if ($this->pdfa_mode OR ($this->state != 2)) { + return; + } + $this->Clip($x, $y, $w, $h); + $n = count($this->gradients) + 1; + $this->gradients[$n] = array(); + $this->gradients[$n]['type'] = 6; //coons patch mesh + $this->gradients[$n]['coords'] = array(); + $this->gradients[$n]['antialias'] = $antialias; + $this->gradients[$n]['colors'] = array(); + $this->gradients[$n]['transparency'] = false; + //check the coords array if it is the simple array or the multi patch array + if (!isset($coords[0]['f'])) { + //simple array -> convert to multi patch array + if (!isset($col1[1])) { + $col1[1] = $col1[2] = $col1[0]; + } + if (!isset($col2[1])) { + $col2[1] = $col2[2] = $col2[0]; + } + if (!isset($col3[1])) { + $col3[1] = $col3[2] = $col3[0]; + } + if (!isset($col4[1])) { + $col4[1] = $col4[2] = $col4[0]; + } + $patch_array[0]['f'] = 0; + $patch_array[0]['points'] = $coords; + $patch_array[0]['colors'][0]['r'] = $col1[0]; + $patch_array[0]['colors'][0]['g'] = $col1[1]; + $patch_array[0]['colors'][0]['b'] = $col1[2]; + $patch_array[0]['colors'][1]['r'] = $col2[0]; + $patch_array[0]['colors'][1]['g'] = $col2[1]; + $patch_array[0]['colors'][1]['b'] = $col2[2]; + $patch_array[0]['colors'][2]['r'] = $col3[0]; + $patch_array[0]['colors'][2]['g'] = $col3[1]; + $patch_array[0]['colors'][2]['b'] = $col3[2]; + $patch_array[0]['colors'][3]['r'] = $col4[0]; + $patch_array[0]['colors'][3]['g'] = $col4[1]; + $patch_array[0]['colors'][3]['b'] = $col4[2]; + } else { + //multi patch array + $patch_array = $coords; + } + $bpcd = 65535; //16 bits per coordinate + //build the data stream + $this->gradients[$n]['stream'] = ''; + $count_patch = count($patch_array); + for ($i=0; $i < $count_patch; ++$i) { + $this->gradients[$n]['stream'] .= chr($patch_array[$i]['f']); //start with the edge flag as 8 bit + $count_points = count($patch_array[$i]['points']); + for ($j=0; $j < $count_points; ++$j) { + //each point as 16 bit + $patch_array[$i]['points'][$j] = (($patch_array[$i]['points'][$j] - $coords_min) / ($coords_max - $coords_min)) * $bpcd; + if ($patch_array[$i]['points'][$j] < 0) { + $patch_array[$i]['points'][$j] = 0; + } + if ($patch_array[$i]['points'][$j] > $bpcd) { + $patch_array[$i]['points'][$j] = $bpcd; + } + $this->gradients[$n]['stream'] .= chr(floor($patch_array[$i]['points'][$j] / 256)); + $this->gradients[$n]['stream'] .= chr(floor($patch_array[$i]['points'][$j] % 256)); + } + $count_cols = count($patch_array[$i]['colors']); + for ($j=0; $j < $count_cols; ++$j) { + //each color component as 8 bit + $this->gradients[$n]['stream'] .= chr($patch_array[$i]['colors'][$j]['r']); + $this->gradients[$n]['stream'] .= chr($patch_array[$i]['colors'][$j]['g']); + $this->gradients[$n]['stream'] .= chr($patch_array[$i]['colors'][$j]['b']); + } + } + //paint the gradient + $this->_out('/Sh'.$n.' sh'); + //restore previous Graphic State + $this->_outRestoreGraphicsState(); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['gradients'][$n] = $this->gradients[$n]; + } + } + + /** + * Set a rectangular clipping area. + * @param $x (float) abscissa of the top left corner of the rectangle (or top right corner for RTL mode). + * @param $y (float) ordinate of the top left corner of the rectangle. + * @param $w (float) width of the rectangle. + * @param $h (float) height of the rectangle. + * @author Andreas W\FCrmser, Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @protected + */ + protected function Clip($x, $y, $w, $h) { + if ($this->state != 2) { + return; + } + if ($this->rtl) { + $x = $this->w - $x - $w; + } + //save current Graphic State + $s = 'q'; + //set clipping area + $s .= sprintf(' %F %F %F %F re W n', $x*$this->k, ($this->h-$y)*$this->k, $w*$this->k, -$h*$this->k); + //set up transformation matrix for gradient + $s .= sprintf(' %F 0 0 %F %F %F cm', $w*$this->k, $h*$this->k, $x*$this->k, ($this->h-($y+$h))*$this->k); + $this->_out($s); + } + + /** + * Output gradient. + * @param $type (int) type of gradient (1 Function-based shading; 2 Axial shading; 3 Radial shading; 4 Free-form Gouraud-shaded triangle mesh; 5 Lattice-form Gouraud-shaded triangle mesh; 6 Coons patch mesh; 7 Tensor-product patch mesh). (Not all types are currently supported) + * @param $coords (array) array of coordinates. + * @param $stops (array) array gradient color components: color = array of GRAY, RGB or CMYK color components; offset = (0 to 1) represents a location along the gradient vector; exponent = exponent of the exponential interpolation function (default = 1). + * @param $background (array) An array of colour components appropriate to the colour space, specifying a single background colour value. + * @param $antialias (boolean) A flag indicating whether to filter the shading function to prevent aliasing artifacts. + * @author Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function Gradient($type, $coords, $stops, $background=array(), $antialias=false) { + if ($this->pdfa_mode OR ($this->state != 2)) { + return; + } + $n = count($this->gradients) + 1; + $this->gradients[$n] = array(); + $this->gradients[$n]['type'] = $type; + $this->gradients[$n]['coords'] = $coords; + $this->gradients[$n]['antialias'] = $antialias; + $this->gradients[$n]['colors'] = array(); + $this->gradients[$n]['transparency'] = false; + // color space + $numcolspace = count($stops[0]['color']); + $bcolor = array_values($background); + switch($numcolspace) { + case 5: // SPOT + case 4: { // CMYK + $this->gradients[$n]['colspace'] = 'DeviceCMYK'; + if (!empty($background)) { + $this->gradients[$n]['background'] = sprintf('%F %F %F %F', $bcolor[0]/100, $bcolor[1]/100, $bcolor[2]/100, $bcolor[3]/100); + } + break; + } + case 3: { // RGB + $this->gradients[$n]['colspace'] = 'DeviceRGB'; + if (!empty($background)) { + $this->gradients[$n]['background'] = sprintf('%F %F %F', $bcolor[0]/255, $bcolor[1]/255, $bcolor[2]/255); + } + break; + } + case 1: { // GRAY SCALE + $this->gradients[$n]['colspace'] = 'DeviceGray'; + if (!empty($background)) { + $this->gradients[$n]['background'] = sprintf('%F', $bcolor[0]/255); + } + break; + } + } + $num_stops = count($stops); + $last_stop_id = $num_stops - 1; + foreach ($stops as $key => $stop) { + $this->gradients[$n]['colors'][$key] = array(); + // offset represents a location along the gradient vector + if (isset($stop['offset'])) { + $this->gradients[$n]['colors'][$key]['offset'] = $stop['offset']; + } else { + if ($key == 0) { + $this->gradients[$n]['colors'][$key]['offset'] = 0; + } elseif ($key == $last_stop_id) { + $this->gradients[$n]['colors'][$key]['offset'] = 1; + } else { + $offsetstep = (1 - $this->gradients[$n]['colors'][($key - 1)]['offset']) / ($num_stops - $key); + $this->gradients[$n]['colors'][$key]['offset'] = $this->gradients[$n]['colors'][($key - 1)]['offset'] + $offsetstep; + } + } + if (isset($stop['opacity'])) { + $this->gradients[$n]['colors'][$key]['opacity'] = $stop['opacity']; + if ((!$this->pdfa_mode) AND ($stop['opacity'] < 1)) { + $this->gradients[$n]['transparency'] = true; + } + } else { + $this->gradients[$n]['colors'][$key]['opacity'] = 1; + } + // exponent for the exponential interpolation function + if (isset($stop['exponent'])) { + $this->gradients[$n]['colors'][$key]['exponent'] = $stop['exponent']; + } else { + $this->gradients[$n]['colors'][$key]['exponent'] = 1; + } + // set colors + $color = array_values($stop['color']); + switch($numcolspace) { + case 5: // SPOT + case 4: { // CMYK + $this->gradients[$n]['colors'][$key]['color'] = sprintf('%F %F %F %F', $color[0]/100, $color[1]/100, $color[2]/100, $color[3]/100); + break; + } + case 3: { // RGB + $this->gradients[$n]['colors'][$key]['color'] = sprintf('%F %F %F', $color[0]/255, $color[1]/255, $color[2]/255); + break; + } + case 1: { // GRAY SCALE + $this->gradients[$n]['colors'][$key]['color'] = sprintf('%F', $color[0]/255); + break; + } + } + } + if ($this->gradients[$n]['transparency']) { + // paint luminosity gradient + $this->_out('/TGS'.$n.' gs'); + } + //paint the gradient + $this->_out('/Sh'.$n.' sh'); + //restore previous Graphic State + $this->_outRestoreGraphicsState(); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['gradients'][$n] = $this->gradients[$n]; + } + } + + /** + * Output gradient shaders. + * @author Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @protected + */ + function _putshaders() { + if ($this->pdfa_mode) { + return; + } + $idt = count($this->gradients); //index for transparency gradients + foreach ($this->gradients as $id => $grad) { + if (($grad['type'] == 2) OR ($grad['type'] == 3)) { + $fc = $this->_newobj(); + $out = '<<'; + $out .= ' /FunctionType 3'; + $out .= ' /Domain [0 1]'; + $functions = ''; + $bounds = ''; + $encode = ''; + $i = 1; + $num_cols = count($grad['colors']); + $lastcols = $num_cols - 1; + for ($i = 1; $i < $num_cols; ++$i) { + $functions .= ($fc + $i).' 0 R '; + if ($i < $lastcols) { + $bounds .= sprintf('%F ', $grad['colors'][$i]['offset']); + } + $encode .= '0 1 '; + } + $out .= ' /Functions ['.trim($functions).']'; + $out .= ' /Bounds ['.trim($bounds).']'; + $out .= ' /Encode ['.trim($encode).']'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + for ($i = 1; $i < $num_cols; ++$i) { + $this->_newobj(); + $out = '<<'; + $out .= ' /FunctionType 2'; + $out .= ' /Domain [0 1]'; + $out .= ' /C0 ['.$grad['colors'][($i - 1)]['color'].']'; + $out .= ' /C1 ['.$grad['colors'][$i]['color'].']'; + $out .= ' /N '.$grad['colors'][$i]['exponent']; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + // set transparency fuctions + if ($grad['transparency']) { + $ft = $this->_newobj(); + $out = '<<'; + $out .= ' /FunctionType 3'; + $out .= ' /Domain [0 1]'; + $functions = ''; + $i = 1; + $num_cols = count($grad['colors']); + for ($i = 1; $i < $num_cols; ++$i) { + $functions .= ($ft + $i).' 0 R '; + } + $out .= ' /Functions ['.trim($functions).']'; + $out .= ' /Bounds ['.trim($bounds).']'; + $out .= ' /Encode ['.trim($encode).']'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + for ($i = 1; $i < $num_cols; ++$i) { + $this->_newobj(); + $out = '<<'; + $out .= ' /FunctionType 2'; + $out .= ' /Domain [0 1]'; + $out .= ' /C0 ['.$grad['colors'][($i - 1)]['opacity'].']'; + $out .= ' /C1 ['.$grad['colors'][$i]['opacity'].']'; + $out .= ' /N '.$grad['colors'][$i]['exponent']; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + } + } + } + // set shading object + $this->_newobj(); + $out = '<< /ShadingType '.$grad['type']; + if (isset($grad['colspace'])) { + $out .= ' /ColorSpace /'.$grad['colspace']; + } else { + $out .= ' /ColorSpace /DeviceRGB'; + } + if (isset($grad['background']) AND !empty($grad['background'])) { + $out .= ' /Background ['.$grad['background'].']'; + } + if (isset($grad['antialias']) AND ($grad['antialias'] === true)) { + $out .= ' /AntiAlias true'; + } + if ($grad['type'] == 2) { + $out .= ' '.sprintf('/Coords [%F %F %F %F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]); + $out .= ' /Domain [0 1]'; + $out .= ' /Function '.$fc.' 0 R'; + $out .= ' /Extend [true true]'; + $out .= ' >>'; + } elseif ($grad['type'] == 3) { + //x0, y0, r0, x1, y1, r1 + //at this this time radius of inner circle is 0 + $out .= ' '.sprintf('/Coords [%F %F 0 %F %F %F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3], $grad['coords'][4]); + $out .= ' /Domain [0 1]'; + $out .= ' /Function '.$fc.' 0 R'; + $out .= ' /Extend [true true]'; + $out .= ' >>'; + } elseif ($grad['type'] == 6) { + $out .= ' /BitsPerCoordinate 16'; + $out .= ' /BitsPerComponent 8'; + $out .= ' /Decode[0 1 0 1 0 1 0 1 0 1]'; + $out .= ' /BitsPerFlag 8'; + $stream = $this->_getrawstream($grad['stream']); + $out .= ' /Length '.strlen($stream); + $out .= ' >>'; + $out .= ' stream'."\n".$stream."\n".'endstream'; + } + $out .= "\n".'endobj'; + $this->_out($out); + if ($grad['transparency']) { + $shading_transparency = preg_replace('/\/ColorSpace \/[^\s]+/si', '/ColorSpace /DeviceGray', $out); + $shading_transparency = preg_replace('/\/Function [0-9]+ /si', '/Function '.$ft.' ', $shading_transparency); + } + $this->gradients[$id]['id'] = $this->n; + // set pattern object + $this->_newobj(); + $out = '<< /Type /Pattern /PatternType 2'; + $out .= ' /Shading '.$this->gradients[$id]['id'].' 0 R'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + $this->gradients[$id]['pattern'] = $this->n; + // set shading and pattern for transparency mask + if ($grad['transparency']) { + // luminosity pattern + $idgs = $id + $idt; + $this->_newobj(); + $this->_out($shading_transparency); + $this->gradients[$idgs]['id'] = $this->n; + $this->_newobj(); + $out = '<< /Type /Pattern /PatternType 2'; + $out .= ' /Shading '.$this->gradients[$idgs]['id'].' 0 R'; + $out .= ' >>'; + $out .= "\n".'endobj'; + $this->_out($out); + $this->gradients[$idgs]['pattern'] = $this->n; + // luminosity XObject + $oid = $this->_newobj(); + $this->xobjects['LX'.$oid] = array('n' => $oid); + $filter = ''; + $stream = 'q /a0 gs /Pattern cs /p'.$idgs.' scn 0 0 '.$this->wPt.' '.$this->hPt.' re f Q'; + if ($this->compress) { + $filter = ' /Filter /FlateDecode'; + $stream = gzcompress($stream); + } + $stream = $this->_getrawstream($stream); + $out = '<< /Type /XObject /Subtype /Form /FormType 1'.$filter; + $out .= ' /Length '.strlen($stream); + $rect = sprintf('%F %F', $this->wPt, $this->hPt); + $out .= ' /BBox [0 0 '.$rect.']'; + $out .= ' /Group << /Type /Group /S /Transparency /CS /DeviceGray >>'; + $out .= ' /Resources <<'; + $out .= ' /ExtGState << /a0 << /ca 1 /CA 1 >> >>'; + $out .= ' /Pattern << /p'.$idgs.' '.$this->gradients[$idgs]['pattern'].' 0 R >>'; + $out .= ' >>'; + $out .= ' >> '; + $out .= ' stream'."\n".$stream."\n".'endstream'; + $out .= "\n".'endobj'; + $this->_out($out); + // SMask + $this->_newobj(); + $out = '<< /Type /Mask /S /Luminosity /G '.($this->n - 1).' 0 R >>'."\n".'endobj'; + $this->_out($out); + // ExtGState + $this->_newobj(); + $out = '<< /Type /ExtGState /SMask '.($this->n - 1).' 0 R /AIS false >>'."\n".'endobj'; + $this->_out($out); + $this->extgstates[] = array('n' => $this->n, 'name' => 'TGS'.$id); + } + } + } + + /** + * Draw the sector of a circle. + * It can be used for instance to render pie charts. + * @param $xc (float) abscissa of the center. + * @param $yc (float) ordinate of the center. + * @param $r (float) radius. + * @param $a (float) start angle (in degrees). + * @param $b (float) end angle (in degrees). + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $cw: (float) indicates whether to go clockwise (default: true). + * @param $o: (float) origin of angles (0 for 3 o'clock, 90 for noon, 180 for 9 o'clock, 270 for 6 o'clock). Default: 90. + * @author Maxime Delorme, Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function PieSector($xc, $yc, $r, $a, $b, $style='FD', $cw=true, $o=90) { + $this->PieSectorXY($xc, $yc, $r, $r, $a, $b, $style, $cw, $o); + } + + /** + * Draw the sector of an ellipse. + * It can be used for instance to render pie charts. + * @param $xc (float) abscissa of the center. + * @param $yc (float) ordinate of the center. + * @param $rx (float) the x-axis radius. + * @param $ry (float) the y-axis radius. + * @param $a (float) start angle (in degrees). + * @param $b (float) end angle (in degrees). + * @param $style (string) Style of rendering. See the getPathPaintOperator() function for more information. + * @param $cw: (float) indicates whether to go clockwise. + * @param $o: (float) origin of angles (0 for 3 o'clock, 90 for noon, 180 for 9 o'clock, 270 for 6 o'clock). + * @param $nc (integer) Number of curves used to draw a 90 degrees portion of arc. + * @author Maxime Delorme, Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function PieSectorXY($xc, $yc, $rx, $ry, $a, $b, $style='FD', $cw=false, $o=0, $nc=2) { + if ($this->state != 2) { + return; + } + if ($this->rtl) { + $xc = ($this->w - $xc); + } + $op = TCPDF_STATIC::getPathPaintOperator($style); + if ($op == 'f') { + $line_style = array(); + } + if ($cw) { + $d = $b; + $b = (360 - $a + $o); + $a = (360 - $d + $o); + } else { + $b += $o; + $a += $o; + } + $this->_outellipticalarc($xc, $yc, $rx, $ry, 0, $a, $b, true, $nc); + $this->_out($op); + } + + /** + * Embed vector-based Adobe Illustrator (AI) or AI-compatible EPS files. + * NOTE: EPS is not yet fully implemented, use the setRasterizeVectorImages() method to enable/disable rasterization of vector images using ImageMagick library. + * Only vector drawing is supported, not text or bitmap. + * Although the script was successfully tested with various AI format versions, best results are probably achieved with files that were exported in the AI3 format (tested with Illustrator CS2, Freehand MX and Photoshop CS2). + * @param $file (string) Name of the file containing the image or a '@' character followed by the EPS/AI data string. + * @param $x (float) Abscissa of the upper-left corner. + * @param $y (float) Ordinate of the upper-left corner. + * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $link (mixed) URL or identifier returned by AddLink(). + * @param $useBoundingBox (boolean) specifies whether to position the bounding box (true) or the complete canvas (false) at location (x,y). Default value is true. + * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:
      • T: top-right for LTR or top-left for RTL
      • M: middle-right for LTR or middle-left for RTL
      • B: bottom-right for LTR or bottom-left for RTL
      • N: next line
      + * @param $palign (string) Allows to center or align the image on the current line. Possible values are:
      • L : left align
      • C : center
      • R : right align
      • '' : empty string : left for LTR or right for RTL
      + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $fitonpage (boolean) if true the image is resized to not exceed page dimensions. + * @param $fixoutvals (boolean) if true remove values outside the bounding box. + * @author Valentin Schmidt, Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function ImageEps($file, $x='', $y='', $w=0, $h=0, $link='', $useBoundingBox=true, $align='', $palign='', $border=0, $fitonpage=false, $fixoutvals=false) { + if ($this->state != 2) { + return; + } + if ($this->rasterize_vector_images AND ($w > 0) AND ($h > 0)) { + // convert EPS to raster image using GD or ImageMagick libraries + return $this->Image($file, $x, $y, $w, $h, 'EPS', $link, $align, true, 300, $palign, false, false, $border, false, false, $fitonpage); + } + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + $k = $this->k; + if ($file[0] === '@') { // image from string + $data = substr($file, 1); + } else { // EPS/AI file + $data = TCPDF_STATIC::fileGetContents($file); + } + if ($data === FALSE) { + $this->Error('EPS file not found: '.$file); + } + $regs = array(); + // EPS/AI compatibility check (only checks files created by Adobe Illustrator!) + preg_match("/%%Creator:([^\r\n]+)/", $data, $regs); # find Creator + if (count($regs) > 1) { + $version_str = trim($regs[1]); # e.g. "Adobe Illustrator(R) 8.0" + if (strpos($version_str, 'Adobe Illustrator') !== false) { + $versexp = explode(' ', $version_str); + $version = (float)array_pop($versexp); + if ($version >= 9) { + $this->Error('This version of Adobe Illustrator file is not supported: '.$file); + } + } + } + // strip binary bytes in front of PS-header + $start = strpos($data, '%!PS-Adobe'); + if ($start > 0) { + $data = substr($data, $start); + } + // find BoundingBox params + preg_match("/%%BoundingBox:([^\r\n]+)/", $data, $regs); + if (count($regs) > 1) { + list($x1, $y1, $x2, $y2) = explode(' ', trim($regs[1])); + } else { + $this->Error('No BoundingBox found in EPS/AI file: '.$file); + } + $start = strpos($data, '%%EndSetup'); + if ($start === false) { + $start = strpos($data, '%%EndProlog'); + } + if ($start === false) { + $start = strpos($data, '%%BoundingBox'); + } + $data = substr($data, $start); + $end = strpos($data, '%%PageTrailer'); + if ($end===false) { + $end = strpos($data, 'showpage'); + } + if ($end) { + $data = substr($data, 0, $end); + } + // calculate image width and height on document + if (($w <= 0) AND ($h <= 0)) { + $w = ($x2 - $x1) / $k; + $h = ($y2 - $y1) / $k; + } elseif ($w <= 0) { + $w = ($x2-$x1) / $k * ($h / (($y2 - $y1) / $k)); + } elseif ($h <= 0) { + $h = ($y2 - $y1) / $k * ($w / (($x2 - $x1) / $k)); + } + // fit the image on available space + list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage); + if ($this->rasterize_vector_images) { + // convert EPS to raster image using GD or ImageMagick libraries + return $this->Image($file, $x, $y, $w, $h, 'EPS', $link, $align, true, 300, $palign, false, false, $border, false, false, $fitonpage); + } + // set scaling factors + $scale_x = $w / (($x2 - $x1) / $k); + $scale_y = $h / (($y2 - $y1) / $k); + // set alignment + $this->img_rb_y = $y + $h; + // set alignment + if ($this->rtl) { + if ($palign == 'L') { + $ximg = $this->lMargin; + } elseif ($palign == 'C') { + $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $ximg = $this->w - $this->rMargin - $w; + } else { + $ximg = $x - $w; + } + $this->img_rb_x = $ximg; + } else { + if ($palign == 'L') { + $ximg = $this->lMargin; + } elseif ($palign == 'C') { + $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $ximg = $this->w - $this->rMargin - $w; + } else { + $ximg = $x; + } + $this->img_rb_x = $ximg + $w; + } + if ($useBoundingBox) { + $dx = $ximg * $k - $x1; + $dy = $y * $k - $y1; + } else { + $dx = $ximg * $k; + $dy = $y * $k; + } + // save the current graphic state + $this->_out('q'.$this->epsmarker); + // translate + $this->_out(sprintf('%F %F %F %F %F %F cm', 1, 0, 0, 1, $dx, $dy + ($this->hPt - (2 * $y * $k) - ($y2 - $y1)))); + // scale + if (isset($scale_x)) { + $this->_out(sprintf('%F %F %F %F %F %F cm', $scale_x, 0, 0, $scale_y, $x1 * (1 - $scale_x), $y2 * (1 - $scale_y))); + } + // handle pc/unix/mac line endings + $lines = preg_split('/[\r\n]+/si', $data, -1, PREG_SPLIT_NO_EMPTY); + $u=0; + $cnt = count($lines); + for ($i=0; $i < $cnt; ++$i) { + $line = $lines[$i]; + if (($line == '') OR ($line[0] == '%')) { + continue; + } + $len = strlen($line); + // check for spot color names + $color_name = ''; + if (strcasecmp('x', substr(trim($line), -1)) == 0) { + if (preg_match('/\([^\)]*\)/', $line, $matches) > 0) { + // extract spot color name + $color_name = $matches[0]; + // remove color name from string + $line = str_replace(' '.$color_name, '', $line); + // remove pharentesis from color name + $color_name = substr($color_name, 1, -1); + } + } + $chunks = explode(' ', $line); + $cmd = trim(array_pop($chunks)); + // RGB + if (($cmd == 'Xa') OR ($cmd == 'XA')) { + $b = array_pop($chunks); + $g = array_pop($chunks); + $r = array_pop($chunks); + $this->_out(''.$r.' '.$g.' '.$b.' '.($cmd=='Xa'?'rg':'RG')); //substr($line, 0, -2).'rg' -> in EPS (AI8): c m y k r g b rg! + continue; + } + $skip = false; + if ($fixoutvals) { + // check for values outside the bounding box + switch ($cmd) { + case 'm': + case 'l': + case 'L': { + // skip values outside bounding box + foreach ($chunks as $key => $val) { + if ((($key % 2) == 0) AND (($val < $x1) OR ($val > $x2))) { + $skip = true; + } elseif ((($key % 2) != 0) AND (($val < $y1) OR ($val > $y2))) { + $skip = true; + } + } + } + } + } + switch ($cmd) { + case 'm': + case 'l': + case 'v': + case 'y': + case 'c': + case 'k': + case 'K': + case 'g': + case 'G': + case 's': + case 'S': + case 'J': + case 'j': + case 'w': + case 'M': + case 'd': + case 'n': { + if ($skip) { + break; + } + $this->_out($line); + break; + } + case 'x': {// custom fill color + if (empty($color_name)) { + // CMYK color + list($col_c, $col_m, $col_y, $col_k) = $chunks; + $this->_out(''.$col_c.' '.$col_m.' '.$col_y.' '.$col_k.' k'); + } else { + // Spot Color (CMYK + tint) + list($col_c, $col_m, $col_y, $col_k, $col_t) = $chunks; + $this->AddSpotColor($color_name, ($col_c * 100), ($col_m * 100), ($col_y * 100), ($col_k * 100)); + $color_cmd = sprintf('/CS%d cs %F scn', $this->spot_colors[$color_name]['i'], (1 - $col_t)); + $this->_out($color_cmd); + } + break; + } + case 'X': { // custom stroke color + if (empty($color_name)) { + // CMYK color + list($col_c, $col_m, $col_y, $col_k) = $chunks; + $this->_out(''.$col_c.' '.$col_m.' '.$col_y.' '.$col_k.' K'); + } else { + // Spot Color (CMYK + tint) + list($col_c, $col_m, $col_y, $col_k, $col_t) = $chunks; + $this->AddSpotColor($color_name, ($col_c * 100), ($col_m * 100), ($col_y * 100), ($col_k * 100)); + $color_cmd = sprintf('/CS%d CS %F SCN', $this->spot_colors[$color_name]['i'], (1 - $col_t)); + $this->_out($color_cmd); + } + break; + } + case 'Y': + case 'N': + case 'V': + case 'L': + case 'C': { + if ($skip) { + break; + } + $line[($len - 1)] = strtolower($cmd); + $this->_out($line); + break; + } + case 'b': + case 'B': { + $this->_out($cmd . '*'); + break; + } + case 'f': + case 'F': { + if ($u > 0) { + $isU = false; + $max = min(($i + 5), $cnt); + for ($j = ($i + 1); $j < $max; ++$j) { + $isU = ($isU OR (($lines[$j] == 'U') OR ($lines[$j] == '*U'))); + } + if ($isU) { + $this->_out('f*'); + } + } else { + $this->_out('f*'); + } + break; + } + case '*u': { + ++$u; + break; + } + case '*U': { + --$u; + break; + } + } + } + // restore previous graphic state + $this->_out($this->epsmarker.'Q'); + if (!empty($border)) { + $bx = $this->x; + $by = $this->y; + $this->x = $ximg; + if ($this->rtl) { + $this->x += $w; + } + $this->y = $y; + $this->Cell($w, $h, '', $border, 0, '', 0, '', 0, true); + $this->x = $bx; + $this->y = $by; + } + if ($link) { + $this->Link($ximg, $y, $w, $h, $link, 0); + } + // set pointer to align the next text/objects + switch($align) { + case 'T':{ + $this->y = $y; + $this->x = $this->img_rb_x; + break; + } + case 'M':{ + $this->y = $y + round($h/2); + $this->x = $this->img_rb_x; + break; + } + case 'B':{ + $this->y = $this->img_rb_y; + $this->x = $this->img_rb_x; + break; + } + case 'N':{ + $this->SetY($this->img_rb_y); + break; + } + default:{ + break; + } + } + $this->endlinex = $this->img_rb_x; + } + + /** + * Set document barcode. + * @param $bc (string) barcode + * @public + */ + public function setBarcode($bc='') { + $this->barcode = $bc; + } + + /** + * Get current barcode. + * @return string + * @public + * @since 4.0.012 (2008-07-24) + */ + public function getBarcode() { + return $this->barcode; + } + + /** + * Print a Linear Barcode. + * @param $code (string) code to print + * @param $type (string) type of barcode (see tcpdf_barcodes_1d.php for supported formats). + * @param $x (int) x position in user units (empty string = current x position) + * @param $y (int) y position in user units (empty string = current y position) + * @param $w (int) width in user units (empty string = remaining page width) + * @param $h (int) height in user units (empty string = remaining page height) + * @param $xres (float) width of the smallest bar in user units (empty string = default value = 0.4mm) + * @param $style (array) array of options:
        + *
      • boolean $style['border'] if true prints a border
      • + *
      • int $style['padding'] padding to leave around the barcode in user units (set to 'auto' for automatic padding)
      • + *
      • int $style['hpadding'] horizontal padding in user units (set to 'auto' for automatic padding)
      • + *
      • int $style['vpadding'] vertical padding in user units (set to 'auto' for automatic padding)
      • + *
      • array $style['fgcolor'] color array for bars and text
      • + *
      • mixed $style['bgcolor'] color array for background (set to false for transparent)
      • + *
      • boolean $style['text'] if true prints text below the barcode
      • + *
      • string $style['label'] override default label
      • + *
      • string $style['font'] font name for text
      • int $style['fontsize'] font size for text
      • + *
      • int $style['stretchtext']: 0 = disabled; 1 = horizontal scaling only if necessary; 2 = forced horizontal scaling; 3 = character spacing only if necessary; 4 = forced character spacing.
      • + *
      • string $style['position'] horizontal position of the containing barcode cell on the page: L = left margin; C = center; R = right margin.
      • + *
      • string $style['align'] horizontal position of the barcode on the containing rectangle: L = left; C = center; R = right.
      • + *
      • string $style['stretch'] if true stretch the barcode to best fit the available width, otherwise uses $xres resolution for a single bar.
      • + *
      • string $style['fitwidth'] if true reduce the width to fit the barcode width + padding. When this option is enabled the 'stretch' option is automatically disabled.
      • + *
      • string $style['cellfitalign'] this option works only when 'fitwidth' is true and 'position' is unset or empty. Set the horizontal position of the containing barcode cell inside the specified rectangle: L = left; C = center; R = right.
      + * @param $align (string) Indicates the alignment of the pointer next to barcode insertion relative to barcode height. The value can be:
      • T: top-right for LTR or top-left for RTL
      • M: middle-right for LTR or middle-left for RTL
      • B: bottom-right for LTR or bottom-left for RTL
      • N: next line
      + * @author Nicola Asuni + * @since 3.1.000 (2008-06-09) + * @public + */ + public function write1DBarcode($code, $type, $x='', $y='', $w='', $h='', $xres='', $style='', $align='') { + if (TCPDF_STATIC::empty_string(trim($code))) { + return; + } + require_once(dirname(__FILE__).'/tcpdf_barcodes_1d.php'); + // save current graphic settings + $gvars = $this->getGraphicVars(); + // create new barcode object + $barcodeobj = new TCPDFBarcode($code, $type); + $arrcode = $barcodeobj->getBarcodeArray(); + if (($arrcode === false) OR empty($arrcode) OR ($arrcode['maxw'] <= 0)) { + $this->Error('Error in 1D barcode string'); + } + if ($arrcode['maxh'] <= 0) { + $arrcode['maxh'] = 1; + } + // set default values + if (!isset($style['position'])) { + $style['position'] = ''; + } elseif ($style['position'] == 'S') { + // keep this for backward compatibility + $style['position'] = ''; + $style['stretch'] = true; + } + if (!isset($style['fitwidth'])) { + if (!isset($style['stretch'])) { + $style['fitwidth'] = true; + } else { + $style['fitwidth'] = false; + } + } + if ($style['fitwidth']) { + // disable stretch + $style['stretch'] = false; + } + if (!isset($style['stretch'])) { + if (($w === '') OR ($w <= 0)) { + $style['stretch'] = false; + } else { + $style['stretch'] = true; + } + } + if (!isset($style['fgcolor'])) { + $style['fgcolor'] = array(0,0,0); // default black + } + if (!isset($style['bgcolor'])) { + $style['bgcolor'] = false; // default transparent + } + if (!isset($style['border'])) { + $style['border'] = false; + } + $fontsize = 0; + if (!isset($style['text'])) { + $style['text'] = false; + } + if ($style['text'] AND isset($style['font'])) { + if (isset($style['fontsize'])) { + $fontsize = $style['fontsize']; + } + $this->SetFont($style['font'], '', $fontsize); + } + if (!isset($style['stretchtext'])) { + $style['stretchtext'] = 4; + } + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + if (($w === '') OR ($w <= 0)) { + if ($this->rtl) { + $w = $x - $this->lMargin; + } else { + $w = $this->w - $this->rMargin - $x; + } + } + // padding + if (!isset($style['padding'])) { + $padding = 0; + } elseif ($style['padding'] === 'auto') { + $padding = 10 * ($w / ($arrcode['maxw'] + 20)); + } else { + $padding = floatval($style['padding']); + } + // horizontal padding + if (!isset($style['hpadding'])) { + $hpadding = $padding; + } elseif ($style['hpadding'] === 'auto') { + $hpadding = 10 * ($w / ($arrcode['maxw'] + 20)); + } else { + $hpadding = floatval($style['hpadding']); + } + // vertical padding + if (!isset($style['vpadding'])) { + $vpadding = $padding; + } elseif ($style['vpadding'] === 'auto') { + $vpadding = ($hpadding / 2); + } else { + $vpadding = floatval($style['vpadding']); + } + // calculate xres (single bar width) + $max_xres = ($w - (2 * $hpadding)) / $arrcode['maxw']; + if ($style['stretch']) { + $xres = $max_xres; + } else { + if (TCPDF_STATIC::empty_string($xres)) { + $xres = (0.141 * $this->k); // default bar width = 0.4 mm + } + if ($xres > $max_xres) { + // correct xres to fit on $w + $xres = $max_xres; + } + if ((isset($style['padding']) AND ($style['padding'] === 'auto')) + OR (isset($style['hpadding']) AND ($style['hpadding'] === 'auto'))) { + $hpadding = 10 * $xres; + if (isset($style['vpadding']) AND ($style['vpadding'] === 'auto')) { + $vpadding = ($hpadding / 2); + } + } + } + if ($style['fitwidth']) { + $wold = $w; + $w = (($arrcode['maxw'] * $xres) + (2 * $hpadding)); + if (isset($style['cellfitalign'])) { + switch ($style['cellfitalign']) { + case 'L': { + if ($this->rtl) { + $x -= ($wold - $w); + } + break; + } + case 'R': { + if (!$this->rtl) { + $x += ($wold - $w); + } + break; + } + case 'C': { + if ($this->rtl) { + $x -= (($wold - $w) / 2); + } else { + $x += (($wold - $w) / 2); + } + break; + } + default : { + break; + } + } + } + } + $text_height = $this->getCellHeight($fontsize / $this->k); + // height + if (($h === '') OR ($h <= 0)) { + // set default height + $h = (($arrcode['maxw'] * $xres) / 3) + (2 * $vpadding) + $text_height; + } + $barh = $h - $text_height - (2 * $vpadding); + if ($barh <=0) { + // try to reduce font or padding to fit barcode on available height + if ($text_height > $h) { + $fontsize = (($h * $this->k) / (4 * $this->cell_height_ratio)); + $text_height = $this->getCellHeight($fontsize / $this->k); + $this->SetFont($style['font'], '', $fontsize); + } + if ($vpadding > 0) { + $vpadding = (($h - $text_height) / 4); + } + $barh = $h - $text_height - (2 * $vpadding); + } + // fit the barcode on available space + list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, false); + // set alignment + $this->img_rb_y = $y + $h; + // set alignment + if ($this->rtl) { + if ($style['position'] == 'L') { + $xpos = $this->lMargin; + } elseif ($style['position'] == 'C') { + $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($style['position'] == 'R') { + $xpos = $this->w - $this->rMargin - $w; + } else { + $xpos = $x - $w; + } + $this->img_rb_x = $xpos; + } else { + if ($style['position'] == 'L') { + $xpos = $this->lMargin; + } elseif ($style['position'] == 'C') { + $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($style['position'] == 'R') { + $xpos = $this->w - $this->rMargin - $w; + } else { + $xpos = $x; + } + $this->img_rb_x = $xpos + $w; + } + $xpos_rect = $xpos; + if (!isset($style['align'])) { + $style['align'] = 'C'; + } + switch ($style['align']) { + case 'L': { + $xpos = $xpos_rect + $hpadding; + break; + } + case 'R': { + $xpos = $xpos_rect + ($w - ($arrcode['maxw'] * $xres)) - $hpadding; + break; + } + case 'C': + default : { + $xpos = $xpos_rect + (($w - ($arrcode['maxw'] * $xres)) / 2); + break; + } + } + $xpos_text = $xpos; + // barcode is always printed in LTR direction + $tempRTL = $this->rtl; + $this->rtl = false; + // print background color + if ($style['bgcolor']) { + $this->Rect($xpos_rect, $y, $w, $h, $style['border'] ? 'DF' : 'F', '', $style['bgcolor']); + } elseif ($style['border']) { + $this->Rect($xpos_rect, $y, $w, $h, 'D'); + } + // set foreground color + $this->SetDrawColorArray($style['fgcolor']); + $this->SetTextColorArray($style['fgcolor']); + // print bars + foreach ($arrcode['bcode'] as $k => $v) { + $bw = ($v['w'] * $xres); + if ($v['t']) { + // draw a vertical bar + $ypos = $y + $vpadding + ($v['p'] * $barh / $arrcode['maxh']); + $this->Rect($xpos, $ypos, $bw, ($v['h'] * $barh / $arrcode['maxh']), 'F', array(), $style['fgcolor']); + } + $xpos += $bw; + } + // print text + if ($style['text']) { + if (isset($style['label']) AND !TCPDF_STATIC::empty_string($style['label'])) { + $label = $style['label']; + } else { + $label = $code; + } + $txtwidth = ($arrcode['maxw'] * $xres); + if ($this->GetStringWidth($label) > $txtwidth) { + $style['stretchtext'] = 2; + } + // print text + $this->x = $xpos_text; + $this->y = $y + $vpadding + $barh; + $cellpadding = $this->cell_padding; + $this->SetCellPadding(0); + $this->Cell($txtwidth, '', $label, 0, 0, 'C', false, '', $style['stretchtext'], false, 'T', 'T'); + $this->cell_padding = $cellpadding; + } + // restore original direction + $this->rtl = $tempRTL; + // restore previous settings + $this->setGraphicVars($gvars); + // set pointer to align the next text/objects + switch($align) { + case 'T':{ + $this->y = $y; + $this->x = $this->img_rb_x; + break; + } + case 'M':{ + $this->y = $y + round($h / 2); + $this->x = $this->img_rb_x; + break; + } + case 'B':{ + $this->y = $this->img_rb_y; + $this->x = $this->img_rb_x; + break; + } + case 'N':{ + $this->SetY($this->img_rb_y); + break; + } + default:{ + break; + } + } + $this->endlinex = $this->img_rb_x; + } + + /** + * Print 2D Barcode. + * @param $code (string) code to print + * @param $type (string) type of barcode (see tcpdf_barcodes_2d.php for supported formats). + * @param $x (int) x position in user units + * @param $y (int) y position in user units + * @param $w (int) width in user units + * @param $h (int) height in user units + * @param $style (array) array of options:
        + *
      • boolean $style['border'] if true prints a border around the barcode
      • + *
      • int $style['padding'] padding to leave around the barcode in barcode units (set to 'auto' for automatic padding)
      • + *
      • int $style['hpadding'] horizontal padding in barcode units (set to 'auto' for automatic padding)
      • + *
      • int $style['vpadding'] vertical padding in barcode units (set to 'auto' for automatic padding)
      • + *
      • int $style['module_width'] width of a single module in points
      • + *
      • int $style['module_height'] height of a single module in points
      • + *
      • array $style['fgcolor'] color array for bars and text
      • + *
      • mixed $style['bgcolor'] color array for background or false for transparent
      • + *
      • string $style['position'] barcode position on the page: L = left margin; C = center; R = right margin; S = stretch
      • $style['module_width'] width of a single module in points
      • + *
      • $style['module_height'] height of a single module in points
      + * @param $align (string) Indicates the alignment of the pointer next to barcode insertion relative to barcode height. The value can be:
      • T: top-right for LTR or top-left for RTL
      • M: middle-right for LTR or middle-left for RTL
      • B: bottom-right for LTR or bottom-left for RTL
      • N: next line
      + * @param $distort (boolean) if true distort the barcode to fit width and height, otherwise preserve aspect ratio + * @author Nicola Asuni + * @since 4.5.037 (2009-04-07) + * @public + */ + public function write2DBarcode($code, $type, $x='', $y='', $w='', $h='', $style='', $align='', $distort=false) { + if (TCPDF_STATIC::empty_string(trim($code))) { + return; + } + require_once(dirname(__FILE__).'/tcpdf_barcodes_2d.php'); + // save current graphic settings + $gvars = $this->getGraphicVars(); + // create new barcode object + $barcodeobj = new TCPDF2DBarcode($code, $type); + $arrcode = $barcodeobj->getBarcodeArray(); + if (($arrcode === false) OR empty($arrcode) OR !isset($arrcode['num_rows']) OR ($arrcode['num_rows'] == 0) OR !isset($arrcode['num_cols']) OR ($arrcode['num_cols'] == 0)) { + $this->Error('Error in 2D barcode string'); + } + // set default values + if (!isset($style['position'])) { + $style['position'] = ''; + } + if (!isset($style['fgcolor'])) { + $style['fgcolor'] = array(0,0,0); // default black + } + if (!isset($style['bgcolor'])) { + $style['bgcolor'] = false; // default transparent + } + if (!isset($style['border'])) { + $style['border'] = false; + } + // padding + if (!isset($style['padding'])) { + $style['padding'] = 0; + } elseif ($style['padding'] === 'auto') { + $style['padding'] = 4; + } + if (!isset($style['hpadding'])) { + $style['hpadding'] = $style['padding']; + } elseif ($style['hpadding'] === 'auto') { + $style['hpadding'] = 4; + } + if (!isset($style['vpadding'])) { + $style['vpadding'] = $style['padding']; + } elseif ($style['vpadding'] === 'auto') { + $style['vpadding'] = 4; + } + $hpad = (2 * $style['hpadding']); + $vpad = (2 * $style['vpadding']); + // cell (module) dimension + if (!isset($style['module_width'])) { + $style['module_width'] = 1; // width of a single module in points + } + if (!isset($style['module_height'])) { + $style['module_height'] = 1; // height of a single module in points + } + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + // number of barcode columns and rows + $rows = $arrcode['num_rows']; + $cols = $arrcode['num_cols']; + if (($rows <= 0) || ($cols <= 0)){ + $this->Error('Error in 2D barcode string'); + } + // module width and height + $mw = $style['module_width']; + $mh = $style['module_height']; + if (($mw <= 0) OR ($mh <= 0)) { + $this->Error('Error in 2D barcode string'); + } + // get max dimensions + if ($this->rtl) { + $maxw = $x - $this->lMargin; + } else { + $maxw = $this->w - $this->rMargin - $x; + } + $maxh = ($this->h - $this->tMargin - $this->bMargin); + $ratioHW = ((($rows * $mh) + $hpad) / (($cols * $mw) + $vpad)); + $ratioWH = ((($cols * $mw) + $vpad) / (($rows * $mh) + $hpad)); + if (!$distort) { + if (($maxw * $ratioHW) > $maxh) { + $maxw = $maxh * $ratioWH; + } + if (($maxh * $ratioWH) > $maxw) { + $maxh = $maxw * $ratioHW; + } + } + // set maximum dimesions + if ($w > $maxw) { + $w = $maxw; + } + if ($h > $maxh) { + $h = $maxh; + } + // set dimensions + if ((($w === '') OR ($w <= 0)) AND (($h === '') OR ($h <= 0))) { + $w = ($cols + $hpad) * ($mw / $this->k); + $h = ($rows + $vpad) * ($mh / $this->k); + } elseif (($w === '') OR ($w <= 0)) { + $w = $h * $ratioWH; + } elseif (($h === '') OR ($h <= 0)) { + $h = $w * $ratioHW; + } + // barcode size (excluding padding) + $bw = ($w * $cols) / ($cols + $hpad); + $bh = ($h * $rows) / ($rows + $vpad); + // dimension of single barcode cell unit + $cw = $bw / $cols; + $ch = $bh / $rows; + if (!$distort) { + if (($cw / $ch) > ($mw / $mh)) { + // correct horizontal distortion + $cw = $ch * $mw / $mh; + $bw = $cw * $cols; + $style['hpadding'] = ($w - $bw) / (2 * $cw); + } else { + // correct vertical distortion + $ch = $cw * $mh / $mw; + $bh = $ch * $rows; + $style['vpadding'] = ($h - $bh) / (2 * $ch); + } + } + // fit the barcode on available space + list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, false); + // set alignment + $this->img_rb_y = $y + $h; + // set alignment + if ($this->rtl) { + if ($style['position'] == 'L') { + $xpos = $this->lMargin; + } elseif ($style['position'] == 'C') { + $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($style['position'] == 'R') { + $xpos = $this->w - $this->rMargin - $w; + } else { + $xpos = $x - $w; + } + $this->img_rb_x = $xpos; + } else { + if ($style['position'] == 'L') { + $xpos = $this->lMargin; + } elseif ($style['position'] == 'C') { + $xpos = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($style['position'] == 'R') { + $xpos = $this->w - $this->rMargin - $w; + } else { + $xpos = $x; + } + $this->img_rb_x = $xpos + $w; + } + $xstart = $xpos + ($style['hpadding'] * $cw); + $ystart = $y + ($style['vpadding'] * $ch); + // barcode is always printed in LTR direction + $tempRTL = $this->rtl; + $this->rtl = false; + // print background color + if ($style['bgcolor']) { + $this->Rect($xpos, $y, $w, $h, $style['border'] ? 'DF' : 'F', '', $style['bgcolor']); + } elseif ($style['border']) { + $this->Rect($xpos, $y, $w, $h, 'D'); + } + // set foreground color + $this->SetDrawColorArray($style['fgcolor']); + // print barcode cells + // for each row + for ($r = 0; $r < $rows; ++$r) { + $xr = $xstart; + // for each column + for ($c = 0; $c < $cols; ++$c) { + if ($arrcode['bcode'][$r][$c] == 1) { + // draw a single barcode cell + $this->Rect($xr, $ystart, $cw, $ch, 'F', array(), $style['fgcolor']); + } + $xr += $cw; + } + $ystart += $ch; + } + // restore original direction + $this->rtl = $tempRTL; + // restore previous settings + $this->setGraphicVars($gvars); + // set pointer to align the next text/objects + switch($align) { + case 'T':{ + $this->y = $y; + $this->x = $this->img_rb_x; + break; + } + case 'M':{ + $this->y = $y + round($h/2); + $this->x = $this->img_rb_x; + break; + } + case 'B':{ + $this->y = $this->img_rb_y; + $this->x = $this->img_rb_x; + break; + } + case 'N':{ + $this->SetY($this->img_rb_y); + break; + } + default:{ + break; + } + } + $this->endlinex = $this->img_rb_x; + } + + /** + * Returns an array containing current margins: + *
        +
      • $ret['left'] = left margin
      • +
      • $ret['right'] = right margin
      • +
      • $ret['top'] = top margin
      • +
      • $ret['bottom'] = bottom margin
      • +
      • $ret['header'] = header margin
      • +
      • $ret['footer'] = footer margin
      • +
      • $ret['cell'] = cell padding array
      • +
      • $ret['padding_left'] = cell left padding
      • +
      • $ret['padding_top'] = cell top padding
      • +
      • $ret['padding_right'] = cell right padding
      • +
      • $ret['padding_bottom'] = cell bottom padding
      • + *
      + * @return array containing all margins measures + * @public + * @since 3.2.000 (2008-06-23) + */ + public function getMargins() { + $ret = array( + 'left' => $this->lMargin, + 'right' => $this->rMargin, + 'top' => $this->tMargin, + 'bottom' => $this->bMargin, + 'header' => $this->header_margin, + 'footer' => $this->footer_margin, + 'cell' => $this->cell_padding, + 'padding_left' => $this->cell_padding['L'], + 'padding_top' => $this->cell_padding['T'], + 'padding_right' => $this->cell_padding['R'], + 'padding_bottom' => $this->cell_padding['B'] + ); + return $ret; + } + + /** + * Returns an array containing original margins: + *
        +
      • $ret['left'] = left margin
      • +
      • $ret['right'] = right margin
      • + *
      + * @return array containing all margins measures + * @public + * @since 4.0.012 (2008-07-24) + */ + public function getOriginalMargins() { + $ret = array( + 'left' => $this->original_lMargin, + 'right' => $this->original_rMargin + ); + return $ret; + } + + /** + * Returns the current font size. + * @return current font size + * @public + * @since 3.2.000 (2008-06-23) + */ + public function getFontSize() { + return $this->FontSize; + } + + /** + * Returns the current font size in points unit. + * @return current font size in points unit + * @public + * @since 3.2.000 (2008-06-23) + */ + public function getFontSizePt() { + return $this->FontSizePt; + } + + /** + * Returns the current font family name. + * @return string current font family name + * @public + * @since 4.3.008 (2008-12-05) + */ + public function getFontFamily() { + return $this->FontFamily; + } + + /** + * Returns the current font style. + * @return string current font style + * @public + * @since 4.3.008 (2008-12-05) + */ + public function getFontStyle() { + return $this->FontStyle; + } + + /** + * Cleanup HTML code (requires HTML Tidy library). + * @param $html (string) htmlcode to fix + * @param $default_css (string) CSS commands to add + * @param $tagvs (array) parameters for setHtmlVSpace method + * @param $tidy_options (array) options for tidy_parse_string function + * @return string XHTML code cleaned up + * @author Nicola Asuni + * @public + * @since 5.9.017 (2010-11-16) + * @see setHtmlVSpace() + */ + public function fixHTMLCode($html, $default_css='', $tagvs='', $tidy_options='') { + return TCPDF_STATIC::fixHTMLCode($html, $default_css, $tagvs, $tidy_options, $this->tagvspaces); + } + + /** + * Returns the border width from CSS property + * @param $width (string) border width + * @return int with in user units + * @protected + * @since 5.7.000 (2010-08-02) + */ + protected function getCSSBorderWidth($width) { + if ($width == 'thin') { + $width = (2 / $this->k); + } elseif ($width == 'medium') { + $width = (4 / $this->k); + } elseif ($width == 'thick') { + $width = (6 / $this->k); + } else { + $width = $this->getHTMLUnitToUnits($width, 1, 'px', false); + } + return $width; + } + + /** + * Returns the border dash style from CSS property + * @param $style (string) border style to convert + * @return int sash style (return -1 in case of none or hidden border) + * @protected + * @since 5.7.000 (2010-08-02) + */ + protected function getCSSBorderDashStyle($style) { + switch (strtolower($style)) { + case 'none': + case 'hidden': { + $dash = -1; + break; + } + case 'dotted': { + $dash = 1; + break; + } + case 'dashed': { + $dash = 3; + break; + } + case 'double': + case 'groove': + case 'ridge': + case 'inset': + case 'outset': + case 'solid': + default: { + $dash = 0; + break; + } + } + return $dash; + } + + /** + * Returns the border style array from CSS border properties + * @param $cssborder (string) border properties + * @return array containing border properties + * @protected + * @since 5.7.000 (2010-08-02) + */ + protected function getCSSBorderStyle($cssborder) { + $bprop = preg_split('/[\s]+/', trim($cssborder)); + $border = array(); // value to be returned + switch (count($bprop)) { + case 3: { + $width = $bprop[0]; + $style = $bprop[1]; + $color = $bprop[2]; + break; + } + case 2: { + $width = 'medium'; + $style = $bprop[0]; + $color = $bprop[1]; + break; + } + case 1: { + $width = 'medium'; + $style = $bprop[0]; + $color = 'black'; + break; + } + default: { + $width = 'medium'; + $style = 'solid'; + $color = 'black'; + break; + } + } + if ($style == 'none') { + return array(); + } + $border['cap'] = 'square'; + $border['join'] = 'miter'; + $border['dash'] = $this->getCSSBorderDashStyle($style); + if ($border['dash'] < 0) { + return array(); + } + $border['width'] = $this->getCSSBorderWidth($width); + $border['color'] = TCPDF_COLORS::convertHTMLColorToDec($color, $this->spot_colors); + return $border; + } + + /** + * Get the internal Cell padding from CSS attribute. + * @param $csspadding (string) padding properties + * @param $width (float) width of the containing element + * @return array of cell paddings + * @public + * @since 5.9.000 (2010-10-04) + */ + public function getCSSPadding($csspadding, $width=0) { + $padding = preg_split('/[\s]+/', trim($csspadding)); + $cell_padding = array(); // value to be returned + switch (count($padding)) { + case 4: { + $cell_padding['T'] = $padding[0]; + $cell_padding['R'] = $padding[1]; + $cell_padding['B'] = $padding[2]; + $cell_padding['L'] = $padding[3]; + break; + } + case 3: { + $cell_padding['T'] = $padding[0]; + $cell_padding['R'] = $padding[1]; + $cell_padding['B'] = $padding[2]; + $cell_padding['L'] = $padding[1]; + break; + } + case 2: { + $cell_padding['T'] = $padding[0]; + $cell_padding['R'] = $padding[1]; + $cell_padding['B'] = $padding[0]; + $cell_padding['L'] = $padding[1]; + break; + } + case 1: { + $cell_padding['T'] = $padding[0]; + $cell_padding['R'] = $padding[0]; + $cell_padding['B'] = $padding[0]; + $cell_padding['L'] = $padding[0]; + break; + } + default: { + return $this->cell_padding; + } + } + if ($width == 0) { + $width = $this->w - $this->lMargin - $this->rMargin; + } + $cell_padding['T'] = $this->getHTMLUnitToUnits($cell_padding['T'], $width, 'px', false); + $cell_padding['R'] = $this->getHTMLUnitToUnits($cell_padding['R'], $width, 'px', false); + $cell_padding['B'] = $this->getHTMLUnitToUnits($cell_padding['B'], $width, 'px', false); + $cell_padding['L'] = $this->getHTMLUnitToUnits($cell_padding['L'], $width, 'px', false); + return $cell_padding; + } + + /** + * Get the internal Cell margin from CSS attribute. + * @param $cssmargin (string) margin properties + * @param $width (float) width of the containing element + * @return array of cell margins + * @public + * @since 5.9.000 (2010-10-04) + */ + public function getCSSMargin($cssmargin, $width=0) { + $margin = preg_split('/[\s]+/', trim($cssmargin)); + $cell_margin = array(); // value to be returned + switch (count($margin)) { + case 4: { + $cell_margin['T'] = $margin[0]; + $cell_margin['R'] = $margin[1]; + $cell_margin['B'] = $margin[2]; + $cell_margin['L'] = $margin[3]; + break; + } + case 3: { + $cell_margin['T'] = $margin[0]; + $cell_margin['R'] = $margin[1]; + $cell_margin['B'] = $margin[2]; + $cell_margin['L'] = $margin[1]; + break; + } + case 2: { + $cell_margin['T'] = $margin[0]; + $cell_margin['R'] = $margin[1]; + $cell_margin['B'] = $margin[0]; + $cell_margin['L'] = $margin[1]; + break; + } + case 1: { + $cell_margin['T'] = $margin[0]; + $cell_margin['R'] = $margin[0]; + $cell_margin['B'] = $margin[0]; + $cell_margin['L'] = $margin[0]; + break; + } + default: { + return $this->cell_margin; + } + } + if ($width == 0) { + $width = $this->w - $this->lMargin - $this->rMargin; + } + $cell_margin['T'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['T']), $width, 'px', false); + $cell_margin['R'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['R']), $width, 'px', false); + $cell_margin['B'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['B']), $width, 'px', false); + $cell_margin['L'] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $cell_margin['L']), $width, 'px', false); + return $cell_margin; + } + + /** + * Get the border-spacing from CSS attribute. + * @param $cssbspace (string) border-spacing CSS properties + * @param $width (float) width of the containing element + * @return array of border spacings + * @public + * @since 5.9.010 (2010-10-27) + */ + public function getCSSBorderMargin($cssbspace, $width=0) { + $space = preg_split('/[\s]+/', trim($cssbspace)); + $border_spacing = array(); // value to be returned + switch (count($space)) { + case 2: { + $border_spacing['H'] = $space[0]; + $border_spacing['V'] = $space[1]; + break; + } + case 1: { + $border_spacing['H'] = $space[0]; + $border_spacing['V'] = $space[0]; + break; + } + default: { + return array('H' => 0, 'V' => 0); + } + } + if ($width == 0) { + $width = $this->w - $this->lMargin - $this->rMargin; + } + $border_spacing['H'] = $this->getHTMLUnitToUnits($border_spacing['H'], $width, 'px', false); + $border_spacing['V'] = $this->getHTMLUnitToUnits($border_spacing['V'], $width, 'px', false); + return $border_spacing; + } + + /** + * Returns the letter-spacing value from CSS value + * @param $spacing (string) letter-spacing value + * @param $parent (float) font spacing (tracking) value of the parent element + * @return float quantity to increases or decreases the space between characters in a text. + * @protected + * @since 5.9.000 (2010-10-02) + */ + protected function getCSSFontSpacing($spacing, $parent=0) { + $val = 0; // value to be returned + $spacing = trim($spacing); + switch ($spacing) { + case 'normal': { + $val = 0; + break; + } + case 'inherit': { + if ($parent == 'normal') { + $val = 0; + } else { + $val = $parent; + } + break; + } + default: { + $val = $this->getHTMLUnitToUnits($spacing, 0, 'px', false); + } + } + return $val; + } + + /** + * Returns the percentage of font stretching from CSS value + * @param $stretch (string) stretch mode + * @param $parent (float) stretch value of the parent element + * @return float font stretching percentage + * @protected + * @since 5.9.000 (2010-10-02) + */ + protected function getCSSFontStretching($stretch, $parent=100) { + $val = 100; // value to be returned + $stretch = trim($stretch); + switch ($stretch) { + case 'ultra-condensed': { + $val = 40; + break; + } + case 'extra-condensed': { + $val = 55; + break; + } + case 'condensed': { + $val = 70; + break; + } + case 'semi-condensed': { + $val = 85; + break; + } + case 'normal': { + $val = 100; + break; + } + case 'semi-expanded': { + $val = 115; + break; + } + case 'expanded': { + $val = 130; + break; + } + case 'extra-expanded': { + $val = 145; + break; + } + case 'ultra-expanded': { + $val = 160; + break; + } + case 'wider': { + $val = ($parent + 10); + break; + } + case 'narrower': { + $val = ($parent - 10); + break; + } + case 'inherit': { + if ($parent == 'normal') { + $val = 100; + } else { + $val = $parent; + } + break; + } + default: { + $val = $this->getHTMLUnitToUnits($stretch, 100, '%', false); + } + } + return $val; + } + + /** + * Convert HTML string containing font size value to points + * @param $val (string) String containing font size value and unit. + * @param $refsize (float) Reference font size in points. + * @param $parent_size (float) Parent font size in points. + * @param $defaultunit (string) Default unit (can be one of the following: %, em, ex, px, in, mm, pc, pt). + * @return float value in points + * @public + */ + public function getHTMLFontUnits($val, $refsize=12, $parent_size=12, $defaultunit='pt') { + $refsize = TCPDF_FONTS::getFontRefSize($refsize); + $parent_size = TCPDF_FONTS::getFontRefSize($parent_size, $refsize); + switch ($val) { + case 'xx-small': { + $size = ($refsize - 4); + break; + } + case 'x-small': { + $size = ($refsize - 3); + break; + } + case 'small': { + $size = ($refsize - 2); + break; + } + case 'medium': { + $size = $refsize; + break; + } + case 'large': { + $size = ($refsize + 2); + break; + } + case 'x-large': { + $size = ($refsize + 4); + break; + } + case 'xx-large': { + $size = ($refsize + 6); + break; + } + case 'smaller': { + $size = ($parent_size - 3); + break; + } + case 'larger': { + $size = ($parent_size + 3); + break; + } + default: { + $size = $this->getHTMLUnitToUnits($val, $parent_size, $defaultunit, true); + } + } + return $size; + } + + /** + * Returns the HTML DOM array. + * @param $html (string) html code + * @return array + * @protected + * @since 3.2.000 (2008-06-20) + */ + protected function getHtmlDomArray($html) { + // array of CSS styles ( selector => properties). + $css = array(); + // get CSS array defined at previous call + $matches = array(); + if (preg_match_all('/([^\<]*)<\/cssarray>/isU', $html, $matches) > 0) { + if (isset($matches[1][0])) { + $css = array_merge($css, json_decode($this->unhtmlentities($matches[1][0]), true)); + } + $html = preg_replace('/(.*?)<\/cssarray>/isU', '', $html); + } + // extract external CSS files + $matches = array(); + if (preg_match_all('/]*)>/isU', $html, $matches) > 0) { + foreach ($matches[1] as $key => $link) { + $type = array(); + if (preg_match('/type[\s]*=[\s]*"text\/css"/', $link, $type)) { + $type = array(); + preg_match('/media[\s]*=[\s]*"([^"]*)"/', $link, $type); + // get 'all' and 'print' media, other media types are discarded + // (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv) + if (empty($type) OR (isset($type[1]) AND (($type[1] == 'all') OR ($type[1] == 'print')))) { + $type = array(); + if (preg_match('/href[\s]*=[\s]*"([^"]*)"/', $link, $type) > 0) { + // read CSS data file + $cssdata = TCPDF_STATIC::fileGetContents(trim($type[1])); + if (($cssdata !== FALSE) AND (strlen($cssdata) > 0)) { + $css = array_merge($css, TCPDF_STATIC::extractCSSproperties($cssdata)); + } + } + } + } + } + } + // extract style tags + $matches = array(); + if (preg_match_all('/]*)>([^\<]*)<\/style>/isU', $html, $matches) > 0) { + foreach ($matches[1] as $key => $media) { + $type = array(); + preg_match('/media[\s]*=[\s]*"([^"]*)"/', $media, $type); + // get 'all' and 'print' media, other media types are discarded + // (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv) + if (empty($type) OR (isset($type[1]) AND (($type[1] == 'all') OR ($type[1] == 'print')))) { + $cssdata = $matches[2][$key]; + $css = array_merge($css, TCPDF_STATIC::extractCSSproperties($cssdata)); + } + } + } + // create a special tag to contain the CSS array (used for table content) + $csstagarray = ''.htmlentities(json_encode($css)).''; + // remove head and style blocks + $html = preg_replace('/]*)>(.*?)<\/head>/siU', '', $html); + $html = preg_replace('/]*)>([^\<]*)<\/style>/isU', '', $html); + // define block tags + $blocktags = array('blockquote','br','dd','dl','div','dt','h1','h2','h3','h4','h5','h6','hr','li','ol','p','pre','ul','tcpdf','table','tr','td'); + // define self-closing tags + $selfclosingtags = array('area','base','basefont','br','hr','input','img','link','meta'); + // remove all unsupported tags (the line below lists all supported tags) + $html = strip_tags($html, '




    36. ', $offset)) !== false) { + $html_a = substr($html, 0, $offset); + $html_b = substr($html, $offset, ($pos - $offset + 11)); + while (preg_match("']*)>(.*?)\n(.*?)'si", $html_b)) { + // preserve newlines on 'si", "\\2\\3", $html_b); + $html_b = preg_replace("']*)>(.*?)[\"](.*?)'si", "\\2''\\3", $html_b); + } + $html = $html_a.$html_b.substr($html, $pos + 11); + $offset = strlen($html_a.$html_b); + } + $html = preg_replace('/([\s]*)', $html); + $offset = 0; + while (($offset < strlen($html)) AND ($pos = strpos($html, '', $offset)) !== false) { + $html_a = substr($html, 0, $offset); + $html_b = substr($html, $offset, ($pos - $offset + 9)); + while (preg_match("']*)>(.*?)'si", $html_b)) { + $html_b = preg_replace("']*)>(.*?)'si", "\\2#!TaB!#\\4#!NwL!#", $html_b); + $html_b = preg_replace("']*)>(.*?)'si", "\\2#!NwL!#", $html_b); + } + $html = $html_a.$html_b.substr($html, $pos + 9); + $offset = strlen($html_a.$html_b); + } + if (preg_match("']*)>'si", "'si", "\" />", $html); + } + $html = str_replace("\n", ' ', $html); + // restore textarea newlines + $html = str_replace('', "\n", $html); + // remove extra spaces from code + $html = preg_replace('/[\s]+<\/(table|tr|ul|ol|dl)>/', '', $html); + $html = preg_replace('/'.$this->re_space['p'].'+<\/(td|th|li|dt|dd)>/'.$this->re_space['m'], '', $html); + $html = preg_replace('/[\s]+<(tr|td|th|li|dt|dd)/', '<\\1', $html); + $html = preg_replace('/'.$this->re_space['p'].'+<(ul|ol|dl|br)/'.$this->re_space['m'], '<\\1', $html); + $html = preg_replace('/<\/(table|tr|td|th|blockquote|dd|dt|dl|div|dt|h1|h2|h3|h4|h5|h6|hr|li|ol|ul|p)>[\s]+<', $html); + $html = preg_replace('/<\/(td|th)>/', '', $html); + $html = preg_replace('/<\/table>([\s]*)/', '
      ', $html); + $html = preg_replace('/'.$this->re_space['p'].'+re_space['m'], chr(32).']*)>[\s]+([^\<])/xi', ' \\2', $html); + $html = preg_replace('/]*)>/xi', '', $html); + $html = preg_replace('/]*)>([^\<]*)<\/textarea>/xi', '', $html); + $html = preg_replace('/]*)><\/li>/', ' 
    37. ', $html); + $html = preg_replace('/]*)>'.$this->re_space['p'].'*re_space['m'], ' \/]*)>[\s]/', '<\\1> ', $html); // preserve some spaces + $html = preg_replace('/[\s]<\/([^\>]*)>/', ' ', $html); // preserve some spaces + $html = preg_replace('//', '', $html); // fix sub/sup alignment + $html = preg_replace('/'.$this->re_space['p'].'+/'.$this->re_space['m'], chr(32), $html); // replace multiple spaces with a single space + // trim string + $html = $this->stringTrim($html); + // fix br tag after li + $html = preg_replace('/
    38. ]*)>/', '
    39. ', $html); + // fix first image tag alignment + $html = preg_replace('/^
      FontFamily; + $dom[$key]['fontstyle'] = $this->FontStyle; + $dom[$key]['fontsize'] = $this->FontSizePt; + $dom[$key]['font-stretch'] = $this->font_stretching; + $dom[$key]['letter-spacing'] = $this->font_spacing; + $dom[$key]['stroke'] = $this->textstrokewidth; + $dom[$key]['fill'] = (($this->textrendermode % 2) == 0); + $dom[$key]['clip'] = ($this->textrendermode > 3); + $dom[$key]['line-height'] = $this->cell_height_ratio; + $dom[$key]['bgcolor'] = false; + $dom[$key]['fgcolor'] = $this->fgcolor; // color + $dom[$key]['strokecolor'] = $this->strokecolor; + $dom[$key]['align'] = ''; + $dom[$key]['listtype'] = ''; + $dom[$key]['text-indent'] = 0; + $dom[$key]['text-transform'] = ''; + $dom[$key]['border'] = array(); + $dom[$key]['dir'] = $this->rtl?'rtl':'ltr'; + $thead = false; // true when we are inside the THEAD tag + ++$key; + $level = array(); + array_push($level, 0); // root + while ($elkey < $maxel) { + $dom[$key] = array(); + $element = $a[$elkey]; + $dom[$key]['elkey'] = $elkey; + if (preg_match($tagpattern, $element)) { + // html tag + $element = substr($element, 1, -1); + // get tag name + preg_match('/[\/]?([a-zA-Z0-9]*)/', $element, $tag); + $tagname = strtolower($tag[1]); + // check if we are inside a table header + if ($tagname == 'thead') { + if ($element[0] == '/') { + $thead = false; + } else { + $thead = true; + } + ++$elkey; + continue; + } + $dom[$key]['tag'] = true; + $dom[$key]['value'] = $tagname; + if (in_array($dom[$key]['value'], $blocktags)) { + $dom[$key]['block'] = true; + } else { + $dom[$key]['block'] = false; + } + if ($element[0] == '/') { + // *** closing html tag + $dom[$key]['opening'] = false; + $dom[$key]['parent'] = end($level); + array_pop($level); + $dom[$key]['hide'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['hide']; + $dom[$key]['fontname'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fontname']; + $dom[$key]['fontstyle'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fontstyle']; + $dom[$key]['fontsize'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fontsize']; + $dom[$key]['font-stretch'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['font-stretch']; + $dom[$key]['letter-spacing'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['letter-spacing']; + $dom[$key]['stroke'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['stroke']; + $dom[$key]['fill'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fill']; + $dom[$key]['clip'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['clip']; + $dom[$key]['line-height'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['line-height']; + $dom[$key]['bgcolor'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['bgcolor']; + $dom[$key]['fgcolor'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['fgcolor']; + $dom[$key]['strokecolor'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['strokecolor']; + $dom[$key]['align'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['align']; + $dom[$key]['text-transform'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['text-transform']; + $dom[$key]['dir'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['dir']; + if (isset($dom[($dom[($dom[$key]['parent'])]['parent'])]['listtype'])) { + $dom[$key]['listtype'] = $dom[($dom[($dom[$key]['parent'])]['parent'])]['listtype']; + } + // set the number of columns in table tag + if (($dom[$key]['value'] == 'tr') AND (!isset($dom[($dom[($dom[$key]['parent'])]['parent'])]['cols']))) { + $dom[($dom[($dom[$key]['parent'])]['parent'])]['cols'] = $dom[($dom[$key]['parent'])]['cols']; + } + if (($dom[$key]['value'] == 'td') OR ($dom[$key]['value'] == 'th')) { + $dom[($dom[$key]['parent'])]['content'] = $csstagarray; + for ($i = ($dom[$key]['parent'] + 1); $i < $key; ++$i) { + $dom[($dom[$key]['parent'])]['content'] .= $a[$dom[$i]['elkey']]; + } + $key = $i; + // mark nested tables + $dom[($dom[$key]['parent'])]['content'] = str_replace('', '', $dom[($dom[$key]['parent'])]['content']); + $dom[($dom[$key]['parent'])]['content'] = str_replace('', '', $dom[($dom[$key]['parent'])]['content']); + } + // store header rows on a new table + if (($dom[$key]['value'] == 'tr') AND ($dom[($dom[$key]['parent'])]['thead'] === true)) { + if (TCPDF_STATIC::empty_string($dom[($dom[($dom[$key]['parent'])]['parent'])]['thead'])) { + $dom[($dom[($dom[$key]['parent'])]['parent'])]['thead'] = $csstagarray.$a[$dom[($dom[($dom[$key]['parent'])]['parent'])]['elkey']]; + } + for ($i = $dom[$key]['parent']; $i <= $key; ++$i) { + $dom[($dom[($dom[$key]['parent'])]['parent'])]['thead'] .= $a[$dom[$i]['elkey']]; + } + if (!isset($dom[($dom[$key]['parent'])]['attribute'])) { + $dom[($dom[$key]['parent'])]['attribute'] = array(); + } + // header elements must be always contained in a single page + $dom[($dom[$key]['parent'])]['attribute']['nobr'] = 'true'; + } + if (($dom[$key]['value'] == 'table') AND (!TCPDF_STATIC::empty_string($dom[($dom[$key]['parent'])]['thead']))) { + // remove the nobr attributes from the table header + $dom[($dom[$key]['parent'])]['thead'] = str_replace(' nobr="true"', '', $dom[($dom[$key]['parent'])]['thead']); + $dom[($dom[$key]['parent'])]['thead'] .= ''; + } + } else { + // *** opening or self-closing html tag + $dom[$key]['opening'] = true; + $dom[$key]['parent'] = end($level); + if ((substr($element, -1, 1) == '/') OR (in_array($dom[$key]['value'], $selfclosingtags))) { + // self-closing tag + $dom[$key]['self'] = true; + } else { + // opening tag + array_push($level, $key); + $dom[$key]['self'] = false; + } + // copy some values from parent + $parentkey = 0; + if ($key > 0) { + $parentkey = $dom[$key]['parent']; + $dom[$key]['hide'] = $dom[$parentkey]['hide']; + $dom[$key]['fontname'] = $dom[$parentkey]['fontname']; + $dom[$key]['fontstyle'] = $dom[$parentkey]['fontstyle']; + $dom[$key]['fontsize'] = $dom[$parentkey]['fontsize']; + $dom[$key]['font-stretch'] = $dom[$parentkey]['font-stretch']; + $dom[$key]['letter-spacing'] = $dom[$parentkey]['letter-spacing']; + $dom[$key]['stroke'] = $dom[$parentkey]['stroke']; + $dom[$key]['fill'] = $dom[$parentkey]['fill']; + $dom[$key]['clip'] = $dom[$parentkey]['clip']; + $dom[$key]['line-height'] = $dom[$parentkey]['line-height']; + $dom[$key]['bgcolor'] = $dom[$parentkey]['bgcolor']; + $dom[$key]['fgcolor'] = $dom[$parentkey]['fgcolor']; + $dom[$key]['strokecolor'] = $dom[$parentkey]['strokecolor']; + $dom[$key]['align'] = $dom[$parentkey]['align']; + $dom[$key]['listtype'] = $dom[$parentkey]['listtype']; + $dom[$key]['text-indent'] = $dom[$parentkey]['text-indent']; + $dom[$key]['text-transform'] = $dom[$parentkey]['text-transform']; + $dom[$key]['border'] = array(); + $dom[$key]['dir'] = $dom[$parentkey]['dir']; + } + // get attributes + preg_match_all('/([^=\s]*)[\s]*=[\s]*"([^"]*)"/', $element, $attr_array, PREG_PATTERN_ORDER); + $dom[$key]['attribute'] = array(); // reset attribute array + while (list($id, $name) = each($attr_array[1])) { + $dom[$key]['attribute'][strtolower($name)] = $attr_array[2][$id]; + } + if (!empty($css)) { + // merge CSS style to current style + list($dom[$key]['csssel'], $dom[$key]['cssdata']) = TCPDF_STATIC::getCSSdataArray($dom, $key, $css); + $dom[$key]['attribute']['style'] = TCPDF_STATIC::getTagStyleFromCSSarray($dom[$key]['cssdata']); + } + // split style attributes + if (isset($dom[$key]['attribute']['style']) AND !empty($dom[$key]['attribute']['style'])) { + // get style attributes + preg_match_all('/([^;:\s]*):([^;]*)/', $dom[$key]['attribute']['style'], $style_array, PREG_PATTERN_ORDER); + $dom[$key]['style'] = array(); // reset style attribute array + while (list($id, $name) = each($style_array[1])) { + // in case of duplicate attribute the last replace the previous + $dom[$key]['style'][strtolower($name)] = trim($style_array[2][$id]); + } + // --- get some style attributes --- + // text direction + if (isset($dom[$key]['style']['direction'])) { + $dom[$key]['dir'] = $dom[$key]['style']['direction']; + } + // display + if (isset($dom[$key]['style']['display'])) { + $dom[$key]['hide'] = (trim(strtolower($dom[$key]['style']['display'])) == 'none'); + } + // font family + if (isset($dom[$key]['style']['font-family'])) { + $dom[$key]['fontname'] = $this->getFontFamilyName($dom[$key]['style']['font-family']); + } + // list-style-type + if (isset($dom[$key]['style']['list-style-type'])) { + $dom[$key]['listtype'] = trim(strtolower($dom[$key]['style']['list-style-type'])); + if ($dom[$key]['listtype'] == 'inherit') { + $dom[$key]['listtype'] = $dom[$parentkey]['listtype']; + } + } + // text-indent + if (isset($dom[$key]['style']['text-indent'])) { + $dom[$key]['text-indent'] = $this->getHTMLUnitToUnits($dom[$key]['style']['text-indent']); + if ($dom[$key]['text-indent'] == 'inherit') { + $dom[$key]['text-indent'] = $dom[$parentkey]['text-indent']; + } + } + // text-transform + if (isset($dom[$key]['style']['text-transform'])) { + $dom[$key]['text-transform'] = $dom[$key]['style']['text-transform']; + } + // font size + if (isset($dom[$key]['style']['font-size'])) { + $fsize = trim($dom[$key]['style']['font-size']); + $dom[$key]['fontsize'] = $this->getHTMLFontUnits($fsize, $dom[0]['fontsize'], $dom[$parentkey]['fontsize'], 'pt'); + } + // font-stretch + if (isset($dom[$key]['style']['font-stretch'])) { + $dom[$key]['font-stretch'] = $this->getCSSFontStretching($dom[$key]['style']['font-stretch'], $dom[$parentkey]['font-stretch']); + } + // letter-spacing + if (isset($dom[$key]['style']['letter-spacing'])) { + $dom[$key]['letter-spacing'] = $this->getCSSFontSpacing($dom[$key]['style']['letter-spacing'], $dom[$parentkey]['letter-spacing']); + } + // line-height (internally is the cell height ratio) + if (isset($dom[$key]['style']['line-height'])) { + $lineheight = trim($dom[$key]['style']['line-height']); + switch ($lineheight) { + // A normal line height. This is default + case 'normal': { + $dom[$key]['line-height'] = $dom[0]['line-height']; + break; + } + case 'inherit': { + $dom[$key]['line-height'] = $dom[$parentkey]['line-height']; + } + default: { + if (is_numeric($lineheight)) { + // convert to percentage of font height + $lineheight = ($lineheight * 100).'%'; + } + $dom[$key]['line-height'] = $this->getHTMLUnitToUnits($lineheight, 1, '%', true); + if (substr($lineheight, -1) !== '%') { + if ($dom[$key]['fontsize'] <= 0) { + $dom[$key]['line-height'] = 1; + } else { + $dom[$key]['line-height'] = (($dom[$key]['line-height'] - $this->cell_padding['T'] - $this->cell_padding['B']) / $dom[$key]['fontsize']); + } + } + } + } + } + // font style + if (isset($dom[$key]['style']['font-weight'])) { + if (strtolower($dom[$key]['style']['font-weight'][0]) == 'n') { + if (strpos($dom[$key]['fontstyle'], 'B') !== false) { + $dom[$key]['fontstyle'] = str_replace('B', '', $dom[$key]['fontstyle']); + } + } elseif (strtolower($dom[$key]['style']['font-weight'][0]) == 'b') { + $dom[$key]['fontstyle'] .= 'B'; + } + } + if (isset($dom[$key]['style']['font-style']) AND (strtolower($dom[$key]['style']['font-style'][0]) == 'i')) { + $dom[$key]['fontstyle'] .= 'I'; + } + // font color + if (isset($dom[$key]['style']['color']) AND (!TCPDF_STATIC::empty_string($dom[$key]['style']['color']))) { + $dom[$key]['fgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['style']['color'], $this->spot_colors); + } elseif ($dom[$key]['value'] == 'a') { + $dom[$key]['fgcolor'] = $this->htmlLinkColorArray; + } + // background color + if (isset($dom[$key]['style']['background-color']) AND (!TCPDF_STATIC::empty_string($dom[$key]['style']['background-color']))) { + $dom[$key]['bgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['style']['background-color'], $this->spot_colors); + } + // text-decoration + if (isset($dom[$key]['style']['text-decoration'])) { + $decors = explode(' ', strtolower($dom[$key]['style']['text-decoration'])); + foreach ($decors as $dec) { + $dec = trim($dec); + if (!TCPDF_STATIC::empty_string($dec)) { + if ($dec[0] == 'u') { + // underline + $dom[$key]['fontstyle'] .= 'U'; + } elseif ($dec[0] == 'l') { + // line-through + $dom[$key]['fontstyle'] .= 'D'; + } elseif ($dec[0] == 'o') { + // overline + $dom[$key]['fontstyle'] .= 'O'; + } + } + } + } elseif ($dom[$key]['value'] == 'a') { + $dom[$key]['fontstyle'] = $this->htmlLinkFontStyle; + } + // check for width attribute + if (isset($dom[$key]['style']['width'])) { + $dom[$key]['width'] = $dom[$key]['style']['width']; + } + // check for height attribute + if (isset($dom[$key]['style']['height'])) { + $dom[$key]['height'] = $dom[$key]['style']['height']; + } + // check for text alignment + if (isset($dom[$key]['style']['text-align'])) { + $dom[$key]['align'] = strtoupper($dom[$key]['style']['text-align'][0]); + } + // check for CSS border properties + if (isset($dom[$key]['style']['border'])) { + $borderstyle = $this->getCSSBorderStyle($dom[$key]['style']['border']); + if (!empty($borderstyle)) { + $dom[$key]['border']['LTRB'] = $borderstyle; + } + } + if (isset($dom[$key]['style']['border-color'])) { + $brd_colors = preg_split('/[\s]+/', trim($dom[$key]['style']['border-color'])); + if (isset($brd_colors[3])) { + $dom[$key]['border']['L']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[3], $this->spot_colors); + } + if (isset($brd_colors[1])) { + $dom[$key]['border']['R']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[1], $this->spot_colors); + } + if (isset($brd_colors[0])) { + $dom[$key]['border']['T']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[0], $this->spot_colors); + } + if (isset($brd_colors[2])) { + $dom[$key]['border']['B']['color'] = TCPDF_COLORS::convertHTMLColorToDec($brd_colors[2], $this->spot_colors); + } + } + if (isset($dom[$key]['style']['border-width'])) { + $brd_widths = preg_split('/[\s]+/', trim($dom[$key]['style']['border-width'])); + if (isset($brd_widths[3])) { + $dom[$key]['border']['L']['width'] = $this->getCSSBorderWidth($brd_widths[3]); + } + if (isset($brd_widths[1])) { + $dom[$key]['border']['R']['width'] = $this->getCSSBorderWidth($brd_widths[1]); + } + if (isset($brd_widths[0])) { + $dom[$key]['border']['T']['width'] = $this->getCSSBorderWidth($brd_widths[0]); + } + if (isset($brd_widths[2])) { + $dom[$key]['border']['B']['width'] = $this->getCSSBorderWidth($brd_widths[2]); + } + } + if (isset($dom[$key]['style']['border-style'])) { + $brd_styles = preg_split('/[\s]+/', trim($dom[$key]['style']['border-style'])); + if (isset($brd_styles[3]) AND ($brd_styles[3]!='none')) { + $dom[$key]['border']['L']['cap'] = 'square'; + $dom[$key]['border']['L']['join'] = 'miter'; + $dom[$key]['border']['L']['dash'] = $this->getCSSBorderDashStyle($brd_styles[3]); + if ($dom[$key]['border']['L']['dash'] < 0) { + $dom[$key]['border']['L'] = array(); + } + } + if (isset($brd_styles[1])) { + $dom[$key]['border']['R']['cap'] = 'square'; + $dom[$key]['border']['R']['join'] = 'miter'; + $dom[$key]['border']['R']['dash'] = $this->getCSSBorderDashStyle($brd_styles[1]); + if ($dom[$key]['border']['R']['dash'] < 0) { + $dom[$key]['border']['R'] = array(); + } + } + if (isset($brd_styles[0])) { + $dom[$key]['border']['T']['cap'] = 'square'; + $dom[$key]['border']['T']['join'] = 'miter'; + $dom[$key]['border']['T']['dash'] = $this->getCSSBorderDashStyle($brd_styles[0]); + if ($dom[$key]['border']['T']['dash'] < 0) { + $dom[$key]['border']['T'] = array(); + } + } + if (isset($brd_styles[2])) { + $dom[$key]['border']['B']['cap'] = 'square'; + $dom[$key]['border']['B']['join'] = 'miter'; + $dom[$key]['border']['B']['dash'] = $this->getCSSBorderDashStyle($brd_styles[2]); + if ($dom[$key]['border']['B']['dash'] < 0) { + $dom[$key]['border']['B'] = array(); + } + } + } + $cellside = array('L' => 'left', 'R' => 'right', 'T' => 'top', 'B' => 'bottom'); + foreach ($cellside as $bsk => $bsv) { + if (isset($dom[$key]['style']['border-'.$bsv])) { + $borderstyle = $this->getCSSBorderStyle($dom[$key]['style']['border-'.$bsv]); + if (!empty($borderstyle)) { + $dom[$key]['border'][$bsk] = $borderstyle; + } + } + if (isset($dom[$key]['style']['border-'.$bsv.'-color'])) { + $dom[$key]['border'][$bsk]['color'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['style']['border-'.$bsv.'-color'], $this->spot_colors); + } + if (isset($dom[$key]['style']['border-'.$bsv.'-width'])) { + $dom[$key]['border'][$bsk]['width'] = $this->getCSSBorderWidth($dom[$key]['style']['border-'.$bsv.'-width']); + } + if (isset($dom[$key]['style']['border-'.$bsv.'-style'])) { + $dom[$key]['border'][$bsk]['dash'] = $this->getCSSBorderDashStyle($dom[$key]['style']['border-'.$bsv.'-style']); + if ($dom[$key]['border'][$bsk]['dash'] < 0) { + $dom[$key]['border'][$bsk] = array(); + } + } + } + // check for CSS padding properties + if (isset($dom[$key]['style']['padding'])) { + $dom[$key]['padding'] = $this->getCSSPadding($dom[$key]['style']['padding']); + } else { + $dom[$key]['padding'] = $this->cell_padding; + } + foreach ($cellside as $psk => $psv) { + if (isset($dom[$key]['style']['padding-'.$psv])) { + $dom[$key]['padding'][$psk] = $this->getHTMLUnitToUnits($dom[$key]['style']['padding-'.$psv], 0, 'px', false); + } + } + // check for CSS margin properties + if (isset($dom[$key]['style']['margin'])) { + $dom[$key]['margin'] = $this->getCSSMargin($dom[$key]['style']['margin']); + } else { + $dom[$key]['margin'] = $this->cell_margin; + } + foreach ($cellside as $psk => $psv) { + if (isset($dom[$key]['style']['margin-'.$psv])) { + $dom[$key]['margin'][$psk] = $this->getHTMLUnitToUnits(str_replace('auto', '0', $dom[$key]['style']['margin-'.$psv]), 0, 'px', false); + } + } + // check for CSS border-spacing properties + if (isset($dom[$key]['style']['border-spacing'])) { + $dom[$key]['border-spacing'] = $this->getCSSBorderMargin($dom[$key]['style']['border-spacing']); + } + // page-break-inside + if (isset($dom[$key]['style']['page-break-inside']) AND ($dom[$key]['style']['page-break-inside'] == 'avoid')) { + $dom[$key]['attribute']['nobr'] = 'true'; + } + // page-break-before + if (isset($dom[$key]['style']['page-break-before'])) { + if ($dom[$key]['style']['page-break-before'] == 'always') { + $dom[$key]['attribute']['pagebreak'] = 'true'; + } elseif ($dom[$key]['style']['page-break-before'] == 'left') { + $dom[$key]['attribute']['pagebreak'] = 'left'; + } elseif ($dom[$key]['style']['page-break-before'] == 'right') { + $dom[$key]['attribute']['pagebreak'] = 'right'; + } + } + // page-break-after + if (isset($dom[$key]['style']['page-break-after'])) { + if ($dom[$key]['style']['page-break-after'] == 'always') { + $dom[$key]['attribute']['pagebreakafter'] = 'true'; + } elseif ($dom[$key]['style']['page-break-after'] == 'left') { + $dom[$key]['attribute']['pagebreakafter'] = 'left'; + } elseif ($dom[$key]['style']['page-break-after'] == 'right') { + $dom[$key]['attribute']['pagebreakafter'] = 'right'; + } + } + } + if (isset($dom[$key]['attribute']['display'])) { + $dom[$key]['hide'] = (trim(strtolower($dom[$key]['attribute']['display'])) == 'none'); + } + if (isset($dom[$key]['attribute']['border']) AND ($dom[$key]['attribute']['border'] != 0)) { + $borderstyle = $this->getCSSBorderStyle($dom[$key]['attribute']['border'].' solid black'); + if (!empty($borderstyle)) { + $dom[$key]['border']['LTRB'] = $borderstyle; + } + } + // check for font tag + if ($dom[$key]['value'] == 'font') { + // font family + if (isset($dom[$key]['attribute']['face'])) { + $dom[$key]['fontname'] = $this->getFontFamilyName($dom[$key]['attribute']['face']); + } + // font size + if (isset($dom[$key]['attribute']['size'])) { + if ($key > 0) { + if ($dom[$key]['attribute']['size'][0] == '+') { + $dom[$key]['fontsize'] = $dom[($dom[$key]['parent'])]['fontsize'] + intval(substr($dom[$key]['attribute']['size'], 1)); + } elseif ($dom[$key]['attribute']['size'][0] == '-') { + $dom[$key]['fontsize'] = $dom[($dom[$key]['parent'])]['fontsize'] - intval(substr($dom[$key]['attribute']['size'], 1)); + } else { + $dom[$key]['fontsize'] = intval($dom[$key]['attribute']['size']); + } + } else { + $dom[$key]['fontsize'] = intval($dom[$key]['attribute']['size']); + } + } + } + // force natural alignment for lists + if ((($dom[$key]['value'] == 'ul') OR ($dom[$key]['value'] == 'ol') OR ($dom[$key]['value'] == 'dl')) + AND (!isset($dom[$key]['align']) OR TCPDF_STATIC::empty_string($dom[$key]['align']) OR ($dom[$key]['align'] != 'J'))) { + if ($this->rtl) { + $dom[$key]['align'] = 'R'; + } else { + $dom[$key]['align'] = 'L'; + } + } + if (($dom[$key]['value'] == 'small') OR ($dom[$key]['value'] == 'sup') OR ($dom[$key]['value'] == 'sub')) { + if (!isset($dom[$key]['attribute']['size']) AND !isset($dom[$key]['style']['font-size'])) { + $dom[$key]['fontsize'] = $dom[$key]['fontsize'] * K_SMALL_RATIO; + } + } + if (($dom[$key]['value'] == 'strong') OR ($dom[$key]['value'] == 'b')) { + $dom[$key]['fontstyle'] .= 'B'; + } + if (($dom[$key]['value'] == 'em') OR ($dom[$key]['value'] == 'i')) { + $dom[$key]['fontstyle'] .= 'I'; + } + if ($dom[$key]['value'] == 'u') { + $dom[$key]['fontstyle'] .= 'U'; + } + if (($dom[$key]['value'] == 'del') OR ($dom[$key]['value'] == 's') OR ($dom[$key]['value'] == 'strike')) { + $dom[$key]['fontstyle'] .= 'D'; + } + if (!isset($dom[$key]['style']['text-decoration']) AND ($dom[$key]['value'] == 'a')) { + $dom[$key]['fontstyle'] = $this->htmlLinkFontStyle; + } + if (($dom[$key]['value'] == 'pre') OR ($dom[$key]['value'] == 'tt')) { + $dom[$key]['fontname'] = $this->default_monospaced_font; + } + if (!empty($dom[$key]['value']) AND ($dom[$key]['value'][0] == 'h') AND (intval($dom[$key]['value']{1}) > 0) AND (intval($dom[$key]['value']{1}) < 7)) { + // headings h1, h2, h3, h4, h5, h6 + if (!isset($dom[$key]['attribute']['size']) AND !isset($dom[$key]['style']['font-size'])) { + $headsize = (4 - intval($dom[$key]['value']{1})) * 2; + $dom[$key]['fontsize'] = $dom[0]['fontsize'] + $headsize; + } + if (!isset($dom[$key]['style']['font-weight'])) { + $dom[$key]['fontstyle'] .= 'B'; + } + } + if (($dom[$key]['value'] == 'table')) { + $dom[$key]['rows'] = 0; // number of rows + $dom[$key]['trids'] = array(); // IDs of TR elements + $dom[$key]['thead'] = ''; // table header rows + } + if (($dom[$key]['value'] == 'tr')) { + $dom[$key]['cols'] = 0; + if ($thead) { + $dom[$key]['thead'] = true; + // rows on thead block are printed as a separate table + } else { + $dom[$key]['thead'] = false; + // store the number of rows on table element + ++$dom[($dom[$key]['parent'])]['rows']; + // store the TR elements IDs on table element + array_push($dom[($dom[$key]['parent'])]['trids'], $key); + } + } + if (($dom[$key]['value'] == 'th') OR ($dom[$key]['value'] == 'td')) { + if (isset($dom[$key]['attribute']['colspan'])) { + $colspan = intval($dom[$key]['attribute']['colspan']); + } else { + $colspan = 1; + } + $dom[$key]['attribute']['colspan'] = $colspan; + $dom[($dom[$key]['parent'])]['cols'] += $colspan; + } + // text direction + if (isset($dom[$key]['attribute']['dir'])) { + $dom[$key]['dir'] = $dom[$key]['attribute']['dir']; + } + // set foreground color attribute + if (isset($dom[$key]['attribute']['color']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['color']))) { + $dom[$key]['fgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['attribute']['color'], $this->spot_colors); + } elseif (!isset($dom[$key]['style']['color']) AND ($dom[$key]['value'] == 'a')) { + $dom[$key]['fgcolor'] = $this->htmlLinkColorArray; + } + // set background color attribute + if (isset($dom[$key]['attribute']['bgcolor']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['bgcolor']))) { + $dom[$key]['bgcolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['attribute']['bgcolor'], $this->spot_colors); + } + // set stroke color attribute + if (isset($dom[$key]['attribute']['strokecolor']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['strokecolor']))) { + $dom[$key]['strokecolor'] = TCPDF_COLORS::convertHTMLColorToDec($dom[$key]['attribute']['strokecolor'], $this->spot_colors); + } + // check for width attribute + if (isset($dom[$key]['attribute']['width'])) { + $dom[$key]['width'] = $dom[$key]['attribute']['width']; + } + // check for height attribute + if (isset($dom[$key]['attribute']['height'])) { + $dom[$key]['height'] = $dom[$key]['attribute']['height']; + } + // check for text alignment + if (isset($dom[$key]['attribute']['align']) AND (!TCPDF_STATIC::empty_string($dom[$key]['attribute']['align'])) AND ($dom[$key]['value'] !== 'img')) { + $dom[$key]['align'] = strtoupper($dom[$key]['attribute']['align'][0]); + } + // check for text rendering mode (the following attributes do not exist in HTML) + if (isset($dom[$key]['attribute']['stroke'])) { + // font stroke width + $dom[$key]['stroke'] = $this->getHTMLUnitToUnits($dom[$key]['attribute']['stroke'], $dom[$key]['fontsize'], 'pt', true); + } + if (isset($dom[$key]['attribute']['fill'])) { + // font fill + if ($dom[$key]['attribute']['fill'] == 'true') { + $dom[$key]['fill'] = true; + } else { + $dom[$key]['fill'] = false; + } + } + if (isset($dom[$key]['attribute']['clip'])) { + // clipping mode + if ($dom[$key]['attribute']['clip'] == 'true') { + $dom[$key]['clip'] = true; + } else { + $dom[$key]['clip'] = false; + } + } + } // end opening tag + } else { + // text + $dom[$key]['tag'] = false; + $dom[$key]['block'] = false; + $dom[$key]['parent'] = end($level); + $dom[$key]['dir'] = $dom[$dom[$key]['parent']]['dir']; + if (!empty($dom[$dom[$key]['parent']]['text-transform'])) { + // text-transform for unicode requires mb_convert_case (Multibyte String Functions) + if (function_exists('mb_convert_case')) { + $ttm = array('capitalize' => MB_CASE_TITLE, 'uppercase' => MB_CASE_UPPER, 'lowercase' => MB_CASE_LOWER); + if (isset($ttm[$dom[$dom[$key]['parent']]['text-transform']])) { + $element = mb_convert_case($element, $ttm[$dom[$dom[$key]['parent']]['text-transform']], $this->encoding); + } + } elseif (!$this->isunicode) { + switch ($dom[$dom[$key]['parent']]['text-transform']) { + case 'capitalize': { + $element = ucwords(strtolower($element)); + break; + } + case 'uppercase': { + $element = strtoupper($element); + break; + } + case 'lowercase': { + $element = strtolower($element); + break; + } + } + } + } + $dom[$key]['value'] = stripslashes($this->unhtmlentities($element)); + } + ++$elkey; + ++$key; + } + return $dom; + } + + /** + * Returns the string used to find spaces + * @return string + * @protected + * @author Nicola Asuni + * @since 4.8.024 (2010-01-15) + */ + protected function getSpaceString() { + $spacestr = chr(32); + if ($this->isUnicodeFont()) { + $spacestr = chr(0).chr(32); + } + return $spacestr; + } + + /** + * Serialize an array of parameters to be used with TCPDF tag in HTML code. + * @param $pararray (array) parameters array + * @return sting containing serialized data + * @since 4.9.006 (2010-04-02) + * @public + * @deprecated + */ + public function serializeTCPDFtagParameters($pararray) { + return TCPDF_STATIC::serializeTCPDFtagParameters($pararray); + } + + /** + * Prints a cell (rectangular area) with optional borders, background color and html text string. + * The upper-left corner of the cell corresponds to the current position. After the call, the current position moves to the right or to the next line.
      + * If automatic page breaking is enabled and the cell goes beyond the limit, a page break is done before outputting. + * IMPORTANT: The HTML must be well formatted - try to clean-up it using an application like HTML-Tidy before submitting. + * Supported tags are: a, b, blockquote, br, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, img, li, ol, p, pre, small, span, strong, sub, sup, table, tcpdf, td, th, thead, tr, tt, u, ul + * NOTE: all the HTML attributes must be enclosed in double-quote. + * @param $w (float) Cell width. If 0, the cell extends up to the right margin. + * @param $h (float) Cell minimum height. The cell extends automatically if needed. + * @param $x (float) upper-left corner X coordinate + * @param $y (float) upper-left corner Y coordinate + * @param $html (string) html text to print. Default value: empty string. + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $ln (int) Indicates where the current position should go after the call. Possible values are:
      • 0: to the right (or left for RTL language)
      • 1: to the beginning of the next line
      • 2: below
      +Putting 1 is equivalent to putting 0 and calling Ln() just after. Default value: 0. + * @param $fill (boolean) Indicates if the cell background must be painted (true) or transparent (false). + * @param $reseth (boolean) if true reset the last cell height (default true). + * @param $align (string) Allows to center or align the text. Possible values are:
      • L : left align
      • C : center
      • R : right align
      • '' : empty string : left for LTR or right for RTL
      + * @param $autopadding (boolean) if true, uses internal padding and automatically adjust it to account for line width. + * @see Multicell(), writeHTML() + * @public + */ + public function writeHTMLCell($w, $h, $x, $y, $html='', $border=0, $ln=0, $fill=false, $reseth=true, $align='', $autopadding=true) { + return $this->MultiCell($w, $h, $html, $border, $align, $fill, $ln, $x, $y, $reseth, 0, true, $autopadding, 0, 'T', false); + } + + /** + * Allows to preserve some HTML formatting (limited support).
      + * IMPORTANT: The HTML must be well formatted - try to clean-up it using an application like HTML-Tidy before submitting. + * Supported tags are: a, b, blockquote, br, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, img, li, ol, p, pre, small, span, strong, sub, sup, table, tcpdf, td, th, thead, tr, tt, u, ul + * NOTE: all the HTML attributes must be enclosed in double-quote. + * @param $html (string) text to display + * @param $ln (boolean) if true add a new line after text (default = true) + * @param $fill (boolean) Indicates if the background must be painted (true) or transparent (false). + * @param $reseth (boolean) if true reset the last cell height (default false). + * @param $cell (boolean) if true add the current left (or right for RTL) padding to each Write (default false). + * @param $align (string) Allows to center or align the text. Possible values are:
      • L : left align
      • C : center
      • R : right align
      • '' : empty string : left for LTR or right for RTL
      + * @public + */ + public function writeHTML($html, $ln=true, $fill=false, $reseth=false, $cell=false, $align='') { + $gvars = $this->getGraphicVars(); + // store current values + $prev_cell_margin = $this->cell_margin; + $prev_cell_padding = $this->cell_padding; + $prevPage = $this->page; + $prevlMargin = $this->lMargin; + $prevrMargin = $this->rMargin; + $curfontname = $this->FontFamily; + $curfontstyle = $this->FontStyle; + $curfontsize = $this->FontSizePt; + $curfontascent = $this->getFontAscent($curfontname, $curfontstyle, $curfontsize); + $curfontdescent = $this->getFontDescent($curfontname, $curfontstyle, $curfontsize); + $curfontstretcing = $this->font_stretching; + $curfonttracking = $this->font_spacing; + $this->newline = true; + $newline = true; + $startlinepage = $this->page; + $minstartliney = $this->y; + $maxbottomliney = 0; + $startlinex = $this->x; + $startliney = $this->y; + $yshift = 0; + $loop = 0; + $curpos = 0; + $this_method_vars = array(); + $undo = false; + $fontaligned = false; + $reverse_dir = false; // true when the text direction is reversed + $this->premode = false; + if ($this->inxobj) { + // we are inside an XObject template + $pask = count($this->xobjects[$this->xobjid]['annotations']); + } elseif (isset($this->PageAnnots[$this->page])) { + $pask = count($this->PageAnnots[$this->page]); + } else { + $pask = 0; + } + if ($this->inxobj) { + // we are inside an XObject template + $startlinepos = strlen($this->xobjects[$this->xobjid]['outdata']); + } elseif (!$this->InFooter) { + if (isset($this->footerlen[$this->page])) { + $this->footerpos[$this->page] = $this->pagelen[$this->page] - $this->footerlen[$this->page]; + } else { + $this->footerpos[$this->page] = $this->pagelen[$this->page]; + } + $startlinepos = $this->footerpos[$this->page]; + } else { + // we are inside the footer + $startlinepos = $this->pagelen[$this->page]; + } + $lalign = $align; + $plalign = $align; + if ($this->rtl) { + $w = $this->x - $this->lMargin; + } else { + $w = $this->w - $this->rMargin - $this->x; + } + $w -= ($this->cell_padding['L'] + $this->cell_padding['R']); + if ($cell) { + if ($this->rtl) { + $this->x -= $this->cell_padding['R']; + $this->lMargin += $this->cell_padding['R']; + } else { + $this->x += $this->cell_padding['L']; + $this->rMargin += $this->cell_padding['L']; + } + } + if ($this->customlistindent >= 0) { + $this->listindent = $this->customlistindent; + } else { + $this->listindent = $this->GetStringWidth('000000'); + } + $this->listindentlevel = 0; + // save previous states + $prev_cell_height_ratio = $this->cell_height_ratio; + $prev_listnum = $this->listnum; + $prev_listordered = $this->listordered; + $prev_listcount = $this->listcount; + $prev_lispacer = $this->lispacer; + $this->listnum = 0; + $this->listordered = array(); + $this->listcount = array(); + $this->lispacer = ''; + if ((TCPDF_STATIC::empty_string($this->lasth)) OR ($reseth)) { + // reset row height + $this->resetLastH(); + } + $dom = $this->getHtmlDomArray($html); + $maxel = count($dom); + $key = 0; + while ($key < $maxel) { + if ($dom[$key]['tag'] AND $dom[$key]['opening'] AND $dom[$key]['hide']) { + // store the node key + $hidden_node_key = $key; + if ($dom[$key]['self']) { + // skip just this self-closing tag + ++$key; + } else { + // skip this and all children tags + while (($key < $maxel) AND (!$dom[$key]['tag'] OR $dom[$key]['opening'] OR ($dom[$key]['parent'] != $hidden_node_key))) { + // skip hidden objects + ++$key; + } + ++$key; + } + } + if ($dom[$key]['tag'] AND isset($dom[$key]['attribute']['pagebreak'])) { + // check for pagebreak + if (($dom[$key]['attribute']['pagebreak'] == 'true') OR ($dom[$key]['attribute']['pagebreak'] == 'left') OR ($dom[$key]['attribute']['pagebreak'] == 'right')) { + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + $this->htmlvspace = ($this->PageBreakTrigger + 1); + } + if ((($dom[$key]['attribute']['pagebreak'] == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0)))) + OR (($dom[$key]['attribute']['pagebreak'] == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) { + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + $this->htmlvspace = ($this->PageBreakTrigger + 1); + } + } + if ($dom[$key]['tag'] AND $dom[$key]['opening'] AND isset($dom[$key]['attribute']['nobr']) AND ($dom[$key]['attribute']['nobr'] == 'true')) { + if (isset($dom[($dom[$key]['parent'])]['attribute']['nobr']) AND ($dom[($dom[$key]['parent'])]['attribute']['nobr'] == 'true')) { + $dom[$key]['attribute']['nobr'] = false; + } else { + // store current object + $this->startTransaction(); + // save this method vars + $this_method_vars['html'] = $html; + $this_method_vars['ln'] = $ln; + $this_method_vars['fill'] = $fill; + $this_method_vars['reseth'] = $reseth; + $this_method_vars['cell'] = $cell; + $this_method_vars['align'] = $align; + $this_method_vars['gvars'] = $gvars; + $this_method_vars['prevPage'] = $prevPage; + $this_method_vars['prev_cell_margin'] = $prev_cell_margin; + $this_method_vars['prev_cell_padding'] = $prev_cell_padding; + $this_method_vars['prevlMargin'] = $prevlMargin; + $this_method_vars['prevrMargin'] = $prevrMargin; + $this_method_vars['curfontname'] = $curfontname; + $this_method_vars['curfontstyle'] = $curfontstyle; + $this_method_vars['curfontsize'] = $curfontsize; + $this_method_vars['curfontascent'] = $curfontascent; + $this_method_vars['curfontdescent'] = $curfontdescent; + $this_method_vars['curfontstretcing'] = $curfontstretcing; + $this_method_vars['curfonttracking'] = $curfonttracking; + $this_method_vars['minstartliney'] = $minstartliney; + $this_method_vars['maxbottomliney'] = $maxbottomliney; + $this_method_vars['yshift'] = $yshift; + $this_method_vars['startlinepage'] = $startlinepage; + $this_method_vars['startlinepos'] = $startlinepos; + $this_method_vars['startlinex'] = $startlinex; + $this_method_vars['startliney'] = $startliney; + $this_method_vars['newline'] = $newline; + $this_method_vars['loop'] = $loop; + $this_method_vars['curpos'] = $curpos; + $this_method_vars['pask'] = $pask; + $this_method_vars['lalign'] = $lalign; + $this_method_vars['plalign'] = $plalign; + $this_method_vars['w'] = $w; + $this_method_vars['prev_cell_height_ratio'] = $prev_cell_height_ratio; + $this_method_vars['prev_listnum'] = $prev_listnum; + $this_method_vars['prev_listordered'] = $prev_listordered; + $this_method_vars['prev_listcount'] = $prev_listcount; + $this_method_vars['prev_lispacer'] = $prev_lispacer; + $this_method_vars['fontaligned'] = $fontaligned; + $this_method_vars['key'] = $key; + $this_method_vars['dom'] = $dom; + } + } + // print THEAD block + if (($dom[$key]['value'] == 'tr') AND isset($dom[$key]['thead']) AND $dom[$key]['thead']) { + if (isset($dom[$key]['parent']) AND isset($dom[$dom[$key]['parent']]['thead']) AND !TCPDF_STATIC::empty_string($dom[$dom[$key]['parent']]['thead'])) { + $this->inthead = true; + // print table header (thead) + $this->writeHTML($this->thead, false, false, false, false, ''); + // check if we are on a new page or on a new column + if (($this->y < $this->start_transaction_y) OR ($this->checkPageBreak($this->lasth, '', false))) { + // we are on a new page or on a new column and the total object height is less than the available vertical space. + // restore previous object + $this->rollbackTransaction(true); + // restore previous values + foreach ($this_method_vars as $vkey => $vval) { + $$vkey = $vval; + } + // disable table header + $tmp_thead = $this->thead; + $this->thead = ''; + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $pre_y = $this->y; + if ((!$this->checkPageBreak($this->PageBreakTrigger + 1)) AND ($this->y < $pre_y)) { + // fix for multicolumn mode + $startliney = $this->y; + } + $this->start_transaction_page = $this->page; + $this->start_transaction_y = $this->y; + // restore table header + $this->thead = $tmp_thead; + // fix table border properties + if (isset($dom[$dom[$key]['parent']]['attribute']['cellspacing'])) { + $tmp_cellspacing = $this->getHTMLUnitToUnits($dom[$dom[$key]['parent']]['attribute']['cellspacing'], 1, 'px'); + } elseif (isset($dom[$dom[$key]['parent']]['border-spacing'])) { + $tmp_cellspacing = $dom[$dom[$key]['parent']]['border-spacing']['V']; + } else { + $tmp_cellspacing = 0; + } + $dom[$dom[$key]['parent']]['borderposition']['page'] = $this->page; + $dom[$dom[$key]['parent']]['borderposition']['column'] = $this->current_column; + $dom[$dom[$key]['parent']]['borderposition']['y'] = $this->y + $tmp_cellspacing; + $xoffset = ($this->x - $dom[$dom[$key]['parent']]['borderposition']['x']); + $dom[$dom[$key]['parent']]['borderposition']['x'] += $xoffset; + $dom[$dom[$key]['parent']]['borderposition']['xmax'] += $xoffset; + // print table header (thead) + $this->writeHTML($this->thead, false, false, false, false, ''); + } + } + // move $key index forward to skip THEAD block + while ( ($key < $maxel) AND (!( + ($dom[$key]['tag'] AND $dom[$key]['opening'] AND ($dom[$key]['value'] == 'tr') AND (!isset($dom[$key]['thead']) OR !$dom[$key]['thead'])) + OR ($dom[$key]['tag'] AND (!$dom[$key]['opening']) AND ($dom[$key]['value'] == 'table'))) )) { + ++$key; + } + } + if ($dom[$key]['tag'] OR ($key == 0)) { + if ((($dom[$key]['value'] == 'table') OR ($dom[$key]['value'] == 'tr')) AND (isset($dom[$key]['align']))) { + $dom[$key]['align'] = ($this->rtl) ? 'R' : 'L'; + } + // vertically align image in line + if ((!$this->newline) AND ($dom[$key]['value'] == 'img') AND (isset($dom[$key]['height'])) AND ($dom[$key]['height'] > 0)) { + // get image height + $imgh = $this->getHTMLUnitToUnits($dom[$key]['height'], ($dom[$key]['fontsize'] / $this->k), 'px'); + $autolinebreak = false; + if (!empty($dom[$key]['width'])) { + $imgw = $this->getHTMLUnitToUnits($dom[$key]['width'], ($dom[$key]['fontsize'] / $this->k), 'px', false); + if (($imgw <= ($this->w - $this->lMargin - $this->rMargin - $this->cell_padding['L'] - $this->cell_padding['R'])) + AND ((($this->rtl) AND (($this->x - $imgw) < ($this->lMargin + $this->cell_padding['L']))) + OR ((!$this->rtl) AND (($this->x + $imgw) > ($this->w - $this->rMargin - $this->cell_padding['R']))))) { + // add automatic line break + $autolinebreak = true; + $this->Ln('', $cell); + if ((!$dom[($key-1)]['tag']) AND ($dom[($key-1)]['value'] == ' ')) { + // go back to evaluate this line break + --$key; + } + } + } + if (!$autolinebreak) { + if ($this->inPageBody()) { + $pre_y = $this->y; + // check for page break + if ((!$this->checkPageBreak($imgh)) AND ($this->y < $pre_y)) { + // fix for multicolumn mode + $startliney = $this->y; + } + } + if ($this->page > $startlinepage) { + // fix line splitted over two pages + if (isset($this->footerlen[$startlinepage])) { + $curpos = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage]; + } + // line to be moved one page forward + $pagebuff = $this->getPageBuffer($startlinepage); + $linebeg = substr($pagebuff, $startlinepos, ($curpos - $startlinepos)); + $tstart = substr($pagebuff, 0, $startlinepos); + $tend = substr($this->getPageBuffer($startlinepage), $curpos); + // remove line from previous page + $this->setPageBuffer($startlinepage, $tstart.''.$tend); + $pagebuff = $this->getPageBuffer($this->page); + $tstart = substr($pagebuff, 0, $this->cntmrk[$this->page]); + $tend = substr($pagebuff, $this->cntmrk[$this->page]); + // add line start to current page + $yshift = ($minstartliney - $this->y); + if ($fontaligned) { + $yshift += ($curfontsize / $this->k); + } + $try = sprintf('1 0 0 1 0 %F cm', ($yshift * $this->k)); + $this->setPageBuffer($this->page, $tstart."\nq\n".$try."\n".$linebeg."\nQ\n".$tend); + // shift the annotations and links + if (isset($this->PageAnnots[$this->page])) { + $next_pask = count($this->PageAnnots[$this->page]); + } else { + $next_pask = 0; + } + if (isset($this->PageAnnots[$startlinepage])) { + foreach ($this->PageAnnots[$startlinepage] as $pak => $pac) { + if ($pak >= $pask) { + $this->PageAnnots[$this->page][] = $pac; + unset($this->PageAnnots[$startlinepage][$pak]); + $npak = count($this->PageAnnots[$this->page]) - 1; + $this->PageAnnots[$this->page][$npak]['y'] -= $yshift; + } + } + } + $pask = $next_pask; + $startlinepos = $this->cntmrk[$this->page]; + $startlinepage = $this->page; + $startliney = $this->y; + $this->newline = false; + } + $this->y += ($this->getCellHeight($curfontsize / $this->k) - ($curfontdescent * $this->cell_height_ratio) - $imgh); + $minstartliney = min($this->y, $minstartliney); + $maxbottomliney = ($startliney + $this->getCellHeight($curfontsize / $this->k)); + } + } elseif (isset($dom[$key]['fontname']) OR isset($dom[$key]['fontstyle']) OR isset($dom[$key]['fontsize']) OR isset($dom[$key]['line-height'])) { + // account for different font size + $pfontname = $curfontname; + $pfontstyle = $curfontstyle; + $pfontsize = $curfontsize; + $fontname = (isset($dom[$key]['fontname']) ? $dom[$key]['fontname'] : $curfontname); + $fontstyle = (isset($dom[$key]['fontstyle']) ? $dom[$key]['fontstyle'] : $curfontstyle); + $fontsize = (isset($dom[$key]['fontsize']) ? $dom[$key]['fontsize'] : $curfontsize); + $fontascent = $this->getFontAscent($fontname, $fontstyle, $fontsize); + $fontdescent = $this->getFontDescent($fontname, $fontstyle, $fontsize); + if (($fontname != $curfontname) OR ($fontstyle != $curfontstyle) OR ($fontsize != $curfontsize) + OR ($this->cell_height_ratio != $dom[$key]['line-height']) + OR ($dom[$key]['tag'] AND $dom[$key]['opening'] AND ($dom[$key]['value'] == 'li')) ) { + if (($key < ($maxel - 1)) AND ( + ($dom[$key]['tag'] AND $dom[$key]['opening'] AND ($dom[$key]['value'] == 'li')) + OR ($this->cell_height_ratio != $dom[$key]['line-height']) + OR (!$this->newline AND is_numeric($fontsize) AND is_numeric($curfontsize) + AND ($fontsize >= 0) AND ($curfontsize >= 0) + AND (($fontsize != $curfontsize) OR ($fontstyle != $curfontstyle) OR ($fontname != $curfontname))) + )) { + if ($this->page > $startlinepage) { + // fix lines splitted over two pages + if (isset($this->footerlen[$startlinepage])) { + $curpos = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage]; + } + // line to be moved one page forward + $pagebuff = $this->getPageBuffer($startlinepage); + $linebeg = substr($pagebuff, $startlinepos, ($curpos - $startlinepos)); + $tstart = substr($pagebuff, 0, $startlinepos); + $tend = substr($this->getPageBuffer($startlinepage), $curpos); + // remove line start from previous page + $this->setPageBuffer($startlinepage, $tstart.''.$tend); + $pagebuff = $this->getPageBuffer($this->page); + $tstart = substr($pagebuff, 0, $this->cntmrk[$this->page]); + $tend = substr($pagebuff, $this->cntmrk[$this->page]); + // add line start to current page + $yshift = ($minstartliney - $this->y); + $try = sprintf('1 0 0 1 0 %F cm', ($yshift * $this->k)); + $this->setPageBuffer($this->page, $tstart."\nq\n".$try."\n".$linebeg."\nQ\n".$tend); + // shift the annotations and links + if (isset($this->PageAnnots[$this->page])) { + $next_pask = count($this->PageAnnots[$this->page]); + } else { + $next_pask = 0; + } + if (isset($this->PageAnnots[$startlinepage])) { + foreach ($this->PageAnnots[$startlinepage] as $pak => $pac) { + if ($pak >= $pask) { + $this->PageAnnots[$this->page][] = $pac; + unset($this->PageAnnots[$startlinepage][$pak]); + $npak = count($this->PageAnnots[$this->page]) - 1; + $this->PageAnnots[$this->page][$npak]['y'] -= $yshift; + } + } + } + $pask = $next_pask; + $startlinepos = $this->cntmrk[$this->page]; + $startlinepage = $this->page; + $startliney = $this->y; + } + if (!isset($dom[$key]['line-height'])) { + $dom[$key]['line-height'] = $this->cell_height_ratio; + } + if (!$dom[$key]['block']) { + if (!(isset($dom[($key + 1)]) AND $dom[($key + 1)]['tag'] AND (!$dom[($key + 1)]['opening']) AND ($dom[($key + 1)]['value'] != 'li') AND $dom[$key]['tag'] AND (!$dom[$key]['opening']))) { + $this->y += (((($curfontsize * $this->cell_height_ratio) - ($fontsize * $dom[$key]['line-height'])) / $this->k) + $curfontascent - $fontascent - $curfontdescent + $fontdescent) / 2; + } + if (($dom[$key]['value'] != 'sup') AND ($dom[$key]['value'] != 'sub')) { + $current_line_align_data = array($key, $minstartliney, $maxbottomliney); + if (isset($line_align_data) AND (($line_align_data[0] == ($key - 1)) OR (($line_align_data[0] == ($key - 2)) AND (isset($dom[($key - 1)])) AND (preg_match('/^([\s]+)$/', $dom[($key - 1)]['value']) > 0)))) { + $minstartliney = min($this->y, $line_align_data[1]); + $maxbottomliney = max(($this->y + $this->getCellHeight($fontsize / $this->k)), $line_align_data[2]); + } else { + $minstartliney = min($this->y, $minstartliney); + $maxbottomliney = max(($this->y + $this->getCellHeight($fontsize / $this->k)), $maxbottomliney); + } + $line_align_data = $current_line_align_data; + } + } + $this->cell_height_ratio = $dom[$key]['line-height']; + $fontaligned = true; + } + $this->SetFont($fontname, $fontstyle, $fontsize); + // reset row height + $this->resetLastH(); + $curfontname = $fontname; + $curfontstyle = $fontstyle; + $curfontsize = $fontsize; + $curfontascent = $fontascent; + $curfontdescent = $fontdescent; + } + } + // set text rendering mode + $textstroke = isset($dom[$key]['stroke']) ? $dom[$key]['stroke'] : $this->textstrokewidth; + $textfill = isset($dom[$key]['fill']) ? $dom[$key]['fill'] : (($this->textrendermode % 2) == 0); + $textclip = isset($dom[$key]['clip']) ? $dom[$key]['clip'] : ($this->textrendermode > 3); + $this->setTextRenderingMode($textstroke, $textfill, $textclip); + if (isset($dom[$key]['font-stretch']) AND ($dom[$key]['font-stretch'] !== false)) { + $this->setFontStretching($dom[$key]['font-stretch']); + } + if (isset($dom[$key]['letter-spacing']) AND ($dom[$key]['letter-spacing'] !== false)) { + $this->setFontSpacing($dom[$key]['letter-spacing']); + } + if (($plalign == 'J') AND $dom[$key]['block']) { + $plalign = ''; + } + // get current position on page buffer + $curpos = $this->pagelen[$startlinepage]; + if (isset($dom[$key]['bgcolor']) AND ($dom[$key]['bgcolor'] !== false)) { + $this->SetFillColorArray($dom[$key]['bgcolor']); + $wfill = true; + } else { + $wfill = $fill | false; + } + if (isset($dom[$key]['fgcolor']) AND ($dom[$key]['fgcolor'] !== false)) { + $this->SetTextColorArray($dom[$key]['fgcolor']); + } + if (isset($dom[$key]['strokecolor']) AND ($dom[$key]['strokecolor'] !== false)) { + $this->SetDrawColorArray($dom[$key]['strokecolor']); + } + if (isset($dom[$key]['align'])) { + $lalign = $dom[$key]['align']; + } + if (TCPDF_STATIC::empty_string($lalign)) { + $lalign = $align; + } + } + // align lines + if ($this->newline AND (strlen($dom[$key]['value']) > 0) AND ($dom[$key]['value'] != 'td') AND ($dom[$key]['value'] != 'th')) { + $newline = true; + $fontaligned = false; + // we are at the beginning of a new line + if (isset($startlinex)) { + $yshift = ($minstartliney - $startliney); + if (($yshift > 0) OR ($this->page > $startlinepage)) { + $yshift = 0; + } + $t_x = 0; + // the last line must be shifted to be aligned as requested + $linew = abs($this->endlinex - $startlinex); + if ($this->inxobj) { + // we are inside an XObject template + $pstart = substr($this->xobjects[$this->xobjid]['outdata'], 0, $startlinepos); + if (isset($opentagpos)) { + $midpos = $opentagpos; + } else { + $midpos = 0; + } + if ($midpos > 0) { + $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos, ($midpos - $startlinepos)); + $pend = substr($this->xobjects[$this->xobjid]['outdata'], $midpos); + } else { + $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos); + $pend = ''; + } + } else { + $pstart = substr($this->getPageBuffer($startlinepage), 0, $startlinepos); + if (isset($opentagpos) AND isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) { + $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage]; + $midpos = min($opentagpos, $this->footerpos[$startlinepage]); + } elseif (isset($opentagpos)) { + $midpos = $opentagpos; + } elseif (isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) { + $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage]; + $midpos = $this->footerpos[$startlinepage]; + } else { + $midpos = 0; + } + if ($midpos > 0) { + $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos, ($midpos - $startlinepos)); + $pend = substr($this->getPageBuffer($startlinepage), $midpos); + } else { + $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos); + $pend = ''; + } + } + if ((isset($plalign) AND ((($plalign == 'C') OR ($plalign == 'J') OR (($plalign == 'R') AND (!$this->rtl)) OR (($plalign == 'L') AND ($this->rtl)))))) { + // calculate shifting amount + $tw = $w; + if (($plalign == 'J') AND $this->isRTLTextDir() AND ($this->num_columns > 1)) { + $tw += $this->cell_padding['R']; + } + if ($this->lMargin != $prevlMargin) { + $tw += ($prevlMargin - $this->lMargin); + } + if ($this->rMargin != $prevrMargin) { + $tw += ($prevrMargin - $this->rMargin); + } + $one_space_width = $this->GetStringWidth(chr(32)); + $no = 0; // number of spaces on a line contained on a single block + if ($this->isRTLTextDir()) { // RTL + // remove left space if exist + $pos1 = TCPDF_STATIC::revstrpos($pmid, '[('); + if ($pos1 > 0) { + $pos1 = intval($pos1); + if ($this->isUnicodeFont()) { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(0).chr(32))); + $spacelen = 2; + } else { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(32))); + $spacelen = 1; + } + if ($pos1 == $pos2) { + $pmid = substr($pmid, 0, ($pos1 + 2)).substr($pmid, ($pos1 + 2 + $spacelen)); + if (substr($pmid, $pos1, 4) == '[()]') { + $linew -= $one_space_width; + } elseif ($pos1 == strpos($pmid, '[(')) { + $no = 1; + } + } + } + } else { // LTR + // remove right space if exist + $pos1 = TCPDF_STATIC::revstrpos($pmid, ')]'); + if ($pos1 > 0) { + $pos1 = intval($pos1); + if ($this->isUnicodeFont()) { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(0).chr(32).')]')) + 2; + $spacelen = 2; + } else { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(32).')]')) + 1; + $spacelen = 1; + } + if ($pos1 == $pos2) { + $pmid = substr($pmid, 0, ($pos1 - $spacelen)).substr($pmid, $pos1); + $linew -= $one_space_width; + } + } + } + $mdiff = ($tw - $linew); + if ($plalign == 'C') { + if ($this->rtl) { + $t_x = -($mdiff / 2); + } else { + $t_x = ($mdiff / 2); + } + } elseif ($plalign == 'R') { + // right alignment on LTR document + $t_x = $mdiff; + } elseif ($plalign == 'L') { + // left alignment on RTL document + $t_x = -$mdiff; + } elseif (($plalign == 'J') AND ($plalign == $lalign)) { + // Justification + if ($this->isRTLTextDir()) { + // align text on the left + $t_x = -$mdiff; + } + $ns = 0; // number of spaces + $pmidtemp = $pmid; + // escape special characters + $pmidtemp = preg_replace('/[\\\][\(]/x', '\\#!#OP#!#', $pmidtemp); + $pmidtemp = preg_replace('/[\\\][\)]/x', '\\#!#CP#!#', $pmidtemp); + // search spaces + if (preg_match_all('/\[\(([^\)]*)\)\]/x', $pmidtemp, $lnstring, PREG_PATTERN_ORDER)) { + $spacestr = $this->getSpaceString(); + $maxkk = count($lnstring[1]) - 1; + for ($kk=0; $kk <= $maxkk; ++$kk) { + // restore special characters + $lnstring[1][$kk] = str_replace('#!#OP#!#', '(', $lnstring[1][$kk]); + $lnstring[1][$kk] = str_replace('#!#CP#!#', ')', $lnstring[1][$kk]); + // store number of spaces on the strings + $lnstring[2][$kk] = substr_count($lnstring[1][$kk], $spacestr); + // count total spaces on line + $ns += $lnstring[2][$kk]; + $lnstring[3][$kk] = $ns; + } + if ($ns == 0) { + $ns = 1; + } + // calculate additional space to add to each existing space + $spacewidth = ($mdiff / ($ns - $no)) * $this->k; + if ($this->FontSize <= 0) { + $this->FontSize = 1; + } + $spacewidthu = -1000 * ($mdiff + (($ns + $no) * $one_space_width)) / $ns / $this->FontSize; + if ($this->font_spacing != 0) { + // fixed spacing mode + $osw = -1000 * $this->font_spacing / $this->FontSize; + $spacewidthu += $osw; + } + $nsmax = $ns; + $ns = 0; + reset($lnstring); + $offset = 0; + $strcount = 0; + $prev_epsposbeg = 0; + $textpos = 0; + if ($this->isRTLTextDir()) { + $textpos = $this->wPt; + } + while (preg_match('/([0-9\.\+\-]*)[\s](Td|cm|m|l|c|re)[\s]/x', $pmid, $strpiece, PREG_OFFSET_CAPTURE, $offset) == 1) { + // check if we are inside a string section '[( ... )]' + $stroffset = strpos($pmid, '[(', $offset); + if (($stroffset !== false) AND ($stroffset <= $strpiece[2][1])) { + // set offset to the end of string section + $offset = strpos($pmid, ')]', $stroffset); + while (($offset !== false) AND ($pmid[($offset - 1)] == '\\')) { + $offset = strpos($pmid, ')]', ($offset + 1)); + } + if ($offset === false) { + $this->Error('HTML Justification: malformed PDF code.'); + } + continue; + } + if ($this->isRTLTextDir()) { + $spacew = ($spacewidth * ($nsmax - $ns)); + } else { + $spacew = ($spacewidth * $ns); + } + $offset = $strpiece[2][1] + strlen($strpiece[2][0]); + $epsposend = strpos($pmid, $this->epsmarker.'Q', $offset); + if ($epsposend !== null) { + $epsposend += strlen($this->epsmarker.'Q'); + $epsposbeg = strpos($pmid, 'q'.$this->epsmarker, $offset); + if ($epsposbeg === null) { + $epsposbeg = strpos($pmid, 'q'.$this->epsmarker, ($prev_epsposbeg - 6)); + $prev_epsposbeg = $epsposbeg; + } + if (($epsposbeg > 0) AND ($epsposend > 0) AND ($offset > $epsposbeg) AND ($offset < $epsposend)) { + // shift EPS images + $trx = sprintf('1 0 0 1 %F 0 cm', $spacew); + $pmid_b = substr($pmid, 0, $epsposbeg); + $pmid_m = substr($pmid, $epsposbeg, ($epsposend - $epsposbeg)); + $pmid_e = substr($pmid, $epsposend); + $pmid = $pmid_b."\nq\n".$trx."\n".$pmid_m."\nQ\n".$pmid_e; + $offset = $epsposend; + continue; + } + } + $currentxpos = 0; + // shift blocks of code + switch ($strpiece[2][0]) { + case 'Td': + case 'cm': + case 'm': + case 'l': { + // get current X position + preg_match('/([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s]('.$strpiece[2][0].')([\s]*)/x', $pmid, $xmatches); + if (!isset($xmatches[1])) { + break; + } + $currentxpos = $xmatches[1]; + $textpos = $currentxpos; + if (($strcount <= $maxkk) AND ($strpiece[2][0] == 'Td')) { + $ns = $lnstring[3][$strcount]; + if ($this->isRTLTextDir()) { + $spacew = ($spacewidth * ($nsmax - $ns)); + } + ++$strcount; + } + // justify block + if (preg_match('/([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s]('.$strpiece[2][0].')([\s]*)/x', $pmid, $pmatch) == 1) { + $newpmid = sprintf('%F',(floatval($pmatch[1]) + $spacew)).' '.$pmatch[2].' x*#!#*x'.$pmatch[3].$pmatch[4]; + $pmid = str_replace($pmatch[0], $newpmid, $pmid); + unset($pmatch, $newpmid); + } + break; + } + case 're': { + // justify block + if (!TCPDF_STATIC::empty_string($this->lispacer)) { + $this->lispacer = ''; + continue; + } + preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](re)([\s]*)/x', $pmid, $xmatches); + if (!isset($xmatches[1])) { + break; + } + $currentxpos = $xmatches[1]; + $x_diff = 0; + $w_diff = 0; + if ($this->isRTLTextDir()) { // RTL + if ($currentxpos < $textpos) { + $x_diff = ($spacewidth * ($nsmax - $lnstring[3][$strcount])); + $w_diff = ($spacewidth * $lnstring[2][$strcount]); + } else { + if ($strcount > 0) { + $x_diff = ($spacewidth * ($nsmax - $lnstring[3][($strcount - 1)])); + $w_diff = ($spacewidth * $lnstring[2][($strcount - 1)]); + } + } + } else { // LTR + if ($currentxpos > $textpos) { + if ($strcount > 0) { + $x_diff = ($spacewidth * $lnstring[3][($strcount - 1)]); + } + $w_diff = ($spacewidth * $lnstring[2][$strcount]); + } else { + if ($strcount > 1) { + $x_diff = ($spacewidth * $lnstring[3][($strcount - 2)]); + } + if ($strcount > 0) { + $w_diff = ($spacewidth * $lnstring[2][($strcount - 1)]); + } + } + } + if (preg_match('/('.$xmatches[1].')[\s]('.$xmatches[2].')[\s]('.$xmatches[3].')[\s]('.$strpiece[1][0].')[\s](re)([\s]*)/x', $pmid, $pmatch) == 1) { + $newx = sprintf('%F',(floatval($pmatch[1]) + $x_diff)); + $neww = sprintf('%F',(floatval($pmatch[3]) + $w_diff)); + $newpmid = $newx.' '.$pmatch[2].' '.$neww.' '.$pmatch[4].' x*#!#*x'.$pmatch[5].$pmatch[6]; + $pmid = str_replace($pmatch[0], $newpmid, $pmid); + unset($pmatch, $newpmid, $newx, $neww); + } + break; + } + case 'c': { + // get current X position + preg_match('/([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]([0-9\.\+\-]*)[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x', $pmid, $xmatches); + if (!isset($xmatches[1])) { + break; + } + $currentxpos = $xmatches[1]; + // justify block + if (preg_match('/('.$xmatches[1].')[\s]('.$xmatches[2].')[\s]('.$xmatches[3].')[\s]('.$xmatches[4].')[\s]('.$xmatches[5].')[\s]('.$strpiece[1][0].')[\s](c)([\s]*)/x', $pmid, $pmatch) == 1) { + $newx1 = sprintf('%F',(floatval($pmatch[1]) + $spacew)); + $newx2 = sprintf('%F',(floatval($pmatch[3]) + $spacew)); + $newx3 = sprintf('%F',(floatval($pmatch[5]) + $spacew)); + $newpmid = $newx1.' '.$pmatch[2].' '.$newx2.' '.$pmatch[4].' '.$newx3.' '.$pmatch[6].' x*#!#*x'.$pmatch[7].$pmatch[8]; + $pmid = str_replace($pmatch[0], $newpmid, $pmid); + unset($pmatch, $newpmid, $newx1, $newx2, $newx3); + } + break; + } + } + // shift the annotations and links + $cxpos = ($currentxpos / $this->k); + $lmpos = ($this->lMargin + $this->cell_padding['L'] + $this->feps); + if ($this->inxobj) { + // we are inside an XObject template + foreach ($this->xobjects[$this->xobjid]['annotations'] as $pak => $pac) { + if (($pac['y'] >= $minstartliney) AND (($pac['x'] * $this->k) >= ($currentxpos - $this->feps)) AND (($pac['x'] * $this->k) <= ($currentxpos + $this->feps))) { + if ($cxpos > $lmpos) { + $this->xobjects[$this->xobjid]['annotations'][$pak]['x'] += ($spacew / $this->k); + $this->xobjects[$this->xobjid]['annotations'][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k); + } else { + $this->xobjects[$this->xobjid]['annotations'][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k); + } + break; + } + } + } elseif (isset($this->PageAnnots[$this->page])) { + foreach ($this->PageAnnots[$this->page] as $pak => $pac) { + if (($pac['y'] >= $minstartliney) AND (($pac['x'] * $this->k) >= ($currentxpos - $this->feps)) AND (($pac['x'] * $this->k) <= ($currentxpos + $this->feps))) { + if ($cxpos > $lmpos) { + $this->PageAnnots[$this->page][$pak]['x'] += ($spacew / $this->k); + $this->PageAnnots[$this->page][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k); + } else { + $this->PageAnnots[$this->page][$pak]['w'] += (($spacewidth * $pac['numspaces']) / $this->k); + } + break; + } + } + } + } // end of while + // remove markers + $pmid = str_replace('x*#!#*x', '', $pmid); + if ($this->isUnicodeFont()) { + // multibyte characters + $spacew = $spacewidthu; + if ($this->font_stretching != 100) { + // word spacing is affected by stretching + $spacew /= ($this->font_stretching / 100); + } + // escape special characters + $pos = 0; + $pmid = preg_replace('/[\\\][\(]/x', '\\#!#OP#!#', $pmid); + $pmid = preg_replace('/[\\\][\)]/x', '\\#!#CP#!#', $pmid); + if (preg_match_all('/\[\(([^\)]*)\)\]/x', $pmid, $pamatch) > 0) { + foreach($pamatch[0] as $pk => $pmatch) { + $replace = $pamatch[1][$pk]; + $replace = str_replace('#!#OP#!#', '(', $replace); + $replace = str_replace('#!#CP#!#', ')', $replace); + $newpmid = '[('.str_replace(chr(0).chr(32), ') '.sprintf('%F', $spacew).' (', $replace).')]'; + $pos = strpos($pmid, $pmatch, $pos); + if ($pos !== FALSE) { + $pmid = substr_replace($pmid, $newpmid, $pos, strlen($pmatch)); + } + ++$pos; + } + unset($pamatch); + } + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['outdata'] = $pstart."\n".$pmid."\n".$pend; + } else { + $this->setPageBuffer($startlinepage, $pstart."\n".$pmid."\n".$pend); + } + $endlinepos = strlen($pstart."\n".$pmid."\n"); + } else { + // non-unicode (single-byte characters) + if ($this->font_stretching != 100) { + // word spacing (Tw) is affected by stretching + $spacewidth /= ($this->font_stretching / 100); + } + $rs = sprintf('%F Tw', $spacewidth); + $pmid = preg_replace("/\[\(/x", $rs.' [(', $pmid); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['outdata'] = $pstart."\n".$pmid."\nBT 0 Tw ET\n".$pend; + } else { + $this->setPageBuffer($startlinepage, $pstart."\n".$pmid."\nBT 0 Tw ET\n".$pend); + } + $endlinepos = strlen($pstart."\n".$pmid."\nBT 0 Tw ET\n"); + } + } + } // end of J + } // end if $startlinex + if (($t_x != 0) OR ($yshift < 0)) { + // shift the line + $trx = sprintf('1 0 0 1 %F %F cm', ($t_x * $this->k), ($yshift * $this->k)); + $pstart .= "\nq\n".$trx."\n".$pmid."\nQ\n"; + $endlinepos = strlen($pstart); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['outdata'] = $pstart.$pend; + foreach ($this->xobjects[$this->xobjid]['annotations'] as $pak => $pac) { + if ($pak >= $pask) { + $this->xobjects[$this->xobjid]['annotations'][$pak]['x'] += $t_x; + $this->xobjects[$this->xobjid]['annotations'][$pak]['y'] -= $yshift; + } + } + } else { + $this->setPageBuffer($startlinepage, $pstart.$pend); + // shift the annotations and links + if (isset($this->PageAnnots[$this->page])) { + foreach ($this->PageAnnots[$this->page] as $pak => $pac) { + if ($pak >= $pask) { + $this->PageAnnots[$this->page][$pak]['x'] += $t_x; + $this->PageAnnots[$this->page][$pak]['y'] -= $yshift; + } + } + } + } + $this->y -= $yshift; + } + } + $pbrk = $this->checkPageBreak($this->lasth); + $this->newline = false; + $startlinex = $this->x; + $startliney = $this->y; + if ($dom[$dom[$key]['parent']]['value'] == 'sup') { + $startliney -= ((0.3 * $this->FontSizePt) / $this->k); + } elseif ($dom[$dom[$key]['parent']]['value'] == 'sub') { + $startliney -= (($this->FontSizePt / 0.7) / $this->k); + } else { + $minstartliney = $startliney; + $maxbottomliney = ($this->y + $this->getCellHeight($fontsize / $this->k)); + } + $startlinepage = $this->page; + if (isset($endlinepos) AND (!$pbrk)) { + $startlinepos = $endlinepos; + } else { + if ($this->inxobj) { + // we are inside an XObject template + $startlinepos = strlen($this->xobjects[$this->xobjid]['outdata']); + } elseif (!$this->InFooter) { + if (isset($this->footerlen[$this->page])) { + $this->footerpos[$this->page] = $this->pagelen[$this->page] - $this->footerlen[$this->page]; + } else { + $this->footerpos[$this->page] = $this->pagelen[$this->page]; + } + $startlinepos = $this->footerpos[$this->page]; + } else { + $startlinepos = $this->pagelen[$this->page]; + } + } + unset($endlinepos); + $plalign = $lalign; + if (isset($this->PageAnnots[$this->page])) { + $pask = count($this->PageAnnots[$this->page]); + } else { + $pask = 0; + } + if (!($dom[$key]['tag'] AND !$dom[$key]['opening'] AND ($dom[$key]['value'] == 'table') + AND (isset($this->emptypagemrk[$this->page])) + AND ($this->emptypagemrk[$this->page] == $this->pagelen[$this->page]))) { + $this->SetFont($fontname, $fontstyle, $fontsize); + if ($wfill) { + $this->SetFillColorArray($this->bgcolor); + } + } + } // end newline + if (isset($opentagpos)) { + unset($opentagpos); + } + if ($dom[$key]['tag']) { + if ($dom[$key]['opening']) { + // get text indentation (if any) + if (isset($dom[$key]['text-indent']) AND $dom[$key]['block']) { + $this->textindent = $dom[$key]['text-indent']; + $this->newline = true; + } + // table + if (($dom[$key]['value'] == 'table') AND isset($dom[$key]['cols']) AND ($dom[$key]['cols'] > 0)) { + // available page width + if ($this->rtl) { + $wtmp = $this->x - $this->lMargin; + } else { + $wtmp = $this->w - $this->rMargin - $this->x; + } + // get cell spacing + if (isset($dom[$key]['attribute']['cellspacing'])) { + $clsp = $this->getHTMLUnitToUnits($dom[$key]['attribute']['cellspacing'], 1, 'px'); + $cellspacing = array('H' => $clsp, 'V' => $clsp); + } elseif (isset($dom[$key]['border-spacing'])) { + $cellspacing = $dom[$key]['border-spacing']; + } else { + $cellspacing = array('H' => 0, 'V' => 0); + } + // table width + if (isset($dom[$key]['width'])) { + $table_width = $this->getHTMLUnitToUnits($dom[$key]['width'], $wtmp, 'px'); + } else { + $table_width = $wtmp; + } + $table_width -= (2 * $cellspacing['H']); + if (!$this->inthead) { + $this->y += $cellspacing['V']; + } + if ($this->rtl) { + $cellspacingx = -$cellspacing['H']; + } else { + $cellspacingx = $cellspacing['H']; + } + // total table width without cellspaces + $table_columns_width = ($table_width - ($cellspacing['H'] * ($dom[$key]['cols'] - 1))); + // minimum column width + $table_min_column_width = ($table_columns_width / $dom[$key]['cols']); + // array of custom column widths + $table_colwidths = array_fill(0, $dom[$key]['cols'], $table_min_column_width); + } + // table row + if ($dom[$key]['value'] == 'tr') { + // reset column counter + $colid = 0; + } + // table cell + if (($dom[$key]['value'] == 'td') OR ($dom[$key]['value'] == 'th')) { + $trid = $dom[$key]['parent']; + $table_el = $dom[$trid]['parent']; + if (!isset($dom[$table_el]['cols'])) { + $dom[$table_el]['cols'] = $dom[$trid]['cols']; + } + // store border info + $tdborder = 0; + if (isset($dom[$key]['border']) AND !empty($dom[$key]['border'])) { + $tdborder = $dom[$key]['border']; + } + $colspan = intval($dom[$key]['attribute']['colspan']); + if ($colspan <= 0) { + $colspan = 1; + } + $old_cell_padding = $this->cell_padding; + if (isset($dom[($dom[$trid]['parent'])]['attribute']['cellpadding'])) { + $crclpd = $this->getHTMLUnitToUnits($dom[($dom[$trid]['parent'])]['attribute']['cellpadding'], 1, 'px'); + $current_cell_padding = array('L' => $crclpd, 'T' => $crclpd, 'R' => $crclpd, 'B' => $crclpd); + } elseif (isset($dom[($dom[$trid]['parent'])]['padding'])) { + $current_cell_padding = $dom[($dom[$trid]['parent'])]['padding']; + } else { + $current_cell_padding = array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0); + } + $this->cell_padding = $current_cell_padding; + if (isset($dom[$key]['height'])) { + // minimum cell height + $cellh = $this->getHTMLUnitToUnits($dom[$key]['height'], 0, 'px'); + } else { + $cellh = 0; + } + if (isset($dom[$key]['content'])) { + $cell_content = stripslashes($dom[$key]['content']); + } else { + $cell_content = ' '; + } + $tagtype = $dom[$key]['value']; + $parentid = $key; + while (($key < $maxel) AND (!(($dom[$key]['tag']) AND (!$dom[$key]['opening']) AND ($dom[$key]['value'] == $tagtype) AND ($dom[$key]['parent'] == $parentid)))) { + // move $key index forward + ++$key; + } + if (!isset($dom[$trid]['startpage'])) { + $dom[$trid]['startpage'] = $this->page; + } else { + $this->setPage($dom[$trid]['startpage']); + } + if (!isset($dom[$trid]['startcolumn'])) { + $dom[$trid]['startcolumn'] = $this->current_column; + } elseif ($this->current_column != $dom[$trid]['startcolumn']) { + $tmpx = $this->x; + $this->selectColumn($dom[$trid]['startcolumn']); + $this->x = $tmpx; + } + if (!isset($dom[$trid]['starty'])) { + $dom[$trid]['starty'] = $this->y; + } else { + $this->y = $dom[$trid]['starty']; + } + if (!isset($dom[$trid]['startx'])) { + $dom[$trid]['startx'] = $this->x; + $this->x += $cellspacingx; + } else { + $this->x += ($cellspacingx / 2); + } + if (isset($dom[$parentid]['attribute']['rowspan'])) { + $rowspan = intval($dom[$parentid]['attribute']['rowspan']); + } else { + $rowspan = 1; + } + // skip row-spanned cells started on the previous rows + if (isset($dom[$table_el]['rowspans'])) { + $rsk = 0; + $rskmax = count($dom[$table_el]['rowspans']); + while ($rsk < $rskmax) { + $trwsp = $dom[$table_el]['rowspans'][$rsk]; + $rsstartx = $trwsp['startx']; + $rsendx = $trwsp['endx']; + // account for margin changes + if ($trwsp['startpage'] < $this->page) { + if (($this->rtl) AND ($this->pagedim[$this->page]['orm'] != $this->pagedim[$trwsp['startpage']]['orm'])) { + $dl = ($this->pagedim[$this->page]['orm'] - $this->pagedim[$trwsp['startpage']]['orm']); + $rsstartx -= $dl; + $rsendx -= $dl; + } elseif ((!$this->rtl) AND ($this->pagedim[$this->page]['olm'] != $this->pagedim[$trwsp['startpage']]['olm'])) { + $dl = ($this->pagedim[$this->page]['olm'] - $this->pagedim[$trwsp['startpage']]['olm']); + $rsstartx += $dl; + $rsendx += $dl; + } + } + if (($trwsp['rowspan'] > 0) + AND ($rsstartx > ($this->x - $cellspacing['H'] - $current_cell_padding['L'] - $this->feps)) + AND ($rsstartx < ($this->x + $cellspacing['H'] + $current_cell_padding['R'] + $this->feps)) + AND (($trwsp['starty'] < ($this->y - $this->feps)) OR ($trwsp['startpage'] < $this->page) OR ($trwsp['startcolumn'] < $this->current_column))) { + // set the starting X position of the current cell + $this->x = $rsendx + $cellspacingx; + // increment column indicator + $colid += $trwsp['colspan']; + if (($trwsp['rowspan'] == 1) + AND (isset($dom[$trid]['endy'])) + AND (isset($dom[$trid]['endpage'])) + AND (isset($dom[$trid]['endcolumn'])) + AND ($trwsp['endpage'] == $dom[$trid]['endpage']) + AND ($trwsp['endcolumn'] == $dom[$trid]['endcolumn'])) { + // set ending Y position for row + $dom[$table_el]['rowspans'][$rsk]['endy'] = max($dom[$trid]['endy'], $trwsp['endy']); + $dom[$trid]['endy'] = $dom[$table_el]['rowspans'][$rsk]['endy']; + } + $rsk = 0; + } else { + ++$rsk; + } + } + } + if (isset($dom[$parentid]['width'])) { + // user specified width + $cellw = $this->getHTMLUnitToUnits($dom[$parentid]['width'], $table_columns_width, 'px'); + $tmpcw = ($cellw / $colspan); + for ($i = 0; $i < $colspan; ++$i) { + $table_colwidths[($colid + $i)] = $tmpcw; + } + } else { + // inherit column width + $cellw = 0; + for ($i = 0; $i < $colspan; ++$i) { + $cellw += $table_colwidths[($colid + $i)]; + } + } + $cellw += (($colspan - 1) * $cellspacing['H']); + // increment column indicator + $colid += $colspan; + // add rowspan information to table element + if ($rowspan > 1) { + $trsid = array_push($dom[$table_el]['rowspans'], array('trid' => $trid, 'rowspan' => $rowspan, 'mrowspan' => $rowspan, 'colspan' => $colspan, 'startpage' => $this->page, 'startcolumn' => $this->current_column, 'startx' => $this->x, 'starty' => $this->y)); + } + $cellid = array_push($dom[$trid]['cellpos'], array('startx' => $this->x)); + if ($rowspan > 1) { + $dom[$trid]['cellpos'][($cellid - 1)]['rowspanid'] = ($trsid - 1); + } + // push background colors + if (isset($dom[$parentid]['bgcolor']) AND ($dom[$parentid]['bgcolor'] !== false)) { + $dom[$trid]['cellpos'][($cellid - 1)]['bgcolor'] = $dom[$parentid]['bgcolor']; + } + // store border info + if (isset($tdborder) AND !empty($tdborder)) { + $dom[$trid]['cellpos'][($cellid - 1)]['border'] = $tdborder; + } + $prevLastH = $this->lasth; + // store some info for multicolumn mode + if ($this->rtl) { + $this->colxshift['x'] = $this->w - $this->x - $this->rMargin; + } else { + $this->colxshift['x'] = $this->x - $this->lMargin; + } + $this->colxshift['s'] = $cellspacing; + $this->colxshift['p'] = $current_cell_padding; + // ****** write the cell content ****** + $this->MultiCell($cellw, $cellh, $cell_content, false, $lalign, false, 2, '', '', true, 0, true, true, 0, 'T', false); + // restore some values + $this->colxshift = array('x' => 0, 's' => array('H' => 0, 'V' => 0), 'p' => array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0)); + $this->lasth = $prevLastH; + $this->cell_padding = $old_cell_padding; + $dom[$trid]['cellpos'][($cellid - 1)]['endx'] = $this->x; + // update the end of row position + if ($rowspan <= 1) { + if (isset($dom[$trid]['endy'])) { + if (($this->page == $dom[$trid]['endpage']) AND ($this->current_column == $dom[$trid]['endcolumn'])) { + $dom[$trid]['endy'] = max($this->y, $dom[$trid]['endy']); + } elseif (($this->page > $dom[$trid]['endpage']) OR ($this->current_column > $dom[$trid]['endcolumn'])) { + $dom[$trid]['endy'] = $this->y; + } + } else { + $dom[$trid]['endy'] = $this->y; + } + if (isset($dom[$trid]['endpage'])) { + $dom[$trid]['endpage'] = max($this->page, $dom[$trid]['endpage']); + } else { + $dom[$trid]['endpage'] = $this->page; + } + if (isset($dom[$trid]['endcolumn'])) { + $dom[$trid]['endcolumn'] = max($this->current_column, $dom[$trid]['endcolumn']); + } else { + $dom[$trid]['endcolumn'] = $this->current_column; + } + } else { + // account for row-spanned cells + $dom[$table_el]['rowspans'][($trsid - 1)]['endx'] = $this->x; + $dom[$table_el]['rowspans'][($trsid - 1)]['endy'] = $this->y; + $dom[$table_el]['rowspans'][($trsid - 1)]['endpage'] = $this->page; + $dom[$table_el]['rowspans'][($trsid - 1)]['endcolumn'] = $this->current_column; + } + if (isset($dom[$table_el]['rowspans'])) { + // update endy and endpage on rowspanned cells + foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) { + if ($trwsp['rowspan'] > 0) { + if (isset($dom[$trid]['endpage'])) { + if (($trwsp['endpage'] == $dom[$trid]['endpage']) AND ($trwsp['endcolumn'] == $dom[$trid]['endcolumn'])) { + $dom[$table_el]['rowspans'][$k]['endy'] = max($dom[$trid]['endy'], $trwsp['endy']); + } elseif (($trwsp['endpage'] < $dom[$trid]['endpage']) OR ($trwsp['endcolumn'] < $dom[$trid]['endcolumn'])) { + $dom[$table_el]['rowspans'][$k]['endy'] = $dom[$trid]['endy']; + $dom[$table_el]['rowspans'][$k]['endpage'] = $dom[$trid]['endpage']; + $dom[$table_el]['rowspans'][$k]['endcolumn'] = $dom[$trid]['endcolumn']; + } else { + $dom[$trid]['endy'] = $this->pagedim[$dom[$trid]['endpage']]['hk'] - $this->pagedim[$dom[$trid]['endpage']]['bm']; + } + } + } + } + } + $this->x += ($cellspacingx / 2); + } else { + // opening tag (or self-closing tag) + if (!isset($opentagpos)) { + if ($this->inxobj) { + // we are inside an XObject template + $opentagpos = strlen($this->xobjects[$this->xobjid]['outdata']); + } elseif (!$this->InFooter) { + if (isset($this->footerlen[$this->page])) { + $this->footerpos[$this->page] = $this->pagelen[$this->page] - $this->footerlen[$this->page]; + } else { + $this->footerpos[$this->page] = $this->pagelen[$this->page]; + } + $opentagpos = $this->footerpos[$this->page]; + } + } + $dom = $this->openHTMLTagHandler($dom, $key, $cell); + } + } else { // closing tag + $prev_numpages = $this->numpages; + $old_bordermrk = $this->bordermrk[$this->page]; + $dom = $this->closeHTMLTagHandler($dom, $key, $cell, $maxbottomliney); + if ($this->bordermrk[$this->page] > $old_bordermrk) { + $startlinepos += ($this->bordermrk[$this->page] - $old_bordermrk); + } + if ($prev_numpages > $this->numpages) { + $startlinepage = $this->page; + } + } + } elseif (strlen($dom[$key]['value']) > 0) { + // print list-item + if (!TCPDF_STATIC::empty_string($this->lispacer) AND ($this->lispacer != '^')) { + $this->SetFont($pfontname, $pfontstyle, $pfontsize); + $this->resetLastH(); + $minstartliney = $this->y; + $maxbottomliney = ($startliney + $this->getCellHeight($this->FontSize)); + if (is_numeric($pfontsize) AND ($pfontsize > 0)) { + $this->putHtmlListBullet($this->listnum, $this->lispacer, $pfontsize); + } + $this->SetFont($curfontname, $curfontstyle, $curfontsize); + $this->resetLastH(); + if (is_numeric($pfontsize) AND ($pfontsize > 0) AND is_numeric($curfontsize) AND ($curfontsize > 0) AND ($pfontsize != $curfontsize)) { + $pfontascent = $this->getFontAscent($pfontname, $pfontstyle, $pfontsize); + $pfontdescent = $this->getFontDescent($pfontname, $pfontstyle, $pfontsize); + $this->y += ($this->getCellHeight(($pfontsize - $curfontsize) / $this->k) + $pfontascent - $curfontascent - $pfontdescent + $curfontdescent) / 2; + $minstartliney = min($this->y, $minstartliney); + $maxbottomliney = max(($this->y + $this->getCellHeight($pfontsize / $this->k)), $maxbottomliney); + } + } + // text + $this->htmlvspace = 0; + if ((!$this->premode) AND $this->isRTLTextDir()) { + // reverse spaces order + $lsp = ''; // left spaces + $rsp = ''; // right spaces + if (preg_match('/^('.$this->re_space['p'].'+)/'.$this->re_space['m'], $dom[$key]['value'], $matches)) { + $lsp = $matches[1]; + } + if (preg_match('/('.$this->re_space['p'].'+)$/'.$this->re_space['m'], $dom[$key]['value'], $matches)) { + $rsp = $matches[1]; + } + $dom[$key]['value'] = $rsp.$this->stringTrim($dom[$key]['value']).$lsp; + } + if ($newline) { + if (!$this->premode) { + $prelen = strlen($dom[$key]['value']); + if ($this->isRTLTextDir()) { + // right trim except non-breaking space + $dom[$key]['value'] = $this->stringRightTrim($dom[$key]['value']); + } else { + // left trim except non-breaking space + $dom[$key]['value'] = $this->stringLeftTrim($dom[$key]['value']); + } + $postlen = strlen($dom[$key]['value']); + if (($postlen == 0) AND ($prelen > 0)) { + $dom[$key]['trimmed_space'] = true; + } + } + $newline = false; + $firstblock = true; + } else { + $firstblock = false; + // replace empty multiple spaces string with a single space + $dom[$key]['value'] = preg_replace('/^'.$this->re_space['p'].'+$/'.$this->re_space['m'], chr(32), $dom[$key]['value']); + } + $strrest = ''; + if ($this->rtl) { + $this->x -= $this->textindent; + } else { + $this->x += $this->textindent; + } + if (!isset($dom[$key]['trimmed_space']) OR !$dom[$key]['trimmed_space']) { + $strlinelen = $this->GetStringWidth($dom[$key]['value']); + if (!empty($this->HREF) AND (isset($this->HREF['url']))) { + // HTML
      Link + $hrefcolor = ''; + if (isset($dom[($dom[$key]['parent'])]['fgcolor']) AND ($dom[($dom[$key]['parent'])]['fgcolor'] !== false)) { + $hrefcolor = $dom[($dom[$key]['parent'])]['fgcolor']; + } + $hrefstyle = -1; + if (isset($dom[($dom[$key]['parent'])]['fontstyle']) AND ($dom[($dom[$key]['parent'])]['fontstyle'] !== false)) { + $hrefstyle = $dom[($dom[$key]['parent'])]['fontstyle']; + } + $strrest = $this->addHtmlLink($this->HREF['url'], $dom[$key]['value'], $wfill, true, $hrefcolor, $hrefstyle, true); + } else { + $wadj = 0; // space to leave for block continuity + if ($this->rtl) { + $cwa = ($this->x - $this->lMargin); + } else { + $cwa = ($this->w - $this->rMargin - $this->x); + } + if (($strlinelen < $cwa) AND (isset($dom[($key + 1)])) AND ($dom[($key + 1)]['tag']) AND (!$dom[($key + 1)]['block'])) { + // check the next text blocks for continuity + $nkey = ($key + 1); + $write_block = true; + $same_textdir = true; + $tmp_fontname = $this->FontFamily; + $tmp_fontstyle = $this->FontStyle; + $tmp_fontsize = $this->FontSizePt; + while ($write_block AND isset($dom[$nkey])) { + if ($dom[$nkey]['tag']) { + if ($dom[$nkey]['block']) { + // end of block + $write_block = false; + } + $tmp_fontname = isset($dom[$nkey]['fontname']) ? $dom[$nkey]['fontname'] : $this->FontFamily; + $tmp_fontstyle = isset($dom[$nkey]['fontstyle']) ? $dom[$nkey]['fontstyle'] : $this->FontStyle; + $tmp_fontsize = isset($dom[$nkey]['fontsize']) ? $dom[$nkey]['fontsize'] : $this->FontSizePt; + $same_textdir = ($dom[$nkey]['dir'] == $dom[$key]['dir']); + } else { + $nextstr = TCPDF_STATIC::pregSplit('/'.$this->re_space['p'].'+/', $this->re_space['m'], $dom[$nkey]['value']); + if (isset($nextstr[0]) AND $same_textdir) { + $wadj += $this->GetStringWidth($nextstr[0], $tmp_fontname, $tmp_fontstyle, $tmp_fontsize); + if (isset($nextstr[1])) { + $write_block = false; + } + } + } + ++$nkey; + } + } + if (($wadj > 0) AND (($strlinelen + $wadj) >= $cwa)) { + $wadj = 0; + $nextstr = TCPDF_STATIC::pregSplit('/'.$this->re_space['p'].'/', $this->re_space['m'], $dom[$key]['value']); + $numblks = count($nextstr); + if ($numblks > 1) { + // try to split on blank spaces + $wadj = ($cwa - $strlinelen + $this->GetStringWidth($nextstr[($numblks - 1)])); + } else { + // set the entire block on new line + $wadj = $this->GetStringWidth($nextstr[0]); + } + } + // check for reversed text direction + if (($wadj > 0) AND (($this->rtl AND ($this->tmprtl === 'L')) OR (!$this->rtl AND ($this->tmprtl === 'R')))) { + // LTR text on RTL direction or RTL text on LTR direction + $reverse_dir = true; + $this->rtl = !$this->rtl; + $revshift = ($strlinelen + $wadj + 0.000001); // add little quantity for rounding problems + if ($this->rtl) { + $this->x += $revshift; + } else { + $this->x -= $revshift; + } + $xws = $this->x; + } + // ****** write only until the end of the line and get the rest ****** + $strrest = $this->Write($this->lasth, $dom[$key]['value'], '', $wfill, '', false, 0, true, $firstblock, 0, $wadj); + // restore default direction + if ($reverse_dir AND ($wadj == 0)) { + $this->x = $xws; + $this->rtl = !$this->rtl; + $reverse_dir = false; + } + } + } + $this->textindent = 0; + if (strlen($strrest) > 0) { + // store the remaining string on the previous $key position + $this->newline = true; + if ($strrest == $dom[$key]['value']) { + // used to avoid infinite loop + ++$loop; + } else { + $loop = 0; + } + $dom[$key]['value'] = $strrest; + if ($cell) { + if ($this->rtl) { + $this->x -= $this->cell_padding['R']; + } else { + $this->x += $this->cell_padding['L']; + } + } + if ($loop < 3) { + --$key; + } + } else { + $loop = 0; + // add the positive font spacing of the last character (if any) + if ($this->font_spacing > 0) { + if ($this->rtl) { + $this->x -= $this->font_spacing; + } else { + $this->x += $this->font_spacing; + } + } + } + } + ++$key; + if (isset($dom[$key]['tag']) AND $dom[$key]['tag'] AND (!isset($dom[$key]['opening']) OR !$dom[$key]['opening']) AND isset($dom[($dom[$key]['parent'])]['attribute']['nobr']) AND ($dom[($dom[$key]['parent'])]['attribute']['nobr'] == 'true')) { + // check if we are on a new page or on a new column + if ((!$undo) AND (($this->y < $this->start_transaction_y) OR (($dom[$key]['value'] == 'tr') AND ($dom[($dom[$key]['parent'])]['endy'] < $this->start_transaction_y)))) { + // we are on a new page or on a new column and the total object height is less than the available vertical space. + // restore previous object + $this->rollbackTransaction(true); + // restore previous values + foreach ($this_method_vars as $vkey => $vval) { + $$vkey = $vval; + } + if (!empty($dom[$key]['thead'])) { + $this->inthead = true; + } + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $pre_y = $this->y; + if ((!$this->checkPageBreak($this->PageBreakTrigger + 1)) AND ($this->y < $pre_y)) { + $startliney = $this->y; + } + $undo = true; // avoid infinite loop + } else { + $undo = false; + } + } + } // end for each $key + // align the last line + if (isset($startlinex)) { + $yshift = ($minstartliney - $startliney); + if (($yshift > 0) OR ($this->page > $startlinepage)) { + $yshift = 0; + } + $t_x = 0; + // the last line must be shifted to be aligned as requested + $linew = abs($this->endlinex - $startlinex); + if ($this->inxobj) { + // we are inside an XObject template + $pstart = substr($this->xobjects[$this->xobjid]['outdata'], 0, $startlinepos); + if (isset($opentagpos)) { + $midpos = $opentagpos; + } else { + $midpos = 0; + } + if ($midpos > 0) { + $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos, ($midpos - $startlinepos)); + $pend = substr($this->xobjects[$this->xobjid]['outdata'], $midpos); + } else { + $pmid = substr($this->xobjects[$this->xobjid]['outdata'], $startlinepos); + $pend = ''; + } + } else { + $pstart = substr($this->getPageBuffer($startlinepage), 0, $startlinepos); + if (isset($opentagpos) AND isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) { + $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage]; + $midpos = min($opentagpos, $this->footerpos[$startlinepage]); + } elseif (isset($opentagpos)) { + $midpos = $opentagpos; + } elseif (isset($this->footerlen[$startlinepage]) AND (!$this->InFooter)) { + $this->footerpos[$startlinepage] = $this->pagelen[$startlinepage] - $this->footerlen[$startlinepage]; + $midpos = $this->footerpos[$startlinepage]; + } else { + $midpos = 0; + } + if ($midpos > 0) { + $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos, ($midpos - $startlinepos)); + $pend = substr($this->getPageBuffer($startlinepage), $midpos); + } else { + $pmid = substr($this->getPageBuffer($startlinepage), $startlinepos); + $pend = ''; + } + } + if ((isset($plalign) AND ((($plalign == 'C') OR (($plalign == 'R') AND (!$this->rtl)) OR (($plalign == 'L') AND ($this->rtl)))))) { + // calculate shifting amount + $tw = $w; + if ($this->lMargin != $prevlMargin) { + $tw += ($prevlMargin - $this->lMargin); + } + if ($this->rMargin != $prevrMargin) { + $tw += ($prevrMargin - $this->rMargin); + } + $one_space_width = $this->GetStringWidth(chr(32)); + $no = 0; // number of spaces on a line contained on a single block + if ($this->isRTLTextDir()) { // RTL + // remove left space if exist + $pos1 = TCPDF_STATIC::revstrpos($pmid, '[('); + if ($pos1 > 0) { + $pos1 = intval($pos1); + if ($this->isUnicodeFont()) { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(0).chr(32))); + $spacelen = 2; + } else { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, '[('.chr(32))); + $spacelen = 1; + } + if ($pos1 == $pos2) { + $pmid = substr($pmid, 0, ($pos1 + 2)).substr($pmid, ($pos1 + 2 + $spacelen)); + if (substr($pmid, $pos1, 4) == '[()]') { + $linew -= $one_space_width; + } elseif ($pos1 == strpos($pmid, '[(')) { + $no = 1; + } + } + } + } else { // LTR + // remove right space if exist + $pos1 = TCPDF_STATIC::revstrpos($pmid, ')]'); + if ($pos1 > 0) { + $pos1 = intval($pos1); + if ($this->isUnicodeFont()) { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(0).chr(32).')]')) + 2; + $spacelen = 2; + } else { + $pos2 = intval(TCPDF_STATIC::revstrpos($pmid, chr(32).')]')) + 1; + $spacelen = 1; + } + if ($pos1 == $pos2) { + $pmid = substr($pmid, 0, ($pos1 - $spacelen)).substr($pmid, $pos1); + $linew -= $one_space_width; + } + } + } + $mdiff = ($tw - $linew); + if ($plalign == 'C') { + if ($this->rtl) { + $t_x = -($mdiff / 2); + } else { + $t_x = ($mdiff / 2); + } + } elseif ($plalign == 'R') { + // right alignment on LTR document + $t_x = $mdiff; + } elseif ($plalign == 'L') { + // left alignment on RTL document + $t_x = -$mdiff; + } + } // end if startlinex + if (($t_x != 0) OR ($yshift < 0)) { + // shift the line + $trx = sprintf('1 0 0 1 %F %F cm', ($t_x * $this->k), ($yshift * $this->k)); + $pstart .= "\nq\n".$trx."\n".$pmid."\nQ\n"; + $endlinepos = strlen($pstart); + if ($this->inxobj) { + // we are inside an XObject template + $this->xobjects[$this->xobjid]['outdata'] = $pstart.$pend; + foreach ($this->xobjects[$this->xobjid]['annotations'] as $pak => $pac) { + if ($pak >= $pask) { + $this->xobjects[$this->xobjid]['annotations'][$pak]['x'] += $t_x; + $this->xobjects[$this->xobjid]['annotations'][$pak]['y'] -= $yshift; + } + } + } else { + $this->setPageBuffer($startlinepage, $pstart.$pend); + // shift the annotations and links + if (isset($this->PageAnnots[$this->page])) { + foreach ($this->PageAnnots[$this->page] as $pak => $pac) { + if ($pak >= $pask) { + $this->PageAnnots[$this->page][$pak]['x'] += $t_x; + $this->PageAnnots[$this->page][$pak]['y'] -= $yshift; + } + } + } + } + $this->y -= $yshift; + $yshift = 0; + } + } + // restore previous values + $this->setGraphicVars($gvars); + if ($this->num_columns > 1) { + $this->selectColumn(); + } elseif ($this->page > $prevPage) { + $this->lMargin = $this->pagedim[$this->page]['olm']; + $this->rMargin = $this->pagedim[$this->page]['orm']; + } + // restore previous list state + $this->cell_height_ratio = $prev_cell_height_ratio; + $this->listnum = $prev_listnum; + $this->listordered = $prev_listordered; + $this->listcount = $prev_listcount; + $this->lispacer = $prev_lispacer; + if ($ln AND (!($cell AND ($dom[$key-1]['value'] == 'table')))) { + $this->Ln($this->lasth); + if ($this->y < $maxbottomliney) { + $this->y = $maxbottomliney; + } + } + unset($dom); + } + + /** + * Process opening tags. + * @param $dom (array) html dom array + * @param $key (int) current element id + * @param $cell (boolean) if true add the default left (or right if RTL) padding to each new line (default false). + * @return $dom array + * @protected + */ + protected function openHTMLTagHandler($dom, $key, $cell) { + $tag = $dom[$key]; + $parent = $dom[($dom[$key]['parent'])]; + $firsttag = ($key == 1); + // check for text direction attribute + if (isset($tag['dir'])) { + $this->setTempRTL($tag['dir']); + } else { + $this->tmprtl = false; + } + if ($tag['block']) { + $hbz = 0; // distance from y to line bottom + $hb = 0; // vertical space between block tags + // calculate vertical space for block tags + if (isset($this->tagvspaces[$tag['value']][0]['h']) AND ($this->tagvspaces[$tag['value']][0]['h'] >= 0)) { + $cur_h = $this->tagvspaces[$tag['value']][0]['h']; + } elseif (isset($tag['fontsize'])) { + $cur_h = $this->getCellHeight($tag['fontsize'] / $this->k); + } else { + $cur_h = $this->getCellHeight($this->FontSize); + } + if (isset($this->tagvspaces[$tag['value']][0]['n'])) { + $on = $this->tagvspaces[$tag['value']][0]['n']; + } elseif (preg_match('/[h][0-9]/', $tag['value']) > 0) { + $on = 0.6; + } else { + $on = 1; + } + if ((!isset($this->tagvspaces[$tag['value']])) AND (in_array($tag['value'], array('div', 'dt', 'dd', 'li', 'br', 'hr')))) { + $hb = 0; + } else { + $hb = ($on * $cur_h); + } + if (($this->htmlvspace <= 0) AND ($on > 0)) { + if (isset($parent['fontsize'])) { + $hbz = (($parent['fontsize'] / $this->k) * $this->cell_height_ratio); + } else { + $hbz = $this->getCellHeight($this->FontSize); + } + } + if (isset($dom[($key - 1)]) AND ($dom[($key - 1)]['value'] == 'table')) { + // fix vertical space after table + $hbz = 0; + } + // closing vertical space + $hbc = 0; + if (isset($this->tagvspaces[$tag['value']][1]['h']) AND ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) { + $pre_h = $this->tagvspaces[$tag['value']][1]['h']; + } elseif (isset($parent['fontsize'])) { + $pre_h = $this->getCellHeight($parent['fontsize'] / $this->k); + } else { + $pre_h = $this->getCellHeight($this->FontSize); + } + if (isset($this->tagvspaces[$tag['value']][1]['n'])) { + $cn = $this->tagvspaces[$tag['value']][1]['n']; + } elseif (preg_match('/[h][0-9]/', $tag['value']) > 0) { + $cn = 0.6; + } else { + $cn = 1; + } + if (isset($this->tagvspaces[$tag['value']][1])) { + $hbc = ($cn * $pre_h); + } + } + // Opening tag + switch($tag['value']) { + case 'table': { + $cp = 0; + $cs = 0; + $dom[$key]['rowspans'] = array(); + if (!isset($dom[$key]['attribute']['nested']) OR ($dom[$key]['attribute']['nested'] != 'true')) { + $this->htmlvspace = 0; + // set table header + if (!TCPDF_STATIC::empty_string($dom[$key]['thead'])) { + // set table header + $this->thead = $dom[$key]['thead']; + if (!isset($this->theadMargins) OR (empty($this->theadMargins))) { + $this->theadMargins = array(); + $this->theadMargins['cell_padding'] = $this->cell_padding; + $this->theadMargins['lmargin'] = $this->lMargin; + $this->theadMargins['rmargin'] = $this->rMargin; + $this->theadMargins['page'] = $this->page; + $this->theadMargins['cell'] = $cell; + $this->theadMargins['gvars'] = $this->getGraphicVars(); + } + } + } + // store current margins and page + $dom[$key]['old_cell_padding'] = $this->cell_padding; + if (isset($tag['attribute']['cellpadding'])) { + $pad = $this->getHTMLUnitToUnits($tag['attribute']['cellpadding'], 1, 'px'); + $this->SetCellPadding($pad); + } elseif (isset($tag['padding'])) { + $this->cell_padding = $tag['padding']; + } + if (isset($tag['attribute']['cellspacing'])) { + $cs = $this->getHTMLUnitToUnits($tag['attribute']['cellspacing'], 1, 'px'); + } elseif (isset($tag['border-spacing'])) { + $cs = $tag['border-spacing']['V']; + } + $prev_y = $this->y; + if ($this->checkPageBreak(((2 * $cp) + (2 * $cs) + $this->lasth), '', false) OR ($this->y < $prev_y)) { + $this->inthead = true; + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + } + break; + } + case 'tr': { + // array of columns positions + $dom[$key]['cellpos'] = array(); + break; + } + case 'hr': { + if ((isset($tag['height'])) AND ($tag['height'] != '')) { + $hrHeight = $this->getHTMLUnitToUnits($tag['height'], 1, 'px'); + } else { + $hrHeight = $this->GetLineWidth(); + } + $this->addHTMLVertSpace($hbz, max($hb, ($hrHeight / 2)), $cell, $firsttag); + $x = $this->GetX(); + $y = $this->GetY(); + $wtmp = $this->w - $this->lMargin - $this->rMargin; + if ($cell) { + $wtmp -= ($this->cell_padding['L'] + $this->cell_padding['R']); + } + if ((isset($tag['width'])) AND ($tag['width'] != '')) { + $hrWidth = $this->getHTMLUnitToUnits($tag['width'], $wtmp, 'px'); + } else { + $hrWidth = $wtmp; + } + $prevlinewidth = $this->GetLineWidth(); + $this->SetLineWidth($hrHeight); + $this->Line($x, $y, $x + $hrWidth, $y); + $this->SetLineWidth($prevlinewidth); + $this->addHTMLVertSpace(max($hbc, ($hrHeight / 2)), 0, $cell, !isset($dom[($key + 1)])); + break; + } + case 'a': { + if (array_key_exists('href', $tag['attribute'])) { + $this->HREF['url'] = $tag['attribute']['href']; + } + break; + } + case 'img': { + if (!empty($tag['attribute']['src'])) { + if ($tag['attribute']['src'][0] === '@') { + // data stream + $tag['attribute']['src'] = '@'.base64_decode(substr($tag['attribute']['src'], 1)); + $type = ''; + } else { + // get image type + $type = TCPDF_IMAGES::getImageFileType($tag['attribute']['src']); + } + if (!isset($tag['width'])) { + $tag['width'] = 0; + } + if (!isset($tag['height'])) { + $tag['height'] = 0; + } + //if (!isset($tag['attribute']['align'])) { + // the only alignment supported is "bottom" + // further development is required for other modes. + $tag['attribute']['align'] = 'bottom'; + //} + switch($tag['attribute']['align']) { + case 'top': { + $align = 'T'; + break; + } + case 'middle': { + $align = 'M'; + break; + } + case 'bottom': { + $align = 'B'; + break; + } + default: { + $align = 'B'; + break; + } + } + $prevy = $this->y; + $xpos = $this->x; + $imglink = ''; + if (isset($this->HREF['url']) AND !TCPDF_STATIC::empty_string($this->HREF['url'])) { + $imglink = $this->HREF['url']; + if ($imglink[0] == '#') { + // convert url to internal link + $lnkdata = explode(',', $imglink); + if (isset($lnkdata[0])) { + $page = intval(substr($lnkdata[0], 1)); + if (empty($page) OR ($page <= 0)) { + $page = $this->page; + } + if (isset($lnkdata[1]) AND (strlen($lnkdata[1]) > 0)) { + $lnky = floatval($lnkdata[1]); + } else { + $lnky = 0; + } + $imglink = $this->AddLink(); + $this->SetLink($imglink, $lnky, $page); + } + } + } + $border = 0; + if (isset($tag['border']) AND !empty($tag['border'])) { + // currently only support 1 (frame) or a combination of 'LTRB' + $border = $tag['border']; + } + $iw = ''; + if (isset($tag['width'])) { + $iw = $this->getHTMLUnitToUnits($tag['width'], ($tag['fontsize'] / $this->k), 'px', false); + } + $ih = ''; + if (isset($tag['height'])) { + $ih = $this->getHTMLUnitToUnits($tag['height'], ($tag['fontsize'] / $this->k), 'px', false); + } + if (($type == 'eps') OR ($type == 'ai')) { + $this->ImageEps($tag['attribute']['src'], $xpos, $this->y, $iw, $ih, $imglink, true, $align, '', $border, true); + } elseif ($type == 'svg') { + $this->ImageSVG($tag['attribute']['src'], $xpos, $this->y, $iw, $ih, $imglink, $align, '', $border, true); + } else { + $this->Image($tag['attribute']['src'], $xpos, $this->y, $iw, $ih, '', $imglink, $align, false, 300, '', false, false, $border, false, false, true); + } + switch($align) { + case 'T': { + $this->y = $prevy; + break; + } + case 'M': { + $this->y = (($this->img_rb_y + $prevy - ($this->getCellHeight($tag['fontsize'] / $this->k))) / 2); + break; + } + case 'B': { + $this->y = $this->img_rb_y - ($this->getCellHeight($tag['fontsize'] / $this->k) - ($this->getFontDescent($tag['fontname'], $tag['fontstyle'], $tag['fontsize']) * $this->cell_height_ratio)); + break; + } + } + } + break; + } + case 'dl': { + ++$this->listnum; + if ($this->listnum == 1) { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + } else { + $this->addHTMLVertSpace(0, 0, $cell, $firsttag); + } + break; + } + case 'dt': { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + break; + } + case 'dd': { + if ($this->rtl) { + $this->rMargin += $this->listindent; + } else { + $this->lMargin += $this->listindent; + } + ++$this->listindentlevel; + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + break; + } + case 'ul': + case 'ol': { + ++$this->listnum; + if ($tag['value'] == 'ol') { + $this->listordered[$this->listnum] = true; + } else { + $this->listordered[$this->listnum] = false; + } + if (isset($tag['attribute']['start'])) { + $this->listcount[$this->listnum] = intval($tag['attribute']['start']) - 1; + } else { + $this->listcount[$this->listnum] = 0; + } + if ($this->rtl) { + $this->rMargin += $this->listindent; + $this->x -= $this->listindent; + } else { + $this->lMargin += $this->listindent; + $this->x += $this->listindent; + } + ++$this->listindentlevel; + if ($this->listnum == 1) { + if ($key > 1) { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + } + } else { + $this->addHTMLVertSpace(0, 0, $cell, $firsttag); + } + break; + } + case 'li': { + if ($key > 2) { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + } + if ($this->listordered[$this->listnum]) { + // ordered item + if (isset($parent['attribute']['type']) AND !TCPDF_STATIC::empty_string($parent['attribute']['type'])) { + $this->lispacer = $parent['attribute']['type']; + } elseif (isset($parent['listtype']) AND !TCPDF_STATIC::empty_string($parent['listtype'])) { + $this->lispacer = $parent['listtype']; + } elseif (isset($this->lisymbol) AND !TCPDF_STATIC::empty_string($this->lisymbol)) { + $this->lispacer = $this->lisymbol; + } else { + $this->lispacer = '#'; + } + ++$this->listcount[$this->listnum]; + if (isset($tag['attribute']['value'])) { + $this->listcount[$this->listnum] = intval($tag['attribute']['value']); + } + } else { + // unordered item + if (isset($parent['attribute']['type']) AND !TCPDF_STATIC::empty_string($parent['attribute']['type'])) { + $this->lispacer = $parent['attribute']['type']; + } elseif (isset($parent['listtype']) AND !TCPDF_STATIC::empty_string($parent['listtype'])) { + $this->lispacer = $parent['listtype']; + } elseif (isset($this->lisymbol) AND !TCPDF_STATIC::empty_string($this->lisymbol)) { + $this->lispacer = $this->lisymbol; + } else { + $this->lispacer = '!'; + } + } + break; + } + case 'blockquote': { + if ($this->rtl) { + $this->rMargin += $this->listindent; + } else { + $this->lMargin += $this->listindent; + } + ++$this->listindentlevel; + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + break; + } + case 'br': { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + break; + } + case 'div': { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + break; + } + case 'p': { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + break; + } + case 'pre': { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + $this->premode = true; + break; + } + case 'sup': { + $this->SetXY($this->GetX(), $this->GetY() - ((0.7 * $this->FontSizePt) / $this->k)); + break; + } + case 'sub': { + $this->SetXY($this->GetX(), $this->GetY() + ((0.3 * $this->FontSizePt) / $this->k)); + break; + } + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': { + $this->addHTMLVertSpace($hbz, $hb, $cell, $firsttag); + break; + } + // Form fields (since 4.8.000 - 2009-09-07) + case 'form': { + if (isset($tag['attribute']['action'])) { + $this->form_action = $tag['attribute']['action']; + } else { + $this->Error('Please explicitly set action attribute path!'); + } + if (isset($tag['attribute']['enctype'])) { + $this->form_enctype = $tag['attribute']['enctype']; + } else { + $this->form_enctype = 'application/x-www-form-urlencoded'; + } + if (isset($tag['attribute']['method'])) { + $this->form_mode = $tag['attribute']['method']; + } else { + $this->form_mode = 'post'; + } + break; + } + case 'input': { + if (isset($tag['attribute']['name']) AND !TCPDF_STATIC::empty_string($tag['attribute']['name'])) { + $name = $tag['attribute']['name']; + } else { + break; + } + $prop = array(); + $opt = array(); + if (isset($tag['attribute']['readonly']) AND !TCPDF_STATIC::empty_string($tag['attribute']['readonly'])) { + $prop['readonly'] = true; + } + if (isset($tag['attribute']['value']) AND !TCPDF_STATIC::empty_string($tag['attribute']['value'])) { + $value = $tag['attribute']['value']; + } + if (isset($tag['attribute']['maxlength']) AND !TCPDF_STATIC::empty_string($tag['attribute']['maxlength'])) { + $opt['maxlen'] = intval($tag['attribute']['maxlength']); + } + $h = $this->getCellHeight($this->FontSize); + if (isset($tag['attribute']['size']) AND !TCPDF_STATIC::empty_string($tag['attribute']['size'])) { + $w = intval($tag['attribute']['size']) * $this->GetStringWidth(chr(32)) * 2; + } else { + $w = $h; + } + if (isset($tag['attribute']['checked']) AND (($tag['attribute']['checked'] == 'checked') OR ($tag['attribute']['checked'] == 'true'))) { + $checked = true; + } else { + $checked = false; + } + if (isset($tag['align'])) { + switch ($tag['align']) { + case 'C': { + $opt['q'] = 1; + break; + } + case 'R': { + $opt['q'] = 2; + break; + } + case 'L': + default: { + break; + } + } + } + switch ($tag['attribute']['type']) { + case 'text': { + if (isset($value)) { + $opt['v'] = $value; + } + $this->TextField($name, $w, $h, $prop, $opt, '', '', false); + break; + } + case 'password': { + if (isset($value)) { + $opt['v'] = $value; + } + $prop['password'] = 'true'; + $this->TextField($name, $w, $h, $prop, $opt, '', '', false); + break; + } + case 'checkbox': { + if (!isset($value)) { + break; + } + $this->CheckBox($name, $w, $checked, $prop, $opt, $value, '', '', false); + break; + } + case 'radio': { + if (!isset($value)) { + break; + } + $this->RadioButton($name, $w, $prop, $opt, $value, $checked, '', '', false); + break; + } + case 'submit': { + if (!isset($value)) { + $value = 'submit'; + } + $w = $this->GetStringWidth($value) * 1.5; + $h *= 1.6; + $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255)); + $action = array(); + $action['S'] = 'SubmitForm'; + $action['F'] = $this->form_action; + if ($this->form_enctype != 'FDF') { + $action['Flags'] = array('ExportFormat'); + } + if ($this->form_mode == 'get') { + $action['Flags'] = array('GetMethod'); + } + $this->Button($name, $w, $h, $value, $action, $prop, $opt, '', '', false); + break; + } + case 'reset': { + if (!isset($value)) { + $value = 'reset'; + } + $w = $this->GetStringWidth($value) * 1.5; + $h *= 1.6; + $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255)); + $this->Button($name, $w, $h, $value, array('S'=>'ResetForm'), $prop, $opt, '', '', false); + break; + } + case 'file': { + $prop['fileSelect'] = 'true'; + $this->TextField($name, $w, $h, $prop, $opt, '', '', false); + if (!isset($value)) { + $value = '*'; + } + $w = $this->GetStringWidth($value) * 2; + $h *= 1.2; + $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255)); + $jsaction = 'var f=this.getField(\''.$name.'\'); f.browseForFileToSubmit();'; + $this->Button('FB_'.$name, $w, $h, $value, $jsaction, $prop, $opt, '', '', false); + break; + } + case 'hidden': { + if (isset($value)) { + $opt['v'] = $value; + } + $opt['f'] = array('invisible', 'hidden'); + $this->TextField($name, 0, 0, $prop, $opt, '', '', false); + break; + } + case 'image': { + // THIS TYPE MUST BE FIXED + if (isset($tag['attribute']['src']) AND !TCPDF_STATIC::empty_string($tag['attribute']['src'])) { + $img = $tag['attribute']['src']; + } else { + break; + } + $value = 'img'; + //$opt['mk'] = array('i'=>$img, 'tp'=>1, 'if'=>array('sw'=>'A', 's'=>'A', 'fb'=>false)); + if (isset($tag['attribute']['onclick']) AND !empty($tag['attribute']['onclick'])) { + $jsaction = $tag['attribute']['onclick']; + } else { + $jsaction = ''; + } + $this->Button($name, $w, $h, $value, $jsaction, $prop, $opt, '', '', false); + break; + } + case 'button': { + if (!isset($value)) { + $value = ' '; + } + $w = $this->GetStringWidth($value) * 1.5; + $h *= 1.6; + $prop = array('lineWidth'=>1, 'borderStyle'=>'beveled', 'fillColor'=>array(196, 196, 196), 'strokeColor'=>array(255, 255, 255)); + if (isset($tag['attribute']['onclick']) AND !empty($tag['attribute']['onclick'])) { + $jsaction = $tag['attribute']['onclick']; + } else { + $jsaction = ''; + } + $this->Button($name, $w, $h, $value, $jsaction, $prop, $opt, '', '', false); + break; + } + } + break; + } + case 'textarea': { + $prop = array(); + $opt = array(); + if (isset($tag['attribute']['readonly']) AND !TCPDF_STATIC::empty_string($tag['attribute']['readonly'])) { + $prop['readonly'] = true; + } + if (isset($tag['attribute']['name']) AND !TCPDF_STATIC::empty_string($tag['attribute']['name'])) { + $name = $tag['attribute']['name']; + } else { + break; + } + if (isset($tag['attribute']['value']) AND !TCPDF_STATIC::empty_string($tag['attribute']['value'])) { + $opt['v'] = $tag['attribute']['value']; + } + if (isset($tag['attribute']['cols']) AND !TCPDF_STATIC::empty_string($tag['attribute']['cols'])) { + $w = intval($tag['attribute']['cols']) * $this->GetStringWidth(chr(32)) * 2; + } else { + $w = 40; + } + if (isset($tag['attribute']['rows']) AND !TCPDF_STATIC::empty_string($tag['attribute']['rows'])) { + $h = intval($tag['attribute']['rows']) * $this->getCellHeight($this->FontSize); + } else { + $h = 10; + } + $prop['multiline'] = 'true'; + $this->TextField($name, $w, $h, $prop, $opt, '', '', false); + break; + } + case 'select': { + $h = $this->getCellHeight($this->FontSize); + if (isset($tag['attribute']['size']) AND !TCPDF_STATIC::empty_string($tag['attribute']['size'])) { + $h *= ($tag['attribute']['size'] + 1); + } + $prop = array(); + $opt = array(); + if (isset($tag['attribute']['name']) AND !TCPDF_STATIC::empty_string($tag['attribute']['name'])) { + $name = $tag['attribute']['name']; + } else { + break; + } + $w = 0; + if (isset($tag['attribute']['opt']) AND !TCPDF_STATIC::empty_string($tag['attribute']['opt'])) { + $options = explode('#!NwL!#', $tag['attribute']['opt']); + $values = array(); + foreach ($options as $val) { + if (strpos($val, '#!TaB!#') !== false) { + $opts = explode('#!TaB!#', $val); + $values[] = $opts; + $w = max($w, $this->GetStringWidth($opts[1])); + } else { + $values[] = $val; + $w = max($w, $this->GetStringWidth($val)); + } + } + } else { + break; + } + $w *= 2; + if (isset($tag['attribute']['multiple']) AND ($tag['attribute']['multiple']='multiple')) { + $prop['multipleSelection'] = 'true'; + $this->ListBox($name, $w, $h, $values, $prop, $opt, '', '', false); + } else { + $this->ComboBox($name, $w, $h, $values, $prop, $opt, '', '', false); + } + break; + } + case 'tcpdf': { + if (defined('K_TCPDF_CALLS_IN_HTML') AND (K_TCPDF_CALLS_IN_HTML === true)) { + // Special tag used to call TCPDF methods + if (isset($tag['attribute']['method'])) { + $tcpdf_method = $tag['attribute']['method']; + if (method_exists($this, $tcpdf_method)) { + if (isset($tag['attribute']['params']) AND (!empty($tag['attribute']['params']))) { + $params = TCPDF_STATIC::unserializeTCPDFtagParameters($tag['attribute']['params']); + call_user_func_array(array($this, $tcpdf_method), $params); + } else { + $this->$tcpdf_method(); + } + $this->newline = true; + } + } + } + break; + } + default: { + break; + } + } + // define tags that support borders and background colors + $bordertags = array('blockquote','br','dd','dl','div','dt','h1','h2','h3','h4','h5','h6','hr','li','ol','p','pre','ul','tcpdf','table'); + if (in_array($tag['value'], $bordertags)) { + // set border + $dom[$key]['borderposition'] = $this->getBorderStartPosition(); + } + if ($dom[$key]['self'] AND isset($dom[$key]['attribute']['pagebreakafter'])) { + $pba = $dom[$key]['attribute']['pagebreakafter']; + // check for pagebreak + if (($pba == 'true') OR ($pba == 'left') OR ($pba == 'right')) { + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + } + if ((($pba == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0)))) + OR (($pba == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) { + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + } + } + return $dom; + } + + /** + * Process closing tags. + * @param $dom (array) html dom array + * @param $key (int) current element id + * @param $cell (boolean) if true add the default left (or right if RTL) padding to each new line (default false). + * @param $maxbottomliney (int) maximum y value of current line + * @return $dom array + * @protected + */ + protected function closeHTMLTagHandler($dom, $key, $cell, $maxbottomliney=0) { + $tag = $dom[$key]; + $parent = $dom[($dom[$key]['parent'])]; + $lasttag = ((!isset($dom[($key + 1)])) OR ((!isset($dom[($key + 2)])) AND ($dom[($key + 1)]['value'] == 'marker'))); + $in_table_head = false; + // maximum x position (used to draw borders) + if ($this->rtl) { + $xmax = $this->w; + } else { + $xmax = 0; + } + if ($tag['block']) { + $hbz = 0; // distance from y to line bottom + $hb = 0; // vertical space between block tags + // calculate vertical space for block tags + if (isset($this->tagvspaces[$tag['value']][1]['h']) AND ($this->tagvspaces[$tag['value']][1]['h'] >= 0)) { + $pre_h = $this->tagvspaces[$tag['value']][1]['h']; + } elseif (isset($parent['fontsize'])) { + $pre_h = $this->getCellHeight($parent['fontsize'] / $this->k); + } else { + $pre_h = $this->getCellHeight($this->FontSize); + } + if (isset($this->tagvspaces[$tag['value']][1]['n'])) { + $cn = $this->tagvspaces[$tag['value']][1]['n']; + } elseif (preg_match('/[h][0-9]/', $tag['value']) > 0) { + $cn = 0.6; + } else { + $cn = 1; + } + if ((!isset($this->tagvspaces[$tag['value']])) AND ($tag['value'] == 'div')) { + $hb = 0; + } else { + $hb = ($cn * $pre_h); + } + if ($maxbottomliney > $this->PageBreakTrigger) { + $hbz = $this->getCellHeight($this->FontSize); + } elseif ($this->y < $maxbottomliney) { + $hbz = ($maxbottomliney - $this->y); + } + } + // Closing tag + switch($tag['value']) { + case 'tr': { + $table_el = $dom[($dom[$key]['parent'])]['parent']; + if (!isset($parent['endy'])) { + $dom[($dom[$key]['parent'])]['endy'] = $this->y; + $parent['endy'] = $this->y; + } + if (!isset($parent['endpage'])) { + $dom[($dom[$key]['parent'])]['endpage'] = $this->page; + $parent['endpage'] = $this->page; + } + if (!isset($parent['endcolumn'])) { + $dom[($dom[$key]['parent'])]['endcolumn'] = $this->current_column; + $parent['endcolumn'] = $this->current_column; + } + // update row-spanned cells + if (isset($dom[$table_el]['rowspans'])) { + foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) { + $dom[$table_el]['rowspans'][$k]['rowspan'] -= 1; + if ($dom[$table_el]['rowspans'][$k]['rowspan'] == 0) { + if (($dom[$table_el]['rowspans'][$k]['endpage'] == $parent['endpage']) AND ($dom[$table_el]['rowspans'][$k]['endcolumn'] == $parent['endcolumn'])) { + $dom[($dom[$key]['parent'])]['endy'] = max($dom[$table_el]['rowspans'][$k]['endy'], $parent['endy']); + } elseif (($dom[$table_el]['rowspans'][$k]['endpage'] > $parent['endpage']) OR ($dom[$table_el]['rowspans'][$k]['endcolumn'] > $parent['endcolumn'])) { + $dom[($dom[$key]['parent'])]['endy'] = $dom[$table_el]['rowspans'][$k]['endy']; + $dom[($dom[$key]['parent'])]['endpage'] = $dom[$table_el]['rowspans'][$k]['endpage']; + $dom[($dom[$key]['parent'])]['endcolumn'] = $dom[$table_el]['rowspans'][$k]['endcolumn']; + } + } + } + // report new endy and endpage to the rowspanned cells + foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) { + if ($dom[$table_el]['rowspans'][$k]['rowspan'] == 0) { + $dom[$table_el]['rowspans'][$k]['endpage'] = max($dom[$table_el]['rowspans'][$k]['endpage'], $dom[($dom[$key]['parent'])]['endpage']); + $dom[($dom[$key]['parent'])]['endpage'] = $dom[$table_el]['rowspans'][$k]['endpage']; + $dom[$table_el]['rowspans'][$k]['endcolumn'] = max($dom[$table_el]['rowspans'][$k]['endcolumn'], $dom[($dom[$key]['parent'])]['endcolumn']); + $dom[($dom[$key]['parent'])]['endcolumn'] = $dom[$table_el]['rowspans'][$k]['endcolumn']; + $dom[$table_el]['rowspans'][$k]['endy'] = max($dom[$table_el]['rowspans'][$k]['endy'], $dom[($dom[$key]['parent'])]['endy']); + $dom[($dom[$key]['parent'])]['endy'] = $dom[$table_el]['rowspans'][$k]['endy']; + } + } + // update remaining rowspanned cells + foreach ($dom[$table_el]['rowspans'] as $k => $trwsp) { + if ($dom[$table_el]['rowspans'][$k]['rowspan'] == 0) { + $dom[$table_el]['rowspans'][$k]['endpage'] = $dom[($dom[$key]['parent'])]['endpage']; + $dom[$table_el]['rowspans'][$k]['endcolumn'] = $dom[($dom[$key]['parent'])]['endcolumn']; + $dom[$table_el]['rowspans'][$k]['endy'] = $dom[($dom[$key]['parent'])]['endy']; + } + } + } + $prev_page = $this->page; + $this->setPage($dom[($dom[$key]['parent'])]['endpage']); + if ($this->num_columns > 1) { + if ((($this->current_column == 0) AND ($dom[($dom[$key]['parent'])]['endcolumn'] == ($this->num_columns - 1))) + OR (($this->current_column == $dom[($dom[$key]['parent'])]['endcolumn']) AND ($prev_page < $this->page))) { + // page jump + $this->selectColumn(0); + $dom[($dom[$key]['parent'])]['endcolumn'] = 0; + $dom[($dom[$key]['parent'])]['endy'] = $this->y; + } else { + $this->selectColumn($dom[($dom[$key]['parent'])]['endcolumn']); + $this->y = $dom[($dom[$key]['parent'])]['endy']; + } + } else { + $this->y = $dom[($dom[$key]['parent'])]['endy']; + } + if (isset($dom[$table_el]['attribute']['cellspacing'])) { + $this->y += $this->getHTMLUnitToUnits($dom[$table_el]['attribute']['cellspacing'], 1, 'px'); + } elseif (isset($dom[$table_el]['border-spacing'])) { + $this->y += $dom[$table_el]['border-spacing']['V']; + } + $this->Ln(0, $cell); + if ($this->current_column == $parent['startcolumn']) { + $this->x = $parent['startx']; + } + // account for booklet mode + if ($this->page > $parent['startpage']) { + if (($this->rtl) AND ($this->pagedim[$this->page]['orm'] != $this->pagedim[$parent['startpage']]['orm'])) { + $this->x -= ($this->pagedim[$this->page]['orm'] - $this->pagedim[$parent['startpage']]['orm']); + } elseif ((!$this->rtl) AND ($this->pagedim[$this->page]['olm'] != $this->pagedim[$parent['startpage']]['olm'])) { + $this->x += ($this->pagedim[$this->page]['olm'] - $this->pagedim[$parent['startpage']]['olm']); + } + } + break; + } + case 'tablehead': + // closing tag used for the thead part + $in_table_head = true; + $this->inthead = false; + case 'table': { + $table_el = $parent; + // set default border + if (isset($table_el['attribute']['border']) AND ($table_el['attribute']['border'] > 0)) { + // set default border + $border = array('LTRB' => array('width' => $this->getCSSBorderWidth($table_el['attribute']['border']), 'cap'=>'square', 'join'=>'miter', 'dash'=> 0, 'color'=>array(0,0,0))); + } else { + $border = 0; + } + $default_border = $border; + // fix bottom line alignment of last line before page break + foreach ($dom[($dom[$key]['parent'])]['trids'] as $j => $trkey) { + // update row-spanned cells + if (isset($dom[($dom[$key]['parent'])]['rowspans'])) { + foreach ($dom[($dom[$key]['parent'])]['rowspans'] as $k => $trwsp) { + if (isset($prevtrkey) AND ($trwsp['trid'] == $prevtrkey) AND ($trwsp['mrowspan'] > 0)) { + $dom[($dom[$key]['parent'])]['rowspans'][$k]['trid'] = $trkey; + } + if ($dom[($dom[$key]['parent'])]['rowspans'][$k]['trid'] == $trkey) { + $dom[($dom[$key]['parent'])]['rowspans'][$k]['mrowspan'] -= 1; + } + } + } + if (isset($prevtrkey) AND ($dom[$trkey]['startpage'] > $dom[$prevtrkey]['endpage'])) { + $pgendy = $this->pagedim[$dom[$prevtrkey]['endpage']]['hk'] - $this->pagedim[$dom[$prevtrkey]['endpage']]['bm']; + $dom[$prevtrkey]['endy'] = $pgendy; + // update row-spanned cells + if (isset($dom[($dom[$key]['parent'])]['rowspans'])) { + foreach ($dom[($dom[$key]['parent'])]['rowspans'] as $k => $trwsp) { + if (($trwsp['trid'] == $prevtrkey) AND ($trwsp['mrowspan'] >= 0) AND ($trwsp['endpage'] == $dom[$prevtrkey]['endpage'])) { + $dom[($dom[$key]['parent'])]['rowspans'][$k]['endy'] = $pgendy; + $dom[($dom[$key]['parent'])]['rowspans'][$k]['mrowspan'] = -1; + } + } + } + } + $prevtrkey = $trkey; + $table_el = $dom[($dom[$key]['parent'])]; + } + // for each row + if (count($table_el['trids']) > 0) { + unset($xmax); + } + foreach ($table_el['trids'] as $j => $trkey) { + $parent = $dom[$trkey]; + if (!isset($xmax)) { + $xmax = $parent['cellpos'][(count($parent['cellpos']) - 1)]['endx']; + } + // for each cell on the row + foreach ($parent['cellpos'] as $k => $cellpos) { + if (isset($cellpos['rowspanid']) AND ($cellpos['rowspanid'] >= 0)) { + $cellpos['startx'] = $table_el['rowspans'][($cellpos['rowspanid'])]['startx']; + $cellpos['endx'] = $table_el['rowspans'][($cellpos['rowspanid'])]['endx']; + $endy = $table_el['rowspans'][($cellpos['rowspanid'])]['endy']; + $startpage = $table_el['rowspans'][($cellpos['rowspanid'])]['startpage']; + $endpage = $table_el['rowspans'][($cellpos['rowspanid'])]['endpage']; + $startcolumn = $table_el['rowspans'][($cellpos['rowspanid'])]['startcolumn']; + $endcolumn = $table_el['rowspans'][($cellpos['rowspanid'])]['endcolumn']; + } else { + $endy = $parent['endy']; + $startpage = $parent['startpage']; + $endpage = $parent['endpage']; + $startcolumn = $parent['startcolumn']; + $endcolumn = $parent['endcolumn']; + } + if ($this->num_columns == 0) { + $this->num_columns = 1; + } + if (isset($cellpos['border'])) { + $border = $cellpos['border']; + } + if (isset($cellpos['bgcolor']) AND ($cellpos['bgcolor']) !== false) { + $this->SetFillColorArray($cellpos['bgcolor']); + $fill = true; + } else { + $fill = false; + } + $x = $cellpos['startx']; + $y = $parent['starty']; + $starty = $y; + $w = abs($cellpos['endx'] - $cellpos['startx']); + // get border modes + $border_start = TCPDF_STATIC::getBorderMode($border, $position='start', $this->opencell); + $border_end = TCPDF_STATIC::getBorderMode($border, $position='end', $this->opencell); + $border_middle = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell); + // design borders around HTML cells. + for ($page = $startpage; $page <= $endpage; ++$page) { // for each page + $ccode = ''; + $this->setPage($page); + if ($this->num_columns < 2) { + // single-column mode + $this->x = $x; + $this->y = $this->tMargin; + } + // account for margin changes + if ($page > $startpage) { + if (($this->rtl) AND ($this->pagedim[$page]['orm'] != $this->pagedim[$startpage]['orm'])) { + $this->x -= ($this->pagedim[$page]['orm'] - $this->pagedim[$startpage]['orm']); + } elseif ((!$this->rtl) AND ($this->pagedim[$page]['olm'] != $this->pagedim[$startpage]['olm'])) { + $this->x += ($this->pagedim[$page]['olm'] - $this->pagedim[$startpage]['olm']); + } + } + if ($startpage == $endpage) { // single page + $deltacol = 0; + $deltath = 0; + for ($column = $startcolumn; $column <= $endcolumn; ++$column) { // for each column + $this->selectColumn($column); + if ($startcolumn == $endcolumn) { // single column + $cborder = $border; + $h = $endy - $parent['starty']; + $this->y = $y; + $this->x = $x; + } elseif ($column == $startcolumn) { // first column + $cborder = $border_start; + $this->y = $starty; + $this->x = $x; + $h = $this->h - $this->y - $this->bMargin; + if ($this->rtl) { + $deltacol = $this->x + $this->rMargin - $this->w; + } else { + $deltacol = $this->x - $this->lMargin; + } + } elseif ($column == $endcolumn) { // end column + $cborder = $border_end; + if (isset($this->columns[$column]['th']['\''.$page.'\''])) { + $this->y = $this->columns[$column]['th']['\''.$page.'\'']; + } + $this->x += $deltacol; + $h = $endy - $this->y; + } else { // middle column + $cborder = $border_middle; + if (isset($this->columns[$column]['th']['\''.$page.'\''])) { + $this->y = $this->columns[$column]['th']['\''.$page.'\'']; + } + $this->x += $deltacol; + $h = $this->h - $this->y - $this->bMargin; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } elseif ($page == $startpage) { // first page + $deltacol = 0; + $deltath = 0; + for ($column = $startcolumn; $column < $this->num_columns; ++$column) { // for each column + $this->selectColumn($column); + if ($column == $startcolumn) { // first column + $cborder = $border_start; + $this->y = $starty; + $this->x = $x; + $h = $this->h - $this->y - $this->bMargin; + if ($this->rtl) { + $deltacol = $this->x + $this->rMargin - $this->w; + } else { + $deltacol = $this->x - $this->lMargin; + } + } else { // middle column + $cborder = $border_middle; + if (isset($this->columns[$column]['th']['\''.$page.'\''])) { + $this->y = $this->columns[$column]['th']['\''.$page.'\'']; + } + $this->x += $deltacol; + $h = $this->h - $this->y - $this->bMargin; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } elseif ($page == $endpage) { // last page + $deltacol = 0; + $deltath = 0; + for ($column = 0; $column <= $endcolumn; ++$column) { // for each column + $this->selectColumn($column); + if ($column == $endcolumn) { // end column + $cborder = $border_end; + if (isset($this->columns[$column]['th']['\''.$page.'\''])) { + $this->y = $this->columns[$column]['th']['\''.$page.'\'']; + } + $this->x += $deltacol; + $h = $endy - $this->y; + } else { // middle column + $cborder = $border_middle; + if (isset($this->columns[$column]['th']['\''.$page.'\''])) { + $this->y = $this->columns[$column]['th']['\''.$page.'\'']; + } + $this->x += $deltacol; + $h = $this->h - $this->y - $this->bMargin; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } else { // middle page + $deltacol = 0; + $deltath = 0; + for ($column = 0; $column < $this->num_columns; ++$column) { // for each column + $this->selectColumn($column); + $cborder = $border_middle; + if (isset($this->columns[$column]['th']['\''.$page.'\''])) { + $this->y = $this->columns[$column]['th']['\''.$page.'\'']; + } + $this->x += $deltacol; + $h = $this->h - $this->y - $this->bMargin; + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } + if ($cborder OR $fill) { + $offsetlen = strlen($ccode); + // draw border and fill + if ($this->inxobj) { + // we are inside an XObject template + if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) { + $pagemarkkey = key($this->xobjects[$this->xobjid]['transfmrk']); + $pagemark = $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey]; + $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey] += $offsetlen; + } else { + $pagemark = $this->xobjects[$this->xobjid]['intmrk']; + $this->xobjects[$this->xobjid]['intmrk'] += $offsetlen; + } + $pagebuff = $this->xobjects[$this->xobjid]['outdata']; + $pstart = substr($pagebuff, 0, $pagemark); + $pend = substr($pagebuff, $pagemark); + $this->xobjects[$this->xobjid]['outdata'] = $pstart.$ccode.$pend; + } else { + // draw border and fill + if (end($this->transfmrk[$this->page]) !== false) { + $pagemarkkey = key($this->transfmrk[$this->page]); + $pagemark = $this->transfmrk[$this->page][$pagemarkkey]; + } elseif ($this->InFooter) { + $pagemark = $this->footerpos[$this->page]; + } else { + $pagemark = $this->intmrk[$this->page]; + } + $pagebuff = $this->getPageBuffer($this->page); + $pstart = substr($pagebuff, 0, $pagemark); + $pend = substr($pagebuff, $pagemark); + $this->setPageBuffer($this->page, $pstart.$ccode.$pend); + } + } + } // end for each page + // restore default border + $border = $default_border; + } // end for each cell on the row + if (isset($table_el['attribute']['cellspacing'])) { + $this->y += $this->getHTMLUnitToUnits($table_el['attribute']['cellspacing'], 1, 'px'); + } elseif (isset($table_el['border-spacing'])) { + $this->y += $table_el['border-spacing']['V']; + } + $this->Ln(0, $cell); + $this->x = $parent['startx']; + if ($endpage > $startpage) { + if (($this->rtl) AND ($this->pagedim[$endpage]['orm'] != $this->pagedim[$startpage]['orm'])) { + $this->x += ($this->pagedim[$endpage]['orm'] - $this->pagedim[$startpage]['orm']); + } elseif ((!$this->rtl) AND ($this->pagedim[$endpage]['olm'] != $this->pagedim[$startpage]['olm'])) { + $this->x += ($this->pagedim[$endpage]['olm'] - $this->pagedim[$startpage]['olm']); + } + } + } + if (!$in_table_head) { // we are not inside a thead section + $this->cell_padding = $table_el['old_cell_padding']; + // reset row height + $this->resetLastH(); + if (($this->page == ($this->numpages - 1)) AND ($this->pageopen[$this->numpages])) { + $plendiff = ($this->pagelen[$this->numpages] - $this->emptypagemrk[$this->numpages]); + if (($plendiff > 0) AND ($plendiff < 60)) { + $pagediff = substr($this->getPageBuffer($this->numpages), $this->emptypagemrk[$this->numpages], $plendiff); + if (substr($pagediff, 0, 5) == 'BT /F') { + // the difference is only a font setting + $plendiff = 0; + } + } + if ($plendiff == 0) { + // remove last blank page + $this->deletePage($this->numpages); + } + } + if (isset($this->theadMargins['top'])) { + // restore top margin + $this->tMargin = $this->theadMargins['top']; + } + if (!isset($table_el['attribute']['nested']) OR ($table_el['attribute']['nested'] != 'true')) { + // reset main table header + $this->thead = ''; + $this->theadMargins = array(); + $this->pagedim[$this->page]['tm'] = $this->tMargin; + } + } + $parent = $table_el; + break; + } + case 'a': { + $this->HREF = ''; + break; + } + case 'sup': { + $this->SetXY($this->GetX(), $this->GetY() + ((0.7 * $parent['fontsize']) / $this->k)); + break; + } + case 'sub': { + $this->SetXY($this->GetX(), $this->GetY() - ((0.3 * $parent['fontsize']) / $this->k)); + break; + } + case 'div': { + $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag); + break; + } + case 'blockquote': { + if ($this->rtl) { + $this->rMargin -= $this->listindent; + } else { + $this->lMargin -= $this->listindent; + } + --$this->listindentlevel; + $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag); + break; + } + case 'p': { + $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag); + break; + } + case 'pre': { + $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag); + $this->premode = false; + break; + } + case 'dl': { + --$this->listnum; + if ($this->listnum <= 0) { + $this->listnum = 0; + $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag); + } else { + $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag); + } + $this->resetLastH(); + break; + } + case 'dt': { + $this->lispacer = ''; + $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag); + break; + } + case 'dd': { + $this->lispacer = ''; + if ($this->rtl) { + $this->rMargin -= $this->listindent; + } else { + $this->lMargin -= $this->listindent; + } + --$this->listindentlevel; + $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag); + break; + } + case 'ul': + case 'ol': { + --$this->listnum; + $this->lispacer = ''; + if ($this->rtl) { + $this->rMargin -= $this->listindent; + } else { + $this->lMargin -= $this->listindent; + } + --$this->listindentlevel; + if ($this->listnum <= 0) { + $this->listnum = 0; + $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag); + } else { + $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag); + } + $this->resetLastH(); + break; + } + case 'li': { + $this->lispacer = ''; + $this->addHTMLVertSpace(0, 0, $cell, false, $lasttag); + break; + } + case 'h1': + case 'h2': + case 'h3': + case 'h4': + case 'h5': + case 'h6': { + $this->addHTMLVertSpace($hbz, $hb, $cell, false, $lasttag); + break; + } + // Form fields (since 4.8.000 - 2009-09-07) + case 'form': { + $this->form_action = ''; + $this->form_enctype = 'application/x-www-form-urlencoded'; + break; + } + default : { + break; + } + } + // draw border and background (if any) + $this->drawHTMLTagBorder($parent, $xmax); + if (isset($dom[($dom[$key]['parent'])]['attribute']['pagebreakafter'])) { + $pba = $dom[($dom[$key]['parent'])]['attribute']['pagebreakafter']; + // check for pagebreak + if (($pba == 'true') OR ($pba == 'left') OR ($pba == 'right')) { + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + } + if ((($pba == 'left') AND (((!$this->rtl) AND (($this->page % 2) == 0)) OR (($this->rtl) AND (($this->page % 2) != 0)))) + OR (($pba == 'right') AND (((!$this->rtl) AND (($this->page % 2) != 0)) OR (($this->rtl) AND (($this->page % 2) == 0))))) { + // add a page (or trig AcceptPageBreak() for multicolumn mode) + $this->checkPageBreak($this->PageBreakTrigger + 1); + } + } + $this->tmprtl = false; + return $dom; + } + + /** + * Add vertical spaces if needed. + * @param $hbz (string) Distance between current y and line bottom. + * @param $hb (string) The height of the break. + * @param $cell (boolean) if true add the default left (or right if RTL) padding to each new line (default false). + * @param $firsttag (boolean) set to true when the tag is the first. + * @param $lasttag (boolean) set to true when the tag is the last. + * @protected + */ + protected function addHTMLVertSpace($hbz=0, $hb=0, $cell=false, $firsttag=false, $lasttag=false) { + if ($firsttag) { + $this->Ln(0, $cell); + $this->htmlvspace = 0; + return; + } + if ($lasttag) { + $this->Ln($hbz, $cell); + $this->htmlvspace = 0; + return; + } + if ($hb < $this->htmlvspace) { + $hd = 0; + } else { + $hd = $hb - $this->htmlvspace; + $this->htmlvspace = $hb; + } + $this->Ln(($hbz + $hd), $cell); + } + + /** + * Return the starting coordinates to draw an html border + * @return array containing top-left border coordinates + * @protected + * @since 5.7.000 (2010-08-03) + */ + protected function getBorderStartPosition() { + if ($this->rtl) { + $xmax = $this->lMargin; + } else { + $xmax = $this->w - $this->rMargin; + } + return array('page' => $this->page, 'column' => $this->current_column, 'x' => $this->x, 'y' => $this->y, 'xmax' => $xmax); + } + + /** + * Draw an HTML block border and fill + * @param $tag (array) array of tag properties. + * @param $xmax (int) end X coordinate for border. + * @protected + * @since 5.7.000 (2010-08-03) + */ + protected function drawHTMLTagBorder($tag, $xmax) { + if (!isset($tag['borderposition'])) { + // nothing to draw + return; + } + $prev_x = $this->x; + $prev_y = $this->y; + $prev_lasth = $this->lasth; + $border = 0; + $fill = false; + $this->lasth = 0; + if (isset($tag['border']) AND !empty($tag['border'])) { + // get border style + $border = $tag['border']; + if (!TCPDF_STATIC::empty_string($this->thead) AND (!$this->inthead)) { + // border for table header + $border = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell); + } + } + if (isset($tag['bgcolor']) AND ($tag['bgcolor'] !== false)) { + // get background color + $old_bgcolor = $this->bgcolor; + $this->SetFillColorArray($tag['bgcolor']); + $fill = true; + } + if (!$border AND !$fill) { + // nothing to draw + return; + } + if (isset($tag['attribute']['cellspacing'])) { + $clsp = $this->getHTMLUnitToUnits($tag['attribute']['cellspacing'], 1, 'px'); + $cellspacing = array('H' => $clsp, 'V' => $clsp); + } elseif (isset($tag['border-spacing'])) { + $cellspacing = $tag['border-spacing']; + } else { + $cellspacing = array('H' => 0, 'V' => 0); + } + if (($tag['value'] != 'table') AND (is_array($border)) AND (!empty($border))) { + // draw the border externally respect the sqare edge. + $border['mode'] = 'ext'; + } + if ($this->rtl) { + if ($xmax >= $tag['borderposition']['x']) { + $xmax = $tag['borderposition']['xmax']; + } + $w = ($tag['borderposition']['x'] - $xmax); + } else { + if ($xmax <= $tag['borderposition']['x']) { + $xmax = $tag['borderposition']['xmax']; + } + $w = ($xmax - $tag['borderposition']['x']); + } + if ($w <= 0) { + return; + } + $w += $cellspacing['H']; + $startpage = $tag['borderposition']['page']; + $startcolumn = $tag['borderposition']['column']; + $x = $tag['borderposition']['x']; + $y = $tag['borderposition']['y']; + $endpage = $this->page; + $starty = $tag['borderposition']['y'] - $cellspacing['V']; + $currentY = $this->y; + $this->x = $x; + // get latest column + $endcolumn = $this->current_column; + if ($this->num_columns == 0) { + $this->num_columns = 1; + } + // get border modes + $border_start = TCPDF_STATIC::getBorderMode($border, $position='start', $this->opencell); + $border_end = TCPDF_STATIC::getBorderMode($border, $position='end', $this->opencell); + $border_middle = TCPDF_STATIC::getBorderMode($border, $position='middle', $this->opencell); + // temporary disable page regions + $temp_page_regions = $this->page_regions; + $this->page_regions = array(); + // design borders around HTML cells. + for ($page = $startpage; $page <= $endpage; ++$page) { // for each page + $ccode = ''; + $this->setPage($page); + if ($this->num_columns < 2) { + // single-column mode + $this->x = $x; + $this->y = $this->tMargin; + } + // account for margin changes + if ($page > $startpage) { + if (($this->rtl) AND ($this->pagedim[$page]['orm'] != $this->pagedim[$startpage]['orm'])) { + $this->x -= ($this->pagedim[$page]['orm'] - $this->pagedim[$startpage]['orm']); + } elseif ((!$this->rtl) AND ($this->pagedim[$page]['olm'] != $this->pagedim[$startpage]['olm'])) { + $this->x += ($this->pagedim[$page]['olm'] - $this->pagedim[$startpage]['olm']); + } + } + if ($startpage == $endpage) { + // single page + for ($column = $startcolumn; $column <= $endcolumn; ++$column) { // for each column + $this->selectColumn($column); + if ($startcolumn == $endcolumn) { // single column + $cborder = $border; + $h = ($currentY - $y) + $cellspacing['V']; + $this->y = $starty; + } elseif ($column == $startcolumn) { // first column + $cborder = $border_start; + $this->y = $starty; + $h = $this->h - $this->y - $this->bMargin; + } elseif ($column == $endcolumn) { // end column + $cborder = $border_end; + $h = $currentY - $this->y; + } else { // middle column + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } elseif ($page == $startpage) { // first page + for ($column = $startcolumn; $column < $this->num_columns; ++$column) { // for each column + $this->selectColumn($column); + if ($column == $startcolumn) { // first column + $cborder = $border_start; + $this->y = $starty; + $h = $this->h - $this->y - $this->bMargin; + } else { // middle column + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } elseif ($page == $endpage) { // last page + for ($column = 0; $column <= $endcolumn; ++$column) { // for each column + $this->selectColumn($column); + if ($column == $endcolumn) { + // end column + $cborder = $border_end; + $h = $currentY - $this->y; + } else { + // middle column + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + } + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } else { // middle page + for ($column = 0; $column < $this->num_columns; ++$column) { // for each column + $this->selectColumn($column); + $cborder = $border_middle; + $h = $this->h - $this->y - $this->bMargin; + $ccode .= $this->getCellCode($w, $h, '', $cborder, 1, '', $fill, '', 0, true)."\n"; + } // end for each column + } + if ($cborder OR $fill) { + $offsetlen = strlen($ccode); + // draw border and fill + if ($this->inxobj) { + // we are inside an XObject template + if (end($this->xobjects[$this->xobjid]['transfmrk']) !== false) { + $pagemarkkey = key($this->xobjects[$this->xobjid]['transfmrk']); + $pagemark = $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey]; + $this->xobjects[$this->xobjid]['transfmrk'][$pagemarkkey] += $offsetlen; + } else { + $pagemark = $this->xobjects[$this->xobjid]['intmrk']; + $this->xobjects[$this->xobjid]['intmrk'] += $offsetlen; + } + $pagebuff = $this->xobjects[$this->xobjid]['outdata']; + $pstart = substr($pagebuff, 0, $pagemark); + $pend = substr($pagebuff, $pagemark); + $this->xobjects[$this->xobjid]['outdata'] = $pstart.$ccode.$pend; + } else { + if (end($this->transfmrk[$this->page]) !== false) { + $pagemarkkey = key($this->transfmrk[$this->page]); + $pagemark = $this->transfmrk[$this->page][$pagemarkkey]; + } elseif ($this->InFooter) { + $pagemark = $this->footerpos[$this->page]; + } else { + $pagemark = $this->intmrk[$this->page]; + } + $pagebuff = $this->getPageBuffer($this->page); + $pstart = substr($pagebuff, 0, $pagemark); + $pend = substr($pagebuff, $pagemark); + $this->setPageBuffer($this->page, $pstart.$ccode.$pend); + $this->bordermrk[$this->page] += $offsetlen; + $this->cntmrk[$this->page] += $offsetlen; + } + } + } // end for each page + // restore page regions + $this->page_regions = $temp_page_regions; + if (isset($old_bgcolor)) { + // restore background color + $this->SetFillColorArray($old_bgcolor); + } + // restore pointer position + $this->x = $prev_x; + $this->y = $prev_y; + $this->lasth = $prev_lasth; + } + + /** + * Set the default bullet to be used as LI bullet symbol + * @param $symbol (string) character or string to be used (legal values are: '' = automatic, '!' = auto bullet, '#' = auto numbering, 'disc', 'disc', 'circle', 'square', '1', 'decimal', 'decimal-leading-zero', 'i', 'lower-roman', 'I', 'upper-roman', 'a', 'lower-alpha', 'lower-latin', 'A', 'upper-alpha', 'upper-latin', 'lower-greek', 'img|type|width|height|image.ext') + * @public + * @since 4.0.028 (2008-09-26) + */ + public function setLIsymbol($symbol='!') { + // check for custom image symbol + if (substr($symbol, 0, 4) == 'img|') { + $this->lisymbol = $symbol; + return; + } + $symbol = strtolower($symbol); + $valid_symbols = array('!', '#', 'disc', 'circle', 'square', '1', 'decimal', 'decimal-leading-zero', 'i', 'lower-roman', 'I', 'upper-roman', 'a', 'lower-alpha', 'lower-latin', 'A', 'upper-alpha', 'upper-latin', 'lower-greek'); + if (in_array($symbol, $valid_symbols)) { + $this->lisymbol = $symbol; + } else { + $this->lisymbol = ''; + } + } + + /** + * Set the booklet mode for double-sided pages. + * @param $booklet (boolean) true set the booklet mode on, false otherwise. + * @param $inner (float) Inner page margin. + * @param $outer (float) Outer page margin. + * @public + * @since 4.2.000 (2008-10-29) + */ + public function SetBooklet($booklet=true, $inner=-1, $outer=-1) { + $this->booklet = $booklet; + if ($inner >= 0) { + $this->lMargin = $inner; + } + if ($outer >= 0) { + $this->rMargin = $outer; + } + } + + /** + * Swap the left and right margins. + * @param $reverse (boolean) if true swap left and right margins. + * @protected + * @since 4.2.000 (2008-10-29) + */ + protected function swapMargins($reverse=true) { + if ($reverse) { + // swap left and right margins + $mtemp = $this->original_lMargin; + $this->original_lMargin = $this->original_rMargin; + $this->original_rMargin = $mtemp; + $deltam = $this->original_lMargin - $this->original_rMargin; + $this->lMargin += $deltam; + $this->rMargin -= $deltam; + } + } + + /** + * Set the vertical spaces for HTML tags. + * The array must have the following structure (example): + * $tagvs = array('h1' => array(0 => array('h' => '', 'n' => 2), 1 => array('h' => 1.3, 'n' => 1))); + * The first array level contains the tag names, + * the second level contains 0 for opening tags or 1 for closing tags, + * the third level contains the vertical space unit (h) and the number spaces to add (n). + * If the h parameter is not specified, default values are used. + * @param $tagvs (array) array of tags and relative vertical spaces. + * @public + * @since 4.2.001 (2008-10-30) + */ + public function setHtmlVSpace($tagvs) { + $this->tagvspaces = $tagvs; + } + + /** + * Set custom width for list indentation. + * @param $width (float) width of the indentation. Use negative value to disable it. + * @public + * @since 4.2.007 (2008-11-12) + */ + public function setListIndentWidth($width) { + return $this->customlistindent = floatval($width); + } + + /** + * Set the top/bottom cell sides to be open or closed when the cell cross the page. + * @param $isopen (boolean) if true keeps the top/bottom border open for the cell sides that cross the page. + * @public + * @since 4.2.010 (2008-11-14) + */ + public function setOpenCell($isopen) { + $this->opencell = $isopen; + } + + /** + * Set the color and font style for HTML links. + * @param $color (array) RGB array of colors + * @param $fontstyle (string) additional font styles to add + * @public + * @since 4.4.003 (2008-12-09) + */ + public function setHtmlLinksStyle($color=array(0,0,255), $fontstyle='U') { + $this->htmlLinkColorArray = $color; + $this->htmlLinkFontStyle = $fontstyle; + } + + /** + * Convert HTML string containing value and unit of measure to user's units or points. + * @param $htmlval (string) String containing values and unit. + * @param $refsize (string) Reference value in points. + * @param $defaultunit (string) Default unit (can be one of the following: %, em, ex, px, in, mm, pc, pt). + * @param $points (boolean) If true returns points, otherwise returns value in user's units. + * @return float value in user's unit or point if $points=true + * @public + * @since 4.4.004 (2008-12-10) + */ + public function getHTMLUnitToUnits($htmlval, $refsize=1, $defaultunit='px', $points=false) { + $supportedunits = array('%', 'em', 'ex', 'px', 'in', 'cm', 'mm', 'pc', 'pt'); + $retval = 0; + $value = 0; + $unit = 'px'; + if ($points) { + $k = 1; + } else { + $k = $this->k; + } + if (in_array($defaultunit, $supportedunits)) { + $unit = $defaultunit; + } + if (is_numeric($htmlval)) { + $value = floatval($htmlval); + } elseif (preg_match('/([0-9\.\-\+]+)/', $htmlval, $mnum)) { + $value = floatval($mnum[1]); + if (preg_match('/([a-z%]+)/', $htmlval, $munit)) { + if (in_array($munit[1], $supportedunits)) { + $unit = $munit[1]; + } + } + } + switch ($unit) { + // percentage + case '%': { + $retval = (($value * $refsize) / 100); + break; + } + // relative-size + case 'em': { + $retval = ($value * $refsize); + break; + } + // height of lower case 'x' (about half the font-size) + case 'ex': { + $retval = ($value * ($refsize / 2)); + break; + } + // absolute-size + case 'in': { + $retval = (($value * $this->dpi) / $k); + break; + } + // centimeters + case 'cm': { + $retval = (($value / 2.54 * $this->dpi) / $k); + break; + } + // millimeters + case 'mm': { + $retval = (($value / 25.4 * $this->dpi) / $k); + break; + } + // one pica is 12 points + case 'pc': { + $retval = (($value * 12) / $k); + break; + } + // points + case 'pt': { + $retval = ($value / $k); + break; + } + // pixels + case 'px': { + $retval = $this->pixelsToUnits($value); + if ($points) { + $retval *= $this->k; + } + break; + } + } + return $retval; + } + + /** + * Output an HTML list bullet or ordered item symbol + * @param $listdepth (int) list nesting level + * @param $listtype (string) type of list + * @param $size (float) current font size + * @protected + * @since 4.4.004 (2008-12-10) + */ + protected function putHtmlListBullet($listdepth, $listtype='', $size=10) { + if ($this->state != 2) { + return; + } + $size /= $this->k; + $fill = ''; + $bgcolor = $this->bgcolor; + $color = $this->fgcolor; + $strokecolor = $this->strokecolor; + $width = 0; + $textitem = ''; + $tmpx = $this->x; + $lspace = $this->GetStringWidth(' '); + if ($listtype == '^') { + // special symbol used for avoid justification of rect bullet + $this->lispacer = ''; + return; + } elseif ($listtype == '!') { + // set default list type for unordered list + $deftypes = array('disc', 'circle', 'square'); + $listtype = $deftypes[($listdepth - 1) % 3]; + } elseif ($listtype == '#') { + // set default list type for ordered list + $listtype = 'decimal'; + } elseif (substr($listtype, 0, 4) == 'img|') { + // custom image type ('img|type|width|height|image.ext') + $img = explode('|', $listtype); + $listtype = 'img'; + } + switch ($listtype) { + // unordered types + case 'none': { + break; + } + case 'disc': { + $r = $size / 6; + $lspace += (2 * $r); + if ($this->rtl) { + $this->x += $lspace; + } else { + $this->x -= $lspace; + } + $this->Circle(($this->x + $r), ($this->y + ($this->lasth / 2)), $r, 0, 360, 'F', array(), $color, 8); + break; + } + case 'circle': { + $r = $size / 6; + $lspace += (2 * $r); + if ($this->rtl) { + $this->x += $lspace; + } else { + $this->x -= $lspace; + } + $prev_line_style = $this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor; + $new_line_style = array('width' => ($r / 3), 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'phase' => 0, 'color'=>$color); + $this->Circle(($this->x + $r), ($this->y + ($this->lasth / 2)), ($r * (1 - (1/6))), 0, 360, 'D', $new_line_style, array(), 8); + $this->_out($prev_line_style); // restore line settings + break; + } + case 'square': { + $l = $size / 3; + $lspace += $l; + if ($this->rtl) {; + $this->x += $lspace; + } else { + $this->x -= $lspace; + } + $this->Rect($this->x, ($this->y + (($this->lasth - $l) / 2)), $l, $l, 'F', array(), $color); + break; + } + case 'img': { + // 1=>type, 2=>width, 3=>height, 4=>image.ext + $lspace += $img[2]; + if ($this->rtl) {; + $this->x += $lspace; + } else { + $this->x -= $lspace; + } + $imgtype = strtolower($img[1]); + $prev_y = $this->y; + switch ($imgtype) { + case 'svg': { + $this->ImageSVG($img[4], $this->x, ($this->y + (($this->lasth - $img[3]) / 2)), $img[2], $img[3], '', 'T', '', 0, false); + break; + } + case 'ai': + case 'eps': { + $this->ImageEps($img[4], $this->x, ($this->y + (($this->lasth - $img[3]) / 2)), $img[2], $img[3], '', true, 'T', '', 0, false); + break; + } + default: { + $this->Image($img[4], $this->x, ($this->y + (($this->lasth - $img[3]) / 2)), $img[2], $img[3], $img[1], '', 'T', false, 300, '', false, false, 0, false, false, false); + break; + } + } + $this->y = $prev_y; + break; + } + // ordered types + // $this->listcount[$this->listnum]; + // $textitem + case '1': + case 'decimal': { + $textitem = $this->listcount[$this->listnum]; + break; + } + case 'decimal-leading-zero': { + $textitem = sprintf('%02d', $this->listcount[$this->listnum]); + break; + } + case 'i': + case 'lower-roman': { + $textitem = strtolower(TCPDF_STATIC::intToRoman($this->listcount[$this->listnum])); + break; + } + case 'I': + case 'upper-roman': { + $textitem = TCPDF_STATIC::intToRoman($this->listcount[$this->listnum]); + break; + } + case 'a': + case 'lower-alpha': + case 'lower-latin': { + $textitem = chr(97 + $this->listcount[$this->listnum] - 1); + break; + } + case 'A': + case 'upper-alpha': + case 'upper-latin': { + $textitem = chr(65 + $this->listcount[$this->listnum] - 1); + break; + } + case 'lower-greek': { + $textitem = TCPDF_FONTS::unichr((945 + $this->listcount[$this->listnum] - 1), $this->isunicode); + break; + } + /* + // Types to be implemented (special handling) + case 'hebrew': { + break; + } + case 'armenian': { + break; + } + case 'georgian': { + break; + } + case 'cjk-ideographic': { + break; + } + case 'hiragana': { + break; + } + case 'katakana': { + break; + } + case 'hiragana-iroha': { + break; + } + case 'katakana-iroha': { + break; + } + */ + default: { + $textitem = $this->listcount[$this->listnum]; + } + } + if (!TCPDF_STATIC::empty_string($textitem)) { + // Check whether we need a new page or new column + $prev_y = $this->y; + $h = $this->getCellHeight($this->FontSize); + if ($this->checkPageBreak($h) OR ($this->y < $prev_y)) { + $tmpx = $this->x; + } + // print ordered item + if ($this->rtl) { + $textitem = '.'.$textitem; + } else { + $textitem = $textitem.'.'; + } + $lspace += $this->GetStringWidth($textitem); + if ($this->rtl) { + $this->x += $lspace; + } else { + $this->x -= $lspace; + } + $this->Write($this->lasth, $textitem, '', false, '', false, 0, false); + } + $this->x = $tmpx; + $this->lispacer = '^'; + // restore colors + $this->SetFillColorArray($bgcolor); + $this->SetDrawColorArray($strokecolor); + $this->SettextColorArray($color); + } + + /** + * Returns current graphic variables as array. + * @return array of graphic variables + * @protected + * @since 4.2.010 (2008-11-14) + */ + protected function getGraphicVars() { + $grapvars = array( + 'FontFamily' => $this->FontFamily, + 'FontStyle' => $this->FontStyle, + 'FontSizePt' => $this->FontSizePt, + 'rMargin' => $this->rMargin, + 'lMargin' => $this->lMargin, + 'cell_padding' => $this->cell_padding, + 'cell_margin' => $this->cell_margin, + 'LineWidth' => $this->LineWidth, + 'linestyleWidth' => $this->linestyleWidth, + 'linestyleCap' => $this->linestyleCap, + 'linestyleJoin' => $this->linestyleJoin, + 'linestyleDash' => $this->linestyleDash, + 'textrendermode' => $this->textrendermode, + 'textstrokewidth' => $this->textstrokewidth, + 'DrawColor' => $this->DrawColor, + 'FillColor' => $this->FillColor, + 'TextColor' => $this->TextColor, + 'ColorFlag' => $this->ColorFlag, + 'bgcolor' => $this->bgcolor, + 'fgcolor' => $this->fgcolor, + 'htmlvspace' => $this->htmlvspace, + 'listindent' => $this->listindent, + 'listindentlevel' => $this->listindentlevel, + 'listnum' => $this->listnum, + 'listordered' => $this->listordered, + 'listcount' => $this->listcount, + 'lispacer' => $this->lispacer, + 'cell_height_ratio' => $this->cell_height_ratio, + 'font_stretching' => $this->font_stretching, + 'font_spacing' => $this->font_spacing, + 'alpha' => $this->alpha, + // extended + 'lasth' => $this->lasth, + 'tMargin' => $this->tMargin, + 'bMargin' => $this->bMargin, + 'AutoPageBreak' => $this->AutoPageBreak, + 'PageBreakTrigger' => $this->PageBreakTrigger, + 'x' => $this->x, + 'y' => $this->y, + 'w' => $this->w, + 'h' => $this->h, + 'wPt' => $this->wPt, + 'hPt' => $this->hPt, + 'fwPt' => $this->fwPt, + 'fhPt' => $this->fhPt, + 'page' => $this->page, + 'current_column' => $this->current_column, + 'num_columns' => $this->num_columns + ); + return $grapvars; + } + + /** + * Set graphic variables. + * @param $gvars (array) array of graphic variablesto restore + * @param $extended (boolean) if true restore extended graphic variables + * @protected + * @since 4.2.010 (2008-11-14) + */ + protected function setGraphicVars($gvars, $extended=false) { + if ($this->state != 2) { + return; + } + $this->FontFamily = $gvars['FontFamily']; + $this->FontStyle = $gvars['FontStyle']; + $this->FontSizePt = $gvars['FontSizePt']; + $this->rMargin = $gvars['rMargin']; + $this->lMargin = $gvars['lMargin']; + $this->cell_padding = $gvars['cell_padding']; + $this->cell_margin = $gvars['cell_margin']; + $this->LineWidth = $gvars['LineWidth']; + $this->linestyleWidth = $gvars['linestyleWidth']; + $this->linestyleCap = $gvars['linestyleCap']; + $this->linestyleJoin = $gvars['linestyleJoin']; + $this->linestyleDash = $gvars['linestyleDash']; + $this->textrendermode = $gvars['textrendermode']; + $this->textstrokewidth = $gvars['textstrokewidth']; + $this->DrawColor = $gvars['DrawColor']; + $this->FillColor = $gvars['FillColor']; + $this->TextColor = $gvars['TextColor']; + $this->ColorFlag = $gvars['ColorFlag']; + $this->bgcolor = $gvars['bgcolor']; + $this->fgcolor = $gvars['fgcolor']; + $this->htmlvspace = $gvars['htmlvspace']; + $this->listindent = $gvars['listindent']; + $this->listindentlevel = $gvars['listindentlevel']; + $this->listnum = $gvars['listnum']; + $this->listordered = $gvars['listordered']; + $this->listcount = $gvars['listcount']; + $this->lispacer = $gvars['lispacer']; + $this->cell_height_ratio = $gvars['cell_height_ratio']; + $this->font_stretching = $gvars['font_stretching']; + $this->font_spacing = $gvars['font_spacing']; + $this->alpha = $gvars['alpha']; + if ($extended) { + // restore extended values + $this->lasth = $gvars['lasth']; + $this->tMargin = $gvars['tMargin']; + $this->bMargin = $gvars['bMargin']; + $this->AutoPageBreak = $gvars['AutoPageBreak']; + $this->PageBreakTrigger = $gvars['PageBreakTrigger']; + $this->x = $gvars['x']; + $this->y = $gvars['y']; + $this->w = $gvars['w']; + $this->h = $gvars['h']; + $this->wPt = $gvars['wPt']; + $this->hPt = $gvars['hPt']; + $this->fwPt = $gvars['fwPt']; + $this->fhPt = $gvars['fhPt']; + $this->page = $gvars['page']; + $this->current_column = $gvars['current_column']; + $this->num_columns = $gvars['num_columns']; + } + $this->_out(''.$this->linestyleWidth.' '.$this->linestyleCap.' '.$this->linestyleJoin.' '.$this->linestyleDash.' '.$this->DrawColor.' '.$this->FillColor.''); + if (!TCPDF_STATIC::empty_string($this->FontFamily)) { + $this->SetFont($this->FontFamily, $this->FontStyle, $this->FontSizePt); + } + } + + /** + * Outputs the "save graphics state" operator 'q' + * @protected + */ + protected function _outSaveGraphicsState() { + $this->_out('q'); + } + + /** + * Outputs the "restore graphics state" operator 'Q' + * @protected + */ + protected function _outRestoreGraphicsState() { + $this->_out('Q'); + } + + /** + * Writes data to a temporary file on filesystem. + * @param $filename (string) file name + * @param $data (mixed) data to write on file + * @param $append (boolean) if true append data, false replace. + * @param $serialize (boolean) if true serialize data. + * @since 4.5.000 (2008-12-31) + * @protected + */ + protected function writeDiskCache($filename, $data, $append=false, $serialize=false) { + if ($append) { + $fmode = 'ab+'; + } else { + $fmode = 'wb+'; + } + $f = @fopen($filename, $fmode); + if (!$f) { + $this->Error('Unable to write cache file: '.$filename); + } + if ($serialize) { + $data = $this->file_id.serialize($data); + } + fwrite($f, $data); + fclose($f); + // update file length (needed for transactions) + if (!isset($this->cache_file_length['_'.$filename])) { + $this->cache_file_length['_'.$filename] = strlen($data); + } else { + $this->cache_file_length['_'.$filename] += strlen($data); + } + } + + /** + * Read data from a temporary file on filesystem. + * @param $filename (string) file name + * @param $unserialize (boolean) if true unserialize data. + * @return mixed retrieved data + * @since 4.5.000 (2008-12-31) + * @protected + */ + protected function readDiskCache($filename, $unserialize=false) { + $data = file_get_contents($filename); + if ($data === FALSE) { + $this->Error('Unable to read the file: '.$filename); + } + if ($unserialize) { + if (substr($data, 0, 32) != $this->file_id) { + $this->Error('Invalid cache file: '.$filename); + } + $data = unserialize(substr($data, 32)); + } + return $data; + } + + /** + * Set buffer content (always append data). + * @param $data (string) data + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected function setBuffer($data) { + $this->bufferlen += strlen($data); + if ($this->diskcache) { + if (!isset($this->buffer) OR TCPDF_STATIC::empty_string($this->buffer)) { + $this->buffer = TCPDF_STATIC::getObjFilename('buf'); + } + $this->writeDiskCache($this->buffer, $data, true, false); + } else { + $this->buffer .= $data; + } + } + + /** + * Replace the buffer content + * @param $data (string) data + * @protected + * @since 5.5.000 (2010-06-22) + */ + protected function replaceBuffer($data) { + $this->bufferlen = strlen($data); + if ($this->diskcache) { + if (!isset($this->buffer) OR TCPDF_STATIC::empty_string($this->buffer)) { + $this->buffer = TCPDF_STATIC::getObjFilename('buf'); + } + $this->writeDiskCache($this->buffer, $data, false, false); + } else { + $this->buffer = $data; + } + } + + /** + * Get buffer content. + * @return string buffer content + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected function getBuffer() { + if ($this->diskcache) { + return $this->readDiskCache($this->buffer, false); + } else { + return $this->buffer; + } + } + + /** + * Set page buffer content. + * @param $page (int) page number + * @param $data (string) page data + * @param $append (boolean) if true append data, false replace. + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected function setPageBuffer($page, $data, $append=false) { + if ($this->diskcache) { + if (!isset($this->pages[$page])) { + $this->pages[$page] = TCPDF_STATIC::getObjFilename('page'); + } + $this->writeDiskCache($this->pages[$page], $data, $append, false); + } else { + if ($append) { + $this->pages[$page] .= $data; + } else { + $this->pages[$page] = $data; + } + } + if ($append AND isset($this->pagelen[$page])) { + $this->pagelen[$page] += strlen($data); + } else { + $this->pagelen[$page] = strlen($data); + } + } + + /** + * Get page buffer content. + * @param $page (int) page number + * @return string page buffer content or false in case of error + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected function getPageBuffer($page) { + if ($this->diskcache) { + return $this->readDiskCache($this->pages[$page], false); + } elseif (isset($this->pages[$page])) { + return $this->pages[$page]; + } + return false; + } + + /** + * Set image buffer content. + * @param $image (string) image key + * @param $data (array) image data + * @return int image index number + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected function setImageBuffer($image, $data) { + if (($data['i'] = array_search($image, $this->imagekeys)) === FALSE) { + $this->imagekeys[$this->numimages] = $image; + $data['i'] = $this->numimages; + ++$this->numimages; + } + if ($this->diskcache) { + if (!isset($this->images[$image])) { + $this->images[$image] = TCPDF_STATIC::getObjFilename('img'); + } + $this->writeDiskCache($this->images[$image], $data, false, true); + } else { + $this->images[$image] = $data; + } + return $data['i']; + } + + /** + * Set image buffer content for a specified sub-key. + * @param $image (string) image key + * @param $key (string) image sub-key + * @param $data (array) image data + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected function setImageSubBuffer($image, $key, $data) { + if (!isset($this->images[$image])) { + $this->setImageBuffer($image, array()); + } + if ($this->diskcache) { + $tmpimg = $this->getImageBuffer($image); + $tmpimg[$key] = $data; + $this->writeDiskCache($this->images[$image], $tmpimg, false, true); + } else { + $this->images[$image][$key] = $data; + } + } + + /** + * Get image buffer content. + * @param $image (string) image key + * @return string image buffer content or false in case of error + * @protected + * @since 4.5.000 (2008-12-31) + */ + protected function getImageBuffer($image) { + if ($this->diskcache AND isset($this->images[$image])) { + return $this->readDiskCache($this->images[$image], true); + } elseif (isset($this->images[$image])) { + return $this->images[$image]; + } + return false; + } + + /** + * Set font buffer content. + * @param $font (string) font key + * @param $data (array) font data + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected function setFontBuffer($font, $data) { + if ($this->diskcache) { + if (!isset($this->fonts[$font])) { + $this->fonts[$font] = TCPDF_STATIC::getObjFilename('font'); + } + $this->writeDiskCache($this->fonts[$font], $data, false, true); + } else { + $this->fonts[$font] = $data; + } + if (!in_array($font, $this->fontkeys)) { + $this->fontkeys[] = $font; + // store object ID for current font + ++$this->n; + $this->font_obj_ids[$font] = $this->n; + $this->setFontSubBuffer($font, 'n', $this->n); + } + } + + /** + * Set font buffer content. + * @param $font (string) font key + * @param $key (string) font sub-key + * @param $data (array) font data + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected function setFontSubBuffer($font, $key, $data) { + if (!isset($this->fonts[$font])) { + $this->setFontBuffer($font, array()); + } + if ($this->diskcache) { + $tmpfont = $this->getFontBuffer($font); + $tmpfont[$key] = $data; + $this->writeDiskCache($this->fonts[$font], $tmpfont, false, true); + } else { + $this->fonts[$font][$key] = $data; + } + } + + /** + * Get font buffer content. + * @param $font (string) font key + * @return string font buffer content or false in case of error + * @protected + * @since 4.5.000 (2009-01-02) + */ + protected function getFontBuffer($font) { + if ($this->diskcache AND isset($this->fonts[$font])) { + return $this->readDiskCache($this->fonts[$font], true); + } elseif (isset($this->fonts[$font])) { + return $this->fonts[$font]; + } + return false; + } + + /** + * Move a page to a previous position. + * @param $frompage (int) number of the source page + * @param $topage (int) number of the destination page (must be less than $frompage) + * @return true in case of success, false in case of error. + * @public + * @since 4.5.000 (2009-01-02) + */ + public function movePage($frompage, $topage) { + if (($frompage > $this->numpages) OR ($frompage <= $topage)) { + return false; + } + if ($frompage == $this->page) { + // close the page before moving it + $this->endPage(); + } + // move all page-related states + $tmppage = $this->getPageBuffer($frompage); + $tmppagedim = $this->pagedim[$frompage]; + $tmppagelen = $this->pagelen[$frompage]; + $tmpintmrk = $this->intmrk[$frompage]; + $tmpbordermrk = $this->bordermrk[$frompage]; + $tmpcntmrk = $this->cntmrk[$frompage]; + $tmppageobjects = $this->pageobjects[$frompage]; + if (isset($this->footerpos[$frompage])) { + $tmpfooterpos = $this->footerpos[$frompage]; + } + if (isset($this->footerlen[$frompage])) { + $tmpfooterlen = $this->footerlen[$frompage]; + } + if (isset($this->transfmrk[$frompage])) { + $tmptransfmrk = $this->transfmrk[$frompage]; + } + if (isset($this->PageAnnots[$frompage])) { + $tmpannots = $this->PageAnnots[$frompage]; + } + if (isset($this->newpagegroup) AND !empty($this->newpagegroup)) { + for ($i = $frompage; $i > $topage; --$i) { + if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $frompage)) { + --$this->pagegroups[$this->newpagegroup[$i]]; + break; + } + } + for ($i = $topage; $i > 0; --$i) { + if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $topage)) { + ++$this->pagegroups[$this->newpagegroup[$i]]; + break; + } + } + } + for ($i = $frompage; $i > $topage; --$i) { + $j = $i - 1; + // shift pages down + $this->setPageBuffer($i, $this->getPageBuffer($j)); + $this->pagedim[$i] = $this->pagedim[$j]; + $this->pagelen[$i] = $this->pagelen[$j]; + $this->intmrk[$i] = $this->intmrk[$j]; + $this->bordermrk[$i] = $this->bordermrk[$j]; + $this->cntmrk[$i] = $this->cntmrk[$j]; + $this->pageobjects[$i] = $this->pageobjects[$j]; + if (isset($this->footerpos[$j])) { + $this->footerpos[$i] = $this->footerpos[$j]; + } elseif (isset($this->footerpos[$i])) { + unset($this->footerpos[$i]); + } + if (isset($this->footerlen[$j])) { + $this->footerlen[$i] = $this->footerlen[$j]; + } elseif (isset($this->footerlen[$i])) { + unset($this->footerlen[$i]); + } + if (isset($this->transfmrk[$j])) { + $this->transfmrk[$i] = $this->transfmrk[$j]; + } elseif (isset($this->transfmrk[$i])) { + unset($this->transfmrk[$i]); + } + if (isset($this->PageAnnots[$j])) { + $this->PageAnnots[$i] = $this->PageAnnots[$j]; + } elseif (isset($this->PageAnnots[$i])) { + unset($this->PageAnnots[$i]); + } + if (isset($this->newpagegroup[$j])) { + $this->newpagegroup[$i] = $this->newpagegroup[$j]; + unset($this->newpagegroup[$j]); + } + if ($this->currpagegroup == $j) { + $this->currpagegroup = $i; + } + } + $this->setPageBuffer($topage, $tmppage); + $this->pagedim[$topage] = $tmppagedim; + $this->pagelen[$topage] = $tmppagelen; + $this->intmrk[$topage] = $tmpintmrk; + $this->bordermrk[$topage] = $tmpbordermrk; + $this->cntmrk[$topage] = $tmpcntmrk; + $this->pageobjects[$topage] = $tmppageobjects; + if (isset($tmpfooterpos)) { + $this->footerpos[$topage] = $tmpfooterpos; + } elseif (isset($this->footerpos[$topage])) { + unset($this->footerpos[$topage]); + } + if (isset($tmpfooterlen)) { + $this->footerlen[$topage] = $tmpfooterlen; + } elseif (isset($this->footerlen[$topage])) { + unset($this->footerlen[$topage]); + } + if (isset($tmptransfmrk)) { + $this->transfmrk[$topage] = $tmptransfmrk; + } elseif (isset($this->transfmrk[$topage])) { + unset($this->transfmrk[$topage]); + } + if (isset($tmpannots)) { + $this->PageAnnots[$topage] = $tmpannots; + } elseif (isset($this->PageAnnots[$topage])) { + unset($this->PageAnnots[$topage]); + } + // adjust outlines + $tmpoutlines = $this->outlines; + foreach ($tmpoutlines as $key => $outline) { + if (!$outline['f']) { + if (($outline['p'] >= $topage) AND ($outline['p'] < $frompage)) { + $this->outlines[$key]['p'] = ($outline['p'] + 1); + } elseif ($outline['p'] == $frompage) { + $this->outlines[$key]['p'] = $topage; + } + } + } + // adjust dests + $tmpdests = $this->dests; + foreach ($tmpdests as $key => $dest) { + if (!$dest['f']) { + if (($dest['p'] >= $topage) AND ($dest['p'] < $frompage)) { + $this->dests[$key]['p'] = ($dest['p'] + 1); + } elseif ($dest['p'] == $frompage) { + $this->dests[$key]['p'] = $topage; + } + } + } + // adjust links + $tmplinks = $this->links; + foreach ($tmplinks as $key => $link) { + if (!$link['f']) { + if (($link['p'] >= $topage) AND ($link['p'] < $frompage)) { + $this->links[$key]['p'] = ($link['p'] + 1); + } elseif ($link['p'] == $frompage) { + $this->links[$key]['p'] = $topage; + } + } + } + // adjust javascript + $jfrompage = $frompage; + $jtopage = $topage; + if (preg_match_all('/this\.addField\(\'([^\']*)\',\'([^\']*)\',([0-9]+)/', $this->javascript, $pamatch) > 0) { + foreach($pamatch[0] as $pk => $pmatch) { + $pagenum = intval($pamatch[3][$pk]) + 1; + if (($pagenum >= $jtopage) AND ($pagenum < $jfrompage)) { + $newpage = ($pagenum + 1); + } elseif ($pagenum == $jfrompage) { + $newpage = $jtopage; + } else { + $newpage = $pagenum; + } + --$newpage; + $newjs = "this.addField(\'".$pamatch[1][$pk]."\',\'".$pamatch[2][$pk]."\',".$newpage; + $this->javascript = str_replace($pmatch, $newjs, $this->javascript); + } + unset($pamatch); + } + // return to last page + $this->lastPage(true); + return true; + } + + /** + * Remove the specified page. + * @param $page (int) page to remove + * @return true in case of success, false in case of error. + * @public + * @since 4.6.004 (2009-04-23) + */ + public function deletePage($page) { + if (($page < 1) OR ($page > $this->numpages)) { + return false; + } + // delete current page + unset($this->pages[$page]); + unset($this->pagedim[$page]); + unset($this->pagelen[$page]); + unset($this->intmrk[$page]); + unset($this->bordermrk[$page]); + unset($this->cntmrk[$page]); + foreach ($this->pageobjects[$page] as $oid) { + if (isset($this->offsets[$oid])){ + unset($this->offsets[$oid]); + } + } + unset($this->pageobjects[$page]); + if (isset($this->footerpos[$page])) { + unset($this->footerpos[$page]); + } + if (isset($this->footerlen[$page])) { + unset($this->footerlen[$page]); + } + if (isset($this->transfmrk[$page])) { + unset($this->transfmrk[$page]); + } + if (isset($this->PageAnnots[$page])) { + unset($this->PageAnnots[$page]); + } + if (isset($this->newpagegroup) AND !empty($this->newpagegroup)) { + for ($i = $page; $i > 0; --$i) { + if (isset($this->newpagegroup[$i]) AND (($i + $this->pagegroups[$this->newpagegroup[$i]]) > $page)) { + --$this->pagegroups[$this->newpagegroup[$i]]; + break; + } + } + } + if (isset($this->pageopen[$page])) { + unset($this->pageopen[$page]); + } + if ($page < $this->numpages) { + // update remaining pages + for ($i = $page; $i < $this->numpages; ++$i) { + $j = $i + 1; + // shift pages + $this->setPageBuffer($i, $this->getPageBuffer($j)); + $this->pagedim[$i] = $this->pagedim[$j]; + $this->pagelen[$i] = $this->pagelen[$j]; + $this->intmrk[$i] = $this->intmrk[$j]; + $this->bordermrk[$i] = $this->bordermrk[$j]; + $this->cntmrk[$i] = $this->cntmrk[$j]; + $this->pageobjects[$i] = $this->pageobjects[$j]; + if (isset($this->footerpos[$j])) { + $this->footerpos[$i] = $this->footerpos[$j]; + } elseif (isset($this->footerpos[$i])) { + unset($this->footerpos[$i]); + } + if (isset($this->footerlen[$j])) { + $this->footerlen[$i] = $this->footerlen[$j]; + } elseif (isset($this->footerlen[$i])) { + unset($this->footerlen[$i]); + } + if (isset($this->transfmrk[$j])) { + $this->transfmrk[$i] = $this->transfmrk[$j]; + } elseif (isset($this->transfmrk[$i])) { + unset($this->transfmrk[$i]); + } + if (isset($this->PageAnnots[$j])) { + $this->PageAnnots[$i] = $this->PageAnnots[$j]; + } elseif (isset($this->PageAnnots[$i])) { + unset($this->PageAnnots[$i]); + } + if (isset($this->newpagegroup[$j])) { + $this->newpagegroup[$i] = $this->newpagegroup[$j]; + unset($this->newpagegroup[$j]); + } + if ($this->currpagegroup == $j) { + $this->currpagegroup = $i; + } + if (isset($this->pageopen[$j])) { + $this->pageopen[$i] = $this->pageopen[$j]; + } elseif (isset($this->pageopen[$i])) { + unset($this->pageopen[$i]); + } + } + // remove last page + unset($this->pages[$this->numpages]); + unset($this->pagedim[$this->numpages]); + unset($this->pagelen[$this->numpages]); + unset($this->intmrk[$this->numpages]); + unset($this->bordermrk[$this->numpages]); + unset($this->cntmrk[$this->numpages]); + foreach ($this->pageobjects[$this->numpages] as $oid) { + if (isset($this->offsets[$oid])){ + unset($this->offsets[$oid]); + } + } + unset($this->pageobjects[$this->numpages]); + if (isset($this->footerpos[$this->numpages])) { + unset($this->footerpos[$this->numpages]); + } + if (isset($this->footerlen[$this->numpages])) { + unset($this->footerlen[$this->numpages]); + } + if (isset($this->transfmrk[$this->numpages])) { + unset($this->transfmrk[$this->numpages]); + } + if (isset($this->PageAnnots[$this->numpages])) { + unset($this->PageAnnots[$this->numpages]); + } + if (isset($this->newpagegroup[$this->numpages])) { + unset($this->newpagegroup[$this->numpages]); + } + if ($this->currpagegroup == $this->numpages) { + $this->currpagegroup = ($this->numpages - 1); + } + if (isset($this->pagegroups[$this->numpages])) { + unset($this->pagegroups[$this->numpages]); + } + if (isset($this->pageopen[$this->numpages])) { + unset($this->pageopen[$this->numpages]); + } + } + --$this->numpages; + $this->page = $this->numpages; + // adjust outlines + $tmpoutlines = $this->outlines; + foreach ($tmpoutlines as $key => $outline) { + if (!$outline['f']) { + if ($outline['p'] > $page) { + $this->outlines[$key]['p'] = $outline['p'] - 1; + } elseif ($outline['p'] == $page) { + unset($this->outlines[$key]); + } + } + } + // adjust dests + $tmpdests = $this->dests; + foreach ($tmpdests as $key => $dest) { + if (!$dest['f']) { + if ($dest['p'] > $page) { + $this->dests[$key]['p'] = $dest['p'] - 1; + } elseif ($dest['p'] == $page) { + unset($this->dests[$key]); + } + } + } + // adjust links + $tmplinks = $this->links; + foreach ($tmplinks as $key => $link) { + if (!$link['f']) { + if ($link['p'] > $page) { + $this->links[$key]['p'] = $link['p'] - 1; + } elseif ($link['p'] == $page) { + unset($this->links[$key]); + } + } + } + // adjust javascript + $jpage = $page; + if (preg_match_all('/this\.addField\(\'([^\']*)\',\'([^\']*)\',([0-9]+)/', $this->javascript, $pamatch) > 0) { + foreach($pamatch[0] as $pk => $pmatch) { + $pagenum = intval($pamatch[3][$pk]) + 1; + if ($pagenum >= $jpage) { + $newpage = ($pagenum - 1); + } elseif ($pagenum == $jpage) { + $newpage = 1; + } else { + $newpage = $pagenum; + } + --$newpage; + $newjs = "this.addField(\'".$pamatch[1][$pk]."\',\'".$pamatch[2][$pk]."\',".$newpage; + $this->javascript = str_replace($pmatch, $newjs, $this->javascript); + } + unset($pamatch); + } + // return to last page + if ($this->numpages > 0) { + $this->lastPage(true); + } + return true; + } + + /** + * Clone the specified page to a new page. + * @param $page (int) number of page to copy (0 = current page) + * @return true in case of success, false in case of error. + * @public + * @since 4.9.015 (2010-04-20) + */ + public function copyPage($page=0) { + if ($page == 0) { + // default value + $page = $this->page; + } + if (($page < 1) OR ($page > $this->numpages)) { + return false; + } + // close the last page + $this->endPage(); + // copy all page-related states + ++$this->numpages; + $this->page = $this->numpages; + $this->setPageBuffer($this->page, $this->getPageBuffer($page)); + $this->pagedim[$this->page] = $this->pagedim[$page]; + $this->pagelen[$this->page] = $this->pagelen[$page]; + $this->intmrk[$this->page] = $this->intmrk[$page]; + $this->bordermrk[$this->page] = $this->bordermrk[$page]; + $this->cntmrk[$this->page] = $this->cntmrk[$page]; + $this->pageobjects[$this->page] = $this->pageobjects[$page]; + $this->pageopen[$this->page] = false; + if (isset($this->footerpos[$page])) { + $this->footerpos[$this->page] = $this->footerpos[$page]; + } + if (isset($this->footerlen[$page])) { + $this->footerlen[$this->page] = $this->footerlen[$page]; + } + if (isset($this->transfmrk[$page])) { + $this->transfmrk[$this->page] = $this->transfmrk[$page]; + } + if (isset($this->PageAnnots[$page])) { + $this->PageAnnots[$this->page] = $this->PageAnnots[$page]; + } + if (isset($this->newpagegroup[$page])) { + // start a new group + $this->newpagegroup[$this->page] = sizeof($this->newpagegroup) + 1; + $this->currpagegroup = $this->newpagegroup[$this->page]; + $this->pagegroups[$this->currpagegroup] = 1; + } elseif (isset($this->currpagegroup) AND ($this->currpagegroup > 0)) { + ++$this->pagegroups[$this->currpagegroup]; + } + // copy outlines + $tmpoutlines = $this->outlines; + foreach ($tmpoutlines as $key => $outline) { + if ($outline['p'] == $page) { + $this->outlines[] = array('t' => $outline['t'], 'l' => $outline['l'], 'x' => $outline['x'], 'y' => $outline['y'], 'p' => $this->page, 'f' => $outline['f'], 's' => $outline['s'], 'c' => $outline['c']); + } + } + // copy links + $tmplinks = $this->links; + foreach ($tmplinks as $key => $link) { + if ($link['p'] == $page) { + $this->links[] = array('p' => $this->page, 'y' => $link['y'], 'f' => $link['f']); + } + } + // return to last page + $this->lastPage(true); + return true; + } + + /** + * Output a Table of Content Index (TOC). + * This method must be called after all Bookmarks were set. + * Before calling this method you have to open the page using the addTOCPage() method. + * After calling this method you have to call endTOCPage() to close the TOC page. + * You can override this method to achieve different styles. + * @param $page (int) page number where this TOC should be inserted (leave empty for current page). + * @param $numbersfont (string) set the font for page numbers (please use monospaced font for better alignment). + * @param $filler (string) string used to fill the space between text and page number. + * @param $toc_name (string) name to use for TOC bookmark. + * @param $style (string) Font style for title: B = Bold, I = Italic, BI = Bold + Italic. + * @param $color (array) RGB color array for bookmark title (values from 0 to 255). + * @public + * @author Nicola Asuni + * @since 4.5.000 (2009-01-02) + * @see addTOCPage(), endTOCPage(), addHTMLTOC() + */ + public function addTOC($page='', $numbersfont='', $filler='.', $toc_name='TOC', $style='', $color=array(0,0,0)) { + $fontsize = $this->FontSizePt; + $fontfamily = $this->FontFamily; + $fontstyle = $this->FontStyle; + $w = $this->w - $this->lMargin - $this->rMargin; + $spacer = $this->GetStringWidth(chr(32)) * 4; + $lmargin = $this->lMargin; + $rmargin = $this->rMargin; + $x_start = $this->GetX(); + $page_first = $this->page; + $current_page = $this->page; + $page_fill_start = false; + $page_fill_end = false; + $current_column = $this->current_column; + if (TCPDF_STATIC::empty_string($numbersfont)) { + $numbersfont = $this->default_monospaced_font; + } + if (TCPDF_STATIC::empty_string($filler)) { + $filler = ' '; + } + if (TCPDF_STATIC::empty_string($page)) { + $gap = ' '; + } else { + $gap = ''; + if ($page < 1) { + $page = 1; + } + } + $this->SetFont($numbersfont, $fontstyle, $fontsize); + $numwidth = $this->GetStringWidth('00000'); + $maxpage = 0; //used for pages on attached documents + foreach ($this->outlines as $key => $outline) { + // check for extra pages (used for attachments) + if (($this->page > $page_first) AND ($outline['p'] >= $this->numpages)) { + $outline['p'] += ($this->page - $page_first); + } + if ($this->rtl) { + $aligntext = 'R'; + $alignnum = 'L'; + } else { + $aligntext = 'L'; + $alignnum = 'R'; + } + if ($outline['l'] == 0) { + $this->SetFont($fontfamily, $outline['s'].'B', $fontsize); + } else { + $this->SetFont($fontfamily, $outline['s'], $fontsize - $outline['l']); + } + $this->SetTextColorArray($outline['c']); + // check for page break + $this->checkPageBreak(2 * $this->getCellHeight($this->FontSize)); + // set margins and X position + if (($this->page == $current_page) AND ($this->current_column == $current_column)) { + $this->lMargin = $lmargin; + $this->rMargin = $rmargin; + } else { + if ($this->current_column != $current_column) { + if ($this->rtl) { + $x_start = $this->w - $this->columns[$this->current_column]['x']; + } else { + $x_start = $this->columns[$this->current_column]['x']; + } + } + $lmargin = $this->lMargin; + $rmargin = $this->rMargin; + $current_page = $this->page; + $current_column = $this->current_column; + } + $this->SetX($x_start); + $indent = ($spacer * $outline['l']); + if ($this->rtl) { + $this->x -= $indent; + $this->rMargin = $this->w - $this->x; + } else { + $this->x += $indent; + $this->lMargin = $this->x; + } + $link = $this->AddLink(); + $this->SetLink($link, $outline['y'], $outline['p']); + // write the text + if ($this->rtl) { + $txt = ' '.$outline['t']; + } else { + $txt = $outline['t'].' '; + } + $this->Write(0, $txt, $link, false, $aligntext, false, 0, false, false, 0, $numwidth, ''); + if ($this->rtl) { + $tw = $this->x - $this->lMargin; + } else { + $tw = $this->w - $this->rMargin - $this->x; + } + $this->SetFont($numbersfont, $fontstyle, $fontsize); + if (TCPDF_STATIC::empty_string($page)) { + $pagenum = $outline['p']; + } else { + // placemark to be replaced with the correct number + $pagenum = '{#'.($outline['p']).'}'; + if ($this->isUnicodeFont()) { + $pagenum = '{'.$pagenum.'}'; + } + $maxpage = max($maxpage, $outline['p']); + } + $fw = ($tw - $this->GetStringWidth($pagenum.$filler)); + $wfiller = $this->GetStringWidth($filler); + if ($wfiller > 0) { + $numfills = floor($fw / $wfiller); + } else { + $numfills = 0; + } + if ($numfills > 0) { + $rowfill = str_repeat($filler, $numfills); + } else { + $rowfill = ''; + } + if ($this->rtl) { + $pagenum = $pagenum.$gap.$rowfill; + } else { + $pagenum = $rowfill.$gap.$pagenum; + } + // write the number + $this->Cell($tw, 0, $pagenum, 0, 1, $alignnum, 0, $link, 0); + } + $page_last = $this->getPage(); + $numpages = ($page_last - $page_first + 1); + // account for booklet mode + if ($this->booklet) { + // check if a blank page is required before TOC + $page_fill_start = ((($page_first % 2) == 0) XOR (($page % 2) == 0)); + $page_fill_end = (!((($numpages % 2) == 0) XOR ($page_fill_start))); + if ($page_fill_start) { + // add a page at the end (to be moved before TOC) + $this->addPage(); + ++$page_last; + ++$numpages; + } + if ($page_fill_end) { + // add a page at the end + $this->addPage(); + ++$page_last; + ++$numpages; + } + } + $maxpage = max($maxpage, $page_last); + if (!TCPDF_STATIC::empty_string($page)) { + for ($p = $page_first; $p <= $page_last; ++$p) { + // get page data + $temppage = $this->getPageBuffer($p); + for ($n = 1; $n <= $maxpage; ++$n) { + // update page numbers + $a = '{#'.$n.'}'; + // get page number aliases + $pnalias = $this->getInternalPageNumberAliases($a); + // calculate replacement number + if (($n >= $page) AND ($n <= $this->numpages)) { + $np = $n + $numpages; + } else { + $np = $n; + } + $na = TCPDF_STATIC::formatTOCPageNumber(($this->starting_page_number + $np - 1)); + $nu = TCPDF_FONTS::UTF8ToUTF16BE($na, false, $this->isunicode, $this->CurrentFont); + // replace aliases with numbers + foreach ($pnalias['u'] as $u) { + $sfill = str_repeat($filler, max(0, (strlen($u) - strlen($nu.' ')))); + if ($this->rtl) { + $nr = $nu.TCPDF_FONTS::UTF8ToUTF16BE(' '.$sfill, false, $this->isunicode, $this->CurrentFont); + } else { + $nr = TCPDF_FONTS::UTF8ToUTF16BE($sfill.' ', false, $this->isunicode, $this->CurrentFont).$nu; + } + $temppage = str_replace($u, $nr, $temppage); + } + foreach ($pnalias['a'] as $a) { + $sfill = str_repeat($filler, max(0, (strlen($a) - strlen($na.' ')))); + if ($this->rtl) { + $nr = $na.' '.$sfill; + } else { + $nr = $sfill.' '.$na; + } + $temppage = str_replace($a, $nr, $temppage); + } + } + // save changes + $this->setPageBuffer($p, $temppage); + } + // move pages + $this->Bookmark($toc_name, 0, 0, $page_first, $style, $color); + if ($page_fill_start) { + $this->movePage($page_last, $page_first); + } + for ($i = 0; $i < $numpages; ++$i) { + $this->movePage($page_last, $page); + } + } + } + + /** + * Output a Table Of Content Index (TOC) using HTML templates. + * This method must be called after all Bookmarks were set. + * Before calling this method you have to open the page using the addTOCPage() method. + * After calling this method you have to call endTOCPage() to close the TOC page. + * @param $page (int) page number where this TOC should be inserted (leave empty for current page). + * @param $toc_name (string) name to use for TOC bookmark. + * @param $templates (array) array of html templates. Use: "#TOC_DESCRIPTION#" for bookmark title, "#TOC_PAGE_NUMBER#" for page number. + * @param $correct_align (boolean) if true correct the number alignment (numbers must be in monospaced font like courier and right aligned on LTR, or left aligned on RTL) + * @param $style (string) Font style for title: B = Bold, I = Italic, BI = Bold + Italic. + * @param $color (array) RGB color array for title (values from 0 to 255). + * @public + * @author Nicola Asuni + * @since 5.0.001 (2010-05-06) + * @see addTOCPage(), endTOCPage(), addTOC() + */ + public function addHTMLTOC($page='', $toc_name='TOC', $templates=array(), $correct_align=true, $style='', $color=array(0,0,0)) { + $filler = ' '; + $prev_htmlLinkColorArray = $this->htmlLinkColorArray; + $prev_htmlLinkFontStyle = $this->htmlLinkFontStyle; + // set new style for link + $this->htmlLinkColorArray = array(); + $this->htmlLinkFontStyle = ''; + $page_first = $this->getPage(); + $page_fill_start = false; + $page_fill_end = false; + // get the font type used for numbers in each template + $current_font = $this->FontFamily; + foreach ($templates as $level => $html) { + $dom = $this->getHtmlDomArray($html); + foreach ($dom as $key => $value) { + if ($value['value'] == '#TOC_PAGE_NUMBER#') { + $this->SetFont($dom[($key - 1)]['fontname']); + $templates['F'.$level] = $this->isUnicodeFont(); + } + } + } + $this->SetFont($current_font); + $maxpage = 0; //used for pages on attached documents + foreach ($this->outlines as $key => $outline) { + // get HTML template + $row = $templates[$outline['l']]; + if (TCPDF_STATIC::empty_string($page)) { + $pagenum = $outline['p']; + } else { + // placemark to be replaced with the correct number + $pagenum = '{#'.($outline['p']).'}'; + if ($templates['F'.$outline['l']]) { + $pagenum = '{'.$pagenum.'}'; + } + $maxpage = max($maxpage, $outline['p']); + } + // replace templates with current values + $row = str_replace('#TOC_DESCRIPTION#', $outline['t'], $row); + $row = str_replace('#TOC_PAGE_NUMBER#', $pagenum, $row); + // add link to page + $row = ''.$row.''; + // write bookmark entry + $this->writeHTML($row, false, false, true, false, ''); + } + // restore link styles + $this->htmlLinkColorArray = $prev_htmlLinkColorArray; + $this->htmlLinkFontStyle = $prev_htmlLinkFontStyle; + // move TOC page and replace numbers + $page_last = $this->getPage(); + $numpages = ($page_last - $page_first + 1); + // account for booklet mode + if ($this->booklet) { + // check if a blank page is required before TOC + $page_fill_start = ((($page_first % 2) == 0) XOR (($page % 2) == 0)); + $page_fill_end = (!((($numpages % 2) == 0) XOR ($page_fill_start))); + if ($page_fill_start) { + // add a page at the end (to be moved before TOC) + $this->addPage(); + ++$page_last; + ++$numpages; + } + if ($page_fill_end) { + // add a page at the end + $this->addPage(); + ++$page_last; + ++$numpages; + } + } + $maxpage = max($maxpage, $page_last); + if (!TCPDF_STATIC::empty_string($page)) { + for ($p = $page_first; $p <= $page_last; ++$p) { + // get page data + $temppage = $this->getPageBuffer($p); + for ($n = 1; $n <= $maxpage; ++$n) { + // update page numbers + $a = '{#'.$n.'}'; + // get page number aliases + $pnalias = $this->getInternalPageNumberAliases($a); + // calculate replacement number + if ($n >= $page) { + $np = $n + $numpages; + } else { + $np = $n; + } + $na = TCPDF_STATIC::formatTOCPageNumber(($this->starting_page_number + $np - 1)); + $nu = TCPDF_FONTS::UTF8ToUTF16BE($na, false, $this->isunicode, $this->CurrentFont); + // replace aliases with numbers + foreach ($pnalias['u'] as $u) { + if ($correct_align) { + $sfill = str_repeat($filler, (strlen($u) - strlen($nu.' '))); + if ($this->rtl) { + $nr = $nu.TCPDF_FONTS::UTF8ToUTF16BE(' '.$sfill, false, $this->isunicode, $this->CurrentFont); + } else { + $nr = TCPDF_FONTS::UTF8ToUTF16BE($sfill.' ', false, $this->isunicode, $this->CurrentFont).$nu; + } + } else { + $nr = $nu; + } + $temppage = str_replace($u, $nr, $temppage); + } + foreach ($pnalias['a'] as $a) { + if ($correct_align) { + $sfill = str_repeat($filler, (strlen($a) - strlen($na.' '))); + if ($this->rtl) { + $nr = $na.' '.$sfill; + } else { + $nr = $sfill.' '.$na; + } + } else { + $nr = $na; + } + $temppage = str_replace($a, $nr, $temppage); + } + } + // save changes + $this->setPageBuffer($p, $temppage); + } + // move pages + $this->Bookmark($toc_name, 0, 0, $page_first, $style, $color); + if ($page_fill_start) { + $this->movePage($page_last, $page_first); + } + for ($i = 0; $i < $numpages; ++$i) { + $this->movePage($page_last, $page); + } + } + } + + /** + * Stores a copy of the current TCPDF object used for undo operation. + * @public + * @since 4.5.029 (2009-03-19) + */ + public function startTransaction() { + if (isset($this->objcopy)) { + // remove previous copy + $this->commitTransaction(); + } + // record current page number and Y position + $this->start_transaction_page = $this->page; + $this->start_transaction_y = $this->y; + // clone current object + $this->objcopy = TCPDF_STATIC::objclone($this); + } + + /** + * Delete the copy of the current TCPDF object used for undo operation. + * @public + * @since 4.5.029 (2009-03-19) + */ + public function commitTransaction() { + if (isset($this->objcopy)) { + $this->objcopy->_destroy(true, true); + unset($this->objcopy); + } + } + + /** + * This method allows to undo the latest transaction by returning the latest saved TCPDF object with startTransaction(). + * @param $self (boolean) if true restores current class object to previous state without the need of reassignment via the returned value. + * @return TCPDF object. + * @public + * @since 4.5.029 (2009-03-19) + */ + public function rollbackTransaction($self=false) { + if (isset($this->objcopy)) { + if (isset($this->objcopy->diskcache) AND $this->objcopy->diskcache) { + // truncate files to previous values + foreach ($this->objcopy->cache_file_length as $file => $length) { + $file = substr($file, 1); + $handle = fopen($file, 'r+'); + ftruncate($handle, $length); + } + } + $this->_destroy(true, true); + if ($self) { + $objvars = get_object_vars($this->objcopy); + foreach ($objvars as $key => $value) { + $this->$key = $value; + } + } + return $this->objcopy; + } + return $this; + } + + // --- MULTI COLUMNS METHODS ----------------------- + + /** + * Set multiple columns of the same size + * @param $numcols (int) number of columns (set to zero to disable columns mode) + * @param $width (int) column width + * @param $y (int) column starting Y position (leave empty for current Y position) + * @public + * @since 4.9.001 (2010-03-28) + */ + public function setEqualColumns($numcols=0, $width=0, $y='') { + $this->columns = array(); + if ($numcols < 2) { + $numcols = 0; + $this->columns = array(); + } else { + // maximum column width + $maxwidth = ($this->w - $this->original_lMargin - $this->original_rMargin) / $numcols; + if (($width == 0) OR ($width > $maxwidth)) { + $width = $maxwidth; + } + if (TCPDF_STATIC::empty_string($y)) { + $y = $this->y; + } + // space between columns + $space = (($this->w - $this->original_lMargin - $this->original_rMargin - ($numcols * $width)) / ($numcols - 1)); + // fill the columns array (with, space, starting Y position) + for ($i = 0; $i < $numcols; ++$i) { + $this->columns[$i] = array('w' => $width, 's' => $space, 'y' => $y); + } + } + $this->num_columns = $numcols; + $this->current_column = 0; + $this->column_start_page = $this->page; + $this->selectColumn(0); + } + + /** + * Remove columns and reset page margins. + * @public + * @since 5.9.072 (2011-04-26) + */ + public function resetColumns() { + $this->lMargin = $this->original_lMargin; + $this->rMargin = $this->original_rMargin; + $this->setEqualColumns(); + } + + /** + * Set columns array. + * Each column is represented by an array of arrays with the following keys: (w = width, s = space between columns, y = column top position). + * @param $columns (array) + * @public + * @since 4.9.001 (2010-03-28) + */ + public function setColumnsArray($columns) { + $this->columns = $columns; + $this->num_columns = count($columns); + $this->current_column = 0; + $this->column_start_page = $this->page; + $this->selectColumn(0); + } + + /** + * Set position at a given column + * @param $col (int) column number (from 0 to getNumberOfColumns()-1); empty string = current column. + * @public + * @since 4.9.001 (2010-03-28) + */ + public function selectColumn($col='') { + if (is_string($col)) { + $col = $this->current_column; + } elseif ($col >= $this->num_columns) { + $col = 0; + } + $xshift = array('x' => 0, 's' => array('H' => 0, 'V' => 0), 'p' => array('L' => 0, 'T' => 0, 'R' => 0, 'B' => 0)); + $enable_thead = false; + if ($this->num_columns > 1) { + if ($col != $this->current_column) { + // move Y pointer at the top of the column + if ($this->column_start_page == $this->page) { + $this->y = $this->columns[$col]['y']; + } else { + $this->y = $this->tMargin; + } + // Avoid to write table headers more than once + if (($this->page > $this->maxselcol['page']) OR (($this->page == $this->maxselcol['page']) AND ($col > $this->maxselcol['column']))) { + $enable_thead = true; + $this->maxselcol['page'] = $this->page; + $this->maxselcol['column'] = $col; + } + } + $xshift = $this->colxshift; + // set X position of the current column by case + $listindent = ($this->listindentlevel * $this->listindent); + // calculate column X position + $colpos = 0; + for ($i = 0; $i < $col; ++$i) { + $colpos += ($this->columns[$i]['w'] + $this->columns[$i]['s']); + } + if ($this->rtl) { + $x = $this->w - $this->original_rMargin - $colpos; + $this->rMargin = ($this->w - $x + $listindent); + $this->lMargin = ($x - $this->columns[$col]['w']); + $this->x = $x - $listindent; + } else { + $x = $this->original_lMargin + $colpos; + $this->lMargin = ($x + $listindent); + $this->rMargin = ($this->w - $x - $this->columns[$col]['w']); + $this->x = $x + $listindent; + } + $this->columns[$col]['x'] = $x; + } + $this->current_column = $col; + // fix for HTML mode + $this->newline = true; + // print HTML table header (if any) + if ((!TCPDF_STATIC::empty_string($this->thead)) AND (!$this->inthead)) { + if ($enable_thead) { + // print table header + $this->writeHTML($this->thead, false, false, false, false, ''); + $this->y += $xshift['s']['V']; + // store end of header position + if (!isset($this->columns[$col]['th'])) { + $this->columns[$col]['th'] = array(); + } + $this->columns[$col]['th']['\''.$this->page.'\''] = $this->y; + $this->lasth = 0; + } elseif (isset($this->columns[$col]['th']['\''.$this->page.'\''])) { + $this->y = $this->columns[$col]['th']['\''.$this->page.'\'']; + } + } + // account for an html table cell over multiple columns + if ($this->rtl) { + $this->rMargin += $xshift['x']; + $this->x -= ($xshift['x'] + $xshift['p']['R']); + } else { + $this->lMargin += $xshift['x']; + $this->x += $xshift['x'] + $xshift['p']['L']; + } + } + + /** + * Return the current column number + * @return int current column number + * @public + * @since 5.5.011 (2010-07-08) + */ + public function getColumn() { + return $this->current_column; + } + + /** + * Return the current number of columns. + * @return int number of columns + * @public + * @since 5.8.018 (2010-08-25) + */ + public function getNumberOfColumns() { + return $this->num_columns; + } + + /** + * Set Text rendering mode. + * @param $stroke (int) outline size in user units (0 = disable). + * @param $fill (boolean) if true fills the text (default). + * @param $clip (boolean) if true activate clipping mode + * @public + * @since 4.9.008 (2009-04-02) + */ + public function setTextRenderingMode($stroke=0, $fill=true, $clip=false) { + // Ref.: PDF 32000-1:2008 - 9.3.6 Text Rendering Mode + // convert text rendering parameters + if ($stroke < 0) { + $stroke = 0; + } + if ($fill === true) { + if ($stroke > 0) { + if ($clip === true) { + // Fill, then stroke text and add to path for clipping + $textrendermode = 6; + } else { + // Fill, then stroke text + $textrendermode = 2; + } + $textstrokewidth = $stroke; + } else { + if ($clip === true) { + // Fill text and add to path for clipping + $textrendermode = 4; + } else { + // Fill text + $textrendermode = 0; + } + } + } else { + if ($stroke > 0) { + if ($clip === true) { + // Stroke text and add to path for clipping + $textrendermode = 5; + } else { + // Stroke text + $textrendermode = 1; + } + $textstrokewidth = $stroke; + } else { + if ($clip === true) { + // Add text to path for clipping + $textrendermode = 7; + } else { + // Neither fill nor stroke text (invisible) + $textrendermode = 3; + } + } + } + $this->textrendermode = $textrendermode; + $this->textstrokewidth = $stroke; + } + + /** + * Set parameters for drop shadow effect for text. + * @param $params (array) Array of parameters: enabled (boolean) set to true to enable shadow; depth_w (float) shadow width in user units; depth_h (float) shadow height in user units; color (array) shadow color or false to use the stroke color; opacity (float) Alpha value: real value from 0 (transparent) to 1 (opaque); blend_mode (string) blend mode, one of the following: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity. + * @since 5.9.174 (2012-07-25) + * @public + */ + public function setTextShadow($params=array('enabled'=>false, 'depth_w'=>0, 'depth_h'=>0, 'color'=>false, 'opacity'=>1, 'blend_mode'=>'Normal')) { + if (isset($params['enabled'])) { + $this->txtshadow['enabled'] = $params['enabled']?true:false; + } else { + $this->txtshadow['enabled'] = false; + } + if (isset($params['depth_w'])) { + $this->txtshadow['depth_w'] = floatval($params['depth_w']); + } else { + $this->txtshadow['depth_w'] = 0; + } + if (isset($params['depth_h'])) { + $this->txtshadow['depth_h'] = floatval($params['depth_h']); + } else { + $this->txtshadow['depth_h'] = 0; + } + if (isset($params['color']) AND ($params['color'] !== false) AND is_array($params['color'])) { + $this->txtshadow['color'] = $params['color']; + } else { + $this->txtshadow['color'] = $this->strokecolor; + } + if (isset($params['opacity'])) { + $this->txtshadow['opacity'] = min(1, max(0, floatval($params['opacity']))); + } else { + $this->txtshadow['opacity'] = 1; + } + if (isset($params['blend_mode']) AND in_array($params['blend_mode'], array('Normal', 'Multiply', 'Screen', 'Overlay', 'Darken', 'Lighten', 'ColorDodge', 'ColorBurn', 'HardLight', 'SoftLight', 'Difference', 'Exclusion', 'Hue', 'Saturation', 'Color', 'Luminosity'))) { + $this->txtshadow['blend_mode'] = $params['blend_mode']; + } else { + $this->txtshadow['blend_mode'] = 'Normal'; + } + if ((($this->txtshadow['depth_w'] == 0) AND ($this->txtshadow['depth_h'] == 0)) OR ($this->txtshadow['opacity'] == 0)) { + $this->txtshadow['enabled'] = false; + } + } + + /** + * Return the text shadow parameters array. + * @return Array of parameters. + * @since 5.9.174 (2012-07-25) + * @public + */ + public function getTextShadow() { + return $this->txtshadow; + } + + /** + * Returns an array of chars containing soft hyphens. + * @param $word (array) array of chars + * @param $patterns (array) Array of hypenation patterns. + * @param $dictionary (array) Array of words to be returned without applying the hyphenation algoritm. + * @param $leftmin (int) Minimum number of character to leave on the left of the word without applying the hyphens. + * @param $rightmin (int) Minimum number of character to leave on the right of the word without applying the hyphens. + * @param $charmin (int) Minimum word length to apply the hyphenation algoritm. + * @param $charmax (int) Maximum length of broken piece of word. + * @return array text with soft hyphens + * @author Nicola Asuni + * @since 4.9.012 (2010-04-12) + * @protected + */ + protected function hyphenateWord($word, $patterns, $dictionary=array(), $leftmin=1, $rightmin=2, $charmin=1, $charmax=8) { + $hyphenword = array(); // hyphens positions + $numchars = count($word); + if ($numchars <= $charmin) { + return $word; + } + $word_string = TCPDF_FONTS::UTF8ArrSubString($word, '', '', $this->isunicode); + // some words will be returned as-is + $pattern = '/^([a-zA-Z0-9_\.\-]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/'; + if (preg_match($pattern, $word_string) > 0) { + // email + return $word; + } + $pattern = '/(([a-zA-Z0-9\-]+\.)?)((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/'; + if (preg_match($pattern, $word_string) > 0) { + // URL + return $word; + } + if (isset($dictionary[$word_string])) { + return TCPDF_FONTS::UTF8StringToArray($dictionary[$word_string], $this->isunicode, $this->CurrentFont); + } + // surround word with '_' characters + $tmpword = array_merge(array(46), $word, array(46)); + $tmpnumchars = $numchars + 2; + $maxpos = $tmpnumchars - $charmin; + for ($pos = 0; $pos < $maxpos; ++$pos) { + $imax = min(($tmpnumchars - $pos), $charmax); + for ($i = $charmin; $i <= $imax; ++$i) { + $subword = strtolower(TCPDF_FONTS::UTF8ArrSubString($tmpword, $pos, ($pos + $i), $this->isunicode)); + if (isset($patterns[$subword])) { + $pattern = TCPDF_FONTS::UTF8StringToArray($patterns[$subword], $this->isunicode, $this->CurrentFont); + $pattern_length = count($pattern); + $digits = 1; + for ($j = 0; $j < $pattern_length; ++$j) { + // check if $pattern[$j] is a number = hyphenation level (only numbers from 1 to 5 are valid) + if (($pattern[$j] >= 48) AND ($pattern[$j] <= 57)) { + if ($j == 0) { + $zero = $pos - 1; + } else { + $zero = $pos + $j - $digits; + } + // get hyphenation level + $level = ($pattern[$j] - 48); + // if two levels from two different patterns match at the same point, the higher one is selected. + if (!isset($hyphenword[$zero]) OR ($hyphenword[$zero] < $level)) { + $hyphenword[$zero] = $level; + } + ++$digits; + } + } + } + } + } + $inserted = 0; + $maxpos = $numchars - $rightmin; + for ($i = $leftmin; $i <= $maxpos; ++$i) { + // only odd levels indicate allowed hyphenation points + if (isset($hyphenword[$i]) AND (($hyphenword[$i] % 2) != 0)) { + // 173 = soft hyphen character + array_splice($word, $i + $inserted, 0, 173); + ++$inserted; + } + } + return $word; + } + + /** + * Returns text with soft hyphens. + * @param $text (string) text to process + * @param $patterns (mixed) Array of hypenation patterns or a TEX file containing hypenation patterns. TEX patterns can be downloaded from http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/ + * @param $dictionary (array) Array of words to be returned without applying the hyphenation algoritm. + * @param $leftmin (int) Minimum number of character to leave on the left of the word without applying the hyphens. + * @param $rightmin (int) Minimum number of character to leave on the right of the word without applying the hyphens. + * @param $charmin (int) Minimum word length to apply the hyphenation algoritm. + * @param $charmax (int) Maximum length of broken piece of word. + * @return array text with soft hyphens + * @author Nicola Asuni + * @since 4.9.012 (2010-04-12) + * @public + */ + public function hyphenateText($text, $patterns, $dictionary=array(), $leftmin=1, $rightmin=2, $charmin=1, $charmax=8) { + $text = $this->unhtmlentities($text); + $word = array(); // last word + $txtarr = array(); // text to be returned + $intag = false; // true if we are inside an HTML tag + $skip = false; // true to skip hyphenation + if (!is_array($patterns)) { + $patterns = TCPDF_STATIC::getHyphenPatternsFromTEX($patterns); + } + // get array of characters + $unichars = TCPDF_FONTS::UTF8StringToArray($text, $this->isunicode, $this->CurrentFont); + // for each char + foreach ($unichars as $char) { + if ((!$intag) AND (!$skip) AND TCPDF_FONT_DATA::$uni_type[$char] == 'L') { + // letter character + $word[] = $char; + } else { + // other type of character + if (!TCPDF_STATIC::empty_string($word)) { + // hypenate the word + $txtarr = array_merge($txtarr, $this->hyphenateWord($word, $patterns, $dictionary, $leftmin, $rightmin, $charmin, $charmax)); + $word = array(); + } + $txtarr[] = $char; + if (chr($char) == '<') { + // we are inside an HTML tag + $intag = true; + } elseif ($intag AND (chr($char) == '>')) { + // end of HTML tag + $intag = false; + // check for style tag + $expected = array(115, 116, 121, 108, 101); // = 'style' + $current = array_slice($txtarr, -6, 5); // last 5 chars + $compare = array_diff($expected, $current); + if (empty($compare)) { + // check if it is a closing tag + $expected = array(47); // = '/' + $current = array_slice($txtarr, -7, 1); + $compare = array_diff($expected, $current); + if (empty($compare)) { + // closing style tag + $skip = false; + } else { + // opening style tag + $skip = true; + } + } + } + } + } + if (!TCPDF_STATIC::empty_string($word)) { + // hypenate the word + $txtarr = array_merge($txtarr, $this->hyphenateWord($word, $patterns, $dictionary, $leftmin, $rightmin, $charmin, $charmax)); + } + // convert char array to string and return + return TCPDF_FONTS::UTF8ArrSubString($txtarr, '', '', $this->isunicode); + } + + /** + * Enable/disable rasterization of vector images using ImageMagick library. + * @param $mode (boolean) if true enable rasterization, false otherwise. + * @public + * @since 5.0.000 (2010-04-27) + */ + public function setRasterizeVectorImages($mode) { + $this->rasterize_vector_images = $mode; + } + + /** + * Enable or disable default option for font subsetting. + * @param $enable (boolean) if true enable font subsetting by default. + * @author Nicola Asuni + * @public + * @since 5.3.002 (2010-06-07) + */ + public function setFontSubsetting($enable=true) { + if ($this->pdfa_mode) { + $this->font_subsetting = false; + } else { + $this->font_subsetting = $enable ? true : false; + } + } + + /** + * Return the default option for font subsetting. + * @return boolean default font subsetting state. + * @author Nicola Asuni + * @public + * @since 5.3.002 (2010-06-07) + */ + public function getFontSubsetting() { + return $this->font_subsetting; + } + + /** + * Left trim the input string + * @param $str (string) string to trim + * @param $replace (string) string that replace spaces. + * @return left trimmed string + * @author Nicola Asuni + * @public + * @since 5.8.000 (2010-08-11) + */ + public function stringLeftTrim($str, $replace='') { + return preg_replace('/^'.$this->re_space['p'].'+/'.$this->re_space['m'], $replace, $str); + } + + /** + * Right trim the input string + * @param $str (string) string to trim + * @param $replace (string) string that replace spaces. + * @return right trimmed string + * @author Nicola Asuni + * @public + * @since 5.8.000 (2010-08-11) + */ + public function stringRightTrim($str, $replace='') { + return preg_replace('/'.$this->re_space['p'].'+$/'.$this->re_space['m'], $replace, $str); + } + + /** + * Trim the input string + * @param $str (string) string to trim + * @param $replace (string) string that replace spaces. + * @return trimmed string + * @author Nicola Asuni + * @public + * @since 5.8.000 (2010-08-11) + */ + public function stringTrim($str, $replace='') { + $str = $this->stringLeftTrim($str, $replace); + $str = $this->stringRightTrim($str, $replace); + return $str; + } + + /** + * Return true if the current font is unicode type. + * @return true for unicode font, false otherwise. + * @author Nicola Asuni + * @public + * @since 5.8.002 (2010-08-14) + */ + public function isUnicodeFont() { + return (($this->CurrentFont['type'] == 'TrueTypeUnicode') OR ($this->CurrentFont['type'] == 'cidfont0')); + } + + /** + * Return normalized font name + * @param $fontfamily (string) property string containing font family names + * @return string normalized font name + * @author Nicola Asuni + * @public + * @since 5.8.004 (2010-08-17) + */ + public function getFontFamilyName($fontfamily) { + // remove spaces and symbols + $fontfamily = preg_replace('/[^a-z0-9_\,]/', '', strtolower($fontfamily)); + // extract all font names + $fontslist = preg_split('/[,]/', $fontfamily); + // find first valid font name + foreach ($fontslist as $font) { + // replace font variations + $font = preg_replace('/regular$/', '', $font); + $font = preg_replace('/italic$/', 'I', $font); + $font = preg_replace('/oblique$/', 'I', $font); + $font = preg_replace('/bold([I]?)$/', 'B\\1', $font); + // replace common family names and core fonts + $pattern = array(); + $replacement = array(); + $pattern[] = '/^serif|^cursive|^fantasy|^timesnewroman/'; + $replacement[] = 'times'; + $pattern[] = '/^sansserif/'; + $replacement[] = 'helvetica'; + $pattern[] = '/^monospace/'; + $replacement[] = 'courier'; + $font = preg_replace($pattern, $replacement, $font); + if (in_array(strtolower($font), $this->fontlist) OR in_array($font, $this->fontkeys)) { + return $font; + } + } + // return current font as default + return $this->CurrentFont['fontkey']; + } + + /** + * Start a new XObject Template. + * An XObject Template is a PDF block that is a self-contained description of any sequence of graphics objects (including path objects, text objects, and sampled images). + * An XObject Template may be painted multiple times, either on several pages or at several locations on the same page and produces the same results each time, subject only to the graphics state at the time it is invoked. + * Note: X,Y coordinates will be reset to 0,0. + * @param $w (int) Template width in user units (empty string or zero = page width less margins). + * @param $h (int) Template height in user units (empty string or zero = page height less margins). + * @param $group (mixed) Set transparency group. Can be a boolean value or an array specifying optional parameters: 'CS' (solour space name), 'I' (boolean flag to indicate isolated group) and 'K' (boolean flag to indicate knockout group). + * @return int the XObject Template ID in case of success or false in case of error. + * @author Nicola Asuni + * @public + * @since 5.8.017 (2010-08-24) + * @see endTemplate(), printTemplate() + */ + public function startTemplate($w=0, $h=0, $group=false) { + if ($this->inxobj) { + // we are already inside an XObject template + return false; + } + $this->inxobj = true; + ++$this->n; + // XObject ID + $this->xobjid = 'XT'.$this->n; + // object ID + $this->xobjects[$this->xobjid] = array('n' => $this->n); + // store current graphic state + $this->xobjects[$this->xobjid]['gvars'] = $this->getGraphicVars(); + // initialize data + $this->xobjects[$this->xobjid]['intmrk'] = 0; + $this->xobjects[$this->xobjid]['transfmrk'] = array(); + $this->xobjects[$this->xobjid]['outdata'] = ''; + $this->xobjects[$this->xobjid]['xobjects'] = array(); + $this->xobjects[$this->xobjid]['images'] = array(); + $this->xobjects[$this->xobjid]['fonts'] = array(); + $this->xobjects[$this->xobjid]['annotations'] = array(); + $this->xobjects[$this->xobjid]['extgstates'] = array(); + $this->xobjects[$this->xobjid]['gradients'] = array(); + $this->xobjects[$this->xobjid]['spot_colors'] = array(); + // set new environment + $this->num_columns = 1; + $this->current_column = 0; + $this->SetAutoPageBreak(false); + if (($w === '') OR ($w <= 0)) { + $w = $this->w - $this->lMargin - $this->rMargin; + } + if (($h === '') OR ($h <= 0)) { + $h = $this->h - $this->tMargin - $this->bMargin; + } + $this->xobjects[$this->xobjid]['x'] = 0; + $this->xobjects[$this->xobjid]['y'] = 0; + $this->xobjects[$this->xobjid]['w'] = $w; + $this->xobjects[$this->xobjid]['h'] = $h; + $this->w = $w; + $this->h = $h; + $this->wPt = $this->w * $this->k; + $this->hPt = $this->h * $this->k; + $this->fwPt = $this->wPt; + $this->fhPt = $this->hPt; + $this->x = 0; + $this->y = 0; + $this->lMargin = 0; + $this->rMargin = 0; + $this->tMargin = 0; + $this->bMargin = 0; + // set group mode + $this->xobjects[$this->xobjid]['group'] = $group; + return $this->xobjid; + } + + /** + * End the current XObject Template started with startTemplate() and restore the previous graphic state. + * An XObject Template is a PDF block that is a self-contained description of any sequence of graphics objects (including path objects, text objects, and sampled images). + * An XObject Template may be painted multiple times, either on several pages or at several locations on the same page and produces the same results each time, subject only to the graphics state at the time it is invoked. + * @return int the XObject Template ID in case of success or false in case of error. + * @author Nicola Asuni + * @public + * @since 5.8.017 (2010-08-24) + * @see startTemplate(), printTemplate() + */ + public function endTemplate() { + if (!$this->inxobj) { + // we are not inside a template + return false; + } + $this->inxobj = false; + // restore previous graphic state + $this->setGraphicVars($this->xobjects[$this->xobjid]['gvars'], true); + return $this->xobjid; + } + + /** + * Print an XObject Template. + * You can print an XObject Template inside the currently opened Template. + * An XObject Template is a PDF block that is a self-contained description of any sequence of graphics objects (including path objects, text objects, and sampled images). + * An XObject Template may be painted multiple times, either on several pages or at several locations on the same page and produces the same results each time, subject only to the graphics state at the time it is invoked. + * @param $id (string) The ID of XObject Template to print. + * @param $x (int) X position in user units (empty string = current x position) + * @param $y (int) Y position in user units (empty string = current y position) + * @param $w (int) Width in user units (zero = remaining page width) + * @param $h (int) Height in user units (zero = remaining page height) + * @param $align (string) Indicates the alignment of the pointer next to template insertion relative to template height. The value can be:
      • T: top-right for LTR or top-left for RTL
      • M: middle-right for LTR or middle-left for RTL
      • B: bottom-right for LTR or bottom-left for RTL
      • N: next line
      + * @param $palign (string) Allows to center or align the template on the current line. Possible values are:
      • L : left align
      • C : center
      • R : right align
      • '' : empty string : left for LTR or right for RTL
      + * @param $fitonpage (boolean) If true the template is resized to not exceed page dimensions. + * @author Nicola Asuni + * @public + * @since 5.8.017 (2010-08-24) + * @see startTemplate(), endTemplate() + */ + public function printTemplate($id, $x='', $y='', $w=0, $h=0, $align='', $palign='', $fitonpage=false) { + if ($this->state != 2) { + return; + } + if (!isset($this->xobjects[$id])) { + $this->Error('The XObject Template \''.$id.'\' doesn\'t exist!'); + } + if ($this->inxobj) { + if ($id == $this->xobjid) { + // close current template + $this->endTemplate(); + } else { + // use the template as resource for the template currently opened + $this->xobjects[$this->xobjid]['xobjects'][$id] = $this->xobjects[$id]; + } + } + // set default values + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + $ow = $this->xobjects[$id]['w']; + if ($ow <= 0) { + $ow = 1; + } + $oh = $this->xobjects[$id]['h']; + if ($oh <= 0) { + $oh = 1; + } + // calculate template width and height on document + if (($w <= 0) AND ($h <= 0)) { + $w = $ow; + $h = $oh; + } elseif ($w <= 0) { + $w = $h * $ow / $oh; + } elseif ($h <= 0) { + $h = $w * $oh / $ow; + } + // fit the template on available space + list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage); + // set page alignment + $rb_y = $y + $h; + // set alignment + if ($this->rtl) { + if ($palign == 'L') { + $xt = $this->lMargin; + } elseif ($palign == 'C') { + $xt = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $xt = $this->w - $this->rMargin - $w; + } else { + $xt = $x - $w; + } + $rb_x = $xt; + } else { + if ($palign == 'L') { + $xt = $this->lMargin; + } elseif ($palign == 'C') { + $xt = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $xt = $this->w - $this->rMargin - $w; + } else { + $xt = $x; + } + $rb_x = $xt + $w; + } + // print XObject Template + Transformation matrix + $this->StartTransform(); + // translate and scale + $sx = ($w / $ow); + $sy = ($h / $oh); + $tm = array(); + $tm[0] = $sx; + $tm[1] = 0; + $tm[2] = 0; + $tm[3] = $sy; + $tm[4] = $xt * $this->k; + $tm[5] = ($this->h - $h - $y) * $this->k; + $this->Transform($tm); + // set object + $this->_out('/'.$id.' Do'); + $this->StopTransform(); + // add annotations + if (!empty($this->xobjects[$id]['annotations'])) { + foreach ($this->xobjects[$id]['annotations'] as $annot) { + // transform original coordinates + $coordlt = TCPDF_STATIC::getTransformationMatrixProduct($tm, array(1, 0, 0, 1, ($annot['x'] * $this->k), (-$annot['y'] * $this->k))); + $ax = ($coordlt[4] / $this->k); + $ay = ($this->h - $h - ($coordlt[5] / $this->k)); + $coordrb = TCPDF_STATIC::getTransformationMatrixProduct($tm, array(1, 0, 0, 1, (($annot['x'] + $annot['w']) * $this->k), ((-$annot['y'] - $annot['h']) * $this->k))); + $aw = ($coordrb[4] / $this->k) - $ax; + $ah = ($this->h - $h - ($coordrb[5] / $this->k)) - $ay; + $this->Annotation($ax, $ay, $aw, $ah, $annot['text'], $annot['opt'], $annot['spaces']); + } + } + // set pointer to align the next text/objects + switch($align) { + case 'T': { + $this->y = $y; + $this->x = $rb_x; + break; + } + case 'M': { + $this->y = $y + round($h/2); + $this->x = $rb_x; + break; + } + case 'B': { + $this->y = $rb_y; + $this->x = $rb_x; + break; + } + case 'N': { + $this->SetY($rb_y); + break; + } + default:{ + break; + } + } + } + + /** + * Set the percentage of character stretching. + * @param $perc (int) percentage of stretching (100 = no stretching) + * @author Nicola Asuni + * @public + * @since 5.9.000 (2010-09-29) + */ + public function setFontStretching($perc=100) { + $this->font_stretching = $perc; + } + + /** + * Get the percentage of character stretching. + * @return float stretching value + * @author Nicola Asuni + * @public + * @since 5.9.000 (2010-09-29) + */ + public function getFontStretching() { + return $this->font_stretching; + } + + /** + * Set the amount to increase or decrease the space between characters in a text. + * @param $spacing (float) amount to increase or decrease the space between characters in a text (0 = default spacing) + * @author Nicola Asuni + * @public + * @since 5.9.000 (2010-09-29) + */ + public function setFontSpacing($spacing=0) { + $this->font_spacing = $spacing; + } + + /** + * Get the amount to increase or decrease the space between characters in a text. + * @return int font spacing (tracking) value + * @author Nicola Asuni + * @public + * @since 5.9.000 (2010-09-29) + */ + public function getFontSpacing() { + return $this->font_spacing; + } + + /** + * Return an array of no-write page regions + * @return array of no-write page regions + * @author Nicola Asuni + * @public + * @since 5.9.003 (2010-10-13) + * @see setPageRegions(), addPageRegion() + */ + public function getPageRegions() { + return $this->page_regions; + } + + /** + * Set no-write regions on page. + * A no-write region is a portion of the page with a rectangular or trapezium shape that will not be covered when writing text or html code. + * A region is always aligned on the left or right side of the page ad is defined using a vertical segment. + * You can set multiple regions for the same page. + * @param $regions (array) array of no-write regions. For each region you can define an array as follow: ('page' => page number or empy for current page, 'xt' => X top, 'yt' => Y top, 'xb' => X bottom, 'yb' => Y bottom, 'side' => page side 'L' = left or 'R' = right). Omit this parameter to remove all regions. + * @author Nicola Asuni + * @public + * @since 5.9.003 (2010-10-13) + * @see addPageRegion(), getPageRegions() + */ + public function setPageRegions($regions=array()) { + // empty current regions array + $this->page_regions = array(); + // add regions + foreach ($regions as $data) { + $this->addPageRegion($data); + } + } + + /** + * Add a single no-write region on selected page. + * A no-write region is a portion of the page with a rectangular or trapezium shape that will not be covered when writing text or html code. + * A region is always aligned on the left or right side of the page ad is defined using a vertical segment. + * You can set multiple regions for the same page. + * @param $region (array) array of a single no-write region array: ('page' => page number or empy for current page, 'xt' => X top, 'yt' => Y top, 'xb' => X bottom, 'yb' => Y bottom, 'side' => page side 'L' = left or 'R' = right). + * @author Nicola Asuni + * @public + * @since 5.9.003 (2010-10-13) + * @see setPageRegions(), getPageRegions() + */ + public function addPageRegion($region) { + if (!isset($region['page']) OR empty($region['page'])) { + $region['page'] = $this->page; + } + if (isset($region['xt']) AND isset($region['xb']) AND ($region['xt'] > 0) AND ($region['xb'] > 0) + AND isset($region['yt']) AND isset($region['yb']) AND ($region['yt'] >= 0) AND ($region['yt'] < $region['yb']) + AND isset($region['side']) AND (($region['side'] == 'L') OR ($region['side'] == 'R'))) { + $this->page_regions[] = $region; + } + } + + /** + * Remove a single no-write region. + * @param $key (int) region key + * @author Nicola Asuni + * @public + * @since 5.9.003 (2010-10-13) + * @see setPageRegions(), getPageRegions() + */ + public function removePageRegion($key) { + if (isset($this->page_regions[$key])) { + unset($this->page_regions[$key]); + } + } + + /** + * Check page for no-write regions and adapt current coordinates and page margins if necessary. + * A no-write region is a portion of the page with a rectangular or trapezium shape that will not be covered when writing text or html code. + * A region is always aligned on the left or right side of the page ad is defined using a vertical segment. + * @param $h (float) height of the text/image/object to print in user units + * @param $x (float) current X coordinate in user units + * @param $y (float) current Y coordinate in user units + * @return array($x, $y) + * @author Nicola Asuni + * @protected + * @since 5.9.003 (2010-10-13) + */ + protected function checkPageRegions($h, $x, $y) { + // set default values + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + if (!$this->check_page_regions OR empty($this->page_regions)) { + // no page regions defined + return array($x, $y); + } + if (empty($h)) { + $h = $this->getCellHeight($this->FontSize); + } + // check for page break + if ($this->checkPageBreak($h, $y)) { + // the content will be printed on a new page + $x = $this->x; + $y = $this->y; + } + if ($this->num_columns > 1) { + if ($this->rtl) { + $this->lMargin = ($this->columns[$this->current_column]['x'] - $this->columns[$this->current_column]['w']); + } else { + $this->rMargin = ($this->w - $this->columns[$this->current_column]['x'] - $this->columns[$this->current_column]['w']); + } + } else { + if ($this->rtl) { + $this->lMargin = max($this->clMargin, $this->original_lMargin); + } else { + $this->rMargin = max($this->crMargin, $this->original_rMargin); + } + } + // adjust coordinates and page margins + foreach ($this->page_regions as $regid => $regdata) { + if ($regdata['page'] == $this->page) { + // check region boundaries + if (($y > ($regdata['yt'] - $h)) AND ($y <= $regdata['yb'])) { + // Y is inside the region + $minv = ($regdata['xb'] - $regdata['xt']) / ($regdata['yb'] - $regdata['yt']); // inverse of angular coefficient + $yt = max($y, $regdata['yt']); + $yb = min(($yt + $h), $regdata['yb']); + $xt = (($yt - $regdata['yt']) * $minv) + $regdata['xt']; + $xb = (($yb - $regdata['yt']) * $minv) + $regdata['xt']; + if ($regdata['side'] == 'L') { // left side + $new_margin = max($xt, $xb); + if ($this->lMargin < $new_margin) { + if ($this->rtl) { + // adjust left page margin + $this->lMargin = max(0, $new_margin); + } + if ($x < $new_margin) { + // adjust x position + $x = $new_margin; + if ($new_margin > ($this->w - $this->rMargin)) { + // adjust y position + $y = $regdata['yb'] - $h; + } + } + } + } elseif ($regdata['side'] == 'R') { // right side + $new_margin = min($xt, $xb); + if (($this->w - $this->rMargin) > $new_margin) { + if (!$this->rtl) { + // adjust right page margin + $this->rMargin = max(0, ($this->w - $new_margin)); + } + if ($x > $new_margin) { + // adjust x position + $x = $new_margin; + if ($new_margin > $this->lMargin) { + // adjust y position + $y = $regdata['yb'] - $h; + } + } + } + } + } + } + } + return array($x, $y); + } + + // --- SVG METHODS --------------------------------------------------------- + + /** + * Embedd a Scalable Vector Graphics (SVG) image. + * NOTE: SVG standard is not yet fully implemented, use the setRasterizeVectorImages() method to enable/disable rasterization of vector images using ImageMagick library. + * @param $file (string) Name of the SVG file or a '@' character followed by the SVG data string. + * @param $x (float) Abscissa of the upper-left corner. + * @param $y (float) Ordinate of the upper-left corner. + * @param $w (float) Width of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $h (float) Height of the image in the page. If not specified or equal to zero, it is automatically calculated. + * @param $link (mixed) URL or identifier returned by AddLink(). + * @param $align (string) Indicates the alignment of the pointer next to image insertion relative to image height. The value can be:
      • T: top-right for LTR or top-left for RTL
      • M: middle-right for LTR or middle-left for RTL
      • B: bottom-right for LTR or bottom-left for RTL
      • N: next line
      If the alignment is an empty string, then the pointer will be restored on the starting SVG position. + * @param $palign (string) Allows to center or align the image on the current line. Possible values are:
      • L : left align
      • C : center
      • R : right align
      • '' : empty string : left for LTR or right for RTL
      + * @param $border (mixed) Indicates if borders must be drawn around the cell. The value can be a number:
      • 0: no border (default)
      • 1: frame
      or a string containing some or all of the following characters (in any order):
      • L: left
      • T: top
      • R: right
      • B: bottom
      or an array of line styles for each border group - for example: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) + * @param $fitonpage (boolean) if true the image is resized to not exceed page dimensions. + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @public + */ + public function ImageSVG($file, $x='', $y='', $w=0, $h=0, $link='', $align='', $palign='', $border=0, $fitonpage=false) { + if ($this->state != 2) { + return; + } + // reseet SVG vars + $this->svggradients = array(); + $this->svggradientid = 0; + $this->svgdefsmode = false; + $this->svgdefs = array(); + $this->svgclipmode = false; + $this->svgclippaths = array(); + $this->svgcliptm = array(); + $this->svgclipid = 0; + $this->svgtext = ''; + $this->svgtextmode = array(); + if ($this->rasterize_vector_images AND ($w > 0) AND ($h > 0)) { + // convert SVG to raster image using GD or ImageMagick libraries + return $this->Image($file, $x, $y, $w, $h, 'SVG', $link, $align, true, 300, $palign, false, false, $border, false, false, false); + } + if ($file[0] === '@') { // image from string + $this->svgdir = ''; + $svgdata = substr($file, 1); + } else { // SVG file + $this->svgdir = dirname($file); + $svgdata = TCPDF_STATIC::fileGetContents($file); + } + if ($svgdata === FALSE) { + $this->Error('SVG file not found: '.$file); + } + if ($x === '') { + $x = $this->x; + } + if ($y === '') { + $y = $this->y; + } + // check page for no-write regions and adapt page margins if necessary + list($x, $y) = $this->checkPageRegions($h, $x, $y); + $k = $this->k; + $ox = 0; + $oy = 0; + $ow = $w; + $oh = $h; + $aspect_ratio_align = 'xMidYMid'; + $aspect_ratio_ms = 'meet'; + $regs = array(); + // get original image width and height + preg_match('/]*)>/si', $svgdata, $regs); + if (isset($regs[1]) AND !empty($regs[1])) { + $tmp = array(); + if (preg_match('/[\s]+x[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) { + $ox = $this->getHTMLUnitToUnits($tmp[1], 0, $this->svgunit, false); + } + $tmp = array(); + if (preg_match('/[\s]+y[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) { + $oy = $this->getHTMLUnitToUnits($tmp[1], 0, $this->svgunit, false); + } + $tmp = array(); + if (preg_match('/[\s]+width[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) { + $ow = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false); + } + $tmp = array(); + if (preg_match('/[\s]+height[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) { + $oh = $this->getHTMLUnitToUnits($tmp[1], 1, $this->svgunit, false); + } + $tmp = array(); + $view_box = array(); + if (preg_match('/[\s]+viewBox[\s]*=[\s]*"[\s]*([0-9\.\-]+)[\s]+([0-9\.\-]+)[\s]+([0-9\.]+)[\s]+([0-9\.]+)[\s]*"/si', $regs[1], $tmp)) { + if (count($tmp) == 5) { + array_shift($tmp); + foreach ($tmp as $key => $val) { + $view_box[$key] = $this->getHTMLUnitToUnits($val, 0, $this->svgunit, false); + } + $ox = $view_box[0]; + $oy = $view_box[1]; + } + // get aspect ratio + $tmp = array(); + if (preg_match('/[\s]+preserveAspectRatio[\s]*=[\s]*"([^"]*)"/si', $regs[1], $tmp)) { + $aspect_ratio = preg_split('/[\s]+/si', $tmp[1]); + switch (count($aspect_ratio)) { + case 3: { + $aspect_ratio_align = $aspect_ratio[1]; + $aspect_ratio_ms = $aspect_ratio[2]; + break; + } + case 2: { + $aspect_ratio_align = $aspect_ratio[0]; + $aspect_ratio_ms = $aspect_ratio[1]; + break; + } + case 1: { + $aspect_ratio_align = $aspect_ratio[0]; + $aspect_ratio_ms = 'meet'; + break; + } + } + } + } + } + if ($ow <= 0) { + $ow = 1; + } + if ($oh <= 0) { + $oh = 1; + } + // calculate image width and height on document + if (($w <= 0) AND ($h <= 0)) { + // convert image size to document unit + $w = $ow; + $h = $oh; + } elseif ($w <= 0) { + $w = $h * $ow / $oh; + } elseif ($h <= 0) { + $h = $w * $oh / $ow; + } + // fit the image on available space + list($w, $h, $x, $y) = $this->fitBlock($w, $h, $x, $y, $fitonpage); + if ($this->rasterize_vector_images) { + // convert SVG to raster image using GD or ImageMagick libraries + return $this->Image($file, $x, $y, $w, $h, 'SVG', $link, $align, true, 300, $palign, false, false, $border, false, false, false); + } + // set alignment + $this->img_rb_y = $y + $h; + // set alignment + if ($this->rtl) { + if ($palign == 'L') { + $ximg = $this->lMargin; + } elseif ($palign == 'C') { + $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $ximg = $this->w - $this->rMargin - $w; + } else { + $ximg = $x - $w; + } + $this->img_rb_x = $ximg; + } else { + if ($palign == 'L') { + $ximg = $this->lMargin; + } elseif ($palign == 'C') { + $ximg = ($this->w + $this->lMargin - $this->rMargin - $w) / 2; + } elseif ($palign == 'R') { + $ximg = $this->w - $this->rMargin - $w; + } else { + $ximg = $x; + } + $this->img_rb_x = $ximg + $w; + } + // store current graphic vars + $gvars = $this->getGraphicVars(); + // store SVG position and scale factors + $svgoffset_x = ($ximg - $ox) * $this->k; + $svgoffset_y = -($y - $oy) * $this->k; + if (isset($view_box[2]) AND ($view_box[2] > 0) AND ($view_box[3] > 0)) { + $ow = $view_box[2]; + $oh = $view_box[3]; + } else { + if ($ow <= 0) { + $ow = $w; + } + if ($oh <= 0) { + $oh = $h; + } + } + $svgscale_x = $w / $ow; + $svgscale_y = $h / $oh; + // scaling and alignment + if ($aspect_ratio_align != 'none') { + // store current scaling values + $svgscale_old_x = $svgscale_x; + $svgscale_old_y = $svgscale_y; + // force uniform scaling + if ($aspect_ratio_ms == 'slice') { + // the entire viewport is covered by the viewBox + if ($svgscale_x > $svgscale_y) { + $svgscale_y = $svgscale_x; + } elseif ($svgscale_x < $svgscale_y) { + $svgscale_x = $svgscale_y; + } + } else { // meet + // the entire viewBox is visible within the viewport + if ($svgscale_x < $svgscale_y) { + $svgscale_y = $svgscale_x; + } elseif ($svgscale_x > $svgscale_y) { + $svgscale_x = $svgscale_y; + } + } + // correct X alignment + switch (substr($aspect_ratio_align, 1, 3)) { + case 'Min': { + // do nothing + break; + } + case 'Max': { + $svgoffset_x += (($w * $this->k) - ($ow * $this->k * $svgscale_x)); + break; + } + default: + case 'Mid': { + $svgoffset_x += ((($w * $this->k) - ($ow * $this->k * $svgscale_x)) / 2); + break; + } + } + // correct Y alignment + switch (substr($aspect_ratio_align, 5)) { + case 'Min': { + // do nothing + break; + } + case 'Max': { + $svgoffset_y -= (($h * $this->k) - ($oh * $this->k * $svgscale_y)); + break; + } + default: + case 'Mid': { + $svgoffset_y -= ((($h * $this->k) - ($oh * $this->k * $svgscale_y)) / 2); + break; + } + } + } + // store current page break mode + $page_break_mode = $this->AutoPageBreak; + $page_break_margin = $this->getBreakMargin(); + $cell_padding = $this->cell_padding; + $this->SetCellPadding(0); + $this->SetAutoPageBreak(false); + // save the current graphic state + $this->_out('q'.$this->epsmarker); + // set initial clipping mask + $this->Rect($ximg, $y, $w, $h, 'CNZ', array(), array()); + // scale and translate + $e = $ox * $this->k * (1 - $svgscale_x); + $f = ($this->h - $oy) * $this->k * (1 - $svgscale_y); + $this->_out(sprintf('%F %F %F %F %F %F cm', $svgscale_x, 0, 0, $svgscale_y, ($e + $svgoffset_x), ($f + $svgoffset_y))); + // creates a new XML parser to be used by the other XML functions + $this->parser = xml_parser_create('UTF-8'); + // the following function allows to use parser inside object + xml_set_object($this->parser, $this); + // disable case-folding for this XML parser + xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0); + // sets the element handler functions for the XML parser + xml_set_element_handler($this->parser, 'startSVGElementHandler', 'endSVGElementHandler'); + // sets the character data handler function for the XML parser + xml_set_character_data_handler($this->parser, 'segSVGContentHandler'); + // start parsing an XML document + if (!xml_parse($this->parser, $svgdata)) { + $error_message = sprintf('SVG Error: %s at line %d', xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser)); + $this->Error($error_message); + } + // free this XML parser + xml_parser_free($this->parser); + // restore previous graphic state + $this->_out($this->epsmarker.'Q'); + // restore graphic vars + $this->setGraphicVars($gvars); + $this->lasth = $gvars['lasth']; + if (!empty($border)) { + $bx = $this->x; + $by = $this->y; + $this->x = $ximg; + if ($this->rtl) { + $this->x += $w; + } + $this->y = $y; + $this->Cell($w, $h, '', $border, 0, '', 0, '', 0, true); + $this->x = $bx; + $this->y = $by; + } + if ($link) { + $this->Link($ximg, $y, $w, $h, $link, 0); + } + // set pointer to align the next text/objects + switch($align) { + case 'T':{ + $this->y = $y; + $this->x = $this->img_rb_x; + break; + } + case 'M':{ + $this->y = $y + round($h/2); + $this->x = $this->img_rb_x; + break; + } + case 'B':{ + $this->y = $this->img_rb_y; + $this->x = $this->img_rb_x; + break; + } + case 'N':{ + $this->SetY($this->img_rb_y); + break; + } + default:{ + // restore pointer to starting position + $this->x = $gvars['x']; + $this->y = $gvars['y']; + $this->page = $gvars['page']; + $this->current_column = $gvars['current_column']; + $this->tMargin = $gvars['tMargin']; + $this->bMargin = $gvars['bMargin']; + $this->w = $gvars['w']; + $this->h = $gvars['h']; + $this->wPt = $gvars['wPt']; + $this->hPt = $gvars['hPt']; + $this->fwPt = $gvars['fwPt']; + $this->fhPt = $gvars['fhPt']; + break; + } + } + $this->endlinex = $this->img_rb_x; + // restore page break + $this->SetAutoPageBreak($page_break_mode, $page_break_margin); + $this->cell_padding = $cell_padding; + } + + /** + * Convert SVG transformation matrix to PDF. + * @param $tm (array) original SVG transformation matrix + * @return array transformation matrix + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected function convertSVGtMatrix($tm) { + $a = $tm[0]; + $b = -$tm[1]; + $c = -$tm[2]; + $d = $tm[3]; + $e = $this->getHTMLUnitToUnits($tm[4], 1, $this->svgunit, false) * $this->k; + $f = -$this->getHTMLUnitToUnits($tm[5], 1, $this->svgunit, false) * $this->k; + $x = 0; + $y = $this->h * $this->k; + $e = ($x * (1 - $a)) - ($y * $c) + $e; + $f = ($y * (1 - $d)) - ($x * $b) + $f; + return array($a, $b, $c, $d, $e, $f); + } + + /** + * Apply SVG graphic transformation matrix. + * @param $tm (array) original SVG transformation matrix + * @protected + * @since 5.0.000 (2010-05-02) + */ + protected function SVGTransform($tm) { + $this->Transform($this->convertSVGtMatrix($tm)); + } + + /** + * Apply the requested SVG styles (*** TO BE COMPLETED ***) + * @param $svgstyle (array) array of SVG styles to apply + * @param $prevsvgstyle (array) array of previous SVG style + * @param $x (int) X origin of the bounding box + * @param $y (int) Y origin of the bounding box + * @param $w (int) width of the bounding box + * @param $h (int) height of the bounding box + * @param $clip_function (string) clip function + * @param $clip_params (array) array of parameters for clipping function + * @return object style + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @protected + */ + protected function setSVGStyles($svgstyle, $prevsvgstyle, $x=0, $y=0, $w=1, $h=1, $clip_function='', $clip_params=array()) { + if ($this->state != 2) { + return; + } + $objstyle = ''; + $minlen = (0.01 / $this->k); // minimum acceptable length + if (!isset($svgstyle['opacity'])) { + return $objstyle; + } + // clip-path + $regs = array(); + if (preg_match('/url\([\s]*\#([^\)]*)\)/si', $svgstyle['clip-path'], $regs)) { + $clip_path = $this->svgclippaths[$regs[1]]; + foreach ($clip_path as $cp) { + $this->startSVGElementHandler('clip-path', $cp['name'], $cp['attribs'], $cp['tm']); + } + } + // opacity + if ($svgstyle['opacity'] != 1) { + $this->setAlpha($svgstyle['opacity'], 'Normal', $svgstyle['opacity'], false); + } + // color + $fill_color = TCPDF_COLORS::convertHTMLColorToDec($svgstyle['color'], $this->spot_colors); + $this->SetFillColorArray($fill_color); + // text color + $text_color = TCPDF_COLORS::convertHTMLColorToDec($svgstyle['text-color'], $this->spot_colors); + $this->SetTextColorArray($text_color); + // clip + if (preg_match('/rect\(([a-z0-9\-\.]*)[\s]*([a-z0-9\-\.]*)[\s]*([a-z0-9\-\.]*)[\s]*([a-z0-9\-\.]*)\)/si', $svgstyle['clip'], $regs)) { + $top = (isset($regs[1])?$this->getHTMLUnitToUnits($regs[1], 0, $this->svgunit, false):0); + $right = (isset($regs[2])?$this->getHTMLUnitToUnits($regs[2], 0, $this->svgunit, false):0); + $bottom = (isset($regs[3])?$this->getHTMLUnitToUnits($regs[3], 0, $this->svgunit, false):0); + $left = (isset($regs[4])?$this->getHTMLUnitToUnits($regs[4], 0, $this->svgunit, false):0); + $cx = $x + $left; + $cy = $y + $top; + $cw = $w - $left - $right; + $ch = $h - $top - $bottom; + if ($svgstyle['clip-rule'] == 'evenodd') { + $clip_rule = 'CNZ'; + } else { + $clip_rule = 'CEO'; + } + $this->Rect($cx, $cy, $cw, $ch, $clip_rule, array(), array()); + } + // fill + $regs = array(); + if (preg_match('/url\([\s]*\#([^\)]*)\)/si', $svgstyle['fill'], $regs)) { + // gradient + $gradient = $this->svggradients[$regs[1]]; + if (isset($gradient['xref'])) { + // reference to another gradient definition + $newgradient = $this->svggradients[$gradient['xref']]; + $newgradient['coords'] = $gradient['coords']; + $newgradient['mode'] = $gradient['mode']; + $newgradient['type'] = $gradient['type']; + $newgradient['gradientUnits'] = $gradient['gradientUnits']; + if (isset($gradient['gradientTransform'])) { + $newgradient['gradientTransform'] = $gradient['gradientTransform']; + } + $gradient = $newgradient; + } + //save current Graphic State + $this->_outSaveGraphicsState(); + //set clipping area + if (!empty($clip_function) AND method_exists($this, $clip_function)) { + $bbox = call_user_func_array(array($this, $clip_function), $clip_params); + if ((!isset($gradient['type']) OR ($gradient['type'] != 3)) AND is_array($bbox) AND (count($bbox) == 4)) { + list($x, $y, $w, $h) = $bbox; + } + } + if ($gradient['mode'] == 'measure') { + if (!isset($gradient['coords'][4])) { + $gradient['coords'][4] = 0.5; + } + if (isset($gradient['gradientTransform']) AND !empty($gradient['gradientTransform'])) { + $gtm = $gradient['gradientTransform']; + // apply transformation matrix + $xa = ($gtm[0] * $gradient['coords'][0]) + ($gtm[2] * $gradient['coords'][1]) + $gtm[4]; + $ya = ($gtm[1] * $gradient['coords'][0]) + ($gtm[3] * $gradient['coords'][1]) + $gtm[5]; + $xb = ($gtm[0] * $gradient['coords'][2]) + ($gtm[2] * $gradient['coords'][3]) + $gtm[4]; + $yb = ($gtm[1] * $gradient['coords'][2]) + ($gtm[3] * $gradient['coords'][3]) + $gtm[5]; + $r = sqrt(pow(($gtm[0] * $gradient['coords'][4]), 2) + pow(($gtm[1] * $gradient['coords'][4]), 2)); + $gradient['coords'][0] = $xa; + $gradient['coords'][1] = $ya; + $gradient['coords'][2] = $xb; + $gradient['coords'][3] = $yb; + $gradient['coords'][4] = $r; + } + // convert SVG coordinates to user units + $gradient['coords'][0] = $this->getHTMLUnitToUnits($gradient['coords'][0], 0, $this->svgunit, false); + $gradient['coords'][1] = $this->getHTMLUnitToUnits($gradient['coords'][1], 0, $this->svgunit, false); + $gradient['coords'][2] = $this->getHTMLUnitToUnits($gradient['coords'][2], 0, $this->svgunit, false); + $gradient['coords'][3] = $this->getHTMLUnitToUnits($gradient['coords'][3], 0, $this->svgunit, false); + $gradient['coords'][4] = $this->getHTMLUnitToUnits($gradient['coords'][4], 0, $this->svgunit, false); + if ($w <= $minlen) { + $w = $minlen; + } + if ($h <= $minlen) { + $h = $minlen; + } + // shift units + if ($gradient['gradientUnits'] == 'objectBoundingBox') { + // convert to SVG coordinate system + $gradient['coords'][0] += $x; + $gradient['coords'][1] += $y; + $gradient['coords'][2] += $x; + $gradient['coords'][3] += $y; + } + // calculate percentages + $gradient['coords'][0] = (($gradient['coords'][0] - $x) / $w); + $gradient['coords'][1] = (($gradient['coords'][1] - $y) / $h); + $gradient['coords'][2] = (($gradient['coords'][2] - $x) / $w); + $gradient['coords'][3] = (($gradient['coords'][3] - $y) / $h); + $gradient['coords'][4] /= $w; + } elseif ($gradient['mode'] == 'percentage') { + foreach($gradient['coords'] as $key => $val) { + $gradient['coords'][$key] = (intval($val) / 100); + if ($val < 0) { + $gradient['coords'][$key] = 0; + } elseif ($val > 1) { + $gradient['coords'][$key] = 1; + } + } + } + if (($gradient['type'] == 2) AND ($gradient['coords'][0] == $gradient['coords'][2]) AND ($gradient['coords'][1] == $gradient['coords'][3])) { + // single color (no shading) + $gradient['coords'][0] = 1; + $gradient['coords'][1] = 0; + $gradient['coords'][2] = 0.999; + $gradient['coords'][3] = 0; + } + // swap Y coordinates + $tmp = $gradient['coords'][1]; + $gradient['coords'][1] = $gradient['coords'][3]; + $gradient['coords'][3] = $tmp; + // set transformation map for gradient + $cy = ($this->h - $y); + if ($gradient['type'] == 3) { + // circular gradient + $cy -= ($gradient['coords'][1] * ($w + $h)); + } else { + $cy -= $h; + } + $this->_out(sprintf('%F 0 0 %F %F %F cm', ($w * $this->k), ($h * $this->k), ($x * $this->k), ($cy * $this->k))); + if (count($gradient['stops']) > 1) { + $this->Gradient($gradient['type'], $gradient['coords'], $gradient['stops'], array(), false); + } + } elseif ($svgstyle['fill'] != 'none') { + $fill_color = TCPDF_COLORS::convertHTMLColorToDec($svgstyle['fill'], $this->spot_colors); + if ($svgstyle['fill-opacity'] != 1) { + $this->setAlpha($this->alpha['CA'], 'Normal', $svgstyle['fill-opacity'], false); + } + $this->SetFillColorArray($fill_color); + if ($svgstyle['fill-rule'] == 'evenodd') { + $objstyle .= 'F*'; + } else { + $objstyle .= 'F'; + } + } + // stroke + if ($svgstyle['stroke'] != 'none') { + if ($svgstyle['stroke-opacity'] != 1) { + $this->setAlpha($svgstyle['stroke-opacity'], 'Normal', $this->alpha['ca'], false); + } elseif (preg_match('/rgba\(\d+%?,\s*\d+%?,\s*\d+%?,\s*(\d+(?:\.\d+)?)\)/i', $svgstyle['stroke'], $rgba_matches)) { + $this->setAlpha($rgba_matches[1], 'Normal', $this->alpha['ca'], false); + } + $stroke_style = array( + 'color' => TCPDF_COLORS::convertHTMLColorToDec($svgstyle['stroke'], $this->spot_colors), + 'width' => $this->getHTMLUnitToUnits($svgstyle['stroke-width'], 0, $this->svgunit, false), + 'cap' => $svgstyle['stroke-linecap'], + 'join' => $svgstyle['stroke-linejoin'] + ); + if (isset($svgstyle['stroke-dasharray']) AND !empty($svgstyle['stroke-dasharray']) AND ($svgstyle['stroke-dasharray'] != 'none')) { + $stroke_style['dash'] = $svgstyle['stroke-dasharray']; + } + $this->SetLineStyle($stroke_style); + $objstyle .= 'D'; + } + // font + $regs = array(); + if (!empty($svgstyle['font'])) { + if (preg_match('/font-family[\s]*:[\s]*([^\;\"]*)/si', $svgstyle['font'], $regs)) { + $font_family = $this->getFontFamilyName($regs[1]); + } else { + $font_family = $svgstyle['font-family']; + } + if (preg_match('/font-size[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) { + $font_size = trim($regs[1]); + } else { + $font_size = $svgstyle['font-size']; + } + if (preg_match('/font-style[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) { + $font_style = trim($regs[1]); + } else { + $font_style = $svgstyle['font-style']; + } + if (preg_match('/font-weight[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) { + $font_weight = trim($regs[1]); + } else { + $font_weight = $svgstyle['font-weight']; + } + if (preg_match('/font-stretch[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) { + $font_stretch = trim($regs[1]); + } else { + $font_stretch = $svgstyle['font-stretch']; + } + if (preg_match('/letter-spacing[\s]*:[\s]*([^\s\;\"]*)/si', $svgstyle['font'], $regs)) { + $font_spacing = trim($regs[1]); + } else { + $font_spacing = $svgstyle['letter-spacing']; + } + } else { + $font_family = $this->getFontFamilyName($svgstyle['font-family']); + $font_size = $svgstyle['font-size']; + $font_style = $svgstyle['font-style']; + $font_weight = $svgstyle['font-weight']; + $font_stretch = $svgstyle['font-stretch']; + $font_spacing = $svgstyle['letter-spacing']; + } + $font_size = $this->getHTMLFontUnits($font_size, $this->svgstyles[0]['font-size'], $prevsvgstyle['font-size'], $this->svgunit); + $font_stretch = $this->getCSSFontStretching($font_stretch, $svgstyle['font-stretch']); + $font_spacing = $this->getCSSFontSpacing($font_spacing, $svgstyle['letter-spacing']); + switch ($font_style) { + case 'italic': { + $font_style = 'I'; + break; + } + case 'oblique': { + $font_style = 'I'; + break; + } + default: + case 'normal': { + $font_style = ''; + break; + } + } + switch ($font_weight) { + case 'bold': + case 'bolder': { + $font_style .= 'B'; + break; + } + } + switch ($svgstyle['text-decoration']) { + case 'underline': { + $font_style .= 'U'; + break; + } + case 'overline': { + $font_style .= 'O'; + break; + } + case 'line-through': { + $font_style .= 'D'; + break; + } + default: + case 'none': { + break; + } + } + $this->SetFont($font_family, $font_style, $font_size); + $this->setFontStretching($font_stretch); + $this->setFontSpacing($font_spacing); + return $objstyle; + } + + /** + * Draws an SVG path + * @param $d (string) attribute d of the path SVG element + * @param $style (string) Style of rendering. Possible values are: + *
        + *
      • D or empty string: Draw (default).
      • + *
      • F: Fill.
      • + *
      • F*: Fill using the even-odd rule to determine which regions lie inside the clipping path.
      • + *
      • DF or FD: Draw and fill.
      • + *
      • DF* or FD*: Draw and fill using the even-odd rule to determine which regions lie inside the clipping path.
      • + *
      • CNZ: Clipping mode (using the even-odd rule to determine which regions lie inside the clipping path).
      • + *
      • CEO: Clipping mode (using the nonzero winding number rule to determine which regions lie inside the clipping path).
      • + *
      + * @return array of container box measures (x, y, w, h) + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @protected + */ + protected function SVGPath($d, $style='') { + if ($this->state != 2) { + return; + } + // set fill/stroke style + $op = TCPDF_STATIC::getPathPaintOperator($style, ''); + if (empty($op)) { + return; + } + $paths = array(); + $d = preg_replace('/([0-9ACHLMQSTVZ])([\-\+])/si', '\\1 \\2', $d); + preg_match_all('/([ACHLMQSTVZ])[\s]*([^ACHLMQSTVZ\"]*)/si', $d, $paths, PREG_SET_ORDER); + $x = 0; + $y = 0; + $x1 = 0; + $y1 = 0; + $x2 = 0; + $y2 = 0; + $xmin = 2147483647; + $xmax = 0; + $ymin = 2147483647; + $ymax = 0; + $relcoord = false; + $minlen = (0.01 / $this->k); // minimum acceptable length (3 point) + $firstcmd = true; // used to print first point + // draw curve pieces + foreach ($paths as $key => $val) { + // get curve type + $cmd = trim($val[1]); + if (strtolower($cmd) == $cmd) { + // use relative coordinated instead of absolute + $relcoord = true; + $xoffset = $x; + $yoffset = $y; + } else { + $relcoord = false; + $xoffset = 0; + $yoffset = 0; + } + $params = array(); + if (isset($val[2])) { + // get curve parameters + $rawparams = preg_split('/([\,\s]+)/si', trim($val[2])); + $params = array(); + foreach ($rawparams as $ck => $cp) { + $params[$ck] = $this->getHTMLUnitToUnits($cp, 0, $this->svgunit, false); + if (abs($params[$ck]) < $minlen) { + // aproximate little values to zero + $params[$ck] = 0; + } + } + } + // store current origin point + $x0 = $x; + $y0 = $y; + switch (strtoupper($cmd)) { + case 'M': { // moveto + foreach ($params as $ck => $cp) { + if (($ck % 2) == 0) { + $x = $cp + $xoffset; + } else { + $y = $cp + $yoffset; + if ($firstcmd OR (abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) { + if ($ck == 1) { + $this->_outPoint($x, $y); + $firstcmd = false; + } else { + $this->_outLine($x, $y); + } + $x0 = $x; + $y0 = $y; + } + $xmin = min($xmin, $x); + $ymin = min($ymin, $y); + $xmax = max($xmax, $x); + $ymax = max($ymax, $y); + if ($relcoord) { + $xoffset = $x; + $yoffset = $y; + } + } + } + break; + } + case 'L': { // lineto + foreach ($params as $ck => $cp) { + if (($ck % 2) == 0) { + $x = $cp + $xoffset; + } else { + $y = $cp + $yoffset; + if ((abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) { + $this->_outLine($x, $y); + $x0 = $x; + $y0 = $y; + } + $xmin = min($xmin, $x); + $ymin = min($ymin, $y); + $xmax = max($xmax, $x); + $ymax = max($ymax, $y); + if ($relcoord) { + $xoffset = $x; + $yoffset = $y; + } + } + } + break; + } + case 'H': { // horizontal lineto + foreach ($params as $ck => $cp) { + $x = $cp + $xoffset; + if ((abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) { + $this->_outLine($x, $y); + $x0 = $x; + $y0 = $y; + } + $xmin = min($xmin, $x); + $xmax = max($xmax, $x); + if ($relcoord) { + $xoffset = $x; + } + } + break; + } + case 'V': { // vertical lineto + foreach ($params as $ck => $cp) { + $y = $cp + $yoffset; + if ((abs($x0 - $x) >= $minlen) OR (abs($y0 - $y) >= $minlen)) { + $this->_outLine($x, $y); + $x0 = $x; + $y0 = $y; + } + $ymin = min($ymin, $y); + $ymax = max($ymax, $y); + if ($relcoord) { + $yoffset = $y; + } + } + break; + } + case 'C': { // curveto + foreach ($params as $ck => $cp) { + $params[$ck] = $cp; + if ((($ck + 1) % 6) == 0) { + $x1 = $params[($ck - 5)] + $xoffset; + $y1 = $params[($ck - 4)] + $yoffset; + $x2 = $params[($ck - 3)] + $xoffset; + $y2 = $params[($ck - 2)] + $yoffset; + $x = $params[($ck - 1)] + $xoffset; + $y = $params[($ck)] + $yoffset; + $this->_outCurve($x1, $y1, $x2, $y2, $x, $y); + $xmin = min($xmin, $x, $x1, $x2); + $ymin = min($ymin, $y, $y1, $y2); + $xmax = max($xmax, $x, $x1, $x2); + $ymax = max($ymax, $y, $y1, $y2); + if ($relcoord) { + $xoffset = $x; + $yoffset = $y; + } + } + } + break; + } + case 'S': { // shorthand/smooth curveto + foreach ($params as $ck => $cp) { + $params[$ck] = $cp; + if ((($ck + 1) % 4) == 0) { + if (($key > 0) AND ((strtoupper($paths[($key - 1)][1]) == 'C') OR (strtoupper($paths[($key - 1)][1]) == 'S'))) { + $x1 = (2 * $x) - $x2; + $y1 = (2 * $y) - $y2; + } else { + $x1 = $x; + $y1 = $y; + } + $x2 = $params[($ck - 3)] + $xoffset; + $y2 = $params[($ck - 2)] + $yoffset; + $x = $params[($ck - 1)] + $xoffset; + $y = $params[($ck)] + $yoffset; + $this->_outCurve($x1, $y1, $x2, $y2, $x, $y); + $xmin = min($xmin, $x, $x1, $x2); + $ymin = min($ymin, $y, $y1, $y2); + $xmax = max($xmax, $x, $x1, $x2); + $ymax = max($ymax, $y, $y1, $y2); + if ($relcoord) { + $xoffset = $x; + $yoffset = $y; + } + } + } + break; + } + case 'Q': { // quadratic Bezier curveto + foreach ($params as $ck => $cp) { + $params[$ck] = $cp; + if ((($ck + 1) % 4) == 0) { + // convert quadratic points to cubic points + $x1 = $params[($ck - 3)] + $xoffset; + $y1 = $params[($ck - 2)] + $yoffset; + $xa = ($x + (2 * $x1)) / 3; + $ya = ($y + (2 * $y1)) / 3; + $x = $params[($ck - 1)] + $xoffset; + $y = $params[($ck)] + $yoffset; + $xb = ($x + (2 * $x1)) / 3; + $yb = ($y + (2 * $y1)) / 3; + $this->_outCurve($xa, $ya, $xb, $yb, $x, $y); + $xmin = min($xmin, $x, $xa, $xb); + $ymin = min($ymin, $y, $ya, $yb); + $xmax = max($xmax, $x, $xa, $xb); + $ymax = max($ymax, $y, $ya, $yb); + if ($relcoord) { + $xoffset = $x; + $yoffset = $y; + } + } + } + break; + } + case 'T': { // shorthand/smooth quadratic Bezier curveto + foreach ($params as $ck => $cp) { + $params[$ck] = $cp; + if (($ck % 2) != 0) { + if (($key > 0) AND ((strtoupper($paths[($key - 1)][1]) == 'Q') OR (strtoupper($paths[($key - 1)][1]) == 'T'))) { + $x1 = (2 * $x) - $x1; + $y1 = (2 * $y) - $y1; + } else { + $x1 = $x; + $y1 = $y; + } + // convert quadratic points to cubic points + $xa = ($x + (2 * $x1)) / 3; + $ya = ($y + (2 * $y1)) / 3; + $x = $params[($ck - 1)] + $xoffset; + $y = $params[($ck)] + $yoffset; + $xb = ($x + (2 * $x1)) / 3; + $yb = ($y + (2 * $y1)) / 3; + $this->_outCurve($xa, $ya, $xb, $yb, $x, $y); + $xmin = min($xmin, $x, $xa, $xb); + $ymin = min($ymin, $y, $ya, $yb); + $xmax = max($xmax, $x, $xa, $xb); + $ymax = max($ymax, $y, $ya, $yb); + if ($relcoord) { + $xoffset = $x; + $yoffset = $y; + } + } + } + break; + } + case 'A': { // elliptical arc + foreach ($params as $ck => $cp) { + $params[$ck] = $cp; + if ((($ck + 1) % 7) == 0) { + $x0 = $x; + $y0 = $y; + $rx = abs($params[($ck - 6)]); + $ry = abs($params[($ck - 5)]); + $ang = -$rawparams[($ck - 4)]; + $angle = deg2rad($ang); + $fa = $rawparams[($ck - 3)]; // large-arc-flag + $fs = $rawparams[($ck - 2)]; // sweep-flag + $x = $params[($ck - 1)] + $xoffset; + $y = $params[$ck] + $yoffset; + if ((abs($x0 - $x) < $minlen) AND (abs($y0 - $y) < $minlen)) { + // endpoints are almost identical + $xmin = min($xmin, $x); + $ymin = min($ymin, $y); + $xmax = max($xmax, $x); + $ymax = max($ymax, $y); + } else { + $cos_ang = cos($angle); + $sin_ang = sin($angle); + $a = (($x0 - $x) / 2); + $b = (($y0 - $y) / 2); + $xa = ($a * $cos_ang) - ($b * $sin_ang); + $ya = ($a * $sin_ang) + ($b * $cos_ang); + $rx2 = $rx * $rx; + $ry2 = $ry * $ry; + $xa2 = $xa * $xa; + $ya2 = $ya * $ya; + $delta = ($xa2 / $rx2) + ($ya2 / $ry2); + if ($delta > 1) { + $rx *= sqrt($delta); + $ry *= sqrt($delta); + $rx2 = $rx * $rx; + $ry2 = $ry * $ry; + } + $numerator = (($rx2 * $ry2) - ($rx2 * $ya2) - ($ry2 * $xa2)); + if ($numerator < 0) { + $root = 0; + } else { + $root = sqrt($numerator / (($rx2 * $ya2) + ($ry2 * $xa2))); + } + if ($fa == $fs){ + $root *= -1; + } + $cax = $root * (($rx * $ya) / $ry); + $cay = -$root * (($ry * $xa) / $rx); + // coordinates of ellipse center + $cx = ($cax * $cos_ang) - ($cay * $sin_ang) + (($x0 + $x) / 2); + $cy = ($cax * $sin_ang) + ($cay * $cos_ang) + (($y0 + $y) / 2); + // get angles + $angs = TCPDF_STATIC::getVectorsAngle(1, 0, (($xa - $cax) / $rx), (($cay - $ya) / $ry)); + $dang = TCPDF_STATIC::getVectorsAngle((($xa - $cax) / $rx), (($ya - $cay) / $ry), ((-$xa - $cax) / $rx), ((-$ya - $cay) / $ry)); + if (($fs == 0) AND ($dang > 0)) { + $dang -= (2 * M_PI); + } elseif (($fs == 1) AND ($dang < 0)) { + $dang += (2 * M_PI); + } + $angf = $angs - $dang; + if ((($fs == 0) AND ($angs > $angf)) OR (($fs == 1) AND ($angs < $angf))) { + // reverse angles + $tmp = $angs; + $angs = $angf; + $angf = $tmp; + } + $angs = round(rad2deg($angs), 6); + $angf = round(rad2deg($angf), 6); + // covent angles to positive values + if (($angs < 0) AND ($angf < 0)) { + $angs += 360; + $angf += 360; + } + $pie = false; + if (($key == 0) AND (isset($paths[($key + 1)][1])) AND (trim($paths[($key + 1)][1]) == 'z')) { + $pie = true; + } + list($axmin, $aymin, $axmax, $aymax) = $this->_outellipticalarc($cx, $cy, $rx, $ry, $ang, $angs, $angf, $pie, 2, false, ($fs == 0), true); + $xmin = min($xmin, $x, $axmin); + $ymin = min($ymin, $y, $aymin); + $xmax = max($xmax, $x, $axmax); + $ymax = max($ymax, $y, $aymax); + } + if ($relcoord) { + $xoffset = $x; + $yoffset = $y; + } + } + } + break; + } + case 'Z': { + $this->_out('h'); + break; + } + } + $firstcmd = false; + } // end foreach + if (!empty($op)) { + $this->_out($op); + } + return array($xmin, $ymin, ($xmax - $xmin), ($ymax - $ymin)); + } + + /** + * Sets the opening SVG element handler function for the XML parser. (*** TO BE COMPLETED ***) + * @param $parser (resource) The first parameter, parser, is a reference to the XML parser calling the handler. + * @param $name (string) The second parameter, name, contains the name of the element for which this handler is called. If case-folding is in effect for this parser, the element name will be in uppercase letters. + * @param $attribs (array) The third parameter, attribs, contains an associative array with the element's attributes (if any). The keys of this array are the attribute names, the values are the attribute values. Attribute names are case-folded on the same criteria as element names. Attribute values are not case-folded. The original order of the attributes can be retrieved by walking through attribs the normal way, using each(). The first key in the array was the first attribute, and so on. + * @param $ctm (array) tranformation matrix for clipping mode (starting transformation matrix). + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @protected + */ + protected function startSVGElementHandler($parser, $name, $attribs, $ctm=array()) { + // check if we are in clip mode + if ($this->svgclipmode) { + $this->svgclippaths[$this->svgclipid][] = array('name' => $name, 'attribs' => $attribs, 'tm' => $this->svgcliptm[$this->svgclipid]); + return; + } + if ($this->svgdefsmode AND !in_array($name, array('clipPath', 'linearGradient', 'radialGradient', 'stop'))) { + if (isset($attribs['id'])) { + $attribs['child_elements'] = array(); + $this->svgdefs[$attribs['id']] = array('name' => $name, 'attribs' => $attribs); + return; + } + if (end($this->svgdefs) !== FALSE) { + $last_svgdefs_id = key($this->svgdefs); + if (isset($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'])) { + $attribs['id'] = 'DF_'.(count($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements']) + 1); + $this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'][$attribs['id']] = array('name' => $name, 'attribs' => $attribs); + return; + } + } + return; + } + $clipping = false; + if ($parser == 'clip-path') { + // set clipping mode + $clipping = true; + } + // get styling properties + $prev_svgstyle = $this->svgstyles[max(0,(count($this->svgstyles) - 1))]; // previous style + $svgstyle = $this->svgstyles[0]; // set default style + if ($clipping AND !isset($attribs['fill']) AND (!isset($attribs['style']) OR (!preg_match('/[;\"\s]{1}fill[\s]*:[\s]*([^;\"]*)/si', $attribs['style'], $attrval)))) { + // default fill attribute for clipping + $attribs['fill'] = 'none'; + } + if (isset($attribs['style']) AND !TCPDF_STATIC::empty_string($attribs['style']) AND ($attribs['style'][0] != ';')) { + // fix style for regular expression + $attribs['style'] = ';'.$attribs['style']; + } + foreach ($prev_svgstyle as $key => $val) { + if (in_array($key, TCPDF_IMAGES::$svginheritprop)) { + // inherit previous value + $svgstyle[$key] = $val; + } + if (isset($attribs[$key]) AND !TCPDF_STATIC::empty_string($attribs[$key])) { + // specific attribute settings + if ($attribs[$key] == 'inherit') { + $svgstyle[$key] = $val; + } else { + $svgstyle[$key] = $attribs[$key]; + } + } elseif (isset($attribs['style']) AND !TCPDF_STATIC::empty_string($attribs['style'])) { + // CSS style syntax + $attrval = array(); + if (preg_match('/[;\"\s]{1}'.$key.'[\s]*:[\s]*([^;\"]*)/si', $attribs['style'], $attrval) AND isset($attrval[1])) { + if ($attrval[1] == 'inherit') { + $svgstyle[$key] = $val; + } else { + $svgstyle[$key] = $attrval[1]; + } + } + } + } + // transformation matrix + if (!empty($ctm)) { + $tm = $ctm; + } else { + $tm = array(1,0,0,1,0,0); + } + if (isset($attribs['transform']) AND !empty($attribs['transform'])) { + $tm = TCPDF_STATIC::getTransformationMatrixProduct($tm, TCPDF_STATIC::getSVGTransformMatrix($attribs['transform'])); + } + $svgstyle['transfmatrix'] = $tm; + $invisible = false; + if (($svgstyle['visibility'] == 'hidden') OR ($svgstyle['visibility'] == 'collapse') OR ($svgstyle['display'] == 'none')) { + // the current graphics element is invisible (nothing is painted) + $invisible = true; + } + // process tag + switch($name) { + case 'defs': { + $this->svgdefsmode = true; + break; + } + // clipPath + case 'clipPath': { + if ($invisible) { + break; + } + $this->svgclipmode = true; + if (!isset($attribs['id'])) { + $attribs['id'] = 'CP_'.(count($this->svgcliptm) + 1); + } + $this->svgclipid = $attribs['id']; + $this->svgclippaths[$this->svgclipid] = array(); + $this->svgcliptm[$this->svgclipid] = $tm; + break; + } + case 'svg': { + // start of SVG object + break; + } + case 'g': { + // group together related graphics elements + array_push($this->svgstyles, $svgstyle); + $this->StartTransform(); + $x = (isset($attribs['x'])?$attribs['x']:0); + $y = (isset($attribs['y'])?$attribs['y']:0); + $w = 1;//(isset($attribs['width'])?$attribs['width']:1); + $h = 1;//(isset($attribs['height'])?$attribs['height']:1); + $tm = TCPDF_STATIC::getTransformationMatrixProduct($tm, array($w, 0, 0, $h, $x, $y)); + $this->SVGTransform($tm); + $this->setSVGStyles($svgstyle, $prev_svgstyle); + break; + } + case 'linearGradient': { + if ($this->pdfa_mode) { + break; + } + if (!isset($attribs['id'])) { + $attribs['id'] = 'GR_'.(count($this->svggradients) + 1); + } + $this->svggradientid = $attribs['id']; + $this->svggradients[$this->svggradientid] = array(); + $this->svggradients[$this->svggradientid]['type'] = 2; + $this->svggradients[$this->svggradientid]['stops'] = array(); + if (isset($attribs['gradientUnits'])) { + $this->svggradients[$this->svggradientid]['gradientUnits'] = $attribs['gradientUnits']; + } else { + $this->svggradients[$this->svggradientid]['gradientUnits'] = 'objectBoundingBox'; + } + //$attribs['spreadMethod'] + if (((!isset($attribs['x1'])) AND (!isset($attribs['y1'])) AND (!isset($attribs['x2'])) AND (!isset($attribs['y2']))) + OR ((isset($attribs['x1']) AND (substr($attribs['x1'], -1) == '%')) + OR (isset($attribs['y1']) AND (substr($attribs['y1'], -1) == '%')) + OR (isset($attribs['x2']) AND (substr($attribs['x2'], -1) == '%')) + OR (isset($attribs['y2']) AND (substr($attribs['y2'], -1) == '%')))) { + $this->svggradients[$this->svggradientid]['mode'] = 'percentage'; + } else { + $this->svggradients[$this->svggradientid]['mode'] = 'measure'; + } + $x1 = (isset($attribs['x1'])?$attribs['x1']:'0'); + $y1 = (isset($attribs['y1'])?$attribs['y1']:'0'); + $x2 = (isset($attribs['x2'])?$attribs['x2']:'100'); + $y2 = (isset($attribs['y2'])?$attribs['y2']:'0'); + if (isset($attribs['gradientTransform'])) { + $this->svggradients[$this->svggradientid]['gradientTransform'] = TCPDF_STATIC::getSVGTransformMatrix($attribs['gradientTransform']); + } + $this->svggradients[$this->svggradientid]['coords'] = array($x1, $y1, $x2, $y2); + if (isset($attribs['xlink:href']) AND !empty($attribs['xlink:href'])) { + // gradient is defined on another place + $this->svggradients[$this->svggradientid]['xref'] = substr($attribs['xlink:href'], 1); + } + break; + } + case 'radialGradient': { + if ($this->pdfa_mode) { + break; + } + if (!isset($attribs['id'])) { + $attribs['id'] = 'GR_'.(count($this->svggradients) + 1); + } + $this->svggradientid = $attribs['id']; + $this->svggradients[$this->svggradientid] = array(); + $this->svggradients[$this->svggradientid]['type'] = 3; + $this->svggradients[$this->svggradientid]['stops'] = array(); + if (isset($attribs['gradientUnits'])) { + $this->svggradients[$this->svggradientid]['gradientUnits'] = $attribs['gradientUnits']; + } else { + $this->svggradients[$this->svggradientid]['gradientUnits'] = 'objectBoundingBox'; + } + //$attribs['spreadMethod'] + if (((!isset($attribs['cx'])) AND (!isset($attribs['cy']))) + OR ((isset($attribs['cx']) AND (substr($attribs['cx'], -1) == '%')) + OR (isset($attribs['cy']) AND (substr($attribs['cy'], -1) == '%')))) { + $this->svggradients[$this->svggradientid]['mode'] = 'percentage'; + } elseif (isset($attribs['r']) AND is_numeric($attribs['r']) AND ($attribs['r']) <= 1) { + $this->svggradients[$this->svggradientid]['mode'] = 'ratio'; + } else { + $this->svggradients[$this->svggradientid]['mode'] = 'measure'; + } + $cx = (isset($attribs['cx']) ? $attribs['cx'] : 0.5); + $cy = (isset($attribs['cy']) ? $attribs['cy'] : 0.5); + $fx = (isset($attribs['fx']) ? $attribs['fx'] : $cx); + $fy = (isset($attribs['fy']) ? $attribs['fy'] : $cy); + $r = (isset($attribs['r']) ? $attribs['r'] : 0.5); + if (isset($attribs['gradientTransform'])) { + $this->svggradients[$this->svggradientid]['gradientTransform'] = TCPDF_STATIC::getSVGTransformMatrix($attribs['gradientTransform']); + } + $this->svggradients[$this->svggradientid]['coords'] = array($cx, $cy, $fx, $fy, $r); + if (isset($attribs['xlink:href']) AND !empty($attribs['xlink:href'])) { + // gradient is defined on another place + $this->svggradients[$this->svggradientid]['xref'] = substr($attribs['xlink:href'], 1); + } + break; + } + case 'stop': { + // gradient stops + if (substr($attribs['offset'], -1) == '%') { + $offset = floatval(substr($attribs['offset'], -1)) / 100; + } else { + $offset = floatval($attribs['offset']); + if ($offset > 1) { + $offset /= 100; + } + } + $stop_color = isset($svgstyle['stop-color'])?TCPDF_COLORS::convertHTMLColorToDec($svgstyle['stop-color'], $this->spot_colors):'black'; + $opacity = isset($svgstyle['stop-opacity'])?$svgstyle['stop-opacity']:1; + $this->svggradients[$this->svggradientid]['stops'][] = array('offset' => $offset, 'color' => $stop_color, 'opacity' => $opacity); + break; + } + // paths + case 'path': { + if ($invisible) { + break; + } + if (isset($attribs['d'])) { + $d = trim($attribs['d']); + if (!empty($d)) { + $x = (isset($attribs['x'])?$attribs['x']:0); + $y = (isset($attribs['y'])?$attribs['y']:0); + $w = (isset($attribs['width'])?$attribs['width']:1); + $h = (isset($attribs['height'])?$attribs['height']:1); + $tm = TCPDF_STATIC::getTransformationMatrixProduct($tm, array($w, 0, 0, $h, $x, $y)); + if ($clipping) { + $this->SVGTransform($tm); + $this->SVGPath($d, 'CNZ'); + } else { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'SVGPath', array($d, 'CNZ')); + if (!empty($obstyle)) { + $this->SVGPath($d, $obstyle); + } + $this->StopTransform(); + } + } + } + break; + } + // shapes + case 'rect': { + if ($invisible) { + break; + } + $x = (isset($attribs['x'])?$this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false):0); + $y = (isset($attribs['y'])?$this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false):0); + $w = (isset($attribs['width'])?$this->getHTMLUnitToUnits($attribs['width'], 0, $this->svgunit, false):0); + $h = (isset($attribs['height'])?$this->getHTMLUnitToUnits($attribs['height'], 0, $this->svgunit, false):0); + $rx = (isset($attribs['rx'])?$this->getHTMLUnitToUnits($attribs['rx'], 0, $this->svgunit, false):0); + $ry = (isset($attribs['ry'])?$this->getHTMLUnitToUnits($attribs['ry'], 0, $this->svgunit, false):$rx); + if ($clipping) { + $this->SVGTransform($tm); + $this->RoundedRectXY($x, $y, $w, $h, $rx, $ry, '1111', 'CNZ', array(), array()); + } else { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'RoundedRectXY', array($x, $y, $w, $h, $rx, $ry, '1111', 'CNZ')); + if (!empty($obstyle)) { + $this->RoundedRectXY($x, $y, $w, $h, $rx, $ry, '1111', $obstyle, array(), array()); + } + $this->StopTransform(); + } + break; + } + case 'circle': { + if ($invisible) { + break; + } + $r = (isset($attribs['r']) ? $this->getHTMLUnitToUnits($attribs['r'], 0, $this->svgunit, false) : 0); + $cx = (isset($attribs['cx']) ? $this->getHTMLUnitToUnits($attribs['cx'], 0, $this->svgunit, false) : (isset($attribs['x']) ? $this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false) : 0)); + $cy = (isset($attribs['cy']) ? $this->getHTMLUnitToUnits($attribs['cy'], 0, $this->svgunit, false) : (isset($attribs['y']) ? $this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false) : 0)); + $x = ($cx - $r); + $y = ($cy - $r); + $w = (2 * $r); + $h = $w; + if ($clipping) { + $this->SVGTransform($tm); + $this->Circle($cx, $cy, $r, 0, 360, 'CNZ', array(), array(), 8); + } else { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Circle', array($cx, $cy, $r, 0, 360, 'CNZ')); + if (!empty($obstyle)) { + $this->Circle($cx, $cy, $r, 0, 360, $obstyle, array(), array(), 8); + } + $this->StopTransform(); + } + break; + } + case 'ellipse': { + if ($invisible) { + break; + } + $rx = (isset($attribs['rx']) ? $this->getHTMLUnitToUnits($attribs['rx'], 0, $this->svgunit, false) : 0); + $ry = (isset($attribs['ry']) ? $this->getHTMLUnitToUnits($attribs['ry'], 0, $this->svgunit, false) : 0); + $cx = (isset($attribs['cx']) ? $this->getHTMLUnitToUnits($attribs['cx'], 0, $this->svgunit, false) : (isset($attribs['x']) ? $this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false) : 0)); + $cy = (isset($attribs['cy']) ? $this->getHTMLUnitToUnits($attribs['cy'], 0, $this->svgunit, false) : (isset($attribs['y']) ? $this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false) : 0)); + $x = ($cx - $rx); + $y = ($cy - $ry); + $w = (2 * $rx); + $h = (2 * $ry); + if ($clipping) { + $this->SVGTransform($tm); + $this->Ellipse($cx, $cy, $rx, $ry, 0, 0, 360, 'CNZ', array(), array(), 8); + } else { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Ellipse', array($cx, $cy, $rx, $ry, 0, 0, 360, 'CNZ')); + if (!empty($obstyle)) { + $this->Ellipse($cx, $cy, $rx, $ry, 0, 0, 360, $obstyle, array(), array(), 8); + } + $this->StopTransform(); + } + break; + } + case 'line': { + if ($invisible) { + break; + } + $x1 = (isset($attribs['x1'])?$this->getHTMLUnitToUnits($attribs['x1'], 0, $this->svgunit, false):0); + $y1 = (isset($attribs['y1'])?$this->getHTMLUnitToUnits($attribs['y1'], 0, $this->svgunit, false):0); + $x2 = (isset($attribs['x2'])?$this->getHTMLUnitToUnits($attribs['x2'], 0, $this->svgunit, false):0); + $y2 = (isset($attribs['y2'])?$this->getHTMLUnitToUnits($attribs['y2'], 0, $this->svgunit, false):0); + $x = $x1; + $y = $y1; + $w = abs($x2 - $x1); + $h = abs($y2 - $y1); + if (!$clipping) { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Line', array($x1, $y1, $x2, $y2)); + $this->Line($x1, $y1, $x2, $y2); + $this->StopTransform(); + } + break; + } + case 'polyline': + case 'polygon': { + if ($invisible) { + break; + } + $points = (isset($attribs['points'])?$attribs['points']:'0 0'); + $points = trim($points); + // note that point may use a complex syntax not covered here + $points = preg_split('/[\,\s]+/si', $points); + if (count($points) < 4) { + break; + } + $p = array(); + $xmin = 2147483647; + $xmax = 0; + $ymin = 2147483647; + $ymax = 0; + foreach ($points as $key => $val) { + $p[$key] = $this->getHTMLUnitToUnits($val, 0, $this->svgunit, false); + if (($key % 2) == 0) { + // X coordinate + $xmin = min($xmin, $p[$key]); + $xmax = max($xmax, $p[$key]); + } else { + // Y coordinate + $ymin = min($ymin, $p[$key]); + $ymax = max($ymax, $p[$key]); + } + } + $x = $xmin; + $y = $ymin; + $w = ($xmax - $xmin); + $h = ($ymax - $ymin); + if ($name == 'polyline') { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'PolyLine', array($p, 'CNZ')); + if (!empty($obstyle)) { + $this->PolyLine($p, $obstyle, array(), array()); + } + $this->StopTransform(); + } else { // polygon + if ($clipping) { + $this->SVGTransform($tm); + $this->Polygon($p, 'CNZ', array(), array(), true); + } else { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h, 'Polygon', array($p, 'CNZ')); + if (!empty($obstyle)) { + $this->Polygon($p, $obstyle, array(), array(), true); + } + $this->StopTransform(); + } + } + break; + } + // image + case 'image': { + if ($invisible) { + break; + } + if (!isset($attribs['xlink:href']) OR empty($attribs['xlink:href'])) { + break; + } + $x = (isset($attribs['x'])?$this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false):0); + $y = (isset($attribs['y'])?$this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false):0); + $w = (isset($attribs['width'])?$this->getHTMLUnitToUnits($attribs['width'], 0, $this->svgunit, false):0); + $h = (isset($attribs['height'])?$this->getHTMLUnitToUnits($attribs['height'], 0, $this->svgunit, false):0); + $img = $attribs['xlink:href']; + if (!$clipping) { + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, $w, $h); + if (preg_match('/^data:image\/[^;]+;base64,/', $img, $m) > 0) { + // embedded image encoded as base64 + $img = '@'.base64_decode(substr($img, strlen($m[0]))); + } else { + // fix image path + if (!TCPDF_STATIC::empty_string($this->svgdir) AND (($img[0] == '.') OR (basename($img) == $img))) { + // replace relative path with full server path + $img = $this->svgdir.'/'.$img; + } + if (($img[0] == '/') AND !empty($_SERVER['DOCUMENT_ROOT']) AND ($_SERVER['DOCUMENT_ROOT'] != '/')) { + $findroot = strpos($img, $_SERVER['DOCUMENT_ROOT']); + if (($findroot === false) OR ($findroot > 1)) { + if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') { + $img = substr($_SERVER['DOCUMENT_ROOT'], 0, -1).$img; + } else { + $img = $_SERVER['DOCUMENT_ROOT'].$img; + } + } + } + $img = urldecode($img); + $testscrtype = @parse_url($img); + if (!isset($testscrtype['query']) OR empty($testscrtype['query'])) { + // convert URL to server path + $img = str_replace(K_PATH_URL, K_PATH_MAIN, $img); + } + } + // get image type + $imgtype = TCPDF_IMAGES::getImageFileType($img); + if (($imgtype == 'eps') OR ($imgtype == 'ai')) { + $this->ImageEps($img, $x, $y, $w, $h); + } elseif ($imgtype == 'svg') { + $this->ImageSVG($img, $x, $y, $w, $h); + } else { + $this->Image($img, $x, $y, $w, $h); + } + $this->StopTransform(); + } + break; + } + // text + case 'text': + case 'tspan': { + // only basic support - advanced features must be implemented + $this->svgtextmode['invisible'] = $invisible; + if ($invisible) { + break; + } + array_push($this->svgstyles, $svgstyle); + if (isset($attribs['x'])) { + $x = $this->getHTMLUnitToUnits($attribs['x'], 0, $this->svgunit, false); + } elseif ($name == 'tspan') { + $x = $this->x; + } else { + $x = 0; + } + if (isset($attribs['dx'])) { + $x += $this->getHTMLUnitToUnits($attribs['dx'], 0, $this->svgunit, false); + } + if (isset($attribs['y'])) { + $y = $this->getHTMLUnitToUnits($attribs['y'], 0, $this->svgunit, false); + } elseif ($name == 'tspan') { + $y = $this->y; + } else { + $y = 0; + } + if (isset($attribs['dy'])) { + $y += $this->getHTMLUnitToUnits($attribs['dy'], 0, $this->svgunit, false); + } + $svgstyle['text-color'] = $svgstyle['fill']; + $this->svgtext = ''; + if (isset($svgstyle['text-anchor'])) { + $this->svgtextmode['text-anchor'] = $svgstyle['text-anchor']; + } else { + $this->svgtextmode['text-anchor'] = 'start'; + } + if (isset($svgstyle['direction'])) { + if ($svgstyle['direction'] == 'rtl') { + $this->svgtextmode['rtl'] = true; + } else { + $this->svgtextmode['rtl'] = false; + } + } else { + $this->svgtextmode['rtl'] = false; + } + if (isset($svgstyle['stroke']) AND ($svgstyle['stroke'] != 'none') AND isset($svgstyle['stroke-width']) AND ($svgstyle['stroke-width'] > 0)) { + $this->svgtextmode['stroke'] = $this->getHTMLUnitToUnits($svgstyle['stroke-width'], 0, $this->svgunit, false); + } else { + $this->svgtextmode['stroke'] = false; + } + $this->StartTransform(); + $this->SVGTransform($tm); + $obstyle = $this->setSVGStyles($svgstyle, $prev_svgstyle, $x, $y, 1, 1); + $this->x = $x; + $this->y = $y; + break; + } + // use + case 'use': { + if (isset($attribs['xlink:href']) AND !empty($attribs['xlink:href'])) { + $svgdefid = substr($attribs['xlink:href'], 1); + if (isset($this->svgdefs[$svgdefid])) { + $use = $this->svgdefs[$svgdefid]; + if (isset($attribs['xlink:href'])) { + unset($attribs['xlink:href']); + } + if (isset($attribs['id'])) { + unset($attribs['id']); + } + if (isset($use['attribs']['x']) AND isset($attribs['x'])) { + $attribs['x'] += $use['attribs']['x']; + } + if (isset($use['attribs']['y']) AND isset($attribs['y'])) { + $attribs['y'] += $use['attribs']['y']; + } + if (empty($attribs['style'])) { + $attribs['style'] = ''; + } + if (!empty($use['attribs']['style'])) { + // merge styles + $attribs['style'] = str_replace(';;',';',';'.$use['attribs']['style'].$attribs['style']); + } + $attribs = array_merge($use['attribs'], $attribs); + $this->startSVGElementHandler($parser, $use['name'], $attribs); + return; + } + } + break; + } + default: { + break; + } + } // end of switch + // process child elements + if (!empty($attribs['child_elements'])) { + $child_elements = $attribs['child_elements']; + unset($attribs['child_elements']); + foreach($child_elements as $child_element) { + if (empty($child_element['attribs']['closing_tag'])) { + $this->startSVGElementHandler('child-tag', $child_element['name'], $child_element['attribs']); + } else { + if (isset($child_element['attribs']['content'])) { + $this->svgtext = $child_element['attribs']['content']; + } + $this->endSVGElementHandler('child-tag', $child_element['name']); + } + } + } + } + + /** + * Sets the closing SVG element handler function for the XML parser. + * @param $parser (resource) The first parameter, parser, is a reference to the XML parser calling the handler. + * @param $name (string) The second parameter, name, contains the name of the element for which this handler is called. If case-folding is in effect for this parser, the element name will be in uppercase letters. + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @protected + */ + protected function endSVGElementHandler($parser, $name) { + if ($this->svgdefsmode AND !in_array($name, array('defs', 'clipPath', 'linearGradient', 'radialGradient', 'stop'))) {; + if (end($this->svgdefs) !== FALSE) { + $last_svgdefs_id = key($this->svgdefs); + if (isset($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'])) { + foreach($this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'] as $child_element) { + if (isset($child_element['attribs']['id']) AND ($child_element['name'] == $name)) { + $this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'][$child_element['attribs']['id'].'_CLOSE'] = array('name' => $name, 'attribs' => array('closing_tag' => TRUE, 'content' => $this->svgtext)); + return; + } + } + if ($this->svgdefs[$last_svgdefs_id]['name'] == $name) { + $this->svgdefs[$last_svgdefs_id]['attribs']['child_elements'][$last_svgdefs_id.'_CLOSE'] = array('name' => $name, 'attribs' => array('closing_tag' => TRUE, 'content' => $this->svgtext)); + return; + } + } + } + return; + } + switch($name) { + case 'defs': { + $this->svgdefsmode = false; + break; + } + // clipPath + case 'clipPath': { + $this->svgclipmode = false; + break; + } + case 'g': { + // ungroup: remove last style from array + array_pop($this->svgstyles); + $this->StopTransform(); + break; + } + case 'text': + case 'tspan': { + if ($this->svgtextmode['invisible']) { + // This implementation must be fixed to following the rule: + // If the 'visibility' property is set to hidden on a 'tspan', 'tref' or 'altGlyph' element, then the text is invisible but still takes up space in text layout calculations. + break; + } + // print text + $text = $this->svgtext; + //$text = $this->stringTrim($text); + $textlen = $this->GetStringWidth($text); + if ($this->svgtextmode['text-anchor'] != 'start') { + // check if string is RTL text + if ($this->svgtextmode['text-anchor'] == 'end') { + if ($this->svgtextmode['rtl']) { + $this->x += $textlen; + } else { + $this->x -= $textlen; + } + } elseif ($this->svgtextmode['text-anchor'] == 'middle') { + if ($this->svgtextmode['rtl']) { + $this->x += ($textlen / 2); + } else { + $this->x -= ($textlen / 2); + } + } + } + $textrendermode = $this->textrendermode; + $textstrokewidth = $this->textstrokewidth; + $this->setTextRenderingMode($this->svgtextmode['stroke'], true, false); + if ($name == 'text') { + // store current coordinates + $tmpx = $this->x; + $tmpy = $this->y; + } + $this->Cell($textlen, 0, $text, 0, 0, '', false, '', 0, false, 'L', 'T'); + if ($name == 'text') { + // restore coordinates + $this->x = $tmpx; + $this->y = $tmpy; + } + // restore previous rendering mode + $this->textrendermode = $textrendermode; + $this->textstrokewidth = $textstrokewidth; + $this->svgtext = ''; + $this->StopTransform(); + if (!$this->svgdefsmode) { + array_pop($this->svgstyles); + } + break; + } + default: { + break; + } + } + } + + /** + * Sets the character data handler function for the XML parser. + * @param $parser (resource) The first parameter, parser, is a reference to the XML parser calling the handler. + * @param $data (string) The second parameter, data, contains the character data as a string. + * @author Nicola Asuni + * @since 5.0.000 (2010-05-02) + * @protected + */ + protected function segSVGContentHandler($parser, $data) { + $this->svgtext .= $data; + } + + // --- END SVG METHODS ----------------------------------------------------- + +} // END OF TCPDF CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_autoconfig.php b/inc/3rdparty/libraries/tcpdf/tcpdf_autoconfig.php new file mode 100644 index 000000000..951c0b0fb --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tcpdf_autoconfig.php @@ -0,0 +1,242 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : Try to automatically configure some TCPDF +// constants if not defined. +// +//============================================================+ + +/** + * @file + * Try to automatically configure some TCPDF constants if not defined. + * @package com.tecnick.tcpdf + * @version 1.0.000 + */ + +// DOCUMENT_ROOT fix for IIS Webserver +if ((!isset($_SERVER['DOCUMENT_ROOT'])) OR (empty($_SERVER['DOCUMENT_ROOT']))) { + if(isset($_SERVER['SCRIPT_FILENAME'])) { + $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr($_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF']))); + } elseif(isset($_SERVER['PATH_TRANSLATED'])) { + $_SERVER['DOCUMENT_ROOT'] = str_replace( '\\', '/', substr(str_replace('\\\\', '\\', $_SERVER['PATH_TRANSLATED']), 0, 0-strlen($_SERVER['PHP_SELF']))); + } else { + // define here your DOCUMENT_ROOT path if the previous fails (e.g. '/var/www') + $_SERVER['DOCUMENT_ROOT'] = '/'; + } +} +$_SERVER['DOCUMENT_ROOT'] = str_replace('//', '/', $_SERVER['DOCUMENT_ROOT']); +if (substr($_SERVER['DOCUMENT_ROOT'], -1) != '/') { + $_SERVER['DOCUMENT_ROOT'] .= '/'; +} + +// Load main configuration file only if the K_TCPDF_EXTERNAL_CONFIG constant is set to false. +if (!defined('K_TCPDF_EXTERNAL_CONFIG') OR !K_TCPDF_EXTERNAL_CONFIG) { + // define a list of default config files in order of priority + $tcpdf_config_files = array(dirname(__FILE__).'/config/tcpdf_config.php', '/etc/php-tcpdf/tcpdf_config.php', '/etc/tcpdf/tcpdf_config.php', '/etc/tcpdf_config.php'); + foreach ($tcpdf_config_files as $tcpdf_config) { + if (@file_exists($tcpdf_config) AND is_readable($tcpdf_config)) { + require_once($tcpdf_config); + break; + } + } +} + +if (!defined('K_PATH_MAIN')) { + define ('K_PATH_MAIN', dirname(__FILE__).'/'); +} + +if (!defined('K_PATH_FONTS')) { + define ('K_PATH_FONTS', K_PATH_MAIN.'fonts/'); +} + +if (!defined('K_PATH_URL')) { + $k_path_url = K_PATH_MAIN; // default value for console mode + if (isset($_SERVER['HTTP_HOST']) AND (!empty($_SERVER['HTTP_HOST']))) { + if(isset($_SERVER['HTTPS']) AND (!empty($_SERVER['HTTPS'])) AND (strtolower($_SERVER['HTTPS']) != 'off')) { + $k_path_url = 'https://'; + } else { + $k_path_url = 'http://'; + } + $k_path_url .= $_SERVER['HTTP_HOST']; + $k_path_url .= str_replace( '\\', '/', substr(K_PATH_MAIN, (strlen($_SERVER['DOCUMENT_ROOT']) - 1))); + } + define ('K_PATH_URL', $k_path_url); +} + +if (!defined('K_PATH_IMAGES')) { + $tcpdf_images_dirs = array(K_PATH_MAIN.'examples/images/', K_PATH_MAIN.'images/', '/usr/share/doc/php-tcpdf/examples/images/', '/usr/share/doc/tcpdf/examples/images/', '/usr/share/doc/php/tcpdf/examples/images/', '/var/www/tcpdf/images/', '/var/www/html/tcpdf/images/', '/usr/local/apache2/htdocs/tcpdf/images/', K_PATH_MAIN); + foreach ($tcpdf_images_dirs as $tcpdf_images_path) { + if (@file_exists($tcpdf_images_path)) { + break; + } + } + define ('K_PATH_IMAGES', $tcpdf_images_path); +} + +if (!defined('PDF_HEADER_LOGO')) { + $tcpdf_header_logo = ''; + if (@file_exists(K_PATH_IMAGES.'tcpdf_logo.jpg')) { + $tcpdf_header_logo = 'tcpdf_logo.jpg'; + } + define ('PDF_HEADER_LOGO', $tcpdf_header_logo); +} + +if (!defined('PDF_HEADER_LOGO_WIDTH')) { + if (!empty($tcpdf_header_logo)) { + define ('PDF_HEADER_LOGO_WIDTH', 30); + } else { + define ('PDF_HEADER_LOGO_WIDTH', 0); + } +} + +if (!defined('K_PATH_CACHE')) { + $K_PATH_CACHE = ini_get('upload_tmp_dir') ? ini_get('upload_tmp_dir') : sys_get_temp_dir(); + if (substr($K_PATH_CACHE, -1) != '/') { + $K_PATH_CACHE .= '/'; + } + define ('K_PATH_CACHE', $K_PATH_CACHE); +} + +if (!defined('K_BLANK_IMAGE')) { + define ('K_BLANK_IMAGE', '_blank.png'); +} + +if (!defined('PDF_PAGE_FORMAT')) { + define ('PDF_PAGE_FORMAT', 'A4'); +} + +if (!defined('PDF_PAGE_ORIENTATION')) { + define ('PDF_PAGE_ORIENTATION', 'P'); +} + +if (!defined('PDF_CREATOR')) { + define ('PDF_CREATOR', 'TCPDF'); +} + +if (!defined('PDF_AUTHOR')) { + define ('PDF_AUTHOR', 'TCPDF'); +} + +if (!defined('PDF_HEADER_TITLE')) { + define ('PDF_HEADER_TITLE', 'TCPDF Example'); +} + +if (!defined('PDF_HEADER_STRING')) { + define ('PDF_HEADER_STRING', "by Nicola Asuni - Tecnick.com\nwww.tcpdf.org"); +} + +if (!defined('PDF_UNIT')) { + define ('PDF_UNIT', 'mm'); +} + +if (!defined('PDF_MARGIN_HEADER')) { + define ('PDF_MARGIN_HEADER', 5); +} + +if (!defined('PDF_MARGIN_FOOTER')) { + define ('PDF_MARGIN_FOOTER', 10); +} + +if (!defined('PDF_MARGIN_TOP')) { + define ('PDF_MARGIN_TOP', 27); +} + +if (!defined('PDF_MARGIN_BOTTOM')) { + define ('PDF_MARGIN_BOTTOM', 25); +} + +if (!defined('PDF_MARGIN_LEFT')) { + define ('PDF_MARGIN_LEFT', 15); +} + +if (!defined('PDF_MARGIN_RIGHT')) { + define ('PDF_MARGIN_RIGHT', 15); +} + +if (!defined('PDF_FONT_NAME_MAIN')) { + define ('PDF_FONT_NAME_MAIN', 'helvetica'); +} + +if (!defined('PDF_FONT_SIZE_MAIN')) { + define ('PDF_FONT_SIZE_MAIN', 10); +} + +if (!defined('PDF_FONT_NAME_DATA')) { + define ('PDF_FONT_NAME_DATA', 'helvetica'); +} + +if (!defined('PDF_FONT_SIZE_DATA')) { + define ('PDF_FONT_SIZE_DATA', 8); +} + +if (!defined('PDF_FONT_MONOSPACED')) { + define ('PDF_FONT_MONOSPACED', 'courier'); +} + +if (!defined('PDF_IMAGE_SCALE_RATIO')) { + define ('PDF_IMAGE_SCALE_RATIO', 1.25); +} + +if (!defined('HEAD_MAGNIFICATION')) { + define('HEAD_MAGNIFICATION', 1.1); +} + +if (!defined('K_CELL_HEIGHT_RATIO')) { + define('K_CELL_HEIGHT_RATIO', 1.25); +} + +if (!defined('K_TITLE_MAGNIFICATION')) { + define('K_TITLE_MAGNIFICATION', 1.3); +} + +if (!defined('K_SMALL_RATIO')) { + define('K_SMALL_RATIO', 2/3); +} + +if (!defined('K_THAI_TOPCHARS')) { + define('K_THAI_TOPCHARS', true); +} + +if (!defined('K_TCPDF_CALLS_IN_HTML')) { + define('K_TCPDF_CALLS_IN_HTML', true); +} + +if (!defined('K_TCPDF_THROW_EXCEPTION_ERROR')) { + define('K_TCPDF_THROW_EXCEPTION_ERROR', false); +} + +if (!defined('K_TIMEZONE')) { + define('K_TIMEZONE', @date_default_timezone_get()); +} +date_default_timezone_set(K_TIMEZONE); + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/mpdf/classes/barcode.php b/inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_1d.php similarity index 53% rename from inc/3rdparty/libraries/mpdf/classes/barcode.php rename to inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_1d.php index 9a230f0e1..09dfaf4d1 100644 --- a/inc/3rdparty/libraries/mpdf/classes/barcode.php +++ b/inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_1d.php @@ -1,379 +1,436 @@ . -// -// See LICENSE.TXT file for more information. -// ---------------------------------------------------------------------------- +// Last Update : 2014-05-20 +// Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com +// License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) +// ------------------------------------------------------------------- +// Copyright (C) 2008-2014 Nicola Asuni - Tecnick.com LTD // -// Description : PHP class to creates array representations for +// This file is part of TCPDF software library. +// +// TCPDF is free software: you can redistribute it and/or modify it +// under the terms of the GNU Lesser General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// TCPDF is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with TCPDF. If not, see . +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : PHP class to creates array representations for // common 1D barcodes to be used with TCPDF. // -// Author: Nicola Asuni -// -// (c) Copyright: -// Nicola Asuni -// Tecnick.com S.r.l. -// Via della Pace, 11 -// 09044 Quartucciu (CA) -// ITALY -// www.tecnick.com -// info@tecnick.com //============================================================+ -class PDFBarcode { - +/** + * @file + * PHP class to creates array representations for common 1D barcodes to be used with TCPDF. + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.026 + */ + +/** + * @class TCPDFBarcode + * PHP class to creates array representations for common 1D barcodes to be used with TCPDF (http://www.tcpdf.org).
      + * @package com.tecnick.tcpdf + * @version 1.0.026 + * @author Nicola Asuni + */ +class TCPDFBarcode { + + /** + * Array representation of barcode. + * @protected + */ protected $barcode_array; - protected $gapwidth; - protected $print_ratio; - protected $daft; - - public function __construct() { + /** + * This is the class constructor. + * Return an array representations for common 1D barcodes:
        + *
      • $arrcode['code'] code to be printed on text label
      • + *
      • $arrcode['maxh'] max barcode height
      • + *
      • $arrcode['maxw'] max barcode width
      • + *
      • $arrcode['bcode'][$k] single bar or space in $k position
      • + *
      • $arrcode['bcode'][$k]['t'] bar type: true = bar, false = space.
      • + *
      • $arrcode['bcode'][$k]['w'] bar width in units.
      • + *
      • $arrcode['bcode'][$k]['h'] bar height in units.
      • + *
      • $arrcode['bcode'][$k]['p'] bar top position (0 = top, 1 = middle)
      + * @param $code (string) code to print + * @param $type (string) type of barcode:
      • C39 : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
      • C39+ : CODE 39 with checksum
      • C39E : CODE 39 EXTENDED
      • C39E+ : CODE 39 EXTENDED + CHECKSUM
      • C93 : CODE 93 - USS-93
      • S25 : Standard 2 of 5
      • S25+ : Standard 2 of 5 + CHECKSUM
      • I25 : Interleaved 2 of 5
      • I25+ : Interleaved 2 of 5 + CHECKSUM
      • C128 : CODE 128
      • C128A : CODE 128 A
      • C128B : CODE 128 B
      • C128C : CODE 128 C
      • EAN2 : 2-Digits UPC-Based Extention
      • EAN5 : 5-Digits UPC-Based Extention
      • EAN8 : EAN 8
      • EAN13 : EAN 13
      • UPCA : UPC-A
      • UPCE : UPC-E
      • MSI : MSI (Variation of Plessey code)
      • MSI+ : MSI + CHECKSUM (modulo 11)
      • POSTNET : POSTNET
      • PLANET : PLANET
      • RMS4CC : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
      • KIX : KIX (Klant index - Customer index)
      • IMB: Intelligent Mail Barcode - Onecode - USPS-B-3200
      • CODABAR : CODABAR
      • CODE11 : CODE 11
      • PHARMA : PHARMACODE
      • PHARMA2T : PHARMACODE TWO-TRACKS
      + * @public + */ + public function __construct($code, $type) { + $this->setBarcode($code, $type); } - - public function getBarcodeArray($code, $type, $pr='') { - $this->setBarcode($code, $type, $pr); + + /** + * Return an array representations of barcode. + * @return array + * @public + */ + public function getBarcodeArray() { return $this->barcode_array; } - public function getChecksum($code, $type) { - $this->setBarcode($code, $type); - if (!$this->barcode_array) { return ''; } - else { return $this->barcode_array['checkdigit']; } + + /** + * Send barcode as SVG image object to the standard output. + * @param $w (int) Minimum width of a single bar in user units. + * @param $h (int) Height of barcode in user units. + * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent). + * @public + */ + public function getBarcodeSVG($w=2, $h=30, $color='black') { + // send headers + $code = $this->getBarcodeSVGcode($w, $h, $color); + header('Content-Type: application/svg+xml'); + header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1 + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + header('Content-Disposition: inline; filename="'.md5($code).'.svg";'); + //header('Content-Length: '.strlen($code)); + echo $code; } - public function setBarcode($code, $type, $pr='') { - $this->print_ratio = 1; + /** + * Return a SVG string representation of barcode. + * @param $w (int) Minimum width of a single bar in user units. + * @param $h (int) Height of barcode in user units. + * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent). + * @return string SVG code. + * @public + */ + public function getBarcodeSVGcode($w=2, $h=30, $color='black') { + // replace table for special characters + $repstr = array("\0" => '', '&' => '&', '<' => '<', '>' => '>'); + $svg = '<'.'?'.'xml version="1.0" standalone="no"'.'?'.'>'."\n"; + $svg .= ''."\n"; + $svg .= ''."\n"; + $svg .= "\t".''.strtr($this->barcode_array['code'], $repstr).''."\n"; + $svg .= "\t".''."\n"; + // print bars + $x = 0; + foreach ($this->barcode_array['bcode'] as $k => $v) { + $bw = round(($v['w'] * $w), 3); + $bh = round(($v['h'] * $h / $this->barcode_array['maxh']), 3); + if ($v['t']) { + $y = round(($v['p'] * $h / $this->barcode_array['maxh']), 3); + // draw a vertical bar + $svg .= "\t\t".''."\n"; + } + $x += $bw; + } + $svg .= "\t".''."\n"; + $svg .= ''."\n"; + return $svg; + } + + /** + * Return an HTML representation of barcode. + * @param $w (int) Width of a single bar element in pixels. + * @param $h (int) Height of a single bar element in pixels. + * @param $color (string) Foreground color for bar elements (background is transparent). + * @return string HTML code. + * @public + */ + public function getBarcodeHTML($w=2, $h=30, $color='black') { + $html = '
      '."\n"; + // print bars + $x = 0; + foreach ($this->barcode_array['bcode'] as $k => $v) { + $bw = round(($v['w'] * $w), 3); + $bh = round(($v['h'] * $h / $this->barcode_array['maxh']), 3); + if ($v['t']) { + $y = round(($v['p'] * $h / $this->barcode_array['maxh']), 3); + // draw a vertical bar + $html .= '
       
      '."\n"; + } + $x += $bw; + } + $html .= '
      '."\n"; + return $html; + } + + /** + * Send a PNG image representation of barcode (requires GD or Imagick library). + * @param $w (int) Width of a single bar element in pixels. + * @param $h (int) Height of a single bar element in pixels. + * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent). + * @public + */ + public function getBarcodePNG($w=2, $h=30, $color=array(0,0,0)) { + $data = $this->getBarcodePngData($w, $h, $color); + // send headers + header('Content-Type: image/png'); + header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1 + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + //header('Content-Length: '.strlen($data)); + echo $data; + } + + /** + * Return a PNG image representation of barcode (requires GD or Imagick library). + * @param $w (int) Width of a single bar element in pixels. + * @param $h (int) Height of a single bar element in pixels. + * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent). + * @return image or false in case of error. + * @public + */ + public function getBarcodePngData($w=2, $h=30, $color=array(0,0,0)) { + // calculate image size + $width = ($this->barcode_array['maxw'] * $w); + $height = $h; + if (function_exists('imagecreate')) { + // GD library + $imagick = false; + $png = imagecreate($width, $height); + $bgcol = imagecolorallocate($png, 255, 255, 255); + imagecolortransparent($png, $bgcol); + $fgcol = imagecolorallocate($png, $color[0], $color[1], $color[2]); + } elseif (extension_loaded('imagick')) { + $imagick = true; + $bgcol = new imagickpixel('rgb(255,255,255'); + $fgcol = new imagickpixel('rgb('.$color[0].','.$color[1].','.$color[2].')'); + $png = new Imagick(); + $png->newImage($width, $height, 'none', 'png'); + $bar = new imagickdraw(); + $bar->setfillcolor($fgcol); + } else { + return false; + } + // print bars + $x = 0; + foreach ($this->barcode_array['bcode'] as $k => $v) { + $bw = round(($v['w'] * $w), 3); + $bh = round(($v['h'] * $h / $this->barcode_array['maxh']), 3); + if ($v['t']) { + $y = round(($v['p'] * $h / $this->barcode_array['maxh']), 3); + // draw a vertical bar + if ($imagick) { + $bar->rectangle($x, $y, ($x + $bw - 1), ($y + $bh - 1)); + } else { + imagefilledrectangle($png, $x, $y, ($x + $bw - 1), ($y + $bh - 1), $fgcol); + } + } + $x += $bw; + } + if ($imagick) { + $png->drawimage($bar); + return $png; + } else { + ob_start(); + imagepng($png); + $imagedata = ob_get_clean(); + imagedestroy($png); + return $imagedata; + } + } + + /** + * Set the barcode. + * @param $code (string) code to print + * @param $type (string) type of barcode:
      • C39 : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
      • C39+ : CODE 39 with checksum
      • C39E : CODE 39 EXTENDED
      • C39E+ : CODE 39 EXTENDED + CHECKSUM
      • C93 : CODE 93 - USS-93
      • S25 : Standard 2 of 5
      • S25+ : Standard 2 of 5 + CHECKSUM
      • I25 : Interleaved 2 of 5
      • I25+ : Interleaved 2 of 5 + CHECKSUM
      • C128 : CODE 128
      • C128A : CODE 128 A
      • C128B : CODE 128 B
      • C128C : CODE 128 C
      • EAN2 : 2-Digits UPC-Based Extention
      • EAN5 : 5-Digits UPC-Based Extention
      • EAN8 : EAN 8
      • EAN13 : EAN 13
      • UPCA : UPC-A
      • UPCE : UPC-E
      • MSI : MSI (Variation of Plessey code)
      • MSI+ : MSI + CHECKSUM (modulo 11)
      • POSTNET : POSTNET
      • PLANET : PLANET
      • RMS4CC : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
      • KIX : KIX (Klant index - Customer index)
      • IMB: Intelligent Mail Barcode - Onecode - USPS-B-3200
      • CODABAR : CODABAR
      • CODE11 : CODE 11
      • PHARMA : PHARMACODE
      • PHARMA2T : PHARMACODE TWO-TRACKS
      + * @return array barcode array + * @public + */ + public function setBarcode($code, $type) { switch (strtoupper($type)) { - case 'ISBN': - case 'ISSN': - case 'EAN13': { // EAN 13 - $arrcode = $this->barcode_eanupc($code, 13); - $arrcode['lightmL'] = 11; // LEFT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org) - $arrcode['nom-H'] = 25.93; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org) + case 'C39': { // CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. + $arrcode = $this->barcode_code39($code, false, false); break; } - case 'UPCA': { // UPC-A - $arrcode = $this->barcode_eanupc($code, 12); - $arrcode['lightmL'] = 9; // LEFT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['lightmR'] = 9; // RIGHT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org) - $arrcode['nom-H'] = 25.91; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org) + case 'C39+': { // CODE 39 with checksum + $arrcode = $this->barcode_code39($code, false, true); break; } - case 'UPCE': { // UPC-E - $arrcode = $this->barcode_eanupc($code, 6); - $arrcode['lightmL'] = 9; // LEFT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org) - $arrcode['nom-H'] = 25.93; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org) + case 'C39E': { // CODE 39 EXTENDED + $arrcode = $this->barcode_code39($code, true, false); break; } - case 'EAN8': { // EAN 8 - $arrcode = $this->barcode_eanupc($code, 8); - $arrcode['lightmL'] = 7; // LEFT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (http://www.gs1uk.org) - $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org) - $arrcode['nom-H'] = 21.64; // Nominal bar height in mm incl. numerals (http://www.gs1uk.org) + case 'C39E+': { // CODE 39 EXTENDED + CHECKSUM + $arrcode = $this->barcode_code39($code, true, true); + break; + } + case 'C93': { // CODE 93 - USS-93 + $arrcode = $this->barcode_code93($code); + break; + } + case 'S25': { // Standard 2 of 5 + $arrcode = $this->barcode_s25($code, false); + break; + } + case 'S25+': { // Standard 2 of 5 + CHECKSUM + $arrcode = $this->barcode_s25($code, true); + break; + } + case 'I25': { // Interleaved 2 of 5 + $arrcode = $this->barcode_i25($code, false); + break; + } + case 'I25+': { // Interleaved 2 of 5 + CHECKSUM + $arrcode = $this->barcode_i25($code, true); + break; + } + case 'C128': { // CODE 128 + $arrcode = $this->barcode_c128($code, ''); + break; + } + case 'C128A': { // CODE 128 A + $arrcode = $this->barcode_c128($code, 'A'); + break; + } + case 'C128B': { // CODE 128 B + $arrcode = $this->barcode_c128($code, 'B'); + break; + } + case 'C128C': { // CODE 128 C + $arrcode = $this->barcode_c128($code, 'C'); break; } case 'EAN2': { // 2-Digits UPC-Based Extention $arrcode = $this->barcode_eanext($code, 2); - $arrcode['lightmL'] = 7; // LEFT light margin = x X-dim (estimated) - $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (estimated) - $arrcode['sepM'] = 9; // SEPARATION margin = x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm) - $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org) - $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined break; } case 'EAN5': { // 5-Digits UPC-Based Extention $arrcode = $this->barcode_eanext($code, 5); - $arrcode['lightmL'] = 7; // LEFT light margin = x X-dim (estimated) - $arrcode['lightmR'] = 7; // RIGHT light margin = x X-dim (estimated) - $arrcode['sepM'] = 9; // SEPARATION margin = x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm) - $arrcode['nom-X'] = 0.33; // Nominal value for X-dim in mm (http://www.gs1uk.org) - $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined break; } - - case 'IMB': { // IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 - $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) - $bpi = 22; // Bars per inch - // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch - $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim; - $this->daft = array('D'=>2, 'A'=>2, 'F'=>3, 'T'=>1); // Descender; Ascender; Full; Tracker bar heights - $arrcode = $this->barcode_imb($code); - $arrcode['nom-X'] = $xdim ; - $arrcode['nom-H'] = 3.68; // Nominal value for Height of Full bar in mm (spec.) - // USPS-B-3200 Revision C = 4.623 - // USPS-B-3200 Revision E = 3.68 - $arrcode['quietL'] = 3.175; // LEFT Quiet margin = mm (spec.) - $arrcode['quietR'] = 3.175; // RIGHT Quiet margin = mm (spec.) - $arrcode['quietTB'] = 0.711; // TOP/BOTTOM Quiet margin = mm (spec.) + case 'EAN8': { // EAN 8 + $arrcode = $this->barcode_eanupc($code, 8); break; } - case 'RM4SCC': { // RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) - $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) - $bpi = 22; // Bars per inch - // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch - $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim; - $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2); // Descender; Ascender; Full; Tracker bar heights - $arrcode = $this->barcode_rm4scc($code, false); - $arrcode['nom-X'] = $xdim ; - $arrcode['nom-H'] = 5.0; // Nominal value for Height of Full bar in mm (spec.) - $arrcode['quietL'] = 2; // LEFT Quiet margin = mm (spec.) - $arrcode['quietR'] = 2; // RIGHT Quiet margin = mm (spec.) - $arrcode['quietTB'] = 2; // TOP/BOTTOM Quiet margin = mm (spec?) + case 'EAN13': { // EAN 13 + $arrcode = $this->barcode_eanupc($code, 13); break; } - case 'KIX': { // KIX (Klant index - Customer index) - $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) - $bpi = 22; // Bars per inch - // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch - $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim; - $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2); // Descender; Ascender; Full; Tracker bar heights - $arrcode = $this->barcode_rm4scc($code, true); - $arrcode['nom-X'] = $xdim ; - $arrcode['nom-H'] = 5.0; // Nominal value for Height of Full bar in mm (? spec.) - $arrcode['quietL'] = 2; // LEFT Quiet margin = mm (spec.) - $arrcode['quietR'] = 2; // RIGHT Quiet margin = mm (spec.) - $arrcode['quietTB'] = 2; // TOP/BOTTOM Quiet margin = mm (spec.) + case 'UPCA': { // UPC-A + $arrcode = $this->barcode_eanupc($code, 12); + break; + } + case 'UPCE': { // UPC-E + $arrcode = $this->barcode_eanupc($code, 6); + break; + } + case 'MSI': { // MSI (Variation of Plessey code) + $arrcode = $this->barcode_msi($code, false); + break; + } + case 'MSI+': { // MSI + CHECKSUM (modulo 11) + $arrcode = $this->barcode_msi($code, true); break; } case 'POSTNET': { // POSTNET - $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) - $bpi = 22; // Bars per inch - // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch - $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim; $arrcode = $this->barcode_postnet($code, false); - $arrcode['nom-X'] = $xdim ; - $arrcode['nom-H'] = 3.175; // Nominal value for Height of Full bar in mm (spec.) - $arrcode['quietL'] = 3.175; // LEFT Quiet margin = mm (?spec.) - $arrcode['quietR'] = 3.175; // RIGHT Quiet margin = mm (?spec.) - $arrcode['quietTB'] = 1.016; // TOP/BOTTOM Quiet margin = mm (?spec.) break; } case 'PLANET': { // PLANET - $xdim = 0.508; // Nominal value for X-dim (bar width) in mm (spec.) - $bpi = 22; // Bars per inch - // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch - $this->gapwidth = ((25.4/$bpi) - $xdim)/$xdim; $arrcode = $this->barcode_postnet($code, true); - $arrcode['nom-X'] = $xdim ; - $arrcode['nom-H'] = 3.175; // Nominal value for Height of Full bar in mm (spec.) - $arrcode['quietL'] = 3.175; // LEFT Quiet margin = mm (?spec.) - $arrcode['quietR'] = 3.175; // RIGHT Quiet margin = mm (?spec.) - $arrcode['quietTB'] = 1.016; // TOP/BOTTOM Quiet margin = mm (?spec.) break; } - - case 'C93': { // CODE 93 - USS-93 - $arrcode = $this->barcode_code93($code); - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + case 'RMS4CC': { // RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) + $arrcode = $this->barcode_rms4cc($code, false); break; } - case 'CODE11': { // CODE 11 - if ($pr > 0) { $this->print_ratio = $pr; } - else { $this->print_ratio = 3; } // spec: Pr= 1:2.24 - 1:3.5 + case 'KIX': { // KIX (Klant index - Customer index) + $arrcode = $this->barcode_rms4cc($code, true); + break; + } + case 'IMB': { // IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 + $arrcode = $this->barcode_imb($code); + break; + } + case 'CODABAR': { // CODABAR + $arrcode = $this->barcode_codabar($code); + break; + } + case 'CODE11': { // CODE 11 $arrcode = $this->barcode_code11($code); - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) break; } - case 'MSI': // MSI (Variation of Plessey code) - case 'MSI+': { // MSI + CHECKSUM (modulo 11) - if (strtoupper($type)=='MSI') { $arrcode = $this->barcode_msi($code, false); } - if (strtoupper($type)=='MSI+') { $arrcode = $this->barcode_msi($code, true); } - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 12; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 12; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) + case 'PHARMA': { // PHARMACODE + $arrcode = $this->barcode_pharmacode($code); break; } - case 'CODABAR': { // CODABAR - if ($pr > 0) { $this->print_ratio = $pr; } - else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50) - if (strtoupper($type)=='CODABAR') { $arrcode = $this->barcode_codabar($code); } - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) - break; - } - case 'C128A': // CODE 128 A - case 'C128B': // CODE 128 B - case 'C128C': // CODE 128 C - case 'EAN128A': // EAN 128 A - case 'EAN128B': // EAN 128 B - case 'EAN128C': { // EAN 128 C - if (strtoupper($type)=='C128A') { $arrcode = $this->barcode_c128($code, 'A'); } - if (strtoupper($type)=='C128B') { $arrcode = $this->barcode_c128($code, 'B'); } - if (strtoupper($type)=='C128C') { $arrcode = $this->barcode_c128($code, 'C'); } - if (strtoupper($type)=='EAN128A') { $arrcode = $this->barcode_c128($code, 'A', true); } - if (strtoupper($type)=='EAN128B') { $arrcode = $this->barcode_c128($code, 'B', true); } - if (strtoupper($type)=='EAN128C') { $arrcode = $this->barcode_c128($code, 'C', true); } - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) - break; - } - case 'C39': // CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. - case 'C39+': // CODE 39 with checksum - case 'C39E': // CODE 39 EXTENDED - case 'C39E+': { // CODE 39 EXTENDED + CHECKSUM - if ($pr > 0) { $this->print_ratio = $pr; } - else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50) - $code = str_replace(chr(194).chr(160), ' ', $code); // mPDF 5.3.95 (for utf-8 encoded) - $code = str_replace(chr(160), ' ', $code); // mPDF 5.3.95 (for win-1252) - if (strtoupper($type)=='C39') { $arrcode = $this->barcode_code39($code, false, false); } - if (strtoupper($type)=='C39+') { $arrcode = $this->barcode_code39($code, false, true); } - if (strtoupper($type)=='C39E') { $arrcode = $this->barcode_code39($code, true, false); } - if (strtoupper($type)=='C39E+') { $arrcode = $this->barcode_code39($code, true, true); } - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) - break; - } - case 'S25': // Standard 2 of 5 - case 'S25+': { // Standard 2 of 5 + CHECKSUM - if ($pr > 0) { $this->print_ratio = $pr; } - else { $this->print_ratio = 3; } // spec: Pr=1:3/1:4.5 - if (strtoupper($type)=='S25') { $arrcode = $this->barcode_s25($code, false); } - if (strtoupper($type)=='S25+') { $arrcode = $this->barcode_s25($code, true); } - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) - break; - } - case 'I25': // Interleaved 2 of 5 - case 'I25+': { // Interleaved 2 of 5 + CHECKSUM - if ($pr > 0) { $this->print_ratio = $pr; } - else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50) - if (strtoupper($type)=='I25') { $arrcode = $this->barcode_i25($code, false); } - if (strtoupper($type)=='I25+') { $arrcode = $this->barcode_i25($code, true); } - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 0; // TOP/BOTTOM light margin = x X-dim (non-spec.) - break; - } - case 'I25B': // Interleaved 2 of 5 + Bearer bars - case 'I25B+': { // Interleaved 2 of 5 + CHECKSUM + Bearer bars - if ($pr > 0) { $this->print_ratio = $pr; } - else { $this->print_ratio = 2.5; } // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50) - if (strtoupper($type)=='I25B') { $arrcode = $this->barcode_i25($code, false); } - if (strtoupper($type)=='I25B+') { $arrcode = $this->barcode_i25($code, true); } - if ($arrcode == false) { break; } - $arrcode['nom-X'] = 0.381; // Nominal value for X-dim (bar width) in mm (2 X min. spec.) - $arrcode['nom-H'] = 10; // Nominal value for Height of Full bar in mm (non-spec.) - $arrcode['lightmL'] = 10; // LEFT light margin = x X-dim (spec.) - $arrcode['lightmR'] = 10; // RIGHT light margin = x X-dim (spec.) - $arrcode['lightTB'] = 2; // TOP/BOTTOM light margin = x X-dim (non-spec.) - used for bearer bars + case 'PHARMA2T': { // PHARMACODE TWO-TRACKS + $arrcode = $this->barcode_pharmacode2t($code); break; } default: { $this->barcode_array = false; + $arrcode = false; + break; } } $this->barcode_array = $arrcode; } - + /** * CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. + * General-purpose code in very wide use world-wide + * @param $code (string) code to represent. + * @param $extended (boolean) if true uses the extended mode. + * @param $checksum (boolean) if true add a checksum to the code. + * @return array barcode representation. + * @protected */ protected function barcode_code39($code, $extended=false, $checksum=false) { - $chr['0'] = '111221211'; - $chr['1'] = '211211112'; - $chr['2'] = '112211112'; - $chr['3'] = '212211111'; - $chr['4'] = '111221112'; - $chr['5'] = '211221111'; - $chr['6'] = '112221111'; - $chr['7'] = '111211212'; - $chr['8'] = '211211211'; - $chr['9'] = '112211211'; - $chr['A'] = '211112112'; - $chr['B'] = '112112112'; - $chr['C'] = '212112111'; - $chr['D'] = '111122112'; - $chr['E'] = '211122111'; - $chr['F'] = '112122111'; - $chr['G'] = '111112212'; - $chr['H'] = '211112211'; - $chr['I'] = '112112211'; - $chr['J'] = '111122211'; - $chr['K'] = '211111122'; - $chr['L'] = '112111122'; - $chr['M'] = '212111121'; - $chr['N'] = '111121122'; - $chr['O'] = '211121121'; - $chr['P'] = '112121121'; - $chr['Q'] = '111111222'; - $chr['R'] = '211111221'; - $chr['S'] = '112111221'; - $chr['T'] = '111121221'; - $chr['U'] = '221111112'; - $chr['V'] = '122111112'; - $chr['W'] = '222111111'; - $chr['X'] = '121121112'; - $chr['Y'] = '221121111'; - $chr['Z'] = '122121111'; - $chr['-'] = '121111212'; - $chr['.'] = '221111211'; - $chr[' '] = '122111211'; - $chr['$'] = '121212111'; - $chr['/'] = '121211121'; - $chr['+'] = '121112121'; - $chr['%'] = '111212121'; - $chr['*'] = '121121211'; - + $chr['0'] = '111331311'; + $chr['1'] = '311311113'; + $chr['2'] = '113311113'; + $chr['3'] = '313311111'; + $chr['4'] = '111331113'; + $chr['5'] = '311331111'; + $chr['6'] = '113331111'; + $chr['7'] = '111311313'; + $chr['8'] = '311311311'; + $chr['9'] = '113311311'; + $chr['A'] = '311113113'; + $chr['B'] = '113113113'; + $chr['C'] = '313113111'; + $chr['D'] = '111133113'; + $chr['E'] = '311133111'; + $chr['F'] = '113133111'; + $chr['G'] = '111113313'; + $chr['H'] = '311113311'; + $chr['I'] = '113113311'; + $chr['J'] = '111133311'; + $chr['K'] = '311111133'; + $chr['L'] = '113111133'; + $chr['M'] = '313111131'; + $chr['N'] = '111131133'; + $chr['O'] = '311131131'; + $chr['P'] = '113131131'; + $chr['Q'] = '111111333'; + $chr['R'] = '311111331'; + $chr['S'] = '113111331'; + $chr['T'] = '111131331'; + $chr['U'] = '331111113'; + $chr['V'] = '133111113'; + $chr['W'] = '333111111'; + $chr['X'] = '131131113'; + $chr['Y'] = '331131111'; + $chr['Z'] = '133131111'; + $chr['-'] = '131111313'; + $chr['.'] = '331111311'; + $chr[' '] = '133111311'; + $chr['$'] = '131313111'; + $chr['/'] = '131311131'; + $chr['+'] = '131113131'; + $chr['%'] = '111313131'; + $chr['*'] = '131131311'; $code = strtoupper($code); if ($extended) { // extended mode @@ -384,17 +441,15 @@ class PDFBarcode { } if ($checksum) { // checksum - $checkdigit = $this->checksum_code39($code); - $code .= $checkdigit ; + $code .= $this->checksum_code39($code); } // add start and stop codes $code = '*'.$code.'*'; - $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); $k = 0; $clen = strlen($code); for ($i = 0; $i < $clen; ++$i) { - $char = $code[$i]; + $char = $code{$i}; if(!isset($chr[$char])) { // invalid character return false; @@ -405,24 +460,24 @@ class PDFBarcode { } else { $t = false; // space } - $x = $chr[$char][$j]; - if ($x == 2) { $w = $this->print_ratio; } - else { $w = 1; } - + $w = $chr[$char]{$j}; $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); $bararray['maxw'] += $w; ++$k; } + // intercharacter gap $bararray['bcode'][$k] = array('t' => false, 'w' => 1, 'h' => 1, 'p' => 0); $bararray['maxw'] += 1; ++$k; } - $bararray['checkdigit'] = $checkdigit; return $bararray; } - + /** * Encode a string to be used for CODE 39 Extended mode. + * @param $code (string) code to represent. + * @return encoded string. + * @protected */ protected function encode_code39_ext($code) { $encode = array( @@ -461,16 +516,19 @@ class PDFBarcode { $code_ext = ''; $clen = strlen($code); for ($i = 0 ; $i < $clen; ++$i) { - if (ord($code[$i]) > 127) { + if (ord($code{$i}) > 127) { return false; } - $code_ext .= $encode[$code[$i]]; + $code_ext .= $encode[$code{$i}]; } return $code_ext; } - + /** * Calculate CODE 39 checksum (modulo 43). + * @param $code (string) code to represent. + * @return char checksum. + * @protected */ protected function checksum_code39($code) { $chars = array( @@ -481,66 +539,69 @@ class PDFBarcode { $sum = 0; $clen = strlen($code); for ($i = 0 ; $i < $clen; ++$i) { - $k = array_keys($chars, $code[$i]); + $k = array_keys($chars, $code{$i}); $sum += $k[0]; } $j = ($sum % 43); return $chars[$j]; } - + /** * CODE 93 - USS-93 * Compact code similar to Code 39 + * @param $code (string) code to represent. + * @return array barcode representation. + * @protected */ protected function barcode_code93($code) { - $chr['0'] = '131112'; - $chr['1'] = '111213'; - $chr['2'] = '111312'; - $chr['3'] = '111411'; - $chr['4'] = '121113'; - $chr['5'] = '121212'; - $chr['6'] = '121311'; - $chr['7'] = '111114'; - $chr['8'] = '131211'; - $chr['9'] = '141111'; - $chr['A'] = '211113'; - $chr['B'] = '211212'; - $chr['C'] = '211311'; - $chr['D'] = '221112'; - $chr['E'] = '221211'; - $chr['F'] = '231111'; - $chr['G'] = '112113'; - $chr['H'] = '112212'; - $chr['I'] = '112311'; - $chr['J'] = '122112'; - $chr['K'] = '132111'; - $chr['L'] = '111123'; - $chr['M'] = '111222'; - $chr['N'] = '111321'; - $chr['O'] = '121122'; - $chr['P'] = '131121'; - $chr['Q'] = '212112'; - $chr['R'] = '212211'; - $chr['S'] = '211122'; - $chr['T'] = '211221'; - $chr['U'] = '221121'; - $chr['V'] = '222111'; - $chr['W'] = '112122'; - $chr['X'] = '112221'; - $chr['Y'] = '122121'; - $chr['Z'] = '123111'; - $chr['-'] = '121131'; - $chr['.'] = '311112'; - $chr[' '] = '311211'; - $chr['$'] = '321111'; - $chr['/'] = '112131'; - $chr['+'] = '113121'; - $chr['%'] = '211131'; + $chr[48] = '131112'; // 0 + $chr[49] = '111213'; // 1 + $chr[50] = '111312'; // 2 + $chr[51] = '111411'; // 3 + $chr[52] = '121113'; // 4 + $chr[53] = '121212'; // 5 + $chr[54] = '121311'; // 6 + $chr[55] = '111114'; // 7 + $chr[56] = '131211'; // 8 + $chr[57] = '141111'; // 9 + $chr[65] = '211113'; // A + $chr[66] = '211212'; // B + $chr[67] = '211311'; // C + $chr[68] = '221112'; // D + $chr[69] = '221211'; // E + $chr[70] = '231111'; // F + $chr[71] = '112113'; // G + $chr[72] = '112212'; // H + $chr[73] = '112311'; // I + $chr[74] = '122112'; // J + $chr[75] = '132111'; // K + $chr[76] = '111123'; // L + $chr[77] = '111222'; // M + $chr[78] = '111321'; // N + $chr[79] = '121122'; // O + $chr[80] = '131121'; // P + $chr[81] = '212112'; // Q + $chr[82] = '212211'; // R + $chr[83] = '211122'; // S + $chr[84] = '211221'; // T + $chr[85] = '221121'; // U + $chr[86] = '222111'; // V + $chr[87] = '112122'; // W + $chr[88] = '112221'; // X + $chr[89] = '122121'; // Y + $chr[90] = '123111'; // Z + $chr[45] = '121131'; // - + $chr[46] = '311112'; // . + $chr[32] = '311211'; // + $chr[36] = '321111'; // $ + $chr[47] = '112131'; // / + $chr[43] = '113121'; // + + $chr[37] = '211131'; // % $chr[128] = '121221'; // ($) $chr[129] = '311121'; // (/) $chr[130] = '122211'; // (+) $chr[131] = '312111'; // (%) - $chr['*'] = '111141'; + $chr[42] = '111141'; // start-stop $code = strtoupper($code); $encode = array( chr(0) => chr(131).'U', chr(1) => chr(128).'A', chr(2) => chr(128).'B', chr(3) => chr(128).'C', @@ -578,21 +639,20 @@ class PDFBarcode { $code_ext = ''; $clen = strlen($code); for ($i = 0 ; $i < $clen; ++$i) { - if (ord($code[$i]) > 127) { + if (ord($code{$i}) > 127) { return false; } - $code_ext .= $encode[$code[$i]]; + $code_ext .= $encode[$code{$i}]; } // checksum - $checkdigit = $this->checksum_code93($code); - $code .= $checkdigit ; + $code_ext .= $this->checksum_code93($code_ext); // add start and stop codes - $code = '*'.$code.'*'; + $code = '*'.$code_ext.'*'; $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); $k = 0; $clen = strlen($code); for ($i = 0; $i < $clen; ++$i) { - $char = $code[$i]; + $char = ord($code{$i}); if(!isset($chr[$char])) { // invalid character return false; @@ -603,7 +663,7 @@ class PDFBarcode { } else { $t = false; // space } - $w = $chr[$char][$j]; + $w = $chr[$char]{$j}; $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); $bararray['maxw'] += $w; ++$k; @@ -611,28 +671,31 @@ class PDFBarcode { } $bararray['bcode'][$k] = array('t' => true, 'w' => 1, 'h' => 1, 'p' => 0); $bararray['maxw'] += 1; - ++$k; - $bararray['checkdigit'] = $checkdigit; + ++$k; return $bararray; } - + /** * Calculate CODE 93 checksum (modulo 47). + * @param $code (string) code to represent. + * @return string checksum code. + * @protected */ protected function checksum_code93($code) { $chars = array( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', - 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%'); + 'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%', + '<', '=', '>', '?'); // translate special characters - $code = strtr($code, chr(128).chr(129).chr(130).chr(131), '$/+%'); + $code = strtr($code, chr(128).chr(131).chr(129).chr(130), '<=>?'); $len = strlen($code); // calculate check digit C $p = 1; $check = 0; for ($i = ($len - 1); $i >= 0; --$i) { - $k = array_keys($chars, $code[$i]); + $k = array_keys($chars, $code{$i}); $check += ($k[0] * $p); ++$p; if ($p > 20) { @@ -646,7 +709,7 @@ class PDFBarcode { $p = 1; $check = 0; for ($i = $len; $i >= 0; --$i) { - $k = array_keys($chars, $code[$i]); + $k = array_keys($chars, $code{$i}); $check += ($k[0] * $p); ++$p; if ($p > 15) { @@ -655,21 +718,27 @@ class PDFBarcode { } $check %= 47; $k = $chars[$check]; - return $c.$k; + $checksum = $c.$k; + // resto respecial characters + $checksum = strtr($checksum, '<=>?', chr(128).chr(131).chr(129).chr(130)); + return $checksum; } - + /** * Checksum for standard 2 of 5 barcodes. + * @param $code (string) code to process. + * @return int checksum. + * @protected */ protected function checksum_s25($code) { $len = strlen($code); $sum = 0; for ($i = 0; $i < $len; $i+=2) { - $sum += $code[$i]; + $sum += $code{$i}; } $sum *= 3; for ($i = 1; $i < $len; $i+=2) { - $sum += ($code[$i]); + $sum += ($code{$i}); } $r = $sum % 10; if($r > 0) { @@ -677,11 +746,15 @@ class PDFBarcode { } return $r; } - + /** * MSI. - * Variation of Plessey code, with similar applications + * Variation of Plessey code, with similar applications * Contains digits (0 to 9) and encodes the data only in the width of bars. + * @param $code (string) code to represent. + * @param $checksum (boolean) if true add a checksum to the code (modulo 11) + * @return array barcode representation. + * @protected */ protected function barcode_msi($code, $checksum=false) { $chr['0'] = '100100100100'; @@ -706,7 +779,7 @@ class PDFBarcode { $p = 2; $check = 0; for ($i = ($clen - 1); $i >= 0; --$i) { - $check += (hexdec($code[$i]) * $p); + $check += (hexdec($code{$i}) * $p); ++$p; if ($p > 7) { $p = 2; @@ -717,28 +790,30 @@ class PDFBarcode { $check = 11 - $check; } $code .= $check; - $checkdigit = $check; } $seq = '110'; // left guard $clen = strlen($code); for ($i = 0; $i < $clen; ++$i) { - $digit = $code[$i]; + $digit = $code{$i}; if (!isset($chr[$digit])) { // invalid character return false; } $seq .= $chr[$digit]; - } + } $seq .= '1001'; // right guard $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); - $bararray['checkdigit'] = $checkdigit; return $this->binseq_to_array($seq, $bararray); } - + /** * Standard 2 of 5 barcodes. * Used in airline ticket marking, photofinishing * Contains digits (0 to 9) and encodes the data only in the width of bars. + * @param $code (string) code to represent. + * @param $checksum (boolean) if true add a checksum to the code + * @return array barcode representation. + * @protected */ protected function barcode_s25($code, $checksum=false) { $chr['0'] = '10101110111010'; @@ -753,8 +828,7 @@ class PDFBarcode { $chr['9'] = '10111010111010'; if ($checksum) { // add checksum - $checkdigit = $this->checksum_s25($code); - $code .= $checkdigit ; + $code .= $this->checksum_s25($code); } if((strlen($code) % 2) != 0) { // add leading zero if code-length is odd @@ -763,21 +837,25 @@ class PDFBarcode { $seq = '11011010'; $clen = strlen($code); for ($i = 0; $i < $clen; ++$i) { - $digit = $code[$i]; + $digit = $code{$i}; if (!isset($chr[$digit])) { // invalid character return false; } $seq .= $chr[$digit]; - } + } $seq .= '1101011'; $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); - $bararray['checkdigit'] = $checkdigit; return $this->binseq_to_array($seq, $bararray); } - + /** - * Convert binary barcode sequence to barcode array + * Convert binary barcode sequence to TCPDF barcode array. + * @param $seq (string) barcode as binary sequence. + * @param $bararray (array) barcode array. + * òparam array $bararray TCPDF barcode array to fill up + * @return array barcode representation. + * @protected */ protected function binseq_to_array($seq, $bararray) { $len = strlen($seq); @@ -785,8 +863,8 @@ class PDFBarcode { $k = 0; for ($i = 0; $i < $len; ++$i) { $w += 1; - if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq[$i] != $seq[($i+1)]))) { - if ($seq[$i] == '1') { + if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq{$i} != $seq{($i+1)}))) { + if ($seq{$i} == '1') { $t = true; // bar } else { $t = false; // space @@ -799,11 +877,15 @@ class PDFBarcode { } return $bararray; } - + /** * Interleaved 2 of 5 barcodes. * Compact numeric code, widely used in industry, air cargo * Contains digits (0 to 9) and encodes the data in the width of both bars and spaces. + * @param $code (string) code to represent. + * @param $checksum (boolean) if true add a checksum to the code + * @return array barcode representation. + * @protected */ protected function barcode_i25($code, $checksum=false) { $chr['0'] = '11221'; @@ -820,8 +902,7 @@ class PDFBarcode { $chr['Z'] = '21'; if ($checksum) { // add checksum - $checkdigit = $this->checksum_s25($code); - $code .= $checkdigit ; + $code .= $this->checksum_s25($code); } if((strlen($code) % 2) != 0) { // add leading zero if code-length is odd @@ -829,13 +910,13 @@ class PDFBarcode { } // add start and stop codes $code = 'AA'.strtolower($code).'ZA'; - + $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); $k = 0; $clen = strlen($code); for ($i = 0; $i < $clen; $i = ($i + 2)) { - $char_bar = $code[$i]; - $char_space = $code[$i+1]; + $char_bar = $code{$i}; + $char_space = $code{$i+1}; if((!isset($chr[$char_bar])) OR (!isset($chr[$char_space]))) { // invalid character return false; @@ -844,7 +925,7 @@ class PDFBarcode { $seq = ''; $chrlen = strlen($chr[$char_bar]); for ($s = 0; $s < $chrlen; $s++){ - $seq .= $chr[$char_bar][$s] . $chr[$char_space][$s]; + $seq .= $chr[$char_bar]{$s} . $chr[$char_space]{$s}; } $seqlen = strlen($seq); for ($j = 0; $j < $seqlen; ++$j) { @@ -853,25 +934,24 @@ class PDFBarcode { } else { $t = false; // space } - $x = $seq[$j]; - if ($x == 2) { $w = $this->print_ratio; } - else { $w = 1; } - + $w = $seq{$j}; $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); $bararray['maxw'] += $w; ++$k; } } - $bararray['checkdigit'] = $checkdigit; return $bararray; } - + /** - * C128 barcodes. + * C128 barcodes. * Very capable code, excellent density, high reliability; in very wide use world-wide + * @param $code (string) code to represent. + * @param $type (string) barcode type: A, B, C or empty for automatic switch (AUTO mode) + * @return array barcode representation. + * @protected */ - protected function barcode_c128($code, $type='B', $ean=false) { - $code = strcode2utf($code); // mPDF 5.7.1 Allows e.g. + protected function barcode_c128($code, $type='') { $chr = array( '212222', /* 00 */ '222122', /* 01 */ @@ -977,100 +1057,271 @@ class PDFBarcode { '311141', /* 101 */ '411131', /* 102 */ '211412', /* 103 START A */ - '211214', /* 104 START B */ - '211232', /* 105 START C */ + '211214', /* 104 START B */ + '211232', /* 105 START C */ '233111', /* STOP */ '200000' /* END */ ); - $keys = ''; + // ASCII characters for code A (ASCII 00 - 95) + $keys_a = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_'; + $keys_a .= chr(0).chr(1).chr(2).chr(3).chr(4).chr(5).chr(6).chr(7).chr(8).chr(9); + $keys_a .= chr(10).chr(11).chr(12).chr(13).chr(14).chr(15).chr(16).chr(17).chr(18).chr(19); + $keys_a .= chr(20).chr(21).chr(22).chr(23).chr(24).chr(25).chr(26).chr(27).chr(28).chr(29); + $keys_a .= chr(30).chr(31); + // ASCII characters for code B (ASCII 32 - 127) + $keys_b = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.chr(127); + // special codes + $fnc_a = array(241 => 102, 242 => 97, 243 => 96, 244 => 101); + $fnc_b = array(241 => 102, 242 => 97, 243 => 96, 244 => 100); + // array of symbols + $code_data = array(); + // lenght of the code + $len = strlen($code); switch(strtoupper($type)) { - case 'A': { + case 'A': { // MODE A $startid = 103; - $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_'; - for ($i = 0; $i < 32; ++$i) { - $keys .= chr($i); + for ($i = 0; $i < $len; ++$i) { + $char = $code{$i}; + $char_id = ord($char); + if (($char_id >= 241) AND ($char_id <= 244)) { + $code_data[] = $fnc_a[$char_id]; + } elseif (($char_id >= 0) AND ($char_id <= 95)) { + $code_data[] = strpos($keys_a, $char); + } else { + return false; + } } break; } - case 'B': { + case 'B': { // MODE B $startid = 104; - $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.chr(127); + for ($i = 0; $i < $len; ++$i) { + $char = $code{$i}; + $char_id = ord($char); + if (($char_id >= 241) AND ($char_id <= 244)) { + $code_data[] = $fnc_b[$char_id]; + } elseif (($char_id >= 32) AND ($char_id <= 127)) { + $code_data[] = strpos($keys_b, $char); + } else { + return false; + } + } break; } - case 'C': { + case 'C': { // MODE C $startid = 105; - $keys = ''; - if ((strlen($code) % 2) != 0) { - // The length of barcode value must be even ($code). You must pad the number with zeros + if (ord($code[0]) == 241) { + $code_data[] = 102; + $code = substr($code, 1); + --$len; + } + if (($len % 2) != 0) { + // the length must be even return false; } - for ($i = 0; $i <= 99; ++$i) { - $keys .= chr($i); + for ($i = 0; $i < $len; $i+=2) { + $chrnum = $code{$i}.$code{$i+1}; + if (preg_match('/([0-9]{2})/', $chrnum) > 0) { + $code_data[] = intval($chrnum); + } else { + return false; + } } - $new_code = ''; - $hclen = (strlen($code) / 2); - for ($i = 0; $i < $hclen; ++$i) { - $new_code .= chr(intval($code{(2 * $i)}.$code{(2 * $i + 1)})); - } - $code = $new_code; break; } - default: { - return false; + default: { // MODE AUTO + // split code into sequences + $sequence = array(); + // get numeric sequences (if any) + $numseq = array(); + preg_match_all('/([0-9]{4,})/', $code, $numseq, PREG_OFFSET_CAPTURE); + if (isset($numseq[1]) AND !empty($numseq[1])) { + $end_offset = 0; + foreach ($numseq[1] as $val) { + $offset = $val[1]; + if ($offset > $end_offset) { + // non numeric sequence + $sequence = array_merge($sequence, $this->get128ABsequence(substr($code, $end_offset, ($offset - $end_offset)))); + } + // numeric sequence + $slen = strlen($val[0]); + if (($slen % 2) != 0) { + // the length must be even + --$slen; + } + $sequence[] = array('C', substr($code, $offset, $slen), $slen); + $end_offset = $offset + $slen; + } + if ($end_offset < $len) { + $sequence = array_merge($sequence, $this->get128ABsequence(substr($code, $end_offset))); + } + } else { + // text code (non C mode) + $sequence = array_merge($sequence, $this->get128ABsequence($code)); + } + // process the sequence + foreach ($sequence as $key => $seq) { + switch($seq[0]) { + case 'A': { + if ($key == 0) { + $startid = 103; + } elseif ($sequence[($key - 1)][0] != 'A') { + if (($seq[2] == 1) AND ($key > 0) AND ($sequence[($key - 1)][0] == 'B') AND (!isset($sequence[($key - 1)][3]))) { + // single character shift + $code_data[] = 98; + // mark shift + $sequence[$key][3] = true; + } elseif (!isset($sequence[($key - 1)][3])) { + $code_data[] = 101; + } + } + for ($i = 0; $i < $seq[2]; ++$i) { + $char = $seq[1]{$i}; + $char_id = ord($char); + if (($char_id >= 241) AND ($char_id <= 244)) { + $code_data[] = $fnc_a[$char_id]; + } else { + $code_data[] = strpos($keys_a, $char); + } + } + break; + } + case 'B': { + if ($key == 0) { + $tmpchr = ord($seq[1][0]); + if (($seq[2] == 1) AND ($tmpchr >= 241) AND ($tmpchr <= 244) AND isset($sequence[($key + 1)]) AND ($sequence[($key + 1)][0] != 'B')) { + switch ($sequence[($key + 1)][0]) { + case 'A': { + $startid = 103; + $sequence[$key][0] = 'A'; + $code_data[] = $fnc_a[$tmpchr]; + break; + } + case 'C': { + $startid = 105; + $sequence[$key][0] = 'C'; + $code_data[] = $fnc_a[$tmpchr]; + break; + } + } + break; + } else { + $startid = 104; + } + } elseif ($sequence[($key - 1)][0] != 'B') { + if (($seq[2] == 1) AND ($key > 0) AND ($sequence[($key - 1)][0] == 'A') AND (!isset($sequence[($key - 1)][3]))) { + // single character shift + $code_data[] = 98; + // mark shift + $sequence[$key][3] = true; + } elseif (!isset($sequence[($key - 1)][3])) { + $code_data[] = 100; + } + } + for ($i = 0; $i < $seq[2]; ++$i) { + $char = $seq[1]{$i}; + $char_id = ord($char); + if (($char_id >= 241) AND ($char_id <= 244)) { + $code_data[] = $fnc_b[$char_id]; + } else { + $code_data[] = strpos($keys_b, $char); + } + } + break; + } + case 'C': { + if ($key == 0) { + $startid = 105; + } elseif ($sequence[($key - 1)][0] != 'C') { + $code_data[] = 99; + } + for ($i = 0; $i < $seq[2]; $i+=2) { + $chrnum = $seq[1]{$i}.$seq[1]{$i+1}; + $code_data[] = intval($chrnum); + } + break; + } + } + } } } - // calculate check character $sum = $startid; - if ($ean) { $code = chr(102) . $code; } // Add FNC 1 - which identifies it as EAN-128 - $clen = strlen($code); - for ($i = 0; $i < $clen; ++$i) { - if ($ean && $i==0) { $sum += 102; } - else { $sum += (strpos($keys, $code[$i]) * ($i+1)); } + foreach ($code_data as $key => $val) { + $sum += ($val * ($key + 1)); } - $check = ($sum % 103); - $checkdigit = $check ; - // add start, check and stop codes - $code = chr($startid).$code.chr($check).chr(106).chr(107); + // add check character + $code_data[] = ($sum % 103); + // add stop sequence + $code_data[] = 106; + $code_data[] = 107; + // add start code at the beginning + array_unshift($code_data, $startid); + // build barcode array $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); - $k = 0; - $len = strlen($code); - for ($i = 0; $i < $len; ++$i) { - $ck = strpos($keys, $code[$i]); - if (($i == 0) || ($ean && $i==1) | ($i > ($len-4))) { - $char_num = ord($code[$i]); - $seq = $chr[$char_num]; - } elseif(($ck >= 0) AND isset($chr[$ck])) { - $seq = $chr[$ck]; - } else { - // invalid character - return false; - } + foreach ($code_data as $val) { + $seq = $chr[$val]; for ($j = 0; $j < 6; ++$j) { if (($j % 2) == 0) { $t = true; // bar } else { $t = false; // space } - $w = $seq[$j]; - $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); + $w = $seq{$j}; + $bararray['bcode'][] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); $bararray['maxw'] += $w; - ++$k; } } - $bararray['checkdigit'] = $checkdigit; - return $bararray; + return $bararray; } - + + /** + * Split text code in A/B sequence for 128 code + * @param $code (string) code to split. + * @return array sequence + * @protected + */ + protected function get128ABsequence($code) { + $len = strlen($code); + $sequence = array(); + // get A sequences (if any) + $numseq = array(); + preg_match_all('/([\0-\31])/', $code, $numseq, PREG_OFFSET_CAPTURE); + if (isset($numseq[1]) AND !empty($numseq[1])) { + $end_offset = 0; + foreach ($numseq[1] as $val) { + $offset = $val[1]; + if ($offset > $end_offset) { + // B sequence + $sequence[] = array('B', substr($code, $end_offset, ($offset - $end_offset)), ($offset - $end_offset)); + } + // A sequence + $slen = strlen($val[0]); + $sequence[] = array('A', substr($code, $offset, $slen), $slen); + $end_offset = $offset + $slen; + } + if ($end_offset < $len) { + $sequence[] = array('B', substr($code, $end_offset), ($len - $end_offset)); + } + } else { + // only B sequence + $sequence[] = array('B', $code, $len); + } + return $sequence; + } + /** * EAN13 and UPC-A barcodes. * EAN13: European Article Numbering international retail product code * UPC-A: Universal product code seen on almost all retail products in the USA and Canada * UPC-E: Short version of UPC symbol + * @param $code (string) code to represent. + * @param $len (string) barcode type: 6 = UPC-E, 8 = EAN8, 13 = EAN13, 12 = UPC-A + * @return array barcode representation. + * @protected */ protected function barcode_eanupc($code, $len=13) { $upce = false; - $checkdigit = false; if ($len == 6) { $len = 12; // UPC-A $upce = true; // UPC-E mode @@ -1082,14 +1333,14 @@ class PDFBarcode { // calculate check digit $sum_a = 0; for ($i = 1; $i < $data_len; $i+=2) { - $sum_a += $code[$i]; + $sum_a += $code{$i}; } if ($len > 12) { $sum_a *= 3; } $sum_b = 0; for ($i = 0; $i < $data_len; $i+=2) { - $sum_b += ($code[$i]); + $sum_b += ($code{$i}); } if ($len < 13) { $sum_b *= 3; @@ -1101,8 +1352,7 @@ class PDFBarcode { if ($code_len == $data_len) { // add check digit $code .= $r; - $checkdigit = $r; - } elseif ($r !== intval($code[$data_len])) { + } elseif ($r !== intval($code{$data_len})) { // wrong checkdigit return false; } @@ -1114,32 +1364,25 @@ class PDFBarcode { if ($upce) { // convert UPC-A to UPC-E $tmp = substr($code, 4, 3); - $prod_code = intval(substr($code,7,5)); // product code - $invalid_upce = false; if (($tmp == '000') OR ($tmp == '100') OR ($tmp == '200')) { // manufacturer code ends in 000, 100, or 200 $upce_code = substr($code, 2, 2).substr($code, 9, 3).substr($code, 4, 1); - if ($prod_code > 999) { $invalid_upce = true; } } else { $tmp = substr($code, 5, 2); if ($tmp == '00') { // manufacturer code ends in 00 $upce_code = substr($code, 2, 3).substr($code, 10, 2).'3'; - if ($prod_code > 99) { $invalid_upce = true; } } else { $tmp = substr($code, 6, 1); if ($tmp == '0') { // manufacturer code ends in 0 $upce_code = substr($code, 2, 4).substr($code, 11, 1).'4'; - if ($prod_code > 9) { $invalid_upce = true; } } else { // manufacturer code does not end in zero $upce_code = substr($code, 2, 5).substr($code, 11, 1); - if ($prod_code > 9) { $invalid_upce = true; } } } } - if ($invalid_upce) { die("Error - UPC-A cannot produce a valid UPC-E barcode"); } // Error generating a UPCE code } //Convert digits to bars $codes = array( @@ -1218,27 +1461,27 @@ class PDFBarcode { $seq = '101'; // left guard bar if ($upce) { $bararray = array('code' => $upce_code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); - $p = $upce_parities[$code{1}][$r]; + $p = $upce_parities[$code[1]][$r]; for ($i = 0; $i < 6; ++$i) { - $seq .= $codes[$p[$i]][$upce_code[$i]]; + $seq .= $codes[$p[$i]][$upce_code{$i}]; } $seq .= '010101'; // right guard bar } else { $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); - $half_len = ceil($len / 2); + $half_len = intval(ceil($len / 2)); if ($len == 8) { for ($i = 0; $i < $half_len; ++$i) { - $seq .= $codes['A'][$code[$i]]; + $seq .= $codes['A'][$code{$i}]; } } else { - $p = $parities[$code{0}]; + $p = $parities[$code[0]]; for ($i = 1; $i < $half_len; ++$i) { - $seq .= $codes[$p[$i-1]][$code[$i]]; + $seq .= $codes[$p[$i-1]][$code{$i}]; } } $seq .= '01010'; // center guard bar for ($i = $half_len; $i < $len; ++$i) { - $seq .= $codes['C'][$code[$i]]; + $seq .= $codes['C'][$code{$i}]; } $seq .= '101'; // right guard bar } @@ -1246,8 +1489,8 @@ class PDFBarcode { $w = 0; for ($i = 0; $i < $clen; ++$i) { $w += 1; - if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq[$i] != $seq[($i+1)]))) { - if ($seq[$i] == '1') { + if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq{$i} != $seq{($i+1)}))) { + if ($seq{$i} == '1') { $t = true; // bar } else { $t = false; // space @@ -1258,14 +1501,17 @@ class PDFBarcode { $w = 0; } } - $bararray['checkdigit'] = $checkdigit; return $bararray; } - + /** * UPC-Based Extentions * 2-Digit Ext.: Used to indicate magazines and newspaper issue numbers * 5-Digit Ext.: Used to mark suggested retail price of books + * @param $code (string) code to represent. + * @param $len (string) barcode type: 2 = 2-Digit, 5 = 5-Digit + * @return array barcode representation. + * @protected */ protected function barcode_eanext($code, $len=5) { //Padding @@ -1274,7 +1520,7 @@ class PDFBarcode { if ($len == 2) { $r = $code % 4; } elseif ($len == 5) { - $r = (3 * ($code{0} + $code{2} + $code{4})) + (9 * ($code{1} + $code{3})); + $r = (3 * ($code[0] + $code[2] + $code[4])) + (9 * ($code[1] + $code[3])); $r %= 10; } else { return false; @@ -1322,21 +1568,25 @@ class PDFBarcode { '7'=>array('A','B','A','B','A'), '8'=>array('A','B','A','A','B'), '9'=>array('A','A','B','A','B') - ); + ); $p = $parities[$len][$r]; $seq = '1011'; // left guard bar - $seq .= $codes[$p[0]][$code{0}]; + $seq .= $codes[$p[0]][$code[0]]; for ($i = 1; $i < $len; ++$i) { $seq .= '01'; // separator - $seq .= $codes[$p[$i]][$code[$i]]; + $seq .= $codes[$p[$i]][$code{$i}]; } $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); return $this->binseq_to_array($seq, $bararray); } - + /** * POSTNET and PLANET barcodes. * Used by U.S. Postal Service for automated mail sorting + * @param $code (string) zip code to represent. Must be a string containing a zip code of the form DDDDD or DDDDD-DDDD. + * @param $planet (boolean) if true print the PLANET barcode, otherwise print POSTNET + * @return array barcode representation. + * @protected */ protected function barcode_postnet($code, $planet=false) { // bar lenght @@ -1367,7 +1617,7 @@ class PDFBarcode { 9 => Array(2,1,2,1,1) ); } - $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 5, 'bcode' => array()); + $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 2, 'bcode' => array()); $k = 0; $code = str_replace('-', '', $code); $code = str_replace(' ', '', $code); @@ -1375,48 +1625,43 @@ class PDFBarcode { // calculate checksum $sum = 0; for ($i = 0; $i < $len; ++$i) { - $sum += intval($code[$i]); + $sum += intval($code{$i}); } $chkd = ($sum % 10); if($chkd > 0) { $chkd = (10 - $chkd); } $code .= $chkd; - $checkdigit = $chkd; $len = strlen($code); // start bar - $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0); - $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 5, 'p' => 0); - $bararray['maxw'] += (1 + $this->gapwidth ); + $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['maxw'] += 2; for ($i = 0; $i < $len; ++$i) { for ($j = 0; $j < 5; ++$j) { - $bh = $barlen[$code[$i]][$j]; - if ($bh == 2) { - $h = 5; - $p = 0; - } - else { - $h = 2; - $p = 3; - } + $h = $barlen[$code{$i}][$j]; + $p = floor(1 / $h); $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p); - $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 2, 'p' => 0); - $bararray['maxw'] += (1 + $this->gapwidth ); + $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['maxw'] += 2; } } // end bar - $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0); + $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0); $bararray['maxw'] += 1; - $bararray['checkdigit'] = $checkdigit; return $bararray; } - + /** - * RM4SCC - CBC - KIX - * RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) - KIX (Klant index - Customer index) + * RMS4CC - CBC - KIX + * RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) - KIX (Klant index - Customer index) * RM4SCC is the name of the barcode symbology used by the Royal Mail for its Cleanmail service. + * @param $code (string) code to print + * @param $kix (boolean) if true prints the KIX variation (doesn't use the start and end symbols, and the checksum) - in this case the house number must be sufficed with an X and placed at the end of the code. + * @return array barcode representation. + * @protected */ - protected function barcode_rm4scc($code, $kix=false) { + protected function barcode_rms4cc($code, $kix=false) { $notkix = !$kix; // bar mode // 1 = pos 1, length 2 @@ -1459,11 +1704,11 @@ class PDFBarcode { 'W' => array(1,2,4,3), 'X' => array(2,1,3,4), 'Y' => array(2,1,4,3), - 'Z' => array(2,2,3,3) + 'Z' => array(2,2,3,3) ); $code = strtoupper($code); $len = strlen($code); - $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array()); + $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 3, 'bcode' => array()); if ($notkix) { // table for checksum calculation (row,col) $checktable = array( @@ -1507,68 +1752,65 @@ class PDFBarcode { $row = 0; $col = 0; for ($i = 0; $i < $len; ++$i) { - $row += $checktable[$code[$i]][0]; - $col += $checktable[$code[$i]][1]; + $row += $checktable[$code{$i}][0]; + $col += $checktable[$code{$i}][1]; } $row %= 6; $col %= 6; $chk = array_keys($checktable, array($row,$col)); $code .= $chk[0]; - $bararray['checkdigit'] = $chk[0]; ++$len; } $k = 0; if ($notkix) { // start bar - $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['A'] , 'p' => 0); - $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => $this->daft['A'] , 'p' => 0); - $bararray['maxw'] += (1 + $this->gapwidth) ; + $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['maxw'] += 2; } for ($i = 0; $i < $len; ++$i) { for ($j = 0; $j < 4; ++$j) { - switch ($barmode[$code[$i]][$j]) { + switch ($barmode[$code{$i}][$j]) { case 1: { - // ascender (A) $p = 0; - $h = $this->daft['A']; + $h = 2; break; } case 2: { - // full bar (F) $p = 0; - $h = $this->daft['F']; + $h = 3; break; } case 3: { - // tracker (T) - $p = ($this->daft['F'] - $this->daft['T'])/2; - $h = $this->daft['T']; + $p = 1; + $h = 1; break; } case 4: { - // descender (D) - $p = $this->daft['F'] - $this->daft['D']; - $h = $this->daft['D']; + $p = 1; + $h = 2; break; } } - $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p); - $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth, 'h' => 2, 'p' => 0); - $bararray['maxw'] += (1 + $this->gapwidth) ; + $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['maxw'] += 2; } } if ($notkix) { // stop bar - $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['F'], 'p' => 0); + $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 3, 'p' => 0); $bararray['maxw'] += 1; } return $bararray; } - + /** * CODABAR barcodes. * Older code often used in library systems, sometimes in blood banks + * @param $code (string) code to represent. + * @return array barcode representation. + * @protected */ protected function barcode_codabar($code) { $chr = array( @@ -1597,22 +1839,20 @@ class PDFBarcode { $k = 0; $w = 0; $seq = ''; - $code = strtoupper($code); + $code = 'A'.strtoupper($code).'A'; $len = strlen($code); for ($i = 0; $i < $len; ++$i) { - if (!isset($chr[$code[$i]])) { + if (!isset($chr[$code{$i}])) { return false; } - $seq = $chr[$code[$i]]; + $seq = $chr[$code{$i}]; for ($j = 0; $j < 8; ++$j) { if (($j % 2) == 0) { $t = true; // bar } else { $t = false; // space } - $x = $seq[$j]; - if ($x == 2) { $w = $this->print_ratio; } - else { $w = 1; } + $w = $seq{$j}; $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); $bararray['maxw'] += $w; ++$k; @@ -1620,10 +1860,13 @@ class PDFBarcode { } return $bararray; } - + /** * CODE11 barcodes. * Used primarily for labeling telecommunications equipment + * @param $code (string) code to represent. + * @return array barcode representation. + * @protected */ protected function barcode_code11($code) { $chr = array( @@ -1640,7 +1883,6 @@ class PDFBarcode { '-' => '112111', 'S' => '112211' ); - $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); $k = 0; $w = 0; @@ -1650,7 +1892,7 @@ class PDFBarcode { $p = 1; $check = 0; for ($i = ($len - 1); $i >= 0; --$i) { - $digit = $code[$i]; + $digit = $code{$i}; if ($digit == '-') { $dval = 10; } else { @@ -1665,15 +1907,14 @@ class PDFBarcode { $check %= 11; if ($check == 10) { $check = '-'; - } + } $code .= $check; - $checkdigit = $check; if ($len > 10) { // calculate check digit K $p = 1; $check = 0; for ($i = $len; $i >= 0; --$i) { - $digit = $code[$i]; + $digit = $code{$i}; if ($digit == '-') { $dval = 10; } else { @@ -1687,40 +1928,125 @@ class PDFBarcode { } $check %= 11; $code .= $check; - $checkdigit .= $check; ++$len; } $code = 'S'.$code.'S'; $len += 3; for ($i = 0; $i < $len; ++$i) { - if (!isset($chr[$code[$i]])) { + if (!isset($chr[$code{$i}])) { return false; } - $seq = $chr[$code[$i]]; + $seq = $chr[$code{$i}]; for ($j = 0; $j < 6; ++$j) { if (($j % 2) == 0) { $t = true; // bar } else { $t = false; // space } - $x = $seq[$j]; - if ($x == 2) { $w = $this->print_ratio; } - else { $w = 1; } + $w = $seq{$j}; $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0); $bararray['maxw'] += $w; ++$k; } } - $bararray['checkdigit'] = $checkdigit; return $bararray; } - - + + /** + * Pharmacode + * Contains digits (0 to 9) + * @param $code (string) code to represent. + * @return array barcode representation. + * @protected + */ + protected function barcode_pharmacode($code) { + $seq = ''; + $code = intval($code); + while ($code > 0) { + if (($code % 2) == 0) { + $seq .= '11100'; + $code -= 2; + } else { + $seq .= '100'; + $code -= 1; + } + $code /= 2; + } + $seq = substr($seq, 0, -2); + $seq = strrev($seq); + $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array()); + return $this->binseq_to_array($seq, $bararray); + } + + /** + * Pharmacode two-track + * Contains digits (0 to 9) + * @param $code (string) code to represent. + * @return array barcode representation. + * @protected + */ + protected function barcode_pharmacode2t($code) { + $seq = ''; + $code = intval($code); + do { + switch ($code % 3) { + case 0: { + $seq .= '3'; + $code = ($code - 3) / 3; + break; + } + case 1: { + $seq .= '1'; + $code = ($code - 1) / 3; + break; + } + case 2: { + $seq .= '2'; + $code = ($code - 2) / 3; + break; + } + } + } while($code != 0); + $seq = strrev($seq); + $k = 0; + $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 2, 'bcode' => array()); + $len = strlen($seq); + for ($i = 0; $i < $len; ++$i) { + switch ($seq{$i}) { + case '1': { + $p = 1; + $h = 1; + break; + } + case '2': { + $p = 0; + $h = 1; + break; + } + case '3': { + $p = 0; + $h = 2; + break; + } + } + $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p); + $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['maxw'] += 2; + } + unset($bararray['bcode'][($k - 1)]); + --$bararray['maxw']; + return $bararray; + } + + /** * IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 - * (requires PHP bcmath extension) + * (requires PHP bcmath extension) * Intelligent Mail barcode is a 65-bar code for use on mail in the United States. - * The fields are described as follows:
      • The Barcode Identifier shall be assigned by USPS to encode the presort identification that is currently printed in human readable form on the optional endorsement line (OEL) as well as for future USPS use. This shall be two digits, with the second digit in the range of 0-4. The allowable encoding ranges shall be 00-04, 10-14, 20-24, 30-34, 40-44, 50-54, 60-64, 70-74, 80-84, and 90-94.
      • The Service Type Identifier shall be assigned by USPS for any combination of services requested on the mailpiece. The allowable encoding range shall be 000-999. Each 3-digit value shall correspond to a particular mail class with a particular combination of service(s). Each service program, such as OneCode Confirm and OneCode ACS, shall provide the list of Service Type Identifier values.
      • The Mailer or Customer Identifier shall be assigned by USPS as a unique, 6 or 9 digit number that identifies a business entity. The allowable encoding range for the 6 digit Mailer ID shall be 000000- 899999, while the allowable encoding range for the 9 digit Mailer ID shall be 900000000-999999999.
      • The Serial or Sequence Number shall be assigned by the mailer for uniquely identifying and tracking mailpieces. The allowable encoding range shall be 000000000-999999999 when used with a 6 digit Mailer ID and 000000-999999 when used with a 9 digit Mailer ID. e. The Delivery Point ZIP Code shall be assigned by the mailer for routing the mailpiece. This shall replace POSTNET for routing the mailpiece to its final delivery point. The length may be 0, 5, 9, or 11 digits. The allowable encoding ranges shall be no ZIP Code, 00000-99999, 000000000-999999999, and 00000000000-99999999999.
      + * The fields are described as follows:
      • The Barcode Identifier shall be assigned by USPS to encode the presort identification that is currently printed in human readable form on the optional endorsement line (OEL) as well as for future USPS use. This shall be two digits, with the second digit in the range of 0–4. The allowable encoding ranges shall be 00–04, 10–14, 20–24, 30–34, 40–44, 50–54, 60–64, 70–74, 80–84, and 90–94.
      • The Service Type Identifier shall be assigned by USPS for any combination of services requested on the mailpiece. The allowable encoding range shall be 000http://it2.php.net/manual/en/function.dechex.php–999. Each 3-digit value shall correspond to a particular mail class with a particular combination of service(s). Each service program, such as OneCode Confirm and OneCode ACS, shall provide the list of Service Type Identifier values.
      • The Mailer or Customer Identifier shall be assigned by USPS as a unique, 6 or 9 digit number that identifies a business entity. The allowable encoding range for the 6 digit Mailer ID shall be 000000- 899999, while the allowable encoding range for the 9 digit Mailer ID shall be 900000000-999999999.
      • The Serial or Sequence Number shall be assigned by the mailer for uniquely identifying and tracking mailpieces. The allowable encoding range shall be 000000000–999999999 when used with a 6 digit Mailer ID and 000000-999999 when used with a 9 digit Mailer ID. e. The Delivery Point ZIP Code shall be assigned by the mailer for routing the mailpiece. This shall replace POSTNET for routing the mailpiece to its final delivery point. The length may be 0, 5, 9, or 11 digits. The allowable encoding ranges shall be no ZIP Code, 00000–99999, 000000000–999999999, and 00000000000–99999999999.
      + * @param $code (string) code to print, separate the ZIP (routing code) from the rest using a minus char '-' (BarcodeID_ServiceTypeID_MailerID_SerialNumber-RoutingCode) + * @return array barcode representation. + * @protected */ protected function barcode_imb($code) { $asc_chr = array(4,0,2,6,3,5,1,9,8,7,1,2,0,6,4,8,2,9,5,3,0,1,3,7,4,6,8,9,2,0,5,1,9,4,3,8,6,7,1,2,4,3,9,5,7,8,3,0,2,1,4,0,9,1,7,0,2,4,6,3,7,1,9,5,8); @@ -1758,9 +2084,9 @@ class PDFBarcode { } } $binary_code = bcmul($binary_code, 10); - $binary_code = bcadd($binary_code, $tracking_number{0}); + $binary_code = bcadd($binary_code, $tracking_number[0]); $binary_code = bcmul($binary_code, 5); - $binary_code = bcadd($binary_code, $tracking_number{1}); + $binary_code = bcadd($binary_code, $tracking_number[1]); $binary_code .= substr($tracking_number, 2, 18); // convert to hexadecimal $binary_code = $this->dec_to_hex($binary_code); @@ -1810,40 +2136,41 @@ class PDFBarcode { $characters = array_reverse($characters); // build bars $k = 0; - $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array()); + $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 3, 'bcode' => array()); for ($i = 0; $i < 65; ++$i) { $asc = (($characters[$asc_chr[$i]] & pow(2, $asc_pos[$i])) > 0); $dsc = (($characters[$dsc_chr[$i]] & pow(2, $dsc_pos[$i])) > 0); if ($asc AND $dsc) { // full bar (F) $p = 0; - $h = $this->daft['F']; + $h = 3; } elseif ($asc) { // ascender (A) $p = 0; - $h = $this->daft['A']; + $h = 2; } elseif ($dsc) { // descender (D) - $p = $this->daft['F'] - $this->daft['D']; - $h = $this->daft['D']; + $p = 1; + $h = 2; } else { // tracker (T) - $p = ($this->daft['F'] - $this->daft['T'])/2; - $h = $this->daft['T']; + $p = 1; + $h = 1; } $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p); - // Gap - $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 1, 'p' => 0); - $bararray['maxw'] += (1 + $this->gapwidth ); + $bararray['bcode'][$k++] = array('t' => 0, 'w' => 1, 'h' => 2, 'p' => 0); + $bararray['maxw'] += 2; } unset($bararray['bcode'][($k - 1)]); - $bararray['maxw'] -= $this->gapwidth ; + --$bararray['maxw']; return $bararray; } - + /** * Convert large integer number to hexadecimal representation. - * (requires PHP bcmath extension) + * (requires PHP bcmath extension) + * @param $number (string) number to convert specified as a string + * @return string hexadecimal representation */ public function dec_to_hex($number) { $i = 0; @@ -1862,24 +2189,29 @@ class PDFBarcode { $hex = array_reverse($hex); return implode($hex); } - + /** * Convert large hexadecimal number to decimal representation (string). - * (requires PHP bcmath extension) + * (requires PHP bcmath extension) + * @param $hex (string) hexadecimal number to convert specified as a string + * @return string hexadecimal representation */ public function hex_to_dec($hex) { $dec = 0; $bitval = 1; $len = strlen($hex); for($pos = ($len - 1); $pos >= 0; --$pos) { - $dec = bcadd($dec, bcmul(hexdec($hex[$pos]), $bitval)); + $dec = bcadd($dec, bcmul(hexdec($hex{$pos}), $bitval)); $bitval = bcmul($bitval, 16); } return $dec; - } - + } + /** * Intelligent Mail Barcode calculation of Frame Check Sequence + * @param $code_arr (string) array of hexadecimal values (13 bytes holding 102 bits right justified). + * @return int 11 bit Frame Check Sequence as integer (decimal base) + * @protected */ protected function imb_crc11fcs($code_arr) { $genpoly = 0x0F35; // generator polynomial @@ -1908,11 +2240,14 @@ class PDFBarcode { $data <<= 1; } } - return $fcs; + return $fcs; } - + /** * Reverse unsigned short value + * @param $num (int) value to reversr + * @return int reversed value + * @protected */ protected function imb_reverse_us($num) { $rev = 0; @@ -1923,9 +2258,13 @@ class PDFBarcode { } return $rev; } - + /** * generate Nof13 tables used for Intelligent Mail Barcode + * @param $n (int) is the type of table: 2 for 2of13 table, 5 for 5of13table + * @param $size (int) size of table (78 for n=2 and 1287 for n=5) + * @return array requested table + * @protected */ protected function imb_tables($n, $size) { $table = array(); @@ -1957,10 +2296,8 @@ class PDFBarcode { } return $table; } - -} // end of class +} // end of class //============================================================+ -// END OF FILE +// END OF FILE //============================================================+ -?> \ No newline at end of file diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_2d.php b/inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_2d.php new file mode 100644 index 000000000..13e236552 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tcpdf_barcodes_2d.php @@ -0,0 +1,349 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : PHP class to creates array representations for +// 2D barcodes to be used with TCPDF. +// +//============================================================+ + +/** + * @file + * PHP class to creates array representations for 2D barcodes to be used with TCPDF. + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.015 + */ + +/** + * @class TCPDF2DBarcode + * PHP class to creates array representations for 2D barcodes to be used with TCPDF (http://www.tcpdf.org). + * @package com.tecnick.tcpdf + * @version 1.0.015 + * @author Nicola Asuni + */ +class TCPDF2DBarcode { + + /** + * Array representation of barcode. + * @protected + */ + protected $barcode_array = false; + + /** + * This is the class constructor. + * Return an array representations for 2D barcodes:
        + *
      • $arrcode['code'] code to be printed on text label
      • + *
      • $arrcode['num_rows'] required number of rows
      • + *
      • $arrcode['num_cols'] required number of columns
      • + *
      • $arrcode['bcode'][$r][$c] value of the cell is $r row and $c column (0 = transparent, 1 = black)
      + * @param $code (string) code to print + * @param $type (string) type of barcode:
      • DATAMATRIX : Datamatrix (ISO/IEC 16022)
      • PDF417 : PDF417 (ISO/IEC 15438:2006)
      • PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6 : PDF417 with parameters: a = aspect ratio (width/height); e = error correction level (0-8); t = total number of macro segments; s = macro segment index (0-99998); f = file ID; o0 = File Name (text); o1 = Segment Count (numeric); o2 = Time Stamp (numeric); o3 = Sender (text); o4 = Addressee (text); o5 = File Size (numeric); o6 = Checksum (numeric). NOTES: Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional. To use a comma character ',' on text options, replace it with the character 255: "\xff".
      • QRCODE : QRcode Low error correction
      • QRCODE,L : QRcode Low error correction
      • QRCODE,M : QRcode Medium error correction
      • QRCODE,Q : QRcode Better error correction
      • QRCODE,H : QR-CODE Best error correction
      • RAW: raw mode - comma-separad list of array rows
      • RAW2: raw mode - array rows are surrounded by square parenthesis.
      • TEST : Test matrix
      + */ + public function __construct($code, $type) { + $this->setBarcode($code, $type); + } + + /** + * Return an array representations of barcode. + * @return array + */ + public function getBarcodeArray() { + return $this->barcode_array; + } + + /** + * Send barcode as SVG image object to the standard output. + * @param $w (int) Width of a single rectangle element in user units. + * @param $h (int) Height of a single rectangle element in user units. + * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent). + * @public + */ + public function getBarcodeSVG($w=3, $h=3, $color='black') { + // send headers + $code = $this->getBarcodeSVGcode($w, $h, $color); + header('Content-Type: application/svg+xml'); + header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1 + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + header('Content-Disposition: inline; filename="'.md5($code).'.svg";'); + //header('Content-Length: '.strlen($code)); + echo $code; + } + + /** + * Return a SVG string representation of barcode. + * @param $w (int) Width of a single rectangle element in user units. + * @param $h (int) Height of a single rectangle element in user units. + * @param $color (string) Foreground color (in SVG format) for bar elements (background is transparent). + * @return string SVG code. + * @public + */ + public function getBarcodeSVGcode($w=3, $h=3, $color='black') { + // replace table for special characters + $repstr = array("\0" => '', '&' => '&', '<' => '<', '>' => '>'); + $svg = '<'.'?'.'xml version="1.0" standalone="no"'.'?'.'>'."\n"; + $svg .= ''."\n"; + $svg .= ''."\n"; + $svg .= "\t".''.strtr($this->barcode_array['code'], $repstr).''."\n"; + $svg .= "\t".''."\n"; + // print barcode elements + $y = 0; + // for each row + for ($r = 0; $r < $this->barcode_array['num_rows']; ++$r) { + $x = 0; + // for each column + for ($c = 0; $c < $this->barcode_array['num_cols']; ++$c) { + if ($this->barcode_array['bcode'][$r][$c] == 1) { + // draw a single barcode cell + $svg .= "\t\t".''."\n"; + } + $x += $w; + } + $y += $h; + } + $svg .= "\t".''."\n"; + $svg .= ''."\n"; + return $svg; + } + + /** + * Return an HTML representation of barcode. + * @param $w (int) Width of a single rectangle element in pixels. + * @param $h (int) Height of a single rectangle element in pixels. + * @param $color (string) Foreground color for bar elements (background is transparent). + * @return string HTML code. + * @public + */ + public function getBarcodeHTML($w=10, $h=10, $color='black') { + $html = '
      '."\n"; + // print barcode elements + $y = 0; + // for each row + for ($r = 0; $r < $this->barcode_array['num_rows']; ++$r) { + $x = 0; + // for each column + for ($c = 0; $c < $this->barcode_array['num_cols']; ++$c) { + if ($this->barcode_array['bcode'][$r][$c] == 1) { + // draw a single barcode cell + $html .= '
       
      '."\n"; + } + $x += $w; + } + $y += $h; + } + $html .= '
      '."\n"; + return $html; + } + + /** + * Send a PNG image representation of barcode (requires GD or Imagick library). + * @param $w (int) Width of a single rectangle element in pixels. + * @param $h (int) Height of a single rectangle element in pixels. + * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent). + * @public + */ + public function getBarcodePNG($w=3, $h=3, $color=array(0,0,0)) { + $data = $this->getBarcodePngData($w, $h, $color); + // send headers + header('Content-Type: image/png'); + header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1 + header('Pragma: public'); + header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past + header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); + //header('Content-Length: '.strlen($data)); + echo $data; + + } + + /** + * Return a PNG image representation of barcode (requires GD or Imagick library). + * @param $w (int) Width of a single rectangle element in pixels. + * @param $h (int) Height of a single rectangle element in pixels. + * @param $color (array) RGB (0-255) foreground color for bar elements (background is transparent). + * @return image or false in case of error. + * @public + */ + public function getBarcodePngData($w=3, $h=3, $color=array(0,0,0)) { + // calculate image size + $width = ($this->barcode_array['num_cols'] * $w); + $height = ($this->barcode_array['num_rows'] * $h); + if (function_exists('imagecreate')) { + // GD library + $imagick = false; + $png = imagecreate($width, $height); + $bgcol = imagecolorallocate($png, 255, 255, 255); + imagecolortransparent($png, $bgcol); + $fgcol = imagecolorallocate($png, $color[0], $color[1], $color[2]); + } elseif (extension_loaded('imagick')) { + $imagick = true; + $bgcol = new imagickpixel('rgb(255,255,255'); + $fgcol = new imagickpixel('rgb('.$color[0].','.$color[1].','.$color[2].')'); + $png = new Imagick(); + $png->newImage($width, $height, 'none', 'png'); + $bar = new imagickdraw(); + $bar->setfillcolor($fgcol); + } else { + return false; + } + // print barcode elements + $y = 0; + // for each row + for ($r = 0; $r < $this->barcode_array['num_rows']; ++$r) { + $x = 0; + // for each column + for ($c = 0; $c < $this->barcode_array['num_cols']; ++$c) { + if ($this->barcode_array['bcode'][$r][$c] == 1) { + // draw a single barcode cell + if ($imagick) { + $bar->rectangle($x, $y, ($x + $w - 1), ($y + $h - 1)); + } else { + imagefilledrectangle($png, $x, $y, ($x + $w - 1), ($y + $h - 1), $fgcol); + } + } + $x += $w; + } + $y += $h; + } + if ($imagick) { + $png->drawimage($bar); + return $png; + } else { + ob_start(); + imagepng($png); + $imagedata = ob_get_clean(); + imagedestroy($png); + return $imagedata; + } + } + + /** + * Set the barcode. + * @param $code (string) code to print + * @param $type (string) type of barcode:
      • DATAMATRIX : Datamatrix (ISO/IEC 16022)
      • PDF417 : PDF417 (ISO/IEC 15438:2006)
      • PDF417,a,e,t,s,f,o0,o1,o2,o3,o4,o5,o6 : PDF417 with parameters: a = aspect ratio (width/height); e = error correction level (0-8); t = total number of macro segments; s = macro segment index (0-99998); f = file ID; o0 = File Name (text); o1 = Segment Count (numeric); o2 = Time Stamp (numeric); o3 = Sender (text); o4 = Addressee (text); o5 = File Size (numeric); o6 = Checksum (numeric). NOTES: Parameters t, s and f are required for a Macro Control Block, all other parametrs are optional. To use a comma character ',' on text options, replace it with the character 255: "\xff".
      • QRCODE : QRcode Low error correction
      • QRCODE,L : QRcode Low error correction
      • QRCODE,M : QRcode Medium error correction
      • QRCODE,Q : QRcode Better error correction
      • QRCODE,H : QR-CODE Best error correction
      • RAW: raw mode - comma-separad list of array rows
      • RAW2: raw mode - array rows are surrounded by square parenthesis.
      • TEST : Test matrix
      + * @return array + */ + public function setBarcode($code, $type) { + $mode = explode(',', $type); + $qrtype = strtoupper($mode[0]); + switch ($qrtype) { + case 'DATAMATRIX': { // DATAMATRIX (ISO/IEC 16022) + require_once(dirname(__FILE__).'/include/barcodes/datamatrix.php'); + $qrcode = new Datamatrix($code); + $this->barcode_array = $qrcode->getBarcodeArray(); + $this->barcode_array['code'] = $code; + break; + } + case 'PDF417': { // PDF417 (ISO/IEC 15438:2006) + require_once(dirname(__FILE__).'/include/barcodes/pdf417.php'); + if (!isset($mode[1]) OR ($mode[1] === '')) { + $aspectratio = 2; // default aspect ratio (width / height) + } else { + $aspectratio = floatval($mode[1]); + } + if (!isset($mode[2]) OR ($mode[2] === '')) { + $ecl = -1; // default error correction level (auto) + } else { + $ecl = intval($mode[2]); + } + // set macro block + $macro = array(); + if (isset($mode[3]) AND ($mode[3] !== '') AND isset($mode[4]) AND ($mode[4] !== '') AND isset($mode[5]) AND ($mode[5] !== '')) { + $macro['segment_total'] = intval($mode[3]); + $macro['segment_index'] = intval($mode[4]); + $macro['file_id'] = strtr($mode[5], "\xff", ','); + for ($i = 0; $i < 7; ++$i) { + $o = $i + 6; + if (isset($mode[$o]) AND ($mode[$o] !== '')) { + // add option + $macro['option_'.$i] = strtr($mode[$o], "\xff", ','); + } + } + } + $qrcode = new PDF417($code, $ecl, $aspectratio, $macro); + $this->barcode_array = $qrcode->getBarcodeArray(); + $this->barcode_array['code'] = $code; + break; + } + case 'QRCODE': { // QR-CODE + require_once(dirname(__FILE__).'/include/barcodes/qrcode.php'); + if (!isset($mode[1]) OR (!in_array($mode[1],array('L','M','Q','H')))) { + $mode[1] = 'L'; // Ddefault: Low error correction + } + $qrcode = new QRcode($code, strtoupper($mode[1])); + $this->barcode_array = $qrcode->getBarcodeArray(); + $this->barcode_array['code'] = $code; + break; + } + case 'RAW': + case 'RAW2': { // RAW MODE + // remove spaces + $code = preg_replace('/[\s]*/si', '', $code); + if (strlen($code) < 3) { + break; + } + if ($qrtype == 'RAW') { + // comma-separated rows + $rows = explode(',', $code); + } else { // RAW2 + // rows enclosed in square parentheses + $code = substr($code, 1, -1); + $rows = explode('][', $code); + } + $this->barcode_array['num_rows'] = count($rows); + $this->barcode_array['num_cols'] = strlen($rows[0]); + $this->barcode_array['bcode'] = array(); + foreach ($rows as $r) { + $this->barcode_array['bcode'][] = str_split($r, 1); + } + $this->barcode_array['code'] = $code; + break; + } + case 'TEST': { // TEST MODE + $this->barcode_array['num_rows'] = 5; + $this->barcode_array['num_cols'] = 15; + $this->barcode_array['bcode'] = array( + array(1,1,1,0,1,1,1,0,1,1,1,0,1,1,1), + array(0,1,0,0,1,0,0,0,1,0,0,0,0,1,0), + array(0,1,0,0,1,1,0,0,1,1,1,0,0,1,0), + array(0,1,0,0,1,0,0,0,0,0,1,0,0,1,0), + array(0,1,0,0,1,1,1,0,1,1,1,0,0,1,0)); + $this->barcode_array['code'] = $code; + break; + } + default: { + $this->barcode_array = false; + } + } + } +} // end of class + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_import.php b/inc/3rdparty/libraries/tcpdf/tcpdf_import.php new file mode 100644 index 000000000..09d726ba0 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tcpdf_import.php @@ -0,0 +1,104 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : This is a PHP class extension of the TCPDF library to +// import existing PDF documents. +// +//============================================================+ + +/** + * @file + * !!! THIS CLASS IS UNDER DEVELOPMENT !!! + * This is a PHP class extension of the TCPDF (http://www.tcpdf.org) library to import existing PDF documents.
      + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.001 + */ + +// include the TCPDF class +require_once(dirname(__FILE__).'/tcpdf.php'); +// include PDF parser class +require_once(dirname(__FILE__).'/tcpdf_parser.php'); + +/** + * @class TCPDF_IMPORT + * !!! THIS CLASS IS UNDER DEVELOPMENT !!! + * PHP class extension of the TCPDF (http://www.tcpdf.org) library to import existing PDF documents.
      + * @package com.tecnick.tcpdf + * @brief PHP class extension of the TCPDF library to import existing PDF documents. + * @version 1.0.001 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_IMPORT extends TCPDF { + + /** + * Import an existing PDF document + * @param $filename (string) Filename of the PDF document to import. + * @return true in case of success, false otherwise + * @public + * @since 1.0.000 (2011-05-24) + */ + public function importPDF($filename) { + // load document + $rawdata = file_get_contents($filename); + if ($rawdata === false) { + $this->Error('Unable to get the content of the file: '.$filename); + } + // configuration parameters for parser + $cfg = array( + 'die_for_errors' => false, + 'ignore_filter_decoding_errors' => true, + 'ignore_missing_filter_decoders' => true, + ); + try { + // parse PDF data + $pdf = new TCPDF_PARSER($rawdata, $cfg); + } catch (Exception $e) { + die($e->getMessage()); + } + // get the parsed data + $data = $pdf->getParsedData(); + // release some memory + unset($rawdata); + + // ... + + + print_r($data); // DEBUG + + + unset($pdf); + } + +} // END OF CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/tcpdf_parser.php b/inc/3rdparty/libraries/tcpdf/tcpdf_parser.php new file mode 100644 index 000000000..0b2a7e144 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tcpdf_parser.php @@ -0,0 +1,811 @@ +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : This is a PHP class for parsing PDF documents. +// +//============================================================+ + +/** + * @file + * This is a PHP class for parsing PDF documents.
      + * @package com.tecnick.tcpdf + * @author Nicola Asuni + * @version 1.0.014 + */ + +// include class for decoding filters +require_once(dirname(__FILE__).'/include/tcpdf_filters.php'); + +/** + * @class TCPDF_PARSER + * This is a PHP class for parsing PDF documents.
      + * @package com.tecnick.tcpdf + * @brief This is a PHP class for parsing PDF documents.. + * @version 1.0.010 + * @author Nicola Asuni - info@tecnick.com + */ +class TCPDF_PARSER { + + /** + * Raw content of the PDF document. + * @private + */ + private $pdfdata = ''; + + /** + * XREF data. + * @protected + */ + protected $xref = array(); + + /** + * Array of PDF objects. + * @protected + */ + protected $objects = array(); + + /** + * Class object for decoding filters. + * @private + */ + private $FilterDecoders; + + /** + * Array of configuration parameters. + * @private + */ + private $cfg = array( + 'die_for_errors' => false, + 'ignore_filter_decoding_errors' => true, + 'ignore_missing_filter_decoders' => true, + ); + +// ----------------------------------------------------------------------------- + + /** + * Parse a PDF document an return an array of objects. + * @param $data (string) PDF data to parse. + * @param $cfg (array) Array of configuration parameters: + * 'die_for_errors' : if true termitate the program execution in case of error, otherwise thows an exception; + * 'ignore_filter_decoding_errors' : if true ignore filter decoding errors; + * 'ignore_missing_filter_decoders' : if true ignore missing filter decoding errors. + * @public + * @since 1.0.000 (2011-05-24) + */ + public function __construct($data, $cfg=array()) { + if (empty($data)) { + $this->Error('Empty PDF data.'); + } + // find the pdf header starting position + if (($trimpos = strpos($data, '%PDF-')) === FALSE) { + $this->Error('Invalid PDF data: missing %PDF header.'); + } + // get PDF content string + $this->pdfdata = substr($data, $trimpos); + // get length + $pdflen = strlen($this->pdfdata); + // set configuration parameters + $this->setConfig($cfg); + // get xref and trailer data + $this->xref = $this->getXrefData(); + // parse all document objects + $this->objects = array(); + foreach ($this->xref['xref'] as $obj => $offset) { + if (!isset($this->objects[$obj]) AND ($offset > 0)) { + // decode objects with positive offset + $this->objects[$obj] = $this->getIndirectObject($obj, $offset, true); + } + } + // release some memory + unset($this->pdfdata); + $this->pdfdata = ''; + } + + /** + * Set the configuration parameters. + * @param $cfg (array) Array of configuration parameters: + * 'die_for_errors' : if true termitate the program execution in case of error, otherwise thows an exception; + * 'ignore_filter_decoding_errors' : if true ignore filter decoding errors; + * 'ignore_missing_filter_decoders' : if true ignore missing filter decoding errors. + * @public + */ + protected function setConfig($cfg) { + if (isset($cfg['die_for_errors'])) { + $this->cfg['die_for_errors'] = !!$cfg['die_for_errors']; + } + if (isset($cfg['ignore_filter_decoding_errors'])) { + $this->cfg['ignore_filter_decoding_errors'] = !!$cfg['ignore_filter_decoding_errors']; + } + if (isset($cfg['ignore_missing_filter_decoders'])) { + $this->cfg['ignore_missing_filter_decoders'] = !!$cfg['ignore_missing_filter_decoders']; + } + } + + /** + * Return an array of parsed PDF document objects. + * @return (array) Array of parsed PDF document objects. + * @public + * @since 1.0.000 (2011-06-26) + */ + public function getParsedData() { + return array($this->xref, $this->objects); + } + + /** + * Get Cross-Reference (xref) table and trailer data from PDF document data. + * @param $offset (int) xref offset (if know). + * @param $xref (array) previous xref array (if any). + * @return Array containing xref and trailer data. + * @protected + * @since 1.0.000 (2011-05-24) + */ + protected function getXrefData($offset=0, $xref=array()) { + if ($offset == 0) { + // find last startxref + if (preg_match_all('/[\r\n]startxref[\s]*[\r\n]+([0-9]+)[\s]*[\r\n]+%%EOF/i', $this->pdfdata, $matches, PREG_SET_ORDER, $offset) == 0) { + $this->Error('Unable to find startxref'); + } + $matches = array_pop($matches); + $startxref = $matches[1]; + } elseif (strpos($this->pdfdata, 'xref', $offset) == $offset) { + // Already pointing at the xref table + $startxref = $offset; + } elseif (preg_match('/([0-9]+[\s][0-9]+[\s]obj)/i', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset)) { + // Cross-Reference Stream object + $startxref = $offset; + } elseif (preg_match('/[\r\n]startxref[\s]*[\r\n]+([0-9]+)[\s]*[\r\n]+%%EOF/i', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset)) { + // startxref found + $startxref = $matches[1][0]; + } else { + $this->Error('Unable to find startxref'); + } + // check xref position + if (strpos($this->pdfdata, 'xref', $startxref) == $startxref) { + // Cross-Reference + $xref = $this->decodeXref($startxref, $xref); + } else { + // Cross-Reference Stream + $xref = $this->decodeXrefStream($startxref, $xref); + } + if (empty($xref)) { + $this->Error('Unable to find xref'); + } + return $xref; + } + + /** + * Decode the Cross-Reference section + * @param $startxref (int) Offset at which the xref section starts (position of the 'xref' keyword). + * @param $xref (array) Previous xref array (if any). + * @return Array containing xref and trailer data. + * @protected + * @since 1.0.000 (2011-06-20) + */ + protected function decodeXref($startxref, $xref=array()) { + $startxref += 4; // 4 is the lenght of the word 'xref' + // skip initial white space chars: \x00 null (NUL), \x09 horizontal tab (HT), \x0A line feed (LF), \x0C form feed (FF), \x0D carriage return (CR), \x20 space (SP) + $offset = $startxref + strspn($this->pdfdata, "\x00\x09\x0a\x0c\x0d\x20", $startxref); + // initialize object number + $obj_num = 0; + // search for cross-reference entries or subsection + while (preg_match('/([0-9]+)[\x20]([0-9]+)[\x20]?([nf]?)(\r\n|[\x20]?[\r\n])/', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) { + if ($matches[0][1] != $offset) { + // we are on another section + break; + } + $offset += strlen($matches[0][0]); + if ($matches[3][0] == 'n') { + // create unique object index: [object number]_[generation number] + $index = $obj_num.'_'.intval($matches[2][0]); + // check if object already exist + if (!isset($xref['xref'][$index])) { + // store object offset position + $xref['xref'][$index] = intval($matches[1][0]); + } + ++$obj_num; + } elseif ($matches[3][0] == 'f') { + ++$obj_num; + } else { + // object number (index) + $obj_num = intval($matches[1][0]); + } + } + // get trailer data + if (preg_match('/trailer[\s]*<<(.*)>>/isU', $this->pdfdata, $matches, PREG_OFFSET_CAPTURE, $offset) > 0) { + $trailer_data = $matches[1][0]; + if (!isset($xref['trailer']) OR empty($xref['trailer'])) { + // get only the last updated version + $xref['trailer'] = array(); + // parse trailer_data + if (preg_match('/Size[\s]+([0-9]+)/i', $trailer_data, $matches) > 0) { + $xref['trailer']['size'] = intval($matches[1]); + } + if (preg_match('/Root[\s]+([0-9]+)[\s]+([0-9]+)[\s]+R/i', $trailer_data, $matches) > 0) { + $xref['trailer']['root'] = intval($matches[1]).'_'.intval($matches[2]); + } + if (preg_match('/Encrypt[\s]+([0-9]+)[\s]+([0-9]+)[\s]+R/i', $trailer_data, $matches) > 0) { + $xref['trailer']['encrypt'] = intval($matches[1]).'_'.intval($matches[2]); + } + if (preg_match('/Info[\s]+([0-9]+)[\s]+([0-9]+)[\s]+R/i', $trailer_data, $matches) > 0) { + $xref['trailer']['info'] = intval($matches[1]).'_'.intval($matches[2]); + } + if (preg_match('/ID[\s]*[\[][\s]*[<]([^>]*)[>][\s]*[<]([^>]*)[>]/i', $trailer_data, $matches) > 0) { + $xref['trailer']['id'] = array(); + $xref['trailer']['id'][0] = $matches[1]; + $xref['trailer']['id'][1] = $matches[2]; + } + } + if (preg_match('/Prev[\s]+([0-9]+)/i', $trailer_data, $matches) > 0) { + // get previous xref + $xref = $this->getXrefData(intval($matches[1]), $xref); + } + } else { + $this->Error('Unable to find trailer'); + } + return $xref; + } + + /** + * Decode the Cross-Reference Stream section + * @param $startxref (int) Offset at which the xref section starts. + * @param $xref (array) Previous xref array (if any). + * @return Array containing xref and trailer data. + * @protected + * @since 1.0.003 (2013-03-16) + */ + protected function decodeXrefStream($startxref, $xref=array()) { + // try to read Cross-Reference Stream + $xrefobj = $this->getRawObject($startxref); + $xrefcrs = $this->getIndirectObject($xrefobj[1], $startxref, true); + if (!isset($xref['trailer']) OR empty($xref['trailer'])) { + // get only the last updated version + $xref['trailer'] = array(); + $filltrailer = true; + } else { + $filltrailer = false; + } + if (!isset($xref['xref'])) { + $xref['xref'] = array(); + } + $valid_crs = false; + $columns = 0; + $sarr = $xrefcrs[0][1]; + foreach ($sarr as $k => $v) { + if (($v[0] == '/') AND ($v[1] == 'Type') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == '/') AND ($sarr[($k +1)][1] == 'XRef'))) { + $valid_crs = true; + } elseif (($v[0] == '/') AND ($v[1] == 'Index') AND (isset($sarr[($k +1)]))) { + // first object number in the subsection + $index_first = intval($sarr[($k +1)][1][0][1]); + // number of entries in the subsection + $index_entries = intval($sarr[($k +1)][1][1][1]); + } elseif (($v[0] == '/') AND ($v[1] == 'Prev') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'numeric'))) { + // get previous xref offset + $prevxref = intval($sarr[($k +1)][1]); + } elseif (($v[0] == '/') AND ($v[1] == 'W') AND (isset($sarr[($k +1)]))) { + // number of bytes (in the decoded stream) of the corresponding field + $wb = array(); + $wb[0] = intval($sarr[($k +1)][1][0][1]); + $wb[1] = intval($sarr[($k +1)][1][1][1]); + $wb[2] = intval($sarr[($k +1)][1][2][1]); + } elseif (($v[0] == '/') AND ($v[1] == 'DecodeParms') AND (isset($sarr[($k +1)][1]))) { + $decpar = $sarr[($k +1)][1]; + foreach ($decpar as $kdc => $vdc) { + if (($vdc[0] == '/') AND ($vdc[1] == 'Columns') AND (isset($decpar[($kdc +1)]) AND ($decpar[($kdc +1)][0] == 'numeric'))) { + $columns = intval($decpar[($kdc +1)][1]); + } elseif (($vdc[0] == '/') AND ($vdc[1] == 'Predictor') AND (isset($decpar[($kdc +1)]) AND ($decpar[($kdc +1)][0] == 'numeric'))) { + $predictor = intval($decpar[($kdc +1)][1]); + } + } + } elseif ($filltrailer) { + if (($v[0] == '/') AND ($v[1] == 'Size') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'numeric'))) { + $xref['trailer']['size'] = $sarr[($k +1)][1]; + } elseif (($v[0] == '/') AND ($v[1] == 'Root') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'objref'))) { + $xref['trailer']['root'] = $sarr[($k +1)][1]; + } elseif (($v[0] == '/') AND ($v[1] == 'Info') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'objref'))) { + $xref['trailer']['info'] = $sarr[($k +1)][1]; + } elseif (($v[0] == '/') AND ($v[1] == 'Encrypt') AND (isset($sarr[($k +1)]) AND ($sarr[($k +1)][0] == 'objref'))) { + $xref['trailer']['encrypt'] = $sarr[($k +1)][1]; + } elseif (($v[0] == '/') AND ($v[1] == 'ID') AND (isset($sarr[($k +1)]))) { + $xref['trailer']['id'] = array(); + $xref['trailer']['id'][0] = $sarr[($k +1)][1][0][1]; + $xref['trailer']['id'][1] = $sarr[($k +1)][1][1][1]; + } + } + } + // decode data + if ($valid_crs AND isset($xrefcrs[1][3][0])) { + // number of bytes in a row + $rowlen = ($columns + 1); + // convert the stream into an array of integers + $sdata = unpack('C*', $xrefcrs[1][3][0]); + // split the rows + $sdata = array_chunk($sdata, $rowlen); + // initialize decoded array + $ddata = array(); + // initialize first row with zeros + $prev_row = array_fill (0, $rowlen, 0); + // for each row apply PNG unpredictor + foreach ($sdata as $k => $row) { + // initialize new row + $ddata[$k] = array(); + // get PNG predictor value + $predictor = (10 + $row[0]); + // for each byte on the row + for ($i=1; $i<=$columns; ++$i) { + // new index + $j = ($i - 1); + $row_up = $prev_row[$j]; + if ($i == 1) { + $row_left = 0; + $row_upleft = 0; + } else { + $row_left = $row[($i - 1)]; + $row_upleft = $prev_row[($j - 1)]; + } + switch ($predictor) { + case 10: { // PNG prediction (on encoding, PNG None on all rows) + $ddata[$k][$j] = $row[$i]; + break; + } + case 11: { // PNG prediction (on encoding, PNG Sub on all rows) + $ddata[$k][$j] = (($row[$i] + $row_left) & 0xff); + break; + } + case 12: { // PNG prediction (on encoding, PNG Up on all rows) + $ddata[$k][$j] = (($row[$i] + $row_up) & 0xff); + break; + } + case 13: { // PNG prediction (on encoding, PNG Average on all rows) + $ddata[$k][$j] = (($row[$i] + (($row_left + $row_up) / 2)) & 0xff); + break; + } + case 14: { // PNG prediction (on encoding, PNG Paeth on all rows) + // initial estimate + $p = ($row_left + $row_up - $row_upleft); + // distances + $pa = abs($p - $row_left); + $pb = abs($p - $row_up); + $pc = abs($p - $row_upleft); + $pmin = min($pa, $pb, $pc); + // return minumum distance + switch ($pmin) { + case $pa: { + $ddata[$k][$j] = (($row[$i] + $row_left) & 0xff); + break; + } + case $pb: { + $ddata[$k][$j] = (($row[$i] + $row_up) & 0xff); + break; + } + case $pc: { + $ddata[$k][$j] = (($row[$i] + $row_upleft) & 0xff); + break; + } + } + break; + } + default: { // PNG prediction (on encoding, PNG optimum) + $this->Error('Unknown PNG predictor'); + break; + } + } + } + $prev_row = $ddata[$k]; + } // end for each row + // complete decoding + $sdata = array(); + // for every row + foreach ($ddata as $k => $row) { + // initialize new row + $sdata[$k] = array(0, 0, 0); + if ($wb[0] == 0) { + // default type field + $sdata[$k][0] = 1; + } + $i = 0; // count bytes in the row + // for every column + for ($c = 0; $c < 3; ++$c) { + // for every byte on the column + for ($b = 0; $b < $wb[$c]; ++$b) { + if (isset($row[$i])) { + $sdata[$k][$c] += ($row[$i] << (($wb[$c] - 1 - $b) * 8)); + } + ++$i; + } + } + } + $ddata = array(); + // fill xref + if (isset($index_first)) { + $obj_num = $index_first; + } else { + $obj_num = 0; + } + foreach ($sdata as $k => $row) { + switch ($row[0]) { + case 0: { // (f) linked list of free objects + break; + } + case 1: { // (n) objects that are in use but are not compressed + // create unique object index: [object number]_[generation number] + $index = $obj_num.'_'.$row[2]; + // check if object already exist + if (!isset($xref['xref'][$index])) { + // store object offset position + $xref['xref'][$index] = $row[1]; + } + break; + } + case 2: { // compressed objects + // $row[1] = object number of the object stream in which this object is stored + // $row[2] = index of this object within the object stream + $index = $row[1].'_0_'.$row[2]; + $xref['xref'][$index] = -1; + break; + } + default: { // null objects + break; + } + } + ++$obj_num; + } + } // end decoding data + if (isset($prevxref)) { + // get previous xref + $xref = $this->getXrefData($prevxref, $xref); + } + return $xref; + } + + /** + * Get object type, raw value and offset to next object + * @param $offset (int) Object offset. + * @return array containing object type, raw value and offset to next object + * @protected + * @since 1.0.000 (2011-06-20) + */ + protected function getRawObject($offset=0) { + $objtype = ''; // object type to be returned + $objval = ''; // object value to be returned + // skip initial white space chars: \x00 null (NUL), \x09 horizontal tab (HT), \x0A line feed (LF), \x0C form feed (FF), \x0D carriage return (CR), \x20 space (SP) + $offset += strspn($this->pdfdata, "\x00\x09\x0a\x0c\x0d\x20", $offset); + // get first char + $char = $this->pdfdata[$offset]; + // get object type + switch ($char) { + case '%': { // \x25 PERCENT SIGN + // skip comment and search for next token + $next = strcspn($this->pdfdata, "\r\n", $offset); + if ($next > 0) { + $offset += $next; + return $this->getRawObject($offset); + } + break; + } + case '/': { // \x2F SOLIDUS + // name object + $objtype = $char; + ++$offset; + if (preg_match('/^([^\x00\x09\x0a\x0c\x0d\x20\s\x28\x29\x3c\x3e\x5b\x5d\x7b\x7d\x2f\x25]+)/', substr($this->pdfdata, $offset, 256), $matches) == 1) { + $objval = $matches[1]; // unescaped value + $offset += strlen($objval); + } + break; + } + case '(': // \x28 LEFT PARENTHESIS + case ')': { // \x29 RIGHT PARENTHESIS + // literal string object + $objtype = $char; + ++$offset; + $strpos = $offset; + if ($char == '(') { + $open_bracket = 1; + while ($open_bracket > 0) { + if (!isset($this->pdfdata{$strpos})) { + break; + } + $ch = $this->pdfdata{$strpos}; + switch ($ch) { + case '\\': { // REVERSE SOLIDUS (5Ch) (Backslash) + // skip next character + ++$strpos; + break; + } + case '(': { // LEFT PARENHESIS (28h) + ++$open_bracket; + break; + } + case ')': { // RIGHT PARENTHESIS (29h) + --$open_bracket; + break; + } + } + ++$strpos; + } + $objval = substr($this->pdfdata, $offset, ($strpos - $offset - 1)); + $offset = $strpos; + } + break; + } + case '[': // \x5B LEFT SQUARE BRACKET + case ']': { // \x5D RIGHT SQUARE BRACKET + // array object + $objtype = $char; + ++$offset; + if ($char == '[') { + // get array content + $objval = array(); + do { + // get element + $element = $this->getRawObject($offset); + $offset = $element[2]; + $objval[] = $element; + } while ($element[0] != ']'); + // remove closing delimiter + array_pop($objval); + } + break; + } + case '<': // \x3C LESS-THAN SIGN + case '>': { // \x3E GREATER-THAN SIGN + if (isset($this->pdfdata{($offset + 1)}) AND ($this->pdfdata{($offset + 1)} == $char)) { + // dictionary object + $objtype = $char.$char; + $offset += 2; + if ($char == '<') { + // get array content + $objval = array(); + do { + // get element + $element = $this->getRawObject($offset); + $offset = $element[2]; + $objval[] = $element; + } while ($element[0] != '>>'); + // remove closing delimiter + array_pop($objval); + } + } else { + // hexadecimal string object + $objtype = $char; + ++$offset; + if (($char == '<') AND (preg_match('/^([0-9A-Fa-f\x09\x0a\x0c\x0d\x20]+)>/iU', substr($this->pdfdata, $offset), $matches) == 1)) { + // remove white space characters + $objval = strtr($matches[1], "\x09\x0a\x0c\x0d\x20", ''); + $offset += strlen($matches[0]); + } elseif (($endpos = strpos($this->pdfdata, '>', $offset)) !== FALSE) { + $offset = $endpos + 1; + } + } + break; + } + default: { + if (substr($this->pdfdata, $offset, 6) == 'endobj') { + // indirect object + $objtype = 'endobj'; + $offset += 6; + } elseif (substr($this->pdfdata, $offset, 4) == 'null') { + // null object + $objtype = 'null'; + $offset += 4; + $objval = 'null'; + } elseif (substr($this->pdfdata, $offset, 4) == 'true') { + // boolean true object + $objtype = 'boolean'; + $offset += 4; + $objval = 'true'; + } elseif (substr($this->pdfdata, $offset, 5) == 'false') { + // boolean false object + $objtype = 'boolean'; + $offset += 5; + $objval = 'false'; + } elseif (substr($this->pdfdata, $offset, 6) == 'stream') { + // start stream object + $objtype = 'stream'; + $offset += 6; + if (preg_match('/^([\r]?[\n])/isU', substr($this->pdfdata, $offset), $matches) == 1) { + $offset += strlen($matches[0]); + if (preg_match('/(endstream)[\x09\x0a\x0c\x0d\x20]/isU', substr($this->pdfdata, $offset), $matches, PREG_OFFSET_CAPTURE) == 1) { + $objval = substr($this->pdfdata, $offset, $matches[0][1]); + $offset += $matches[1][1]; + } + } + } elseif (substr($this->pdfdata, $offset, 9) == 'endstream') { + // end stream object + $objtype = 'endstream'; + $offset += 9; + } elseif (preg_match('/^([0-9]+)[\s]+([0-9]+)[\s]+R/iU', substr($this->pdfdata, $offset, 33), $matches) == 1) { + // indirect object reference + $objtype = 'objref'; + $offset += strlen($matches[0]); + $objval = intval($matches[1]).'_'.intval($matches[2]); + } elseif (preg_match('/^([0-9]+)[\s]+([0-9]+)[\s]+obj/iU', substr($this->pdfdata, $offset, 33), $matches) == 1) { + // object start + $objtype = 'obj'; + $objval = intval($matches[1]).'_'.intval($matches[2]); + $offset += strlen ($matches[0]); + } elseif (($numlen = strspn($this->pdfdata, '+-.0123456789', $offset)) > 0) { + // numeric object + $objtype = 'numeric'; + $objval = substr($this->pdfdata, $offset, $numlen); + $offset += $numlen; + } + break; + } + } + return array($objtype, $objval, $offset); + } + + /** + * Get content of indirect object. + * @param $obj_ref (string) Object number and generation number separated by underscore character. + * @param $offset (int) Object offset. + * @param $decoding (boolean) If true decode streams. + * @return array containing object data. + * @protected + * @since 1.0.000 (2011-05-24) + */ + protected function getIndirectObject($obj_ref, $offset=0, $decoding=true) { + $obj = explode('_', $obj_ref); + if (($obj === false) OR (count($obj) != 2)) { + $this->Error('Invalid object reference: '.$obj); + return; + } + $objref = $obj[0].' '.$obj[1].' obj'; + // ignore leading zeros + $offset += strspn($this->pdfdata, '0', $offset); + if (strpos($this->pdfdata, $objref, $offset) != $offset) { + // an indirect reference to an undefined object shall be considered a reference to the null object + return array('null', 'null', $offset); + } + // starting position of object content + $offset += strlen($objref); + // get array of object content + $objdata = array(); + $i = 0; // object main index + do { + // get element + $element = $this->getRawObject($offset); + $offset = $element[2]; + // decode stream using stream's dictionary information + if ($decoding AND ($element[0] == 'stream') AND (isset($objdata[($i - 1)][0])) AND ($objdata[($i - 1)][0] == '<<')) { + $element[3] = $this->decodeStream($objdata[($i - 1)][1], $element[1]); + } + $objdata[$i] = $element; + ++$i; + } while ($element[0] != 'endobj'); + // remove closing delimiter + array_pop($objdata); + // return raw object content + return $objdata; + } + + /** + * Get the content of object, resolving indect object reference if necessary. + * @param $obj (string) Object value. + * @return array containing object data. + * @protected + * @since 1.0.000 (2011-06-26) + */ + protected function getObjectVal($obj) { + if ($obj[0] == 'objref') { + // reference to indirect object + if (isset($this->objects[$obj[1]])) { + // this object has been already parsed + return $this->objects[$obj[1]]; + } elseif (isset($this->xref[$obj[1]])) { + // parse new object + $this->objects[$obj[1]] = $this->getIndirectObject($obj[1], $this->xref[$obj[1]], false); + return $this->objects[$obj[1]]; + } + } + return $obj; + } + + /** + * Decode the specified stream. + * @param $sdic (array) Stream's dictionary array. + * @param $stream (string) Stream to decode. + * @return array containing decoded stream data and remaining filters. + * @protected + * @since 1.0.000 (2011-06-22) + */ + protected function decodeStream($sdic, $stream) { + // get stream lenght and filters + $slength = strlen($stream); + if ($slength <= 0) { + return array('', array()); + } + $filters = array(); + foreach ($sdic as $k => $v) { + if ($v[0] == '/') { + if (($v[1] == 'Length') AND (isset($sdic[($k + 1)])) AND ($sdic[($k + 1)][0] == 'numeric')) { + // get declared stream lenght + $declength = intval($sdic[($k + 1)][1]); + if ($declength < $slength) { + $stream = substr($stream, 0, $declength); + $slength = $declength; + } + } elseif (($v[1] == 'Filter') AND (isset($sdic[($k + 1)]))) { + // resolve indirect object + $objval = $this->getObjectVal($sdic[($k + 1)]); + if ($objval[0] == '/') { + // single filter + $filters[] = $objval[1]; + } elseif ($objval[0] == '[') { + // array of filters + foreach ($objval[1] as $flt) { + if ($flt[0] == '/') { + $filters[] = $flt[1]; + } + } + } + } + } + } + // decode the stream + $remaining_filters = array(); + foreach ($filters as $filter) { + if (in_array($filter, TCPDF_FILTERS::getAvailableFilters())) { + try { + $stream = TCPDF_FILTERS::decodeFilter($filter, $stream); + } catch (Exception $e) { + $emsg = $e->getMessage(); + if ((($emsg[0] == '~') AND !$this->cfg['ignore_missing_filter_decoders']) + OR (($emsg[0] != '~') AND !$this->cfg['ignore_filter_decoding_errors'])) { + $this->Error($e->getMessage()); + } + } + } else { + // add missing filter to array + $remaining_filters[] = $filter; + } + } + return array($stream, $remaining_filters); + } + + /** + * Throw an exception or print an error message and die if the K_TCPDF_PARSER_THROW_EXCEPTION_ERROR constant is set to true. + * @param $msg (string) The error message + * @public + * @since 1.0.000 (2011-05-23) + */ + public function Error($msg) { + if ($this->cfg['die_for_errors']) { + die('TCPDF_PARSER ERROR: '.$msg); + } else { + throw new Exception('TCPDF_PARSER ERROR: '.$msg); + } + } + +} // END OF TCPDF_PARSER CLASS + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/3rdparty/libraries/tcpdf/tools/.htaccess b/inc/3rdparty/libraries/tcpdf/tools/.htaccess new file mode 100644 index 000000000..8d2f25636 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tools/.htaccess @@ -0,0 +1 @@ +deny from all diff --git a/inc/3rdparty/libraries/tcpdf/tools/convert_fonts_examples.txt b/inc/3rdparty/libraries/tcpdf/tools/convert_fonts_examples.txt new file mode 100644 index 000000000..d5f8a4eae --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tools/convert_fonts_examples.txt @@ -0,0 +1,28 @@ +./tcpdf_addfont.php -b -t Type1 -f 4 -e symbol -i pdfasymbol.pfb +./tcpdf_addfont.php -b -t Type1 -f 4 -i pdfazapfdingbats.pfb +./tcpdf_addfont.php -b -t Type1 -f 32 -e cp1252 -i pdfatimes.pfb,pdfatimesb.pfb,pdfahelvetica.pfb,pdfahelveticab.pfb +./tcpdf_addfont.php -b -t Type1 -f 33 -e cp1252 -i pdfacourier.pfb,pdfacourierb.pfb +./tcpdf_addfont.php -b -t Type1 -f 96 -e cp1252 -i pdfahelveticabi.pfb,pdfahelveticai.pfb,pdfatimesi.pfb,pdfatimesbi.pfb +./tcpdf_addfont.php -b -t Type1 -f 97 -e cp1252 -i pdfacourieri.pfb,pdfacourierbi.pfb + + +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 32 -i DejaVuSans.ttf,DejaVuSans-Bold.ttf,DejaVuSansCondensed.ttf,DejaVuSansCondensed-Bold.ttf,DejaVuSans-ExtraLight.ttf,DejaVuSerif.ttf,DejaVuSerif-Bold.ttf,DejaVuSerifCondensed.ttf,DejaVuSerifCondensed-Bold.ttf +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 33 -i DejaVuSansMono.ttf,DejaVuSansMono-Bold.ttf +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 96 -i DejaVuSans-BoldOblique.ttf,DejaVuSansCondensed-BoldOblique.ttf,DejaVuSansCondensed-Oblique.ttf,DejaVuSerifCondensed-BoldItalic.ttf,DejaVuSerifCondensed-Italic.ttf,DejaVuSerif-Italic.ttf,DejaVuSerif-BoldItalic.ttf,DejaVuSans-Oblique.ttf +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 97 -i DejaVuSansMono-BoldOblique.ttf,DejaVuSansMono-Oblique.ttf + + + +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 32 -i FreeSans.ttf,FreeSansBold.ttf,FreeSerif.ttf,FreeSerifBold.ttf +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 33 -i FreeMono.ttf,FreeMonoBold.ttf +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 96 -i FreeSansBoldOblique.ttf,FreeSansOblique.ttf,FreeSerifBoldItalic.ttf,FreeSerifItalic.ttf +./tcpdf_addfont.php -b -t TrueTypeUnicode -f 97 -i FreeMonoBoldOblique.ttf,FreeMonoOblique.ttf + + +./tcpdf_addfont.php -b -t TrueTypeUnicode -i aeAlArabiya.ttf,aeFurat.ttf + + +./tcpdf_addfont.php -b -t CID0JP -f 32 -i cid0jp.ttf +./tcpdf_addfont.php -b -t CID0KR -f 32 -i cid0kr.ttf +./tcpdf_addfont.php -b -t CID0CS -f 32 -i cid0cs.ttf +./tcpdf_addfont.php -b -t CID0CT -f 32 -i cid0ct.ttf diff --git a/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php b/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php new file mode 100755 index 000000000..c0b258ec5 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/tools/tcpdf_addfont.php @@ -0,0 +1,269 @@ +#!/usr/bin/php -q +. +// +// See LICENSE.TXT file for more information. +// ------------------------------------------------------------------- +// +// Description : This is a command line script to generate TCPDF fonts. +// +//============================================================+ + +/** + * @file + * This is a command line script to generate TCPDF fonts.
      + * @package com.tecnick.tcpdf + * @version 1.0.000 + */ + +if (php_sapi_name() != 'cli') { + echo 'You need to run this command from console.'; + exit(1); +} + +$tcpdf_include_dirs = array(realpath(dirname(__FILE__).'/../tcpdf.php'), '/usr/share/php/tcpdf/tcpdf.php', '/usr/share/tcpdf/tcpdf.php', '/usr/share/php-tcpdf/tcpdf.php', '/var/www/tcpdf/tcpdf.php', '/var/www/html/tcpdf/tcpdf.php', '/usr/local/apache2/htdocs/tcpdf/tcpdf.php'); +foreach ($tcpdf_include_dirs as $tcpdf_include_path) { + if (@file_exists($tcpdf_include_path)) { + require_once($tcpdf_include_path); + break; + } +} + +/** + * Display help guide for this command. + */ +function showHelp() { + $help = <<'', 'enc'=>'', 'flags'=>32, 'outpath'=>K_PATH_FONTS, 'platid'=>3, 'encid'=>1, 'addcbbox'=>false, 'link'=>false); + +// short input options +$sopt = ''; +$sopt .= 't:'; +$sopt .= 'e:'; +$sopt .= 'f:'; +$sopt .= 'o:'; +$sopt .= 'p:'; +$sopt .= 'n:'; +$sopt .= 'b'; +$sopt .= 'l'; +$sopt .= 'i:'; +$sopt .= 'h'; + +// long input options +$lopt = array(); +$lopt[] = 'type:'; +$lopt[] = 'enc:'; +$lopt[] = 'flags:'; +$lopt[] = 'outpath:'; +$lopt[] = 'platid:'; +$lopt[] = 'encid:'; +$lopt[] = 'addcbbox'; +$lopt[] = 'link'; +$lopt[] = 'fonts:'; +$lopt[] = 'help'; + +// parse input options +$inopt = getopt($sopt, $lopt); + +// import options (with some sanitization) +foreach ($inopt as $opt => $val) { + switch ($opt) { + case 't': + case 'type': { + if (in_array($val, array('TrueTypeUnicode', 'TrueType', 'Type1', 'CID0JP', 'CID0KR', 'CID0CS', 'CID0CT'))) { + $options['type'] = $val; + } + break; + } + case 'e': + case 'enc': { + $options['enc'] = $val; + break; + } + case 'f': + case 'flags': { + $options['flags'] = intval($val); + break; + } + case 'o': + case 'outpath': { + $options['outpath'] = realpath($val); + if (substr($options['outpath'], -1) != '/') { + $options['outpath'] .= '/'; + } + break; + } + case 'p': + case 'platid': { + $options['platid'] = min(max(1, intval($val)), 3); + break; + } + case 'n': + case 'encid': { + $options['encid'] = min(max(0, intval($val)), 10); + break; + } + case 'b': + case 'addcbbox': { + $options['addcbbox'] = true; + break; + } + case 'l': + case 'link': { + $options['link'] = true; + break; + } + case 'i': + case 'fonts': { + $options['fonts'] = explode(',', $val); + break; + } + case 'h': + case 'help': + default: { + showHelp(); + break; + } + } // end of switch +} // end of while loop + +if (empty($options['fonts'])) { + echo "ERROR: missing input fonts (try --help for usage)\n\n"; + exit(2); +} + +// check the output path +if (!is_dir($options['outpath']) OR !is_writable($options['outpath'])) { + echo "ERROR: Can't write to ".$options['outpath']."\n\n"; + exit(3); +} + +echo "\n>>> Converting fonts for TCPDF:\n"; + +echo '*** Output dir set to '.$options['outpath']."\n"; + +// check if there are conversion errors +$errors = false; + +foreach ($options['fonts'] as $font) { + $fontfile = realpath($font); + $fontname = TCPDF_FONTS::addTTFfont($fontfile, $options['type'], $options['enc'], $options['flags'], $options['outpath'], $options['platid'], $options['encid'], $options['addcbbox'], $options['link']); + if ($fontname === false) { + $errors = true; + echo "--- ERROR: can't add ".$font."\n"; + } else { + echo "+++ OK : ".$fontfile.' added as '.$fontname."\n"; + } +} + +if ($errors) { + echo "--- Process completed with ERRORS!\n\n"; + exit(4); +} + +echo ">>> Process successfully completed!\n\n"; +exit(0); + +//============================================================+ +// END OF FILE +//============================================================+ diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index 80aa7e43c..d77fe0d81 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -262,53 +262,45 @@ class WallabagPDF extends WallabagEbooks { public function producePDF() { - $mpdf = new mPDF('c'); Tools::logm('Starting to produce PDF file'); + $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); + Tools::logm('Filling metadata for PDF...'); - - # headers - $mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|Produced with wallabag'); - $mpdf->SetFooter('{PAGENO}'); - - # intro - $html = '

      ' . $this->bookTitle . '

      -

      ' . _('Produced by wallabag with mPDF') . '

      + $pdf->SetCreator(PDF_CREATOR); + $pdf->SetAuthor(''); + $pdf->SetTitle($this->bookTitle); + $pdf->SetSubject('TCPDF Tutorial'); + $pdf->SetKeywords('TCPDF, PDF, example, test, guide'); + + Tools::logm('Adding introduction...'); + $pdf->AddPage(); + $intro = '

      ' . $this->bookTitle . '

      +

      ' . _('Produced by wallabag with tcpdf') . '

      '. _('Please open an issue if you have trouble with the display of this E-Book on your device.') . '

      '; - $html .= ''; - $i = 1; + + $pdf->writeHTMLCell(0, 0, '', '', $intro, 0, 1, 0, true, '', true); + + $i = 1; Tools::logm('Adding actual content...'); foreach ($this->entries as $item) { - $html .= '

      ' . $item['title'] . '

      '; - $html .= ''; + $pdf->AddPage(); + $html = '

      ' . $item['title'] . '

      '; $html .= $item['content']; - $html .= ''; + $pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true); $i = $i+1; } - - $mpdf->WriteHTML($html); - # remove characters that make mpdf bug - $char_in = array('/', '.', ',', ':', '|'); - $pdfExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName . '.pdf')); # maybe someone can make a proper regex of this ? + // set image scale factor + $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - # index - $html = '

      Index

      - - '; + + - $mpdf->WriteHTML($html); - - $mpdf->Output('cache/' . $pdfExportName); - - header('Content-Disposition: attachment; filename="' . $pdfExportName . '"'); + $pdf->Output($this->bookFileName, 'I'); - header('Content-Transfer-Encoding: base64'); - header('Content-Type: application/pdf'); - echo file_get_contents('cache/' . $pdfExportName); - Tools::logm('PDF file produced'); } } \ No newline at end of file diff --git a/inc/poche/global.inc.php b/inc/poche/global.inc.php index 182f721de..728528f81 100755 --- a/inc/poche/global.inc.php +++ b/inc/poche/global.inc.php @@ -45,7 +45,8 @@ require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPubChapterSplitter.php'; require_once INCLUDES . '/3rdparty/libraries/MOBIClass/MOBI.php'; # pdf library -require_once INCLUDES . '/3rdparty/libraries/mpdf/mpdf.php'; +#require_once INCLUDES . '/3rdparty/libraries/mpdf/mpdf.php'; +require_once INCLUDES . '/3rdparty/libraries/tcpdf/tcpdf.php'; # system configuration; database credentials et caetera require_once INCLUDES . '/poche/config.inc.php'; From a1b31d93b69c78db0ebc0635b619b02ee7392957 Mon Sep 17 00:00:00 2001 From: tcit Date: Sat, 27 Sep 2014 19:42:37 +0200 Subject: [PATCH 016/119] get up to date --- inc/poche/Routing.class.php | 92 ++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 52 deletions(-) mode change 100644 => 100755 inc/poche/Routing.class.php diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php old mode 100644 new mode 100755 index ec33432ca..0b3730580 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php @@ -98,62 +98,50 @@ class Routing private function _launchAction() { if (isset($_GET['login'])) { - // hello you - $this->wallabag->login($this->referer); - } elseif (isset($_GET['logout'])) { - // see you soon ! - $this->wallabag->logout(); - } elseif (isset($_GET['config'])) { - // update password - $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']); - } elseif (isset($_GET['newuser'])) { - $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']); - } elseif (isset($_GET['deluser'])) { - $this->wallabag->deleteUser($_POST['password4deletinguser']); - } elseif (isset($_GET['epub'])) { - $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['value']); - $epub->prepareData(); - $epub->produceEpub(); - } elseif (isset($_GET['mobi'])) { - $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); - $mobi->prepareData(); - $mobi->produceMobi(); - } elseif (isset($_GET['send2kindle'])) { - $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); - $mobi->prepareData(); - $mobi->produceMobi(TRUE); - } elseif (isset($_GET['pdf'])) { - $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']); - $pdf->prepareData(); - $pdf->producePDF(); - } elseif (isset($_GET['import'])) { - $import = $this->wallabag->import(); - $tplVars = array_merge($this->vars, $import); - } elseif (isset($_GET['download'])) { - Tools::downloadDb(); - } elseif (isset($_GET['empty-cache'])) { - Tools::emptyCache(); - } elseif (isset($_GET['export'])) { - $this->wallabag->export(); - } elseif (isset($_GET['updatetheme'])) { - $this->wallabag->tpl->updateTheme($_POST['theme']); - } elseif (isset($_GET['updatelanguage'])) { - $this->wallabag->language->updateLanguage($_POST['language']); - } elseif (isset($_GET['uploadfile'])) { - $this->wallabag->uploadFile(); - } elseif (isset($_GET['feed'])) { - if (isset($_GET['action']) && $_GET['action'] == 'generate') { + // hello to you + $this->wallabag->login($this->referer); + } elseif (isset($_GET['feed']) && isset($_GET['user_id'])) { + $tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0); + $this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']); + } + + //allowed ONLY to logged in user + if (\Session::isLogged() === true) + { + if (isset($_GET['logout'])) { + // see you soon ! + $this->wallabag->logout(); + } elseif (isset($_GET['config'])) { + // update password + $this->wallabag->updatePassword($_POST['password'], $_POST['password_repeat']); + } elseif (isset($_GET['newuser'])) { + $this->wallabag->createNewUser($_POST['newusername'], $_POST['password4newuser']); + } elseif (isset($_GET['deluser'])) { + $this->wallabag->deleteUser($_POST['password4deletinguser']); + } elseif (isset($_GET['epub'])) { + $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['id'], $_GET['value']); + $epub->run(); + } elseif (isset($_GET['import'])) { + $import = $this->wallabag->import(); + $tplVars = array_merge($this->vars, $import); + } elseif (isset($_GET['empty-cache'])) { + Tools::emptyCache(); + } elseif (isset($_GET['export'])) { + $this->wallabag->export(); + } elseif (isset($_GET['updatetheme'])) { + $this->wallabag->tpl->updateTheme($_POST['theme']); + } elseif (isset($_GET['updatelanguage'])) { + $this->wallabag->language->updateLanguage($_POST['language']); + } elseif (isset($_GET['uploadfile'])) { + $this->wallabag->uploadFile(); + } elseif (isset($_GET['feed']) && isset($_GET['action']) && $_GET['action'] == 'generate') { $this->wallabag->updateToken(); } - else { - $tag_id = (isset($_GET['tag_id']) ? intval($_GET['tag_id']) : 0); - $this->wallabag->generateFeeds($_GET['token'], filter_var($_GET['user_id'],FILTER_SANITIZE_NUMBER_INT), $tag_id, $_GET['type']); + elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) { + $plainUrl = new Url(base64_encode($_GET['plainurl'])); + $this->wallabag->action('add', $plainUrl); } } - elseif (isset($_GET['plainurl']) && !empty($_GET['plainurl'])) { - $plainUrl = new Url(base64_encode($_GET['plainurl'])); - $this->wallabag->action('add', $plainUrl); - } } public function _render($file, $vars) From 6fc2c29daaadcd5075aec6bde2fd0f94274367a8 Mon Sep 17 00:00:00 2001 From: tcit Date: Sat, 27 Sep 2014 19:47:50 +0200 Subject: [PATCH 017/119] revert routing bad deleting --- inc/poche/Routing.class.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index 0b3730580..bd61a0b39 100755 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php @@ -119,8 +119,21 @@ class Routing } elseif (isset($_GET['deluser'])) { $this->wallabag->deleteUser($_POST['password4deletinguser']); } elseif (isset($_GET['epub'])) { - $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['id'], $_GET['value']); - $epub->run(); + $epub = new WallabagEpub($this->wallabag, $_GET['method'], $_GET['value']); + $epub->prepareData(); + $epub->produceEpub(); + } elseif (isset($_GET['mobi'])) { + $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); + $mobi->prepareData(); + $mobi->produceMobi(); + } elseif (isset($_GET['send2kindle'])) { + $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); + $mobi->prepareData(); + $mobi->produceMobi(TRUE); + } elseif (isset($_GET['pdf'])) { + $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']); + $pdf->prepareData(); + $pdf->producePDF(); } elseif (isset($_GET['import'])) { $import = $this->wallabag->import(); $tplVars = array_merge($this->vars, $import); From fa926fb47c3d282c7662e4767923a5b7bd927a59 Mon Sep 17 00:00:00 2001 From: tcit Date: Sat, 27 Sep 2014 19:59:43 +0200 Subject: [PATCH 018/119] offering download for pdf file and comment in code --- inc/poche/WallabagEBooks.class.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index d77fe0d81..665697309 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -200,6 +200,9 @@ class WallabagMobi extends WallabagEBooks Tools::logm('Mobi file produced'); } else { + ## ## + # Not working yet !!! # + ## ## // we send file to kindle Tools::logm('Preparing to send file by email'); @@ -300,7 +303,7 @@ class WallabagPDF extends WallabagEbooks - $pdf->Output($this->bookFileName, 'I'); + $pdf->Output($this->bookFileName, 'FD'); } } \ No newline at end of file From b852df020c68ad6bc94df73cb1025c6b64ec10a6 Mon Sep 17 00:00:00 2001 From: tcit Date: Sun, 28 Sep 2014 12:18:47 +0200 Subject: [PATCH 019/119] add extension for pdf file --- inc/poche/WallabagEBooks.class.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index 665697309..9dc545dfe 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -299,11 +299,9 @@ class WallabagPDF extends WallabagEbooks // set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); - - - $pdf->Output($this->bookFileName, 'FD'); + $pdf->Output($this->bookFileName . '.pdf', 'FD'); } } \ No newline at end of file From 9f86454b48dec3c9ecfee8da224112eef0f61441 Mon Sep 17 00:00:00 2001 From: tcit Date: Sun, 28 Sep 2014 17:20:35 +0200 Subject: [PATCH 020/119] deleting send to kindle function --- inc/poche/Routing.class.php | 4 -- inc/poche/WallabagEBooks.class.php | 69 ++---------------------------- 2 files changed, 4 insertions(+), 69 deletions(-) diff --git a/inc/poche/Routing.class.php b/inc/poche/Routing.class.php index bd61a0b39..44b0e1683 100755 --- a/inc/poche/Routing.class.php +++ b/inc/poche/Routing.class.php @@ -126,10 +126,6 @@ class Routing $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); $mobi->prepareData(); $mobi->produceMobi(); - } elseif (isset($_GET['send2kindle'])) { - $mobi = new WallabagMobi($this->wallabag, $_GET['method'], $_GET['value']); - $mobi->prepareData(); - $mobi->produceMobi(TRUE); } elseif (isset($_GET['pdf'])) { $pdf = new WallabagPDF($this->wallabag, $_GET['method'], $_GET['value']); $pdf->prepareData(); diff --git a/inc/poche/WallabagEBooks.class.php b/inc/poche/WallabagEBooks.class.php index 9dc545dfe..2ddece610 100644 --- a/inc/poche/WallabagEBooks.class.php +++ b/inc/poche/WallabagEBooks.class.php @@ -165,7 +165,7 @@ class WallabagMobi extends WallabagEBooks * @author Sander Kromwijk */ - public function produceMobi($sendByMail = FALSE) + public function produceMobi() { Tools::logm('Starting to produce Mobi file'); @@ -194,70 +194,9 @@ class WallabagMobi extends WallabagEBooks } $mobi->setContentProvider($content); - if (!$sendByMail) { - // we offer file to download - $mobi->download($this->bookFileName.'.mobi'); - Tools::logm('Mobi file produced'); - } - else { - ## ## - # Not working yet !!! # - ## ## - // we send file to kindle - - Tools::logm('Preparing to send file by email'); - - $error = FALSE; - # testing Mail function - if (!function_exists('mail')) { - $error = _("Mail function is disabled. You can't send emails from your server"); - } - - $char_in = array('/', '.', ',', ':', '|'); # we sanitize filename to avoid conflicts with special characters (for instance, / goes for a directory) - $mobiExportName = preg_replace('/\s+/', '-', str_replace($char_in, '-', $this->bookFileName)) . '.mobi'; - - $file = 'cache/' . $mobiExportName; - $mobi->save($file); - - $file_size = filesize($file); - $filename = basename($file); - $handle = fopen($file, "r"); - $content = fread($handle, $file_size); - fclose($handle); - $content = chunk_split(base64_encode($content)); - - $uid = md5(uniqid(time())); - - //generate header for mail - $header = "From: wallabag <". $this->wallabag->user->email .">\r\n"; - $header .= "MIME-Version: 1.0\r\n"; - $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; - $header .= "This is a multi-part message in MIME format.\r\n"; - $header .= "--".$uid."\r\n"; - $header .= "Content-type:text/plain; charset=iso-8859-1\r\n"; - $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; - $header .= "send via wallabag\r\n\r\n"; - $header .= "--".$uid."\r\n"; - $header .= "Content-Type: application/x-mobipocket-ebook; name=\"".$filename."\"\r\n"; - $header .= "Content-Transfer-Encoding: base64\r\n"; - $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; - $header .= $content."\r\n\r\n"; - $header .= "--".$uid."--"; - - # trying to get the kindle email adress - if (!$this->wallabag->user->getConfigValue('kindleemail')) - { - $error = _("You didn't set your kindle's email adress !"); - } - if (!$error) { - mail($this->wallabag->user->getConfigValue('kindleemail'), '[wallabag] ' . $this->bookTitle, "", $header ); - $messages->add('s', _('The email has been sent to your kindle !')); - Tools::logm('Email sent'); - } else { - $messages->add('e', $error); - Tools::logm($error); - } - } + // we offer file to download + $mobi->download($this->bookFileName.'.mobi'); + Tools::logm('Mobi file produced'); } } From a0c57b35a338f95a7426f49461cbfa203ec49a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 4 Nov 2014 08:33:05 +0100 Subject: [PATCH 021/119] add HTML documentation --- docs/de/Einfuehrung.html | 105 ++++++++ docs/en/Getting_started.html | 105 ++++++++ docs/en/Help_wallabag.html | 90 +++++++ .../Download_and_install.html | 120 +++++++++ .../en/User_documentation/Hidden_options.html | 90 +++++++ .../Save_your_first_article.html | 115 +++++++++ docs/fr/Contribuer_à_wallabag.html | 125 ++++++++++ .../Créer_un_nouveau_thème.html | 90 +++++++ docs/fr/Documentation_technique/Docker.html | 90 +++++++ .../Dépôt_git_de_wallabag.html | 100 ++++++++ docs/fr/Documentation_technique/Vagrant.html | 108 +++++++++ .../wallabag_v2_(Symfony2).html | 90 +++++++ .../Classer_ses_articles.html | 122 ++++++++++ .../Configurer_wallabag.html | 102 ++++++++ .../Convertir_en_ePub.html | 101 ++++++++ .../Documentation_utilisateur/Flux_RSS.html | 110 +++++++++ .../Importer_:_Exporter.html | 116 +++++++++ .../Les_options_cachées.html | 114 +++++++++ .../Lire_un_article.html | 116 +++++++++ .../Multi-utilisateurs.html | 97 ++++++++ .../Documentation_utilisateur/Rechercher.html | 96 ++++++++ .../Sauvegarder_son_premier_article.html | 135 +++++++++++ .../Se_créer_un_compte_sur_Framabag.html | 103 ++++++++ .../Téléchargement_et_installation.html | 119 +++++++++ .../Un_article_est_mal_affiché.html | 106 ++++++++ docs/fr/Pour_commencer.html | 106 ++++++++ docs/img/app-thumbs.png | Bin 0 -> 93574 bytes docs/img/app.png | Bin 0 -> 240342 bytes docs/img/favicon.png | Bin 0 -> 1059 bytes docs/img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes docs/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes docs/index.html | 101 ++++++++ docs/js/bootstrap.min.js | 6 + docs/js/custom.js | 65 +++++ docs/js/editor.js | 53 ++++ docs/js/highlight.min.js | 1 + docs/js/jquery-1.11.0.min.js | 4 + docs/templates/default/themes/daux-blue.thm | 8 + .../themes/daux-blue/css/daux-blue.css | 5 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 ++++++++++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../themes/daux-blue/img/favicon-blue.png | Bin 0 -> 1054 bytes docs/templates/default/themes/daux-green.thm | 8 + .../themes/daux-green/css/daux-green.css | 5 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 ++++++++++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../themes/daux-green/img/favicon-green.png | Bin 0 -> 1051 bytes docs/templates/default/themes/daux-navy.thm | 8 + .../themes/daux-navy/css/daux-navy.css | 5 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 ++++++++++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../themes/daux-navy/img/favicon-navy.png | Bin 0 -> 1055 bytes docs/templates/default/themes/daux-red.thm | 8 + .../default/themes/daux-red/css/daux-red.css | 5 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 ++++++++++++++++++ .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes .../themes/daux-red/img/favicon-red.png | Bin 0 -> 1057 bytes 65 files changed, 3969 insertions(+) create mode 100644 docs/de/Einfuehrung.html create mode 100644 docs/en/Getting_started.html create mode 100644 docs/en/Help_wallabag.html create mode 100644 docs/en/User_documentation/Download_and_install.html create mode 100644 docs/en/User_documentation/Hidden_options.html create mode 100644 docs/en/User_documentation/Save_your_first_article.html create mode 100644 docs/fr/Contribuer_à_wallabag.html create mode 100644 docs/fr/Documentation_technique/Créer_un_nouveau_thème.html create mode 100644 docs/fr/Documentation_technique/Docker.html create mode 100644 docs/fr/Documentation_technique/Dépôt_git_de_wallabag.html create mode 100644 docs/fr/Documentation_technique/Vagrant.html create mode 100644 docs/fr/Documentation_technique/wallabag_v2_(Symfony2).html create mode 100644 docs/fr/Documentation_utilisateur/Classer_ses_articles.html create mode 100644 docs/fr/Documentation_utilisateur/Configurer_wallabag.html create mode 100644 docs/fr/Documentation_utilisateur/Convertir_en_ePub.html create mode 100644 docs/fr/Documentation_utilisateur/Flux_RSS.html create mode 100644 docs/fr/Documentation_utilisateur/Importer_:_Exporter.html create mode 100644 docs/fr/Documentation_utilisateur/Les_options_cachées.html create mode 100644 docs/fr/Documentation_utilisateur/Lire_un_article.html create mode 100644 docs/fr/Documentation_utilisateur/Multi-utilisateurs.html create mode 100644 docs/fr/Documentation_utilisateur/Rechercher.html create mode 100644 docs/fr/Documentation_utilisateur/Sauvegarder_son_premier_article.html create mode 100644 docs/fr/Documentation_utilisateur/Se_créer_un_compte_sur_Framabag.html create mode 100644 docs/fr/Documentation_utilisateur/Téléchargement_et_installation.html create mode 100644 docs/fr/Documentation_utilisateur/Un_article_est_mal_affiché.html create mode 100644 docs/fr/Pour_commencer.html create mode 100644 docs/img/app-thumbs.png create mode 100644 docs/img/app.png create mode 100644 docs/img/favicon.png create mode 100644 docs/img/glyphicons-halflings-white.png create mode 100644 docs/img/glyphicons-halflings.png create mode 100644 docs/index.html create mode 100644 docs/js/bootstrap.min.js create mode 100644 docs/js/custom.js create mode 100644 docs/js/editor.js create mode 100644 docs/js/highlight.min.js create mode 100644 docs/js/jquery-1.11.0.min.js create mode 100644 docs/templates/default/themes/daux-blue.thm create mode 100644 docs/templates/default/themes/daux-blue/css/daux-blue.css create mode 100644 docs/templates/default/themes/daux-blue/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/templates/default/themes/daux-blue/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/templates/default/themes/daux-blue/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/templates/default/themes/daux-blue/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/templates/default/themes/daux-blue/img/favicon-blue.png create mode 100644 docs/templates/default/themes/daux-green.thm create mode 100644 docs/templates/default/themes/daux-green/css/daux-green.css create mode 100644 docs/templates/default/themes/daux-green/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/templates/default/themes/daux-green/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/templates/default/themes/daux-green/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/templates/default/themes/daux-green/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/templates/default/themes/daux-green/img/favicon-green.png create mode 100644 docs/templates/default/themes/daux-navy.thm create mode 100644 docs/templates/default/themes/daux-navy/css/daux-navy.css create mode 100644 docs/templates/default/themes/daux-navy/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/templates/default/themes/daux-navy/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/templates/default/themes/daux-navy/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/templates/default/themes/daux-navy/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/templates/default/themes/daux-navy/img/favicon-navy.png create mode 100644 docs/templates/default/themes/daux-red.thm create mode 100644 docs/templates/default/themes/daux-red/css/daux-red.css create mode 100644 docs/templates/default/themes/daux-red/fonts/glyphicons-halflings-regular.eot create mode 100644 docs/templates/default/themes/daux-red/fonts/glyphicons-halflings-regular.svg create mode 100644 docs/templates/default/themes/daux-red/fonts/glyphicons-halflings-regular.ttf create mode 100644 docs/templates/default/themes/daux-red/fonts/glyphicons-halflings-regular.woff create mode 100644 docs/templates/default/themes/daux-red/img/favicon-red.png diff --git a/docs/de/Einfuehrung.html b/docs/de/Einfuehrung.html new file mode 100644 index 000000000..e3d2b9029 --- /dev/null +++ b/docs/de/Einfuehrung.html @@ -0,0 +1,105 @@ + + + + + + + Einfuehrung + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      wallabag ist eine Read-it-later-Anwendung: sie speichert Webseiten, indem sie lediglich die Inhalte behält. Elemente wie Navigations-Links und Werbung werden entfernt.

      +

      Funktionen

      +
        +
      • Inhalte der Webseiten werden gespeichert: Texte und Bilder
      • +
      • die Webanwendung passt sich dem benutzten Anzeigegerät (Smartphone, PC, ... ) an
      • +
      • Artikel können als ePub exportiert werden
      • +
      • dank Smartphone-Apps können Artikel auch offline gelesen werden
      • +
      • dank Browser-Addons können neue Links schnell hinzugefügt werden
      • +
      • viele Templates zur individuellen Anpassung des Erscheinungsbild von wallabag sind verfügbar
      • +
      • ... und viele weitere Funktionen!
      • +
      +

      Diese Anwenderdokumentation soll zeigen, wie man wallabag nutzen kann.

      +

      Demonstration

      +

      Wenn du alle wallabag-Funktionen ausprobieren möchtest, kannst du diese Demonstrations-Webseite nutzen: http://demo.wallabag.org

      +

      Ein Benutzerkonto erstellen

      +

      Wenn du wallabag nicht selbst installieren möchtest oder kannst, kannst du stattdessen ein kostenloses Benutzerkonto auf Framabag.org erstellen. Dazu brauchst du nur eine gültige E-Mail-Adresse.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/en/Getting_started.html b/docs/en/Getting_started.html new file mode 100644 index 000000000..011959bf4 --- /dev/null +++ b/docs/en/Getting_started.html @@ -0,0 +1,105 @@ + + + + + + + Getting started + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      wallabag is a read-it-later application: it saves a web page by keeping content only. Elements like navigation or ads are deleted.

      +

      Features

      +
        +
      • content of the web page is saved: text and pictures.
      • +
      • the web application is responsive
      • +
      • you can export articles into ePub
      • +
      • you can read your articles offline thanks to smartphones applications
      • +
      • you can easily save a new link thanks to browser addons
      • +
      • many templates are available to change your wallabag as you wish
      • +
      • and many others great features !
      • +
      +

      This user documentation is here to learn to you what you can do with wallabag.

      +

      Demonstration

      +

      If you want to try all wallabag features, there is a demonstration website: http://demo.wallabag.org

      +

      Create an account

      +

      Maybe you don't want to install and update wallabag by yourself, or you can't do it, it's possible to create a free account on Framabag.org. Just your email is needed.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/en/Help_wallabag.html b/docs/en/Help_wallabag.html new file mode 100644 index 000000000..5d4c307f1 --- /dev/null +++ b/docs/en/Help_wallabag.html @@ -0,0 +1,90 @@ + + + + + + + Help wallabag + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      TODO

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/en/User_documentation/Download_and_install.html b/docs/en/User_documentation/Download_and_install.html new file mode 100644 index 000000000..5ed5ce368 --- /dev/null +++ b/docs/en/User_documentation/Download_and_install.html @@ -0,0 +1,120 @@ + + + + + + + Download and install + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      I don't want to install wallabag

      +

      If you can't or don't want to install Wallabag on your server, we suggest you create a free account on Framabag wich uses our software: read the complete documentation here (TODO write Create a framabag account).

      +

      I want to install wallabag

      +

      Download the latest wallabag version and unpack it. Copy the files on your web server.

      +

      Prerequisites for your web server

      + +

      To ensure that your server has all the prerequisites, you can run the file wallabag_compatibility_test.php that is located in the install directory of wallabag.

      +

      Installation of the dependencies

      +

      In order to work properly, wallabag needs some dependencies. To install them, you have to use composer. In your wallabag folder, run the following commands:

      +
      curl -s http://getcomposer.org/installer | php
      +php composer.phar install
      +

      If you can't install composer (In order to work properly, Wallabag needs some dependencies), we provide you a vendor.zip file to unpack in your wallabag directory.

      +

      Permissions

      +

      Your web server needs a writing access in assets, cache and db directory. Otherwise, a message will report that the installation is impossible.

      +

      Installation of wallabag. At last.

      +

      Access to wallabag from your web browser. If your server is correctly configured, you reach the setup screen.

      +

      Fill your database type (sqlite, mysql ou postgresql) and finally the information for your user account.

      +

      wallabag is now installed.

      +

      Login

      +

      From your web browser, you reach the login screen : fill your username and your password to connect to your account.

      +

      Enjoy!

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/en/User_documentation/Hidden_options.html b/docs/en/User_documentation/Hidden_options.html new file mode 100644 index 000000000..654208138 --- /dev/null +++ b/docs/en/User_documentation/Hidden_options.html @@ -0,0 +1,90 @@ + + + + + + + Hidden options + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      TODO

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/en/User_documentation/Save_your_first_article.html b/docs/en/User_documentation/Save_your_first_article.html new file mode 100644 index 000000000..a3a89efa5 --- /dev/null +++ b/docs/en/User_documentation/Save_your_first_article.html @@ -0,0 +1,115 @@ + + + + + + + Save your first article + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Once connected, you have many ways to save an article.

      +

      From the web application

      +

      Thanks to the bookmarklet

      +

      From Wikipedia

      +
      A bookmarklet is a bookmark stored in a web browser that contains JavaScript commands to extend the browser's functionality.
      +

      From your smartphone

      +

      Android

      +

      Installation and configuration

      +

      TODO

      +

      Saving an article

      +

      TODO

      +

      Reading

      +

      TODO

      +

      iOS

      +

      Installation and configuration

      +

      TODO

      +

      Use

      +

      TODO

      +

      Windows Phone

      +

      Installation and configuration

      +

      TODO

      +

      From your browser

      +

      Firefox

      +

      TODO

      +

      Chrome

      +

      TODO

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Contribuer_à_wallabag.html b/docs/fr/Contribuer_à_wallabag.html new file mode 100644 index 000000000..4354826dd --- /dev/null +++ b/docs/fr/Contribuer_à_wallabag.html @@ -0,0 +1,125 @@ + + + + + + + Contribuer à wallabag + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Soumettre des bugs

      +

      Demande de support

      +

      Si vous avez un problème lors de l'installation ou de l'utilisation de wallabag (que ça soit l'application web ou les applications pour smartphone), utilisez le site de support http://support.wallabag.org.

      +

      Nous verrons alors si nous pouvons vous dépanner rapidement ou alors s'il s'agit un nouveau bug qu'il nous faudra corriger.

      +

      Il est préférable d'utiliser le site de support plutôt que de nous envoyer un mail : le suivi est plus pratique pour vous comme pour nous et la résolution de votre problème pourra resservir pour un autre utilisateur.

      +

      Créer un nouveau ticket

      +

      Si vous avez trouvé un bug lors de votre utilisation de wallabag, merci d'ouvrir un nouveau ticket sur Github (un compte est nécessaire).

      +

      Avant toute chose, pensez à lire les recommandations nécessaires pour la rédaction d'un nouveau ticket. Au mieux vous renseignez votre ticket, au mieux nous pourrons vous aider.

      + +

      Écrire et corriger la documentation

      +

      La documentation que vous êtes en train de lire n'est sûrement pas complète, à jour, traduite dans votre langue. C'est pourquoi nous vous invitons à participer à sa rédaction.

      +

      Le dépôt Github se trouve ici : https://github.com/wallabag/documentation.

      +

      Astuce : si vous êtes en train de lire une page de la documentation et vous vous rendez compte d'une erreur ou d'un oubli, cliquez sur le lien Fix this page qui se trouve à côté du titre de la page. Vous serez alors redirigés vers la page sur Github, vous n'aurez plus qu'à proposer vos modifications.

      +

      Corriger les bugs, résoudre les problèmes : faire du support

      +

      Deux possibilités :

      +
        +
      • lorsqu'un utilisateur de wallabag pose une nouvelle question sur le site de support, en tant qu'utilisateur avancé de wallabag, vous pouvez lui répondre.
      • +
      • sur Github, des tickets correspondent sûrement à vos compétences. Parcourez la liste des tickets et servez-vous.
      • +
      +

      Si vous souhaitez proposer une modification dans le code de wallabag, vous êtes le bienvenu. N'oubliez pas de lire les recommandations pour proposer vos modifications.

      +

      Communiquer

      +

      Rien de compliqué ici, parlez de wallabag autour de vous. Utilisez le mot-clé #wallabag sur tous vos réseaux sociaux préférés : twitter, Facebook, Diaspora*, Google+, etc.

      +

      D'ailleurs, voici la liste de nos comptes sur ces réseaux, si jamais vous voulez nous citer dans un de vos messages :

      +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_technique/Créer_un_nouveau_thème.html b/docs/fr/Documentation_technique/Créer_un_nouveau_thème.html new file mode 100644 index 000000000..d787aaf39 --- /dev/null +++ b/docs/fr/Documentation_technique/Créer_un_nouveau_thème.html @@ -0,0 +1,90 @@ + + + + + + + Créer un nouveau thème + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_technique/Docker.html b/docs/fr/Documentation_technique/Docker.html new file mode 100644 index 000000000..4ee6547a1 --- /dev/null +++ b/docs/fr/Documentation_technique/Docker.html @@ -0,0 +1,90 @@ + + + + + + + Docker + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_technique/Dépôt_git_de_wallabag.html b/docs/fr/Documentation_technique/Dépôt_git_de_wallabag.html new file mode 100644 index 000000000..cfddacc82 --- /dev/null +++ b/docs/fr/Documentation_technique/Dépôt_git_de_wallabag.html @@ -0,0 +1,100 @@ + + + + + + + Dépôt git de wallabag + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Si vous souhaitez contribuer au projet en proposant de nouvelles fonctionnalités ou en corrigeant des bugs, il faut suivre les recommandations que vous lirez ci-dessous concernant le dépôt Git disponible à cette adresse : https://github.com/wallabag/wallabag.

      +

      État des lieux

      +

      Pour la gestion des différentes versions de wallabag, nous utilisons Git.

      +

      Nous utilisons plusieurs branches pour le code source de l'application web de wallabag :

      +
        +
      • la branche master : c'est la branche stable, celle qui est téléchargée pour tous ceux qui souhaitent installer wallabag pour leur utilisation.
      • +
      • la branche dev : avant d'être sur la branche master, toutes les corrections de bugs et nouvelles fonctionnalités doivent passer par cette branche. Cette branche n'est pas conseillée pour une utilisation en production.
      • +
      • la branche v2-symfony : c'est la branche de la refonte de wallabag. Un chapitre complet lui est consacré.
      • +
      +

      Workflow

      +

      Toutes les consignes concernant le dépôt Git se trouve dans le fichier CONTRIBUTING.md de wallabag. Merci de le lire attentivement avant toute modification.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_technique/Vagrant.html b/docs/fr/Documentation_technique/Vagrant.html new file mode 100644 index 000000000..f5a8b310d --- /dev/null +++ b/docs/fr/Documentation_technique/Vagrant.html @@ -0,0 +1,108 @@ + + + + + + + Vagrant + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Pour vous permettre de mettre en place rapidement la configuration requise pour wallabag, nous vous proposons un fichier Vagrantfile.

      +

      Définition Wikipedia

      +
      Vagrant est un logiciel libre et open-source pour la création et la configuration des environnements de développement virtuel. Il peut être considéré comme un wrapper autour du logiciel de virtualisation comme VirtualBox.
      +

      Utiliser Vagrant pour wallabag

      +

      Voici la procédure pour exécuter wallabag au sein d'un conteneur Vagrant :

      +
      wget -O wallabag-dev.zip https://github.com/wallabag/wallabag/archive/dev.zip 
      +unzip wallabag-dev.zip 
      +cd wallabag-dev 
      +vagrant up
      +

      Accédez maintenant à http://localhost:8003 et à vous de jouer !

      +

      Qu'a installé le Vagrantfile ?

      +

      Le script installe un serveur LAMP, à savoir :

      +
        +
      • Ubuntu 14.04
      • +
      • Un serveur web Apache2
      • +
      • PHP5
      • +
      • SQLite ou MySQL ou PostgreSQL pour PHP
      • +
      • XDebug pour PHP
      • +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_technique/wallabag_v2_(Symfony2).html b/docs/fr/Documentation_technique/wallabag_v2_(Symfony2).html new file mode 100644 index 000000000..bfc325ed2 --- /dev/null +++ b/docs/fr/Documentation_technique/wallabag_v2_(Symfony2).html @@ -0,0 +1,90 @@ + + + + + + + wallabag v2 (Symfony2) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Classer_ses_articles.html b/docs/fr/Documentation_utilisateur/Classer_ses_articles.html new file mode 100644 index 000000000..b8e438a34 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Classer_ses_articles.html @@ -0,0 +1,122 @@ + + + + + + + Classer ses articles + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Pour pouvoir retrouver plus facilement vos articles, plusieurs méthodes existent.

      +

      Tags

      +

      Assigner un tag

      +

      Depuis l'article

      +

      Aujourd'hui, il n'est pas encore possible d'assigner un tag lorsque vous sauvegardez un nouvel article.

      +

      Tout ajout de tag se fera donc sur un article déjà sauvegardé.

      +

      Sur la page de lecture de l'article, se trouve une partie tags suivie d'un crayon. Cliquez sur ce crayon.

      +

      Saisissez dans la case les tags que vous souhaitez assigner. Saisissez autant de tgas que vous le voulez, vous pouvez les séparer par une virgule pour gagner du temps. L'auto-complétion existe ici : si vous tapez les premières lettres d'un tag déjà existant, inutile de taper le mot en entier, sélectionnez-le dans la liste déroulante. Une fois tous vos tags saisis, cliquez sur le bouton Tag.

      +

      Vous pouvez ensuite retourner lire votre article.

      +

      Depuis la recherche

      +

      Un chapitre complet sur la recherche existe. Ici, nous verrons uniquement comment assigner un tag depuis votre recherche.

      +

      Lorsque votre recherche vous affiche les résultats, vous avez un lien en bas de page Apply the tag ABCD to this search. Cliquez dessus : un tag en fonction de la recherche que vous venez d'effectuer (ici ABCD) sera assigné à tous les articles trouvés.

      +

      Retrouver tous les articles d'un même tag

      +

      Dans le menu de wallabag, cliquez sur Tags. Ici s'affichent tous les tags que vous avez créés, triés par nombre d'articles au sein de chaque tag. Cliquez sur l'un de ces tags pour retrouver tous les articles correspondants à ce tag.

      +

      Articles favoris

      +

      Lorsque vous souhaitez mettre de côté un article, vous pouvez le marquer comme favori.

      +

      Marquer un article comme favori

      +

      Depuis la page de lecture d'un article, ou depuis une liste d'articles (par exemple, la liste des articles non lus), vous pouvez mettre un article comme favori juste en cliquant sur l'étoile qui apparait.
      +Recliquer sur cette étoile enlèvera le statut favori de cet article.

      +

      Retrouver tous ses articles favoris

      +

      Dans le menu de wallabag, cliquez sur Favoris pour retrouver tous les articles que vous avez déjà mis en favori.

      +

      Articles archivés

      +

      Lorsque vous avez lu un article, vous pouvez l'archiver : ainsi il n'apparaitra plus dans votre liste d'articles non lus.
      +Le fait d'archiver un article ne le supprime pas de wallabag.

      +

      Archiver un article

      +

      Depuis la page de lecture d'un article, ou depuis une liste d'articles (par exemple, la liste des articles non lus), vous pouvez archiver un article juste en cliquant sur l'icône ✓.
      +Recliquer sur cette icône remettra l'article en statut non lu.

      +

      Retrouver tous ses articles archivés

      +

      Dans le menu de wallabag, cliquez sur Archive pour retrouver tous les articles que vous avez déjà archivés.

      +

      Supprimer l'article

      +

      Attention, la suppression d'un article est définitive : il est supprimé de la base de données de wallabag.

      +

      Pour supprimer un article, une icône de corbeille se trouve sur la page d'un article ou sur une liste d'articles (articles non lus, favoris ou archivés par exemple).

      +

      Nous vous faisons confiance : c'est pourquoi il n'y a aucune demande de confirmation lors de la suppression.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Configurer_wallabag.html b/docs/fr/Documentation_utilisateur/Configurer_wallabag.html new file mode 100644 index 000000000..da233c752 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Configurer_wallabag.html @@ -0,0 +1,102 @@ + + + + + + + Configurer wallabag + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Depuis le menu configuration, vous avez la possibilité de changer quelques options de wallabag.

      +

      Certaines parties ne seront pas présentées ici car elles bénéficient d'un chapitre complet dans la documentation (flux RSS, l'import depuis un service tiers, l'export de vos données, la conversion en ePub et le mode multi-utilisateurs).

      +

      Thème

      +

      Des goûts et des couleurs, on ne discute pas. C'est pourquoi wallabag vous propose de changer son habillage pour plaire à chacun.
      +Sélectionnez le thème de votre choix dans la liste déroulante et validez en cliquant sur Mettre à jour.

      +

      Langue

      +

      Sélectionnez la langue de votre choix dans la liste déroulante et validez en cliquant sur Mettre à jour.

      +

      Mot de passe

      +

      Saisissez votre nouveau mot de passe dans les deux champs prévus et validez en cliquant sur Mettre à jour.
      +Vous serez alors déconnecté et devrez saisir votre nouveau mot de passe pour accéder à wallabag.

      +

      Vider le cache

      +

      Le cache permet à wallabag d'effectuer certains traitements plus rapidement.
      +Après une mise à jour de wallabag, il est conseillé de vider le cache. Vous n'avez qu'un clic à faire pour le vider.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Convertir_en_ePub.html b/docs/fr/Documentation_utilisateur/Convertir_en_ePub.html new file mode 100644 index 000000000..03dd87a87 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Convertir_en_ePub.html @@ -0,0 +1,101 @@ + + + + + + + Convertir en ePub + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Pour que vous puissiez lire vos articles sauvegardés depuis votre liseuse, wallabag vous permet de les convertir au format ePub et ainsi vous créer un eBook pour vos longues soirées d'hiver.

      +

      Mise en garde

      +

      Attention, la génération de fichiers ePub peut être très consommatrice de ressources pour le serveur sur lequel est installé wallabag. Cela dépend du nombre d'articles et de leur longueur.
      +Ne générez pas un eBook trop important si cela n'est pas nécessaire.

      +

      Où convertir les articles

      +

      Vous pouvez convertir vos articles depuis différents endroits de wallabag :

      +
        +
      • sur la page de lecture d'un article : le lien ePub convertira ce seul article
      • +
      • depuis une liste d'articles (articles non lus, favoris ou archivés, articles d'un tag) : un lien en bas de page vous permet de convertir tous les articles de cette catégorie
      • +
      • depuis une recherche : le lien se trouve en bas de page
      • +
      • depuis la page de configuration : vous allez pouvoir convertir tous vos articles, peu importe la catégorie dans laquelle ils se trouvent
      • +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Flux_RSS.html b/docs/fr/Documentation_utilisateur/Flux_RSS.html new file mode 100644 index 000000000..98472097f --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Flux_RSS.html @@ -0,0 +1,110 @@ + + + + + + + Flux RSS + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Les flux RSS vous permettent :

      +
        +
      • de lire vos articles depuis votre lecteur de flux RSS préféré
      • +
      • d'activer les fonctionnalités de lecture pour les applications smartphones
      • +
      +

      Tout d'abord, vous devez activer la fonctionnalité RSS en générant votre jeton de flux.
      +Rendez-vous dans configuration de wallabag et créez le jeton dans la partie Flux. +À tout moment, vous pouvez générer un nouveau jeton.

      +

      Lire les articles

      +

      Une fois le jeton créé, vous avez accès à trois flux RSS :

      +
        +
      • celui des articles non lus
      • +
      • celui des articles favoris
      • +
      • celui des articles archivés
      • +
      +

      Ajoutez le flux de votre choix dans votre lecteur de flux RSS.
      +Attention, lorsque vous lirez un article depuis votre lecteur de flux, ça ne le marquera pas comme lu dans wallabag.

      +

      Partager vos lectures

      +

      Si vous souhaitez partager vos lectures avec quelqu'un, envoyez-lui par exemple le flux RSS de vos articles préférés. Ainsi, dès qu'un article sera mis en favori dans wallabag, cette personne pourra également le lire.

      +

      Activer les fonctionnalités pour smartphones

      +

      Vous avez créé le jeton de flux RSS : il va vous être utile pour configurer votre application smartphone. Pour en savoir sur les applications smartphones, vous pouvez lire Sauvegarder son premier article.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Importer_:_Exporter.html b/docs/fr/Documentation_utilisateur/Importer_:_Exporter.html new file mode 100644 index 000000000..7ac155672 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Importer_:_Exporter.html @@ -0,0 +1,116 @@ + + + + + + + Importer : Exporter + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Importer

      +

      Pour importer des données dans wallabag, vous devez vous rendre dans la page Configuration.

      +

      Mise en garde

      +

      L'import de données peut être une opération gourmande pour votre serveur.

      +

      Depuis Pocket

      +

      TODO

      +

      Depuis Instapaper

      +

      TODO

      +

      Depuis Readability

      +

      TODO

      +

      Depuis wallabag

      +

      Puisque vous pouvez exporter vos données de wallabag (lire ci-dessous), il est évidemment possible de les réimporter.

      +

      Dans le formulaire d'import, sélectionnez votre fichier d'export wallabag (au format JSON). Démarrez l'import et voila.

      +

      Contrairement aux imports ci-dessus, le traitement est moins long car toutes les données (titre et contenu des articles) sont déjà présentes dans le fichier, il n'est pas nécessaire pour wallabag d'accéder à chacune des URL.
      +Par contre, le fichier d'import est forcément plus conséquent.

      +

      Depuis un fichier HTML ou JSON

      +

      TODO

      +

      Exporter

      +

      Il est possible d'exporter ses données depuis la page Configuration de wallabag. Plusieurs raisons possibles :

      +
        +
      • réinstaller wallabag
      • +
      • quitter le service Framabag pour installer soi-même wallabag
      • +
      • un compte sur un wallabag multi-utilisateurs souhaite avoir sa propre installation de wallabag
      • +
      • ...
      • +
      +

      Vous téléchargerez alors un fichier au format JSON.
      +Comme nous l'avons vu ci-dessus, il est possible d'importer ce fichier dans wallabag.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Les_options_cachées.html b/docs/fr/Documentation_utilisateur/Les_options_cachées.html new file mode 100644 index 000000000..2ad070b65 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Les_options_cachées.html @@ -0,0 +1,114 @@ + + + + + + + Les options cachées + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Mise en garde

      +

      Attention, cette partie concerne les utilisateurs avancés. Nous allons modifier un fichier important de wallabag, inc/poche/config.inc.php, il est donc conseillé de faire une sauvegarde de celui-ci avant toute modification.
      +Toute erreur lors d'une modification d'un fichier de wallabag pourra entrainer des dysfonctionnements.

      +

      Ce fichier est créé lorsque vous installez wallabag.
      +Installez donc d'abord wallabag, faites une copie du fichier et ouvrez-le avec votre éditeur de texte préféré.

      +

      Dans ce fichier sont définis des paramètres qui ne sont, aujourd'hui, pas encore disponibles dans la page Configuration de wallabag.

      +

      Modification des options avancées

      +

      Chaque paramètre est défini de cette façon :

      +
      @define ('NOM_DU_PARAMETRE', 'Valeur du paramètre');
      +

      Pour chaque ligne, vous ne pouvez modifier que la partie Valeur du paramètre.

      +

      Listons maintenant les différents paramètres que vous pouvez changer :

      +
        +
      • HTTP_PORT (par défaut, 80) : correspond au port HTTP de votre serveur web. À changer si votre serveur web est derrière un proxy. Valeur attendue : un nombre.
      • +
      • SSL_PORT (par défaut, 443) : correspond au port SSL de votre serveur web. À changer si votre serveur web utilises SSLH. Valeur attendue : un nombre.
      • +
      • DEBUG_POCHE (par défaut, FALSE) : si vous rencontrez des problèmes avec wallabag, nous vous demanderons peut-être d'activer le mode Debug. Valeurs attendues : TRUE ou FALSE.
      • +
      • DOWNLOAD_PICTURES (par défaut, FALSE) : permet de télécharger sur votre serveur les images des articles. Ce paramètre est désactivé par défaut pour ne pas surcharger votre serveur web. Nous préférons vous laisser activer vous-même ce paramètre. Valeurs attendues : TRUE ou FALSE.
      • +
      • SHARE_TWITTER (par défaut, TRUE) : permet d'activer le partage vers twitter. Valeurs attendues : TRUE ou FALSE.
      • +
      • SHARE_MAIL (par défaut, TRUE) : permet d'activer le partage par email. Valeurs attendues : TRUE ou FALSE.
      • +
      • SHARE_SHAARLI (par défaut, FALSE) : permet d'activer le partage vers votre installation de Shaarli (gestionnaire de favoris). Valeurs attendues : TRUE ou FALSE.
      • +
      • SHAARLI_URL (par défaut, 'http://myshaarliurl.com') : définit l'URL de votre installation de Shaarli. Valeur attendue : une URL.
      • +
      • FLATTR (par défaut, TRUE) : permet d'activer la possibilité de flattrer un article (Flattr est une plateforme de micro-dons). Si un article est flattrable, une icône s'affichera et vous permet d'envoyer un micro-don à l'auteur de l'article. Valeurs attendues : TRUE ou FALSE.
      • +
      • SHOW_PRINTLINK (par défaut, '1') : permet d'afficher le lien pour imprimer un article. Valeurs attendues : '0' pour désactiver ou '1' pour activer.
      • +
      • SHOW_READPERCENT (par défaut, '1') : permet d'afficher (sur les thèmes default, dark, dmagenta, solarized, solarized-dark) le pourcentage de lecture de l'article. Valeurs attendues : '0' pour désactiver ou '1' pour activer.
      • +
      • PAGINATION (par défaut, '12') : définit le nombre d'articles affichés sur une liste. Valeur attendue : un nombre.
      • +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Lire_un_article.html b/docs/fr/Documentation_utilisateur/Lire_un_article.html new file mode 100644 index 000000000..ffc2ed2cc --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Lire_un_article.html @@ -0,0 +1,116 @@ + + + + + + + Lire un article + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Lire un article n'est pas la chose la plus compliquée dans wallabag. Vous n'avez qu'à cliquer sur le titre d'un article pour l'afficher.

      +

      Revenir là où vous avez laissé votre article

      +

      Si vous quittez un article alors que vous n'êtes qu'à la moitié de celui-ci par exemple, lorsque vous reviendrez, wallabag vous renverra là où vous avez laissé l'article.

      +

      Cette astuce ne fonctionne qu'avec l'application web et pas les applications smartphones.

      +

      Actions possibles depuis l'article

      +

      Ces actions sont possibles grâce aux icônes affichés en haut de la page. Nous partons du principe que vous utilisez le thème Baggy (lire la documentation pour changer de thème), les icônes dans les autres thèmes sont sensiblement les mêmes.
      +Voici donc ces actions, par ordre d'apparition des icônes.

      +

      Lire l'article original

      +

      Renvoie vers l'article original.

      +

      Marquer l'article comme lu

      +

      Archive l'article, qui se retrouvera dans la catégorie Archive du menu de wallabag.
      +Recliquer dessus permet de replacer cet article en état non lu.

      +

      Mettre l'article en favori

      +

      Marque l'article comme favori, qui se retrouvera dans la catégorie Favoris du menu de wallabag.
      +Recliquer dessus permet d'enlever le statut de favori.

      +

      Supprimer l'article

      +

      Supprime complètement l'article de wallabag. Il ne pourra être restauré. Attention, aucune confirmation n'est demandée.

      +

      Partager vers twitter

      +

      Partage le titre et le lien original de l'article sur twitter.

      +

      Partager par email

      +

      Partage le titre et le lien original de l'article par email.

      +

      Imprimer l'article

      +

      Ouvre la fenêtre d'impression du navigateur.

      +

      Convertir en ePub

      +

      Convertit l'article au format ePub. Un chapitre complet existe.

      +

      Signaler que l'article s'affiche mal

      +

      Permet de signaler qu'un article ne s'affiche pas comme attendu. Un chaptire complet existe.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Multi-utilisateurs.html b/docs/fr/Documentation_utilisateur/Multi-utilisateurs.html new file mode 100644 index 000000000..7f319f112 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Multi-utilisateurs.html @@ -0,0 +1,97 @@ + + + + + + + Multi-utilisateurs + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Créer un nouveau compte

      +

      Si vous souhaitez utiliser wallabag pour plusieurs personnes, il est possible de créer de nouveaux comptes depuis la page de configuration.

      +

      En bas de cette page se trouve un formulaire où vous devez saisir un nom d'utilisateur et un mot de passe.

      +

      Il est maintenant possible de se connecter avec ce compte depuis la page d'identification de wallabag.

      +

      Aucune information n'est partagée entre les différents comptes.

      +

      Supprimer un compte

      +

      Il est possible de supprimer son propre compte, depuis la page de configuration. Il suffit de saisir son mot de passe et de demander la suppression.

      +

      Attention, lorsqu'il ne reste plus qu'un compte, il est évidemment impossible de le supprimer.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Rechercher.html b/docs/fr/Documentation_utilisateur/Rechercher.html new file mode 100644 index 000000000..04c0c8211 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Rechercher.html @@ -0,0 +1,96 @@ + + + + + + + Rechercher + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Pour que vous puissiez retrouver un article au plus vite, nous avons mis en place un moteur de recherche complet.

      +

      Cliquez sur Rechercher dans le menu de wallabag. Là, saisissez un terme de recherche.

      +

      wallabag ira parcourir tous vos articles et affichera ceux qui contiennent le terme de recherche dans leur titre ou dans le contenu de l'article.

      +

      Convertir cette recherche au format ePub

      +

      Vous pouvez convertir les articles retournés au format ePub, pour les lire sur une liseuse par exemple. Lisez Convertir en ePub pour en savoir plus.

      +

      Assigner un tag aux résultats de cette recherche

      +

      Vous pouvez créer un tag en fonction du critère de recherche. Lisez Classer ses articles pour en savoir plus.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Sauvegarder_son_premier_article.html b/docs/fr/Documentation_utilisateur/Sauvegarder_son_premier_article.html new file mode 100644 index 000000000..c3a023a88 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Sauvegarder_son_premier_article.html @@ -0,0 +1,135 @@ + + + + + + + Sauvegarder son premier article + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Une fois connecté sur wallabag, vous avez plusieurs moyens pour sauvegarder un article.

      +

      Depuis l'application web

      +

      Voyons d'abord comment faire depuis l'application web. Dans le menu, vous avez un lien Sauvegarder un lien. En cliquant dessus, un formulaire s'affiche : vous n'avez qu'à saisir l'adresse internet de l'article concerné.

      +

      Validez et le contenu de l'article est enregistré.

      +

      Par défaut, seul le texte est sauvegardé. Si vous souhaitez également conserver une copie des images sur votre serveur, il faut activer le paramètre DOWNLOAD_PICTURES. Lisez le chapitre Les options cachées pour en savoir plus.

      +

      Depuis le bookmarklet

      +

      Définition Wikipedia

      +
      Un bookmarklet est un petit programme JavaScript pouvant être stocké :
      +* soit en tant qu'URL dans un signet (marque-page ou lien favori) avec la plupart des navigateurs Web ;
      +* soit en tant qu'hyperlien dans une page web.
      +

      Depuis le menu de wallabag, cliquez sur configuration. Dans la première partie de cette page, nous avons listé les différents moyens de sauvegarder un article. Vous trouverez ainsi le bookmarklet (c'est le lien bag it !) à glisser / déposer dans la barre de favoris de votre navigateur.

      +

      Dorénavant, lorsque vous souhaitez sauvegarder un article sur lequel vous êtes en train de surfer, vous n'avez qu'à cliquer sur ce bookmarklet et l'article sera automatiquement enregistré.

      +

      Depuis son smartphone

      +

      Avant toute chose

      +

      Pour pouvoir utiliser une application smartphone, vous devez activer les flux RSS depuis la partie configuration de wallabag. Certaines informations seront ainsi affichées, comme votre token (jeton de sécurité). Lisez le chapitre Flux RSS pour en savoir plus.

      +

      Android

      +

      Installation et configuration

      +

      Vous pouvez télécharger l'application Android depuis le Google Play Store et depuis F-droid. C'est exactement la même application sur ces deux plateformes de téléchargement.

      +

      Une fois installée, démarrez l'application, rendez-vous dans la partie settings et renseignez les champs URL (Adresse complète de votre installation de wallabag ou de votre compte Framabag), User ID (très souvent, il vous faudra mettre 1 comme valeur). Si vous avez créé plusieurs comptes depuis wallabag, il faudra saisir l'identifiant du compte que vous souhaitez connecter à votre application) et Token (recopiez bien tous les caractères du token, disponible dans la configuration de wallabag).

      +

      Sauvegarde d'un article

      +

      Maintenant que tout est bien configuré, dès que vous naviguerez avec le navigateur de votre smartphone, vous pourrez à tout moment partager un article dans wallabag depuis le menu Partager : vous trouverez une entrée Bag it! qui ajoutera l'article dans wallabag.

      +

      Lecture

      +

      Lorsque vous ouvrez l'application, cliquez sur Synchronize : vos articles dernièrement sauvegardés seront ainsi téléchargés sur votre smartphone.

      +

      Vous n'avez maintenant plus besoin de connexion internet : cliquez sur le bouton List articles pour commencer votre lecture.

      +

      En bas de chaque article, un bouton Mark as read vous permet d'archiver l'article.

      +

      Aujourd'hui, la synchronisation ne s'effectue que dans un sens (de wallabag vers l'application), ce qui empêche de marquer comme lu un article sur wallabag depuis votre smartphone.

      +

      iOS

      +

      Installation et configuration

      +

      TODO

      +

      Utilisation

      +

      TODO

      +

      Windows Phone

      +

      Installation et configuration

      +

      Vous pouvez télécharger l'application Windows Phone depuis le Windows Store ou directement dans le Store de votre smartphone.

      +

      Une fois installée, l'application affichera une notification au premier lancement, demandant la configuration du serveur wallabag. Rendez-vous dans la partie Configuration de l'application en appuyant sur les 3 petits points du menu en bas de l'écran, puis renseignez les champs URL (Adresse complète de votre installation de wallabag ou de votre compte Framabag), User ID (très souvent, il vous faudra mettre 1 comme valeur).
      +Si vous avez créé plusieurs comptes depuis wallabag, il faudra saisir l'identifiant du compte que vous souhaitez connecter à votre application) et Token (recopiez bien tous les caractères du token, disponible dans la configuration de wallabag).
      +Enfin, sauvegardez les paramètres entrés.

      +

      Depuis son navigateur

      +

      Firefox

      +

      Téléchargez l'extension Firefox sur le site addons.mozilla.org et installez-la comme toute autre extension Firefox.

      +

      Dans les préférences de l'extension, renseignez l'URL complète de votre installation de wallabag ou de votre compte Framabag.

      +

      Personnalisez la barre d'outils de Firefox pour ajouter wallabag (icône w). Lorsque vous vous trouvez sur un article que vous souhaitez sauvegarder, cliquez sur cette icône : une nouvelle fenêtre s'ouvrira pour ajouter l'article et elle se refermera automatiquement.

      +

      Chrome

      +

      Téléchargez l'extension Chrome sur le site dédié et installez-la comme toute autre extension Chrome.

      +

      Dans les options de l'extension, renseignez l'URL complète de votre installation de wallabag ou de votre compte Framabag.

      +

      Lors de l'installation de l'extension, une nouvelle icône est apparue dans la barre d'outils de Chrome, une icône w. Lorsque vous vous trouvez sur un article que vous souhaitez sauvegarder, cliquez sur cette icône : une popup s'ouvrira et vous confirmera que l'article a bien été sauvegardé.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Se_créer_un_compte_sur_Framabag.html b/docs/fr/Documentation_utilisateur/Se_créer_un_compte_sur_Framabag.html new file mode 100644 index 000000000..be2261052 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Se_créer_un_compte_sur_Framabag.html @@ -0,0 +1,103 @@ + + + + + + + Se créer un compte sur Framabag + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Puisque vous ne souhaitez peut-être pas gérer l'installation et la mise à jour de wallabag, ou puisque vous n'avez peut-être pas les connaissances pour l'installer, il vous est possible de vous créer un compte gratuit sur Framabag.org.

      +

      Création du compte

      +

      Cliquez sur le bouton Créez votre compte / Create your account.

      +

      Vous devez saisir certaines informations : votre nom d'utilisateur, votre mot de passe et votre adresse email. Votre adresse n'est utilisée que pour la validation de votre compte, sauf si vous cochez la case pour recevoir la newsletter (3 à 4 envois par an).

      +

      Une fois ce formulaire validé, vous recevez un email avec un lien de confirmation. Cliquez dessus, votre compte sera alors créé.

      +

      Vous recevrez un dernier email avec l'adresse de votre compte Framabag, de la forme https://www.framabag.org/u/votre-nom-d'utilisateur.

      +

      Stockage de vos informations

      +

      Framabag utilise une base de données par utilisateur. Nous ne faisons et ne ferons aucune utilisation de vos données stockées.

      +

      Vous avez oublié votre mot de passe

      +

      Si vous avez oublié votre mot de passe pour vous connecter à Framabag, un formulaire est disponible depuis la page d'accueil du service.
      +Remplissez-le, un email de confirmation vous sera envoyé et vous permettra de saisir votre nouveau mot de passe.

      +

      Suppression de votre compte

      +

      Si vous souhaitez supprimer votre compte, contactez-nous par email : hello@wallabag.org avec l'adresse de création de votre compte, en nous indiquant votre nom d'utilisateur.

      +

      Nous vous répondrons quand votre compte sera supprimé : dès cet instant, plus aucune information vous concernant ne sera stockée sur Framabag.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Téléchargement_et_installation.html b/docs/fr/Documentation_utilisateur/Téléchargement_et_installation.html new file mode 100644 index 000000000..6d7dfa37e --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Téléchargement_et_installation.html @@ -0,0 +1,119 @@ + + + + + + + Téléchargement et installation + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Je ne souhaite pas installer wallabag

      +

      Puisque vous ne voulez pas, puisque vous ne pouvez pas, nous vous proposons de vous créer un compte gratuit : lisez la documentation complète ici.

      +

      Je souhaite installer wallabag

      +

      Téléchargez la dernière version de wallabag et décompressez-la. Copiez les fichiers sur votre serveur web.

      +

      Pré-requis pour votre serveur web

      + +

      Pour être sûr que votre serveur possède tous les pré-requis, vous pouvez exécuter le fichier wallabag_compatibility_test.php qui se trouve dans le répertoire install de wallabag.

      +

      Installation des dépendances

      +

      Pour pouvoir fonctionner, wallabag a besoin de dépendances. Pour les installer, vous devez utiliser composer. Dans votre dossier wallabag, exécutez les deux commandes suivantes :

      +
      curl -s http://getcomposer.org/installer | php
      +php composer.phar install
      +

      Si vous ne pouvez pas installer composer (dans le cas d'hébergement mutualisé par exemple), nous vous proposons un fichier vendor.zip à décompresser dans votre répertoire wallabag.

      +

      Permissions

      +

      Le serveur web doit avoir accès en écriture aux répertoires assets, cache et db. Sans cela, un message vous indiquera que l'installation est impossible.

      +

      Installation de wallabag. Enfin.

      +

      Accédez à wallabag depuis votre navigateur. Si votre serveur est bien configuré, vous arrivez sur l'écran d'installation.

      +

      Renseignez le type de votre base de données (sqlite, mysql ou postgresql), les informations de votre base de données et enfin les informations pour votre compte utilisateur.

      +

      wallabag est maintenant installé.

      +

      Connexion

      +

      Vous arrivez sur l'écran d'identification : saisissez votre identifiant et votre mot de passe et vous voici connecté.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Documentation_utilisateur/Un_article_est_mal_affiché.html b/docs/fr/Documentation_utilisateur/Un_article_est_mal_affiché.html new file mode 100644 index 000000000..2091df718 --- /dev/null +++ b/docs/fr/Documentation_utilisateur/Un_article_est_mal_affiché.html @@ -0,0 +1,106 @@ + + + + + + + Un article est mal affiché + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      Si vous pensez que wallabag récupère mal le contenu d'un article (texte absent ou incomplet), nous vous proposons plusieurs possibilités.

      +

      Demande d'aide

      +

      Que ça soit par mail ou via un ticket, n'oubliez pas de nous donner certaines informations qui sont importantes pour que nous puissions résoudre le problème au mieux :

      +
        +
      • l'URL de l'article concerné
      • +
      • ce que wallabag affiche
      • +
      • ce à quoi vous vous attendiez
      • +
      • la version de wallabag ou alors si vous utilisez Framabag
      • +
      +

      Ouvrir un ticket sur github

      +

      Pour ouvrir un nouveau ticket, il faut aller sur github. Un compte est nécessaire.
      +N'oubliez pas de nous envoyer les informations ci-dessus.

      +

      Nous envoyer un email

      +

      Envoyez-nous un lien avec comme sujet Wrong display in wallabag à l'adresse hello@wallabag.org.
      +N'oubliez pas de nous envoyer les informations ci-dessus.

      +

      Résoudre ce problème d'affichage

      +

      TODO

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/fr/Pour_commencer.html b/docs/fr/Pour_commencer.html new file mode 100644 index 000000000..344aa988f --- /dev/null +++ b/docs/fr/Pour_commencer.html @@ -0,0 +1,106 @@ + + + + + + + Pour commencer + + + + + + + + + + + + + + + +
      + +
      +
      + +
      + +
      + +
      +
      +
      +
      + + +

      wallabag est une application de lecture différée : elle permet simplement d'archiver une page web en ne conservant que le contenu. Les éléments superflus (menu, publicité, etc.) sont supprimés.

      +

      Fonctionnalités

      + +

      Cette documentation est justement là pour faire découvrir toutes les possibilités de wallabag. C'est parti !

      +

      Licence

      +

      wallabag et tous ses projets connexes (dont cette documentation) sont sous licence MIT.

      +

      Copyright © 2013-2014 Nicolas Lœuillet nicolas@loeuillet.org +This work is free. You can redistribute it and/or modify it under the terms of the MIT License. +See the COPYING file for more details.

      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + diff --git a/docs/img/app-thumbs.png b/docs/img/app-thumbs.png new file mode 100644 index 0000000000000000000000000000000000000000..8dff7c748774e07880d0764944b0d5078da6802b GIT binary patch literal 93574 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 z z6i}$qb2h?#bG#f{#{qx}9Kw2I?1i89qY(NWd{q%I)WJKH!0#J%ik1*D(YVEPKSVMP z7bh>0T*-@$vxR{2U+wp+{gZ8bNIHyB@GF_**D`Hj$oYrB&2+l&Md$pckL)NgbkD{} zE(k9wMh=g6Fc2Wu0%u~|NP6D=x-dVT2!ol=_`L6Wn!u#sd*9ocNt(huZ0DXqme<~N zvLVWPnb8Ry+TB59*dO_ z{?PMU6h8prhkNexp^Gw@AohUoc>Hmd%gST6W|@8Rc|JgqEirZJ2ol?6Pwc$vGwZXh zkw4i#vhPvk;TgbUP9ed%oW?0}T#f~Z24(dd6y%6nq2z)?2lVc&JdAqi8r0AS*{kaYi$E6=FE}P62d?2FD~sov z5qFG8BXv*1nu*iuN|q3~q5~P%Xm?O6?apk;>+i2XouuVlPpcbtP-=07*@!j?F?e&uoXI zB6T8-*vIbQP|?{qJFw)$3Q$@wvorTaqf}WrQW=ItX;?*ocjr+`b+Y`{>Md2*_6X`> z0T*r#LhN>=v!W8D$8JASk8QKdI9coQ`hjoWk}Ff!7BhVse-RFY83$EA{$WZ!w0Fb>!b@!Cucq8!l?6~b?3&H+&tGy^i#8|V zh(Evw1hTpWO^v@*YA2@8nsQuGweMO*uRMKptGpKW17CaJoc6irhd7H=kkN<&W?Ixq zD;jOspG2uYl}_JdQ@N9|U2_YEA2AHBN>F}t8uv_#loAgY!!sJIa`aFL4Vi)8W0I_%tnew>0fI z?{?EHbSR3)WIl0%^w){3M6|wp*Pl=e1hO zQ5%Z7=}SAT8K@M~s}-8QP1Rhv`7~o-EMl6ARZYu#Qi~e@6}ROavTVIRM6VkO`^;g% zn$iVd6QW&Ka#~)BQlrOhghwsghnJKk|YC00hc-a#1=~ycIL2-Wp{bc3# z?CF5uwCRYQ%5M|H?r<$pOa)(=J(z z0D&cFvSBTu|447ka99&fcP3%dwZcE< Q#*q-EAfqB(DQOn=KYgF>w*UYD literal 0 HcmV?d00001 diff --git a/docs/img/app.png b/docs/img/app.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9f76cdc74c6fd57eb28d9870fe766da9fd4c7e GIT binary patch literal 240342 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%0DfC zv{}q?U&zW0o{e+MnwDwN(UPOAJvCFWQSC)om<#WYbXo~s?}(X>CEDEve-s73RxvJP zy-$!wzXWnzWrq%BiElpKstk|SWOKd{(7}LokC|_JM>LN-IaQ4-Svl{};b&^-7wAj0 z@fmYSIFSm}w4au7j=wg6UTT>~{E~00ix*1>Jx!zWZ;I!|lSxp_?!2D+a*g^PYR0{y zmnIe)jg8KKEoLwCghX<@hWeT-ORvZfBbFnQw98~?f$NLP1@Vkb$W5cV>J}Ds>M2Ehw@EA`c~4b zw5BP$VrWfm%&>^*VmNx;JKFitbENsxYwc(trOLyF<5AIw& z-)jyIaTEJ}of7PemV_p$FusA4&2D~cM^>_+`Rv17@$FfDHYCZU=e3;Y8;fTpZut3b z&&Hs36rS=d4ydZ;?DlLPd!d5v7$?bdr+qvv%T_Qq&VBj()oS&Kgu8iGUOk7?-N-nP zyZT_t+DO<`G;Zh8+%`8NL8f%h6`O1ECm6u(;ao8gy@92;uGz}jY)%4N%?`RYWGz|S ztBV-Lj)z}!T)*C_h)7l^-JUbx?&F)3^nZGpsT-Bg1G5FnokikBmkQ!Sa3lQlFN-I|rI z-Ng=BlzGf=+0$G%^==(k8sQ`OU+pQ;bnXW>`GkLaJzq&~h$R-8oGOZOU@1kw%Yx{{ zD@nzLg@r$etJk}}xET4;8GB#$lG&;|DfROTlWtjaxDN`X8plV!=p^au*9I9A-DLfY zJQKFa{7tI=(MIVOGCwG8Pj)1+Ke{hs_;D!~PCz?EV*-jZkWWj`Jw8lAufw7v029~U z9zX47xIIbu8Jsb|>__s0iWs$ncu`8@R<(tsne2yIWnq9yK0m3vq3r^9DiN*|Z^6PS zi2|da+Hd2S_|)O?seAm-6LQ@I2h&Ute~KFA`cE9w4?{4gY`lZb8D4Y*Egk~^2kEyO zFGH>24^yDmSGqY}xfH!e-5opFGdF`pr}R9-@vD$m&gI*la7J9+w^xwY>r;t#Xe2`0 z_2`?^Uh#%YUX!az1b7v$q4>jkN_&;-2doe8<52*I0*cg*2p3T`9-VZE$!+A-FFOz| zj49{+5YitK=QaX|zjyD-a;;+M=*IE2nnY3g@=`QSon5O4xV6<6ad$9f^7>py;Cv29 zqYQq3GLc^zQXlaNE+{TEG%%CH>e$qg7Te72a%rt!stV4>6j_?*s}|g6%yNKGb6$N^ zQ%s+BlS*{}Gm0Bt%N)E8igM?jlzj{X`XT{}hW~XJdBzO;(-#`$hm@ae$pz9K$gNbvmJGkYCQv5cj ztHXy2bE5rr;QhtZ8y?pq1MZ>1RgXK>3UqRc7XaRzTdj#`dx$CUcxA_n`4l#SuWoH< z($LKyWM8-%MSQc;!fv@t)?m8`*Y;y{7lbaV90 zihF8Un`%34Q;?7D?4ki;V+vjw(#`f|;^~dBsN)=s`^1TV!Q3KkV?x~zm#sZP8ow|9 zb={=OtA&r{I?sGp$5Og+NuG1M*=@%y;`Opd#3AaAv#hMXIDKATtrxwB9uuB91$ARN zbve1_p!IXcbX?NIqBGR8a+K7mhrs}=$B4~u+||3$>a$nx&5ALvN4J@_6`MHY9W+!A?zv};Kt+9V z`e4~U`n*cPzb?eVetUUes+n0m)bAAVVdgL0VtE=VvN^7<$ts?o#95j%_nP#^)~=r}9hR&`bO^X0R- z#%LEj9(`fotjvQ2FoaheQZggQ7H%SY(rnc!D}KOfaTMIo*i3wvgAtA5o{~Z_fmZAc zP=Z*Ogb|h(|85p5AT)AZR-|>)iFv%x#n5uqBEM7TwY3Mu=(>IvLjU|C7L&||o$XJ9U(sT(MR*>8FnHG*4z3crHg~>cO zmEI}yF3#C&(HQUCvonrDv!3`5avyysy{NKodIMpp!vq@IuK^PoJmjEZQM3c&zwY}P=+WtS@M zTB0=V5QXIo?Yw#_ad;@4`g7dtN!fRWvWS$$tPI%s>vAca;Q@*l4T;F57FHIFn5JZk zagrl_Q8uLV>h&hWHRPGOl?8P|q1yMQPQL5YKvf!7VOFj)CZR8?|5Cg=IhempTxmQ5 zX#t($le`_BR;heuR{zrDdNCi&X7+cZTuzr`CZgjqVYCr))F-FeX_%=YSFc9rg3LeO zpP;bQkn%4EK(Cr-Z@Dm_lh*m)RPA{i~AYzp5nOVTMr zIVr0s9WSh*2xZ8%8xLVKUThx3^lfv=AF9F}=xmBjO|TZJSQahMp;W4u^n;`L>+Pre zH+EhsOTGZnN=laP$7#TkQu0CqNn7M`OHHPF^?GN8ze5r%IRjIyl1HLd81wC?_W@l2 zhKaH#R!T_dRZobyrtDPqjy%7xKj0q)3gG%j5L47yap2l4@}eIl5q);qnIywmS`MZa zjw{ZHk+gddGd@(g@C;riDSJCOjy5=ApCf^L z0z{GJ+~wQ6X!kbd3;5n>*5O7b-uF^sN7?#^(hO92ICA@$*IDooa;6k79H&wZf?KFo zkHx!e8E*;Z>q}GsNsOB(-#9ZuZp*{`9H^c8{fHWjc~^e^aovg^eQIi`9F#?$3&inc zatobt=Jms_E4{a0=nalX0%g%vy=5OHr14jl%^=~HHiQvv{Qcf1MOZI1+K%*q&(J~M zuq0HNuHAFmL^ip9)wB8iEe0U#@~X1dV&&lO>BcoNGk(Ut3wnSD26GI#N9XN1k6%Vo z(rvv%ba%uppylO&;WU*6=+hZY>2pZb+q);*%B|Qhppc?2Eo~{OcreyZewK$BVy9RYQ+1^2I*OIQE^BsI;Vd9uwXqmYGKX| zHcGMWo7U;?VC)qL5L?|3qC0!r?HjY4YL4oSbx!v@=Mi8&bGztMjn%jTeVh1bgM3-+ z@{n*hrX9mWB$RQ@T1#ZvyW;hDaID`n3vRDGdwYIxCgwHRJHm^=jJic6zWbFw@aI zphNtOuy$L;sniA;wWRZ0@0B!Uts!=QPI1R`eplaPvG%mInH=B{h{dnX?T0|$xaZwK zX`|y@r8`9~pWIq!@i0=_K5_PZ?R~${{PO#EYArT{)z#I*s;7Lj04jb1F%+emb>2XO+vmG& z#fa+@Z5FRr?&E_zcOh}*85r572=pzI9gV=0#gD!My&B*nIa2p$p^?B1qp+|r#1W69 zpfep%Xr)R7z3GOj&2M+BMfGDFRgvQXzSnvxv#YQMF_qDhpcRO7;pK1K$V2|e5^fl+ zf(5t(G&GF&v_<@hc3aHm)gDjU)?LSvy>~~cz|7ae5=s0w8d`U44ZdNlP_=Y#BS#@YK76ky z+E-5e&95EbZmsBk4jd%uxDXz)>zQ&D-Olir-VvA_L`{ zx54{h)m34CLI0A|7pC5Hc{exaqPleV_z6Q{26Q;_j{~ zP+W@_cPZ}f?o!;{-8DSv{d@m2@6KfM;rfs(d+zSBer5>>d5R?ISZ=gzF1%~cmJoq27Ehc@czs*sd2tO+UF=wei9Cpx?QX`u1CAe8yTf4eerL;07H_H1#~8T z`93!H*MJjoT<_C8Ecbpo$EC=LYKUk#G^lvk!PB1Yo@DF4Gq0>aULp7d6-9Ii3L;Po zc&LPJpcK58X1<@S@D*r#7lA|169sqs8h~XRDB>&v*uh*{+*);40DsF!^c6 zec49O&->{t1oSX;ruJ<1nRbd`K8NRYkL1fu5_DVF*Q><-$&sD}e!Esn6i_C!a0 zJtqgR5$&P7lYVfG5Nq;z9CnGOHC}X8=X14)LCS`Kr0WkO!Um5! zq@YQCEzR?0&_u6fJBoqlQvqk(Q=W+yzlmNYH|#SBUzpGj zuo{DQ_sWvhC z5a9*5q#N4q7n!x*EIR1-?1h%=y7@JCI_{JE8F-xZjB*yNUw;oLN?$w%Tm=?c^7n?#g~? z>QvJVuM_UZ2e}oOe5H2)KqE z$@8H+NE=C3wX8#(;>vr+9en#up3#b&;mWFapt?CfhwqQ6Z<2DzPrc(bjyiFs8=bNx zKl%WELi{inz7!)1rJvi6w(;pwpr{X;;5|o8!cPaz2CZq9##U9f;9dL4_a_(Gy}G@a z%0FrdKMXAe|DnYrg^TjobZU*jMY1{P#}h6iKb_$OC=(j>r7H~ zIIYzNV)-Ct7!TEE?~7SEvkA|`t5%T5g@%^Fq?PyET&H>Al{}EOgI5a}kFslQm$UEZaFv{+0#?fdpD8pBvVA^@=U{%b zg_`29i#Yb3(tYW1ReKLsPLQ4_V=}fHQ#l~@de?Q8p*=${00@*H`O>c~kwm-cGP5u> zqyBwY?mt1H$UmsfrD48cV;c;~4JDVZXYw`)moWLb-BZcIM(Vv)sm+aXgPH1m-ZEzU zd41;n575~+N#irGhuvv^|4DgL;-h zqL$BFZT68XKRg~+@AIz(cG6bQT)`YTm2T=zZO<*iY9x9` zPaHiIExONas!x;XhI{@=?}Ql{Qp_RnkhsFP?hUko0{L1k^%o6AZY&x0pf zL{>&Cspz(#gQ_kaLnv$wl-`ZzCA^}Bl|zzf zW~lNK$L8M8-FV+aI4qS8wzz?J3nDkwz&2d=YdyTX8K=Oac|&}ct*7g2E-|3>=Z{YR zMYf=*ih1$qKh|i2>U9;d8~W8|+QYG6--vq>fqdGfk98&n0Rhy^ynK|*Z<8P&&AEY? z$*f7|==`E04%=^<+>w?$2>Sy1vyH`tg~4HZJI-);qtyj;#%g8Q23?@t!?2ke@+kF= z_X5w(*K@SrmeKhK2>7M80tfTrxLZ9iKQf`hHfY4C-B~leje|cHSe4Z`?BjQoI3{#p=OR zH!o-1P)$IiRTICZtcBK$pkJZM&!4Qz=;kvdUIT9$AiEWU=o?@9r6!9lM~)+2D`VAE zeQnCa9r{ZJIEcmi@ys9!1%XiN-aKHVDq-Qqc+$+&?XU4GXe3T`P&3fL|rc$rd*?jN3{W(4$ zHG@$oEwa>%0MwPOp`lUFRc|~Hjh(K8(SCg%zo9r{T7FK67!Zjm6fe#7FK3;?d*k|5EvBPgJXQ+~1}Ao!e`Ips^o(cec&&+`Nx;!DZZ0(9>5lg6f5a^r z9@HWv;4Lu-*XCM>J3B}9K8^-j?4a`~*Yf9Kytp40GupkKcPCy53m&i{ur0kEvkrKJ z>i5=f%7#mj74bXDD+!CddvH>B8)LYziWr6;C9KO`*+xHyWdixrWxQMTgmOl~*Q*O( z`|MnG|0Xq0+8h`=d#1(%y$0Le}3Bp-m2YdsA`# zZ!dQ%&DM?geOl1kZ#j&pqdf zCO=cYF@t`RC4A1BU)=c0sp{NjHoJ&bUVawS@eHQq0SWeQiWeU2dJRDqIAs^DA^0{0 zhEJ272CKf-lfK>VJb-F}9=_|r7fPW@Vp6VY`kg21cm&(-oay`?-wAA`Z4phIbTNpn z*!Q)j;G#=5<4D0zZE4YE&y%e;2CtiBzf^kt>roavSx0(;Fy8J$l9TuG^D$)-&BK_d zTbN6mN_qa8wxzkF0fIjEQQavc1=$n2Y$?2JJ6&~>J`LC}#NC269_|xS?D0=!89*%$ zddx%87`l9tYCF0KtYpQVN=G!3ziO>QIILovQbQsh7A!QP^v+)-p%oS})jIau#BR5O zzf#5NWZJh8wSN9zMRb!%n5eKUByx6E=ZcQ|;|o`(-!iZ4-a?YiXMVHU(5(Ul3}U1Y zFw2xs2Fdi`JcXu1-{Y{5ImqjH3XssmWP$ITxwyD|6iH<)oMi7Doim9e^A*4UHRB}} z*4Y6P)6wI9q=-h??|8c~GLviN{V$R$KOPBBS5+?Kob{=x7y9$1CS87=zU;oX?T$r%{K5 z(Kt({UDhfpq@di{T%{pThnG0S>@~AgJy;A?p#qJp8GkI{IUrn6KSX$(OT1; z@@DFGMP5c?0;)E#;ovp#N^@@R@*L<|(o`oyJGfIhwth2J`n}rq*s*Z_DlgcSt^7T}vw-y>?)B=NQXETQMp+H$SY{2hXyZ{SGU z^~cK`d;Q;A4I$Mgbl&LYA*l3H(AfyzzsX7y=g8Ug(eqHqay%!LR1yT%G_2Z<286ti zUGQ$Fn6Creyv3$a?HU+^2{pQNf-S=p)9aFyU6t1|9#N7fNx4V^C^&=IVq*H0qt$zuK)Bc zClNs~c!l_gyQXF512B?LX}`eLd+xl&Zl%;m)a|kCOs4(7ePQDCr<%OSz} z?g74^&Og>|c9ut}_z0T(gIKca&;B{LMSmh`oS~b`aETGw4Uhd;6 z-Rr6mBw5yp@$lwp_t@ZCc-`E|>pr*Fp|NHaA|0>{Ul9Xtlk~Hze{vOt0xzfTNAl30 z^J+M_ch3Ry-4(S3{o<4Ae}0tJ>cv-KURlC33z=LcacX&+qy3Z<5O+0Z)8Grz(ff3E z-zW~qVEivU`cW&V1u>u4>}(|z_&UFNaU~VVHw0W~tMdjCP)S_2;0~IJnp@q~*72K7KpgehlRY zVFOfro#u|~-9mcP^)DY8Nz-dj$m2OS$cL>-l$`!fuT%&UTCVK$Z%6nLyi&HMoTKrZ z&j&(AZKjFO>ly|-=~8Gw5uV|J1331q`)Xg|u}!TEWL4;fw)&B4%S#x(0#O!f-`a&q zzP97gDR_hL?^iHbmluw7hmEGEBI@ib@CjE2V4X3KQeOT%JZT-&r2VPciMku)zxaN; z7*bhjYqPqJnV?jTM8DQ{{hdx`#5Lb;DFAq?$#K~uYL`E5OzxOxn66knGiNVPOR}#G zbNT2m;d)Un=kB5EmsRH*Q}NWhwJTLpC}hl^pYDFj-p1{g?y^DhbSOJdA`UM9duU(g zH28xpZ*F5LtFw)~!_CPmom(M_N{grGlJTGHzG|tsR(G`z(&>;#XyXj$N@8=7UPmR% zw>Z6KkEb=%Y~1GNQea0^^}_6{CZGK&qy#wT?uR_QLTVEj;o}6xo#%VKa=*DDxzaQN z&uwD&^*{TMyZsuzAsP?t2HrZQ%0N;bd;KpTD*%o)pw9KAww@61Q|2I{yvC49zMQpW z7)r0=-8+CP2FF!!QUaMYeKGUZCBL*|DLHDQ%`X86#J~t@e<5s6(P=1Y=|zJIiDrJfS_5fyW?o&? zJX7O5i7D?B)52C));e}3ot0`@80aw&tl$$Svk>s+~=%^S6*Ag!#ma(cW zzp{O%u_YFttF?2FG)AY|vC^j3RA^7EZz=&zL@2o+oV9Kv+^S;i(Xt$qm{ z>Ync|ah}KtSVMo4uWu@=6#T^=ptSgik(v#9yY~b4=d6T#Eg6tn(sG0SuKaIW16&S1 z{73H}crE9bCt{(?jXu{!32_}NUDrsVK5Z8;Cc?n#)!Ur!FiW}=0HpR?uw8k$GI(er z>>s8s;jJ~_0-COBOd0RIc8cDgEWVo<7&i6fu;IqGmlgDoQAcsG8Fr*4c^zIley^^M zTqqjl=39vc+-6}~qO$%>8Xr;)*zvg75REybNFsQKLePU|mM6TVlv8|8Wa))g!sku? z@uLfi8+ZC!Ewmu3{Bxi{e80&Qq;E2BI#fu3rk0JBAG}*p^5*4J17_!IY3feF@P>~l z)fN=@;_g?{>B+@1IBz!l4u^+VO8zpRQxM;R@jKH7^s_v{13l#NvzJ-DPQ<|2T2d@< zXk^k%23+4RxAABJ*dCxxg=U>^EK)Pm(YC2W^sSyY2}dIu@u;m9Ay(Qc4r=4=*JM`l_ z(smHepWQGwPH7n@<6ktQsb^N8l@W&SP_DmwTp0kEDj1FJBf1242rQ zFi`|{Wn2x8*~a2aFG3(KD;OMq5yy1d32Mgt9|>SVAyJ5%LD3AM=Bbu&M#_$-{lXF_ zSuN-ZniL5f%g6hXUvCL3-R;8fW~3=REt z5c|C^p5^}AHEs*23qz>>Lk0l&v_Nu*vu&xkG-JEy?lUV%NIJI>d{=S|abQ=aNYLX0 z7imz6+ip%Ef?ZPP`BkG#{$PD)1FhaG<}Bsrq~*|O3tKHBM(J%zOL{A4Fs1+@I&LB7 zd$oC{(XRKe$Uc2gl@@dP>-=zQ)pHbvR!c&WStVPB6Hj@B9~rL@xu>GvMu=bCb9g;V zOSQ)kVmDdL2!`c6D%VCNWAcTZZOuRxt7hBZ>A!~S@n1{=4v2!|`9nV!DIOhma>FFD%phui|Ep0WTvj40!*xf!nWbwHU zRCc~i7pwH%S!-ph_;-ItL`K$au-RKc0qr_Kc1L@aeaZer*FrfesapI;on;|g|1CWo zVJhXO|4_6;h{P&Uv#49ju1z%+_lA7*cHO^4SmE`pPcf;M@q&eK1oe#}-y1Xk!{`^& zOp1O1Xp;95?>040WgcSj-;L2S@1OIDJ%ZHhh%C=`C4=&QLfZY|tKkmW}1+Q_QwcNl74gDO)i|UK^xl%{! zn5IR|*^*J1xA|-Oti$W^{mfO+-Q~G3_p1j}5cH*=6FS`a0itOGDfiu5@p-+^DRJn0 zTJ0d#4~ova`9F!izuhyE!K-SZ8~0j20hfqo_oHjUtJOGJEH#=a?>tGa;im^f!K^~B z-DLijwGJ1H1%ouuMw+-vGyQP!%lPmx*7Js$UI!VRyOeXA6={8Do**v|7>SvTw`TBAr&0$1XeDuw)NvJz0N0qM&#DKl{ z9Kqh1MtvPTUs>Ln{T&4)Gf(iW^g>{+QlF8zf|v6Vwad%J#!z?1vKOP5_pn3~{5~ue19Zc`oGi{S; z7Z^v=RUci3R3%$SbR=bdNDCYcMChCn17OxE#*X2pfsc@QQ z9$VX{@xxT8C~$=X-e|qEb&;lWT6mw)2tg~$ylvAhT%%YTBphZww?{Y0tOF8K_Xd}D z51b*rLC9k%pRUPaX$>s=hM=2I%f1D!&;Bv}D^`9mR?lCA;Z50vhpnfb@k}}q^7>FV zXfdV{$8W9O%}nszsk&2?Lz2L&e}K%6taLgA-f7yuW7|7>TdUrf=t?E?dYn1RY?j+;#x`|GsC*(}UNfzu3$SgK9Pk>G&M$P%b$`7f2 zkqjk~0;diPoL)hj=YRk)-<+tP+8kYb;aN3rYf`=|^U+E9QI6@zqGdTe+N^OAz9FOF?XetJ)Mex&WXgj7%~j?pF4iH z?oke3w0u}^^w};ie@HT2-c%g2)>9Pq3`Np*-(VOC(vXooK8QzK_p|N>#rAWX;QrF) zEZYe*q_-W?o220^(-Ib@HErKZ@1((Gw?gNm%P9CG>QmA_(xi*Y{o$q7#Ojb(L%=8zp$tN3F(yF&19|U_W0VbjjQO*Yi@V7<4=89%unD<+X-b$#AGjC8&9Y<0@z*96Y9@LkPCo#{-9>0%&qf zNB4vJ3!6$ErSb$pMVqP2k)-RyfbGANH1e5zJB=G)L==>@Dm!X|`FpQCkm#?g`ed(l zh0(>vhuF^v2|QG=@EJ0&=*Sdd(~1%)cDny?2oA8=xeqr;QU_;_DTeGE@LxIH9zsP!9FoW37dl0xef zW|#D9;wQS&&#Bse&$4?Wn%DUJlZi8wG8+I|8q`EV*iE8n$HL@uN%&|Wn#-Ycrbsp% z{W5npiQ;C^>QI4~@N!Tvu@hc%#V7Tu>5zNfA70^J4&j9Nh}WC37$R8Dt3Y2vomFie ztigf8p^uU@0!R>ifgsGVXu*olPy#zCy8?%9qU=xz(NevFiNwyyLZ$bSfSA>SdgPNw z5@Y$ZZi|yfrI1Re?J5Duy2aZvPAH*L1|MacV_pUbEabR77~%J7_R_HN>eDVs?~qHU z8+u9|nvD%_t8J5XdwctQcdTBfX+591_U<8M(s=v1iRf9mO=#)1Eu)dQQ;UJ~Xcrg{ zNBe-Sb1I-eL@{10aUe&aE32wX#`IC)`W^<~-Tl{(O%UED7N~&qAuNd3lhOwh=EOD{(lrugoZx&h8>U%L#~P! zc$jHYGb@YA@kdXu&hZONyJfu8dWSyV1h8iDaV!Hhiqb&53pzcUiju?j=vu?eciKL! zfr!5b@2nY@kcY13J)n+LJ+w21l^T$?1oa#f!0C`%Ni>n_Ph1Fq-xV5a?4z!;`P;U5 z$m88RVQJq%uz7Oi@Wo`-=T@7l;nd>n^yQvPzWjXWYIApzh?IHZ%4o`HwUgLBg+08Y z2piu4iQ1cGkw^iqVQuvM{nmGVyT4FRLm*hGgexa+WSULAgqS{rU8h>=e^~WDz^dD1 zAgw`M3Xc4I9bq^ZLjvfpwsCMk<9E%6J7L=|iOo$e*KW4_OH)ToMAQbEr_Sk>E-Ww| zOXE+6Cwym8VxO%^=%Ei-N({a(0cO{5i z&Kr~M#^tC(@o9>aK5Q~%npBm6+11SI8o_i!Cz?4#S@H40Iy}A#%Ap~BL6)-I0i$y3 zWD#nSp(rr`fea|XjQ;=h>ObW|%!Fqv#1eAe%Rl29pdU}8{*+7GgVg@uKh-{E;M?Y=X)2&vRSKOqlbe$R;fm zH6O7Oyur(@){h63v|8DgCt6!qEPu0J776FTO`pJ&Q!kl@Zfjrh9HyY?MU8SrpVcjc zfvhGW3qqs#zl%@)eS5S}Ep-RWtJR?C46ej-5h$1}xY^g0xF0z&<*CAHR9Y3y^Cr|` zn_xQ%5-`2)4`vh0x!Jr3(lvQqti$ryg9G2u_^6S)Y1Dqa1!Kv;k9@6mk|2bVl^t6; z(s4bWy+r9o2()|wO5UkHU{GtGnw@cJKDy}d(e+ZZ?nGRt~0t#hw zpD;&LA`LtB<^2sU9OmNUa^H$r=E@0GS;)GywN2`Ep91OWXK@Sdudc#)?D9XO1)r_l zLwP%4o)WEgh@WVA-%cIR9^vEnAnSqggl?#zSjs!#;C-dc+`fO8%nK8AI#-p@_AO7v zQq_?)UzzmY&S@UW9t_CPMN|&Pfislpe#j!MRk3BF2A7ZW(9sf^^EF9isY5NvtI0|# zo$RNtHGUaycdVY0=9L-}2*3m4U1T}iFDQ&%tFaKm>Lyi&$aP7XAbKiHFYXY;;tYNG zN%HBxP}NKR-~YvKuD->QeM-Wl9BBCd3vk2MHpQC5RhoS!Cu4ahCf3#_$iY#Y|0!s% zcKeE+=RzV&DB?j@`0?3uGUa}$jy|i=exuMniwA}=LD=b(*W@!m^dpKV3Hq5OJwOP+ z&bMY%of08Oz=NcA)P|7>SSj>FG#YBFY_JZN7i{(!%FfU4;{w1t+0ia*jHsz#cjq$C zBJ;~RSJc|UbdepOIB4-AhGnE|f^f`gmlhV14#~ZXo#E6~ic8+q!9(4i&PC{< z1el~*O+Ldl_h%~@M4Z`58$(UjS3i27YXM!A3WZP#{M11|od9!;S|w_o_kjpcxNmQ) z>-gB4rD`SWx~I=k8C_2pAzzGHp5Ax1Rjx^#O&QchmvZzh6IQi(e>oWc&qfEBn`4&{ zH3<4+eTIgH?iNNb@);6&o;VOUo3*O{JgQp|c0BK<-I#P_`8(%MjIZAQU~iAQO6Lcx zDfIe2lTSEmwXej<&=53IHBxVI^y14xcT*FuL@g4#; z-;VpYaKggEz-ETp`3q&pnlSD8o-N2nc9%8<q+p_O<|>8?Q21Dt9be@5^`8Z`sW%n2ljF;ZqY?wAZbufr9b z8fZ(Sg19Yq%F-1OXM@hxd2N#WViSk6NEidO@U3GY)-w}#X!#%O0?ae0l2_Z$pD~Rz zAWpCcZY$65D#M-+j8n3-97+NqyjHbNcuabX^Z36ic*RLg91dPq1v6kw!WOYMRA{LcsUZDoaS*WXu!iqqc?H#?|DJ+yQ0yN!5fMo| ziRe{KymzhEr+U1Rgnl=b{L5y(Bgz!!hmIm=+L#ZaW}P9OSz&%#vSE0=*$g8P6$Sfs zcm=MHIP%Wo@~M7B?cW*N`Xn7qEZ3UGW;!rt2hp0+4&3zZY*9DlgZ=uXZ|9eyffUBZI~!i!`8i#Oc$Squc48Q|H!h1$&L(KRfzr-CWI{g!3$whY>8Q9^d`px1-TeU~8jz zRwt?OG#zK1TU2)6F7}p0YEeDR=-v%QpsC!#;@RS-ma~vCz%IQ6G1C z8Xj(H#kVLf0+eYPqOMiVV?2OF%@gljLS@!N3m0Qg4}sl!o9W0bV7vYYX1D*zRE~Ha z{GBiCtFf{11Bt*-4$2#s#BH*2r$ZGk28D>EsJmdX<#geLGw4uq;clOyzW?Cmp9gpO zA^Wo@mK{WEE}0(8Qe@ae>%}rp!p*e17x2%ti16pinT8P5vJI@ z^87Jc`ZrS+@9l8@3p>X4#|aM(lCzraUeXPHecD`SVghc^^Hjt7^v#9>&~(-diO}}h zzgn=s1c0EZIPw0;;SI9)5X*nsjGsb0>R9_DT}0;Hh1eJqR_oM4PjhQ?){~HHlYhyHM+A|w!G8v2 zk}>q|pEN%Gc<~wX0I>C^nOe#_IU-hibtjHV4xAz6!7^&xUfvFkP7a#s`(y0{IxN%D z3Y*=!E>?B>dOe7h@mgI@c`r2wi2g3f4w<0j+m{#f$xX2P-6-aKudWop)tuj_s%nH@ zrdu*Jb{+#D#L_evx|dLk+l|S>_^k~wc3^1ClYeFza)kfoO*|&ZQljDPm=POrvvlP<2Z)^U0E4334Bz)Ovw2q>YVh(FDnN>7rrPp9l$jV?M4_6y} zclB`PVUb_Ke#nMIEc#FW|Bp5aYSuKelY3~zcZg&KEXtA9RO)q!=gQx#nZ+hD+JAc3 zDMwi$cMP*anUN`L$5QguUESP7M6~-I&*B>@iTogq0#-vuG0)E5W0g}oC};QWs^ z*_x``n0Lk9`eX6Yat9d_b;l)KtzW!OT9R3T&1?gb>r3Q60PV(M!ArUZfgmawT`=1B#Xc_Be;|Lt~xlv>$O(*2U4Md z>ayQgnQhw-K7l1R!A$YHGk4VgkRA*jTmS!w&VPs>a1ci&CjeO{;Q0iiiylb&CL*qT z84gcYXNH55KS5hCU#2nsx0i#FG7ZK^o>^pvcb4eF3TRaAVKEDAakHEIro|7pQBw06hYDXg7?wkw#;l>W9V5Xvp?clcg6l8O^JMAik-$ z7csAIwZfZjxa$xMeIv&k`#iZYn-?n4Uc9pm^w$HtU0}15WI?X4&uIj+GpD2;x{685_gG!s4gvp|la7K&LHM4xY1WciD34AHmT$WZHBH z&kL{!I`6xN3-Qj0MM-ASL@E>G=qex~8;AaLt5m0|2!UP$I98 zBpW%H%3>xAMtQiR>lh%Y4Z@cxw4AQhA-eo}6mO9!F)h%acd}5d{>@~uLAcQC&Z?us z?+Fg>$0yr*kNm#mpCbU*=Q738^R<^KT;{aA3rHCZQV;8m6;*LQ7@Ijk>Ck;V3)vZL zGD&W8sXRe|50O_;9`w#I5?b2Azo4 zfs$PRV_bZJMqyBJtcJciCM*oOSJUHN@?Pov*;*KPxZKza#(67=_wPJnsx1sNoW6CM z-^-TKwMaNRHAeNyp-ZYx4)6YtO(^HLP-H+|ZkPb+6W2!?dKaE9Lt#3>DXr(9p*v2g zs_ghhO37NEz`rJ$aU3_ozS5EMsOa`nq6W>LT{m~(2&+Wj5uLyR&k!n}@eer9vlDFM zE=8udnocW4mTY9FphSG(mD5F9g>Wy5o;1Ex+{!0ritqLr6El>USjSX?k^`W5$mveK z3fGQcS`tVTgudY>!h=r6VTxxI{QZU$VA3h~9Lh^;?A>%YuvGmduOzZ(1%M+OW1{ah zP$s$wU2_5iwpl&muu_K6$oqR`%leqUYjNHi-}8jB%iBwo&ADT-d|)^Y2EPe<5%`Ga2u~vxf&r&O+Sa#%-`-;NCV-~ zQUuL)JIFypQ@@BQmn9|9L{>jL+Jl5i8S6wRxZUUTtEAB2D#Bz~5p>{UT9cjMd-_Wu zrFLJKK(mUC93EUb{dvsg53JVR;{*-@yPr&BPKs8}a;;OC`(xc3mw$Nb+6k4?Wm4r2GN{gD_PwpjvPbC7pyw zx3^=vK?xE|-fP+|tO)Y2NMjqH#Br)ffd_I6)4zQXyd{T525(VC*4jkB5uRytd;IJe z{e>jlR_bCe>Z0HXCymozmeo$9^z}UsZ&KXus@Ii8s}ESD6&yYyP=Gq_95b(OxrL(D zVyDU%B5kp2Dr{}K>bopdu;&q&y)6`1k=3=wQSiAs)cdns4jh{Lv!sUKTVmH2P!7mr zl{OS&^*7%ud0^4Evhm?B9doZ}jfSieW%D#Um)hUt#;r01Tqk;}ySqhmg}Dh@d2em& z)|Gi(pVK$E-=dqY+5jAPUT;&4QibMbZLdxkTcK5#&yPTiEyx23N`%+jUKn8mdwPso zPPf<*CeFmwHdop&RRQyrJ^6cSL9Ro%x1CMs_}3qPYp5DgXPz$`=NGFLO%`m(ghfWS z5M+rgg&)tONWOfEw`VqZmP;J*-y6{qF}Nr!WCcGBUP^5Vvp)43aUUGuD`tfuq5sK< zOINpH0J!WzmMVozWJZ$D_$Ckb47~j0^av7a}0^D`uf7)TS^8FR@V31qZFwew8o2dV5cIpLFbPb0ET9z0qC#` z{E0St?Q3|YR%eG)UL{rJq?sZ|2lUnk+=nWb-@~h?Qn%E8N@7z^))H?rrtE5uV2|~p+7$Dn-QHsQ z(`pXA>>1>dx!$@eL6Jo3eL@X>%CRDUR>9HAz920(UxQ3>5b@rz>%bh-r}$L5Cq!P4 z&Lr8V3V=Wg+SJulbQu3N;?8aXYreu^Zcj9VgRq$cp6mifFz0RHs>Af1gfEZ-U*FkD zw!fX3%@9oy$bD;DstvZ+P--5e&4c@g5X@|v9ft*MP-e;47v{{YAT+cJWM*pGN~$34 zGOcE(y#N^Bu>MFoF3dpf2>X>6z(a3uPZBHeXVX>eR^H4EJ5QMoJ_$*K<==}#4B}e% z3-FV(xs)WD1VW@Aq@UP|#uN|sOZsVN1arw@ieBTndZ}jpPgvRspxsJwg;W#(V03-0 z-EAsla$KSpL(i};U)PviVYk)-jRVUHjQB()@`1$BSFT!zcT8D5w4)|{ZexS=eMBel zkJiJi)szxMMv%%jH`*i_Yx|!E=Qlnu`@Ov>VVoE6Sj`rD-KEm=sDXfuA2mL#jF&gS zBHYg*Rj?3u;uA-XNHm59H9*2^K8%>{Tnh1yZmW70{g!;P2YouRJer5|gSVPpb06b# zbNja&jCm`|g+kl2*yjh*U1ETT2-63CUFWY~$`!S~eY0Vj(zBVDjKCFaN(L6Wl|SDR z?(gn11Mef2Y{cqowVMK8sAXieslw7tBPfzg0;CUJPL=4)o3KD!=ekT{L}ETf%b_t5 ztxkJh`l1BSoK@F-$tI6tMc-sbj1%)-XY#)aupc>5@Tnq-9m*>kS_V_3C$Q*idG__n z6K$s=eoZtRY70RjsemcBEDK2MD!N1gSj|D`FZ!z6Yaf0kV zitI#{%6JkLVSh`N{Z2>wmyRXpaX#^{G1{Bf4-iMPivC}N6{Hi{@_s1d?TX0U%vG|)r zLY(u<(@3o#t$Z~mYn*I<**fylxnuve6?7ZY%#@Vfts@=U{G`X=f*@+D$Xorwo$Z|> z`7}Y7zT(HlpZ&tV#JIREjyr`iYK8C5D`vLGrDS7OpKOxUa%O36)dKb z3QE|orv=W@8q1@jyW_d5QY?1owF#fV;gM>yQpqav+BV~QwT2>E`50iduBw_Eptjli zVB+h%;u$4Wk!+LOQbrMGZU$v=C)#Z4Koo%ln%Ca})(kr$UC@x8edo2)B+a;<9#h${ z5ueLxK0yx;0>=5@qRAC|4C~qar?c6}9cS3C~-*vLg zL!PIzmN;+*-glmnB?k5*C%oA4ssX)z#c{z9e@MCSCj|fQpB#nXe&{UmA)!#3Wn9d1M9wRH++8}7_(?BUEGmwH-x2UmGy?Zq3*5{qZ%h#9}nn(`T$nh2IVbpe)3*GBJk0t2H$|xM*lp6S+QM zXRr^)AA9Vxw#}avL)<7_KV&LgK?R6)5{@CWV9!BRV&lW!mRRopWN-gwakv=v*IZsG zHI8Z(Mmdhpa`mM(E~+hE91cJ)$t$+$hTJRT8dC@g+S5=Or+6t?n=xCK9AhXlmfPSr zWorX`wzRo!y83!nu)NmmJL~^asunZwU~m7VJ`1v{1{P%3eSW3<0fyRh8rjcb<<%P0 zHj;wWS)`qQ`=tGVU|#mN%C_uzK6W1wPio!z9V66?2_$8gNgRBdf`Naba-~0Sm8w#r z&MtnwQExg)Q?HmADTUhXxbsD#^0HMs=ta!1yAspZ@a95qyK*fw)MBB-_a!BTBb3>A z0Ih^|e>|Fq6SG|vkL6KF2$%5N+pEufrA~+2-N!a`os{lIQF3s?YwE<%5FZI~;G#WN zd0O3TjP!6wWVV;rv)Do?AVN*RpvCEK{tQ+87m^H-^Sz73j@dapW=|h%ocg*>r6KIr zo=T}%lr`RDm8PDbpU`uQF9P~TkV{6T^iSNv^%jK^!KqAmGy=o}_yyD!H>|V-S3aMW zU3NHZY;2M5*4XpvkIU`OgLXhZBe%7#qWKWgtX2o`Lk18hKDq5T=9e ziUgv89+!2S`6LUZHN~fVR4)4bW74ZCYFuAQM_;h~=5u!rQ7*OUyVoS)q-8!6R@S#>Bt{{_@)XsUg`vEK3X#v0qN1Nuz5mS7*fuDN?&bf(59Kj)> zC?tttPmvLU!p-e3v%fq#k{nTa2etZf){cW66ID8FPL=7vO zUQXIerxB9rsU;JjSwE@9J2E;_J`zx>t?nCvi*}ja!>t=?9?%TcWf?A6vWT5Q7?+~{ zJ^3wdRC9OgXSz}1j(tPgAPb>>YRv6q!qYcE?Y?wkLalIOfl>g&2IimN$U@tzY|#Fn z=Y#E4h|IY*zOt{61!d<>V4#_4lh@LPjY8UiE?Ex-WaD8stl2oDN@#jRVtdr%u{MT@ zvU6MNr3n!#3%G1?_s`CJ&sX94PRRmqkPMv|6wzi5h4ZQr(F_9v{y-W_z`G?WPdDb$ z5cs`CL$jpud)}IBTCBSrbG6p|85DGU=OsJF86;TbXk&Fqrq>-9&}5BNzEbxECpoLt z@nN>R67JE9Z$1#qM8YV7>K!T0u&6Q=lZJY$e^DA>O{8$bgL*_x)?9^+8=dY96~tpzhDVi8K{lK z7GK?7-`=Vp3Hb7+URUmxLVLu7=#qU&#;|*~`<8`H%y&m{1-a9}o~eF6UAuk<9o@%D zZoP9~{MI-G-B&7d&4Fg_*MvjDU3ZwqiXGnam->}XH?a#u7n6&vPkw?Kg{TtpiTO+f zFYDLXEgm=NhLj!6rUT`8z=xIU_UWs~mZNPkq(6uE_d)ToU$BT@CbZpitFQ^H*8l?N zXQYY-eC#+VbB05!3JZTL?NbHH#0T$vpQGRJU0!@uE4u*!BMAukrIxQ2hqJbFCe8IbFocxO-YyIZvSyqx;yrx`ra0 z>IwJwO;^~dkB8?DBf4_AhcSskqEpX~nc!i)Can!d+6eF~w}JV!%~%3KR0UqNX7z8D zZxhq~#2(Jha{Z%2$kEkZOewcr6WMMG;KU9WdTZ5`o?&a%q}KT7aX|i^^MDaEN+Np% zjYSSoK98v6uvD4GXhxv1G}vQnB+QbS|9S!Fz)(Kq=U#xQA;ej4ev%3>_9ADCU2X)9 zVy_VXxel0wt6wRVrw5$DaL|pkOi4@|}{aOJVG1v3!qwNXwDaflPpZ?X{AKhI|6;EQ>dQBk7R~*t&f|c0%NZE2Th>D)! zlej>-#^=pS^-5`I3l}i|A5mWw&}Oi$3xz_97I!Gcy*LCbP~6?!-KA)8cXxMp_d;-Y zEgBqxJ2&0?oOAP#w@flC|IC_M>k|yBF$&-yl@Gs-s-~u>w)Q%X(|68Af~$~jcE{mq zgU~G-^%lp0Rg+YLf-Evo;2`DY%GCpD+Qi2KHcb2)DvG>1wu;-VMlYuo4rA%~oJ9Xa zMN(--ooE#W>z*aO91auOrwo9LX^jsInjoa8Ravr#(GgrRxZnCYEG+bgWL~4gU)DGS z$Na8PIZFET`6K7U>!>9??+7svBVUxL_igT1V9Tcovz~m1ZrE;hXS2Z6mLJacVg%`H zEsC&Aa|tC=-p{vgsE!v@x;=u>Yrb#S;LvTd4(B7GidwbbydXca`jHlrD?DxLiK>iz zP94)lzDdpT=^b!oW}9RtF{M*4Y|P8|B*P@HO8(Abf5)$!hw79bul1Ef1*URDD*P6p zKn?f^d!Cl8HhbzB{ZXEloilDa;-8UO>?aM_mshjzKhN5%6x1zelnnX3!M!d1-@+8S88~IMDIS6ZMGcFAoodMNaq`#gY(w^NJQ@YxL z(=~1z?k5Fu!223UqTSlwls9olz%Y(P@1&;(9itZvcaPCD}^7Q!^BFVYsz#Yo402-|qqT3InDo5|}F4N>A(NICZR$qkF8>{h!PDUlkXgYY~ge--4+~c|cuYt-L(Da(& zv+FxnfC(O_H_cc?RI9Z#Dg5S(YIQRxEWw3THLY_9%Pm+<65o({yjh;Dt{}|+Mo4pf zSw8}kqWANdaYQDjyY~E*6hl?7>`F31(plrljQll*Iw$Z}FVc9V;|4r!(Sx(_=uBC? zx&Y&~5a>i2GHJ7dS22vTwsE10*K{L)5F2AQxkI<$OIVJ{2uj#i;=~I2iY0@;K<>I# zPvdFN1kCeHxp@vTqDnz}C2VOS;GrDfw2NOWnRkv`wYyMH(Y~HoVdb|r;sQ^=!?bL% zKp$_WXWM~ocCSCf(2?kH6m5-Ot9m*eAe;AQI_@v}xmei-qNej%eP}m9AzCpf%FQ8!~Qt%wh(vsRMRS+gh}>VAiJqqqkpH$G`>qB## zkyVo3$%@9A_c|telkSVSF|=N(gtOEsV7#7Ar=n}4L8N&tAH|>bUFw?AGHT=ERO?1| zuk>TF?3}6B{Fj!Yj}q>yq@F5Mqio-ar(&8wIwgMYX|5{Q;r=?lhI_2}jOzZk8n`i?`_dO8HTBZ;3R+ zf!+%Hm7CQ#km^9Y3dzww(f?;8w=cfJM6gW%AbngcqLsWaBJ!k8>w2}48g}nM2&z@1 zt^+uXd*$eA?L$&RrsMN`83sQ;v|%r9_P$~zm-@wQ+3NzLSqi+8t|MaB)1$z)Jfiu4vuldw_2nYY3&%tT zEAAI*3%`!hy>1?=jy0?y8YGp}TrahoJ6V2mQmW32QhV;6scJS$nLHeBIuw^Q+Y|W~)j!tI#moQO&pv*_t&-$9>e(NHQ^PfjF*Xs+9inXQ?>obI z1afW>qg|71@8D+%2Jbj&8$`F$wNa9nua7Lpmb&N9?YR}bM<-q`of)XV#Ra&Tt(sw; zy7U%1u?`{-thDP|mm23*1_M6u7MjncA9n$#7Icmq>z{dcJr{N=!%Bhj*L>*55nMJZ zg+Hdo)>Q9^dGg%EC&5gr3id;GzBi?lpThB5FG~o77w1*C`w{dWPKP_y##V0kW#6y7 z<$m7tZLHE!U#RAnAMKD7H(v^Ntc9v5sezcfj9hABhHlG>4&%%VK~-#Cc3{nJ#f>0I zleB!^Yg>xxiR72>QA{N^Gp-6ELIRZ9I4YH-I7{~x5qQb`F6<~ab5PthrFM&8%M0|G zLt@3}8Z#|7K#zZZvEAxy1HNH@O%rN1v;FqeNWfB{2lXmf^t1IX;lo+G!rN;l24Y~P4LBGB3<**VcC6=%=Ktx4jtK---0aCBaj%8!&7 zRTT$RnjfJo#Q*hkak)s<5iuu*m&elcO~kaa*gi!aFJcqbKJP3*z`XOH%CU3obwWL( z3N#vCmJvf6&NDb{EJ$W-x0kjC2L}ztLVBh^IX-_-qf3{UA8zI&hh*?|Bce*U;c~`8 z%m;@QqNmb;(;N`n9CNu*Me9k)3F}pQdQMKer*wvfkbC6I+n*)VcjT!*>>GS&tzr~% zbk)_($EU3DSH-or z-W-CBV4i*=kVzFXoyN!-nOQhThAcL?y+f}xztwqz7;id)P2ohl!lG~P?h+xF^Kygm zgwaSYm($C-T`_#NPaj`?H%Simrs)1Mdf(L1YOxl+?-wq?<8Y^ruQR*1?IGXd!t%z? z4hMtpkSdjr-nuGJ!W<^jTP&6U-<|^1Lwl{gJ3HY;y4p;}l7&NJuDzC5d$xKJu;`AW z28&vwHsUh=)KETjw26fM{3azXnGg(Wr#itCh>XD?I~rJARLGcRhYpR4Co4OqTHvRHR$9B5UR} zIi~j6p3&kfg2Et17LB6CxmLS-o$ffi(d*81jkF^eq>{}iCQ{*U%#Ptj{HhF}MQ5rf z)N-12RpPeADwgL)%uq2Hn-PtY5Pn6&@9?4Q&`Z={z#~#yCV_t-pZJpYV5k#wTL^;| zu4#rK<;mDR#W9hO$w6J*q-}z$Nwkr~;&a#O;}{lxXV=4+gZS0mM|DrMTaia^e7AE1 zRc*Ia_o8Dvxbs|A0Wr9;`=Iv@FKK{_*$Kszv#~;D}b5 zkdMI}#9iwUIu7LU2duL3iVRA#k8n)(|ucQ>y+PK ze_&NbP;g-rp94Vp)($g*t}5ijduviCU&$seBQr5J2C3joi+ajxz5#JAkbWR(*rSMb zG3^WVyaZQW@R&V|Avd>s!uaS zwg;i09m*|d;{!D8eMCQou$PkXn-qT!MX+1`>UGTarx!fE0@P|X7e7m%E0!5B0J={E z2623{<5Hq+AbP@RHYw9&w~BnbLbzh5ZE9(0xwLA7>Y+&xXwj^K;KTYS;UC-fVQ9au zbU0gvyum*4d6%csx9e`ijwJ94$3ykH{|a;cLOwEIreu=!RiYn%{Ht;5-=3U!3=+Gr zh~?>qai|EHNL=8RjGlzA$^uUg?1Vnfncb$GdVWyGYia88BF z*6w~a4>s~#WXcYC+thA7>vF~NtC*BsKByVXo3nWV_+o99{b;v+zWfW7z0?O6r3Z*recmhlp?bYWw(XZ0#;Q>;1Ouj!(miKx9U3?_o-VT2c`>sn!GFYC2b1N*x zVUU@!xdNPdPA$M#J$hh$BOvLT5@{E?}dVntzt9$ zQU;`)>QXTE>^J=GSY#hif0^XpqQHIq6U&?V_OOt9M3E|{T)&R=EsUZOY)6u07#}1M z%+N2$e%gKsz5@N04Z#@>%x&I|aT&>{?GaxS>YT^ik6mmFH4H?Dw$2v!r ztlefHKxB1XuR6LUJ&%jvY&S1i6iR-7tWBIiv~Ac(=Eq-C!lJ6b7{^vz^*m>vMA&~Z zmkPVor)NQWs2b!$SLwz)!pYxUNV6*r1oF&I4=}N^EvE0uAshCZYJ4C`7Cu50 zr`?9dMtRzdIvZ$7XKvF=Cv?7O8zvB1a^U-q+rS0rz)$Ks#HF}I$&v}focX5Rk;1Yu@a?Y!2PcqZ( zbK&9LPPTCLM%RUS%wXWa3f1DJ7>fCd6BOVIL~NH&wq>Q|=Qw^VdBT>MMWgU?<;la_ z1w-Rrb^UjyDhU4D{Y#A1EI@6MyPn6SnVN0%Z~DnnC+9i#-i>h?uh5|?9;WB z-t*xSlPlqcx-J?S-X||C+9zRdCoEtOmbsuGu`U)3?igM8#gn^;OI2k+%VisFFzo^} z;A9JJhgn0-btN@ri6k?;D~o0>Aly29h+peNqbA7pgO|!8dkTx_Wl}y8NVWS4yjs(o zQ|aLX54_Q)OTic}GG9nE5~Y(EDH8rUw~49voJC5C?4FaSUFcd)QPi)}y+~o{OxLHH z<+KfKD$@yUhCE)S+nMd@fJRro^?Loux(mh9#e7m-)rd*5*n(;oBDVIT7$pTt9^@c? z%@d}XqqrKCrBA?0P{x<7q1^B~I@OgNr)VacZiiXTm@CZjV-|B~0us-Pb43xg9iq|( z+cxL>0JQ*icWyb=Q`a9M$=qSGKQ194=NbO2=Z9vxW(^ChY^5E^dzk;g{9q-pvB3Zq zW8PQ=BLTc2VGmZ6(^+(IjmvWkhZV7EkD&Nf6i?+sxEd*IVsETpV#VwfDig2Zy8Gp& zLKrygWa*nN;lIwU9^=bqE+-N`+gCwqUx>{ZX%s|meM42@0TTz(!K2iC#9T)|XQ8aZ(LWqhp9`{Q8PAr9hH(x zjOB+^No%w|De3`iLCA?wF58zKyL{;e?p2jNq{E%flwvT7C`X)U!ZbeY`+n^R%JZ=( zjcf-d?q^Q%jLS>#pYcr3x8d2(dbWJtoOE>CLN|h5h4=to#GOWEhe-(NK+QM1Eg>z< ze*4A%pAQYC?H4Tc`RS_1gSNHcXL|Ov!MqdI7(N}iVyPh*9Xt?aAseErm3KK05bvk|h(irT@BE%*!#Y%Kwq$L!^RTYIvU$8YVT>+HKUAD{`NTJuFosHeM#(rclfJ0f)6-6(2L9qh>*{LDw{c zFv!$+i}z+OGU@lxT1&trm`|lhsz-Ibi&@wVNWL-Bx-Fkrd3Vgzy^>iBLVZKE6p~0m zkvZqNCGM3O-tPJVCdN^`;|FUG(uta9ssK=baGnfoU(f8v?rn8n&v?8!_MJU11k7jV zA;wS@ndro1bDCGHw=$f8AQXpBYl%vJu&}5wTP#h)kuAweV;l6_L;vnbR@j#^Rv`!%%piHxolR#m%+9i&ELAO$=2xY}v~Yz?L2+lY18|7GpPnfQi$%&t z%DBI8#G#>`($HaOycHL86zgS zp}t-=r%k=Ov&ZbQ+-d2;N1tuQnu9Kc%$bz(J#dM5Y;xh7C*}vMKE;6Y`o@vO$Me{# z(aa1dq6BV!R9zC z$&g5kMWH-;-vn0hjnw3R+(=5)o{Z1p^ynh^@|8sb+%Df*J>RyvKs?(3>Ps`?yi7m6 z1Mh?p!O+m!za487tp#HsVKy#!LT5eGZS}VM_}glH?F?Hmw6o3LzFwNl=0(DC>CK}q z6?(#n0e{kKwcR|8p`3cRC%+Rg15ByklFSE=w7VZbFbroL2yxbxMBDwW~1Owjzy-AnFL8Z1_nV{wbvt!OmwJwj_!a{OC%k3Ek zWUfs${IeMX=_f0RLn-BXs2i7YSi%BChutzaQIyaKDMEl(A&CoWolT(wDs%;iex!x}UJ1xS6+^ZT|&Tnnb+e397G^M4jud`54{mGxl zO&e-zE-*a1bN{ZK3=Q{cN>gz71j~x7SVUIr29e=qiAuc_#qc}S)lL}qQ%a$tqCQLN zx12Cx*;e;gCir7(N{etHnDg?fL2?{IVq6s1mEsz&H) zyJ-JU|MFGewn1=GgCf02vt|_s!PBzy!#GLFj%JgsqA?q!Uxgnf`V7nK^FH=AV!yFk zbhg%_(|W0OW3%%o<{J5FTUb;#BIenUcrum{Ck3*7&OCi6Fu#Cxr}(yH%<+Dh=f0)&{jB5gtV8eIn;_rW%!$-WSQw{s)qmT<K3bq6d`gnk3^9OC#HKB+^AWhG=uW&pe|IWkFOJ`8Y!lO&6pDsK3l$k zT83!f$qd!1P*Pe7JhD4&cXY$mWA{UvrL9VbHo;;TCjh7*ERPvr?zdjx`(>z7m2Tt( zB$gv#MX93nnU1Zs`KTqOz_C}9Dp@qrYQCvdGs^#@bE@JSWzNU56~Z^c_;B8|-M#|z zwFzS#UxhIvP;-L!0GZr zkBcJ4(7Tx@8~>Z7gf&meT|_qr3eZzW!H4mMH|OuxHk(XX0Ix$Wd|-7TYT8JK==47t z91<`qx<{i*6H6{iY_ZEay_tYt9xv6{h>9;Y-myYd{i z^n3_sUgqMV>V4xlZqC~L(l5CN{PTNS=7T>F1}LCcWHU)PNSl_?d8~^^(igYk;Ml7y z+2=WkK|zAYZSG%iM8Ku3vHIIf*+ViiXEfQ7bT82nfYlF_OB#%AsUrity1&B0n|r28 zn3MQ4$k)vZsV4SjCPha%lB<0x+#Ex;a+@uY*K=4Ql0Q!Sb4liY{!Bq#(}lG}3Zpp~ zI$f@e?=#xryOhjFu*B>0P4uJ;*=k-MqSQ4-4@e(0)=Z6wh>#-$oNhosJgEez1dyxZ zcel;RzBriOot^)Z1Xp7Od~lQt%IoK-DPm+k8Bajd^6)%6kN+YtW5{R6NU>eS!4eSp zM}+a?dAVOSg7D~Yeu&pVnRiSe%;>B9h_FRdaWsR(MEM&D?iS=N|dI19{|-Tsu2vc>rXi zkUH8X=DMYSw#la$l+@tpXmL&?yZ6x$n3&oDWL-4)J&k<9z{J0YT@2|eC{tmwO*7`goHoA^7#QV#C$%7hjp#Xfe<9q zo_G0fFcJZg6ARq**Khe7aRtEH*@nQe+1wj#o*s0~<0xrLC5U=aqk*?51aE(e#qx#p zUmkjZc!Ep*zR>fNQMgnGt^!@)`|pP5ftMe zY++Wwl1RD#;i80+BDpj;dAKvZm=OKI;Q^^X>T|Z6A-x@91r~0)5iXn!B8M^ilaf^d zq<=qCI22bvrBI_lR~p>)W$2AM5B(;%|Dm<;ev<$T3oGc(D~Of%$Q#CM%i9gpqY{FA zUFQX}^cLkZ(aKLc5Kd|HyWisK5WQptLn4xC{ZL?kJZ`wZzw=$^F_& zrg5WF1IbAyb*1y!mXCcfgKa~BiTRC$6-hHs*WfdxmEb?{()&;yNg|DSh;WKNW)42! zt`8M`z1R+xBw5a+`(zUu4fWQ&!bJ{femQW7?5qhYo-9I;q#%1FT*j3Af%EmcI9ir-gP{vRLb`G!B1W>rZy?t(l0 z)aE}o_GZAvS`}Z>*AnIoV}V?fWUf0$5D>895YVWhW3jnYQrj^3F7NV@9-TQ5Vc5cH zkgmR>@y3v+DLyFu4I|sM9q%X$mGb8v7Q|;ms7BDRlD3vqcQ24k`f!bSvxtu9(@bbH zTpAdGQ=Q5{fp)g$aoE_$UjBZw+Y-9NsC~IHV?;&sk;DzSk`&nXqeiYPLzS!*KdtRQ zLLm<+zdPe0h`eDaOaaN}%GPy0`0%Rc{Ih2#bVTZrLj(jRR<$#l&^Ch!Nm{Nn+ue}Z zWvHxbFQXGF447Zf|BgoRgEZkQbyy{g@}pGCRO|uZmpXWrgine&S2*wlM*?{fUxhN``(!_ zX=?t#7^(MWhv53Nkrho;GRcA+3y1&5l$XYsd8H0Q3=Pe_%4zrK2mzR*2pk;G@t zzy7FfO7W-KDNDUQx2u~Fx{@T7Zq}8&gXXG*E2O^1y*D)Z82gxdNeESt)PyiLS}!zO%w6v7WkCER9~6Y92oUp9M?PhJ4(a9tIO_ZQl5F+dk%&u8 zDMvGz-&;Us29x$1Wv8dh{tsvTowZQJ?R$U4S$_FmSsvbUZnzkh z!0A1rdPd!_qIp0POsP=UAlyPXG*X7kMaw|t5R57c;;CXv99(>(N{;VMA}M!DeiyIa zscN_EZ*eh=XC->R>g0SW(2ZI=_)3Gdr#x0b9^4smpt_xtCN=$c$SaD}4Jd{7h z<2ajo^`lij2;ftk;EA|AO`Bx}2CbHQhH1b%j*7V6TvnA=hg$tvs5w4I~Gj=B$r^a-`YaoM64U}j9uzbg_K0mi~#D)4GTRW^Q6{){1^We%= zS)E@~RPK6U{|idh=*Lfn|SRAb|T^FPz+F zVGCZYZL96V-wKu5kkSzN%A!FvR7Nq8hwqq!@vc&rgu-=PdYjnSoQ6g$n*;im2wYW| zlKT4h&4)`cbrw+r1RjUZkW#F%hU!QxHx%CHiOKbaujCk8;f;d(D6(RV0NVQ>-jzg! zTcXqX-wr&!`aSL5Fp0Xm+pVNIjAtcSYH`BypL}TU*kHm(L{^!F$mq35&-Z|j;LHxq zbVri(tr?Xt#cFycqw2VSw3;^Jo)j?RYppQksUIZ_^H?ffn^{5hFze))R_e*a(maXM)Cb=)1q1mfwIs-5N2QJu>l@a5&bY3`O2e9M)z z_XgifntQFqDCwAeqZ?+^ILdKP5X^E%SQSvMxzG)yzcoyVcM*(6S0JI9{caFxbap|} z;VXr^wSv-p~Hb z$2U8IRTe>wn9B3@22+#YR@UQNtf5OAP`@zv##@_BNdJ~AUobioX`M%z$uZRdBa_jGdV$VZCW3qqR zhtlYk^i=gIPV7$Yu9y$e6QYnTCu^31>EaDjZ}D5$_ZId;ha}u!i+|#g8AVcxP`3~9 z{>%>`ya1ygn6wpNj(1pP@sH%8Mspm0($ZVC51!db6_hKKlb4-O)f;m?IoTy+w_#9* zNZ^zZ(AJum&;R1bSu-+k`Q`Q#2}PLED#{BD#!#)>94;s%Pu*Wtt>TxS^&TC3J0E_S z%mW<(E2%;{u53Px0@HY-)3SBRP?FU^KF4$F)$*vy%nR7aiX<%Wep7>!|`D>VQ+fM6iXvKlnVaU>V@HIfhIOl8A2CkZ5EKF z9bM_7A0TTIf(@FBncoH!78cH+o*q;0JN+C7M&1ds(^Oz>njpP8&Hqs;{rU;wY$z=y z!;U)v;+$;`a{W3BN%6AS2RznQ5X~+K0Rs&!&NfV{2Rba%NHU&Oo$ilLV*V5>D=Ps3 z!Q9+jL`1~%?FpzGzrI~dYv^MwDa^mW%KlNGT|jt3re-cQAoQGSRegA|6lssc*Uba5 zK-5Sybs?BBJPEqZ25oebgU--h3F4jBfYTA+X|SJp2Jhyv*k;pGzv^ljjJ>Ye$X-FE zsnNWmLVIAG#{96Ey4q=JSHRw_F*tUiV~jL zPK8BALD7XfM7_92#I{UTmVJ1NN2AV-!kEcseR8zF+#-!gcK@-@G5F0QhZW8(%M}r- zS{S!x`g{~%{M6v^9(|*k;y<0~Abey?cSm%(QX!_StSoEWy_i8G;CY9xh0m16TTD_M z0Ic6QQg1QvhA%OHQZ+PWf+)mZ@mzeXfmc{J{A95t<0dV-WMR;nHoa$V2r~h~8<&gZPRaqbvbP zDhn$wy^q%urgEnyD@CGR!E&Sd{1YphF6N@QMUv};Q_ID3xN^;-2W7i6lkAH%i$@1? zjkqSk*`cI9Zd3P7)Iuq(a(_hb*$L#>YSvaY7YcjYa7-s@$imbz%?{8-yrQGN+_;<$ z&1pNp;G;1Sd@8q8z~C;s2v>C_A~n(hStJysH zKnwqM*ahkL_dDH$)9Cr2M!jTdPqN#%b7s%eFSJQL%MQlVf1$g(yH~imqZYB(4|u$8 zM|K&*54fHzJSqRkWbn@&Ik!I>TGyq9rpSe>@&2eBf1+`R(IPkwK_zhAJ*;blt!TR4o#Gd8 zKQ#BU*7j1YPhQ)=NZA^r(L^TNPWt?#ps|sSe)+;L#Ag@tW3q{nAqMV6rWYs`?LU!+ zY9%zUc3LcYh`aUtdwk$1DtGu=cf|6j0k1wZmg~v{OtP}lS zx-`u6x?gg=ia+`KAE)Y=r4rnX?<9mXSIkU)?ctDeu|d2NiL41bj0)H1*JgshdeEcN z5mwt2BbL1k`E~k!M=3~OR%v1>Q<{S+h=dypom;RmgE6LgB14Xix9&NK&k1W}dsY|E zFA>J)dB^Mg_qze3x8$(Yk@m*EYk_Xbb{9Cqgf0TH{vw-`iT7K)B(P=k*HS*{+*jW~ z)^!v0WU*0G%iIhNoe;t{wHA2q&GgSt8cUAGbGkluvEup@`0-&!uI4}=`O-IrHVK?@tAR09G=l1`# zwe8_!W8>xNv0rf0i|z&&FPtpSX~FW{p0S$#xfOr7_ap&mRl2y=o6peQGpg6xEJfE| z#zIax$E)cz-5QJXTEZ1GJ&@^SW|k>YQjp&X{WV1X&nh($qf9;G@)@9qxMlD&e(ScF zaVz<@hXHVt-e1a?^l}zzLciv3@N6q2GYwN$f0iKSC<-7EIwJW)t-ki60AVh zy1S;OpmnD|k-E)nq5n-v{fmQs%j0f2|GM_`{#$JaJPp;8rPOT*)%+?om7>^4YLp}g z%VTt8H()T(o*$Wpb7}T|5YDVa<9CE(OCb!iMwP22XFWMdiL0>RamnIy!jb8X4<u zZrsdpOYmu96VK%>p|snJl)y^9Suw#(z0x{k;c1z`0GD#aw9Uxu3gP($FxGTFZAHtW zJ<;UzhiNFN<2}8ox_V3h!E%CN{0gOua0wY(64oE&J7xmb7o6YuXxiL--Xs(-XDFIT zSy4iES-fRwHE~ z{0BC@?{xyA<>aPHtN66k)nnIrd{)n#q7M$LUk(U7tPO=w)4m4|Gt$zt?%#ioMLFo?0yG1i1P7}xoC7ndKhYv?tdfr&KUigRx-{Sk!m@d--D1nHx4 zIpHx;txlV-n+ez*u4c9?op04VW=akxaTCNPID%hvz4kAZp@2YOU1r`_&JcZY7%+#H zn!jmBtH`5{dB(4A8y@v+>15c>_j)g$DOoi!C2is$^m2Mc$=3UIg40wwEq=OWN{VSt zsPLw-k+PzzwDvbKmv^}$AFM%pHPsV!!h-5bKta zhoCC6CI{HoJ|_7#F9ACxc8N4)E$gpQXolyOn&A}g8lt4ZQ>JE^MN{B;8ZGd%B_fph z2n}ZO3)JQ85HU#mY^j8+^^1^8{gpT_?QaUK5Nd=Qxi8)8jcz)s4x*wS-rl?2;{hlk zujq>)bRIRgFYb+N)HDpfCsn?l9$)-3r}&<|T0(0HM58vkY_5CWZl{8SgXj6XJg6v0 z#zsnrZeH&B6p8VKw8zTVobH4oj0D+9gJDJ6_!fLKwsaVMx6V+;F&^OMB zFzTHgEMor&McZiq<)L!%kyOj=Ja5%~eOW;`I69XJqQ}y1dpmlj#Uc9Vu8`?SEEVvI zA|is}{4%Wjw72>3zO&U_!OMEDs%663Wwj}y!Ri89bNHsL#nR*9WS{O@mhd*69b)7P zm4)=*HLo~$tUpg@5lW|>cnY?gPll$G>WMUMZXmQNsa}W@ZP3DPVPJDYE}E>eUZAkk z^tf)uU>3KY0GL|YSaU0nqNJI>#SNFQ$|GO# zlU=HW7g-xK6tky@c>?);8f?TA6&0Bxz6b8>4735 z?bT!;K!WQ~A55@$$^y_j>|&;(l1*(w?nec=0-7wM#@mMEsuP%ZZF*kZN=;QeJ~96I z@st1GAFy+h_~IG#z))@-m(`^mvnEZ86h8OmPldK5%S_(4$0`gA46Ai~2_AG=1wVH@ zZ@65|bEpAmEc%g0@NV3gq$c%X>3zKNUW|k%bFreLBCJfV?FE+F6y<;BfKX7ajl-bW z%KH0HfiJBY`RhrSZ(+i~YDK@=P%MHI!l+D>m%ZN)x$iqcq{MY+uVIXT72Q7o>r1@} zHRe^kST2}}Bk!SdD@Z<7z{yau2)i&lR0$WaiKvQ3W@9vxL>I^QY-I77>%Z6L{v7~D zbF#CyNy)R^>N@Z3N>Rp4B}pt#ZE^DR>rNo_whl;k+_^owuue=wVMknm*E=t|H6(Ef ziSS$oYPZ*1&+f8C}oBbG;5hf6~&ilCQ~{{#qXiRzo7muU30A0jl=60>BXH+yVDGOC8cu(C;= zB)M_)F0Ww%t#S0WD#^%s(tLxMw)Eo6?)it>WTg?FhS{Kicf_3O1lbWO#+@XqrGNQX zPA1{=b54vvZbrS+)fX~>#|MmS&=ka8w=o_g-K0r{PJH6mf=khYc<^XFp3qgjQ=$Zq z%R9yj5D88$leJJSM=p)mVYBm>6KIl%{n*sX$=g`j?IPZ=Lu@2aqsOA)ekiNs{#%-J zOq3e0Z)|nzVPSJu{#E4PTC3(a#*)wSo?FB=vI-Ip(p*(vgbD-1qFZw41$AVZ|2tjC zySBi0+fpG@<&JMEx;Nb3^G<|Q4uI?)@A2PSvpcTVTSm?5ib~JNw{UjM3xbL|x&7^t zVOc*F3P;&_IH%0UuqW;+Y@MSC+?*6N2J3{M3%&_c$z^@J4laPdw^^@MMbAw}Mo3E9M5}6W*$sOxu!^ZFv+$>9nblh#u5>K5%VhleW>ScJb;|C#cS#0+ z&!F4sKKq9zu#ZmFcWU_V4%}!$(onSZ+fNMTRIBkYX{G>zxA8gA0r&6&6$1 z(uy`Cdhr^GcQ697RQjAfHPOe};qsSP9$N!1W|f*`_4-N)f=L8C4zHQ`J51L9q&M6? zo(BQbtAkG=4t@XP0W!CWH_%~((w^$abxA@^Q&J3dy7{bVq@hF(H-XQJ%WOPQcXiWf z9I=ww_8v=(K>TZ8M>Y;Vb07OVm8s;VTAWdCfz=vFL$lO z6NGxQWT7=M;BUIc9l~FiI^JNm@i@V`Wxd`g(qP+a_h`ltxkV15L zX$SP0Jf7PN)zbl*(0f|IIf2M-TuBX5S^Bk3u}=NRk_yVc3n}9BRrp0wHN0wpXOBc-zCBgKqL|4i})xlrKh{FhzJJi>2EH~xGf@s?e;Kx zCK9LfKK*hLHq;$Lq}g`9CUSyb%#-GS&z5#~^MC!CTR}&G2ItwqsD$@&Tv0Qb#!W`b zd}J-$6|>TR?QzywJ&dq=lynMIZJ#j&yG&5TqHyRgy+K^;@~NL59?aRnK4X?mv@<Jd<7#S;UYVit+nfGz>2`v>r@#mB=j2A=!V)%NW?coGy8WNzRBOts9{I*fmZ zj!`D^y150$_>BS9O3}bz2Q(<{5_jw2YF;^n@LFfdZ)g-x{XA=P<>UT-0Z*KqoWuZk zWh`%;0TYL6+pUPUhGXVUp4jRS>~x;xwtJe3Jlx;E*EaYkEx6AT3EfHg$D^*=s#FW* z`a;dBl64HAHm5b=%~QIWm`t>k7*A=ixg3Aq+221Kx8O$Ygl%YsiAcQEtar;fC%T*F zDdv1NZ)qGoO_`4$=L-S(QTp06!e)^f)n=ciUUPj@`& zECKiyVoKcsadkI1D4cJ7>ku)u1I=m7O)FUyW)bCp+GJaA)55Cf zJgM_k%m7MA3vr4EdJQWUD4ESUZ`yhO;@v1kS@~iFI8=;rygMe*5xiq}Iild#Ns)*M zj!F!j1_<>0{$3-mb>8T5e1-KBkRvr@gZG%YYAAZ zpKgn!zP@P8A?idwp?xxjdO%}7QXICVrxQ&Y?XixThm`5NmPqMVvP)r=@8@?MMpgmF zfyvg~yyp784I_yO8FngFC7Y7ZVq|HSj=z+JHQEanWA1ww?cxfT`HtnRDiy&;ivFsR87;P zJmFYYBs_cL|I=84Jl)@ZR$zvPYtW8^a*&dh^y8L-CG5g3pRtBs71 z#^Io#!|}DPtr?3Y30Us*uLfveHDlS3bMLJo(cag%0iBk7P&|szmZ!SzOZ_+ch!W%I zODilS7#|wR252Q>64zTh(c8jJ)cbR-EGG`yu1Kv86N!_=c%7b8q5bJ!&0Y`QUY{v$ z&oyH8s7J%K!poyfVnVLCnaI^+{OH!FRSK9FhGa`v+1Tb!I5!=1O9qlBnG~o}PIJ@1@JSwxa7X623jE*JGdK4gpZ-p<-oIxBn7|iUH@Mo)X95_!@I| zUn}K!tc$pMDk#zQGr{A2H@`p=STAb{1oB#@^Ymtv06D##IJNPBa(un3|4y77_wd_0 zy-RR1wYKRAaNb9B7s7SPDi7{7fx?cmy45|axsB>^EtH^d6s8<_Uw0oNOGsM$qRt3p z>p_!WP_WsKn3f6^%O%?ia2Q|y&dvP|Q6HoG?2+b*U+DCx&j(kH&^WCP%fk8JQJ{LK@YFEA z>CFXL#^7myiPUU{ZxllC26Hm^52g5kN8e3d!jXSXM!h;-UyYkO85(vb7vH}G1@OXE ze_xWIr23yxT3?K;Vs<&(DUpXaiDxwVjU%-YG;ZsMj?1l7r@(;mD_#Moo8Mpyhqaaq zHvA~>=VD7M?k-jl7pTmN|KJ=Pm|>_;krny%fGAbsAx=Cz)RLoXbb85Z?~X2tR>vxJB1gp1Hqed?Y6REo1F$3l}jV(LMGf9-H3wW`ZcHhX4Ed z-zS7aQDed5ERyw9_W9DO8%H_SBlw3?`=wUym^ru%`qL22^EOlCF9XN_c{llBz z9<_=0{`XrT`x|{c&z`VqP+sJ`xJo?vf67~Yq5RbXs_E(Rm2*dTCdA}FyKk=4llLc+ zwMwX8Ji#3@QMchiK6K3yiS!@&4 zDuOY^3#&mRtnMeQ$I{CZJU6uR+PRoqd+AW8Su zva*2T!!&_dOp#Wl>IqejkI!FyRcmYOi$Y8$1A3Qws4kiUIkjNM%RvCrTIQLCvsl?)$=PAJn|_CHoi24 zrIZw6``)jZt|oAqQVG7*@oc=OqQfn(yk)*1I@);$Y-70z0*ys7||1tH} zL2ZRw_b{atN^vOeR*Jh@@lxE~-Q5XZthhVH9g2H!cXxLU9tZ?J?!7bb@B1e+Ip<6= z+50)q$zFTywVJ8J1Z(~tFG$n~++FqExylH=l^3@~USe$(3}w3WjV*~@Jw)bxiwzNdxe%Vk%UxV zrS5P{vg%joH;+sKc4S_0@4}I8A_&lRViq29`zM#cZS4-GjlC+^(#4cfxYa%RBT(eO z;WhjrHKd{1A1=Q#_N>C$l+FEEy+$D^pgqiac=iuhS!LI=a~@SBN4E7;G9Lw3E2OYV zG%221%(Uze#FMnBbC96`URF~4+hu@E^;~0i^F-v4T1<)Nl+^5|vqtfTQ1|cSY5AwP z##BwE;S7{?8qIkiZn{$8?YdK6sil6Cg~3#R%klB>`ud9uZLC_mQ|3r2P{1uCQY|Tm zOOgH4Son0?QyQbc-vfRd)KXnu=8xUUY>{dgP5;0w6#^Ct9dXQFo8+Fb z`>6jN36T3HtCMetl^6z*x*vt^SMi0R044vMy=oPP9=~QmLjGfTBpa;A7*%Gd&cMkR z8f#|n8Qzc@sf?x-#LoNhGsh|-Q&cvoL6(6bZMZ{Yx(#`dJ?@Noa7z*b zrbA@)6Zp2VO8%mB(!yhb!O`{(fE47)K+J8NH_~=6HfoYtsUGq7!8pwog4gduc+GZV z=yzojf!`GAv1N~b;6CK$#v0&4ud<+6`3+4nl4G#nOzg0hYSxZuii~2EV(`|!HPGVP zpNoV@;5+5AFxgrEwG2+HcH?4`4xw$MHnxw0cqxIHOsxfd%uJ4ZnaTs=RkOfz*pc~E zdb81(JF%$8WV+8;Lm8Ns-$g}?6N{6pc=I=$!RJXDLIw>!&A~f( zIudgkxGr0O&ipogNe1ri>cX=6RpV)it$o}TF$;&J3w2sD-tw^Ax|tPSaBk|CSdC!; z89MfgO|QBZpzbnQ{W690lzLS;JEn>h8~A4VkTFq(M>#{jn9M8BU?Zfm>-c3f^6evY zmM+*0%X#X{VRhNd<3xr!LOk3~x6acU&^kPqz~xy_#5>fAvF7a&yaMWcSGH#)pJX}A z>yP*tg$ES=U*ct6C|*ckznknvhf;!aHXDk0&23+9Ngrg7d)(1GiGMTSAh%CeNd4r$ zCK6Th>?y1Z!i zdfpHlvlJSj;Ys=45!|P}m@Shg60o9&6nC)Da{N?yS2G`DmXgpqb!EZpjuw2nhRJy;8tfyq72-uJ#^26u98x3cNL@2F)`YEASR5KvOZ+bVZw3-+i z3J+;99-xDi&Yeth&8vv$sk_oqQ*&O%53!-0Gt<)23hPB|!0L>ZR$^BZKW{{;xl)$w zoe>h^_0B*ORUkRwA()r^HU5z`O=2IH<~&N236w=UP%@5o`mD(Y&TEy%Uy>5}$ncl8 zzq+imr^-HXaL>b{i8uF|A14aFo%~7RF;x<1X>&iW)Z7fvR^YmL0*(YKs+mtj^z3|e zFm}uLbd}lwGCuVEb{_Wuczc)xBYc{Ctyge`fwI*>N2=Frmm=Q%s8+3X4LJ5le1@)-~U&Bht4CaoXDY!^!t!+bV(EpRjfHUN% zIh=3EmvcAG{ISIACCKwlfVG?PqYVg{HJhRCp@qii@~c57MsoG{x0{Xf?RIZjf_zE_ zQcOG7ta2>~IH6ZLtA%W5as=2Bn8YC5c?V?&HV zC$X6}(JtQDPZ5~6$Ap5ZuN4fY&b^Eu@ALNs9)InOb~2V`PTdXd!BZVqHgbtkt?4p) znU+s8{0+a_^2hHvOUuAY9utZ`e4+MS8lwRdHA)pCOakbv-_BNa!1QckJm?s z&cpVovs*X1x%fyvM9W$#nCQG`K*v8ZpR1a(-zHbw2H$c@OftBR{2Kd7+*H721uF@a zheC7tw?ce%*4cimW1W~G^`t@?>LpPQ_`T@uYL2I^Q3m%N7w}lYO80rQ%=$HDc0q80 zxXel$RSFSH19h%2Q`W6v_@R5B<4wI@LuOPtx*Bbt0|KE;MZ^_-9yo++*+PdFxmTN( zF3ZA?+rgX_DOQ*?6m+XTnBO!9mX^5lq;z9LJcCzU8EC*0OIyqJHr!(SgrR8I@$?nR z;8|mEZJr2uo}ZuJYOQ1e2Gw=rO26Qgr@F=8i=d|WeNqE>y2npYcaudF2Jm$g5gBEI zXo}5>3uo&I0LocGNrksF1E?tVr4q*zmHJ5FVv}{HbI)x3r-9*+8T@1|Sqt|G4d!Gn zE)y5u=``LQ^1Mn<$ax8KiiY+5m37EB|4P}FVdMw1iTKdzpMrfOYUyraOD%^aV<|bK z6K@o661-4RH8lRVq{8&e7y8r_H>YJW7EiPAk5m+UfZ8VQD zE%e@o3BbHh_wQPd*TGKu=3-)hoL+h_C4<-3_v0c|4WdI8YOUeV6 z{r#cEA8TAuE#LH0-6GFom94dH6707S1s^8z$@zr(E?ySa$H5h&O06Xe%b!y@eBL1r zK@MFQfs5Wf_@~@EJB9qXl5(9irTPEzHU<5+2@NlCY(`t!j~x7Q>9`uzv*Xz=&wM~N zLGwlR-3mB^NAI{-y(TNA3(-*dNn9D1K8w@1gGH2(p8lj>^(y+;HNjuv=kI_9J3Pt) z*Jxdf3s@hb4qoPICYrI*UNU5v2A9ZYoa27|;Za&y{yvMcR(hP~pix7u>AQPf66KB6 zYdW+EZFtD3|5tevs5c}}0wVqUGe2^aeXB;Bgm|vAFXV%x-49)INGfcrXur#OCGrvjB0DI+l7hrT@+ba9}GK$`djrtNF+4XniTubXa9c|;94t8UdqQ22} z4Dp&IGV!}>K!@k`zO;&&xO%0&SnR=972c4;Hk{0sgzhLydX|O=vKqzUaHB@RSY5~5mTnrD0*Tph7%4E7ATdAj4E&P5UW3l*NmE$5&9TZmpRgJ2odp|cU<3` zuN=o+KGR{fX3s1w(9LK6yNbo=ejqL?oq`?RkH;}Fr7~RIinh?DT~Ae^pd0KG`me5S ztW#xBSD$7|8fyrR#4mV*wo<3rek6ffl`t&q6ZDX~%jv|EioE%jePMRae4U))sXduq zz53k?;G~+@sJj#yI-LZQF{?TSiYsXvjhF`@%c(V)_wzYrLzW0KHlb= zrrwvCyf8HQC!4JbV&D_rRgRc#Cx7Csz!K9n`hqwW<;n4yLO3CwWXix#UHujmay=JS zn&{AlbCOFkTz70+zrLJ*w*wT(3UpaYUqXPt9rYrbG?oqm{g*xzaAxx&`9^fJW3~|L z$BIOPiiku#aj*QiY>y!n^}XPx{_~p7BGBAaFA%bD)M?y)x}x94W24jZ0d9MoO3#XN!Je7tAM}1i+;9DaIEwhE<+}MtcwC z?cLMVg=CWaaWY-RNnT!CTyly`LyYB?y05!yq4y$xGj1?KGy!-N;o5giE}#8blAT3W_oAXkh&7!u))A z{_)6)k{H9KkKS8dYj5zSOFzo~!cBVP|uf}|UZ3rb+Vkq>)!KYm6>F``E zTAZ}|>5)Pwcz*V0$hY)TbGz0Eo-w=R)(4>tS#s{ssLl%G5r0eWNT1D&xOttaW5tUe zNee8^*#BaWEhJ{nCy-u;w}RY3tt#_s zK)71LIH4vOCdsimj`G>) z;OF^EzZv*)xXUy1xJ8kVztwuoPV%*0Dc0?JV883XWAPI>kQ506&urBMt#wj{q@!Y|*1L)$ z;WD9`XCrL`%*ltm9}&2>^J0sOd1@V6^fgFRFfv@I>dh9T8Z0D#3K_wln97YNr4e4D z@<39@!N9&Lh712Q;Y4q2LWk_h7vPan{*fz@*0ZT`1Sk}ZE<{<$ zW-6a>8x0$8sT_-!u;!h?I zf4-CesMIBe*rw@LHx}9dPrQ-%T52rOvd)Ri+Zn*yZ4Y05{bs*s%I_aJ{?@BCq+jRd zbHW!Oo%YL7`Fx2o>0@-)GJ|@yE#0IQrv&8T*DY(hql){94bm51$st)Ff3-z^LIeL% z!FsBGX*>9jNCDd&++Iqb8YxiUNFFs4$kM{u>^z5NAqD|=Sarm|)=i#QK0>N?NB@;t zyyBB~V@UzVA~xh0D}hr#-nP+E8#$QtJza;G5bo^$^G5|n*TFIVXgI?=g5#153)%K&!5>36 zZSAXF_Cb{u-%~BsM6sX6mazSi-0H5!tpWr3&WQP9%ve_7 z`;o`l*+$Pj536iUiFu!b(6z0y2$Y8GO+0m*Rdr-E|Kx@IQnz1AZ_^g| z3~f>h-opz^B#ZJQ4rZlX{tcNuydcH#h3L-}TCm{=5uTS~{mY@(_uG#^nEJc?4;LsW zA7PXY+ZWlSPz-vk{^oeOftPaW zU&--rT*AZ7_ym$ap90fFuXi+L;ocvvj^`ONq1hHzJT6IGT@2f!In|9yx~ig$<1mcb4`pvl_gzUkQK zYkU<^N(xOa@idcj?C59q>`p0!-;XSHvYNyyfWnc}eUq@X-x)2dSLOe?@93O2 zm6eMa@2l9@sm?9{SbK2Gm{1!u?ce8R#@xAU{~R3P`7{G(pOVc z)6N`XzWF+nCrTE}Tp$nso^a)ZYidwIv>&q5aO&Q^q;SfEOO;&Q2;zV5rft5N7hI>~ zA}wv?n@5XNQ&c7dm}%1ARoBj5&&vel^JM?Ms=HA*=fx{b)G~uU)Wg*#P5!?}|MwF2 zKfcBP-rW3O_X7rosYu}AVcEVbyHgyy=wP^-YVxPh6#oA;nP9dfNA_HP%h8C>PUc@a zUY8`sE631#xab7_zYllh9ND{Fbru}l%uQUA1Uky0{=ah?k|YLyl{+nCEk(PN3I6YR z%jv;&Ydo{4M6Q^|Sn4m^|AqHIr@PHkhc49Ufv$WwKDn?0|G##Z%qI`tFAE_R|D7#3 z^xBk}{uL1s@lI%>rhPlE#o8#Kd^a}P*7u8{U|?`JqFa2hs4zs5 zi2n&7!?e9*qt|R9DI2hrXZ;A_xqzc2sgE3O36WvIA3x^N|0*$A+Rx{_afI)!FIg6D zlL$T$U`~$z(B}N{BYfk+lAx~99Um&e>;grs)!YD{jkl)PWGx#7V0X`4h*lQEf z=>z^kmq68;;2HS!Lv;fK4qUvufn)*6{(DDAn3ULNMDTedXO#QCl35o8hNrpuFSl;F z(8)CE2qrQ5ERFN!2Xc>sfi0RxQzsDs0BflBg5zF-9LtpLy&t2ZO+^I^-~6{PH;);;mK>+9eDB?Ktwn+a@I2Wt=62+;Nr{T$ zLG1@^G8mXtQIcoPEXm-Ag?fhn{Mx09r2;Bb30z7oQ>q9#;*n8hz^gfJm4l?y$jBVF z8geiv7G0ZW#5miqxeLj}WCRFfNqJq+Vk$kV7Opn!Ky!Rf3SLDoDk49=QKZa#ol;mO z+2CdbZozSUHj-TcN;A$OOko?{t#>_>9c0df-XHWo!l8H99T<6{Nah*TwfR%kuaeY&E{ zq{2kNx6)e|c{fP3TgFzLpE&9mg|E?JG@CqhkBv3B%2{xu_r!p_OIAOn#uOWCendRs z*F)*XLOGT0#tmpS8dJ}CACLF4(2a!)**~c8Zpc%C2t+VhXz8W9$uxE2DuLt9QQwDE8EIlUB9sA_k{tiu zN%0-)DrN@){@0O`?e%9oO$+vG9%S_n%5{zZj^gFapfq*JhhGOql%Jxs_=pS<3#=6- zG7VkTtQ7O*k8P}T>1ZtlG#Uk((xT&)HYAh^QOYVS$E`d#xH;HZWlc=j?H;zOG$nKj zbC$C0tpB21s46)*TWf=lrNE@)4DVPtGxHGKh;^HZjSQ0Ueqoa9DuJ0e8>Fa8uPf!l z(WwnmRP7N4Of{w#!&t~3Pquu?(@TYp>CZM)m~M#&Iy@%<8L5rYZbF!VTV$l<#v#>6 zOa`o8W645p19ePlr5`6I<3vlYzIytep4?%5S~?!;?Tj``aefIb59hJ0lo5r6l^oQq z3JdY}&-=4^D!xfSq(f3@F)F{CE`*MkerUy$tlC;w?D}bD2O}C@Czs7TK1Z0?U_c~>zWD{OK723@oQj|s8y3j-cC!M zWUkEMBF%T&R-djj)AJv8i;<*MFpJ-EFvxu zYow9C*7|Nu@eiiuw(9v`+7=@WWlxcAtSj4ElD?~_=uU*Suzj{HC$wVAm^sv6B}h|7 zHjnbow)it=k7box6&gauW~7@(zFvjt1A9@Sla!x4sg^)3ciukw04Yo}BcPY@Amt^F z$HchT?KrZ@K!qBKhrPdc05vsZqQ++N)zwvGf-dB}`(*UaJvI0rs3sAlUZoXH z-HzF)Syqauvy(|`yS|4W!OM04G+-pcIim@$J3lR2CHPCm5=9W78=ozo ze&ji6Nk%B_^VHW7?$G6@r7%$SEL+~WyzvWvi34qq1o(Zj;hn`BgKHz?fAppfVoE~K zjpMpsLQ_DgH7wEl%j}gRqE9<2pd!H}*6^TYIzvA9#VIX5zTz#V^L#D*z|%tQ!39mA zG!xohR3ktfaFLH3y<2XXxXJj=i`=&GU^v~Cz?+Bd{{5n_Nrg2~rll@k7j+U`xXQ(X zll|SUAwq<4p#3z_8;spwd3vhN85eCM?&)`S%?rmyEU*iKgi=byA`|fZYn--tJ53D! zc1pbfOG$xGtCfqcBv_Ts<b9R7W%u+Vds zxu8j$4f$aMZQ@C8amn+;Np`|r)`E2rGXu__rXY5f?xWTcf9B6YeLH^%PvTK5&OXAz zT9TJZ3##P$R0DxIM_!PWj61w2nfTd-t!aHaGi9feCJ)VmBYKStz3cF_)dM}R4)B~@TgcmF?)OPV_ykqf|65gq4@L!0?t2f1* z!LPZISdRsHf0GRptUap%-wJ2o@KhDUlmXEGdGj!zx;ZL+L%2GR!RDe(ww>H`KM65H zXnaSooz7aRt0DY+;u!#;y435s@2;*?SiHy;HV+WC*lN4U3}TM~Hm~zFwAZMJ%bt~i zy0+}OB{l6(;Pnv~>IAuw{=L9{etvFW%SDz}uZC_a z>Md4qB9HIp_pRwXZ(YyV&`|X3kYx#ZFOSuP-GAX&Jo1CC83<-qD5S`2LT=iJQaV_T zz$wJ{D2(sg=mZ&t>#b+u_qG$|_wDdkO8(Fd7giNg-L}Wty72>~*S35IRZnft?b+xd zNaf2OICrA?cxDsq4*=hSq|mZ%E`;AQYLL8-GB@^i|B3yD)v~B-A~LuZ8wf{ef4U0( zwuQUeuXbc{DXgtd%W2D}oHXnGxP;c(?*FAJ+hGTVNf6xmPOaRQ zoD0Rx>FTr^_XYBY4!&HScKU0nCFA8k&*=#J-p#BvQ}J(Q37gF*)jH%h05Y3~CemSI z{)=71z>s)Vjw*5%(=P6|TJD%6Ddm4>14x|^$JAw^EZ!yEB}&jJAl(b#Nm}${9p%DqqvkL(aHSheYji*gJxr~@7LibDun&W2#DiC4Mt{Z!k zBQi=6_hMKhJN4bmP<}pd*M3ge)n|t09j=zUMq$%Dgh8kz@ZzZwQ&wk#hv-Am)T+m^L?jeBNq(i& z>9KsvNdLD#+ze9s1j5$G-6!na^NR1ktyTvjnw>Hv|E~SDDWKOI z_1?9=e`lBJY%o%osb-Kvhr`JtH5zl)+kEeeAOz+4G*cx0#>NsZshH~1m((BB9rR{m?s zO3RV5^)wrQ#bk4hxbJ3-Ds~48T)h%H7aXSTa_xm`?}E8W@hsnNU#!4gE&98%nlvV6 z*D#SXKTl$Aw;)Gnq%Y5ZGRn>IvBc?noGBd$urEvw-H7@yIA3vG4pnRCXCW8#3hTV! zyu^HiU$Jos=au%fonh1nXKt_8PCY?nJ-BGPRaok{g;E>sZ9(ht^g1Rr(rRg|2rw{@ zMQ5g*b!Eo8X0@1CNotZhcM3C{BL&D21(Wmh$!3KX;t~>Hf{r=U&W%H)kyK1sBr&mv zIA}BD-q(=Z0 z?RC)sqCohTsQ3zIOOj(LUE=Oo(jPg?!QvE%Cm+l8ech}U4K5Xs2-uu<4mb0}>zBO$`2f>6x{% zn)0-cPtX2V1GcaeZIg zelx+Mod1Yt+FTY|R|?FJZA5-p{io*gwAHg0x8&BTsJgW6Bp`2e*{boDsJL9o|Bfg> z^sb8e21&IzQAB5dye`S9awuK8_GV<`WDKOc$lvX4m`@t*+a<|!J+2ZGmrmc+28~cK z*r2XN77^TyF=vil>H>g`L&A%$Wa(eF7ck=(c-qmrj!r&_<>qjlFgy5mTK$I?-`R2~ zD~OBNww)6HL@ETHGRtIJ^7jV!YS0l`gH0=-kVFO4{UjH2G3ZIhl(24ccB948rU@^? zgY8rWlTh7-rTsyVU_1SpwTJD7VqCMueTJU$_;flv6v@Q_de?5|p98*PRbp!komc(1 zmrbZ4?D$**)UAJQ_jtWtmWANn=8uEf*%IL(yR ziLJ$0;DXlw3ALC19zag+Q2R|I1aZw)c&F!U$3U-Zn9qglzzPZi&pl`~@XQrh8r*!T{|H!2H z3EB;w_lUs@-S>ldQc|f_F3^g;@4o{yg3oO41G0@QC);SKO3uRxRER$@vG>^H8;b-Y zISFisyDXQFa(pfm&Wzv%RswQo4NbL9^u?7pGAFVLkcr(ZTDKR*``JwJxa?=UyKl_K z)a}+3KbPeCwsTiFUKP@EqaNFFJV~++=x~9+5d<9ew!&g7 zIdVD`qR>osBx_L=TfLthMQrt@oZVDwkZ%Ye{dz=%r{*SYgqU;|x0}*MsLvuX-(l*x z|8|4#bEQ{Ape81jF>;p$gpsj`U&F79{8rrQrsnl-Rm=sM0SjY1m2`MLc}nQ!(YM+X zgqHabhSGT(nsi0LI<4AO(=apKz(v3=X%UkC0t-!3LEv(zAbPLwKGlbwzZpH1yZP(~ zgs)j_65y`6DC%}E-V>s#&BtW2EzGMbk#cVz>hIi*{y=KoNX|nwvbR@m?Sb(?~`VL(mnrd}_otGBP|l zVtI9S)e5HkoOUFiEF9@@>wZvJAA{QJdKa7mfZktcy}Z2is+1_0pqgk4nXiArM+*A! z=L-sA1+DoM*Sy5TKF9Cs&<`q999A+2UIXIjVveo=f+;80yIy1JG3>D;mm-pCcL1DzJ;gvtP;#zDuMZPv&yP@&wzBw0`v3RkZV*HgjpHHl8U)_9zdRRUz z@n^^kq1!3fYUfQy@n60the-KMG9&MnjI%U#Ept~skHHTSI8<2KJ>5-bjb`nAh!cC( zEzf+}@;OH+@OZ;bVmQYNXxEY&ul7|Ff9`0gelaKwArO`9X=?n9cqqgvd|}c&mIGe@ zY&SLEjdBO5oRe-Gcmr2#2@;yye&_Cb7+9ml*>!E%yZRNRhnd#Y?Tp-ujB$>t#F#Nn zq9UMC$7nXF0@oj(Kw~`=@Z=^QirHtjos6Dl;TZB+Ug+g82-hU3IlM_xAM6 zZeYPn0=V7CYeY~EXV(`&f?Z1XVmnWk{-?!|zFt=%v7LipaSDzBnz+OM>Va1*+< zq>-EP{9@yRK=otoyt!zVr(tMF!wWJKDL-XI7rw68r zl+g3*P1aQ&{g6(AN4tERMe^5ewVrSwed_$q%MK>J1B2i8a&tDDLEDpp&t9CEQI)1V z?iO6dG`l?BhKsc(o!$@C%cME98p!F!#^QA2_-+eyMkhaGk{c`O(WMaI!QdA#oa9o_ zPF8z7DN2saKq%E`AYjlpGj+w(Zs7?ILU=D9R-lruZ*nD{{KV?Eb_spp$ExWKw1Lk% z9u5^;S==_-vyVVIzgd*8O~D0icGkr2u+C|nVJJ~}7Z|9@PDRaY4nCvUJjLkw&}V*D zK=@Q1`w8QdUT^m`bk7Y}vA#IrMK2wpsuH!G@Xkv+mnzcfqa;c=n#V$RxLMI}sh9=s zhRDtKPc(yfWnT#F{HTg7l!|U~_3vzFgo{pen zTNN@KEf@V~%P;Yg-C=XR>*d~IETw9ec1EM@Nr8=kKQPsQMMs05v+#Bp#lj>eqnn=@*X1;Sl6y_rP4b z7{Xs$Pko>+y07iA&9Pp$_Q2bynAL_#Fa9@B>rm{d2vAZmEMmi)W>xgt?y5wBqMjg>0$E?Fj^Y7_xhk7yc7}^p(cZLPlkIJ=I=y|2kHt8)8EEb{!_1Z7K#p zR!zYw=_4P}+v;Twm?LY@lg?|CU?h?I+_>nnk6K_y3#AT??T`N5K z#6aW+EjIyN9)pF6jP=%h;=repF}iJZ&?Coj+?Jqt#7AK+mKm~|M(yd=^sV0{o0n+ui0#pNi!l!WWXK`3%2WU?&} zCHWIb;BEb(o_y*By7D3ZHHeCyM2}%iI;I24pX%G>x{ykGJ~;|Fuc;aTsboq=$m=>I zWneXC%41{Vk2^NOIVJeel zhZKLs_*57k`6ZvC6m)&QTQ3M*^KsC;UIB!=DrTU2BLz;+`qZTELl)o0FE+;bwAa`Bw7an1WjIFG!f?-p;sXnMwsF4-T zn3J;FrfrJ7Et@F(4h@MRb~#veJNx(o6%`YUAs#bPrAyhnBO$4rU_uO`=nA~NumpW) zqLo)5Ty;)b>BEjryZj)}@Ixzx{tJFE)^I)*`R}NGR#>O_Qxmftw#6}q+Fd?EDX4Wn zez!TaZGHEE6#IwT{9@%woS^yTmHogkrOd)r`ob=aaMBfpA*YERF=h6>m-cavA(|2c z{)-F=hpvY$Hy@m?F3aKeH{3G`qa;3_2H|BwlKsA0V{zNvfDb|ziqAHHUJ5|(U1e?t zHiOZ~NqVp=&66I7)Nau6Y&(tBHZe)G5z{2I~+}?OUqzPA&)_&n~Z$q?In-LCOLuV_9=6vA?Yrtx8o+#I<$COmzfB6 z&?=PnJ6&DvV)LdaFQtj4ip<#1A0hvXM%)tF9FC)hb}qY3J`O=>5pJ&6K_fT#Lb%XK zwGM8OHiIoguKnShB!Q*nzCXaW*!$QmYP}!h*Yx)_eeUW#fscFIXx=!kcpb%MCk9Va6%UyJ7`|-yqo(L zaFsKwdaA3ep!BsW$iABv9vcnrJuF#R>m?kfCgx;u)L~B?5{jdwu9qT(F>^HfHt#fF zWJKh9F!*;*B=vXwo@>5r_o>ZuDO{n8lY>s*fm5H$*QGbX+x=sDsmqmm@B?ps0w#k0 z{ecv+SYsn0B6UJi-!{6ustb{hw*KzXo{m3{>(sAAnBckqVd-sZl7{Iz#0?K6@mgqx$c3XQ`dZ5Vj~`)eQgauyzdq;jT!b5?LXS9WTi# z`Qy63Ja6T3j&T;!U

      a>c*xeD=gF;X~3Dgz3!45|Eqz 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

      I7n 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 pdSZ>s8) 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 B7G?kd literal 0 HcmV?d00001 diff --git a/docs/img/glyphicons-halflings.png b/docs/img/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 000000000..d1a1abdd7 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,101 @@ + + + + + + + wallabag + + + + + + + + + + + + + + + +

      + +
      +
      +
      +
      +

      Documentation for wallabag

      +
      +
      +
      +
      +
      +
      +
      + +
      + +
      + +
      +
      +
      +
      +

      Welcome on wallabag documentation. Thanks to this tool, we hope that you can easily use wallabag and work with it.

      +

      Today, we have two documentations: for users and for developers. Just select your language and good reading!
      +Feel free to contribute to this documentation. It's your documentation.

      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/js/bootstrap.min.js b/docs/js/bootstrap.min.js new file mode 100644 index 000000000..b04a0e82f --- /dev/null +++ b/docs/js/bootstrap.min.js @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.1.1 (http://getbootstrap.com) + * Copyright 2011-2014 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.isLoading=!1};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",f.resetText||d.data("resetText",d[e]()),d[e](f[b]||this.options[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},b.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});return this.$element.trigger(j),j.isDefaultPrevented()?void 0:(this.sliding=!0,f&&this.pause(),this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")),f&&this.cycle(),this)};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("collapse in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);!e&&f.toggle&&"show"==c&&(c=!c),e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(b){a(d).remove(),a(e).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;(e||"destroy"!=c)&&(e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]())})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(a(c).is("body")?window:c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(b.RESET).addClass("affix");var a=this.$window.scrollTop(),c=this.$element.offset();return this.pinnedOffset=c.top-a},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"top"==this.affixed&&(e.top+=d),"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(b.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:c-h-this.$element.height()}))}}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); \ No newline at end of file diff --git a/docs/js/custom.js b/docs/js/custom.js new file mode 100644 index 000000000..23578e2e4 --- /dev/null +++ b/docs/js/custom.js @@ -0,0 +1,65 @@ +$(function () { + $('.aj-nav').click(function (e) { + e.preventDefault(); + $(this).parent().siblings().find('ul').slideUp(); + $(this).next().slideToggle(); + }); + + // Bootstrap Table Class + $('table').addClass('table'); + + // Responsive menu spinner + $('#menu-spinner-button').click(function () { + $('#sub-nav-collapse').slideToggle(); + }); + + // Catch browser resize + $(window).resize(function () { + // Remove transition inline style on large screens + if ($(window).width() >= 768) + $('#sub-nav-collapse').removeAttr('style'); + }); +}); + +//Fix GitHub Ribbon overlapping Scrollbar +var t = $('#github-ribbon'); +var a = $('article'); +if (t[0] && a[0] && a[0].scrollHeight > $('.right-column').height()) t[0].style.right = '16px'; + +//Toggle Code Block Visibility +function toggleCodeBlocks() { + var t = localStorage.getItem("toggleCodeStats") + t = (t + 1) % 3; + localStorage.setItem("toggleCodeStats", t); + var a = $('.content-page article'); + var c = a.children().filter('pre'); + var d = $('.right-column'); + if (d.hasClass('float-view')) { + d.removeClass('float-view'); + $('#toggleCodeBlockBtn')[0].innerHTML = "Hide Code Blocks"; + } else { + if (c.hasClass('hidden')) { + d.addClass('float-view'); + c.removeClass('hidden'); + $('#toggleCodeBlockBtn')[0].innerHTML = "Show Code Blocks Inline"; + } else { + c.addClass('hidden'); + $('#toggleCodeBlockBtn')[0].innerHTML = "Show Code Blocks"; + } + } +} + +if (localStorage.getItem("toggleCodeStats") >= 0) { + var t = localStorage.getItem("toggleCodeStats"); + if (t == 1) { + toggleCodeBlocks(); + localStorage.setItem("toggleCodeStats", 1); + } + if (t == 2) { + toggleCodeBlocks(); + toggleCodeBlocks(); + localStorage.setItem("toggleCodeStats", 2); + } +} else { + localStorage.setItem("toggleCodeStats", 0); +} diff --git a/docs/js/editor.js b/docs/js/editor.js new file mode 100644 index 000000000..9209d59c6 --- /dev/null +++ b/docs/js/editor.js @@ -0,0 +1,53 @@ +$(document).ready(function() { + var markdown_editor = $("#markdown_editor"), + save_editor = $(".save_editor"), + editor = $(".editor"); + + $("#editThis").click(function() { + editor.css({"display":"block"}); + markdown_editor.autosize().val(); + }); + + $(".closeEditor").click(function() { + editor.css({"display":"none"}); + }); + + save_editor.click(function() { + var original_text = save_editor.text(); + save_editor.text("Saving...").addClass("disabled"); + + $.post(window.location.href, {markdown: markdown_editor.val(), method: 'DauxEdit' }, function() { + save_editor.text("Done! Reloading page in 5 seconds. You can cancel it with ESC key"); + + var timeout = setTimeout(function() { + location.reload() + }, 5000); // lie + + $(document).keyup(function(e) { + if (e.keyCode == 27) { // esc key + clearTimeout(timeout); + save_editor.text("Page reload cancelled"); + setTimeout(function() { + save_editor.text(original_text).removeClass('disabled'); + }, 2000); + } + }); + }).fail(function() { + save_editor.removeClass('disabled').addClass("btn-danger").text("Failed :( - try checking your read/write permissions"); + setTimeout(function() { + save_editor.text(original_text).removeClass('btn-danger'); + },5000); + }); + }); +}); + + + + +/*! + Autosize v1.18.4 - 2014-01-11 + Automatically adjust textarea height based on user input. + (c) 2014 Jack Moore - http://www.jacklmoore.com/autosize + license: http://www.opensource.org/licenses/mit-license.php +*/ +!function(a){var b,c={className:"autosizejs",append:"",callback:!1,resizeDelay:10,placeholder:!0},d='",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/\s*$/g,sb={option:[1,""],legend:[1,"
      ","
      "],area:[1,"",""],param:[1,"",""],thead:[1,"","
      "],tr:[2,"","
      "],col:[2,"","
      "],td:[3,"","
      "],_default:l.htmlSerialize?[0,"",""]:[1,"X
      ","
      "]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?""!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("

    40. L 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 M|7h=z`)B@t0pt>ue*gdg diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf deleted file mode 100644 index 86c4d740912d2baf248b6329672835774133b177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38069 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 diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf deleted file mode 100644 index 84944d9b248020203d56e2173bdbd75c300d3903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64368 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

      L zqkM32tY?R%JI!TpSLdDOc-sjDTb8=rUqxAO@89?m`*w&iy5Gt>8+7a$zD&bU$&Oc_^XNR3Di!<{hcPY(&_VcQ67Eq_~w}n8cHLk+J zy;F1Gc%cb}zd>y9c>l(Ua*~^WQ{KFfPsXP;Uw$V|FB)dDUKEp1;C$~b(Gafth#aKPO_CCTfN zRIoYU?1T$T9?WOVS>=9FQLkD!sQ`1ssk)XKYiSqRyR)?`t4gis2izr;Zsqpz?|E^5 zT@Nq;i~$AU4?zAVhQbQa^Ip;ot)h6`E?JuK?6C!7(IuZ;Ws51N^n{UtQP!q9LhN+G z!O$@XOPjEDi1c`EcMT2|s|Nc5tExjAvh|OoK4fus%b+?nPSb%=@!)$xV45kLK(nv| z6WJy(S^N_q3k&oC2M1k`PVPK~Jr5gdyPLWLEIu8yY#mFbD2oe*0JGG*8Gg}$m&!my za31Lk-@He3U$ws9-6k~oV*Itb zIz=Y5=8B1s1PgPxktun^Qn-fEMGesQ^W+9dX+^-c(>XySqV#tr+m&h4P<5%jI(?xg zMk@=|dbKw^X76S9B^&6-hUI`r3FEaC_OJ!0CS9E%QhU6jaI&ZOjbG{42o}0etN z)*E^HJ`H4EAj#b69|UC0K^JCknUNR~qRu)}gmuuIlUp#7=zP+?{;Byx?7N^|mML@> z;!QpSQNLLGGZFeA!4Msn_hCsl->%_TOpbtD>RvMo+3dIn->1U1I`(=f+poFX^6s3D zzh!Ty!o;_bHKmanEF?doieDgJ&MLio&NM|Trf3TqK$dQ5w$>0R^x^KW$VYu5M@ME@-Z#pS?Lwb_EI*xixb4fg3gS{+?G!EX7*o)nHPZ;O*Mv4n{4B z?_MBO?&WpFz;@UVO#%b%;4-!W1qH<9osh(3S~cyJ#uL?6F3A_m{Yq03Y|de}faY|6 z<(&C0A2}*)HvcBEtlV&QboRVM$wn#5!=v^b$qw6CzE_i>j24&djA6=6jcOl(=DXEg z;;&o?Ax)TEeGxCU1-n&y=&S5Go~b;yr6Lc%1AP}Zh=ws? z91v`9%N1yMbFidu*Ic&=CME=0)XTI)l`I@koBP-OcU6()&(a*pz4uP(L9B=9Ze%j@ zx`!WzX=}~~wX%F|OY!Ma4><1CiNa3>ZAGt(Pw>pg4$lMMx*gp_ywli+qrSRrT1wBv zbTAXoVZeOxK(!dUd~r*Ir%mX#*s*Z=k#ZhX_m1uPFIDxHSXHkE0T6nlM2$O5QwTe0 zCOGCHAfaq-#@+vIde*5;5RZ9Tw^T!M|NOJcVx7_8V=`=O%xXzD8o>}Esdm^hF;HUB zJRsoVWY3hQudc7Kv0S%Z2dUQViQP@qbV}%g;>9|W%Iev;@AA;S?sGl%j6xnhY7qd$ zO9@67Oz+7ip%KIwg6(9Rpj*InKHxXP@>-0j#zAyzaHP?~1P<$J`_zi{;f{7-A>@9n zfd}GTp;+Xbim)3bCA?BJ%J0^3u%V?<_K5YppPdFCl~Ir4fh;+dfdYp3&M^rI_q`VZ z@RcNc)6}6VkS$YR8vM801`5b|eS_ECJ;(hXGQpA96&2Ah9h>k9t?^5hANarK_`xk{ zOareacnf%7y9CK>EOA4GMI!IH;w)Tbl@E!n0Q|!b3>8}1WE*4aT3eFjld4^=nE=Ce z$Q1OVtqdR2iHJGEihmv*O%70GtpOw_y1 z^Hp)-%MBjCE3IsYBg;?fgM+^aG@{?xVYA4^!Cr8AGCX7th6e+?o!ZRZibD9&>T=>q z9>301?S;nDsotbuUE0`wrER>~zCcp%=ChDp`wkUex9vR3ZWGc~qCr8)5)$hPS#YVJ zntPS<$&7pGywt2SYe{Byz0z!b1sw!vbqXitJ)@CqBqQ9AfmYG>rO>3B0#;J)0UG@x zGdst%VEOUeTOEgXvDNFMG%{2QXL^{|p`t*%HZu{8#l)V>SFNRxZ!NL^ctmNSnjmRc zS!q2)UnZy{M17cMBtl`o)N0zm3ls!^kHAdQ`xyd+4SeoA?K!i0;npgpsNvvtc$Dkz z*_L}nZ*;2pHwd@P7B<62iwo#AYvZ=rUb>M9bvp-w(C*DYUbeg1gWa!B)<=hwwA)V* zjY@*uferf0`V99Jk&LK%9ogZCT(X5}GLcS6Rt?eRko!}W^G}-N7x^bvo1f{)*V3p> zJtAvqd=9h##L+a*nCOt;OJ$Je%}bCsVr&^G88kmch0*Ya!0 z4rAJvqhPEg-E-RkysM;B&y*&u)JAI{NokELyBE9U!tYhp_tHG|lL>w=Bsr;XXtX|T za+$RbL$TnTEgZMTtJHxGN|ZCA8}i6bMukc^-m@^@K8R4&gK?v;6pMB&_OTX)_+EUj zBnhnS%pbhr3azX|V5uei5^j3;B01m^-8*Qoh{hC!HDra9Jswc(H z(XOa_TJpw{ybTvAYtJFevx6S8=)D9({beAm7tcXRV8Lh%p;n-(L!UoYm@D-mD zF1dbi(C3=$ob4N!&K-%^!9h+l+cHid&L$0D*u5XS6eNyFGT+Cc6FlSxx|7_opU3sa zJdB^E3IGam1r2K z1R0DJb_n(F%;t4H-Rb-Z_%F}mg=oI2gLuen4De0_pDH2>Z?t-lw6CUL?xMuU(BKyP zN@;F52#}Gsz5!z=FleB5=HB?q#DE)CtiJnO*tsKNL_Y9w3cTE4U zx-%<2b59pg6L0p-ji7MB1ixCY(`4K5wz|qLud4ZN#t)EY^Em3wD!Y^%@u~)q(%G0o zRJNvV5`X8!s#CmYK{Yz^?5LM(bI!v)Rw8{D^HG>UE?Mg(_u~mwJEG>GcNqeQVC$xn zS|B(c^P$x|iftRUiPzs=hA-=R+?V*Pj3TZYmxfUhEB8*;9mn8~k<5s(I{4`&G5v24 zP^~b%BZd5IwX|RkXaS9aMYDgK-F)Vym1|?fmMHmAbN4dN#L%eM z;_78gMc7cj;^cAOJvMY>O=Gl9vh$4XH?Y7vH|BQ8RSo{j9zHNmw`ZAwNHcBHn4+C- zfG>S}yr8f4IYIj_LjiAF1<31OV@uOo-Tc!uWC+mS%~OV=dQ`6WHmpQOWX7RnKFui&tc z*Ja?WYZ%b0%iD818Y-UgP0>lArTSksyWC2|qT?rC=Nd%8a`<3Y$NzMdeg^@8-8lh> z*FBOIF9J(!<=#HgS3aY`NrT;%WG@OaFH_=_jNF}Sx(R3H8sK2xU)&Y4Za(!U1`Qi3 z+};b^9Q#*;0UPdsABxWPEJQVAr&*=Iu#epLrg1uPdXs7wI5u9T#4Ybut*EBFMRGVy zRs!zDy?gGQ3^BH8^Ch)6jaf8)NoYaW6Z3(rV?YEuuZ~!S?g`*dd-(W>#sRpEvC7>R zGHlGxT!q$OlZDSe*BE~B>HRs=uT&f!S2Ct_0Qn#uY7A}pmQ^Pk>Q$h(}Y>#`KJ(AdQT9#Tt8Wi8V4ZW3hxDzproXiD3lmUi5`x?2s=_x3ZrI>y$ZO!I?ev=Wcp zN2bY=8C0{+(g}=2RuqYq=vgs}wN`qFyDY`J8=RZh(sM~>oW1ySySoaU^@d4+PH(@r zEu;OIrIu_H!QQ4q^j#?iDls?erz)XOT-YGH?)+F%WQ1?ay`-80Iw#IeUU7i*Wxrxw zjO40p6M@?xm}lXXs^aJBcZPZ-9;6Qkc-1TbZKGI1e|1rrIhpjk_BGU;Ao=9W#24Y3 zGHsHG4h3KU+yU%-RGlfYne0o94Xr8Al=kU(-(Y^VR}ZQ^Xm;uBV#rll{3>g@0R9++ zZw?+{_{QcUPt7T~Lf0c9(AUvj{)vGoc`(1c#B==tPE!4cZ~hC(CmOgc70?HdcdbN8?HZ?lqd73mL0`S!~Jhq^K&UZIYKhpMB%b z*(bv5b}UW)5_mmM29TY7R1#B37I<{H6}RPGBMX(-@4Oz(RJb@ZxLi z;Vnius44NyN(ze`v}rhE{AM7Vp42+xwxge}DP4rl_bV-La;L@5g)T=^Lmm+)is9)U z7@8B!sC;%D0nOI>1qQDTM2~+jX=&!x%#eM@8X$Ry7R^#8JNrg>d{KOYOt_St7QnPl zwHTBxj0!$kbh(5)_#xl;X~8j)SKm_UVSp&q(PV~-+%MEF5l9dn#en65&k^&w*vk^h zr0*7fqcOFjE6wna+TypGmcA0Z7#kcIvRIE<12g-;DO`y5P(FI-b6j7%!k$V|wp#*{ zVLN(HqA2dZ+(-a@LZqJNF1iF15(q3H{8iOPi8jp5({1c-80OcsC|cNdn`sPfR_%Fa zLtGkGg~EeL`Ut zdDp5^m$kquxGRsUf9#${Jz$WWbaAXSnrO$j%(z%Yc#bjmwPv;1;WEV zoAE^^f**n|!)g%`7E4KZnhC5gP)e9Y(lc8*+l{?ZBA`E}Qa_UmG@oxNJ5sa-6d!9OWM5U%-nqUU!nOtKpneT z7Yhlr`TbRKj&vGNW|6X^&yox921=gvFD^&g!`Fo13abdBq-d22Q-&z)f!xQ3Apz z$SjE;x6l?eqrScr{%9wO0hUp&K?X|GyAhMeT?|GR8mdI8bD%&21CmG{F#^HfW76{H z-m1GP-!s^>7reY=yM)`oLOZW3Y2Hs1Wj?BAkg|P#F)y2z zSeEq^RN4qtI#PcZ2r^NL|y*m zQ$-{~^La0O0Nw|;TO5hW&&9BOIx|{P-&3evIjYD%WJ&+?&$f`9msW5i{%$r zdaM!W4F7^5^$(Ifa#qn~KH9}yQu;$gi{uBh*$)PLz$^p-Q-#E$+fESzBL?DWt%!DI zq^G#BOnb%L*GXb`&6f3riQmU|{hj^AH$n9CfxDrAY9EcjUTCh=*Q|JQ&RT4rAtUO_ z^#KB^?&WO*tYKoMiN$(Y)E+e#CV4z83=X~?^@XyV*fQSl)GYj6jKmm6@$y0vChVk!|>ORq71aBt;^BvZLD-3Pm_ z=>kiH)Rh1?XIFzSgk}mT8^W&r#uM|!k<0_XEcB`by6yjr%Y1*d22zA8^FX%|7BcF9 zM}-_10E+mLPce@tfWz4Vmv;GMwS+(^HZ7WwWw8ul#>0I9wPe*PX+X>P>HzRZ)D&~2 zL|uxJc<@F^B&c_=;^(>KBqgL1iyZF&g^uz%O_ZYuRzOChL#-{FDK zMyJXySz3R}smB~{9%elr_xDu%vsvIF9!&79CYHM3X8DPIfhEhtp*@p~9R26l|L_Fb zM;YfgV#75d^2oVq?CT$+U*O+X7xx=+<40DZPrCzj4L^7&^xL}#0P+8wH2OT|dhKGj z*9-Pw4qE`7v(*whUg2?!nw{>=Y12^RNM^<+bzM5uJ+bcIs*$r zh{2}?k_uihB_MQlltXM$+fgoe@UOV%hsiy~0w9NDb+;X(aG<#}v4ZRb)51CZD1S!B zy_9U5!^eJaNzZFk-br+-1BC$Y6|fL70U!muBU%z((|!9Dp!JxBY*(XtLHq#H+`3iI9ObWY{ozNeTyzyA)@o^8`qwYFGM{4^KT}HxZ*Lr}V)_ zdm^j!RGl#J2|)hXLRjhiA&#=F+-%BYziHWH(EK3 zZGno!7pFWOcYjSy+HseiyrD%oX|AZ!{*oe6U*t+7gf+wg&%S4k&uPz2i3+<)90hi0 z@;m(*^F0B~+soiAycW4>P;y*YcnhGcx<@EJ(lyfGfoHUVh)2Rp?N#uupf_-7c_O%KE66z@w9Px8?# z{h#N-^K;PHzYe0mJrgm^7*Dqgk@jp@7d;To8&!Tn>;4orrDn)2_i-glBwE!^oKtH2 z0ZVEwadVif(PzcD<(qUxMcj+50w=|;0S=rQF)I?!!UDQn{- z-6Q&9QOQUO4+jL0foM8@lIPiRL|YfXw1mjpMBlDbrFQ!m;d572E`EdvbU?215K~vA z$+!8q@zC8dD5ZEF|UJQ2x&w9W(sq>pq%6AS>v zQrh!{fTs;$0u^qllzhF_G<5sBvyz0}AZa<+gKR4VgALfbkGJp4UPN}lV%x4xwcXTO z^~~&shOxeM!e4DBBS_b}n=9(dYkeO>OIap0@ME6h)Wts3$CR481~etLM%8jfZE5)h z@Q789T)&<(Ls$Ppk8?X6Fjc=IZsMDt6I)$?CQnBOq$V@IMFfZJ3c$?CIS1JwB?5dN zt1SdR4O9hK*J)ZN`UAtEcQLqUo=l%8AT`hw#fZdL>7^G$)DJqamJK_e{4o)))Vq%C z3`&lo>eAf3HCC}dW;jhieo#uAoq61GGdw?t5*w~IM4#tdc2wZtL8YME!+eTc%fgD^{{y_og_$VmCh8u|HxurY)uEMO4Io&H4coGO$OnXK2cqg>)(Yi zhW&)q>h?&_F&p9OOWQHDDU2aXxX=zyMpq?K3*O+D2eRX$hZWvb1N=>&_x@O2zc%_2 zaBkH>5;d*^iSnU-*WjSwZ4^wdm81f0lZGr)V(z)AJDI?IKdM@w-4m)u^Ztok-X8FcJ7~N zy3P9BU1)l^*j@}rJpl~}B7F=&VS&IUY$slv-`#$Qq1OPzV>&W4__8ITHkl^K-BYN4 zRnx$_Mdq_1T}!DJ*5>^TtK4cOMsU7*S2^7@0R=RrCTB0bnNM` zbToW>)x}Sw$;T7HT6ZA{%hkzsSkD=8EPKM|sWvL&e7B8AQ=)~=oLg;1s(C+u*0bt+ zgNIkxB^am#KpU;|SoB^;Mc9v}D}b8bChWV7RNe{E@WZ#?#+dZ0LwLIHk3dobH1)fQ z?jzb^sjdcIbACT+MA6a0hXyI{H5eAoomdZ(6Fyx|e_Pe0{9IBA*FQPNQ>36;yh}5M zKb+^qLH6+*-WpzHzXA)u3dAG!9@s1(=P`n8+0du=0Kdc_65XO}=X9B>c_2`~RP}aX z^h`D423=9&31I#v1{uX+w&q%b{|1HV1K}Uy2fN-b5;Ka&|`wQD(gCj)H2F;_yEad)PT>v1-z!s!eJ z+d_i_!RjM~C--s(_flGdUNoPHg38^HSBYT+tp2{dq+;Oui&2S;)SBDs`hpJGv!B8_ zS@bFNd7P_y!^J)&UL`NMQhg8tDfq1K`x@~BbcZJ6fAWI__g$*|(BLNO8spjHrP+;sl>apR+0}g*Wor9IEdINX z83WmlHNAkST_hP_bhsLHRk|0AN5-yk$wnr z2>6iq_p|Q34hP9lUIk+D2MUun*yEp>zwi^=S`z~}lL0JeqU3UhxRI2i#}h7R&p#x7 zZ>Gzb+U925en-Uv9<1H^H)@wg^uJyQFu07Euh#0r`$?sX3mQs>>R(lJ>FCnr#_PTm z(4BuHcPm`5aPgl?z0a`;`9E2o#D!th&b~`I z1FzjR3_36E8r+`AdYmjKZY}{=?aIIC1OE*@_4W51>wJ_aA$Uhm+P2?Q411e@v#NvR z+p{MWY^I85e$|#1TC5dKUa9vY7{kK7#M6mmpO)b%E2qh?^JEt*PsH~a&Zg!T^(f74 zsGdDB;z^^@r~`~dJdk!nswX(WsT$KHRpB~i@i}kxoYtV(>Bh&;$&0K%Qaie?C?8iI z{tu(`Kdz^rU+lb{t-5i)faR;qPFzB^-|LxOGn{wUwo>Ydhp#L&nOkb^2 z4k`WGk@|^Ow-e9wk7dd*&Fy8j13yXrHN9pWDqjBBGVYjH$ILO$Jr}ETdhdX5%65f* zzB=Z{6=V|M5-ye|lnG!Y0o= z3K8A~A+qE90Nf$TAsC8$#C_bVxUP5wwon-o(FJMh`=$1Ts>vZ}EcLhe;kRBG&|Tjy zB_f~Hl&3nlw65L5AKIgIFXFe`rf2F3;W zF++g|*uXQgv*py^q9bmH_b<7E2@n4U6-@VHND!d+aQHkJvpavT4R;%u^h3Ovi-{-s zt;{QG&gaukIRr0Xw``6*f7y5LDN!ZJ#-)~6%Er2)X2(kECPpReE1O0^(*9g8w4I!|@@{kTQ8CUluWWI# zzrf=WUxeI4KFOx2$DrHxrK;rGB+_q8@k8Js5dpUZ8#i(UDWko(`}u!xv_Cx=6)4a8;x#1C7ss ztx90iaZz zlnrX0^WBwC?TPWSU;FJL!PA}l2H;B^UwTyRYyG9%Q|`3fi};w#Sm5fL*)t{@KpjDj z7lC+TSxSckVfWN&C@W=>&J}1F#BUxv@J#HeK!IyK`4Mo)6~pAWEXV7}ITE_~kQXPq zxHdI~Z3|;R`g1Khi@cMbX}W~2T(&V}Sa-KU-QLf=Qsy{Bsi7JG!RcS`f~$6hQGa00FBXSgVn{F%hq)`nt6>^$X4^E8`B^1tY0~pY5X%Gq47K;>~YRTO^@)MUGNfP^naUGL#Zy>`VR4x}#uhw}W%%YNvS zA=T1dKSqN^l+PO;M%eJfnG_^L^2(k;r2c#ZMF(T7aK!{uZ195c@7_m zb9a^I0--e=BAGSx6kFMLbUny5t>pN)BaZ;?k4x_Uh8 zX*LixPUORh4a;5DF5&}x!>7C9&p}(1!J{{9ydkjd8_b_j68^jPQfb#F&-K)st&>gv;Z5g8$opsx5XOF_>5io=V`C}-cHZoS(%k*gidI! z?ONYr&||3OIdq{EqG`8CE!oOQ!!W*Y1J4O3FtcXg*Y_MsJuk=~fNN$dQ!NRpdl9b?TgYQ-D)CJ9;tsR4kT(`YGf^>63$;XxX3TWL8H? z6;+!e(BCEXId{WpI-DF5rFL84#%OEmH8fyFv)xP6*8`YAaXEXsVy`J9rqjB&y(cOM z3gO}C5T5IiLmas#lf4J8&iWjd0*!*fIj-P|@HkFNlGS)h*X!b_nUc=uE_2(~a+j&P zWck{)<=f=aYWeRpArhEqnv4vICOE}$Aul&fsrwOQy{T5D$Kx(512sc_`eV@p56pH( z)&CeHS4hu^#W^%M)fs6?67Q^tyH9~*aGpGV*5-oB$Qs=&;2DP%&Wsa~;w)`_1%^_7 z;qtOkx`-@{ZK*h56oY5MEwm&_>&=bL`a(0i&%n5ICIynhDS~z;$l(rRIU0HL6sd)# zSggKHs-!&cYtu}ONOxQvF85^;(Yfxo<~z;i&GcB#K52yi<0vkMaI2d%X-ST6Wxm9sHm^tdBwk= z2~(jv(#TzxG{!Tx5WS!+eKjN^3m@+yZ#4ExH<;+KyVl-9nt6HA+)=RCr@)-;0v`@t z*QGn)l2xQ$MpdOnl4S??&aA+3D;Sr%_@&Gn7aA;G*VJaO^PhvryEnR-2`cCZE{4}a z2&01{VN@O86(Ksr$;jtK-4U9s77X7wDR&WDst``8m}#*d3=33M3&qH#nsa6I-A70yC31q0d89XoZzzRi z<-@*dq^Pcz8>BBiz^7o;W%Bv%xN}?J9ARHW1vxMKWng_Xn(xn_XfPI*wZb0f+0Dv4 zU3&my+1g?5UnaQ+@*4~bb2N5Zjpu= z$yw9kYaM2aL_3ORf{qppC<|mKLS7~f5`kAv&8t9awYQl^D09L8n)6LAMBkLk33wh* z-}Y@k^}Z3)kl=mOaT~%4tNul}>m^DRxy5Xz79S|t*Y>Tcwv_2c=}l!X-qF@H#os!j zB@L@k9L$W8PrRz;a=H(t)CL5|F@c1YpC5gT+1}rx{AzJ~QlD~ljS#Pwn7Q61Ni!So z5l{2cR2 zB(tp3hF=P6xystze8Dw@sR2bsjL@t}%k@NX8tTHhF0^JC-x)+7aEeiMm9TL5^5xnW zkOZx&lLbM1`x0-3LD4u zClF#XsqUu_hTGzmD=H+(2?%I1HpPpjVcBv%JtS zfBr|V{!o^KjR|zhv(n2P=)GsnLHSR?9aW+c==MW3eQ(q78JJk8t<{uchppeEYKORH4S>({&U zHVUk@%phbvRR;+r+oTNyLa|n)ZQl+ZnU~=;WXAsEk9PD6Q^e5JDUBucsc4U$%2Yd-Fdjf6#A(ltF}QIy|~Hw1We4C+6i3|*HH3j|2- zp3sh~OHm6U7K#;~dHHtXmT|>7#m=w!y&`SzaF<{4_v#(hY63-Glz$s4i*XwniZxBj z5Q^%refg2rkCNO@uILgExW}m3vwL+ot8Y67A}h>Lf3O(s9_7P(gpLD6x(1=NVz%6t z+YnnlDBT#q7{JXHe@m!XDEkq^FrgKC8nxWAtVqcV#4kWncSGKe5TbR}{?2qsG?)H5 zRoG}5A)SeS@hGP~>k;oMtu?zw)CfvvMqidb>UxR{OP9^vaGXB)TwD7iS31YlWEG~!gd{>^X1|oxL3@3Lddxst&dWv+`&-_myIu^b);WpfAD3~ zb3G&U$URy=5P;|{^Uuclf`t~86KEF1ymMQw5|;W@%#7pox0CKUT(6iq>%{0UN9kw8 z>~}|DzkQ;384hK0>FS86-Y)*hKX7<;6E(+!d$UN}^R=J4gA>Db>9EHmm;8YGm0#{4 z^woa@zkYebG=Fkecli#4QW_w4grL@fXD2b5w&85>;H2NKV)m`endR z4CC_OuV{Pwq1=AOV6#3YWc~vuRXDldc^$a$>T7GMI!y7 zk?i*zAb9k5WgcT(H{Qj9fc(^`cZzKQ$m~jI{8?Xy=)x5yT0ZFJezgi6h}T6>bPkgm zE<3$Ey?R}mZuUmw?`kv4gEzrfPd!5T90Df1r@(}jA={eY!PzjbS+yIXvM`|Y13;~< zzD1oT^S>cw8IaK_9k-QJBFb2|NsC5N0fIMI{3069iJ`v0P53 zYlGUr;B#=pJYnIhep5G<6CMRbz5!#*amrdt9{i(!^JSsuA(?E!Z!-ncUcbIjEtZ&I zAOvY1>_zj@e8xK@-%@0LQO(Ixn#JNKADOJG93^{(l^3`%{3h9LGX3sik4Y@>jU|CY zBT6x0Png1iV~D^j%J&ej)z8{Fs#v(8IaLkUo&72qEyN>-%wnIdh(F}gpP_7#NBg=P zRxsa8`pk2i4Ziwb&U7ifGWU1eea-R#yEBWXOCV4& zI&3#5Og*YGAvz56k|qipb7y9hdshI3aF01ZT= z#j&wP(L24l<&-3_=^YI~m8&In>i1xLK+U3~DS)N&vtpsNW6(7KCeVIbYEmh}mpejH z%{jQ}iqHe^O#5CDfxV=JnKod&{qMsYc)kVO&7>B`uubRJmS65WoONZJIMAxCSvGmp zpx~}{J~`)i!c|J3*e^7nEeZHcvooelcx zm|IR974ol7ZtcWr4peU@r}#W^yqVvsy)XZ(F(RK)p2b#(Ni^{ygF(-!I^8&;q9lGV zNga5LxEBvK@~e6#7GYm1iGDHhfh*TI-pk;=pLRzt%3Wo|UAo^AvU9l}=!ya(IRAqJSvrF+`UY(bC zu@?S{vuqxGm`IxKS7x3^_$y}sfSfo{KmO97`nalvVUFQvY<3K9472%MS^W>nAT%z( z^bFymggKK<63(LEBO<-aZhkIs;9Y3oQ|zld!+!lsodhu-c8UHK+6e7&KuP$O#PtP( z{De6NGa`0I!HUbJ9xb1XmT_Y)r>oL@LwK6kK!5Lq;kr6031nqMiknBJ3ng)D_x`lH zPN4X7flOiS*S$~D=M8%l7fCu}ti~R|FwC*C>1Bs)^VZ9{z69>j&UH7Q8>?3MU#aA;l`QoA3lHl;Kp!`6=gu^`h?Eu_AbkHWhB7{;&9+T@e5@AvR6B0 zq!Q=t*NV3yT5@)m1-Wkwt;vfG&0B|F{TJ5@T`hxg=$}E2$^0Ee$xKC9i6QSbcBE48 zPSR{Ha=wMJMn&JxV6)9MXOOsjm5qV1{6xCpQ_Eyc!SV!KP0i%5ehwy^4PAyF^vFsM zgiW^Nq*X0g5H*U@Cr!6xsJ~RD+6bfaFIe!-YP{Bx%3OaF+a6SMjr}UM=EdwB^b|B; zg_UMX!jcgK$0GpU;~)byShFeo2j@7aoXhZo!+ILai zRRh#GSFV^EQg>atcTj`zL2u{XvI{c6cic`ZQ(Gfsz$hfip#~^qg<&>TdJS zHMVh<8Z}gpHcc~&6jYvLu z?o+xU_z@u)@{i6C;l=Gb6Ia=G_uTTQUiSBs#*!S%8osx_1@?v6T_}KIOsV})W%YjU zDO%yJLwTXFv%zkJlqi>B?=~mM;iP~rz6k+lj&4?IuEJ!!jHyPaZ!%Z(>PpQlb|1IV z$e-#k7j?y__W-V8EWVrB!NGB}M6t9?>}A`+HS%@c{+xRkS&WK;fLU+hRH3UWl^KwH z%V0pQPq~`MtQKrQ0*sfFFb`wyF7Hh!JmV~IA&nhJ(}iK-$w3SB4WwT z>b)7|Ex#Qqqg^W4t|P2fuavS_Mnd@jOAh}El6U$~S<2xdE-$lI?Vxr1b(e_yqvjcr z1W5|}RjIH{+6&4h@)M*O)dDF_9_$|hLwrmA)U{1E1)rmQHl)b>>m)?40`ZZjsOjSWtW0x4y;n% zRZ)nT;u==0;#q=Q@cZ8LxzbOI^PB7Ys@Dp8-u)XF&MsvjgMXF*Zi)$7Fn-Cxx)jHp zIx}gL=->(UO~>0f7a(>G#8`LxgZa=ur~P=jO_}7;n+zTq*WTyt$_If&IgVMe$4%dp z@HrN@8zz25w6{C?lqhO^tu9%AV$NOeE)W(jBoQ{#ar$uUA5dX%GjLt#2|%ZTi2t$7 zU+boc@U6YzTDOLVmh=(zeoS(%)a@c~j~<}^`XNv-y;48>vzKU<1`IM#7vNDXwm|#! zgi_;@BhEbBrDmqm9%5(65Joz zeALns6nS34{GyPMO1TeXtM%oFcHaPo@NP>vVq>rn$xDeMLvN8xYC?j4SP@e>)!&;5 zAeu7odEJY=1Ah6r8h3Y3T<`Ru@<~kxHxWI*(l?1HBq)_EU#yF_-`+#}bN4>@dxOFI zgm`K-RWRgH^hT0_I5*HQN~M^StcYJ+D8HSj)L~*sD_~Xp2Xv>N?EK2S^513ge5NYb zpj3R_84(6vE^Wv-RYyKne_nC-elCuQT7NCU=HF@D{sv*TcL8XjgF^)9qvF7-*qyE( zEA!XE<%(IpbSgY6_|jV9`kTTarI+6=?mw9SgKq3%rq7nLQ(lr9t^<))q!FOyvh5U~ zvPXx*cioq~noBOZ$};h@G7Z>=jHfw*@Lh7K{#l?odtejkMRe-Ca=md}>3-~m4UDSg z;mGEN=ihQg{yY{OvK3-cc~QSn8SBZyB2R?k@(%Y&!9a7gB)%+JH@b4G>pWR5+LEwo zw>#q~*D9AwcXE4~E_WF-G88FT4cy~-IKXPS3g!lyLc94D)JFvo9!?z%ZPQIJ4JDn1 zkVpLNZUrXTbX(n=idF8?*YQB*d!Y3{AaUR!(D=TPRYrgzYdNrL2k;$O)>QCokQWw= z#5%Zh-tpexyY~=um2V$NLS>h-P0&?Q4BFAcO>yAEDbtV~4Zg*XPG`y! z?wCX~*==a{LvU$_#iY1F5sN@mLV)=@f6WKWMpc_7Kf^Z3X~m~`c=Pimzu=!dPtno~ zGl0}Un>2gH;tmtW!}HjU#1nO873h(b(XrBf{!=%2G-+F()GT%IuoPu=yvicOQShS)f++6$fHf6<<?LW*f79>|hS^JpT$ z1lzj!?GVSE$N{M~6?92860@JS$l8RE{W%yRkN^cdW9i~tW4bXuWN;t-;siL$k+xK` z{-^1S1!r}t!+7SWl;PX)1~{EihJ)G^5~K$uLN010v@4(OJ?XBwA=}mdxxoDI5c~Zv zpROqQNR>TO-jweGI%-ydKndysQfZ8Kx)P~9{ZmcP$iB6`y|umbvs2uX!v$x-856JD z9V~Y`oyFeN0M_PV@~6SWL<(@_h2|C&v9pmM#C}V0awrlmI!xQN;-nTCHY5QV+7S5o z1?VbQEcy$leAO7cmVH!WY>7P;nTS2}Lb#V=Oja5sLNJiClv&HB&!6gMe$MQR#ME>J z_%AU6+aORwaT?o})(?Roqh=4l+1>0kCo<%2^VC|I>G-QD)Hl3SIDds?^MUU$n?=xX z)~{we`7nEWAEYr2BVRV}(Sr+E)*NqKGBU2WR6Sg{*O?1&Ie7UQJnuW8+)_owLnh*Z zr=+=Hy189e_s>Y6bGmrM0ahRT@iHBIc+T`p$gqMV#%%kQ05qUY$YYVnSkixz4R9?O zjVNA(YITSxB6Pq{*8_bk|KC0Eo5;$Iq17v=Y!aBnlewMB>cfXas9?Wy*c~aW;E$?p zFH%|dcbLQp@!BhMaJr=c-s&X&72Tx11Ly*goh3b|_gjVmK`7kJ=uh>3Kr&gRDteD~ zoTU9S6j(ZUC_qTc{VmW3^Cr-jaT9lg(tWr>$sn9~5aJR6N{#X$7frD%#+xkt4=77H z;(BAeke??A!uTNn&c!j0@k;Dc|3wWJl2F8c<>Rp zgROQXfXkjftzSsQtm~G5egLPc4~LJ1!8vNwxSWULWwmf|iQFAbnB}=7pQ_a7vGpvF zXXyx56KYy1d`$N?0g?$s1g2NN$r_N(KC7hw6IKgZtiEE8IllE?A=~9IX5PRqm3%^< zLw^s(N&Xuy04OlIktI*k`Z-N8;#y7Qz}h@KHB2(jhk}}s_5G#XKgiu(GTwg?HQoHR(B?vkb4ioGW9mA+*0ae-@}d0=1n`^F1v)~EA;;_8zZ=dqIMSll1X z>V%NQeyH#t8+?l!?sQyqC@AoW**6cFrNFBw(WEzhD?(5&XbO%s>tOQzmLvveIn?6x z?EVP>Cvmq;#+EKQ5b_OqLfQfT*3728G-%^se1{Ku4l!yw*%)i#+(Z`7j}z<9E{f9F zudp^2F515)==@W`Y=u(xANtb`5}X2S7QjN;X-4DpO91%cc_ol^=Vh8m%`4c;M!>Sd+g#4lRQ>JZ z34Y>Lh~fcTNYOcr$faz&C*CRZ=pT^T$@>l!(zWliSZx@Vfi=NI&c zrPw^?<8k}M{qSIrZy%bi&w=_ri;|v_Aw&AX=@54H!NQ1*#GcYMzfg~-*eu@6FDMG8 z<&1t3gwE^p6S(0_70IlCsuk3I#2>H!kqpj7auU+JE|^v$nJ9x7C`W;lt_$U=M+8Ca z?OiNz7!psoK{p= z-d=ZQ%Eg+jyI=08f1Z}dnU?)>4isAjggXa&AZKV-UJVBa21k2UVZ=7(d6^0}?*FbB zVhr(F?9Y=bu##!bOYUwkP0$CQ)c&@ZxX?QLhu{2DA8#=U<#!7+7Rj-#vOr z9!Cu)L(-v*CTHUaUB$p>v~hz7@wG{x(&&oGUC)y6{q_9vI}^%(?TPt4tH*bSUvKSit<3Lv1RM%7{;WCo zwEo4(qDKt~sa%En8dq;MxW}{Q2u<5-jDm-k8jfhv2 z9LM2Je>Ra?R=aX4x9EZ-?vzWb%=7+W|WPzB?Wxo6-Bi_Gg&b;BKkwp_W za~os_z84hqM}4~q4{dDeT{(xeoYsZBL-<@L1)*cht)%-jvo^Y}rwnJ8UvEC|?4|D} zA(=2J6A#GMk0_(0G8c;R>K+(z7mE^srD&rwcN@XHV$yFiXK>%`-#(iR1)Y~B+Adyx zcwBO*gI+j&7}qvlISKCXK0O#H-P$ap=)yP6v3q1Mnv|Oy=2*&q@-pz3E;|9ti8PvK z%~MeS;h+?t6tLRT(nS1`36|z=K83P%w+Cs}x(?FWm#9FwP4nMKplUIEt(2YLer|EG z?o5@$>X6}DI3QQ`#&JSDph+-(Aal5oBa11On9-L*@S6pzi}}+9B3dRZik1C@I_wm$ z6i6{Ov&$D2+|r-RqO%uL^)ai|GR{2Kp@6DRiyxoiTb5(tCI%lgqLMK$UR{-C%1(e; zZaw6G{#w5FWfg8to``5p@mR`z)+4lISIyX~&w|2q1B-;d+Ej;=URKWagzn2eFG4meLfi1@_?D3t`Dm|O83I|!@b(IM| zG~TFHD@+cHqKUHL0_Brm6_<2cnov*`(+94v?WsKL17Xu?H6i+pC+QtL)N2Tio&IkA z4r#rXbei4AZv?;aeb<>i3qKDt`jEG?ZaR};PeAC#zdco`s}xJ}rva)pNmtty9qb{8 z36a}U47xqE$Rd?vPMlQVJ^?(DU8hh3D;#m&offyJkYM~u{kFiD4C$q{y)ZesUq>F% z>=(}xAAJVu^*AcYlZWCIL%@7h3g)7WVgkcH8iOAN{j7DJUcWv0RVBY8{_<(hguxqs z-vh}ta4w`y_Gc9pN>iWK4I{*H?2NwN8jyY#psthQ{k1>=o}zk&_WjD}jboofYl#ZN{=dkgMm!y=;_<+(k0h$Xrwfj8~?r>!o zKUlET4qk?f>nh5Wy)&gjy`3U`7QwP#tyT71hw;AZBEg(nA#m=w{`ZxQ@W_(;ZvLNA zM6iZkfzQ5Q`L1FhY$ZJO@niXuR5nS8%p<1(2_9n9lddwME6MWG^X-V$bQ4ILi$6fac`dOw)v6qw7w4~W@|+eJ^UlBf%-ue5 zHA*LO){4WapXHVA^QexmCKT+e>U{Pyo&!H${OF=mib*lOWr7{h2*3w}X$Hn@q1;}% z_{(dOY1U$9ZmA%W>CQd6FpZTGM@lkEG9%@ssO^dm0Abv5$=_lwxfa2p-(FD324diZ zaHqVp2wBXr<%0Z@{np{(r%$5q!gFlW^`Eh{j^;p5bqD~~Fb&ul#EMCt&7|0jvBc9K zDM>6}LzTZK?}Apdvy=Lx4y;+f(1E)=(F--Y%w2q^V6yMrq6k%}5g2hDv@l3MiENOF z)RAKR^%f?odX_#rUY+ zVVY6YYlJMUX-eHPa=9n4*gAKrH_Jofe7>01gE_rpKrHF&3ZXoWBVMHgY3R9D0(isE zKoABf1pwNf73o8=oyGqud~J*`^iVGIsCB|hcjk=#aS&Ic1L&EQNm;=JX z@JU$*zz`B!N%l&kD)s4U^EY%AF-rN`12G73&*b`%W_xmB5Bk0DD=;sGohnL`KPlO3 zlHX%Q#Qe1TyPcu9w73_h`hH{GH1r1J=e0{hJ)?%sR#*r{rn|=~1En%Wv;080~t_;Dw(Cb+5iyVY<6|*h->Wk{UHMaD|Oq?}u*w zoteZ(w%r;;O<%0?-mQ9sBG)?E0@o;*KB_NBF)W`)U~WS0lU}}rw_(xaK_1p5#eS;O(5(!eJLcAXaFQnSCR!jT=3I@c>s5*2^8NX78BA!#k zc3fTT#*Aje`|KZZ1gr{vk2o*}R zIRVTup0K19ZW{CI%b31WsX(8B7MaPLa7z<{SyI~d6Jm6H_1CN+*3O4%KYiY#zO9_? z-~rs3WoN^wdF-3V;;#ZCIz6yy=Oj7b_&%9`YW%Xp^UUw;**O7imnXYeo<&DPU6N?O zRDP=O==*}JG&w#Jy{Nfifm375$ysdjnuJRM#8$8uKwYlGZ~}*ECr|Zdky>5AiPtBI z<|Xr}>R#QXleLuwJUvA2da_r1e*W!vDgYk8T047qj#T;%UpBvE*)biU5S~Wn+noiH zp-WmVMn1tY=Rarit$O&Iv4DtzwT0#Gd?$;)UOdyr)wSrgx z9BT{;>jop4-_Vpvw{q}S;GRRAQejYY^P}PO`335mr!{4_;f0h6eNhA>7N^{=Eb8Cf z#=M-*gtIKIiVJs7uwDJ2>*?d?y`Oqzl%-Sqy}zSPQGMWH3>C1=f8YC$ZGM)?1E~Jm z*cBmm&!0Zb9J?>BNp49|f7jSKiR-Mbt8*^ks~31Cw0y4!sw{c+>NjBL{+R>ZvCEXZ zWH??51^jgKdSfuRtNASYPtF+pS=7%Q!X|pEu{RYL|p`3M2$d z;=e!ht8uz9+5f<^#Mtz{p^ng(IBue#*oVcM-Pa8X=M$w;c}4DAosz3Q0ENE-7puc4 zGIl>tJ|cXK#(t2J>v6t6!kETj7NYynAB8&Rje-i9knI^bRTg<3x|j}C>mSfqJ)i}z z{@4J719Tn0oD-qAQ6-U=DSD(mtSbkpJFP!AhrsqW=}y#>iq=vskNx>G*u908t3o|e z`7=d-i7mZl@!WnZ;6E_2O_cC+qxzP{G|MUUw09wco02?{PMTY`Og ze9<)?T&W1~GmLo|^2-sX#-wk{HDLg{4Hr956CNDA){-sn{N3i>&|2&d+bF!GEAU6{30^T2ZAbQ-Y%>Nr=K?h~{{@Ti M|7h=z`)B@t0pt>ue*gdg literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf new file mode 100644 index 0000000000000000000000000000000000000000..86c4d740912d2baf248b6329672835774133b177 GIT binary patch literal 38069 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 literal 0 HcmV?d00001 diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..84944d9b248020203d56e2173bdbd75c300d3903 GIT binary patch literal 64368 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