summaryrefslogtreecommitdiffstats
path: root/testfiles/cli_tests/testcases
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--testfiles/cli_tests/testcases/areas.svg10
-rw-r--r--testfiles/cli_tests/testcases/empty.svg3
-rw-r--r--testfiles/cli_tests/testcases/export-area-drawing_expected.emfbin0 -> 1856 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-drawing_expected.eps443
-rw-r--r--testfiles/cli_tests/testcases/export-area-drawing_expected.pdfbin0 -> 1338 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-drawing_expected.pngbin0 -> 13995 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-drawing_expected.ps480
-rw-r--r--testfiles/cli_tests/testcases/export-area-drawing_expected.svg79
-rw-r--r--testfiles/cli_tests/testcases/export-area-drawing_expected.wmfbin0 -> 1006 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_expected.emfbin0 -> 1856 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_expected.eps443
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_expected.pdfbin0 -> 1350 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_expected.pngbin0 -> 15117 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_expected.ps482
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_expected.svg61
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_expected.wmfbin0 -> 1006 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_export-id.pdf69
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_export-id.pngbin0 -> 10167 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_export-id.ps130
-rw-r--r--testfiles/cli_tests/testcases/export-area-page_export-id.svg52
-rw-r--r--testfiles/cli_tests/testcases/export-area-snap_expected.pngbin0 -> 1048 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-area_expected.pngbin0 -> 5778 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-dpi_expected.eps261
-rw-r--r--testfiles/cli_tests/testcases/export-dpi_expected.pdfbin0 -> 2177 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-dpi_expected.pngbin0 -> 763 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-dpi_expected.ps298
-rw-r--r--testfiles/cli_tests/testcases/export-height_expected.pngbin0 -> 248 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_drawing_expected.emfbin0 -> 812 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_drawing_expected.eps82
-rw-r--r--testfiles/cli_tests/testcases/export-margin_drawing_expected.pdfbin0 -> 940 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_drawing_expected.pngbin0 -> 508 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_drawing_expected.ps119
-rw-r--r--testfiles/cli_tests/testcases/export-margin_drawing_expected.svg58
-rw-r--r--testfiles/cli_tests/testcases/export-margin_drawing_expected.wmfbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-area_expected.pngbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_expected.emfbin0 -> 832 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_expected.eps82
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_expected.pdfbin0 -> 943 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_expected.pngbin0 -> 485 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_expected.ps119
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_expected.svg58
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_expected.wmfbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emfbin0 -> 692 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps80
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdfbin0 -> 933 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pngbin0 -> 482 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps117
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg51
-rw-r--r--testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmfbin0 -> 290 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_expected.emfbin0 -> 824 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_expected.eps82
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_expected.pdfbin0 -> 1152 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_expected.pngbin0 -> 6068 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_expected.ps119
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_expected.svg58
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_expected.wmfbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emfbin0 -> 856 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps82
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdfbin0 -> 974 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pngbin0 -> 3222 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps119
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg64
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmfbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emfbin0 -> 844 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps82
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdfbin0 -> 972 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pngbin0 -> 2664 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps119
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg64
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmfbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emfbin0 -> 824 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps82
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdfbin0 -> 1152 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pngbin0 -> 6068 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps119
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg64
-rw-r--r--testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmfbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_px_expected.emfbin0 -> 820 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_px_expected.eps82
-rw-r--r--testfiles/cli_tests/testcases/export-margin_px_expected.pdfbin0 -> 943 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_px_expected.pngbin0 -> 737 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-margin_px_expected.ps119
-rw-r--r--testfiles/cli_tests/testcases/export-margin_px_expected.svg58
-rw-r--r--testfiles/cli_tests/testcases/export-margin_px_expected.wmfbin0 -> 356 bytes
-rw-r--r--testfiles/cli_tests/testcases/export-width_expected.pngbin0 -> 644 bytes
-rw-r--r--testfiles/cli_tests/testcases/export_hints.svg7
-rw-r--r--testfiles/cli_tests/testcases/filter.svg9
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdrbin0 -> 13873 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdrbin0 -> 19596 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.pngbin0 -> 22021 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.pngbin0 -> 15577 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/visio.vsdbin0 -> 52224 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.pngbin0 -> 21469 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/visio.vsdxbin0 -> 24693 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.pngbin0 -> 2947 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpgbin0 -> 2525 bytes
-rw-r--r--testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.pngbin0 -> 708 bytes
-rw-r--r--testfiles/cli_tests/testcases/pdf-mesh.pdfbin0 -> 1728 bytes
-rw-r--r--testfiles/cli_tests/testcases/pyramids.svg22
-rw-r--r--testfiles/cli_tests/testcases/rects.svg6
-rw-r--r--testfiles/cli_tests/testcases/shapes.svg8
-rw-r--r--testfiles/cli_tests/testcases/shapes_expected.emfbin0 -> 1540 bytes
-rw-r--r--testfiles/cli_tests/testcases/shapes_expected.eps109
-rw-r--r--testfiles/cli_tests/testcases/shapes_expected.pdfbin0 -> 1333 bytes
-rw-r--r--testfiles/cli_tests/testcases/shapes_expected.pngbin0 -> 13382 bytes
-rw-r--r--testfiles/cli_tests/testcases/shapes_expected.ps146
-rw-r--r--testfiles/cli_tests/testcases/shapes_expected.wmfbin0 -> 1120 bytes
-rw-r--r--testfiles/cli_tests/testcases/shapes_expected.xaml18
-rw-r--r--testfiles/cli_tests/testcases/square_mm.svg5
-rw-r--r--testfiles/cli_tests/testcases/square_mm_viewbox.svg10
-rw-r--r--testfiles/cli_tests/testcases/square_px.svg5
-rw-r--r--testfiles/cli_tests/testcases/systemLanguage.svg20
-rw-r--r--testfiles/cli_tests/testcases/systemLanguage_RDF.svg15
-rw-r--r--testfiles/cli_tests/testcases/systemLanguage_de.pngbin0 -> 516 bytes
-rw-r--r--testfiles/cli_tests/testcases/systemLanguage_default.pngbin0 -> 516 bytes
-rw-r--r--testfiles/cli_tests/testcases/systemLanguage_en.pngbin0 -> 519 bytes
-rw-r--r--testfiles/cli_tests/testcases/systemLanguage_fr.pngbin0 -> 518 bytes
-rw-r--r--testfiles/cli_tests/testcases/systemLanguage_pt.pngbin0 -> 516 bytes
-rw-r--r--testfiles/cli_tests/testcases/text.svg4
119 files changed, 5274 insertions, 0 deletions
diff --git a/testfiles/cli_tests/testcases/areas.svg b/testfiles/cli_tests/testcases/areas.svg
new file mode 100644
index 0000000..b07a5b5
--- /dev/null
+++ b/testfiles/cli_tests/testcases/areas.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="120mm" height="105mm" version="1.1" viewBox="0 0 120 105" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns="http://www.w3.org/2000/svg">
+ <rect x="15" y="15" width="50" height="30" rx="5" fill="royalblue" />
+ <path id="MyStar" d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z" fill="red" stroke-width="1.5" stroke="purple" />
+ <rect x="29" y="21" width="53" height="53" fill="yellow" fill-opacity="0.7" />
+ <path d="M 56,69 A 18,18 0 0 1 38,87 18,18 0 0 1 20,69 18,18 0 0 1 38,51 18,18 0 0 1 56,69 Z" fill="green" stroke-width="1" stroke="black" />
+ <rect id="MyRect" x="24.5" y="18.5" width="70" height="60" fill="none" inkscape:export-ydpi="600" inkscape:export-xdpi="600" inkscape:export-filename="export-use-hints.png"
+ />
+</svg>
diff --git a/testfiles/cli_tests/testcases/empty.svg b/testfiles/cli_tests/testcases/empty.svg
new file mode 100644
index 0000000..b1010c3
--- /dev/null
+++ b/testfiles/cli_tests/testcases/empty.svg
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100px" height="100px">
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.emf b/testfiles/cli_tests/testcases/export-area-drawing_expected.emf
new file mode 100644
index 0000000..5f64188
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.eps b/testfiles/cli_tests/testcases/export-area-drawing_expected.eps
new file mode 100644
index 0000000..f225577
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.eps
@@ -0,0 +1,443 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Thu Feb 27 23:52:53 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 3
+%%BoundingBox: 0 0 248 206
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 248 206
+%%EndPageSetup
+q 0 0 248 206 rectclip
+1 0 0 -1 0 206 cm q
+0.254902 0.411765 0.882353 rg
+14.172 0 m 127.559 0 l 135.41 0 141.73 6.32 141.73 14.172 c 141.73 70.867
+ l 141.73 78.719 135.41 85.039 127.559 85.039 c 14.172 85.039 l 6.32 85.039
+ 0 78.719 0 70.867 c 0 14.172 l 0 6.32 6.32 0 14.172 0 c h
+14.172 0 m f
+1 0 0 rg
+243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l
+77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84
+ 48.395 l 210.449 103.418 l h
+243.668 152.23 m f
+0.501961 0 0.501961 rg
+4.251969 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l
+77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84
+ 48.395 l 210.449 103.418 l h
+243.668 152.23 m S Q
+0 0.501961 0 rg
+116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016
+204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195
+ 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h
+116.219 153.07 m f
+0 g
+2.834646 w
+q 1 0 0 1 0 0 cm
+116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016
+204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195
+ 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h
+116.219 153.07 m S Q
+Q q
+39 17 151 151 re W n
+q
+39 17 151 151 re W n
+% Fallback Image: x=39 y=17 w=151 h=151 res=300ppi size=1190700
+[ 151.2 0 0 -151.2 39 168.2 ] concat
+/cairo_ascii85_file currentfile /ASCII85Decode filter def
+/DeviceRGB setcolorspace
+<<
+ /ImageType 1
+ /Width 630
+ /Height 630
+ /Interpolate false
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ /DataSource cairo_ascii85_file /FlateDecode filter
+ /ImageMatrix [ 630 0 0 -630 0 630 ]
+>>
+cairo_image
+ Gb"0WGFVoNIH^]DMs@>:hKuG,0.X(r,f,<D":W*XK,nD0\,\G>]L#qUH]rg8Q\:I]joW(",
+ UT5GOfW;#Y*)i!>1t<?OgJ;oZn#j7[<;+'RY=2/m*%TT3Tkb7bia8bs1$/s0@o^<pTmA2k'
+ OD+/BWFIk]aa_D"kaT!0Cru<WE'#>E8h,\<brKfOp8ZGO/`<82]"7f&+'H&b&%#Ka!R\-nI
+ JJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_D;lA5Y@fUn-k!
+ SOO>O.4@<NXUbiDdcVR^D.?23]1DCTi8u&W[%#"kHdO6Y/6X^"k1^XW::fm]HNP`Og'G`r+
+ UTj4rKa!Rd-nIJJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_
+ D;lAJ2M\6XUtLM&k-6f)%$beR`"SVj:M>G&jg$c)%$beRNlaq3MXV8gH@>\(UFekStW@gX?
+ $.>Co=LtPM<#'4hP%tkD9FtKkDeb!,IV_T%-_@a8<&7bW2mqr'uX$_SS)C(4\9_G0atVltr
+ 63+5F1fr249KKnX.f/-'IGmJ?4e7NHbiNqa.9"ptaa:fm_K*.NCV]nLU!fK!g;d=C*N6t,$
+ l$4FY<j0)7nDdaZa[SG\'BUSWkGV9C3cVR^Dei;9]%k=[@o]?JWEu'W4OE[D&n-k!S@*Qe6
+ ;qi^:MkI2JTWmnoK`tl/amE#9(=mJQf8MkDq,is"_D;lAJ2O75`DtRS8r>%u=\1nfi>Dt1^
+ m\2+-c]BBi2i`IYj`'T"^oUP>:.?sfTqd:L\ArYrL#)c4@<NX=EF>H":H/kFSG,bE^)@6Kk
+ Deb!,G>JSmYCI?`g+`OtH5\;cn:!_?-t(bbjoBKtY0_@`tR;K*!PP-nIJJ@0'J?SC\OS2iU
+ &+DkYKA1PLNq-nG?[p)IAsZEPp.?:dFki>Dt1^lH)uZE4i7N5$kl-nIJJ@0,#cp[E3-Klrp
+ @k0lp0$4G0V=9*O241*4@@F%>C;XE;Uf]sWK_SS)C(4[Dc#;$bc[S>cm^$"cT$470e:fm^@
+ j;_9:^T^SUG0f_s,mB!VB.,;248/,Mi_a,)-['aBP(LQf1DCUT*W'mnHWSiU^KO46eG>5#@
+ Gr(2$c%c)q\FH\fJC!<;G9'SfCDN@$4G0V=9*M(mIRon/WRJ$a5W.S@Gr(2$c%dTHPZBT=N
+ Bs`Xf\ClYj`'T"^oBEpZD?R=N@CXPP6*'n>$$k$dVXO!-T?.GFkF\Fe%<)@3l)2KkDeb!':
+ \(qiK-X]ku5CVsJ;MC^LQr:fm^@*.DP'5[gGCXJDMnn-k!S@)nD=k"$6<EH:qUZ]u4=(7q5
+ (!:2Zp>$/iB>:/JP=H_m/9juuu$4FY0UMnGD/aSnh8rA6-Y,%_pn-k!S@)oP.ZOE:I;%Knf
+ fctF]NW7%rYj`'T"^oBU2eEuXYYf%>f3S"?(qYnn^2nUj.k)kt4@<NXfPu;j%"f6Pl&8hMe
+ `dQtHDKB<`jq7a_SS)C(4[FG?_;5__2(j-$L;Y/>G?o*NU5oS'DCV-=@keei>Dt1^lB'iV\
+ qnleuoJIE,&U[qq6tqR8)]P^[k8@5;n4LB.,;24&5.0RV;\@p"7j.[]7d3Sc?CZc5t_'F3h
+ ,gIk46$i>Dt1^lFW5V^*1p4?_i`_E)FSVgLY]DIairP(LQf1DCUT*N-=l>Z`AKpFWJA;.g[
+ /@<NlBhj"li(7q5(!:2\QF`O4u/'t%4<7pETZK^QF+M3b!ZYB?R4U^]UYph4d6X^#JEGE[m
+ 7!j,YO(b;m/[";DQ6WHN*I2Eql]4bKi>Dt1^lJ.rS![mRcKX:B$gXbB=k6YPSCfi=Dfd9/K
+ nX.f/-%b,Dk<&(k)/f8GREce8rBa[=&MjsG_X':YiGAQnVK0,=:^CtYhlLX\6Q=EH4D0&;-
+ 3gA(^/,5B)I@"=\3U9pTY[jgeHh4jtDl=`CNT8(4ZR8Nik(7>H&[6:gq%A8TE_9m,fYo\eo
+ Tf=9'-'2(Iqr4ij;#/Lr7WCp0W_IV3t*h)aegN+>7`!EcT#8@Ch60'WILL%T+*7DY!U2_.s
+ %O(BRG$4FY$I>=+-'Wk('2_Jpia0O8<i1@Q+r3_]adZYQjJ\hJm@,IYh#!';kqme.l$SPOY
+ Pb4=e.j@0L&U"j(J-@q<Q^WS$pN9iq>LA]Mq6j@&PjFsgeA0,1E.c"/YTW,E&qc'AkWW#Sl
+ _rG&cfu*c,?qZnErD!JdSh(C7:?4!Y^c[^K7mOX]keG7dB(eiojGCoc.b"I\h%'3:a;ba/-
+ $(Ok:ACPf2^YU@UZ$68V,fmYQ-46Y]$4$]IJ%7gP*?.]'a<_-,i/N;BSgN(4ZPnpF\/@<gE
+ +@7:C+'T+k+p8(il<d9G'<C=bueD1i1K"^o0_4nB,OF\R)OW3EbD=\4ajI:DToLSa/l_LfW
+ +Yi*lTo*g4n?$GtEYd_8L8Q!]($H.S6!jLV0]-`66eleR[[RKg[!B)1g-p'JVPn]%._?-t"
+ n2h-uFK.fSp7\^NRbK>A/3bSVFRRH9#4?n+)^m6;$]_k_f-!u!\s#@4FYr<*p/b/)5.UYR.
+ k0s1'Gc3&8)B\E:oKkpUMkk"'jXCN?4X=\ft8mMDHpF!4in:0'Gc3&8)KhROJb.q_9^!,W6
+ i6F7b1FcC7b&O7fZCg!#?R14j+sA%D'7QKtS4,8Wh%c$@%TJ!jLV8)`%r'e>P/l$@=;7P+k
+ d6Zl@\>Dbb/J@3l(\;-3f6*8<?g+A#9g6`R@#kJ+]4&%*A0r,!*_.p,Ao().O7"ijuBDU>.
+ jSM"$s>LA]MA_'p\C`6Z+G-U[U7hAL!!#?R33R&[9:>fXjgEO4l_XbaQXJ>iM"^o<+*@?IT
+ DelCWh9#LcMW/iX2qG*r*qBk1@0'JLEr4?S"-f_(LkkXu%D(@UlROE-:;0l=;L6VU$AAXk_
+ 9$Om'!749bpZoK]<IG"<`)s!(7a)>3RRI5kY^>2]rrrtQef`SM6<Y16oIRHI/&Z;!jLV4Q:
+ VD_%B:Hu*n(@NY+unE2mVUfAi2NQOs6`!=9',Ls4YCZMfVp[&2.`:=@iPF-nG?+:2c_cBPr
+ _"E:JmqX\!/ikTP*oS%ifLc/f\gP99dsYQ-46]d_pW(@,Dg%?2g2dk9m6FsEKgC&HNZ7FK'
+ q5+o+[/3'tMI%m<S/e>o')CLSH;FHtapF3XM=9*7+3OZdI0r93#GWOmJd7T:n\olF9J9NCm
+ !4VYA2(@m;4\35T$#.nW7=(?Wa;4-0<*-J"3X"pXKa$DchBU\XEOi"QMFTI"&J%o?jDH#g]
+ l]Za$fD0q$c&mXLR/sEV+_C20;]Uf;BS.;(4]Wd%P9JMasGk>]TpL:FdD]c'W(\=ZB?EB:f
+ m^8jW%N?En.&aMMKUh031sbm[@C1A$pCp?jhYli)\-S,mH6;XS[fTdNpPI;WM\c^e0Jp6"'
+ f([=A3cK9T@!hVsB60;?pc?PVosQB`0+K#.S.COaVRK8s3a]u9e]M\dlm/f^>9gr.7=TgiG
+ k\922O8RX,l:[p2DjN1#OG?@EKC(qG6>6jmT1rtGnh'\d_]0'7gEO0\^F=CUP_?+]Bi1:)V
+ mC9%*M)WhnLebR\#M>#PmcO&k8sW)i!X:&(!4NHO2r>_tf6(0b+F:tiPnYV.h27"9!st[*!
+ 8KX-mQ?,4gsB?F;s55T<`51KS^Gs&a0HjT@0*l\pmm0KH;UHD`&m1^HJSS%*aq"5XJ?+:$4
+ FYO,B(mcLdeH6/07*\21)Tk@`sGiZ>AcK+<D44J6PP#RU]0OS%>A>!I_dVMNgP<!P!:Ec.N
+ ;hW7)c_gZP3p\uYdp'F.c4&TAF"J6PNfcS>bo]l#JE5!M'Zlih^"h8gAF26EQqNH@\[+;>T
+ A>K:p51oNcoDC8aRT<XP'`DBY:DB7JC;HP;*ilUea=">_W=\02j'Gc4'a'YHId"Q)&0&AZ=
+ d3f+MN3&f@kZh.d":Ttfi7@GMV]->d\XF0bSY0_gQ#D!q7HrZsbmiJ*'H@f&J6OCE:,BtBG
+ iQ_"k]YNY;OlQ#V>`M+.0>+<!c[JdNi@ki+BOU=%pTZ&lh'dpYhdC_D4,A'ic=:n?mC@/i8
+ 2TC;\H2t^)eM*\)=43^$S;?;/p3!FC.:A!P!8e>Jc(Gd%eRl(+@dWf0!)3,T@'u^o^O>-RU
+ tQ$h['\W!,ndmSISD-,mDRV`*,/Pn$O2U9FXQH@O,V6mr";4[Qep!S!o$MY0fXOj2cAZ*rY
+ #l.2XW$4FYOe#t'&fQ2AKGg:miU=77I=@l@iZpZr6.>YhBE9m/Y$&Qt*,!AW4AO.);8R_F)
+ =]SEs=9,%9B%-NCVgYfk.UKB1X3mL0ok:t"/_MqTWICC[G>\[""lP]_W%Z\R`=j#7?EBqNg
+ c>1B'i,10YQ.!tcd<I3F8ifn,i5_$Lp!NjA2gfqUnFpl6=K>FCkEm\5n=Zj=,:,/^$J5>;1
+ <7d,dK_I6-5,'!cV`>iT1:(rLt>USulsgY,&<"Uk&%sZ^Mh98O6bc"Ot.Qb7&!0RI2`bXO)
+ g,U_mf)ZKL)7g/,+F\jXYt_?+[&kFbCTbB71^@"hIAc7%(-lp`m_gVfQ(/#6[>PUJ'_=)nd
+ %243ZqFW^-WKiCI<?./]<7Q,J>poF4KUjJ>R-nG@"p?u?t0[_InDt-e\RR\kW,0ep?6t$*!
+ `VuCH#/g@rmNipRYcH<FXKSEJIWp*:*@iQe/:]uFY]#Z?,ep@+MAI`K2!W:/4j7eS$[,4DX
+ '-h*VW:!N!P!/Xmm;X]?E&:-k:&E9Z'$;ToD%XJbG=`o"=Pf$<t=Y$?nfL!FEd75,nj<W";
+ 6Cli6%bfjr7"_laj-AQ'+hKcEb0IU3,9d<`2ar!)a<?43q;Vhp>ZIPE^I-=@mN+N@FNZ<_K
+ >?UaRbo<t;q@OMT^q0"AiHPa&g_8WgK)!\5]J/-,\jIV5h"d&tce`FG.6,!,+smUJ2]XJDM
+ n!;q'%XZ6S!]2j+g02Zc]@O9!I6aN8OpfNj!!q=</UVbUH%cRpiHHr]K"kHaQ]Yd>K$4FWs
+ 8)KhR0W=;[Hgq*4!fpA[goOa0*Nr;4YQ.og[X4=VP]"k8`9WU2,!,+c*agq4\XUWH.p4@XY
+ Mc1[!*hPX`_;!sm9EkPV^J<cZBF4c]NZ!<M?OlO"lRPn>r)nDF-Fl\O%u_F@O4IbhAK#sHn
+ 7p!!I3W!ldH:iF$up_(FKC:lh4ua#eQ3NgbkLb'GM=5(Ja=eAh]Nh;-5!5XJFK(Tt2dZ3bJ
+ I]@0*lY@`Qtd#BHsg.it//`_$RF$QoRIDP**]-'')lSJ\<k\uYLh'Gh;)@3l)2"^oNqD$_"
+ :?]Puk$QM*J`r\EHDIe[^Rat<I7QPAe6"'f(Ebaq$7#/!&e]$R#(1+)<aPT1dp?KQDFUJ6X
+ $c&$+>:(XWJ^<TniakD+Y?"O8Z]]pW!c[9"f-Vh*Ia@9;i`X*'.WnP!O`cm/SX\=`.4?_I=
+ &*\*OQbUSd_j"UJpZ&3XF/bQ.8'?[Ci2esH_2];!*;p6)P?6C/_3;.CP)Fud-[p<Uc>u%9)
+ \G4>Y.4i!OuSmE_H$9nW_rtRWWqU*c*d@[oZI48thLa9b$EkT3nH[ql^\LJ?_7-=.&p1TcP
+ cA&[][Z8d\)-R0DU;o2J*%R``Ld-$s7bDSH&c4+Gr^b7k_BZ+WV\]q>U%(Bh!Kf3RuaYGA[
+ IE-@DHUi?<QC+c\<5;B?LkM8)I;cj$;logMK0P3!'!TNo?4R.$D6JF">cFl6GZ$*6o)-q88
+ =0%4ES3J\XDp&7OoV8Vjgt6ga\\X4Ve,@8?JN,OON++s"DIi@J9rtH&iC]!K`nDpRQ_0^jm
+ ]F!BEDos>DX9Hlb[A4mdf%,%JbVZU>+#UG.@b0=q.RdAZ#8s:P,3#&Y#8@%f&[lVC+rr:F^
+ OZR+Al.M]CdNT"El([,dO,HC=Ul47E+_a4T:_b!cTgU^_2:A;ka)EpAtP6Ff0UMg2:GlKK0
+ j*i^n"7gp$dtL#l)($aqFq$^AL0Y\X:<`<MOhMXDc3$^gHn,t6eYP@[fn3</Bkj_Do/).tk
+ \r9'fY!8Q5!ZcHPF>h)!V9*&PI3rQ]4A2gf>>:/.8\D5]ZeR*gLVJp1b%u6m`!.8`nha2t;
+ ;lP,"B*'\kdClV/WVk8Y87[@N@K"`cCiX-q/;<R-Ka$DS_7^3b-;Top/fk;.kK->R"1'4HQ
+ 6R>_hJi@4p!gWq]AraR%>=rs":+\F2jc_ZF>r_N^l%>JMNN)"FRIDQcBY:(YVt%61]*IIK`
+ r"jLYeM50R91(+7V2'Q6r/"ik\4okGluVXHAKb<N@Up/;S?r"GI!j=GP`j.;ZE;'(5lQMWh
+ E?\t@e@j_bud21JK9Q`KfFDHp:mnaN']XYQ6D'Gc4ALYmBu@.Mh2cJh]OFWRZ\Lbq?cA(fF
+ Og#OLZOCAP)+Q/9m4kF*4eETfg3Iho.>"R+@\*c2a/N%CD0$CuB'OliOV%==V5[YUXCQ?6l
+ \Z%ZJ[f@I`d-]-CiHA."Y]E_8V<ls'X7$5aEg=KCYjU_EZOJ6WSaIUA!dMbDPn[[!ceUfS@
+ 0%3,\pKaZjD!!.`@Cql<Tr<!NUpMK*om0A;5Ll`lHEJg'nlg!m+<75%AqM>i?LMciI`)\Mc
+ 1VclM9A>*a,ZCf'(BkSbAO;!=B4MKk%`,(lY4:SKU2pi=@SB;?TCj*`oFu?I?IO*ct`iKa$
+ DOn^gL,T%U3o`@!lt'4"0a6p-:6jQk20omlA>C[@BBKa$DOnX\,;B%1bt9c?o[o5FQ4mNWc
+ C2i@73$JkT1Q`KjL@0*lW@Y[N``<SRpGd3FK;pOLi"[2?V[k/Kq,?%\E/tC^gnFkHr4[shK
+ 6])[1.BGV37lXT*GMfi>JAMA,iT.Er#1j%<Euoq'lbOc.9K]*Er8KZD<"Cn%>eMct$c%Hp>
+ :1dZapRbhnKAEGcF)U74]&ek/XNO4q3I!l'Gc3,Vm[k`)n&S('VFk#Jh+F!86'a(fFg?cq/
+ <J2HLhGs"lR8pY>$j`C(R$)#`*5djkEB7k?#8Nh*8&\g"8W"!P!)pF2EV_d_j$/4+bA\OE>
+ s9nh.!jhm0M@_?+]8oVR9`G[7D+M,/6sMY35K/`3kEVRm0'2PI>T>W@rBUVr[*.R)8m4;Ls
+ q[!^%D5YiK!YQ.Aa3OZe4%$p1pntQ_HFBs)`F<sAI*b54S2RZFa!2fH02(@m;4\1%o+fK;D
+ :'GrCbZ@[#m:Y,EoBKO<[SU'+VY2(Q2CRo\4]$V"+i#/+P+q&B2O1jdUM_IY6cOhs!\h%Vn
+ 8a/uQK\G@UCY3'>a\pJ"'R?ZrVi+B/JJtNWI9Pf)&2e-mO(6q&-b(8(XJF7G`'?>0U6]uWB
+ jt9F^Osl#P`hd!\fm\@#70X0C(gmUCZhpK`tk!s8KtAKrr_8j[UEN!t#FOeG^GO_HtX'j@:
+ <M!t#FOe:E%+$jp4<HchC5^]tPhJ>n0J(E+!r8p?UDI=MhV/-&TRpFJ!Hlo!TnIe3Y)TWeD
+ i*I;Y<6"-t_Y4A=un,\4H@-Z+No*btQ6[+Y7I=MhV/-&V(hg*;9YVeI7Ie3Y)TWeDi*I3"7
+ 6"+POBDKp[pjg3_0QlHY3<k2NWB87`5/7C;(4`BZDpC6hCn9u:5Pb@%:fm^pNp`KM:tT_O/
+ HpqPK`tlLf^>.3Kl%+=j0JcQ-nG?sa**jb[S^\[O$:>a'Gc4uj0-c_-u?4bQQLX+%k&t/;o
+ `7;DG\uA:6QcJJ.F%Z!)k7g:,=<"r7hDP6"'e]3k8a8U3Y#6A*)kpi"$/&^spKn;\CZu^)e
+ L`pAf\>=9,3nD+hCC"a[QRg]RI?@0)`V[<6MaKe:e!jl[]C%gi][eGEGs-<f'.HA)4O"8kG
+ n!LPqH>/GtVVh`IA4hr-R(4`C5RjTIbfHNIPIdR79TWeDiS_5h`dD?[bU%378n-=XN?n0R:
+ 3_K'Qq7-b*K>I[DZKLEYK>O53KB22:i"$/&^rY@Wf`m/DTEiWc4hr-R(4_O\LR/qop7`TN5
+ PG/-:fm]ep)R=K:tRPZ?[hDDrh-IqN8ts8.;ZQ_.mNb.Io'5I7WJti2(7g&h+)q^!WJar!0
+ $:%^VleL'tUmPg]RI?@0%4uT<m1CYZGp"q7-b*K>I[DEa[cKK>LsF4ltiJi"$/&^rV)?$Om
+ GIWI)_44hr-R(4_O"HPRG4[Rtb1T6l)Q-nG?CLYeM=:tY*FX8L`Tr'=`l(ch6V4G1N-cs>_
+ q*oIP9$c'iWG98RgCphQOT6l)Q-nG?CLYnM8:tQ]B=aoc>rh-IqN#[+YN^7)hFXR!q#P`qg
+ !\eZEW3CEUKDaL,r'=`l(chHTCkKUUlh9mj&+BgX"^pEDmTBaJD:%\2k8rOl$4FYjYr?85'
+ XgkOb0N5d*u#K@OlO&c(_jDMB?8C^^`O7+J<Alq:H'\<7&S5S4hr-R(4_M\4/Wr1p6JI;T6
+ l)Q-nG?C-[&0X1p=H9XSgEIHp_<C(cf-T8tq$adpqHo*oItE$c'j*D$_":?]UKpH@To^/-$
+ om[SBT)YQ]?;r6POn6X^!43ONErU4kb28&u3(^c)rCJ<BS5S![ktcfsEZ6P&YqK`tlFo]?I
+ :(:HaEP95+$D^[.:,H!J[:UI@FHDpbg"+3IE!>nBbYDs5Y7"4>#^7hb2'"@&f$A63]lG<$Y
+ &+C$^"d$7-7YSOK#K[K>^c)rC5iVJYaYkR676NnbkQ/DkYQ,<Fp[E3U_NsHcnj<rW%>=tI\
+ :'-u)&2e-mO(6k!8gUT!/\lZ\C@1UjgqYnci\Y_@0%W+kJ.^__H,kanj<rW%>=tI\Gc:@)\
+ i"'mNk*i!8gUT!/]I&ZcJfD=*7=7Ta1@I_?*9`JUIn8$<sKVa:CGL2\[#miXYB^?r5K*h-G
+ Kn!PY83!"sKpc[:A^?IR`kLE>@m$4@trLYag9luh,aIcpgHl)t$^hl\s<mQ^:N8ll*[4Rru
+ O'Xh1XaU^PM2r3#d?_&^VDJ]N,G[/KP\X0fqGEs=sJ8ZheJ-8l=AJa^#A5Lo^h+<(Z!PY83
+ !92R/\*h+af`l;1EDq(G+*rHU-nKoD>UrsG^MT]b?6+1"KDa'uHp_<C`6qJgVI\!]2f3EZT
+ \IX#4hruj(-if_[r6$(HYnB3]K-sRVYndCHp_<C4@%`1<CLh%ZdRD?9fbXjkQ/DkYQ4+=gp
+ FfTb_"Wpj"9EDdB(gYLE>@m$4Ge$eR!Orll/mi[^AOlVo]H4^c)rC^ooUSXtN!o06`WA9@m
+ 58'+aRGK`r$1j5TY-mB40^e$_A%7Xj=tI\O&3b%n"]GOb/Bn(R%dVh`m/D??el_?-^]r>pg
+ (jm'*PFK\nr!fIa\@=_BhCQCk&MY5>B[S.fT;-4qE75e0^0$\miX#laiq0G`"mOg``!'q;7
+ 828]i8DL7F%q^5'5[f5n&S^+[`?'jt($JLRFBA:["p=s\"]BtsHR)d#e-"?]#lFm\"d5G.H
+ R'SbH=W$'/3hL35bYDI;S,f7]Q!%En(O52a-Gt>X@!-YK>I[]MEMT&0FA15UDk#8ZUY'.7U
+ ^l/dSR9IFRMn!04!6U!Q9]/!_FWJ7j;lp"Rk'e*XNqi'Ga4Hm#_8LLVa*9kK=p'dF[%r!@3
+ Q>!b'(i#p?`+/.bSCOT9un_?(l[I4<p;4VI#M1C=C@$4DNE5C4YnZ:=t8O2:tWiPQ^n$Jh0
+ dLk$K[('k$98-%U9@=_gE6oJ!Z/b*qD6lp\#!&%/N+Md9GY@`gu&69J\#c>\_X8.\+,6<H7
+ Ka!'`4VC"8TWg\CYX\ac*Y]@q%/*3l8VP"_!ROrXQ9>jGZD"LQ2"jH?abdk9EnDT;,Voc88
+ FU8Q7&B<#5@f;/7:?5SYt"jd#o"0EP:q8.Y3BipZNU>_"oNE4lH41[Vg<[RarUj35U\2A^#
+ l3bjep`U!MgP>$[@Un&jV>KY^gAT)qL>rSa5NI$aW>)#VHGlG_8-l5cUT`J8G`QCJ+<GnFY
+ .o4VC!c:ftLSp.,2Y%13JF;La+;nN52_]l[hH":umo(3%Us4VISWOT7_'_?00#YXd])*loB
+ /+FGRg@#@)[!89bJ!@(q>O`6QLrlsel!5aZ2!XW=s"G"!Y=<J4BOT5qG$4FeMn`JQsqe(2#
+ l,k%R+K81>+:db#!0AlA$abaR&c`>;=PuKt,6>Rh$4GW"HR&U$7:Cc)`Z>EdG#6gn)B(M=]
+ XXu7@)[s9b75Loin1YS_2]Q-[r.c2lDq635PicdJ,"e5NdpuIBeB@S?i4Ano,hr<fsAcqcQ
+ >9Z`;)V^GOFE/2qEldj.L6HjXU[]:@e&*Ps#aFW^uNo2E,P&.9ZK?gC&N-e(NXUhUFdioC:
+ -h1\.fkL9+b>Dr/,JUITOreh'g'4WQSZ%iWr;lI;u[QhULXh]MXHcOPHp`NfI?Io$'1J!mQ
+ eo0Z9kCMMFWs08@Hp.,1f/7f08p$*IYEmhM6r78>(54QRqN>qc@T%uO[/&Q6iXdktGgGqLQ
+ UQ5n4qWX-f:[@r&c;2aYYGZd#,B6l\@?1PQ>*?7sV55]OCmk%bDbp;p7gDhZeu`H&FQmVQ4
+ _\VFaH2Etf(=CY\^CHGs33ZHA8-JjHLX5_,etH-!+&6S_E+eZEFRU^IPg)=(IgJ&Vu?L:OR
+ Aea-SmPqe>U[<5OZcKO)qIFSNhZr7/l(4\?JI)J;6Hqf^n9-3a$b)l&gl>okN)29fdKL38M
+ /WY$BZ#$1<foo5ELH$F_SreS@e6S)NV..siOl<#;.C2E#I*^OO@L^,,RP*uZt\E(B/]"oWQ
+ 0R-sn?nbi!RJ,.9uQS5NXs48&0m#_;+O'id4WG08A4c>hgZL$r7_7V9I/8)hQ/rr4\oZ'1f
+ =](=0[B7.=Yh+4I0'WK(OT9?)+:DC[^A?A]B0Yq)YQ4i(iY,<V:O7?@m+L3%G[^6)*V13h2
+ i.LGp'l?o!;J-"Klo"L%ie^BX`$p=[&B<i!U1/l`9H*irM,D`r.fchG5hD3nH+#o4V@_t8/
+ J_GHJMAG1<Z*W4aOK!%Sl:1k?"*4F*`5o)roe)J%9e5mIFhL`!H'-!4WQ5_VVr9rkJJ[mUM
+ :el-dQAdNjjr1MKb=QX:eXqK+Kgp;VgJ"ku2QFCgL9J@>5W==:17s7r/qIs=dL_O@/t=/Ga
+ B2+":!8ki?$G18lO/WO#.eB4^#7'6F\s0s?Ns1@dPs7tp,s4aeN%9BL,;BbjPH.K(bhu<>f
+ _SR&ITet+m];B]-9M[<IfcpM?#%%_ld'1?s@f=s"#$YI+lh4jXX68P^O](M0H:4`n.J5&\4
+ epM.P^:;)?W65mV4LTMO-TRZBUuK#Ua\/nWF!uX#O+AC:liBfX%=T`iV9K4'%p*,G-Udg,^
+ RPHGl\&<a+_d_c$oZfdIKqrS7W4d?AC.hQLp64Fo/2*%<^]BV7rVP-^FO9[(J2i(XZBOs%!
+ bc)&[/SfD#0qcfR4%08X?660bLP(V_obdn<d98-"I42heB7>Q<uhZWF<rP9tENE$qK:.5`a
+ sW@*pV8NN;@]V*d7dD(U2*W;lL\i"<>J.=6F0KLj?>J-lK-*m&5mR",O86jbPjkmBE_SUJ)
+ :S(hbbVLJjpMTHoh!Z2qelrshHe0(0;s9:G8$Bl2+SqMp.&Hk?,BnT\>-XgJ:OY(Bq/&_dY
+ ;`L_(;2TMdnA:#H6@P[!$oQ^@;k"-s+;Ce?b!><Ij7-UWSu77HpjssV.1;E:2iE2r>fC*;V
+ _u]PB;#=hkn-WKi(bB*rE?8,"qp;$6XFq(\[F]e_g/A\:4C(q4ol@W<l2!<pEW2RtY1bK7-
+ %bhiHXf4M\McN8r78h+:C<qnNI5n(tancb.h04C#C3ZDX%lm#_9Uc:)15o2e'QoZ5=K4hgM
+ F?)^-;CXpJ#[fF*n`&ZHEO%)@ImFoQ%[%0!oB(mDGBSP.9(n2GpYt"j\cl!Sl^k!em4Z4Q1
+ _ok]JXQZ!a5+")IWqtc;k^?egUS$:eq4#cf&Y6]0Xbi=.CV7`(F]in(%e`En#eWP4gXNUhe
+ Q6D0S(GQqd6(C-LSLIhEk1JCkG*5m9on.TmEOnCUYQ;2N%Q]ip-m]4\om31cgp_V[7Cg<Ns
+ #GEi[_+ZefXm1`otg@]pco-PZeb!kjT>^mVC3'#Wo$Yk+TESgS[:+`3A7\LL'&MWb@70HR-
+ U;dCjF;kmG4l=G:U0^4"fuIXDr-L2UFqQ7MW@dYU8JQ_HEN:\SD'@nUIZY%R^e,LK9cr<OO
+ 64LhVXaN"8VY;oOYG]7`JJEU>D5:mli4NNH.?&hkM0=C#n.H?=n*-LMoWd++Rfm#B(Ok4q*
+ WcWI\G9VRuo74^GfJ.mLm-^1[CWGZ+XIkX##NGKCkg&6tb3mBob'<dIO_&)Y3a6fFe[`/dH
+ @"hu*XMff\u2de[`u..0@R/h?,80dpB&@)hi$W#rh-](\'11G*`l@Lp-,*CGeZbC5``LM]?
+ %_f!@4p3$@DXAo(D>Gfpn`f(TgJ*f)`=m'`DA*-tVr@lIG;ahjJlTpLe9FYX\a[;MZ*sU8$
+ XCs7B6XRJ+AP3[4DpOQ>''O*a$de9m`E6qs6+Fm%'G54"CkX%1\)cLUEc!3)X'qX/RBgT+C
+ /4+f:OH@*jLddnR[pi:J/V7hrU="ijIiu^d;e5l96!:ZJ[n^p&%W46K9B0Q7fEqDFW6^3k"
+ R@3d=&+hjNmpk_H27c;PKDaI55Y?$'fIkS?['JEtO"3(_=ZJXVB"[mdI8Bgi6<i+f!C2U5_
+ Y.'r&Y<uphtC%A6+o1B*`!j+n`SdMmO#.(OT6NGXK[,JhnENA0HT9_dG)akQ-5AREVhDKO8
+ Lin^GKP`"9<_((:Ijt"i8fe#<5'/)*=B03hY:>rd797H"E$>J3\q*Yha"DN;RC3f<Ms5VPU
+ 9Lc0i%/a.qC,.siNA"@tY/mAAB:^>''>Sr,`$fA5]?,NINc)"=32Z:=s]Yd@]g:=4j>d8no
+ jKMo^QbHl5<Qa_H$lHZi0eK\h],68p#*`Ue!khk_i-U!QRPWf`Y5i9QFR[*m(cOFEG"FrbL
+ Ddc/A9GeiJ>4eQpGC(,Jaj-p].=3<?"P$e3m1ipo/j=`H,/+c)g"=8-lk03G49%\E9`tIje
+ QUW!dFCp<j9koMiT_#^R2P;OO/Sp_9#$Vki%?U8SYjoCdUO&lm,dF@PKq>G/=ETbrNl..#l
+ sDS'_\<MdhQQd>kF@Ge'gHQrV/D;2\Z8!l7P5!J\*nVo(>i!kHSi'qd7ci.fdp1(4l+P;N&
+ fO5g:4LcLNp6!5q`:"P.4M)Q:kTT5JE@T1cr0!2MR]M]hnc;V?fN_TU/"s5T:mo&%l60`WY
+ \_BScHE%XbJg%h1aWp8K<hdldc'88k']Vs=BATl'&<[[lAqMb\%"]8BTa<)=LB=;#Woui\t
+ heN3i%>@6\4KHt6AT0EQeT[XII_,VO.23Pko5aK&!L_*g4T,<S.g#2JKgeO\<iOrui;E"*<
+ V)j2mlLNKJANMC^7s+&AT4N-<2DgDId7#*H5%-gp9IRH9t!7qm]DNIJ(!dL!6L5;+piW`W@
+ X=ul.S^GGt%Q=#U"t$=<r[JS#f_.T?6,<!-j78,&+]ce1?mK8P`:boOlTj6NB]7_BR+':\\
+ GQZo#KH$buiY(<Pb"8p+*iSeqAkqTT9ga\Z(bV5KPu?J>c-+q)15$B&Hf-'N\JSm8IfH/K\
+ C.jus3fN4=VV\2-7b>sV;OFC[@8-0J@amJCdbu'=hO"=jj0`]fR/5j;fV:&=0kHSk&\eorZ
+ 'G`.WObCKgo@/($+gM*,;-9WSO!OYI]4ZRoqAfnc]I5=/asWEgY7`nRpo*hS'L52d=JVB].
+ b-g2FM@^oddL*7@74OdJt>f=Z\ndYV5`oH.K*9N&3:L@WTbk.\uPOd'A<EW[.LsF5e'WmUo
+ _lkeP4#41,IFWY=lW=!JC`474NXFYq+MQ*Rqg<Q@@-]#R^ut'_bR9T?.T0V2G8Uo\1-H-r=
+ %(ZV#@<nXiB?<TUtg^N0DY+,'k<T1\HsZHK/GqO^EqGl\$fK`tY-4L'lAO0=^qo)]1W$4F6
+ ;Lf,*?rq"CTUu/oeJrIPJGPY,;%gY^!;ucDWl*i?s^nS'K>rJYV:PX+@Ig<ak:fuX^$W[+;
+ BHMB]?_uZ$!!7tn!r%"DWMqBHP<DVtr^-Ip$m943/9"rL3`i4/rq"niddL`I5so(3#C0XTh
+ C?g7QDXZA"mNKPJ3]g45T?:q.SIa+\o^n!r_E;1%3RVY/C:h$-Er>9ggF.$6:Cl+-nGqY,:
+ `]aa?gX;Ds@!RJ0:Mh5Wf\Trm(Ok>l&jX+:'AH&<F"F2-RtEg1@:Ss!@Wp"sArC!c`N]WGX
+ 321NB@nq+p7!2ZQtp(5UkG'=dAman=*ND?-sj/<GsQ.fT%_Q_`Ns!!H/$+AoIES>T.AFl>j
+ =mr8>*-nLIYQ]rDii]O8So&Ul7<Dcl6^b\T*;K8;sr/((#*.S;%$^c3=`HaMQ=3(;0qOJ,3
+ IhWYP2FGH/VN4[c5F6i*"7R1^"cRjeJVW]Aqi@T2li;E&@0&=d7&^S0cfrqcjo(tHq]13Z-
+ nO<)EY[b?5*c#&JQ+sE!LI+nC4qK9r:ACcDg;>sTs0&oT3&%FMW]*-;Wl_!!Mfu.$Wupb($
+ BjaZ1PXLJ3PG5@*<d0kP=q3dVjL55+o-1/^Giq?H$sipK#oF6i+J,^hXW"Y\:.ro/un9l1[
+ @AY>JE;U6h,`Wo?&+1Y%o^9>CE+G`'?>G!-`3%Z9/3-iN`Di$f!@=LV8KH+&/hH3+*9%YY(
+ fHV(3N.\8G1W+u6aoFM#\&IJnjiKGb:o63u&%flYOTs0&;VQ4r:YHFnba3o#/J/9Ubi/q[4
+ ?)@>g#GgM_!&%/N^cN(-GYYkEFm=>%UB#ge'Gg2`91nkTnXL+@aGf=>q1/O]+pn^&l9d%mP
+ Er(pp:l?Hl2J*%PPeM_?j25f]J`*qF-b.s3hs_U$MDK`\kdrr00^NY\3XO(YC0HNF;<-tO1
+ uUa'%n$hH<@$3fq^Fb#6b)0'Gg2SC_b9!1o'Z5Kl'haLKr<a,!'"Y@K;3+K`ukn>eJtLq:E
+ A$HJce)o(8<-H9en+_ECa]3)E_m+3RVGB@b!r%k;Cr!^3PgpZ%hn+Qt4)i/]NAeOd`$IdlM
+ f@RdfF=ZrKGpMS@Fj<k7aHVmn\2_.iiBBn-0VuJi]_R:rF6b+QO#TO0ZpuX)!F]S%&s7=Ck
+ KF6HX=-"r`K<OUDHr(1R!eggUZqA;Yk"iVh9uV+pf:t"a!B%Hpr.G)K)2/7loMqa!W-HV6^
+ ,+P=A6\MZ\ubeYZb->N6"'edX]=n]%kR23^9Dh<'6Qb<C=J[B1C$Gk'Gg2k91j>*0i(8.g)
+ L'9Pf:_Ph@inc]/R(/!q65E"oPi9`H*+#?r-*BD7q=^Jf`#($G]j[(@^4>ESXTaeL>qH^Q7
+ n5Z7YY?BHH@>G_O!9,2uhso\:hkH<Sr_5H&.="^i4%"[kJN<'(ido^A>rioahMM/3P@kQ=p
+ S@0%hI4`KS6IW9n1Kl,5C]H[2;+$QV,9MnnWb3,!];_cV*E?5!2Co`j,qQRU60L9+J6/ts-
+ k83$`Y^OBbQ3[99kmm8_$O@+I$OHT=(!l^.`ZF,nD8eY85eJKr+DZdjH+IUa+8J]>mrsWob
+ :A)[-nHM,%ob[Sn,I.hff,da=7ol^cj+e<$4FrORSm9<k#o:&f<&6rl`[KE5;fWPq]t^9hM
+ ^J1^tgCi+E!m1kF=T@gki*W'%p*.jl*M?F7Zh6&.e*?$MDK`\k`D=oDp?k+R[QT4QkC18%0
+ 2@<HHXc)]+g4c^AofPC-L$`UXA33XQ5t_/L.\o]ai=Y&=2DO_rKF^TOSM8b'FA`N+;l-$i+
+ (Gm3q1+iR8[+:'#cnXNZfSUKD4[]7*I]&LqcZb$9b:D=?36#**t5S1T(<$rFPCu![XmD?<3
+ X'/MP@UB&BM;hsW=3L.AmYO:$UTd!KbYp5l]67miY,mI9ZFB:ZC>McmQ@8;mS@mI*GY]$s/
+ !/g?/.`@gWd)f"IP<qa_Z&\hW5eM^8sZ'pR?bBu]QdQI<NLsr:DAs'Ka!&QNr;`=f(CgICo
+ bRFCF]c/(VM\#]W1^8Gm0??Ka!'<K8Os.[7dR!=R@H@^UbfXqX&X($=BDV*nG]"o0=BC#7:
+ hAa)akLX-i(Brb7hu_VPX;nqmK3lE]hVcghEr'SQ\lAX&'t<itY&X0?g('6X:>5aPQBeK_6
+ \?B%!EIV&ZOUTd"VHpGY5)&[.T0!2E#fbR<TlRL45/p]UH+4Q<$eUtE.7;,M"+AeYR$E@R,
+ ^]421*Yl+`A*r!Nq25T("n%#s$Jep8EWYd(YX$Qo;)(jiG&OPlgT"h17;s=3;lkbs:JN#R'
+ G^tChc2C,7Y[HqMA$QS=EAc,`PZb;?PEE.D6=r#A)@k.'G^tC0?<`%`BX1?/7/e^CTS->&R
+ 8X>Xg@)D-P-rF"TiA-MKqDbnKB*1D:Pr)6KE\]jgqYnn-!3pYWr3eSr.gip[?Ja]KnH]/aB
+ LBnp,N"3B^VrGQKTs=<N-c="6q`49lBL&^P6ngWM)sr**LD&n?RpKa!'BOG\=tq9AHh@D,H
+ OJ%`K=GI*&He6^a4jl\#<2@9fpdkV[0/7.+)]VfU[DHL7gDM^k*e<]@uo(*N.)heHIku0(o
+ aiI$>ENrC[C=cE#/jB$l</ZG^e0F)<-dXaY$O"r1Q0PG[Sl]9i/KW:6eR)ZhI`gC8$6J#`T
+ VJ_V?qjKQcf:&s(%5b/Cd$.C8p?UDTg0PF/.bp'HtR*]i/Zg91tK7N_X)h;(\Bug&IPmr_?
+ ,;]XGZ0T'W_jaV+[*:()mrG?]UKpTg0PF/.c=o<Qt%fs"Zr(OY/N@X>0U1i]>m]IYn1;6=G
+ Ef>HD;*c[9?7GTts">7#FPpQV;E^k5Hc+NQaH@\,#I\r-70]s=DS%16=>#Kon?i'AbB&7f.
+ .]fn/&9nhS2Z#.+%I[NK1oCU[k:6Qcq^jT'^+Q3*qQtQ$QLVskj;H*NTZcD%Tl;$o&'Y#e'
+ $O#6)(%ZhGX(0']l(6SVV[D6aIZOX*7:Catqk/glQ7_DShFI=_:X1aECp>$.5=gA&U9HnuI
+ 9slTSN:?3f<5udUeB7)Z4./1X2d*`FST&Hgl'#N_:M]+4T"h((/L`!OerS"&%nso=n8m5\/
+ 0i&Jo?g0H2crEVMHVJ4gRZ7Q0Z0TZP9ncKa!'HNJ`"QG[d%b+5NtWZbW6<kO]&U=UNrB_?.
+ RJBbg6`TANS[O7(P)H.\doN^fQg5>HdA:fnk8?AuRA+tG1=\TrgP,2J,m1jc%SFkp&HS-!o
+ .YWsW/<\[C!IcqlZj!`_Be"EpVH@YoQ"n"]cJP_0_AuD:"ClW`^h7HjpaIobkHBe=e"n"]c
+ JP]IO@\.LcA"7cch5e/rb3YnU#2N%'U&oP5YWsW7To+-pi"$$LpX+kMm?7qc>G\sT:K67I'
+ G^t.VcCqsDHrKP*3H_qBT>Ae0Bb^m',A"jK`sg%AYn+][SM3q>'9L!nNONc<OB];Yk`UPr'
+ U_V6t(YN(ntK2S=Isp:38>DXu6))[SD%.+0%RV$4DO+C_cR>gV:uIn"UVOY>7&)lkS>LI]*
+ =M-nGoFlVu+"c#8UYO/!GVN]goLfMXk#I]*=M-nGoFJ#$PF:ObDC[M(`?>Zbl?fK;;TU=82
+ d.aWda!b(Vs.csmEZB'5MX_=_AQb1B#8Tlu&Zi"&3>#8<D/7):1cficI`T(W)d9G'.$<s5$
+ aNmkZ"bd+H,YPOng9jRhC't"?s/=,=jr5#C8.UoVX$@%"$\V%j?e?e[ITS^m<n*A;0IUb?*
+ nRLBj[Ui<WENrbkg"=^@tS[VUbghUXA<8U&=K8%Si>P3-ltl/R[_mkDDq;=p4huZ5,]&_=*
+ ;gor7X';5`[t,7hk9_-$i+]*dgfq.+eDIFRMiXo:#)j?$EF%?#"M[HJP:bc7W$t+@I!GR-0
+ 5hS08qD>>!bA@8PTL\tAc!7d)g[F@p<;HFpAngJK$jrU-;?*uY.=Zr+e)YIp#,:Y9B$-$Q'
+ !E-&0>`5aaPV+G;\=/iY!g?L?'Ip%56!/T*6.d$QF-\dGDd?^8'=.2jl7\(tlZk4&cSQ;hI
+ >0e^Q"[_@t<6V[\9jdEG=qfSV[q10-A@n_NM9g$l7ChjP7:%Do&2ITm1!c@M4lje"chX)6#
+ *\GK*[!YU&ILI=(Q\,Z@=do^VqO<Z7O6=.#tJRc@Y;d'TLXj"D?O=!DP*iI:fm_4dS7,t\o
+ u=4c_<l$f2nFN[sHk:I"3H_,!,\(*oUC2.4c#o"'!KC=1;MKN#(MnT4fq6.Wl9l)3,iOW!@
+ X;<sf=gcU\fB>e%"14Gst\3&KAt\=M6(`+M%2bP;=clb$+t+FGN:R-3,,A`?k"kZ[LSKAi-
+ "a5#ZGG.=06\td7+&el*P*ck?*o>V^W`3X,Sj3=uDo?A/Kikla%e"ec,ogg1q8n!;?=fPr&
+ TDir@GS]Zrgbmbm^0T."`90.4VGn)r-a+4"#bSLSk5##NVi!F\Y-MPY%H^lO*[3eo&L`ug+
+ 5cW]@=don7)_:Gr8r7o-JEV&ic9\IQE/';IJOeD8@=f-,q(=+$pL\#T!*NQN-H$'C2-k;]?
+ 0,*Fu?k;pg?T'2!B,YH8L<Zd$B`nR-.+L)C=6.ld!1$eR6=$epYJL42aR0>*0loF'^:H&3c
+ /UR-/O_)^-7jlcN#J1Dk+#HC4JPLU`7gJBM!UD4TTUoIj)j/.aRdU10]ASerdq7-eS?Y:uH
+ *brS4>_F%.bmd;j6"ktC^hH\h+3c&\=n,0rdDlgZU\^GathRKf&WbBN)JjgDe(6kG]=*A]R
+ q#drqpWb==BDT0p;u_%#?cZ"O!:frfMKtBL&[AG^bo:[^RsYos6['+anrQbI41JNJiEWimQ
+ Y2f%DQDhG#(ZJs:;o=;rpV'#+F9_lcO>F4GtI`DTCWWACh(#oebhig?F1C^#aN`:R-0T%#)
+ LmX$Wlm7)GJ5YHA)'lLPShkfO\C8kKIu@U8>(ZW-hI]4<$3N'<e)GDH<nsS!/gm;gd<:B,/
+ "ebIeVYRbZ]^nhF,Y('p2g<6V[`<F>87H6TXLDsIOY;0bl['-I#=;iU5319Yu,9t4?6de/N
+ a_?-G%'c$<k?.qrcL>Fo)J!RpX]Vl'kc[>Mb;.mII/oe"(WJst1K`sg),o-$qTANR0Kc[3U
+ ]@^Lp(?eWT@it]+/sdF;19[%)5@j!n94<BJq3m1dk0E?;SjJLfhcO_R1[B11n_k!#Pj/0"o
+ 31e[Zq0cm$4EZ(YH!t&n`$AC>@L+=N_'FbZVpN/+9(c`2;QMg?LtX#CoCWLn)[/MJP^Vu`B
+ 4Yqgdf#0hRRlUNksd=Y6Tp1Is@tgGK=j=>b\*CL"2M?K`sg)9.K(,[k9\UXjc95a\mcMRA\
+ *p,eG>QXOGuYQ`.u2@/K%X@=_7#7`@L)pNt#mEM>n^c*_0To;:q(*WgTI]H6,hYGM,.7O#9
+ )I\j863;o8&Gs:kojP63VlKfHg$qBFqh+Kj5n:L7Men&.qG"ueP?g#7@Q,3Trnt_.g*d]FE
+ 2uhe"dd`)$VJ(f-.c(5/kC0s0mcO$tQ:k%V+T.g-1!ca^SV0eB]@2atb=r2?*ZNMki^JAdN
+ B4D]ol>nhU*ZDE<[fR2.\BTncVmUci=jl4eC:]Td:ZmsE3=E'UB"LB3iuKpFd^jeUN=+rX\
+ r7D<'I!bShGJ"P^!>E<qQ)BK5l3?pCZiqCq6A=\]jBM2lAPm\_QRJ@=]]p0bs;mnA8l/!da
+ 8)qst7DC69Pah?@#$?$CFZf=\4!)JUfUQ_:QJpcYWdSl]59-XK'AeQcEh2HQAiL3O`s;S?t
+ ?VoQ:um#?qH]ml_R=<LSoX-i'graq%4!PK7_hN7K#acl(/kcWorJ/c`orN%(!19VF*X=op5
+ YX%tpX-i(j5Fs<15Tc6WR:.dQ0BmrFNIVraoK\agF^@);,6#5I.4c#[o2Nr?IJZ.sr;#8Ch
+ ElkZl<O=E2Zh"%lCKX">.AXZ2p3Kq/.d8/<QoORTQf;^$]qs"<G"%q6+7L\"UroG::]e9qk
+ )OumcIN1Q:k%V+T06XR&?nH@Ia9k+gNh@X3!l:f5u6,=<LI8\!KaHEd7[iH#Bn%Y>P]8KZY
+ DPo2Jfgp6T1(cL7B:0P3!'!TLdX6ED`)\9M\Imk7NF$\V+_eb87[0jQnh^8X6,fO3.ild=_
+ 65XNV9?^H%$]6fFUb9\Pf&:PX!gLp$6NoK$h9geRlZ[#cQ4,?r?EOqjU\BJaFQ3m4C<_L(n
+ .4c#O?W/]*o]b2M_rmqLSWaIODPcbM*Y--+c>naL4tN%nYX$9X;8kZNftGA*kGPU1Et(TVW
+ ?*VI%`B'dZ!?;Zqt&oUT+i%HO2k8EPOsoC^WZ;uAL;nDW5h;JRWq-F[YoH^bIj.RkM("`$4
+ DOB#?B">r:A%FpA[l^FmI7`DlrFQ?4aK;;YP-uf7NCRS<o#pl]]0ei=X,Q`:&+mWd+2aG&I
+ %RKCO:WpD/eq*os3dk^L'1m1o.EL/V1s4D(U\B?QU*=IFE3ne:U'-?-42.c(cm=-LpK^Kfc
+ 5i?Ien-A;W?A;#hchLAnt[Ri4(A_@8$fXXD-k]H?`i*N7+Ls*G;3&k.?AP$<]OGUA_+tZO>
+ e>15RVcM'%ld'B&RD[Q99=uU]b@TMMAR<]s0u\E0LqbJi/.a.8="7L`I0L2J+?`V5'YcH[?
+ kesn^>_GpSXeS_>imn^bCmImX2JA,'G^tBc`<FG_1J9,,=P)@klh:?pm`BXhA!>3d-^C00:
+ 01tI[Tu3Ohq1Yo*H0'r6ZSqQ6%J1C+C>`)ot`76bFt[(#A7aUkcS+C\c)Fh<%49JWTY4(%Z
+ hGX(.qqMMt*tL>:D#Rp>OJY2XH;/K;kZMVjii]F;_cMSG.f![4g6`B=1m:Xc+0MO9R?1CV9
+ DRI2^L(KBYe0(W8NI8]+M[GijVHVdfe,Y"i%kOmF1=0N%DR_QpO1)K5<idFC<Fh34KjV#+n
+ `n+I%+oVh]*srC/7$`^U/mSh0?'KfM=gc[o4u_\Kig!)<9fg2f--,*Nm$7L&i\/%OTWgZu4
+ KDq_Pl7UWMb%AGrjIXfo=7J;(Cs6_.b0/Wk4O,I/Fh?KK2G_n$m&>%cg'&/V<<]>o*8kFN9
+ CXqTQk-J;haZ,19ZDD-3n.n`-kKb+:M;OR-3.8;sUDDpSp?bfO.>7ld=^o8O55FZcg#D]f+
+ h]eOo@5?(35n&-apibk%SOc&eME_Wn1'S'C4Zh*J\5.A]mS3ks=W/F9d-V;a/===>^3"p7l
+ LF80_D#EIsS?_;-gX0:f[imC=<dH)"Y>it_-nV>%iCiQ,P5i@&rWHP</PF7h^o4F(KORbur
+ dCBJA\l91UmnW-re,<S7[HR!l_-8O3?PF7]][*REB@<TYd_d=AY*CUsR+Q\1N,rDRSt8o#9
+ m:ZHf=\4!)J[iZ^XD+/@=c5k4VdR9pqq`[LIiUFeu^g!gU4VVG^Y`]SaMU&I^qjl0UGGf(P
+ N"oDjH9+ro,RX8.UoW34jNp_<A&K]u:)<gmWAsqrJG*\I6>_@#:P\5iD<81!aX=L#U)_5Eq
+ e1B/$oTohb/_-+EJlONY;.c^>N)K];%D<YQ;T[MP0#;f/0!oX)c`Y^A4f\`ui@-@buma#Or
+ =iYb?h=*-*^GqIZ/WMt?;po>o2'G^t_5>j5^Zt\?l-V8hF2m,BOa^g--lR_Q=,pi</-#tr*
+ YH&#jc><mr"P[B#o/uj0E9Tq,/B.'Q2]1T:]!$@;P)l0q'#c$mXuD%<Jo-m4H2dJDB1bs_@
+ &Z,l^gN+ne&0.OP[kt!X]Q*VRFea>F2_K`VC3u,?sei*CVi)Ec\CZ\$\#%fo!$e$G:pDDX-
+ ?:1l$b8VHLB%Wbt[/&V*\UA!;i"<Gm4`C-p:$$-doXNDp&99H%'%C'sCN`E;hOsju$,]-16
+ ].!Wa(W,BY&UFJ/7C$)5jr1JRj8;YLt<;f[[HQPea0YIU.B='s)cIj)?i@=\CtULKh`IWr*
+ i(^Zq;"cEedHD)B/hPMRFXOGM\&M>_E/'`f`\\rnn=<OPKN9`j`!sb,_O-(Qb]=,juYW(ch
+ ie7`O$a,ghPjFfX.jG!CEfIp;61n(io5s5[g"7.E/N<YXfKRDb[TD_]ie7`IX0.d^'^hJ2_
+ W;F)7:Cb?R\sVdN>qafc]I(rE,`8%Ge]mVMFT//C3?FZQb32TO2"i.;Z+LD$&&P7WgATgrq
+ :9.8C*CUW[_1]0]DWrB^niO<0PTYd%aiP^fI%2/H3esLVa+DoQ_1taj9.>YRf5cC\T0e3o*
+ *7<hX#7\\s1hZc-90<`)sAOOgJ"BAC!JklDE=Ks+91R.FC%:[qhH::]fY19Y>7:C6W5M>O$
+ O5Tl%d1!f#Is4FGXVpL/W^Abg\SbT+>dM"iaCSF/n$7:cgpiF0u5L0)AeUi"a?SJoGa\NNL
+ GBlcZp+#4XZ=V32:7LFb^Roa>]oo>/:bO`+bZd[_*Yk^L?`L:Hr&OdHg+0*#l]h%"`KMN29
+ E<l0@k-X*e>ZA`D6<I.#l:O&W;T3^2dT('k+>Qs`6/l&or@uJWM^1(K^Z;>.m'S7.:+%j@0
+ 5@>ZW,/TG3rJti=V+Ar>FLB-1RD<94a%%.hmH05%sH+H`%rts00&==o)^hebT4G@3)gQ~>
+Q
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf b/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf
new file mode 100644
index 0000000..17e19ec
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.png b/testfiles/cli_tests/testcases/export-area-drawing_expected.png
new file mode 100644
index 0000000..8c8ef62
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.ps b/testfiles/cli_tests/testcases/export-area-drawing_expected.ps
new file mode 100644
index 0000000..130815e
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.ps
@@ -0,0 +1,480 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Thu Feb 27 23:52:48 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 3
+%%DocumentMedia: 87x72mm 248 206 0 () ()
+%%BoundingBox: 0 0 248 206
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 3 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 87x72mm
+%%PageBoundingBox: 0 0 248 206
+248 206 cairo_set_page_size
+%%EndPageSetup
+q 0 0 248 206 rectclip
+1 0 0 -1 0 206 cm q
+0.254902 0.411765 0.882353 rg
+14.172 0 m 127.559 0 l 135.41 0 141.73 6.32 141.73 14.172 c 141.73 70.867
+ l 141.73 78.719 135.41 85.039 127.559 85.039 c 14.172 85.039 l 6.32 85.039
+ 0 78.719 0 70.867 c 0 14.172 l 0 6.32 6.32 0 14.172 0 c h
+14.172 0 m f
+1 0 0 rg
+243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l
+77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84
+ 48.395 l 210.449 103.418 l h
+243.668 152.23 m f
+0.501961 0 0.501961 rg
+4.251969 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+243.668 152.23 m 184.707 148.898 l 148.539 195.559 l 133.488 138.473 l
+77.918 118.504 l 127.578 86.559 l 129.402 27.555 l 175.141 64.895 l 231.84
+ 48.395 l 210.449 103.418 l h
+243.668 152.23 m S Q
+0 0.501961 0 rg
+116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016
+204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195
+ 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h
+116.219 153.07 m f
+0 g
+2.834646 w
+q 1 0 0 1 0 0 cm
+116.219 153.07 m 116.219 181.25 93.375 204.094 65.195 204.094 c 37.016
+204.094 14.172 181.25 14.172 153.07 c 14.172 124.891 37.016 102.047 65.195
+ 102.047 c 93.375 102.047 116.219 124.891 116.219 153.07 c h
+116.219 153.07 m S Q
+Q q
+39 17 151 151 re W n
+q
+39 17 151 151 re W n
+% Fallback Image: x=39 y=17 w=151 h=151 res=300ppi size=1190700
+[ 151.2 0 0 -151.2 39 168.2 ] concat
+/cairo_ascii85_file currentfile /ASCII85Decode filter def
+/DeviceRGB setcolorspace
+<<
+ /ImageType 1
+ /Width 630
+ /Height 630
+ /Interpolate false
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ /DataSource cairo_ascii85_file /FlateDecode filter
+ /ImageMatrix [ 630 0 0 -630 0 630 ]
+>>
+cairo_image
+ Gb"0WGFVoNIH^]DMs@>:hKuG,0.X(r,f,<D":W*XK,nD0\,\G>]L#qUH]rg8Q\:I]joW(",
+ UT5GOfW;#Y*)i!>1t<?OgJ;oZn#j7[<;+'RY=2/m*%TT3Tkb7bia8bs1$/s0@o^<pTmA2k'
+ OD+/BWFIk]aa_D"kaT!0Cru<WE'#>E8h,\<brKfOp8ZGO/`<82]"7f&+'H&b&%#Ka!R\-nI
+ JJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_D;lA5Y@fUn-k!
+ SOO>O.4@<NXUbiDdcVR^D.?23]1DCTi8u&W[%#"kHdO6Y/6X^"k1^XW::fm]HNP`Og'G`r+
+ UTj4rKa!Rd-nIJJ@0*/\$4G0V=9'e0_SS)C(-kKeYj`'T"d%.\/3H:.!MhOZ$dVXO!%EoE_
+ D;lAJ2M\6XUtLM&k-6f)%$beR`"SVj:M>G&jg$c)%$beRNlaq3MXV8gH@>\(UFekStW@gX?
+ $.>Co=LtPM<#'4hP%tkD9FtKkDeb!,IV_T%-_@a8<&7bW2mqr'uX$_SS)C(4\9_G0atVltr
+ 63+5F1fr249KKnX.f/-'IGmJ?4e7NHbiNqa.9"ptaa:fm_K*.NCV]nLU!fK!g;d=C*N6t,$
+ l$4FY<j0)7nDdaZa[SG\'BUSWkGV9C3cVR^Dei;9]%k=[@o]?JWEu'W4OE[D&n-k!S@*Qe6
+ ;qi^:MkI2JTWmnoK`tl/amE#9(=mJQf8MkDq,is"_D;lAJ2O75`DtRS8r>%u=\1nfi>Dt1^
+ m\2+-c]BBi2i`IYj`'T"^oUP>:.?sfTqd:L\ArYrL#)c4@<NX=EF>H":H/kFSG,bE^)@6Kk
+ Deb!,G>JSmYCI?`g+`OtH5\;cn:!_?-t(bbjoBKtY0_@`tR;K*!PP-nIJJ@0'J?SC\OS2iU
+ &+DkYKA1PLNq-nG?[p)IAsZEPp.?:dFki>Dt1^lH)uZE4i7N5$kl-nIJJ@0,#cp[E3-Klrp
+ @k0lp0$4G0V=9*O241*4@@F%>C;XE;Uf]sWK_SS)C(4[Dc#;$bc[S>cm^$"cT$470e:fm^@
+ j;_9:^T^SUG0f_s,mB!VB.,;248/,Mi_a,)-['aBP(LQf1DCUT*W'mnHWSiU^KO46eG>5#@
+ Gr(2$c%c)q\FH\fJC!<;G9'SfCDN@$4G0V=9*M(mIRon/WRJ$a5W.S@Gr(2$c%dTHPZBT=N
+ Bs`Xf\ClYj`'T"^oBEpZD?R=N@CXPP6*'n>$$k$dVXO!-T?.GFkF\Fe%<)@3l)2KkDeb!':
+ \(qiK-X]ku5CVsJ;MC^LQr:fm^@*.DP'5[gGCXJDMnn-k!S@)nD=k"$6<EH:qUZ]u4=(7q5
+ (!:2Zp>$/iB>:/JP=H_m/9juuu$4FY0UMnGD/aSnh8rA6-Y,%_pn-k!S@)oP.ZOE:I;%Knf
+ fctF]NW7%rYj`'T"^oBU2eEuXYYf%>f3S"?(qYnn^2nUj.k)kt4@<NXfPu;j%"f6Pl&8hMe
+ `dQtHDKB<`jq7a_SS)C(4[FG?_;5__2(j-$L;Y/>G?o*NU5oS'DCV-=@keei>Dt1^lB'iV\
+ qnleuoJIE,&U[qq6tqR8)]P^[k8@5;n4LB.,;24&5.0RV;\@p"7j.[]7d3Sc?CZc5t_'F3h
+ ,gIk46$i>Dt1^lFW5V^*1p4?_i`_E)FSVgLY]DIairP(LQf1DCUT*N-=l>Z`AKpFWJA;.g[
+ /@<NlBhj"li(7q5(!:2\QF`O4u/'t%4<7pETZK^QF+M3b!ZYB?R4U^]UYph4d6X^#JEGE[m
+ 7!j,YO(b;m/[";DQ6WHN*I2Eql]4bKi>Dt1^lJ.rS![mRcKX:B$gXbB=k6YPSCfi=Dfd9/K
+ nX.f/-%b,Dk<&(k)/f8GREce8rBa[=&MjsG_X':YiGAQnVK0,=:^CtYhlLX\6Q=EH4D0&;-
+ 3gA(^/,5B)I@"=\3U9pTY[jgeHh4jtDl=`CNT8(4ZR8Nik(7>H&[6:gq%A8TE_9m,fYo\eo
+ Tf=9'-'2(Iqr4ij;#/Lr7WCp0W_IV3t*h)aegN+>7`!EcT#8@Ch60'WILL%T+*7DY!U2_.s
+ %O(BRG$4FY$I>=+-'Wk('2_Jpia0O8<i1@Q+r3_]adZYQjJ\hJm@,IYh#!';kqme.l$SPOY
+ Pb4=e.j@0L&U"j(J-@q<Q^WS$pN9iq>LA]Mq6j@&PjFsgeA0,1E.c"/YTW,E&qc'AkWW#Sl
+ _rG&cfu*c,?qZnErD!JdSh(C7:?4!Y^c[^K7mOX]keG7dB(eiojGCoc.b"I\h%'3:a;ba/-
+ $(Ok:ACPf2^YU@UZ$68V,fmYQ-46Y]$4$]IJ%7gP*?.]'a<_-,i/N;BSgN(4ZPnpF\/@<gE
+ +@7:C+'T+k+p8(il<d9G'<C=bueD1i1K"^o0_4nB,OF\R)OW3EbD=\4ajI:DToLSa/l_LfW
+ +Yi*lTo*g4n?$GtEYd_8L8Q!]($H.S6!jLV0]-`66eleR[[RKg[!B)1g-p'JVPn]%._?-t"
+ n2h-uFK.fSp7\^NRbK>A/3bSVFRRH9#4?n+)^m6;$]_k_f-!u!\s#@4FYr<*p/b/)5.UYR.
+ k0s1'Gc3&8)B\E:oKkpUMkk"'jXCN?4X=\ft8mMDHpF!4in:0'Gc3&8)KhROJb.q_9^!,W6
+ i6F7b1FcC7b&O7fZCg!#?R14j+sA%D'7QKtS4,8Wh%c$@%TJ!jLV8)`%r'e>P/l$@=;7P+k
+ d6Zl@\>Dbb/J@3l(\;-3f6*8<?g+A#9g6`R@#kJ+]4&%*A0r,!*_.p,Ao().O7"ijuBDU>.
+ jSM"$s>LA]MA_'p\C`6Z+G-U[U7hAL!!#?R33R&[9:>fXjgEO4l_XbaQXJ>iM"^o<+*@?IT
+ DelCWh9#LcMW/iX2qG*r*qBk1@0'JLEr4?S"-f_(LkkXu%D(@UlROE-:;0l=;L6VU$AAXk_
+ 9$Om'!749bpZoK]<IG"<`)s!(7a)>3RRI5kY^>2]rrrtQef`SM6<Y16oIRHI/&Z;!jLV4Q:
+ VD_%B:Hu*n(@NY+unE2mVUfAi2NQOs6`!=9',Ls4YCZMfVp[&2.`:=@iPF-nG?+:2c_cBPr
+ _"E:JmqX\!/ikTP*oS%ifLc/f\gP99dsYQ-46]d_pW(@,Dg%?2g2dk9m6FsEKgC&HNZ7FK'
+ q5+o+[/3'tMI%m<S/e>o')CLSH;FHtapF3XM=9*7+3OZdI0r93#GWOmJd7T:n\olF9J9NCm
+ !4VYA2(@m;4\35T$#.nW7=(?Wa;4-0<*-J"3X"pXKa$DchBU\XEOi"QMFTI"&J%o?jDH#g]
+ l]Za$fD0q$c&mXLR/sEV+_C20;]Uf;BS.;(4]Wd%P9JMasGk>]TpL:FdD]c'W(\=ZB?EB:f
+ m^8jW%N?En.&aMMKUh031sbm[@C1A$pCp?jhYli)\-S,mH6;XS[fTdNpPI;WM\c^e0Jp6"'
+ f([=A3cK9T@!hVsB60;?pc?PVosQB`0+K#.S.COaVRK8s3a]u9e]M\dlm/f^>9gr.7=TgiG
+ k\922O8RX,l:[p2DjN1#OG?@EKC(qG6>6jmT1rtGnh'\d_]0'7gEO0\^F=CUP_?+]Bi1:)V
+ mC9%*M)WhnLebR\#M>#PmcO&k8sW)i!X:&(!4NHO2r>_tf6(0b+F:tiPnYV.h27"9!st[*!
+ 8KX-mQ?,4gsB?F;s55T<`51KS^Gs&a0HjT@0*l\pmm0KH;UHD`&m1^HJSS%*aq"5XJ?+:$4
+ FYO,B(mcLdeH6/07*\21)Tk@`sGiZ>AcK+<D44J6PP#RU]0OS%>A>!I_dVMNgP<!P!:Ec.N
+ ;hW7)c_gZP3p\uYdp'F.c4&TAF"J6PNfcS>bo]l#JE5!M'Zlih^"h8gAF26EQqNH@\[+;>T
+ A>K:p51oNcoDC8aRT<XP'`DBY:DB7JC;HP;*ilUea=">_W=\02j'Gc4'a'YHId"Q)&0&AZ=
+ d3f+MN3&f@kZh.d":Ttfi7@GMV]->d\XF0bSY0_gQ#D!q7HrZsbmiJ*'H@f&J6OCE:,BtBG
+ iQ_"k]YNY;OlQ#V>`M+.0>+<!c[JdNi@ki+BOU=%pTZ&lh'dpYhdC_D4,A'ic=:n?mC@/i8
+ 2TC;\H2t^)eM*\)=43^$S;?;/p3!FC.:A!P!8e>Jc(Gd%eRl(+@dWf0!)3,T@'u^o^O>-RU
+ tQ$h['\W!,ndmSISD-,mDRV`*,/Pn$O2U9FXQH@O,V6mr";4[Qep!S!o$MY0fXOj2cAZ*rY
+ #l.2XW$4FYOe#t'&fQ2AKGg:miU=77I=@l@iZpZr6.>YhBE9m/Y$&Qt*,!AW4AO.);8R_F)
+ =]SEs=9,%9B%-NCVgYfk.UKB1X3mL0ok:t"/_MqTWICC[G>\[""lP]_W%Z\R`=j#7?EBqNg
+ c>1B'i,10YQ.!tcd<I3F8ifn,i5_$Lp!NjA2gfqUnFpl6=K>FCkEm\5n=Zj=,:,/^$J5>;1
+ <7d,dK_I6-5,'!cV`>iT1:(rLt>USulsgY,&<"Uk&%sZ^Mh98O6bc"Ot.Qb7&!0RI2`bXO)
+ g,U_mf)ZKL)7g/,+F\jXYt_?+[&kFbCTbB71^@"hIAc7%(-lp`m_gVfQ(/#6[>PUJ'_=)nd
+ %243ZqFW^-WKiCI<?./]<7Q,J>poF4KUjJ>R-nG@"p?u?t0[_InDt-e\RR\kW,0ep?6t$*!
+ `VuCH#/g@rmNipRYcH<FXKSEJIWp*:*@iQe/:]uFY]#Z?,ep@+MAI`K2!W:/4j7eS$[,4DX
+ '-h*VW:!N!P!/Xmm;X]?E&:-k:&E9Z'$;ToD%XJbG=`o"=Pf$<t=Y$?nfL!FEd75,nj<W";
+ 6Cli6%bfjr7"_laj-AQ'+hKcEb0IU3,9d<`2ar!)a<?43q;Vhp>ZIPE^I-=@mN+N@FNZ<_K
+ >?UaRbo<t;q@OMT^q0"AiHPa&g_8WgK)!\5]J/-,\jIV5h"d&tce`FG.6,!,+smUJ2]XJDM
+ n!;q'%XZ6S!]2j+g02Zc]@O9!I6aN8OpfNj!!q=</UVbUH%cRpiHHr]K"kHaQ]Yd>K$4FWs
+ 8)KhR0W=;[Hgq*4!fpA[goOa0*Nr;4YQ.og[X4=VP]"k8`9WU2,!,+c*agq4\XUWH.p4@XY
+ Mc1[!*hPX`_;!sm9EkPV^J<cZBF4c]NZ!<M?OlO"lRPn>r)nDF-Fl\O%u_F@O4IbhAK#sHn
+ 7p!!I3W!ldH:iF$up_(FKC:lh4ua#eQ3NgbkLb'GM=5(Ja=eAh]Nh;-5!5XJFK(Tt2dZ3bJ
+ I]@0*lY@`Qtd#BHsg.it//`_$RF$QoRIDP**]-'')lSJ\<k\uYLh'Gh;)@3l)2"^oNqD$_"
+ :?]Puk$QM*J`r\EHDIe[^Rat<I7QPAe6"'f(Ebaq$7#/!&e]$R#(1+)<aPT1dp?KQDFUJ6X
+ $c&$+>:(XWJ^<TniakD+Y?"O8Z]]pW!c[9"f-Vh*Ia@9;i`X*'.WnP!O`cm/SX\=`.4?_I=
+ &*\*OQbUSd_j"UJpZ&3XF/bQ.8'?[Ci2esH_2];!*;p6)P?6C/_3;.CP)Fud-[p<Uc>u%9)
+ \G4>Y.4i!OuSmE_H$9nW_rtRWWqU*c*d@[oZI48thLa9b$EkT3nH[ql^\LJ?_7-=.&p1TcP
+ cA&[][Z8d\)-R0DU;o2J*%R``Ld-$s7bDSH&c4+Gr^b7k_BZ+WV\]q>U%(Bh!Kf3RuaYGA[
+ IE-@DHUi?<QC+c\<5;B?LkM8)I;cj$;logMK0P3!'!TNo?4R.$D6JF">cFl6GZ$*6o)-q88
+ =0%4ES3J\XDp&7OoV8Vjgt6ga\\X4Ve,@8?JN,OON++s"DIi@J9rtH&iC]!K`nDpRQ_0^jm
+ ]F!BEDos>DX9Hlb[A4mdf%,%JbVZU>+#UG.@b0=q.RdAZ#8s:P,3#&Y#8@%f&[lVC+rr:F^
+ OZR+Al.M]CdNT"El([,dO,HC=Ul47E+_a4T:_b!cTgU^_2:A;ka)EpAtP6Ff0UMg2:GlKK0
+ j*i^n"7gp$dtL#l)($aqFq$^AL0Y\X:<`<MOhMXDc3$^gHn,t6eYP@[fn3</Bkj_Do/).tk
+ \r9'fY!8Q5!ZcHPF>h)!V9*&PI3rQ]4A2gf>>:/.8\D5]ZeR*gLVJp1b%u6m`!.8`nha2t;
+ ;lP,"B*'\kdClV/WVk8Y87[@N@K"`cCiX-q/;<R-Ka$DS_7^3b-;Top/fk;.kK->R"1'4HQ
+ 6R>_hJi@4p!gWq]AraR%>=rs":+\F2jc_ZF>r_N^l%>JMNN)"FRIDQcBY:(YVt%61]*IIK`
+ r"jLYeM50R91(+7V2'Q6r/"ik\4okGluVXHAKb<N@Up/;S?r"GI!j=GP`j.;ZE;'(5lQMWh
+ E?\t@e@j_bud21JK9Q`KfFDHp:mnaN']XYQ6D'Gc4ALYmBu@.Mh2cJh]OFWRZ\Lbq?cA(fF
+ Og#OLZOCAP)+Q/9m4kF*4eETfg3Iho.>"R+@\*c2a/N%CD0$CuB'OliOV%==V5[YUXCQ?6l
+ \Z%ZJ[f@I`d-]-CiHA."Y]E_8V<ls'X7$5aEg=KCYjU_EZOJ6WSaIUA!dMbDPn[[!ceUfS@
+ 0%3,\pKaZjD!!.`@Cql<Tr<!NUpMK*om0A;5Ll`lHEJg'nlg!m+<75%AqM>i?LMciI`)\Mc
+ 1VclM9A>*a,ZCf'(BkSbAO;!=B4MKk%`,(lY4:SKU2pi=@SB;?TCj*`oFu?I?IO*ct`iKa$
+ DOn^gL,T%U3o`@!lt'4"0a6p-:6jQk20omlA>C[@BBKa$DOnX\,;B%1bt9c?o[o5FQ4mNWc
+ C2i@73$JkT1Q`KjL@0*lW@Y[N``<SRpGd3FK;pOLi"[2?V[k/Kq,?%\E/tC^gnFkHr4[shK
+ 6])[1.BGV37lXT*GMfi>JAMA,iT.Er#1j%<Euoq'lbOc.9K]*Er8KZD<"Cn%>eMct$c%Hp>
+ :1dZapRbhnKAEGcF)U74]&ek/XNO4q3I!l'Gc3,Vm[k`)n&S('VFk#Jh+F!86'a(fFg?cq/
+ <J2HLhGs"lR8pY>$j`C(R$)#`*5djkEB7k?#8Nh*8&\g"8W"!P!)pF2EV_d_j$/4+bA\OE>
+ s9nh.!jhm0M@_?+]8oVR9`G[7D+M,/6sMY35K/`3kEVRm0'2PI>T>W@rBUVr[*.R)8m4;Ls
+ q[!^%D5YiK!YQ.Aa3OZe4%$p1pntQ_HFBs)`F<sAI*b54S2RZFa!2fH02(@m;4\1%o+fK;D
+ :'GrCbZ@[#m:Y,EoBKO<[SU'+VY2(Q2CRo\4]$V"+i#/+P+q&B2O1jdUM_IY6cOhs!\h%Vn
+ 8a/uQK\G@UCY3'>a\pJ"'R?ZrVi+B/JJtNWI9Pf)&2e-mO(6q&-b(8(XJF7G`'?>0U6]uWB
+ jt9F^Osl#P`hd!\fm\@#70X0C(gmUCZhpK`tk!s8KtAKrr_8j[UEN!t#FOeG^GO_HtX'j@:
+ <M!t#FOe:E%+$jp4<HchC5^]tPhJ>n0J(E+!r8p?UDI=MhV/-&TRpFJ!Hlo!TnIe3Y)TWeD
+ i*I;Y<6"-t_Y4A=un,\4H@-Z+No*btQ6[+Y7I=MhV/-&V(hg*;9YVeI7Ie3Y)TWeDi*I3"7
+ 6"+POBDKp[pjg3_0QlHY3<k2NWB87`5/7C;(4`BZDpC6hCn9u:5Pb@%:fm^pNp`KM:tT_O/
+ HpqPK`tlLf^>.3Kl%+=j0JcQ-nG?sa**jb[S^\[O$:>a'Gc4uj0-c_-u?4bQQLX+%k&t/;o
+ `7;DG\uA:6QcJJ.F%Z!)k7g:,=<"r7hDP6"'e]3k8a8U3Y#6A*)kpi"$/&^spKn;\CZu^)e
+ L`pAf\>=9,3nD+hCC"a[QRg]RI?@0)`V[<6MaKe:e!jl[]C%gi][eGEGs-<f'.HA)4O"8kG
+ n!LPqH>/GtVVh`IA4hr-R(4`C5RjTIbfHNIPIdR79TWeDiS_5h`dD?[bU%378n-=XN?n0R:
+ 3_K'Qq7-b*K>I[DZKLEYK>O53KB22:i"$/&^rY@Wf`m/DTEiWc4hr-R(4_O\LR/qop7`TN5
+ PG/-:fm]ep)R=K:tRPZ?[hDDrh-IqN8ts8.;ZQ_.mNb.Io'5I7WJti2(7g&h+)q^!WJar!0
+ $:%^VleL'tUmPg]RI?@0%4uT<m1CYZGp"q7-b*K>I[DEa[cKK>LsF4ltiJi"$/&^rV)?$Om
+ GIWI)_44hr-R(4_O"HPRG4[Rtb1T6l)Q-nG?CLYeM=:tY*FX8L`Tr'=`l(ch6V4G1N-cs>_
+ q*oIP9$c'iWG98RgCphQOT6l)Q-nG?CLYnM8:tQ]B=aoc>rh-IqN#[+YN^7)hFXR!q#P`qg
+ !\eZEW3CEUKDaL,r'=`l(chHTCkKUUlh9mj&+BgX"^pEDmTBaJD:%\2k8rOl$4FYjYr?85'
+ XgkOb0N5d*u#K@OlO&c(_jDMB?8C^^`O7+J<Alq:H'\<7&S5S4hr-R(4_M\4/Wr1p6JI;T6
+ l)Q-nG?C-[&0X1p=H9XSgEIHp_<C(cf-T8tq$adpqHo*oItE$c'j*D$_":?]UKpH@To^/-$
+ om[SBT)YQ]?;r6POn6X^!43ONErU4kb28&u3(^c)rCJ<BS5S![ktcfsEZ6P&YqK`tlFo]?I
+ :(:HaEP95+$D^[.:,H!J[:UI@FHDpbg"+3IE!>nBbYDs5Y7"4>#^7hb2'"@&f$A63]lG<$Y
+ &+C$^"d$7-7YSOK#K[K>^c)rC5iVJYaYkR676NnbkQ/DkYQ,<Fp[E3U_NsHcnj<rW%>=tI\
+ :'-u)&2e-mO(6k!8gUT!/\lZ\C@1UjgqYnci\Y_@0%W+kJ.^__H,kanj<rW%>=tI\Gc:@)\
+ i"'mNk*i!8gUT!/]I&ZcJfD=*7=7Ta1@I_?*9`JUIn8$<sKVa:CGL2\[#miXYB^?r5K*h-G
+ Kn!PY83!"sKpc[:A^?IR`kLE>@m$4@trLYag9luh,aIcpgHl)t$^hl\s<mQ^:N8ll*[4Rru
+ O'Xh1XaU^PM2r3#d?_&^VDJ]N,G[/KP\X0fqGEs=sJ8ZheJ-8l=AJa^#A5Lo^h+<(Z!PY83
+ !92R/\*h+af`l;1EDq(G+*rHU-nKoD>UrsG^MT]b?6+1"KDa'uHp_<C`6qJgVI\!]2f3EZT
+ \IX#4hruj(-if_[r6$(HYnB3]K-sRVYndCHp_<C4@%`1<CLh%ZdRD?9fbXjkQ/DkYQ4+=gp
+ FfTb_"Wpj"9EDdB(gYLE>@m$4Ge$eR!Orll/mi[^AOlVo]H4^c)rC^ooUSXtN!o06`WA9@m
+ 58'+aRGK`r$1j5TY-mB40^e$_A%7Xj=tI\O&3b%n"]GOb/Bn(R%dVh`m/D??el_?-^]r>pg
+ (jm'*PFK\nr!fIa\@=_BhCQCk&MY5>B[S.fT;-4qE75e0^0$\miX#laiq0G`"mOg``!'q;7
+ 828]i8DL7F%q^5'5[f5n&S^+[`?'jt($JLRFBA:["p=s\"]BtsHR)d#e-"?]#lFm\"d5G.H
+ R'SbH=W$'/3hL35bYDI;S,f7]Q!%En(O52a-Gt>X@!-YK>I[]MEMT&0FA15UDk#8ZUY'.7U
+ ^l/dSR9IFRMn!04!6U!Q9]/!_FWJ7j;lp"Rk'e*XNqi'Ga4Hm#_8LLVa*9kK=p'dF[%r!@3
+ Q>!b'(i#p?`+/.bSCOT9un_?(l[I4<p;4VI#M1C=C@$4DNE5C4YnZ:=t8O2:tWiPQ^n$Jh0
+ dLk$K[('k$98-%U9@=_gE6oJ!Z/b*qD6lp\#!&%/N+Md9GY@`gu&69J\#c>\_X8.\+,6<H7
+ Ka!'`4VC"8TWg\CYX\ac*Y]@q%/*3l8VP"_!ROrXQ9>jGZD"LQ2"jH?abdk9EnDT;,Voc88
+ FU8Q7&B<#5@f;/7:?5SYt"jd#o"0EP:q8.Y3BipZNU>_"oNE4lH41[Vg<[RarUj35U\2A^#
+ l3bjep`U!MgP>$[@Un&jV>KY^gAT)qL>rSa5NI$aW>)#VHGlG_8-l5cUT`J8G`QCJ+<GnFY
+ .o4VC!c:ftLSp.,2Y%13JF;La+;nN52_]l[hH":umo(3%Us4VISWOT7_'_?00#YXd])*loB
+ /+FGRg@#@)[!89bJ!@(q>O`6QLrlsel!5aZ2!XW=s"G"!Y=<J4BOT5qG$4FeMn`JQsqe(2#
+ l,k%R+K81>+:db#!0AlA$abaR&c`>;=PuKt,6>Rh$4GW"HR&U$7:Cc)`Z>EdG#6gn)B(M=]
+ XXu7@)[s9b75Loin1YS_2]Q-[r.c2lDq635PicdJ,"e5NdpuIBeB@S?i4Ano,hr<fsAcqcQ
+ >9Z`;)V^GOFE/2qEldj.L6HjXU[]:@e&*Ps#aFW^uNo2E,P&.9ZK?gC&N-e(NXUhUFdioC:
+ -h1\.fkL9+b>Dr/,JUITOreh'g'4WQSZ%iWr;lI;u[QhULXh]MXHcOPHp`NfI?Io$'1J!mQ
+ eo0Z9kCMMFWs08@Hp.,1f/7f08p$*IYEmhM6r78>(54QRqN>qc@T%uO[/&Q6iXdktGgGqLQ
+ UQ5n4qWX-f:[@r&c;2aYYGZd#,B6l\@?1PQ>*?7sV55]OCmk%bDbp;p7gDhZeu`H&FQmVQ4
+ _\VFaH2Etf(=CY\^CHGs33ZHA8-JjHLX5_,etH-!+&6S_E+eZEFRU^IPg)=(IgJ&Vu?L:OR
+ Aea-SmPqe>U[<5OZcKO)qIFSNhZr7/l(4\?JI)J;6Hqf^n9-3a$b)l&gl>okN)29fdKL38M
+ /WY$BZ#$1<foo5ELH$F_SreS@e6S)NV..siOl<#;.C2E#I*^OO@L^,,RP*uZt\E(B/]"oWQ
+ 0R-sn?nbi!RJ,.9uQS5NXs48&0m#_;+O'id4WG08A4c>hgZL$r7_7V9I/8)hQ/rr4\oZ'1f
+ =](=0[B7.=Yh+4I0'WK(OT9?)+:DC[^A?A]B0Yq)YQ4i(iY,<V:O7?@m+L3%G[^6)*V13h2
+ i.LGp'l?o!;J-"Klo"L%ie^BX`$p=[&B<i!U1/l`9H*irM,D`r.fchG5hD3nH+#o4V@_t8/
+ J_GHJMAG1<Z*W4aOK!%Sl:1k?"*4F*`5o)roe)J%9e5mIFhL`!H'-!4WQ5_VVr9rkJJ[mUM
+ :el-dQAdNjjr1MKb=QX:eXqK+Kgp;VgJ"ku2QFCgL9J@>5W==:17s7r/qIs=dL_O@/t=/Ga
+ B2+":!8ki?$G18lO/WO#.eB4^#7'6F\s0s?Ns1@dPs7tp,s4aeN%9BL,;BbjPH.K(bhu<>f
+ _SR&ITet+m];B]-9M[<IfcpM?#%%_ld'1?s@f=s"#$YI+lh4jXX68P^O](M0H:4`n.J5&\4
+ epM.P^:;)?W65mV4LTMO-TRZBUuK#Ua\/nWF!uX#O+AC:liBfX%=T`iV9K4'%p*,G-Udg,^
+ RPHGl\&<a+_d_c$oZfdIKqrS7W4d?AC.hQLp64Fo/2*%<^]BV7rVP-^FO9[(J2i(XZBOs%!
+ bc)&[/SfD#0qcfR4%08X?660bLP(V_obdn<d98-"I42heB7>Q<uhZWF<rP9tENE$qK:.5`a
+ sW@*pV8NN;@]V*d7dD(U2*W;lL\i"<>J.=6F0KLj?>J-lK-*m&5mR",O86jbPjkmBE_SUJ)
+ :S(hbbVLJjpMTHoh!Z2qelrshHe0(0;s9:G8$Bl2+SqMp.&Hk?,BnT\>-XgJ:OY(Bq/&_dY
+ ;`L_(;2TMdnA:#H6@P[!$oQ^@;k"-s+;Ce?b!><Ij7-UWSu77HpjssV.1;E:2iE2r>fC*;V
+ _u]PB;#=hkn-WKi(bB*rE?8,"qp;$6XFq(\[F]e_g/A\:4C(q4ol@W<l2!<pEW2RtY1bK7-
+ %bhiHXf4M\McN8r78h+:C<qnNI5n(tancb.h04C#C3ZDX%lm#_9Uc:)15o2e'QoZ5=K4hgM
+ F?)^-;CXpJ#[fF*n`&ZHEO%)@ImFoQ%[%0!oB(mDGBSP.9(n2GpYt"j\cl!Sl^k!em4Z4Q1
+ _ok]JXQZ!a5+")IWqtc;k^?egUS$:eq4#cf&Y6]0Xbi=.CV7`(F]in(%e`En#eWP4gXNUhe
+ Q6D0S(GQqd6(C-LSLIhEk1JCkG*5m9on.TmEOnCUYQ;2N%Q]ip-m]4\om31cgp_V[7Cg<Ns
+ #GEi[_+ZefXm1`otg@]pco-PZeb!kjT>^mVC3'#Wo$Yk+TESgS[:+`3A7\LL'&MWb@70HR-
+ U;dCjF;kmG4l=G:U0^4"fuIXDr-L2UFqQ7MW@dYU8JQ_HEN:\SD'@nUIZY%R^e,LK9cr<OO
+ 64LhVXaN"8VY;oOYG]7`JJEU>D5:mli4NNH.?&hkM0=C#n.H?=n*-LMoWd++Rfm#B(Ok4q*
+ WcWI\G9VRuo74^GfJ.mLm-^1[CWGZ+XIkX##NGKCkg&6tb3mBob'<dIO_&)Y3a6fFe[`/dH
+ @"hu*XMff\u2de[`u..0@R/h?,80dpB&@)hi$W#rh-](\'11G*`l@Lp-,*CGeZbC5``LM]?
+ %_f!@4p3$@DXAo(D>Gfpn`f(TgJ*f)`=m'`DA*-tVr@lIG;ahjJlTpLe9FYX\a[;MZ*sU8$
+ XCs7B6XRJ+AP3[4DpOQ>''O*a$de9m`E6qs6+Fm%'G54"CkX%1\)cLUEc!3)X'qX/RBgT+C
+ /4+f:OH@*jLddnR[pi:J/V7hrU="ijIiu^d;e5l96!:ZJ[n^p&%W46K9B0Q7fEqDFW6^3k"
+ R@3d=&+hjNmpk_H27c;PKDaI55Y?$'fIkS?['JEtO"3(_=ZJXVB"[mdI8Bgi6<i+f!C2U5_
+ Y.'r&Y<uphtC%A6+o1B*`!j+n`SdMmO#.(OT6NGXK[,JhnENA0HT9_dG)akQ-5AREVhDKO8
+ Lin^GKP`"9<_((:Ijt"i8fe#<5'/)*=B03hY:>rd797H"E$>J3\q*Yha"DN;RC3f<Ms5VPU
+ 9Lc0i%/a.qC,.siNA"@tY/mAAB:^>''>Sr,`$fA5]?,NINc)"=32Z:=s]Yd@]g:=4j>d8no
+ jKMo^QbHl5<Qa_H$lHZi0eK\h],68p#*`Ue!khk_i-U!QRPWf`Y5i9QFR[*m(cOFEG"FrbL
+ Ddc/A9GeiJ>4eQpGC(,Jaj-p].=3<?"P$e3m1ipo/j=`H,/+c)g"=8-lk03G49%\E9`tIje
+ QUW!dFCp<j9koMiT_#^R2P;OO/Sp_9#$Vki%?U8SYjoCdUO&lm,dF@PKq>G/=ETbrNl..#l
+ sDS'_\<MdhQQd>kF@Ge'gHQrV/D;2\Z8!l7P5!J\*nVo(>i!kHSi'qd7ci.fdp1(4l+P;N&
+ fO5g:4LcLNp6!5q`:"P.4M)Q:kTT5JE@T1cr0!2MR]M]hnc;V?fN_TU/"s5T:mo&%l60`WY
+ \_BScHE%XbJg%h1aWp8K<hdldc'88k']Vs=BATl'&<[[lAqMb\%"]8BTa<)=LB=;#Woui\t
+ heN3i%>@6\4KHt6AT0EQeT[XII_,VO.23Pko5aK&!L_*g4T,<S.g#2JKgeO\<iOrui;E"*<
+ V)j2mlLNKJANMC^7s+&AT4N-<2DgDId7#*H5%-gp9IRH9t!7qm]DNIJ(!dL!6L5;+piW`W@
+ X=ul.S^GGt%Q=#U"t$=<r[JS#f_.T?6,<!-j78,&+]ce1?mK8P`:boOlTj6NB]7_BR+':\\
+ GQZo#KH$buiY(<Pb"8p+*iSeqAkqTT9ga\Z(bV5KPu?J>c-+q)15$B&Hf-'N\JSm8IfH/K\
+ C.jus3fN4=VV\2-7b>sV;OFC[@8-0J@amJCdbu'=hO"=jj0`]fR/5j;fV:&=0kHSk&\eorZ
+ 'G`.WObCKgo@/($+gM*,;-9WSO!OYI]4ZRoqAfnc]I5=/asWEgY7`nRpo*hS'L52d=JVB].
+ b-g2FM@^oddL*7@74OdJt>f=Z\ndYV5`oH.K*9N&3:L@WTbk.\uPOd'A<EW[.LsF5e'WmUo
+ _lkeP4#41,IFWY=lW=!JC`474NXFYq+MQ*Rqg<Q@@-]#R^ut'_bR9T?.T0V2G8Uo\1-H-r=
+ %(ZV#@<nXiB?<TUtg^N0DY+,'k<T1\HsZHK/GqO^EqGl\$fK`tY-4L'lAO0=^qo)]1W$4F6
+ ;Lf,*?rq"CTUu/oeJrIPJGPY,;%gY^!;ucDWl*i?s^nS'K>rJYV:PX+@Ig<ak:fuX^$W[+;
+ BHMB]?_uZ$!!7tn!r%"DWMqBHP<DVtr^-Ip$m943/9"rL3`i4/rq"niddL`I5so(3#C0XTh
+ C?g7QDXZA"mNKPJ3]g45T?:q.SIa+\o^n!r_E;1%3RVY/C:h$-Er>9ggF.$6:Cl+-nGqY,:
+ `]aa?gX;Ds@!RJ0:Mh5Wf\Trm(Ok>l&jX+:'AH&<F"F2-RtEg1@:Ss!@Wp"sArC!c`N]WGX
+ 321NB@nq+p7!2ZQtp(5UkG'=dAman=*ND?-sj/<GsQ.fT%_Q_`Ns!!H/$+AoIES>T.AFl>j
+ =mr8>*-nLIYQ]rDii]O8So&Ul7<Dcl6^b\T*;K8;sr/((#*.S;%$^c3=`HaMQ=3(;0qOJ,3
+ IhWYP2FGH/VN4[c5F6i*"7R1^"cRjeJVW]Aqi@T2li;E&@0&=d7&^S0cfrqcjo(tHq]13Z-
+ nO<)EY[b?5*c#&JQ+sE!LI+nC4qK9r:ACcDg;>sTs0&oT3&%FMW]*-;Wl_!!Mfu.$Wupb($
+ BjaZ1PXLJ3PG5@*<d0kP=q3dVjL55+o-1/^Giq?H$sipK#oF6i+J,^hXW"Y\:.ro/un9l1[
+ @AY>JE;U6h,`Wo?&+1Y%o^9>CE+G`'?>G!-`3%Z9/3-iN`Di$f!@=LV8KH+&/hH3+*9%YY(
+ fHV(3N.\8G1W+u6aoFM#\&IJnjiKGb:o63u&%flYOTs0&;VQ4r:YHFnba3o#/J/9Ubi/q[4
+ ?)@>g#GgM_!&%/N^cN(-GYYkEFm=>%UB#ge'Gg2`91nkTnXL+@aGf=>q1/O]+pn^&l9d%mP
+ Er(pp:l?Hl2J*%PPeM_?j25f]J`*qF-b.s3hs_U$MDK`\kdrr00^NY\3XO(YC0HNF;<-tO1
+ uUa'%n$hH<@$3fq^Fb#6b)0'Gg2SC_b9!1o'Z5Kl'haLKr<a,!'"Y@K;3+K`ukn>eJtLq:E
+ A$HJce)o(8<-H9en+_ECa]3)E_m+3RVGB@b!r%k;Cr!^3PgpZ%hn+Qt4)i/]NAeOd`$IdlM
+ f@RdfF=ZrKGpMS@Fj<k7aHVmn\2_.iiBBn-0VuJi]_R:rF6b+QO#TO0ZpuX)!F]S%&s7=Ck
+ KF6HX=-"r`K<OUDHr(1R!eggUZqA;Yk"iVh9uV+pf:t"a!B%Hpr.G)K)2/7loMqa!W-HV6^
+ ,+P=A6\MZ\ubeYZb->N6"'edX]=n]%kR23^9Dh<'6Qb<C=J[B1C$Gk'Gg2k91j>*0i(8.g)
+ L'9Pf:_Ph@inc]/R(/!q65E"oPi9`H*+#?r-*BD7q=^Jf`#($G]j[(@^4>ESXTaeL>qH^Q7
+ n5Z7YY?BHH@>G_O!9,2uhso\:hkH<Sr_5H&.="^i4%"[kJN<'(ido^A>rioahMM/3P@kQ=p
+ S@0%hI4`KS6IW9n1Kl,5C]H[2;+$QV,9MnnWb3,!];_cV*E?5!2Co`j,qQRU60L9+J6/ts-
+ k83$`Y^OBbQ3[99kmm8_$O@+I$OHT=(!l^.`ZF,nD8eY85eJKr+DZdjH+IUa+8J]>mrsWob
+ :A)[-nHM,%ob[Sn,I.hff,da=7ol^cj+e<$4FrORSm9<k#o:&f<&6rl`[KE5;fWPq]t^9hM
+ ^J1^tgCi+E!m1kF=T@gki*W'%p*.jl*M?F7Zh6&.e*?$MDK`\k`D=oDp?k+R[QT4QkC18%0
+ 2@<HHXc)]+g4c^AofPC-L$`UXA33XQ5t_/L.\o]ai=Y&=2DO_rKF^TOSM8b'FA`N+;l-$i+
+ (Gm3q1+iR8[+:'#cnXNZfSUKD4[]7*I]&LqcZb$9b:D=?36#**t5S1T(<$rFPCu![XmD?<3
+ X'/MP@UB&BM;hsW=3L.AmYO:$UTd!KbYp5l]67miY,mI9ZFB:ZC>McmQ@8;mS@mI*GY]$s/
+ !/g?/.`@gWd)f"IP<qa_Z&\hW5eM^8sZ'pR?bBu]QdQI<NLsr:DAs'Ka!&QNr;`=f(CgICo
+ bRFCF]c/(VM\#]W1^8Gm0??Ka!'<K8Os.[7dR!=R@H@^UbfXqX&X($=BDV*nG]"o0=BC#7:
+ hAa)akLX-i(Brb7hu_VPX;nqmK3lE]hVcghEr'SQ\lAX&'t<itY&X0?g('6X:>5aPQBeK_6
+ \?B%!EIV&ZOUTd"VHpGY5)&[.T0!2E#fbR<TlRL45/p]UH+4Q<$eUtE.7;,M"+AeYR$E@R,
+ ^]421*Yl+`A*r!Nq25T("n%#s$Jep8EWYd(YX$Qo;)(jiG&OPlgT"h17;s=3;lkbs:JN#R'
+ G^tChc2C,7Y[HqMA$QS=EAc,`PZb;?PEE.D6=r#A)@k.'G^tC0?<`%`BX1?/7/e^CTS->&R
+ 8X>Xg@)D-P-rF"TiA-MKqDbnKB*1D:Pr)6KE\]jgqYnn-!3pYWr3eSr.gip[?Ja]KnH]/aB
+ LBnp,N"3B^VrGQKTs=<N-c="6q`49lBL&^P6ngWM)sr**LD&n?RpKa!'BOG\=tq9AHh@D,H
+ OJ%`K=GI*&He6^a4jl\#<2@9fpdkV[0/7.+)]VfU[DHL7gDM^k*e<]@uo(*N.)heHIku0(o
+ aiI$>ENrC[C=cE#/jB$l</ZG^e0F)<-dXaY$O"r1Q0PG[Sl]9i/KW:6eR)ZhI`gC8$6J#`T
+ VJ_V?qjKQcf:&s(%5b/Cd$.C8p?UDTg0PF/.bp'HtR*]i/Zg91tK7N_X)h;(\Bug&IPmr_?
+ ,;]XGZ0T'W_jaV+[*:()mrG?]UKpTg0PF/.c=o<Qt%fs"Zr(OY/N@X>0U1i]>m]IYn1;6=G
+ Ef>HD;*c[9?7GTts">7#FPpQV;E^k5Hc+NQaH@\,#I\r-70]s=DS%16=>#Kon?i'AbB&7f.
+ .]fn/&9nhS2Z#.+%I[NK1oCU[k:6Qcq^jT'^+Q3*qQtQ$QLVskj;H*NTZcD%Tl;$o&'Y#e'
+ $O#6)(%ZhGX(0']l(6SVV[D6aIZOX*7:Catqk/glQ7_DShFI=_:X1aECp>$.5=gA&U9HnuI
+ 9slTSN:?3f<5udUeB7)Z4./1X2d*`FST&Hgl'#N_:M]+4T"h((/L`!OerS"&%nso=n8m5\/
+ 0i&Jo?g0H2crEVMHVJ4gRZ7Q0Z0TZP9ncKa!'HNJ`"QG[d%b+5NtWZbW6<kO]&U=UNrB_?.
+ RJBbg6`TANS[O7(P)H.\doN^fQg5>HdA:fnk8?AuRA+tG1=\TrgP,2J,m1jc%SFkp&HS-!o
+ .YWsW/<\[C!IcqlZj!`_Be"EpVH@YoQ"n"]cJP_0_AuD:"ClW`^h7HjpaIobkHBe=e"n"]c
+ JP]IO@\.LcA"7cch5e/rb3YnU#2N%'U&oP5YWsW7To+-pi"$$LpX+kMm?7qc>G\sT:K67I'
+ G^t.VcCqsDHrKP*3H_qBT>Ae0Bb^m',A"jK`sg%AYn+][SM3q>'9L!nNONc<OB];Yk`UPr'
+ U_V6t(YN(ntK2S=Isp:38>DXu6))[SD%.+0%RV$4DO+C_cR>gV:uIn"UVOY>7&)lkS>LI]*
+ =M-nGoFlVu+"c#8UYO/!GVN]goLfMXk#I]*=M-nGoFJ#$PF:ObDC[M(`?>Zbl?fK;;TU=82
+ d.aWda!b(Vs.csmEZB'5MX_=_AQb1B#8Tlu&Zi"&3>#8<D/7):1cficI`T(W)d9G'.$<s5$
+ aNmkZ"bd+H,YPOng9jRhC't"?s/=,=jr5#C8.UoVX$@%"$\V%j?e?e[ITS^m<n*A;0IUb?*
+ nRLBj[Ui<WENrbkg"=^@tS[VUbghUXA<8U&=K8%Si>P3-ltl/R[_mkDDq;=p4huZ5,]&_=*
+ ;gor7X';5`[t,7hk9_-$i+]*dgfq.+eDIFRMiXo:#)j?$EF%?#"M[HJP:bc7W$t+@I!GR-0
+ 5hS08qD>>!bA@8PTL\tAc!7d)g[F@p<;HFpAngJK$jrU-;?*uY.=Zr+e)YIp#,:Y9B$-$Q'
+ !E-&0>`5aaPV+G;\=/iY!g?L?'Ip%56!/T*6.d$QF-\dGDd?^8'=.2jl7\(tlZk4&cSQ;hI
+ >0e^Q"[_@t<6V[\9jdEG=qfSV[q10-A@n_NM9g$l7ChjP7:%Do&2ITm1!c@M4lje"chX)6#
+ *\GK*[!YU&ILI=(Q\,Z@=do^VqO<Z7O6=.#tJRc@Y;d'TLXj"D?O=!DP*iI:fm_4dS7,t\o
+ u=4c_<l$f2nFN[sHk:I"3H_,!,\(*oUC2.4c#o"'!KC=1;MKN#(MnT4fq6.Wl9l)3,iOW!@
+ X;<sf=gcU\fB>e%"14Gst\3&KAt\=M6(`+M%2bP;=clb$+t+FGN:R-3,,A`?k"kZ[LSKAi-
+ "a5#ZGG.=06\td7+&el*P*ck?*o>V^W`3X,Sj3=uDo?A/Kikla%e"ec,ogg1q8n!;?=fPr&
+ TDir@GS]Zrgbmbm^0T."`90.4VGn)r-a+4"#bSLSk5##NVi!F\Y-MPY%H^lO*[3eo&L`ug+
+ 5cW]@=don7)_:Gr8r7o-JEV&ic9\IQE/';IJOeD8@=f-,q(=+$pL\#T!*NQN-H$'C2-k;]?
+ 0,*Fu?k;pg?T'2!B,YH8L<Zd$B`nR-.+L)C=6.ld!1$eR6=$epYJL42aR0>*0loF'^:H&3c
+ /UR-/O_)^-7jlcN#J1Dk+#HC4JPLU`7gJBM!UD4TTUoIj)j/.aRdU10]ASerdq7-eS?Y:uH
+ *brS4>_F%.bmd;j6"ktC^hH\h+3c&\=n,0rdDlgZU\^GathRKf&WbBN)JjgDe(6kG]=*A]R
+ q#drqpWb==BDT0p;u_%#?cZ"O!:frfMKtBL&[AG^bo:[^RsYos6['+anrQbI41JNJiEWimQ
+ Y2f%DQDhG#(ZJs:;o=;rpV'#+F9_lcO>F4GtI`DTCWWACh(#oebhig?F1C^#aN`:R-0T%#)
+ LmX$Wlm7)GJ5YHA)'lLPShkfO\C8kKIu@U8>(ZW-hI]4<$3N'<e)GDH<nsS!/gm;gd<:B,/
+ "ebIeVYRbZ]^nhF,Y('p2g<6V[`<F>87H6TXLDsIOY;0bl['-I#=;iU5319Yu,9t4?6de/N
+ a_?-G%'c$<k?.qrcL>Fo)J!RpX]Vl'kc[>Mb;.mII/oe"(WJst1K`sg),o-$qTANR0Kc[3U
+ ]@^Lp(?eWT@it]+/sdF;19[%)5@j!n94<BJq3m1dk0E?;SjJLfhcO_R1[B11n_k!#Pj/0"o
+ 31e[Zq0cm$4EZ(YH!t&n`$AC>@L+=N_'FbZVpN/+9(c`2;QMg?LtX#CoCWLn)[/MJP^Vu`B
+ 4Yqgdf#0hRRlUNksd=Y6Tp1Is@tgGK=j=>b\*CL"2M?K`sg)9.K(,[k9\UXjc95a\mcMRA\
+ *p,eG>QXOGuYQ`.u2@/K%X@=_7#7`@L)pNt#mEM>n^c*_0To;:q(*WgTI]H6,hYGM,.7O#9
+ )I\j863;o8&Gs:kojP63VlKfHg$qBFqh+Kj5n:L7Men&.qG"ueP?g#7@Q,3Trnt_.g*d]FE
+ 2uhe"dd`)$VJ(f-.c(5/kC0s0mcO$tQ:k%V+T.g-1!ca^SV0eB]@2atb=r2?*ZNMki^JAdN
+ B4D]ol>nhU*ZDE<[fR2.\BTncVmUci=jl4eC:]Td:ZmsE3=E'UB"LB3iuKpFd^jeUN=+rX\
+ r7D<'I!bShGJ"P^!>E<qQ)BK5l3?pCZiqCq6A=\]jBM2lAPm\_QRJ@=]]p0bs;mnA8l/!da
+ 8)qst7DC69Pah?@#$?$CFZf=\4!)JUfUQ_:QJpcYWdSl]59-XK'AeQcEh2HQAiL3O`s;S?t
+ ?VoQ:um#?qH]ml_R=<LSoX-i'graq%4!PK7_hN7K#acl(/kcWorJ/c`orN%(!19VF*X=op5
+ YX%tpX-i(j5Fs<15Tc6WR:.dQ0BmrFNIVraoK\agF^@);,6#5I.4c#[o2Nr?IJZ.sr;#8Ch
+ ElkZl<O=E2Zh"%lCKX">.AXZ2p3Kq/.d8/<QoORTQf;^$]qs"<G"%q6+7L\"UroG::]e9qk
+ )OumcIN1Q:k%V+T06XR&?nH@Ia9k+gNh@X3!l:f5u6,=<LI8\!KaHEd7[iH#Bn%Y>P]8KZY
+ DPo2Jfgp6T1(cL7B:0P3!'!TLdX6ED`)\9M\Imk7NF$\V+_eb87[0jQnh^8X6,fO3.ild=_
+ 65XNV9?^H%$]6fFUb9\Pf&:PX!gLp$6NoK$h9geRlZ[#cQ4,?r?EOqjU\BJaFQ3m4C<_L(n
+ .4c#O?W/]*o]b2M_rmqLSWaIODPcbM*Y--+c>naL4tN%nYX$9X;8kZNftGA*kGPU1Et(TVW
+ ?*VI%`B'dZ!?;Zqt&oUT+i%HO2k8EPOsoC^WZ;uAL;nDW5h;JRWq-F[YoH^bIj.RkM("`$4
+ DOB#?B">r:A%FpA[l^FmI7`DlrFQ?4aK;;YP-uf7NCRS<o#pl]]0ei=X,Q`:&+mWd+2aG&I
+ %RKCO:WpD/eq*os3dk^L'1m1o.EL/V1s4D(U\B?QU*=IFE3ne:U'-?-42.c(cm=-LpK^Kfc
+ 5i?Ien-A;W?A;#hchLAnt[Ri4(A_@8$fXXD-k]H?`i*N7+Ls*G;3&k.?AP$<]OGUA_+tZO>
+ e>15RVcM'%ld'B&RD[Q99=uU]b@TMMAR<]s0u\E0LqbJi/.a.8="7L`I0L2J+?`V5'YcH[?
+ kesn^>_GpSXeS_>imn^bCmImX2JA,'G^tBc`<FG_1J9,,=P)@klh:?pm`BXhA!>3d-^C00:
+ 01tI[Tu3Ohq1Yo*H0'r6ZSqQ6%J1C+C>`)ot`76bFt[(#A7aUkcS+C\c)Fh<%49JWTY4(%Z
+ hGX(.qqMMt*tL>:D#Rp>OJY2XH;/K;kZMVjii]F;_cMSG.f![4g6`B=1m:Xc+0MO9R?1CV9
+ DRI2^L(KBYe0(W8NI8]+M[GijVHVdfe,Y"i%kOmF1=0N%DR_QpO1)K5<idFC<Fh34KjV#+n
+ `n+I%+oVh]*srC/7$`^U/mSh0?'KfM=gc[o4u_\Kig!)<9fg2f--,*Nm$7L&i\/%OTWgZu4
+ KDq_Pl7UWMb%AGrjIXfo=7J;(Cs6_.b0/Wk4O,I/Fh?KK2G_n$m&>%cg'&/V<<]>o*8kFN9
+ CXqTQk-J;haZ,19ZDD-3n.n`-kKb+:M;OR-3.8;sUDDpSp?bfO.>7ld=^o8O55FZcg#D]f+
+ h]eOo@5?(35n&-apibk%SOc&eME_Wn1'S'C4Zh*J\5.A]mS3ks=W/F9d-V;a/===>^3"p7l
+ LF80_D#EIsS?_;-gX0:f[imC=<dH)"Y>it_-nV>%iCiQ,P5i@&rWHP</PF7h^o4F(KORbur
+ dCBJA\l91UmnW-re,<S7[HR!l_-8O3?PF7]][*REB@<TYd_d=AY*CUsR+Q\1N,rDRSt8o#9
+ m:ZHf=\4!)J[iZ^XD+/@=c5k4VdR9pqq`[LIiUFeu^g!gU4VVG^Y`]SaMU&I^qjl0UGGf(P
+ N"oDjH9+ro,RX8.UoW34jNp_<A&K]u:)<gmWAsqrJG*\I6>_@#:P\5iD<81!aX=L#U)_5Eq
+ e1B/$oTohb/_-+EJlONY;.c^>N)K];%D<YQ;T[MP0#;f/0!oX)c`Y^A4f\`ui@-@buma#Or
+ =iYb?h=*-*^GqIZ/WMt?;po>o2'G^t_5>j5^Zt\?l-V8hF2m,BOa^g--lR_Q=,pi</-#tr*
+ YH&#jc><mr"P[B#o/uj0E9Tq,/B.'Q2]1T:]!$@;P)l0q'#c$mXuD%<Jo-m4H2dJDB1bs_@
+ &Z,l^gN+ne&0.OP[kt!X]Q*VRFea>F2_K`VC3u,?sei*CVi)Ec\CZ\$\#%fo!$e$G:pDDX-
+ ?:1l$b8VHLB%Wbt[/&V*\UA!;i"<Gm4`C-p:$$-doXNDp&99H%'%C'sCN`E;hOsju$,]-16
+ ].!Wa(W,BY&UFJ/7C$)5jr1JRj8;YLt<;f[[HQPea0YIU.B='s)cIj)?i@=\CtULKh`IWr*
+ i(^Zq;"cEedHD)B/hPMRFXOGM\&M>_E/'`f`\\rnn=<OPKN9`j`!sb,_O-(Qb]=,juYW(ch
+ ie7`O$a,ghPjFfX.jG!CEfIp;61n(io5s5[g"7.E/N<YXfKRDb[TD_]ie7`IX0.d^'^hJ2_
+ W;F)7:Cb?R\sVdN>qafc]I(rE,`8%Ge]mVMFT//C3?FZQb32TO2"i.;Z+LD$&&P7WgATgrq
+ :9.8C*CUW[_1]0]DWrB^niO<0PTYd%aiP^fI%2/H3esLVa+DoQ_1taj9.>YRf5cC\T0e3o*
+ *7<hX#7\\s1hZc-90<`)sAOOgJ"BAC!JklDE=Ks+91R.FC%:[qhH::]fY19Y>7:C6W5M>O$
+ O5Tl%d1!f#Is4FGXVpL/W^Abg\SbT+>dM"iaCSF/n$7:cgpiF0u5L0)AeUi"a?SJoGa\NNL
+ GBlcZp+#4XZ=V32:7LFb^Roa>]oo>/:bO`+bZd[_*Yk^L?`L:Hr&OdHg+0*#l]h%"`KMN29
+ E<l0@k-X*e>ZA`D6<I.#l:O&W;T3^2dT('k+>Qs`6/l&or@uJWM^1(K^Z;>.m'S7.:+%j@0
+ 5@>ZW,/TG3rJti=V+Ar>FLB-1RD<94a%%.hmH05%sH+H`%rts00&==o)^hebT4G@3)gQ~>
+Q
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.svg b/testfiles/cli_tests/testcases/export-area-drawing_expected.svg
new file mode 100644
index 0000000..639e72b
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.svg
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="87.435127mm"
+ height="72.5mm"
+ version="1.1"
+ viewBox="0 0 87.435127 72.5"
+ id="svg10"
+ sodipodi:docname="areas.svg">
+ <metadata
+ id="metadata16">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs14" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="640"
+ inkscape:window-height="480"
+ id="namedview12" />
+ <rect
+ x="-1.7763568e-15"
+ y="-1.7763568e-15"
+ width="50"
+ height="30"
+ rx="5"
+ fill="#4169e1"
+ id="rect2" />
+ <path
+ id="MyStar"
+ d="m 85.96,53.703 -20.799,-1.1756 -12.76,16.461 -5.3089,-20.138 -19.604,-7.0445 17.518,-11.27 0.64404,-20.815 16.136,13.172 20.002,-5.8198 -7.5458,19.411 z"
+ fill="#ff0000"
+ stroke-width="1.5"
+ stroke="#800080" />
+ <rect
+ x="14"
+ y="6"
+ width="53"
+ height="53"
+ fill="#ffff00"
+ fill-opacity="0.7"
+ id="rect5" />
+ <path
+ d="M 41,54 A 18,18 0 0 1 23,72 18,18 0 0 1 5,54 18,18 0 0 1 23,36 18,18 0 0 1 41,54 Z"
+ fill="#008000"
+ stroke-width="1"
+ stroke="#000000"
+ id="path7" />
+ <rect
+ id="MyRect"
+ x="9.5"
+ y="3.5"
+ width="70"
+ height="60"
+ fill="none"
+ inkscape:export-ydpi="600"
+ inkscape:export-xdpi="600"
+ inkscape:export-filename="export-use-hints.png" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf b/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf
new file mode 100644
index 0000000..07f7e13
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-drawing_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.emf b/testfiles/cli_tests/testcases/export-area-page_expected.emf
new file mode 100644
index 0000000..1a8b98c
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.eps b/testfiles/cli_tests/testcases/export-area-page_expected.eps
new file mode 100644
index 0000000..acb7604
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_expected.eps
@@ -0,0 +1,443 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Mon Mar 2 08:39:48 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 3
+%%BoundingBox: 0 0 340 298
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 340 298
+%%EndPageSetup
+q 42 49 249 207 rectclip
+1 0 0 -1 0 298 cm q
+0.254902 0.411765 0.882353 rg
+56.691 42.52 m 170.078 42.52 l 177.93 42.52 184.254 48.84 184.254 56.691
+ c 184.254 113.387 l 184.254 121.238 177.93 127.559 170.078 127.559 c 56.691
+ 127.559 l 48.84 127.559 42.52 121.238 42.52 113.387 c 42.52 56.691 l 42.52
+ 48.84 48.84 42.52 56.691 42.52 c h
+56.691 42.52 m f
+1 0 0 rg
+286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l
+120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359
+ 90.914 l 252.969 145.938 l h
+286.188 194.75 m f
+0.501961 0 0.501961 rg
+4.251969 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l
+120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359
+ 90.914 l 252.969 145.938 l h
+286.188 194.75 m S Q
+0 0.501961 0 rg
+158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535
+ 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715
+ 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c f
+0 g
+2.834646 w
+q 1 0 0 1 0 0 cm
+158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535
+ 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715
+ 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c S Q
+Q q
+82 59 151 151 re W n
+q
+82 59 151 151 re W n
+% Fallback Image: x=82 y=59 w=151 h=151 res=300ppi size=1190700
+[ 151.2 0 0 -151.2 82 210.2 ] concat
+/cairo_ascii85_file currentfile /ASCII85Decode filter def
+/DeviceRGB setcolorspace
+<<
+ /ImageType 1
+ /Width 630
+ /Height 630
+ /Interpolate false
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ /DataSource cairo_ascii85_file /FlateDecode filter
+ /ImageMatrix [ 630 0 0 -630 0 630 ]
+>>
+cairo_image
+ Gb"0W#BX56H/SW;NF2j8'mgT%fW-Fo?>[`Kjj-sYf3!(&ekM#QR6&W*m:?0DCN%d!log@ng
+ IYG3j4uA7=i;XaU*TF6OePBG!['c?"A'.-5h*V/*(Vb8Js_u#^@shccMZSk4#tuX3"&?"T0
+ Fu@k.*"V<4i84P0\\XFfcXDRn*BF%KI\$/B@.ak%je-g\s&182_86Sn`+j#&qE/[_f3IqRJ
+ QB=p4oJk'H^?f%/)r$d'kKJ7M,Xi>N%2+K84?\;%j%888hSY+`'"OrB%.CFC`aUdeeO)@?i
+ pWDQd-L;F!_C(qGdTs+N[)MNl\-nKnE7Ub6o$4@uU;-:>__?*8C'GdjFYQ0h)KnX:j/:aNc
+ @Gr+3$QuEG=La+&!_@&?(9X@8!0S7SKki(fJ>>YCi>N%2+K84?\;%j%888hSY+`'"OrB%.C
+ FC`aUdeeO)@?ipWDQd-L;F!_C(qGdTs+N[)MNl\-nG@6NZD5HjR?XK+!WBP(9X@8!3A3NqY
+ YD=-\hZ%peMMa$4GH^=9-pBfK\hp^-CtdIBsEr[8QqcM$8TeCFC_6CJMT%\#llCDss-<nAK
+ A;+"8ZH$eJ3W!7p5D3iBZq@IJ$)I/)n<nXlh&'GdjFYQ1cHff/fR_VV_DiirRn`IG*e:ft5
+ ^_?-t(X]K,J^T\:t?^iSFZeZ"CKki(f!,LG;\`:P]S_c1$@#c<nqa=lO)@?kfRT"QGhQ*kh
+ B3r_EFF9MO&,AC'(9X@8!3A2gB1=8&%6M1=dZMG*`.-&o;-:>__?-t(o^:t7(Uf=,<`2ar\
+ ;%j%Yib=YdpabBfVt3M*q75)Z4n(WTs+NuH$e/m(^h9c8MSa+.k)kt>XMp#=EA(eG3jqUa[
+ umI$eJ3W!7m[n0dX!>[]Q>broO<75;S"ICFC_6CYm`!3UXbuqkSbq;GRXmY](&*"^oS:gC4
+ PfmRiA#/%knM.4e^k@0'JOG3_QV_M4W71$-ceV&oZ\'GdjFYQ1abkH(oN+tG+&*qFD!"bhY
+ G-nG?[%YP5U/?eHRHr9ruKki(f!':\OXL)![EuqK[TWiAEK`tl)_36B#(A@IVZ9,a%8O6eD
+ )@?kfNc5Hp(A;!D-,kukMd?:d.4e^k@0,##kkHq!KtYamPnXoJY+`'"lo9*'W@N[^LodCkj
+ i=7&E".L)@)q6$/f$A3oPR`2;G^K*L;F"rj2d?/Xqp_9A0o3'gFF^$/6kPN!SDDQn7&j7)g
+ 6DjUn\/:[.n-0=La+&!jL_KTg^":[Z/7k'GM=cTs+O`#iAg3<nOWTHgRo1TWiAEK`tl)Ylb
+ BI/F9q%.k.b7*FIsua/6([%>=sna72)1n@5^cDEfRXnr^hM<`2ar\;%j%YiGKt$bS.ZD-JB
+ Bs1^JkYph5/6X^#JET6Ze151]A?:dFki>N%2^lB**k6Vn^m-S*-$s$8&=La+&!jL_GCNF%p
+ )tqR;abPp0M<i3ZY](&*"^m*g@F+7:Fs@sp8dYn5f2,QLG3$:s`up0I]$"+0chbn&lmjM5/
+ 6kPN!SEO@Dmhq=)g+WN<n05]:QMt(fi*6pa0Lk[_SS/E(4[ED]e[d(K2"Bi>hH9,SQVo3fS
+ s\u.k)kt>XMp#fQ$3<R0F7>d:mHO%;XO/V0]Z-aI_3GWUlAh'GdjFYQ4#L[<I?k!CJoE]s(
+ r(s(@$,A2ggW[SAsTqYY^=fG#+(Ts+O`35&t962p;rCV)(P4',4^gY'(0brY>p#B.d`=La+
+ &!jL_WmV22l0:^E"$QE-E]B/?uFsD?\-,k`&n,'@=/6kPN!SHr9Y,Uq<02IYD=(0"8FF(25
+ BfE?dCk)IW$470m:fm^@SCnd(@Dd;gSJ4!Q[VT]H^<^\-cY]4tm(gL3+.L-a2&$gV*G8^$N
+ ]2-8H>MbuD<'nR$470m:fm^@]X)*?]U::uULP`h=H2`WI3lks4jsr(XJE(>%>=sna#i$'a4
+ n,qH;oiW%;X<r_F:mPg$jFaQ1EJREu9ak_?-t%m']LU#-M'hN4lGJXea$bBlZqe$L(EHKLB
+ 5LfPtfp`-CTKU.<.%fSGbBH@Xhmk&-`7/UroT1e-JuYQ4#D8D=;24T<4SG!l#0^67L(n[U6
+ r]I+)F-nG?+%cj]J.dSjq_R?SB.'UCJU?(tbc1N$Oa"e83K`tl#_36AXMH6U0)Afj4SWslm
+ ];OGqc=`bW"bd+f_8-f.9n"gtLH$`!CZJ%fiVt-G,Fc;^@TCM_l/@R(5[a[qE9Of'@E\=OL
+ P9Sd?2(`Gfs$@_$X,pW,8u,&@0'JLkkHocMI"ecX;&*#ZB?Ehp.C4jK/8u9H!;'(-nG?+%N
+ eniEhB98g+$o@UC/S$MI)n.E-&/RTLM1D=9'*V3O6Sr?^84;`PRA;kgTudR,,jGm?gjOc:S
+ E\TWeDI3-&Q76+jAcIWc)<@=KTBmCs(">:;Y;&NCI?J-AFR0/CW"2;Ql<_VS=qZ`L@+-p'>
+ BPn]#ZK`tl#d=VrJ2!_a@j&0='l?-^4*c!^?`NN!SXBR&8[h0;g(4ZS/%PBRD<gE+??=@'o
+ =\4ajF)p*e<RRW]JO!WE=E+2R!sZ05f"G<?Co_>%.;kA$Q(Hk%57.e6K&^c%0M'_gS`P$'g
+ OsL2F0.niX?:,:.k/go$4FY$'5s6P[RU#\VQaL:[oZJ[IT!s#1R]7b8V)5^YQ-46nbRWc6I
+ kAhSe\^,p.C2NlROCkpLZ?`Z]YA1U9FVK34XO16([@`2_PQn)HfXO;;Z"FZ?\MYh7U+"HC2
+ U*-nG?+:;/X<TM;n;=-!aDVGd/t)qhHQ1CL#A3W+WK!jEg1eN!h6Wn3X_Kl)gNUr]mUP2bK
+ KfrV!b*@NH=$Zbsc2Fp`@cB'MllanYr`n6:;q,aIOf!:G?D($q8$f62@Q9gS#FLkjg_jY^O
+ M&p(aZF<n5<3hYgRjflg.o*c?di_-=^r[A#26rC>>S"7^g"`\CY88dV*q'Y1@0'JLC@;R`'
+ "-q&n\V_kXJE)u[O`pXOrf;\@);(jdg[30^4-i8CV)X`c&Iu&:%dhKk<,P:=9',,hJH.mnZ
+ '<!UWti;I3lk(m/!_>d\@j--nG?+hVL+AhXomnn`!-RRp.Blb#h5tKIAAO$dS+/)K0ijof2
+ K5hTJpTcYd:>793<>6CXc`5.j9l!Ea='V<iGb;kV0gQa@EgPn`9G7eYj#fe#q"UduO@(4ZR
+ $G"d`O2hcR:GXadX`_),_I8a9?OYeI;!"7Z:4ur&^kgAB!NN--ZQ0R=O,FcGhEp]-Wd_d.J
+ TWeDI34j$*]V-e*,K0a'Mi^]5d"C[S2L"K*C\`mak<I`k@0'JLG3d(k.oW04Lt=G+0!1oT[
+ IDkI"@cf#=CBLB;E\9tRrNF^,t2nR#3c]7,nq,F;[86gHU//UO(Q%nFF(25BfE=$];Mlr,!
+ f(.!)=QY=_U]uMu#X-@N#O:e2#c/.<;ml]MZ7>3X;mL_?+]Ai5l]<=h1>`M!*2'.k)#3$4F
+ YK6RS0="Jn6%Kak*14fki_\8Z*s.k)):Ka$DaU#X<)C3!Gf'!J)uDQKW^Ho\gtk$%"+^^:D
+ V^o>5lQC@_L<"B[=UiUFTUr[ms;GG+;krQU?$4FYK_ag%1FQA<#+PoU=696FjB<`CY<`11G
+ $4FYK,=`Lg7&3`T(QY=[Y,nEYa\%FUUTa`g3c]J-5sDI:Ic=M;X%mjhYeH:[F]MBC(PN%Ne
+ BpVo)RSP9mN^RVlWdUbEU3I9kub_$Ka$DaZ%FBWXjXo%KBS&O::[0UfSqF4.>!Dn!c[GWJV
+ =<Y\=n8+f?c\4F^MbC%BDJ%TJ\!$%E+:D!c[H"Rh$A.U0;2dGL0>I\jsL%Pn^&"B/V^>[VS
+ c:=9)):Iq+$q/8jaEiXp9:KC2X58)'"S.k-(&_?+]A`9["(8l;Y$M\j_B/NWQV*bI@:GrmA
+ 'Pd?Ois!TDuVbZTNB97t]j="gI.k-VpKa$Daak,Yn1uahh.NL]K<U24%.k/W$c"UnS8HHOo
+ @0&?QoBI<J3n3Ihn`kBNr0N9B4k=L]Mt^"c]!Yj*-0Pno"lNA*^=`^)B[C&'PNP(f<`8#IS
+ 6U8\Q#o`>2[Tr.WOMTG1?_&gc4KH8#e*i4Pd$=fD^[.:VquaQUp/*)>s*:^,#8QM);27bS9
+ _33n.Q-:^o:7ZB,]j(7Al#U:6lhL.4uU1e^DNOT6u7-!c[GShAHML#jE&n`eeK\)>7-0m*0
+ FHAgN-Q:fm]mS_cNc+9^\Ho82tMr'c%+h8naGQuqrJEp:;g_?+]Am9S3#9gGkQ+J(JuWRUn
+ 67Q.@-bQ@%I,WQ2>^o=ee9oXAlkNd-I;=g8lSX%5fMM+<)!B>46B6LqO^OX1EUg@[Ll7mH,
+ HiDQ0NOA)J>EbR*/-)Tnm$JFSfFN0o4D4ZCXOBf6#eQ54]oo+QPnXoJ5k)Fm@rf4<^IXD$D
+ jbNtF@s(bCcAZ1>:3`1=tEsLA4'c+3-BCkgk@np7u<#FkH=,7elPaS4uJst'GM<JJ=PFR.G
+ dp/X@J-qbl?sM[sU?aDIcDsR*emZP6*-`J7(@GF^i")^/U.)moLVglAY>c=&SD,^/_RE\j"
+ 5d_?+]!@)u^%_o1RM'Q1%K-t=P,Ka$CM#BEi`9_`Q^`6/lH=*6a>OZaL`8J);HP0Ql*UTa_
+ <3I#Ru_/(dR6cGN030BI?QCek1naPn2-<=#@=9*elnAK@"_1"rd&J%nR\Zq<lB\uci;G^Hq
+ 5'6#`14uQT=Uu:O<BrG-Zr0'BDIi?_:9M:9;S#ATLVa+3jNt0."s^fJ%hqf>E.rC+KcXb`Z
+ FO0e?HZ\$SYQBU@0&?.pui?CH%&0m&FWTF<U&AN[\"71Shi%L_IoJh/-'$:El=cXQ+F_TTb
+ ;lK.k-qQ2b:D,0i1sPNZ:'lfO0YFec!GXPSfj2HEeN*2mNV!VpneMOj6l,TWeD93I5A$_$n
+ )Uqhhj3@>%lf8WgW%@eGFddY/#h$4FY3UB_kt(uSE*O*I$)$nEe)LVa+3jOf$;#,D'MmOb$
+ +`)EFX=C4X>iQs,V;G^Hq,*'G6JAL$Delguq8k<j$UaUUN]A_mUkun6&Ka$DUnM_4#%.0Oq
+ Vg+.5PoD5&nm7ba;mAYM=FihJ!B>,Zp%\e*]12N+02VcYl'*]EJDJ;PP(LOPnCWTro*iW]X
+ mRg5TnMUK8rBq7F'>#X>F*,-nA<<!jr+Zn>Ip;KJ<E3hmT*_D-,o2OUnFpl]O4dmHCZKkT-
+ WCD8r?j)=%i;2s!TDu7rhq,@kaVrF;OK>,`e$^\YP#5NGS$kM)S%n8ghjG-nG?gEq[a9R*U
+ aQ6bGM&k.9tr2mQj,V\c^p`'`Zk'Gc3DDnRpL?ns\*FRe?9Tc2`3htB["dXs?F)gPYR_?-t
+ 1eB9WW`cAC\'@0BnC=$7DoOtk!AL.M6"lP,6HY42>jH*+KDb\YpdA[rS0Y<IlgG,\)S<Xd&
+ (4],WpImL_aK6.W(b7$`/-*FH]mEr<UKC<RmL*p5elh]J;B00m"bd+fa4n5'`r-iF4^L6'B
+ N))j$hRQ5OY)$!H=Pbll+6ZkKa$DUR@S=62IDLY0+6LEZ'$;\fAsMYX/#hFNktj:jNL9MnW
+ )Kn4]XZq\<C,I.8#bN,mAu+i5duAVSkQCMtC]QVVl?S-O&.]Cfku.]HgfT6"'dRo$6sNnP7
+ p3HB`YKclk>K;Hu1@X/.O25PoQ7Yg!X%'Gc4eZeHhG4*$8P8F_r&?5ds@rKS(DZQ#p.CF)D
+ JrVFtrm!dpP(Ok$6LD1MSR<)R[`]J*3oEauITG&n<oqK1HDIi?^9Y,L`\TmmS'aefXY?H!!
+ Io4<,\(@k^Gj)W.;pU.p=9)qAL2En2/fkTm<N5lMNGM_9R0DRj['$rJ_p,LKjZ2o>G5^*,&
+ h#:2-P#4=1`3P8oJ#f_+;WKg/!#r0pWuaM2LN,?H=5mGXW@F5.4bHH%N6(j9FhkV#@^Z91C
+ Njm]9,8VlEnRb5d$mgs4s@Ab0#Uj$OV&Irs1cA"lR>8P:I%Glm4e_4<0/_ZVE$u,O@lXJ*5
+ n(b.t*S#lf=GWd)Y)_m=En`UTo0$4FY+6cYN49\4;J=M,Q.91YtF>@0t,FlN(g`T$R'QVbl
+ &gUF4r()4FppXV),$c';?a-RZ;T$)GAGVWYLZBE)qgTl948^UeXiC<([MaqFCm>1XTBG;54
+ 7>HpU24-K@HD#L6@&?\CbLbe@7^hB;),9ei-,UYT>[On9o%_+RYJpI5-jg?t,tEtH0pk(g]
+ "`J=@'!4<S@?4q@Sc^"WmtG5Y"$-:F6UWu]U,/FY#8@%ef?cVfO48Tec!EB!@QZ+8Q"Wh8r
+ C&qfn=:6F5pVn6=Bn>k31bm#*\5=mOR-"3#DR`P4^;)S66C1D6dKu;"LQQneJX#6H&@F)[Z
+ tg%uq]YcsZELf6tU'!%T6D.4d\4i8W_K/PUCh;Dct-]3`"WoYA\\^1BZ?!VjL9K*r,8:R1?
+ "Sd*j,`_),_I8c,,;Z(5X`#eAb=",[#l]*!1^gQ`gd(RB0!/m:g>,`Q\2c'62-\k&,fBqkj
+ V%>Q!AOBl,pqcJZ(Doi;C7QXl"kXR<.2@/jh*U4@STl`9;.j;HD6CL^WoD5(]AKofYQ4UZp
+ _tQ6XjK;MMZ>]G[#uW_nn4SCC2U8a'S=1'n?!A-cSq4R[CWtp$fDZ,<`7^VJ*3S."+e;jE8
+ osXGm9H[4G:[@!;Al^;N.nc/%<:*lA#=ckVrNEI;Zf'9ORr=3;M95K?81-G87:]>iistMP(
+ 74_I(_YWc_A@d&sKCKi(qP#'+%@@k`N"Ff'BbhuPc;;YX:T*dpHfW7B]k3p#1I!^d]V"^il
+ ohe[pJe>P1ALHiFKUO-*M8`:cM5M?9(X@i5)dcheMnL6!h#Msc<QGHhkGT7km\Zq;a<qq_S
+ Xp<SBSq"=Wm1=sTi4u=YB,V2WAt:84p>I;V<`4/n=&0,%&[(DJ%D#36IrG`&^k#F29ti[9U
+ /T$D5!0Uph7KBdLkd`lD7?Rr3m6SQ947i\E,*^@K;fUIGAB`SDQKXQ6a7\8WVb:/r6RNZ"l
+ R2\h'RgjTCWUnVn3\r?:eQo^)g@QLYgCkXSn05_?+]7m9O`#K?_jY`.pHc2<jaBgFF]mhQF
+ H\*Gl,k^k&t=:,TO[&>/G'(Xab!oFS"%7er@0/JJtN"(tr_Nd%uJkcs.-*BrHP8r>quVEtg
+ iZ_\59U9FV;33sjtLKoV4SG6KIJ%31TU?u/Cf6(GODdcRH!"QZJI<)t6Y=O]iTBbp2#2LU'
+ Wj$ra)UhRi=&E'"%\2>jpB*I7ognV8%_l`*W>G1\a1&,DQfo#_F[)e]ZE],#!c[(6r6H'-T
+ s3aJiC]"$BA*&tP6lpHi./X+/ChZ"7j%XY*6K+";V5+Zi@50B^siC[_HtU,j@:;>XBoNTkc
+ sln>qOMm?2p4M/JJtNW<5.2%17GZh^:Ybi,=aC'I2@>1EAT(2%V/e!)j+uXtV8?p`;hPoYL
+ :USeMa'gXQd2=9,3.Slfl,fQ',CIe3X^TWeDi*BLpYTWjdU+SjCiG_!X40Qm0C;M2hek^i<
+ "&+BRQ"^pWbd3T!N]qPbQO$:>]'Gc4u,=`Lg'Xgp6QQLX+#:M,';b%<N1+;Khh+rLl!?Ro<
+ !)+CroUnKYYNnCCUCZhoK`tlLfKk_<<pAK3UCZhoK`tlLfR\_\KtX1,acAX$!u)N$WT.n\?
+ r5KjSL$Ms!"Vn.!2bdkZ,!$:2g%pld0FoH_?)E6iq<*OKrrlgj@:<M!=B4MeB.[\$jp4:]?
+ ?7!^]P8dJ>na9br$p9/O)HT)mG.8!\fo2l5YGnf'?$*d0FoH_?)EVZZ!9<@2j;)q9]FlJAM
+ @Ap"$i[#)-pB)=jO5n,S.G@-Xk\9a]XVe)a(AhuO/m^so?s1CX]GU/U/D+5d/,$c(8k]e^'
+ ()q$2+UCZhoK`tlLo^:rJKpA9WJ2\l-!)mh)RMKgJF7f\3\HdA3_?)Fap9(Cb(,fN\Q_/VT
+ 2^g3W;eL9n?.]3A:4DU3hOq(Q9V$GX45Rgil7qjN&+BdW"^pVd*L#M8Clobj5PG.r:fm^pc
+ >J]TYik[-q7-`TK>I[DF`uN8GRI`W8'9.@^`*t'J>mTo-cTBC;E[?qmK)1;YQ.A9S(FkPHC
+ 4Wc"2$p.!>mhYZdPMN(\N4IEt@aEK`tlFi5l]<Ke:b@jl[]C%13KYaMAP5%17GR&!<K2J2\
+ l-!$d8Z0/G"m\K3:dpAf,.=9(f#+#>?^KcVX,pAf,.=9(f#+'iVXfIM8ur7hCe6"'d23HAY
+ e6")9dJ,-V[G_<j70QQ7D@Y;O(ec"Rl*oIJ7$c'j26]2?[HVO7"T6l)I-nG?C7h7ds:tR8R
+ 7t0k,hOq(QN#Xp`d%IU%FDpuc#C(m<!\eZmbm+Xa>HP6mk8rOj$4FYjnM_4#'_\El.6mP,D
+ bsO97S^T[hk722\qg4="2$p.!>mieqE0DIf';\oEt@aEK`tlFjD/fG$<sF?aj3,c)\a'<OW
+ :.5f'?$*\HdA3_?)ESoBI<J_D^U1noG?2#)*4gjK3j:%1:jg1Z[^?i!g#$^rT``bVCS_P>7
+ I:H[n%'/-$om?Ckk-fOg[$5PG.r:fm]e:@4T\:tUk)Oe6uN2^g3W,H(902^iJmKgkR*YQ0W
+ PhE<II]]SJcnj<rW%#"jmjR$5Oj"5)=*\TbM!7+JD!(P9#N4Z=iHCXo["$AqZ!>mig;Kf^,
+ /^S"hLE>@k$4FYjR2o5c/SpOj/O/k-cVR^D7c)f^3SqWEf;%D^*oInC$c'j:D3Ns2Cp>$15
+ P+s%:fm]ec>K0iDdc<2#l1/!G_X':0G8;1_b0T@q4S%<L;F"Jhgq;_#)0a`LWL&i^bZZ?5l
+ ;*1't-dHPok=&B.,<]p`2K-_P"-"oFUhl#C)!?!f5a-j3%l=>HS4S%m@]a'G`t3%NSng:tW
+ s;OSmH-4@<NX`:*3#V$;XUci`Bb*oInC$QsnRO"N.8Co&0q5P+s%:fm_f4*"l:6"-t^Ie#i
+ :n-k!S&AKHF(E!q\RdM[joDm36=9.kQHK[YI_HtiBjG+f7)%$`oI`Dqe'XgX.Q61F'BAP0*
+ =9!&5:>QlhLrJ,h9F?,6pQ?VEJ7m^hChmflC[5R4Ldb=Ka_-I2FdDsP"$AqZ!Q:t:DLKVG1
+ COUpUO1,o4hrif(-k"!GHZ9RidUTIRp+WRIcpg(Ts+N+do`rZoZ`e9D/E4L]?(RH^bZZ?5Z
+ FH%fCBa>DO]i8Y@4n^=8ANpG_X':kgZ_MX3^7(k-1t)l?0!%ciZBt@0,.N9@Ln<dgL3*3k]
+ ZQf;Q=&%m@]a'G`r(C+E=#m$V=`X_jMK])9nW4@<NXr4/-5NTE1lm'a;rZVH]+H@TWV/:]h
+ ;/6e^\F0Za1%;X@jnj<rW%#"ird<'1&`?V]pC29<#:6?WEJ7g8]ORtl5:"P:=)t/oF7@kRH
+ K6<8t-nLJ8)J[hag`mE]"[.gj3$B/:=<M<\g*>"%Hp*MQkob7K=<K'KW`i^+g2pD7?-Dk:5
+ !4e"7U^ine'bn6if),F&pGkU@qp,sq=t69U9Hm<WN09(pi<gD\$"h=0]1"RDPOF$Ec>rX7(
+ `&:1qW^;5G>;H'"D)Q]O7)f'o7(VeJ#+L!IW]<pbNU"88-9@)r09p;5-Q=YgOW')heG.=&n
+ c'QhO$E\>oG6EpF'SLr'4MW1dg?adY(k]ldnI":t`j"VQbAHR,V5Du&o,p`+tk&dWh0!$@o
+ =5XOsJO$nO?HW0['T3=KV:fnk8fHUFl&VUC?XLW>'gNt3'fHUEaTs-dieWd6cfZbHD^oo.;
+ &3q<'OXRrW7j:l\7KL=o@=b)^;7\UQ-2'k0^.2U_i+T2t=*e8OX1,6o4VAY'UBsHk'G^rWp
+ .,176X^#QX1tq%r+jbd]ldnI"CN=*"al7l&jUtE=MV-*Y-LP!#Vl_ppl@@\,\hIGq%3`T0F
+ A3_%!s7M"@6Gshe91M:j-r@X1,7uOT<$]@0(jcNs(PX-nHL#4VC"hU9K0@d,sYJMfZA67fl
+ 4L'G_7s*XNt*;-:VTm#_:2!egfj<HiRcd48.$]ldnI"Q0Y%(@[2/HR-V87fr/f$4D*14VC$
+ .Ts0'j4P1lu?B;+!Ns+B"'GbX$HR+.&7:?4@Gd']47#u$2?0'$3J.>FY^cF.B8;q2B"Q4J<
+ (9iZZ&cgcW@0'#)RQ"9=>Bk%dMf!$d":ugm(9i?Q&cgdL_?/#i1i9<RmHt<Lp.,176t$*$g
+ ts>r5C4Z+TVAZ@OllKL(QZjbp".(IOT9um_?08>;7\T6k@?Mi?.gG'"<W=$io/-'M$EZE!"
+ "1m!\n/F"G"!Y=<Ih@2qA]3TC2!HlNKGQ8Z0bX"9>l,=J/TdQ;*Y-(?TLUn^`sg&jTp#Ye[
+ qtYXd]9*l87P+>H_qTHbNEOXOb$"H_7a/9$rFjic=%!Pg,k)o#3_o<iB"_TL'R'GRVWbK3n
+ 5o]VIEB:"DRqng48D?&)=g(!%+.cSu`^Z!Ut\ZYp833l&KX8K@9^hjdoF`Tpf`mW;c-VlAN
+ ]D$m>T:c(gT2#:#%jlbc)e2)-a^H,H%%9Dqc^6HCqtA8?bK*4OnXlnao^I?RnDMM>;mM]?l
+ 1Z!D1$%qu+8ODbj+%!e.DPlTN#,ikpVn/1_KES=Fe/:lMBmDPCcQhf!*GFqKalpCL2StWG[
+ \mYIPgl*a%!4<4^dX/mV-A^h/q[fAu:<4T(#Mjrn5.Q@JK!os0NRqXqq'#QLNNO!PlFf/Sn
+ G;qYg:5r;"[:4oY5TjidO^*o/tBh(L(6p[mmE5%@'c%tAiF1XA`#B/b4UgYBG5r1@q[M!U8
+ FgG-g`[^&C)85b:BfPkg;$<Fn9ik-jImXP#jTi7h!V5=I)Vm2bNN0Nh(n^0j^LMq=QJ*K[n
+ eqj>V#U8t5!,tes$[_mNWdji2=^V1!kW*^1GO:hK*Bi@;FD0gVNJ%5mD^Oo,[u_,'7HN&@M
+ (JI<*.X8='t1)UdubkJIe&]hO+$B/@DfZK2pK)bI"se5I\/!Z)"WMIbUG(&p@eI;,6>Rf^+
+ \iT>8qeR>4Cmb'3;3uhkN]1FLqU"`f00]kbH&qnK4[jk,o9q(FlJ^Bk)G64BL9@Uds&$DXs
+ ,P!-*H>Cgl;F?i4C0_[d:FeLOod:^M9aNpZhu@j>?*@EsiOlc&lUHgGA?o"mQCm^4oRhd<&
+ ^Klj?mFUc+sr)D=[\dc8q5Od`tj6"SM/KLS(5O%D]M\c!_d>oUr4h=&Z?bP4,fctKp4V@b_
+ jFb=8PcX`G:UAZV+5!\7^BBi_UITP.iYP+%gGZg?@AA&VXn-.c"=k#a]UrG;Y?Y6-MdK-gh
+ aSpcf4on[qXhmSo[2VN^,W=$0bM-<gK;)U_SKBXhR^!_!l-sE?J+i>2*^uke>5e?("RK'ZB
+ XXT<.Cb4M\rGCfSCtKALfW4WEGA`-LCa+r^XjMs-lA"s1tpWdXR.!:B1<!*d__aSimSeFgX
+ YOo<j0=H.uW\,;G3A&cauQ<FNdhXT.ogdoNUki1Ca<n"0$0djn>?E$aZt[9T[?8j0!"-^B!
+ OW@*pV>,g[9fqQu?Pkp88T2Y%88ps702+fHXe9RcdK9aUOm#N1Q))Nc5b?l=(Dr8EtQGB<)
+ rl1DuY>'*2f!S3/`uYNe;7Kl`n/[VAo02rc_7nQ((qpM$&LlrWV*:R%UIor/WFtT%e;E]ab
+ 5O,lejbN=^*=\p</(e\1u^X8L37q<fa1)9/&_VE#uC7cN2pQO"FsUa<nIcr<r_ARP=L]%/s
+ _17a=h7?.(*B\:IWG!>`a@anu#S3q%MR#q8Kb[8PMo^]m@I%0?itFB;.N@,>kTK\+!rK!&:
+ cbfZ(p*J,J?^p$2hi]ZiK&WMrLl;X0CcDg.gHB[9(aFoOe-Kou+W4^W.cBMdi8^,,343FAk
+ lBPH1&EI'q=<Yo[[$h]ljh-L#3"V;gM$CdBk@`t)77uZs,"$L@\]=A);4WJ`so=<rU%Ac7i
+ e/Y:h`q9kil'X?*pFgtM?#UHtc/f],OT=<02@@'Gs+:hH4Og-e0_L7727Yj?/(8.,UZPe<<
+ pC>j/WP41.m92JXA7)l!F;:EEh(12Z=T("!+0eDfVYN?s7UB;]\'u`U"&kY>EE3W/lrU40C
+ l[;#9poOGPQ@JRekZH,L;remQk/BfHX7mqm/coJ2sCA<`cL)a\T34NH4h2_L3ZDo6aZ>^Qs
+ mZ_Y?U]6e'fWIOuro7BKlZi5HMq\^X[R8,rpM3"&qo])"MG):uKE\m*WDI(MF*WJsMu>rkH
+ 3m?u&!fcP>1:"ssbqY^?eZRtUH#_b0:'ed\`iSko84?`\TmONcq!_<;G(H*pb`MYmW4<qb7
+ 2d=2=SugF3Xfck5N4opM?e`!<NZR$T+9->Lo5F@[<3In15Majof*cmAHR&Sn'162dMcW(8f
+ LT(E7\iO<[e+!W&*sg6Nhk6s[qeKom.Q?E9Q+Z$\t9FK^6ZNi4V@_rVUNDJQEL5`f>i"#RV
+ I-%VFEc0\j#mn+;0rTW=@b2L-$@+mu;6k>OD,*M+`.cZVH_!(]bnLHPH2%V)>E_F`?D)egI
+ :%Jf&nZnmO?/+,cRC-0p7$k!WKs*,=>0EJ?Uh!!;Jh_H'^?h6Q/AXK6N5,;hXTq:/84pB"r
+ uM0u%EXKm2YZYt%G'^@Z]m#_8ZG]skqeuar3q*.[Afe_IH(`aCfH3eGq-AF0B*_'O[6f\+?
+ IGT?md@G,kWaF'n#loh?]u%MQ_S=aYdN9OIo9B*GF:mGcmmTF12H&3h.4OPE7u!:phVJLV*
+ XMh'j1W<54'@[VaZLkT!I3O\OU(i\.4_<CpTuT'C@I'EN-?qYm#_;+.>rm#'"PF?gZ)>n[V
+ nV6:1\.SfAQYmJ+oRiS:/e*>M15%5_,-:NfECnIh#':Y9RDhZF$BQg4ZWTs4<CAo#`![!&C
+ &Y2EgV2%^to&h6T_%7&cm&q+4:X&$>8BkhjB?BktF(G=2+f^WHO%-aU[e7G@Sil$3crqGcP
+ ']oGnWXL''sA[#<DbOeX)8-"_cDdh*=+)^n/oDhB(I*0b5m'=/b?MWchZ+#u]&cd;&p;3[p
+ [RTc-)oQ;\A6XcJ"cV7m;ni4p!GDBV8mC'D8@5Tk!e;B2;V8FdnpW*J[<8pmEd21jlFQY$U
+ [OILp.,2QQ`,V/'\NRA31Q*bSlP'.O`*oT3#Us0?[JUKl2NQucYm+B,6>T03[sE'2@78):F
+ igunj.@&kPiksqB&237fn4EF]d:6Omb2W?[<D2JUK?FOZ<XoZV/Gb52H8(MsQQ+i)f@tCtm
+ Q\G\enCnQ/<l=&.'+RHidMUb<nlkg5lS*QqZinD'>NZH\u`p^HMkro4m\lNdLYem@!)8l&V
+ 9Z_s$kW)TcP4"2WD9,gmu^Iqp.!-"k0_MZZAi/<UR5tr9#Nr;BBJc^IG'GeFRXAZ+C5AAn!
+ ?2_\$dao05[%X_nTs$sM'ju>/=f,s5+FRf%!/6+k[=&+V].uH(`i/fB8mbg'OrT10T7'A3a
+ i`uBmA[O2OhSO0,Voc8s*H`2"XX/3P+nQGW+pTTqC2T/S1#oii<c>M.C6@#Y.F>AUb=P)8V
+ k5-.))n7El7@iNZY8rr=A..%7%4mYR$OJ.+M*2S=X$:f'c7=D?,h,KgjqtF_#iBr$O'rrVT
+ =:<ucbO6"(@%+'#>A1,r'Z9SN9.'*&P>=9R7-,#9qRs*SpNWr&R`V$A.%;-3tTdn3>7#%um
+ ?<Uh`j=!)t27U_DZ4qN"HEL^[s:j)K(Ub=t5$&l_F0mlHi*\-#&YdZ[gA*Ib?5bb!W8/U5`
+ C4qK=o]W;us,HY^#Tt9f=<s&B9YSTsXc(p4SFi'P+Rr91,bF[$V5Un!QZVnUVkbt8!""Cs+
+ sDA>W=0Nn8P<'uIR<mW"HZ/&//$JLPj57-3[lNC^HX&n8HMF"'G_#A$)Ij+\5##h5Q72F<=
+ 'd&:fo!O-^>UPi]TO$9Bcft5Q[U_89iH12+,?0rq94RCD/t[;-5)r/P7TlnXcBDSh'jh-nL
+ P%C),>l8Q!7tMY%Vj+LigNP00Zs^+,V@UAji?dMF?_J>08=2BN6\;oO46;Ul.N8meIrJr%8
+ f$%4YEBCU(8B<<A.peb-=ValtD=0\CcR;1UiV6<o"_*VRmZlT\6SZ:=<YO:]N:Sf^H!!,Dp
+ Oj$!&htl@0qPfWb94,"*JqCi`aZUR"YD]_WWp@u(?a]q9J\hI1O71Q:/#KA%s!)sR!q8D]$
+ To7$$;WeAPPs8TkpmR#s%umkc%f8'kJ)C:qVh\:EtfC'[m@u^;Gu$5^+"L/!q7uQ$f#HMMZ
+ %Wg="jTUoHap][jWfs4ptBWVgk!^pn,u90`Z]tYe^-P;/3CorCe<8CB%T963c@8'Ge45pQQ
+ Si@R#o)PJ3+Zp^i,_3qQ^SqQ&8ps7i>\[1'ih-nK<j?WX8>MXb5QX4MeGI5qE!'ab=jij3X
+ k<#j=f?2T]S'b.rC-nN`UO/gjYK9KH:#iIi[(5Q_%MZ#[-+mFn'J59!D+K@"c9i80fkJ&Nq
+ >m'Qu$4Ff3Br)$5(f0TAWp!O4QSnh`'GcMPf9GR#@Q]PqX60GD^:F?dU9HoL5+uFMJ+H7rW
+ uHR?$4Fd`M2Li!Vl9b_QG1-8#bnOg>dc%<?H%0/%T1b0871BWUek/9?;E'$=2fDJ]3>%L#9
+ \`;!X9^(A(T0;:J,!V!(9Xc^s"hSj6>#[(&tW4Pn(TV'G`C/7B(8V`j99S$G@j9YljJ4Ka!
+ E`>H+2D`q03o+apTtn/-i_SG9UOnat"&jhI"nh>qkX_?(4l;)+Y</=!s+!I0I<!Y0WSW<"K
+ go,l:L?h+1Z6X^#Y*`jgc`H(D4VlH>T^?P`DK>I[jXB%'IYATZ?l2c-^_?*bc5CA*`@QCD:
+ CB*0_?haU`5[a[t^(fo%MC/m4\,Ie(m/q;HK`s#bq8k]_r3Z+(&&<#r(9m!?V$<r%:=$)Cl
+ o3@Z56+b^=MV)cW#-&+h#S-.Ka"Q9D$NLEME:\885B3cm\-k8F\aI:9>toe:?%*15iSNBJ/
+ ^\L@Q_td=*b,PE!_4%>]RT:jbt1XlM0KOOH:kAi0(8oQ*+RV5PRn93<6i('GbZ665@].ejU
+ >RZh,XG?laq)h"-b.4]Euqe#QF/VZ?e0-nO;Vbpo$CQE"9eVkI,%GDdfU5bapUJ?-,sqF#i
+ E/FR^Vhk-qs>gUBgF]M&2aNk(k:/G'.D4a\1SCA8Gi]iA/8%).+*`oKLfBI2D;Z_Ie$4D)d
+ ZARbF>EmZEfQMspbS<:6;0S-E(BEG]@0$md,GoDIUnjshn#)rKNbk1o4n?2PgT8lck6?H=:
+ ftLP$WJZijas)u.Vu^p4oC'&(#h#HJBq(p^`203.RV0q?MO'3W0(ro9N7E$>,-H8R4,kK-n
+ O;E#?<<fadaEW'Xh:u*a><CnX1f@G:5$#RI;QS7E';=s8*CJ7CGpQ*aPcB2sLhI_#cl#=MS
+ -6<%MZ^%.D2ZU-t&uHmU=;I_l*,N5>X&H:k0>.dBSs;;6Rag.>gX?3/-BY^jc[X'!ZffCsG
+ jfQR(:r$=M%<d0lP3'^B8Y^jd2\$=ageC,]gjc//X[2%@V58.&#1Z]tpO:3Ngi4W,?QLiX&
+ oXA&W4$OC$<VL9<Gm3+U$4D+IY@Dl;[Wbd+aZk`..C/-nqb.\7oE!`6@0$tF4e2J]0+W*2Y
+ \dKK!P!`u![>@X<18\j7bu\XSJPQbCc`^%"5$"M!@cJs/E^[']?dh#[UXRd?ibrbUcbM`3V
+ 0.kpV*m!hKtn+b:A,<;-6*1(_t56^4!kl[cJ6d#Q!pZ/J']F$OD&H`H(tC,CO,2gFb.b]V7
+ miCaHJS<"p)ZZpgsF.dH9Q/+(jdSfjWV40cF"LlT=RZ9G3r3PYL(Z+8U9MMLkBHmT31-OL7
+ &qHcig'\BH+f\F!q7d8@L"#Iosg*)b`!:NEd!HI^2e<?>i;H1$/[<6OmA)4`^Ko=9l3_d8e
+ GN46<^n4G*5hq]*/Eb]!-aXVs>sn;=MDGVIG"iPZlePZL!Dln6(P\ofB@sGkc-;a7(YQ#hB
+ N*a;<TQ74nod\>&*r$Yp"1d@5_JJK5OJN4;-:UE5+l@F>0jgmYjGV_2r6)iIdupoF'IbDHF
+ L<fqD@e/+!_@($i%Qe8p+!.cU/3PmA-t98o<V.Wo><NDp/crC55FSn/JqTT8>noUTf8EbZ7
+ S:f<2)3DQJmFZL>M)HZO&c\V3I*:DL(uh0>S'&g)f2I,YM`QLh<[3\0p@[]?T8;fR+Lrm&X
+ F@D,n"nd7PoK`jeP!WO"2U7MmEE3MW:h\FjMHY)<8'6EcRqscI>/?_=5Ts0&sXB/7pAnGdX
+ <?/b%meDdqVN!N,QX2d:4*R_IpI(;1&NnDFM1EGErp_S:;H20;S);G3=P.dk\(4n>>[73\F
+ RcBfN<f;&n0fjG/#-(nZY@l2>D<%)B;2DEIjV17Dmjmmn!5&@TMM]X/jD%@\56;C=#R(W-R
+ 0ktlIC%.,Pu+leG=94`L'7\TS[U:+t+iji%*\c.TJo#^\ZIh<snhr:s5`)neDt%cM$3!I4B
+ Ahq8ir]K#.S<1IaerldcMe[BT%G\@eP(O-$!(5V+<7i&@-*e<?JqEp];W^F6gO`k$<EneW%
+ T/H81VY+EEm-j0X+"oRMp1&[jApV3?fARX?hiIO0M\qg4Q"JVWpJ.IW<;9rl>4$oaImh5Rm
+ <.uAA5<OLq-nO:D+&l+`d%Ql$OBc5Oe,DTS0:,b1f;%D^-P.#H"aoOg.[G/HjAPNb[VNI^r
+ `[.4o<1p\-F.H863'ha^n6@]W98q#S0T0,]@BudnR-W2[Ear-T0VQf/Ds;s<7J6j=b#t5hF
+ f9(WNL8AH-X)#QX"g/:UqMt5<j_E;-:W+5,Y-Ho^ij\:B>Dt[?9PcefX*SW5m!*:S;bC(@\
+ 6j/(I?_4b*Ci>k*QgW4?ocNRFZ"#A2\I/C1kZhbdLk\#-+&k6kW6.A"h02:enA?F\Y`B;2D
+ JDtstPFFq@2^@`Waoo'a89tZk5g6Ph$mkT9c[S.3s+/(qI-nO:\hbp_LJqB9IX`Phq\anNB
+ K>Qd:EUk=gkQHSCr+rTpH@G`qCCasBdTF-,lo):YB?F"Ii*If_i+IsJeFWIqUVmi1SD!XLY
+ N`dl;\Z_X$4HX^?`L&;lI7BT4uuc:1XD_u(\BEW.14i<Ka%D@.A]pAk9hQE?+oOfPO.(Dj2
+ +]H_WL+Q+e9fA8:_7J=MX)(WMjIa[e\p>FJu0f^"HVpFh4(?+9aeo@0*!iX.l2`T,oYW8E\
+ 42+^:rCb7@LD6PL=*\IYa>a3P-N@or3o!e\@UkRmB<'^-*^"ao_W.dH9L/Zk^TUNdt'Wk#d
+ ZTWl!'rYD%S5>-R>;-:X6Z;f=pkg3f/6oriG[.2pPPIG":F:\1M$J^WX!ra"RK&WF#,[3Bn
+ cBZ$s_k=4KHD(0e"n"ig!WQB%U7T\\5'W+g\=;1J`:J;>r%&$>7UZ>tqgs]Ok0<3:hFHboY
+ -'PWc;'QuQQN-@qbUD1s.3(;<HWc%F\?LfhB\[`Va?mEG*kCj]io'jO&Otb-nGo8"'!ckmb
+ A0F6ooMMcn'gdQKuBXitQ_[$4?u'[YfD1n:s$`I<=m\_'4NK(@&0qitQ_[$4@!R8eq#Hs82
+ PKpX-PJ)f*[SMJ^i\ne2bJ'86SkiSuEQq='/pM"f;SJmD:`$<s?Rb>2*q:)"HLKGZU/N>pJ
+ T4H<I,*LgP8fJ5ThI\HmfU9Hm*Cf)Z\Fad4d<-@k[nNK!8<P68CYk`U8r'U_V6t(Y>(nm[q
+ !s]TupX-OK3l<>uea#p)TaJ0%YWu%'n//cEs*BEE+0?sHRr)!SCV$/9:^,QM=<K"MWMjIQQ
+ :1L-EEIM34G1LWd)4q".aX3m!^Z@TML%Jbl/CWA[%dEV15!I+km8N(,!T.[2A?o4MQa(ZBB
+ dinic2?"\R@kneqjTnXju7hk:4i5_?*$nXAULIo.siD2t8l]ErOU'#)02/"6AVpd"]C=!Ra
+ V`ISs*C)B(Mka3fbpB-&`TCp>$15?ECo'G^t9;(CkQcX/+B7k8=)<Z2Z1=5Vo0;rpM"JuMn
+ NfmN`p=<Kk@W2OA'mK^\jBLPSc`nYDXDoLS_4iIX`JuDFgbLI9_qlAG(!^3t_O"T!.9D"#J
+ HIsN,Ud>TleGZT:^/_c=%Ge'SpC.'l)K]ST:2eNo*W4fjYX!^i;c1joIlUdsNjb1d3RaY*i
+ @u`EWt@>M8qrOEn9V_,pEpXFosd=O-62,F4oD%gDu7ljgXO5+C6e_\!"d\9<7LO3e)SEjBM
+ 7HtKa*/^I,?)2Xq<3.SJ&Y6Fct>drHRP8Sl<shac?o3;11o&4c_]\9Y?=mgq'rJCpJc`8&U
+ 0@!i/-n[%:>+$O"Ze.dC0FXM8utXU/jigG-fXZJEm@`.p7&ihl/.7U@Mp&2<!C;,;@YQ@'S
+ ;\TiA-_.:0RLPX8n"@@b/P,H?!=9,gQ<Loa*6ScWeB[QLi`<MO.5`ZX%h=/1@:+anh?-4[O
+ "bNYElMP1'UkD)*A[J;-HEGk>$f@G0%rh=!,sB2[]M_iSG_W8tVlD3YT#9D;J(J4`iDufPL
+ _"J"flc,ke\"d^+F*<U;,9JDJuj*0F6WI)KAguNh^:V*iENd5fCn;='GeKr@T_r<kg3f//6
+ [.jA?!CabLbcYH'01/d]Cn;/si685[moqU7Uc,kDO!#U;jceB(IU%T-?JCiBnFRE"DM3@=d
+ ?>V4sR=rcY/`(@<T!3SRrU?.JnlLH5:pMB:\M?7@E:4I]@#oABOO[WiJQ]):-,KDAQJLPsK
+ "pe$P6iE9J9/.aoc;c1jscV+mgU0T_$Q5e&W>Wj7K>HrEKUX$r)D7Ke'"VSYL<RgWJYDj<9
+ U0T@1)frKW4NXa,G8D@fn:U5f[>OW*0CqeEJ`->S(%j]gpaGYZ>'KtRBa,gMMB3m(gYiBT0
+ :/?95U(GX76R:Alj3,(>'K)P!sU!Q=H=/gm1<?qH[DAd$4@!_=&d\58.Vq?=&ZB@Cs'0L<:
+ L8*6-bfijDLMj;nf!2AmKi8RbB8BDdHUR<O1[hiM+KML#KfAQ06@A4#X#/i67A9B:Rj<X^K
+ J>]U'sB=<N^>Y+hMC*Z?LL7-e$F2s,!6Gq8TcmO:?\+f/>>($[L`Dagkk0/@gl2Jp*0Q<Wm
+ &7HoA$q7-MK(B6rp4WjI7@.>ANU#aH9#356Z*[Er4+m":sjtNtT&'oFgU+L/?*;R,G+;Wj3
+ ;:!t("3#'>L<A;*"r":5Nu"AZ&5fG(43VL!bLtiY;$m[VMl0P(Z[@%JnJ]!4mb0.s3SC4W`
+ MYj]k'X^-hY'MMeSC_hBIPJD.,Rs#cbbBa`G=[pd,t7m9V,d=6h_38q!_2Vmo9+/SAW5#-s
+ c-578%'?5hVm+SiLk<bLb)](QZcu(mUH[&Fl/!cU='lN-(H=bGVF(5(g]R6'J<05?"IlM5S
+ ]Hf8CC`9ZmK#<da8O1Z`qe_n6cRT,qb#6t(XWPcd&3P:#r::SCGHX4N``bQcllI.G/W2fp^
+ .H-L\M;If)T9<VG)$Ns1]lMO>JhFftbmO?dO`F*Lgf6tSm5MT;C1G(/EW*!Ksj[rs45l&-O
+ HKNN?,Mk`\>WOUk?ufT'pPI4G\>huq3aXL:RCgi2bE]pGJb$1*H58*t-f./`gaHHC0KJatp
+ f<tsQdEU!M/o!8Mhbr#6<;rlV6E3=4fP0I'e9pgqljq+DQPjeT=8oDnI!&X=*6`_GqIZ)V7
+ C#em?]>W"Tmf?.dC0O4u%7B[4?Q7WkerM%q4u>^^[]_]>M;DDOXa8[DmpP.YS$--&0+O+8X
+ =qnHc_knu;Eh;m]L7(N0>UZa3o2`;+E[$4@!of2U8knA>S-Cn3ZD]X6JT5"/6QnQ'I8$3(A
+ bd3BXn[6/)nCTg_F$O"V=<RgW^:F>#k@IM_$\06'sacl(+Fa*@(^nT"uOMe`&Is"pfZ]j5E
+ 'Ga4^O/o5BF.XBp*^R7Mn"4JO:9Wj^i_b4XeN1l^?EGiHTWg]NI9o?*?i&2!nH-;hau^+N9
+ [mN7;S3CAU0_Kpl1%O>H@*3@AW+_X-nGpWO/f/AM'p<!(XR$,=&td7eRk@!?3`I>U/R!BBS
+ SONQ07KdQ_:QJn3*SASfdl<U3H^p(2DNe[saFU>eR+`M?a1mPrW/';0lV^CWM,E.YS$-AV5
+ kdIeL+IiW\s>GXra3f#rB$GTbq_293ld$MS)CYZuds!l;?N76Ss]5?g7"*k7[5TYY_%d\Fc
+ #!Fp8`S($3mgEtdg^=oVh.>7p,A\O%Jp?[&i4F\CXcUkG\gS?XD9*#.>3k[e>Fa+"8rVU+8
+ ?_nGP#aD;<l8`k$V$/_?'AAuNP0$q52fp_C=<LpNQ:kID51eOj.>7p,AXnX(8kV>E-((op7
+ qS6L=Zo0c(Pl.H*p>;]7Jisn\Qja'!l6fp76Pd9hL(2JhY!V^#*UrPNt^scic7ulFI:[m*K
+ qCZY4_]=8n!99l)d!2h7KSALX.d8R;"Qt)g%s%2%ZMeh8S>nM6NJ9Q:nkY.4c#Y>u^!"jN)
+ 5uiU]t+Sns%)HX6@X%gQPUZE[Zoau`LnrM-S^E-tGM4YpaE'!Imn/tJAF0QJi3@H-Z>/2$0
+ 1%eElpjpY%O92J_5i4c4cT%0kHLf_nq2bKDT9\hfoSgW4ehf[c,@9s=b9kgaHr)a#S"bPbf
+ <Rd3@&(\9iG^c++hHRR\GX9]5>IplQjV$abhHtJLQ0@Ot_?.QY8OYeaYa"p2MI)]c0Rg4jI
+ c:sU]eo%3$d0iR]Nd'T@=`r5UnXI<rGIqn<:S](;tCI<DlFd$h@\O18uWm"0X#'.k(pc-.4
+ c#Ufdc:?^]-UaWT(=TQ^/Rai*8DgUf4*gJdu&5"!$I2k`r,!9cbsSTWg\sh5@!=$Q"t;Ti8
+ Sm/C!!3d9mI9l5nqB_>Da7=>!HX]ghp28R[1#l)m'3?+Qi?Zttns.KYM%:H'-0'mcNt:iN=
+ %SWWAg\O;k,EX<'\"PI._W+Wu#*mu9%7ci<W#,A\1NtQ@<g4aXkGs0;Y?7Xl=+T?,OYX%]*
+ 8OYdXf++#d.5L0<=.'NYAt:8T(::?N>iPDo+b0G#LVa)nnHfs'4SIDul&d/74BHU5S%KJ?X
+ g>shK!6`\a'i9^G"l\^[9id-pua%V&.kmBeFUR":6HYI@P/XjAMBFnojI="_"i#-goV7U.V
+ 4r>FGRd8!ARkK4jQ>W>C**$\X("O?nrP_1#dUQEm6YI:lfU@"+..XOn^H2,8:n!LqtS+3H]
+ ))oLKQm?a[mi3&g+2n]E,`$[S2X]O!_[gV6ig=<Im@<@U^cI_'VmD.rFV\*R[Z6C[Oi:,\K
+ c<P#YaAWg)jmdDj5KeI*9A%>!_-nGo40mo(-`f/u)DVa-kNm9?rd:IX&G\E7=XmYU2YIWC8
+ 2H6jpJ)T3&Ka!(d,:_u(o[2XGo0c^2q'?5D3a[p]DbUjZ]"M?XSAW5#-s\>%Wp:@Q"bL-eM
+ L,:$mjCcS'4HkXlc]QU^!7<F:/VD_P[Zf(@9tUZRP4Z'Mh](M5qkSn4Zdi^C7C3A_S+V,Zh
+ g-Y.it7W;Q^6db\QbJkrr<(d3/i)"@4[Uoj#.sF?BNk<do(\_774PLP\MKH/-c[*9K,.kN'
+ Y:FlG'_(f4>MpRY>]:VV>rd_j!>W\5nZR+Q\1Hq:/kV^EA3lc_K3b9^mQ<f"N=@RFQ)hg8<
+ k4j02dQQ@Kfcs4?%Ci7khDW:=\GV(h>93f^LckDKi/Dtlu<RgW"DiBf"-@Tr`h_]tr?)d^Z
+ #:SP:eFtuIlc$cU>qXMJ$4HXc3#2,al;od;LP]AC5!@e2FI22'iW2Yf=*6`_GqIg@h;#5#q
+ umiH$4HX`pQ`m#;:!q%rd!e9YaY+t#1GY8:MA.TiYb?f(7%U0Rs:t`E1c6eY^jJOY+hKg"1
+ j.Pikr\f>+.@@gM/L]CNL*W&ga>#SShlH7#B6V96?!,!rfVo76Mahck,G5i\)U]cS1aF'mc
+ NtN"SoWVj-BW%eEkq1Jdp;AV@o%r\dbF4`#1cT.=Or0Grj5odK>O-(`;+OMe`&Is"pfZYt'
+ bGE0NArYEDSM)X;\kJK$ne5`Y,)s5C+>s(]8UfqCkb\Q'.P6/$pU-fV1n?F??e<?;gHL"Ts
+ s+^!.:s5`km1TrkH+4.><D"*jjV$UEjRr4eM9A1f0$tgL$i&@A.dC0L\=`C1nY=Nb1CZg"\
+ K3:CVSpiU;iC9]LGuH&k8&riOIW#KJ<.rP;9sI$4&1*\psIXi#7X.KTcPH8VSqD?\O>\5RB
+ ;&?KKOqlI&sf7H<ttRTHCL^f<)('AqRcoB8G_"kU\9OfFtdV&fm^NJ7!_-76N(KWhNt)oGI
+ +tr10#\Ap]g2/RGA@X4?$IS`TP<Ef'+5>;";H$4HXZ)AVqhR*eQQLA4j'YrN$K]hAqOO&U'
+ Ul1>$?f&7'S<Ug^l(QTjV(@\@Z.dD<EWU\Cm`4s0Ag0hSVlZ(pT$7IFJ--D7o&V&op6X^"&
+ H<R:i(%pqJ(\A5B\u;lWS_9+.f9tX+$DIkjcs^75]Nh0u'Gg27O/o3,.kA<<EKg#'n[66If
+ `lNsRdM\4X2&_h>U'3Ea['5cd3/i)psNC^omHPP$X-d7*M#1\o;@';d)Y/=g-\M:+&[o#og
+ ;m^qk9&fr1e0(_FOX0$O;/2rdqDWL;F"@e5o(%^\m1H></7G;uc15F6^;\rN1CW=f&SWKig
+ 11/jE9A1&0pZVnGmpQ%$!JGlE122TA8~>
+Q
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.pdf b/testfiles/cli_tests/testcases/export-area-page_expected.pdf
new file mode 100644
index 0000000..4a510aa
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.png b/testfiles/cli_tests/testcases/export-area-page_expected.png
new file mode 100644
index 0000000..8bdc9e9
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.ps b/testfiles/cli_tests/testcases/export-area-page_expected.ps
new file mode 100644
index 0000000..ce348be
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_expected.ps
@@ -0,0 +1,482 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Thu Feb 27 23:59:28 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 3
+%%DocumentMedia: 120x105mm 340 298 0 () ()
+%%BoundingBox: 42 49 291 256
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 3 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 120x105mm
+%%PageBoundingBox: 42 49 291 256
+341 298 cairo_set_page_size
+%%EndPageSetup
+q 42 49 249 207 rectclip
+1 0 0 -1 0 298 cm q
+0.254902 0.411765 0.882353 rg
+56.691 42.52 m 170.078 42.52 l 177.93 42.52 184.254 48.84 184.254 56.691
+ c 184.254 113.387 l 184.254 121.238 177.93 127.559 170.078 127.559 c 56.691
+ 127.559 l 48.84 127.559 42.52 121.238 42.52 113.387 c 42.52 56.691 l 42.52
+ 48.84 48.84 42.52 56.691 42.52 c h
+56.691 42.52 m f
+1 0 0 rg
+286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l
+120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359
+ 90.914 l 252.969 145.938 l h
+286.188 194.75 m f
+0.501961 0 0.501961 rg
+4.251969 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l
+120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359
+ 90.914 l 252.969 145.938 l h
+286.188 194.75 m S Q
+0 0.501961 0 rg
+158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535
+ 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715
+ 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c h
+158.738 195.59 m f
+0 g
+2.834646 w
+q 1 0 0 1 0 0 cm
+158.738 195.59 m 158.738 223.77 135.895 246.613 107.715 246.613 c 79.535
+ 246.613 56.691 223.77 56.691 195.59 c 56.691 167.41 79.535 144.566 107.715
+ 144.566 c 135.895 144.566 158.738 167.41 158.738 195.59 c h
+158.738 195.59 m S Q
+Q q
+82 59 151 151 re W n
+q
+82 59 151 151 re W n
+% Fallback Image: x=82 y=59 w=151 h=151 res=300ppi size=1190700
+[ 151.2 0 0 -151.2 82 210.2 ] concat
+/cairo_ascii85_file currentfile /ASCII85Decode filter def
+/DeviceRGB setcolorspace
+<<
+ /ImageType 1
+ /Width 630
+ /Height 630
+ /Interpolate false
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ /DataSource cairo_ascii85_file /FlateDecode filter
+ /ImageMatrix [ 630 0 0 -630 0 630 ]
+>>
+cairo_image
+ Gb"0W#BX56H/SW;NF2j8'mgT%fW-Fo?>[`Kjj-sYf3!(&ekM#QR6&W*m:?0DCN%d!log@ng
+ IYG3j4uA7=i;XaU*TF6OePBG!['c?"A'.-5h*V/*(Vb8Js_u#^@shccMZSk4#tuX3"&?"T0
+ Fu@k.*"V<4i84P0\\XFfcXDRn*BF%KI\$/B@.ak%je-g\s&182_86Sn`+j#&qE/[_f3IqRJ
+ QB=p4oJk'H^?f%/)r$d'kKJ7M,Xi>N%2+K84?\;%j%888hSY+`'"OrB%.CFC`aUdeeO)@?i
+ pWDQd-L;F!_C(qGdTs+N[)MNl\-nKnE7Ub6o$4@uU;-:>__?*8C'GdjFYQ0h)KnX:j/:aNc
+ @Gr+3$QuEG=La+&!_@&?(9X@8!0S7SKki(fJ>>YCi>N%2+K84?\;%j%888hSY+`'"OrB%.C
+ FC`aUdeeO)@?ipWDQd-L;F!_C(qGdTs+N[)MNl\-nG@6NZD5HjR?XK+!WBP(9X@8!3A3NqY
+ YD=-\hZ%peMMa$4GH^=9-pBfK\hp^-CtdIBsEr[8QqcM$8TeCFC_6CJMT%\#llCDss-<nAK
+ A;+"8ZH$eJ3W!7p5D3iBZq@IJ$)I/)n<nXlh&'GdjFYQ1cHff/fR_VV_DiirRn`IG*e:ft5
+ ^_?-t(X]K,J^T\:t?^iSFZeZ"CKki(f!,LG;\`:P]S_c1$@#c<nqa=lO)@?kfRT"QGhQ*kh
+ B3r_EFF9MO&,AC'(9X@8!3A2gB1=8&%6M1=dZMG*`.-&o;-:>__?-t(o^:t7(Uf=,<`2ar\
+ ;%j%Yib=YdpabBfVt3M*q75)Z4n(WTs+NuH$e/m(^h9c8MSa+.k)kt>XMp#=EA(eG3jqUa[
+ umI$eJ3W!7m[n0dX!>[]Q>broO<75;S"ICFC_6CYm`!3UXbuqkSbq;GRXmY](&*"^oS:gC4
+ PfmRiA#/%knM.4e^k@0'JOG3_QV_M4W71$-ceV&oZ\'GdjFYQ1abkH(oN+tG+&*qFD!"bhY
+ G-nG?[%YP5U/?eHRHr9ruKki(f!':\OXL)![EuqK[TWiAEK`tl)_36B#(A@IVZ9,a%8O6eD
+ )@?kfNc5Hp(A;!D-,kukMd?:d.4e^k@0,##kkHq!KtYamPnXoJY+`'"lo9*'W@N[^LodCkj
+ i=7&E".L)@)q6$/f$A3oPR`2;G^K*L;F"rj2d?/Xqp_9A0o3'gFF^$/6kPN!SDDQn7&j7)g
+ 6DjUn\/:[.n-0=La+&!jL_KTg^":[Z/7k'GM=cTs+O`#iAg3<nOWTHgRo1TWiAEK`tl)Ylb
+ BI/F9q%.k.b7*FIsua/6([%>=sna72)1n@5^cDEfRXnr^hM<`2ar\;%j%YiGKt$bS.ZD-JB
+ Bs1^JkYph5/6X^#JET6Ze151]A?:dFki>N%2^lB**k6Vn^m-S*-$s$8&=La+&!jL_GCNF%p
+ )tqR;abPp0M<i3ZY](&*"^m*g@F+7:Fs@sp8dYn5f2,QLG3$:s`up0I]$"+0chbn&lmjM5/
+ 6kPN!SEO@Dmhq=)g+WN<n05]:QMt(fi*6pa0Lk[_SS/E(4[ED]e[d(K2"Bi>hH9,SQVo3fS
+ s\u.k)kt>XMp#fQ$3<R0F7>d:mHO%;XO/V0]Z-aI_3GWUlAh'GdjFYQ4#L[<I?k!CJoE]s(
+ r(s(@$,A2ggW[SAsTqYY^=fG#+(Ts+O`35&t962p;rCV)(P4',4^gY'(0brY>p#B.d`=La+
+ &!jL_WmV22l0:^E"$QE-E]B/?uFsD?\-,k`&n,'@=/6kPN!SHr9Y,Uq<02IYD=(0"8FF(25
+ BfE?dCk)IW$470m:fm^@SCnd(@Dd;gSJ4!Q[VT]H^<^\-cY]4tm(gL3+.L-a2&$gV*G8^$N
+ ]2-8H>MbuD<'nR$470m:fm^@]X)*?]U::uULP`h=H2`WI3lks4jsr(XJE(>%>=sna#i$'a4
+ n,qH;oiW%;X<r_F:mPg$jFaQ1EJREu9ak_?-t%m']LU#-M'hN4lGJXea$bBlZqe$L(EHKLB
+ 5LfPtfp`-CTKU.<.%fSGbBH@Xhmk&-`7/UroT1e-JuYQ4#D8D=;24T<4SG!l#0^67L(n[U6
+ r]I+)F-nG?+%cj]J.dSjq_R?SB.'UCJU?(tbc1N$Oa"e83K`tl#_36AXMH6U0)Afj4SWslm
+ ];OGqc=`bW"bd+f_8-f.9n"gtLH$`!CZJ%fiVt-G,Fc;^@TCM_l/@R(5[a[qE9Of'@E\=OL
+ P9Sd?2(`Gfs$@_$X,pW,8u,&@0'JLkkHocMI"ecX;&*#ZB?Ehp.C4jK/8u9H!;'(-nG?+%N
+ eniEhB98g+$o@UC/S$MI)n.E-&/RTLM1D=9'*V3O6Sr?^84;`PRA;kgTudR,,jGm?gjOc:S
+ E\TWeDI3-&Q76+jAcIWc)<@=KTBmCs(">:;Y;&NCI?J-AFR0/CW"2;Ql<_VS=qZ`L@+-p'>
+ BPn]#ZK`tl#d=VrJ2!_a@j&0='l?-^4*c!^?`NN!SXBR&8[h0;g(4ZS/%PBRD<gE+??=@'o
+ =\4ajF)p*e<RRW]JO!WE=E+2R!sZ05f"G<?Co_>%.;kA$Q(Hk%57.e6K&^c%0M'_gS`P$'g
+ OsL2F0.niX?:,:.k/go$4FY$'5s6P[RU#\VQaL:[oZJ[IT!s#1R]7b8V)5^YQ-46nbRWc6I
+ kAhSe\^,p.C2NlROCkpLZ?`Z]YA1U9FVK34XO16([@`2_PQn)HfXO;;Z"FZ?\MYh7U+"HC2
+ U*-nG?+:;/X<TM;n;=-!aDVGd/t)qhHQ1CL#A3W+WK!jEg1eN!h6Wn3X_Kl)gNUr]mUP2bK
+ KfrV!b*@NH=$Zbsc2Fp`@cB'MllanYr`n6:;q,aIOf!:G?D($q8$f62@Q9gS#FLkjg_jY^O
+ M&p(aZF<n5<3hYgRjflg.o*c?di_-=^r[A#26rC>>S"7^g"`\CY88dV*q'Y1@0'JLC@;R`'
+ "-q&n\V_kXJE)u[O`pXOrf;\@);(jdg[30^4-i8CV)X`c&Iu&:%dhKk<,P:=9',,hJH.mnZ
+ '<!UWti;I3lk(m/!_>d\@j--nG?+hVL+AhXomnn`!-RRp.Blb#h5tKIAAO$dS+/)K0ijof2
+ K5hTJpTcYd:>793<>6CXc`5.j9l!Ea='V<iGb;kV0gQa@EgPn`9G7eYj#fe#q"UduO@(4ZR
+ $G"d`O2hcR:GXadX`_),_I8a9?OYeI;!"7Z:4ur&^kgAB!NN--ZQ0R=O,FcGhEp]-Wd_d.J
+ TWeDI34j$*]V-e*,K0a'Mi^]5d"C[S2L"K*C\`mak<I`k@0'JLG3d(k.oW04Lt=G+0!1oT[
+ IDkI"@cf#=CBLB;E\9tRrNF^,t2nR#3c]7,nq,F;[86gHU//UO(Q%nFF(25BfE=$];Mlr,!
+ f(.!)=QY=_U]uMu#X-@N#O:e2#c/.<;ml]MZ7>3X;mL_?+]Ai5l]<=h1>`M!*2'.k)#3$4F
+ YK6RS0="Jn6%Kak*14fki_\8Z*s.k)):Ka$DaU#X<)C3!Gf'!J)uDQKW^Ho\gtk$%"+^^:D
+ V^o>5lQC@_L<"B[=UiUFTUr[ms;GG+;krQU?$4FYK_ag%1FQA<#+PoU=696FjB<`CY<`11G
+ $4FYK,=`Lg7&3`T(QY=[Y,nEYa\%FUUTa`g3c]J-5sDI:Ic=M;X%mjhYeH:[F]MBC(PN%Ne
+ BpVo)RSP9mN^RVlWdUbEU3I9kub_$Ka$DaZ%FBWXjXo%KBS&O::[0UfSqF4.>!Dn!c[GWJV
+ =<Y\=n8+f?c\4F^MbC%BDJ%TJ\!$%E+:D!c[H"Rh$A.U0;2dGL0>I\jsL%Pn^&"B/V^>[VS
+ c:=9)):Iq+$q/8jaEiXp9:KC2X58)'"S.k-(&_?+]A`9["(8l;Y$M\j_B/NWQV*bI@:GrmA
+ 'Pd?Ois!TDuVbZTNB97t]j="gI.k-VpKa$Daak,Yn1uahh.NL]K<U24%.k/W$c"UnS8HHOo
+ @0&?QoBI<J3n3Ihn`kBNr0N9B4k=L]Mt^"c]!Yj*-0Pno"lNA*^=`^)B[C&'PNP(f<`8#IS
+ 6U8\Q#o`>2[Tr.WOMTG1?_&gc4KH8#e*i4Pd$=fD^[.:VquaQUp/*)>s*:^,#8QM);27bS9
+ _33n.Q-:^o:7ZB,]j(7Al#U:6lhL.4uU1e^DNOT6u7-!c[GShAHML#jE&n`eeK\)>7-0m*0
+ FHAgN-Q:fm]mS_cNc+9^\Ho82tMr'c%+h8naGQuqrJEp:;g_?+]Am9S3#9gGkQ+J(JuWRUn
+ 67Q.@-bQ@%I,WQ2>^o=ee9oXAlkNd-I;=g8lSX%5fMM+<)!B>46B6LqO^OX1EUg@[Ll7mH,
+ HiDQ0NOA)J>EbR*/-)Tnm$JFSfFN0o4D4ZCXOBf6#eQ54]oo+QPnXoJ5k)Fm@rf4<^IXD$D
+ jbNtF@s(bCcAZ1>:3`1=tEsLA4'c+3-BCkgk@np7u<#FkH=,7elPaS4uJst'GM<JJ=PFR.G
+ dp/X@J-qbl?sM[sU?aDIcDsR*emZP6*-`J7(@GF^i")^/U.)moLVglAY>c=&SD,^/_RE\j"
+ 5d_?+]!@)u^%_o1RM'Q1%K-t=P,Ka$CM#BEi`9_`Q^`6/lH=*6a>OZaL`8J);HP0Ql*UTa_
+ <3I#Ru_/(dR6cGN030BI?QCek1naPn2-<=#@=9*elnAK@"_1"rd&J%nR\Zq<lB\uci;G^Hq
+ 5'6#`14uQT=Uu:O<BrG-Zr0'BDIi?_:9M:9;S#ATLVa+3jNt0."s^fJ%hqf>E.rC+KcXb`Z
+ FO0e?HZ\$SYQBU@0&?.pui?CH%&0m&FWTF<U&AN[\"71Shi%L_IoJh/-'$:El=cXQ+F_TTb
+ ;lK.k-qQ2b:D,0i1sPNZ:'lfO0YFec!GXPSfj2HEeN*2mNV!VpneMOj6l,TWeD93I5A$_$n
+ )Uqhhj3@>%lf8WgW%@eGFddY/#h$4FY3UB_kt(uSE*O*I$)$nEe)LVa+3jOf$;#,D'MmOb$
+ +`)EFX=C4X>iQs,V;G^Hq,*'G6JAL$Delguq8k<j$UaUUN]A_mUkun6&Ka$DUnM_4#%.0Oq
+ Vg+.5PoD5&nm7ba;mAYM=FihJ!B>,Zp%\e*]12N+02VcYl'*]EJDJ;PP(LOPnCWTro*iW]X
+ mRg5TnMUK8rBq7F'>#X>F*,-nA<<!jr+Zn>Ip;KJ<E3hmT*_D-,o2OUnFpl]O4dmHCZKkT-
+ WCD8r?j)=%i;2s!TDu7rhq,@kaVrF;OK>,`e$^\YP#5NGS$kM)S%n8ghjG-nG?gEq[a9R*U
+ aQ6bGM&k.9tr2mQj,V\c^p`'`Zk'Gc3DDnRpL?ns\*FRe?9Tc2`3htB["dXs?F)gPYR_?-t
+ 1eB9WW`cAC\'@0BnC=$7DoOtk!AL.M6"lP,6HY42>jH*+KDb\YpdA[rS0Y<IlgG,\)S<Xd&
+ (4],WpImL_aK6.W(b7$`/-*FH]mEr<UKC<RmL*p5elh]J;B00m"bd+fa4n5'`r-iF4^L6'B
+ N))j$hRQ5OY)$!H=Pbll+6ZkKa$DUR@S=62IDLY0+6LEZ'$;\fAsMYX/#hFNktj:jNL9MnW
+ )Kn4]XZq\<C,I.8#bN,mAu+i5duAVSkQCMtC]QVVl?S-O&.]Cfku.]HgfT6"'dRo$6sNnP7
+ p3HB`YKclk>K;Hu1@X/.O25PoQ7Yg!X%'Gc4eZeHhG4*$8P8F_r&?5ds@rKS(DZQ#p.CF)D
+ JrVFtrm!dpP(Ok$6LD1MSR<)R[`]J*3oEauITG&n<oqK1HDIi?^9Y,L`\TmmS'aefXY?H!!
+ Io4<,\(@k^Gj)W.;pU.p=9)qAL2En2/fkTm<N5lMNGM_9R0DRj['$rJ_p,LKjZ2o>G5^*,&
+ h#:2-P#4=1`3P8oJ#f_+;WKg/!#r0pWuaM2LN,?H=5mGXW@F5.4bHH%N6(j9FhkV#@^Z91C
+ Njm]9,8VlEnRb5d$mgs4s@Ab0#Uj$OV&Irs1cA"lR>8P:I%Glm4e_4<0/_ZVE$u,O@lXJ*5
+ n(b.t*S#lf=GWd)Y)_m=En`UTo0$4FY+6cYN49\4;J=M,Q.91YtF>@0t,FlN(g`T$R'QVbl
+ &gUF4r()4FppXV),$c';?a-RZ;T$)GAGVWYLZBE)qgTl948^UeXiC<([MaqFCm>1XTBG;54
+ 7>HpU24-K@HD#L6@&?\CbLbe@7^hB;),9ei-,UYT>[On9o%_+RYJpI5-jg?t,tEtH0pk(g]
+ "`J=@'!4<S@?4q@Sc^"WmtG5Y"$-:F6UWu]U,/FY#8@%ef?cVfO48Tec!EB!@QZ+8Q"Wh8r
+ C&qfn=:6F5pVn6=Bn>k31bm#*\5=mOR-"3#DR`P4^;)S66C1D6dKu;"LQQneJX#6H&@F)[Z
+ tg%uq]YcsZELf6tU'!%T6D.4d\4i8W_K/PUCh;Dct-]3`"WoYA\\^1BZ?!VjL9K*r,8:R1?
+ "Sd*j,`_),_I8c,,;Z(5X`#eAb=",[#l]*!1^gQ`gd(RB0!/m:g>,`Q\2c'62-\k&,fBqkj
+ V%>Q!AOBl,pqcJZ(Doi;C7QXl"kXR<.2@/jh*U4@STl`9;.j;HD6CL^WoD5(]AKofYQ4UZp
+ _tQ6XjK;MMZ>]G[#uW_nn4SCC2U8a'S=1'n?!A-cSq4R[CWtp$fDZ,<`7^VJ*3S."+e;jE8
+ osXGm9H[4G:[@!;Al^;N.nc/%<:*lA#=ckVrNEI;Zf'9ORr=3;M95K?81-G87:]>iistMP(
+ 74_I(_YWc_A@d&sKCKi(qP#'+%@@k`N"Ff'BbhuPc;;YX:T*dpHfW7B]k3p#1I!^d]V"^il
+ ohe[pJe>P1ALHiFKUO-*M8`:cM5M?9(X@i5)dcheMnL6!h#Msc<QGHhkGT7km\Zq;a<qq_S
+ Xp<SBSq"=Wm1=sTi4u=YB,V2WAt:84p>I;V<`4/n=&0,%&[(DJ%D#36IrG`&^k#F29ti[9U
+ /T$D5!0Uph7KBdLkd`lD7?Rr3m6SQ947i\E,*^@K;fUIGAB`SDQKXQ6a7\8WVb:/r6RNZ"l
+ R2\h'RgjTCWUnVn3\r?:eQo^)g@QLYgCkXSn05_?+]7m9O`#K?_jY`.pHc2<jaBgFF]mhQF
+ H\*Gl,k^k&t=:,TO[&>/G'(Xab!oFS"%7er@0/JJtN"(tr_Nd%uJkcs.-*BrHP8r>quVEtg
+ iZ_\59U9FV;33sjtLKoV4SG6KIJ%31TU?u/Cf6(GODdcRH!"QZJI<)t6Y=O]iTBbp2#2LU'
+ Wj$ra)UhRi=&E'"%\2>jpB*I7ognV8%_l`*W>G1\a1&,DQfo#_F[)e]ZE],#!c[(6r6H'-T
+ s3aJiC]"$BA*&tP6lpHi./X+/ChZ"7j%XY*6K+";V5+Zi@50B^siC[_HtU,j@:;>XBoNTkc
+ sln>qOMm?2p4M/JJtNW<5.2%17GZh^:Ybi,=aC'I2@>1EAT(2%V/e!)j+uXtV8?p`;hPoYL
+ :USeMa'gXQd2=9,3.Slfl,fQ',CIe3X^TWeDi*BLpYTWjdU+SjCiG_!X40Qm0C;M2hek^i<
+ "&+BRQ"^pWbd3T!N]qPbQO$:>]'Gc4u,=`Lg'Xgp6QQLX+#:M,';b%<N1+;Khh+rLl!?Ro<
+ !)+CroUnKYYNnCCUCZhoK`tlLfKk_<<pAK3UCZhoK`tlLfR\_\KtX1,acAX$!u)N$WT.n\?
+ r5KjSL$Ms!"Vn.!2bdkZ,!$:2g%pld0FoH_?)E6iq<*OKrrlgj@:<M!=B4MeB.[\$jp4:]?
+ ?7!^]P8dJ>na9br$p9/O)HT)mG.8!\fo2l5YGnf'?$*d0FoH_?)EVZZ!9<@2j;)q9]FlJAM
+ @Ap"$i[#)-pB)=jO5n,S.G@-Xk\9a]XVe)a(AhuO/m^so?s1CX]GU/U/D+5d/,$c(8k]e^'
+ ()q$2+UCZhoK`tlLo^:rJKpA9WJ2\l-!)mh)RMKgJF7f\3\HdA3_?)Fap9(Cb(,fN\Q_/VT
+ 2^g3W;eL9n?.]3A:4DU3hOq(Q9V$GX45Rgil7qjN&+BdW"^pVd*L#M8Clobj5PG.r:fm^pc
+ >J]TYik[-q7-`TK>I[DF`uN8GRI`W8'9.@^`*t'J>mTo-cTBC;E[?qmK)1;YQ.A9S(FkPHC
+ 4Wc"2$p.!>mhYZdPMN(\N4IEt@aEK`tlFi5l]<Ke:b@jl[]C%13KYaMAP5%17GR&!<K2J2\
+ l-!$d8Z0/G"m\K3:dpAf,.=9(f#+#>?^KcVX,pAf,.=9(f#+'iVXfIM8ur7hCe6"'d23HAY
+ e6")9dJ,-V[G_<j70QQ7D@Y;O(ec"Rl*oIJ7$c'j26]2?[HVO7"T6l)I-nG?C7h7ds:tR8R
+ 7t0k,hOq(QN#Xp`d%IU%FDpuc#C(m<!\eZmbm+Xa>HP6mk8rOj$4FYjnM_4#'_\El.6mP,D
+ bsO97S^T[hk722\qg4="2$p.!>mieqE0DIf';\oEt@aEK`tlFjD/fG$<sF?aj3,c)\a'<OW
+ :.5f'?$*\HdA3_?)ESoBI<J_D^U1noG?2#)*4gjK3j:%1:jg1Z[^?i!g#$^rT``bVCS_P>7
+ I:H[n%'/-$om?Ckk-fOg[$5PG.r:fm]e:@4T\:tUk)Oe6uN2^g3W,H(902^iJmKgkR*YQ0W
+ PhE<II]]SJcnj<rW%#"jmjR$5Oj"5)=*\TbM!7+JD!(P9#N4Z=iHCXo["$AqZ!>mig;Kf^,
+ /^S"hLE>@k$4FYjR2o5c/SpOj/O/k-cVR^D7c)f^3SqWEf;%D^*oInC$c'j:D3Ns2Cp>$15
+ P+s%:fm]ec>K0iDdc<2#l1/!G_X':0G8;1_b0T@q4S%<L;F"Jhgq;_#)0a`LWL&i^bZZ?5l
+ ;*1't-dHPok=&B.,<]p`2K-_P"-"oFUhl#C)!?!f5a-j3%l=>HS4S%m@]a'G`t3%NSng:tW
+ s;OSmH-4@<NX`:*3#V$;XUci`Bb*oInC$QsnRO"N.8Co&0q5P+s%:fm_f4*"l:6"-t^Ie#i
+ :n-k!S&AKHF(E!q\RdM[joDm36=9.kQHK[YI_HtiBjG+f7)%$`oI`Dqe'XgX.Q61F'BAP0*
+ =9!&5:>QlhLrJ,h9F?,6pQ?VEJ7m^hChmflC[5R4Ldb=Ka_-I2FdDsP"$AqZ!Q:t:DLKVG1
+ COUpUO1,o4hrif(-k"!GHZ9RidUTIRp+WRIcpg(Ts+N+do`rZoZ`e9D/E4L]?(RH^bZZ?5Z
+ FH%fCBa>DO]i8Y@4n^=8ANpG_X':kgZ_MX3^7(k-1t)l?0!%ciZBt@0,.N9@Ln<dgL3*3k]
+ ZQf;Q=&%m@]a'G`r(C+E=#m$V=`X_jMK])9nW4@<NXr4/-5NTE1lm'a;rZVH]+H@TWV/:]h
+ ;/6e^\F0Za1%;X@jnj<rW%#"ird<'1&`?V]pC29<#:6?WEJ7g8]ORtl5:"P:=)t/oF7@kRH
+ K6<8t-nLJ8)J[hag`mE]"[.gj3$B/:=<M<\g*>"%Hp*MQkob7K=<K'KW`i^+g2pD7?-Dk:5
+ !4e"7U^ine'bn6if),F&pGkU@qp,sq=t69U9Hm<WN09(pi<gD\$"h=0]1"RDPOF$Ec>rX7(
+ `&:1qW^;5G>;H'"D)Q]O7)f'o7(VeJ#+L!IW]<pbNU"88-9@)r09p;5-Q=YgOW')heG.=&n
+ c'QhO$E\>oG6EpF'SLr'4MW1dg?adY(k]ldnI":t`j"VQbAHR,V5Du&o,p`+tk&dWh0!$@o
+ =5XOsJO$nO?HW0['T3=KV:fnk8fHUFl&VUC?XLW>'gNt3'fHUEaTs-dieWd6cfZbHD^oo.;
+ &3q<'OXRrW7j:l\7KL=o@=b)^;7\UQ-2'k0^.2U_i+T2t=*e8OX1,6o4VAY'UBsHk'G^rWp
+ .,176X^#QX1tq%r+jbd]ldnI"CN=*"al7l&jUtE=MV-*Y-LP!#Vl_ppl@@\,\hIGq%3`T0F
+ A3_%!s7M"@6Gshe91M:j-r@X1,7uOT<$]@0(jcNs(PX-nHL#4VC"hU9K0@d,sYJMfZA67fl
+ 4L'G_7s*XNt*;-:VTm#_:2!egfj<HiRcd48.$]ldnI"Q0Y%(@[2/HR-V87fr/f$4D*14VC$
+ .Ts0'j4P1lu?B;+!Ns+B"'GbX$HR+.&7:?4@Gd']47#u$2?0'$3J.>FY^cF.B8;q2B"Q4J<
+ (9iZZ&cgcW@0'#)RQ"9=>Bk%dMf!$d":ugm(9i?Q&cgdL_?/#i1i9<RmHt<Lp.,176t$*$g
+ ts>r5C4Z+TVAZ@OllKL(QZjbp".(IOT9um_?08>;7\T6k@?Mi?.gG'"<W=$io/-'M$EZE!"
+ "1m!\n/F"G"!Y=<Ih@2qA]3TC2!HlNKGQ8Z0bX"9>l,=J/TdQ;*Y-(?TLUn^`sg&jTp#Ye[
+ qtYXd]9*l87P+>H_qTHbNEOXOb$"H_7a/9$rFjic=%!Pg,k)o#3_o<iB"_TL'R'GRVWbK3n
+ 5o]VIEB:"DRqng48D?&)=g(!%+.cSu`^Z!Ut\ZYp833l&KX8K@9^hjdoF`Tpf`mW;c-VlAN
+ ]D$m>T:c(gT2#:#%jlbc)e2)-a^H,H%%9Dqc^6HCqtA8?bK*4OnXlnao^I?RnDMM>;mM]?l
+ 1Z!D1$%qu+8ODbj+%!e.DPlTN#,ikpVn/1_KES=Fe/:lMBmDPCcQhf!*GFqKalpCL2StWG[
+ \mYIPgl*a%!4<4^dX/mV-A^h/q[fAu:<4T(#Mjrn5.Q@JK!os0NRqXqq'#QLNNO!PlFf/Sn
+ G;qYg:5r;"[:4oY5TjidO^*o/tBh(L(6p[mmE5%@'c%tAiF1XA`#B/b4UgYBG5r1@q[M!U8
+ FgG-g`[^&C)85b:BfPkg;$<Fn9ik-jImXP#jTi7h!V5=I)Vm2bNN0Nh(n^0j^LMq=QJ*K[n
+ eqj>V#U8t5!,tes$[_mNWdji2=^V1!kW*^1GO:hK*Bi@;FD0gVNJ%5mD^Oo,[u_,'7HN&@M
+ (JI<*.X8='t1)UdubkJIe&]hO+$B/@DfZK2pK)bI"se5I\/!Z)"WMIbUG(&p@eI;,6>Rf^+
+ \iT>8qeR>4Cmb'3;3uhkN]1FLqU"`f00]kbH&qnK4[jk,o9q(FlJ^Bk)G64BL9@Uds&$DXs
+ ,P!-*H>Cgl;F?i4C0_[d:FeLOod:^M9aNpZhu@j>?*@EsiOlc&lUHgGA?o"mQCm^4oRhd<&
+ ^Klj?mFUc+sr)D=[\dc8q5Od`tj6"SM/KLS(5O%D]M\c!_d>oUr4h=&Z?bP4,fctKp4V@b_
+ jFb=8PcX`G:UAZV+5!\7^BBi_UITP.iYP+%gGZg?@AA&VXn-.c"=k#a]UrG;Y?Y6-MdK-gh
+ aSpcf4on[qXhmSo[2VN^,W=$0bM-<gK;)U_SKBXhR^!_!l-sE?J+i>2*^uke>5e?("RK'ZB
+ XXT<.Cb4M\rGCfSCtKALfW4WEGA`-LCa+r^XjMs-lA"s1tpWdXR.!:B1<!*d__aSimSeFgX
+ YOo<j0=H.uW\,;G3A&cauQ<FNdhXT.ogdoNUki1Ca<n"0$0djn>?E$aZt[9T[?8j0!"-^B!
+ OW@*pV>,g[9fqQu?Pkp88T2Y%88ps702+fHXe9RcdK9aUOm#N1Q))Nc5b?l=(Dr8EtQGB<)
+ rl1DuY>'*2f!S3/`uYNe;7Kl`n/[VAo02rc_7nQ((qpM$&LlrWV*:R%UIor/WFtT%e;E]ab
+ 5O,lejbN=^*=\p</(e\1u^X8L37q<fa1)9/&_VE#uC7cN2pQO"FsUa<nIcr<r_ARP=L]%/s
+ _17a=h7?.(*B\:IWG!>`a@anu#S3q%MR#q8Kb[8PMo^]m@I%0?itFB;.N@,>kTK\+!rK!&:
+ cbfZ(p*J,J?^p$2hi]ZiK&WMrLl;X0CcDg.gHB[9(aFoOe-Kou+W4^W.cBMdi8^,,343FAk
+ lBPH1&EI'q=<Yo[[$h]ljh-L#3"V;gM$CdBk@`t)77uZs,"$L@\]=A);4WJ`so=<rU%Ac7i
+ e/Y:h`q9kil'X?*pFgtM?#UHtc/f],OT=<02@@'Gs+:hH4Og-e0_L7727Yj?/(8.,UZPe<<
+ pC>j/WP41.m92JXA7)l!F;:EEh(12Z=T("!+0eDfVYN?s7UB;]\'u`U"&kY>EE3W/lrU40C
+ l[;#9poOGPQ@JRekZH,L;remQk/BfHX7mqm/coJ2sCA<`cL)a\T34NH4h2_L3ZDo6aZ>^Qs
+ mZ_Y?U]6e'fWIOuro7BKlZi5HMq\^X[R8,rpM3"&qo])"MG):uKE\m*WDI(MF*WJsMu>rkH
+ 3m?u&!fcP>1:"ssbqY^?eZRtUH#_b0:'ed\`iSko84?`\TmONcq!_<;G(H*pb`MYmW4<qb7
+ 2d=2=SugF3Xfck5N4opM?e`!<NZR$T+9->Lo5F@[<3In15Majof*cmAHR&Sn'162dMcW(8f
+ LT(E7\iO<[e+!W&*sg6Nhk6s[qeKom.Q?E9Q+Z$\t9FK^6ZNi4V@_rVUNDJQEL5`f>i"#RV
+ I-%VFEc0\j#mn+;0rTW=@b2L-$@+mu;6k>OD,*M+`.cZVH_!(]bnLHPH2%V)>E_F`?D)egI
+ :%Jf&nZnmO?/+,cRC-0p7$k!WKs*,=>0EJ?Uh!!;Jh_H'^?h6Q/AXK6N5,;hXTq:/84pB"r
+ uM0u%EXKm2YZYt%G'^@Z]m#_8ZG]skqeuar3q*.[Afe_IH(`aCfH3eGq-AF0B*_'O[6f\+?
+ IGT?md@G,kWaF'n#loh?]u%MQ_S=aYdN9OIo9B*GF:mGcmmTF12H&3h.4OPE7u!:phVJLV*
+ XMh'j1W<54'@[VaZLkT!I3O\OU(i\.4_<CpTuT'C@I'EN-?qYm#_;+.>rm#'"PF?gZ)>n[V
+ nV6:1\.SfAQYmJ+oRiS:/e*>M15%5_,-:NfECnIh#':Y9RDhZF$BQg4ZWTs4<CAo#`![!&C
+ &Y2EgV2%^to&h6T_%7&cm&q+4:X&$>8BkhjB?BktF(G=2+f^WHO%-aU[e7G@Sil$3crqGcP
+ ']oGnWXL''sA[#<DbOeX)8-"_cDdh*=+)^n/oDhB(I*0b5m'=/b?MWchZ+#u]&cd;&p;3[p
+ [RTc-)oQ;\A6XcJ"cV7m;ni4p!GDBV8mC'D8@5Tk!e;B2;V8FdnpW*J[<8pmEd21jlFQY$U
+ [OILp.,2QQ`,V/'\NRA31Q*bSlP'.O`*oT3#Us0?[JUKl2NQucYm+B,6>T03[sE'2@78):F
+ igunj.@&kPiksqB&237fn4EF]d:6Omb2W?[<D2JUK?FOZ<XoZV/Gb52H8(MsQQ+i)f@tCtm
+ Q\G\enCnQ/<l=&.'+RHidMUb<nlkg5lS*QqZinD'>NZH\u`p^HMkro4m\lNdLYem@!)8l&V
+ 9Z_s$kW)TcP4"2WD9,gmu^Iqp.!-"k0_MZZAi/<UR5tr9#Nr;BBJc^IG'GeFRXAZ+C5AAn!
+ ?2_\$dao05[%X_nTs$sM'ju>/=f,s5+FRf%!/6+k[=&+V].uH(`i/fB8mbg'OrT10T7'A3a
+ i`uBmA[O2OhSO0,Voc8s*H`2"XX/3P+nQGW+pTTqC2T/S1#oii<c>M.C6@#Y.F>AUb=P)8V
+ k5-.))n7El7@iNZY8rr=A..%7%4mYR$OJ.+M*2S=X$:f'c7=D?,h,KgjqtF_#iBr$O'rrVT
+ =:<ucbO6"(@%+'#>A1,r'Z9SN9.'*&P>=9R7-,#9qRs*SpNWr&R`V$A.%;-3tTdn3>7#%um
+ ?<Uh`j=!)t27U_DZ4qN"HEL^[s:j)K(Ub=t5$&l_F0mlHi*\-#&YdZ[gA*Ib?5bb!W8/U5`
+ C4qK=o]W;us,HY^#Tt9f=<s&B9YSTsXc(p4SFi'P+Rr91,bF[$V5Un!QZVnUVkbt8!""Cs+
+ sDA>W=0Nn8P<'uIR<mW"HZ/&//$JLPj57-3[lNC^HX&n8HMF"'G_#A$)Ij+\5##h5Q72F<=
+ 'd&:fo!O-^>UPi]TO$9Bcft5Q[U_89iH12+,?0rq94RCD/t[;-5)r/P7TlnXcBDSh'jh-nL
+ P%C),>l8Q!7tMY%Vj+LigNP00Zs^+,V@UAji?dMF?_J>08=2BN6\;oO46;Ul.N8meIrJr%8
+ f$%4YEBCU(8B<<A.peb-=ValtD=0\CcR;1UiV6<o"_*VRmZlT\6SZ:=<YO:]N:Sf^H!!,Dp
+ Oj$!&htl@0qPfWb94,"*JqCi`aZUR"YD]_WWp@u(?a]q9J\hI1O71Q:/#KA%s!)sR!q8D]$
+ To7$$;WeAPPs8TkpmR#s%umkc%f8'kJ)C:qVh\:EtfC'[m@u^;Gu$5^+"L/!q7uQ$f#HMMZ
+ %Wg="jTUoHap][jWfs4ptBWVgk!^pn,u90`Z]tYe^-P;/3CorCe<8CB%T963c@8'Ge45pQQ
+ Si@R#o)PJ3+Zp^i,_3qQ^SqQ&8ps7i>\[1'ih-nK<j?WX8>MXb5QX4MeGI5qE!'ab=jij3X
+ k<#j=f?2T]S'b.rC-nN`UO/gjYK9KH:#iIi[(5Q_%MZ#[-+mFn'J59!D+K@"c9i80fkJ&Nq
+ >m'Qu$4Ff3Br)$5(f0TAWp!O4QSnh`'GcMPf9GR#@Q]PqX60GD^:F?dU9HoL5+uFMJ+H7rW
+ uHR?$4Fd`M2Li!Vl9b_QG1-8#bnOg>dc%<?H%0/%T1b0871BWUek/9?;E'$=2fDJ]3>%L#9
+ \`;!X9^(A(T0;:J,!V!(9Xc^s"hSj6>#[(&tW4Pn(TV'G`C/7B(8V`j99S$G@j9YljJ4Ka!
+ E`>H+2D`q03o+apTtn/-i_SG9UOnat"&jhI"nh>qkX_?(4l;)+Y</=!s+!I0I<!Y0WSW<"K
+ go,l:L?h+1Z6X^#Y*`jgc`H(D4VlH>T^?P`DK>I[jXB%'IYATZ?l2c-^_?*bc5CA*`@QCD:
+ CB*0_?haU`5[a[t^(fo%MC/m4\,Ie(m/q;HK`s#bq8k]_r3Z+(&&<#r(9m!?V$<r%:=$)Cl
+ o3@Z56+b^=MV)cW#-&+h#S-.Ka"Q9D$NLEME:\885B3cm\-k8F\aI:9>toe:?%*15iSNBJ/
+ ^\L@Q_td=*b,PE!_4%>]RT:jbt1XlM0KOOH:kAi0(8oQ*+RV5PRn93<6i('GbZ665@].ejU
+ >RZh,XG?laq)h"-b.4]Euqe#QF/VZ?e0-nO;Vbpo$CQE"9eVkI,%GDdfU5bapUJ?-,sqF#i
+ E/FR^Vhk-qs>gUBgF]M&2aNk(k:/G'.D4a\1SCA8Gi]iA/8%).+*`oKLfBI2D;Z_Ie$4D)d
+ ZARbF>EmZEfQMspbS<:6;0S-E(BEG]@0$md,GoDIUnjshn#)rKNbk1o4n?2PgT8lck6?H=:
+ ftLP$WJZijas)u.Vu^p4oC'&(#h#HJBq(p^`203.RV0q?MO'3W0(ro9N7E$>,-H8R4,kK-n
+ O;E#?<<fadaEW'Xh:u*a><CnX1f@G:5$#RI;QS7E';=s8*CJ7CGpQ*aPcB2sLhI_#cl#=MS
+ -6<%MZ^%.D2ZU-t&uHmU=;I_l*,N5>X&H:k0>.dBSs;;6Rag.>gX?3/-BY^jc[X'!ZffCsG
+ jfQR(:r$=M%<d0lP3'^B8Y^jd2\$=ageC,]gjc//X[2%@V58.&#1Z]tpO:3Ngi4W,?QLiX&
+ oXA&W4$OC$<VL9<Gm3+U$4D+IY@Dl;[Wbd+aZk`..C/-nqb.\7oE!`6@0$tF4e2J]0+W*2Y
+ \dKK!P!`u![>@X<18\j7bu\XSJPQbCc`^%"5$"M!@cJs/E^[']?dh#[UXRd?ibrbUcbM`3V
+ 0.kpV*m!hKtn+b:A,<;-6*1(_t56^4!kl[cJ6d#Q!pZ/J']F$OD&H`H(tC,CO,2gFb.b]V7
+ miCaHJS<"p)ZZpgsF.dH9Q/+(jdSfjWV40cF"LlT=RZ9G3r3PYL(Z+8U9MMLkBHmT31-OL7
+ &qHcig'\BH+f\F!q7d8@L"#Iosg*)b`!:NEd!HI^2e<?>i;H1$/[<6OmA)4`^Ko=9l3_d8e
+ GN46<^n4G*5hq]*/Eb]!-aXVs>sn;=MDGVIG"iPZlePZL!Dln6(P\ofB@sGkc-;a7(YQ#hB
+ N*a;<TQ74nod\>&*r$Yp"1d@5_JJK5OJN4;-:UE5+l@F>0jgmYjGV_2r6)iIdupoF'IbDHF
+ L<fqD@e/+!_@($i%Qe8p+!.cU/3PmA-t98o<V.Wo><NDp/crC55FSn/JqTT8>noUTf8EbZ7
+ S:f<2)3DQJmFZL>M)HZO&c\V3I*:DL(uh0>S'&g)f2I,YM`QLh<[3\0p@[]?T8;fR+Lrm&X
+ F@D,n"nd7PoK`jeP!WO"2U7MmEE3MW:h\FjMHY)<8'6EcRqscI>/?_=5Ts0&sXB/7pAnGdX
+ <?/b%meDdqVN!N,QX2d:4*R_IpI(;1&NnDFM1EGErp_S:;H20;S);G3=P.dk\(4n>>[73\F
+ RcBfN<f;&n0fjG/#-(nZY@l2>D<%)B;2DEIjV17Dmjmmn!5&@TMM]X/jD%@\56;C=#R(W-R
+ 0ktlIC%.,Pu+leG=94`L'7\TS[U:+t+iji%*\c.TJo#^\ZIh<snhr:s5`)neDt%cM$3!I4B
+ Ahq8ir]K#.S<1IaerldcMe[BT%G\@eP(O-$!(5V+<7i&@-*e<?JqEp];W^F6gO`k$<EneW%
+ T/H81VY+EEm-j0X+"oRMp1&[jApV3?fARX?hiIO0M\qg4Q"JVWpJ.IW<;9rl>4$oaImh5Rm
+ <.uAA5<OLq-nO:D+&l+`d%Ql$OBc5Oe,DTS0:,b1f;%D^-P.#H"aoOg.[G/HjAPNb[VNI^r
+ `[.4o<1p\-F.H863'ha^n6@]W98q#S0T0,]@BudnR-W2[Ear-T0VQf/Ds;s<7J6j=b#t5hF
+ f9(WNL8AH-X)#QX"g/:UqMt5<j_E;-:W+5,Y-Ho^ij\:B>Dt[?9PcefX*SW5m!*:S;bC(@\
+ 6j/(I?_4b*Ci>k*QgW4?ocNRFZ"#A2\I/C1kZhbdLk\#-+&k6kW6.A"h02:enA?F\Y`B;2D
+ JDtstPFFq@2^@`Waoo'a89tZk5g6Ph$mkT9c[S.3s+/(qI-nO:\hbp_LJqB9IX`Phq\anNB
+ K>Qd:EUk=gkQHSCr+rTpH@G`qCCasBdTF-,lo):YB?F"Ii*If_i+IsJeFWIqUVmi1SD!XLY
+ N`dl;\Z_X$4HX^?`L&;lI7BT4uuc:1XD_u(\BEW.14i<Ka%D@.A]pAk9hQE?+oOfPO.(Dj2
+ +]H_WL+Q+e9fA8:_7J=MX)(WMjIa[e\p>FJu0f^"HVpFh4(?+9aeo@0*!iX.l2`T,oYW8E\
+ 42+^:rCb7@LD6PL=*\IYa>a3P-N@or3o!e\@UkRmB<'^-*^"ao_W.dH9L/Zk^TUNdt'Wk#d
+ ZTWl!'rYD%S5>-R>;-:X6Z;f=pkg3f/6oriG[.2pPPIG":F:\1M$J^WX!ra"RK&WF#,[3Bn
+ cBZ$s_k=4KHD(0e"n"ig!WQB%U7T\\5'W+g\=;1J`:J;>r%&$>7UZ>tqgs]Ok0<3:hFHboY
+ -'PWc;'QuQQN-@qbUD1s.3(;<HWc%F\?LfhB\[`Va?mEG*kCj]io'jO&Otb-nGo8"'!ckmb
+ A0F6ooMMcn'gdQKuBXitQ_[$4?u'[YfD1n:s$`I<=m\_'4NK(@&0qitQ_[$4@!R8eq#Hs82
+ PKpX-PJ)f*[SMJ^i\ne2bJ'86SkiSuEQq='/pM"f;SJmD:`$<s?Rb>2*q:)"HLKGZU/N>pJ
+ T4H<I,*LgP8fJ5ThI\HmfU9Hm*Cf)Z\Fad4d<-@k[nNK!8<P68CYk`U8r'U_V6t(Y>(nm[q
+ !s]TupX-OK3l<>uea#p)TaJ0%YWu%'n//cEs*BEE+0?sHRr)!SCV$/9:^,QM=<K"MWMjIQQ
+ :1L-EEIM34G1LWd)4q".aX3m!^Z@TML%Jbl/CWA[%dEV15!I+km8N(,!T.[2A?o4MQa(ZBB
+ dinic2?"\R@kneqjTnXju7hk:4i5_?*$nXAULIo.siD2t8l]ErOU'#)02/"6AVpd"]C=!Ra
+ V`ISs*C)B(Mka3fbpB-&`TCp>$15?ECo'G^t9;(CkQcX/+B7k8=)<Z2Z1=5Vo0;rpM"JuMn
+ NfmN`p=<Kk@W2OA'mK^\jBLPSc`nYDXDoLS_4iIX`JuDFgbLI9_qlAG(!^3t_O"T!.9D"#J
+ HIsN,Ud>TleGZT:^/_c=%Ge'SpC.'l)K]ST:2eNo*W4fjYX!^i;c1joIlUdsNjb1d3RaY*i
+ @u`EWt@>M8qrOEn9V_,pEpXFosd=O-62,F4oD%gDu7ljgXO5+C6e_\!"d\9<7LO3e)SEjBM
+ 7HtKa*/^I,?)2Xq<3.SJ&Y6Fct>drHRP8Sl<shac?o3;11o&4c_]\9Y?=mgq'rJCpJc`8&U
+ 0@!i/-n[%:>+$O"Ze.dC0FXM8utXU/jigG-fXZJEm@`.p7&ihl/.7U@Mp&2<!C;,;@YQ@'S
+ ;\TiA-_.:0RLPX8n"@@b/P,H?!=9,gQ<Loa*6ScWeB[QLi`<MO.5`ZX%h=/1@:+anh?-4[O
+ "bNYElMP1'UkD)*A[J;-HEGk>$f@G0%rh=!,sB2[]M_iSG_W8tVlD3YT#9D;J(J4`iDufPL
+ _"J"flc,ke\"d^+F*<U;,9JDJuj*0F6WI)KAguNh^:V*iENd5fCn;='GeKr@T_r<kg3f//6
+ [.jA?!CabLbcYH'01/d]Cn;/si685[moqU7Uc,kDO!#U;jceB(IU%T-?JCiBnFRE"DM3@=d
+ ?>V4sR=rcY/`(@<T!3SRrU?.JnlLH5:pMB:\M?7@E:4I]@#oABOO[WiJQ]):-,KDAQJLPsK
+ "pe$P6iE9J9/.aoc;c1jscV+mgU0T_$Q5e&W>Wj7K>HrEKUX$r)D7Ke'"VSYL<RgWJYDj<9
+ U0T@1)frKW4NXa,G8D@fn:U5f[>OW*0CqeEJ`->S(%j]gpaGYZ>'KtRBa,gMMB3m(gYiBT0
+ :/?95U(GX76R:Alj3,(>'K)P!sU!Q=H=/gm1<?qH[DAd$4@!_=&d\58.Vq?=&ZB@Cs'0L<:
+ L8*6-bfijDLMj;nf!2AmKi8RbB8BDdHUR<O1[hiM+KML#KfAQ06@A4#X#/i67A9B:Rj<X^K
+ J>]U'sB=<N^>Y+hMC*Z?LL7-e$F2s,!6Gq8TcmO:?\+f/>>($[L`Dagkk0/@gl2Jp*0Q<Wm
+ &7HoA$q7-MK(B6rp4WjI7@.>ANU#aH9#356Z*[Er4+m":sjtNtT&'oFgU+L/?*;R,G+;Wj3
+ ;:!t("3#'>L<A;*"r":5Nu"AZ&5fG(43VL!bLtiY;$m[VMl0P(Z[@%JnJ]!4mb0.s3SC4W`
+ MYj]k'X^-hY'MMeSC_hBIPJD.,Rs#cbbBa`G=[pd,t7m9V,d=6h_38q!_2Vmo9+/SAW5#-s
+ c-578%'?5hVm+SiLk<bLb)](QZcu(mUH[&Fl/!cU='lN-(H=bGVF(5(g]R6'J<05?"IlM5S
+ ]Hf8CC`9ZmK#<da8O1Z`qe_n6cRT,qb#6t(XWPcd&3P:#r::SCGHX4N``bQcllI.G/W2fp^
+ .H-L\M;If)T9<VG)$Ns1]lMO>JhFftbmO?dO`F*Lgf6tSm5MT;C1G(/EW*!Ksj[rs45l&-O
+ HKNN?,Mk`\>WOUk?ufT'pPI4G\>huq3aXL:RCgi2bE]pGJb$1*H58*t-f./`gaHHC0KJatp
+ f<tsQdEU!M/o!8Mhbr#6<;rlV6E3=4fP0I'e9pgqljq+DQPjeT=8oDnI!&X=*6`_GqIZ)V7
+ C#em?]>W"Tmf?.dC0O4u%7B[4?Q7WkerM%q4u>^^[]_]>M;DDOXa8[DmpP.YS$--&0+O+8X
+ =qnHc_knu;Eh;m]L7(N0>UZa3o2`;+E[$4@!of2U8knA>S-Cn3ZD]X6JT5"/6QnQ'I8$3(A
+ bd3BXn[6/)nCTg_F$O"V=<RgW^:F>#k@IM_$\06'sacl(+Fa*@(^nT"uOMe`&Is"pfZ]j5E
+ 'Ga4^O/o5BF.XBp*^R7Mn"4JO:9Wj^i_b4XeN1l^?EGiHTWg]NI9o?*?i&2!nH-;hau^+N9
+ [mN7;S3CAU0_Kpl1%O>H@*3@AW+_X-nGpWO/f/AM'p<!(XR$,=&td7eRk@!?3`I>U/R!BBS
+ SONQ07KdQ_:QJn3*SASfdl<U3H^p(2DNe[saFU>eR+`M?a1mPrW/';0lV^CWM,E.YS$-AV5
+ kdIeL+IiW\s>GXra3f#rB$GTbq_293ld$MS)CYZuds!l;?N76Ss]5?g7"*k7[5TYY_%d\Fc
+ #!Fp8`S($3mgEtdg^=oVh.>7p,A\O%Jp?[&i4F\CXcUkG\gS?XD9*#.>3k[e>Fa+"8rVU+8
+ ?_nGP#aD;<l8`k$V$/_?'AAuNP0$q52fp_C=<LpNQ:kID51eOj.>7p,AXnX(8kV>E-((op7
+ qS6L=Zo0c(Pl.H*p>;]7Jisn\Qja'!l6fp76Pd9hL(2JhY!V^#*UrPNt^scic7ulFI:[m*K
+ qCZY4_]=8n!99l)d!2h7KSALX.d8R;"Qt)g%s%2%ZMeh8S>nM6NJ9Q:nkY.4c#Y>u^!"jN)
+ 5uiU]t+Sns%)HX6@X%gQPUZE[Zoau`LnrM-S^E-tGM4YpaE'!Imn/tJAF0QJi3@H-Z>/2$0
+ 1%eElpjpY%O92J_5i4c4cT%0kHLf_nq2bKDT9\hfoSgW4ehf[c,@9s=b9kgaHr)a#S"bPbf
+ <Rd3@&(\9iG^c++hHRR\GX9]5>IplQjV$abhHtJLQ0@Ot_?.QY8OYeaYa"p2MI)]c0Rg4jI
+ c:sU]eo%3$d0iR]Nd'T@=`r5UnXI<rGIqn<:S](;tCI<DlFd$h@\O18uWm"0X#'.k(pc-.4
+ c#Ufdc:?^]-UaWT(=TQ^/Rai*8DgUf4*gJdu&5"!$I2k`r,!9cbsSTWg\sh5@!=$Q"t;Ti8
+ Sm/C!!3d9mI9l5nqB_>Da7=>!HX]ghp28R[1#l)m'3?+Qi?Zttns.KYM%:H'-0'mcNt:iN=
+ %SWWAg\O;k,EX<'\"PI._W+Wu#*mu9%7ci<W#,A\1NtQ@<g4aXkGs0;Y?7Xl=+T?,OYX%]*
+ 8OYdXf++#d.5L0<=.'NYAt:8T(::?N>iPDo+b0G#LVa)nnHfs'4SIDul&d/74BHU5S%KJ?X
+ g>shK!6`\a'i9^G"l\^[9id-pua%V&.kmBeFUR":6HYI@P/XjAMBFnojI="_"i#-goV7U.V
+ 4r>FGRd8!ARkK4jQ>W>C**$\X("O?nrP_1#dUQEm6YI:lfU@"+..XOn^H2,8:n!LqtS+3H]
+ ))oLKQm?a[mi3&g+2n]E,`$[S2X]O!_[gV6ig=<Im@<@U^cI_'VmD.rFV\*R[Z6C[Oi:,\K
+ c<P#YaAWg)jmdDj5KeI*9A%>!_-nGo40mo(-`f/u)DVa-kNm9?rd:IX&G\E7=XmYU2YIWC8
+ 2H6jpJ)T3&Ka!(d,:_u(o[2XGo0c^2q'?5D3a[p]DbUjZ]"M?XSAW5#-s\>%Wp:@Q"bL-eM
+ L,:$mjCcS'4HkXlc]QU^!7<F:/VD_P[Zf(@9tUZRP4Z'Mh](M5qkSn4Zdi^C7C3A_S+V,Zh
+ g-Y.it7W;Q^6db\QbJkrr<(d3/i)"@4[Uoj#.sF?BNk<do(\_774PLP\MKH/-c[*9K,.kN'
+ Y:FlG'_(f4>MpRY>]:VV>rd_j!>W\5nZR+Q\1Hq:/kV^EA3lc_K3b9^mQ<f"N=@RFQ)hg8<
+ k4j02dQQ@Kfcs4?%Ci7khDW:=\GV(h>93f^LckDKi/Dtlu<RgW"DiBf"-@Tr`h_]tr?)d^Z
+ #:SP:eFtuIlc$cU>qXMJ$4HXc3#2,al;od;LP]AC5!@e2FI22'iW2Yf=*6`_GqIg@h;#5#q
+ umiH$4HX`pQ`m#;:!q%rd!e9YaY+t#1GY8:MA.TiYb?f(7%U0Rs:t`E1c6eY^jJOY+hKg"1
+ j.Pikr\f>+.@@gM/L]CNL*W&ga>#SShlH7#B6V96?!,!rfVo76Mahck,G5i\)U]cS1aF'mc
+ NtN"SoWVj-BW%eEkq1Jdp;AV@o%r\dbF4`#1cT.=Or0Grj5odK>O-(`;+OMe`&Is"pfZYt'
+ bGE0NArYEDSM)X;\kJK$ne5`Y,)s5C+>s(]8UfqCkb\Q'.P6/$pU-fV1n?F??e<?;gHL"Ts
+ s+^!.:s5`km1TrkH+4.><D"*jjV$UEjRr4eM9A1f0$tgL$i&@A.dC0L\=`C1nY=Nb1CZg"\
+ K3:CVSpiU;iC9]LGuH&k8&riOIW#KJ<.rP;9sI$4&1*\psIXi#7X.KTcPH8VSqD?\O>\5RB
+ ;&?KKOqlI&sf7H<ttRTHCL^f<)('AqRcoB8G_"kU\9OfFtdV&fm^NJ7!_-76N(KWhNt)oGI
+ +tr10#\Ap]g2/RGA@X4?$IS`TP<Ef'+5>;";H$4HXZ)AVqhR*eQQLA4j'YrN$K]hAqOO&U'
+ Ul1>$?f&7'S<Ug^l(QTjV(@\@Z.dD<EWU\Cm`4s0Ag0hSVlZ(pT$7IFJ--D7o&V&op6X^"&
+ H<R:i(%pqJ(\A5B\u;lWS_9+.f9tX+$DIkjcs^75]Nh0u'Gg27O/o3,.kA<<EKg#'n[66If
+ `lNsRdM\4X2&_h>U'3Ea['5cd3/i)psNC^omHPP$X-d7*M#1\o;@';d)Y/=g-\M:+&[o#og
+ ;m^qk9&fr1e0(_FOX0$O;/2rdqDWL;F"@e5o(%^\m1H></7G;uc15F6^;\rN1CW=f&SWKig
+ 11/jE9A1&0pZVnGmpQ%$!JGlE122TA8~>
+Q
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.svg b/testfiles/cli_tests/testcases/export-area-page_expected.svg
new file mode 100644
index 0000000..ecdc717
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_expected.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ width="120mm"
+ height="105mm"
+ version="1.1"
+ viewBox="0 0 120 105"
+ id="svg10">
+ <metadata
+ id="metadata16">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs14" />
+ <rect
+ x="15"
+ y="15"
+ width="50"
+ height="30"
+ rx="5"
+ fill="royalblue"
+ id="rect2" />
+ <path
+ id="MyStar"
+ d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z"
+ fill="red"
+ stroke-width="1.5"
+ stroke="purple" />
+ <rect
+ x="29"
+ y="21"
+ width="53"
+ height="53"
+ fill="yellow"
+ fill-opacity="0.7"
+ id="rect5" />
+ <path
+ d="M 56,69 A 18,18 0 0 1 38,87 18,18 0 0 1 20,69 18,18 0 0 1 38,51 18,18 0 0 1 56,69 Z"
+ fill="green"
+ stroke-width="1"
+ stroke="black"
+ id="path7" />
+ <rect
+ id="MyRect"
+ x="24.5"
+ y="18.5"
+ width="70"
+ height="60"
+ fill="none" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-area-page_expected.wmf b/testfiles/cli_tests/testcases/export-area-page_expected.wmf
new file mode 100644
index 0000000..92421b3
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.pdf b/testfiles/cli_tests/testcases/export-area-page_export-id.pdf
new file mode 100644
index 0000000..c567930
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_export-id.pdf
@@ -0,0 +1,69 @@
+%PDF-1.5
+%
+4 0 obj
+<< /Length 5 0 R
+ /Filter /FlateDecode
+>>
+stream
+xe=NA {] xDBXZD%B4hd<VHfp}8>n7 7ʗ#*[K!S'eDX9mt1Qn0sH\u:xgԄkIԳlʵoL9̰&0#;T<WMK BNvQ6??b?a
+endstream
+endobj
+5 0 obj
+ 197
+endobj
+3 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+>>
+endobj
+2 0 obj
+<< /Type /Page % 1
+ /Parent 1 0 R
+ /MediaBox [ 0 0 340.157471 297.637787 ]
+ /Contents 4 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /I true
+ /CS /DeviceRGB
+ >>
+ /Resources 3 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 2 0 R ]
+ /Count 1
+>>
+endobj
+6 0 obj
+<< /Producer (cairo 1.16.0 (https://cairographics.org))
+ /Creator <FEFF0049006E006B0073006300610070006500200031002E0031002D0064006500760020002800680074007400700073003A002F002F0069006E006B00730063006100700065002E006F007200670029>
+ /CreationDate (D:20200404202009+02'00)
+>>
+endobj
+7 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 8
+0000000000 65535 f
+0000000615 00000 n
+0000000383 00000 n
+0000000311 00000 n
+0000000015 00000 n
+0000000289 00000 n
+0000000680 00000 n
+0000000971 00000 n
+trailer
+<< /Size 8
+ /Root 7 0 R
+ /Info 6 0 R
+>>
+startxref
+1023
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.png b/testfiles/cli_tests/testcases/export-area-page_export-id.png
new file mode 100644
index 0000000..6bf9b04
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_export-id.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.ps b/testfiles/cli_tests/testcases/export-area-page_export-id.ps
new file mode 100644
index 0000000..6de42c9
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_export-id.ps
@@ -0,0 +1,130 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Sat Apr 04 20:20:10 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 120x105mm 340 298 0 () ()
+%%BoundingBox: 115 55 291 233
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 120x105mm
+%%PageBoundingBox: 115 55 291 233
+341 298 cairo_set_page_size
+%%EndPageSetup
+q 115 55 176 178 rectclip
+1 0 0 -1 0 298 cm q
+1 0 0 rg
+286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l
+120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359
+ 90.914 l 252.969 145.938 l h
+286.188 194.75 m f
+0.501961 0 0.501961 rg
+4.251969 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+286.188 194.75 m 227.227 191.418 l 191.059 238.078 l 176.008 180.992 l
+120.438 161.023 l 170.098 129.078 l 171.922 70.074 l 217.66 107.414 l 274.359
+ 90.914 l 252.969 145.938 l h
+286.188 194.75 m S Q
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-area-page_export-id.svg b/testfiles/cli_tests/testcases/export-area-page_export-id.svg
new file mode 100644
index 0000000..9fb1575
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-page_export-id.svg
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="areas.svg"
+ id="svg12"
+ viewBox="0 0 120 105"
+ version="1.1"
+ height="105mm"
+ width="120mm">
+ <metadata
+ id="metadata18">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs16" />
+ <sodipodi:namedview
+ id="namedview14"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <g
+ id="g10"
+ transform="scale(2)">
+ <path
+ stroke="purple"
+ stroke-width="1.5"
+ fill="red"
+ d="m100.96 68.703-20.799-1.1756-12.76 16.461-5.3089-20.138-19.604-7.0445 17.518-11.27 0.64404-20.815 16.136 13.172 20.002-5.8198-7.5458 19.411z"
+ id="MyStar"
+ transform="scale(0.5)" />
+ </g>
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-area-snap_expected.png b/testfiles/cli_tests/testcases/export-area-snap_expected.png
new file mode 100644
index 0000000..f35894b
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area-snap_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-area_expected.png b/testfiles/cli_tests/testcases/export-area_expected.png
new file mode 100644
index 0000000..c9ded26
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-area_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.eps b/testfiles/cli_tests/testcases/export-dpi_expected.eps
new file mode 100644
index 0000000..b662237
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-dpi_expected.eps
@@ -0,0 +1,261 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Thu Mar 5 09:46:17 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 3
+%%BoundingBox: 0 0 173 90
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 173 90
+%%EndPageSetup
+q 0 0 173 90 rectclip
+1 0 0 -1 0 90 cm q
+0.9 0.950196 0.9 rg
+90 45 m 90 69.852 69.852 90 45 90 c 20.148 90 0 69.852 0 45 c 0 20.148
+20.148 0 45 0 c 69.852 0 90 20.148 90 45 c f
+0 0.501961 0 rg
+82.5 45 m 82.5 65.711 65.711 82.5 45 82.5 c 24.289 82.5 7.5 65.711 7.5
+45 c 7.5 24.289 24.289 7.5 45 7.5 c 65.711 7.5 82.5 24.289 82.5 45 c f
+Q q
+82 0 91 90 re W n
+q
+82 0 91 90 re W n
+% Fallback Image: x=82 y=0 w=91 h=90 res=300ppi size=427500
+[ 91.2 0 0 -90 82 90 ] concat
+/cairo_ascii85_file currentfile /ASCII85Decode filter def
+/DeviceRGB setcolorspace
+<<
+ /ImageType 1
+ /Width 380
+ /Height 375
+ /Interpolate false
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ /DataSource cairo_ascii85_file /FlateDecode filter
+ /ImageMatrix [ 380 0 0 -375 0 375 ]
+>>
+cairo_image
+ Gb"0WH'"9PS\T5"b>sR!5geEA>#*o-O@iO4X\%*-qcMm@A1J8n(%L39mSUBAm&DJ3@:ip8)
+ &VLH0Le;2,\jHDCQ=u(:dd_5R$mA&Hg^cQIr2eK@?;Q,q=WJOchCMul8"XcoqhP25Q/l$&'
+ n<a=Y]l$e'lpth:o&06UsLLHX2%i]jYpmGE]YOWEc85od<KkkZ$,8VKGqr2Qt7:-')?F?!=
+ G)ijoKk-,M'kinDa_Y#9\[mj_.*Y"H7?<B=H9>cZ;-;Q[:r[X5ERX3R;3b[Eh$MJE<8#+sH
+ ql'fM<%cb>QXprUk*6_gmNoJd.*6c5=-K$;T%EuX.b[CR5inD0fbeY8Gi$b`;beY:C@02JK
+ g;"]P_&Of[.'=$'_&U[-!fl9o^`:S7*%'SlXprUk*6_gmNoJd.*6c5=-K$;T%EuX.b[CR5i
+ nD0fbeY8Gi$b`;beY:C@02JKg;"]P_&Of[.'=$'_&U[-!fl9o^`:S7*%'SlXprUk*6_gmNo
+ Jd.*6c5=-K$;T%EuX.b[CR5inD0fbeY8Gi$bafT&-'15+NTQ)LQn)Zn(3Op67M%]:7T1a[&
+ Z[SCC0sPiP]C:jJe2Y+@8J=&<mBL&2KkPc(_":TKNDNfG0OW`uMS>:NYLZL5o^]q68;7GSd
+ NphA!N>+I^Oq2&*.=&cS.WB=7!h/-=K@W,VWf")4_-,TGS\%bupH$Akg.GUH:5tWV"$7cHh
+ 'e[B24b`3[f-_7Z,e=W5qmTl2p=qaUrU-66RJ4Y.-Q_1=\4TD;/l=VT.CL?Wad&[m>jX'!=
+ &`=5rpn1+]PI<1SMYNdlgF)i>4(:_E%g-H1oIM$a+\fHXgLS47JWPQ!`+AUq<iX@Lt:[kMp
+ 7;?:V_7!qm-[>0/RUmQ8t"DH1]KCbkh/A3iB@&pDCS.3j'T#jgj)D[R]13b[3ZXB246-2ru
+ _@&gd\)OaQ<$Fj*E08sW+8/g^,M:-^GU76;9Q2g<GM@7MX&6KOH-R(Sg]_K_@/b%H_>F-s9
+ Bk$S\]@#gG'3LGFZR,d78%d%./ju>AgK/o<O3DL(H?k2=,Ng#)UR"IDdj5aSXk$S\]3'!@Y
+ 3LGFZ:(HDo%d%/ZPCkl_K/o=ZjBrJ[?k2<Y3LGFZR"ICo%d%./k$X45K/o<O3LJjf?k2=,%
+ d#`2R"IDdK/l[:k$S\]@#gG'3LGFZR,d78%d%./ju>AgK/o<O3DN?,=++8U_DaPg[Md\'kM
+ 'dlUU/QG8l:IN7gXkUL;atI5JQN0\M+ig=DZj,Xn1[mSLa8uVfbV[g:XgC:R!uAlo!h,VQI
+ kI0quZ_Im*`n=pmOL([_Gh^9&%F'p<bPhsPX3PmXoub)6/%oL"npjfeR[^>H-I\&PfRCS'A
+ ]m"2\^4SADHk08?bp2Bs*S):l]d$&B3Bmr8F5M)nuX.o;XR6OR>ptkQ8G*hVtGm3$KDHU.C
+ /QLqUp3(1&Gh[BF<W%HIWjU!um&=Zt0WMZM%[)/e2uQ!f`k`(Y%V3XH*e+(H)7_P8k0>etf
+ &g-+pk.3@>ShJ;okU`imr)P2RqlBEp=e%(?+'7'X&eJ\F\:))CNZ3sBkkrC=h1jI?U=^MQr
+ KT?I4.2Kj%T')f,p><2-I*EFnKo\Fj$RoNndUDS(o3B@Ie#prDE:biq47J2jfh1OsUFEJ+N
+ W&Z6i;fR:9.(mnp6_d8?[Z7#`oQHHaI\,CPpS8qi#%(j>$3.ok"Y,t[EZP/ho*mhL">?brq
+ (.u[+cR%AIDc+IP/a"!N-4A?mg`#Pmp0\i0,C37]T#KLIPPL#a.,sF-o'7#&sg+Odc:R4Fb
+ T"O7/,qq6'XEc$lNP'SfeLHD9>%sOj,[@91;:<CaM:4@W;gAQ,?1AdSASaK=d6(]U\Bhu2b
+ eY:C$.3,jk$S\]3'!@Y3LGFZ:(HDo%d%/ZPCkl_K/o=ZjBrJ[?k2<Y3LGFZR"ICo%d%./k$
+ X45K/o<O3LJjf?k2=,%d#`2R"IDdK/l[:k$S\]@#gG'3LGFZR,d78%d%./ju>AgK/o<O3DL
+ (H?k2=,Ng#)UR"IDdj5aSXk$S\]3'!@Y3LGFZ:(HDo%d%/ZPG;fOia+F152IPoCb47Q;Ykr
+ d3QM<+4YS1/MC_rKr8qZu8(XiV7dK=\^2eI/RPQR.S<c1a2bc5\"f6mHKZoK4dgr=Fa'LPf
+ O)JAZQ25jMS'"MbS1JM.2=+l68[0JeQ'gW)1/&051O%u0=ng%L2/dldpebfrNK+ooSm7OaR
+ o3s;1a@u^3C<&57RcQ(;:=8<G>HAMV"+j^k=;EaV^*'+S!6m:,`eSJITG#r<n^Ab?>"2SE1
+ q:iL2M@PI_BIZBW,^MX7)uGbhM:)4d>9I].b\o@"oZ^^5Vr,:VH_)l[N[%*N=5k?SVKL="a
+ OPZL=:WSX7'3kt@@LqP$;D?6"!*Vt)D7]6p$lb9u,9I.PZBr60Oc8auuSfcOd<*69h[h;n:
+ sBP_hmqKGg*Q.mU]$(X*6ljRd%\)"*p&`0'mGM\R+dk/\NR$McN]R=/\b%6pQXH7t-F\,p1
+ _Bg"BML9jHjmRZeQ1(]bJj2j)afR#$RP-.)?/@X$,-<iL4S]&ps42+[D<Bo,S7DPXhi.k!b
+ !GGf]1_"DA9jR*1[!lCAC6j$3FOX4hD/&:53[ft)fA<^9k@VLk/W?>L>R%DkAGHQ%d%./k$
+ S\]@*Soik$0b*q#=L_Yl0rA3LGFZB:Di^1j(]b%d$0.QugZB;pejtg!cpCfRD&\*6c6hZd%
+ as<4>p&p%N/@)07J:F"h7bS8OA:f[6X?AB_k0be]g#F+u]H-BH_Z=I=_$R"IC$B:q98/_,8
+ t$=@4M%d%./jp[c2k"*afc/qO9*6c5=bS`BQ2+RY>]=6PaaI%T?R"IC$kH*f:2(^\?8&cOm
+ _&UZ:38\>.eCrH13LCIo@Eq;X:1\LCahJ+&0F)YQkIf$$9KoV33LGFZQug"(83q_])07J:F
+ "esIF1eV]be]gj$$._FF/4ia%a;bZ#RPQg0W2LY)KRS[6Ga]]b`Q'i>;-;'+sG18`15!4b4
+ GRI/l_hSrk2pXfa.&^7[*`hiSD3;mTWS,Ol^!gk$ZJAR$2d4D(,gM8r>-Tb<1lS?BT3UfD@
+ )opR8WXbrOZg_WpIQPOkkmX#7)XX[\nq,ZdmL/(p__U(fW/5Ge>-NCc(OXc?gK-/E[^Z7FR
+ Ck(5K]ENbcP-iR4Z;+XX^U=L-_:N<3J<TL3fYuL$Em-3mDOZDMtjkmKo?s,j"B2</aDtdZ)
+ lKKdt/1L'&'Y',PoG$GQkPa\R?VS_62C!!l8Md\c:=#@m@`8VTS^`D,E:I;n1s!TfXmPp2V
+ GE_I1WsaFqoYN#m]gto.Z+Y<6%?"BXhr@+0E6*;L,ih)kM!;MY,uU2k/\W&c^gEkc8TQhq>
+ LV?+.SQZBhHAZPGVqeSX_E[f^`HSGLSP+<6ucZh_H)3^Lau<mI"[kdgT=TPY>Gr^>(%'g?.
+ "[]^LX!SAF+JHt,p^WB#!s,j%4rq'"]`cnJ."Mr?1@@h,K9poU6:2Vo[&od["Jb]-Xmbfu9
+ eAWGhgo3r3lcl$7ekff1h5t?,(k$S[i*p/.$S3c#s?k-<Sk(M5(q;2>QXq'TU<FJWnbo+_9
+ YV:j6$?JON:3g>p=)So;KRKguKS2@Z2FhLqDnqmI06N/60ZO38gl63q$2[Vu#RPPl0LomGC
+ rRHh9/+C8F8Xd#@1En33+IsoB7`-3R,aPoeLf==6\II[R3S9q=!98QX9s$=1oJ($*coEn0Z
+ Qb+cMBnLbTX%(*%0!n=uokALMRHA*&a^l[0C]njtOhaEsDW@3TcE'@?/7fPRdK]/'K0;_Aq
+ a`nMGMFLTCr+Ji;d3Hd)\pXfLi2F,DK+rFd&00$&+s4d<!TcEo.[lf^,pBd5aaTi:3E1HfN
+ b\N/*1^AO2<j"e7O,PF;kWbnjQC*YfUB2<06Vf6S-hL/u49Tkm84f*KHaF.H*qF"c4YXo^r
+ [.]q#\1i\5V7>.$?"nN)/W.D[:S5#cMk._=iAKi&V5qRb04E]Tk'ZUqr6q*1O453WU8-S?o
+ c<_>g3jq>VNmsr(WIg:-CC%]8rP9Vqbd9P`^Z"0+#DcXEREg$^,5K1(GAc;m-C/c-`of`NK
+ +pZZIG^NHWR$XVoV;;SpU^kf\-&E"`@.BHek['4T4C^XZ\/r"C5S3V13^Lg:#_bU==>]lU2
+ 0!j<,+F-ccZ=lkhW-C<Y&$6\i<."ER*m7<AHWc/5QQF_U[>jhc_aopb$W%*P*^['i0M2<SN
+ 18NEY]k&'jq04#`)&8MQ3r/nsg+3+7U`>f2*-kn,!1Fd.h\<q7cm&\jG,,m!4cl@NICX-S#
+ T4&44)!6Lp*<2@,Qp\<93FOc-7)K>T+ksl(0Ua4n?==>s(?U:t*3$NO)KX!"0IONqaQ[+C=
+ V^(Pf:4M,?XO@H($:2$S0PF3C>*DVL[5=g_JYCGfo8"&:RDf=F,ncm_]5s0bR(mA''>9=@8
+ >J"3F$Vbfp.LVA4`.%$0K<S@LcNRk!Xe]C\-.e%TsG,7"RF7p8u.NZ6[YN&9D=O@PERR#]h
+ 3.S2L2q?k1j$k!Y"cX7ra9*3pa3M%F`omp;#7A4)^t+m(?1^!,uL@E0A!+MsYAc116[ULqf
+ ,bG+`$)jsX_qiHlA3Eg2Cm-C/cV[,+LdPRjVK_IK^Wt--rm!M_0afBbq?2E`\X7rc_)jR'0
+ E+8BI-H&Uq[:YYQq[B6ofkZ=/P+ju9]k15E]6p:as7Jm'bq!W^p$Z*thAPGqW]jDC.5J!W;
+ sa(b(;7'<Yr<b/Y^O?N>t[kSj8@a%s),c4&Qc0Ig9@VY?A0+.iJgr"@cXPO,?GiG?h![ERf
+ E;gkF[+a3Q%0L>U"A(SgKNRm?lN*eR+^8ERi)^\'*9kMW-sHiNkV<SbM9Za5;2JcnJ%O,N]
+ DA0jMXN%s'/9'6DCT?N'>sO2(M#Lp;3f@ZqSp=<noe3ojubPrT3G3N&8i[lOoS=_M9)r805
+ alq,A?8];Z63u=2Ccg6#`F,1#<k*VY0e;gF\LM2cXNk%/G^AT>>&.LD=0fS9P\":ATU-XMo
+ k2o4%6Suk<8&ZJDB?VM;9UMSacI4kH`Z1_hKK1OER/H.TF3(BJ0rM[`4ET^:fY.?,L^'&+k
+ 3P:B4*9W/IsXBA&.Kt5bXjEZ%\5U,5;'trZ7:4Fq9Sg81N_cHr2(k(OB'tDcKm-h6YDGJ2a
+ )?hq4!tC6WRcZ3Hq@V),bOIfb*:`H=@@ePs+8gN>W[5F+XCI%d&jQfji=SV*j'5ma.@8oLF
+ !WLTJW>F"Vb.'!WX&jokVp*R#\-ZHA]>8%+/tS=omO$d9cpZHA\["m\Kf:=('j`#Q'4X3CD
+ .&,nY4jokXf5g1CPZHA\+3u:>S3K&)5`Z2:a#W,$YOZBbWbZ<M7k*[79bhY1$hR7_/r#Z;/
+ h\NKK$sAnU?8IXZHYggL-2u.uN8!O.cZ(nSe]jMR1]:_C_1M4Z_[8P\H"D9m[a+d#++EnKf
+ 7/4K;uW:gF10<'G4i7EY./N)MIGWVH!s7r(DY=X\mkIM_cI=L=m^7W#s5t/GGgnAFfohZnp
+ k\!U>^cNVjhbJqE)Wcr3C\jF10?jj_MUnh&Oh[J,\W]S?6k8I2-hEQGac.V(TlZ^6fSP7<d
+ lO\7L]HS0iZ*ILu5Uc24"3jug6:;9U1EG?1+VQT!t;Kf?'Vq<Ol,NB'Dcbpme1!u2&-B?kG
+ QpatV>SNGTMEHte41hR3Y&-^-5F7tme_]5C)At(f154N:0+UV_fRIf;*pFq@NN7hggp<U1&
+ cCER+bf1WsF(^t&gQ$*f*25-!RlRYoIN<Kc_O,3&Cd#'=F,7]#D<C?d*2;q7RlTpYHT-'/n
+ 8g+SJD"P[#:D^N*25-!RlPggpL4V0(phJW6?aU8&;;jnb`O-*cl@M<S1%37R58sL;#^G6U@
+ ;c[3S1@H#'5U;RoSVKA*cEh%T.JWb+.5<hp/qH7,cB?F/EMEMn&_f[^*X_fp,S7><VPs,F\
+ LS^AZ:2/T^)lRHO%DXcG'h^@6MSZt%LigY'W2/BXu@4;[EjW4?:2p1NJ>7B#bN`3q%Fpqn`
+ @\Tm'Cp+%MKZ>./Fs8&AfMDTB"bTX$E5]c!A%$<QtqkHMkcMTWa@h)AOX>8u3_lnj@S1!3A
+ &p&j1AsG@[jTV>6B>Id[0S_&ap6bGQ9E.W`A*D-^lKtK'LF?R(QnpdLF@C7>kfe>KmAD[o-
+ t)b9oCK>]LX_i,hL5ZML]V1L3WJZjIgN)763lWa"jA$/ro;i7#cTi#JV,sn>P=GJi(=9G3C
+ /-;&9Gq$lnR[U'-DnQS=i(XLcK!Mp6\e4=;j5AK)T^!k)aH5@uc'Q3cfoPE";#lD./H^3C/
+ -S#BRtp0Ls)%q.Inp)GHNn@SY;.?k1j*k*VWJnq1u,+ksjRF)us4>:_I`/.?UDbq]$f($:T
+ p@?.lYcYO-_[lZ="/.?UDbq]$f($:Tp=_NiH?8I%O*oH\$#rmjqCPFB5EN^5pF8VA5kfc%d
+ I7W<\a&D?q\E#dNh`tMRF,<J/*&2*E$AB8tF"$SmF%3;N3HDN)rWPOdXng<3H=#5Y9J44YW
+ ^$#1KuBLV[7:a/+#`K7RSW#R?etVEdQ]Bj[:e%$r,k:A>7_a;(Gd4P_Pf>e`^Ge@/UGXfV*
+ g$N0LXtV0C4U\+t&Wjj_n,JW,XQP`^Z"H/S=A?&!nXX,fJfbR9/*E>2NZTD=a4Jhu=MTI.$
+ r<`%^OKm?,:DLY(lsZY]BAkl&nK"`ZgE?P"mWr%RPoUSC:/]F*%r`>l"f&b^?BOcuM"USC>
+ ??TVTH0lQ1AQ-"a%_N&n^J'u]k:tK#dhAPIsI?(HjEj&q_:1:dT6.[+EF%AIMq]$>lA@;<Y
+ ES4pKo%hJ`^qh#%:r8_.0k]%n<L?-3KK0WRcC4]I0SaHMF!APmR/@fF+WJ:g#VjBh)p"C6(
+ J:&.$0K1e`P`P1@Lh'&k!Xe]+pR1k-"0OoR$6T'_Aoj,bR(mAde_trQp[0m3FOl0bIT>]L[
+ 5=g_JW+oF#iBE4^h+<c)GT_`Z293bR(I5?dsM_D>.KLfb<M$f:9.D1<^oB_OU+a;q5'*3Fl
+ -W'1R%,X8T-6UE4KtW\>fZk+$*EJN77FQkMr1j<0gW[Y6a#1.T'_P%.r2fbW_'b8g>p$?O;
+ *0IL,f<45d&%pRdhRp)%krqGSHEf^U4'3*0n'?+96'U!R_;#s0jn_oA$_B_Kciq)3,d$`qO
+ CW?BIRciF&mnpX5nb)Q=3,'[QEgMqcQs`gd.oFsp;>cL9#ok$ChQV"Ij+b:d?8JCLU,c_Xa
+ '?+I3lCk'IeB;_o%#J\Qri-D0'7P&JK$Gm*7:jpTes8o>ALis\tncNm`qD!=+tEsq7cghqb
+ >4SkNskUqqu6#:<K(`-#8BHP;=Qs>;>KM="aC,/)N/LZBm3`o&>b806N/6^AIJF<>LjA:\m
+ 6'ZDL@@RVLK>bUL0<gf<PebU_!qYGJ9gY&"%@DV/%j2h#g9Z_5QWm:qomng?p[W@B@d'GOR
+ ^)W`ElpZ+R:g;>,S[-VKR:!]4[O2G$-Q^?6MGt=;iVc%dbo64Q]I5>qV:=#MLhL!<"/$::d
+ GCPh;)O0=Jmcj+!Fb-$(L,hQWkI;JeV]Ss`.BY5IGNT>q-4)bSX7Pg&'[2[BJ"J_nb6)hL<
+ 4_59aIZfMNnc2!HgG%K%/jiV(4kVt\(>+"=W?K_Db`fH#Nh,U@?/7f<4>i!EELF.X25j3c"
+ ZT^`Z29Eb]2($o#C6OLW(7=.a2n\S@Z-ibTY0I*%0"qkiol&Z96?Nbab]!Wj<`^F3(@8a"_
+ X=3a4:n#]lLja4',F[_lPa=V^'Y@norm'BTj3JiSjYj)/o7It\k`LbQjMF3aOa/'K0+_jjP
+ m;q=drg!bd<@:/:6+^n-Ec1/5fc[Ap>+fiJM:n)OWcN.Jb=W?LVe=>7Dg44st*3q'<$)ooc
+ DfROeC^Y;NB?jn&E\N8b$ZeXFNr6A!r-a*_6Z`XsKZos:5H[&r*07'ZP*kjfCCa.bS8>_.L
+ 6s3)%9p!Af*pfgkpc$XF)Uog1NI)`(e/rP-EC]QJ\*%Hk+#qbRDIeAprt7e/FdWoA!3n0,r
+ \K3If7mXp<9%p-I(7$94#aQ.n3dXm.0Tuqn@>C?GIQW-4rUV;+^?PH@PA]ZZ9ZG[V==ia5<
+ 6,d,f88(HQV"9qH:(Z(nRRd*pUukMJSX]UH9tN/o`WMj%(s;bTe88X4q`\adt7P&Iolq.>h
+ .8\%82Y?5t%gbS]_Rgcq$V+]pQ8YrXuIA'F%M3@cq-Ru=XNt[$0?PV]lmuQ=%]HO[2eYlqa
+ APHb/*VJ94YBdg0]n=)tcTQn;VkU0MI/g#m],UX=Yr6Og-b10,DG:'Yh'@PE%WYAA4h%<FH
+ MdQn%D+4b[O[\OWO4l2k(L\n`G`WKQuqBUW="PUMD'q73gc1P+N(.1^-'Z3`m.'F%=]\ec"
+ ZT^52RU:\(@\IW%Q)-qIEOY_))bA,[j1QEqdScjo*:#iYmP3R.L@?,i<hR%E%04i\D$VVB8
+ >fcdQp.RT%a7-!r02%d$/GQt(b/mG7.q*#WfO#BMRH#]j`bCP+](k$S\]?qq9qFS0`a%d$/
+ SQud8:e'Qq_oT:j5F"di?cHD_#IQicPR"IDd'=9bO>qIBn`Z34=*6];53Ro_3L.B6'beY:C
+ )*$Mc:1mA#iK5i"F"di?#0pAr3NlelqR43[beY:C))q`CnU9]4s1CR=4E)tZF"di?#0oJT3
+ k@CPNf5ucK/o;TE6^.-T[5_Tk$S\]@*ZPJh&Q6j9(BuiK/o<O3<SGdF+X9pc>OZG_&U\8S:
+ Pb(S;*%.H.4lk5NZ>`k$ZKfk*.n)?hIn=k!XZcF4$BHNBDN>3LGFZQnr\8#BMN!0F)[5D(l
+ 390F)Y'c37WOcCpa;#<&@u82EiiOb;GsnZJ@FDn\*j<msrbopN^(1Dd>WML3V'OE?+o@D8\
+ 9f_ei+B4K%QoA%T.X3C,&2.QW@osT-)J$M*5@!^tUR7;Uh.0l9.3Ur.&GPl9pcOB^8qO`dM
+ 3C7L#[I:d#SP*>&<$fLV1,@=)U85t>\bq?H=/`c`@`?[BIVum&UdS9ncGqqJ+(Z<:E;B6sC
+ $9@e06H>):/>5X:Am>mF_P?"=]:_sV+me,\!'d]P['_pQlKX;m];7J'.7?c1@Mf^f8Ye/4X
+ PK6Guq2\qPmOsW?aEC>)CR/B/M_RkD>Aic+J6mp6<\PPKf$-O%Cou2;Im[\]D7"jO)\Vjc/
+ A5NFh6polg$$pB_YuKanI/l0[riWk,=DZF/,fQHG)NMJord4.'oKIs\m7s7"srm&AGm9fHl
+ lcEr('pCH:n`i4()l>)%nQ%lI^5&A1lQ*a:X)B1JUr7^Zjc]qTe1O%u?g_o6#(+%,*KmtI3
+ _bN%YW+r;pj_A+GDg24_rPFS?iT=ZIUM*D&CR&jIT%n)C*6L#9G-mKW+ROa3*ftS;&]6^cB
+ 5I3BQ0W,EWf^Id[h^sgk%OQAGF67$q7DBGi(EKgnS[4RqW!jcQ2]Zj1^nFZ#BMR(F$_gQK/
+ o<O3DL(H?k2=,Ng#)UR"IDdj5aSXk$S\]3'!@Y3LGFZ:(HDo%d%/ZPCkl_K/o=ZjBrJ[?k2
+ <Y3LGFZR"ICo%d%./k$X45K/o<O3LJjf?k2=,%d#`2R"IDdK/l[:k$S\]@#gG'3LGFZR,d7
+ 8%d%./ju>AgK/o<O3DL(H?k2=,Ng#)UR"IDdj5fEm,?uXae)F6[T'mJbIk`s!o$j2/7V2H<
+ Y?uMPR-69ANbL4X8$3otgQQ3F6=PZ"?8Gc_,\]D=ni/@>U2Vi(dkp[U$fa#QAo'T6d6(]U<
+ 5>ccSEdOt&OU-5RE_@?cM/g*I!\%;a=gp#jilMJZZ9]HoZs$,=WSs/9t5Z>ol@NOhV\>3Dm
+ +T^g1sb?jL`Es2Pnh_-0`"Kf;Ul0P(7WRk546d0JBsr3W%k'XH0^3A$;:k)#qm-k&pE@f<j
+ )L?'DpuVR9Il/)U)0l%b#\0&%t=Ym%CJp90>,+(\V^eA<46T6gC6Vmem-QlKZ1)m^W3j,lk
+ 2W6g.*(9!ad4KdPQ3]\qJr/$TWpQ*)(Vf^8QdbX'-/[R(2lIK_A])'"F(48Y3c+LQan#JXS
+ >Gd.8#2b`bmDa:uQW07bH4!pm0#Q`mWPthCY(T2EU1"@^$30k"IpK^.nWKG9b^40\A+R.RS
+ $uB@X](D6jf_U.U?$<Dq>TBrihD;So4m#qICo,p1`5oY0"k_Jeq+G,KmNi]ig4Ar79t829!
+ Zn9h>%5G!lO(A.E*`U"`a'dn`E!LlhNt2(<JFOSld^klWf\jmF4-BBl3iQnQFtag0;#;jme
+ aWT%rB4(V[@7j5b)_CUJrp_S(I)F"di?0ZV;O*6c5=b].YW#BMR(F.=5o_&U\8*%(u40F)Y
+ Qa2u.;beY:CEH3`<F"di?S/fbh*6c5=-O4]H#BMT>ah\t@_&U[=E\I`>0F)Zh*6c5=beY8H
+ #BMR(F"kYV_&U\8*6`DC0F)YQ#BQCTbeY:C_&Og-F"di?0ZV;O*6c5=b].YW#BMR(F.=5o_
+ &U\8*%**8c1/5fIHGcrbXjEZN\-&%G0Kj>Y2:hdYu'(-:TTqiFj?L/Apo(1SQ"8,H]6()&M
+ @%S/"\g:R)>G*'[:@UBFloB(PWpJ\(=<-c<`:G8i@s+&sJ39%$Q>Aqk*jnfTEcdoB*eJs+r
+ \,;!GN7Sl7Wq.BY@"Lc0ac,aH&TjA&8fIHLIbAhcU7?WoVk4d^:FNRh.1;Fbq$7upEqXjno
+ u2G2$TO*sn"`L$7))C>\L;L:e^X](D'MWTer<h4([gUc.H?Gt^7?E886AHkBtHIL?tj4eKL
+ ,IO*Ag?UoH*d<fP*Y"<cPW"hBV0,E$kdsR>GbV":Sh@-H:iTcpq\!>%7r`BfpNC>Kpml8GZ
+ b*lL>br)C-a_;_--=p0eU"C0HFpOj6,ds]mRr41*lYO<3LGFZ9YaM1)jl7<R)9%H`O17WR"
+ ICm^en>UR"IDd_ZUsu[=L?*K/lW@;-Y'-K/o=:"<>CgJN9*M3D@4c>T9&_3LI\e*6#=:3LG
+ FZ9YaM1)jl7<R)9%H`O17WR"ICm^en>UR"IDd_ZUsu[=L?*K/lW@;-Y'-K/o=:"<>CgJN9*
+ M3D@4c>T9&_3LI\e*6#=:3LGFZ9YaM1)jl7<R)9%H`O17WR"ICm^en>UR"IDd_ZUsu[=L>j
+ YH4u[!mTurl,4Pge>'N3HMVrp<ik:UJ%e'KRb]HaCcH^G;(&V8l`@a9?Blm1*kBT'n,+gn0
+ Tp>~>
+Q
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.pdf b/testfiles/cli_tests/testcases/export-dpi_expected.pdf
new file mode 100644
index 0000000..9a2bb9f
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-dpi_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.png b/testfiles/cli_tests/testcases/export-dpi_expected.png
new file mode 100644
index 0000000..cf1781e
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-dpi_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-dpi_expected.ps b/testfiles/cli_tests/testcases/export-dpi_expected.ps
new file mode 100644
index 0000000..a2b5a45
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-dpi_expected.ps
@@ -0,0 +1,298 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Thu Mar 5 09:46:34 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 3
+%%DocumentMedia: 61x32mm 173 90 0 () ()
+%%BoundingBox: 0 0 173 90
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+3 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 3 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 61x32mm
+%%PageBoundingBox: 0 0 173 90
+173 90 cairo_set_page_size
+%%EndPageSetup
+q 0 0 173 90 rectclip
+1 0 0 -1 0 90 cm q
+0.9 0.950196 0.9 rg
+90 45 m 90 69.852 69.852 90 45 90 c 20.148 90 0 69.852 0 45 c 0 20.148
+20.148 0 45 0 c 69.852 0 90 20.148 90 45 c f
+0 0.501961 0 rg
+82.5 45 m 82.5 65.711 65.711 82.5 45 82.5 c 24.289 82.5 7.5 65.711 7.5
+45 c 7.5 24.289 24.289 7.5 45 7.5 c 65.711 7.5 82.5 24.289 82.5 45 c f
+Q q
+82 0 91 90 re W n
+q
+82 0 91 90 re W n
+% Fallback Image: x=82 y=0 w=91 h=90 res=300ppi size=427500
+[ 91.2 0 0 -90 82 90 ] concat
+/cairo_ascii85_file currentfile /ASCII85Decode filter def
+/DeviceRGB setcolorspace
+<<
+ /ImageType 1
+ /Width 380
+ /Height 375
+ /Interpolate false
+ /BitsPerComponent 8
+ /Decode [ 0 1 0 1 0 1 ]
+ /DataSource cairo_ascii85_file /FlateDecode filter
+ /ImageMatrix [ 380 0 0 -375 0 375 ]
+>>
+cairo_image
+ Gb"0WH'"9PS\T5"b>sR!5geEA>#*o-O@iO4X\%*-qcMm@A1J8n(%L39mSUBAm&DJ3@:ip8)
+ &VLH0Le;2,\jHDCQ=u(:dd_5R$mA&Hg^cQIr2eK@?;Q,q=WJOchCMul8"XcoqhP25Q/l$&'
+ n<a=Y]l$e'lpth:o&06UsLLHX2%i]jYpmGE]YOWEc85od<KkkZ$,8VKGqr2Qt7:-')?F?!=
+ G)ijoKk-,M'kinDa_Y#9\[mj_.*Y"H7?<B=H9>cZ;-;Q[:r[X5ERX3R;3b[Eh$MJE<8#+sH
+ ql'fM<%cb>QXprUk*6_gmNoJd.*6c5=-K$;T%EuX.b[CR5inD0fbeY8Gi$b`;beY:C@02JK
+ g;"]P_&Of[.'=$'_&U[-!fl9o^`:S7*%'SlXprUk*6_gmNoJd.*6c5=-K$;T%EuX.b[CR5i
+ nD0fbeY8Gi$b`;beY:C@02JKg;"]P_&Of[.'=$'_&U[-!fl9o^`:S7*%'SlXprUk*6_gmNo
+ Jd.*6c5=-K$;T%EuX.b[CR5inD0fbeY8Gi$bafT&-'15+NTQ)LQn)Zn(3Op67M%]:7T1a[&
+ Z[SCC0sPiP]C:jJe2Y+@8J=&<mBL&2KkPc(_":TKNDNfG0OW`uMS>:NYLZL5o^]q68;7GSd
+ NphA!N>+I^Oq2&*.=&cS.WB=7!h/-=K@W,VWf")4_-,TGS\%bupH$Akg.GUH:5tWV"$7cHh
+ 'e[B24b`3[f-_7Z,e=W5qmTl2p=qaUrU-66RJ4Y.-Q_1=\4TD;/l=VT.CL?Wad&[m>jX'!=
+ &`=5rpn1+]PI<1SMYNdlgF)i>4(:_E%g-H1oIM$a+\fHXgLS47JWPQ!`+AUq<iX@Lt:[kMp
+ 7;?:V_7!qm-[>0/RUmQ8t"DH1]KCbkh/A3iB@&pDCS.3j'T#jgj)D[R]13b[3ZXB246-2ru
+ _@&gd\)OaQ<$Fj*E08sW+8/g^,M:-^GU76;9Q2g<GM@7MX&6KOH-R(Sg]_K_@/b%H_>F-s9
+ Bk$S\]@#gG'3LGFZR,d78%d%./ju>AgK/o<O3DL(H?k2=,Ng#)UR"IDdj5aSXk$S\]3'!@Y
+ 3LGFZ:(HDo%d%/ZPCkl_K/o=ZjBrJ[?k2<Y3LGFZR"ICo%d%./k$X45K/o<O3LJjf?k2=,%
+ d#`2R"IDdK/l[:k$S\]@#gG'3LGFZR,d78%d%./ju>AgK/o<O3DN?,=++8U_DaPg[Md\'kM
+ 'dlUU/QG8l:IN7gXkUL;atI5JQN0\M+ig=DZj,Xn1[mSLa8uVfbV[g:XgC:R!uAlo!h,VQI
+ kI0quZ_Im*`n=pmOL([_Gh^9&%F'p<bPhsPX3PmXoub)6/%oL"npjfeR[^>H-I\&PfRCS'A
+ ]m"2\^4SADHk08?bp2Bs*S):l]d$&B3Bmr8F5M)nuX.o;XR6OR>ptkQ8G*hVtGm3$KDHU.C
+ /QLqUp3(1&Gh[BF<W%HIWjU!um&=Zt0WMZM%[)/e2uQ!f`k`(Y%V3XH*e+(H)7_P8k0>etf
+ &g-+pk.3@>ShJ;okU`imr)P2RqlBEp=e%(?+'7'X&eJ\F\:))CNZ3sBkkrC=h1jI?U=^MQr
+ KT?I4.2Kj%T')f,p><2-I*EFnKo\Fj$RoNndUDS(o3B@Ie#prDE:biq47J2jfh1OsUFEJ+N
+ W&Z6i;fR:9.(mnp6_d8?[Z7#`oQHHaI\,CPpS8qi#%(j>$3.ok"Y,t[EZP/ho*mhL">?brq
+ (.u[+cR%AIDc+IP/a"!N-4A?mg`#Pmp0\i0,C37]T#KLIPPL#a.,sF-o'7#&sg+Odc:R4Fb
+ T"O7/,qq6'XEc$lNP'SfeLHD9>%sOj,[@91;:<CaM:4@W;gAQ,?1AdSASaK=d6(]U\Bhu2b
+ eY:C$.3,jk$S\]3'!@Y3LGFZ:(HDo%d%/ZPCkl_K/o=ZjBrJ[?k2<Y3LGFZR"ICo%d%./k$
+ X45K/o<O3LJjf?k2=,%d#`2R"IDdK/l[:k$S\]@#gG'3LGFZR,d78%d%./ju>AgK/o<O3DL
+ (H?k2=,Ng#)UR"IDdj5aSXk$S\]3'!@Y3LGFZ:(HDo%d%/ZPG;fOia+F152IPoCb47Q;Ykr
+ d3QM<+4YS1/MC_rKr8qZu8(XiV7dK=\^2eI/RPQR.S<c1a2bc5\"f6mHKZoK4dgr=Fa'LPf
+ O)JAZQ25jMS'"MbS1JM.2=+l68[0JeQ'gW)1/&051O%u0=ng%L2/dldpebfrNK+ooSm7OaR
+ o3s;1a@u^3C<&57RcQ(;:=8<G>HAMV"+j^k=;EaV^*'+S!6m:,`eSJITG#r<n^Ab?>"2SE1
+ q:iL2M@PI_BIZBW,^MX7)uGbhM:)4d>9I].b\o@"oZ^^5Vr,:VH_)l[N[%*N=5k?SVKL="a
+ OPZL=:WSX7'3kt@@LqP$;D?6"!*Vt)D7]6p$lb9u,9I.PZBr60Oc8auuSfcOd<*69h[h;n:
+ sBP_hmqKGg*Q.mU]$(X*6ljRd%\)"*p&`0'mGM\R+dk/\NR$McN]R=/\b%6pQXH7t-F\,p1
+ _Bg"BML9jHjmRZeQ1(]bJj2j)afR#$RP-.)?/@X$,-<iL4S]&ps42+[D<Bo,S7DPXhi.k!b
+ !GGf]1_"DA9jR*1[!lCAC6j$3FOX4hD/&:53[ft)fA<^9k@VLk/W?>L>R%DkAGHQ%d%./k$
+ S\]@*Soik$0b*q#=L_Yl0rA3LGFZB:Di^1j(]b%d$0.QugZB;pejtg!cpCfRD&\*6c6hZd%
+ as<4>p&p%N/@)07J:F"h7bS8OA:f[6X?AB_k0be]g#F+u]H-BH_Z=I=_$R"IC$B:q98/_,8
+ t$=@4M%d%./jp[c2k"*afc/qO9*6c5=bS`BQ2+RY>]=6PaaI%T?R"IC$kH*f:2(^\?8&cOm
+ _&UZ:38\>.eCrH13LCIo@Eq;X:1\LCahJ+&0F)YQkIf$$9KoV33LGFZQug"(83q_])07J:F
+ "esIF1eV]be]gj$$._FF/4ia%a;bZ#RPQg0W2LY)KRS[6Ga]]b`Q'i>;-;'+sG18`15!4b4
+ GRI/l_hSrk2pXfa.&^7[*`hiSD3;mTWS,Ol^!gk$ZJAR$2d4D(,gM8r>-Tb<1lS?BT3UfD@
+ )opR8WXbrOZg_WpIQPOkkmX#7)XX[\nq,ZdmL/(p__U(fW/5Ge>-NCc(OXc?gK-/E[^Z7FR
+ Ck(5K]ENbcP-iR4Z;+XX^U=L-_:N<3J<TL3fYuL$Em-3mDOZDMtjkmKo?s,j"B2</aDtdZ)
+ lKKdt/1L'&'Y',PoG$GQkPa\R?VS_62C!!l8Md\c:=#@m@`8VTS^`D,E:I;n1s!TfXmPp2V
+ GE_I1WsaFqoYN#m]gto.Z+Y<6%?"BXhr@+0E6*;L,ih)kM!;MY,uU2k/\W&c^gEkc8TQhq>
+ LV?+.SQZBhHAZPGVqeSX_E[f^`HSGLSP+<6ucZh_H)3^Lau<mI"[kdgT=TPY>Gr^>(%'g?.
+ "[]^LX!SAF+JHt,p^WB#!s,j%4rq'"]`cnJ."Mr?1@@h,K9poU6:2Vo[&od["Jb]-Xmbfu9
+ eAWGhgo3r3lcl$7ekff1h5t?,(k$S[i*p/.$S3c#s?k-<Sk(M5(q;2>QXq'TU<FJWnbo+_9
+ YV:j6$?JON:3g>p=)So;KRKguKS2@Z2FhLqDnqmI06N/60ZO38gl63q$2[Vu#RPPl0LomGC
+ rRHh9/+C8F8Xd#@1En33+IsoB7`-3R,aPoeLf==6\II[R3S9q=!98QX9s$=1oJ($*coEn0Z
+ Qb+cMBnLbTX%(*%0!n=uokALMRHA*&a^l[0C]njtOhaEsDW@3TcE'@?/7fPRdK]/'K0;_Aq
+ a`nMGMFLTCr+Ji;d3Hd)\pXfLi2F,DK+rFd&00$&+s4d<!TcEo.[lf^,pBd5aaTi:3E1HfN
+ b\N/*1^AO2<j"e7O,PF;kWbnjQC*YfUB2<06Vf6S-hL/u49Tkm84f*KHaF.H*qF"c4YXo^r
+ [.]q#\1i\5V7>.$?"nN)/W.D[:S5#cMk._=iAKi&V5qRb04E]Tk'ZUqr6q*1O453WU8-S?o
+ c<_>g3jq>VNmsr(WIg:-CC%]8rP9Vqbd9P`^Z"0+#DcXEREg$^,5K1(GAc;m-C/c-`of`NK
+ +pZZIG^NHWR$XVoV;;SpU^kf\-&E"`@.BHek['4T4C^XZ\/r"C5S3V13^Lg:#_bU==>]lU2
+ 0!j<,+F-ccZ=lkhW-C<Y&$6\i<."ER*m7<AHWc/5QQF_U[>jhc_aopb$W%*P*^['i0M2<SN
+ 18NEY]k&'jq04#`)&8MQ3r/nsg+3+7U`>f2*-kn,!1Fd.h\<q7cm&\jG,,m!4cl@NICX-S#
+ T4&44)!6Lp*<2@,Qp\<93FOc-7)K>T+ksl(0Ua4n?==>s(?U:t*3$NO)KX!"0IONqaQ[+C=
+ V^(Pf:4M,?XO@H($:2$S0PF3C>*DVL[5=g_JYCGfo8"&:RDf=F,ncm_]5s0bR(mA''>9=@8
+ >J"3F$Vbfp.LVA4`.%$0K<S@LcNRk!Xe]C\-.e%TsG,7"RF7p8u.NZ6[YN&9D=O@PERR#]h
+ 3.S2L2q?k1j$k!Y"cX7ra9*3pa3M%F`omp;#7A4)^t+m(?1^!,uL@E0A!+MsYAc116[ULqf
+ ,bG+`$)jsX_qiHlA3Eg2Cm-C/cV[,+LdPRjVK_IK^Wt--rm!M_0afBbq?2E`\X7rc_)jR'0
+ E+8BI-H&Uq[:YYQq[B6ofkZ=/P+ju9]k15E]6p:as7Jm'bq!W^p$Z*thAPGqW]jDC.5J!W;
+ sa(b(;7'<Yr<b/Y^O?N>t[kSj8@a%s),c4&Qc0Ig9@VY?A0+.iJgr"@cXPO,?GiG?h![ERf
+ E;gkF[+a3Q%0L>U"A(SgKNRm?lN*eR+^8ERi)^\'*9kMW-sHiNkV<SbM9Za5;2JcnJ%O,N]
+ DA0jMXN%s'/9'6DCT?N'>sO2(M#Lp;3f@ZqSp=<noe3ojubPrT3G3N&8i[lOoS=_M9)r805
+ alq,A?8];Z63u=2Ccg6#`F,1#<k*VY0e;gF\LM2cXNk%/G^AT>>&.LD=0fS9P\":ATU-XMo
+ k2o4%6Suk<8&ZJDB?VM;9UMSacI4kH`Z1_hKK1OER/H.TF3(BJ0rM[`4ET^:fY.?,L^'&+k
+ 3P:B4*9W/IsXBA&.Kt5bXjEZ%\5U,5;'trZ7:4Fq9Sg81N_cHr2(k(OB'tDcKm-h6YDGJ2a
+ )?hq4!tC6WRcZ3Hq@V),bOIfb*:`H=@@ePs+8gN>W[5F+XCI%d&jQfji=SV*j'5ma.@8oLF
+ !WLTJW>F"Vb.'!WX&jokVp*R#\-ZHA]>8%+/tS=omO$d9cpZHA\["m\Kf:=('j`#Q'4X3CD
+ .&,nY4jokXf5g1CPZHA\+3u:>S3K&)5`Z2:a#W,$YOZBbWbZ<M7k*[79bhY1$hR7_/r#Z;/
+ h\NKK$sAnU?8IXZHYggL-2u.uN8!O.cZ(nSe]jMR1]:_C_1M4Z_[8P\H"D9m[a+d#++EnKf
+ 7/4K;uW:gF10<'G4i7EY./N)MIGWVH!s7r(DY=X\mkIM_cI=L=m^7W#s5t/GGgnAFfohZnp
+ k\!U>^cNVjhbJqE)Wcr3C\jF10?jj_MUnh&Oh[J,\W]S?6k8I2-hEQGac.V(TlZ^6fSP7<d
+ lO\7L]HS0iZ*ILu5Uc24"3jug6:;9U1EG?1+VQT!t;Kf?'Vq<Ol,NB'Dcbpme1!u2&-B?kG
+ QpatV>SNGTMEHte41hR3Y&-^-5F7tme_]5C)At(f154N:0+UV_fRIf;*pFq@NN7hggp<U1&
+ cCER+bf1WsF(^t&gQ$*f*25-!RlRYoIN<Kc_O,3&Cd#'=F,7]#D<C?d*2;q7RlTpYHT-'/n
+ 8g+SJD"P[#:D^N*25-!RlPggpL4V0(phJW6?aU8&;;jnb`O-*cl@M<S1%37R58sL;#^G6U@
+ ;c[3S1@H#'5U;RoSVKA*cEh%T.JWb+.5<hp/qH7,cB?F/EMEMn&_f[^*X_fp,S7><VPs,F\
+ LS^AZ:2/T^)lRHO%DXcG'h^@6MSZt%LigY'W2/BXu@4;[EjW4?:2p1NJ>7B#bN`3q%Fpqn`
+ @\Tm'Cp+%MKZ>./Fs8&AfMDTB"bTX$E5]c!A%$<QtqkHMkcMTWa@h)AOX>8u3_lnj@S1!3A
+ &p&j1AsG@[jTV>6B>Id[0S_&ap6bGQ9E.W`A*D-^lKtK'LF?R(QnpdLF@C7>kfe>KmAD[o-
+ t)b9oCK>]LX_i,hL5ZML]V1L3WJZjIgN)763lWa"jA$/ro;i7#cTi#JV,sn>P=GJi(=9G3C
+ /-;&9Gq$lnR[U'-DnQS=i(XLcK!Mp6\e4=;j5AK)T^!k)aH5@uc'Q3cfoPE";#lD./H^3C/
+ -S#BRtp0Ls)%q.Inp)GHNn@SY;.?k1j*k*VWJnq1u,+ksjRF)us4>:_I`/.?UDbq]$f($:T
+ p@?.lYcYO-_[lZ="/.?UDbq]$f($:Tp=_NiH?8I%O*oH\$#rmjqCPFB5EN^5pF8VA5kfc%d
+ I7W<\a&D?q\E#dNh`tMRF,<J/*&2*E$AB8tF"$SmF%3;N3HDN)rWPOdXng<3H=#5Y9J44YW
+ ^$#1KuBLV[7:a/+#`K7RSW#R?etVEdQ]Bj[:e%$r,k:A>7_a;(Gd4P_Pf>e`^Ge@/UGXfV*
+ g$N0LXtV0C4U\+t&Wjj_n,JW,XQP`^Z"H/S=A?&!nXX,fJfbR9/*E>2NZTD=a4Jhu=MTI.$
+ r<`%^OKm?,:DLY(lsZY]BAkl&nK"`ZgE?P"mWr%RPoUSC:/]F*%r`>l"f&b^?BOcuM"USC>
+ ??TVTH0lQ1AQ-"a%_N&n^J'u]k:tK#dhAPIsI?(HjEj&q_:1:dT6.[+EF%AIMq]$>lA@;<Y
+ ES4pKo%hJ`^qh#%:r8_.0k]%n<L?-3KK0WRcC4]I0SaHMF!APmR/@fF+WJ:g#VjBh)p"C6(
+ J:&.$0K1e`P`P1@Lh'&k!Xe]+pR1k-"0OoR$6T'_Aoj,bR(mAde_trQp[0m3FOl0bIT>]L[
+ 5=g_JW+oF#iBE4^h+<c)GT_`Z293bR(I5?dsM_D>.KLfb<M$f:9.D1<^oB_OU+a;q5'*3Fl
+ -W'1R%,X8T-6UE4KtW\>fZk+$*EJN77FQkMr1j<0gW[Y6a#1.T'_P%.r2fbW_'b8g>p$?O;
+ *0IL,f<45d&%pRdhRp)%krqGSHEf^U4'3*0n'?+96'U!R_;#s0jn_oA$_B_Kciq)3,d$`qO
+ CW?BIRciF&mnpX5nb)Q=3,'[QEgMqcQs`gd.oFsp;>cL9#ok$ChQV"Ij+b:d?8JCLU,c_Xa
+ '?+I3lCk'IeB;_o%#J\Qri-D0'7P&JK$Gm*7:jpTes8o>ALis\tncNm`qD!=+tEsq7cghqb
+ >4SkNskUqqu6#:<K(`-#8BHP;=Qs>;>KM="aC,/)N/LZBm3`o&>b806N/6^AIJF<>LjA:\m
+ 6'ZDL@@RVLK>bUL0<gf<PebU_!qYGJ9gY&"%@DV/%j2h#g9Z_5QWm:qomng?p[W@B@d'GOR
+ ^)W`ElpZ+R:g;>,S[-VKR:!]4[O2G$-Q^?6MGt=;iVc%dbo64Q]I5>qV:=#MLhL!<"/$::d
+ GCPh;)O0=Jmcj+!Fb-$(L,hQWkI;JeV]Ss`.BY5IGNT>q-4)bSX7Pg&'[2[BJ"J_nb6)hL<
+ 4_59aIZfMNnc2!HgG%K%/jiV(4kVt\(>+"=W?K_Db`fH#Nh,U@?/7f<4>i!EELF.X25j3c"
+ ZT^`Z29Eb]2($o#C6OLW(7=.a2n\S@Z-ibTY0I*%0"qkiol&Z96?Nbab]!Wj<`^F3(@8a"_
+ X=3a4:n#]lLja4',F[_lPa=V^'Y@norm'BTj3JiSjYj)/o7It\k`LbQjMF3aOa/'K0+_jjP
+ m;q=drg!bd<@:/:6+^n-Ec1/5fc[Ap>+fiJM:n)OWcN.Jb=W?LVe=>7Dg44st*3q'<$)ooc
+ DfROeC^Y;NB?jn&E\N8b$ZeXFNr6A!r-a*_6Z`XsKZos:5H[&r*07'ZP*kjfCCa.bS8>_.L
+ 6s3)%9p!Af*pfgkpc$XF)Uog1NI)`(e/rP-EC]QJ\*%Hk+#qbRDIeAprt7e/FdWoA!3n0,r
+ \K3If7mXp<9%p-I(7$94#aQ.n3dXm.0Tuqn@>C?GIQW-4rUV;+^?PH@PA]ZZ9ZG[V==ia5<
+ 6,d,f88(HQV"9qH:(Z(nRRd*pUukMJSX]UH9tN/o`WMj%(s;bTe88X4q`\adt7P&Iolq.>h
+ .8\%82Y?5t%gbS]_Rgcq$V+]pQ8YrXuIA'F%M3@cq-Ru=XNt[$0?PV]lmuQ=%]HO[2eYlqa
+ APHb/*VJ94YBdg0]n=)tcTQn;VkU0MI/g#m],UX=Yr6Og-b10,DG:'Yh'@PE%WYAA4h%<FH
+ MdQn%D+4b[O[\OWO4l2k(L\n`G`WKQuqBUW="PUMD'q73gc1P+N(.1^-'Z3`m.'F%=]\ec"
+ ZT^52RU:\(@\IW%Q)-qIEOY_))bA,[j1QEqdScjo*:#iYmP3R.L@?,i<hR%E%04i\D$VVB8
+ >fcdQp.RT%a7-!r02%d$/GQt(b/mG7.q*#WfO#BMRH#]j`bCP+](k$S\]?qq9qFS0`a%d$/
+ SQud8:e'Qq_oT:j5F"di?cHD_#IQicPR"IDd'=9bO>qIBn`Z34=*6];53Ro_3L.B6'beY:C
+ )*$Mc:1mA#iK5i"F"di?#0pAr3NlelqR43[beY:C))q`CnU9]4s1CR=4E)tZF"di?#0oJT3
+ k@CPNf5ucK/o;TE6^.-T[5_Tk$S\]@*ZPJh&Q6j9(BuiK/o<O3<SGdF+X9pc>OZG_&U\8S:
+ Pb(S;*%.H.4lk5NZ>`k$ZKfk*.n)?hIn=k!XZcF4$BHNBDN>3LGFZQnr\8#BMN!0F)[5D(l
+ 390F)Y'c37WOcCpa;#<&@u82EiiOb;GsnZJ@FDn\*j<msrbopN^(1Dd>WML3V'OE?+o@D8\
+ 9f_ei+B4K%QoA%T.X3C,&2.QW@osT-)J$M*5@!^tUR7;Uh.0l9.3Ur.&GPl9pcOB^8qO`dM
+ 3C7L#[I:d#SP*>&<$fLV1,@=)U85t>\bq?H=/`c`@`?[BIVum&UdS9ncGqqJ+(Z<:E;B6sC
+ $9@e06H>):/>5X:Am>mF_P?"=]:_sV+me,\!'d]P['_pQlKX;m];7J'.7?c1@Mf^f8Ye/4X
+ PK6Guq2\qPmOsW?aEC>)CR/B/M_RkD>Aic+J6mp6<\PPKf$-O%Cou2;Im[\]D7"jO)\Vjc/
+ A5NFh6polg$$pB_YuKanI/l0[riWk,=DZF/,fQHG)NMJord4.'oKIs\m7s7"srm&AGm9fHl
+ lcEr('pCH:n`i4()l>)%nQ%lI^5&A1lQ*a:X)B1JUr7^Zjc]qTe1O%u?g_o6#(+%,*KmtI3
+ _bN%YW+r;pj_A+GDg24_rPFS?iT=ZIUM*D&CR&jIT%n)C*6L#9G-mKW+ROa3*ftS;&]6^cB
+ 5I3BQ0W,EWf^Id[h^sgk%OQAGF67$q7DBGi(EKgnS[4RqW!jcQ2]Zj1^nFZ#BMR(F$_gQK/
+ o<O3DL(H?k2=,Ng#)UR"IDdj5aSXk$S\]3'!@Y3LGFZ:(HDo%d%/ZPCkl_K/o=ZjBrJ[?k2
+ <Y3LGFZR"ICo%d%./k$X45K/o<O3LJjf?k2=,%d#`2R"IDdK/l[:k$S\]@#gG'3LGFZR,d7
+ 8%d%./ju>AgK/o<O3DL(H?k2=,Ng#)UR"IDdj5fEm,?uXae)F6[T'mJbIk`s!o$j2/7V2H<
+ Y?uMPR-69ANbL4X8$3otgQQ3F6=PZ"?8Gc_,\]D=ni/@>U2Vi(dkp[U$fa#QAo'T6d6(]U<
+ 5>ccSEdOt&OU-5RE_@?cM/g*I!\%;a=gp#jilMJZZ9]HoZs$,=WSs/9t5Z>ol@NOhV\>3Dm
+ +T^g1sb?jL`Es2Pnh_-0`"Kf;Ul0P(7WRk546d0JBsr3W%k'XH0^3A$;:k)#qm-k&pE@f<j
+ )L?'DpuVR9Il/)U)0l%b#\0&%t=Ym%CJp90>,+(\V^eA<46T6gC6Vmem-QlKZ1)m^W3j,lk
+ 2W6g.*(9!ad4KdPQ3]\qJr/$TWpQ*)(Vf^8QdbX'-/[R(2lIK_A])'"F(48Y3c+LQan#JXS
+ >Gd.8#2b`bmDa:uQW07bH4!pm0#Q`mWPthCY(T2EU1"@^$30k"IpK^.nWKG9b^40\A+R.RS
+ $uB@X](D6jf_U.U?$<Dq>TBrihD;So4m#qICo,p1`5oY0"k_Jeq+G,KmNi]ig4Ar79t829!
+ Zn9h>%5G!lO(A.E*`U"`a'dn`E!LlhNt2(<JFOSld^klWf\jmF4-BBl3iQnQFtag0;#;jme
+ aWT%rB4(V[@7j5b)_CUJrp_S(I)F"di?0ZV;O*6c5=b].YW#BMR(F.=5o_&U\8*%(u40F)Y
+ Qa2u.;beY:CEH3`<F"di?S/fbh*6c5=-O4]H#BMT>ah\t@_&U[=E\I`>0F)Zh*6c5=beY8H
+ #BMR(F"kYV_&U\8*6`DC0F)YQ#BQCTbeY:C_&Og-F"di?0ZV;O*6c5=b].YW#BMR(F.=5o_
+ &U\8*%**8c1/5fIHGcrbXjEZN\-&%G0Kj>Y2:hdYu'(-:TTqiFj?L/Apo(1SQ"8,H]6()&M
+ @%S/"\g:R)>G*'[:@UBFloB(PWpJ\(=<-c<`:G8i@s+&sJ39%$Q>Aqk*jnfTEcdoB*eJs+r
+ \,;!GN7Sl7Wq.BY@"Lc0ac,aH&TjA&8fIHLIbAhcU7?WoVk4d^:FNRh.1;Fbq$7upEqXjno
+ u2G2$TO*sn"`L$7))C>\L;L:e^X](D'MWTer<h4([gUc.H?Gt^7?E886AHkBtHIL?tj4eKL
+ ,IO*Ag?UoH*d<fP*Y"<cPW"hBV0,E$kdsR>GbV":Sh@-H:iTcpq\!>%7r`BfpNC>Kpml8GZ
+ b*lL>br)C-a_;_--=p0eU"C0HFpOj6,ds]mRr41*lYO<3LGFZ9YaM1)jl7<R)9%H`O17WR"
+ ICm^en>UR"IDd_ZUsu[=L?*K/lW@;-Y'-K/o=:"<>CgJN9*M3D@4c>T9&_3LI\e*6#=:3LG
+ FZ9YaM1)jl7<R)9%H`O17WR"ICm^en>UR"IDd_ZUsu[=L?*K/lW@;-Y'-K/o=:"<>CgJN9*
+ M3D@4c>T9&_3LI\e*6#=:3LGFZ9YaM1)jl7<R)9%H`O17WR"ICm^en>UR"IDd_ZUsu[=L>j
+ YH4u[!mTurl,4Pge>'N3HMVrp<ik:UJ%e'KRb]HaCcH^G;(&V8l`@a9?Blm1*kBT'n,+gn0
+ Tp>~>
+Q
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-height_expected.png b/testfiles/cli_tests/testcases/export-height_expected.png
new file mode 100644
index 0000000..e6ab7ed
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-height_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf
new file mode 100644
index 0000000..9e23657
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps b/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps
new file mode 100644
index 0000000..3029a52
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.eps
@@ -0,0 +1,82 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:25:06 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 150 150
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 150 150
+%%EndPageSetup
+q 37 37 76 76 rectclip
+1 0 0 -1 0 150 cm q
+0 0 1 rg
+37.5 37.5 37.5 75 re f
+1 0 0 rg
+75 37.5 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf
new file mode 100644
index 0000000..0535214
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.png b/testfiles/cli_tests/testcases/export-margin_drawing_expected.png
new file mode 100644
index 0000000..de4aeba
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps b/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps
new file mode 100644
index 0000000..025c45c
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.ps
@@ -0,0 +1,119 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:25:05 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 53x53mm 150 150 0 () ()
+%%BoundingBox: 37 37 113 113
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 53x53mm
+%%PageBoundingBox: 37 37 113 113
+150 150 cairo_set_page_size
+%%EndPageSetup
+q 37 37 76 76 rectclip
+1 0 0 -1 0 150 cm q
+0 0 1 rg
+37.5 37.5 37.5 75 re f
+1 0 0 rg
+75 37.5 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg b/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg
new file mode 100644
index 0000000..e22c4ef
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_px.svg"
+ id="svg4"
+ version="1.1"
+ height="200"
+ width="200">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <rect
+ id="square-blue"
+ fill="#0000ff"
+ height="100"
+ width="50"
+ y="50"
+ x="50" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100"
+ width="50"
+ y="50"
+ x="100" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf b/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf
new file mode 100644
index 0000000..d37195f
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_drawing_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-area_expected.png b/testfiles/cli_tests/testcases/export-margin_export-area_expected.png
new file mode 100644
index 0000000..2e53613
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-area_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf
new file mode 100644
index 0000000..3802d6d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps b/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps
new file mode 100644
index 0000000..6f5f368
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.eps
@@ -0,0 +1,82 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Fri Mar 20 20:03:34 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 113 150
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 113 150
+%%EndPageSetup
+q 0 37 75 76 rectclip
+1 0 0 -1 0 150 cm q
+0 0 1 rg
+0 37.5 37.5 75 re f
+1 0 0 rg
+37.5 37.5 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf
new file mode 100644
index 0000000..3f2adf7
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.png b/testfiles/cli_tests/testcases/export-margin_export-id_expected.png
new file mode 100644
index 0000000..d044884
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps b/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps
new file mode 100644
index 0000000..47be99f
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.ps
@@ -0,0 +1,119 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Fri Mar 20 20:03:12 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 40x53mm 113 150 0 () ()
+%%BoundingBox: 0 37 75 113
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 40x53mm
+%%PageBoundingBox: 0 37 75 113
+113 150 cairo_set_page_size
+%%EndPageSetup
+q 0 37 75 76 rectclip
+1 0 0 -1 0 150 cm q
+0 0 1 rg
+0 37.5 37.5 75 re f
+1 0 0 rg
+37.5 37.5 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg b/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg
new file mode 100644
index 0000000..76e4eb2
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_px.svg"
+ id="svg4"
+ version="1.1"
+ height="200"
+ width="150">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <rect
+ id="square-blue"
+ fill="#0000ff"
+ height="100"
+ width="50"
+ y="50"
+ x="0" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100"
+ width="50"
+ y="50"
+ x="50" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf b/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf
new file mode 100644
index 0000000..407efb7
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf
new file mode 100644
index 0000000..5dbda47
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps
new file mode 100644
index 0000000..b9ac1df
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.eps
@@ -0,0 +1,80 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:25:02 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 113 150
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 113 150
+%%EndPageSetup
+q 37 37 38 76 rectclip
+1 0 0 -1 0 150 cm q
+1 0 0 rg
+37.5 37.5 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf
new file mode 100644
index 0000000..736e623
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png
new file mode 100644
index 0000000..a63f9c4
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps
new file mode 100644
index 0000000..1512864
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.ps
@@ -0,0 +1,117 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:25:01 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 40x53mm 113 150 0 () ()
+%%BoundingBox: 37 37 75 113
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 40x53mm
+%%PageBoundingBox: 37 37 75 113
+113 150 cairo_set_page_size
+%%EndPageSetup
+q 37 37 38 76 rectclip
+1 0 0 -1 0 150 cm q
+1 0 0 rg
+37.5 37.5 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg
new file mode 100644
index 0000000..0d1c2ac
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.svg
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_px.svg"
+ id="svg4"
+ version="1.1"
+ height="200"
+ width="150">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100"
+ width="50"
+ y="50"
+ x="50" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf
new file mode 100644
index 0000000..169b86d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_export-id_export-id-only_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_expected.emf
new file mode 100644
index 0000000..78c3182
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_expected.eps
new file mode 100644
index 0000000..fba673e
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.eps
@@ -0,0 +1,82 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:24:54 2020
+%%Pages: 1
+%%BoundingBox: 0 0 851 851
+%%HiResBoundingBox: 0 0 851 851
+%%LanguageLevel: 3
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 851 851
+%%EndPageSetup
+q 283 284 284 284 rectclip
+1 0 0 -1 0 851 cm q
+0 0 1 rg
+283.465 283.465 141.73 283.465 re f
+1 0 0 rg
+425.195 283.465 141.734 283.465 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf
new file mode 100644
index 0000000..f4c472c
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_expected.png
new file mode 100644
index 0000000..9c22341
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_expected.ps
new file mode 100644
index 0000000..abb8818
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.ps
@@ -0,0 +1,119 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:24:53 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 300x300mm 850 850 0 () ()
+%%BoundingBox: 283 284 567 568
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 300x300mm
+%%PageBoundingBox: 283 284 567 568
+851 851 cairo_set_page_size
+%%EndPageSetup
+q 283 284 284 284 rectclip
+1 0 0 -1 0 851 cm q
+0 0 1 rg
+283.465 283.465 141.73 283.465 re f
+1 0 0 rg
+425.195 283.465 141.734 283.465 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_expected.svg
new file mode 100644
index 0000000..424e8f8
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_mm.svg"
+ id="svg4"
+ version="1.1"
+ height="300mm"
+ width="300mm">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <rect
+ id="square-blue"
+ fill="#0000ff"
+ height="100mm"
+ width="50mm"
+ y="377.95276"
+ x="377.95276" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100mm"
+ width="50mm"
+ y="377.95276"
+ x="566.92914" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf
new file mode 100644
index 0000000..0131399
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf
new file mode 100644
index 0000000..e0130bf
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps
new file mode 100644
index 0000000..7975c1d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.eps
@@ -0,0 +1,82 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Sat Mar 21 23:14:25 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 567 567
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 567 567
+%%EndPageSetup
+q 141 141 285 285 rectclip
+1 0 0 -1 0 567 cm q
+0 0 1 rg
+141.73 141.73 141.734 283.465 re f
+1 0 0 rg
+283.465 141.73 141.73 283.465 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf
new file mode 100644
index 0000000..a463c55
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png
new file mode 100644
index 0000000..84fd7bc
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps
new file mode 100644
index 0000000..d43e2b3
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.ps
@@ -0,0 +1,119 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Sat Mar 21 23:14:19 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 200x200mm 567 567 0 () ()
+%%BoundingBox: 141 141 426 426
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 200x200mm
+%%PageBoundingBox: 141 141 426 426
+567 567 cairo_set_page_size
+%%EndPageSetup
+q 141 141 285 285 rectclip
+1 0 0 -1 0 567 cm q
+0 0 1 rg
+141.73 141.73 141.734 283.465 re f
+1 0 0 rg
+283.465 141.73 141.73 283.465 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg
new file mode 100644
index 0000000..e7773cd
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_mm_viewbox.svg"
+ id="svg4"
+ version="1.1"
+ viewBox="0 0 200 200"
+ height="200mm"
+ width="200mm">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here,
+ so that 1 (unitless) user unit is equivalent to 1 mm after scaling.
+ The first square (square-mm) doesn't actually have a size of 100 mm.
+ The second and third square together has the size of 100 mm × 100 mm.
+ <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />-->
+ <rect
+ id="square-blue"
+ fill="#0000ff"
+ height="100"
+ width="50"
+ y="50"
+ x="50" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100"
+ width="50"
+ y="50"
+ x="100" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf
new file mode 100644
index 0000000..f8c842d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_drawing_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf
new file mode 100644
index 0000000..6315da5
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps
new file mode 100644
index 0000000..3d0d510
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.eps
@@ -0,0 +1,82 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Sat Mar 21 23:11:11 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 426 567
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 426 567
+%%EndPageSetup
+q 0 141 284 285 rectclip
+1 0 0 -1 0 567 cm q
+0 0 1 rg
+0 141.73 141.73 283.465 re f
+1 0 0 rg
+141.73 141.73 141.734 283.465 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf
new file mode 100644
index 0000000..f9914b4
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png
new file mode 100644
index 0000000..51a98e1
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps
new file mode 100644
index 0000000..08192c1
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.ps
@@ -0,0 +1,119 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Sat Mar 21 23:11:23 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 150x200mm 425 567 0 () ()
+%%BoundingBox: 0 141 284 426
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 150x200mm
+%%PageBoundingBox: 0 141 284 426
+426 567 cairo_set_page_size
+%%EndPageSetup
+q 0 141 284 285 rectclip
+1 0 0 -1 0 567 cm q
+0 0 1 rg
+0 141.73 141.73 283.465 re f
+1 0 0 rg
+141.73 141.73 141.734 283.465 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg
new file mode 100644
index 0000000..460de99
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_mm_viewbox.svg"
+ id="svg4"
+ version="1.1"
+ viewBox="0 0 150 200"
+ height="200mm"
+ width="150mm">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here,
+ so that 1 (unitless) user unit is equivalent to 1 mm after scaling.
+ The first square (square-mm) doesn't actually have a size of 100 mm.
+ The second and third square together has the size of 100 mm × 100 mm.
+ <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />-->
+ <rect
+ id="square-blue"
+ fill="#0000ff"
+ height="100"
+ width="50"
+ y="50"
+ x="-3.814697e-07" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100"
+ width="50"
+ y="50"
+ x="50" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf
new file mode 100644
index 0000000..18179f4
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_id_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf
new file mode 100644
index 0000000..78c3182
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps
new file mode 100644
index 0000000..fba673e
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.eps
@@ -0,0 +1,82 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:24:54 2020
+%%Pages: 1
+%%BoundingBox: 0 0 851 851
+%%HiResBoundingBox: 0 0 851 851
+%%LanguageLevel: 3
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 851 851
+%%EndPageSetup
+q 283 284 284 284 rectclip
+1 0 0 -1 0 851 cm q
+0 0 1 rg
+283.465 283.465 141.73 283.465 re f
+1 0 0 rg
+425.195 283.465 141.734 283.465 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf
new file mode 100644
index 0000000..f4c472c
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png
new file mode 100644
index 0000000..9c22341
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps
new file mode 100644
index 0000000..abb8818
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.ps
@@ -0,0 +1,119 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:24:53 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 300x300mm 850 850 0 () ()
+%%BoundingBox: 283 284 567 568
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 300x300mm
+%%PageBoundingBox: 283 284 567 568
+851 851 cairo_set_page_size
+%%EndPageSetup
+q 283 284 284 284 rectclip
+1 0 0 -1 0 851 cm q
+0 0 1 rg
+283.465 283.465 141.73 283.465 re f
+1 0 0 rg
+425.195 283.465 141.734 283.465 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg
new file mode 100644
index 0000000..8274392
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_mm_viewbox.svg"
+ id="svg4"
+ version="1.1"
+ viewBox="0 0 300 300"
+ height="300mm"
+ width="300mm">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here,
+ so that 1 (unitless) user unit is equivalent to 1 mm after scaling.
+ The first square (square-mm) doesn't actually have a size of 100 mm.
+ The second and third square together has the size of 100 mm × 100 mm.
+ <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />-->
+ <rect
+ id="square-blue"
+ fill="#0000ff"
+ height="100"
+ width="50"
+ y="100"
+ x="100" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100"
+ width="50"
+ y="100"
+ x="150" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf
new file mode 100644
index 0000000..0131399
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_mm_viewbox_page_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.emf b/testfiles/cli_tests/testcases/export-margin_px_expected.emf
new file mode 100644
index 0000000..0d52e4d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_px_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.eps b/testfiles/cli_tests/testcases/export-margin_px_expected.eps
new file mode 100644
index 0000000..dcc1bc0
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_px_expected.eps
@@ -0,0 +1,82 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:24:50 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 225 225
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 225 225
+%%EndPageSetup
+q 75 75 75 75 rectclip
+1 0 0 -1 0 225 cm q
+0 0 1 rg
+75 75 37.5 75 re f
+1 0 0 rg
+112.5 75 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.pdf b/testfiles/cli_tests/testcases/export-margin_px_expected.pdf
new file mode 100644
index 0000000..a467503
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_px_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.png b/testfiles/cli_tests/testcases/export-margin_px_expected.png
new file mode 100644
index 0000000..a9ce6f9
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_px_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.ps b/testfiles/cli_tests/testcases/export-margin_px_expected.ps
new file mode 100644
index 0000000..c2fa5e8
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_px_expected.ps
@@ -0,0 +1,119 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.15.10 (http://cairographics.org)
+%%CreationDate: Fri Mar 20 19:24:49 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 79x79mm 225 225 0 () ()
+%%BoundingBox: 75 75 150 150
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 79x79mm
+%%PageBoundingBox: 75 75 150 150
+225 225 cairo_set_page_size
+%%EndPageSetup
+q 75 75 75 75 rectclip
+1 0 0 -1 0 225 cm q
+0 0 1 rg
+75 75 37.5 75 re f
+1 0 0 rg
+112.5 75 37.5 75 re f
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.svg b/testfiles/cli_tests/testcases/export-margin_px_expected.svg
new file mode 100644
index 0000000..b4ec04f
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_px_expected.svg
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="square_px.svg"
+ id="svg4"
+ version="1.1"
+ height="300"
+ width="300">
+ <metadata
+ id="metadata10">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs8" />
+ <sodipodi:namedview
+ fit-margin-bottom="50"
+ fit-margin-right="50"
+ fit-margin-left="50"
+ fit-margin-top="50"
+ id="namedview6"
+ inkscape:window-height="480"
+ inkscape:window-width="640"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff" />
+ <rect
+ id="square-blue"
+ fill="#0000ff"
+ height="100"
+ width="50"
+ y="100"
+ x="100" />
+ <rect
+ id="square-red"
+ fill="#ff0000"
+ height="100"
+ width="50"
+ y="100"
+ x="150" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/export-margin_px_expected.wmf b/testfiles/cli_tests/testcases/export-margin_px_expected.wmf
new file mode 100644
index 0000000..57bd577
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-margin_px_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export-width_expected.png b/testfiles/cli_tests/testcases/export-width_expected.png
new file mode 100644
index 0000000..f05cecd
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export-width_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/export_hints.svg b/testfiles/cli_tests/testcases/export_hints.svg
new file mode 100644
index 0000000..87c06f5
--- /dev/null
+++ b/testfiles/cli_tests/testcases/export_hints.svg
@@ -0,0 +1,7 @@
+<!-- Note: inkscape:export-ydpi is actually ignored, see src/ui/dialog/export.cpp and src/io/file-export-cmd.cpp -->
+
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="190" height="80"
+ inkscape:export-filename="export_hints_drawing.png" inkscape:export-xdpi="111" inkscape:export-ydpi="222">
+ <rect id="rect1" x="10" y="10" width="80" height="60" fill="#00f" inkscape:export-filename="export_hints_rectangle.png" inkscape:export-xdpi="123" inkscape:export-ydpi="456"/>
+ <rect id="rect2" x="100" y="10" width="80" height="60" fill="#f00"/>
+</svg>
diff --git a/testfiles/cli_tests/testcases/filter.svg b/testfiles/cli_tests/testcases/filter.svg
new file mode 100644
index 0000000..6111da3
--- /dev/null
+++ b/testfiles/cli_tests/testcases/filter.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="230" height="120" viewBox="0 0 230 120" xmlns="http://www.w3.org/2000/svg">
+ <filter id="blurMe">
+ <feGaussianBlur stdDeviation="5"/>
+ </filter>
+ <circle cx="60" cy="60" r="60" fill="green" fill-opacity="0.1" />
+ <circle cx="60" cy="60" r="50" fill="green" />
+ <circle cx="170" cy="60" r="50" fill="green" filter="url(#blurMe)" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr
new file mode 100644
index 0000000..ccdb02a
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw.cdr
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr
new file mode 100644
index 0000000..4a74dbc
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2.cdr
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png
new file mode 100644
index 0000000..79a0966
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw2_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png
new file mode 100644
index 0000000..b3ee3e4
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/corel_draw_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd
new file mode 100644
index 0000000..a526a70
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png
new file mode 100644
index 0000000..43ba022
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsd_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx
new file mode 100644
index 0000000..ef8f6a1
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png
new file mode 100644
index 0000000..5f1bdfa
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/visio.vsdx_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg
new file mode 100644
index 0000000..02e1b82
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect.wpg
Binary files differ
diff --git a/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png
new file mode 100644
index 0000000..aa5ac9e
--- /dev/null
+++ b/testfiles/cli_tests/testcases/librevenge_formats/word_perfect_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/pdf-mesh.pdf b/testfiles/cli_tests/testcases/pdf-mesh.pdf
new file mode 100644
index 0000000..8d4c29c
--- /dev/null
+++ b/testfiles/cli_tests/testcases/pdf-mesh.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/pyramids.svg b/testfiles/cli_tests/testcases/pyramids.svg
new file mode 100644
index 0000000..30ac82a
--- /dev/null
+++ b/testfiles/cli_tests/testcases/pyramids.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="185px" height="100px">
+ <rect x="4.888" y="5.333" width="175" height="90" fill="#fff" stroke="#000" id="rect_misaligned" />
+
+ <rect x="10" y="10" width="80" height="80" fill="none" stroke="#000" id="rect_1" />
+ <rect x="15" y="15" width="70" height="70" fill="none" stroke="#000" id="rect_2" />
+ <rect x="20" y="20" width="60" height="60" fill="none" stroke="#000" id="rect_3" />
+ <rect x="25" y="25" width="50" height="50" fill="none" stroke="#000" id="rect_4" />
+ <rect x="30.5" y="30.5" width="40" height="40" fill="red" fill-opacity="0.2" id="quad_1" />
+ <rect x="35.5" y="35.5" width="30" height="30" fill="red" fill-opacity="0.2" id="quad_2" />
+ <rect x="40.5" y="40.5" width="20" height="20" fill="red" fill-opacity="0.2" id="quad_3" />
+ <rect x="45.5" y="45.5" width="10" height="10" fill="red" fill-opacity="0.2" id="quad_4" />
+
+ <rect x="95.5" y="10.5" width="80" height="80" fill="none" stroke="#000" id="rect_snapped_1" />
+ <rect x="100.5" y="15.5" width="70" height="70" fill="none" stroke="#000" id="rect_snapped_2" />
+ <rect x="105.5" y="20.5" width="60" height="60" fill="none" stroke="#000" id="rect_snapped_3" />
+ <rect x="110.5" y="25.5" width="50" height="50" fill="none" stroke="#000" id="rect_snapped_4" />
+ <rect x="115" y="30" width="40" height="40" fill="green" fill-opacity="0.2" id="quad_snapped_1" />
+ <rect x="120" y="35" width="30" height="30" fill="green" fill-opacity="0.2" id="quad_snapped_2" />
+ <rect x="125" y="40" width="20" height="20" fill="green" fill-opacity="0.2" id="quad_snapped_3" />
+ <rect x="130" y="45" width="10" height="10" fill="green" fill-opacity="0.2" id="quad_snapped_4" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/rects.svg b/testfiles/cli_tests/testcases/rects.svg
new file mode 100644
index 0000000..3d90ef1
--- /dev/null
+++ b/testfiles/cli_tests/testcases/rects.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="300px" height="100px">
+ <rect x="10" y="10" width="80" height="80" fill="#f00" id="rect1" />
+ <rect x="110" y="20" width="80" height="70" fill="#0f0" id="rect2" />
+ <rect x="210" y="30" width="80" height="60" fill="#00f" id="rect3" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/shapes.svg b/testfiles/cli_tests/testcases/shapes.svg
new file mode 100644
index 0000000..61ad01d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="400" height="300" version="1.1" xmlns="http://www.w3.org/2000/svg">
+ <g stroke="#000">
+ <rect x="10" y="5" width="160" height="130" fill="#00f" stroke-width="2"/>
+ <ellipse cx="275" cy="130" rx="120" ry="100" fill="#f00" stroke-width="4"/>
+ <path d="m95 290 9.9517-87.343-74.468-46.716 86.143-17.526 21.418-85.259 43.288 76.511 87.704-5.9771-59.39 64.812 32.787 81.565-79.993-36.455z" fill="#ff0" stroke-width="6"/>
+ </g>
+</svg>
diff --git a/testfiles/cli_tests/testcases/shapes_expected.emf b/testfiles/cli_tests/testcases/shapes_expected.emf
new file mode 100644
index 0000000..4bf1faa
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes_expected.emf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/shapes_expected.eps b/testfiles/cli_tests/testcases/shapes_expected.eps
new file mode 100644
index 0000000..fe91e4d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes_expected.eps
@@ -0,0 +1,109 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Sat Feb 22 20:44:27 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%BoundingBox: 0 0 291 220
+%%EndComments
+%%BeginProlog
+50 dict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 0 291 220
+%%EndPageSetup
+q 0 0 291 220 rectclip
+1 0 0 -1 0 220 cm q
+0 0 1 rg
+0.75 0.75 120 97.5 re f
+0 g
+1.5 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+0.75 0.75 120 97.5 re S Q
+1 0 0 rg
+289.5 94.5 m 289.5 135.922 249.207 169.5 199.5 169.5 c 149.793 169.5 109.5
+ 135.922 109.5 94.5 c 109.5 53.078 149.793 19.5 199.5 19.5 c 249.207 19.5
+ 289.5 53.078 289.5 94.5 c f
+0 g
+3 w
+q 1 0 0 1 0 0 cm
+289.5 94.5 m 289.5 135.922 249.207 169.5 199.5 169.5 c 149.793 169.5 109.5
+ 135.922 109.5 94.5 c 109.5 53.078 149.793 19.5 199.5 19.5 c 249.207 19.5
+ 289.5 53.078 289.5 94.5 c S Q
+1 1 0 rg
+64.5 214.5 m 71.965 148.992 l 16.113 113.957 l 80.719 100.813 l 96.785
+36.867 l 129.25 94.25 l 195.027 89.766 l 150.484 138.375 l 175.074 199.551
+ l 115.082 172.207 l h
+64.5 214.5 m f
+0 g
+4.5 w
+q 1 0 0 1 0 0 cm
+64.5 214.5 m 71.965 148.992 l 16.113 113.957 l 80.719 100.813 l 96.785
+36.867 l 129.25 94.25 l 195.027 89.766 l 150.484 138.375 l 175.074 199.551
+ l 115.082 172.207 l h
+64.5 214.5 m S Q
+Q Q
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/testfiles/cli_tests/testcases/shapes_expected.pdf b/testfiles/cli_tests/testcases/shapes_expected.pdf
new file mode 100644
index 0000000..bff07b6
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes_expected.pdf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/shapes_expected.png b/testfiles/cli_tests/testcases/shapes_expected.png
new file mode 100644
index 0000000..3e81da4
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes_expected.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/shapes_expected.ps b/testfiles/cli_tests/testcases/shapes_expected.ps
new file mode 100644
index 0000000..9037026
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes_expected.ps
@@ -0,0 +1,146 @@
+%!PS-Adobe-3.0
+%%Creator: cairo 1.16.0 (https://cairographics.org)
+%%CreationDate: Sat Feb 22 20:44:25 2020
+%%Pages: 1
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%DocumentMedia: 106x79mm 300 225 0 () ()
+%%BoundingBox: 6 2 298 222
+%%EndComments
+%%BeginProlog
+/languagelevel where
+{ pop languagelevel } { 1 } ifelse
+2 lt { /Helvetica findfont 12 scalefont setfont 50 500 moveto
+ (This print job requires a PostScript Language Level 2 printer.) show
+ showpage quit } if
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+/cairo_data_source {
+ CairoDataIndex CairoData length lt
+ { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
+ { () } ifelse
+} def
+/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
+/cairo_image { image cairo_flush_ascii85_file } def
+/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
+/cairo_set_page_size {
+ % Change paper size, but only if different from previous paper size otherwise
+ % duplex fails. PLRM specifies a tolerance of 5 pts when matching paper size
+ % so we use the same when checking if the size changes.
+ /setpagedevice where {
+ pop currentpagedevice
+ /PageSize known {
+ 2 copy
+ currentpagedevice /PageSize get aload pop
+ exch 4 1 roll
+ sub abs 5 gt
+ 3 1 roll
+ sub abs 5 gt
+ or
+ } {
+ true
+ } ifelse
+ {
+ 2 array astore
+ 2 dict begin
+ /PageSize exch def
+ /ImagingBBox null def
+ currentdict end
+ setpagedevice
+ } {
+ pop pop
+ } ifelse
+ } {
+ pop
+ } ifelse
+} def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+%%Page: 1 1
+%%BeginPageSetup
+%%PageMedia: 106x79mm
+%%PageBoundingBox: 6 2 298 222
+300 225 cairo_set_page_size
+%%EndPageSetup
+q 6 2 292 220 rectclip
+1 0 0 -1 0 225 cm q
+0 0 1 rg
+7.5 3.75 120 97.5 re f
+0 g
+1.5 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 1 0 0 cm
+7.5 3.75 120 97.5 re S Q
+1 0 0 rg
+296.25 97.5 m 296.25 138.922 255.957 172.5 206.25 172.5 c 156.543 172.5
+ 116.25 138.922 116.25 97.5 c 116.25 56.078 156.543 22.5 206.25 22.5 c 255.957
+ 22.5 296.25 56.078 296.25 97.5 c f
+0 g
+3 w
+q 1 0 0 1 0 0 cm
+296.25 97.5 m 296.25 138.922 255.957 172.5 206.25 172.5 c 156.543 172.5
+ 116.25 138.922 116.25 97.5 c 116.25 56.078 156.543 22.5 206.25 22.5 c 255.957
+ 22.5 296.25 56.078 296.25 97.5 c S Q
+1 1 0 rg
+71.25 217.5 m 78.715 151.992 l 22.863 116.957 l 87.469 103.813 l 103.535
+ 39.867 l 136 97.25 l 201.777 92.766 l 157.234 141.375 l 181.824 202.551
+ l 121.832 175.207 l h
+71.25 217.5 m f
+0 g
+4.5 w
+q 1 0 0 1 0 0 cm
+71.25 217.5 m 78.715 151.992 l 22.863 116.957 l 87.469 103.813 l 103.535
+ 39.867 l 136 97.25 l 201.777 92.766 l 157.234 141.375 l 181.824 202.551
+ l 121.832 175.207 l h
+71.25 217.5 m S Q
+Q Q
+showpage
+%%Trailer
+%%EOF
diff --git a/testfiles/cli_tests/testcases/shapes_expected.wmf b/testfiles/cli_tests/testcases/shapes_expected.wmf
new file mode 100644
index 0000000..1b3fdcf
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes_expected.wmf
Binary files differ
diff --git a/testfiles/cli_tests/testcases/shapes_expected.xaml b/testfiles/cli_tests/testcases/shapes_expected.xaml
new file mode 100644
index 0000000..025f668
--- /dev/null
+++ b/testfiles/cli_tests/testcases/shapes_expected.xaml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--This file is NOT compatible with Silverlight-->
+<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform">
+ <Canvas Name="svg10" Width="400" Height="300">
+ <Canvas.Resources/>
+ <!--Unknown tag: metadata-->
+ <!--Unknown tag: sodipodi:namedview-->
+ <Canvas Name="g8">
+ <Rectangle xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="10" Canvas.Top="5" Width="160" Height="130" Name="rect2" Fill="#FF0000FF" StrokeThickness="2" Stroke="#FF000000"/>
+ <Ellipse xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="155" Width="240" Canvas.Top="30" Height="200" Name="ellipse4" Fill="#FFFF0000" StrokeThickness="4" Stroke="#FF000000"/>
+ <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path6" Fill="#FFFFFF00" StrokeThickness="6" Stroke="#FF000000">
+ <Path.Data>
+ <PathGeometry Figures="m95 290 9.9517-87.343-74.468-46.716 86.143-17.526 21.418-85.259 43.288 76.511 87.704-5.9771-59.39 64.812 32.787 81.565-79.993-36.455z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ </Canvas>
+</Viewbox>
diff --git a/testfiles/cli_tests/testcases/square_mm.svg b/testfiles/cli_tests/testcases/square_mm.svg
new file mode 100644
index 0000000..b52aec6
--- /dev/null
+++ b/testfiles/cli_tests/testcases/square_mm.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="200mm" height="200mm">
+ <rect x="50mm" y="50mm" width="50mm" height="100mm" fill="blue" id="square-blue" />
+ <rect x="100mm" y="50mm" width="50mm" height="100mm" fill="red" id="square-red" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/square_mm_viewbox.svg b/testfiles/cli_tests/testcases/square_mm_viewbox.svg
new file mode 100644
index 0000000..394b205
--- /dev/null
+++ b/testfiles/cli_tests/testcases/square_mm_viewbox.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="200mm" height="200mm" viewBox="0 0 200 200">
+ <!-- Consider that usually 1 user unit = 1 px = 1/96 inch, but viewBox scale the the drawing here,
+ so that 1 (unitless) user unit is equivalent to 1 mm after scaling.
+ The first square (square-mm) doesn't actually have a size of 100 mm.
+ The second and third square together has the size of 100 mm × 100 mm.
+ <rect x="0" y="0" width="100mm" height="100mm" fill="yellow" id="square-mm" />-->
+ <rect x="50" y="50" width="50" height="100" fill="blue" id="square-blue" />
+ <rect x="100" y="50" width="50" height="100" fill="red" id="square-red" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/square_px.svg b/testfiles/cli_tests/testcases/square_px.svg
new file mode 100644
index 0000000..7467f7d
--- /dev/null
+++ b/testfiles/cli_tests/testcases/square_px.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="200px" height="200px">
+ <rect x="50" y="50" width="50" height="100" fill="blue" id="square-blue" />
+ <rect x="100" y="50" width="50" height="100" fill="red" id="square-red" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/systemLanguage.svg b/testfiles/cli_tests/testcases/systemLanguage.svg
new file mode 100644
index 0000000..c650dc9
--- /dev/null
+++ b/testfiles/cli_tests/testcases/systemLanguage.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="500" height="100">
+ <switch id="switch">
+ <!-- some fuzz to probe for crashing issues -->
+ <rect systemLanguage="" width="1" height="1"/>
+ <rect systemLanguage=" " width="1" height="1"/>
+ <rect systemLanguage="_" width="1" height="1"/>
+ <rect systemLanguage="-" width="1" height="1"/>
+ <rect systemLanguage="#" width="1" height="1"/>
+ <rect systemLanguage="-CH" width="1" height="1"/>
+
+ <!-- use rects instead of text to avoid any issues with font rendering -->
+ <!-- note: we don't support the 'allowReorder' attribute yet -->
+ <rect systemLanguage="en" x="10" y="10" width="80" height="80" fill="#00f"/>
+ <rect systemLanguage="fr" x="110" y="10" width="80" height="80" fill="#00f"/>
+ <rect systemLanguage="de-CH" x="210" y="10" width="80" height="80" fill="#00f"/>
+ <rect systemLanguage="es, pt" x="310" y="10" width="80" height="80" fill="#00f"/>
+ <rect x="410" y="10" width="80" height="80" fill="#00f"/>
+ </switch>
+</svg>
diff --git a/testfiles/cli_tests/testcases/systemLanguage_RDF.svg b/testfiles/cli_tests/testcases/systemLanguage_RDF.svg
new file mode 100644
index 0000000..7e1223e
--- /dev/null
+++ b/testfiles/cli_tests/testcases/systemLanguage_RDF.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="500" height="100"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <metadata>
+ <rdf:RDF>
+ <cc:Work>
+ <dc:language>fr</dc:language>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <use xlink:href="systemLanguage.svg#switch" />
+</svg>
diff --git a/testfiles/cli_tests/testcases/systemLanguage_de.png b/testfiles/cli_tests/testcases/systemLanguage_de.png
new file mode 100644
index 0000000..1dbfe36
--- /dev/null
+++ b/testfiles/cli_tests/testcases/systemLanguage_de.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/systemLanguage_default.png b/testfiles/cli_tests/testcases/systemLanguage_default.png
new file mode 100644
index 0000000..67cb9f0
--- /dev/null
+++ b/testfiles/cli_tests/testcases/systemLanguage_default.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/systemLanguage_en.png b/testfiles/cli_tests/testcases/systemLanguage_en.png
new file mode 100644
index 0000000..31679aa
--- /dev/null
+++ b/testfiles/cli_tests/testcases/systemLanguage_en.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/systemLanguage_fr.png b/testfiles/cli_tests/testcases/systemLanguage_fr.png
new file mode 100644
index 0000000..deeb4bf
--- /dev/null
+++ b/testfiles/cli_tests/testcases/systemLanguage_fr.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/systemLanguage_pt.png b/testfiles/cli_tests/testcases/systemLanguage_pt.png
new file mode 100644
index 0000000..91e5b4b
--- /dev/null
+++ b/testfiles/cli_tests/testcases/systemLanguage_pt.png
Binary files differ
diff --git a/testfiles/cli_tests/testcases/text.svg b/testfiles/cli_tests/testcases/text.svg
new file mode 100644
index 0000000..5dd1c7f
--- /dev/null
+++ b/testfiles/cli_tests/testcases/text.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100px" height="50px">
+ <text x="10" y="25">some text</text>
+</svg>