summaryrefslogtreecommitdiffstats
path: root/sw/qa/extras/odfexport
diff options
context:
space:
mode:
Diffstat (limited to 'sw/qa/extras/odfexport')
-rw-r--r--sw/qa/extras/odfexport/data/2_MathType3.docxbin0 -> 15260 bytes
-rw-r--r--sw/qa/extras/odfexport/data/CrossRefHeadingBookmark.fodt120
-rw-r--r--sw/qa/extras/odfexport/data/allow-overlap.odtbin0 -> 9853 bytes
-rw-r--r--sw/qa/extras/odfexport/data/arabic-zero-numbering.odtbin0 -> 8730 bytes
-rw-r--r--sw/qa/extras/odfexport/data/arabic-zero3-numbering.odtbin0 -> 9166 bytes
-rw-r--r--sw/qa/extras/odfexport/data/arabic-zero4-numbering.odtbin0 -> 8702 bytes
-rw-r--r--sw/qa/extras/odfexport/data/arabic-zero5-numbering.odtbin0 -> 8779 bytes
-rw-r--r--sw/qa/extras/odfexport/data/border_types.odtbin0 -> 10656 bytes
-rw-r--r--sw/qa/extras/odfexport/data/btlr-cell.odtbin0 -> 9174 bytes
-rw-r--r--sw/qa/extras/odfexport/data/btlr-frame.odtbin0 -> 8564 bytes
-rw-r--r--sw/qa/extras/odfexport/data/chapter-number-new-line.odtbin0 -> 8649 bytes
-rw-r--r--sw/qa/extras/odfexport/data/charborder.odtbin0 -> 8704 bytes
-rw-r--r--sw/qa/extras/odfexport/data/embedded-font-props.odtbin0 -> 8097 bytes
-rw-r--r--sw/qa/extras/odfexport/data/embedded-pdf.odtbin0 -> 23502 bytes
-rw-r--r--sw/qa/extras/odfexport/data/fdo38244.odtbin0 -> 10334 bytes
-rw-r--r--sw/qa/extras/odfexport/data/fdo43807.odtbin0 -> 7630 bytes
-rw-r--r--sw/qa/extras/odfexport/data/fdo58949.docxbin0 -> 26510 bytes
-rw-r--r--sw/qa/extras/odfexport/data/fdo60769.odtbin0 -> 9482 bytes
-rw-r--r--sw/qa/extras/odfexport/data/fdo79358.odtbin0 -> 9356 bytes
-rw-r--r--sw/qa/extras/odfexport/data/fdo86963.odtbin0 -> 39845 bytes
-rw-r--r--sw/qa/extras/odfexport/data/first-header-footer.odtbin0 -> 9644 bytes
-rw-r--r--sw/qa/extras/odfexport/data/footnote-collect-at-end-of-section.fodt192
-rw-r--r--sw/qa/extras/odfexport/data/framebackgrounds.odtbin0 -> 14327 bytes
-rw-r--r--sw/qa/extras/odfexport/data/gerrit13858.odtbin0 -> 10200 bytes
-rw-r--r--sw/qa/extras/odfexport/data/image-mimetype.odtbin0 -> 88597 bytes
-rw-r--r--sw/qa/extras/odfexport/data/nestedTableInFooter.odtbin0 -> 8611 bytes
-rw-r--r--sw/qa/extras/odfexport/data/ooo321_stylepagenumber.odtbin0 -> 8558 bytes
-rw-r--r--sw/qa/extras/odfexport/data/oooxml_embedded.sxwbin0 -> 21943 bytes
-rw-r--r--sw/qa/extras/odfexport/data/page-content-bottom.odtbin0 -> 8502 bytes
-rw-r--r--sw/qa/extras/odfexport/data/protection-key.fodt48
-rw-r--r--sw/qa/extras/odfexport/data/qrcode-properties.odt386
-rw-r--r--sw/qa/extras/odfexport/data/redlineTextFrame.odtbin0 -> 8560 bytes
-rw-r--r--sw/qa/extras/odfexport/data/referencelanguage.odtbin0 -> 16137 bytes
-rw-r--r--sw/qa/extras/odfexport/data/relh-page-tdf80282.odtbin0 -> 128045 bytes
-rw-r--r--sw/qa/extras/odfexport/data/relh-page.odtbin0 -> 10183 bytes
-rw-r--r--sw/qa/extras/odfexport/data/relw-page.odtbin0 -> 10221 bytes
-rw-r--r--sw/qa/extras/odfexport/data/resolved-comment.odtbin0 -> 8912 bytes
-rw-r--r--sw/qa/extras/odfexport/data/ruby-position.odtbin0 -> 8325 bytes
-rw-r--r--sw/qa/extras/odfexport/data/sender-initials.fodt71
-rw-r--r--sw/qa/extras/odfexport/data/sha1_correct.odtbin0 -> 8587 bytes
-rw-r--r--sw/qa/extras/odfexport/data/sha1_wrong.odtbin0 -> 8435 bytes
-rw-r--r--sw/qa/extras/odfexport/data/shape-relsize.odtbin0 -> 10706 bytes
-rw-r--r--sw/qa/extras/odfexport/data/signatureline-properties.fodt596
-rw-r--r--sw/qa/extras/odfexport/data/spellout-numberingtypes.odtbin0 -> 10222 bytes
-rw-r--r--sw/qa/extras/odfexport/data/sw_hatch.odtbin0 -> 6560 bytes
-rw-r--r--sw/qa/extras/odfexport/data/table_styles_1.odtbin0 -> 9874 bytes
-rw-r--r--sw/qa/extras/odfexport/data/table_styles_2.odtbin0 -> 10727 bytes
-rw-r--r--sw/qa/extras/odfexport/data/table_styles_3.odtbin0 -> 9376 bytes
-rw-r--r--sw/qa/extras/odfexport/data/table_styles_4.odtbin0 -> 9094 bytes
-rw-r--r--sw/qa/extras/odfexport/data/table_styles_5.odtbin0 -> 9841 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf100492.odtbin0 -> 19671 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf101710.odtbin0 -> 9350 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf101856.odtbin0 -> 9406 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf101856_overlapped.odtbin0 -> 9233 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf103091.fodt307
-rw-r--r--sw/qa/extras/odfexport/data/tdf103567.odtbin0 -> 13562 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf107696.odtbin0 -> 11122 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf111891_frameVertStyle.odtbin0 -> 8814 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf118393.odtbin0 -> 14208 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf118502.odtbin0 -> 76491 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf121658.odtbin0 -> 20057 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odtbin0 -> 10880 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf128504.docxbin0 -> 3969 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf129568-ui.fodt368
-rw-r--r--sw/qa/extras/odfexport/data/tdf129568.fodt368
-rw-r--r--sw/qa/extras/odfexport/data/tdf131621.ottbin0 -> 29145 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf131812.odtbin0 -> 8683 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf132642_keepWithNextTable.odtbin0 -> 10030 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf43569_conditionalfield.docbin0 -> 22016 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf66305.odtbin0 -> 12685 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf77961.odtbin0 -> 11510 bytes
-rw-r--r--sw/qa/extras/odfexport/data/tdf92379.fodt89
-rw-r--r--sw/qa/extras/odfexport/data/tdf99631.docxbin0 -> 32417 bytes
-rw-r--r--sw/qa/extras/odfexport/data/textbox-rounded-corners.odtbin0 -> 13249 bytes
-rw-r--r--sw/qa/extras/odfexport/data/textframe-gradient.odtbin0 -> 9800 bytes
-rw-r--r--sw/qa/extras/odfexport/data/textframe-transparent-shadow.odtbin0 -> 9634 bytes
-rw-r--r--sw/qa/extras/odfexport/data/textframe-vertadjust.odtbin0 -> 12850 bytes
-rw-r--r--sw/qa/extras/odfexport/data/user-field-decl-fly.odtbin0 -> 9167 bytes
-rw-r--r--sw/qa/extras/odfexport/data/user-field-decl.odtbin0 -> 8597 bytes
-rw-r--r--sw/qa/extras/odfexport/data/userdefattr-tablecell.odtbin0 -> 9172 bytes
-rw-r--r--sw/qa/extras/odfexport/data/whitespace.odtbin0 -> 10981 bytes
-rw-r--r--sw/qa/extras/odfexport/odfexport.cxx2555
82 files changed, 5100 insertions, 0 deletions
diff --git a/sw/qa/extras/odfexport/data/2_MathType3.docx b/sw/qa/extras/odfexport/data/2_MathType3.docx
new file mode 100644
index 000000000..0694921b3
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/2_MathType3.docx
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/CrossRefHeadingBookmark.fodt b/sw/qa/extras/odfexport/data/CrossRefHeadingBookmark.fodt
new file mode 100644
index 000000000..64d620537
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/CrossRefHeadingBookmark.fodt
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:initial-creator>ms </meta:initial-creator><meta:creation-date>2015-08-24T21:49:45.305718699</meta:creation-date><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/><meta:generator>LibreOfficeDev/4.3.7.2$Linux_X86_64 LibreOffice_project/8a35821d8636a03b8bf4e15b48f59794652c68ba</meta:generator></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Sans CN Regular" svg:font-family="&apos;Source Han Sans CN Regular&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+
+ <text:list-style style:name="WW8Num2">
+ <text:list-level-style-number text:level="1" style:num-prefix="daj o úroveň viac" style:num-format="1">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.27cm" fo:text-indent="-0.635cm" fo:margin-left="1.27cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="2" style:num-format="1" text:display-levels="2">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1cm" fo:text-indent="-1cm" fo:margin-left="1cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="3" style:num-format="1" text:display-levels="3">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.6cm" fo:text-indent="-1.6cm" fo:margin-left="2.6cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="4" style:num-suffix=")" style:num-format="a" style:num-letter-sync="true">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.801cm" fo:text-indent="-0.55cm" fo:margin-left="1.801cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="5" style:num-suffix=")" style:num-format="a" style:num-letter-sync="true">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.18cm" fo:text-indent="-0.64cm" fo:margin-left="3.18cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="6" style:num-suffix=" " style:num-format="1" text:display-levels="6">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.445cm" fo:text-indent="-0.635cm" fo:margin-left="4.445cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="7" style:num-suffix=" " style:num-format="1" text:display-levels="7">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.08cm" fo:text-indent="-0.635cm" fo:margin-left="5.08cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="8" style:num-suffix=" " style:num-format="1" text:display-levels="8">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.715cm" fo:text-indent="-0.635cm" fo:margin-left="5.715cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="9" style:num-suffix=" " style:num-format="1" text:display-levels="9">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.35cm" fo:text-indent="-0.635cm" fo:margin-left="6.35cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ <text:list-level-style-number text:level="10" style:num-suffix="." style:num-format="1">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.985cm" fo:text-indent="-0.635cm" fo:margin-left="6.985cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-number>
+ </text:list-style>
+
+ </office:styles>
+ <office:automatic-styles>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="WW8Num2">
+ <style:text-properties officeooo:rsid="0014f4d6" officeooo:paragraph-rsid="0014f4d6"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Standard" style:list-style-name="WW8Num2">
+ <style:text-properties officeooo:rsid="0014f4d6" officeooo:paragraph-rsid="00150749"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:list xml:id="list1703205442746379122" text:style-name="WW8Num2">
+ <text:list-item>
+ <text:list>
+ <text:list-item>
+ <text:p text:style-name="P2"><text:bookmark-start text:name="__RefHeading__8284_1826734303"/><text:bookmark-start text:name="__RefHeading__1673_25705824"/>text<text:bookmark-end text:name="__RefHeading__8284_1826734303"/><text:bookmark-end text:name="__RefHeading__1673_25705824"/></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P3">cross-reference to <text:bookmark-ref text:reference-format="number" text:ref-name="__RefHeading__1673_25705824">1.1</text:bookmark-ref> <text:span text:style-name="T1">(Numbered paragraph - Number) and </text:span><text:span text:style-name="T1"><text:bookmark-ref text:reference-format="number-no-superior" text:ref-name="__RefHeading__1673_25705824">1.1</text:bookmark-ref></text:span><text:span text:style-name="T1">(Numbered paragraph - no context)</text:span></text:p>
+ </text:list-item>
+ </text:list>
+ </text:list-item>
+ </text:list>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/allow-overlap.odt b/sw/qa/extras/odfexport/data/allow-overlap.odt
new file mode 100644
index 000000000..b23f5b360
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/allow-overlap.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/arabic-zero-numbering.odt b/sw/qa/extras/odfexport/data/arabic-zero-numbering.odt
new file mode 100644
index 000000000..2a445b227
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/arabic-zero-numbering.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/arabic-zero3-numbering.odt b/sw/qa/extras/odfexport/data/arabic-zero3-numbering.odt
new file mode 100644
index 000000000..0bdca270e
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/arabic-zero3-numbering.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/arabic-zero4-numbering.odt b/sw/qa/extras/odfexport/data/arabic-zero4-numbering.odt
new file mode 100644
index 000000000..2eb9b49ce
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/arabic-zero4-numbering.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/arabic-zero5-numbering.odt b/sw/qa/extras/odfexport/data/arabic-zero5-numbering.odt
new file mode 100644
index 000000000..3526ee8d7
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/arabic-zero5-numbering.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/border_types.odt b/sw/qa/extras/odfexport/data/border_types.odt
new file mode 100644
index 000000000..97b72436f
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/border_types.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/btlr-cell.odt b/sw/qa/extras/odfexport/data/btlr-cell.odt
new file mode 100644
index 000000000..c010fa9f5
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/btlr-cell.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/btlr-frame.odt b/sw/qa/extras/odfexport/data/btlr-frame.odt
new file mode 100644
index 000000000..31cb03849
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/btlr-frame.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/chapter-number-new-line.odt b/sw/qa/extras/odfexport/data/chapter-number-new-line.odt
new file mode 100644
index 000000000..68a427f72
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/chapter-number-new-line.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/charborder.odt b/sw/qa/extras/odfexport/data/charborder.odt
new file mode 100644
index 000000000..0d4d50691
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/charborder.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/embedded-font-props.odt b/sw/qa/extras/odfexport/data/embedded-font-props.odt
new file mode 100644
index 000000000..6eb073e29
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/embedded-font-props.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/embedded-pdf.odt b/sw/qa/extras/odfexport/data/embedded-pdf.odt
new file mode 100644
index 000000000..3adb4cf11
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/embedded-pdf.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/fdo38244.odt b/sw/qa/extras/odfexport/data/fdo38244.odt
new file mode 100644
index 000000000..0fcc168a8
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/fdo38244.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/fdo43807.odt b/sw/qa/extras/odfexport/data/fdo43807.odt
new file mode 100644
index 000000000..ae03c5904
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/fdo43807.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/fdo58949.docx b/sw/qa/extras/odfexport/data/fdo58949.docx
new file mode 100644
index 000000000..d8f568b16
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/fdo58949.docx
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/fdo60769.odt b/sw/qa/extras/odfexport/data/fdo60769.odt
new file mode 100644
index 000000000..b3c39376b
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/fdo60769.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/fdo79358.odt b/sw/qa/extras/odfexport/data/fdo79358.odt
new file mode 100644
index 000000000..a1d2572a6
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/fdo79358.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/fdo86963.odt b/sw/qa/extras/odfexport/data/fdo86963.odt
new file mode 100644
index 000000000..72896e139
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/fdo86963.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/first-header-footer.odt b/sw/qa/extras/odfexport/data/first-header-footer.odt
new file mode 100644
index 000000000..2ed6b740a
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/first-header-footer.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/footnote-collect-at-end-of-section.fodt b/sw/qa/extras/odfexport/data/footnote-collect-at-end-of-section.fodt
new file mode 100644
index 000000000..b99103348
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/footnote-collect-at-end-of-section.fodt
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2019-10-21T13:59:35.847339849</meta:creation-date><dc:date>2019-10-21T14:28:45.221080424</dc:date><meta:editing-duration>PT23M48S</meta:editing-duration><meta:editing-cycles>2</meta:editing-cycles><meta:generator>LibreOffice_powered_by_CIBDev/6.1.7.5$Linux_X86_64 LibreOffice_project/3ab5486449d1f3ca0247a9c133da746401c57e28</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="8" meta:word-count="8" meta:character-count="25" meta:non-whitespace-character-count="25"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Sans CN" svg:font-family="&apos;Source Han Sans CN&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Serif CN" svg:font-family="&apos;Source Han Serif CN&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Serif CN" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Serif CN" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Source Han Sans CN" style:font-family-asian="&apos;Source Han Sans CN&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" loext:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="Footnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-left="0.598cm" fo:margin-right="0cm" fo:text-indent="-0.598cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="Endnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-left="0.598cm" fo:margin-right="0cm" fo:text-indent="-0.598cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="Footnote_20_Symbol" style:display-name="Footnote Symbol" style:family="text"/>
+ <style:style style:name="Footnote_20_anchor" style:display-name="Footnote anchor" style:family="text">
+ <style:text-properties style:text-position="super 58%"/>
+ </style:style>
+ <style:style style:name="Endnote_20_Symbol" style:display-name="Endnote Symbol" style:family="text"/>
+ <style:style style:name="Endnote_20_anchor" style:display-name="Endnote anchor" style:family="text">
+ <style:text-properties style:text-position="super 58%"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" text:default-style-name="Footnote" text:citation-style-name="Footnote_20_Symbol" text:citation-body-style-name="Footnote_20_anchor" text:master-page-name="Footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="chapter"/>
+ <text:notes-configuration text:note-class="endnote" text:default-style-name="Endnote" text:citation-style-name="Endnote_20_Symbol" text:citation-body-style-name="Endnote_20_anchor" text:master-page-name="Endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Footnote">
+ <style:text-properties officeooo:rsid="00126297" officeooo:paragraph-rsid="00126297"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Footnote">
+ <style:text-properties officeooo:rsid="0001a183" officeooo:paragraph-rsid="0001a183"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Footnote">
+ <style:text-properties officeooo:rsid="00126297" officeooo:paragraph-rsid="00126297"/>
+ </style:style>
+ <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Footnote">
+ <style:text-properties officeooo:rsid="0001a183" officeooo:paragraph-rsid="0001a183"/>
+ </style:style>
+ <style:style style:name="P5" style:family="paragraph" style:parent-style-name="Footnote">
+ <style:text-properties officeooo:rsid="00126297" officeooo:paragraph-rsid="00126297"/>
+ </style:style>
+ <style:style style:name="Sect1" style:family="section">
+ <style:section-properties text:dont-balance-text-columns="false" style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <text:notes-configuration text:note-class="footnote" text:start-value="1"/>
+ </style:section-properties>
+ </style:style>
+ <style:style style:name="Sect2" style:family="section">
+ <style:section-properties style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ <text:notes-configuration text:note-class="footnote" text:start-value="1"/>
+ </style:section-properties>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ <style:page-layout style:name="pm2">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm">
+ <style:footnote-sep style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ <style:master-page style:name="Footnote" style:page-layout-name="pm2"/>
+ <style:master-page style:name="Endnote" style:page-layout-name="pm2"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:tracked-changes text:track-changes="false">
+ <text:changed-region xml:id="ct217160384" text:id="ct217160384">
+ <text:deletion>
+ <office:change-info>
+ <dc:creator>Unknown Author</dc:creator>
+ <dc:date>2019-10-21T14:28:28</dc:date>
+ </office:change-info>
+ <text:p text:style-name="Standard"><text:note text:id="ftn6" text:note-class="footnote"><text:note-citation>2</text:note-citation><text:note-body>
+ <text:p text:style-name="P1">two</text:p></text:note-body></text:note><text:note text:id="ftn6" text:note-class="footnote"><text:note-citation>3</text:note-citation><text:note-body>
+ <text:p text:style-name="P2">three</text:p></text:note-body></text:note></text:p>
+ </text:deletion>
+ </text:changed-region>
+ </text:tracked-changes>
+ <text:section text:style-name="Sect1" text:name="Section1">
+ <text:p text:style-name="Standard"><text:note text:id="ftn1" text:note-class="footnote"><text:note-citation>1</text:note-citation><text:note-body>
+ <text:p text:style-name="P1">one</text:p></text:note-body></text:note><text:note text:id="ftn2" text:note-class="footnote"><text:note-citation>2</text:note-citation><text:note-body>
+ <text:p text:style-name="P1">two</text:p></text:note-body></text:note></text:p>
+ </text:section>
+ <text:section text:style-name="Sect2" text:name="Section2">
+ <text:p text:style-name="Standard"><text:note text:id="ftn3" text:note-class="footnote"><text:note-citation>1</text:note-citation><text:note-body>
+ <text:p text:style-name="P1">one</text:p></text:note-body></text:note><text:change text:change-id="ct217160384"/><text:note text:id="ftn5" text:note-class="footnote"><text:note-citation>2</text:note-citation><text:note-body>
+ <text:p text:style-name="P2">four</text:p></text:note-body></text:note></text:p>
+ </text:section>
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/framebackgrounds.odt b/sw/qa/extras/odfexport/data/framebackgrounds.odt
new file mode 100644
index 000000000..9ad338c2d
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/framebackgrounds.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/gerrit13858.odt b/sw/qa/extras/odfexport/data/gerrit13858.odt
new file mode 100644
index 000000000..9b3dd37ff
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/gerrit13858.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/image-mimetype.odt b/sw/qa/extras/odfexport/data/image-mimetype.odt
new file mode 100644
index 000000000..4c4924a1b
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/image-mimetype.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/nestedTableInFooter.odt b/sw/qa/extras/odfexport/data/nestedTableInFooter.odt
new file mode 100644
index 000000000..0356f04ee
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/nestedTableInFooter.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/ooo321_stylepagenumber.odt b/sw/qa/extras/odfexport/data/ooo321_stylepagenumber.odt
new file mode 100644
index 000000000..aae70e106
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/ooo321_stylepagenumber.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/oooxml_embedded.sxw b/sw/qa/extras/odfexport/data/oooxml_embedded.sxw
new file mode 100644
index 000000000..e4fe14aef
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/oooxml_embedded.sxw
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/page-content-bottom.odt b/sw/qa/extras/odfexport/data/page-content-bottom.odt
new file mode 100644
index 000000000..263ca7df4
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/page-content-bottom.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/protection-key.fodt b/sw/qa/extras/odfexport/data/protection-key.fodt
new file mode 100644
index 000000000..cd4cde962
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/protection-key.fodt
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+
+ <office:styles>
+
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+
+ </office:styles>
+ <office:automatic-styles>
+
+ <style:style style:name="Sect" style:family="section">
+ <style:section-properties style:editable="false">
+ <style:columns fo:column-count="1" fo:column-gap="0cm"/>
+ </style:section-properties>
+ </style:style>
+
+ </office:automatic-styles>
+ <office:body>
+ <office:text>
+
+ <!-- UTF-16 LE, bad SHA1 -->
+ <text:section text:style-name="Sect" text:name="Section0" text:protected="true" text:protection-key="vbnhxyBKtPHCA1wB21zG1Oha8ZA=">
+ <text:p text:style-name="Standard"/>
+ </text:section>
+
+ <!-- echo -n $(echo -n 1012345678901234567890123456789012345678901234567890 | sha1sum | cut -f 1 -d ' ') | xxd -r -p | base64 -->
+ <!-- UTF-8, good SHA1 -->
+ <text:section text:style-name="Sect" text:name="Section1" text:protected="true" text:protection-key="nLHas0RIwepGDaH4c2hpyIUvIS8=">
+ <text:p text:style-name="Standard"/>
+ </text:section>
+
+ <!-- echo -n $(echo -n 1012345678901234567890123456789012345678901234567890 | sha256sum | cut -f 1 -d ' ') | xxd -r -p | base64 -->
+ <!-- UTF-8, SHA256, ODF 1.2 URI -->
+ <text:section text:style-name="Sect" text:name="Section2" text:protected="true" text:protection-key="1tnJohagR2T0yF/v69hLPuumSTsj32CumW97nkKGuSQ=" text:protection-key-digest-algorithm="http://www.w3.org/2000/09/xmldsig#sha256">
+ <text:p text:style-name="Standard"/>
+ </text:section>
+
+ <!-- UTF-8, SHA256, W3C URI -->
+ <text:section text:style-name="Sect" text:name="Section3" text:protected="true" text:protection-key="1tnJohagR2T0yF/v69hLPuumSTsj32CumW97nkKGuSQ=" text:protection-key-digest-algorithm="http://www.w3.org/2001/04/xmlenc#sha256">
+ <text:p text:style-name="Standard"/>
+ </text:section>
+
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
+
diff --git a/sw/qa/extras/odfexport/data/qrcode-properties.odt b/sw/qa/extras/odfexport/data/qrcode-properties.odt
new file mode 100644
index 000000000..6aa3ed252
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/qrcode-properties.odt
@@ -0,0 +1,386 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ooo="http://openoffice.org/2004/office" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><dc:date>2019-08-08T13:36:57.760952360</dc:date><meta:editing-duration>PT1M46S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/><meta:generator>LibreOfficeDev/6.4.0.0.alpha0$Linux_X86_64 LibreOffice_project/4dac05d709f960acb27cbbf1425f36cdbf68d04d</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">13363</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">12146</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">6503</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">2501</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">13361</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">12144</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1767301</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1767301</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Mono" svg:font-family="&apos;Liberation Mono&apos;" style:font-family-generic="modern" style:font-pitch="fixed"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC Regular" svg:font-family="&apos;Noto Sans CJK SC Regular&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Serif CJK SC" svg:font-family="&apos;Noto Serif CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="IN" style:letter-kerning="true" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="IN" style:font-name-asian="Noto Serif CJK SC" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC Regular" style:font-family-asian="&apos;Noto Sans CJK SC Regular&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" loext:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Preformatted_20_Text" style:display-name="Preformatted Text" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0cm" loext:contextual-spacing="false"/>
+ <style:text-properties style:font-name="Liberation Mono" fo:font-family="&apos;Liberation Mono&apos;" style:font-family-generic="modern" style:font-pitch="fixed" fo:font-size="10pt" style:font-name-asian="Liberation Mono" style:font-family-asian="&apos;Liberation Mono&apos;" style:font-family-generic-asian="modern" style:font-pitch-asian="fixed" style:font-size-asian="10pt" style:font-name-complex="Liberation Mono" style:font-family-complex="&apos;Liberation Mono&apos;" style:font-family-generic-complex="modern" style:font-pitch-complex="fixed" style:font-size-complex="10pt"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph">
+ <loext:graphic-properties draw:fill="none"/>
+ <style:paragraph-properties fo:text-align="center"/>
+ </style:style>
+ <style:style style:name="gr1" style:family="graphic">
+ <style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle" draw:color-mode="standard" draw:luminance="0%" draw:contrast="0%" draw:gamma="100%" draw:red="0%" draw:green="0%" draw:blue="0%" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:image-opacity="100%" style:mirror="none" style:run-through="background" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" draw:wrap-influence-on-position="once-concurrent" style:flow-with-text="false"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Preformatted_20_Text"><draw:frame text:anchor-type="paragraph" draw:z-index="0" draw:style-name="gr1" draw:text-style-name="P1" svg:width="4.001cm" svg:height="4.001cm" svg:x="0cm" svg:y="0cm">
+ <draw:image loext:mime-type="image/svg+xml">
+ <office:binary-data>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHN2ZyBQ
+ VUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3Jh
+ cGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53
+ My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM1IDM1IiBzdHJv
+ a2U9Im5vbmUiPgoJPHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0iI0ZG
+ RkZGRiIvPgoJPHBhdGggZD0iTTUsNWgxdjFoLTF6IE02LDVoMXYxaC0xeiBNNyw1aDF2MWgt
+ MXogTTgsNWgxdjFoLTF6IE05LDVoMXYxaC0xeiBNMTAsNWgxdjFoLTF6IE0xMSw1aDF2MWgt
+ MXogTTE1LDVoMXYxaC0xeiBNMTcsNWgxdjFoLTF6IE0xOCw1aDF2MWgtMXogTTIwLDVoMXYx
+ aC0xeiBNMjEsNWgxdjFoLTF6IE0yMyw1aDF2MWgtMXogTTI0LDVoMXYxaC0xeiBNMjUsNWgx
+ djFoLTF6IE0yNiw1aDF2MWgtMXogTTI3LDVoMXYxaC0xeiBNMjgsNWgxdjFoLTF6IE0yOSw1
+ aDF2MWgtMXogTTUsNmgxdjFoLTF6IE0xMSw2aDF2MWgtMXogTTE0LDZoMXYxaC0xeiBNMTUs
+ NmgxdjFoLTF6IE0xNiw2aDF2MWgtMXogTTE5LDZoMXYxaC0xeiBNMjEsNmgxdjFoLTF6IE0y
+ Myw2aDF2MWgtMXogTTI5LDZoMXYxaC0xeiBNNSw3aDF2MWgtMXogTTcsN2gxdjFoLTF6IE04
+ LDdoMXYxaC0xeiBNOSw3aDF2MWgtMXogTTExLDdoMXYxaC0xeiBNMTMsN2gxdjFoLTF6IE0x
+ NSw3aDF2MWgtMXogTTE3LDdoMXYxaC0xeiBNMjMsN2gxdjFoLTF6IE0yNSw3aDF2MWgtMXog
+ TTI2LDdoMXYxaC0xeiBNMjcsN2gxdjFoLTF6IE0yOSw3aDF2MWgtMXogTTUsOGgxdjFoLTF6
+ IE03LDhoMXYxaC0xeiBNOCw4aDF2MWgtMXogTTksOGgxdjFoLTF6IE0xMSw4aDF2MWgtMXog
+ TTE0LDhoMXYxaC0xeiBNMTcsOGgxdjFoLTF6IE0xOCw4aDF2MWgtMXogTTE5LDhoMXYxaC0x
+ eiBNMjEsOGgxdjFoLTF6IE0yMyw4aDF2MWgtMXogTTI1LDhoMXYxaC0xeiBNMjYsOGgxdjFo
+ LTF6IE0yNyw4aDF2MWgtMXogTTI5LDhoMXYxaC0xeiBNNSw5aDF2MWgtMXogTTcsOWgxdjFo
+ LTF6IE04LDloMXYxaC0xeiBNOSw5aDF2MWgtMXogTTExLDloMXYxaC0xeiBNMTMsOWgxdjFo
+ LTF6IE0xOCw5aDF2MWgtMXogTTE5LDloMXYxaC0xeiBNMjAsOWgxdjFoLTF6IE0yMSw5aDF2
+ MWgtMXogTTIzLDloMXYxaC0xeiBNMjUsOWgxdjFoLTF6IE0yNiw5aDF2MWgtMXogTTI3LDlo
+ MXYxaC0xeiBNMjksOWgxdjFoLTF6IE01LDEwaDF2MWgtMXogTTExLDEwaDF2MWgtMXogTTEz
+ LDEwaDF2MWgtMXogTTE3LDEwaDF2MWgtMXogTTIzLDEwaDF2MWgtMXogTTI5LDEwaDF2MWgt
+ MXogTTUsMTFoMXYxaC0xeiBNNiwxMWgxdjFoLTF6IE03LDExaDF2MWgtMXogTTgsMTFoMXYx
+ aC0xeiBNOSwxMWgxdjFoLTF6IE0xMCwxMWgxdjFoLTF6IE0xMSwxMWgxdjFoLTF6IE0xMywx
+ MWgxdjFoLTF6IE0xNSwxMWgxdjFoLTF6IE0xNywxMWgxdjFoLTF6IE0xOSwxMWgxdjFoLTF6
+ IE0yMSwxMWgxdjFoLTF6IE0yMywxMWgxdjFoLTF6IE0yNCwxMWgxdjFoLTF6IE0yNSwxMWgx
+ djFoLTF6IE0yNiwxMWgxdjFoLTF6IE0yNywxMWgxdjFoLTF6IE0yOCwxMWgxdjFoLTF6IE0y
+ OSwxMWgxdjFoLTF6IE0xNCwxMmgxdjFoLTF6IE0xNSwxMmgxdjFoLTF6IE0xNiwxMmgxdjFo
+ LTF6IE0xNywxMmgxdjFoLTF6IE0xOSwxMmgxdjFoLTF6IE02LDEzaDF2MWgtMXogTTksMTNo
+ MXYxaC0xeiBNMTEsMTNoMXYxaC0xeiBNMTMsMTNoMXYxaC0xeiBNMTUsMTNoMXYxaC0xeiBN
+ MTcsMTNoMXYxaC0xeiBNMTgsMTNoMXYxaC0xeiBNMTksMTNoMXYxaC0xeiBNMjAsMTNoMXYx
+ aC0xeiBNMjIsMTNoMXYxaC0xeiBNMjQsMTNoMXYxaC0xeiBNMjUsMTNoMXYxaC0xeiBNMjcs
+ MTNoMXYxaC0xeiBNNywxNGgxdjFoLTF6IE04LDE0aDF2MWgtMXogTTEwLDE0aDF2MWgtMXog
+ TTE0LDE0aDF2MWgtMXogTTE5LDE0aDF2MWgtMXogTTIwLDE0aDF2MWgtMXogTTI1LDE0aDF2
+ MWgtMXogTTI2LDE0aDF2MWgtMXogTTI4LDE0aDF2MWgtMXogTTYsMTVoMXYxaC0xeiBNOSwx
+ NWgxdjFoLTF6IE0xMSwxNWgxdjFoLTF6IE0xMywxNWgxdjFoLTF6IE0xNCwxNWgxdjFoLTF6
+ IE0xNSwxNWgxdjFoLTF6IE0xOCwxNWgxdjFoLTF6IE0xOSwxNWgxdjFoLTF6IE0yMCwxNWgx
+ djFoLTF6IE0yMywxNWgxdjFoLTF6IE0yNCwxNWgxdjFoLTF6IE0xNCwxNmgxdjFoLTF6IE0x
+ NSwxNmgxdjFoLTF6IE0xNiwxNmgxdjFoLTF6IE0xNywxNmgxdjFoLTF6IE0xOCwxNmgxdjFo
+ LTF6IE0yMCwxNmgxdjFoLTF6IE0yMywxNmgxdjFoLTF6IE0yNCwxNmgxdjFoLTF6IE0yNiwx
+ NmgxdjFoLTF6IE0yNywxNmgxdjFoLTF6IE0yOSwxNmgxdjFoLTF6IE02LDE3aDF2MWgtMXog
+ TTksMTdoMXYxaC0xeiBNMTEsMTdoMXYxaC0xeiBNMTIsMTdoMXYxaC0xeiBNMTMsMTdoMXYx
+ aC0xeiBNMTQsMTdoMXYxaC0xeiBNMTgsMTdoMXYxaC0xeiBNMjIsMTdoMXYxaC0xeiBNMjMs
+ MTdoMXYxaC0xeiBNMjQsMTdoMXYxaC0xeiBNMjcsMTdoMXYxaC0xeiBNMjgsMTdoMXYxaC0x
+ eiBNMjksMTdoMXYxaC0xeiBNNSwxOGgxdjFoLTF6IE02LDE4aDF2MWgtMXogTTgsMThoMXYx
+ aC0xeiBNOSwxOGgxdjFoLTF6IE0xNSwxOGgxdjFoLTF6IE0xNywxOGgxdjFoLTF6IE0xOCwx
+ OGgxdjFoLTF6IE0xOSwxOGgxdjFoLTF6IE0yMCwxOGgxdjFoLTF6IE0yMSwxOGgxdjFoLTF6
+ IE0yNSwxOGgxdjFoLTF6IE0yNiwxOGgxdjFoLTF6IE0yNywxOGgxdjFoLTF6IE0yOCwxOGgx
+ djFoLTF6IE05LDE5aDF2MWgtMXogTTEwLDE5aDF2MWgtMXogTTExLDE5aDF2MWgtMXogTTEz
+ LDE5aDF2MWgtMXogTTE0LDE5aDF2MWgtMXogTTE1LDE5aDF2MWgtMXogTTE2LDE5aDF2MWgt
+ MXogTTE4LDE5aDF2MWgtMXogTTIwLDE5aDF2MWgtMXogTTI1LDE5aDF2MWgtMXogTTI2LDE5
+ aDF2MWgtMXogTTcsMjBoMXYxaC0xeiBNOCwyMGgxdjFoLTF6IE05LDIwaDF2MWgtMXogTTIx
+ LDIwaDF2MWgtMXogTTIyLDIwaDF2MWgtMXogTTIzLDIwaDF2MWgtMXogTTI3LDIwaDF2MWgt
+ MXogTTI5LDIwaDF2MWgtMXogTTUsMjFoMXYxaC0xeiBNNiwyMWgxdjFoLTF6IE03LDIxaDF2
+ MWgtMXogTTgsMjFoMXYxaC0xeiBNMTEsMjFoMXYxaC0xeiBNMTIsMjFoMXYxaC0xeiBNMTQs
+ MjFoMXYxaC0xeiBNMTUsMjFoMXYxaC0xeiBNMTcsMjFoMXYxaC0xeiBNMjEsMjFoMXYxaC0x
+ eiBNMjIsMjFoMXYxaC0xeiBNMjMsMjFoMXYxaC0xeiBNMjQsMjFoMXYxaC0xeiBNMjUsMjFo
+ MXYxaC0xeiBNMjcsMjFoMXYxaC0xeiBNMjgsMjFoMXYxaC0xeiBNMjksMjFoMXYxaC0xeiBN
+ MTMsMjJoMXYxaC0xeiBNMTUsMjJoMXYxaC0xeiBNMTYsMjJoMXYxaC0xeiBNMTcsMjJoMXYx
+ aC0xeiBNMTgsMjJoMXYxaC0xeiBNMjEsMjJoMXYxaC0xeiBNMjUsMjJoMXYxaC0xeiBNMjYs
+ MjJoMXYxaC0xeiBNMjcsMjJoMXYxaC0xeiBNMjgsMjJoMXYxaC0xeiBNNSwyM2gxdjFoLTF6
+ IE02LDIzaDF2MWgtMXogTTcsMjNoMXYxaC0xeiBNOCwyM2gxdjFoLTF6IE05LDIzaDF2MWgt
+ MXogTTEwLDIzaDF2MWgtMXogTTExLDIzaDF2MWgtMXogTTE0LDIzaDF2MWgtMXogTTE2LDIz
+ aDF2MWgtMXogTTE3LDIzaDF2MWgtMXogTTE4LDIzaDF2MWgtMXogTTE5LDIzaDF2MWgtMXog
+ TTIxLDIzaDF2MWgtMXogTTIzLDIzaDF2MWgtMXogTTI1LDIzaDF2MWgtMXogTTI2LDIzaDF2
+ MWgtMXogTTI3LDIzaDF2MWgtMXogTTUsMjRoMXYxaC0xeiBNMTEsMjRoMXYxaC0xeiBNMTYs
+ MjRoMXYxaC0xeiBNMjEsMjRoMXYxaC0xeiBNMjUsMjRoMXYxaC0xeiBNMjcsMjRoMXYxaC0x
+ eiBNMjksMjRoMXYxaC0xeiBNNSwyNWgxdjFoLTF6IE03LDI1aDF2MWgtMXogTTgsMjVoMXYx
+ aC0xeiBNOSwyNWgxdjFoLTF6IE0xMSwyNWgxdjFoLTF6IE0xMywyNWgxdjFoLTF6IE0xNywy
+ NWgxdjFoLTF6IE0xOCwyNWgxdjFoLTF6IE0yMSwyNWgxdjFoLTF6IE0yMiwyNWgxdjFoLTF6
+ IE0yMywyNWgxdjFoLTF6IE0yNCwyNWgxdjFoLTF6IE0yNSwyNWgxdjFoLTF6IE0yNywyNWgx
+ djFoLTF6IE0yOSwyNWgxdjFoLTF6IE01LDI2aDF2MWgtMXogTTcsMjZoMXYxaC0xeiBNOCwy
+ NmgxdjFoLTF6IE05LDI2aDF2MWgtMXogTTExLDI2aDF2MWgtMXogTTE0LDI2aDF2MWgtMXog
+ TTE1LDI2aDF2MWgtMXogTTE3LDI2aDF2MWgtMXogTTE4LDI2aDF2MWgtMXogTTIwLDI2aDF2
+ MWgtMXogTTIyLDI2aDF2MWgtMXogTTIzLDI2aDF2MWgtMXogTTI3LDI2aDF2MWgtMXogTTI4
+ LDI2aDF2MWgtMXogTTI5LDI2aDF2MWgtMXogTTUsMjdoMXYxaC0xeiBNNywyN2gxdjFoLTF6
+ IE04LDI3aDF2MWgtMXogTTksMjdoMXYxaC0xeiBNMTEsMjdoMXYxaC0xeiBNMTQsMjdoMXYx
+ aC0xeiBNMTYsMjdoMXYxaC0xeiBNMTgsMjdoMXYxaC0xeiBNMTksMjdoMXYxaC0xeiBNMjAs
+ MjdoMXYxaC0xeiBNMjIsMjdoMXYxaC0xeiBNMjMsMjdoMXYxaC0xeiBNMjQsMjdoMXYxaC0x
+ eiBNMjcsMjdoMXYxaC0xeiBNMjgsMjdoMXYxaC0xeiBNNSwyOGgxdjFoLTF6IE0xMSwyOGgx
+ djFoLTF6IE0xMywyOGgxdjFoLTF6IE0xNCwyOGgxdjFoLTF6IE0xNSwyOGgxdjFoLTF6IE0x
+ OCwyOGgxdjFoLTF6IE0yMCwyOGgxdjFoLTF6IE0yNSwyOGgxdjFoLTF6IE0yNywyOGgxdjFo
+ LTF6IE0yOCwyOGgxdjFoLTF6IE01LDI5aDF2MWgtMXogTTYsMjloMXYxaC0xeiBNNywyOWgx
+ djFoLTF6IE04LDI5aDF2MWgtMXogTTksMjloMXYxaC0xeiBNMTAsMjloMXYxaC0xeiBNMTEs
+ MjloMXYxaC0xeiBNMTUsMjloMXYxaC0xeiBNMTcsMjloMXYxaC0xeiBNMTgsMjloMXYxaC0x
+ eiBNMTksMjloMXYxaC0xeiBNMjAsMjloMXYxaC0xeiBNMjQsMjloMXYxaC0xeiBNMjUsMjlo
+ MXYxaC0xeiBNMjcsMjloMXYxaC0xeiBNMjgsMjloMXYxaC0xeiBNMjksMjloMXYxaC0xeiIg
+ ZmlsbD0iIzAwMDAwMCIvPgo8L3N2Zz4K
+ </office:binary-data>
+ <text:p/>
+ </draw:image>
+ <draw:image loext:mime-type="image/png">
+ <office:binary-data>iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAADbElEQVR4nO2Xu04jQRBFGwnJ
+ EBm+BDJMhIkwEZ+zJrMj4G/IgAg7wmTwJUAERF6f1p5Ra9btnnFiVtqShnm4uurWrUc32/P5
+ vB9CGISfIZPtxZ/e4vq1aSR/ZL69aQR1+Q+oJEsBTSaTcH9/v3RBv98Pg8Gg0vv6+go7OztR
+ n9+WPZfsFAHNZrPw/Pz81wIAbG1txe88j0aj8P39Hc7OzsL+/n5cs+ja8Pr6GvW63W7RTiNA
+ SK/XC0dHR1WERISzj4+PaJBrd3c3GuY6ODgIe3t7ESCOuD89Pa20s0xW1hBM3dzcxGcjRkgF
+ 7zg6PT2NjsfjcTg5OakcksqSndaAcoIznAIGEJ1OJ0yn0+iUO+/Hx8crHa8FiGivr6/jM9TD
+ BELEpAQwAoQt9JVUP2enFSBqBBaUu7u7CITIUx3AvLy8RIA4tus+Pz8b2ykCwjC5rsv5+XmM
+ kJQ8PDxUXWaKcESxXlxcxPUlO40BoUykXLZ4GjkRc9llfEcHYKaSb+/v71WHOZe0mZNsylhM
+ geLIrrKQcZx2mUWNLncuWeI35hLfmFcylgOVBWQnMfB8xpgMPT4+RjZgE0bQoT5SlgF4e3sb
+ gcOm6WbdWgzZ1naVxrjjgKiZPzhGpz59nT/D4TCmDMDpltJqUltD6TPMOHFhKt2PAHh4eBhT
+ Bej6fggIU2cTNAbkPsUiDPmMM1KI0CmAZMtAh+jTFucbOuqROoKAtdzGmgWkMXNO9DpLKcc4
+ d4rVjoMFABCEg5OhyLsD0rprDIgFaVESGSBgB8eA5BnQ6ruhOqNgzJoRiIya+lYpkwFyjkEi
+ xJBO0vnCd2ZOek5CH2G9my4TnSZoXUOyYQ1IMQDr5x6L1FbWSf0gp95aNQS1b29v1bv064hz
+ D2mBJcDZTUSveA6yOy8vL6v1aX01AlQ6MV5dXcV3WKlvB9SY4oQXCO+MhtY1lEaYOzEKwnTB
+ KDpEzvEiHQHu7pyPWO8m3AqQhnInRvcuQACKNLjRApa0spbfrUOBWtTLZK0ToyPBczVMeCrA
+ Kc5gCnZtdZlbq6iV3EnPsUCqPAHADIXOvb6WeqwH1KqodZo76TnJ0RFUClCnMkk6YcqUG1Dj
+ Giqd9LyI0uns1BaMUt+GZC3txiIgHZYk1cnp122V7P4b/9tvUn4koMniGm4YhzL7DX0ADFAY
+ Xmt+AAAAAElFTkSuQmCC
+ </office:binary-data>
+ </draw:image>
+ <loext:qrcode office:string-value="www.libreoffice.org" loext:qrcode-errorcorrection="low" loext:qrcode-border="5"/>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/odfexport/data/redlineTextFrame.odt b/sw/qa/extras/odfexport/data/redlineTextFrame.odt
new file mode 100644
index 000000000..0986c3792
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/redlineTextFrame.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/referencelanguage.odt b/sw/qa/extras/odfexport/data/referencelanguage.odt
new file mode 100644
index 000000000..9614bb3e3
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/referencelanguage.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/relh-page-tdf80282.odt b/sw/qa/extras/odfexport/data/relh-page-tdf80282.odt
new file mode 100644
index 000000000..6b3c583d3
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/relh-page-tdf80282.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/relh-page.odt b/sw/qa/extras/odfexport/data/relh-page.odt
new file mode 100644
index 000000000..2dcf64124
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/relh-page.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/relw-page.odt b/sw/qa/extras/odfexport/data/relw-page.odt
new file mode 100644
index 000000000..047d91e87
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/relw-page.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/resolved-comment.odt b/sw/qa/extras/odfexport/data/resolved-comment.odt
new file mode 100644
index 000000000..e136cac3d
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/resolved-comment.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/ruby-position.odt b/sw/qa/extras/odfexport/data/ruby-position.odt
new file mode 100644
index 000000000..7086144bf
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/ruby-position.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/sender-initials.fodt b/sw/qa/extras/odfexport/data/sender-initials.fodt
new file mode 100644
index 000000000..b8a5c1e67
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/sender-initials.fodt
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:initial-creator>ms </meta:initial-creator><meta:creation-date>2015-08-24T21:49:45.305718699</meta:creation-date><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/><meta:generator>LibreOfficeDev/4.3.7.2$Linux_X86_64 LibreOffice_project/8a35821d8636a03b8bf4e15b48f59794652c68ba</meta:generator></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Sans CN Regular" svg:font-family="&apos;Source Han Sans CN Regular&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties officeooo:rsid="000b01fe" officeooo:paragraph-rsid="000b01fe"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Standard">
+ <style:text-properties officeooo:rsid="000b01fe" officeooo:paragraph-rsid="000b01fe"/>
+ </style:style>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+
+ <!-- ODF 1.3 -->
+ <text:p text:style-name="P1"><office:annotation office:name="__Annotation__528782_647779260"><meta:creator-initials>I</meta:creator-initials><dc:date>2018-05-08T11:09:30.015915376</dc:date><text:p text:style-name="P2">bar</text:p></office:annotation>Foo<office:annotation-end office:name="__Annotation__528782_647779260"/></text:p>
+ <!-- LO extension before 2013 -->
+ <text:p text:style-name="P1"><office:annotation office:name="__Annotation__528782_647779260"><text:sender-initials>I</text:sender-initials><dc:date>2018-05-08T11:09:30.015915376</dc:date><text:p text:style-name="P2">bar</text:p></office:annotation>Foo<office:annotation-end office:name="__Annotation__528782_647779260"/></text:p>
+ <!-- LO extension since 2013 -->
+ <text:p text:style-name="P1"><office:annotation office:name="__Annotation__528782_647779260"><loext:sender-initials>I</loext:sender-initials><dc:date>2018-05-08T11:09:30.015915376</dc:date><text:p text:style-name="P2">bar</text:p></office:annotation>Foo<office:annotation-end office:name="__Annotation__528782_647779260"/></text:p>
+ <!-- ODF 1.0 -->
+ <text:p text:style-name="P1">
+ <text:sender-initials>I</text:sender-initials>
+ </text:p>
+ <!-- accidental export of loext namespace 2013-2017 -->
+ <text:p text:style-name="P1">
+ <loext:sender-initials>I</loext:sender-initials>
+ </text:p>
+
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/sha1_correct.odt b/sw/qa/extras/odfexport/data/sha1_correct.odt
new file mode 100644
index 000000000..01cbb0a07
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/sha1_correct.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/sha1_wrong.odt b/sw/qa/extras/odfexport/data/sha1_wrong.odt
new file mode 100644
index 000000000..94032025b
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/sha1_wrong.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/shape-relsize.odt b/sw/qa/extras/odfexport/data/shape-relsize.odt
new file mode 100644
index 000000000..05a3ffa59
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/shape-relsize.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/signatureline-properties.fodt b/sw/qa/extras/odfexport/data/signatureline-properties.fodt
new file mode 100644
index 000000000..ddceff9f3
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/signatureline-properties.fodt
@@ -0,0 +1,596 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2017-12-11T16:12:21.947863528</meta:creation-date><dc:date>2017-12-11T16:12:44.952307632</dc:date><meta:editing-duration>PT27S</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0"/><meta:generator>LibreOfficeDev/6.1.0.0.alpha0$Linux_X86_64 LibreOffice_project/f694d0c29b4f38b6c40850c61ec6aeac3969fd88</meta:generator></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">47891</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">23206</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">21447</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">2501</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">47890</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">23204</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">855097</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1224071</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC Regular" svg:font-family="&apos;Noto Sans CJK SC Regular&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Sans CJK SC Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Noto Sans CJK SC Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC Regular" style:font-family-asian="&apos;Noto Sans CJK SC Regular&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" loext:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Standard">
+ <loext:graphic-properties draw:fill="none"/>
+ <style:paragraph-properties fo:text-align="center" style:justify-single-word="false" fo:background-color="transparent"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph">
+ <loext:graphic-properties draw:fill="none"/>
+ <style:paragraph-properties fo:text-align="center"/>
+ </style:style>
+ <style:style style:name="gr1" style:family="graphic">
+ <style:graphic-properties draw:stroke="none" draw:fill="none" draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle" draw:color-mode="standard" draw:luminance="0%" draw:contrast="0%" draw:gamma="100%" draw:red="0%" draw:green="0%" draw:blue="0%" fo:clip="rect(0cm, 0cm, 0cm, 0cm)" draw:image-opacity="100%" style:mirror="none" style:run-through="background" style:vertical-pos="from-top" style:vertical-rel="paragraph" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" draw:wrap-influence-on-position="once-concurrent" style:flow-with-text="false"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:layout-grid-color="#c0c0c0" style:layout-grid-lines="20" style:layout-grid-base-height="0.706cm" style:layout-grid-ruby-height="0.353cm" style:layout-grid-mode="none" style:layout-grid-ruby-below="false" style:layout-grid-print="false" style:layout-grid-display="false" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Standard"><draw:frame text:anchor-type="paragraph" draw:z-index="0" draw:style-name="gr1" draw:text-style-name="P2" svg:width="6.002cm" svg:height="3.001cm" svg:x="0cm" svg:y="0cm">
+ <draw:image loext:mime-type="image/svg+xml">
+ <office:binary-data>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+
+ PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5z
+ OmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDov
+ L3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRw
+ Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
+ c3ZnIiB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9E
+ VEQvc29kaXBvZGktMC5kdGQiIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBl
+ Lm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIiB2ZXJzaW9uPSIxLjIiIHdpZHRoPSI5MG1tIiBo
+ ZWlnaHQ9IjQ1bW0iIHZpZXdCb3g9IjAgMCA5MDAwIDQ1MDAiIHByZXNlcnZlQXNwZWN0UmF0
+ aW89InhNaWRZTWlkIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZS13aWR0aD0iMjguMjIy
+ IiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB4bWw6c3BhY2U9InByZXNlcnZlIiBpZD0ic3Zn
+ NTc3IiBpbmtzY2FwZTp2ZXJzaW9uPSIwLjkyLjIgKDVjM2U4MGQsIDIwMTctMDgtMDYpIj48
+ bWV0YWRhdGEgaWQ9Im1ldGFkYXRhNTgxIj48cmRmOlJERj48Y2M6V29yayByZGY6YWJvdXQ9
+ IiI+PGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+PGRjOnR5cGUgcmRmOnJl
+ c291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIvPjxkYzp0
+ aXRsZS8+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxzb2RpcG9kaTpuYW1lZHZp
+ ZXcgcGFnZWNvbG9yPSIjZmZmZmZmIiBib3JkZXJjb2xvcj0iIzY2NjY2NiIgYm9yZGVyb3Bh
+ Y2l0eT0iMSIgb2JqZWN0dG9sZXJhbmNlPSIxMCIgZ3JpZHRvbGVyYW5jZT0iMTAiIGd1aWRl
+ dG9sZXJhbmNlPSIxMCIgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiIGlua3NjYXBlOnBhZ2Vz
+ aGFkb3c9IjIiIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTg2MyIgaW5rc2NhcGU6d2luZG93
+ LWhlaWdodD0iMTA1NiIgaWQ9Im5hbWVkdmlldzU3OSIgc2hvd2dyaWQ9ImZhbHNlIiBpbmtz
+ Y2FwZTp6b29tPSIwLjkwMjUyMzE1IiBpbmtzY2FwZTpjeD0iMTcwLjA3ODc0IiBpbmtzY2Fw
+ ZTpjeT0iODUuMDM5MzciIGlua3NjYXBlOndpbmRvdy14PSI1NyIgaW5rc2NhcGU6d2luZG93
+ LXk9IjI0IiBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIiBpbmtzY2FwZTpjdXJyZW50
+ LWxheWVyPSJzdmc1NzciIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9ImZhbHNlIi8+PGRl
+ ZnMgY2xhc3M9IkNsaXBQYXRoR3JvdXAiIGlkPSJkZWZzOCI+PGNsaXBQYXRoIGlkPSJwcmVz
+ ZW50YXRpb25fY2xpcF9wYXRoIiBjbGlwUGF0aFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHJl
+ Y3QgeD0iMCIgeT0iMCIgd2lkdGg9IjkwMDAiIGhlaWdodD0iNDUwMCIgaWQ9InJlY3QyIi8+
+ PC9jbGlwUGF0aD48L2RlZnM+PGRlZnMgaWQ9ImRlZnM0OSIvPjxkZWZzIGlkPSJkZWZzODYi
+ Lz48ZGVmcyBjbGFzcz0iVGV4dFNoYXBlSW5kZXgiIGlkPSJkZWZzOTAiLz48ZGVmcyBjbGFz
+ cz0iRW1iZWRkZWRCdWxsZXRDaGFycyIgaWQ9ImRlZnMxMjIiLz48ZGVmcyBjbGFzcz0iVGV4
+ dEVtYmVkZGVkQml0bWFwcyIgaWQ9ImRlZnMxMjQiLz48ZyBpZD0iZzEyOSI+PGcgaWQ9Imlk
+ MiIgY2xhc3M9Ik1hc3Rlcl9TbGlkZSI+PGcgaWQ9ImJnLWlkMiIgY2xhc3M9IkJhY2tncm91
+ bmQiLz48ZyBpZD0iYm8taWQyIiBjbGFzcz0iQmFja2dyb3VuZE9iamVjdHMiLz48L2c+PC9n
+ PjxnIGNsYXNzPSJTbGlkZUdyb3VwIiBpZD0iZzU3NSI+PGcgaWQ9Imc1NzMiPjxnIGlkPSJj
+ b250YWluZXItaWQxIj48ZyBpZD0iaWQxIiBjbGFzcz0iU2xpZGUiIGNsaXAtcGF0aD0idXJs
+ KCNwcmVzZW50YXRpb25fY2xpcF9wYXRoKSI+PGcgY2xhc3M9IlBhZ2UiIGlkPSJnNTY5Ij48
+ ZyBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuTGluZVNoYXBlIiBpZD0iZzE1NCI+PGcg
+ aWQ9ImlkMyI+PHJlY3QgY2xhc3M9IkJvdW5kaW5nQm94IiBzdHJva2U9Im5vbmUiIGZpbGw9
+ Im5vbmUiIHg9Ii0yNyIgeT0iMjM3MyIgd2lkdGg9IjkwNTUiIGhlaWdodD0iNTUiIGlkPSJy
+ ZWN0MTMxIi8+PGRlc2MgaWQ9ImRlc2MxMzMiPjE1MDwvZGVzYz48ZGVzYyBpZD0iZGVzYzEz
+ NSI+MTM5PC9kZXNjPjxkZXNjIGlkPSJkZXNjMTM3Ij4xMzI8L2Rlc2M+PGRlc2MgaWQ9ImRl
+ c2MxMzkiPjUxMjogWFBBVEhTVFJPS0VfU0VRX0JFR0lOPC9kZXNjPjxkZXNjIGlkPSJkZXNj
+ MTQxIj4xMzI8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MxNDMiPjEzMzwvZGVzYz48ZGVzYyBpZD0i
+ ZGVzYzE0NSI+MTA5PC9kZXNjPjxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0icmdiKDAsMCww
+ KSIgc3Ryb2tlLXdpZHRoPSI1MyIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgZD0iTSAwLDI0
+ MDAgTCA5MDAwLDI0MDAiIGlkPSJwYXRoMTQ3Ii8+PGRlc2MgaWQ9ImRlc2MxNDkiPjUxMjog
+ WFBBVEhTVFJPS0VfU0VRX0VORDwvZGVzYz48ZGVzYyBpZD0iZGVzYzE1MSI+MTQwPC9kZXNj
+ PjwvZz48L2c+PGcgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLkNsb3NlZEJlemllclNo
+ YXBlIiBpZD0iZzE3MyI+PGcgaWQ9ImlkNCI+PHJlY3QgY2xhc3M9IkJvdW5kaW5nQm94IiBz
+ dHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIHg9IjMwMSIgeT0iMTQwMCIgd2lkdGg9IjgwMSIg
+ aGVpZ2h0PSI4MDEiIGlkPSJyZWN0MTU2Ii8+PGRlc2MgaWQ9ImRlc2MxNTgiPjE1MDwvZGVz
+ Yz48ZGVzYyBpZD0iZGVzYzE2MCI+MTM5PC9kZXNjPjxkZXNjIGlkPSJkZXNjMTYyIj4xMzM8
+ L2Rlc2M+PGRlc2MgaWQ9ImRlc2MxNjQiPjEzMjwvZGVzYz48ZGVzYyBpZD0iZGVzYzE2NiI+
+ MTExPC9kZXNjPjxwYXRoIGZpbGw9InJnYigwLDAsMCkiIHN0cm9rZT0ibm9uZSIgZD0iTSA5
+ NjksMjIwMCBDIDg4MCwyMDgzIDc5MiwxOTY3IDcwNCwxODUwIDYxNCwxOTY3IDUyMywyMDgz
+ IDQzMywyMjAwIDM4OSwyMjAwIDM0NSwyMjAwIDMwMSwyMjAwIDQxMywyMDYxIDUyNSwxOTIz
+ IDYzNywxNzg0IDUzMywxNjU2IDQzMCwxNTI4IDMyNywxNDAwIDM3MSwxNDAwIDQxNSwxNDAw
+ IDQ1OSwxNDAwIDU0MSwxNTA1IDYyMywxNjA5IDcwNCwxNzE0IDc4NCwxNjA5IDg2MywxNTA1
+ IDk0MywxNDAwIDk4NywxNDAwIDEwMzEsMTQwMCAxMDc1LDE0MDAgOTc1LDE1MjcgODc0LDE2
+ NTMgNzczLDE3ODAgODgyLDE5MjAgOTkyLDIwNjAgMTEwMSwyMjAwIDEwNTcsMjIwMCAxMDEz
+ LDIyMDAgOTY5LDIyMDAgWiIgaWQ9InBhdGgxNjgiLz48ZGVzYyBpZD0iZGVzYzE3MCI+MTQw
+ PC9kZXNjPjwvZz48L2c+PGcgY2xhc3M9ImNvbS5zdW4uc3Rhci5kcmF3aW5nLlRleHRTaGFw
+ ZSIgaWQ9ImcyMzYiPjxnIGlkPSJpZDUiPjxyZWN0IGNsYXNzPSJCb3VuZGluZ0JveCIgc3Ry
+ b2tlPSJub25lIiBmaWxsPSJub25lIiB4PSIxMzAwIiB5PSIxNTAwIiB3aWR0aD0iODAwMSIg
+ aGVpZ2h0PSI5MjUiIGlkPSJyZWN0MTc1Ii8+PGRlc2MgaWQ9ImRlc2MxNzciPjE1MDwvZGVz
+ Yz48ZGVzYyBpZD0iZGVzYzE3OSI+NTEyOiBYVEVYVF9QQUlOVFNIQVBFX0JFR0lOPC9kZXNj
+ Pjx0ZXh0IGNsYXNzPSJUZXh0U2hhcGUiIGlkPSJ0ZXh0MjMzIj48ZGVzYyBjbGFzcz0iUGFy
+ YWdyYXBoIiBpZD0iZGVzYzE4MSIvPjx0c3BhbiBjbGFzcz0iVGV4dFBhcmFncmFwaCIgZm9u
+ dC1mYW1pbHk9IkxpYmVyYXRpb24gU2Fucywgc2Fucy1zZXJpZiIgZm9udC1zaXplPSI2MDBw
+ eCIgZm9udC13ZWlnaHQ9IjQwMCIgaWQ9InRzcGFuMjMxIj48ZGVzYyBpZD0iZGVzYzE4MyI+
+ MTM4PC9kZXNjPjxkZXNjIGlkPSJkZXNjMTg1Ij4xMzY8L2Rlc2M+PGRlc2MgaWQ9ImRlc2Mx
+ ODciPjEzNTwvZGVzYz48ZGVzYyBpZD0iZGVzYzE4OSI+MTM0PC9kZXNjPjxkZXNjIGlkPSJk
+ ZXNjMTkxIj4xMTM8L2Rlc2M+PGRlc2MgY2xhc3M9IlRleHRQb3J0aW9uIiBpZD0iZGVzYzE5
+ MyI+dHlwZTogVGV4dDsgY29udGVudDogOyA8L2Rlc2M+PHRzcGFuIGNsYXNzPSJUZXh0UG9z
+ aXRpb24iIHg9IjE1NTAiIHk9IjIxNzEiIGlkPSJ0c3BhbjIyOSI+PHRzcGFuIGZpbGw9InJn
+ YigwLDAsMCkiIHN0cm9rZT0ibm9uZSIgaWQ9InRzcGFuMTk1Ij48L3RzcGFuPjxkZXNjIGlk
+ PSJkZXNjMTk3Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzE5OSI+NTEy
+ OiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyMDEiPjUxMjogWFRFWFRfRU9XPC9k
+ ZXNjPjxkZXNjIGlkPSJkZXNjMjAzIj41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0i
+ ZGVzYzIwNSI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyMDciPjUxMjog
+ WFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjMjA5Ij41MTI6IFhURVhUX0VPQzwvZGVz
+ Yz48ZGVzYyBpZD0iZGVzYzIxMSI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRl
+ c2MyMTMiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjMjE1Ij41MTI6IFhU
+ RVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzIxNyI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+
+ PGRlc2MgaWQ9ImRlc2MyMTkiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNj
+ MjIxIj41MTI6IFhURVhUX0VPVzwvZGVzYz48ZGVzYyBpZD0iZGVzYzIyMyI+NTEyOiBYVEVY
+ VF9FT0w8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyMjUiPjUxMjogWFRFWFRfRU9QPC9kZXNjPjxk
+ ZXNjIGlkPSJkZXNjMjI3Ij41MTI6IFhURVhUX1BBSU5UU0hBUEVfRU5EPC9kZXNjPjwvdHNw
+ YW4+PC90c3Bhbj48L3RleHQ+PC9nPjwvZz48ZyBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdp
+ bmcuVGV4dFNoYXBlIiBpZD0iZzMwMyI+PGcgaWQ9ImlkNiI+PHJlY3QgY2xhc3M9IkJvdW5k
+ aW5nQm94IiBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIHg9IjEwMCIgeT0iMjUwMCIgd2lk
+ dGg9Ijg5MDEiIGhlaWdodD0iNzI2IiBpZD0icmVjdDIzOCIvPjxkZXNjIGlkPSJkZXNjMjQw
+ Ij4xNTA8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyNDIiPjUxMjogWFRFWFRfUEFJTlRTSEFQRV9C
+ RUdJTjwvZGVzYz48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIiBpZD0idGV4dDMwMCI+PGRlc2Mg
+ Y2xhc3M9IlBhcmFncmFwaCIgaWQ9ImRlc2MyNDQiLz48dHNwYW4gY2xhc3M9IlRleHRQYXJh
+ Z3JhcGgiIGZvbnQtZmFtaWx5PSJMaWJlcmF0aW9uIFNhbnMsIHNhbnMtc2VyaWYiIGZvbnQt
+ c2l6ZT0iNDIzcHgiIGZvbnQtd2VpZ2h0PSI0MDAiIGlkPSJ0c3BhbjI5OCI+PGRlc2MgaWQ9
+ ImRlc2MyNDYiPjEzODwvZGVzYz48ZGVzYyBpZD0iZGVzYzI0OCI+MTM2PC9kZXNjPjxkZXNj
+ IGlkPSJkZXNjMjUwIj4xMzU8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyNTIiPjEzNDwvZGVzYz48
+ ZGVzYyBpZD0iZGVzYzI1NCI+MTEzPC9kZXNjPjxkZXNjIGNsYXNzPSJUZXh0UG9ydGlvbiIg
+ aWQ9ImRlc2MyNTYiPnR5cGU6IFRleHQ7IGNvbnRlbnQ6IEpvaG4gRG9lOyA8L2Rlc2M+PHRz
+ cGFuIGNsYXNzPSJUZXh0UG9zaXRpb24iIHg9IjM1MCIgeT0iMzAxMCIgaWQ9InRzcGFuMjk2
+ Ij48dHNwYW4gZmlsbD0icmdiKDAsMCwwKSIgc3Ryb2tlPSJub25lIiBpZD0idHNwYW4yNTgi
+ PkpvaG4gRG9lPC90c3Bhbj48ZGVzYyBpZD0iZGVzYzI2MCI+NTEyOiBYVEVYVF9FT0M8L2Rl
+ c2M+PGRlc2MgaWQ9ImRlc2MyNjIiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJk
+ ZXNjMjY0Ij41MTI6IFhURVhUX0VPVzwvZGVzYz48ZGVzYyBpZD0iZGVzYzI2NiI+NTEyOiBY
+ VEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyNjgiPjUxMjogWFRFWFRfRU9DPC9kZXNj
+ PjxkZXNjIGlkPSJkZXNjMjcwIj41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVz
+ YzI3MiI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyNzQiPjUxMjogWFRF
+ WFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjMjc2Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48
+ ZGVzYyBpZD0iZGVzYzI3OCI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2My
+ ODAiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjMjgyIj41MTI6IFhURVhU
+ X0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzI4NCI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRl
+ c2MgaWQ9ImRlc2MyODYiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjMjg4
+ Ij41MTI6IFhURVhUX0VPVzwvZGVzYz48ZGVzYyBpZD0iZGVzYzI5MCI+NTEyOiBYVEVYVF9F
+ T0w8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MyOTIiPjUxMjogWFRFWFRfRU9QPC9kZXNjPjxkZXNj
+ IGlkPSJkZXNjMjk0Ij41MTI6IFhURVhUX1BBSU5UU0hBUEVfRU5EPC9kZXNjPjwvdHNwYW4+
+ PC90c3Bhbj48L3RleHQ+PC9nPjwvZz48ZyBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcu
+ VGV4dFNoYXBlIiBpZD0iZzM3MiI+PGcgaWQ9ImlkNyI+PHJlY3QgY2xhc3M9IkJvdW5kaW5n
+ Qm94IiBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIHg9IjEwMCIgeT0iMzA3NSIgd2lkdGg9
+ Ijg5MDEiIGhlaWdodD0iNzI2IiBpZD0icmVjdDMwNSIvPjxkZXNjIGlkPSJkZXNjMzA3Ij4x
+ NTA8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MzMDkiPjUxMjogWFRFWFRfUEFJTlRTSEFQRV9CRUdJ
+ TjwvZGVzYz48dGV4dCBjbGFzcz0iVGV4dFNoYXBlIiBpZD0idGV4dDM2OSI+PGRlc2MgY2xh
+ c3M9IlBhcmFncmFwaCIgaWQ9ImRlc2MzMTEiLz48dHNwYW4gY2xhc3M9IlRleHRQYXJhZ3Jh
+ cGgiIGZvbnQtZmFtaWx5PSJMaWJlcmF0aW9uIFNhbnMsIHNhbnMtc2VyaWYiIGZvbnQtc2l6
+ ZT0iNDIzcHgiIGZvbnQtd2VpZ2h0PSI0MDAiIGlkPSJ0c3BhbjM2NyI+PGRlc2MgaWQ9ImRl
+ c2MzMTMiPjEzODwvZGVzYz48ZGVzYyBpZD0iZGVzYzMxNSI+MTM2PC9kZXNjPjxkZXNjIGlk
+ PSJkZXNjMzE3Ij4xMzU8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MzMTkiPjEzNDwvZGVzYz48ZGVz
+ YyBpZD0iZGVzYzMyMSI+MTEzPC9kZXNjPjxkZXNjIGNsYXNzPSJUZXh0UG9ydGlvbiIgaWQ9
+ ImRlc2MzMjMiPnR5cGU6IFRleHQ7IGNvbnRlbnQ6IEZhcm1lcjsgPC9kZXNjPjx0c3BhbiBj
+ bGFzcz0iVGV4dFBvc2l0aW9uIiB4PSIzNTAiIHk9IjM1ODUiIGlkPSJ0c3BhbjM2NSI+PHRz
+ cGFuIGZpbGw9InJnYigwLDAsMCkiIHN0cm9rZT0ibm9uZSIgaWQ9InRzcGFuMzI1Ij5GYXJt
+ ZXI8L3RzcGFuPjxkZXNjIGlkPSJkZXNjMzI3Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVz
+ YyBpZD0iZGVzYzMyOSI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MzMzEi
+ PjUxMjogWFRFWFRfRU9XPC9kZXNjPjxkZXNjIGlkPSJkZXNjMzMzIj41MTI6IFhURVhUX0VP
+ QzwvZGVzYz48ZGVzYyBpZD0iZGVzYzMzNSI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2Mg
+ aWQ9ImRlc2MzMzciPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjMzM5Ij41
+ MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzM0MSI+NTEyOiBYVEVYVF9FT0M8
+ L2Rlc2M+PGRlc2MgaWQ9ImRlc2MzNDMiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlk
+ PSJkZXNjMzQ1Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzM0NyI+NTEy
+ OiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MzNDkiPjUxMjogWFRFWFRfRU9DPC9k
+ ZXNjPjxkZXNjIGlkPSJkZXNjMzUxIj41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0i
+ ZGVzYzM1MyI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2MzNTUiPjUxMjog
+ WFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjMzU3Ij41MTI6IFhURVhUX0VPVzwvZGVz
+ Yz48ZGVzYyBpZD0iZGVzYzM1OSI+NTEyOiBYVEVYVF9FT0w8L2Rlc2M+PGRlc2MgaWQ9ImRl
+ c2MzNjEiPjUxMjogWFRFWFRfRU9QPC9kZXNjPjxkZXNjIGlkPSJkZXNjMzYzIj41MTI6IFhU
+ RVhUX1BBSU5UU0hBUEVfRU5EPC9kZXNjPjwvdHNwYW4+PC90c3Bhbj48L3RleHQ+PC9nPjwv
+ Zz48ZyBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuVGV4dFNoYXBlIiBpZD0iZzQzNSI+
+ PGcgaWQ9ImlkOCI+PHJlY3QgY2xhc3M9IkJvdW5kaW5nQm94IiBzdHJva2U9Im5vbmUiIGZp
+ bGw9Im5vbmUiIHg9IjEwMCIgeT0iMzY2MCIgd2lkdGg9Ijg5MDEiIGhlaWdodD0iNzI2IiBp
+ ZD0icmVjdDM3NCIvPjxkZXNjIGlkPSJkZXNjMzc2Ij4xNTA8L2Rlc2M+PGRlc2MgaWQ9ImRl
+ c2MzNzgiPjUxMjogWFRFWFRfUEFJTlRTSEFQRV9CRUdJTjwvZGVzYz48dGV4dCBjbGFzcz0i
+ VGV4dFNoYXBlIiBpZD0idGV4dDQzMiI+PGRlc2MgY2xhc3M9IlBhcmFncmFwaCIgaWQ9ImRl
+ c2MzODAiLz48dHNwYW4gY2xhc3M9IlRleHRQYXJhZ3JhcGgiIGZvbnQtZmFtaWx5PSJMaWJl
+ cmF0aW9uIFNhbnMsIHNhbnMtc2VyaWYiIGZvbnQtc2l6ZT0iNDIzcHgiIGZvbnQtd2VpZ2h0
+ PSI0MDAiIGlkPSJ0c3BhbjQzMCI+PGRlc2MgaWQ9ImRlc2MzODIiPjEzODwvZGVzYz48ZGVz
+ YyBpZD0iZGVzYzM4NCI+MTM2PC9kZXNjPjxkZXNjIGlkPSJkZXNjMzg2Ij4xMzU8L2Rlc2M+
+ PGRlc2MgaWQ9ImRlc2MzODgiPjEzNDwvZGVzYz48ZGVzYyBpZD0iZGVzYzM5MCI+MTEzPC9k
+ ZXNjPjxkZXNjIGNsYXNzPSJUZXh0UG9ydGlvbiIgaWQ9ImRlc2MzOTIiPnR5cGU6IFRleHQ7
+ IGNvbnRlbnQ6IDsgPC9kZXNjPjx0c3BhbiBjbGFzcz0iVGV4dFBvc2l0aW9uIiB4PSIzNTAi
+ IHk9IjQxNzAiIGlkPSJ0c3BhbjQyOCI+PHRzcGFuIGZpbGw9InJnYigwLDAsMCkiIHN0cm9r
+ ZT0ibm9uZSIgaWQ9InRzcGFuMzk0Ij48L3RzcGFuPjxkZXNjIGlkPSJkZXNjMzk2Ij41MTI6
+ IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzM5OCI+NTEyOiBYVEVYVF9FT0M8L2Rl
+ c2M+PGRlc2MgaWQ9ImRlc2M0MDAiPjUxMjogWFRFWFRfRU9XPC9kZXNjPjxkZXNjIGlkPSJk
+ ZXNjNDAyIj41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzQwNCI+NTEyOiBY
+ VEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M0MDYiPjUxMjogWFRFWFRfRU9DPC9kZXNj
+ PjxkZXNjIGlkPSJkZXNjNDA4Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVz
+ YzQxMCI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M0MTIiPjUxMjogWFRF
+ WFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjNDE0Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48
+ ZGVzYyBpZD0iZGVzYzQxNiI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M0
+ MTgiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjNDIwIj41MTI6IFhURVhU
+ X0VPVzwvZGVzYz48ZGVzYyBpZD0iZGVzYzQyMiI+NTEyOiBYVEVYVF9FT0w8L2Rlc2M+PGRl
+ c2MgaWQ9ImRlc2M0MjQiPjUxMjogWFRFWFRfRU9QPC9kZXNjPjxkZXNjIGlkPSJkZXNjNDI2
+ Ij41MTI6IFhURVhUX1BBSU5UU0hBUEVfRU5EPC9kZXNjPjwvdHNwYW4+PC90c3Bhbj48L3Rl
+ eHQ+PC9nPjwvZz48ZyBjbGFzcz0iY29tLnN1bi5zdGFyLmRyYXdpbmcuVGV4dFNoYXBlIiBp
+ ZD0iZzQ4OCI+PGcgaWQ9ImlkOSI+PHJlY3QgY2xhc3M9IkJvdW5kaW5nQm94IiBzdHJva2U9
+ Im5vbmUiIGZpbGw9Im5vbmUiIHg9IjQ4MDAiIHk9IjAiIHdpZHRoPSI0MjAxIiBoZWlnaHQ9
+ IjcyNiIgaWQ9InJlY3Q0MzciLz48ZGVzYyBpZD0iZGVzYzQzOSI+MTUwPC9kZXNjPjxkZXNj
+ IGlkPSJkZXNjNDQxIj41MTI6IFhURVhUX1BBSU5UU0hBUEVfQkVHSU48L2Rlc2M+PHRleHQg
+ Y2xhc3M9IlRleHRTaGFwZSIgaWQ9InRleHQ0ODUiPjxkZXNjIGNsYXNzPSJQYXJhZ3JhcGgi
+ IGlkPSJkZXNjNDQzIi8+PHRzcGFuIGNsYXNzPSJUZXh0UGFyYWdyYXBoIiBmb250LWZhbWls
+ eT0iTGliZXJhdGlvbiBTYW5zLCBzYW5zLXNlcmlmIiBmb250LXNpemU9IjQyM3B4IiBmb250
+ LXdlaWdodD0iNDAwIiBpZD0idHNwYW40ODMiPjxkZXNjIGlkPSJkZXNjNDQ1Ij4xMzg8L2Rl
+ c2M+PGRlc2MgaWQ9ImRlc2M0NDciPjEzNjwvZGVzYz48ZGVzYyBpZD0iZGVzYzQ0OSI+MTM1
+ PC9kZXNjPjxkZXNjIGlkPSJkZXNjNDUxIj4xMzQ8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M0NTMi
+ PjExMzwvZGVzYz48ZGVzYyBjbGFzcz0iVGV4dFBvcnRpb24iIGlkPSJkZXNjNDU1Ij50eXBl
+ OiBUZXh0OyBjb250ZW50OiA7IDwvZGVzYz48dHNwYW4gY2xhc3M9IlRleHRQb3NpdGlvbiIg
+ eD0iNzQxNyIgeT0iNTEwIiBpZD0idHNwYW40ODEiPjx0c3BhbiBmaWxsPSJyZ2IoMCwwLDAp
+ IiBzdHJva2U9Im5vbmUiIGlkPSJ0c3BhbjQ1NyI+PC90c3Bhbj48ZGVzYyBpZD0iZGVzYzQ1
+ OSI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M0NjEiPjUxMjogWFRFWFRf
+ RU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjNDYzIj41MTI6IFhURVhUX0VPVzwvZGVzYz48ZGVz
+ YyBpZD0iZGVzYzQ2NSI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M0Njci
+ PjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjNDY5Ij41MTI6IFhURVhUX0VP
+ QzwvZGVzYz48ZGVzYyBpZD0iZGVzYzQ3MSI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2Mg
+ aWQ9ImRlc2M0NzMiPjUxMjogWFRFWFRfRU9XPC9kZXNjPjxkZXNjIGlkPSJkZXNjNDc1Ij41
+ MTI6IFhURVhUX0VPTDwvZGVzYz48ZGVzYyBpZD0iZGVzYzQ3NyI+NTEyOiBYVEVYVF9FT1A8
+ L2Rlc2M+PGRlc2MgaWQ9ImRlc2M0NzkiPjUxMjogWFRFWFRfUEFJTlRTSEFQRV9FTkQ8L2Rl
+ c2M+PC90c3Bhbj48L3RzcGFuPjwvdGV4dD48L2c+PC9nPjxnIGNsYXNzPSJjb20uc3VuLnN0
+ YXIuZHJhd2luZy5UZXh0U2hhcGUiIGlkPSJnNTY3Ij48ZyBpZD0iaWQxMCI+PHJlY3QgY2xh
+ c3M9IkJvdW5kaW5nQm94IiBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIHg9IjAiIHk9IjEi
+ IHdpZHRoPSI5MDAxIiBoZWlnaHQ9IjcyNiIgaWQ9InJlY3Q0OTAiLz48ZGVzYyBpZD0iZGVz
+ YzQ5MiI+MTUwPC9kZXNjPjxkZXNjIGlkPSJkZXNjNDk0Ij41MTI6IFhURVhUX1BBSU5UU0hB
+ UEVfQkVHSU48L2Rlc2M+PHRleHQgY2xhc3M9IlRleHRTaGFwZSIgaWQ9InRleHQ1NjQiPjxk
+ ZXNjIGNsYXNzPSJQYXJhZ3JhcGgiIGlkPSJkZXNjNDk2Ii8+PHRzcGFuIGNsYXNzPSJUZXh0
+ UGFyYWdyYXBoIiBmb250LWZhbWlseT0iTGliZXJhdGlvbiBTYW5zLCBzYW5zLXNlcmlmIiBm
+ b250LXNpemU9IjQyM3B4IiBmb250LXdlaWdodD0iNzAwIiBpZD0idHNwYW41NjIiPjxkZXNj
+ IGlkPSJkZXNjNDk4Ij4xMzg8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M1MDAiPjEzNjwvZGVzYz48
+ ZGVzYyBpZD0iZGVzYzUwMiI+MTM1PC9kZXNjPjxkZXNjIGlkPSJkZXNjNTA0Ij4xMzQ8L2Rl
+ c2M+PGRlc2MgaWQ9ImRlc2M1MDYiPjExMzwvZGVzYz48ZGVzYyBjbGFzcz0iVGV4dFBvcnRp
+ b24iIGlkPSJkZXNjNTA4Ij50eXBlOiBUZXh0OyBjb250ZW50OiA7IDwvZGVzYz48dHNwYW4g
+ Y2xhc3M9IlRleHRQb3NpdGlvbiIgeD0iMjE4MCIgeT0iNTExIiBpZD0idHNwYW41NjAiPjx0
+ c3BhbiBmaWxsPSJyZ2IoMjM5LDY1LDYxKSIgc3Ryb2tlPSJub25lIiBpZD0idHNwYW41MTAi
+ PjwvdHNwYW4+PGRlc2MgaWQ9ImRlc2M1MTIiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNj
+ IGlkPSJkZXNjNTE0Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzUxNiI+
+ NTEyOiBYVEVYVF9FT1c8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M1MTgiPjUxMjogWFRFWFRfRU9D
+ PC9kZXNjPjxkZXNjIGlkPSJkZXNjNTIwIj41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBp
+ ZD0iZGVzYzUyMiI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M1MjQiPjUx
+ MjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjNTI2Ij41MTI6IFhURVhUX0VPQzwv
+ ZGVzYz48ZGVzYyBpZD0iZGVzYzUyOCI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9
+ ImRlc2M1MzAiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjNTMyIj41MTI6
+ IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzUzNCI+NTEyOiBYVEVYVF9FT0M8L2Rl
+ c2M+PGRlc2MgaWQ9ImRlc2M1MzYiPjUxMjogWFRFWFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJk
+ ZXNjNTM4Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVzYzU0MCI+NTEyOiBY
+ VEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M1NDIiPjUxMjogWFRFWFRfRU9DPC9kZXNj
+ PjxkZXNjIGlkPSJkZXNjNTQ0Ij41MTI6IFhURVhUX0VPQzwvZGVzYz48ZGVzYyBpZD0iZGVz
+ YzU0NiI+NTEyOiBYVEVYVF9FT0M8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M1NDgiPjUxMjogWFRF
+ WFRfRU9DPC9kZXNjPjxkZXNjIGlkPSJkZXNjNTUwIj41MTI6IFhURVhUX0VPQzwvZGVzYz48
+ ZGVzYyBpZD0iZGVzYzU1MiI+NTEyOiBYVEVYVF9FT1c8L2Rlc2M+PGRlc2MgaWQ9ImRlc2M1
+ NTQiPjUxMjogWFRFWFRfRU9MPC9kZXNjPjxkZXNjIGlkPSJkZXNjNTU2Ij41MTI6IFhURVhU
+ X0VPUDwvZGVzYz48ZGVzYyBpZD0iZGVzYzU1OCI+NTEyOiBYVEVYVF9QQUlOVFNIQVBFX0VO
+ RDwvZGVzYz48L3RzcGFuPjwvdHNwYW4+PC90ZXh0PjwvZz48L2c+PC9nPjwvZz48L2c+PC9n
+ PjwvZz48L3N2Zz4=
+ </office:binary-data>
+ <text:p/>
+ </draw:image>
+ <draw:image loext:mime-type="image/png">
+ <office:binary-data>iVBORw0KGgoAAAANSUhEUgAAAVQAAACqCAYAAADyfbdoAAAACXBIWXMAAA7CAAAOwgEVKEqA
+ AAATfklEQVR4nO3dd1hUV/7H8Xun0Is9FgSUJKi4dsS+saxGFE2iRMWOXTcq9hQ7KIFYWVEi
+ UWOJJWpcNRpr/MWusZfVxACajS122kiZ+Xl0xxCWLGXOiJr363nmeZzDnXu/4x+f58y9p+hM
+ JpMCALCcrrALAICXBYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQ
+ qAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQ
+ qAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQ
+ qAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQqAAgCYEKAJIQ
+ qAAgCYEKAJIQqAAgCYEKAJIQqAAgSb4D1Wg0asQra5tWq81UVdVkaTE5nVuj0RjFy9JzA4C1
+ 5TtQz5w585cGDRocSElJcTC31a1b98h3333XxNbW9mFBCzEYDHYNGzbcf/z48VrmNicnp6SD
+ Bw/Wr1q16tmCnhcAnpV8B2r16tVPLV26tEdgYOCXJpNJFW1HjhypO2zYsDkLFiwYWNBChg4d
+ OjdrmIoe72effdaHMAXwoijQPdQOHTqsGzVq1CeRkZGjzW0xMTEDRE81ODh4UX7Pt3Llyi4L
+ Fy7sl7VtzJgxEe++++6agtQHAIWhwA+lwsPDx507d85ny5Yt/ua2IUOGzBM92Nq1ax/L63ku
+ XrzoPWDAgJisbc2bN98VFhb2YUFrA4DCUOBAFQ+Kli9f3k30Si9duvSqaBP3QUXv9fvvv69T
+ okSJW7mdIzk52fGdd95Zn5iY6Gxu8/DwuLxq1arO4kFXQWsDgMJg0bCpokWL3t20aVNAvXr1
+ Dt2/f99VtF2+fNkjKCjoi61bt7bOLRQHDRo0//z581XM7+3s7Azr1q3rkJcwBoDnjcXjUCtV
+ qnTh888/7yl6muYhTzt27PhbaGjoRxMnTpz8R5+bP3/+oGXLlnXP3paf2wUA8DyRMrC/ffv2
+ /xw/fvzUyZMnTzS3TZkyZYKvr+9Rf3//LdmPP3XqVPWRI0fOyNoWEhIyq1evXktk1AMAhUHa
+ TCnRGxUPqdauXdtRvBe91W7dui0X91MrVqwYZz7u3r17RURvNjU11d7cJsaffvzxx2Nl1QIA
+ hUFaoIpxo4sXL+594cKFSmfPnq0q2u7evVtUhOeBAwcaODg4pIhxq3369PksLi6uovlz5cuX
+ /3n9+vXv6PX6dFm1AEBhkDqXX8xs2rhxYzvxU//27dvFRZv4eS+GRYn7pTNmzBgpwtN8vHgI
+ JXq0pUqVuimzDgAoDNIXR6lQoUK8CM+AgIBNmZmZWtEmhle5uLg8yD54f968eUPEsCvZNQBA
+ YbDKalOtW7feKgbmjxs3LtzcFh0dPTjrMYMHD44uyKwqAHheWW35PjF19OTJkzXEIP3sf6tf
+ v/7BWbNmhVjr2gBQGKwWqOIh1aRHVq9e3cm8iIpZx44d19rY2KRZ69oAUBisFqhiGmr37t2X
+ ZQ9TQdwK8PPzOyyGS1nr+gDwrFktUPv37//p0aNHfc3vxdx/80yq9PR0vZieeuzYsdpMMwXw
+ srBKoIrhUVmnlTo6OiZv27atleixxsfHVxBtV65cce/UqdPq7du3t2QhFAAvA+mBumvXruZZ
+ n+4LYo6++Hkv7qc2atRoX1pamo1o3717dzMxZXXatGkfyK4DAJ41qYGakJDg2blz51UZGRlP
+ zytW4hc9U/FvMeA/IiJizPDhw2eb/y7WVRULoohl/2TWAgDPmrRATUpKcmrXrt3GW7dulTC3
+ iQdPWVf1F8RWKfv27WtknvMvHlr17t17cZUqVc5Xrlz5X7LqAYBnTUqgmufoiw38zG1iOqkI
+ zZyGRy1atChYHCtW6xfvxQLTYs6/2JvK2dk5UUZNAPCsSQlUMStqzZo175rfiyf64qGUm5vb
+ v3M6XoSmOF4sTG1edUosqiJGBoj9pWTUBADPmsWBKp7eiwH8WdvE4tItW7bc/r8+V61atdNi
+ ttTAgQMXmNvErCoxi0rcd7W0LgB41iwKVPGTXQx9Mi+CIrRt23Zz9qf8f0SsQiWW9hPbUpvb
+ xG6qNWvWPNG4ceO9ltQGAM9agQPVfN/TvJeU4OnpmbBkyZJeYtppXs8jFk0Ri1Cb95YSg/7F
+ 9tFi0H/ZsmWvFrQ+AHjWChSoYsaTmOmU0wZ7xYsXv52fc4lB/+J+qhgRIHZBFW3Xr18vHRgY
+ +OW3337blDn/AF4UBQrUjz76KHTz5s1ts7aJnmatWrWOF+R8Pj4+58RaqSKkzW3iVsD7778/
+ Xcy6Ksg5AeBZy3egihX3xWD8rG3i6bwYS2pJIV26dFm5c+fOFmJIlblt5syZI2rUqHHSPDEA
+ AJ5n+QrU06dPV+vRo8fSrCtIVa9e/dTs2bOHyyhGrOB/4sSJmuJlbhMLUYuer+jFyrgGAFhL
+ vgJVPCQSoZq1rWTJkr/a29unyihG3IcV903N+1GZubq63pdxfgCwpnwFqlhqz9rL7YnwJEAB
+ vIisth4qAPzZEKgAIAmBCgCSEKgAIAmBCgCS6D799NP+4lXYhQDAi0539erVsmIhksIuBABe
+ dDoxbTQgIGBTYRcCAC86nZj9xDJ5AGA5HkoBgCQEKgBIQqACgCQEKgBIQqACgCQEKgBIQqAC
+ gCQEKgBIYlmgGuP0M5tUXjdyf1qAeKuvHXb61OEPmlTWKrmvuJ++32GEd/Nvt3c9cOTk1FrD
+ HhVitKiWp5I0X7xdMrbrBkPvx29VjaJ3cE0t5VH1Sv1WnXcMCQmOeqO83Q9yrgUAv7EsUDVl
+ MjrO3jq+2j1D1HdT3x4enqy4SarLYjrvvj/FRncd5qExpaQn33JIOLW76prY0T1bLF0eNHbN
+ xn6hzUp8pSqKqbDrBPDysPAnv73JvU6zU+5KqnonRhOoxD8/gao6VUiu+9c39j3tLbcJ/Lrv
+ kF4xoW1bLZvcdei8GqdWnAsspV4s5DIBvESsdw/V8IP92kljRk37Yk/vf914WM6+TNUbTbuP
+ XxU5vl1oRRvlgfkwrXpb3T21fUhI1I4RPyY6FKvQOPjQJ4umDw5w0/5LSd/j8J6X/95zI3dt
+ Hn4z7OEHi/5v0KV7NiXcG/c9NHPR9EFt3TQX8lOS6up37/3okWO/qh22d+6K+K4dQipO1Ihe
+ al5qTbts+/W00UMnL9nZ/8y1h+WdPHx/aT/s4wURg/3mFlOVh5L/9wC8gKwTqKY72i3vtZoS
+ tLFiz3Exu0d8Wct1/90jMTWGD3h3TpuUHUW/n9F4kOOTA5Vba8f/bbb/eztidk0LsI3/suz7
+ fcKi+k98Y8qlz/y7OD4qT6fLyDwfNbbbujGzovdcqentcGVl6X7Nem/oN+mNKT/Ftg5yUJSM
+ fH3hym3j2nhPOTNr3+F6SSEVdS6mO8bca000fjum1QcdlrgMHTD/m3ErGxTZfn1XRKNBQ/1n
+ dNUf03zd3zNCw+0D4E/PKoFqurH+lagvrnX2nbozZtJbXiseh417WMKck1terT8/ZtSOyY3D
+ 3rJVbipKpnqnVNDd6IiuYz01SrLyl1dPjAiY1+ztkydaJGT6O/ooarqqGJWk13v9HNGv9rwS
+ qmJQvALje7QcsW3t8eOt4jNbO/rk5QFYVtpy6R7ltFfTb1x/7ZZRsXW+ud4lt1rbGzakzl4U
+ 19NnzPHPZnSpulA8QPMKjkqYc3yX95tzYnudDA5dWEun3LHG/yWAF4dVAjX93DHP0+nlXDr7
+ uR/9reemN/n41jjuEHHG4WRchtdblUWgak3ufn6n3DRK6pNjNEqRYq531dRkm1STohWnEse4
+ Vat6obiqpD05RlVcXF3uZzkmn4yq0fjoQjqd8dGXN+Wl1jZ3jySdMLgV6fCG997fRiPYm+r+
+ te4+m9jDfz/6q8mtVhmVQAX+5KzTQ0184JCoOGtcnDVJWds1js4GByXJmJhkevKL/1E46m30
+ aVmPUVU1209nVdHpdenZmgouI87mYlymp2MDj2slNYohL7UaEx8YEzMuO/yjufOX89Usw7uM
+ GZo05S+ZN24ZiytlCpDtAF4qBQhUo5r48+myJ68XKVfH1/OY/aPf7U97fXp9pujBqS6uKc5K
+ ovFBotFJydKJzEx6YJ+suGhcnTWJEr9DvhiOrPPZdNm+cqPx9VbZPao1PQ+1ajKKJLvoKyZ3
+ Xrlh1LAq2v2/O6Fqayrhqf33s/4eAJ4/BQjUNOVgqP/QNpve7PbVhUUN27ooCUrGDzbnf8j0
+ sq/ieb20VknV+/jG17BZdP/wkZ/rGBtW3PTkp3S6eubQ8TqpResl1fbSXpL/VXJnuru36KRh
+ C8ITPIJvL3in1FoxDjUvtepSfR/Wslt0N+FOsWLelcpcNI9fNd5OKBKvlLUtYaskF8b3AfB8
+ KUCg2pmaBPdeXfnzyL5DgsrH3ulXY0HK9vAGURfK1u0U2bK/k3jSVOrtm0O7h65oFzG4//TK
+ M870rOZw8Pq+qLrDYq78verQZaubOyhXlXTFVv7X+Y0pKd7xyP/taXRDoyQbDXfsrpze5bN8
+ /pK+e+7XeGXC5rBuTZ2VX8RxealVdWhvGto7dJn/hF4jppScfrV77RL70uJ3uc0NCQlbU3pm
+ xvGNwe3dNYQq8GdXoHuodn4TTny1Iq3H3yfMDx0Y+GCFXfl6VzvFbBz3yZuuqx/33tQima1m
+ fTPlC9dRKaF960dOuZle1ql8rautx26MjRhdJ8Lu8W0C68q4GOvVq3nsZnHDVdXojc6lX79Z
+ 980JOzZ+ODTCv6L92acH5qlWZ6VpxDfTvywyJmnKsOaTw39JdtcWf/Vevbemb94yvfd4whSA
+ UMCHUrYmrw6RX2999PrDQ+xeS+0Q/s+pHcKVqTn+Xd8wZWacwS9bo6l+5I+hhkgl9Mn7hkru
+ x2TnZAz6KjU4SFGC8/ptcq1VsPE0tJ20JrLtJCUyz+cF8KfCalMAIAmBCgCSEKgAIAmBCgCS
+ EKgAIAmBCgCSEKgAIAmBCgCSFDBQs22El53e1zD99MGW4ypp91pQGwC8UCzqoepeD46Lieoy
+ 4r+mXmpcja+5a89YVBkAvGAsClTV2SupfvMWe/K0bXReZWZoMzQ6k06Vta30c3ItAC89q99D
+ zfj3trLhoyeHLtl52v/KvYzijuWqX3tzYPjiOWOaTi+lUQxK2k7HQZ4BB34cvX5Tm91DPCfs
+ ft1/1g9j3zxVv838cyFbtvT9aYL+oxVH+1w1lbFp0G/usqWjnD5eNnh4WNT2i+3uO1ZKaz9p
+ SWTswOqzHu8tldtGejldK35rk76l1LO5fxMA+N+sG6jGK/rY4MCZYdc614jZsLBbg9KahJsH
+ 5/oOHhA4e5D7+V/XBpWap6o2Jhu9MT3h80/a7es4a/O2id6tvIreij8nNueLntbl8MeLQ8/M
+ fsXtckynLk2G9533t70N6naL3DYlYZWu3/eTWw9rMWrc+83f2vJNn9JJ53LdSC/Ha6lxVv0/
+ APCnYVmgGtM0KUlJjkna3y/Hp6p6k52jbYpWUyaj67Kz7/lrSmrcS9rfEH97tcKoK92jFwdN
+ 33msaXpQ62gbRatotZnGn50DHu74oP20CholSUnf76AqJiXZp0f8hLe9Vjo+6l1W7txxa92R
+ 2+5dqB9ydnTjV7bYPLq6X+eATd6fLBx18kLG6ybdhpu5bqSnaA3/dS0AkMSiQE0/MblqnSKT
+ f8nerine++amq4tq+tvorqk395SYOW5W6PoDF/567f7DYhkmkyrWKHX0SN1iero7lMZUtnbt
+ c24aJSXLWUzlKntfclWVx/tJqY5OBidVl+5V6bUf9P9ZMf9xm5KamWow2WWcO+KZ60Z6JZRL
+ OV8LACxn2VP+Sv1/WhLTfYhHtqf8qv6V9Cp65ZaSuMN1VEDfFWsrjDMsPbSrRbPXip21U66o
+ c5u+tuYDRbH57RMaxdHJMfn3e++pik6nzfjt7ZPN+37X9p88Fn8wis32cttI70mg5nAtALCc
+ ZU/5HT2SazVsdOiPnvKnf7+x9tdXy1fssWJ8T39v/cnHjRm37X69YyyqlM021EpVTDmcIs80
+ LvnYSM/CawFATqz6UMpkSLUxqK5qUVfN08BNOby82toLmTVNPqb9/+uz+aXz8U3IdSO9dMVB
+ 5jUBICurBqqumt9PtWxWPFgdvSG4w4d+CZmnlnlPiLgX0qSF077FP55wP3a9pUed4spNGddS
+ i7e/letGego9UwDWY9VA1ZTr+cucfxwZ2evDnuE1l9ied/frfGxC9NyR/pcdHPd3mbmq3Vu2
+ q7/5ttnbcq7mbMx1I71MeqgArKeAgfp0I7xc2Joq9Yxdc+jR63fNVaKUs/eiXjG/rZN9I76c
+ NvCz7fhgTWpHz6xNmgrD4/cahpd52pDbRno5bgwIAHKw2hQASEKgAoAkBCoASEKgAoAkBCoA
+ SEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoA
+ SEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoASEKgAoAkBCoA
+ SEKgAoAkBCoASEKgAoAkBCoASEKgAoAk/w/xJdzkzVWshgAAAABJRU5ErkJggg==
+ </office:binary-data>
+ </draw:image>
+ <svg:desc>140</svg:desc>
+ <loext:signatureline loext:id="{3C24159B-3B98-4F60-AB52-00E7721758E9}" loext:suggested-signer-name="John Doe" loext:suggested-signer-title="Farmer" loext:suggested-signer-email="john@farmers.org" loext:signing-instructions="Please farm here." loext:show-sign-date="true" loext:can-add-comment="true"/>
+ </draw:frame></text:p>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file
diff --git a/sw/qa/extras/odfexport/data/spellout-numberingtypes.odt b/sw/qa/extras/odfexport/data/spellout-numberingtypes.odt
new file mode 100644
index 000000000..0f07d93f2
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/spellout-numberingtypes.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/sw_hatch.odt b/sw/qa/extras/odfexport/data/sw_hatch.odt
new file mode 100644
index 000000000..45e36c6ec
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/sw_hatch.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/table_styles_1.odt b/sw/qa/extras/odfexport/data/table_styles_1.odt
new file mode 100644
index 000000000..701fd92c2
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/table_styles_1.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/table_styles_2.odt b/sw/qa/extras/odfexport/data/table_styles_2.odt
new file mode 100644
index 000000000..735ea4431
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/table_styles_2.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/table_styles_3.odt b/sw/qa/extras/odfexport/data/table_styles_3.odt
new file mode 100644
index 000000000..736786489
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/table_styles_3.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/table_styles_4.odt b/sw/qa/extras/odfexport/data/table_styles_4.odt
new file mode 100644
index 000000000..0d96127e3
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/table_styles_4.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/table_styles_5.odt b/sw/qa/extras/odfexport/data/table_styles_5.odt
new file mode 100644
index 000000000..c90958322
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/table_styles_5.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf100492.odt b/sw/qa/extras/odfexport/data/tdf100492.odt
new file mode 100644
index 000000000..e17bd67c5
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf100492.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf101710.odt b/sw/qa/extras/odfexport/data/tdf101710.odt
new file mode 100644
index 000000000..50ab73607
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf101710.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf101856.odt b/sw/qa/extras/odfexport/data/tdf101856.odt
new file mode 100644
index 000000000..bddd15022
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf101856.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf101856_overlapped.odt b/sw/qa/extras/odfexport/data/tdf101856_overlapped.odt
new file mode 100644
index 000000000..c05df538d
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf101856_overlapped.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf103091.fodt b/sw/qa/extras/odfexport/data/tdf103091.fodt
new file mode 100644
index 000000000..c2c84115d
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf103091.fodt
@@ -0,0 +1,307 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:initial-creator>ms </meta:initial-creator><meta:creation-date>2017-06-15T21:56:46</meta:creation-date><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/><dc:date>2017-06-15T21:59:44</dc:date><dc:creator>ms </dc:creator><meta:editing-duration>P0D</meta:editing-duration><meta:editing-cycles>1</meta:editing-cycles><meta:generator>LibreOffice/3.5$Linux_X86_64 LibreOffice_project/3215f89-f603614-ab984f2-7348103-1225a5b</meta:generator></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="DejaVu Sans1" svg:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="swiss"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="DejaVu Sans" svg:font-family="&apos;DejaVu Sans&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="DejaVu Sans Mono" svg:font-family="&apos;DejaVu Sans Mono&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#808080" draw:fill-color="#cfe7f5" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="DejaVu Sans Mono" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="DejaVu Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-size="14pt" style:font-name-asian="DejaVu Sans Mono" style:font-size-asian="14pt" style:font-name-complex="DejaVu Sans" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Conditional" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.212cm"/>
+ <style:map style:condition="table-header()" style:apply-style-name="Addressee"/>
+ <style:map style:condition="table()" style:apply-style-name="Bibliography_20_1"/>
+ <style:map style:condition="text-box()" style:apply-style-name="Bibliography_20_Heading"/>
+ <style:map style:condition="section()" style:apply-style-name="Caption"/>
+ <style:map style:condition="footnote()" style:apply-style-name="Salutation"/>
+ <style:map style:condition="endnote()" style:apply-style-name="Contents_20_1"/>
+ <style:map style:condition="header()" style:apply-style-name="Contents_20_2"/>
+ <style:map style:condition="footer()" style:apply-style-name="Contents_20_3"/>
+ <style:map style:condition="outline-level()=1" style:apply-style-name="Contents_20_4"/>
+ <style:map style:condition="outline-level()=2" style:apply-style-name="Contents_20_5"/>
+ <style:map style:condition="outline-level()=3" style:apply-style-name="Contents_20_6"/>
+ <style:map style:condition="outline-level()=4" style:apply-style-name="Contents_20_7"/>
+ <style:map style:condition="outline-level()=5" style:apply-style-name="Contents_20_8"/>
+ <style:map style:condition="outline-level()=6" style:apply-style-name="Contents_20_9"/>
+ <style:map style:condition="outline-level()=7" style:apply-style-name="Contents_20_10"/>
+ <style:map style:condition="outline-level()=8" style:apply-style-name="Contents_20_Heading"/>
+ <style:map style:condition="outline-level()=9" style:apply-style-name="Standard"/>
+ <style:map style:condition="outline-level()=10" style:apply-style-name="Drawing"/>
+ <style:map style:condition="list-level()=1" style:apply-style-name="Endnote"/>
+ <style:map style:condition="list-level()=2" style:apply-style-name="First_20_line_20_indent"/>
+ <style:map style:condition="list-level()=3" style:apply-style-name="Footer"/>
+ <style:map style:condition="list-level()=4" style:apply-style-name="Footer_20_left"/>
+ <style:map style:condition="list-level()=5" style:apply-style-name="Footer_20_right"/>
+ <style:map style:condition="list-level()=6" style:apply-style-name="Footnote"/>
+ <style:map style:condition="list-level()=7" style:apply-style-name="Frame_20_contents"/>
+ <style:map style:condition="list-level()=8" style:apply-style-name="Hanging_20_indent"/>
+ <style:map style:condition="list-level()=9" style:apply-style-name="Header"/>
+ <style:map style:condition="list-level()=10" style:apply-style-name="Header_20_left"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="DejaVu Sans1"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="DejaVu Sans1" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="DejaVu Sans1"/>
+ </style:style>
+ <style:style style:name="Addressee" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.106cm" text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <style:style style:name="Bibliography_20_1" style:display-name="Bibliography 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="17cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Bibliography_20_Heading" style:display-name="Bibliography Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="16pt" style:font-weight-asian="bold" style:font-size-complex="16pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Salutation" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <style:style style:name="Contents_20_1" style:display-name="Contents 1" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="17cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_2" style:display-name="Contents 2" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0.499cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="16.501cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_3" style:display-name="Contents 3" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0.998cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="16.002cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_4" style:display-name="Contents 4" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="1.498cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="15.503cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_5" style:display-name="Contents 5" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="1.997cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="15.004cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_6" style:display-name="Contents 6" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="2.496cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="14.504cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_7" style:display-name="Contents 7" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="2.995cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="14.005cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_8" style:display-name="Contents 8" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="3.494cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="13.506cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_9" style:display-name="Contents 9" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="3.993cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="13.007cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_10" style:display-name="Contents 10" style:family="paragraph" style:parent-style-name="Index" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="4.493cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="12.508cm" style:type="right" style:leader-style="dotted" style:leader-text="."/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Contents_20_Heading" style:display-name="Contents Heading" style:family="paragraph" style:parent-style-name="Heading" style:class="index">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="16pt" fo:font-weight="bold" style:font-size-asian="16pt" style:font-weight-asian="bold" style:font-size-complex="16pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Drawing" style:family="paragraph" style:parent-style-name="Caption" style:class="extra"/>
+ <style:style style:name="Endnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0.598cm" fo:margin-right="0cm" fo:text-indent="-0.598cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="First_20_line_20_indent" style:display-name="First line indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0.499cm" style:auto-text-indent="false"/>
+ </style:style>
+ <style:style style:name="Footer" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0">
+ <style:tab-stops>
+ <style:tab-stop style:position="8.5cm" style:type="center"/>
+ <style:tab-stop style:position="17cm" style:type="right"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Footer_20_left" style:display-name="Footer left" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0">
+ <style:tab-stops>
+ <style:tab-stop style:position="8.5cm" style:type="center"/>
+ <style:tab-stop style:position="17cm" style:type="right"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Footer_20_right" style:display-name="Footer right" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0">
+ <style:tab-stops>
+ <style:tab-stop style:position="8.5cm" style:type="center"/>
+ <style:tab-stop style:position="17cm" style:type="right"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Footnote" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="0.598cm" fo:margin-right="0cm" fo:text-indent="-0.598cm" style:auto-text-indent="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="10pt" style:font-size-asian="10pt" style:font-size-complex="10pt"/>
+ </style:style>
+ <style:style style:name="Frame_20_contents" style:display-name="Frame contents" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="extra"/>
+ <style:style style:name="Hanging_20_indent" style:display-name="Hanging indent" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin="100%" fo:margin-left="1cm" fo:margin-right="0cm" fo:text-indent="-0.499cm" style:auto-text-indent="false">
+ <style:tab-stops>
+ <style:tab-stop style:position="0cm"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Header" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0">
+ <style:tab-stops>
+ <style:tab-stop style:position="8.5cm" style:type="center"/>
+ <style:tab-stop style:position="17cm" style:type="right"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Header_20_left" style:display-name="Header left" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0">
+ <style:tab-stops>
+ <style:tab-stop style:position="8.5cm" style:type="center"/>
+ <style:tab-stop style:position="17cm" style:type="right"/>
+ </style:tab-stops>
+ </style:paragraph-properties>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.762cm" fo:text-indent="-0.762cm" fo:margin-left="0.762cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.016cm" fo:text-indent="-1.016cm" fo:margin-left="1.016cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.27cm" fo:text-indent="-1.27cm" fo:margin-left="1.27cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.524cm" fo:text-indent="-1.524cm" fo:margin-left="1.524cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.778cm" fo:text-indent="-1.778cm" fo:margin-left="1.778cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.032cm" fo:text-indent="-2.032cm" fo:margin-left="2.032cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.286cm" fo:text-indent="-2.286cm" fo:margin-left="2.286cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.54cm" fo:text-indent="-2.54cm" fo:margin-left="2.54cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.794cm" fo:text-indent="-2.794cm" fo:margin-left="2.794cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.048cm" fo:text-indent="-3.048cm" fo:margin-left="3.048cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin="2cm" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ </text:sequence-decls>
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/tdf103567.odt b/sw/qa/extras/odfexport/data/tdf103567.odt
new file mode 100644
index 000000000..cbd29bd29
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf103567.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf107696.odt b/sw/qa/extras/odfexport/data/tdf107696.odt
new file mode 100644
index 000000000..c24100bbd
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf107696.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf111891_frameVertStyle.odt b/sw/qa/extras/odfexport/data/tdf111891_frameVertStyle.odt
new file mode 100644
index 000000000..8fcf98a62
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf111891_frameVertStyle.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf118393.odt b/sw/qa/extras/odfexport/data/tdf118393.odt
new file mode 100644
index 000000000..ff8d54009
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf118393.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf118502.odt b/sw/qa/extras/odfexport/data/tdf118502.odt
new file mode 100644
index 000000000..f006d607a
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf118502.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf121658.odt b/sw/qa/extras/odfexport/data/tdf121658.odt
new file mode 100644
index 000000000..1ab6f75c8
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf121658.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt b/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt
new file mode 100644
index 000000000..21969e9e5
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf124470TableAndEmbeddedUsedFonts.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf128504.docx b/sw/qa/extras/odfexport/data/tdf128504.docx
new file mode 100644
index 000000000..2e6e5225b
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf128504.docx
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf129568-ui.fodt b/sw/qa/extras/odfexport/data/tdf129568-ui.fodt
new file mode 100644
index 000000000..8958bd685
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf129568-ui.fodt
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2020-02-03T11:01:15.202549120</meta:creation-date><dc:date>2020-02-03T11:02:08.562696933</dc:date><meta:editing-duration>PT55S</meta:editing-duration><meta:editing-cycles>2</meta:editing-cycles><meta:generator>LibreOffice/6.3.4.2.0$Linux_X86_64 LibreOffice_project/30$Build-2</meta:generator><meta:document-statistic meta:table-count="1" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">25137</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">13522</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">4165</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">2616</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">25135</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">13520</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1284982</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1284982</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Tahoma" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Tahoma" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.0972in" loext:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.0835in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <style:style style:name="Default_20_Table_20_Style.1" style:display-name="Default Table Style.1" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.2" style:display-name="Default Table Style.2" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.3" style:display-name="Default Table Style.3" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.4" style:display-name="Default Table Style.4" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.5" style:display-name="Default Table Style.5" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.6" style:display-name="Default Table Style.6" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.7" style:display-name="Default Table Style.7" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.8" style:display-name="Default Table Style.8" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.9" style:display-name="Default Table Style.9" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.10" style:display-name="Default Table Style.10" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.11" style:display-name="Default Table Style.11" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.12" style:display-name="Default Table Style.12" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.13" style:display-name="Default Table Style.13" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.14" style:display-name="Default Table Style.14" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.15" style:display-name="Default Table Style.15" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Table_20_Style.16" style:display-name="Default Table Style.16" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <table:table-template table:name="Default Style" table:first-row-end-column="row" table:first-row-start-column="row" table:last-row-end-column="row" table:last-row-start-column="row">
+ <table:first-row table:style-name="Default_20_Table_20_Style.1"/>
+ <table:last-row table:style-name="Default_20_Table_20_Style.2"/>
+ <table:first-column table:style-name="Default_20_Table_20_Style.3"/>
+ <table:last-column table:style-name="Default_20_Table_20_Style.4"/>
+ <table:body table:style-name="Default_20_Table_20_Style.9"/>
+ <table:even-rows table:style-name="Default_20_Table_20_Style.5"/>
+ <table:odd-rows table:style-name="Default_20_Table_20_Style.6"/>
+ <table:even-columns table:style-name="Default_20_Table_20_Style.7"/>
+ <table:odd-columns table:style-name="Default_20_Table_20_Style.8"/>
+ <table:background table:style-name="Default_20_Table_20_Style.10"/>
+ <loext:first-row-even-column table:style-name="Default_20_Table_20_Style.15"/>
+ <loext:last-row-even-column table:style-name="Default_20_Table_20_Style.16"/>
+ <loext:first-row-end-column table:style-name="Default_20_Table_20_Style.12"/>
+ <loext:first-row-start-column table:style-name="Default_20_Table_20_Style.11"/>
+ <loext:last-row-end-column table:style-name="Default_20_Table_20_Style.14"/>
+ <loext:last-row-start-column table:style-name="Default_20_Table_20_Style.13"/>
+ </table:table-template>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Table1" style:family="table" style:master-page-name="">
+ <style:table-properties style:width="6.6931in" style:page-number="auto" fo:break-before="auto" fo:break-after="auto" table:align="margins" style:shadow="none" fo:keep-with-next="auto" style:may-break-between-rows="true" table:border-model="collapsing"/>
+ </style:style>
+ <style:style style:name="Table1.A" style:family="table-column">
+ <style:table-column-properties style:column-width="6.6931in" style:rel-column-width="65535*"/>
+ </style:style>
+ <style:style style:name="Table1.1" style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:style>
+ <style:style style:name="Table1.A1" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="transparent" fo:padding="0.0382in" fo:border-left="0.5pt solid #000000" fo:border-right="none" fo:border-top="0.5pt solid #000000" fo:border-bottom="0.5pt solid #000000" style:writing-mode="page">
+ <style:background-image/>
+ </style:table-cell-properties>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+ <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="12pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="8.2681in" fo:page-height="11.6929in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
+ <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <table:table table:name="Table1" table:style-name="Table1" table:template-name="Default Table Style">
+ <table:table-column table:style-name="Table1.A"/>
+ <table:table-row table:style-name="Table1.1">
+ <table:table-cell table:style-name="Table1.A1" office:value-type="string">
+ <text:p text:style-name="P1"/>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/tdf129568.fodt b/sw/qa/extras/odfexport/data/tdf129568.fodt
new file mode 100644
index 000000000..30256a6cd
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf129568.fodt
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:officeooo="http://openoffice.org/2009/office" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ooo="http://openoffice.org/2004/office" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:rpt="http://openoffice.org/2005/report" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2020-02-03T11:01:15.202549120</meta:creation-date><dc:date>2020-02-03T11:02:08.562696933</dc:date><meta:editing-duration>PT55S</meta:editing-duration><meta:editing-cycles>2</meta:editing-cycles><meta:generator>LibreOffice/6.3.4.2.0$Linux_X86_64 LibreOffice_project/30$Build-2</meta:generator><meta:document-statistic meta:table-count="1" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">25137</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">13522</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">4165</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">2616</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">25135</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">13520</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmptyDbFieldHidesPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedAsianScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="EmbedLatinScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DisableOffPagePositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedOnlyUsedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1284982</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedComplexScriptFonts" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">1284982</config:config-item>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="SaveThumbnail" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="MsWordCompTrailingBlanks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TreatSingleColumnBreakAsPageBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddVerticalFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string"/>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink"/>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Noto Sans CJK SC" svg:font-family="&apos;Noto Sans CJK SC&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Tahoma" svg:font-family="Tahoma" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.1181in" draw:shadow-offset-y="0.1181in" draw:start-line-spacing-horizontal="0.1114in" draw:start-line-spacing-vertical="0.1114in" draw:end-line-spacing-horizontal="0.1114in" draw:end-line-spacing-vertical="0.1114in" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Tahoma" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:orphans="2" fo:widows="2" fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="0.4925in" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="en" fo:country="US" style:letter-kerning="true" style:font-name-asian="Tahoma" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.1665in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Noto Sans CJK SC" style:font-family-asian="&apos;Noto Sans CJK SC&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0in" fo:margin-bottom="0.0972in" loext:contextual-spacing="false" fo:line-height="115%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.0835in" fo:margin-bottom="0.0835in" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lohit Devanagari1" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Table_20_Contents" style:display-name="Table Contents" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.1965in" style:num-format="1" text:number-position="left" text:increment="5"/>
+ <style:style style:name="Default_20_Style.1" style:display-name="Default Style.1" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.2" style:display-name="Default Style.2" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.3" style:display-name="Default Style.3" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.4" style:display-name="Default Style.4" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.5" style:display-name="Default Style.5" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.6" style:display-name="Default Style.6" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.7" style:display-name="Default Style.7" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.8" style:display-name="Default Style.8" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.9" style:display-name="Default Style.9" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.10" style:display-name="Default Style.10" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.11" style:display-name="Default Style.11" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.12" style:display-name="Default Style.12" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.13" style:display-name="Default Style.13" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.14" style:display-name="Default Style.14" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.15" style:display-name="Default Style.15" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <style:style style:name="Default_20_Style.16" style:display-name="Default Style.16" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="#ffff00" fo:border-left="0.51pt solid #000000" fo:border-top="0.51pt solid #000000" fo:border-bottom="0.51pt solid #000000"/>
+ <style:text-properties style:font-name-complex="Lohit Devanagari" style:font-family-complex="&apos;Lohit Devanagari&apos;"/>
+ </style:style>
+ <table:table-template table:name="Default Style" table:first-row-end-column="row" table:first-row-start-column="row" table:last-row-end-column="row" table:last-row-start-column="row">
+ <table:first-row table:style-name="Default_20_Style.1"/>
+ <table:last-row table:style-name="Default_20_Style.2"/>
+ <table:first-column table:style-name="Default_20_Style.3"/>
+ <table:last-column table:style-name="Default_20_Style.4"/>
+ <table:body table:style-name="Default_20_Style.9"/>
+ <table:even-rows table:style-name="Default_20_Style.5"/>
+ <table:odd-rows table:style-name="Default_20_Style.6"/>
+ <table:even-columns table:style-name="Default_20_Style.7"/>
+ <table:odd-columns table:style-name="Default_20_Style.8"/>
+ <table:background table:style-name="Default_20_Style.10"/>
+ <loext:first-row-even-column table:style-name="Default_20_Style.15"/>
+ <loext:last-row-even-column table:style-name="Default_20_Style.16"/>
+ <loext:first-row-end-column table:style-name="Default_20_Style.12"/>
+ <loext:first-row-start-column table:style-name="Default_20_Style.11"/>
+ <loext:last-row-end-column table:style-name="Default_20_Style.14"/>
+ <loext:last-row-start-column table:style-name="Default_20_Style.13"/>
+ </table:table-template>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="Table1" style:family="table" style:master-page-name="">
+ <style:table-properties style:width="6.6931in" style:page-number="auto" fo:break-before="auto" fo:break-after="auto" table:align="margins" style:shadow="none" fo:keep-with-next="auto" style:may-break-between-rows="true" table:border-model="collapsing"/>
+ </style:style>
+ <style:style style:name="Table1.A" style:family="table-column">
+ <style:table-column-properties style:column-width="6.6931in" style:rel-column-width="65535*"/>
+ </style:style>
+ <style:style style:name="Table1.1" style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:style>
+ <style:style style:name="Table1.A1" style:family="table-cell">
+ <style:table-cell-properties fo:background-color="transparent" fo:padding="0.0382in" fo:border-left="0.5pt solid #000000" fo:border-right="none" fo:border-top="0.5pt solid #000000" fo:border-bottom="0.5pt solid #000000" style:writing-mode="page">
+ <style:background-image/>
+ </style:table-cell-properties>
+ </style:style>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false"/>
+ <style:text-properties fo:color="#000000" style:text-outline="false" style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Serif" fo:font-size="12pt" fo:font-style="normal" fo:text-shadow="none" style:text-underline-style="none" fo:font-weight="normal" style:font-size-asian="12pt" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-size-complex="12pt" style:font-style-complex="normal" style:font-weight-complex="normal" style:text-overline-style="none" style:text-overline-color="font-color"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="8.2681in" fo:page-height="11.6929in" style:num-format="1" style:print-orientation="portrait" fo:margin-top="0.7874in" fo:margin-bottom="0.7874in" fo:margin-left="0.7874in" fo:margin-right="0.7874in" style:writing-mode="lr-tb" style:footnote-max-height="0in">
+ <style:footnote-sep style:width="0.0071in" style:distance-before-sep="0.0398in" style:distance-after-sep="0.0398in" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Figure"/>
+ </text:sequence-decls>
+ <table:table table:name="Table1" table:style-name="Table1" table:template-name="Default Style">
+ <table:table-column table:style-name="Table1.A"/>
+ <table:table-row table:style-name="Table1.1">
+ <table:table-cell table:style-name="Table1.A1" office:value-type="string">
+ <text:p text:style-name="P1"/>
+ </table:table-cell>
+ </table:table-row>
+ </table:table>
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/tdf131621.ott b/sw/qa/extras/odfexport/data/tdf131621.ott
new file mode 100644
index 000000000..8590c16ae
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf131621.ott
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf131812.odt b/sw/qa/extras/odfexport/data/tdf131812.odt
new file mode 100644
index 000000000..c2833ff25
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf131812.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf132642_keepWithNextTable.odt b/sw/qa/extras/odfexport/data/tdf132642_keepWithNextTable.odt
new file mode 100644
index 000000000..739cd0078
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf132642_keepWithNextTable.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf43569_conditionalfield.doc b/sw/qa/extras/odfexport/data/tdf43569_conditionalfield.doc
new file mode 100644
index 000000000..456a6ed83
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf43569_conditionalfield.doc
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf66305.odt b/sw/qa/extras/odfexport/data/tdf66305.odt
new file mode 100644
index 000000000..4a310a83d
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf66305.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf77961.odt b/sw/qa/extras/odfexport/data/tdf77961.odt
new file mode 100644
index 000000000..a6205e018
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf77961.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/tdf92379.fodt b/sw/qa/extras/odfexport/data/tdf92379.fodt
new file mode 100644
index 000000000..762a04d57
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf92379.fodt
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:initial-creator>ms </meta:initial-creator><meta:creation-date>2015-08-24T21:49:45.305718699</meta:creation-date><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="0" meta:word-count="0" meta:character-count="0" meta:non-whitespace-character-count="0"/><meta:generator>LibreOfficeDev/4.3.7.2$Linux_X86_64 LibreOffice_project/8a35821d8636a03b8bf4e15b48f59794652c68ba</meta:generator></office:meta>
+ <office:font-face-decls>
+ <style:font-face style:name="Lohit Devanagari1" svg:font-family="&apos;Lohit Devanagari&apos;"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lohit Devanagari" svg:font-family="&apos;Lohit Devanagari&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Source Han Sans CN Regular" svg:font-family="&apos;Source Han Sans CN Regular&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="de" fo:country="DE" style:letter-kerning="true" style:font-name-asian="Source Han Sans CN Regular" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lohit Devanagari" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text"/>
+
+ <!-- "encarts" from bugdoc -->
+ <style:style style:name="encarts" style:family="graphic">
+ <style:graphic-properties svg:width="3.9701in" svg:height="0.1402in" text:anchor-type="paragraph" fo:background-color="#ffcc99" style:background-transparency="0%" draw:fill="solid" fo:padding="0.0193in" fo:border="0.79pt solid #661900" style:shadow="none" draw:shadow-opacity="100%">
+ <style:background-image/>
+ <style:columns fo:column-count="1" fo:column-gap="0in"/>
+ </style:graphic-properties>
+ </style:style>
+ <style:style style:name="Untitled1" style:family="graphic" style:parent-style-name="encarts">
+ <style:graphic-properties fo:background-color="transparent" style:background-transparency="100%" draw:fill="solid">
+ <style:background-image/>
+ </style:graphic-properties>
+ </style:style>
+
+ <!-- "Titre Avis expert" and derived styles from bugdoc -->
+ <style:style style:name="Titre_20_Avis_20_expert" style:display-name="Titre Avis expert" style:family="paragraph" style:parent-style-name="Standard" style:master-page-name="">
+ <style:paragraph-properties fo:text-align="start" style:justify-single-word="false" style:page-number="auto" fo:background-color="#661900">
+ <style:background-image/>
+ </style:paragraph-properties>
+ <style:text-properties fo:color="#ffffff" />
+ </style:style>
+ <style:style style:name="Avis_20_expert_20_questions" style:display-name="Avis expert questions" style:family="paragraph" style:parent-style-name="Titre_20_Avis_20_expert" style:master-page-name="">
+ <style:paragraph-properties fo:line-height="100%" fo:text-align="start" style:justify-single-word="false" style:page-number="auto" fo:background-color="transparent">
+ <style:background-image/>
+ </style:paragraph-properties>
+ <style:text-properties fo:color="#661900" />
+ </style:style>
+ <style:style style:name="avis_20_expert_20_questions_20_non_20_cadres" style:display-name="avis expert questions non cadres" style:family="paragraph" style:parent-style-name="Avis_20_expert_20_questions" style:master-page-name="">
+ <style:paragraph-properties style:page-number="auto" fo:background-color="#801900" style:shadow="none">
+ <style:tab-stops/>
+ <style:background-image/>
+ </style:paragraph-properties>
+ </style:style>
+ <style:style style:name="Avis_20_expert_20_rXponses" style:display-name="Avis expert rXponses" style:family="paragraph" style:parent-style-name="Avis_20_expert_20_questions" style:master-page-name="">
+ <style:paragraph-properties fo:line-height="100%" fo:text-align="justify" style:justify-single-word="false" fo:orphans="0" fo:widows="0" fo:hyphenation-ladder-count="1" style:page-number="auto" fo:background-color="transparent">
+ <style:background-image/>
+ </style:paragraph-properties>
+ <style:text-properties fo:color="#461900" fo:hyphenate="true" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:style>
+
+ </office:styles>
+ <office:automatic-styles>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <text:p text:style-name="Standard"/>
+ </office:text>
+ </office:body>
+</office:document>
diff --git a/sw/qa/extras/odfexport/data/tdf99631.docx b/sw/qa/extras/odfexport/data/tdf99631.docx
new file mode 100644
index 000000000..c72950b72
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/tdf99631.docx
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/textbox-rounded-corners.odt b/sw/qa/extras/odfexport/data/textbox-rounded-corners.odt
new file mode 100644
index 000000000..add7512c6
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/textbox-rounded-corners.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/textframe-gradient.odt b/sw/qa/extras/odfexport/data/textframe-gradient.odt
new file mode 100644
index 000000000..cdcae4fff
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/textframe-gradient.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/textframe-transparent-shadow.odt b/sw/qa/extras/odfexport/data/textframe-transparent-shadow.odt
new file mode 100644
index 000000000..508e853c9
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/textframe-transparent-shadow.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/textframe-vertadjust.odt b/sw/qa/extras/odfexport/data/textframe-vertadjust.odt
new file mode 100644
index 000000000..bbf3416c0
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/textframe-vertadjust.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/user-field-decl-fly.odt b/sw/qa/extras/odfexport/data/user-field-decl-fly.odt
new file mode 100644
index 000000000..2ffe3ae55
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/user-field-decl-fly.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/user-field-decl.odt b/sw/qa/extras/odfexport/data/user-field-decl.odt
new file mode 100644
index 000000000..f037f403e
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/user-field-decl.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/userdefattr-tablecell.odt b/sw/qa/extras/odfexport/data/userdefattr-tablecell.odt
new file mode 100644
index 000000000..c8f6dcca5
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/userdefattr-tablecell.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/data/whitespace.odt b/sw/qa/extras/odfexport/data/whitespace.odt
new file mode 100644
index 000000000..fe2b3dd57
--- /dev/null
+++ b/sw/qa/extras/odfexport/data/whitespace.odt
Binary files differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
new file mode 100644
index 000000000..6554b6abc
--- /dev/null
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -0,0 +1,2555 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <algorithm>
+#include <memory>
+#include <swmodeltestbase.hxx>
+#include <config_features.h>
+
+#include <com/sun/star/awt/FontSlant.hpp>
+#include <com/sun/star/awt/Gradient.hpp>
+#include <com/sun/star/container/XIndexReplace.hpp>
+#include <com/sun/star/drawing/FillStyle.hpp>
+#include <com/sun/star/drawing/PointSequenceSequence.hpp>
+#include <com/sun/star/drawing/GraphicExportFilter.hpp>
+#include <com/sun/star/drawing/XGraphicExportFilter.hpp>
+#include <com/sun/star/drawing/QRCode.hpp>
+#include <com/sun/star/drawing/QRCodeErrorCorrection.hpp>
+#include <com/sun/star/table/ShadowFormat.hpp>
+#include <com/sun/star/table/XCellRange.hpp>
+#include <com/sun/star/text/RelOrientation.hpp>
+#include <com/sun/star/text/XDocumentIndex.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/graphic/XGraphic.hpp>
+#include <officecfg/Office/Common.hxx>
+#include <com/sun/star/document/XEmbeddedObjectSupplier.hpp>
+#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
+#include <com/sun/star/text/XTextField.hpp>
+#include <com/sun/star/text/WritingMode2.hpp>
+#include <comphelper/storagehelper.hxx>
+#include <comphelper/fileformat.h>
+#include <comphelper/propertysequence.hxx>
+#include <unotools/streamwrap.hxx>
+#include <svl/PasswordHelper.hxx>
+#include <docufld.hxx> // for SwHiddenTextField::ParseIfFieldDefinition() method call
+#include <unoprnms.hxx>
+#include <sortedobjs.hxx>
+#include <flyfrm.hxx>
+#include <ftnidx.hxx>
+#include <txtftn.hxx>
+
+class Test : public SwModelTestBase
+{
+public:
+ Test() : SwModelTestBase("/sw/qa/extras/odfexport/data/", "writer8") {}
+
+ /**
+ * Blacklist handling
+ */
+ bool mustTestImportOf(const char* filename) const override {
+ // Only test import of .odt document
+ return OString(filename).endsWith(".odt");
+ }
+
+ bool mustValidate(const char* /*filename*/) const override
+ {
+ return true;
+ }
+
+ virtual std::unique_ptr<Resetter> preTest(const char* pFilename) override
+ {
+ if (OString(pFilename) == "fdo58949.docx")
+ {
+ std::unique_ptr<Resetter> pResetter(new Resetter(
+ [] () {
+ std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+ comphelper::ConfigurationChanges::create());
+ officecfg::Office::Common::Filter::Microsoft::Import::MathTypeToMath::set(true, pBatch);
+ return pBatch->commit();
+ }));
+
+ std::shared_ptr<comphelper::ConfigurationChanges> pBatch(comphelper::ConfigurationChanges::create());
+ officecfg::Office::Common::Filter::Microsoft::Import::MathTypeToMath::set(false, pBatch);
+ pBatch->commit();
+ return pResetter;
+ }
+ if (OString(pFilename) == "2_MathType3.docx")
+ {
+ std::unique_ptr<Resetter> pResetter(new Resetter(
+ [this] () {
+ mpFilter = "writer8";
+ std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+ comphelper::ConfigurationChanges::create());
+ officecfg::Office::Common::Cache::Writer::OLE_Objects::set(20, pBatch);
+ return pBatch->commit();
+ }));
+ mpFilter = "OpenDocument Text Flat XML"; // doesn't happen with ODF package
+ std::shared_ptr<comphelper::ConfigurationChanges> pBatch(
+ comphelper::ConfigurationChanges::create());
+ officecfg::Office::Common::Cache::Writer::OLE_Objects::set(1, pBatch);
+ pBatch->commit();
+ return pResetter;
+ }
+ return nullptr;
+ }
+};
+
+DECLARE_ODFEXPORT_TEST(testMathObjectFlatExport, "2_MathType3.docx")
+{
+ uno::Reference<util::XModifiable> xModifiable(mxComponent, uno::UNO_QUERY);
+ CPPUNIT_ASSERT(!xModifiable->isModified());
+ // see preTest(), set the OLE cache to 1 for this test
+ // and the problem was that the formulas that were in the cache
+ // (the second one) were lost
+ OUString formula1(getFormula(getRun(getParagraph(1), 1)));
+ CPPUNIT_ASSERT_EQUAL(OUString(" size 12{1+1=2} {}"), formula1);
+ OUString formula2(getFormula(getRun(getParagraph(2), 1)));
+ CPPUNIT_ASSERT_EQUAL(OUString(" size 12{2+2=4} {}"), formula2);
+}
+
+static void testTdf43569_CheckIfFieldParse()
+{
+ {
+ const OUString fieldDefinition("IF A B C");
+
+ OUString paramCondition;
+ OUString paramTrue;
+ OUString paramFalse;
+
+ SwHiddenTextField::ParseIfFieldDefinition(fieldDefinition, paramCondition, paramTrue, paramFalse);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("A"), paramCondition);
+ CPPUNIT_ASSERT_EQUAL(OUString("B"), paramTrue);
+ CPPUNIT_ASSERT_EQUAL(OUString("C"), paramFalse);
+ }
+
+ {
+ const OUString fieldDefinition(" IF AAA BBB CCC ");
+
+ OUString paramCondition;
+ OUString paramTrue;
+ OUString paramFalse;
+
+ SwHiddenTextField::ParseIfFieldDefinition(fieldDefinition, paramCondition, paramTrue, paramFalse);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("AAA"), paramCondition);
+ CPPUNIT_ASSERT_EQUAL(OUString("BBB"), paramTrue);
+ CPPUNIT_ASSERT_EQUAL(OUString("CCC"), paramFalse);
+ }
+
+ {
+ const OUString fieldDefinition(" IF AAA \"BBB\" \"CCC\" ");
+
+ OUString paramCondition;
+ OUString paramTrue;
+ OUString paramFalse;
+
+ SwHiddenTextField::ParseIfFieldDefinition(fieldDefinition, paramCondition, paramTrue, paramFalse);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("AAA"), paramCondition);
+ CPPUNIT_ASSERT_EQUAL(OUString("BBB"), paramTrue);
+ CPPUNIT_ASSERT_EQUAL(OUString("CCC"), paramFalse);
+ }
+
+ // true-case and false-case have spaces inside
+ {
+ const OUString fieldDefinition(" IF A A A \"B B B\" \"C C C\" ");
+
+ OUString paramCondition;
+ OUString paramTrue;
+ OUString paramFalse;
+
+ SwHiddenTextField::ParseIfFieldDefinition(fieldDefinition, paramCondition, paramTrue, paramFalse);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("A A A"), paramCondition);
+ CPPUNIT_ASSERT_EQUAL(OUString("B B B"), paramTrue);
+ CPPUNIT_ASSERT_EQUAL(OUString("C C C"), paramFalse);
+ }
+
+ // true-case and false-case have leading/trailing space
+ {
+ const OUString fieldDefinition("IF A1 A2 A3 \"B1 B2 \" \" C1 C2\" ");
+
+ OUString paramCondition;
+ OUString paramTrue;
+ OUString paramFalse;
+
+ SwHiddenTextField::ParseIfFieldDefinition(fieldDefinition, paramCondition, paramTrue, paramFalse);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("A1 A2 A3"), paramCondition);
+ CPPUNIT_ASSERT_EQUAL(OUString("B1 B2 "), paramTrue);
+ CPPUNIT_ASSERT_EQUAL(OUString(" C1 C2"), paramFalse);
+ }
+
+ // true-case and false-case are empty
+ {
+ const OUString fieldDefinition("IF condition \"\" \"\" ");
+
+ OUString paramCondition;
+ OUString paramTrue;
+ OUString paramFalse;
+
+ SwHiddenTextField::ParseIfFieldDefinition(fieldDefinition, paramCondition, paramTrue, paramFalse);
+
+ CPPUNIT_ASSERT_EQUAL(OUString("condition"), paramCondition);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), paramTrue);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), paramFalse);
+ }
+}
+
+// Input document contains only one IF-field,
+// and it should be imported as com.sun.star.text.TextField.ConditionalText in any case,
+// instead of insertion of the pair of two field-marks: <field:fieldmark-start> + <field:fieldmark-end>.
+DECLARE_ODFEXPORT_TEST(testTdf43569, "tdf43569_conditionalfield.doc")
+{
+ // check if our parser is valid
+ testTdf43569_CheckIfFieldParse();
+
+ // now check field creation during import
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+
+ // at least one field should be detected
+ CPPUNIT_ASSERT(xFields->hasMoreElements());
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf103567, "tdf103567.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> const xShape(getShape(1));
+
+ // contour wrap polygon
+ css::drawing::PointSequenceSequence const pointss(
+ getProperty<css::drawing::PointSequenceSequence>(xShape, "ContourPolyPolygon"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), pointss.getLength());
+ // for some reason this property exists with 199 points if it wasn't
+ // imported, that would be a fail
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5), pointss[0].getLength());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 0), pointss[0][0].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][0].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 0), pointss[0][1].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1111), pointss[0][1].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][2].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1111), pointss[0][2].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][3].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][3].Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 0), pointss[0][4].X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2672), pointss[0][4].Y);
+
+ // image map, one rectangle
+ uno::Reference<container::XIndexContainer> const xImageMap(
+ getProperty<uno::Reference<container::XIndexContainer>>(xShape, "ImageMap"));
+
+ uno::Reference<beans::XPropertySet> const xEntry(xImageMap->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("http://example.com/"), getProperty<OUString>(xEntry, "URL"));
+ awt::Rectangle const rect(getProperty<awt::Rectangle>(xEntry, "Boundary"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 726), rect.X);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1718), rect.Y);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1347), rect.Width);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32( 408), rect.Height);
+}
+
+DECLARE_ODFEXPORT_TEST(testUserFieldDecl, "user-field-decl.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ if (xmlDocUniquePtr pXmlDoc = parseExport("styles.xml"))
+ // Without the accompanying fix in place, this test would have failed with 'Expected: 2;
+ // Actual: 1', i.e. the in-table field had no declaration (in the header), while the
+ // outside-table one had the declaration.
+ assertXPath(pXmlDoc, "//style:header/text:user-field-decls/text:user-field-decl", 2);
+}
+
+DECLARE_ODFEXPORT_TEST(testUserFieldDeclFly, "user-field-decl-fly.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ if (xmlDocUniquePtr pXmlDoc = parseExport("styles.xml"))
+ // Without the accompanying fix in place, this test would have failed with 'Expected: 2;
+ // Actual: 1', i.e. the in-textframe field had no declaration (in the header), while the
+ // outside-textframe one had the declaration.
+ assertXPath(pXmlDoc, "//style:header/text:user-field-decls/text:user-field-decl", 2);
+}
+
+DECLARE_ODFEXPORT_TEST(testFramebackgrounds, "framebackgrounds.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(16, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ //Counting the Number of Frames and checking with the expected count
+ uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(16), xIndexAccess->getCount());
+ uno::Reference<drawing::XShape> xTextFrame;
+ awt::Gradient aGradientxTextFrame;
+ //Frame 1
+ xTextFrame = getShape(1);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 2
+ xTextFrame = getShape(2);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x006600), getProperty<util::Color>(xTextFrame, "FillColor"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 3
+ xTextFrame = getShape(3);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x006600), getProperty<util::Color>(xTextFrame, "FillColor"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(45), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 4
+ xTextFrame = getShape(4);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x579D1C), getProperty<util::Color>(xTextFrame, "FillColor"));
+ aGradientxTextFrame = getProperty<awt::Gradient>(xTextFrame, "FillTransparenceGradient");
+ CPPUNIT_ASSERT_EQUAL(css::awt::GradientStyle_LINEAR, aGradientxTextFrame.Style);
+ //Frame 5
+ xTextFrame = getShape(5);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Subtle Tango Green"), getProperty<OUString>(xTextFrame, "FillGradientName"));
+ //Frame 6
+ xTextFrame = getShape(6);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Subtle Tango Green"), getProperty<OUString>(xTextFrame, "FillGradientName"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(45), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 7
+ xTextFrame = getShape(7);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Subtle Tango Green"), getProperty<OUString>(xTextFrame, "FillGradientName"));
+ aGradientxTextFrame = getProperty<awt::Gradient>(xTextFrame, "FillTransparenceGradient");
+ CPPUNIT_ASSERT_EQUAL(css::awt::GradientStyle_LINEAR, aGradientxTextFrame.Style);
+ //Frame 8
+ xTextFrame = getShape(8);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Black 0 Degrees"), getProperty<OUString>(xTextFrame, "FillHatchName"));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTextFrame, "FillBackground"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 9
+ xTextFrame = getShape(9);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Black 0 Degrees"), getProperty<OUString>(xTextFrame, "FillHatchName"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTextFrame, "FillBackground"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 10
+ xTextFrame = getShape(10);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Black 0 Degrees"), getProperty<OUString>(xTextFrame, "FillHatchName"));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTextFrame, "FillBackground"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(45), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 11
+ xTextFrame = getShape(11);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Black 0 Degrees"), getProperty<OUString>(xTextFrame, "FillHatchName"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTextFrame, "FillBackground"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(45), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ //Frame 12
+ xTextFrame = getShape(12);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Black 0 Degrees"), getProperty<OUString>(xTextFrame, "FillHatchName"));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTextFrame, "FillBackground"));
+ aGradientxTextFrame = getProperty<awt::Gradient>(xTextFrame, "FillTransparenceGradient");
+ CPPUNIT_ASSERT_EQUAL(css::awt::GradientStyle_LINEAR, aGradientxTextFrame.Style);
+ //Frame 13
+ xTextFrame = getShape(13);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Black 0 Degrees"), getProperty<OUString>(xTextFrame, "FillHatchName"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTextFrame, "FillBackground"));
+ aGradientxTextFrame = getProperty<awt::Gradient>(xTextFrame, "FillTransparenceGradient");
+ CPPUNIT_ASSERT_EQUAL(css::awt::GradientStyle_LINEAR, aGradientxTextFrame.Style);
+ //Frame 14
+ xTextFrame = getShape(14);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_BITMAP, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Sky"), getProperty<OUString>(xTextFrame, "FillBitmapName"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapPositionOffsetX"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapPositionOffsetY"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapOffsetX"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapOffsetY"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTextFrame, "FillBitmapTile"));
+ //Frame 15
+ xTextFrame = getShape(15);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_BITMAP, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Sky"), getProperty<OUString>(xTextFrame, "FillBitmapName"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(45), getProperty<sal_Int32>(xTextFrame, "FillTransparence"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapPositionOffsetX"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapPositionOffsetY"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapOffsetX"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapOffsetY"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTextFrame, "FillBitmapTile"));
+ //Frame 16
+ xTextFrame = getShape(16);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_BITMAP, getProperty<drawing::FillStyle>(xTextFrame, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Sky"), getProperty<OUString>(xTextFrame, "FillBitmapName"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapPositionOffsetX"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapPositionOffsetY"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapOffsetX"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xTextFrame, "FillBitmapOffsetY"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTextFrame, "FillBitmapTile"));
+ aGradientxTextFrame = getProperty<awt::Gradient>(xTextFrame, "FillTransparenceGradient");
+ CPPUNIT_ASSERT_EQUAL(css::awt::GradientStyle_LINEAR, aGradientxTextFrame.Style);
+
+ if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml"))
+ {
+ // check that there are 3 background-image elements
+ assertXPath(pXmlDoc, "//style:style[@style:parent-style-name='Frame' and @style:family='graphic']/style:graphic-properties[@draw:fill='bitmap']/style:background-image[@style:repeat='stretch']", 3);
+ // tdf#90640: check that one of them is 55% opaque
+ assertXPath(pXmlDoc, "//style:style[@style:parent-style-name='Frame' and @style:family='graphic']/style:graphic-properties[@draw:fill='bitmap' and @fo:background-color='transparent' and @draw:opacity='55%']/style:background-image[@style:repeat='stretch' and @draw:opacity='55%']", 1);
+ // tdf#90640: check that one of them is 43% opaque
+ // (emulated - hopefully not with rounding errors)
+ assertXPath(pXmlDoc, "//style:style[@style:parent-style-name='Frame' and @style:family='graphic']/style:graphic-properties[@draw:fill='bitmap' and @fo:background-color='transparent' and @draw:opacity-name='Transparency_20_1']/style:background-image[@style:repeat='stretch' and @draw:opacity='43%']", 1);
+ }
+}
+
+DECLARE_SW_ROUNDTRIP_TEST(testSHA1Correct, "sha1_correct.odt", "1012345678901234567890123456789012345678901234567890", Test)
+{ // tdf#114939 this has both an affected password as well as content.xml
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ getParagraph(1, "012");
+}
+
+DECLARE_SW_ROUNDTRIP_TEST(testSHA1Wrong, "sha1_wrong.odt", "1012345678901234567890123456789012345678901234567890", Test)
+{ // tdf#114939 this has both an affected password as well as content.xml
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ getParagraph(1, "012");
+}
+
+DECLARE_ODFEXPORT_TEST(testOOoxmlEmbedded, "oooxml_embedded.sxw")
+{
+ uno::Reference<text::XTextEmbeddedObjectsSupplier> xTEOSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xAccess(xTEOSupplier->getEmbeddedObjects());
+ uno::Sequence<OUString> aSeq(xAccess->getElementNames());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), aSeq.getLength());
+ uno::Reference<document::XEmbeddedObjectSupplier> xEOSupplier1(xAccess->getByName("Object1"), uno::UNO_QUERY);
+ uno::Reference<lang::XComponent> xObj1(xEOSupplier1->getEmbeddedObject());
+ uno::Reference<document::XEmbeddedObjectSupplier> xEOSupplier2(xAccess->getByName("Object2"), uno::UNO_QUERY);
+ uno::Reference<lang::XComponent> xObj2(xEOSupplier2->getEmbeddedObject());
+ uno::Reference<document::XEmbeddedObjectSupplier> xEOSupplier3(xAccess->getByName("Object3"), uno::UNO_QUERY);
+ uno::Reference<lang::XComponent> xObj3(xEOSupplier3->getEmbeddedObject());
+ uno::Reference<document::XEmbeddedObjectSupplier> xEOSupplier4(xAccess->getByName("Object4"), uno::UNO_QUERY);
+ uno::Reference<lang::XComponent> xObj4(xEOSupplier4->getEmbeddedObject());
+ //checking first object
+ uno::Reference<document::XStorageBasedDocument> xSBDoc1(xObj1, uno::UNO_QUERY);
+ uno::Reference<embed::XStorage> xStorage1(xSBDoc1->getDocumentStorage());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(SOFFICE_FILEFORMAT_8), comphelper::OStorageHelper::GetXStorageFormat(xStorage1));
+ //checking second object
+ uno::Reference<document::XStorageBasedDocument> xSBDoc2(xObj2, uno::UNO_QUERY);
+ uno::Reference<embed::XStorage> xStorage2(xSBDoc2->getDocumentStorage());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(SOFFICE_FILEFORMAT_8), comphelper::OStorageHelper::GetXStorageFormat(xStorage2));
+ //checking third object
+ uno::Reference<document::XStorageBasedDocument> xSBDoc3(xObj3, uno::UNO_QUERY);
+ uno::Reference<embed::XStorage> xStorage3(xSBDoc3->getDocumentStorage());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(SOFFICE_FILEFORMAT_8), comphelper::OStorageHelper::GetXStorageFormat(xStorage3));
+ //checking fourth object
+ uno::Reference<document::XStorageBasedDocument> xSBDoc4(xObj4, uno::UNO_QUERY);
+ uno::Reference<embed::XStorage> xStorage4(xSBDoc4->getDocumentStorage());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(SOFFICE_FILEFORMAT_8), comphelper::OStorageHelper::GetXStorageFormat(xStorage4));
+}
+
+DECLARE_ODFEXPORT_TEST(testredlineTextFrame, "redlineTextFrame.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(2, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ //Note this is for a crash test
+ //Counting the Number of Frames and checking with the expected count
+ uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf131621, "tdf131621.ott")
+{
+ CPPUNIT_ASSERT_EQUAL(12, getShapes());
+ //Crash test, Check number of pages
+ CPPUNIT_ASSERT_EQUAL( 1, getPages() );
+}
+
+DECLARE_ODFEXPORT_TEST(testFdo38244, "fdo38244.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // See ooxmlexport's testFdo38244().
+
+ // Test comment range feature.
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+ uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration();
+ xRunEnum->nextElement();
+ uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Annotation"), getProperty<OUString>(xPropertySet, "TextPortionType"));
+ xRunEnum->nextElement();
+ xPropertySet.set(xRunEnum->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("AnnotationEnd"), getProperty<OUString>(xPropertySet, "TextPortionType"));
+
+ // Test properties
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+ xPropertySet.set(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("__Fieldmark__4_1833023242"), getProperty<OUString>(xPropertySet, "Name"));
+ CPPUNIT_ASSERT_EQUAL(OUString("M"), getProperty<OUString>(xPropertySet, "Initials"));
+}
+
+DECLARE_ODFEXPORT_TEST(testSenderInitials, "sender-initials.fodt")
+{
+ // Test sender-initial properties (both annotation metadata and text field)
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+ // first 3 are annotations, last 2 are text fields
+ for (unsigned i = 0; i < 3; ++i)
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("I"), getProperty<OUString>(xPropertySet, "Initials"));
+ }
+ for (unsigned i = 0; i < 2; ++i)
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xPropertySet, "IsFixed"));
+ CPPUNIT_ASSERT_EQUAL(OUString("I"), getProperty<OUString>(xPropertySet, "Content"));
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testResolvedComment, "resolved-comment.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+ uno::Reference<beans::XPropertySet> xPropertySet(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xPropertySet, "Resolved"));
+ xPropertySet.set(xFields->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xPropertySet, "Resolved"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf92379, "tdf92379.fodt")
+{
+ // frame style fo:background-color was not imported
+ uno::Reference<container::XNameAccess> xStyles(getStyles("FrameStyles"));
+ uno::Reference<beans::XPropertySet> xStyle(xStyles->getByName("encarts"),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffcc99), getProperty<sal_Int32>(xStyle, "BackColorRGB"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xStyle, "BackColorTransparency"));
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, getProperty<drawing::FillStyle>(xStyle, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffcc99), getProperty<sal_Int32>(xStyle, "FillColor"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), getProperty<sal_Int16>(xStyle, "FillTransparence"));
+
+ uno::Reference<beans::XPropertySet> xFrameStyle2(xStyles->getByName("Untitled1"),
+ uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(xFrameStyle2, "BackColorRGB"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xFrameStyle2, "BackTransparent"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(100), getProperty<sal_Int32>(xFrameStyle2, "BackColorTransparency"));
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, getProperty<drawing::FillStyle>(xFrameStyle2, "FillStyle"));
+// unfortunately this is actually the pool default value, which would be hard to fix - but it isn't a problem because style is NONE
+// CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(xFrameStyle2, "FillColor"));
+// CPPUNIT_ASSERT_EQUAL(sal_Int16(100), getProperty<sal_Int16>(xFrameStyle2, "FillTransparence"));
+
+ if (xmlDocUniquePtr pXmlDoc = parseExport("styles.xml"))
+ {
+ // check that fo:background-color attribute is exported properly
+ assertXPath(pXmlDoc, "//style:style[@style:family='graphic' and @style:name='encarts']/style:graphic-properties[@fo:background-color='#ffcc99']", 1);
+ assertXPath(pXmlDoc, "//style:style[@style:family='graphic' and @style:name='Untitled1']/style:graphic-properties[@fo:background-color='transparent']", 1);
+ }
+
+ // paragraph style fo:background-color was wrongly inherited despite being
+ // overridden in derived style
+ uno::Reference<container::XNameAccess> xParaStyles(getStyles("ParagraphStyles"));
+ uno::Reference<beans::XPropertySet> xStyle1(xParaStyles->getByName(
+ "Titre Avis expert"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x661900), getProperty<sal_Int32>(xStyle1, "ParaBackColor"));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xStyle1, "ParaBackTransparent"));
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, getProperty<drawing::FillStyle>(xStyle1, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x661900), getProperty<sal_Int32>(xStyle1, "FillColor"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), getProperty<sal_Int16>(xStyle1, "FillTransparence"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(xStyle1, "CharColor"));
+
+ uno::Reference<beans::XPropertySet> xStyle2(xParaStyles->getByName(
+ "Avis expert questions"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(COL_TRANSPARENT), getProperty<sal_Int32>(xStyle2, "ParaBackColor"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xStyle2, "ParaBackTransparent"));
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, getProperty<drawing::FillStyle>(xStyle2, "FillStyle"));
+// unfortunately this is actually the pool default value, which would be hard to fix - but it isn't a problem because style is NONE
+// CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(xStyle2, "FillColor"));
+// CPPUNIT_ASSERT_EQUAL(sal_Int16(100), getProperty<sal_Int16>(xStyle2, "FillTransparence"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x661900), getProperty<sal_Int32>(xStyle2, "CharColor"));
+
+ uno::Reference<beans::XPropertySet> xStyle31(xParaStyles->getByName(
+ "avis expert questions non cadres"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x801900), getProperty<sal_Int32>(xStyle31, "ParaBackColor"));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xStyle31, "ParaBackTransparent"));
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_SOLID, getProperty<drawing::FillStyle>(xStyle31, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x801900), getProperty<sal_Int32>(xStyle31, "FillColor"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), getProperty<sal_Int16>(xStyle31, "FillTransparence"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x661900), getProperty<sal_Int32>(xStyle31, "CharColor"));
+
+ uno::Reference<beans::XPropertySet> xStyle32(xParaStyles->getByName(
+ "Avis expert rXponses"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(COL_TRANSPARENT), getProperty<sal_Int32>(xStyle32, "ParaBackColor"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xStyle32, "ParaBackTransparent"));
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_NONE, getProperty<drawing::FillStyle>(xStyle32, "FillStyle"));
+// unfortunately this is actually the pool default value, which would be hard to fix - but it isn't a problem because style is NONE
+// CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffffff), getProperty<sal_Int32>(xStyle32, "FillColor"));
+// CPPUNIT_ASSERT_EQUAL(sal_Int16(100), getProperty<sal_Int16>(xStyle32, "FillTransparence"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x461900), getProperty<sal_Int32>(xStyle32, "CharColor"));
+
+ if (xmlDocUniquePtr pXmlDoc = parseExport("styles.xml"))
+ {
+ // check that fo:background-color attribute is exported properly
+ assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='Titre Avis expert']/style:paragraph-properties[@fo:background-color='#661900']", 1);
+ assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='Avis expert questions']/style:paragraph-properties[@fo:background-color='transparent']", 1);
+ assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='avis expert questions non cadres']/style:paragraph-properties[@fo:background-color='#801900']", 1);
+ assertXPath(pXmlDoc, "//style:style[@style:family='paragraph' and @style:display-name='Avis expert rXponses']/style:paragraph-properties[@fo:background-color='transparent']", 1);
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testFdo79358, "fdo79358.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // the boolean properties of the index were not exported properly
+ uno::Reference<text::XDocumentIndexesSupplier> xIndexSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexes = xIndexSupplier->getDocumentIndexes();
+ uno::Reference<text::XDocumentIndex> xTOCIndex(xIndexes->getByIndex(0), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xTOCProps(xTOCIndex, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTOCProps, "CreateFromOutline"));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xTOCProps, "CreateFromMarks"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xTOCProps, "CreateFromLevelParagraphStyles"));
+ // check that the source styles are preserved too while at it
+ uno::Reference<container::XIndexReplace> xLevels(
+ getProperty< uno::Reference<container::XIndexReplace> >(xTOCProps,
+ "LevelParagraphStyles"));
+ uno::Sequence<OUString> seq { "Heading" };
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(seq), xLevels->getByIndex(1));
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(uno::Sequence<OUString>()), xLevels->getByIndex(2));
+}
+
+DECLARE_ODFEXPORT_TEST(testFirstHeaderFooter, "first-header-footer.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(6, getPages());
+ // Test import and export of the header-first token.
+
+ // The document has 6 pages, two page styles for the first and second half of pages.
+ CPPUNIT_ASSERT_EQUAL(OUString("First header"), parseDump("/root/page[1]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("First footer"), parseDump("/root/page[1]/footer/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Left header"), parseDump("/root/page[2]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Left footer"), parseDump("/root/page[2]/footer/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Right header"), parseDump("/root/page[3]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Right footer"), parseDump("/root/page[3]/footer/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("First header2"), parseDump("/root/page[4]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("First footer2"), parseDump("/root/page[4]/footer/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Right header2"), parseDump("/root/page[5]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Right footer2"), parseDump("/root/page[5]/footer/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Left header2"), parseDump("/root/page[6]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Left footer2"), parseDump("/root/page[6]/footer/txt/text()"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTextframeGradient, "textframe-gradient.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(2, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
+
+ uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
+ awt::Gradient aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xC0504D), aGradient.StartColor);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xD99594), aGradient.EndColor);
+ CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
+
+ xFrame.set(xIndexAccess->getByIndex(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle"));
+ aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient");
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x000000), aGradient.StartColor);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x666666), aGradient.EndColor);
+ CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style);
+}
+
+DECLARE_ODFEXPORT_TEST(testDuplicateCrossRefHeadingBookmark, "CrossRefHeadingBookmark.fodt")
+{
+ // the file contains invalid duplicate heading cross reference bookmarks
+ // but we have to round trip them, tdf#94804
+
+ uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent,
+ uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xBookmarks =
+ xBookmarksSupplier->getBookmarks();
+ uno::Reference<text::XTextContent> xBookmark1(
+ xBookmarks->getByName("__RefHeading__8284_1826734303"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xBookmark1.is());
+ CPPUNIT_ASSERT_THROW(xBookmarks->getByName("__RefHeading__1673_25705824"), container::NoSuchElementException);
+
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<util::XRefreshable>(xTextFieldsSupplier->getTextFields(), uno::UNO_QUERY_THROW)->refresh();
+
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+ uno::Any aField1 = xFields->nextElement();
+ uno::Reference<text::XTextField> xField1(aField1, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("1.1"), xField1->getPresentation(false));
+ uno::Any aField2 = xFields->nextElement();
+ uno::Reference<text::XTextField> xField2(aField2, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("1.1"), xField2->getPresentation(false));
+}
+
+DECLARE_ODFEXPORT_TEST(testFdo60769, "fdo60769.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test multi-paragraph comment range feature.
+ uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+ uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParaEnum->nextElement(), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration();
+ while (xRunEnum->hasMoreElements())
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
+ OUString aType = getProperty<OUString>(xPropertySet, "TextPortionType");
+ // First paragraph: no field end, no anchor
+ CPPUNIT_ASSERT(aType == "Text" || aType == "Annotation");
+ }
+
+ xRunEnumAccess.set(xParaEnum->nextElement(), uno::UNO_QUERY);
+ while (xRunEnum->hasMoreElements())
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(xRunEnum->nextElement(), uno::UNO_QUERY);
+ OUString aType = getProperty<OUString>(xPropertySet, "TextPortionType");
+ // Second paragraph: no field start
+ CPPUNIT_ASSERT(aType == "Text" || aType == "AnnotationEnd");
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testFdo58949, "fdo58949.docx")
+{
+ /*
+ * The problem was that the exporter didn't insert "Obj102" to the
+ * resulting zip file. No idea how to check for "broken" (missing OLE data
+ * and replacement image) OLE objects using UNO, so we'll check the zip file directly.
+ */
+
+ utl::TempFile aTempFile;
+ save("writer8", aTempFile);
+
+ uno::Sequence<uno::Any> aArgs(1);
+ aArgs[0] <<= aTempFile.GetURL();
+ uno::Reference<container::XNameAccess> xNameAccess(m_xSFactory->createInstanceWithArguments("com.sun.star.packages.zip.ZipFileAccess", aArgs), uno::UNO_QUERY);
+ const css::uno::Sequence<OUString> aNames(xNameAccess->getElementNames());
+ // The exported document must have three objects named ObjNNN. The names are assigned in
+ // OLEHandler::copyOLEOStream using a static counter, and actual numbers depend on previous
+ // tests; so just count the matching names here.
+ int nMatches = 0;
+ for (const OUString& sName : aNames)
+ {
+ OUString sRest;
+ if (sName.startsWith("Obj", &sRest))
+ {
+ // all following characters must be decimal digits; minimal value is 100
+ bool bMatch = sRest.getLength() >= 3
+ && std::all_of(sRest.getStr(), sRest.getStr() + sRest.getLength(),
+ [](sal_Unicode ch) { return ch >= '0' && ch <= '9'; });
+ if (bMatch)
+ ++nMatches;
+ }
+ }
+ CPPUNIT_ASSERT_EQUAL(3, nMatches);
+}
+
+DECLARE_ODFEXPORT_TEST(testStylePageNumber, "ooo321_stylepagenumber.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(5, getPages());
+ uno::Reference<text::XTextContent> xTable1(getParagraphOrTable(1));
+// actually no break attribute is written in this case
+// CPPUNIT_ASSERT_EQUAL(style::BreakType_PAGE_BEFORE, getProperty<style::BreakType>(xTable1, "BreakType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Left Page"), getProperty<OUString>(xTable1, "PageDescName"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), getProperty<sal_Int16>(xTable1, "PageNumberOffset"));
+
+ uno::Reference<text::XTextContent> xPara1(getParagraphOrTable(2));
+ CPPUNIT_ASSERT_EQUAL(OUString("Right Page"), getProperty<OUString>(xPara1, "PageDescName"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), getProperty<sal_Int16>(xPara1, "PageNumberOffset"));
+
+ // i#114163 tdf#77111: OOo < 3.3 bug, it wrote "auto" as "0" for tables
+ uno::Reference<beans::XPropertySet> xTable0(getParagraphOrTable(3), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Left Page"), getProperty<OUString>(xTable0, "PageDescName"));
+ CPPUNIT_ASSERT_EQUAL(uno::Any(), xTable0->getPropertyValue("PageNumberOffset"));
+
+ uno::Reference<beans::XPropertySet> xPara0(getParagraphOrTable(4), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Right Page"), getProperty<OUString>(xPara0, "PageDescName"));
+ CPPUNIT_ASSERT_EQUAL(uno::Any(), xPara0->getPropertyValue("PageNumberOffset"));
+
+ uno::Reference<container::XNameAccess> xParaStyles = getStyles("ParagraphStyles");
+ uno::Reference<beans::XPropertySet> xStyle1(xParaStyles->getByName("stylewithbreak1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Right Page"), getProperty<OUString>(xStyle1, "PageDescName"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), getProperty<sal_Int16>(xStyle1, "PageNumberOffset"));
+
+ uno::Reference<beans::XPropertySet> xStyle0(xParaStyles->getByName("stylewithbreak0"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("First Page"), getProperty<OUString>(xStyle0, "PageDescName"));
+ CPPUNIT_ASSERT_EQUAL(uno::Any(), xStyle0->getPropertyValue("PageNumberOffset"));
+}
+
+DECLARE_ODFEXPORT_TEST(testCharacterBorder, "charborder.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Make sure paragraph and character attributes don't interfere
+ // First paragraph has a paragraph border and a character border included by the paragraph style
+
+ // Paragraph border of first paragraph
+ {
+ const table::BorderLine2 aFirstParTopBorder(0x6666FF,2,26,26,7,55);
+ const sal_Int32 aFirstParTopPadding(150);
+ uno::Reference<beans::XPropertySet> xSet(getParagraph(1), uno::UNO_QUERY);
+
+ // Top border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParTopBorder, getProperty<table::BorderLine2>(xSet,"TopBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParTopPadding, getProperty<sal_Int32>(xSet,"TopBorderDistance"));
+
+ // Bottom border (same as top border)
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParTopBorder, getProperty<table::BorderLine2>(xSet,"BottomBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParTopPadding, getProperty<sal_Int32>(xSet,"BottomBorderDistance"));
+
+ // Left border (same as top border)
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParTopBorder, getProperty<table::BorderLine2>(xSet,"LeftBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParTopPadding, getProperty<sal_Int32>(xSet,"LeftBorderDistance"));
+
+ // Right border (same as top border)
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParTopBorder, getProperty<table::BorderLine2>(xSet,"RightBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParTopPadding, getProperty<sal_Int32>(xSet,"RightBorderDistance"));
+
+ // Shadow
+ const table::ShadowFormat aShadow = getProperty<table::ShadowFormat>(xSet,"ParaShadowFormat");
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aShadow.Color);
+ CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(aShadow.IsTransparent));
+ CPPUNIT_ASSERT_EQUAL(table::ShadowLocation(0), aShadow.Location);
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), aShadow.ShadowWidth);
+ }
+
+ // Character border for first paragraph
+ {
+ const table::BorderLine2 aFirstParCharTopBorder(0xFF3333,0,37,0,2,37);
+ const sal_Int32 aFirstParCharTopPadding(450);
+ uno::Reference<beans::XPropertySet> xSet(getParagraph(1), uno::UNO_QUERY);
+
+ // Top border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharTopBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharTopBorderDistance"));
+
+ // Bottom border (same as top border)
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharBottomBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharBottomBorderDistance"));
+
+ // Left border (same as top border)
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharLeftBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharLeftBorderDistance"));
+
+ // Right border (same as top border)
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharRightBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharRightBorderDistance"));
+
+ // Shadow
+ const table::ShadowFormat aShadow = getProperty<table::ShadowFormat>(xSet,"CharShadowFormat");
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xFF3333), aShadow.Color);
+ CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(aShadow.IsTransparent));
+ CPPUNIT_ASSERT_EQUAL(table::ShadowLocation(2), aShadow.Location);
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(280), aShadow.ShadowWidth);
+
+ // Check autostyle
+ {
+ uno::Reference< style::XAutoStyleFamily > xAutoStyleFamily(getAutoStyles("ParagraphStyles"));
+ uno::Reference < container::XEnumeration > xAutoStylesEnum( xAutoStyleFamily->createEnumeration() );
+ CPPUNIT_ASSERT_EQUAL(true, static_cast<bool>(xAutoStylesEnum->hasMoreElements()));
+
+ // First paragraph autostyle
+ uno::Reference < beans::XPropertySet > xPSet( xAutoStylesEnum->nextElement(), uno::UNO_QUERY );
+
+ // Top border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharTopBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharTopBorderDistance"));
+
+ // Bottom border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharBottomBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharBottomBorderDistance"));
+
+ // Left border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharLeftBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharLeftBorderDistance"));
+
+ // Right border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aFirstParCharTopBorder, getProperty<table::BorderLine2>(xSet,"CharRightBorder"));
+ CPPUNIT_ASSERT_EQUAL(aFirstParCharTopPadding, getProperty<sal_Int32>(xSet,"CharRightBorderDistance"));
+ }
+ }
+
+ // Second paragraph's second text portion has a character style named CharDiffBor
+ // This style includes border with different sides
+ {
+
+ table::BorderLine2 aBorderArray[4] =
+ {
+ table::BorderLine2(0xFF3333,0,37,0,14,37), // Top (fine dashed line)
+ table::BorderLine2(0x99FF66,26,26,53,11,106), // Bottom
+ table::BorderLine2(0x6666FF,9,26,9,12,71), // Left
+ table::BorderLine2(0,0,0,0,0,0) // Right
+ };
+
+ sal_Int32 aDistances[4] = { 400 /*Top*/, 300 /*Bottom*/, 250 /*Left*/, 0 /*Right*/ };
+
+ // Get second text portion of second paragraph
+ uno::Reference < beans::XPropertySet > xSet( getRun(getParagraph(2),2), uno::UNO_QUERY );
+
+ // Top border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[0], getProperty<table::BorderLine2>(xSet,"CharTopBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[0], getProperty<sal_Int32>(xSet,"CharTopBorderDistance"));
+
+ // Bottom border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[1], getProperty<table::BorderLine2>(xSet,"CharBottomBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[1], getProperty<sal_Int32>(xSet,"CharBottomBorderDistance"));
+
+ // Left border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[2], getProperty<table::BorderLine2>(xSet,"CharLeftBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[2], getProperty<sal_Int32>(xSet,"CharLeftBorderDistance"));
+
+ // Right border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[3], getProperty<table::BorderLine2>(xSet,"CharRightBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[3], getProperty<sal_Int32>(xSet,"CharRightBorderDistance"));
+
+ // Shadow
+ const table::ShadowFormat aShadow = getProperty<table::ShadowFormat>(xSet,"CharShadowFormat");
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), aShadow.Color);
+ CPPUNIT_ASSERT_EQUAL(false, static_cast<bool>(aShadow.IsTransparent));
+ CPPUNIT_ASSERT_EQUAL(table::ShadowLocation(3), aShadow.Location);
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(79), aShadow.ShadowWidth);
+
+ // Check character style
+ {
+ uno::Reference< container::XNameAccess > xStyleFamily = getStyles("CharacterStyles");
+ uno::Reference < beans::XPropertySet > xStyleSet(xStyleFamily->getByName("CharDiffBor"), uno::UNO_QUERY);
+
+ // Top border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[0], getProperty<table::BorderLine2>(xStyleSet,"CharTopBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[0], getProperty<sal_Int32>(xStyleSet,"CharTopBorderDistance"));
+
+ // Bottom border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[1], getProperty<table::BorderLine2>(xStyleSet,"CharBottomBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[1], getProperty<sal_Int32>(xStyleSet,"CharBottomBorderDistance"));
+
+ // Left border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[2], getProperty<table::BorderLine2>(xStyleSet,"CharLeftBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[2], getProperty<sal_Int32>(xStyleSet,"CharLeftBorderDistance"));
+
+ // Right border
+ CPPUNIT_ASSERT_BORDER_EQUAL(aBorderArray[3], getProperty<table::BorderLine2>(xStyleSet,"CharRightBorder"));
+ CPPUNIT_ASSERT_EQUAL(aDistances[3], getProperty<sal_Int32>(xStyleSet,"CharRightBorderDistance"));
+ }
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testProtectionKey, "protection-key.fodt")
+{
+ OUString const password("1012345678901234567890123456789012345678901234567890");
+
+ // check 1 invalid OOo legacy password and 3 valid ODF 1.2 passwords
+ uno::Reference<text::XTextSectionsSupplier> xTextSectionsSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xSections(xTextSectionsSupplier->getTextSections(), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xSect0(xSections->getByIndex(0), uno::UNO_QUERY);
+ uno::Sequence<sal_Int8> const key0(getProperty<uno::Sequence<sal_Int8>>(xSect0, "ProtectionKey"));
+ CPPUNIT_ASSERT(SvPasswordHelper::CompareHashPassword(key0, password));
+ uno::Reference<beans::XPropertySet> xSect1(xSections->getByIndex(1), uno::UNO_QUERY);
+ uno::Sequence<sal_Int8> const key1(getProperty<uno::Sequence<sal_Int8>>(xSect1, "ProtectionKey"));
+ CPPUNIT_ASSERT(SvPasswordHelper::CompareHashPassword(key1, password));
+ uno::Reference<beans::XPropertySet> xSect2(xSections->getByIndex(2), uno::UNO_QUERY);
+ uno::Sequence<sal_Int8> const key2(getProperty<uno::Sequence<sal_Int8>>(xSect1, "ProtectionKey"));
+ CPPUNIT_ASSERT(SvPasswordHelper::CompareHashPassword(key2, password));
+ uno::Reference<beans::XPropertySet> xSect3(xSections->getByIndex(3), uno::UNO_QUERY);
+ uno::Sequence<sal_Int8> const key3(getProperty<uno::Sequence<sal_Int8>>(xSect1, "ProtectionKey"));
+ CPPUNIT_ASSERT(SvPasswordHelper::CompareHashPassword(key3, password));
+
+ // we can't assume that the user entered the password; check that we
+ // round-trip the password as-is
+ if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml"))
+ {
+ assertXPath(pXmlDoc, "//text:section[@text:name='Section0' and @text:protected='true' and @text:protection-key='vbnhxyBKtPHCA1wB21zG1Oha8ZA=']");
+ assertXPath(pXmlDoc, "//text:section[@text:name='Section1' and @text:protected='true' and @text:protection-key='nLHas0RIwepGDaH4c2hpyIUvIS8=']");
+ assertXPath(pXmlDoc, "//text:section[@text:name='Section2' and @text:protected='true' and @text:protection-key-digest-algorithm='http://www.w3.org/2000/09/xmldsig#sha256' and @text:protection-key='1tnJohagR2T0yF/v69hLPuumSTsj32CumW97nkKGuSQ=']");
+ assertXPath(pXmlDoc, "//text:section[@text:name='Section3' and @text:protected='true' and @text:protection-key-digest-algorithm='http://www.w3.org/2000/09/xmldsig#sha256' and @text:protection-key='1tnJohagR2T0yF/v69hLPuumSTsj32CumW97nkKGuSQ=']");
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf128188, "footnote-collect-at-end-of-section.fodt")
+{
+ SwDoc *const pDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get())->GetDocShell()->GetDoc();
+ CPPUNIT_ASSERT(pDoc);
+ SwFootnoteIdxs const& rFootnotes(pDoc->GetFootnoteIdxs());
+ // Section1
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), rFootnotes[0]->GetFootnote().GetNumber());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), rFootnotes[0]->GetFootnote().GetNumberRLHidden());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(2), rFootnotes[1]->GetFootnote().GetNumber());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(2), rFootnotes[1]->GetFootnote().GetNumberRLHidden());
+ // Section2
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), rFootnotes[2]->GetFootnote().GetNumber());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), rFootnotes[2]->GetFootnote().GetNumberRLHidden());
+ // deleted
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(2), rFootnotes[3]->GetFootnote().GetNumber());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), rFootnotes[3]->GetFootnote().GetNumberRLHidden());
+ // deleted
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(3), rFootnotes[4]->GetFootnote().GetNumber());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(1), rFootnotes[4]->GetFootnote().GetNumberRLHidden());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(4), rFootnotes[5]->GetFootnote().GetNumber());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt16(2), rFootnotes[5]->GetFootnote().GetNumberRLHidden());
+}
+
+DECLARE_ODFEXPORT_TEST(testFdo43807, "fdo43807.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<beans::XPropertySet> xSet(getParagraph(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Drop Caps"),getProperty<OUString>(xSet,"DropCapCharStyleName"));
+
+ xSet.set(getParagraph(2), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("User Defined Drop Caps"),getProperty<OUString>(xSet,"DropCapCharStyleName"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf103091, "tdf103091.fodt")
+{
+ // check that all conditional paragraph style conditions are imported
+ uno::Reference<container::XNameAccess> xParaStyles(getStyles("ParagraphStyles"));
+ uno::Reference<beans::XPropertySet> xStyle1(xParaStyles->getByName(
+ "Conditional"), uno::UNO_QUERY);
+ auto conditions(getProperty<uno::Sequence<beans::NamedValue>>(xStyle1, "ParaStyleConditions"));
+
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(28), conditions.getLength());
+ CPPUNIT_ASSERT_EQUAL(OUString("TableHeader"), conditions[0].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Addressee")), conditions[0].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("Table"), conditions[1].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Bibliography 1")), conditions[1].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("Frame"), conditions[2].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Bibliography Heading")), conditions[2].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("Section"), conditions[3].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Caption")), conditions[3].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("Footnote"), conditions[4].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Salutation")), conditions[4].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("Endnote"), conditions[5].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 1")), conditions[5].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("Header"), conditions[6].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 2")), conditions[6].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("Footer"), conditions[7].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 3")), conditions[7].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel1"), conditions[8].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 4")), conditions[8].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel2"), conditions[9].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 5")), conditions[9].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel3"), conditions[10].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 6")), conditions[10].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel4"), conditions[11].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 7")), conditions[11].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel5"), conditions[12].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 8")), conditions[12].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel6"), conditions[13].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 9")), conditions[13].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel7"), conditions[14].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents 10")), conditions[14].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel8"), conditions[15].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Contents Heading")), conditions[15].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel9"), conditions[16].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Standard")), conditions[16].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("OutlineLevel10"), conditions[17].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Drawing")), conditions[17].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel1"), conditions[18].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Endnote")), conditions[18].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel2"), conditions[19].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("First line indent")), conditions[19].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel3"), conditions[20].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Footer")), conditions[20].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel4"), conditions[21].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Footer left")), conditions[21].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel5"), conditions[22].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Footer right")), conditions[22].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel6"), conditions[23].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Footnote")), conditions[23].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel7"), conditions[24].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Frame contents")), conditions[24].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel8"), conditions[25].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Hanging indent")), conditions[25].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel9"), conditions[26].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Header")), conditions[26].Value);
+ CPPUNIT_ASSERT_EQUAL(OUString("NumberingLevel10"), conditions[27].Name);
+ CPPUNIT_ASSERT_EQUAL(uno::makeAny(OUString("Header left")), conditions[27].Value);
+}
+
+DECLARE_ODFEXPORT_TEST(testTextframeTransparentShadow, "textframe-transparent-shadow.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xPicture = getShape(1);
+ // ODF stores opacity of 75%, that means 25% transparency.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(25), getProperty<sal_Int32>(xPicture, "ShadowTransparence"));
+}
+
+DECLARE_ODFEXPORT_TEST(testRelhPage, "relh-page.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xTextFrame = getShape(1);
+ // This was text::RelOrientation::FRAME (the default), RelativeHeightRelation was not handled in xmloff.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeHeightRelation"));
+ // Make sure rel-height-rel doesn't affect width.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeWidthRelation"));
+
+ // This was 2601, 20% height was relative from margin, not page.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3168), parseDump("/root/page/body/txt/anchored/fly/infos/bounds", "height").toInt32());
+}
+
+DECLARE_ODFEXPORT_TEST(testRelhPageTdf80282, "relh-page-tdf80282.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xTextFrame = getShape(1);
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Height", sal_Int32(8391), parseDump("//anchored/fly/infos/bounds", "height").toInt32());
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Width", sal_Int32(5953), parseDump("//anchored/fly/infos/bounds", "width").toInt32());
+}
+
+DECLARE_ODFEXPORT_TEST(testRelwPage, "relw-page.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xTextFrame = getShape(1);
+ // This was text::RelOrientation::FRAME (the default), RelativeWidthRelation was not handled in xmloff.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeWidthRelation"));
+ // Make sure rel-width-rel doesn't affect height.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xTextFrame, "RelativeHeightRelation"));
+
+ // This was 3762, 40% width was relative from margin, not page.
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4896), parseDump("/root/page/body/txt/anchored/fly/infos/bounds", "width").toInt32());
+}
+
+DECLARE_ODFEXPORT_TEST(testTextFrameVertAdjust, "textframe-vertadjust.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(3, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test import/export of new frame attribute called TextVerticalAdjust
+
+ // 1st frame's context is adjusted to the top
+ uno::Reference<beans::XPropertySet> xFrame(getTextFrameByName("Rectangle 1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+ // 2nd frame's context is adjusted to the center
+ xFrame.set(getTextFrameByName("Rectangle 2"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_CENTER, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+ // 3rd frame's context is adjusted to the bottom
+ xFrame.set(getTextFrameByName("Rectangle 3"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf111891_frameVertStyle, "tdf111891_frameVertStyle.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<beans::XPropertySet> xFrame(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+}
+
+DECLARE_ODFEXPORT_TEST(testShapeRelsize, "shape-relsize.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // These were all 0, as style:rel-width/height was ignored on import for shapes.
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(40), getProperty<sal_Int16>(xShape, "RelativeWidth"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(20), getProperty<sal_Int16>(xShape, "RelativeHeight"));
+
+ // Relation was "page" for both width and height, should be "paragraph" for width.
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::FRAME, getProperty<sal_Int16>(xShape, "RelativeWidthRelation"));
+ // And make sure that height stays "page".
+ CPPUNIT_ASSERT_EQUAL(text::RelOrientation::PAGE_FRAME, getProperty<sal_Int16>(xShape, "RelativeHeightRelation"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTextboxRoundedCorners, "textbox-rounded-corners.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ comphelper::SequenceAsHashMap aCustomShapeGeometry(getProperty< uno::Sequence<beans::PropertyValue> >(xShape, "CustomShapeGeometry"));
+
+ // Test that the shape is a rounded rectangle.
+ CPPUNIT_ASSERT_EQUAL(OUString("round-rectangle"), aCustomShapeGeometry["Type"].get<OUString>());
+
+ // The shape text should start with a table, with "a" in its A1 cell.
+ uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY_THROW)->getText();
+ uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1, xText), uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xCell(xTable->getCellByName("A1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("a"), xCell->getString());
+
+ // Table inside a textbox should be in the extension namespace.
+ if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml"))
+ // This failed, as draw:custom-shape had a table:table child.
+ assertXPath(pXmlDoc, "//draw:custom-shape/loext:table", "name", "Table1");
+}
+
+// test that import whitespace collapsing is compatible with old docs
+DECLARE_ODFEXPORT_TEST(testWhitespace, "whitespace.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(4, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<container::XEnumerationAccess> xPara;
+ uno::Reference<container::XEnumeration> xPortions;
+ uno::Reference<text::XTextRange> xPortion;
+ xPara.set(getParagraphOrTable(1), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(2), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ CPPUNIT_ASSERT_EQUAL(OUString("http://example.com/"), getProperty<OUString>(xPortion, "HyperLinkURL"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(3), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Ruby"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(), xPortion->getString());
+ CPPUNIT_ASSERT_EQUAL(OUString("foo"), getProperty<OUString>(xPortion, "RubyText"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Ruby"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(4), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("InContentMetadata"), getProperty<OUString>(xPortion, "TextPortionType"));
+ {
+ // what a stupid idea to require recursively enumerating this
+ uno::Reference<container::XEnumerationAccess> xMeta(
+ getProperty<uno::Reference<text::XTextContent>>(xPortion, "InContentMetadata"), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xMetaPortions =
+ xMeta->createEnumeration();
+ uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xMP, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xMP->getString());
+ CPPUNIT_ASSERT(!xMetaPortions->hasMoreElements());
+ }
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(5), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("TextField"), getProperty<OUString>(xPortion, "TextPortionType"));
+ {
+ // what a stupid idea to require recursively enumerating this
+ uno::Reference<container::XEnumerationAccess> xMeta(
+ getProperty<uno::Reference<text::XTextContent>>(xPortion, "TextField"), uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xMetaPortions =
+ xMeta->createEnumeration();
+ uno::Reference<text::XTextRange> xMP(xMetaPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xMP, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xMP->getString());
+ CPPUNIT_ASSERT(!xMetaPortions->hasMoreElements());
+ }
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(7), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Frame"), getProperty<OUString>(xPortion, "TextPortionType"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(8), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Frame"), getProperty<OUString>(xPortion, "TextPortionType"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(9), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Frame"), getProperty<OUString>(xPortion, "TextPortionType"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(10), uno::UNO_QUERY);
+ uno::Reference<container::XContentEnumerationAccess> xCEA(xPara, uno::UNO_QUERY);
+ uno::Reference<container::XEnumeration> xFrames(
+ xCEA->createContentEnumeration("com.sun.star.text.TextContent"));
+ xFrames->nextElement(); // one at-paragraph frame
+ CPPUNIT_ASSERT(!xFrames->hasMoreElements());
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(11), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Footnote"), getProperty<OUString>(xPortion, "TextPortionType"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(12), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("TextField"), getProperty<OUString>(xPortion, "TextPortionType"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(13), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Annotation"), getProperty<OUString>(xPortion, "TextPortionType"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("AnnotationEnd"), getProperty<OUString>(xPortion, "TextPortionType"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(15), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Bookmark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(16), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Bookmark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Bookmark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(17), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Redline"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Redline"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(18), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Redline"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Redline"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(19), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("ReferenceMark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(20), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("ReferenceMark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("ReferenceMark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(21), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("DocumentIndexMark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+
+ xPara.set(getParagraphOrTable(22), uno::UNO_QUERY);
+ xPortions.set(xPara->createEnumeration());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString("X "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("DocumentIndexMark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" "), xPortion->getString());
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("DocumentIndexMark"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT(!getProperty<bool>(xPortion, "IsCollapsed"));
+ xPortion.set(xPortions->nextElement(), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("Text"), getProperty<OUString>(xPortion, "TextPortionType"));
+ CPPUNIT_ASSERT_EQUAL(OUString(" X"), xPortion->getString());
+ CPPUNIT_ASSERT(!xPortions->hasMoreElements());
+}
+
+DECLARE_ODFEXPORT_TEST(testBtlrCell, "btlr-cell.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Without the accompanying fix in place, this test would have failed, as
+ // the btlr text direction in the A1 cell was lost on ODF import and
+ // export.
+ uno::Reference<text::XTextTablesSupplier> xSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xTables = xSupplier->getTextTables();
+ uno::Reference<text::XTextTable> xTable(xTables->getByName("Table1"), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xA1(xTable->getCellByName("A1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, getProperty<sal_Int16>(xA1, "WritingMode"));
+
+ uno::Reference<beans::XPropertySet> xB1(xTable->getCellByName("B1"), uno::UNO_QUERY);
+ auto nActual = getProperty<sal_Int16>(xB1, "WritingMode");
+ CPPUNIT_ASSERT(nActual == text::WritingMode2::LR_TB || nActual == text::WritingMode2::CONTEXT);
+
+ uno::Reference<beans::XPropertySet> xC1(xTable->getCellByName("C1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::TB_RL, getProperty<sal_Int16>(xC1, "WritingMode"));
+}
+
+DECLARE_ODFEXPORT_TEST(testBtlrFrame, "btlr-frame.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Without the accompanying fix in place, this test would have failed, as
+ // the btlr text direction in the text frame was lost on ODF import and
+ // export.
+ uno::Reference<beans::XPropertySet> xTextFrame(getShape(1), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xTextFrame.is());
+
+ auto nActual = getProperty<sal_Int16>(xTextFrame, "WritingMode");
+ CPPUNIT_ASSERT_EQUAL(text::WritingMode2::BT_LR, nActual);
+
+ // Without the accompanying fix in place, this test would have failed, as the fly frame had
+ // mbVertical==true, but mbVertLRBT==false, even if the writing direction in the doc model was
+ // btlr.
+ SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument *>(mxComponent.get());
+ CPPUNIT_ASSERT(pTextDoc);
+
+ SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
+ CPPUNIT_ASSERT(pDoc);
+
+ SwRootFrame* pLayout = pDoc->getIDocumentLayoutAccess().GetCurrentLayout();
+ CPPUNIT_ASSERT(pLayout);
+
+ SwFrame* pPageFrame = pLayout->GetLower();
+ CPPUNIT_ASSERT(pPageFrame);
+ CPPUNIT_ASSERT(pPageFrame->IsPageFrame());
+
+ SwFrame* pBodyFrame = pPageFrame->GetLower();
+ CPPUNIT_ASSERT(pBodyFrame);
+ CPPUNIT_ASSERT(pBodyFrame->IsBodyFrame());
+
+ SwFrame* pBodyTextFrame = pBodyFrame->GetLower();
+ CPPUNIT_ASSERT(pBodyTextFrame);
+ CPPUNIT_ASSERT(pBodyTextFrame->IsTextFrame());
+
+ CPPUNIT_ASSERT(pBodyTextFrame->GetDrawObjs());
+ const SwSortedObjs& rAnchored = *pBodyTextFrame->GetDrawObjs();
+ CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rAnchored.size());
+
+ auto* pFlyFrame = dynamic_cast<SwFlyFrame*>(rAnchored[0]);
+ CPPUNIT_ASSERT(pFlyFrame);
+ CPPUNIT_ASSERT(pFlyFrame->IsVertLRBT());
+
+ if (!mbExported)
+ // Not yet exported, don't modify the doc model for test purposes.
+ return;
+
+ // Make sure that btlr -> tbrl transition clears the "BT" flag.
+ xTextFrame->setPropertyValue("WritingMode", uno::makeAny(text::WritingMode2::TB_LR));
+ pFlyFrame = dynamic_cast<SwFlyFrame*>(rAnchored[0]);
+ CPPUNIT_ASSERT(pFlyFrame);
+ CPPUNIT_ASSERT(!pFlyFrame->IsVertLRBT());
+}
+
+DECLARE_ODFEXPORT_TEST(testFdo86963, "fdo86963.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Export of this document failed with beans::UnknownPropertyException.
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+}
+
+// Check for correct header/footer with special first page with TOC inside:
+// - DECLARE_ODFEXPORT_TEST(testTdf118393, "tdf118393.odt")
+// - DECLARE_OOXMLEXPORT_TEST(testTdf118393, "tdf118393.odt")
+DECLARE_ODFEXPORT_TEST(testTdf118393, "tdf118393.odt")
+{
+ CPPUNIT_ASSERT_EQUAL( 7, getPages() );
+
+ // First page has no header/footer
+ {
+ xmlDocUniquePtr pXmlDoc = parseLayoutDump();
+
+ // check first page
+ xmlXPathObjectPtr pXmlPage1Header = getXPathNode(pXmlDoc, "/root/page[1]/header");
+ CPPUNIT_ASSERT_EQUAL(0, xmlXPathNodeSetGetLength(pXmlPage1Header->nodesetval));
+
+ xmlXPathObjectPtr pXmlPage1Footer = getXPathNode(pXmlDoc, "/root/page[1]/footer");
+ CPPUNIT_ASSERT_EQUAL(0, xmlXPathNodeSetGetLength(pXmlPage1Footer->nodesetval));
+
+ // check second page in the same way
+ xmlXPathObjectPtr pXmlPage2Header = getXPathNode(pXmlDoc, "/root/page[2]/header");
+ CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlPage2Header->nodesetval));
+
+ xmlXPathObjectPtr pXmlPage2Footer = getXPathNode(pXmlDoc, "/root/page[2]/footer");
+ CPPUNIT_ASSERT_EQUAL(1, xmlXPathNodeSetGetLength(pXmlPage2Footer->nodesetval));
+ }
+
+ // All other pages should have header/footer
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[2]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[2]/footer/txt/text()"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[3]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[3]/footer/txt/text()"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[4]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[4]/footer/txt/text()"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[5]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[5]/footer/txt/text()"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[6]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[6]/footer/txt/text()"));
+
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[7]/header/txt/text()"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Seite * von *"), parseDump("/root/page[7]/footer/txt/text()"));
+}
+
+DECLARE_ODFEXPORT_TEST(testGerrit13858, "gerrit13858.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Just make sure the output is valid.
+}
+DECLARE_ODFEXPORT_TEST(testOdtBorderTypes, "border_types.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ static const sal_Int32 lineStyles[] = { 0, 1, 2, 14, 16, 17, 3, 15 };
+ uno::Reference<text::XTextDocument> textDocument(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XEnumerationAccess> xParaEnumAccess(textDocument->getText(), uno::UNO_QUERY);
+ // list of paragraphs
+ uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+ do
+ {
+ uno::Reference<lang::XServiceInfo> xServiceInfo;
+ if (xParaEnum->nextElement() >>= xServiceInfo)
+ {
+ if (xServiceInfo->supportsService("com.sun.star.text.TextTable"))
+ {
+ uno::Reference<table::XCellRange> const xCellRange(xServiceInfo, uno::UNO_QUERY_THROW);
+
+ for (sal_Int32 row = 0; row < 15; row += 2)
+ {
+ uno::Reference<table::XCell> xCell = xCellRange->getCellByPosition(1, row);
+ uno::Reference< beans::XPropertySet > xPropSet(xCell, uno::UNO_QUERY_THROW);
+
+ uno::Any aTopBorder = xPropSet->getPropertyValue("TopBorder");
+ table::BorderLine2 aTopBorderLine;
+ if (aTopBorder >>= aTopBorderLine)
+ {
+ sal_Int32 lineStyle = aTopBorderLine.LineStyle;
+ CPPUNIT_ASSERT_EQUAL(lineStyles[row / 2], lineStyle);
+ }
+ } //end of the 'for' loop
+ }
+ }
+ } while (xParaEnum->hasMoreElements());
+}
+
+DECLARE_ODFEXPORT_TEST(testMasterPageWithDrawingPage, "sw_hatch.odt")
+{
+ uno::Reference<container::XNameAccess> xStyles(getStyles("PageStyles"));
+ uno::Reference<beans::XPropertySet> xStyle(xStyles->getByName("Standard"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_HATCH, getProperty<drawing::FillStyle>(xStyle, "FillStyle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Blue -45 Degrees"), getProperty<OUString>(xStyle, "FillHatchName"));
+ CPPUNIT_ASSERT(!getProperty<sal_Bool>(xStyle, "FillBackground"));
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), getProperty<sal_Int16>(xStyle, "FillTransparence"));
+}
+
+DECLARE_ODFEXPORT_TEST(testCellUserDefineAttr, "userdefattr-tablecell.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<text::XTextTable> xTable(getParagraphOrTable(1), uno::UNO_QUERY);
+ uno::Reference<table::XCell> const xCellA1(xTable->getCellByName("A1"), uno::UNO_SET_THROW);
+ uno::Reference<table::XCell> const xCellB1(xTable->getCellByName("B1"), uno::UNO_SET_THROW);
+ uno::Reference<table::XCell> const xCellC1(xTable->getCellByName("C1"), uno::UNO_SET_THROW);
+ getUserDefineAttribute(uno::makeAny(xCellA1), "proName", "v1");
+ getUserDefineAttribute(uno::makeAny(xCellB1), "proName", "v2");
+ getUserDefineAttribute(uno::makeAny(xCellC1), "proName", "v3");
+}
+
+#if HAVE_FEATURE_PDFIUM
+DECLARE_ODFEXPORT_TEST(testEmbeddedPdf, "embedded-pdf.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // This failed, pdf+png replacement graphics pair didn't survive an ODT roundtrip.
+ auto xReplacementGraphic = getProperty<uno::Reference<graphic::XGraphic>>(xShape, "ReplacementGraphic");
+ CPPUNIT_ASSERT(xReplacementGraphic.is());
+
+ auto xGraphic = getProperty<uno::Reference<graphic::XGraphic>>(xShape, "Graphic");
+ CPPUNIT_ASSERT(xGraphic.is());
+ // This was image/x-vclgraphic, not exposing the info that the image is a PDF one.
+ CPPUNIT_ASSERT_EQUAL(OUString("application/pdf"), getProperty<OUString>(xGraphic, "MimeType"));
+
+ if (mbExported)
+ {
+ uno::Sequence<uno::Any> aArgs(1);
+ aArgs[0] <<= maTempFile.GetURL();
+ uno::Reference<container::XNameAccess> xNameAccess(m_xSFactory->createInstanceWithArguments("com.sun.star.packages.zip.ZipFileAccess", aArgs), uno::UNO_QUERY);
+ bool bHasBitmap = false;
+ const uno::Sequence<OUString> aNames = xNameAccess->getElementNames();
+ for (const auto& rElementName : aNames)
+ {
+ if (rElementName.startsWith("Pictures") && rElementName.endsWith("png"))
+ {
+ bHasBitmap = true;
+ break;
+ }
+ }
+ // This failed, replacement was an svm file.
+ CPPUNIT_ASSERT(bHasBitmap);
+ }
+}
+#endif
+
+DECLARE_ODFEXPORT_TEST(testTableStyles1, "table_styles_1.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Table styles basic graphic test.
+ // Doesn't cover all attributes.
+ uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
+ uno::Reference<container::XNameAccess> xCellFamily(xFamilies->getByName("CellStyles"), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xCell1Style;
+ xCellFamily->getByName("Test style.1") >>= xCell1Style;
+
+ sal_Int64 nInt64 = 0xF0F0F0;
+ sal_Int32 nInt32 = 0xF0F0F0;
+ table::BorderLine2 oBorder;
+
+ xCell1Style->getPropertyValue("BackColor") >>= nInt64;
+ CPPUNIT_ASSERT_EQUAL(sal_Int64(0xCC0000), nInt64);
+ xCell1Style->getPropertyValue("WritingMode") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(4), nInt32);
+ xCell1Style->getPropertyValue("VertOrient") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ xCell1Style->getPropertyValue("BorderDistance") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue("LeftBorderDistance") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue("RightBorderDistance") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue("TopBorderDistance") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue("BottomBorderDistance") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(97), nInt32);
+ xCell1Style->getPropertyValue("RightBorder") >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), oBorder.Color);
+ xCell1Style->getPropertyValue("LeftBorder") >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), oBorder.Color);
+ xCell1Style->getPropertyValue("TopBorder") >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), oBorder.Color);
+ xCell1Style->getPropertyValue("BottomBorder") >>= oBorder;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), oBorder.Color);
+}
+
+DECLARE_ODFEXPORT_TEST(testTableStyles2, "table_styles_2.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Table styles paragraph and char tests
+ // Doesn't cover all attributes.
+ // Problem: underline for table autoformat doesn't work.
+ uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
+ uno::Reference<container::XNameAccess> xTableFamily(xFamilies->getByName("TableStyles"), uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xTableStyle(xTableFamily->getByName("Test style2"), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xCell1Style;
+
+ float fFloat = 0.;
+ bool bBool = true;
+ sal_Int16 nInt16 = 0xF0;
+ sal_Int32 nInt32 = 0xF0F0F0;
+ sal_Int64 nInt64 = 0xF0F0F0;
+ OUString sString;
+ awt::FontSlant eCharPosture;
+
+ // cell 1
+ xTableStyle->getByName("first-row-start-column") >>= xCell1Style;
+ xCell1Style->getPropertyValue("ParaAdjust") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ xCell1Style->getPropertyValue("CharColor") >>= nInt64;
+ CPPUNIT_ASSERT_EQUAL(sal_Int64(0xFF6600), nInt64);
+ xCell1Style->getPropertyValue("CharContoured") >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(false, bBool);
+ xCell1Style->getPropertyValue("CharShadowed") >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue("CharStrikeout") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nInt32);
+ xCell1Style->getPropertyValue("CharUnderline") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ // underline color is not working for table autoformats
+ // xCell1Style->getPropertyValue("CharUnderlineHasColor") >>= bBool;
+ // CPPUNIT_ASSERT_EQUAL(bool(false), bBool);
+ // xCell1Style->getPropertyValue("CharUnderlineColor") >>= nInt64;
+ // CPPUNIT_ASSERT_EQUAL(sal_Int64(-1), nInt64);
+ // standard font
+ xCell1Style->getPropertyValue("CharHeight") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
+ xCell1Style->getPropertyValue("CharWeight") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue("CharPosture") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontName") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Courier"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleName") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString(), sString);
+ xCell1Style->getPropertyValue("CharFontFamily") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitch") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
+ // cjk font
+ xCell1Style->getPropertyValue("CharHeightAsian") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
+ xCell1Style->getPropertyValue("CharWeightAsian") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue("CharPostureAsian") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontNameAsian") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Courier"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleNameAsian") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Regularna"), sString);
+ xCell1Style->getPropertyValue("CharFontFamilyAsian") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitchAsian") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
+ // ctl font
+ xCell1Style->getPropertyValue("CharHeightComplex") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(18.), fFloat);
+ xCell1Style->getPropertyValue("CharWeightComplex") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue("CharPostureComplex") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontNameComplex") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Courier"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleNameComplex") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Regularna"), sString);
+ xCell1Style->getPropertyValue("CharFontFamilyComplex") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitchComplex") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(1), nInt16);
+
+ // cell 2
+ xTableStyle->getByName("first-row") >>= xCell1Style;
+ xCell1Style->getPropertyValue("ParaAdjust") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(3), nInt32);
+ xCell1Style->getPropertyValue("CharColor") >>= nInt64;
+ CPPUNIT_ASSERT_EQUAL(sal_Int64(0x9900FF), nInt64);
+ xCell1Style->getPropertyValue("CharContoured") >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue("CharShadowed") >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(false, bBool);
+ xCell1Style->getPropertyValue("CharStrikeout") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ xCell1Style->getPropertyValue("CharUnderline") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(2), nInt32);
+ // underline color test place
+ // standard font
+ xCell1Style->getPropertyValue("CharHeight") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue("CharWeight") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
+ xCell1Style->getPropertyValue("CharPosture") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontName") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Liberation Serif"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleName") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString(), sString);
+ xCell1Style->getPropertyValue("CharFontFamily") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitch") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // cjk font
+ xCell1Style->getPropertyValue("CharHeightAsian") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue("CharWeightAsian") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
+ xCell1Style->getPropertyValue("CharPostureAsian") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontNameAsian") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Liberation Serif"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleNameAsian") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Pogrubiona"), sString);
+ xCell1Style->getPropertyValue("CharFontFamilyAsian") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitchAsian") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // ctl font
+ xCell1Style->getPropertyValue("CharHeightComplex") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue("CharWeightComplex") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(150.), fFloat);
+ xCell1Style->getPropertyValue("CharPostureComplex") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_NONE, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontNameComplex") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Liberation Serif"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleNameComplex") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Pogrubiona"), sString);
+ xCell1Style->getPropertyValue("CharFontFamilyComplex") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(3), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitchComplex") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+
+ // cell 3
+ xTableStyle->getByName("first-row-even-column") >>= xCell1Style;
+ xCell1Style->getPropertyValue("ParaAdjust") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(1), nInt32);
+ xCell1Style->getPropertyValue("CharColor") >>= nInt64;
+ CPPUNIT_ASSERT_EQUAL(sal_Int64(0), nInt64);
+ xCell1Style->getPropertyValue("CharContoured") >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue("CharShadowed") >>= bBool;
+ CPPUNIT_ASSERT_EQUAL(true, bBool);
+ xCell1Style->getPropertyValue("CharStrikeout") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0), nInt32);
+ xCell1Style->getPropertyValue("CharUnderline") >>= nInt32;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(6), nInt32);
+ // underline color test place
+ // standard font
+ xCell1Style->getPropertyValue("CharHeight") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue("CharWeight") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue("CharPosture") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontName") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Open Sans"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleName") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString(), sString);
+ xCell1Style->getPropertyValue("CharFontFamily") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitch") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // cjk font
+ xCell1Style->getPropertyValue("CharHeightAsian") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue("CharWeightAsian") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue("CharPostureAsian") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontNameAsian") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Open Sans"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleNameAsian") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Kursywa"), sString);
+ xCell1Style->getPropertyValue("CharFontFamilyAsian") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitchAsian") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+ // ctl font
+ xCell1Style->getPropertyValue("CharHeightComplex") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(12.), fFloat);
+ xCell1Style->getPropertyValue("CharWeightComplex") >>= fFloat;
+ CPPUNIT_ASSERT_EQUAL(float(100.), fFloat);
+ xCell1Style->getPropertyValue("CharPostureComplex") >>= eCharPosture;
+ CPPUNIT_ASSERT_EQUAL(awt::FontSlant_ITALIC, eCharPosture);
+ xCell1Style->getPropertyValue("CharFontNameComplex") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Open Sans"), sString);
+ xCell1Style->getPropertyValue("CharFontStyleNameComplex") >>= sString;
+ CPPUNIT_ASSERT_EQUAL(OUString("Kursywa"), sString);
+ xCell1Style->getPropertyValue("CharFontFamilyComplex") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(0), nInt16);
+ xCell1Style->getPropertyValue("CharFontPitchComplex") >>= nInt16;
+ CPPUNIT_ASSERT_EQUAL(sal_Int16(2), nInt16);
+}
+
+DECLARE_ODFEXPORT_TEST(testTableStyles3, "table_styles_3.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // This test checks if default valued attributes aren't exported.
+ xmlDocUniquePtr pXmlDoc = parseExport("styles.xml");
+ if (!pXmlDoc)
+ return;
+
+ // <style:paragraph-properties>
+ // For this element the only exported attributes are: "border-left", "border-bottom"
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "background-color");
+ // border-left place
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "border-right");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "border-top");
+ // border-bottom place
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-left");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-right");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-top");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "padding-bottom");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:table-cell-properties", "writing-mode");
+
+ // <style:paragraph-properties> should be absent, because it has only "text-align" attribute, which shouldn't be exported.
+ // Assume that style:paragraph-properties and style:text-properties exists.
+ assertXPathChildren(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']", 2);
+
+ // <style:text-properties>
+ // For this element the only exported attributes are: "use-window-font-color place", "font-size-asian", "font-name-asian", "font-family-asian", "font-name-complex", "font-family-complex"
+ // use-window-font-color place
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-shadow");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-outline");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-line-through-style");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-line-through-type");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-underline-style");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "text-underline-color");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-size");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-weight");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family-generic");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-pitch");
+ // font-size-asian place
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-weight-asian");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-asian");
+ // font-name-asian place
+ // font-family-asian place
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-name-asian");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family-generic-asian");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-pitch-asian");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-size-complex");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-weight-complex");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-complex");
+ // font-name-complex place
+ // font-family-complex place
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-style-name-complex");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-family-generic-complex");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style3.2']/style:text-properties", "font-pitch-complex");
+
+}
+
+DECLARE_ODFIMPORT_TEST(testTableStyles4, "table_styles_4.odt")
+{
+ // Test if loaded styles overwrite existing styles
+ uno::Reference<style::XStyleFamiliesSupplier> XFamiliesSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xFamilies(XFamiliesSupplier->getStyleFamilies());
+ uno::Reference<container::XNameAccess> xTableFamily(xFamilies->getByName("TableStyles"), uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xTableStyle(xTableFamily->getByName("Green"), uno::UNO_QUERY);
+ uno::Reference<beans::XPropertySet> xCell1Style;
+
+ xTableStyle->getByName("first-row-start-column") >>= xCell1Style;
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0x00ff00), getProperty<sal_Int32>(xCell1Style, "BackColor"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTableStyles5, "table_styles_5.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test if cell styles doesn't have a style:parent-style-name attribute.
+ xmlDocUniquePtr pXmlDoc = parseExport("styles.xml");
+ if (!pXmlDoc)
+ return;
+
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.1']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.2']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.3']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.4']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.5']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.6']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.7']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.8']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.9']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.10']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.11']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.12']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.13']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.14']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.15']", "parent-style-name");
+ assertXPathNoAttribute(pXmlDoc, "/office:document-styles/office:styles/style:style[@style:display-name='Test style.16']", "parent-style-name");
+
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf101710, "tdf101710.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test that number format of cell styles can be imported and exported.
+ uno::Reference<beans::XPropertySet> xStyle(getStyles("CellStyles")->getByName("Test Style.11"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(sal_uInt32(10104), getProperty<sal_uInt32>(xStyle, "NumberFormat"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf129568, "tdf129568.fodt")
+{
+ // Test that export doesn't fail, and that style is imported and in use.
+ uno::Reference<style::XStyle> xStyle(getStyles("CellStyles")->getByName("Default Style.1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xStyle->isInUse());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffff00), getProperty<sal_Int32>(xStyle, "BackColor"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf129568ui, "tdf129568-ui.fodt")
+{
+ // Same as above, but styles referenced by UI name.
+ uno::Reference<style::XStyle> xStyle(getStyles("CellStyles")->getByName("Default Style.1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT(xStyle->isInUse());
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(0xffff00), getProperty<sal_Int32>(xStyle, "BackColor"));
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf132642_keepWithNextTable, "tdf132642_keepWithNextTable.odt")
+{
+ // Since the row is very big, it should split over two pages.
+ // Since up to this point we haven't tried to make it match MS formats, it should start on page 1.
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Row splits over 2 pages", 2, getPages());
+}
+
+DECLARE_ODFEXPORT_TEST(testImageMimetype, "image-mimetype.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // Test that the loext:mimetype attribute is written for exported images, tdf#109202
+ if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml"))
+ {
+ // Original image (svg)
+ assertXPath(pXmlDoc, "/office:document-content/office:body/office:text/text:p/draw:frame/draw:image[@draw:mime-type='image/svg+xml']");
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testEmbeddedFontProps, "embedded-font-props.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+#if !defined(MACOSX)
+ // Test that font style/weight of embedded fonts is exposed.
+ // Test file is a normal ODT, except EmbedFonts is set to true in settings.xml.
+ if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml"))
+ {
+ // These failed, the attributes were missing.
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[1]", "font-style", "normal");
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[1]", "font-weight", "normal");
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[2]", "font-style", "normal");
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[2]", "font-weight", "bold");
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[3]", "font-style", "italic");
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[3]", "font-weight", "normal");
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[4]", "font-style", "italic");
+ assertXPath(pXmlDoc, "//style:font-face[@style:name='Liberation Serif']/svg:font-face-src/svg:font-face-uri[4]", "font-weight", "bold");
+ }
+#endif
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf100492, "tdf100492.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(2, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ CPPUNIT_ASSERT(xShape.is());
+
+ // Save the first shape to a SVG
+ uno::Reference<drawing::XGraphicExportFilter> xGraphicExporter = drawing::GraphicExportFilter::create(comphelper::getProcessComponentContext());
+ uno::Reference<lang::XComponent> xSourceDoc(xShape, uno::UNO_QUERY);
+ xGraphicExporter->setSourceDocument(xSourceDoc);
+
+ SvMemoryStream aStream;
+ uno::Reference<io::XOutputStream> xOutputStream(new utl::OStreamWrapper(aStream));
+ uno::Sequence<beans::PropertyValue> aDescriptor( comphelper::InitPropertySequence({
+ { "OutputStream", uno::Any(xOutputStream) },
+ { "FilterName", uno::Any(OUString("SVG")) }
+ }));
+ xGraphicExporter->filter(aDescriptor);
+ aStream.Seek(STREAM_SEEK_TO_BEGIN);
+
+ // TODO: Disabled. Parsing of SVG gives just root node without any children.
+ // Reason of such behavior unclear. So XPATH assert fails.
+
+ // Parse resulting SVG as XML file.
+ // xmlDocUniquePtr pXmlDoc = parseXmlStream(&aStream);
+
+ // Check amount of paths required to draw an arrow.
+ // Since there are still some empty paths in output test can fail later. There are just two
+ // really used and visible paths.
+ //assertXPath(pXmlDoc, "/svg/path", 4);
+}
+
+DECLARE_ODFEXPORT_TEST(testTdf77961, "tdf77961.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<container::XNameAccess> xStyles(getStyles("PageStyles"));
+ uno::Reference<beans::XPropertySet> xStyle(xStyles->getByName("Standard"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL( false , getProperty<bool>(xStyle, "GridDisplay"));
+ CPPUNIT_ASSERT_EQUAL( false , getProperty<bool>(xStyle, "GridPrint"));
+}
+
+DECLARE_ODFEXPORT_TEST(testReferenceLanguage, "referencelanguage.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(2, getPages());
+ // Test loext:reference-language attribute of reference fields
+ // (used from LibreOffice 6.1, and proposed for next ODF)
+ const char* aFieldTexts[] = { "A 2", "Az Isten", "Az 50-esek",
+ "A 2018-asok", "Az egyebek", "A fejezetek",
+ reinterpret_cast<char const *>(u8"Az „Őseinket...”"), "a 2",
+ "Az v", "az 1", "Az e", "az 1",
+ "Az (5)", "az 1", "A 2", "az 1" };
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ // update "A (4)" to "Az (5)"
+ uno::Reference<util::XRefreshable>(xTextFieldsSupplier->getTextFields(), uno::UNO_QUERY_THROW)->refresh();
+
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+
+ uno::Any aHu = uno::makeAny(OUString("Hu"));
+ uno::Any ahu = uno::makeAny(OUString("hu"));
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aFieldTexts); i++)
+ {
+ uno::Any aField = xFields->nextElement();
+ uno::Reference<lang::XServiceInfo> xServiceInfo(aField, uno::UNO_QUERY);
+ if (xServiceInfo->supportsService("com.sun.star.text.textfield.GetReference"))
+ {
+ uno::Reference<beans::XPropertySet> xPropertySet(aField, uno::UNO_QUERY);
+ uno::Any aLang = xPropertySet->getPropertyValue("ReferenceFieldLanguage");
+ CPPUNIT_ASSERT_EQUAL(true, aLang == aHu || aLang == ahu);
+ uno::Reference<text::XTextContent> xField(aField, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString::fromUtf8(aFieldTexts[i]), xField->getAnchor()->getString());
+ }
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testRubyPosition, "ruby-position.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ if (xmlDocUniquePtr pXmlDoc = parseExport("content.xml"))
+ {
+ assertXPath(pXmlDoc, "//style:style[@style:family='ruby']/style:ruby-properties[@loext:ruby-position='inter-character']", 1);
+ assertXPath(pXmlDoc, "//style:style[@style:family='ruby']/style:ruby-properties[@style:ruby-position='below']", 1);
+ }
+}
+
+DECLARE_ODFEXPORT_TEST(testAllowOverlap, "allow-overlap.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(2, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expression: !getProperty<bool>(xShape, "AllowOverlap")
+ // i.e. the custom AllowOverlap=false shape property was lost on import/export.
+ CPPUNIT_ASSERT(!getProperty<bool>(xShape, "AllowOverlap"));
+ xShape = getShape(2);
+ CPPUNIT_ASSERT(!getProperty<bool>(xShape, "AllowOverlap"));
+}
+
+DECLARE_ODFEXPORT_TEST(testSignatureLineProperties, "signatureline-properties.fodt")
+{
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ CPPUNIT_ASSERT(xShape.is());
+
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xShape, "IsSignatureLine"));
+ CPPUNIT_ASSERT_EQUAL(OUString("{3C24159B-3B98-4F60-AB52-00E7721758E9}"),
+ getProperty<OUString>(xShape, "SignatureLineId"));
+ CPPUNIT_ASSERT_EQUAL(OUString("John Doe"),
+ getProperty<OUString>(xShape, "SignatureLineSuggestedSignerName"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Farmer"),
+ getProperty<OUString>(xShape, "SignatureLineSuggestedSignerTitle"));
+ CPPUNIT_ASSERT_EQUAL(OUString("john@farmers.org"),
+ getProperty<OUString>(xShape, "SignatureLineSuggestedSignerEmail"));
+ CPPUNIT_ASSERT_EQUAL(OUString("Please farm here."),
+ getProperty<OUString>(xShape, "SignatureLineSigningInstructions"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xShape, "SignatureLineCanAddComment"));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xShape, "SignatureLineShowSignDate"));
+
+ // tdf#130917 This needs to be always set when importing a doc, ooxml export expects it.
+ uno::Reference<graphic::XGraphic> xUnsignedGraphic;
+ uno::Reference<beans::XPropertySet> xProps(xShape, uno::UNO_QUERY);
+ xProps->getPropertyValue("SignatureLineUnsignedImage") >>= xUnsignedGraphic;
+ CPPUNIT_ASSERT_EQUAL(true, xUnsignedGraphic.is());
+}
+
+DECLARE_ODFEXPORT_TEST(testQrCodeGenProperties, "qrcode-properties.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ CPPUNIT_ASSERT(xShape.is());
+
+ css::drawing::QRCode aQRCode = getProperty<css::drawing::QRCode>(xShape, "QRCodeProperties");
+
+ CPPUNIT_ASSERT_EQUAL(OUString("www.libreoffice.org"),
+ aQRCode.Payload);
+ CPPUNIT_ASSERT_EQUAL(css::drawing::QRCodeErrorCorrection::LOW,
+ aQRCode.ErrorCorrection);
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(5),
+ aQRCode.Border);
+}
+
+DECLARE_ODFEXPORT_TEST(testChapterNumberingNewLine, "chapter-number-new-line.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<text::XChapterNumberingSupplier> xNumberingSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xNumberingRules = xNumberingSupplier->getChapterNumberingRules();
+ comphelper::SequenceAsHashMap hashMap(xNumberingRules->getByIndex(0));
+
+ //This failed Actual Value was LISTTAB instead of NEWLINE
+ CPPUNIT_ASSERT_EQUAL(
+ sal_Int16(SvxNumberFormat::NEWLINE), hashMap["LabelFollowedBy"].get<sal_Int16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testSpellOutNumberingTypes, "spellout-numberingtypes.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // ordinal indicator, ordinal and cardinal number numbering styles (from LibreOffice 6.1)
+ static const char* const aFieldTexts[] = { "1st", "Erste", "Eins", "1.", "Premier", "Un", "1ᵉʳ", "First", "One" };
+ // fallback for old platforms without std::codecvt and std::regex supports
+ static const char* const aFieldTextFallbacks[] = { "Ordinal-number 1", "Ordinal 1", "1" };
+ uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY);
+ // update text field content
+ uno::Reference<util::XRefreshable>(xTextFieldsSupplier->getTextFields(), uno::UNO_QUERY_THROW)->refresh();
+
+ uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
+ uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
+
+ for (size_t i = 0; i < SAL_N_ELEMENTS(aFieldTexts); i++)
+ {
+ uno::Any aField = xFields->nextElement();
+ uno::Reference<lang::XServiceInfo> xServiceInfo(aField, uno::UNO_QUERY);
+ if (xServiceInfo->supportsService("com.sun.star.text.textfield.PageNumber"))
+ {
+ uno::Reference<text::XTextContent> xField(aField, uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(true, OUString::fromUtf8(aFieldTexts[i]).equals(xField->getAnchor()->getString()) ||
+ OUString::fromUtf8(aFieldTextFallbacks[i%3]).equals(xField->getAnchor()->getString()));
+ }
+ }
+}
+
+// MAILMERGE Add conditional to expand / collapse bookmarks
+DECLARE_ODFEXPORT_TEST(tdf101856_overlapped, "tdf101856_overlapped.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // get bookmark interface
+ uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xBookmarksByName = xBookmarksSupplier->getBookmarks();
+
+ // check: we have 2 bookmarks
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(2), xBookmarksByIdx->getCount());
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkNonHidden"));
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkHidden"));
+
+ // <text:bookmark-start text:name="BookmarkNonHidden"/>
+ uno::Reference<beans::XPropertySet> xBookmark1(xBookmarksByName->getByName("BookmarkNonHidden"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xBookmark1, UNO_NAME_BOOKMARK_CONDITION));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xBookmark1, UNO_NAME_BOOKMARK_HIDDEN));
+
+ // <text:bookmark-start text:name="BookmarkHidden"/>
+ uno::Reference<beans::XPropertySet> xBookmark2(xBookmarksByName->getByName("BookmarkHidden"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xBookmark2, UNO_NAME_BOOKMARK_CONDITION));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark2, UNO_NAME_BOOKMARK_HIDDEN));
+}
+
+// MAILMERGE Add conditional to expand / collapse bookmarks
+DECLARE_ODFEXPORT_TEST(tdf101856, "tdf101856.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ // get bookmark interface
+ uno::Reference<text::XBookmarksSupplier> xBookmarksSupplier(mxComponent, uno::UNO_QUERY);
+ uno::Reference<container::XIndexAccess> xBookmarksByIdx(xBookmarksSupplier->getBookmarks(), uno::UNO_QUERY);
+ uno::Reference<container::XNameAccess> xBookmarksByName = xBookmarksSupplier->getBookmarks();
+
+ // check: we have 2 bookmarks
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(5), xBookmarksByIdx->getCount());
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkVisible"));
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkHidden"));
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkVisibleWithCondition"));
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkNotHiddenWithCondition"));
+ CPPUNIT_ASSERT(xBookmarksByName->hasByName("BookmarkHiddenWithCondition"));
+
+ // <text:bookmark-start text:name="BookmarkVisible"/>
+ uno::Reference<beans::XPropertySet> xBookmark1(xBookmarksByName->getByName("BookmarkVisible"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xBookmark1, UNO_NAME_BOOKMARK_CONDITION));
+ CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xBookmark1, UNO_NAME_BOOKMARK_HIDDEN));
+
+ // <text:bookmark-start text:name="BookmarkHidden" loext:condition="" loext:hidden="true"/>
+ uno::Reference<beans::XPropertySet> xBookmark2(xBookmarksByName->getByName("BookmarkHidden"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString(""), getProperty<OUString>(xBookmark2, UNO_NAME_BOOKMARK_CONDITION));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark2, UNO_NAME_BOOKMARK_HIDDEN));
+
+ // <text:bookmark-start text:name="BookmarkVisibleWithCondition" loext:condition="0==1" loext:hidden="true"/>
+ uno::Reference<beans::XPropertySet> xBookmark3(xBookmarksByName->getByName("BookmarkVisibleWithCondition"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("0==1"), getProperty<OUString>(xBookmark3, UNO_NAME_BOOKMARK_CONDITION));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark3, UNO_NAME_BOOKMARK_HIDDEN));
+
+ // <text:bookmark-start text:name="BookmarkNotHiddenWithCondition" loext:condition="1==1" loext:hidden="false"/>
+ //
+ // The following test doesn't work, while during output in the case of loext:hidden="false".
+ // no additional parameters are written. Implementation should be reviewed.
+ //
+// uno::Reference<beans::XPropertySet> xBookmark4(xBookmarksByName->getByName("BookmarkNotHiddenWithCondition"), uno::UNO_QUERY);
+// CPPUNIT_ASSERT_EQUAL(OUString("1==1"), getProperty<OUString>(xBookmark4, UNO_NAME_BOOKMARK_CONDITION));
+// CPPUNIT_ASSERT_EQUAL(false, getProperty<bool>(xBookmark4, UNO_NAME_BOOKMARK_HIDDEN));
+
+ // <text:bookmark-start text:name="BookmarkHiddenWithCondition" loext:condition="1==1" loext:hidden="true"/>
+ uno::Reference<beans::XPropertySet> xBookmark5(xBookmarksByName->getByName("BookmarkHiddenWithCondition"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(OUString("1==1"), getProperty<OUString>(xBookmark5, UNO_NAME_BOOKMARK_CONDITION));
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xBookmark5, UNO_NAME_BOOKMARK_HIDDEN));
+}
+
+DECLARE_ODFEXPORT_TEST(tdf118502, "tdf118502.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<drawing::XShape> xShape = getShape(1);
+ // Make sure the replacement graphic is still there
+ // (was gone because the original graphic was not recognized during load)
+ auto xReplacementGraphic
+ = getProperty<uno::Reference<graphic::XGraphic>>(xShape, "ReplacementGraphic");
+ CPPUNIT_ASSERT(xReplacementGraphic.is());
+}
+
+DECLARE_ODFEXPORT_TEST(tdf99631, "tdf99631.docx")
+{
+ // check import of VisualArea settings of the embedded XLSX OLE objects
+ xmlDocUniquePtr pXmlDoc = parseExport("Object 1/settings.xml");
+ if (!pXmlDoc)
+ return;
+ assertXPathContent(pXmlDoc, "//config:config-item[@config:name='VisibleAreaWidth']", "4515");
+ assertXPathContent(pXmlDoc, "//config:config-item[@config:name='VisibleAreaHeight']", "903");
+
+ xmlDocUniquePtr pXmlDoc2 = parseExport("Object 2/settings.xml");
+ if (!pXmlDoc2)
+ return;
+ assertXPathContent(pXmlDoc2, "//config:config-item[@config:name='VisibleAreaWidth']", "4515");
+ assertXPathContent(pXmlDoc2, "//config:config-item[@config:name='VisibleAreaHeight']", "1354");
+}
+
+DECLARE_ODFEXPORT_TEST(tdf128504, "tdf128504.docx")
+{
+ uno::Reference<text::XTextRange> xPara = getParagraph(6);
+ uno::Reference<beans::XPropertySet> xRun(getRun(xPara,1), uno::UNO_QUERY);
+ OUString unVisitedStyleName = getProperty<OUString>(xRun, "UnvisitedCharStyleName");
+ CPPUNIT_ASSERT(!unVisitedStyleName.equalsIgnoreAsciiCase("Internet Link"));
+ OUString visitedStyleName = getProperty<OUString>(xRun, "VisitedCharStyleName");
+ CPPUNIT_ASSERT(!visitedStyleName.equalsIgnoreAsciiCase("Visited Internet Link"));
+}
+
+DECLARE_ODFEXPORT_TEST(tdf121658, "tdf121658.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<container::XNameAccess> xParaStyles(getStyles("ParagraphStyles"));
+ uno::Reference<beans::XPropertySet> xStyle1(xParaStyles->getByName(
+ "Standard"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(true, getProperty<bool>(xStyle1, "ParaHyphenationNoCaps"));
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZeroNumbering, "arabic-zero-numbering.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ auto xNumberingRules
+ = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), "NumberingRules");
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 64
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO),
+ aMap["NumberingType"].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZero3Numbering, "arabic-zero3-numbering.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ auto xNumberingRules
+ = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), "NumberingRules");
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 65
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO3.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO3),
+ aMap["NumberingType"].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZero4Numbering, "arabic-zero4-numbering.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ auto xNumberingRules
+ = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), "NumberingRules");
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 66
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO4.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO4),
+ aMap["NumberingType"].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testArabicZero5Numbering, "arabic-zero5-numbering.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ auto xNumberingRules
+ = getProperty<uno::Reference<container::XIndexAccess>>(getParagraph(1), "NumberingRules");
+ comphelper::SequenceAsHashMap aMap(xNumberingRules->getByIndex(0));
+ // Without the accompanying fix in place, this test would have failed with:
+ // - Expected: 67
+ // - Actual : 4
+ // i.e. numbering type was ARABIC, not ARABIC_ZERO5.
+ CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(style::NumberingType::ARABIC_ZERO5),
+ aMap["NumberingType"].get<sal_uInt16>());
+}
+
+DECLARE_ODFEXPORT_TEST(testPageContentBottom, "page-content-bottom.odt")
+{
+ CPPUNIT_ASSERT_EQUAL(1, getShapes());
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+ uno::Reference<beans::XPropertySet> xShape(getShape(1), uno::UNO_QUERY);
+ sal_Int16 nExpected = text::RelOrientation::PAGE_PRINT_AREA_BOTTOM;
+ CPPUNIT_ASSERT_EQUAL(nExpected, getProperty<sal_Int16>(xShape, "VertOrientRelation"));
+}
+
+DECLARE_ODFEXPORT_TEST(tdf124470, "tdf124470TableAndEmbeddedUsedFonts.odt")
+{
+ // Table styles were exported out of place, inside font-face-decls.
+ // Without the fix in place, this will fail already in ODF validation:
+ // "content.xml[2,2150]: Error: tag name "style:style" is not allowed. Possible tag names are: <font-face>"
+
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ xmlDocUniquePtr pXmlDoc = parseExport("content.xml");
+ if (!pXmlDoc)
+ return;
+
+ assertXPath(pXmlDoc, "/office:document-content/office:font-face-decls/style:style", 0);
+ assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='table']", 1);
+ assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='table-column']", 2);
+ assertXPath(pXmlDoc, "/office:document-content/office:automatic-styles/style:style[@style:family='paragraph']", 1);
+}
+
+DECLARE_ODFEXPORT_TEST(tdf135942, "nestedTableInFooter.odt")
+{
+ // All table autostyles should be collected, including nested, and must not crash.
+
+ CPPUNIT_ASSERT_EQUAL(1, getPages());
+
+ xmlDocUniquePtr pXmlDoc = parseExport("styles.xml");
+ if (!pXmlDoc)
+ return;
+
+ assertXPath(pXmlDoc, "/office:document-styles/office:automatic-styles/style:style[@style:family='table']", 2);
+}
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */