summaryrefslogtreecommitdiffstats
path: root/share/extensions/other/extension-xaml/tests
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 11:50:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 11:50:49 +0000
commitc853ffb5b2f75f5a889ed2e3ef89b818a736e87a (patch)
tree7d13a0883bb7936b84d6ecdd7bc332b41ed04bee /share/extensions/other/extension-xaml/tests
parentInitial commit. (diff)
downloadinkscape-c853ffb5b2f75f5a889ed2e3ef89b818a736e87a.tar.xz
inkscape-c853ffb5b2f75f5a889ed2e3ef89b818a736e87a.zip
Adding upstream version 1.3+ds.upstream/1.3+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'share/extensions/other/extension-xaml/tests')
-rw-r--r--share/extensions/other/extension-xaml/tests/__init__.py0
-rw-r--r--share/extensions/other/extension-xaml/tests/context.py13
-rw-r--r--share/extensions/other/extension-xaml/tests/data/cmd/inkscape/65c026b1c9b2d7dafbbeb1287a1530ea.msg679
-rw-r--r--share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__avaloniaui.out387
-rw-r--r--share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--indent__4.out84
-rw-r--r--share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--text-to-path__True.out368
-rw-r--r--share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__avaloniaui.out441
-rw-r--r--share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__wpf.out426
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/blur.svg30
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/circle_defaults.svg32
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/clip_complex.svg24
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/clip_single.svg72
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/clips_and_masks.svg87
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/gradient_with_mixed_offsets.svg26
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/guides.svg233
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/layers.svg31
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/lineargradient_simple.svg20
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/markers_basic.svg41
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/masks.svg29
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/paint-order.svg23
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/paths.svg14
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/patterns.svg21
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/polygon_polyline_line.svg13
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/radialgradient_focal.svg48
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/rect_basic.svg8
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/rect_defaults.svg23
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/shapes.svg284
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/strokestyle.svg13
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/swatches.svg33
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/test.svg28
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/text-decorations.svg18
-rw-r--r--share/extensions/other/extension-xaml/tests/data/svg/text_types.svg327
-rw-r--r--share/extensions/other/extension-xaml/tests/dev_requirements.txt11
-rw-r--r--share/extensions/other/extension-xaml/tests/test_inx_good.py12
-rw-r--r--share/extensions/other/extension-xaml/tests/test_svg2xaml_adv.py786
-rw-r--r--share/extensions/other/extension-xaml/tests/test_svg2xaml_avalonia.py160
-rw-r--r--share/extensions/other/extension-xaml/tests/test_svg2xaml_basic.py554
-rw-r--r--share/extensions/other/extension-xaml/tests/test_svg2xaml_runthrough.py52
-rw-r--r--share/extensions/other/extension-xaml/tests/test_svg2xaml_text.py301
39 files changed, 5752 insertions, 0 deletions
diff --git a/share/extensions/other/extension-xaml/tests/__init__.py b/share/extensions/other/extension-xaml/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/__init__.py
diff --git a/share/extensions/other/extension-xaml/tests/context.py b/share/extensions/other/extension-xaml/tests/context.py
new file mode 100644
index 0000000..0ed3c0f
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/context.py
@@ -0,0 +1,13 @@
+"""Handles imports for unit tests"""
+
+import os
+import sys
+from lxml import etree
+
+# This is suggested by https://docs.python-guide.org/writing/structure/.
+sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
+
+from inkxaml.tester import Svg2XamlTester
+from inkxaml.svg2xaml import XamlOutput
+
+XamlOutput.__module__ = "svg2xaml"
diff --git a/share/extensions/other/extension-xaml/tests/data/cmd/inkscape/65c026b1c9b2d7dafbbeb1287a1530ea.msg b/share/extensions/other/extension-xaml/tests/data/cmd/inkscape/65c026b1c9b2d7dafbbeb1287a1530ea.msg
new file mode 100644
index 0000000..f7983d4
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/cmd/inkscape/65c026b1c9b2d7dafbbeb1287a1530ea.msg
@@ -0,0 +1,679 @@
+Content-Type: multipart/mixed; boundary="--CALLDATA--//--CALLDATA--"
+MIME-Version: 1.0
+Program: inkscape
+Arguments: --actions=unlock-all;select-by-element:flowRoot;object-to-path;select-clear;select-by-element:text;object-to-path;select-clear;export-overwrite;export-do input.svg
+
+----CALLDATA--//--CALLDATA--
+Content-Type: application/octet-stream; Name="input.svg"
+MIME-Version: 1.0
+Content-Transfer-Encoding: base64
+Content-Disposition: attachment
+Filename: input.svg
+
+PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjwh
+LS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoK
+PHN2ZwogICB3aWR0aD0iMTAwMCIKICAgaGVpZ2h0PSIxMDAwIgogICB2aWV3Qm94PSIwIDAgMTAw
+MCAxMDAwIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc4IgogICBpbmtzY2FwZTp2ZXJzaW9u
+PSIwLjkyLjQgNWRhNjg5YzMxMywgMjAxOS0wMS0xNCIKICAgc29kaXBvZGk6ZG9jbmFtZT0iaW5w
+dXQuc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNw
+YWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vm
+b3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53
+My5vcmcvMTk5OS94bGluayIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgog
+ICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczpuczE9Imh0
+dHBzOi8vbGF1bmNocGFkLm5ldC9qZXNzeWluayI+CiAgPGRlZnMKICAgICBpZD0iZGVmczMzIj4K
+ICAgIDxtYXJrZXIKICAgICAgIGlua3NjYXBlOnN0b2NraWQ9IkFycm93MkxzdGFydCIKICAgICAg
+IG9yaWVudD0iYXV0byIKICAgICAgIHJlZlk9IjAuMCIKICAgICAgIHJlZlg9IjAuMCIKICAgICAg
+IGlkPSJBcnJvdzJMc3RhcnQiCiAgICAgICBzdHlsZT0ib3ZlcmZsb3c6dmlzaWJsZSIKICAgICAg
+IGlua3NjYXBlOmlzc3RvY2s9InRydWUiPgogICAgICA8cGF0aAogICAgICAgICBpZD0icGF0aDg1
+OSIKICAgICAgICAgc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO3N0cm9rZS13aWR0aDowLjYyNTtz
+dHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLW9wYWNpdHk6MTtmaWxs
+OiMwMDAwMDA7ZmlsbC1vcGFjaXR5OjEiCiAgICAgICAgIGQ9Ik0gOC43MTg1ODc4LDQuMDMzNzM1
+MiBMIC0yLjIwNzI4OTUsMC4wMTYwMTMyNTYgTCA4LjcxODU4ODQsLTQuMDAxNzA3OCBDIDYuOTcz
+MDkwMCwtMS42Mjk2NDY5IDYuOTgzMTQ3NiwxLjYxNTc0NDEgOC43MTg1ODc4LDQuMDMzNzM1MiB6
+ICIKICAgICAgICAgdHJhbnNmb3JtPSJzY2FsZSgxLjEpIHRyYW5zbGF0ZSgxLDApIiAvPgogICAg
+PC9tYXJrZXI+CiAgPC9kZWZzPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBwYWdlY29sb3I9
+IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0i
+MSIKICAgICBvYmplY3R0b2xlcmFuY2U9IjEwIgogICAgIGdyaWR0b2xlcmFuY2U9IjEwIgogICAg
+IGd1aWRldG9sZXJhbmNlPSIxMCIKICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMCIKICAgICBp
+bmtzY2FwZTpwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIK
+ICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDE3IgogICAgIGlkPSJiYXNlIgogICAgIHNo
+b3dncmlkPSJ0cnVlIgogICAgIGlua3NjYXBlOnNuYXAtdGV4dC1iYXNlbGluZT0idHJ1ZSIKICAg
+ICBpbmtzY2FwZTp6b29tPSIwLjY2NzUwODgiCiAgICAgaW5rc2NhcGU6Y3g9IjIwMi43MzQ5Igog
+ICAgIGlua3NjYXBlOmN5PSI0ODEuMTY5ODYiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAg
+ICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0i
+MSIKICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJ3ZWJzbGljZXItbGF5ZXIiCiAgICAgaW5r
+c2NhcGU6c2hvd3BhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0i
+MCIKICAgICBpbmtzY2FwZTpkZXNrY29sb3I9IiNkMWQxZDEiPgogICAgPGlua3NjYXBlOmdyaWQK
+ICAgICAgIHR5cGU9Inh5Z3JpZCIKICAgICAgIGlkPSJncmlkMjciCiAgICAgICBzcGFjaW5neD0i
+MTAiCiAgICAgICBzcGFjaW5neT0iMTAiCiAgICAgICBlbXBzcGFjaW5nPSIxMCIKICAgICAgIGNv
+bG9yPSIjODA4MGZmIgogICAgICAgb3BhY2l0eT0iMC4yNTA5ODAzOSIKICAgICAgIGVtcGNvbG9y
+PSIjMDAwMGZmIgogICAgICAgZW1wb3BhY2l0eT0iMC4yNTA5ODAzOSIgLz4KICA8L3NvZGlwb2Rp
+Om5hbWVkdmlldz4KICA8ZwogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiCiAgICAgaWQ9
+IndlYnNsaWNlci1sYXllciIKICAgICBpbmtzY2FwZTpsYWJlbD0iU2xpZGUzIgogICAgIHN0eWxl
+PSJkaXNwbGF5OmlubGluZSI+CiAgICA8cmVjdAogICAgICAgaGVpZ2h0PSIyMDEuNDk4MTEiCiAg
+ICAgICB3aWR0aD0iMjQ4LjY5MTEyIgogICAgICAgeT0iMzUzLjkyNjYxIgogICAgICAgeD0iNjUx
+LjMwODkiCiAgICAgICBpZD0ic2xpY2VyZWN0MSIKICAgICAgIHN0eWxlPSJvcGFjaXR5OjAuNTtm
+aWxsOiNmZjAwMDA7c3Ryb2tlLXdpZHRoOjEuMTE5MjcxOTkiPgogICAgICA8ZGVzYwogICAgICAg
+ICBpZD0iZGVzYzUxIj5mb3JtYXQ6IHBuZwpkcGk6IDk2CmxheW91dC1kaXNwb3NpdGlvbjogYmct
+ZWwtbm9yZXBlYXQKbGF5b3V0LXBvc2l0aW9uLWFuY2hvcjogdGw8L2Rlc2M+CiAgICA8L3JlY3Q+
+CiAgPC9nPgogIDxnCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5
+ZXIyIgogICAgIGlua3NjYXBlOmxhYmVsPSJTbGlkZTIiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5s
+aW5lIj4KICAgIDxjaXJjbGUKICAgICAgIHN0eWxlPSJkaXNwbGF5OmlubGluZTtmaWxsOiMwMDAw
+ODA7c3Ryb2tlOm5vbmUiCiAgICAgICBpZD0iYzEiCiAgICAgICBjeD0iMTUwIgogICAgICAgY3k9
+IjQ1MCIKICAgICAgIHI9IjUwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IiNwYXRoMzczNiIgLz4K
+ICAgIDxlbGxpcHNlCiAgICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO3N0cm9r
+ZTojZmYwMDAwO3N0cm9rZS13aWR0aDoxNiIKICAgICAgIGlkPSJjMiIKICAgICAgIGN4PSI0MDAi
+CiAgICAgICBjeT0iNDUwIgogICAgICAgcng9IjEwMCIKICAgICAgIHJ5PSI1MCIKICAgICAgIGlu
+a3NjYXBlOmxhYmVsPSIjcGF0aDM3MzgiIC8+CiAgICA8cGF0aAogICAgICAgc3R5bGU9ImRpc3Bs
+YXk6aW5saW5lO2ZpbGw6I2ZmZmYwMDtzdHJva2U6IzAwODAwMDtzdHJva2Utd2lkdGg6MTYiCiAg
+ICAgICBpZD0iYzMiCiAgICAgICBzb2RpcG9kaTp0eXBlPSJhcmMiCiAgICAgICBzb2RpcG9kaTpj
+eD0iNzAwIgogICAgICAgc29kaXBvZGk6Y3k9IjQ1MCIKICAgICAgIHNvZGlwb2RpOnJ4PSIxMDAi
+CiAgICAgICBzb2RpcG9kaTpyeT0iNTAiCiAgICAgICBzb2RpcG9kaTpzdGFydD0iMC41OTAxMzg2
+NSIKICAgICAgIHNvZGlwb2RpOmVuZD0iNS42NDg0NTExIgogICAgICAgZD0ibSA3ODMuMDg2MzUs
+NDc3LjgyMzgxIGEgMTAwLDUwIDAgMCAxIC0xMTEuMDk4NDgsMjAuMTc0NDIgMTAwLDUwIDAgMCAx
+IC03MS45NjMwMSwtNDYuODgzNDMgMTAwLDUwIDAgMCAxIDY3LjcxMTI3LC00OC40NDA5MSAxMDAs
+NTAgMCAwIDEgMTEyLjc4NjgsMTcuNjc3OTMgTCA3MDAsNDUwIFoiCiAgICAgICBpbmtzY2FwZTps
+YWJlbD0iI3BhdGgzNzQwIiAvPgogICAgPHBhdGgKICAgICAgIHN0eWxlPSJkaXNwbGF5OmlubGlu
+ZTtmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEwO21hcmtlci1zdGFydDp1
+cmwoI0Fycm93MkxzdGFydCkiCiAgICAgICBkPSJNIDEwMCw2MDAgMjAwLDcwMCAzMDAsNjAwIDQw
+MCw3MDAiCiAgICAgICBpZD0icDEiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJl
+PSIwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IiNwYXRoMzc0NiIgLz4KICAgIDxwYXRoCiAgICAg
+ICBzdHlsZT0iZGlzcGxheTppbmxpbmU7ZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13
+aWR0aDoxMCIKICAgICAgIGQ9Im0gNTAwLDYwMCBjIDAsMCAwLDEwMCAxMDAsMTAwIDEwMCwwIDAs
+LTEwMCAxMDAsLTEwMCAxMDAsMCAxMDAsMTAwIDEwMCwxMDAiCiAgICAgICBpZD0icDIiCiAgICAg
+ICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9
+IiNwYXRoMzc0OCIgLz4KICAgIDxwYXRoCiAgICAgICBzb2RpcG9kaTp0eXBlPSJzdGFyIgogICAg
+ICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lO2ZpbGw6I2ZmZmYwMDtzdHJva2U6IzAwODAwMDtzdHJv
+a2Utd2lkdGg6MTAiCiAgICAgICBpZD0iczEiCiAgICAgICBzb2RpcG9kaTpzaWRlcz0iNSIKICAg
+ICAgIHNvZGlwb2RpOmN4PSIxODkuMDMwMDEiCiAgICAgICBzb2RpcG9kaTpjeT0iODQ3LjkzOTQ1
+IgogICAgICAgc29kaXBvZGk6cjE9IjY5LjM2NDg2OCIKICAgICAgIHNvZGlwb2RpOnIyPSIzNC42
+ODI0MzQiCiAgICAgICBzb2RpcG9kaTphcmcxPSIwLjYzNTk4MzczIgogICAgICAgc29kaXBvZGk6
+YXJnMj0iMS4yNjQzMDIzIgogICAgICAgaW5rc2NhcGU6ZmxhdHNpZGVkPSJmYWxzZSIKICAgICAg
+IGlua3NjYXBlOnJvdW5kZWQ9IjAiCiAgICAgICBpbmtzY2FwZTpyYW5kb21pemVkPSIwIgogICAg
+ICAgZD0ibSAyNDQuODMzMiw4ODkuMTQwMDUgLTQ1LjMzODg3LC04LjEzNDQ2IC0zMi40MDQyOCwz
+Mi43Mzc1MyAtNi4yNzQxNSwtNDUuNjMzNTIgLTQxLjE0ODcyLC0yMC43MDE4NCA0MS40NjEyNCwt
+MjAuMDY4NjEgNi45NzI5NywtNDUuNTMxOTcgMzEuODk4NjEsMzMuMjMwNDQgNDUuNDU4MjQsLTcu
+NDM4NDcgLTIxLjc0NjgxLDQwLjYwNjE1IHoiCiAgICAgICBpbmtzY2FwZTp0cmFuc2Zvcm0tY2Vu
+dGVyLXg9IjYuNDY3MzAxMSIKICAgICAgIGlua3NjYXBlOnRyYW5zZm9ybS1jZW50ZXIteT0iLTAu
+MTY0MzAxMzciIC8+CiAgICA8dXNlCiAgICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiCiAgICAg
+ICB4PSIwIgogICAgICAgeT0iMCIKICAgICAgIHhsaW5rOmhyZWY9IiNzMSIKICAgICAgIGlua3Nj
+YXBlOnRyYW5zZm9ybS1jZW50ZXIteD0iNi40NjczMDExIgogICAgICAgaW5rc2NhcGU6dHJhbnNm
+b3JtLWNlbnRlci15PSItMC4xNjQzMDEzNyIKICAgICAgIGlkPSJ1MSIKICAgICAgIHRyYW5zZm9y
+bT0idHJhbnNsYXRlKDIwMCwyLjk5NjIxNTIpIgogICAgICAgd2lkdGg9IjEwMCUiCiAgICAgICBo
+ZWlnaHQ9IjEwMCUiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iI3VzZTM4MDgiIC8+CiAgPC9nPgog
+IDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IlNsaWRlMSIKICAgICBpbmtzY2FwZTpncm91cG1vZGU9
+ImxheWVyIgogICAgIGlkPSJsYXllcjEiCiAgICAgc3R5bGU9ImRpc3BsYXk6aW5saW5lIj4KICAg
+IDxnCiAgICAgICBhcmlhLWxhYmVsPSJIZWxsbyBXb3JsZCIKICAgICAgIGlkPSJ0MSIKICAgICAg
+IHN0eWxlPSJmb250LXNpemU6MTQuNjY2N3B4O2xpbmUtaGVpZ2h0OjEuMjUiCiAgICAgICBpbmtz
+Y2FwZTpsYWJlbD0iI3RleHQxMiI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTA5LjU4OTIx
+LDEwMCBoIC0xLjQxNzk3IHYgLTUuMjIwNzE1IGggLTUuMzIwOTcgViAxMDAgaCAtMS40MTc5OCBW
+IDg5LjMzNjU2NCBoIDEuNDE3OTggdiA0LjE4MjMwMSBoIDUuMzIwOTcgdiAtNC4xODIzMDEgaCAx
+LjQxNzk3IHoiCiAgICAgICAgIGlkPSJwYXRoNzgiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9
+Im0gMTE5LjA0MjM2LDk2LjEzOTk2NSBoIC01Ljg5Mzg5IHEgMCwwLjczNzYzMiAwLjIyMiwxLjI4
+OTA2NiAwLjIyMjAxLDAuNTQ0MjcyIDAuNjA4NzMsMC44OTUxODQgMC4zNzI0LDAuMzQzNzUxIDAu
+ODgwODYsMC41MTU2MjYgMC41MTU2MywwLjE3MTg3NSAxLjEzMTUxLDAuMTcxODc1IDAuODE2NDEs
+MCAxLjYzOTk4LC0wLjMyMjI2NiAwLjgzMDczLC0wLjMyOTQyOCAxLjE4MTY0LC0wLjY0NDUzMyBo
+IDAuMDcxNiB2IDEuNDY4MTAzIHEgLTAuNjgwMzQsMC4yODY0NTkgLTEuMzg5MzMsMC40Nzk4MTkg
+LTAuNzA4OTgsMC4xOTMzNjEgLTEuNDg5NTgsMC4xOTMzNjEgLTEuOTkwODksMCAtMy4xMDgwOCwt
+MS4wNzQyMjMgLTEuMTE3MTksLTEuMDgxMzgzIC0xLjExNzE5LC0zLjA2NTExMSAwLC0xLjk2MjI0
+NCAxLjA2NzA2LC0zLjExNTI0MiAxLjA3NDIyLC0xLjE1Mjk5NyAyLjgyMTYyLC0xLjE1Mjk5NyAx
+LjYxODQ5LDAgMi40OTIxOSwwLjk0NTMxNSAwLjg4MDg2LDAuOTQ1MzE0IDAuODgwODYsMi42ODU1
+NTMgeiBtIC0xLjMxMDU1LC0xLjAzMTI1MiBxIC0wLjAwNywtMS4wNTk4OTkgLTAuNTM3MTEsLTEu
+NjM5OTc4IC0wLjUyMjc5LC0wLjU4MDA3OSAtMS41OTcwMSwtMC41ODAwNzkgLTEuMDgxMzgsMCAt
+MS43MjU5MSwwLjYzNzM3MSAtMC42MzczNywwLjYzNzM3MSAtMC43MjMzMSwxLjU4MjY4NiB6Igog
+ICAgICAgICBpZD0icGF0aDgwIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDEyMi40NDQw
+NiwxMDAgaCAtMS4zNDYzNSBWIDg4Ljg1Njc0NSBoIDEuMzQ2MzUgeiIKICAgICAgICAgaWQ9InBh
+dGg4MiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAxMjYuNDY4ODEsMTAwIGggLTEuMzQ2
+MzYgViA4OC44NTY3NDUgaCAxLjM0NjM2IHoiCiAgICAgICAgIGlkPSJwYXRoODQiIC8+CiAgICAg
+IDxwYXRoCiAgICAgICAgIGQ9Im0gMTM1Ljk1MDYsOTYuMDAzODk3IHEgMCwxLjk1NTA4MyAtMS4w
+MDI2LDMuMDg2NTk2IC0xLjAwMjYxLDEuMTMxNTE3IC0yLjY4NTU2LDEuMTMxNTE3IC0xLjY5NzI3
+LDAgLTIuNjk5ODcsLTEuMTMxNTE3IC0wLjk5NTQ1LC0xLjEzMTUxMyAtMC45OTU0NSwtMy4wODY1
+OTYgMCwtMS45NTUwODMgMC45OTU0NSwtMy4wODY1OTYgMS4wMDI2LC0xLjEzODY3NCAyLjY5OTg3
+LC0xLjEzODY3NCAxLjY4Mjk1LDAgMi42ODU1NiwxLjEzODY3NCAxLjAwMjYsMS4xMzE1MTMgMS4w
+MDI2LDMuMDg2NTk2IHogbSAtMS4zODkzMiwwIHEgMCwtMS41NTQwNCAtMC42MDg3MywtMi4zMDU5
+OTUgLTAuNjA4NzIsLTAuNzU5MTE2IC0xLjY5MDExLC0wLjc1OTExNiAtMS4wOTU3LDAgLTEuNzA0
+NDMsMC43NTkxMTYgLTAuNjAxNTYsMC43NTE5NTUgLTAuNjAxNTYsMi4zMDU5OTUgMCwxLjUwMzkx
+IDAuNjA4NzIsMi4yODQ1MTEgMC42MDg3MywwLjc3MzQzOSAxLjY5NzI3LDAuNzczNDM5IDEuMDc0
+MjIsMCAxLjY4Mjk1LC0wLjc2NjI3OCAwLjYxNTg5LC0wLjc3MzQzOSAwLjYxNTg5LC0yLjI5MTY3
+MiB6IgogICAgICAgICBpZD0icGF0aDg2IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDE1
+NS43MDkxMSw4OS4zMzY1NjQgMTUyLjkzNzYyLDEwMCBoIC0xLjU5NzAxIEwgMTQ5LjA5OTA3LDkx
+LjE0ODQxNyAxNDYuOTA3NjYsMTAwIGggLTEuNTYxMiBsIC0yLjgyMTYyLC0xMC42NjM0MzYgaCAx
+LjQ1Mzc4IGwgMi4yNDE1NCw4Ljg2NTkwNiAyLjIwNTczLC04Ljg2NTkwNiBoIDEuNDM5NDYgbCAy
+LjIyNzIyLDguOTUxODQ0IDIuMjI3MjIsLTguOTUxODQ0IHoiCiAgICAgICAgIGlkPSJwYXRoODgi
+IC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMTYzLjc5NDQyLDk2LjAwMzg5NyBxIDAsMS45
+NTUwODMgLTEuMDAyNjEsMy4wODY1OTYgLTEuMDAyNiwxLjEzMTUxNyAtMi42ODU1NSwxLjEzMTUx
+NyAtMS42OTcyNywwIC0yLjY5OTg4LC0xLjEzMTUxNyAtMC45OTU0NCwtMS4xMzE1MTMgLTAuOTk1
+NDQsLTMuMDg2NTk2IDAsLTEuOTU1MDgzIDAuOTk1NDQsLTMuMDg2NTk2IDEuMDAyNjEsLTEuMTM4
+Njc0IDIuNjk5ODgsLTEuMTM4Njc0IDEuNjgyOTUsMCAyLjY4NTU1LDEuMTM4Njc0IDEuMDAyNjEs
+MS4xMzE1MTMgMS4wMDI2MSwzLjA4NjU5NiB6IG0gLTEuMzg5MzMsMCBxIDAsLTEuNTU0MDQgLTAu
+NjA4NzIsLTIuMzA1OTk1IC0wLjYwODczLC0wLjc1OTExNiAtMS42OTAxMSwtMC43NTkxMTYgLTEu
+MDk1NzEsMCAtMS43MDQ0MywwLjc1OTExNiAtMC42MDE1NywwLjc1MTk1NSAtMC42MDE1NywyLjMw
+NTk5NSAwLDEuNTAzOTEgMC42MDg3MywyLjI4NDUxMSAwLjYwODcyLDAuNzczNDM5IDEuNjk3Mjcs
+MC43NzM0MzkgMS4wNzQyMiwwIDEuNjgyOTUsLTAuNzY2Mjc4IDAuNjE1ODgsLTAuNzczNDM5IDAu
+NjE1ODgsLTIuMjkxNjcyIHoiCiAgICAgICAgIGlkPSJwYXRoOTAiIC8+CiAgICAgIDxwYXRoCiAg
+ICAgICAgIGQ9Im0gMTcwLjg2OTk2LDkzLjQ2ODczNSBoIC0wLjA3MTYgcSAtMC4zMDA3OCwtMC4w
+NzE2MSAtMC41ODcyNCwtMC4xMDAyNjEgLTAuMjc5MywtMC4wMzU4MSAtMC42NjYwMiwtMC4wMzU4
+MSAtMC42MjMwNCwwIC0xLjIwMzEyLDAuMjc5Mjk3IC0wLjU4MDA4LDAuMjcyMTM3IC0xLjExNzE5
+LDAuNzA4OTg2IFYgMTAwIGggLTEuMzQ2MzYgdiAtNy45OTkzNjcgaCAxLjM0NjM2IHYgMS4xODE2
+NDMgcSAwLjgwMjA4LC0wLjY0NDUzMyAxLjQxMDgxLC0wLjkwOTUwNyAwLjYxNTg4LC0wLjI3MjEz
+NiAxLjI1MzI1LC0wLjI3MjEzNiAwLjM1MDkyLDAgMC41MDg0NywwLjAyMTQ4IDAuMTU3NTUsMC4w
+MTQzMiAwLjQ3MjY2LDAuMDY0NDUgeiIKICAgICAgICAgaWQ9InBhdGg5MiIgLz4KICAgICAgPHBh
+dGgKICAgICAgICAgZD0ibSAxNzMuNDk4MjIsMTAwIGggLTEuMzQ2MzYgViA4OC44NTY3NDUgaCAx
+LjM0NjM2IHoiCiAgICAgICAgIGlkPSJwYXRoOTQiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9
+Im0gMTgyLjY1MDU4LDEwMCBoIC0xLjM0NjM2IHYgLTAuODM3ODkzIHEgLTAuNTgwMDgsMC41MDEz
+MDQgLTEuMjEwMjksMC43ODA2MDEgLTAuNjMwMjEsMC4yNzkzMDIgLTEuMzY3ODQsMC4yNzkzMDIg
+LTEuNDMyMjksMCAtMi4yNzczNSwtMS4xMDI4NzEgLTAuODM3ODksLTEuMTAyODY4IC0wLjgzNzg5
+LC0zLjA1Nzk1IDAsLTEuMDE2OTMgMC4yODY0NiwtMS44MTE4NTMgMC4yOTM2MiwtMC43OTQ5MjQg
+MC43ODc3NiwtMS4zNTM1MTkgMC40ODY5OCwtMC41NDQyNzIgMS4xMzE1MSwtMC44MzA3MzEgMC42
+NTE3LC0wLjI4NjQ1OSAxLjM0NjM2LC0wLjI4NjQ1OSAwLjYzMDIxLDAgMS4xMTcxOSwwLjEzNjA2
+OCAwLjQ4Njk4LDAuMTI4OTA3IDEuMDI0MDksMC40MDgyMDQgdiAtMy40NjYxNTQgaCAxLjM0NjM2
+IHogbSAtMS4zNDYzNiwtMS45Njk0MDYgdiAtNC41OTA1MDUgcSAtMC41NDQyNywtMC4yNDM0OSAt
+MC45NzM5NiwtMC4zMzY1ODkgLTAuNDI5NjksLTAuMDkzMSAtMC45MzgxNSwtMC4wOTMxIC0xLjEz
+MTUyLDAgLTEuNzYxNzIsMC43ODc3NjIgLTAuNjMwMjEsMC43ODc3NjIgLTAuNjMwMjEsMi4yMzQz
+OCAwLDEuNDI1MTMzIDAuNDg2OTgsMi4xNjk5MjcgMC40ODY5OCwwLjczNzYzMiAxLjU2MTIsMC43
+Mzc2MzIgMC41NzI5MiwwIDEuMTYwMTYsLTAuMjUwNjUyIDAuNTg3MjQsLTAuMjU3ODEzIDEuMDk1
+NywtMC42NTg4NTYgeiIKICAgICAgICAgaWQ9InBhdGg5NiIgLz4KICAgIDwvZz4KICAgIDxnCiAg
+ICAgICBhcmlhLWxhYmVsPSJmbG93IHRleHQgd2hpY2ggd3JhcHMiCiAgICAgICB0cmFuc2Zvcm09
+Im1hdHJpeCgwLjI2NDU4MzMzLDAsMCwwLjI2NDU4MzMzLDM3Mi4wMjk2MSwyOC45MDQ1MDUpIgog
+ICAgICAgaWQ9InQ0IgogICAgICAgc3R5bGU9ImZvbnQtc2l6ZTo0MHB4O2xpbmUtaGVpZ2h0OjEu
+MjUiCiAgICAgICBpbmtzY2FwZTpsYWJlbD0iI2Zsb3dSb290MTQiPgogICAgICA8cGF0aAogICAg
+ICAgICBkPSJtIDEyNi45ODk0NiwyMzMuMDQ1NDMgaCAtMC4yNzA2NyBxIC0wLjgzOTA3LC0wLjI0
+MzYxIC0yLjE5MjQyLC0wLjQ4NzIxIC0xLjM1MzM1LC0wLjI3MDY3IC0yLjM4MTg5LC0wLjI3MDY3
+IC0zLjI3NTEsMCAtNC43NjM3OCwxLjQ2MTYyIC0xLjQ2MTYyLDEuNDM0NTUgLTEuNDYxNjIsNS4y
+MjM5MiB2IDEuMDI4NTQgaCA5LjE3NTcgdiA0LjI3NjU4IGggLTkuMDEzMyB2IDI1Ljk1NzIgaCAt
+NS4wODg1OCB2IC0yNS45NTcyIGggLTMuNDM3NSB2IC00LjI3NjU4IGggMy40Mzc1IHYgLTEuMDAx
+NDggcSAwLC01LjM4NjMyIDIuNjc5NjMsLTguMjU1NDEgMi42Nzk2MiwtMi44OTYxNyA3Ljc0MTE0
+LC0yLjg5NjE3IDEuNzA1MjIsMCAzLjA1ODU3LDAuMTYyNDEgMS4zODA0MSwwLjE2MjQgMi41MTcy
+MiwwLjM3ODkzIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAg
+ICBpZD0icGF0aDQxIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDEzNS4zNTMxNSwyNzAu
+MjM1NDEgaCAtNS4wODg1OSB2IC00Mi4xMTYxNyBoIDUuMDg4NTkgeiIKICAgICAgICAgc3R5bGU9
+ImZvbnQtc2l6ZTo1NS40MzMxcHgiCiAgICAgICAgIGlkPSJwYXRoNDMiIC8+CiAgICAgIDxwYXRo
+CiAgICAgICAgIGQ9Im0gMTcxLjE4OTc4LDI1NS4xMzIwNSBxIDAsNy4zODkyOCAtMy43ODkzNywx
+MS42NjU4NiAtMy43ODkzNyw0LjI3NjU3IC0xMC4xNTAxMSw0LjI3NjU3IC02LjQxNDg2LDAgLTEw
+LjIwNDIzLC00LjI3NjU3IC0zLjc2MjMxLC00LjI3NjU4IC0zLjc2MjMxLC0xMS42NjU4NiAwLC03
+LjM4OTI3IDMuNzYyMzEsLTExLjY2NTg1IDMuNzg5MzcsLTQuMzAzNjQgMTAuMjA0MjMsLTQuMzAz
+NjQgNi4zNjA3NCwwIDEwLjE1MDExLDQuMzAzNjQgMy43ODkzNyw0LjI3NjU4IDMuNzg5MzcsMTEu
+NjY1ODUgeiBtIC01LjI1MDk5LDAgcSAwLC01Ljg3MzUyIC0yLjMwMDY5LC04LjcxNTU1IC0yLjMw
+MDY5LC0yLjg2OTEgLTYuMzg3OCwtMi44NjkxIC00LjE0MTI0LDAgLTYuNDQxOTMsMi44NjkxIC0y
+LjI3MzYyLDIuODQyMDMgLTIuMjczNjIsOC43MTU1NSAwLDUuNjg0MDYgMi4zMDA2OSw4LjYzNDM2
+IDIuMzAwNjksMi45MjMyMyA2LjQxNDg2LDIuOTIzMjMgNC4wNjAwNSwwIDYuMzYwNzQsLTIuODk2
+MTYgMi4zMjc3NSwtMi45MjMyMyAyLjMyNzc1LC04LjY2MTQzIHoiCiAgICAgICAgIHN0eWxlPSJm
+b250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDQ1IiAvPgogICAgICA8cGF0aAog
+ICAgICAgICBkPSJtIDIxNy4wOTUzMiwyNDAuMDAxNjMgLTcuODc2NDgsMzAuMjMzNzggaCAtNC43
+MDk2NSBsIC03Ljc2ODIxLC0yMy4zMDQ2NCAtNy43MTQwOCwyMy4zMDQ2NCBoIC00LjY4MjU5IGwg
+LTcuOTU3NjgsLTMwLjIzMzc4IGggNS4zMDUxMiBsIDUuNTQ4NzMsMjMuNDEyOTEgNy41NTE2OCwt
+MjMuNDEyOTEgaCA0LjE5NTM3IGwgNy43NDExNSwyMy40MTI5MSA1LjI1MDk4LC0yMy40MTI5MSB6
+IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg0
+NyIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyNTkuNjE3NDgsMjY5Ljk2NDc0IHEgLTEu
+NDM0NTUsMC4zNzg5NCAtMy4xMzk3NiwwLjYyMjU0IC0xLjY3ODE1LDAuMjQzNiAtMy4wMDQ0Myww
+LjI0MzYgLTQuNjI4NDUsMCAtNy4wMzc0MSwtMi40OTAxNiAtMi40MDg5NiwtMi40OTAxNiAtMi40
+MDg5NiwtNy45ODQ3NSB2IC0xNi4wNzc3NiBoIC0zLjQzNzUgdiAtNC4yNzY1OCBoIDMuNDM3NSB2
+IC04LjY4ODQ5IGggNS4wODg1OSB2IDguNjg4NDkgaCAxMC41MDE5NyB2IDQuMjc2NTggaCAtMTAu
+NTAxOTcgdiAxMy43NzcwNyBxIDAsMi4zODE4OSAwLjEwODI3LDMuNzM1MjQgMC4xMDgyNiwxLjMy
+NjI4IDAuNzU3ODcsMi40OTAxNiAwLjU5NTQ3LDEuMDgyNjggMS42MjQwMiwxLjU5Njk1IDEuMDU1
+NjEsMC40ODcyMSAzLjE5MzksMC40ODcyMSAxLjI0NTA4LDAgMi41OTg0MiwtMC4zNTE4NyAxLjM1
+MzM1LC0wLjM3ODk0IDEuOTQ4ODIsLTAuNjIyNTQgaCAwLjI3MDY3IHoiCiAgICAgICAgIHN0eWxl
+PSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDQ5IiAvPgogICAgICA8cGF0
+aAogICAgICAgICBkPSJtIDI5MS4wNjkyOCwyNTUuNjQ2MzMgaCAtMjIuMjc2MDkgcSAwLDIuNzg3
+ODkgMC44MzkwNyw0Ljg3MjA1IDAuODM5MDgsMi4wNTcwOCAyLjMwMDY5LDMuMzgzMzYgMS40MDc0
+OCwxLjI5OTIyIDMuMzI5MjQsMS45NDg4MiAxLjk0ODgyLDAuNjQ5NjEgNC4yNzY1NywwLjY0OTYx
+IDMuMDg1NjMsMCA2LjE5ODMzLC0xLjIxODAxIDMuMTM5NzcsLTEuMjQ1MDggNC40NjYwNSwtMi40
+MzYwMyBoIDAuMjcwNjcgdiA1LjU0ODczIHEgLTIuNTcxMzYsMS4wODI2NyAtNS4yNTA5OSwxLjgx
+MzQ4IC0yLjY3OTYzLDAuNzMwODEgLTUuNjI5OTIsMC43MzA4MSAtNy41MjQ2MSwwIC0xMS43NDcw
+NiwtNC4wNjAwNCAtNC4yMjI0NCwtNC4wODcxMSAtNC4yMjI0NCwtMTEuNTg0NjUgMCwtNy40MTYz
+NSA0LjAzMjk3LC0xMS43NzQxMyA0LjA2MDA1LC00LjM1Nzc3IDEwLjY2NDM4LC00LjM1Nzc3IDYu
+MTE3MTMsMCA5LjQxOTMsMy41NzI4MyAzLjMyOTIzLDMuNTcyODQgMy4zMjkyMywxMC4xNTAxMSB6
+IG0gLTQuOTUzMjUsLTMuODk3NjQgcSAtMC4wMjcxLC00LjAwNTkxIC0yLjAzMDAyLC02LjE5ODMz
+IC0xLjk3NTg5LC0yLjE5MjQzIC02LjAzNTkzLC0yLjE5MjQzIC00LjA4NzExLDAgLTYuNTIzMTMs
+Mi40MDg5NiAtMi40MDg5NiwyLjQwODk2IC0yLjczMzc2LDUuOTgxOCB6IgogICAgICAgICBzdHls
+ZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg1MSIgLz4KICAgICAgPHBh
+dGgKICAgICAgICAgZD0ibSAzMjQuOTU3MDksMjcwLjIzNTQxIGggLTYuNDE0ODcgbCAtOC41ODAy
+MiwtMTEuNjExNzIgLTguNjM0MzUsMTEuNjExNzIgaCAtNS45Mjc2NiBsIDExLjgwMTE4LC0xNS4w
+NzYyOSAtMTEuNjkyOTIsLTE1LjE1NzQ5IGggNi40MTQ4NyBsIDguNTI2MDksMTEuNDIyMjUgOC41
+NTMxNSwtMTEuNDIyMjUgaCA1Ljk1NDczIGwgLTExLjg4MjM5LDE0Ljg4NjgyIHoiCiAgICAgICAg
+IHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDUzIiAvPgogICAg
+ICA8cGF0aAogICAgICAgICBkPSJtIDM0Ny4yODczMSwyNjkuOTY0NzQgcSAtMS40MzQ1NSwwLjM3
+ODk0IC0zLjEzOTc2LDAuNjIyNTQgLTEuNjc4MTUsMC4yNDM2IC0zLjAwNDQzLDAuMjQzNiAtNC42
+Mjg0NSwwIC03LjAzNzQxLC0yLjQ5MDE2IC0yLjQwODk2LC0yLjQ5MDE2IC0yLjQwODk2LC03Ljk4
+NDc1IHYgLTE2LjA3Nzc2IGggLTMuNDM3NSB2IC00LjI3NjU4IGggMy40Mzc1IHYgLTguNjg4NDkg
+aCA1LjA4ODU5IHYgOC42ODg0OSBoIDEwLjUwMTk3IHYgNC4yNzY1OCBoIC0xMC41MDE5NyB2IDEz
+Ljc3NzA3IHEgMCwyLjM4MTg5IDAuMTA4MjcsMy43MzUyNCAwLjEwODI2LDEuMzI2MjggMC43NTc4
+NywyLjQ5MDE2IDAuNTk1NDcsMS4wODI2OCAxLjYyNDAyLDEuNTk2OTUgMS4wNTU2MSwwLjQ4NzIx
+IDMuMTkzOSwwLjQ4NzIxIDEuMjQ1MDgsMCAyLjU5ODQyLC0wLjM1MTg3IDEuMzUzMzUsLTAuMzc4
+OTQgMS45NDg4MiwtMC42MjI1NCBoIDAuMjcwNjcgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6
+ZTo1NS40MzMxcHgiCiAgICAgICAgIGlkPSJwYXRoNTUiIC8+CiAgICAgIDxwYXRoCiAgICAgICAg
+IGQ9Im0gMTQ4Ljc1MTI4LDMwOS4yOTMwMSAtNy44NzY0OCwzMC4yMzM3OCBoIC00LjcwOTY0IGwg
+LTcuNzY4MjIsLTIzLjMwNDY0IC03LjcxNDA4LDIzLjMwNDY0IGggLTQuNjgyNTggbCAtNy45NTc2
+OCwtMzAuMjMzNzggaCA1LjMwNTEyIGwgNS41NDg3MywyMy40MTI5MSA3LjU1MTY3LC0yMy40MTI5
+MSBoIDQuMTk1MzggbCA3Ljc0MTE1LDIzLjQxMjkxIDUuMjUwOTgsLTIzLjQxMjkxIHoiCiAgICAg
+ICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBpZD0icGF0aDU3IiAvPgog
+ICAgICA8cGF0aAogICAgICAgICBkPSJtIDE4MS4zNjY5NSwzMzkuNTI2NzkgaCAtNS4wODg1OCB2
+IC0xNy4yMTQ1OCBxIDAsLTIuMDg0MTUgLTAuMjQzNjEsLTMuODk3NjQgLTAuMjQzNiwtMS44NDA1
+NSAtMC44OTMyMSwtMi44NjkwOSAtMC42NzY2NywtMS4xMzY4MSAtMS45NDg4MiwtMS42NzgxNSAt
+MS4yNzIxNCwtMC41Njg0MSAtMy4zMDIxNiwtMC41Njg0MSAtMi4wODQxNiwwIC00LjM1Nzc4LDEu
+MDI4NTUgLTIuMjczNjIsMS4wMjg1NCAtNC4zNTc3OCwyLjYyNTQ5IHYgMjIuNTczODMgaCAtNS4w
+ODg1OCB2IC00Mi4xMTYxNiBoIDUuMDg4NTggdiAxNS4yMzg2OCBxIDIuMzgxODksLTEuOTc1ODgg
+NC45MjYxOCwtMy4wODU2MyAyLjU0NDMsLTEuMTA5NzQgNS4yMjM5MiwtMS4xMDk3NCA0Ljg5OTEy
+LDAgNy40NzA0OCwyLjk1MDMgMi41NzEzNiwyLjk1MDI5IDIuNTcxMzYsOC40OTkwMiB6IgogICAg
+ICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg1OSIgLz4K
+ICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAxOTYuNjMyNzEsMzA0LjIzMTUgaCAtNS43MzgyIHYg
+LTUuMjc4MDYgaCA1LjczODIgeiBtIC0wLjMyNDgxLDM1LjI5NTI5IGggLTUuMDg4NTggdiAtMzAu
+MjMzNzggaCA1LjA4ODU4IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4Igog
+ICAgICAgICBpZD0icGF0aDYxIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDIyOC43MzQx
+LDMzNy42MzIxIHEgLTIuNTQ0MjksMS4yMTgwMiAtNC44NDQ5OCwxLjg5NDY5IC0yLjI3MzYyLDAu
+Njc2NjcgLTQuODQ0OTgsMC42NzY2NyAtMy4yNzUxLDAgLTYuMDA4ODYsLTAuOTQ3MzQgLTIuNzMz
+NzcsLTAuOTc0NDEgLTQuNjgyNTksLTIuOTIzMjMgLTEuOTc1ODgsLTEuOTQ4ODIgLTMuMDU4NTYs
+LTQuOTI2MTggLTEuMDgyNjgsLTIuOTc3MzcgLTEuMDgyNjgsLTYuOTU2MjEgMCwtNy40MTYzNCA0
+LjA2MDA0LC0xMS42Mzg3OCA0LjA4NzExLC00LjIyMjQ1IDEwLjc3MjY1LC00LjIyMjQ1IDIuNTk4
+NDIsMCA1LjA4ODU4LDAuNzMwODEgMi41MTcyMywwLjczMDgxIDQuNjAxMzgsMS43ODY0MiB2IDUu
+NjU2OTkgaCAtMC4yNzA2NyBxIC0yLjMyNzc1LC0xLjgxMzQ4IC00LjgxNzkxLC0yLjc4Nzg5IC0y
+LjQ2MzA5LC0wLjk3NDQxIC00LjgxNzkyLC0wLjk3NDQxIC00LjMzMDcxLDAgLTYuODQ3OTMsMi45
+MjMyMyAtMi40OTAxNiwyLjg5NjE2IC0yLjQ5MDE2LDguNTI2MDggMCw1LjQ2NzUzIDIuNDM2MDIs
+OC40MTc4MiAyLjQ2MzA5LDIuOTIzMjMgNi45MDIwNywyLjkyMzIzIDEuNTQyODIsMCAzLjEzOTc3
+LC0wLjQwNiAxLjU5Njk1LC0wLjQwNjAxIDIuODY5MDksLTEuMDU1NjEgMS4xMDk3NSwtMC41Njg0
+MSAyLjA4NDE2LC0xLjE5MDk1IDAuOTc0NDEsLTAuNjQ5NjEgMS41NDI4MSwtMS4xMDk3NCBoIDAu
+MjcwNjcgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTo1NS40MzMxcHgiCiAgICAgICAgIGlk
+PSJwYXRoNjMiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjYwLjUzNzc2LDMzOS41MjY3
+OSBoIC01LjA4ODU5IHYgLTE3LjIxNDU4IHEgMCwtMi4wODQxNSAtMC4yNDM2LC0zLjg5NzY0IC0w
+LjI0MzYsLTEuODQwNTUgLTAuODkzMjEsLTIuODY5MDkgLTAuNjc2NjcsLTEuMTM2ODEgLTEuOTQ4
+ODIsLTEuNjc4MTUgLTEuMjcyMTUsLTAuNTY4NDEgLTMuMzAyMTcsLTAuNTY4NDEgLTIuMDg0MTUs
+MCAtNC4zNTc3NywxLjAyODU1IC0yLjI3MzYzLDEuMDI4NTQgLTQuMzU3NzgsMi42MjU0OSB2IDIy
+LjU3MzgzIGggLTUuMDg4NTkgdiAtNDIuMTE2MTYgaCA1LjA4ODU5IHYgMTUuMjM4NjggcSAyLjM4
+MTg5LC0xLjk3NTg4IDQuOTI2MTgsLTMuMDg1NjMgMi41NDQyOSwtMS4xMDk3NCA1LjIyMzkyLC0x
+LjEwOTc0IDQuODk5MTIsMCA3LjQ3MDQ4LDIuOTUwMyAyLjU3MTM2LDIuOTUwMjkgMi41NzEzNiw4
+LjQ5OTAyIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4IgogICAgICAgICBp
+ZD0icGF0aDY1IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDE0OC43NTEyOCwzNzguNTg0
+NCAtNy44NzY0OCwzMC4yMzM3NyBoIC00LjcwOTY0IGwgLTcuNzY4MjIsLTIzLjMwNDY0IC03Ljcx
+NDA4LDIzLjMwNDY0IGggLTQuNjgyNTggTCAxMDguMDQyNiwzNzguNTg0NCBoIDUuMzA1MTIgbCA1
+LjU0ODczLDIzLjQxMjkgNy41NTE2NywtMjMuNDEyOSBoIDQuMTk1MzggbCA3Ljc0MTE1LDIzLjQx
+MjkgNS4yNTA5OCwtMjMuNDEyOSB6IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFw
+eCIKICAgICAgICAgaWQ9InBhdGg2NyIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAxNzQu
+OTUyMDksMzg0LjEzMzEyIGggLTAuMjcwNjcgcSAtMS4xMzY4MiwtMC4yNzA2NyAtMi4yMTk0OSwt
+MC4zNzg5NCAtMS4wNTU2MSwtMC4xMzUzMyAtMi41MTcyMywtMC4xMzUzMyAtMi4zNTQ4MiwwIC00
+LjU0NzI1LDEuMDU1NjEgLTIuMTkyNDIsMS4wMjg1NCAtNC4yMjI0NCwyLjY3OTYzIHYgMjEuNDY0
+MDggaCAtNS4wODg1OCBWIDM3OC41ODQ0IGggNS4wODg1OCB2IDQuNDY2MDQgcSAzLjAzMTUsLTIu
+NDM2MDIgNS4zMzIxOSwtMy40Mzc1IDIuMzI3NzYsLTEuMDI4NTQgNC43MzY3MSwtMS4wMjg1NCAx
+LjMyNjI4LDAgMS45MjE3NiwwLjA4MTIgMC41OTU0NywwLjA1NDEgMS43ODY0MiwwLjI0MzYgeiIK
+ICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZTo1NS40MzMxcHgiCiAgICAgICAgIGlkPSJwYXRoNjki
+IC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMjAyLjI2MjYzLDQwOC44MTgxNyBoIC01LjA2
+MTUyIHYgLTMuMjIwOTYgcSAtMC42NzY2NywwLjQ2MDEzIC0xLjg0MDU1LDEuMjk5MjEgLTEuMTM2
+ODEsMC44MTIwMSAtMi4yMTk0OSwxLjI5OTIxIC0xLjI3MjE1LDAuNjIyNTQgLTIuOTIzMjMsMS4w
+Mjg1NSAtMS42NTEwOCwwLjQzMzA3IC0zLjg3MDU3LDAuNDMzMDcgLTQuMDg3MTEsMCAtNi45Mjkx
+NCwtMi43MDY3IC0yLjg0MjAzLC0yLjcwNjY5IC0yLjg0MjAzLC02LjkwMjA3IDAsLTMuNDM3NSAx
+LjQ2MTYyLC01LjU0ODcyIDEuNDg4NjgsLTIuMTM4MjkgNC4yMjI0NCwtMy4zNTYzIDIuNzYwODMs
+LTEuMjE4MDEgNi42MzE0LC0xLjY1MTA5IDMuODcwNTcsLTAuNDMzMDcgOC4zMDk1NSwtMC42NDk2
+IHYgLTAuNzg0OTQgcSAwLC0xLjczMjI5IC0wLjYyMjU0LC0yLjg2OTEgLTAuNTk1NDcsLTEuMTM2
+ODEgLTEuNzMyMjgsLTEuNzg2NDIgLTEuMDgyNjgsLTAuNjIyNTQgLTIuNTk4NDMsLTAuODM5MDcg
+LTEuNTE1NzUsLTAuMjE2NTQgLTMuMTY2ODMsLTAuMjE2NTQgLTIuMDAyOTUsMCAtNC40NjYwNSww
+LjU0MTM0IC0yLjQ2MzA5LDAuNTE0MjcgLTUuMDg4NTgsMS41MTU3NSBoIC0wLjI3MDY3IFYgMzc5
+LjIzNCBxIDEuNDg4NjgsLTAuNDA2IDQuMzAzNjQsLTAuODkzMjEgMi44MTQ5NiwtMC40ODcyIDUu
+NTQ4NzMsLTAuNDg3MiAzLjE5MzksMCA1LjU0ODcyLDAuNTQxMzQgMi4zODE4OSwwLjUxNDI3IDQu
+MTE0MTgsMS43ODY0MiAxLjcwNTIxLDEuMjQ1MDcgMi41OTg0MiwzLjIyMDk2IDAuODkzMjEsMS45
+NzU4OSAwLjg5MzIxLDQuODk5MTIgeiBtIC01LjA2MTUyLC03LjQ0MzQxIHYgLTguNDE3ODIgcSAt
+Mi4zMjc3NSwwLjEzNTM0IC01LjQ5NDU5LDAuNDA2MDEgLTMuMTM5NzYsMC4yNzA2NyAtNC45ODAz
+MSwwLjc4NDk0IC0yLjE5MjQzLDAuNjIyNTQgLTMuNTQ1NzcsMS45NDg4MiAtMS4zNTMzNSwxLjI5
+OTIxIC0xLjM1MzM1LDMuNTk5OSAwLDIuNTk4NDMgMS41Njk4OCwzLjkyNDcxIDEuNTY5ODgsMS4y
+OTkyMSA0Ljc5MDg1LDEuMjk5MjEgMi42Nzk2MywwIDQuODk5MTIsLTEuMDI4NTQgMi4yMTk0OSwt
+MS4wNTU2MSA0LjExNDE3LC0yLjUxNzIzIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUu
+NDMzMXB4IgogICAgICAgICBpZD0icGF0aDcxIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJt
+IDIzOC42Njc2NywzOTMuMzM1ODggcSAwLDMuNjgxMSAtMS4wNTU2MSw2LjczOTY3IC0xLjA1NTYx
+LDMuMDMxNSAtMi45NzczNiw1LjE0MjcyIC0xLjc4NjQyLDIuMDAyOTUgLTQuMjIyNDUsMy4xMTI3
+IC0yLjQwODk1LDEuMDgyNjggLTUuMTE1NjUsMS4wODI2OCAtMi4zNTQ4MiwwIC00LjI3NjU3LC0w
+LjUxNDI4IC0xLjg5NDY5LC0wLjUxNDI3IC0zLjg3MDU4LC0xLjU5Njk1IHYgMTIuNjY3MzMgaCAt
+NS4wODg1OCBWIDM3OC41ODQ0IGggNS4wODg1OCB2IDMuMTY2ODMgcSAyLjAzMDAyLC0xLjcwNTIy
+IDQuNTQ3MjUsLTIuODQyMDMgMi41NDQyOSwtMS4xNjM4OCA1LjQxMzM5LC0xLjE2Mzg4IDUuNDY3
+NTIsMCA4LjQ5OTAyLDQuMTQxMjQgMy4wNTg1Niw0LjExNDE4IDMuMDU4NTYsMTEuNDQ5MzIgeiBt
+IC01LjI1MDk4LDAuMTM1MzMgcSAwLC01LjQ2NzUyIC0xLjg2NzYyLC04LjE3NDIxIC0xLjg2NzYy
+LC0yLjcwNjcgLTUuNzM4MiwtMi43MDY3IC0yLjE5MjQyLDAgLTQuNDExOTEsMC45NDczNSAtMi4y
+MTk0OSwwLjk0NzM0IC00LjI0OTUxLDIuNDkwMTYgdiAxNy4xMzMzNyBxIDIuMTY1MzYsMC45NzQ0
+MSAzLjcwODE3LDEuMzI2MjggMS41Njk4OSwwLjM1MTg3IDMuNTQ1NzcsMC4zNTE4NyA0LjI0OTUx
+LDAgNi42MzE0LC0yLjg2OTA5IDIuMzgxOSwtMi44NjkxIDIuMzgxOSwtOC40OTkwMyB6IgogICAg
+ICAgICBzdHlsZT0iZm9udC1zaXplOjU1LjQzMzFweCIKICAgICAgICAgaWQ9InBhdGg3MyIgLz4K
+ICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAyNjguMTk3NzIsNDAwLjEwMjYyIHEgMCw0LjE0MTI0
+IC0zLjQzNzUsNi43OTM4IC0zLjQxMDQ0LDIuNjUyNTYgLTkuMzM4MSwyLjY1MjU2IC0zLjM1NjMs
+MCAtNi4xNzEyNiwtMC43ODQ5NCAtMi43ODc5LC0wLjgxMjAxIC00LjY4MjU4LC0xLjc1OTM1IHYg
+LTUuNzExMTMgaCAwLjI3MDY3IHEgMi40MDg5NSwxLjgxMzQ5IDUuMzU5MjUsMi44OTYxNiAyLjk1
+MDMsMS4wNTU2MiA1LjY1Njk5LDEuMDU1NjIgMy4zNTYzLDAgNS4yNTA5OSwtMS4wODI2OCAxLjg5
+NDY4LC0xLjA4MjY4IDEuODk0NjgsLTMuNDEwNDQgMCwtMS43ODY0MiAtMS4wMjg1NCwtMi43MDY2
+OSAtMS4wMjg1NCwtMC45MjAyOCAtMy45NTE3NywtMS41Njk4OCAtMS4wODI2OCwtMC4yNDM2MSAt
+Mi44NDIwMywtMC41Njg0MSAtMS43MzIyOSwtMC4zMjQ4IC0zLjE2NjgzLC0wLjcwMzc0IC0zLjk3
+ODg1LC0xLjA1NTYxIC01LjY1NywtMy4wODU2MyAtMS42NTEwOCwtMi4wNTcwOSAtMS42NTEwOCwt
+NS4wMzQ0NSAwLC0xLjg2NzYyIDAuNzU3ODcsLTMuNTE4NzEgMC43ODQ5NSwtMS42NTEwOCAyLjM1
+NDgzLC0yLjk1MDI5IDEuNTE1NzUsLTEuMjcyMTUgMy44NDM1MSwtMi4wMDI5NiAyLjM1NDgyLC0w
+Ljc1Nzg3IDUuMjUwOTgsLTAuNzU3ODcgMi43MDY3LDAgNS40Njc1MiwwLjY3NjY3IDIuNzg3OSww
+LjY0OTYxIDQuNjI4NDUsMS41OTY5NSB2IDUuNDQwNDYgaCAtMC4yNzA2NyBxIC0xLjk0ODgyLC0x
+LjQzNDU1IC00LjczNjcxLC0yLjQwODk2IC0yLjc4NzksLTEuMDAxNDggLTUuNDY3NTIsLTEuMDAx
+NDggLTIuNzg3OSwwIC00LjcwOTY1LDEuMDgyNjggLTEuOTIxNzYsMS4wNTU2MSAtMS45MjE3Niwz
+LjE2NjgzIDAsMS44Njc2MiAxLjE2Mzg4LDIuODE0OTYgMS4xMzY4MSwwLjk0NzM1IDMuNjgxMTEs
+MS41NDI4MiAxLjQwNzQ4LDAuMzI0OCAzLjEzOTc2LDAuNjQ5NjEgMS43NTkzNSwwLjMyNDggMi45
+MjMyMywwLjU5NTQ3IDMuNTQ1NzcsMC44MTIwMSA1LjQ2NzUyLDIuNzg3OSAxLjkyMTc2LDIuMDAy
+OTUgMS45MjE3Niw1LjMwNTEyIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6NTUuNDMzMXB4
+IgogICAgICAgICBpZD0icGF0aDc1IiAvPgogICAgPC9nPgogICAgPGcKICAgICAgIGFyaWEtbGFi
+ZWw9IlVQUEVSIgogICAgICAgaWQ9InQyIgogICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3
+cHg7bGluZS1oZWlnaHQ6MS4yNSIKICAgICAgIGlua3NjYXBlOmxhYmVsPSIjdGV4dDM3MjciPgog
+ICAgICA8cGF0aAogICAgICAgICBkPSJtIDIwOS40NjAzMSw5NS43MTc0MzggcSAwLDEuMTYwMTU5
+IC0wLjI1NzgxLDIuMDI2Njk3IC0wLjI1MDY2LDAuODU5Mzc3IC0wLjgzMDc0LDEuNDMyMjk1IC0w
+LjU1MTQzLDAuNTQ0MjcyIC0xLjI4OTA2LDAuNzk0OTI0IC0wLjczNzYzLDAuMjUwNjU2IC0xLjcx
+ODc2LDAuMjUwNjU2IC0xLjAwMjYsMCAtMS43NDc0LC0wLjI2NDk3OSAtMC43NDQ3OSwtMC4yNjQ5
+NzQgLTEuMjUzMjUsLTAuNzgwNjAxIC0wLjU4MDA4LC0wLjU4NzI0MSAtMC44Mzc5LC0xLjQxNzk3
+MiAtMC4yNTA2NSwtMC44MzA3MzEgLTAuMjUwNjUsLTIuMDQxMDIgdiAtNi4zODA4NzQgaCAxLjQx
+Nzk3IHYgNi40NTI0ODkgcSAwLDAuODY2NTM4IDAuMTE0NTksMS4zNjc4NDIgMC4xMjE3NCwwLjUw
+MTMwMyAwLjQwMTA0LDAuOTA5NTA3IDAuMzE1MTEsMC40NjU0OTYgMC44NTIyMiwwLjcwMTgyNCAw
+LjU0NDI3LDAuMjM2MzI5IDEuMzAzMzgsMC4yMzYzMjkgMC43NjYyOCwwIDEuMzAzMzksLTAuMjI5
+MTY3IDAuNTM3MTEsLTAuMjM2MzI5IDAuODU5MzgsLTAuNzA4OTg2IDAuMjc5MywtMC40MDgyMDQg
+MC4zOTM4OCwtMC45MzA5OTIgMC4xMjE3NSwtMC41Mjk5NDkgMC4xMjE3NSwtMS4zMTA1NSB2IC02
+LjQ4ODI5NiBoIDEuNDE3OTcgeiIKICAgICAgICAgaWQ9InBhdGg5OSIgLz4KICAgICAgPHBhdGgK
+ICAgICAgICAgZD0ibSAyMTkuMTQyNjIsOTIuNTU5MjI4IHEgMCwwLjcwODk4NiAtMC4yNTA2NSwx
+LjMxNzcxMSAtMC4yNDM0OSwwLjYwMTU2NCAtMC42ODc1LDEuMDQ1NTc1IC0wLjU1MTQzLDAuNTUx
+NDM0IC0xLjMwMzM5LDAuODMwNzMxIC0wLjc1MTk1LDAuMjcyMTM2IC0xLjg5Nzc5LDAuMjcyMTM2
+IGggLTEuNDE3OTcgViAxMDAgaCAtMS40MTc5NyBWIDg5LjMzNjU2NCBoIDIuODkzMjMgcSAwLjk1
+OTY0LDAgMS42MjU2NiwwLjE2NDcxNCAwLjY2NjAxLDAuMTU3NTUyIDEuMTgxNjQsMC41MDEzMDMg
+MC42MDg3MywwLjQwODIwNCAwLjkzODE1LDEuMDE2OTMgMC4zMzY1OSwwLjYwODcyNSAwLjMzNjU5
+LDEuNTM5NzE3IHogbSAtMS40NzUyNiwwLjAzNTgxIHEgMCwtMC41NTE0MzMgLTAuMTkzMzYsLTAu
+OTU5NjM4IC0wLjE5MzM2LC0wLjQwODIwNCAtMC41ODcyNCwtMC42NjYwMTcgLTAuMzQzNzUsLTAu
+MjIyMDA1IC0wLjc4Nzc2LC0wLjMxNTEwNSAtMC40MzY4NSwtMC4xMDAyNiAtMS4xMTAwMywtMC4x
+MDAyNiBoIC0xLjQwMzY1IHYgNC4yNjEwNzcgaCAxLjE5NTk2IHEgMC44NTkzOCwwIDEuMzk2NDks
+LTAuMTUwMzkxIDAuNTM3MTEsLTAuMTU3NTUyIDAuODczNywtMC40OTQxNDEgMC4zMzY1OSwtMC4z
+NDM3NTEgMC40NzI2NiwtMC43MjMzMDkgMC4xNDMyMywtMC4zNzk1NTkgMC4xNDMyMywtMC44NTIy
+MTYgeiIKICAgICAgICAgaWQ9InBhdGgxMDEiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0g
+MjI3Ljk4NzA0LDkyLjU1OTIyOCBxIDAsMC43MDg5ODYgLTAuMjUwNjUsMS4zMTc3MTEgLTAuMjQz
+NDksMC42MDE1NjQgLTAuNjg3NSwxLjA0NTU3NSAtMC41NTE0MywwLjU1MTQzNCAtMS4zMDMzOSww
+LjgzMDczMSAtMC43NTE5NSwwLjI3MjEzNiAtMS44OTc3OSwwLjI3MjEzNiBoIC0xLjQxNzk3IFYg
+MTAwIGggLTEuNDE3OTcgViA4OS4zMzY1NjQgaCAyLjg5MzIzIHEgMC45NTk2NCwwIDEuNjI1NjYs
+MC4xNjQ3MTQgMC42NjYwMSwwLjE1NzU1MiAxLjE4MTY0LDAuNTAxMzAzIDAuNjA4NzMsMC40MDgy
+MDQgMC45MzgxNSwxLjAxNjkzIDAuMzM2NTksMC42MDg3MjUgMC4zMzY1OSwxLjUzOTcxNyB6IG0g
+LTEuNDc1MjYsMC4wMzU4MSBxIDAsLTAuNTUxNDMzIC0wLjE5MzM2LC0wLjk1OTYzOCAtMC4xOTMz
+NiwtMC40MDgyMDQgLTAuNTg3MjQsLTAuNjY2MDE3IC0wLjM0Mzc1LC0wLjIyMjAwNSAtMC43ODc3
+NiwtMC4zMTUxMDUgLTAuNDM2ODUsLTAuMTAwMjYgLTEuMTEwMDMsLTAuMTAwMjYgaCAtMS40MDM2
+NSB2IDQuMjYxMDc3IGggMS4xOTU5NiBxIDAuODU5MzgsMCAxLjM5NjQ5LC0wLjE1MDM5MSAwLjUz
+NzExLC0wLjE1NzU1MiAwLjg3MzcsLTAuNDk0MTQxIDAuMzM2NTksLTAuMzQzNzUxIDAuNDcyNjYs
+LTAuNzIzMzA5IDAuMTQzMjMsLTAuMzc5NTU5IDAuMTQzMjMsLTAuODUyMjE2IHoiCiAgICAgICAg
+IGlkPSJwYXRoMTAzIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDIzNi44ODE1OSwxMDAg
+aCAtNy4wMjU0IFYgODkuMzM2NTY0IGggNy4wMjU0IHYgMS4yNjA0MiBoIC01LjYwNzQzIHYgMi45
+MjE4ODEgaCA1LjYwNzQzIHYgMS4yNjA0MiBoIC01LjYwNzQzIHYgMy45NjAyOTUgaCA1LjYwNzQz
+IHoiCiAgICAgICAgIGlkPSJwYXRoMTA1IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDI0
+Ny45NTMyNCwxMDAgaCAtMS44NDA1IGwgLTMuNTY2NDIsLTQuMjM5NTkzIGggLTEuOTk4MDUgViAx
+MDAgSCAyMzkuMTMwMyBWIDg5LjMzNjU2NCBoIDIuOTg2MzQgcSAwLjk2Njc5LDAgMS42MTEzMyww
+LjEyODkwNyAwLjY0NDUzLDAuMTIxNzQ1IDEuMTYwMTYsMC40NDQwMTEgMC41ODAwOCwwLjM2NTIz
+NSAwLjkwMjM0LDAuOTIzODMgMC4zMjk0MywwLjU1MTQzNCAwLjMyOTQzLDEuNDAzNjQ5IDAsMS4x
+NTI5OTggLTAuNTgwMDgsMS45MzM1OTkgLTAuNTgwMDgsMC43NzM0MzkgLTEuNTk3MDEsMS4xNjcz
+MiB6IG0gLTMuMzE1NzcsLTcuNjYyNzc4IHEgMCwtMC40NTgzMzQgLTAuMTY0NzEsLTAuODA5MjQ3
+IC0wLjE1NzU1LC0wLjM1ODA3MyAtMC41Mjk5NSwtMC42MDE1NjQgLTAuMzA3OTQsLTAuMjA3Njgy
+IC0wLjczMDQ3LC0wLjI4NjQ1OSAtMC40MjI1MywtMC4wODU5NCAtMC45OTU0NCwtMC4wODU5NCBo
+IC0xLjY2ODYzIHYgNC4wMjQ3NDkgaCAxLjQzMjMgcSAwLjY3MzE4LDAgMS4xNzQ0OCwtMC4xMTQ1
+ODQgMC41MDEzLC0wLjEyMTc0NSAwLjg1MjIxLC0wLjQ0NDAxMSAwLjMyMjI3LC0wLjMwMDc4MiAw
+LjQ3MjY2LC0wLjY4NzUwMiAwLjE1NzU1LC0wLjM5Mzg4MSAwLjE1NzU1LC0wLjk5NTQ0NSB6Igog
+ICAgICAgICBpZD0icGF0aDEwNyIgLz4KICAgIDwvZz4KICAgIDxnCiAgICAgICBhcmlhLWxhYmVs
+PSJNdWx0aSBsaW5lCnRleHQKRk9PIgogICAgICAgaWQ9InQzIgogICAgICAgc3R5bGU9ImZvbnQt
+c2l6ZToxMC41ODMzcHg7bGluZS1oZWlnaHQ6MS4yNSIKICAgICAgIGlua3NjYXBlOmxhYmVsPSIj
+dGV4dDM3MzUiPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMxMC45Mjg0MSwxMDAgaCAtMS40
+MTc5NyB2IC05LjE4ODE3MiBsIC0yLjk2NDg1LDYuMjUxOTY3IGggLTAuODQ1MDYgbCAtMi45NDMz
+NiwtNi4yNTE5NjcgViAxMDAgaCAtMS4zMjQ4OCBWIDg5LjMzNjU2NCBoIDEuOTMzNiBsIDIuODQz
+MTEsNS45MzY4NjMgMi43NSwtNS45MzY4NjMgaCAxLjk2OTQxIHoiCiAgICAgICAgIHN0eWxlPSJm
+b250LXNpemU6MTQuNjY2N3B4IgogICAgICAgICBpZD0icGF0aDExMCIgLz4KICAgICAgPHBhdGgK
+ICAgICAgICAgZD0ibSAzMjAuMzE3MSwxMDAgaCAtMS4zNDYzNSB2IC0wLjg4ODAyMyBxIC0wLjY4
+MDM0LDAuNTM3MTExIC0xLjMwMzM5LDAuODIzNTcgLTAuNjIzMDUsMC4yODY0NjMgLTEuMzc1LDAu
+Mjg2NDYzIC0xLjI2MDQyLDAgLTEuOTYyMjUsLTAuNzY2MjgyIC0wLjcwMTgyLC0wLjc3MzQzOSAt
+MC43MDE4MiwtMi4yNjMwMjYgdiAtNS4xOTIwNjkgaCAxLjM0NjM1IHYgNC41NTQ2OTggcSAwLDAu
+NjA4NzI1IDAuMDU3MywxLjA0NTU3NSAwLjA1NzMsMC40Mjk2ODggMC4yNDM0OSwwLjczNzYzMiAw
+LjE5MzM2LDAuMzE1MTA1IDAuNTAxMywwLjQ1ODMzNCAwLjMwNzk0LDAuMTQzMjMgMC44OTUxOCww
+LjE0MzIzIDAuNTIyNzksMCAxLjEzODY4LC0wLjI3MjEzNiAwLjYyMzA1LC0wLjI3MjEzNiAxLjE2
+MDE2LC0wLjY5NDY2MyB2IC01Ljk3MjY3IGggMS4zNDYzNSB6IgogICAgICAgICBzdHlsZT0iZm9u
+dC1zaXplOjE0LjY2NjdweCIKICAgICAgICAgaWQ9InBhdGgxMTIiIC8+CiAgICAgIDxwYXRoCiAg
+ICAgICAgIGQ9Im0gMzI0LjMyNzUzLDEwMCBoIC0xLjM0NjM2IFYgODguODU2NzQ1IGggMS4zNDYz
+NiB6IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2NjdweCIKICAgICAgICAgaWQ9InBh
+dGgxMTQiIC8+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Im0gMzMxLjE0NTI1LDk5LjkyODM4NSBx
+IC0wLjM3OTU1LDAuMTAwMjY1IC0wLjgzMDczLDAuMTY0NzE1IC0wLjQ0NDAxLDAuMDY0NCAtMC43
+OTQ5MiwwLjA2NDQgLTEuMjI0NjEsMCAtMS44NjE5OCwtMC42NTg4NTMgLTAuNjM3MzgsLTAuNjU4
+ODU2IC0wLjYzNzM4LC0yLjExMjYzNSB2IC00LjI1MzkxNiBoIC0wLjkwOTUgdiAtMS4xMzE1MTMg
+aCAwLjkwOTUgdiAtMi4yOTg4MzQgaCAxLjM0NjM2IHYgMi4yOTg4MzQgaCAyLjc3ODY1IHYgMS4x
+MzE1MTMgaCAtMi43Nzg2NSB2IDMuNjQ1MTkgcSAwLDAuNjMwMjEgMC4wMjg2LDAuOTg4Mjg0IDAu
+MDI4NiwwLjM1MDkxMiAwLjIwMDUyLDAuNjU4ODU2IDAuMTU3NTUsMC4yODY0NTkgMC40Mjk2OSww
+LjQyMjUyNyAwLjI3OTI5LDAuMTI4OTA2IDAuODQ1MDUsMC4xMjg5MDYgMC4zMjk0MywwIDAuNjg3
+NSwtMC4wOTMxIDAuMzU4MDgsLTAuMTAwMjYxIDAuNTE1NjMsLTAuMTY0NzE0IGggMC4wNzE2IHoi
+CiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQuNjY2N3B4IgogICAgICAgICBpZD0icGF0aDEx
+NiIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAzMzQuMjE3NTMsOTAuNjYxNDM3IGggLTEu
+NTE4MjQgdiAtMS4zOTY0ODggaCAxLjUxODI0IHogTSAzMzQuMTMxNTksMTAwIGggLTEuMzQ2MzYg
+diAtNy45OTkzNjcgaCAxLjM0NjM2IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQuNjY2
+N3B4IgogICAgICAgICBpZD0icGF0aDExOCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAz
+NDMuMzEyNiwxMDAgaCAtMS4zNDYzNiBWIDg4Ljg1Njc0NSBoIDEuMzQ2MzYgeiIKICAgICAgICAg
+c3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRoMTIwIiAvPgogICAg
+ICA8cGF0aAogICAgICAgICBkPSJtIDM0Ny40MjMyOSw5MC42NjE0MzcgaCAtMS41MTgyNCB2IC0x
+LjM5NjQ4OCBoIDEuNTE4MjQgeiBNIDM0Ny4zMzczNSwxMDAgaCAtMS4zNDYzNiB2IC03Ljk5OTM2
+NyBoIDEuMzQ2MzYgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAg
+ICAgIGlkPSJwYXRoMTIyIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDM1Ni42OTAyMywx
+MDAgaCAtMS4zNDYzNSB2IC00LjU1NDY5OCBxIDAsLTAuNTUxNDM0IC0wLjA2NDUsLTEuMDMxMjUy
+IC0wLjA2NDUsLTAuNDg2OTgxIC0wLjIzNjMyLC0wLjc1OTExNyAtMC4xNzkwNCwtMC4zMDA3ODIg
+LTAuNTE1NjMsLTAuNDQ0MDExIC0wLjMzNjU5LC0wLjE1MDM5MSAtMC44NzM3LC0wLjE1MDM5MSAt
+MC41NTE0MywwIC0xLjE1MywwLjI3MjEzNiAtMC42MDE1NiwwLjI3MjEzNiAtMS4xNTMsMC42OTQ2
+NjMgViAxMDAgaCAtMS4zNDYzNSB2IC03Ljk5OTM2NyBoIDEuMzQ2MzUgdiAwLjg4ODAyMyBxIDAu
+NjMwMjEsLTAuNTIyNzg4IDEuMzAzMzksLTAuODE2NDA5IDAuNjczMTgsLTAuMjkzNjIgMS4zODIx
+NywtMC4yOTM2MiAxLjI5NjIyLDAgMS45NzY1NiwwLjc4MDYwMSAwLjY4MDM0LDAuNzgwNiAwLjY4
+MDM0LDIuMjQ4NzAzIHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6MTQuNjY2N3B4IgogICAg
+ICAgICBpZD0icGF0aDEyNCIgLz4KICAgICAgPHBhdGgKICAgICAgICAgZD0ibSAzNjUuOTc4Njcs
+OTYuMTM5OTY1IGggLTUuODkzOSBxIDAsMC43Mzc2MzIgMC4yMjIwMSwxLjI4OTA2NiAwLjIyMiww
+LjU0NDI3MiAwLjYwODcyLDAuODk1MTg0IDAuMzcyNCwwLjM0Mzc1MSAwLjg4MDg2LDAuNTE1NjI2
+IDAuNTE1NjMsMC4xNzE4NzUgMS4xMzE1MiwwLjE3MTg3NSAwLjgxNjQsMCAxLjYzOTk3LC0wLjMy
+MjI2NiAwLjgzMDc0LC0wLjMyOTQyOCAxLjE4MTY1LC0wLjY0NDUzMyBoIDAuMDcxNiB2IDEuNDY4
+MTAzIHEgLTAuNjgwMzQsMC4yODY0NTkgLTEuMzg5MzIsMC40Nzk4MTkgLTAuNzA4OTksMC4xOTMz
+NjEgLTEuNDg5NTksMC4xOTMzNjEgLTEuOTkwODksMCAtMy4xMDgwOCwtMS4wNzQyMjMgLTEuMTE3
+MTksLTEuMDgxMzgzIC0xLjExNzE5LC0zLjA2NTExMSAwLC0xLjk2MjI0NCAxLjA2NzA2LC0zLjEx
+NTI0MiAxLjA3NDIyLC0xLjE1Mjk5NyAyLjgyMTYyLC0xLjE1Mjk5NyAxLjYxODQ5LDAgMi40OTIx
+OSwwLjk0NTMxNSAwLjg4MDg3LDAuOTQ1MzE0IDAuODgwODcsMi42ODU1NTMgeiBtIC0xLjMxMDU1
+LC0xLjAzMTI1MiBxIC0wLjAwNywtMS4wNTk4OTkgLTAuNTM3MTIsLTEuNjM5OTc4IC0wLjUyMjc4
+LC0wLjU4MDA3OSAtMS41OTcsLTAuNTgwMDc5IC0xLjA4MTM5LDAgLTEuNzI1OTIsMC42MzczNzEg
+LTAuNjM3MzcsMC42MzczNzEgLTAuNzIzMzEsMS41ODI2ODYgeiIKICAgICAgICAgc3R5bGU9ImZv
+bnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRoMTI2IiAvPgogICAgICA8cGF0aAog
+ICAgICAgICBkPSJtIDMwNS40Nzg1MywxMTguMjYxNzYgcSAtMC4zNzk1NiwwLjEwMDI2IC0wLjgz
+MDczLDAuMTY0NzEgLTAuNDQ0MDEsMC4wNjQ1IC0wLjc5NDkzLDAuMDY0NSAtMS4yMjQ2MSwwIC0x
+Ljg2MTk4LC0wLjY1ODg2IC0wLjYzNzM3LC0wLjY1ODg1IC0wLjYzNzM3LC0yLjExMjYzIHYgLTQu
+MjUzOTIgaCAtMC45MDk1MSB2IC0xLjEzMTUxIGggMC45MDk1MSB2IC0yLjI5ODg0IGggMS4zNDYz
+NiB2IDIuMjk4ODQgaCAyLjc3ODY1IHYgMS4xMzE1MSBoIC0yLjc3ODY1IHYgMy42NDUxOSBxIDAs
+MC42MzAyMSAwLjAyODYsMC45ODgyOSAwLjAyODYsMC4zNTA5MSAwLjIwMDUyLDAuNjU4ODUgMC4x
+NTc1NiwwLjI4NjQ2IDAuNDI5NjksMC40MjI1MyAwLjI3OTMsMC4xMjg5IDAuODQ1MDYsMC4xMjg5
+IDAuMzI5NDIsMCAwLjY4NzUsLTAuMDkzMSAwLjM1ODA3LC0wLjEwMDI3IDAuNTE1NjIsLTAuMTY0
+NzIgaCAwLjA3MTYgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAg
+ICAgIGlkPSJwYXRoMTI4IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMxMy44MDAxNiwx
+MTQuNDczMzQgaCAtNS44OTM4OSBxIDAsMC43Mzc2MyAwLjIyMiwxLjI4OTA3IDAuMjIyMDEsMC41
+NDQyNyAwLjYwODczLDAuODk1MTggMC4zNzI0LDAuMzQzNzUgMC44ODA4NiwwLjUxNTYzIDAuNTE1
+NjMsMC4xNzE4NyAxLjEzMTUxLDAuMTcxODcgMC44MTY0MSwwIDEuNjM5OTgsLTAuMzIyMjYgMC44
+MzA3MywtMC4zMjk0MyAxLjE4MTY0LC0wLjY0NDU0IGggMC4wNzE2IHYgMS40NjgxMSBxIC0wLjY4
+MDM0LDAuMjg2NDUgLTEuMzg5MzMsMC40Nzk4MSAtMC43MDg5OCwwLjE5MzM2IC0xLjQ4OTU4LDAu
+MTkzMzYgLTEuOTkwODksMCAtMy4xMDgwOCwtMS4wNzQyMiAtMS4xMTcxOSwtMS4wODEzOCAtMS4x
+MTcxOSwtMy4wNjUxMSAwLC0xLjk2MjI0IDEuMDY3MDYsLTMuMTE1MjQgMS4wNzQyMiwtMS4xNTMg
+Mi44MjE2MiwtMS4xNTMgMS42MTg0OSwwIDIuNDkyMTksMC45NDUzMiAwLjg4MDg2LDAuOTQ1MzEg
+MC44ODA4NiwyLjY4NTU1IHogbSAtMS4zMTA1NSwtMS4wMzEyNSBxIC0wLjAwNywtMS4wNTk5IC0w
+LjUzNzExLC0xLjYzOTk4IC0wLjUyMjc5LC0wLjU4MDA4IC0xLjU5NzAxLC0wLjU4MDA4IC0xLjA4
+MTM4LDAgLTEuNzI1OTEsMC42MzczNyAtMC42MzczNywwLjYzNzM3IC0wLjcyMzMxLDEuNTgyNjkg
+eiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRo
+MTMwIiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMyMi43NjYzMywxMTguMzMzMzggaCAt
+MS42OTcyNyBsIC0yLjI3MDE5LC0zLjA3MjI4IC0yLjI4NDUxLDMuMDcyMjggSCAzMTQuOTQ2IGwg
+My4xMjI0LC0zLjk4ODk1IC0zLjA5Mzc2LC00LjAxMDQyIGggMS42OTcyNyBsIDIuMjU1ODcsMy4w
+MjIxNCAyLjI2MzAyLC0zLjAyMjE0IGggMS41NzU1MyBsIC0zLjE0Mzg5LDMuOTM4ODEgeiIKICAg
+ICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlkPSJwYXRoMTMyIiAv
+PgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMyOC42NzQ1NSwxMTguMjYxNzYgcSAtMC4zNzk1
+NiwwLjEwMDI2IC0wLjgzMDczLDAuMTY0NzEgLTAuNDQ0MDIsMC4wNjQ1IC0wLjc5NDkzLDAuMDY0
+NSAtMS4yMjQ2MSwwIC0xLjg2MTk4LC0wLjY1ODg2IC0wLjYzNzM3LC0wLjY1ODg1IC0wLjYzNzM3
+LC0yLjExMjYzIHYgLTQuMjUzOTIgaCAtMC45MDk1MSB2IC0xLjEzMTUxIGggMC45MDk1MSB2IC0y
+LjI5ODg0IGggMS4zNDYzNSB2IDIuMjk4ODQgaCAyLjc3ODY2IHYgMS4xMzE1MSBoIC0yLjc3ODY2
+IHYgMy42NDUxOSBxIDAsMC42MzAyMSAwLjAyODYsMC45ODgyOSAwLjAyODcsMC4zNTA5MSAwLjIw
+MDUyLDAuNjU4ODUgMC4xNTc1NSwwLjI4NjQ2IDAuNDI5NjksMC40MjI1MyAwLjI3OTMsMC4xMjg5
+IDAuODQ1MDUsMC4xMjg5IDAuMzI5NDMsMCAwLjY4NzUxLC0wLjA5MzEgMC4zNTgwNywtMC4xMDAy
+NyAwLjUxNTYyLC0wLjE2NDcyIGggMC4wNzE2IHoiCiAgICAgICAgIHN0eWxlPSJmb250LXNpemU6
+MTQuNjY2N3B4IgogICAgICAgICBpZD0icGF0aDEzNCIgLz4KICAgICAgPHBhdGgKICAgICAgICAg
+ZD0ibSAzMDguMjQyODYsMTI3LjI2MzczIGggLTUuMzkyNTkgdiAzLjAwNzgyIGggNC42MzM0NyB2
+IDEuMjYwNDIgaCAtNC42MzM0NyB2IDUuMTM0NzggaCAtMS40MTc5OCB2IC0xMC42NjM0NCBoIDYu
+ODEwNTcgeiIKICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgIGlk
+PSJwYXRoMTM2IiAvPgogICAgICA8cGF0aAogICAgICAgICBkPSJtIDMxNy44MTA1OSwxMjcuMjI3
+OTMgcSAwLjY1MTY5LDAuNzE2MTQgMC45OTU0NCwxLjc1NDU2IDAuMzUwOTIsMS4wMzg0MSAwLjM1
+MDkyLDIuMzU2MTIgMCwxLjMxNzcyIC0wLjM1ODA4LDIuMzYzMjkgLTAuMzUwOTEsMS4wMzg0MSAt
+MC45ODgyOCwxLjczMzA4IC0wLjY1ODg2LDAuNzIzMzEgLTEuNTYxMiwxLjA4ODU0IC0wLjg5NTE5
+LDAuMzY1MjQgLTIuMDQ4MTksMC4zNjUyNCAtMS4xMjQzNSwwIC0yLjA0ODE4LC0wLjM3MjQgLTAu
+OTE2NjcsLTAuMzcyNCAtMS41NjEyLC0xLjA4MTM4IC0wLjY0NDUzLC0wLjcwODk5IC0wLjk5NTQ0
+LC0xLjc0MDI0IC0wLjM0Mzc1LC0xLjAzMTI1IC0wLjM0Mzc1LC0yLjM1NjEzIDAsLTEuMzAzMzgg
+MC4zNDM3NSwtMi4zMzQ2NCAwLjM0Mzc1LC0xLjAzODQxIDEuMDAyNiwtMS43NzYwNCAwLjYzMDIx
+LC0wLjcwMTgzIDEuNTYxMiwtMS4wNzQyMiAwLjkzODE2LC0wLjM3MjQgMi4wNDEwMiwtMC4zNzI0
+IDEuMTQ1ODQsMCAyLjA1NTM1LDAuMzc5NTYgMC45MTY2NywwLjM3MjM5IDEuNTU0MDQsMS4wNjcw
+NiB6IG0gLTAuMTI4OTEsNC4xMTA2OCBxIDAsLTIuMDc2ODIgLTAuOTMwOTksLTMuMjAxMTggLTAu
+OTMwOTksLTEuMTMxNTEgLTIuNTQyMzIsLTEuMTMxNTEgLTEuNjI1NjYsMCAtMi41NTY2NSwxLjEz
+MTUxIC0wLjkyMzgzLDEuMTI0MzYgLTAuOTIzODMsMy4yMDExOCAwLDIuMDk4MzIgMC45NDUzMSwz
+LjIxNTUxIDAuOTQ1MzIsMS4xMTAwMiAyLjUzNTE3LDEuMTEwMDIgMS41ODk4NCwwIDIuNTI4LC0x
+LjExMDAyIDAuOTQ1MzEsLTEuMTE3MTkgMC45NDUzMSwtMy4yMTU1MSB6IgogICAgICAgICBzdHls
+ZT0iZm9udC1zaXplOjE0LjY2NjdweCIKICAgICAgICAgaWQ9InBhdGgxMzgiIC8+CiAgICAgIDxw
+YXRoCiAgICAgICAgIGQ9Im0gMzI5LjM1NDg5LDEyNy4yMjc5MyBxIDAuNjUxNjksMC43MTYxNCAw
+Ljk5NTQ0LDEuNzU0NTYgMC4zNTA5MSwxLjAzODQxIDAuMzUwOTEsMi4zNTYxMiAwLDEuMzE3NzIg
+LTAuMzU4MDcsMi4zNjMyOSAtMC4zNTA5MSwxLjAzODQxIC0wLjk4ODI4LDEuNzMzMDggLTAuNjU4
+ODYsMC43MjMzMSAtMS41NjEyMSwxLjA4ODU0IC0wLjg5NTE4LDAuMzY1MjQgLTIuMDQ4MTgsMC4z
+NjUyNCAtMS4xMjQzNSwwIC0yLjA0ODE4LC0wLjM3MjQgLTAuOTE2NjcsLTAuMzcyNCAtMS41NjEy
+LC0xLjA4MTM4IC0wLjY0NDUzLC0wLjcwODk5IC0wLjk5NTQ1LC0xLjc0MDI0IC0wLjM0Mzc1LC0x
+LjAzMTI1IC0wLjM0Mzc1LC0yLjM1NjEzIDAsLTEuMzAzMzggMC4zNDM3NSwtMi4zMzQ2NCAwLjM0
+Mzc2LC0xLjAzODQxIDEuMDAyNjEsLTEuNzc2MDQgMC42MzAyMSwtMC43MDE4MyAxLjU2MTIsLTEu
+MDc0MjIgMC45MzgxNiwtMC4zNzI0IDIuMDQxMDIsLTAuMzcyNCAxLjE0NTg0LDAgMi4wNTUzNSww
+LjM3OTU2IDAuOTE2NjcsMC4zNzIzOSAxLjU1NDA0LDEuMDY3MDYgeiBtIC0wLjEyODkxLDQuMTEw
+NjggcSAwLC0yLjA3NjgyIC0wLjkzMDk5LC0zLjIwMTE4IC0wLjkzMDk5LC0xLjEzMTUxIC0yLjU0
+MjMzLC0xLjEzMTUxIC0xLjYyNTY1LDAgLTIuNTU2NjQsMS4xMzE1MSAtMC45MjM4MywxLjEyNDM2
+IC0wLjkyMzgzLDMuMjAxMTggMCwyLjA5ODMyIDAuOTQ1MzEsMy4yMTU1MSAwLjk0NTMyLDEuMTEw
+MDIgMi41MzUxNiwxLjExMDAyIDEuNTg5ODUsMCAyLjUyODAxLC0xLjExMDAyIDAuOTQ1MzEsLTEu
+MTE3MTkgMC45NDUzMSwtMy4yMTU1MSB6IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2
+NjdweCIKICAgICAgICAgaWQ9InBhdGgxNDAiIC8+CiAgICA8L2c+CiAgICA8ZwogICAgICAgaWQ9
+InQ1IgogICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQ1LjcxMDM4LC0xMjkuNjQ4MDcpIgog
+ICAgICAgaW5rc2NhcGU6bGFiZWw9IiNnMzc3MiI+CiAgICAgIDxnCiAgICAgICAgIGFyaWEtbGFi
+ZWw9Ikdyb3VwZWQiCiAgICAgICAgIGlkPSJ0ZXh0Mzc2MiIKICAgICAgICAgc3R5bGU9ImZvbnQt
+c2l6ZToxMC41ODMzcHg7bGluZS1oZWlnaHQ6MS4yNSI+CiAgICAgICAgPHBhdGgKICAgICAgICAg
+ICBkPSJtIDY0LjYxNjQ2MiwyMjguODYwMzEgcSAtMC44NzM3LDAuNDAxMDQgLTEuOTEyMTEzLDAu
+NzAxODIgLTEuMDMxMjUzLDAuMjkzNjIgLTEuOTk4MDUyLDAuMjkzNjIgLTEuMjQ2MDk3LDAgLTIu
+Mjg0NTEsLTAuMzQzNzUgLTEuMDM4NDE0LC0wLjM0Mzc1IC0xLjc2ODg4NSwtMS4wMzEyNSAtMC43
+Mzc2MzIsLTAuNjk0NjYgLTEuMTM4Njc0LC0xLjczMzA4IC0wLjQwMTA0MywtMS4wNDU1NyAtMC40
+MDEwNDMsLTIuNDQyMDYgMCwtMi41NTY2NSAxLjQ4OTU4NywtNC4wMzE5MSAxLjQ5Njc0OCwtMS40
+ODI0MiA0LjEwMzUyNSwtMS40ODI0MiAwLjkwOTUwNywwIDEuODU0ODIyLDAuMjIyIDAuOTUyNDc2
+LDAuMjE0ODUgMi4wNDgxODIsMC43Mzc2MyB2IDEuNjgyOTUgaCAtMC4xMjg5MDcgcSAtMC4yMjIw
+MDUsLTAuMTcxODggLTAuNjQ0NTMyLC0wLjQ1MTE3IC0wLjQyMjUyNywtMC4yNzkzIC0wLjgzMDcz
+MiwtMC40NjU1IC0wLjQ5NDE0MSwtMC4yMjIgLTEuMTI0MzUxLC0wLjM2NTIzIC0wLjYyMzA0OCwt
+MC4xNTA0IC0xLjQxNzk3MiwtMC4xNTA0IC0xLjc5MDM2OSwwIC0yLjgzNTk0NCwxLjE1MyAtMS4w
+Mzg0MTQsMS4xNDU4NCAtMS4wMzg0MTQsMy4xMDgwOCAwLDIuMDY5NjcgMS4wODg1NDQsMy4yMjI2
+NyAxLjA4ODU0NCwxLjE0NTgzIDIuOTY0ODUxLDEuMTQ1ODMgMC42ODc1MDEsMCAxLjM2Nzg0MSwt
+MC4xMzYwNyAwLjY4NzUwMiwtMC4xMzYwNiAxLjIwMzEyOCwtMC4zNTA5MSB2IC0yLjYxMzk0IGgg
+LTIuODU3NDI4IHYgLTEuMjQ2MDkgaCA0LjI2MTA3NyB6IgogICAgICAgICAgIHN0eWxlPSJmb250
+LXNpemU6MTQuNjY2N3B4IgogICAgICAgICAgIGlkPSJwYXRoMTQzIiAvPgogICAgICAgIDxwYXRo
+CiAgICAgICAgICAgZD0ibSA3MS45Nzg0NTksMjIzLjExNjgxIGggLTAuMDcxNjEgcSAtMC4zMDA3
+ODIsLTAuMDcxNiAtMC41ODcyNDEsLTAuMTAwMjYgLTAuMjc5Mjk4LC0wLjAzNTggLTAuNjY2MDE3
+LC0wLjAzNTggLTAuNjIzMDQ5LDAgLTEuMjAzMTI4LDAuMjc5MyAtMC41ODAwNzksMC4yNzIxMyAt
+MS4xMTcxOSwwLjcwODk4IHYgNS42NzkwNSBoIC0xLjM0NjM1NyB2IC03Ljk5OTM3IGggMS4zNDYz
+NTcgdiAxLjE4MTY1IHEgMC44MDIwODUsLTAuNjQ0NTQgMS40MTA4MSwtMC45MDk1MSAwLjYxNTg4
+NywtMC4yNzIxNCAxLjI1MzI1OSwtMC4yNzIxNCAwLjM1MDkxMiwwIDAuNTA4NDY0LDAuMDIxNSAw
+LjE1NzU1MywwLjAxNDMgMC40NzI2NTgsMC4wNjQ1IHoiCiAgICAgICAgICAgc3R5bGU9ImZvbnQt
+c2l6ZToxNC42NjY3cHgiCiAgICAgICAgICAgaWQ9InBhdGgxNDUiIC8+CiAgICAgICAgPHBhdGgK
+ICAgICAgICAgICBkPSJtIDgwLjA2Mzc2NCwyMjUuNjUxOTcgcSAwLDEuOTU1MDggLTEuMDAyNjA2
+LDMuMDg2NTkgLTEuMDAyNjA3LDEuMTMxNTIgLTIuNjg1NTUzLDEuMTMxNTIgLTEuNjk3MjcsMCAt
+Mi42OTk4NzYsLTEuMTMxNTIgLTAuOTk1NDQ1LC0xLjEzMTUxIC0wLjk5NTQ0NSwtMy4wODY1OSAw
+LC0xLjk1NTA4IDAuOTk1NDQ1LC0zLjA4NjYgMS4wMDI2MDYsLTEuMTM4NjcgMi42OTk4NzYsLTEu
+MTM4NjcgMS42ODI5NDYsMCAyLjY4NTU1MywxLjEzODY3IDEuMDAyNjA2LDEuMTMxNTIgMS4wMDI2
+MDYsMy4wODY2IHogbSAtMS4zODkzMjYsMCBxIDAsLTEuNTU0MDQgLTAuNjA4NzI1LC0yLjMwNiAt
+MC42MDg3MjYsLTAuNzU5MTEgLTEuNjkwMTA4LC0wLjc1OTExIC0xLjA5NTcwNiwwIC0xLjcwNDQz
+MSwwLjc1OTExIC0wLjYwMTU2NCwwLjc1MTk2IC0wLjYwMTU2NCwyLjMwNiAwLDEuNTAzOTEgMC42
+MDg3MjUsMi4yODQ1MSAwLjYwODcyNiwwLjc3MzQ0IDEuNjk3MjcsMC43NzM0NCAxLjA3NDIyMSww
+IDEuNjgyOTQ2LC0wLjc2NjI4IDAuNjE1ODg3LC0wLjc3MzQ0IDAuNjE1ODg3LC0yLjI5MTY3IHoi
+CiAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgICAgaWQ9InBh
+dGgxNDciIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIDg4Ljc3OTI3OCwyMjkuNjQ4
+MDcgaCAtMS4zNDYzNTcgdiAtMC44ODgwMiBxIC0wLjY4MDM0LDAuNTM3MTEgLTEuMzAzMzg4LDAu
+ODIzNTcgLTAuNjIzMDQ5LDAuMjg2NDYgLTEuMzc1MDA0LDAuMjg2NDYgLTEuMjYwNDE5LDAgLTEu
+OTYyMjQ0LC0wLjc2NjI4IC0wLjcwMTgyNCwtMC43NzM0NCAtMC43MDE4MjQsLTIuMjYzMDMgdiAt
+NS4xOTIwNyBoIDEuMzQ2MzU3IHYgNC41NTQ3IHEgMCwwLjYwODczIDAuMDU3MjksMS4wNDU1OCAw
+LjA1NzI5LDAuNDI5NjkgMC4yNDM0OSwwLjczNzYzIDAuMTkzMzYsMC4zMTUxIDAuNTAxMzAzLDAu
+NDU4MzMgMC4zMDc5NDQsMC4xNDMyMyAwLjg5NTE4NSwwLjE0MzIzIDAuNTIyNzg3LDAgMS4xMzg2
+NzQsLTAuMjcyMTMgMC42MjMwNDgsLTAuMjcyMTQgMS4xNjAxNTksLTAuNjk0NjcgdiAtNS45NzI2
+NyBoIDEuMzQ2MzU3IHoiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAg
+ICAgICAgICAgaWQ9InBhdGgxNDkiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIDk4
+LjQ2ODc1NSwyMjUuNTUxNzEgcSAwLDAuOTczOTYgLTAuMjc5Mjk3LDEuNzgzMiAtMC4yNzkyOTgs
+MC44MDIwOSAtMC43ODc3NjMsMS4zNjA2OSAtMC40NzI2NTcsMC41Mjk5NCAtMS4xMTcxOSwwLjgy
+MzU2IC0wLjYzNzM3MSwwLjI4NjQ2IC0xLjM1MzUxOCwwLjI4NjQ2IC0wLjYyMzA0OSwwIC0xLjEz
+MTUxMywtMC4xMzYwNiAtMC41MDEzMDQsLTAuMTM2MDcgLTEuMDI0MDkxLC0wLjQyMjUzIHYgMy4z
+NTE1NyBoIC0xLjM0NjM1NyB2IC0xMC45NDk5IGggMS4zNDYzNTcgdiAwLjgzNzkgcSAwLjUzNzEx
+LC0wLjQ1MTE4IDEuMjAzMTI4LC0wLjc1MTk2IDAuNjczMTc4LC0wLjMwNzk0IDEuNDMyMjk0LC0w
+LjMwNzk0IDEuNDQ2NjE4LDAgMi4yNDg3MDQsMS4wOTU3IDAuODA5MjQ2LDEuMDg4NTUgMC44MDky
+NDYsMy4wMjkzMSB6IG0gLTEuMzg5MzI2LDAuMDM1OCBxIDAsLTEuNDQ2NjIgLTAuNDk0MTQyLC0y
+LjE2Mjc3IC0wLjQ5NDE0MSwtMC43MTYxNSAtMS41MTgyMzIsLTAuNzE2MTUgLTAuNTgwMDgsMCAt
+MS4xNjczMjEsMC4yNTA2NSAtMC41ODcyNDEsMC4yNTA2NiAtMS4xMjQzNTEsMC42NTg4NiB2IDQu
+NTMzMjEgcSAwLjU3MjkxOCwwLjI1NzgyIDAuOTgxMTIyLDAuMzUwOTIgMC40MTUzNjUsMC4wOTMx
+IDAuOTM4MTUzLDAuMDkzMSAxLjEyNDM1MiwwIDEuNzU0NTYxLC0wLjc1OTExIDAuNjMwMjEsLTAu
+NzU5MTIgMC42MzAyMSwtMi4yNDg3IHoiCiAgICAgICAgICAgc3R5bGU9ImZvbnQtc2l6ZToxNC42
+NjY3cHgiCiAgICAgICAgICAgaWQ9InBhdGgxNTEiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAg
+ICBkPSJtIDEwNy4yNjMwNCwyMjUuNzg4MDQgaCAtNS44OTM4OSBxIDAsMC43Mzc2MyAwLjIyMjAx
+LDEuMjg5MDYgMC4yMjIsMC41NDQyNyAwLjYwODcyLDAuODk1MTkgMC4zNzI0LDAuMzQzNzUgMC44
+ODA4NiwwLjUxNTYyIDAuNTE1NjMsMC4xNzE4OCAxLjEzMTUxLDAuMTcxODggMC44MTY0MSwwIDEu
+NjM5OTgsLTAuMzIyMjcgMC44MzA3MywtMC4zMjk0MyAxLjE4MTY1LC0wLjY0NDUzIGggMC4wNzE2
+IHYgMS40NjgxIHEgLTAuNjgwMzQsMC4yODY0NiAtMS4zODkzMywwLjQ3OTgyIC0wLjcwODk4LDAu
+MTkzMzYgLTEuNDg5NTgsMC4xOTMzNiAtMS45OTA4OSwwIC0zLjEwODA4LC0xLjA3NDIyIC0xLjEx
+NzE5LC0xLjA4MTM4IC0xLjExNzE5LC0zLjA2NTExIDAsLTEuOTYyMjUgMS4wNjcwNiwtMy4xMTUy
+NCAxLjA3NDIyLC0xLjE1MyAyLjgyMTYyLC0xLjE1MyAxLjYxODQ5LDAgMi40OTIxOSwwLjk0NTMx
+IDAuODgwODYsMC45NDUzMiAwLjg4MDg2LDIuNjg1NTYgeiBtIC0xLjMxMDU1LC0xLjAzMTI2IHEg
+LTAuMDA3LC0xLjA1OTg5IC0wLjUzNzExLC0xLjYzOTk3IC0wLjUyMjc5LC0wLjU4MDA4IC0xLjU5
+NzAxLC0wLjU4MDA4IC0xLjA4MTM4LDAgLTEuNzI1OTEsMC42MzczNyAtMC42MzczNywwLjYzNzM3
+IC0wLjcyMzMxLDEuNTgyNjggeiIKICAgICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2Njdw
+eCIKICAgICAgICAgICBpZD0icGF0aDE1MyIgLz4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9
+Ik0gMTE1Ljc5MjM2LDIyOS42NDgwNyBIIDExNC40NDYgdiAtMC44Mzc4OSBxIC0wLjU4MDA4LDAu
+NTAxMyAtMS4yMTAyOSwwLjc4MDYgLTAuNjMwMjEsMC4yNzkzIC0xLjM2Nzg0LDAuMjc5MyAtMS40
+MzIyOSwwIC0yLjI3NzM1LC0xLjEwMjg3IC0wLjgzNzg5LC0xLjEwMjg3IC0wLjgzNzg5LC0zLjA1
+Nzk1IDAsLTEuMDE2OTMgMC4yODY0NiwtMS44MTE4NSAwLjI5MzYyLC0wLjc5NDkzIDAuNzg3NzYs
+LTEuMzUzNTIgMC40ODY5OCwtMC41NDQyNyAxLjEzMTUxLC0wLjgzMDczIDAuNjUxNywtMC4yODY0
+NiAxLjM0NjM2LC0wLjI4NjQ2IDAuNjMwMjEsMCAxLjExNzE5LDAuMTM2MDcgMC40ODY5OCwwLjEy
+ODkgMS4wMjQwOSwwLjQwODIgdiAtMy40NjYxNSBoIDEuMzQ2MzYgeiBtIC0xLjM0NjM2LC0xLjk2
+OTQgdiAtNC41OTA1MSBxIC0wLjU0NDI3LC0wLjI0MzQ5IC0wLjk3Mzk2LC0wLjMzNjU5IC0wLjQy
+OTY5LC0wLjA5MzEgLTAuOTM4MTUsLTAuMDkzMSAtMS4xMzE1MSwwIC0xLjc2MTcyLDAuNzg3NzYg
+LTAuNjMwMjEsMC43ODc3NyAtMC42MzAyMSwyLjIzNDM4IDAsMS40MjUxNCAwLjQ4Njk4LDIuMTY5
+OTMgMC40ODY5OCwwLjczNzYzIDEuNTYxMiwwLjczNzYzIDAuNTcyOTIsMCAxLjE2MDE2LC0wLjI1
+MDY1IDAuNTg3MjQsLTAuMjU3ODEgMS4wOTU3LC0wLjY1ODg1IHoiCiAgICAgICAgICAgc3R5bGU9
+ImZvbnQtc2l6ZToxNC42NjY3cHgiCiAgICAgICAgICAgaWQ9InBhdGgxNTUiIC8+CiAgICAgIDwv
+Zz4KICAgICAgPGcKICAgICAgICAgYXJpYS1sYWJlbD0idGV4dCIKICAgICAgICAgaWQ9InRleHQz
+NzY2IgogICAgICAgICBzdHlsZT0iZm9udC1zaXplOjE0LjY2NjdweDtsaW5lLWhlaWdodDoxLjI1
+Ij4KICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gNTkuNzY4MTQ4LDI1OS41NzY0NiBxIC0w
+LjM3OTU1OSwwLjEwMDI2IC0wLjgzMDczMSwwLjE2NDcxIC0wLjQ0NDAxMiwwLjA2NDQgLTAuNzk0
+OTI0LDAuMDY0NCAtMS4yMjQ2MTIsMCAtMS44NjE5ODQsLTAuNjU4ODUgLTAuNjM3MzcxLC0wLjY1
+ODg2IC0wLjYzNzM3MSwtMi4xMTI2NCB2IC00LjI1MzkxIGggLTAuOTA5NTA3IHYgLTEuMTMxNTIg
+aCAwLjkwOTUwNyB2IC0yLjI5ODgzIGggMS4zNDYzNTcgdiAyLjI5ODgzIGggMi43Nzg2NTMgdiAx
+LjEzMTUyIGggLTIuNzc4NjUzIHYgMy42NDUxOSBxIDAsMC42MzAyMSAwLjAyODY1LDAuOTg4Mjgg
+MC4wMjg2NSwwLjM1MDkxIDAuMjAwNTIyLDAuNjU4ODYgMC4xNTc1NTIsMC4yODY0NiAwLjQyOTY4
+OCwwLjQyMjUyIDAuMjc5Mjk4LDAuMTI4OTEgMC44NDUwNTQsMC4xMjg5MSAwLjMyOTQyOCwwIDAu
+Njg3NTAyLC0wLjA5MzEgMC4zNTgwNzMsLTAuMTAwMjYgMC41MTU2MjYsLTAuMTY0NzEgaCAwLjA3
+MTYxIHoiCiAgICAgICAgICAgaWQ9InBhdGgxNTgiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAg
+ICBkPSJtIDY4LjA4OTc4MSwyNTUuNzg4MDQgaCAtNS44OTM4OTMgcSAwLDAuNzM3NjMgMC4yMjIw
+MDUsMS4yODkwNiAwLjIyMjAwNiwwLjU0NDI3IDAuNjA4NzI2LDAuODk1MTkgMC4zNzIzOTYsMC4z
+NDM3NSAwLjg4MDg2MSwwLjUxNTYyIDAuNTE1NjI2LDAuMTcxODggMS4xMzE1MTMsMC4xNzE4OCAw
+LjgxNjQwOCwwIDEuNjM5OTc4LC0wLjMyMjI3IDAuODMwNzMxLC0wLjMyOTQzIDEuMTgxNjQzLC0w
+LjY0NDUzIGggMC4wNzE2MiB2IDEuNDY4MSBxIC0wLjY4MDM0LDAuMjg2NDYgLTEuMzg5MzI2LDAu
+NDc5ODIgLTAuNzA4OTg2LDAuMTkzMzYgLTEuNDg5NTg3LDAuMTkzMzYgLTEuOTkwODksMCAtMy4x
+MDgwOCwtMS4wNzQyMiAtMS4xMTcxOSwtMS4wODEzOCAtMS4xMTcxOSwtMy4wNjUxMSAwLC0xLjk2
+MjI1IDEuMDY3MDYsLTMuMTE1MjQgMS4wNzQyMjEsLTEuMTUzIDIuODIxNjIxLC0xLjE1MyAxLjYx
+ODQ5MywwIDIuNDkyMTkzLDAuOTQ1MzEgMC44ODA4NjEsMC45NDUzMiAwLjg4MDg2MSwyLjY4NTU2
+IHogbSAtMS4zMTA1NDksLTEuMDMxMjYgcSAtMC4wMDcyLC0xLjA1OTg5IC0wLjUzNzExMSwtMS42
+Mzk5NyAtMC41MjI3ODgsLTAuNTgwMDggLTEuNTk3MDA5LC0wLjU4MDA4IC0xLjA4MTM4MywwIC0x
+LjcyNTkxNSwwLjYzNzM3IC0wLjYzNzM3MiwwLjYzNzM3IC0wLjcyMzMwOSwxLjU4MjY4IHoiCiAg
+ICAgICAgICAgaWQ9InBhdGgxNjAiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICBkPSJtIDc3
+LjA1NTk0OCwyNTkuNjQ4MDcgaCAtMS42OTcyNjkgbCAtMi4yNzAxODgsLTMuMDcyMjcgLTIuMjg0
+NTEsMy4wNzIyNyBoIC0xLjU2ODM2MyBsIDMuMTIyNDAzLC0zLjk4ODk0IC0zLjA5Mzc1NywtNC4w
+MTA0MyBoIDEuNjk3MjY5IGwgMi4yNTU4NjUsMy4wMjIxNSAyLjI2MzAyNiwtMy4wMjIxNSBoIDEu
+NTc1NTI0IGwgLTMuMTQzODg3LDMuOTM4ODIgeiIKICAgICAgICAgICBpZD0icGF0aDE2MiIgLz4K
+ICAgICAgICA8cGF0aAogICAgICAgICAgIGQ9Im0gODIuOTY0MTY2LDI1OS41NzY0NiBxIC0wLjM3
+OTU1OCwwLjEwMDI2IC0wLjgzMDczMSwwLjE2NDcxIC0wLjQ0NDAxMiwwLjA2NDQgLTAuNzk0OTI0
+LDAuMDY0NCAtMS4yMjQ2MTIsMCAtMS44NjE5ODMsLTAuNjU4ODUgLTAuNjM3MzcyLC0wLjY1ODg2
+IC0wLjYzNzM3MiwtMi4xMTI2NCB2IC00LjI1MzkxIGggLTAuOTA5NTA3IHYgLTEuMTMxNTIgaCAw
+LjkwOTUwNyB2IC0yLjI5ODgzIGggMS4zNDYzNTggdiAyLjI5ODgzIGggMi43Nzg2NTIgdiAxLjEz
+MTUyIGggLTIuNzc4NjUyIHYgMy42NDUxOSBxIDAsMC42MzAyMSAwLjAyODY1LDAuOTg4MjggMC4w
+Mjg2NCwwLjM1MDkxIDAuMjAwNTIxLDAuNjU4ODYgMC4xNTc1NTIsMC4yODY0NiAwLjQyOTY4OCww
+LjQyMjUyIDAuMjc5Mjk4LDAuMTI4OTEgMC44NDUwNTQsMC4xMjg5MSAwLjMyOTQyOCwwIDAuNjg3
+NTAyLC0wLjA5MzEgMC4zNTgwNzQsLTAuMTAwMjYgMC41MTU2MjYsLTAuMTY0NzEgaCAwLjA3MTYy
+IHoiCiAgICAgICAgICAgaWQ9InBhdGgxNjQiIC8+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxy
+ZWN0CiAgICAgICBzdHlsZT0iZmlsbDojMDAwMDgwO3N0cm9rZTpub25lIgogICAgICAgaWQ9InIx
+IgogICAgICAgd2lkdGg9IjEwMCIKICAgICAgIGhlaWdodD0iMTAwIgogICAgICAgeD0iMTAwIgog
+ICAgICAgeT0iMjAwIgogICAgICAgaW5rc2NhcGU6bGFiZWw9IiNyZWN0MzczMiIgLz4KICAgIDxy
+ZWN0CiAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojZmYwMDAwO3N0cm9rZS13aWR0aDox
+NiIKICAgICAgIGlkPSJyMiIKICAgICAgIHdpZHRoPSIyMDAiCiAgICAgICBoZWlnaHQ9IjEwMCIK
+ICAgICAgIHg9IjMwMCIKICAgICAgIHk9IjIwMCIKICAgICAgIGlua3NjYXBlOmxhYmVsPSIjcmVj
+dDM3MzQiIC8+CiAgICA8cmVjdAogICAgICAgc3R5bGU9ImZpbGw6I2ZmZmYwMDtzdHJva2U6IzAw
+ODAwMDtzdHJva2Utd2lkdGg6MTYiCiAgICAgICBpZD0icjMiCiAgICAgICB3aWR0aD0iMjAwIgog
+ICAgICAgaGVpZ2h0PSIxMDAiCiAgICAgICB4PSI2MDAiCiAgICAgICB5PSIyMDAiCiAgICAgICBy
+eT0iMzguOTUwNzk4IgogICAgICAgcng9IjQ0Ljk0MzIyNiIKICAgICAgIGlua3NjYXBlOmxhYmVs
+PSIjcmVjdDM3NDQiIC8+CiAgPC9nPgogIDxzY3JpcHQKICAgICBuczE6dmVyc2lvbj0iMS41LjUi
+CiAgICAgaWQ9Ikplc3N5SW5rIj4vLyBkdW1teQo8L3NjcmlwdD4KPC9zdmc+Cg==
+
+----CALLDATA--//--CALLDATA----
diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__avaloniaui.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__avaloniaui.out
new file mode 100644
index 0000000..6c962c6
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__avaloniaui.out
@@ -0,0 +1,387 @@
+<?xml version="1.0" ?>
+<Viewbox Name="input" Stretch="Uniform" xmlns="https://github.com/avaloniaui" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+ <Canvas Height="1000.0" UseLayoutRounding="False" Width="1000.0">
+ <Canvas.Clip>
+ <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/>
+ </Canvas.Clip>
+ <Canvas UseLayoutRounding="False">
+ <Rectangle Canvas.Left="651.3089" Canvas.Top="353.92661" Fill="#ffff0000" Height="201.49811" Opacity="0.5" Width="248.69112"/>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Ellipse Canvas.Left="100.0" Canvas.Top="400.0" Fill="#ff000080" Height="100.0" Width="100.0"/>
+ <Ellipse Canvas.Left="292.0" Canvas.Top="392.0" Height="116.0" Stroke="#ffff0000" StrokeJoin="Miter" StrokeThickness="16.0" Width="216.0"/>
+ <Path Fill="#ffffff00" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="16.0">
+ <Path.Data>
+ <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Canvas>
+ <Path Stroke="#ff000000" StrokeJoin="Miter" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Canvas RenderTransformOrigin="0,0" UseLayoutRounding="False">
+ <Canvas.RenderTransform>
+ <MatrixTransform Matrix="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0"/>
+ </Canvas.RenderTransform>
+ <Path Fill="#ff000000" RenderTransformOrigin="0,0" Stroke="#ff000000" StrokeJoin="Round" StrokeThickness="0.625">
+ <Path.RenderTransform>
+ <MatrixTransform Matrix="1.1,0.0,0.0,1.1,1.1,0.0"/>
+ </Path.RenderTransform>
+ <Path.Data>
+ <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ </Canvas>
+ <Path Stroke="#ff000000" StrokeJoin="Miter" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ffffff00" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ffffff00" RenderTransformOrigin="0,0" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="10.0">
+ <Path.RenderTransform>
+ <MatrixTransform Matrix="1.0,0.0,0.0,1.0,200.0,2.99622"/>
+ </Path.RenderTransform>
+ <Path.Data>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas RenderTransformOrigin="0,0" UseLayoutRounding="False">
+ <Canvas.RenderTransform>
+ <MatrixTransform Matrix="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505"/>
+ </Canvas.RenderTransform>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas RenderTransformOrigin="0,0" UseLayoutRounding="False">
+ <Canvas.RenderTransform>
+ <MatrixTransform Matrix="1.0,0.0,0.0,1.0,445.71038,-129.64807"/>
+ </Canvas.RenderTransform>
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ </Canvas>
+ <Rectangle Canvas.Left="100.0" Canvas.Top="200.0" Fill="#ff000080" Height="100.0" Width="100.0"/>
+ <Rectangle Canvas.Left="292.0" Canvas.Top="192.0" Height="116.0" Stroke="#ffff0000" StrokeJoin="Miter" StrokeThickness="16.0" Width="216.0"/>
+ <Path Fill="#ffffff00" Stroke="#ff008000" StrokeJoin="Miter" StrokeThickness="16.0">
+ <Path.Data>
+ <PathGeometry Figures="M 644.943 200 L 755.057 200 A 44.9432 38.9508 0 0 1 800 238.951 L 800 261.049 A 44.9432 38.9508 0 0 1 755.057 300 L 644.943 300 A 44.9432 38.9508 0 0 1 600 261.049 L 600 238.951 A 44.9432 38.9508 0 0 1 644.943 200 z" FillRule="NonZero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ </Canvas>
+</Viewbox>
diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--indent__4.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--indent__4.out
new file mode 100644
index 0000000..a3acb8d
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--indent__4.out
@@ -0,0 +1,84 @@
+<?xml version="1.0" ?>
+<Viewbox Name="test" Stretch="Uniform" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+ <Canvas Height="1000.0" UseLayoutRounding="False" Width="1000.0">
+ <Canvas.Clip>
+ <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/>
+ </Canvas.Clip>
+ <Canvas UseLayoutRounding="False">
+ <Rectangle Canvas.Left="651.3089" Canvas.Top="353.92661" Fill="#ffff0000" Height="201.49811" Opacity="0.5" RadiusX="0.0" RadiusY="0.0" Width="248.69112"/>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Ellipse Canvas.Left="100.0" Canvas.Top="400.0" Fill="#ff000080" Height="100.0" Width="100.0"/>
+ <Ellipse Canvas.Left="292.0" Canvas.Top="392.0" Height="116.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/>
+ <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0">
+ <Path.Data>
+ <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Canvas>
+ <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Canvas RenderTransform="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0" UseLayoutRounding="False">
+ <Path Fill="#ff000000" RenderTransform="1.1,0.0,0.0,1.1,1.1,0.0" Stroke="#ff000000" StrokeDashCap="Flat" StrokeLineJoin="Round" StrokeThickness="0.625">
+ <Path.Data>
+ <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ </Canvas>
+ <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ffffff00" RenderTransform="1.0,0.0,0.0,1.0,200.0,2.99622" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <TextBlock Canvas.Left="100.0" Canvas.Top="87.16666639249999" FontFamily="Arial" FontSize="14.66666698" Foreground="#ff000000" LineHeight="18.333333725">
+ Hello World
+ <LineBreak/>
+ </TextBlock>
+ <TextBlock Canvas.Left="105.71429" Canvas.Top="224.66254" FontFamily="Arial" FontSize="40.0" Foreground="#ff000000" LineHeight="50.0" RenderTransform="0.26458333,0.0,0.0,0.26458333,294.2855588767857,-136.3160720405418" TextWrapping="Wrap" Width="264.5675">
+ <Span FontSize="55.43307114">flow text which wraps</Span>
+ <LineBreak/>
+ </TextBlock>
+ <TextBlock Canvas.Left="200.0" Canvas.Top="87.16666639249999" FontFamily="Arial" FontSize="14.66666698" Foreground="#ff000000" LineHeight="18.333333725">
+ UPPER
+ <LineBreak/>
+ </TextBlock>
+ <TextBlock Canvas.Left="300.0" Canvas.Top="90.73958360750001" FontFamily="Arial" FontSize="10.58333302" Foreground="#ff000000" LineHeight="13.229166274999999">
+ <Span FontSize="14.66666698">Multi line</Span>
+ <LineBreak/>
+ <Span FontSize="14.66666698">text</Span>
+ <LineBreak/>
+ <Span FontSize="14.66666698">FOO</Span>
+ <LineBreak/>
+ </TextBlock>
+ <Canvas RenderTransform="1.0,0.0,0.0,1.0,445.71038,-129.64807" UseLayoutRounding="False">
+ <TextBlock Canvas.Left="54.289616" Canvas.Top="220.3876536075" FontFamily="Arial" FontSize="10.58333302" Foreground="#ff000000" LineHeight="13.229166274999999">
+ <Span FontSize="14.66666698">Grouped</Span>
+ <LineBreak/>
+ </TextBlock>
+ <TextBlock Canvas.Left="54.289619" Canvas.Top="246.8147363925" FontFamily="Arial" FontSize="14.66666698" Foreground="#ff000000" LineHeight="18.333333725">
+ text
+ <LineBreak/>
+ </TextBlock>
+ </Canvas>
+ <Rectangle Canvas.Left="100.0" Canvas.Top="200.0" Fill="#ff000080" Height="100.0" RadiusX="0.0" RadiusY="0.0" Width="100.0"/>
+ <Rectangle Canvas.Left="292.0" Canvas.Top="192.0" Height="116.0" RadiusX="0.0" RadiusY="0.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/>
+ <Rectangle Canvas.Left="592.0" Canvas.Top="192.0" Fill="#ffffff00" Height="116.0" RadiusX="44.943226" RadiusY="38.950798" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/>
+ </Canvas>
+ </Canvas>
+</Viewbox>
diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--text-to-path__True.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--text-to-path__True.out
new file mode 100644
index 0000000..43eda32
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__canvas__--target__wpf__--text-to-path__True.out
@@ -0,0 +1,368 @@
+<?xml version="1.0" ?>
+<Viewbox Name="input" Stretch="Uniform" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+ <Canvas Height="1000.0" UseLayoutRounding="False" Width="1000.0">
+ <Canvas.Clip>
+ <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/>
+ </Canvas.Clip>
+ <Canvas UseLayoutRounding="False">
+ <Rectangle Canvas.Left="651.3089" Canvas.Top="353.92661" Fill="#ffff0000" Height="201.49811" Opacity="0.5" RadiusX="0.0" RadiusY="0.0" Width="248.69112"/>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Ellipse Canvas.Left="100.0" Canvas.Top="400.0" Fill="#ff000080" Height="100.0" Width="100.0"/>
+ <Ellipse Canvas.Left="292.0" Canvas.Top="392.0" Height="116.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/>
+ <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0">
+ <Path.Data>
+ <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Canvas>
+ <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Canvas RenderTransform="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0" UseLayoutRounding="False">
+ <Path Fill="#ff000000" RenderTransform="1.1,0.0,0.0,1.1,1.1,0.0" Stroke="#ff000000" StrokeDashCap="Flat" StrokeLineJoin="Round" StrokeThickness="0.625">
+ <Path.Data>
+ <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ </Canvas>
+ <Path Stroke="#ff000000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ffffff00" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ffffff00" RenderTransform="1.0,0.0,0.0,1.0,200.0,2.99622" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="10.0">
+ <Path.Data>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas RenderTransform="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505" UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas RenderTransform="1.0,0.0,0.0,1.0,445.71038,-129.64807" UseLayoutRounding="False">
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ <Canvas UseLayoutRounding="False">
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ <Path Fill="#ff000000">
+ <Path.Data>
+ <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="Nonzero"/>
+ </Path.Data>
+ </Path>
+ </Canvas>
+ </Canvas>
+ <Rectangle Canvas.Left="100.0" Canvas.Top="200.0" Fill="#ff000080" Height="100.0" RadiusX="0.0" RadiusY="0.0" Width="100.0"/>
+ <Rectangle Canvas.Left="292.0" Canvas.Top="192.0" Height="116.0" RadiusX="0.0" RadiusY="0.0" Stroke="#ffff0000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/>
+ <Rectangle Canvas.Left="592.0" Canvas.Top="192.0" Fill="#ffffff00" Height="116.0" RadiusX="44.943226" RadiusY="38.950798" Stroke="#ff008000" StrokeDashCap="Flat" StrokeThickness="16.0" Width="216.0"/>
+ </Canvas>
+ </Canvas>
+</Viewbox>
diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__avaloniaui.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__avaloniaui.out
new file mode 100644
index 0000000..30332c6
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__avaloniaui.out
@@ -0,0 +1,441 @@
+<?xml version="1.0" ?>
+<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="https://github.com/avaloniaui">
+ <DrawingGroup x:Key="input">
+ <DrawingGroup.ClipGeometry>
+ <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/>
+ </DrawingGroup.ClipGeometry>
+ <DrawingGroup>
+ <DrawingGroup Opacity="0.5">
+ <GeometryDrawing Brush="#ffff0000">
+ <GeometryDrawing.Geometry>
+ <RectangleGeometry Rect="651.3089,353.92661,248.69112,201.49811"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000080">
+ <GeometryDrawing.Geometry>
+ <EllipseGeometry RadiusX="50.0" RadiusY="50.0" Center="150.0,450.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ffff0000" LineJoin="Miter" Thickness="16.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <EllipseGeometry RadiusX="100.0" RadiusY="50.0" Center="400.0,450.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" LineJoin="Miter" Thickness="16.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <DrawingGroup>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff000000" LineJoin="Miter" Thickness="10.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <DrawingGroup>
+ <DrawingGroup.Transform>
+ <MatrixTransform Matrix="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0"/>
+ </DrawingGroup.Transform>
+ <DrawingGroup>
+ <DrawingGroup.Transform>
+ <MatrixTransform Matrix="1.1,0.0,0.0,1.1,1.1,0.0"/>
+ </DrawingGroup.Transform>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff000000" LineJoin="Round" Thickness="0.625"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ </DrawingGroup>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff000000" LineJoin="Miter" Thickness="10.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" LineJoin="Miter" Thickness="10.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <DrawingGroup>
+ <DrawingGroup.Transform>
+ <MatrixTransform Matrix="1.0,0.0,0.0,1.0,200.0,2.99622"/>
+ </DrawingGroup.Transform>
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" LineJoin="Miter" Thickness="10.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <DrawingGroup.Transform>
+ <MatrixTransform Matrix="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505"/>
+ </DrawingGroup.Transform>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <DrawingGroup.Transform>
+ <MatrixTransform Matrix="1.0,0.0,0.0,1.0,445.71038,-129.64807"/>
+ </DrawingGroup.Transform>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <GeometryDrawing Brush="#ff000080">
+ <GeometryDrawing.Geometry>
+ <RectangleGeometry Rect="100.0,200.0,100.0,100.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ffff0000" LineJoin="Miter" Thickness="16.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <RectangleGeometry Rect="300.0,200.0,200.0,100.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" LineJoin="Miter" Thickness="16.0"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 644.943 200 L 755.057 200 A 44.9432 38.9508 0 0 1 800 238.951 L 800 261.049 A 44.9432 38.9508 0 0 1 755.057 300 L 644.943 300 A 44.9432 38.9508 0 0 1 600 261.049 L 600 238.951 A 44.9432 38.9508 0 0 1 644.943 200 z" FillRule="NonZero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <DrawingImage Drawing="{StaticResource input}" x:Key="di_input"/>
+</ResourceDictionary>
diff --git a/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__wpf.out b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__wpf.out
new file mode 100644
index 0000000..fb1ccfc
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/refs/svg2xaml__--mode__lowlevel__--target__wpf.out
@@ -0,0 +1,426 @@
+<?xml version="1.0" ?>
+<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+ <DrawingGroup x:Key="input">
+ <DrawingGroup.ClipGeometry>
+ <RectangleGeometry Rect="0.0,0.0,1000.0,1000.0"/>
+ </DrawingGroup.ClipGeometry>
+ <DrawingGroup>
+ <DrawingGroup Opacity="0.5">
+ <GeometryDrawing Brush="#ffff0000">
+ <GeometryDrawing.Geometry>
+ <RectangleGeometry Rect="651.3089,353.92661,248.69112,201.49811"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000080">
+ <GeometryDrawing.Geometry>
+ <EllipseGeometry RadiusX="50.0" RadiusY="50.0" Center="150.0,450.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ffff0000" Thickness="16.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <EllipseGeometry RadiusX="100.0" RadiusY="50.0" Center="400.0,450.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" Thickness="16.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 783.086 477.824 a 100 50 0 0 1 -111.098 20.1744 a 100 50 0 0 1 -71.963 -46.8834 a 100 50 0 0 1 67.7113 -48.4409 a 100 50 0 0 1 112.787 17.6779 L 700 450 Z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <DrawingGroup>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff000000" Thickness="10.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 100 600 L 200 700 L 300 600 L 400 700" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <DrawingGroup Transform="7.0710678118654755,7.0710678118654755,-7.0710678118654755,7.0710678118654755,100.0,600.0">
+ <DrawingGroup Transform="1.1,0.0,0.0,1.1,1.1,0.0">
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff000000" LineJoin="Round" Thickness="0.625" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 8.71859 4.03374 L -2.20729 0.0160133 L 8.71859 -4.00171 C 6.97309 -1.62965 6.98315 1.61574 8.71859 4.03374 z"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ </DrawingGroup>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff000000" Thickness="10.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 500 600 c 0 0 0 100 100 100 c 100 0 0 -100 100 -100 c 100 0 100 100 100 100" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" Thickness="10.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <DrawingGroup Transform="1.0,0.0,0.0,1.0,200.0,2.99622">
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" Thickness="10.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 244.833 889.14 l -45.3389 -8.13446 l -32.4043 32.7375 l -6.27415 -45.6335 l -41.1487 -20.7018 l 41.4612 -20.0686 l 6.97297 -45.532 l 31.8986 33.2304 l 45.4582 -7.43847 l -21.7468 40.6061 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 109.589 100 h -1.41797 v -5.22072 h -5.32097 V 100 h -1.41798 V 89.3366 h 1.41798 v 4.1823 h 5.32097 v -4.1823 h 1.41797 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 119.042 96.14 h -5.89389 q 0 0.737632 0.222 1.28907 q 0.22201 0.544272 0.60873 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13151 0.171875 q 0.81641 0 1.63998 -0.322266 q 0.83073 -0.329428 1.18164 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38933 0.479819 q -0.70898 0.193361 -1.48958 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88086 0.945314 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.580079 -1.59701 -0.580079 q -1.08138 0 -1.72591 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 122.444 100 h -1.34635 V 88.8567 h 1.34635 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 126.469 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 135.951 96.0039 q 0 1.95508 -1.0026 3.0866 q -1.00261 1.13152 -2.68556 1.13152 q -1.69727 0 -2.69987 -1.13152 q -0.99545 -1.13151 -0.99545 -3.0866 q 0 -1.95508 0.99545 -3.0866 q 1.0026 -1.13867 2.69987 -1.13867 q 1.68295 0 2.68556 1.13867 q 1.0026 1.13151 1.0026 3.0866 z m -1.38932 0 q 0 -1.55404 -0.60873 -2.30599 q -0.60872 -0.759116 -1.69011 -0.759116 q -1.0957 0 -1.70443 0.759116 q -0.60156 0.751955 -0.60156 2.30599 q 0 1.50391 0.60872 2.28451 q 0.60873 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61589 -0.773439 0.61589 -2.29167 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 155.709 89.3366 L 152.938 100 h -1.59701 L 149.099 91.1484 L 146.908 100 h -1.5612 l -2.82162 -10.6634 h 1.45378 l 2.24154 8.86591 l 2.20573 -8.86591 h 1.43946 l 2.22722 8.95184 l 2.22722 -8.95184 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 163.794 96.0039 q 0 1.95508 -1.00261 3.0866 q -1.0026 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.99544 -1.13151 -0.99544 -3.0866 q 0 -1.95508 0.99544 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13151 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.60872 -2.30599 q -0.60873 -0.759116 -1.69011 -0.759116 q -1.09571 0 -1.70443 0.759116 q -0.60157 0.751955 -0.60157 2.30599 q 0 1.50391 0.60873 2.28451 q 0.60872 0.773439 1.69727 0.773439 q 1.07422 0 1.68295 -0.766278 q 0.61588 -0.773439 0.61588 -2.29167 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 170.87 93.4687 h -0.0716 q -0.30078 -0.07161 -0.58724 -0.100261 q -0.2793 -0.03581 -0.66602 -0.03581 q -0.62304 0 -1.20312 0.279297 q -0.58008 0.272137 -1.11719 0.708986 V 100 h -1.34636 v -7.99937 h 1.34636 v 1.18164 q 0.80208 -0.644533 1.41081 -0.909507 q 0.61588 -0.272136 1.25325 -0.272136 q 0.35092 0 0.50847 0.02148 q 0.15755 0.01432 0.47266 0.06445 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 173.498 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 182.651 100 h -1.34636 v -0.837893 q -0.58008 0.501304 -1.21029 0.780601 q -0.63021 0.279302 -1.36784 0.279302 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.794924 0.78776 -1.35352 q 0.48698 -0.544272 1.13151 -0.830731 q 0.6517 -0.286459 1.34636 -0.286459 q 0.63021 0 1.11719 0.136068 q 0.48698 0.128907 1.02409 0.408204 v -3.46615 h 1.34636 z m -1.34636 -1.96941 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.336589 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13152 0 -1.76172 0.787762 q -0.63021 0.787762 -0.63021 2.23438 q 0 1.42513 0.48698 2.16993 q 0.48698 0.737632 1.5612 0.737632 q 0.57292 0 1.16016 -0.250652 q 0.58724 -0.257813 1.0957 -0.658856 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup Transform="0.26458333,0.0,0.0,0.26458333,372.02961,28.904505">
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 126.989 233.045 h -0.27067 q -0.83907 -0.24361 -2.19242 -0.48721 q -1.35335 -0.27067 -2.38189 -0.27067 q -3.2751 0 -4.76378 1.46162 q -1.46162 1.43455 -1.46162 5.22392 v 1.02854 h 9.1757 v 4.27658 h -9.0133 v 25.9572 h -5.08858 v -25.9572 h -3.4375 v -4.27658 h 3.4375 v -1.00148 q 0 -5.38632 2.67963 -8.25541 q 2.67962 -2.89617 7.74114 -2.89617 q 1.70522 0 3.05857 0.16241 q 1.38041 0.1624 2.51722 0.37893 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 135.353 270.235 h -5.08859 v -42.1162 h 5.08859 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 171.19 255.132 q 0 7.38928 -3.78937 11.6659 q -3.78937 4.27657 -10.1501 4.27657 q -6.41486 0 -10.2042 -4.27657 q -3.76231 -4.27658 -3.76231 -11.6659 q 0 -7.38927 3.76231 -11.6659 q 3.78937 -4.30364 10.2042 -4.30364 q 6.36074 0 10.1501 4.30364 q 3.78937 4.27658 3.78937 11.6659 z m -5.25099 0 q 0 -5.87352 -2.30069 -8.71555 q -2.30069 -2.8691 -6.3878 -2.8691 q -4.14124 0 -6.44193 2.8691 q -2.27362 2.84203 -2.27362 8.71555 q 0 5.68406 2.30069 8.63436 q 2.30069 2.92323 6.41486 2.92323 q 4.06005 0 6.36074 -2.89616 q 2.32775 -2.92323 2.32775 -8.66143 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 217.095 240.002 l -7.87648 30.2338 h -4.70965 l -7.76821 -23.3046 l -7.71408 23.3046 h -4.68259 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55168 -23.4129 h 4.19537 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 259.617 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 291.069 255.646 h -22.2761 q 0 2.78789 0.83907 4.87205 q 0.83908 2.05708 2.30069 3.38336 q 1.40748 1.29922 3.32924 1.94882 q 1.94882 0.64961 4.27657 0.64961 q 3.08563 0 6.19833 -1.21801 q 3.13977 -1.24508 4.46605 -2.43603 h 0.27067 v 5.54873 q -2.57136 1.08267 -5.25099 1.81348 q -2.67963 0.73081 -5.62992 0.73081 q -7.52461 0 -11.7471 -4.06004 q -4.22244 -4.08711 -4.22244 -11.5846 q 0 -7.41635 4.03297 -11.7741 q 4.06005 -4.35777 10.6644 -4.35777 q 6.11713 0 9.4193 3.57283 q 3.32923 3.57284 3.32923 10.1501 z m -4.95325 -3.89764 q -0.0271 -4.00591 -2.03002 -6.19833 q -1.97589 -2.19243 -6.03593 -2.19243 q -4.08711 0 -6.52313 2.40896 q -2.40896 2.40896 -2.73376 5.9818 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 324.957 270.235 h -6.41487 l -8.58022 -11.6117 l -8.63435 11.6117 h -5.92766 l 11.8012 -15.0763 l -11.6929 -15.1575 h 6.41487 l 8.52609 11.4223 l 8.55315 -11.4223 h 5.95473 l -11.8824 14.8868 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 347.287 269.965 q -1.43455 0.37894 -3.13976 0.62254 q -1.67815 0.2436 -3.00443 0.2436 q -4.62845 0 -7.03741 -2.49016 q -2.40896 -2.49016 -2.40896 -7.98475 v -16.0778 h -3.4375 v -4.27658 h 3.4375 v -8.68849 h 5.08859 v 8.68849 h 10.502 v 4.27658 h -10.502 v 13.7771 q 0 2.38189 0.10827 3.73524 q 0.10826 1.32628 0.75787 2.49016 q 0.59547 1.08268 1.62402 1.59695 q 1.05561 0.48721 3.1939 0.48721 q 1.24508 0 2.59842 -0.35187 q 1.35335 -0.37894 1.94882 -0.62254 h 0.27067 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 148.751 309.293 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 l -7.95768 -30.2338 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 181.367 339.527 h -5.08858 v -17.2146 q 0 -2.08415 -0.24361 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27214 -0.56841 -3.30216 -0.56841 q -2.08416 0 -4.35778 1.02855 q -2.27362 1.02854 -4.35778 2.62549 v 22.5738 h -5.08858 v -42.1162 h 5.08858 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.5443 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 196.633 304.231 h -5.7382 v -5.27806 h 5.7382 z m -0.32481 35.2953 h -5.08858 v -30.2338 h 5.08858 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 228.734 337.632 q -2.54429 1.21802 -4.84498 1.89469 q -2.27362 0.67667 -4.84498 0.67667 q -3.2751 0 -6.00886 -0.94734 q -2.73377 -0.97441 -4.68259 -2.92323 q -1.97588 -1.94882 -3.05856 -4.92618 q -1.08268 -2.97737 -1.08268 -6.95621 q 0 -7.41634 4.06004 -11.6388 q 4.08711 -4.22245 10.7727 -4.22245 q 2.59842 0 5.08858 0.73081 q 2.51723 0.73081 4.60138 1.78642 v 5.65699 h -0.27067 q -2.32775 -1.81348 -4.81791 -2.78789 q -2.46309 -0.97441 -4.81792 -0.97441 q -4.33071 0 -6.84793 2.92323 q -2.49016 2.89616 -2.49016 8.52608 q 0 5.46753 2.43602 8.41782 q 2.46309 2.92323 6.90207 2.92323 q 1.54282 0 3.13977 -0.406 q 1.59695 -0.40601 2.86909 -1.05561 q 1.10975 -0.56841 2.08416 -1.19095 q 0.97441 -0.64961 1.54281 -1.10974 h 0.27067 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 260.538 339.527 h -5.08859 v -17.2146 q 0 -2.08415 -0.2436 -3.89764 q -0.2436 -1.84055 -0.89321 -2.86909 q -0.67667 -1.13681 -1.94882 -1.67815 q -1.27215 -0.56841 -3.30217 -0.56841 q -2.08415 0 -4.35777 1.02855 q -2.27363 1.02854 -4.35778 2.62549 v 22.5738 h -5.08859 v -42.1162 h 5.08859 v 15.2387 q 2.38189 -1.97588 4.92618 -3.08563 q 2.54429 -1.10974 5.22392 -1.10974 q 4.89912 0 7.47048 2.9503 q 2.57136 2.95029 2.57136 8.49902 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 148.751 378.584 l -7.87648 30.2338 h -4.70964 l -7.76822 -23.3046 l -7.71408 23.3046 h -4.68258 L 108.043 378.584 h 5.30512 l 5.54873 23.4129 l 7.55167 -23.4129 h 4.19538 l 7.74115 23.4129 l 5.25098 -23.4129 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 174.952 384.133 h -0.27067 q -1.13682 -0.27067 -2.21949 -0.37894 q -1.05561 -0.13533 -2.51723 -0.13533 q -2.35482 0 -4.54725 1.05561 q -2.19242 1.02854 -4.22244 2.67963 v 21.4641 h -5.08858 V 378.584 h 5.08858 v 4.46604 q 3.0315 -2.43602 5.33219 -3.4375 q 2.32776 -1.02854 4.73671 -1.02854 q 1.32628 0 1.92176 0.0812 q 0.59547 0.0541 1.78642 0.2436 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 202.263 408.818 h -5.06152 v -3.22096 q -0.67667 0.46013 -1.84055 1.29921 q -1.13681 0.81201 -2.21949 1.29921 q -1.27215 0.62254 -2.92323 1.02855 q -1.65108 0.43307 -3.87057 0.43307 q -4.08711 0 -6.92914 -2.7067 q -2.84203 -2.70669 -2.84203 -6.90207 q 0 -3.4375 1.46162 -5.54872 q 1.48868 -2.13829 4.22244 -3.3563 q 2.76083 -1.21801 6.6314 -1.65109 q 3.87057 -0.43307 8.30955 -0.6496 v -0.78494 q 0 -1.73229 -0.62254 -2.8691 q -0.59547 -1.13681 -1.73228 -1.78642 q -1.08268 -0.62254 -2.59843 -0.83907 q -1.51575 -0.21654 -3.16683 -0.21654 q -2.00295 0 -4.46605 0.54134 q -2.46309 0.51427 -5.08858 1.51575 h -0.27067 V 379.234 q 1.48868 -0.406 4.30364 -0.89321 q 2.81496 -0.4872 5.54873 -0.4872 q 3.1939 0 5.54872 0.54134 q 2.38189 0.51427 4.11418 1.78642 q 1.70521 1.24507 2.59842 3.22096 q 0.89321 1.97589 0.89321 4.89912 z m -5.06152 -7.44341 v -8.41782 q -2.32775 0.13534 -5.49459 0.40601 q -3.13976 0.27067 -4.98031 0.78494 q -2.19243 0.62254 -3.54577 1.94882 q -1.35335 1.29921 -1.35335 3.5999 q 0 2.59843 1.56988 3.92471 q 1.56988 1.29921 4.79085 1.29921 q 2.67963 0 4.89912 -1.02854 q 2.21949 -1.05561 4.11417 -2.51723 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 238.668 393.336 q 0 3.6811 -1.05561 6.73967 q -1.05561 3.0315 -2.97736 5.14272 q -1.78642 2.00295 -4.22245 3.1127 q -2.40895 1.08268 -5.11565 1.08268 q -2.35482 0 -4.27657 -0.51428 q -1.89469 -0.51427 -3.87058 -1.59695 v 12.6673 h -5.08858 V 378.584 h 5.08858 v 3.16683 q 2.03002 -1.70522 4.54725 -2.84203 q 2.54429 -1.16388 5.41339 -1.16388 q 5.46752 0 8.49902 4.14124 q 3.05856 4.11418 3.05856 11.4493 z m -5.25098 0.13533 q 0 -5.46752 -1.86762 -8.17421 q -1.86762 -2.7067 -5.7382 -2.7067 q -2.19242 0 -4.41191 0.94735 q -2.21949 0.94734 -4.24951 2.49016 v 17.1334 q 2.16536 0.97441 3.70817 1.32628 q 1.56989 0.35187 3.54577 0.35187 q 4.24951 0 6.6314 -2.86909 q 2.3819 -2.8691 2.3819 -8.49903 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 268.198 400.103 q 0 4.14124 -3.4375 6.7938 q -3.41044 2.65256 -9.3381 2.65256 q -3.3563 0 -6.17126 -0.78494 q -2.7879 -0.81201 -4.68258 -1.75935 v -5.71113 h 0.27067 q 2.40895 1.81349 5.35925 2.89616 q 2.9503 1.05562 5.65699 1.05562 q 3.3563 0 5.25099 -1.08268 q 1.89468 -1.08268 1.89468 -3.41044 q 0 -1.78642 -1.02854 -2.70669 q -1.02854 -0.92028 -3.95177 -1.56988 q -1.08268 -0.24361 -2.84203 -0.56841 q -1.73229 -0.3248 -3.16683 -0.70374 q -3.97885 -1.05561 -5.657 -3.08563 q -1.65108 -2.05709 -1.65108 -5.03445 q 0 -1.86762 0.75787 -3.51871 q 0.78495 -1.65108 2.35483 -2.95029 q 1.51575 -1.27215 3.84351 -2.00296 q 2.35482 -0.75787 5.25098 -0.75787 q 2.7067 0 5.46752 0.67667 q 2.7879 0.64961 4.62845 1.59695 v 5.44046 h -0.27067 q -1.94882 -1.43455 -4.73671 -2.40896 q -2.7879 -1.00148 -5.46752 -1.00148 q -2.7879 0 -4.70965 1.08268 q -1.92176 1.05561 -1.92176 3.16683 q 0 1.86762 1.16388 2.81496 q 1.13681 0.94735 3.68111 1.54282 q 1.40748 0.3248 3.13976 0.64961 q 1.75935 0.3248 2.92323 0.59547 q 3.54577 0.81201 5.46752 2.7879 q 1.92176 2.00295 1.92176 5.30512 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 209.46 95.7174 q 0 1.16016 -0.25781 2.0267 q -0.25066 0.859377 -0.83074 1.4323 q -0.55143 0.544272 -1.28906 0.794924 q -0.73763 0.250656 -1.71876 0.250656 q -1.0026 0 -1.7474 -0.264979 q -0.74479 -0.264974 -1.25325 -0.780601 q -0.58008 -0.587241 -0.8379 -1.41797 q -0.25065 -0.830731 -0.25065 -2.04102 v -6.38087 h 1.41797 v 6.45249 q 0 0.866538 0.11459 1.36784 q 0.12174 0.501303 0.40104 0.909507 q 0.31511 0.465496 0.85222 0.701824 q 0.54427 0.236329 1.30338 0.236329 q 0.76628 0 1.30339 -0.229167 q 0.53711 -0.236329 0.85938 -0.708986 q 0.2793 -0.408204 0.39388 -0.930992 q 0.12175 -0.529949 0.12175 -1.31055 v -6.4883 h 1.41797 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 219.143 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 227.987 92.5592 q 0 0.708986 -0.25065 1.31771 q -0.24349 0.601564 -0.6875 1.04557 q -0.55143 0.551434 -1.30339 0.830731 q -0.75195 0.272136 -1.89779 0.272136 h -1.41797 V 100 h -1.41797 V 89.3366 h 2.89323 q 0.95964 0 1.62566 0.164714 q 0.66601 0.157552 1.18164 0.501303 q 0.60873 0.408204 0.93815 1.01693 q 0.33659 0.608725 0.33659 1.53972 z m -1.47526 0.03581 q 0 -0.551433 -0.19336 -0.959638 q -0.19336 -0.408204 -0.58724 -0.666017 q -0.34375 -0.222005 -0.78776 -0.315105 q -0.43685 -0.10026 -1.11003 -0.10026 h -1.40365 v 4.26108 h 1.19596 q 0.85938 0 1.39649 -0.150391 q 0.53711 -0.157552 0.8737 -0.494141 q 0.33659 -0.343751 0.47266 -0.723309 q 0.14323 -0.379559 0.14323 -0.852216 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 236.882 100 h -7.0254 V 89.3366 h 7.0254 v 1.26042 h -5.60743 v 2.92188 h 5.60743 v 1.26042 h -5.60743 v 3.96029 h 5.60743 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 247.953 100 h -1.8405 l -3.56642 -4.23959 h -1.99805 V 100 H 239.13 V 89.3366 h 2.98634 q 0.96679 0 1.61133 0.128907 q 0.64453 0.121745 1.16016 0.444011 q 0.58008 0.365235 0.90234 0.92383 q 0.32943 0.551434 0.32943 1.40365 q 0 1.153 -0.58008 1.9336 q -0.58008 0.773439 -1.59701 1.16732 z m -3.31577 -7.66278 q 0 -0.458334 -0.16471 -0.809247 q -0.15755 -0.358073 -0.52995 -0.601564 q -0.30794 -0.207682 -0.73047 -0.286459 q -0.42253 -0.08594 -0.99544 -0.08594 h -1.66863 v 4.02475 h 1.4323 q 0.67318 0 1.17448 -0.114584 q 0.5013 -0.121745 0.85221 -0.444011 q 0.32227 -0.300782 0.47266 -0.687502 q 0.15755 -0.393881 0.15755 -0.995445 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 310.928 100 h -1.41797 v -9.18817 l -2.96485 6.25197 h -0.84506 l -2.94336 -6.25197 V 100 h -1.32488 V 89.3366 h 1.9336 l 2.84311 5.93686 l 2.75 -5.93686 h 1.96941 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 320.317 100 h -1.34635 v -0.888023 q -0.68034 0.537111 -1.30339 0.82357 q -0.62305 0.286463 -1.375 0.286463 q -1.26042 0 -1.96225 -0.766282 q -0.70182 -0.773439 -0.70182 -2.26303 v -5.19207 h 1.34635 v 4.5547 q 0 0.608725 0.0573 1.04557 q 0.0573 0.429688 0.24349 0.737632 q 0.19336 0.315105 0.5013 0.458334 q 0.30794 0.14323 0.89518 0.14323 q 0.52279 0 1.13868 -0.272136 q 0.62305 -0.272136 1.16016 -0.694663 v -5.97267 h 1.34635 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 324.328 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 331.145 99.9284 q -0.37955 0.100265 -0.83073 0.164715 q -0.44401 0.0644 -0.79492 0.0644 q -1.22461 0 -1.86198 -0.658853 q -0.63738 -0.658856 -0.63738 -2.11264 v -4.25392 h -0.9095 v -1.13151 h 0.9095 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.988284 q 0.0286 0.350912 0.20052 0.658856 q 0.15755 0.286459 0.42969 0.422527 q 0.27929 0.128906 0.84505 0.128906 q 0.32943 0 0.6875 -0.0931 q 0.35808 -0.100261 0.51563 -0.164714 h 0.0716 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 334.218 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 334.132 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 343.313 100 h -1.34636 V 88.8567 h 1.34636 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 347.423 90.6614 h -1.51824 v -1.39649 h 1.51824 z M 347.337 100 h -1.34636 v -7.99937 h 1.34636 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 356.69 100 h -1.34635 v -4.5547 q 0 -0.551434 -0.0645 -1.03125 q -0.0645 -0.486981 -0.23632 -0.759117 q -0.17904 -0.300782 -0.51563 -0.444011 q -0.33659 -0.150391 -0.8737 -0.150391 q -0.55143 0 -1.153 0.272136 q -0.60156 0.272136 -1.153 0.694663 V 100 h -1.34635 v -7.99937 h 1.34635 v 0.888023 q 0.63021 -0.522788 1.30339 -0.816409 q 0.67318 -0.29362 1.38217 -0.29362 q 1.29622 0 1.97656 0.780601 q 0.68034 0.7806 0.68034 2.2487 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 365.979 96.14 h -5.8939 q 0 0.737632 0.22201 1.28907 q 0.222 0.544272 0.60872 0.895184 q 0.3724 0.343751 0.88086 0.515626 q 0.51563 0.171875 1.13152 0.171875 q 0.8164 0 1.63997 -0.322266 q 0.83074 -0.329428 1.18165 -0.644533 h 0.0716 v 1.4681 q -0.68034 0.286459 -1.38932 0.479819 q -0.70899 0.193361 -1.48959 0.193361 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.945315 q 0.88087 0.945314 0.88087 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53712 -1.63998 q -0.52278 -0.580079 -1.597 -0.580079 q -1.08139 0 -1.72592 0.637371 q -0.63737 0.637371 -0.72331 1.58269 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 305.479 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44401 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34636 v 2.29884 h 2.77865 v 1.13151 h -2.77865 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0286 0.35091 0.20052 0.65885 q 0.15756 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84506 0.1289 q 0.32942 0 0.6875 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 313.8 114.473 h -5.89389 q 0 0.73763 0.222 1.28907 q 0.22201 0.54427 0.60873 0.89518 q 0.3724 0.34375 0.88086 0.51563 q 0.51563 0.17187 1.13151 0.17187 q 0.81641 0 1.63998 -0.32226 q 0.83073 -0.32943 1.18164 -0.64454 h 0.0716 v 1.46811 q -0.68034 0.28645 -1.38933 0.47981 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96224 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94532 q 0.88086 0.94531 0.88086 2.68555 z m -1.31055 -1.03125 q -0.007 -1.0599 -0.53711 -1.63998 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58269 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 322.766 118.333 h -1.69727 l -2.27019 -3.07228 l -2.28451 3.07228 H 314.946 l 3.1224 -3.98895 l -3.09376 -4.01042 h 1.69727 l 2.25587 3.02214 l 2.26302 -3.02214 h 1.57553 l -3.14389 3.93881 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 328.675 118.262 q -0.37956 0.10026 -0.83073 0.16471 q -0.44402 0.0645 -0.79493 0.0645 q -1.22461 0 -1.86198 -0.65886 q -0.63737 -0.65885 -0.63737 -2.11263 v -4.25392 h -0.90951 v -1.13151 h 0.90951 v -2.29884 h 1.34635 v 2.29884 h 2.77866 v 1.13151 h -2.77866 v 3.64519 q 0 0.63021 0.0286 0.98829 q 0.0287 0.35091 0.20052 0.65885 q 0.15755 0.28646 0.42969 0.42253 q 0.2793 0.1289 0.84505 0.1289 q 0.32943 0 0.68751 -0.0931 q 0.35807 -0.10027 0.51562 -0.16472 h 0.0716 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 308.243 127.264 h -5.39259 v 3.00782 h 4.63347 v 1.26042 h -4.63347 v 5.13478 h -1.41798 v -10.6634 h 6.81057 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 317.811 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35092 1.03841 0.35092 2.35612 q 0 1.31772 -0.35808 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.5612 1.08854 q -0.89519 0.36524 -2.04819 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99544 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34375 -1.03841 1.0026 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54232 -1.13151 q -1.62566 0 -2.55665 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53517 1.11002 q 1.58984 0 2.528 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 329.355 127.228 q 0.65169 0.71614 0.99544 1.75456 q 0.35091 1.03841 0.35091 2.35612 q 0 1.31772 -0.35807 2.36329 q -0.35091 1.03841 -0.98828 1.73308 q -0.65886 0.72331 -1.56121 1.08854 q -0.89518 0.36524 -2.04818 0.36524 q -1.12435 0 -2.04818 -0.3724 q -0.91667 -0.3724 -1.5612 -1.08138 q -0.64453 -0.70899 -0.99545 -1.74024 q -0.34375 -1.03125 -0.34375 -2.35613 q 0 -1.30338 0.34375 -2.33464 q 0.34376 -1.03841 1.00261 -1.77604 q 0.63021 -0.70183 1.5612 -1.07422 q 0.93816 -0.3724 2.04102 -0.3724 q 1.14584 0 2.05535 0.37956 q 0.91667 0.37239 1.55404 1.06706 z m -0.12891 4.11068 q 0 -2.07682 -0.93099 -3.20118 q -0.93099 -1.13151 -2.54233 -1.13151 q -1.62565 0 -2.55664 1.13151 q -0.92383 1.12436 -0.92383 3.20118 q 0 2.09832 0.94531 3.21551 q 0.94532 1.11002 2.53516 1.11002 q 1.58985 0 2.52801 -1.11002 q 0.94531 -1.11719 0.94531 -3.21551 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup Transform="1.0,0.0,0.0,1.0,445.71038,-129.64807">
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 64.6165 228.86 q -0.8737 0.40104 -1.91211 0.70182 q -1.03125 0.29362 -1.99805 0.29362 q -1.2461 0 -2.28451 -0.34375 q -1.03841 -0.34375 -1.76889 -1.03125 q -0.737632 -0.69466 -1.13867 -1.73308 q -0.401043 -1.04557 -0.401043 -2.44206 q 0 -2.55665 1.48959 -4.03191 q 1.49675 -1.48242 4.10353 -1.48242 q 0.909507 0 1.85482 0.222 q 0.952476 0.21485 2.04818 0.73763 v 1.68295 h -0.128907 q -0.222005 -0.17188 -0.644532 -0.45117 q -0.422527 -0.2793 -0.830732 -0.4655 q -0.494141 -0.222 -1.12435 -0.36523 q -0.623048 -0.1504 -1.41797 -0.1504 q -1.79037 0 -2.83594 1.153 q -1.03841 1.14584 -1.03841 3.10808 q 0 2.06967 1.08854 3.22267 q 1.08854 1.14583 2.96485 1.14583 q 0.687501 0 1.36784 -0.13607 q 0.687502 -0.13606 1.20313 -0.35091 v -2.61394 h -2.85743 v -1.24609 h 4.26108 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 71.9785 223.117 h -0.07161 q -0.300782 -0.0716 -0.587241 -0.10026 q -0.279298 -0.0358 -0.666017 -0.0358 q -0.623049 0 -1.20313 0.2793 q -0.580079 0.27213 -1.11719 0.70898 v 5.67905 h -1.34636 v -7.99937 h 1.34636 v 1.18165 q 0.802085 -0.64454 1.41081 -0.90951 q 0.615887 -0.27214 1.25326 -0.27214 q 0.350912 0 0.508464 0.0215 q 0.157553 0.0143 0.472658 0.0645 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 80.0638 225.652 q 0 1.95508 -1.00261 3.08659 q -1.00261 1.13152 -2.68555 1.13152 q -1.69727 0 -2.69988 -1.13152 q -0.995445 -1.13151 -0.995445 -3.08659 q 0 -1.95508 0.995445 -3.0866 q 1.00261 -1.13867 2.69988 -1.13867 q 1.68295 0 2.68555 1.13867 q 1.00261 1.13152 1.00261 3.0866 z m -1.38933 0 q 0 -1.55404 -0.608725 -2.306 q -0.608726 -0.75911 -1.69011 -0.75911 q -1.09571 0 -1.70443 0.75911 q -0.601564 0.75196 -0.601564 2.306 q 0 1.50391 0.608725 2.28451 q 0.608726 0.77344 1.69727 0.77344 q 1.07422 0 1.68295 -0.76628 q 0.615887 -0.77344 0.615887 -2.29167 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 88.7793 229.648 h -1.34636 v -0.88802 q -0.68034 0.53711 -1.30339 0.82357 q -0.623049 0.28646 -1.375 0.28646 q -1.26042 0 -1.96224 -0.76628 q -0.701824 -0.77344 -0.701824 -2.26303 v -5.19207 h 1.34636 v 4.5547 q 0 0.60873 0.05729 1.04558 q 0.05729 0.42969 0.24349 0.73763 q 0.19336 0.3151 0.501303 0.45833 q 0.307944 0.14323 0.895185 0.14323 q 0.522787 0 1.13867 -0.27213 q 0.623048 -0.27214 1.16016 -0.69467 v -5.97267 h 1.34636 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 98.4688 225.552 q 0 0.97396 -0.279297 1.7832 q -0.279298 0.80209 -0.787763 1.36069 q -0.472657 0.52994 -1.11719 0.82356 q -0.637371 0.28646 -1.35352 0.28646 q -0.623049 0 -1.13151 -0.13606 q -0.501304 -0.13607 -1.02409 -0.42253 v 3.35157 h -1.34636 v -10.9499 h 1.34636 v 0.8379 q 0.53711 -0.45118 1.20313 -0.75196 q 0.673178 -0.30794 1.43229 -0.30794 q 1.44662 0 2.2487 1.0957 q 0.809246 1.08855 0.809246 3.02931 z m -1.38933 0.0358 q 0 -1.44662 -0.494142 -2.16277 q -0.494141 -0.71615 -1.51823 -0.71615 q -0.58008 0 -1.16732 0.25065 q -0.587241 0.25066 -1.12435 0.65886 v 4.53321 q 0.572918 0.25782 0.981122 0.35092 q 0.415365 0.0931 0.938153 0.0931 q 1.12435 0 1.75456 -0.75911 q 0.63021 -0.75912 0.63021 -2.2487 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 107.263 225.788 h -5.89389 q 0 0.73763 0.22201 1.28906 q 0.222 0.54427 0.60872 0.89519 q 0.3724 0.34375 0.88086 0.51562 q 0.51563 0.17188 1.13151 0.17188 q 0.81641 0 1.63998 -0.32227 q 0.83073 -0.32943 1.18165 -0.64453 h 0.0716 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.70898 0.19336 -1.48958 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.88086 0.94532 0.88086 2.68556 z m -1.31055 -1.03126 q -0.007 -1.05989 -0.53711 -1.63997 q -0.52279 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72591 0.63737 q -0.63737 0.63737 -0.72331 1.58268 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="M 115.792 229.648 H 114.446 v -0.83789 q -0.58008 0.5013 -1.21029 0.7806 q -0.63021 0.2793 -1.36784 0.2793 q -1.43229 0 -2.27735 -1.10287 q -0.83789 -1.10287 -0.83789 -3.05795 q 0 -1.01693 0.28646 -1.81185 q 0.29362 -0.79493 0.78776 -1.35352 q 0.48698 -0.54427 1.13151 -0.83073 q 0.6517 -0.28646 1.34636 -0.28646 q 0.63021 0 1.11719 0.13607 q 0.48698 0.1289 1.02409 0.4082 v -3.46615 h 1.34636 z m -1.34636 -1.9694 v -4.59051 q -0.54427 -0.24349 -0.97396 -0.33659 q -0.42969 -0.0931 -0.93815 -0.0931 q -1.13151 0 -1.76172 0.78776 q -0.63021 0.78777 -0.63021 2.23438 q 0 1.42514 0.48698 2.16993 q 0.48698 0.73763 1.5612 0.73763 q 0.57292 0 1.16016 -0.25065 q 0.58724 -0.25781 1.0957 -0.65885 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ <DrawingGroup>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 59.7681 259.576 q -0.379559 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637371 -0.65886 -0.637371 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02865 0.35091 0.200522 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358073 -0.10026 0.515626 -0.16471 h 0.07161 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 68.0898 255.788 h -5.89389 q 0 0.73763 0.222005 1.28906 q 0.222006 0.54427 0.608726 0.89519 q 0.372396 0.34375 0.880861 0.51562 q 0.515626 0.17188 1.13151 0.17188 q 0.816408 0 1.63998 -0.32227 q 0.830731 -0.32943 1.18164 -0.64453 h 0.07162 v 1.4681 q -0.68034 0.28646 -1.38933 0.47982 q -0.708986 0.19336 -1.48959 0.19336 q -1.99089 0 -3.10808 -1.07422 q -1.11719 -1.08138 -1.11719 -3.06511 q 0 -1.96225 1.06706 -3.11524 q 1.07422 -1.153 2.82162 -1.153 q 1.61849 0 2.49219 0.94531 q 0.880861 0.94532 0.880861 2.68556 z m -1.31055 -1.03126 q -0.0072 -1.05989 -0.537111 -1.63997 q -0.522788 -0.58008 -1.59701 -0.58008 q -1.08138 0 -1.72592 0.63737 q -0.637372 0.63737 -0.723309 1.58268 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 77.0559 259.648 h -1.69727 l -2.27019 -3.07227 l -2.28451 3.07227 h -1.56836 l 3.1224 -3.98894 l -3.09376 -4.01043 h 1.69727 l 2.25587 3.02215 l 2.26303 -3.02215 h 1.57552 l -3.14389 3.93882 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ff000000">
+ <GeometryDrawing.Geometry>
+ <PathGeometry Figures="m 82.9642 259.576 q -0.379558 0.10026 -0.830731 0.16471 q -0.444012 0.0644 -0.794924 0.0644 q -1.22461 0 -1.86198 -0.65885 q -0.637372 -0.65886 -0.637372 -2.11264 v -4.25391 h -0.909507 v -1.13152 h 0.909507 v -2.29883 h 1.34636 v 2.29883 h 2.77865 v 1.13152 h -2.77865 v 3.64519 q 0 0.63021 0.02865 0.98828 q 0.02864 0.35091 0.200521 0.65886 q 0.157552 0.28646 0.429688 0.42252 q 0.279298 0.12891 0.845054 0.12891 q 0.329428 0 0.687502 -0.0931 q 0.358074 -0.10026 0.515626 -0.16471 h 0.07162 z" FillRule="Nonzero"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <GeometryDrawing Brush="#ff000080">
+ <GeometryDrawing.Geometry>
+ <RectangleGeometry Rect="100.0,200.0,100.0,100.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing>
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ffff0000" Thickness="16.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <RectangleGeometry Rect="300.0,200.0,200.0,100.0"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ <GeometryDrawing Brush="#ffffff00">
+ <GeometryDrawing.Pen>
+ <Pen Brush="#ff008000" Thickness="16.0" DashCap="Flat"/>
+ </GeometryDrawing.Pen>
+ <GeometryDrawing.Geometry>
+ <RectangleGeometry Rect="600.0,200.0,200.0,100.0" RadiusX="44.943226" RadiusY="38.950798"/>
+ </GeometryDrawing.Geometry>
+ </GeometryDrawing>
+ </DrawingGroup>
+ </DrawingGroup>
+ <DrawingImage Drawing="{StaticResource input}" x:Key="di_input"/>
+</ResourceDictionary>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/blur.svg b/share/extensions/other/extension-xaml/tests/data/svg/blur.svg
new file mode 100644
index 0000000..296ceb0
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/blur.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg5" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="blur.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs id="defs2">
+ <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter793" x="-0.16660433" y="-0.15277301" width="1.3332087" height="1.305546">
+ <feGaussianBlur inkscape:collect="always" stdDeviation="5 5" id="feGaussianBlur795" />
+ </filter>
+ <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter793-0" x="-0.17121048" y="-0.17121048" width="1.342421" height="1.342421">
+ <feGaussianBlur inkscape:collect="always" stdDeviation="70" id="feGaussianBlur795-2" />
+ </filter>
+ <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter3317" x="-0.23445084" y="-0.25878262" width="1.4689017" height="1.5175652">
+ <feGaussianBlur inkscape:collect="always" stdDeviation="7" id="feGaussianBlur3319" />
+ </filter>
+ <filter inkscape:collect="always" style="color-interpolation-filters:sRGB" id="filter3468" x="-0.084709811" y="-0.07978879" width="1.1704886" height="1.1683093">
+ <feGaussianBlur inkscape:collect="always" stdDeviation="3" id="feGaussianBlur3470" />
+ </filter>
+ </defs>
+ <rect style="fill:#00ffff;stroke-width:0.465806;filter:url(#filter793);stop-color:#000000" id="rect184" width="72.026939" height="78.547905" x="23.416168" y="43.275448" />
+ <rect style="mix-blend-mode:normal;fill:#00ffff;stroke-width:0.44532;filter:url(#filter793-0);stop-color:#000000" id="rect184-4" width="1000" height="1000" x="127.01048" y="39.866764" transform="scale(0.1)translate(1400, 500)" />
+ <path style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3468)" d="M 296.26671,61.788243 362.01573,40.400005 404.00005,149.71767 Z" id="path3465" />
+ <g id="g3315" style="filter:url(#filter3317)">
+ <rect style="fill:#008000;stroke-width:6.778;stop-color:#000000" id="rect3390" width="114.86276" height="69.709816" x="232.89415" y="247.94513" />
+ <rect style="mix-blend-mode:normal;fill:#008000;stroke-width:0.465808;stop-color:#000000" id="rect184-4-3" width="79.58226" height="72.099617" x="89.880905" y="191.2991" />
+ </g>
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/circle_defaults.svg b/share/extensions/other/extension-xaml/tests/data/svg/circle_defaults.svg
new file mode 100644
index 0000000..cde96e9
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/circle_defaults.svg
@@ -0,0 +1,32 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360">
+ <!-- Derived from shapes-circle-02-t.svg und shapes-ellipse-02-t.svg from the SVG unit test suite
+under the 3-clause BSD license-->
+ <g fill="green" stroke="#000000">
+ <!-- Set cx and cy coordinate to default.-->
+ <circle r="50" />
+
+ <!-- Set cx coordinate to default.-->
+ <circle cy="100" r="50" />
+
+ <!-- Set cy coordinate to default.-->
+ <circle cx="100" r="50" />
+
+ <!-- Set r attribute to 0 (should not display a circle).-->
+ <circle cx="100" cy="100" r="0" />
+
+ <!-- Set all values to draw a circle -->
+ <circle cx="150" cy="100" r="50" />
+
+ <!-- Set cx and cy coordinate to default.-->
+ <ellipse rx="100" ry="50" />
+
+ <!-- Set rx attribute to 0.-->
+ <ellipse cx="100" cy="150" rx="0" ry="50" />
+
+ <!-- Set ry attribute to 0.-->
+ <ellipse cx="200" cy="50" rx="100" ry="0" />
+
+ <!-- Set all values attribute to drawn an ellipse.-->
+ <ellipse cx="250" cy="250" rx="100" ry="50" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/clip_complex.svg b/share/extensions/other/extension-xaml/tests/data/svg/clip_complex.svg
new file mode 100644
index 0000000..1fa9119
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/clip_complex.svg
@@ -0,0 +1,24 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"
+ viewBox="0 0 480 360">
+ <!-- Derived from masking-path-01-b.svg and masking-path-05-f.svg
+ from the SVG unit test suite under the 3-clause BSD license-->
+ <defs>
+ <clipPath id="clip1">
+ <path clip-rule="evenodd" d="M200,40l20,0 0,60 20,0 0,-20 -60,0 0,-20 80,0 0,60 -60,0 0,-80z" />
+ </clipPath>
+ <clipPath id="clip2">
+ <path clip-rule="nonzero" d="M200,170l20,0 0,60 20,0 0,-20 -60,0 0,-20 80,0 0,60 -60,0 0,-80z" />
+ </clipPath>
+ <clipPath id="clip3">
+ <rect x="90" y="50" width="175" height="200" />
+ <rect x="225" y="160" width="95" height="75" />
+ </clipPath>
+ </defs>
+ <rect x="115" y="40" width="225" height="40" fill="red" stroke="blue" stroke-width="5" clip-path="url(#clip3)" />
+ <g clip-path="url(#clip3)">
+ <rect x="115" y="190" width="225" height="40" fill="aqua" stroke="blue" stroke-width="5" />
+ <rect x="115" y="240" width="225" height="40" fill="lime" stroke="green" stroke-width="5" />
+ </g>
+ <rect x="50" y="30" width="350" height="100" fill="red" clip-path="url(#clip1)" transform="translate(150,0)"/>
+ <rect x="50" y="160" width="350" height="100" fill="blue" clip-path="url(#clip2)" transform="translate(150,0)"/>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/clip_single.svg b/share/extensions/other/extension-xaml/tests/data/svg/clip_single.svg
new file mode 100644
index 0000000..a714902
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/clip_single.svg
@@ -0,0 +1,72 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"
+ viewBox="0 0 480 360">
+ <!-- Derived from masking-path-08-b.svg
+ from the SVG unit test suite under the 3-clause BSD license-->
+
+
+ <defs>
+ <clipPath id="emptyclip">
+ </clipPath>
+ <clipPath id="hiddenclip">
+ <rect x="40" y="40" width="20" height="20" visibility="hidden" />
+ </clipPath>
+ <clipPath id="displayclip">
+ <rect x="40" y="40" width="20" height="20" display="none" />
+ </clipPath>
+ <clipPath id="opacityclip">
+ <rect x="40" y="40" width="20" height="20" opacity="0" />
+ </clipPath>
+ <clipPath id="strokefillclip">
+ <rect x="40" y="40" width="20" height="20" stroke="none" fill="none" />
+ </clipPath>
+ <clipPath id="strokewidthclip">
+ <rect x="40" y="40" width="20" height="20" stroke="black" stroke-width="80" />
+ </clipPath>
+ <clipPath id="strokeopacityclip">
+ <rect x="40" y="40" width="20" height="20" stroke="black" stroke-opacity="0" stroke-width="80" />
+ </clipPath>
+ <clipPath id="fillopacityclip">
+ <rect x="40" y="40" width="20" height="20" fill-opacity="0" />
+ </clipPath>
+ </defs>
+
+ <g>
+ <rect width="100" height="100" fill="red" clip-path="url(#emptyclip)" />
+ </g>
+
+ <g transform="translate(110 0)">
+ <rect width="100" height="100" fill="red" clip-path="url(#hiddenclip)" />
+ </g>
+
+ <g transform="translate(220 0)">
+ <rect width="100" height="100" fill="red" clip-path="url(#displayclip)" />
+ </g>
+
+ <!-- This has an intentionally broken clip-path url -->
+ <g transform="translate(0 110)">
+ <rect width="100" height="100" fill="red" clip-path="url(#unknown)" />
+ </g>
+
+ <g transform="translate(110 110)">
+ <rect width="100" height="100" fill="red" clip-path="url(#opacityclip)" />
+ </g>
+
+ <g transform="translate(220 110)">
+ <rect width="100" height="100" fill="red" clip-path="url(#strokefillclip)" />
+ </g>
+
+ <g transform="translate(0 220)">
+ <rect width="100" height="100" fill="red" clip-path="url(#strokewidthclip)" />
+ </g>
+
+ <g transform="translate(110 220)">
+ <rect width="100" height="100" fill="red" clip-path="url(#strokeopacityclip)" />
+ </g>
+
+ <g transform="translate(220 220)">
+ <rect width="100" height="100" fill="red" clip-path="url(#fillopacityclip)" />
+ </g>
+
+
+
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/clips_and_masks.svg b/share/extensions/other/extension-xaml/tests/data/svg/clips_and_masks.svg
new file mode 100644
index 0000000..4beccd4
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/clips_and_masks.svg
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 210 297"
+ version="1.1"
+ id="svg13556"
+ inkscape:version="1.1-dev (d1a926bd5e, 2020-11-14)"
+ sodipodi:docname="clips_and_masks.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs
+ id="defs13552">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath13846">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 40.565583,169.25411 125.00155,213.98274 95.588201,270.21716 47.572909,191.02479 Z"
+ id="path13848" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath14259">
+ <path
+ id="path14261"
+ style="stroke:#ff00ff;stroke-width:0.264583"
+ d="M 126.20114,40.02528 A 23.801659,23.801659 0 0 1 102.39948,63.826938 23.801659,23.801659 0 0 1 78.597818,40.02528 23.801659,23.801659 0 0 1 102.39948,16.223621 23.801659,23.801659 0 0 1 126.20114,40.02528 Z" />
+ </clipPath>
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask5225">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 104.29088,196.45513 -0.7464,-49.07734 25.25593,28.33562 31.39136,-29.83103 0.79046,50.34807 -5.60361,1.25689 -2.46557,-33.69356 -22.69324,19.90202 -22.05043,-16.72667 z"
+ id="path5227" />
+ </mask>
+ <mask
+ maskUnits="userSpaceOnUse"
+ id="mask5460">
+ <path
+ id="path5462"
+ style="fill:#ffffff;stroke:#ff00ff;stroke-width:0.264583"
+ inkscape:transform-center-x="2.5828768"
+ inkscape:transform-center-y="0.0811432"
+ d="m 169.64048,220.5459 -8.45374,16.45466 8.7624,16.29237 -18.26165,-2.95521 -12.78723,13.36816 -2.83259,-18.28108 -16.66535,-8.03039 16.51102,-8.34312 2.48748,-18.33121 13.03696,13.12474 z" />
+ </mask>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="367.14286"
+ inkscape:cy="492.85714"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1366"
+ inkscape:window-height="717"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:snap-global="false" />
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ id="path14112"
+ style="stroke-width:0.264583;stroke:#ff00ff"
+ d="M 103.01046,57.276211 A 23.801659,23.801659 0 0 1 79.208801,81.077869 23.801659,23.801659 0 0 1 55.407143,57.276211 23.801659,23.801659 0 0 1 79.208801,33.474552 23.801659,23.801659 0 0 1 103.01046,57.276211 Z"
+ clip-path="url(#clipPath14259)" />
+ <path
+ id="path5331"
+ style="stroke:#ff00ff;stroke-width:0.264583"
+ inkscape:transform-center-x="-1.2994782"
+ inkscape:transform-center-y="-1.3937968"
+ d="m 160.04313,261.88254 -14.88713,-10.98156 -17.48608,6.03804 5.84371,-17.55198 -11.14602,-14.76439 18.49874,0.13383 10.59746,-15.16294 5.58914,17.6347 17.69561,5.39318 -15.04446,10.76501 z"
+ mask="url(#mask5460)" />
+ </g>
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/gradient_with_mixed_offsets.svg b/share/extensions/other/extension-xaml/tests/data/svg/gradient_with_mixed_offsets.svg
new file mode 100644
index 0000000..be376bd
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/gradient_with_mixed_offsets.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+ "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg width="8cm" height="4cm" viewBox="0 0 800 400" version="1.1"
+ xmlns="http://www.w3.org/2000/svg">
+ <desc>Example radgrad01 - fill a rectangle by referencing a
+ radial gradient paint server</desc>
+ <g>
+ <defs>
+ <radialGradient id="MyGradient" gradientUnits="userSpaceOnUse"
+ cx="400" cy="200" r="300" fx="400" fy="200">
+ <stop offset="0%" stop-color="red" />
+ <stop offset="50" stop-color="blue" />
+ <stop offset="100%" stop-color="red" />
+ </radialGradient>
+ </defs>
+
+ <!-- Outline the drawing area in blue -->
+ <rect fill="none" stroke="blue"
+ x="1" y="1" width="798" height="398"/>
+
+ <!-- The rectangle is filled using a radial gradient paint server -->
+ <rect fill="url(#MyGradient)" stroke="black" stroke-width="5"
+ x="100" y="100" width="600" height="200"/>
+ </g>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/guides.svg b/share/extensions/other/extension-xaml/tests/data/svg/guides.svg
new file mode 100644
index 0000000..f67b40d
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/guides.svg
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="ref_guides.svg"
+ inkscape:version="0.0"
+ inkscape:export-ydpi="96"
+ inkscape:export-xdpi="96"
+ inkscape:export-filename="{tempdir}/guides.png"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 1000 1000"
+ height="1000"
+ width="1000">
+ <style
+ id="style872"></style>
+ <metadata
+ id="metadata41">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs33" />
+ <sodipodi:namedview
+ inkscape:bbox-nodes="true"
+ inkscape:bbox-paths="true"
+ inkscape:snap-page="true"
+ inkscape:snap-nodes="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-global="true"
+ inkscape:guide-bbox="true"
+ showguides="true"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer2"
+ inkscape:window-maximized="1"
+ inkscape:window-y="0"
+ inkscape:window-x="0"
+ inkscape:cy="465.64169"
+ inkscape:cx="544.90051"
+ inkscape:zoom="0.77183614"
+ inkscape:snap-text-baseline="true"
+ showgrid="true"
+ id="base"
+ inkscape:window-height="1017"
+ inkscape:window-width="1920"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff">
+ <inkscape:grid
+ originy="0"
+ originx="0"
+ empopacity="0.25098039"
+ empcolor="#ff0000"
+ opacity="0.25098039"
+ color="#8080ff"
+ empspacing="2"
+ spacingy="100"
+ spacingx="100"
+ id="grid27"
+ type="xygrid" />
+ <sodipodi:guide
+ id="guide880"
+ orientation="1,0"
+ position="46.936577,700" />
+ <sodipodi:guide
+ id="guide882"
+ orientation="0,-1"
+ position="46.936577,951.0227" />
+ <sodipodi:guide
+ id="guide884"
+ orientation="1,0"
+ position="953.01659,951.0227" />
+ <sodipodi:guide
+ id="guide886"
+ orientation="0,-1"
+ position="953.01659,49.024128" />
+ <sodipodi:guide
+ id="guide888"
+ orientation="0.70710678,-0.70710678"
+ position="46.936577,49.024128" />
+ <sodipodi:guide
+ id="guide890"
+ orientation="-0.70710678,-0.70710678"
+ position="953.01659,49.024128" />
+ </sodipodi:namedview>
+ <g
+ style="display:inline"
+ inkscape:label="Slide3"
+ id="webslicer-layer"
+ inkscape:groupmode="layer" />
+ <g
+ style="display:inline"
+ inkscape:label="Slide2"
+ id="layer2"
+ inkscape:groupmode="layer">
+ <use
+ transform="matrix(1.8978616,0,0,1.8909129,-450.29818,-444.94362)"
+ inkscape:label="#use3808"
+ height="100%"
+ width="100%"
+ id="u1"
+ inkscape:transform-center-y="-0.31067244"
+ inkscape:transform-center-x="12.274064"
+ xlink:href="#s1"
+ y="0"
+ x="0"
+ style="display:inline;stroke-width:0.527876" />
+ <path
+ inkscape:transform-center-y="-0.16430137"
+ inkscape:transform-center-x="6.4673011"
+ d="M 558.40487,540.93476 513.066,532.8003 480.66172,565.53783 474.38757,519.90431 433.23885,499.20247 474.70009,479.13386 481.67306,433.60189 513.57167,466.83233 559.02991,459.39386 537.2831,500.00001 Z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.2643023"
+ sodipodi:arg1="0.63598373"
+ sodipodi:r2="34.682434"
+ sodipodi:r1="69.364868"
+ sodipodi:cy="499.73415"
+ sodipodi:cx="502.60169"
+ sodipodi:sides="5"
+ id="s1"
+ style="display:inline;fill:#fcaf3e;stroke:#a40000;stroke-width:10"
+ sodipodi:type="star" />
+ <rect
+ ry="2.1866901"
+ y="100"
+ x="300"
+ height="100"
+ width="100"
+ id="rect900"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <rect
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="rect902"
+ width="100"
+ height="100"
+ x="500"
+ y="100"
+ ry="2.1866901" />
+ <rect
+ ry="2.1866901"
+ y="100"
+ x="697.91248"
+ height="100"
+ width="100"
+ id="rect904"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <rect
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="rect906"
+ width="100"
+ height="100"
+ x="700"
+ y="800"
+ ry="2.1866901" />
+ <rect
+ ry="2.1866901"
+ y="796"
+ x="504"
+ height="100"
+ width="100"
+ id="rect908"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:16;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <rect
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:32;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="rect910"
+ width="100"
+ height="100"
+ x="300"
+ y="800"
+ ry="2.1866901" />
+ <circle
+ r="50"
+ cy="350"
+ cx="150"
+ id="path912"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <circle
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="circle914"
+ cx="149.5"
+ cy="549.5"
+ r="50" />
+ <circle
+ r="50"
+ cy="749"
+ cx="146.91245"
+ id="circle916"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <circle
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="circle918"
+ cx="852"
+ cy="752"
+ r="50" />
+ <circle
+ r="50"
+ cy="554"
+ cx="854"
+ id="circle920"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:16;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <circle
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:32;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="circle922"
+ cx="842"
+ cy="358"
+ r="50" />
+ </g>
+ <g
+ style="display:inline"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Slide1" />
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/layers.svg b/share/extensions/other/extension-xaml/tests/data/svg/layers.svg
new file mode 100644
index 0000000..f1f5e10
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/layers.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg5"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)" sodipodi:docname="layers.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+
+ <defs id="defs2" />
+ <g inkscape:groupmode="layer" id="layer5" inkscape:label="0: Open with&amp;*_ /\1 special chars">
+ <rect style="fill:none;stroke:#666666" id="rect413" width="77.485771" height="103.82237" x="348.84445"
+ y="52.251659" />
+ </g>
+ <g inkscape:label="Save" inkscape:groupmode="layer" id="layer1" sodipodi:insentive="true" style="display:none">
+ <g inkscape:groupmode="layer" id="layer3" inkscape:label="Sublayer" />
+ <rect style="fill:none;stroke:#666666" id="rect241" width="86.137764" height="88.213371" x="39.436565"
+ y="47.738998" />
+ </g>
+ <g inkscape:groupmode="layer" id="layer2" inkscape:label="Save">
+ <ellipse style="fill:none;stroke:#666666" id="path354" cx="229.87366" cy="134.39566" rx="36.842052"
+ ry="47.220097" />
+ <path sodipodi:type="star" style="fill:none;stroke:#666666" id="path408" inkscape:flatsided="false"
+ sodipodi:sides="5" sodipodi:cx="80.948738" sodipodi:cy="220.01453" sodipodi:r1="62.302845"
+ sodipodi:r2="31.151423" sodipodi:arg1="0.52327832" sodipodi:arg2="1.1515969" inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="M 134.91456,251.14866 93.628281,248.46871 68.014778,280.96005 57.8054,240.86631 18.989285,226.5468 l 34.976541,-22.09934 1.623824,-41.34129 31.82607,26.43559 39.81969,-11.23081 -15.30695,38.43744 z"
+ inkscape:transform-center-x="3.9968135" inkscape:transform-center-y="2.0185843" />
+ </g>
+ <g inkscape:groupmode="layer" id="layer4" inkscape:label="di_Save" />
+ <g id="justagroup" inkscape:label="Just_a_group"/>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/lineargradient_simple.svg b/share/extensions/other/extension-xaml/tests/data/svg/lineargradient_simple.svg
new file mode 100644
index 0000000..75339e5
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/lineargradient_simple.svg
@@ -0,0 +1,20 @@
+<svg xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 480 360">
+ <!-- Derived from pservers-grad-01-b.svg and pservers-grad-07-b.svg
+ from the SVG unit test suite under the 3-clause BSD license-->
+ <defs>
+ <linearGradient id="Grad1a" gradientUnits="objectBoundingBox" x1="0" y1="0" x2="1" y2="1">
+ <stop stop-color="blue" offset="0" />
+ <stop stop-color="lime" offset="1" />
+ </linearGradient>
+ <linearGradient id="Grad1b" xlink:href="#Grad1a" />
+ <linearGradient id="Gradient" gradientUnits="userSpaceOnUse" x1="10" y1="10" x2="200" y2="10" spreadMethod="reflect">
+ <stop stop-color="blue" offset="-1"/>
+ <stop stop-color="lime" offset="0.2"/>
+ </linearGradient>
+ </defs>
+ <rect x="20" y="20" width="440" height="80" fill="url(#Grad1a)" />
+ <rect x="20" y="120" width="440" height="80" fill="url(#Grad1b)" />
+ <rect x="25" y="250" width="440" height="80" fill="none" stroke="url(#Gradient)" stroke-width="20"/>
+
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/markers_basic.svg b/share/extensions/other/extension-xaml/tests/data/svg/markers_basic.svg
new file mode 100644
index 0000000..2e6561c
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/markers_basic.svg
@@ -0,0 +1,41 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360">
+ <!-- Derived from painting-marker-01-f.svg from the SVG unit test suite
+ under the 3-clause BSD license-->
+ <defs>
+ <marker id="marker1" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
+ <rect width="10" height="10" fill="purple" stroke="none"/>
+ </marker>
+ <marker id="marker2" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth" orient="auto">
+ <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
+ </marker>
+ <marker id="markerStart" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
+ <rect width="10" height="10" fill="purple" stroke="none"/>
+ </marker>
+ <marker id="markerMiddle" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
+ <circle cx="5" cy="5" r="5" fill="green" stroke="none"/>
+ </marker>
+ <marker id="markerEnd" viewBox="0 0 10 10" markerWidth="2" markerHeight="2" refX="5" refY="5" markerUnits="strokeWidth">
+ <path d="M 5 0 L 10 10 L 0 10 Z" fill="blue" stroke="none"/>
+ </marker>
+ </defs>
+ <!-- ===================================================================== -->
+ <!-- Basic Marker Test -->
+ <!-- ===================================================================== -->
+ <path fill="none" stroke="black" stroke-width="8" style="marker: url(#marker1)" d="M 130 40 L 180 40 L 180 90"/>
+
+ <!-- ===================================================================== -->
+ <!-- Start, Middle and End Marker Test -->
+ <!-- ===================================================================== -->
+ <path fill="none" stroke="black" stroke-width="8" marker-start="url(#markerStart)" marker-mid="url(#markerMiddle)" marker-end="url(#markerEnd)" d="M 130 135 L 180 135 L 180 185"/>
+
+ <!-- ===================================================================== -->
+ <!-- Auto Orientation Marker Test -->
+ <!-- ===================================================================== -->
+ <path fill="none" stroke="black" stroke-width="8" marker-start="url(#marker2)" marker-mid="url(#marker2)" marker-end="url(#marker2)" d="M 130 230 L 180 230 L 180 280"/>
+
+ <!-- userSpaceOnUse, only marker-mod, display=none (but still displayed)-->
+ <marker id="testMarker" markerWidth="10" markerHeight="10" display="none" markerUnits="userSpaceOnUse">
+ <path d="M 0 0 L 20 20 L 0 15 z" fill="green" />
+ </marker>
+ <path d="M 300 20 L 325 50 L 350 20" stroke="black" stroke-width="8" fill="none" marker-mid="url(#testMarker)"/>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/masks.svg b/share/extensions/other/extension-xaml/tests/data/svg/masks.svg
new file mode 100644
index 0000000..6b0d7b4
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/masks.svg
@@ -0,0 +1,29 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"
+ viewBox="0 0 480 360">
+ <!-- Derived from masking-mask-01-b.svg and masking-mask-02-f.svg
+ from the SVG unit test suite under the 3-clause BSD license-->
+ <defs>
+ <mask id="testMask" />
+ </defs>
+
+ <!-- Draw a red rectangle in the background -->
+ <rect x="10" y="30" width="100" height="260" fill="red" />
+ <!-- Apply a gradient ramp based opacity -->
+ <mask id="mask1" maskUnits="userSpaceOnUse" x="60" y="50" width="100" height="60" color-interpolation="linearRGB">
+ <defs>
+ <linearGradient gradientUnits="userSpaceOnUse" id="Grad1" x1="60" y1="50" x2="60" y2="120">
+ <stop stop-color="white" stop-opacity="1" offset="0" />
+ <stop stop-color="white" stop-opacity="0.5" offset="1" />
+ </linearGradient>
+ </defs>
+ <rect x="60" y="50" width="100" height="60" fill="url(#Grad1)" />
+ </mask>
+ <rect x="60" y="50" width="100" height="60" fill="lime" mask="url(#mask1)" />
+ <!-- Simulate a uniform opacity using a mask -->
+ <mask id="mask2" maskUnits="userSpaceOnUse" x="60" y="120" width="100" height="30" color-interpolation="linearRGB">
+ <rect x="60" y="120" width="100" height="30" fill-opacity="0.5" fill="white" />
+ </mask>
+ <rect x="60" y="120" width="100" height="30" fill="lime" mask="url(#mask2)" />
+ <!-- An element referencing an empty mask should not be rendered -->
+ <rect x="100" y="100" width="250" height="150" fill="red" mask="url(#testMask)" />
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/paint-order.svg b/share/extensions/other/extension-xaml/tests/data/svg/paint-order.svg
new file mode 100644
index 0000000..89a180e
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/paint-order.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg4564" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="paint-order.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview id="namedview4566" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showgrid="false" inkscape:zoom="2" inkscape:cx="248" inkscape:cy="145.5" inkscape:window-width="2560" inkscape:window-height="1377" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1" />
+ <defs id="defs4561">
+ <marker markerWidth="2" markerHeight="2" refX="5" refY="5" orient="0" id="pin" viewBox="0 0 10 10" inkscape:stockid="pin" preserveAspectRatio="xMidYMid" inkscape:isstock="true" inkscape:collect="always">
+ <rect fill="blue" x="0" y="0" width="10" height="10"/>
+ </marker>
+ </defs>
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin)" d="M 55,115 V 60 h 50 l 35,55 z" id="path5987" sodipodi:nodetypes="ccccc" />
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:stroke fill markers" d="M 175,115 V 60 h 50 l 35,55 z" id="path6673" sodipodi:nodetypes="ccccc" />
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:fill markers stroke" d="M 295,115 V 60 h 50 l 35,55 z" id="path6675" sodipodi:nodetypes="ccccc" />
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:markers fill stroke" d="m 55,215 v -55 h 50 l 35,55 z" id="path6679" sodipodi:nodetypes="ccccc" />
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:stroke markers fill" d="m 175,215 v -55 h 50 l 35,55 z" id="path6681" sodipodi:nodetypes="ccccc" />
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;marker-mid:url(#pin);paint-order:markers stroke fill" d="m 295,215 v -55 h 50 l 35,55 z" id="path6683" sodipodi:nodetypes="ccccc" />
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" d="m 175,315 v -55 h 50 l 35,55 z" id="path6679" sodipodi:nodetypes="ccccc" />
+ <path style="fill:#f00;fill-opacity:0.5;fill-rule:evenodd;stroke:#000000;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke" d="m 55,315 v -55 h 50 l 35,55 z" id="path6679" sodipodi:nodetypes="ccccc" />
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/paths.svg b/share/extensions/other/extension-xaml/tests/data/svg/paths.svg
new file mode 100644
index 0000000..b87bd4c
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/paths.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360">
+ <!-- Derived from path-data-01|02|03|13|19-t.svg from the SVG unit test suite
+under the 3-clause BSD license-->
+ <path id="X_curve_MCSmcs" fill="#00ff00" stroke="#00c000"
+ d="m 396,258 c -65,0 -100,-50 -100,-50 0,0 -35,-55 -100,-55 m 0,105 c 65,0 100,-50 100,-50 0,0 35,-55 100,-55" />
+ <path id="Bez_MQMqz" fill="none" stroke="#0000ff" stroke-width="3"
+ d="m 285,20 q 15,100 115,10 m 50,50 Q 375,-20 287,20 Z" />
+ <path id="Arc_MaZmAzmaz" fill="#609040" stroke="#000000" stroke-width="3"
+ d=" M 30 100 a 40 40 0 0 1 65 50 Z m 30 30 A 20 20 0 0 0 125 230 Z m 40 24 a 20 20 0 0 1 65 50 z " />
+ <path fill="none" stroke="#000000"
+ d=" m 62.00000 56.00000 51.96152 90.00000 -103.92304 0.00000 51.96152 -90.00000 z m 0.00000 15.00000 38.97114 67.50000 -77.91228 0.00000 38.97114 -67.50000 z "
+ id="path5" />
+ <path d="M220 20 L 240 20 260 20 " stroke-width="3" stroke="black" fill="none" id="path7" />
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/patterns.svg b/share/extensions/other/extension-xaml/tests/data/svg/patterns.svg
new file mode 100644
index 0000000..76f5f21
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/patterns.svg
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Derived from pservers-pattern-01-b.svg from the SVG unit test suite
+under the 3-clause BSD license-->
+ <defs>
+ <pattern id="pattern" viewBox="0 0 100 100" patternTransform="rotate(45)" height="0.1" width="0.1">
+ <rect y="50" width="50" height="50" fill="blue"/>
+ <rect x="50" width="50" height="50" fill="blue"/>
+ </pattern>
+ </defs>
+ <pattern patternUnits="userSpaceOnUse" id="pat1" x="10" y="10" width="20" height="20">
+ <rect x="5" y="5" width="10" height="10" fill="yellow"/>
+ <rect x="10" y="10" width="10" height="10" fill="green"/>
+ </pattern>
+ <rect x="25" y="10" width="430" height="60" stroke="black" fill="url(#pat1)"/>
+ <pattern id="pat3" patternTransform="rotate(45)" xlink:href="#pat1">
+ </pattern>
+ <rect x="35" y="110" width="410" height="40" fill="none" stroke="url(#pat1)" stroke-width="20"/>
+ <rect x="20" y="200" fill="url(#pat3)" width="200" height="100"/>
+ <rect x="250" y="200" fill="url(#pattern)" width="100" height="100"/>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/polygon_polyline_line.svg b/share/extensions/other/extension-xaml/tests/data/svg/polygon_polyline_line.svg
new file mode 100644
index 0000000..c3687bd
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/polygon_polyline_line.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360">
+ <!-- Derived from shapes-line-02-t.svg
+ shapes-polygon-01-t.svg
+ shapes-polygon-03-t.svg
+ shapes-polyline-01-t.svg
+ from the SVG unit test suite under the 3-clause BSD license-->
+ <line x1="100" y1="100" x2="200" y2="150" stroke-width="10" stroke="black" fill="red" id="line2" />
+ <polygon id="polygon-07" fill="none" stroke="#00FF00" stroke-width="8"
+ points="270,225 300,245 320,225 340,245 280,280 390,280 420,240 280,185" />
+ <polyline id="polyline-06" fill="#ff00ff" stroke="#000000" stroke-width="8"
+ points="270,75 300,95 320,75 340,95 280,130 390,130 420,90 280,35" />
+ <polyline fill="red" points="80,200 80,300 150,250 80,200 250" id="polyline6" />
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/radialgradient_focal.svg b/share/extensions/other/extension-xaml/tests/data/svg/radialgradient_focal.svg
new file mode 100644
index 0000000..25fb597
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/radialgradient_focal.svg
@@ -0,0 +1,48 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"
+ viewBox="0 0 480 360">
+ <!-- Derived from pservers-grad-12-b.svg and pservers-grad-13-b.svg
+ from the SVG unit test suite under the 3-clause BSD license-->
+ <defs>
+ <radialGradient id="grad1d" gradientUnits="objectBoundingBox" cx="10%" cy="10%" r="75%" fx="00.00%" fy="75%">
+ <stop offset="0" stop-opacity="0" />
+ <stop offset=".5" stop-color="darkblue" />
+ <stop offset="1" stop-opacity="0" />
+ </radialGradient>
+ <radialGradient id="grad6d" gradientUnits="objectBoundingBox" cx="10%" cy="10%" r="75%" fx="83.33%" fy="75%">
+ <stop offset="0" stop-opacity="0" />
+ <stop offset=".5" stop-color="darkblue" />
+ <stop offset="1" stop-opacity="0" />
+ </radialGradient>
+ <radialGradient id="Grad1">
+ <stop stop-color="#009" offset="0" />
+ <stop stop-color="lime" offset="1" />
+ </radialGradient>
+ <radialGradient id="Grad2" gradientUnits="objectBoundingBox" cx=".2" cy=".2" fx=".2" fy=".2" r=".5">
+ <stop stop-color="#009" offset="0" />
+ <stop stop-color="lime" offset="1" />
+ </radialGradient>
+
+ <g id="alpha">
+ <rect x="00" y="0" width="100" height="60" fill="yellow" />
+ <rect x="00" y="0" width="20" height="60" fill="gold" />
+ <rect x="25" y="0" width="20" height="60" fill="orange" />
+ <rect x="50" y="0" width="20" height="60" fill="sienna" />
+ <rect x="75" y="0" width="20" height="60" fill="gold" />
+ <rect x="00" y="0" width="100" height="60" />
+ <!-- inherits a radial gradient -->
+ </g>
+ </defs>
+ <radialGradient id="Grad3" cx="25" cy="215" r="25" fx="25" fy="215" gradientUnits="userSpaceOnUse">
+ <stop stop-color="yellow" offset="0" />
+ <stop stop-color="blue" offset="1" />
+ </radialGradient>
+ <g id="group1" stroke="black" stroke-width="0.5">
+ <rect x="10" y="35" width="460" height="50" fill="url(#Grad1)" />
+ <rect x="10" y="125" width="460" height="50" fill="url(#Grad2)" />
+ <rect transform="translate(10, 260) rotate(-90)" x="0" y="0" width="50" height="460" fill="url(#Grad3)" />
+
+ <use xlink:href="#alpha" x="017.5" y="240" fill="url(#grad1d)" />
+ <use xlink:href="#alpha" x="355" y="240" fill="url(#grad6d)" />
+
+ </g>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/rect_basic.svg b/share/extensions/other/extension-xaml/tests/data/svg/rect_basic.svg
new file mode 100644
index 0000000..0334411
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/rect_basic.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360">
+<!-- Derived from shapes-rect-01-t.svg from the SVG unit test suite
+under the 3-clause BSD license-->
+ <rect id="Simple-rect-no-fill" fill="none" stroke="#000000" x="30" y="46" width="50" height="80" />
+ <rect id="Simple-rect-filled" fill="fuchsia" stroke="#000000" x="130" y="46" width="50" height="80" />
+ <rect id="Simple-round-rect-filled" fill="fuchsia" x="350" y="46" width="50" height="80" rx="30"/>
+ <rect id="rect-06" fill="#00FF00" x="350" y="196" width="50" height="80" rx="30" ry="50"/>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/rect_defaults.svg b/share/extensions/other/extension-xaml/tests/data/svg/rect_defaults.svg
new file mode 100644
index 0000000..eae50b7
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/rect_defaults.svg
@@ -0,0 +1,23 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 480 360">
+ <!-- Derived from shapes-rect-02-t.svg from the SVG unit test suite
+under the 3-clause BSD license-->
+ <g fill="green" stroke="#000000">
+ <!-- Set x coordinate to default. -->
+ <rect y="46" width="50" height="80" />
+
+ <!-- Set y coordinate to default. -->
+ <rect x="130" width="50" height="80" />
+
+ <!-- Set width to default. -->
+ <rect x="250" y="46" height="80" width="0" />
+
+ <!-- Set height to default. -->
+ <rect x="350" y="46" height="0" width="50" />
+
+ <!-- Set rx to default. -->
+ <rect x="30" y="196" width="50" height="80" ry="20" />
+
+ <!-- Set ry to default. -->
+ <rect x="130" y="196" width="50" height="80" rx="20" />
+ </g>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/shapes.svg b/share/extensions/other/extension-xaml/tests/data/svg/shapes.svg
new file mode 100644
index 0000000..eb9caed
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/shapes.svg
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:ns1="https://launchpad.net/jessyink"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1000"
+ height="1000"
+ viewBox="0 0 1000 1000"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
+ sodipodi:docname="test.svg">
+ <defs
+ id="defs33">
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path859"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1017"
+ id="base"
+ showgrid="true"
+ inkscape:snap-text-baseline="true"
+ inkscape:zoom="0.6675088"
+ inkscape:cx="202.7349"
+ inkscape:cy="481.16986"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="webslicer-layer">
+ <inkscape:grid
+ type="xygrid"
+ id="grid27"
+ spacingx="10"
+ spacingy="10"
+ empspacing="10"
+ color="#8080ff"
+ opacity="0.25098039"
+ empcolor="#0000ff"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <g
+ inkscape:groupmode="layer"
+ id="webslicer-layer"
+ inkscape:label="Slide3"
+ style="display:inline">
+ <rect
+ height="201.49811"
+ width="248.69112"
+ y="353.92661"
+ x="651.3089"
+ id="slicerect1"
+ style="opacity:0.5;fill:#ff0000;stroke-width:1.11927199">
+ <desc
+ id="desc51">format: png
+dpi: 96
+layout-disposition: bg-el-norepeat
+layout-position-anchor: tl</desc>
+ </rect>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Slide2"
+ style="display:inline">
+ <circle
+ style="display:inline;fill:#000080;stroke:none"
+ id="c1"
+ cx="150"
+ cy="450"
+ r="50"
+ inkscape:label="#path3736" />
+ <ellipse
+ style="display:inline;fill:none;stroke:#ff0000;stroke-width:16"
+ id="c2"
+ cx="400"
+ cy="450"
+ rx="100"
+ ry="50"
+ inkscape:label="#path3738" />
+ <path
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="c3"
+ sodipodi:type="arc"
+ sodipodi:cx="700"
+ sodipodi:cy="450"
+ sodipodi:rx="100"
+ sodipodi:ry="50"
+ sodipodi:start="0.59013865"
+ sodipodi:end="5.6484511"
+ d="m 783.08635,477.82381 a 100,50 0 0 1 -111.09848,20.17442 100,50 0 0 1 -71.96301,-46.88343 100,50 0 0 1 67.71127,-48.44091 100,50 0 0 1 112.7868,17.67793 L 700,450 Z"
+ inkscape:label="#path3740" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10;marker-start:url(#Arrow2Lstart)"
+ d="M 100,600 200,700 300,600 400,700"
+ id="p1"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3746" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10"
+ d="m 500,600 c 0,0 0,100 100,100 100,0 0,-100 100,-100 100,0 100,100 100,100"
+ id="p2"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3748" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:10"
+ id="s1"
+ sodipodi:sides="5"
+ sodipodi:cx="189.03001"
+ sodipodi:cy="847.93945"
+ sodipodi:r1="69.364868"
+ sodipodi:r2="34.682434"
+ sodipodi:arg1="0.63598373"
+ sodipodi:arg2="1.2643023"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 244.8332,889.14005 -45.33887,-8.13446 -32.40428,32.73753 -6.27415,-45.63352 -41.14872,-20.70184 41.46124,-20.06861 6.97297,-45.53197 31.89861,33.23044 45.45824,-7.43847 -21.74681,40.60615 z"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#s1"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137"
+ id="u1"
+ transform="translate(200,2.9962152)"
+ width="100%"
+ height="100%"
+ inkscape:label="#use3808" />
+ </g>
+ <g
+ inkscape:label="Slide1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline">
+ <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="100"
+ y="100"
+ id="t1"
+ inkscape:label="#text12"><tspan
+ sodipodi:role="line"
+ id="tspan10"
+ x="100"
+ y="100">Hello World</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="t4"
+ style="font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ transform="matrix(0.26458333,0,0,0.26458333,372.02961,28.904505)"
+ inkscape:label="#flowRoot14"><flowRegion
+ id="flowRegion16"><rect
+ id="rect18"
+ width="264.5675"
+ height="262.16187"
+ x="105.71429"
+ y="219.66254" /></flowRegion><flowPara
+ id="flowPara20"
+ style="font-size:55.43307114px">flow text which wraps</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="200"
+ y="100"
+ id="t2"
+ inkscape:label="#text3727"><tspan
+ sodipodi:role="line"
+ id="tspan3725"
+ x="200"
+ y="100"
+ style="font-size:14.66666698px">UPPER</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="300"
+ y="100"
+ id="t3"
+ inkscape:label="#text3735"><tspan
+ sodipodi:role="line"
+ id="tspan3733"
+ x="300"
+ y="100"
+ style="font-size:14.66666698px">Multi line</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="118.33334"
+ id="tspan3737"
+ style="font-size:14.66666698px">text</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="136.66667"
+ id="tspan3739"
+ style="font-size:14.66666698px">FOO</tspan></text>
+ <g
+ id="t5"
+ transform="translate(445.71038,-129.64807)"
+ inkscape:label="#g3772">
+ <text
+ id="text3762"
+ y="229.64807"
+ x="54.289616"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="229.64807"
+ x="54.289616"
+ id="tspan3760"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">Grouped</tspan></text>
+ <text
+ id="text3766"
+ y="259.64807"
+ x="54.289619"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="259.64807"
+ x="54.289619"
+ id="tspan3764"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">text</tspan></text>
+ </g>
+ <rect
+ style="fill:#000080;stroke:none"
+ id="r1"
+ width="100"
+ height="100"
+ x="100"
+ y="200"
+ inkscape:label="#rect3732" />
+ <rect
+ style="fill:none;stroke:#ff0000;stroke-width:16"
+ id="r2"
+ width="200"
+ height="100"
+ x="300"
+ y="200"
+ inkscape:label="#rect3734" />
+ <rect
+ style="fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="r3"
+ width="200"
+ height="100"
+ x="600"
+ y="200"
+ ry="38.950798"
+ rx="44.943226"
+ inkscape:label="#rect3744" />
+ </g>
+ <script
+ ns1:version="1.5.5"
+ id="JessyInk">// dummy
+</script>
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/strokestyle.svg b/share/extensions/other/extension-xaml/tests/data/svg/strokestyle.svg
new file mode 100644
index 0000000..8a76587
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/strokestyle.svg
@@ -0,0 +1,13 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"
+ viewBox="0 0 480 360">
+ <!-- Derived from painting-stroke-03-t.svg and painting-stroke-06-t.svg
+ from the SVG unit test suite under the 3-clause BSD license-->
+ <path fill="none" stroke="blue" stroke-width="30" stroke-linecap="round" d="M 30 110 l 200 20 l -200 20 " />
+ <path fill="none" stroke="blue" stroke-width="30" stroke-linejoin="miter" stroke-miterlimit="1"
+ d="M 30 190 l 200 20 l -200 20" />
+ <path stroke="black" stroke-width="10" fill="none" stroke-dasharray="none" d=" M 20 20 L 200 20" />
+
+ <path stroke="black" stroke-width="20" fill="none" stroke-dasharray="5,2,5,5,2,5" d=" M 20 60 L 200 60"/>
+ <path stroke="blue" stroke-width="10" fill="none" stroke-dasharray="5,2,5" d=" M 20 60 L 200 60" />
+
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/swatches.svg b/share/extensions/other/extension-xaml/tests/data/svg/swatches.svg
new file mode 100644
index 0000000..340a316
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/swatches.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg width="100%" height="100%" viewBox="0 0 480 360" version="1.1" id="svg1011" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="swatches.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview id="namedview1013" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:showpageshadow="2" inkscape:pageopacity="0.0" inkscape:pagecheckerboard="0" inkscape:deskcolor="#d1d1d1" inkscape:document-units="mm" showgrid="false" inkscape:zoom="2.5247521" inkscape:cx="161.0059" inkscape:cy="223.78434" inkscape:window-width="2560" inkscape:window-height="1377" inkscape:window-x="1912" inkscape:window-y="-8" inkscape:window-maximized="1" inkscape:current-layer="layer1" />
+ <defs id="defs1008">
+ <linearGradient id="background" inkscape:swatch="solid">
+ <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0" id="stop4542" />
+ </linearGradient>
+ <linearGradient id="foreground" inkscape:swatch="solid">
+ <stop style="stop-color:#000000;stop-opacity:0.5;" offset="0" id="stop4423" />
+ </linearGradient>
+ <linearGradient id="accent" inkscape:swatch="solid">
+ <stop style="stop-color:#ff0000;stop-opacity:1;" offset="0" id="stop4417" />
+ </linearGradient>
+ <linearGradient inkscape:collect="always" xlink:href="#accent" id="linearGradient4421" x1="150" y1="60" x2="230" y2="60" gradientUnits="userSpaceOnUse" />
+ <linearGradient inkscape:collect="always" xlink:href="#foreground" id="linearGradient4427" x1="150" y1="60" x2="230" y2="60" gradientUnits="userSpaceOnUse" />
+ <linearGradient inkscape:collect="always" xlink:href="#background" id="linearGradient4546" x1="100" y1="200" x2="140" y2="200" gradientUnits="userSpaceOnUse" />
+ <linearGradient inkscape:collect="always" xlink:href="#accent" id="linearGradient4552" x1="49.673347" y1="189.90646" x2="143.3302" y2="189.90646" gradientUnits="userSpaceOnUse" />
+ <linearGradient inkscape:collect="always" xlink:href="#foreground" id="linearGradient4558" x1="49.673347" y1="189.90646" x2="143.3302" y2="189.90646" gradientUnits="userSpaceOnUse" />
+ </defs>
+ <g inkscape:label="Layer 1" inkscape:groupmode="layer">
+ <rect style="fill:#000000;stroke:#ff0000;stroke-width:18;stroke-dasharray:none;stop-color:#000000" id="rect4153" width="61" height="61" x="29" y="29" />
+ <rect style="fill:url(#linearGradient4427);stroke:url(#linearGradient4421);stroke-width:18;stroke-dasharray:none;stop-color:#000000;fill-opacity:1.0" id="rect4153-7" width="61" height="61" x="159" y="29" />
+ <path id="path4319" style="stroke:url(#linearGradient4558);stroke-width:6;stop-color:#000000;fill-opacity:1.0;fill:url(#linearGradient4552);stroke-dasharray:none" d="M 50,230 H 143 L 96,150 Z" />
+ <circle style="fill:url(#linearGradient4546);stroke:none;stroke-width:18;stroke-dasharray:none;stop-color:#000000;fill-opacity:1.0" id="path4481" cx="120" cy="200" r="20" />
+ </g>
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/test.svg b/share/extensions/other/extension-xaml/tests/data/svg/test.svg
new file mode 100644
index 0000000..f8b6601
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/test.svg
@@ -0,0 +1,28 @@
+<svg viewBox="-1 -1 162 92" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <path id="smiley" d="M50,10 A40,40,1,1,1,50,90 A40,40,1,1,1,50,10 M30,40 Q36,35,42,40 M58,40 Q64,35,70,40 M30,60 Q50,75,70,60 Q50,75,30,60" />
+ </defs>
+
+ <!-- (width>height) meet -->
+ <svg preserveAspectRatio="xMidYMid meet" x="0" y="0" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMinYMid meet" x="25" y="0" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMaxYMid meet" x="50" y="0" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg>
+
+ <!-- (width>height) slice -->
+ <svg preserveAspectRatio="xMidYMin slice" x="0" y="15" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMidYMid slice" x="25" y="15" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMidYMax slice" x="50" y="15" viewBox="0 0 100 100" width="20" height="10"><use href="#smiley" /></svg>
+
+ <!-- (width<height) meet -->
+ <svg preserveAspectRatio="xMidYMin meet" x="75" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMidYMid meet" x="90" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMidYMax meet" x="105" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg>
+
+ <!-- (width<height) slice -->
+ <svg preserveAspectRatio="xMinYMid slice" x="120" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMidYMid slice" x="135" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg>
+ <svg preserveAspectRatio="xMaxYMid slice" x="150" y="0" viewBox="0 0 100 100" width="10" height="25"><use href="#smiley" /></svg>
+
+ <!-- none -->
+ <svg preserveAspectRatio="none" x="0" y="30" viewBox="0 0 100 100" width="160" height="60"><use href="#smiley" /></svg>
+</svg> \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/text-decorations.svg b/share/extensions/other/extension-xaml/tests/data/svg/text-decorations.svg
new file mode 100644
index 0000000..d6b93fd
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/text-decorations.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg width="100mm" height="40mm" viewBox="0 0 100 40" version="1.1" inkscape:version="1.2 (dc2aedaf03, 2022-05-15)" sodipodi:docname="text-decorations.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="5.0039978"><tspan style="text-decoration:underline">Underlined</tspan> text</text>
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ff00ff;fill-opacity:0.5;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="30.164551" y="5.0536323"><tspan style="text-decoration-line:overline">Overlined</tspan> no shorthand</text>
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:green;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="8.7957726"><tspan style="text-decoration-line:underline;text-decoration-style:dotted">Dotted underlined</tspan> text</text>
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="36.355827" y="8.6846189"><tspan style="text-decoration:dashed overline;">dashed overlined</tspan> text</text>
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="12.593491"><tspan style="text-decoration:wavy line-through #ff00000">Wavy striked through</tspan> text</text>
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="16.858685"><tspan style="text-decoration:wavy red underline overline;">Wavy over- and underline</tspan> text</text>
+ <text xml:space="preserve" style="font-size:1.41111px;line-height:0;font-family:sans-serif;text-decoration:wavy blue underline;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="50" y="11.523354">small Wavy</text>
+ <text xml:space="preserve" style="font-size:20px;line-height:0;font-family:sans-serif;text-decoration:wavy blue underline;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="70" y="19">big</text>
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="27"><tspan style="text-decoration-line:underline overline;text-decoration-style:double;text-decoration-color:#000000"><tspan style="font-size:6.35px">Double</tspan> over- and underline</tspan> text</text>
+ <text xml:space="preserve" style="font-size:2.82223px;line-height:0;font-family:sans-serif;text-decoration:underline red;letter-spacing:0px;word-spacing:0px;fill:#000000;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="2" y="35">Everything red underlined, plus black strikethrough <tspan style="font-size:2.82222px;text-decoration:line-through;">here</tspan></text>
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/data/svg/text_types.svg b/share/extensions/other/extension-xaml/tests/data/svg/text_types.svg
new file mode 100644
index 0000000..194833f
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/data/svg/text_types.svg
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ width="142.15878"
+ height="96.270485"
+ viewBox="0 0 142.15879 96.270485"
+ version="1.1"
+ id="svg5"
+ inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
+ sodipodi:docname="text_types.svg"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <sodipodi:namedview
+ id="namedview7"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ objecttolerance="10.0"
+ gridtolerance="10.0"
+ guidetolerance="10.0"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ inkscape:pagecheckerboard="0"
+ inkscape:document-units="px"
+ showgrid="false"
+ inkscape:zoom="8"
+ inkscape:cx="77.4375"
+ inkscape:cy="80.6875"
+ inkscape:window-width="1368"
+ inkscape:window-height="850"
+ inkscape:window-x="-6"
+ inkscape:window-y="-6"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer1"
+ units="px"
+ lock-margins="true"
+ fit-margin-top="5"
+ fit-margin-left="5"
+ fit-margin-right="5"
+ fit-margin-bottom="5"
+ inkscape:showpageshadow="2"
+ inkscape:deskcolor="#d1d1d1" />
+ <defs
+ id="defs2">
+ <rect
+ x="106.75"
+ y="60.125001"
+ width="33.25"
+ height="13"
+ id="rect405" />
+ <rect
+ x="100"
+ y="300"
+ width="200"
+ height="90"
+ id="rect127697" />
+ <filter
+ inkscape:collect="always"
+ style="color-interpolation-filters:sRGB"
+ id="filter4223"
+ x="-0.014790819"
+ y="-0.10231475"
+ width="1.0295816"
+ height="1.2046295">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.16541762"
+ id="feGaussianBlur4225" />
+ </filter>
+ </defs>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-8.0187893,28.437623)">
+ <text
+ xml:space="preserve"
+ id="regular"
+ style="font-size:3px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round"
+ x="13"
+ y="5"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.5"
+ x="13"
+ y="5"
+ id="tspan107965">This is a regular text</tspan><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.5"
+ x="13"
+ y="8.75"
+ id="tspan753">With a <tspan
+ style="font-style:normal;font-variant:normal;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Bold';text-decoration:underline;text-decoration-line:underline;text-decoration-style:solid;text-decoration-color:#ff0000"
+ id="tspan426">line break.</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ id="regular-transform"
+ style="font-size:3px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round"
+ x="80"
+ y="-6"
+ transform="matrix(1.2,0.5,-0.4,0.7,0,0)"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.5"
+ x="80"
+ y="-6"
+ id="tspan890">This is regular text</tspan><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.5"
+ x="80"
+ y="-2.25"
+ id="tspan894">with a line break</tspan><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.5"
+ x="80"
+ y="1.5"
+ id="tspan166626">and some transforms.</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;white-space:pre;inline-size:25.75;display:inline;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round"
+ id="inline-size"
+ transform="translate(13,3)"><tspan
+ x="0"
+ y="11.480255"
+ id="tspan2116"><tspan
+ style="stroke-width:0.5"
+ id="tspan2114">This is an SVG2 </tspan></tspan><tspan
+ x="0"
+ y="15.230256"
+ id="tspan2124"><tspan
+ style="stroke-width:0.5"
+ id="tspan2118">flowed text </tspan><tspan
+ style="stroke-width:0.5"
+ id="tspan2120">(inlin</tspan><tspan
+ id="tspan2122">e </tspan></tspan><tspan
+ x="0"
+ y="18.980256"
+ id="tspan2130"><tspan
+ id="tspan2126">siz</tspan><tspan
+ style="stroke-width:0.5"
+ id="tspan2128">e).
+</tspan></tspan><tspan
+ x="0"
+ y="22.730256"
+ id="tspan2136"><tspan
+ style="stroke-width:0.5"
+ id="tspan2132">This is a line </tspan><tspan
+ style="stroke-width:0.5"
+ id="tspan2134">break </tspan></tspan><tspan
+ x="0"
+ y="26.480256"
+ id="tspan2146"><tspan
+ style="font-weight:bold;-inkscape-font-specification:'Arial Bold'"
+ id="tspan2138">inside</tspan><tspan
+ style="stroke-width:0.5"
+ id="tspan2140"> </tspan><tspan
+ style="stroke-width:0.5"
+ id="tspan2142">that </tspan><tspan
+ style="stroke-width:0.5"
+ id="tspan2144">text.</tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ id="shape-inside"
+ style="font-size:20px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;writing-mode:lr-tb;direction:ltr;white-space:pre;shape-inside:url(#rect127697);display:inline;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round"
+ transform="matrix(0.15,0,0,0.15,-3,-3)"><tspan
+ x="100"
+ y="318.01509"
+ id="tspan2148">This is an SVG2 </tspan><tspan
+ x="100"
+ y="343.01509"
+ id="tspan2150">flowed text (shape </tspan><tspan
+ x="100"
+ y="368.01509"
+ id="tspan2152">inside)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:3.175px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;letter-spacing:0.0343958px;fill:#000000;stroke-width:0.499999;stroke-linecap:round;stroke-linejoin:round"
+ x="13"
+ y="58"
+ id="kerning"><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.5"
+ x="13"
+ y="58"
+ id="tspan19510">This is a <tspan
+ style="letter-spacing:0.320146px"
+ id="tspan25400">text</tspan> with kerns adjusted in tspans</tspan><tspan
+ sodipodi:role="line"
+ style="stroke-width:0.5"
+ x="13"
+ y="61.96875"
+ id="tspan1285">(as Inkscape does it)</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ style="font-size:12px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round"
+ id="flowroot"
+ transform="translate(-32,-8)scale(0.25)"><flowRegion
+ id="flowRegion92145"><rect
+ id="rect92147"
+ width="150"
+ height="80.5"
+ x="314"
+ y="70" /></flowRegion><flowPara
+ id="flowPara92157"
+ style="font-size:10px">This is an SVG1.2 flowed text (flowroot)</flowPara><flowPara
+ id="flowPara92168">And this is a linebreak <flowSpan
+ style="font-size:20.5px"
+ id="flowSpan323">inside.</flowSpan></flowPara></flowRoot>
+ <flowRoot
+ xml:space="preserve"
+ style="font-size:12px;line-height:20px;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round"
+ id="flowroot-abs-lineheight"
+ transform="translate(10, -10)scale(0.25)"><flowRegion
+ id="flowRegion92145-9"><rect
+ id="rect92147-2"
+ width="150"
+ height="81.669708"
+ x="300"
+ y="70" /></flowRegion><flowPara
+ id="flowPara92157-6"
+ style="font-size:10px">This is an SVG1.2 flowed text</flowPara><flowPara
+ style="font-size:10px"
+ id="flowPara181051">With absolute line-height</flowPara><flowPara
+ id="flowPara92168-7" /></flowRoot>
+ <flowRoot
+ xml:space="preserve"
+ style="font-size:12px;font-family:Arial;-inkscape-font-specification:Arial;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round"
+ id="flowroot-no-lineheight"
+ transform="translate(10, 0)scale(0.25)"><flowRegion
+ id="flowRegion92145-9-5"><rect
+ id="rect92147-2-1"
+ width="170"
+ height="66.55159"
+ x="300"
+ y="70" /></flowRegion><flowPara
+ id="flowPara178978">This is an SVG1.2 flowed text</flowPara><flowPara
+ id="flowPara191038">without line height.</flowPara></flowRoot>
+ <text
+ y="4.9445772"
+ x="51.84655"
+ style="font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.37276px;font-family:Helvetica;-inkscape-font-specification:Helvetica;writing-mode:lr-tb;fill:#110f0d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.352777"
+ id="manual-kerns"><tspan
+ style="stroke-width:0.352777"
+ x="51.84655 52.646873 52.99144 58.482491 59.282814 59.627373 71.752998 72.553322 72.897888 75.069603 75.869919 76.214493 78.387573 79.187889 79.532463 82.391922 83.192253 83.536812 103.09733 103.89765 104.24221 109.73325 110.53359 110.87815 116.36782 117.16816 117.51272 119.68581 120.48612 120.83068"
+ y="4.9445772"
+ sodipodi:role="line"
+ id="tspan5688">0.50.10.10.10.34.20.54.30.14.5</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:5.33333px;line-height:125%;font-family:Arial;-inkscape-font-specification:Arial;writing-mode:lr-tb;direction:ltr;fill:#000000;stroke-width:1.88976;stroke-linecap:round;stroke-linejoin:round"
+ x="13.65625"
+ y="-19.117189"
+ id="title"><tspan
+ sodipodi:role="line"
+ id="tspan156918"
+ x="13.65625"
+ y="-19.117189"
+ style="font-size:5.33333px;direction:ltr">This is a test document containing different transformed </tspan><tspan
+ sodipodi:role="line"
+ x="13.65625"
+ y="-12.450527"
+ style="font-size:5.33333px;direction:ltr"
+ id="tspan163610">text elements that were created using different methods.</tspan><tspan
+ sodipodi:role="line"
+ x="13.65625"
+ y="-5.7838631"
+ style="font-size:5.33333px;direction:ltr"
+ id="tspan168431">The containing layer has a transform applied as well.</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.33333px;font-family:Arial, Verdana;-inkscape-font-specification:'Arial, Verdana';fill:#000000;filter:url(#filter4223)"
+ x="50"
+ y="40"
+ id="text4221"><tspan
+ sodipodi:role="line"
+ id="tspan4219"
+ x="52.03619"
+ y="44.747932">Blurred text</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.33333px;font-family:Arial, Verdana;-inkscape-font-specification:'Arial, Verdana';display:none;fill:#000000"
+ x="86.330864"
+ y="60.657829"
+ id="text7345"><tspan
+ sodipodi:role="line"
+ id="tspan7343"
+ x="86.330864"
+ y="60.657829">This text should be invisible</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:50%;font-size:normal;font-family:Arial;fill:#000000;stroke-width:0.192272"
+ x="400"
+ y="300"
+ id="text7457"
+ transform="scale(0.2)"><tspan
+ sodipodi:role="line"
+ style="text-decoration:red overline blink;"
+ id="tspan7455"
+ x="81.044586"
+ y="55.852364">Non-Inkscape properties</tspan></text>
+ <text
+ xml:space="preserve"
+ transform="translate(21.143789,-30.187623)"
+ id="text403"
+ style="font-weight:bold;font-size:2px;line-height:125%;font-family:Verdana;-inkscape-font-specification:'Verdana Bold';white-space:pre;shape-inside:url(#rect405);display:inline;fill:#000000"><tspan
+ x="106.75"
+ y="61.949661"
+ id="tspan2154">This is a text
+</tspan><tspan
+ x="106.75"
+ y="65.199661"
+ id="tspan2158"><tspan
+ style="line-height:2"
+ id="tspan2156">which changes
+</tspan></tspan><tspan
+ x="106.75"
+ y="69.199661"
+ id="tspan2162"><tspan
+ style="line-height:2"
+ id="tspan2160">line-height</tspan>
+</tspan><tspan
+ x="106.75"
+ y="72.449661"
+ id="tspan2164">midway twice.</tspan></text>
+ </g>
+</svg>
diff --git a/share/extensions/other/extension-xaml/tests/dev_requirements.txt b/share/extensions/other/extension-xaml/tests/dev_requirements.txt
new file mode 100644
index 0000000..0e358d9
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/dev_requirements.txt
@@ -0,0 +1,11 @@
+# Dev Requirements
+pytest
+pytest-cov
+
+# Code requirements
+typing
+lxml
+numpy
+scour
+pyserial
+cssselect \ No newline at end of file
diff --git a/share/extensions/other/extension-xaml/tests/test_inx_good.py b/share/extensions/other/extension-xaml/tests/test_inx_good.py
new file mode 100644
index 0000000..3feaa14
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/test_inx_good.py
@@ -0,0 +1,12 @@
+import os
+
+from inkex.tester import TestCase
+from inkex.tester.inx import InxMixin
+
+
+class SvgToXamlInxTestCase(InxMixin, TestCase):
+ """Check that inx defaults match, and all parameters are there"""
+
+ def test_my_inx_file(self):
+ os.chdir("inkxaml")
+ self.assertInxIsGood("svg2xaml.inx")
diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_adv.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_adv.py
new file mode 100644
index 0000000..95f5e68
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_adv.py
@@ -0,0 +1,786 @@
+from math import sqrt
+
+import inkex
+from .context import Svg2XamlTester
+
+"""More SVG2XAML custom tests"""
+
+
+class XamlAdvancedPrimitiveTests(Svg2XamlTester):
+ """Here we test more advanced primitives:
+ - masks and clips
+ - patterns
+ - markers"""
+
+ def test_clip_single(self):
+ """Test clips consisting of a single element, applied to a single object."""
+ dwg = self.run_to_dg("clip_single.svg")
+ # For the first three tests, empty clip paths are provided. These can be
+ # simplified into an empty string.
+ for i in range(3):
+ # Clips can only be specified on DrawingGroups.
+ self.assertTagEqual(dwg[i], "DrawingGroup")
+ self.assertTagEqual(dwg[i][0], "DrawingGroup")
+ self.assertPropertyEqual(dwg[i][0], "ClipGeometry", "")
+
+ # The next test has an invalid clip url set.
+ # This means we don't even need a wrapper.
+ self.assertTagEqual(dwg[3], "DrawingGroup")
+ self.assertTagEqual(dwg[3][0], "GeometryDrawing")
+ self.assertPropertyEqual(dwg[3], "ClipGeometry", None, default=None)
+
+ # The next five clips specify different fill/stroke information, including
+ # none and zero opacity, proving that this has no effect on the clip.
+
+ for i in range(4, 9):
+ self.assertTagEqual(dwg[i], "DrawingGroup")
+ self.assertTagEqual(dwg[i][0], "DrawingGroup")
+ self.assertTagEqual(dwg[i][0][1], "DrawingGroup.ClipGeometry")
+ # We don't need a geometry group, as the clips only have one child
+ self.assertTagEqual(dwg[i][0][1][0], "RectangleGeometry")
+ self.assertPropertyEqual(dwg[i][0][1][0], "Rect", [40, 40, 20, 20])
+
+ def test_clip_single_canvas(self):
+ """Test clips consisting of a single element, applied to a single object,
+ for canvas-type output"""
+ canvas = self.run_to_canvas("clip_single.svg")
+ # For the first three tests, empty clip paths are provided. These can be
+ # simplified into an empty string.
+ for i in range(3):
+ self.assertTagEqual(canvas[i], "Canvas")
+ self.assertTagEqual(canvas[i][0], "Rectangle")
+ self.assertPropertyEqual(canvas[i][0], "Clip", "")
+
+ # The next test has an invalid clip url set.
+ self.assertTagEqual(canvas[3], "Canvas")
+ self.assertTagEqual(canvas[3][0], "Rectangle")
+ self.assertPropertyEqual(canvas[3][0], "ClipGeometry", None, default=None)
+
+ # The next five clips specify different fill/stroke information, including
+ # none and zero opacity, proving that this has no effect on the clip.
+ for i in range(4, 9):
+ self.assertTagEqual(canvas[i], "Canvas")
+ self.assertTagEqual(canvas[i][0], "Rectangle")
+ self.assertTagEqual(canvas[i][0][0], "Rectangle.Clip")
+ # We don't need a geometry group, as the clips only have one child
+ self.assertTagEqual(canvas[i][0][0][0], "RectangleGeometry")
+ self.assertPropertyEqual(canvas[i][0][0][0], "Rect", [40, 40, 20, 20])
+
+ def test_clip_multiple(self):
+ """Test that a single clip applied to multiple objects works;
+ the clip is applied to a group and a rectangle, and itself consists of
+ two rectangles (which are unioned internally)."""
+
+ dwg = self.run_to_dg("clip_complex.svg")
+ for i in [0, 1]:
+ self.assertTagEqual(dwg[i], "DrawingGroup")
+ self.assertTagEqual(dwg[i][-1], "DrawingGroup.ClipGeometry")
+ self.assertTagEqual(dwg[i][-1][0], "GeometryGroup")
+ self.assertPropertyEqual(dwg[i][-1][0], "FillRule", "Nonzero")
+ self.assertEqual(len(dwg[i][-1][0]), 2) # The clip has two children
+ self.assertTagEqual(dwg[i][-1][0][0], "RectangleGeometry")
+ self.assertTagEqual(dwg[i][-1][0][1], "RectangleGeometry")
+ self.assertPropertyEqual(dwg[i][-1][0][0], "Rect", [90, 50, 175, 200])
+ self.assertPropertyEqual(dwg[i][-1][0][1], "Rect", [225, 160, 95, 75])
+ self.assertTagEqual(dwg[0][0], "GeometryDrawing")
+ self.assertTagEqual(dwg[1][0], "GeometryDrawing")
+ self.assertTagEqual(dwg[1][1], "GeometryDrawing")
+
+ def test_clip_multiple_canvas(self):
+ """Test that a single clip applied to multiple objects works;
+ the clip is applied to a group and a rectangle, and itself consists of
+ two rectangles (which are unioned internally); now for a canvas"""
+
+ dwg = self.run_to_canvas("clip_complex.svg")
+
+ self.assertTagEqual(dwg[0], "Rectangle")
+ self.assertTagEqual(dwg[1], "Canvas")
+
+ self.assertTagEqual(dwg[0][-1], "Rectangle.Clip")
+ self.assertTagEqual(dwg[1][-1], "Canvas.Clip")
+ for i in [0, 1]:
+ self.assertTagEqual(dwg[i][-1][0], "GeometryGroup")
+ self.assertPropertyEqual(dwg[i][-1][0], "FillRule", "Nonzero")
+ self.assertEqual(len(dwg[i][-1][0]), 2) # The clip has two children
+ self.assertTagEqual(dwg[i][-1][0][0], "RectangleGeometry")
+ self.assertTagEqual(dwg[i][-1][0][1], "RectangleGeometry")
+ self.assertPropertyEqual(dwg[i][-1][0][0], "Rect", [90, 50, 175, 200])
+ self.assertPropertyEqual(dwg[i][-1][0][1], "Rect", [225, 160, 95, 75])
+ self.assertTagEqual(dwg[1][0], "Rectangle")
+ self.assertTagEqual(dwg[1][1], "Rectangle")
+
+ def test_cliprule(self):
+ """Test that the clip-rule attribute of a clippath is converted to fill-rule."""
+
+ dwg = self.run_to_dg("clip_complex.svg")
+ for i in [2, 3]:
+ self.assertTagEqual(dwg[i], "DrawingGroup")
+ self.assertPropertyEqual(dwg[i], "Transform", [1, 0, 0, 1, 150, 0])
+ self.assertTagEqual(dwg[i][-1], "DrawingGroup.ClipGeometry")
+ self.assertTagEqual(dwg[i][-1][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[i][-1][0],
+ "FillRule",
+ "EvenOdd" if i == 2 else "Nonzero",
+ default="EvenOdd",
+ )
+ self.assertTagEqual(dwg[i][0], "GeometryDrawing")
+
+ dwg = self.run_to_canvas("clip_complex.svg")
+ for i in [2, 3]:
+ self.assertTagEqual(dwg[i], "Rectangle")
+ self.assertPropertyEqual(dwg[i], "RenderTransform", [1, 0, 0, 1, 150, 0])
+ self.assertTagEqual(dwg[i][-1], "Rectangle.Clip")
+ self.assertTagEqual(dwg[i][-1][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[i][-1][0],
+ "FillRule",
+ "EvenOdd" if i == 2 else "Nonzero",
+ default="EvenOdd",
+ )
+ self.assertPropertyEqual(
+ dwg[i][-1][0],
+ "Transform",
+ [
+ 1,
+ 0,
+ 0,
+ 1,
+ -float(dwg[i].get("Canvas.Left")),
+ -float(dwg[i].get("Canvas.Top")),
+ ],
+ )
+
+ def test_opacitymask(self):
+ """Test opacity masks."""
+ # Objects 2 and 3 have an opacity mask consisting of 1 element applied;
+ # the first is a linear gradient and the second is a solid brush.
+ # Object 4 has an empty mask, and is clipped away completely.
+ dwg = self.run_to_dg("masks.svg")
+ canvas = self.run_to_canvas("masks.svg")
+ for dgg in [dwg, canvas]:
+ for i in [1, 2]:
+ opm = dgg[i][1 if dwg == dgg else 0]
+ if dgg == dwg:
+ self.assertTagEqual(
+ opm,
+ "DrawingGroup.OpacityMask"
+ if dgg == dwg
+ else "Rectangle.OpacityMask",
+ )
+ self.assertTagEqual(opm[0], "DrawingBrush")
+ self.assertTagEqual(opm[0][0], "DrawingBrush.Drawing")
+ self.assertPropertyEqual(opm[0], "ViewboxUnits", "Absolute")
+ self.assertPropertyEqual(opm[0], "ViewportUnits", "Absolute")
+ vb = (
+ [60, 50, 100, 60]
+ if i == 1
+ else ([60, 120, 100, 30] if i == 2 else [0, 0, 0, 0])
+ )
+ self.assertPropertyEqual(opm[0], "Viewbox", vb, separator=" ")
+ self.assertPropertyEqual(opm[0], "Viewport", vb, separator=" ")
+ if dgg == canvas and i < 3:
+ self.assertPropertyEqual(
+ opm[0],
+ "Transform",
+ [1, 0, 0, 1, -60, -120] if i == 2 else [1, 0, 0, 1, -60, -50],
+ )
+ # Two solutions are acceptable; optionally the GeometryDrawing can be
+ # wrapped in a DrawingGroup.
+ if i < 3:
+ if opm[0][0][0].tag == f"{{{self.xamlns}}}GeometryDrawing":
+ gdw = opm[0][0]
+ elif opm[0][0][0].tag == f"{{{self.xamlns}}}DrawingGroup":
+ gdw = opm[0][0][0][0]
+ self.assertTagEqual(gdw, "GeometryDrawing")
+ # The remainder is a standard group parser, so a cursory check is
+ # sufficient
+ if i == 1:
+ self.assertTagEqual(gdw[1][0], "RectangleGeometry")
+ self.assertTagEqual(gdw[0][0], "LinearGradientBrush")
+ if i == 2:
+ self.assertTagEqual(gdw[0][0], "RectangleGeometry")
+ self.assertPropertyEqual(gdw, "Brush", "#7fffffff")
+ else:
+ if len(opm[0][0]) == 0:
+ # This would be ok
+ pass
+ if len(opm[0][0]) == 1:
+ self.assertTagEqual(opm[0][0][0], "DrawingGroup")
+ self.assertEqual(len(opm[0][0][0]), 0)
+
+ def test_mask_noxywh(self):
+ """Inkscape-created masks typically don't have x/y/width/height set"""
+ dwg = self.run_to_dg("../svg/clips_and_masks.svg")
+ mask = dwg[0][1][-1]
+ self.assertTagEqual(mask, "DrawingGroup.OpacityMask")
+ viewbox = mask[0].get("Viewbox")
+ self.assertPropertyEqual(mask[0], "TileMode", "None", default="None")
+ self.assertEqual(viewbox, mask[0].get("Viewport"))
+ viewbox = list(map(float, viewbox.split()))
+ # Tight bounding box
+ self.assertLessEqual(viewbox[0], 119.103416442871)
+ self.assertLessEqual(viewbox[1], 210.436676025391)
+ self.assertGreaterEqual(viewbox[2], 51.0891952514648)
+ self.assertGreaterEqual(viewbox[3], 53.5543518066406)
+
+ def test_patterns(self):
+ dwg = self.run_to_dg("patterns.svg")
+ # Canvas works pretty much identical so we don't test it explicitly
+ # The first pattern is absolute, but has a nonzero x / y value.
+ # The first two elements reference the same pattern, but for the second one,
+ # it's applied to the stroke.
+ # The second pattern (third object) references the first one, but
+ # applies an additional transform. This is representative of patterns created
+ # in Inkscape. Apart from the transform, all should be identical.
+ self.assertTagEqual(dwg[0][0], "GeometryDrawing.Brush")
+ self.assertTagEqual(dwg[2][0], "GeometryDrawing.Brush")
+ self.assertTagEqual(dwg[1][1], "GeometryDrawing.Pen")
+ for i in (0, 1, 2):
+ dbr = dwg[i][1 if i == 1 else 0][0]
+ if i == 1:
+ self.assertTagEqual(dbr, "Pen")
+ self.assertPropertyEqual(dbr, "Thickness", 20)
+ self.assertTagEqual(dbr[0], "Pen.Brush")
+ dbr = dbr[0][0]
+ self.assertTagEqual(dbr, "DrawingBrush")
+ self.assertPropertyEqual(dbr, "TileMode", "Tile")
+ self.assertPropertyEqual(dbr, "Viewbox", [10, 10, 20, 20], separator=" ")
+ self.assertPropertyEqual(dbr, "Viewport", [10, 10, 20, 20], separator=" ")
+ self.assertPropertyEqual(dbr, "ViewboxUnits", "Absolute")
+ self.assertPropertyEqual(dbr, "ViewportUnits", "Absolute")
+ self.assertTagEqual(dbr[0], "DrawingBrush.Drawing")
+ self.assertTagEqual(dbr[0][0], "DrawingGroup")
+ self.assertEqual(len(dbr[0][0]), 2)
+ self.assertTagEqual(dbr[0][0][1], "GeometryDrawing")
+ self.assertPropertyEqual(dbr[0][0], "Transform", [1, 0, 0, 1, 10, 10])
+ self.assertPropertyEqual(dbr[0][0][0][0][0], "Rect", [5, 5, 10, 10])
+ if i == 2:
+ os2 = 1 / sqrt(2)
+ self.assertPropertyEqual(
+ dbr,
+ "Transform",
+ (os2, os2, -os2, os2, 0, 0),
+ )
+
+ # The third pattern is defined in relative coordinates. The logic for this
+ # is rather different than in SVG.
+ dbr = dwg[3][0][0]
+ self.assertTagEqual(dbr, "DrawingBrush")
+ self.assertPropertyEqual(
+ dbr,
+ "Transform",
+ (os2, os2, -os2, os2, 0, 0),
+ )
+ self.assertPropertyEqual(dbr, "TileMode", "Tile")
+ self.assertPropertyEqual(dbr, "Viewbox", [0, 0, 0.1, 0.1], separator=" ")
+ self.assertPropertyEqual(dbr, "Viewport", [0, 0, 0.1, 0.1], separator=" ")
+ self.assertPropertyEqual(dbr, "ViewboxUnits", "Absolute")
+ self.assertPropertyEqual(
+ dbr,
+ "ViewportUnits",
+ "RelativeToBoundingBox",
+ default="RelativeToBoundingBox",
+ )
+ self.assertTagEqual(dbr[0], "DrawingBrush.Drawing")
+ self.assertTagEqual(dbr[0][0], "DrawingGroup")
+ self.assertEqual(len(dbr[0][0]), 2)
+ self.assertTagEqual(dbr[0][0][1], "GeometryDrawing")
+ self.assertPropertyEqual(dbr[0][0], "Transform", [0.001, 0, 0, 0.001, 0, 0])
+ self.assertPropertyEqual(dbr[0][0][0][0][0], "Rect", [0, 50, 50, 50])
+
+ def test_markers(self):
+ """Test marker export"""
+ dwg = self.run_to_dg("markers_basic.svg")
+
+ # There are four paths / four groups plus one global clip.
+ self.assertEqual(len(dwg), 5)
+ # Each group has four children, the path and three markers.
+ for i in range(3):
+ self.assertEqual(len(dwg[i]), 4)
+ self.assertTagEqual(dwg[i][0], "GeometryDrawing")
+ self.assertTagEqual(dwg[i][0][0][0], "PathGeometry")
+ for j in range(1, 4):
+ self.assertTagEqual(dwg[i][j], "DrawingGroup")
+ self.assertTagEqual(dwg[i][j][0], "GeometryDrawing")
+ self.assertTagEqual(dwg[i][j][0][0], "GeometryDrawing.Geometry")
+ if i == 2:
+ self.assertTagEqual(dwg[i][j][0][0][0], "PathGeometry")
+ if i == 0:
+ self.assertTagEqual(dwg[i][j][0][0][0], "RectangleGeometry")
+ self.assertTagEqual(dwg[i][j][1], "DrawingGroup.ClipGeometry")
+ self.assertTagEqual(dwg[i][j][1][0], "RectangleGeometry")
+ self.assertPropertyEqual(dwg[i][j][1][0], "Rect", [0, 0, 10, 10])
+ if i == 1:
+ self.assertTagEqual(dwg[i][1][0][0][0], "RectangleGeometry")
+ self.assertTagEqual(dwg[i][2][0][0][0], "EllipseGeometry")
+ self.assertTagEqual(dwg[i][3][0][0][0], "PathGeometry")
+ # Now for canvas.
+ canvas = self.run_to_canvas("markers_basic.svg")
+ # There are four paths / four groups plus one global clip.
+ self.assertEqual(len(canvas), 5)
+ # Each group has four children, the path and three markers.
+ for i in range(3):
+ self.assertEqual(len(canvas[i]), 4)
+ self.assertTagEqual(canvas[i][0], "Path")
+ self.assertTagEqual(canvas[i][0][0][0], "PathGeometry")
+ for j in range(1, 4):
+ self.assertTagEqual(canvas[i][j], "Canvas")
+ if i == 2:
+ self.assertTagEqual(canvas[i][j][0], "Path")
+ if i == 0:
+ self.assertTagEqual(canvas[i][j][0], "Rectangle")
+ self.assertTagEqual(canvas[i][j][1], "Canvas.Clip")
+ self.assertTagEqual(canvas[i][j][1][0], "RectangleGeometry")
+ self.assertPropertyEqual(canvas[i][j][1][0], "Rect", [0, 0, 10, 10])
+ if i == 1:
+ self.assertTagEqual(canvas[i][1][0], "Rectangle")
+ self.assertTagEqual(canvas[i][2][0], "Ellipse")
+ self.assertTagEqual(canvas[i][3][0], "Path")
+ for dgg in [dwg, canvas]:
+ # Now we need to check the transforms.
+ # first path
+ trans_attr = "Transform" if dwg == dgg else "RenderTransform"
+ for i, node in enumerate([(130, 40), (180, 40), (180, 90)]):
+ p1m1 = inkex.Transform(
+ f"translate({node}) rotate(0) scale(8) translate(-1, -1) scale(0.2, 0.2)"
+ )
+ self.assertEqual(
+ p1m1, inkex.Transform(f"matrix({dgg[0][i+1].get(trans_attr)})")
+ )
+ for i, node in enumerate([(130, 135), (180, 135), (180, 185)]):
+ p1m1 = inkex.Transform(
+ f"translate({node}) rotate(0) scale(8) translate(-1, -1) scale(0.2, 0.2)"
+ )
+ self.assertEqual(
+ p1m1, inkex.Transform(f"matrix({dgg[1][i+1].get(trans_attr)})")
+ )
+ for i, node in enumerate(
+ [[(130, 230), 0], [(180, 230), 45], [(180, 280), 90]]
+ ):
+ p1m1 = inkex.Transform(
+ f"translate({node[0]}) rotate({node[1]}) scale(8) translate(-1, -1) scale(0.2, 0.2)"
+ )
+ self.assertEqual(
+ p1m1, inkex.Transform(f"matrix({dgg[2][i+1].get(trans_attr)})")
+ )
+
+ def test_markers_adv(self):
+ """Test another marker. It doesn't have a viewbox, has display=none,
+ is only set on the middle node and userSpaceOnUse"""
+ dwg = self.run_to_dg("markers_basic.svg")
+ # code mostly copied from above
+ i = 3
+ j = 1
+ self.assertTagEqual(dwg[i][0], "GeometryDrawing")
+ self.assertTagEqual(dwg[i][0][0][0], "PathGeometry")
+ self.assertEqual(len(dwg[i]), 2)
+ self.assertTagEqual(dwg[i][j], "DrawingGroup")
+ self.assertTagEqual(dwg[i][j][0], "GeometryDrawing")
+ self.assertTagEqual(dwg[i][j][0][0], "GeometryDrawing.Geometry")
+ self.assertTagEqual(dwg[i][j][0][0][0], "PathGeometry")
+ self.assertTagEqual(dwg[i][j][1], "DrawingGroup.ClipGeometry")
+ self.assertTagEqual(dwg[i][j][1][0], "RectangleGeometry")
+ self.assertPropertyEqual(dwg[i][j][1][0], "Rect", [0, 0, 10, 10])
+ p1m1 = inkex.Transform(
+ f"translate(325 50) rotate(0) translate(0, 0) scale(1, 1)"
+ )
+ self.assertEqual(p1m1, inkex.Transform(f'matrix({dwg[i][j].get("Transform")})'))
+
+ def test_paintorder(self):
+ """Test paint order, which we can only emulate by splitting up the objects"""
+
+ dgg = self.run_to_dg("paint-order.svg")
+ canvas = self.run_to_canvas("paint-order.svg")
+ for dwg in [dgg, canvas]:
+ self.assertEqual(len(dwg), 9) # 7 objects + one clip
+ for i in range(7):
+ # The first 6 have markers, so they need to be a group.
+ # The 7th also, because its stroke is painted before its fill.
+ self.assertTagEqual(dwg[i], "DrawingGroup" if dwg == dgg else "Canvas")
+ # The last one has "fill markers stroke", but since no markers are
+ # set, it can be drawn as one.
+ self.assertTagEqual(dwg[7], "GeometryDrawing" if dwg == dgg else "Path")
+
+ # The first group has a drawing with fill and stroke and three markers.
+ def assertMarkers(dwg, idx, start):
+ for i in range(start, start + 3):
+ if dwg == dgg:
+ self.assertTagEqual(dwg[idx][i], "DrawingGroup")
+ self.assertPropertyEqual(
+ dwg[idx][i][0][0][0], "Rect", [0, 0, 10, 10]
+ )
+ else:
+ self.assertTagEqual(dwg[idx][i], "Canvas")
+ self.assertPropertyEqual(dwg[idx][i][0], "Canvas.Left", 0)
+ self.assertPropertyEqual(dwg[idx][i][0], "Width", 10)
+
+ def assertStrokeFill(dwg, idx, fillidx, strokeidx, markeridx):
+ self.assertEqual(
+ len(dwg[idx]),
+ (5 if strokeidx != fillidx else 4) - (0 if markeridx >= 0 else 3),
+ )
+ self.assertTagEqual(
+ dwg[idx][strokeidx], "GeometryDrawing" if dwg == dgg else "Path"
+ )
+ self.assertTagEqual(
+ dwg[idx][fillidx], "GeometryDrawing" if dwg == dgg else "Path"
+ )
+ if dwg == dgg:
+ if fillidx != strokeidx:
+ self.assertPropertyEqual(
+ dwg[idx][strokeidx], "Brush", None, default=None
+ )
+ self.assertPropertyEqual(
+ dwg[idx][strokeidx][1][0], "Brush", "#ff000000"
+ )
+ self.assertPropertyEqual(dwg[idx][fillidx], "Brush", "#7fff0000")
+ else:
+ if fillidx != strokeidx:
+ self.assertPropertyEqual(
+ dwg[idx][strokeidx], "Fill", None, default=None
+ )
+ self.assertPropertyEqual(dwg[idx][strokeidx], "Stroke", "#ff000000")
+ self.assertPropertyEqual(dwg[idx][fillidx], "Fill", "#7fff0000")
+ self.assertEqual(
+ dwg[idx][fillidx][0][0].get("Figures"),
+ dwg[idx][strokeidx][0][0].get("Figures"),
+ )
+ if markeridx != -1:
+ assertMarkers(dwg, idx, markeridx)
+
+ assertStrokeFill(dwg, 0, 0, 0, 1)
+ # The second group has stroke fill markers.
+ assertStrokeFill(dwg, 1, 1, 0, 2)
+ # The third group has fill markers stroke.
+ assertStrokeFill(dwg, 2, 0, 4, 1)
+ # The fourth group has markers fill stroke.
+ assertStrokeFill(dwg, 3, 3, 3, 0)
+ # The fifth group has stroke markers fill.
+ assertStrokeFill(dwg, 4, 4, 0, 1)
+ # The sixth group has markers stroke fill.
+ assertStrokeFill(dwg, 5, 4, 3, 0)
+ # The seventh group doesn't have markers, but stroke before fill
+ assertStrokeFill(dwg, 6, 1, 0, -1)
+ # The last group has fill markers stroke, and can be painted in one
+ # because there are no markers.
+ self.assertTagEqual(dgg[7], "GeometryDrawing")
+ self.assertPropertyEqual(dgg[7][1][0], "Brush", "#ff000000")
+ self.assertPropertyEqual(dgg[7], "Brush", "#7fff0000")
+
+ self.assertTagEqual(canvas[7], "Path")
+ self.assertPropertyEqual(canvas[7], "Stroke", "#ff000000")
+ self.assertPropertyEqual(canvas[7], "Fill", "#7fff0000")
+
+ def test_paint_order_rectangles(self):
+ """For objects that are defined by top/left/width/height, the coordinates
+ are different for the fill-object"""
+ canvas = self.run_to_canvas("../svg/guides.svg")
+ # Group of the last ellipse, which has stroke fill paint order and
+ # half-transparent fill
+ el_group = canvas[1][-1]
+ self.assertPropertyEqual(el_group[0], "Canvas.Left", 776)
+ self.assertPropertyEqual(el_group[0], "Canvas.Top", 292)
+ self.assertPropertyEqual(el_group[0], "Width", 132)
+ self.assertPropertyEqual(el_group[0], "Height", 132)
+ self.assertPropertyEqual(el_group[0], "Fill", None, default=None)
+ self.assertPropertyEqual(el_group[0], "Stroke", "#ffa40000")
+ self.assertPropertyEqual(el_group[0], "StrokeThickness", 32)
+
+ self.assertPropertyEqual(el_group[1], "Canvas.Left", 792)
+ self.assertPropertyEqual(el_group[1], "Canvas.Top", 308)
+ self.assertPropertyEqual(el_group[1], "Width", 100)
+ self.assertPropertyEqual(el_group[1], "Height", 100)
+ self.assertPropertyEqual(el_group[1], "Fill", "#7ffcaf3e")
+ self.assertPropertyEqual(el_group[1], "Stroke", None, default=None)
+ self.assertPropertyEqual(el_group[1], "StrokeThickness", None, default=None)
+
+ def test_swatches_color(self):
+ """Test the swatch-treatment setting.
+ With swatch-treatment=color, all brushes are defined inline."""
+
+ for i in ["lowlevel", "canvas"]:
+ dct = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "swatches.svg"),
+ ["--target=wpf", f"--mode={i}", "--swatch-treatment=color"],
+ )
+ brushes = dct.xpath("//xaml:SolidColorBrush", namespaces=self.namespaces)
+ self.assertEqual(len(brushes), 0)
+ dwg = dct.xpath(
+ "//xaml:DrawingGroup" if i == "lowlevel" else "//xaml:Canvas",
+ namespaces=self.namespaces,
+ )[0][0]
+ if i == "lowlevel":
+ self.assertPropertyEqual(dwg[0], "Brush", "#ff000000")
+ self.assertPropertyEqual(dwg[0][1][0], "Brush", "#ffff0000")
+ self.assertPropertyEqual(dwg[1], "Brush", "#7f000000")
+ self.assertPropertyEqual(dwg[1][1][0], "Brush", "#ffff0000")
+ self.assertPropertyEqual(dwg[2], "Brush", "#ffff0000")
+ self.assertPropertyEqual(dwg[2][1][0], "Brush", "#7f000000")
+ self.assertPropertyEqual(dwg[3], "Brush", "#ffffffff")
+ if i == "canvas":
+ self.assertPropertyEqual(dwg[0], "Fill", "#ff000000")
+ self.assertPropertyEqual(dwg[0], "Stroke", "#ffff0000")
+ self.assertPropertyEqual(dwg[1], "Fill", "#7f000000")
+ self.assertPropertyEqual(dwg[1], "Stroke", "#ffff0000")
+ self.assertPropertyEqual(dwg[2], "Fill", "#ffff0000")
+ self.assertPropertyEqual(dwg[2], "Stroke", "#7f000000")
+ self.assertPropertyEqual(dwg[3], "Fill", "#ffffffff")
+
+ def test_blur(self):
+ # Test blur, only works for Canvas.
+ canvas = self.run_to_canvas("blur.svg")
+ # The first element has a blur with stdDev given by two (identical) values
+ for i in range(2):
+ self.assertTagEqual(canvas[i], "Rectangle")
+ self.assertTagEqual(canvas[i][0], "Rectangle.Effect")
+ self.assertTagEqual(canvas[i][0][0], "BlurEffect")
+ self.assertPropertyEqual(canvas[0][0][0], "Radius", 15.5)
+ # The second element has a single value, and is transformed (scale transform)
+ self.assertPropertyEqual(canvas[1][0][0], "Radius", 217)
+ # The third element is a blurred path
+ self.assertTagEqual(canvas[2][1], "Path.Effect")
+ self.assertPropertyEqual(canvas[2][1][0], "Radius", 9.3)
+ # The fourth element is a blurred group
+ self.assertTagEqual(canvas[3], "Canvas")
+ self.assertTagEqual(canvas[3][2], "Canvas.Effect")
+ self.assertTagEqual(canvas[3][2][0], "BlurEffect")
+ self.assertPropertyEqual(canvas[3][2][0], "Radius", 21.7)
+
+
+class SvgToXAMLOptionsTests(Svg2XamlTester):
+ """Test the CLI options of the converter."""
+
+ def test_swatches_resources(self):
+ """Test the swatch-treatment setting.
+ With swatch-treatment=StaticResource oder DynamicResource"""
+
+ for i in ["lowlevel", "canvas"]:
+ for restype in ["StaticResource", "DynamicResource"]:
+ dct = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "swatches.svg"),
+ ["--target=wpf", f"--mode={i}", f"--swatch-treatment={restype}"],
+ )
+ brushes = dct.xpath(
+ "//xaml:SolidColorBrush", namespaces=self.namespaces
+ )
+ self.assertEqual(len(brushes), 3)
+ # The order doesn't matter
+ brushes = sorted(brushes, key=lambda x: x.get(self.KEY_ATTR))
+ self.assertPropertyEqual(brushes[0], self.KEY_ATTR, "accent")
+ self.assertPropertyEqual(brushes[0], "Color", "#ffff0000")
+ self.assertPropertyEqual(brushes[1], self.KEY_ATTR, "background")
+ self.assertPropertyEqual(brushes[1], "Color", "#ffffffff")
+ # The third swatch has a stop-opacity set
+ self.assertPropertyEqual(brushes[2], self.KEY_ATTR, "foreground")
+ self.assertPropertyEqual(brushes[2], "Color", "#7f000000")
+ dwg = dct.xpath(
+ "//xaml:DrawingGroup" if i == "lowlevel" else "//xaml:Canvas",
+ namespaces=self.namespaces,
+ )[0][0]
+ if i == "lowlevel":
+ self.assertPropertyEqual(dwg[0], "Brush", "#ff000000")
+ self.assertPropertyEqual(dwg[0][1][0], "Brush", "#ffff0000")
+ self.assertPropertyEqual(
+ dwg[1], "Brush", f"{{{restype} foreground}}"
+ )
+ self.assertPropertyEqual(
+ dwg[1][1][0], "Brush", f"{{{restype} accent}}"
+ )
+ self.assertPropertyEqual(dwg[2], "Brush", f"{{{restype} accent}}")
+ self.assertPropertyEqual(
+ dwg[2][1][0], "Brush", f"{{{restype} foreground}}"
+ )
+ self.assertPropertyEqual(
+ dwg[3], "Brush", f"{{{restype} background}}"
+ )
+ if i == "canvas":
+ # The swatches should be children of the toplevel Viewbox ResourceDictionary
+ for brush in brushes:
+ self.assertTagEqual(
+ brush.getparent().getparent(), "Viewbox.Resources"
+ )
+ self.assertPropertyEqual(dwg[0], "Fill", "#ff000000")
+ self.assertPropertyEqual(dwg[0], "Stroke", "#ffff0000")
+ self.assertPropertyEqual(
+ dwg[1], "Fill", f"{{{restype} foreground}}"
+ )
+ self.assertPropertyEqual(dwg[1], "Stroke", f"{{{restype} accent}}")
+ self.assertPropertyEqual(dwg[2], "Fill", f"{{{restype} accent}}")
+ self.assertPropertyEqual(
+ dwg[2], "Stroke", f"{{{restype} foreground}}"
+ )
+ self.assertPropertyEqual(
+ dwg[3], "Fill", f"{{{restype} background}}"
+ )
+
+ def test_swatches_canvas_layers(self):
+ """The swatches should be in the Grid's resources. Otherwise, all stays the same."""
+ dct = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "swatches.svg"),
+ [
+ "--target=wpf",
+ "--mode=canvas",
+ "--swatch-treatment=StaticResource",
+ "--layers-as-resources=True",
+ ],
+ )
+ brushes = dct.xpath("//xaml:SolidColorBrush", namespaces=self.namespaces)
+ self.assertEqual(len(brushes), 3)
+ for brush in brushes:
+ self.assertTagEqual(brush.getparent().getparent(), "Grid.Resources")
+
+ def layer_basic_checks(self, dct, idd, name, len_children, type_of_first_child):
+ """Check a few basic properties for lowlevel ResourceDict entries"""
+ self.assertTagEqual(dct[2 * idd], "DrawingGroup")
+ self.assertPropertyEqual(dct[2 * idd], self.KEY_ATTR, name)
+ self.assertTagEqual(dct[2 * idd + 1], "DrawingImage")
+ self.assertPropertyEqual(dct[2 * idd + 1], self.KEY_ATTR, "di_" + name)
+ self.assertPropertyEqual(
+ dct[2 * idd + 1], "Drawing", f"{{StaticResource {name}}}"
+ )
+ self.assertEqual(len(dct[2 * idd]), len_children)
+ self.assertTagEqual(dct[2 * idd][0], type_of_first_child)
+
+ def layer_canvas_checks(self, dct, idd, name, len_children, type_of_first_child):
+ """Check a few basic properties for canvas ResourceDict entries"""
+ self.assertTagEqual(dct[idd], "Viewbox")
+ self.assertTagEqual(dct[idd][0], "Canvas")
+ self.assertPropertyEqual(dct[idd], "Name", name)
+ self.assertEqual(len(dct[idd][0]), len_children)
+ self.assertEqual(len(dct[idd]), 1)
+ self.assertTagEqual(dct[idd][0][0], type_of_first_child)
+
+ def test_layers_false_lowlevel(self):
+ """Layers as resources is switched off. Test that the resulting ResourceDict
+ is well-formed."""
+ dct = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "layers.svg"),
+ ["--target=wpf", "--mode=lowlevel", "--layers-as-resources=false"],
+ )
+ self.assertEqual(len(dct), 2)
+ # For layers as resources=false, the last non-layer group
+ # in the root group is not ignored. There should be 5 children + 1 clip.
+ self.layer_basic_checks(dct, 0, "layers", 6, "DrawingGroup")
+ # The second layer is set to be invisible.
+ self.assertPropertyEqual(dct[0][1], "ClipGeometry", "", default=None)
+ self.assertEqual(len(dct[1]), 0)
+ # If no sodipodi:docname is unset, check that a random id gets set and
+ # correctly referenced.
+ dct = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "rect_basic.svg"),
+ ["--target=wpf", "--mode=lowlevel", "--layers-as-resources=false"],
+ )
+ key = dct[0].get(self.KEY_ATTR)
+ self.assertIn("DrawingGroup_", key)
+ self.layer_basic_checks(dct, 0, key, 5, "GeometryDrawing")
+
+ def test_referencingtype(self):
+ """Test DrawingBrush as referencing element"""
+ dct = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "layers.svg"),
+ [
+ "--target=wpf",
+ "--mode=lowlevel",
+ "--layers-as-resources=false",
+ "--referencing-type=DrawingBrush",
+ ],
+ )
+ self.assertEqual(len(dct), 2)
+ self.assertTagEqual(dct[0], "DrawingGroup")
+ self.assertPropertyEqual(dct[0], self.KEY_ATTR, "layers")
+ self.assertTagEqual(dct[1], "DrawingBrush")
+ self.assertPropertyEqual(dct[1], self.KEY_ATTR, "db_layers")
+ self.assertPropertyEqual(dct[1], "Drawing", "{StaticResource layers}")
+ self.assertPropertyEqual(dct[1], "Stretch", "Uniform")
+
+ def test_layers_false_canvas(self):
+ """Same test for canvas. In this case, the root element is a ViewBox,
+ which does not need a name."""
+ vbx = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "layers.svg"),
+ ["--target=wpf", "--mode=canvas", "--layers-as-resources=false"],
+ )
+ self.assertTagEqual(vbx, "Viewbox")
+ self.assertTagEqual(vbx[0], "Canvas")
+ self.assertPropertyEqual(vbx, "Name", "layers")
+ self.assertEqual(len(vbx[0]), 6)
+ self.assertEqual(len(vbx), 1)
+ self.assertTagEqual(vbx[0][0], "Canvas")
+ # The second subgroup is invisible.
+ self.assertPropertyEqual(vbx[0][1], "Visibility", "Hidden")
+
+ def test_layers_true_lowlevel(self):
+ """Layers as resources is enabled. There are layers that are hidden,
+ layers with duplicate names, sublayers and "trick layers" starting with di_.
+
+ Test that the resulting ResourceDictionary is well-formed."""
+ dct = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "layers.svg"),
+ ["--target=wpf", "--mode=lowlevel", "--layers-as-resources=true"],
+ )
+ # The first layer has display:none. For layers as resources, this is ignored.
+ # There are also invalid characters in the key, that also starts with a number
+ # (invalid). These get fixed.
+ self.layer_basic_checks(
+ dct, 0, "_0__Open_with______1_special_chars", 2, "GeometryDrawing"
+ )
+ # The second layer has a sublayer as first child. Only top level layers are
+ # stored as resources. The second child is a normal rect
+ self.layer_basic_checks(dct, 1, "Save", 3, "DrawingGroup")
+ # The third layer has the same label as the second layer. A random number is
+ # appended. There are two children.
+ self.layer_basic_checks(dct, 2, "Save_595", 3, "GeometryDrawing")
+ # The fourth layer's is "di_Save", which already exists from the second one.
+ self.layer_basic_checks(dct, 3, "di_Save_874", 1, "DrawingGroup.ClipGeometry")
+ # In total, there are four layers. The last group is ignored because it's not
+ # a layer.
+ self.assertEqual(len(dct), 8)
+ # The ClipGeometry should be identical for all children.
+ for i in range(4):
+ self.assertTagEqual(dct[2 * i][-1], "DrawingGroup.ClipGeometry")
+ self.assertTagEqual(dct[2 * i][-1][0], "RectangleGeometry")
+ self.assertPropertyEqual(dct[2 * i][-1][0], "Rect", [0, 0, 480, 360])
+
+ def test_layers_true_canvas(self):
+ """Same test as above for canvas. In this case, the root element is a grid"""
+ grid = Svg2XamlTester.run_to_tree(
+ self.data_file("svg", "layers.svg"),
+ ["--target=wpf", "--mode=canvas", "--layers-as-resources=true"],
+ )
+ self.assertTagEqual(grid, "Grid")
+ # The first layer has display:none. For layers as resources, this is ignored.
+ # There are also invalid characters in the key, that also starts with a number
+ # (invalid). These get fixed.
+ self.layer_canvas_checks(
+ grid, 0, "_0__Open_with______1_special_chars", 2, "Rectangle"
+ )
+ # The second layer has a sublayer as first child. Only top level layers are
+ # stored as resources. The second child is a normal rect
+ self.layer_canvas_checks(grid, 1, "Save", 3, "Canvas")
+ # The third layer has the same label as the second layer. A random number is
+ # appended. There are two children.
+ self.layer_canvas_checks(grid, 2, "Save_595", 3, "Ellipse")
+ # The fourth layer's is "di_Save". This leads to collisions only for lowlevel.
+ self.layer_canvas_checks(grid, 3, "di_Save", 1, "Canvas.Clip")
+ # In total, there are four layers. The last group is ignored because it's not
+ # a layer.
+ try:
+ self.assertEqual(len(grid), 4)
+ except AssertionError:
+ # There might be an empty resource dictionary.
+ self.assertEqual(len(grid), 5)
+ self.assertTagEqual(grid[4], "Grid.Resources")
+ try:
+ self.assertEqual(len(grid[4]), 0)
+ except AssertionError:
+ self.assertEqual(len(grid[4]), 1)
+ self.assertTagEqual(grid[4][0], "ResourceDictionary")
+ self.assertEqual(len(grid[4][0]), 0)
+ # The Clip should be identical for all children.
+ for i in range(4):
+ self.assertPropertyEqual(grid[i][0], "Width", 480)
+ self.assertPropertyEqual(grid[i][0], "Height", 360)
+ self.assertTagEqual(grid[i][0][-1], "Canvas.Clip")
+ self.assertTagEqual(grid[i][0][-1][0], "RectangleGeometry")
+ self.assertPropertyEqual(grid[i][0][-1][0], "Rect", [0, 0, 480, 360])
diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_avalonia.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_avalonia.py
new file mode 100644
index 0000000..b0391c5
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_avalonia.py
@@ -0,0 +1,160 @@
+"""Tests for Avalonia XAML export"""
+
+from .context import Svg2XamlTester
+
+
+class XamlAvaloniaTests(Svg2XamlTester):
+ """We only test the things that are different from WPF XAML."""
+
+ xamlns = "https://github.com/avaloniaui"
+ namespaces = {
+ "x": "http://schemas.microsoft.com/winfx/2006/xaml",
+ "d": "http://schemas.microsoft.com/expression/blend/2008",
+ "xaml": xamlns,
+ }
+
+ def run_to_dg(self, svg, args=None):
+ return super().run_to_dg(
+ svg, args=args or ["--target=avaloniaui", "--mode=lowlevel"]
+ )
+
+ def run_to_canvas(self, svg, args=None):
+ return super().run_to_canvas(
+ svg, args=args or ["--target=avaloniaui", "--mode=canvas"]
+ )
+
+ def test_rect_lowlevel(self):
+ """Difference to WPF: there is no Radius for RectangleGeometry, and we have to
+ manually clamp the radius"""
+ dwg = self.run_to_dg("rect_basic.svg")
+ self.assertEqual(len(dwg), 5) # 4 rects + BoundingBox
+ for i in range(2):
+ self.assertTagEqual(dwg[i], "GeometryDrawing")
+ self.assertTagEqual(dwg[i][0], "GeometryDrawing.Geometry")
+ self.assertTagEqual(dwg[i][0][0], "RectangleGeometry")
+ for i in [2, 3]:
+ self.assertTagEqual(dwg[i], "GeometryDrawing")
+ self.assertTagEqual(dwg[i][0], "GeometryDrawing.Geometry")
+ self.assertTagEqual(dwg[i][0][0], "PathGeometry")
+ # Check that radius clamping works properly
+ self.assertPropertyEqual(
+ dwg[2][0][0],
+ "Figures",
+ "M 375 46 L 375 46 A 25 30 0 0 1 400 76 L 400 96 A 25 30 0 0 1 375 126 L 375 126 A 25 30 0 0 1 350 96 L 350 76 A 25 30 0 0 1 375 46 z",
+ )
+ self.assertPropertyEqual(
+ dwg[3][0][0],
+ "Figures",
+ "M 375 196 L 375 196 A 25 40 0 0 1 400 236 L 400 236 A 25 40 0 0 1 375 276 L 375 276 A 25 40 0 0 1 350 236 L 350 236 A 25 40 0 0 1 375 196 z",
+ )
+
+ def test_rect_canvas(self):
+ """Also test the IsVisible property"""
+ dwg = self.run_to_canvas("rect_defaults.svg")
+ self.assertEqual(len(dwg), 2) # they are wrapped in a subcanvas
+ grp = dwg[0]
+ self.assertEqual(len(dwg[0]), 6)
+ self.assertPropertyEqual(grp[0], "Canvas.Left", -0.5, default=0.0)
+ # default differs from WPF
+ self.assertPropertyEqual(grp[0], "StrokeJoin", "Miter", default="Bevel")
+ self.assertPropertyEqual(grp[1], "Canvas.Top", -0.5, default=0.0)
+ # two rectangles have no visibility (w/h = 0)
+ self.assertPropertyEqual(grp[2], "IsVisible", "False")
+ self.assertPropertyEqual(grp[3], "IsVisible", "False")
+ # check that the radius is symmetric if one attribute is missing
+ # However, this is a path in Avalonia (note "A 20 20")
+ self.assertPropertyEqual(
+ grp[4][0][0],
+ "Figures",
+ "M 50 196 L 60 196 A 20 20 0 0 1 80 216 L 80 256 A 20 20 0 0 1 60 276 L 50 276 A 20 20 0 0 1 30 256 L 30 216 A 20 20 0 0 1 50 196 z",
+ )
+ self.assertPropertyEqual(grp[4][0][0], "FillRule", "NonZero") # Nonzero in WPF
+ self.assertPropertyEqual(
+ grp[5][0][0],
+ "Figures",
+ "M 150 196 L 160 196 A 20 20 0 0 1 180 216 L 180 256 A 20 20 0 0 1 160 276 L 150 276 A 20 20 0 0 1 130 256 L 130 216 A 20 20 0 0 1 150 196 z",
+ )
+ self.assertPropertyEqual(grp[5][0][0], "FillRule", "NonZero") # Nonzero in WPF
+ # fill and stroke were inherited from the group
+ self.assertPropertyEqual(grp[0], "Fill", "#ff008000")
+ self.assertPropertyEqual(grp[0], "Stroke", "#ff000000")
+
+ def test_radialgradient(self):
+ """Radial gradients with ObjectBoundingBox have too much logical differences
+ to SVG (and maybe the API will change in the future), and Inkscape isn't
+ even using this. The output isn't ideal for now, so we don't test it."""
+ dgg = self.run_to_dg("radialgradient_focal.svg")
+ canvas = self.run_to_canvas("radialgradient_focal.svg")
+ for dwg in [dgg, canvas]:
+ # Next element: gradient is defined outside defs, has userSpaceOnUse,
+ # and is also transformed. This does not affect the gradient though.
+ # For canvas, the nesting depth is one lower than for lowlevel (which
+ # does not support transforming RectangleGeometries)
+ if dwg == dgg:
+ br = dwg[0][2][0][0][0]
+ else:
+ br = dwg[0][2][0][0]
+ self.assertTagEqual(br, "RadialGradientBrush")
+ # Radius is relative to untransformed bounding box, but it's possible that
+ # this will change in the future, see:
+ # https://github.com/AvaloniaUI/Avalonia/blob/2737c5038755c251edcc8456650368a8b9043dae/src/Avalonia.Base/Media/RadialGradientBrush.cs#L62
+ self.assertPropertyEqual(br, "Radius", 0.5)
+ self.assertPropertyEqual(br, "Center", [25, 215])
+ self.assertPropertyEqual(br, "GradientOrigin", [25, 215])
+ if dwg == dgg:
+ self.assertTagEqual(dwg[0][2][1], "DrawingGroup.Transform")
+ self.assertTagEqual(dwg[0][2][1][0], "MatrixTransform")
+ self.assertPropertyEqual(
+ dwg[0][2][1][0],
+ "Matrix",
+ (0, -1, 1, 0, 10, 260),
+ )
+ if dwg == canvas:
+ # Comparison value is different because of Canvas.Left / strokewidth
+ self.assertTagEqual(dwg[0][2][1], "Rectangle.RenderTransform")
+ self.assertTagEqual(dwg[0][2][1][0], "MatrixTransform")
+ self.assertPropertyEqual(dwg[0][2], "RenderTransformOrigin", [0, 0])
+ self.assertPropertyEqual(
+ dwg[0][2][1][0], "Matrix", (0, -1, 1, 0, 10, 260.5)
+ )
+
+ def test_patterns(self):
+ dwg = self.run_to_dg("patterns.svg")
+ # The first pattern is absolute, but has a nonzero x / y value.
+ # The first two elements reference the same pattern, but for the second one,
+ # it's applied to the stroke.
+ # The second pattern (third object) references the first one, but
+ # applies an additional transform. This is representative of patterns created
+ # in Inkscape. Apart from the transform, all should be identical.
+ self.assertTagEqual(dwg[0][0], "GeometryDrawing.Brush")
+ self.assertTagEqual(dwg[2][0], "GeometryDrawing.Brush")
+ self.assertTagEqual(dwg[1][1], "GeometryDrawing.Pen")
+ for i in (0, 1, 2):
+ dbr = dwg[i][1 if i == 1 else 0][0]
+ if i == 1:
+ self.assertTagEqual(dbr, "Pen")
+ self.assertPropertyEqual(dbr, "Thickness", 20)
+ self.assertTagEqual(dbr[0], "Pen.Brush")
+ dbr = dbr[0][0]
+ self.assertTagEqual(dbr, "VisualBrush")
+ self.assertPropertyEqual(dbr, "TileMode", "Tile")
+ self.assertPropertyEqual(dbr, "SourceRect", [10, 10, 20, 20], separator=" ")
+
+ self.assertPropertyEqual(
+ dbr, "DestinationRect", [-10, -10, 20, 20], separator=" "
+ )
+ self.assertPropertyEqual(dbr, "ViewboxUnits", None, default=None)
+ self.assertPropertyEqual(dbr, "ViewportUnits", None, default=None)
+ self.assertTagEqual(dbr[0], "VisualBrush.Visual")
+ self.assertTagEqual(dbr[0][0], "Canvas")
+ self.assertGreaterEqual(float(dbr[0][0].get("Width")), 30)
+ self.assertGreaterEqual(float(dbr[0][0].get("Height")), 30)
+ self.assertEqual(len(dbr[0][0]), 3)
+ self.assertTagEqual(dbr[0][0][1], "Rectangle")
+ self.assertPropertyEqual(dbr[0][0][2][0], "Matrix", [1, 0, 0, 1, 10, 10])
+ self.assertPropertyEqual(dbr[0][0][0], "Canvas.Left", 5)
+ self.assertPropertyEqual(dbr[0][0][0], "Canvas.Top", 5)
+ self.assertPropertyEqual(dbr[0][0][0], "Width", 10)
+ self.assertPropertyEqual(dbr[0][0][0], "Height", 10)
+
+ self.assertPropertyEqual(dbr, "Transform", None)
diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_basic.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_basic.py
new file mode 100644
index 0000000..c31c164
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_basic.py
@@ -0,0 +1,554 @@
+from .context import Svg2XamlTester
+
+
+class WPFBasicPrimitiveTests(Svg2XamlTester):
+ """Basic tests for target=wpf:
+ - shapes (lowlevel and canvas) and paths
+ - gradients
+ - stroke style
+ """
+
+ def test_rect_lowlevel(self):
+ """Based on shapes-rect-01-t.svg"""
+ dwg = self.run_to_dg("rect_basic.svg")
+ self.assertEqual(len(dwg), 5) # 4 rects + BoundingBox
+ for i in range(4):
+ self.assertTagEqual(dwg[i], "GeometryDrawing")
+ self.assertTagEqual(dwg[i][0], "GeometryDrawing.Geometry")
+ self.assertTagEqual(dwg[i][0][0], "RectangleGeometry")
+
+ # Coordinates
+ self.assertPropertyEqual(dwg[0][0][0], "Rect", [30, 46, 50, 80])
+ # Stroke
+ self.assertTagEqual(dwg[0][1], "GeometryDrawing.Pen")
+ self.assertTagEqual(dwg[0][1][0], "Pen")
+ self.assertPropertyEqual(dwg[0][1][0], "Brush", "#ff000000")
+ self.assertPropertyEqual(dwg[0][1][0], "Thickness", 1)
+ self.assertPropertyEqual(dwg[0][1][0], "DashCap", "Flat")
+ # Fill
+ self.assertPropertyEqual(dwg[1], "Brush", "#ffff00ff")
+ # Check that both Fill and stroke are set.
+ self.assertTagEqual(dwg[1][1][0], "Pen")
+ # Rounding
+ # If only rx is given, we need to set both
+ self.assertPropertyEqual(dwg[2][0][0], "RadiusX", 30)
+ self.assertPropertyEqual(dwg[2][0][0], "RadiusY", 30)
+ # both are given
+ self.assertPropertyEqual(dwg[3][0][0], "RadiusX", 30)
+ self.assertPropertyEqual(dwg[3][0][0], "RadiusY", 50)
+
+ def test_rect_defaults(self):
+ """Based on shapes-rect-02-t.svg"""
+ dwg = self.run_to_dg("rect_defaults.svg")
+ self.assertEqual(len(dwg), 2) # they are wrapped in a group
+ grp = dwg[0]
+ self.assertEqual(len(dwg[0]), 4) # two rectangles are ignored (w/h = 0)
+ self.assertPropertyEqual(grp[0][0][0], "Rect", [0, 46, 50, 80])
+ self.assertPropertyEqual(grp[1][0][0], "Rect", [130, 0, 50, 80])
+ # check that the radius is symmetric if one attribute is missing
+ self.assertPropertyEqual(grp[2][0][0], "RadiusX", 20)
+ self.assertPropertyEqual(grp[2][0][0], "RadiusY", 20)
+ self.assertPropertyEqual(grp[3][0][0], "RadiusX", 20)
+ self.assertPropertyEqual(grp[3][0][0], "RadiusY", 20)
+ # fill and stroke were inherited from the group
+ self.assertPropertyEqual(grp[0], "Brush", "#ff008000")
+ self.assertPropertyEqual(grp[0][1][0], "Brush", "#ff000000")
+
+ def test_rect_canvas(self):
+ """Based on shapes-rect-01-t.svg"""
+ dwg = self.run_to_canvas("rect_basic.svg")
+ self.assertEqual(len(dwg), 5) # 4 rects + Canvas.Clip
+ for i in range(4):
+ self.assertTagEqual(dwg[i], "Rectangle")
+
+ # Coordinates
+ self.assertPropertyEqual(dwg[0], "Canvas.Left", 29.5) # 30 - 1/2 of the stroke
+ self.assertPropertyEqual(dwg[0], "Canvas.Top", 45.5)
+ self.assertPropertyEqual(dwg[0], "Width", 51)
+ self.assertPropertyEqual(dwg[0], "Height", 81)
+ # Stroke
+ self.assertPropertyEqual(dwg[0], "Stroke", "#ff000000")
+ self.assertPropertyEqual(dwg[0], "StrokeThickness", 1)
+ self.assertPropertyEqual(dwg[0], "StrokeDashCap", "Flat")
+ # Fill
+ self.assertPropertyEqual(dwg[1], "Fill", "#ffff00ff")
+ # Check that both Fill and stroke are set.
+ self.assertPropertyEqual(dwg[1], "Stroke", "#ff000000")
+ # Rounding
+ # If only rx is given, we need to set both
+ self.assertPropertyEqual(dwg[2], "RadiusX", 30)
+ self.assertPropertyEqual(dwg[2], "RadiusY", 30)
+ # both are given
+ self.assertPropertyEqual(dwg[3], "RadiusX", 30)
+ self.assertPropertyEqual(dwg[3], "RadiusY", 50)
+
+ def test_rect_defaults_canvas(self):
+ """Based on shapes-rect-02-t.svg"""
+ dwg = self.run_to_canvas("rect_defaults.svg")
+ self.assertEqual(len(dwg), 2) # they are wrapped in a subcanvas
+ grp = dwg[0]
+ self.assertEqual(len(dwg[0]), 6)
+ self.assertPropertyEqual(grp[0], "Canvas.Left", -0.5, default=0.0)
+ self.assertPropertyEqual(grp[1], "Canvas.Top", -0.5, default=0.0)
+ # two rectangles have no visibility (w/h = 0)
+ self.assertPropertyEqual(grp[2], "Visibility", "Hidden")
+ self.assertPropertyEqual(grp[3], "Visibility", "Hidden")
+ # check that the radius is symmetric if one attribute is missing
+ self.assertPropertyEqual(grp[4], "RadiusX", 20)
+ self.assertPropertyEqual(grp[4], "RadiusY", 20)
+ self.assertPropertyEqual(grp[5], "RadiusX", 20)
+ self.assertPropertyEqual(grp[5], "RadiusY", 20)
+ # fill and stroke were inherited from the group
+ self.assertPropertyEqual(grp[0], "Fill", "#ff008000")
+ self.assertPropertyEqual(grp[0], "Stroke", "#ff000000")
+
+ def test_circle_defaults(self):
+ """Based on shapes-circle-02-t.svg and shapes-ellipse-02-t.svg"""
+ dwg = self.run_to_dg("circle_defaults.svg")
+ self.assertEqual(len(dwg), 2) # they are wrapped in a group
+ grp = dwg[0]
+ # one circle and two ellipses are ignored (r = 0)
+ self.assertEqual(len(dwg[0]), 6)
+ self.assertTagEqual(grp[0][0][0], "EllipseGeometry")
+ # missing centers
+ self.assertPropertyEqual(grp[0][0][0], "RadiusX", 50)
+ self.assertPropertyEqual(grp[0][0][0], "RadiusY", 50)
+ self.assertPropertyEqual(grp[0][0][0], "Center", [0, 0])
+ # missing radius: not rendered
+ self.assertPropertyEqual(grp[3][0][0], "RadiusX", 50)
+ self.assertPropertyEqual(grp[3][0][0], "RadiusY", 50)
+ self.assertPropertyEqual(grp[3][0][0], "Center", [150, 100])
+ # fill and stroke were inherited from the group
+ self.assertPropertyEqual(grp[0], "Brush", "#ff008000")
+ self.assertPropertyEqual(grp[0][1][0], "Brush", "#ff000000")
+ # Ellipses
+ self.assertTagEqual(grp[4][0][0], "EllipseGeometry")
+ self.assertPropertyEqual(grp[4][0][0], "RadiusX", 100)
+ self.assertPropertyEqual(grp[4][0][0], "RadiusY", 50)
+ self.assertPropertyEqual(grp[4][0][0], "Center", [0, 0])
+ self.assertPropertyEqual(grp[5][0][0], "RadiusX", 100)
+ self.assertPropertyEqual(grp[5][0][0], "RadiusY", 50)
+ self.assertPropertyEqual(grp[5][0][0], "Center", [250, 250])
+
+ def test_circle_defaults_canvas(self):
+ """Based on shapes-circle-02-t.svg and shapes-ellipse-02-t.svg"""
+ dwg = self.run_to_canvas("circle_defaults.svg")
+ self.assertEqual(len(dwg), 2) # they are wrapped in a group
+ grp = dwg[0]
+ self.assertEqual(len(dwg[0]), 9)
+ self.assertTagEqual(grp[0], "Ellipse")
+ # missing centers
+ self.assertPropertyEqual(grp[0], "Width", 101)
+ self.assertPropertyEqual(grp[0], "Height", 101)
+ self.assertPropertyEqual(grp[0], "Canvas.Left", -50.5)
+ self.assertPropertyEqual(grp[0], "Canvas.Top", -50.5)
+ # missing radius: not rendered
+ self.assertPropertyEqual(grp[3], "Visibility", "Hidden")
+ self.assertPropertyEqual(grp[4], "Width", 101)
+ self.assertPropertyEqual(grp[4], "Height", 101)
+ self.assertPropertyEqual(grp[4], "Canvas.Left", 99.5)
+ self.assertPropertyEqual(grp[4], "Canvas.Top", 49.5)
+ # fill and stroke were inherited from the group
+ self.assertPropertyEqual(grp[0], "Fill", "#ff008000")
+ self.assertPropertyEqual(grp[0], "Stroke", "#ff000000")
+
+ self.assertTagEqual(grp[5], "Ellipse")
+ self.assertPropertyEqual(grp[5], "Width", 201)
+ self.assertPropertyEqual(grp[5], "Height", 101)
+ self.assertPropertyEqual(grp[5], "Canvas.Left", -100.5)
+ self.assertPropertyEqual(grp[5], "Canvas.Top", -50.5)
+ self.assertPropertyEqual(grp[8], "Width", 201)
+ self.assertPropertyEqual(grp[8], "Height", 101)
+ self.assertPropertyEqual(grp[8], "Canvas.Left", 149.5)
+ self.assertPropertyEqual(grp[8], "Canvas.Top", 199.5)
+
+ def test_line_polyx(self):
+ """Test translations of line, polyline and polygon"""
+ dwg = self.run_to_dg("polygon_polyline_line.svg")
+ self.assertEqual(len(dwg), 5)
+
+ # The first element is a simple line
+ self.assertTagEqual(dwg[0][0][0], "LineGeometry")
+ self.assertPropertyEqual(dwg[0][0][0], "StartPoint", [100, 100])
+ self.assertPropertyEqual(dwg[0][0][0], "EndPoint", [200, 150])
+
+ # The second element is a polygon, which is approximated by a closed
+ # PathGeometry, since WPF doesn't have a polygon.
+ self.assertTagEqual(dwg[1][0][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[1][0][0],
+ "Figures",
+ "M 270 225 L 300 245 L 320 225 L 340 245 L 280 280 L 390 280 L 420 240 L 280 185 Z",
+ )
+
+ # Same for polylines, except the path is open.
+ self.assertTagEqual(dwg[2][0][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[2][0][0],
+ "Figures",
+ "M 270 75 L 300 95 L 320 75 L 340 95 L 280 130 L 390 130 L 420 90 L 280 35",
+ )
+
+ # The last is again a polygon, except that an extra (invalid) coordinate is
+ # specified, this would be a syntax error in XAML and is thus ignored.
+ self.assertTagEqual(dwg[3][0][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[3][0][0], "Figures", "M 80 200 L 80 300 L 150 250 L 80 200"
+ )
+
+ def test_line_polyx_canvas(self):
+ """Test translations of line, polyline and polygon"""
+ dwg = self.run_to_canvas("polygon_polyline_line.svg")
+ self.assertEqual(len(dwg), 5)
+
+ # The first element is a simple line
+ self.assertTagEqual(dwg[0], "Line")
+ self.assertPropertyEqual(dwg[0], "X1", 100.0)
+ self.assertPropertyEqual(dwg[0], "X2", 200.0)
+ self.assertPropertyEqual(dwg[0], "Y1", 100.0)
+ self.assertPropertyEqual(dwg[0], "Y2", 150.0)
+
+ # The second element is a polygon, which is approximated by a closed
+ # PathGeometry, since WPF doesn't have a polygon.
+ self.assertTagEqual(dwg[1], "Path")
+ self.assertTagEqual(dwg[1][0], "Path.Data")
+ self.assertTagEqual(dwg[1][0][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[1][0][0],
+ "Figures",
+ "M 270 225 L 300 245 L 320 225 L 340 245 L 280 280 L 390 280 L 420 240 L 280 185 Z",
+ )
+
+ # Same for polylines, except the path is open.
+ self.assertTagEqual(dwg[2], "Path")
+ self.assertTagEqual(dwg[2][0], "Path.Data")
+ self.assertTagEqual(dwg[2][0][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[2][0][0],
+ "Figures",
+ "M 270 75 L 300 95 L 320 75 L 340 95 L 280 130 L 390 130 L 420 90 L 280 35",
+ )
+
+ # The last is again a polygon, except that an extra (invalid) coordinate is
+ # specified, this would be a syntax error in XAML and is thus ignored.
+ self.assertTagEqual(dwg[3][0][0], "PathGeometry")
+ self.assertPropertyEqual(
+ dwg[3][0][0], "Figures", "M 80 200 L 80 300 L 150 250 L 80 200"
+ )
+
+ def test_path_syntax(self):
+ """Path syntax in XAML is identical, but it doesn't deal with invalid paths
+ very well."""
+ dgg = self.run_to_dg("paths.svg")
+ canvas = self.run_to_canvas("paths.svg")
+
+ for dwg in [dgg, canvas]:
+ # Path geometries have the same nesting depth in Canvas and DrawingGroup,
+ # so we can reuse the unit test
+ self.assertEqual(len(dwg), 6)
+ self.assertTagEqual(dwg[0][0][0], "PathGeometry")
+ # First path tests cubic bezier commands, and is open
+ self.assertPropertyEqual(
+ dwg[0][0][0],
+ "Figures",
+ "m 396 258 c -65 0 -100 -50 -100 -50 c 0 0 -35 -55 -100 -55 m 0 105 c 65 0 100 -50 100 -50 c 0 0 35 -55 100 -55",
+ )
+ # The default for the fillrule is different, so fillrule needs to be specified
+ self.assertPropertyEqual(
+ dwg[0][0][0],
+ "FillRule",
+ "Nonzero",
+ )
+ # Second path tests quadratic bezier commands, and is closed
+ self.assertPropertyEqual(
+ dwg[1][0][0],
+ "Figures",
+ "m 285 20 q 15 100 115 10 m 50 50 Q 375 -20 287 20 Z",
+ )
+ # Third path tests absolute and relative path commands
+ self.assertPropertyEqual(
+ dwg[2][0][0],
+ "Figures",
+ "M 30 100 a 40 40 0 0 1 65 50 Z m 30 30 A 20 20 0 0 0 125 230 Z m 40 24 a 20 20 0 0 1 65 50 z",
+ )
+ # Fourth path tests implicit lineto
+ self.assertPropertyEqual(
+ dwg[3][0][0],
+ "Figures",
+ "m 62 56 l 51.9615 90 l -103.923 0 l 51.9615 -90 z m 0 15 l 38.9711 67.5 l -77.9123 0 l 38.9711 -67.5 z",
+ )
+ # Fifth path tests command repetition
+ self.assertPropertyEqual(
+ dwg[4][0][0],
+ "Figures",
+ "M 220 20 L 240 20 L 260 20",
+ )
+
+ def test_lingrad_simple(self):
+ """Simple linear gradients, based on pservers-grad-01-t.svg"""
+ dgg = self.run_to_dg("lineargradient_simple.svg")
+ canvas = self.run_to_canvas("lineargradient_simple.svg")
+ # Both linear gradients should yield the same code.
+ # For WPF, gradient normal and userspace-normal can differ; for XAML they
+ # cannot. To achieve visually identical rendering without computing the
+ # bounding box, we wrap the WPF gradient (if userSpaceOnUse is enabled, which
+ # is default for SVG, but not really used in Inkscape) in a DrawingBrush,
+ # which is strechted to fill the viewbox.
+
+ for dwg in [dgg, canvas]:
+ for i in range(2):
+ gdw = dwg[i]
+ if dwg == dgg:
+ self.assertTagEqual(gdw[0], "GeometryDrawing.Brush")
+ else:
+ self.assertTagEqual(gdw[0], "Rectangle.Fill")
+ dbr = gdw[0][0]
+ self.assertTagEqual(dbr, "DrawingBrush")
+ self.assertPropertyEqual(dbr, "Viewbox", [0, 0, 1, 1])
+ self.assertPropertyEqual(dbr, "Stretch", "Fill")
+ self.assertEqual(len(dbr), 1)
+ self.assertTagEqual(dbr[0], "DrawingBrush.Drawing")
+ inner_gdr = dbr[0][0]
+ self.assertTagEqual(inner_gdr, "GeometryDrawing")
+ self.assertEqual(len(inner_gdr), 2)
+ self.assertTagEqual(inner_gdr[0], "GeometryDrawing.Brush")
+ lgb = inner_gdr[0][0]
+ self.assertTagEqual(lgb, "LinearGradientBrush")
+ self.assertPropertyEqual(
+ lgb,
+ "MappingMode",
+ "RelativeToBoundingBox",
+ default="RelativeToBoundingBox",
+ )
+ self.assertPropertyEqual(lgb, "StartPoint", [0, 0])
+ self.assertPropertyEqual(lgb, "EndPoint", [1, 1])
+ self.assertTagEqual(lgb[0], "GradientStop")
+ self.assertPropertyEqual(lgb[0], "Color", "#ff0000ff")
+ self.assertPropertyEqual(lgb[0], "Offset", 0)
+ self.assertTagEqual(lgb[1], "GradientStop")
+ self.assertPropertyEqual(lgb[1], "Color", "#ff00ff00")
+ self.assertPropertyEqual(lgb[1], "Offset", 1)
+
+ self.assertTagEqual(inner_gdr[1], "GeometryDrawing.Geometry")
+ self.assertTagEqual(inner_gdr[1][0], "RectangleGeometry")
+ self.assertPropertyEqual(inner_gdr[1][0], "Rect", [0, 0, 1, 1])
+ # The third gradient fills the stroke, and uses absolute mapping.
+ # For a canvas object, this requires an additional transform.
+ gdw = dwg[2]
+ if dwg == dgg:
+ self.assertTagEqual(gdw[1][0][0], "Pen.Brush")
+ self.assertPropertyEqual(gdw[1][0], "Thickness", 20)
+ lgb = gdw[1][0][0][0]
+ else:
+ self.assertTagEqual(gdw[0], "Rectangle.Stroke")
+ self.assertPropertyEqual(gdw, "StrokeThickness", 20)
+ lgb = gdw[0][0]
+ self.assertTagEqual(lgb, "LinearGradientBrush")
+ self.assertPropertyEqual(
+ lgb, "MappingMode", "Absolute", default="RelativeToBoundingBox"
+ )
+ # spreadMethod attribute
+ self.assertPropertyEqual(lgb, "SpreadMethod", "Reflect")
+ self.assertPropertyEqual(lgb, "StartPoint", [10, 10])
+ self.assertPropertyEqual(lgb, "EndPoint", [200, 10])
+ if dwg == canvas:
+ self.assertPropertyEqual(lgb, "Transform", [1, 0, 0, 1, -15, -240])
+ self.assertTagEqual(lgb[0], "GradientStop")
+ self.assertPropertyEqual(lgb[0], "Color", "#ff0000ff")
+ # test clamping of stop values (svg value: -1.0 would be invalid in XAML)
+ self.assertPropertyEqual(lgb[0], "Offset", 0)
+ self.assertTagEqual(lgb[1], "GradientStop")
+ self.assertPropertyEqual(lgb[1], "Color", "#ff00ff00")
+ self.assertPropertyEqual(lgb[1], "Offset", 0.2)
+
+ def test_radialgradient(self):
+ """Test unit types on radial gradient"""
+ dgg = self.run_to_dg("radialgradient_focal.svg")
+ canvas = self.run_to_canvas("radialgradient_focal.svg")
+ for dwg in [dgg, canvas]:
+ br = dwg[0][0][0][0]
+ # Test default attributes
+ if dwg == dgg:
+ self.assertTagEqual(dwg[0][0][0], "GeometryDrawing.Brush")
+ else:
+ self.assertTagEqual(dwg[0][0][0], "Rectangle.Fill")
+ self.assertTagEqual(br, "RadialGradientBrush")
+ self.assertPropertyEqual(br, "RadiusX", 0.5)
+ self.assertPropertyEqual(br, "RadiusY", 0.5)
+ self.assertPropertyEqual(br, "Center", [0.5, 0.5])
+ self.assertPropertyEqual(br, "GradientOrigin", [0.5, 0.5])
+ self.assertEqual(len(br), 2)
+ self.assertTagEqual(br[0], "GradientStop")
+ self.assertTagEqual(br[1], "GradientStop")
+ self.assertPropertyEqual(br[0], "Color", "#ff000099")
+ self.assertPropertyEqual(br[1], "Color", "#ff00ff00")
+ self.assertPropertyEqual(br[0], "Offset", 0)
+ self.assertPropertyEqual(br[1], "Offset", 1)
+ # Next element has all the properties set, but the stops are identical.
+ br = dwg[0][1][0][0]
+ self.assertTagEqual(br, "RadialGradientBrush")
+ self.assertPropertyEqual(br, "RadiusX", 0.5)
+ self.assertPropertyEqual(br, "RadiusY", 0.5)
+ self.assertPropertyEqual(br, "Center", [0.2, 0.2])
+ self.assertPropertyEqual(br, "GradientOrigin", [0.2, 0.2])
+ # Next element: gradient is defined outside defs, has userSpaceOnUse,
+ # and is also transformed. This does not affect the gradient though.
+ # For canvas, the nesting depth is one lower than for lowlevel (which
+ # does not support transforming RectangleGeometries)
+ if dwg == dgg:
+ br = dwg[0][2][0][0][0]
+ else:
+ br = dwg[0][2][0][0]
+ self.assertTagEqual(br, "RadialGradientBrush")
+ self.assertPropertyEqual(br, "RadiusX", 25)
+ self.assertPropertyEqual(br, "RadiusY", 25)
+ self.assertPropertyEqual(br, "Center", [25, 215])
+ self.assertPropertyEqual(br, "GradientOrigin", [25, 215])
+ self.assertPropertyEqual(br, "MappingMode", "Absolute")
+ if dwg == dgg:
+ self.assertPropertyEqual(
+ dwg[0][2],
+ "Transform",
+ (0, -1, 1, 0, 10, 260),
+ )
+ if dwg == canvas:
+ # Comparison value is different because of Canvas.Left / strokewidth
+ self.assertPropertyEqual(
+ dwg[0][2],
+ "RenderTransform",
+ (0, -1, 1, 0, 10, 260.5),
+ )
+
+ def test_radialgradient_focal(self):
+ """Test clamping of focal points on radial gradients"""
+ # Next element is a clone of a group. One element has its fill unset and is
+ # thus inherited from the clone's fill. The gradient also uses the stop-opacity
+ # attribute, and the stops and coordinates are specified as percentages.
+ # We're also checking that the clone has the coorect transform set.
+ dgg = self.run_to_dg("radialgradient_focal.svg")
+ canvas = self.run_to_canvas("radialgradient_focal.svg")
+ for dwg in [dgg, canvas]:
+ group = dwg[0][3]
+ if dwg == dgg:
+ self.assertPropertyEqual(
+ group,
+ "Transform",
+ (1, 0, 0, 1, 17.5, 240),
+ )
+ else:
+ self.assertPropertyEqual(
+ group,
+ "RenderTransform",
+ (1, 0, 0, 1, 17.5, 240),
+ )
+ self.assertEqual(len(group), 6) # 6 children, the last has the gradient set
+ br = group[5][0][0]
+ self.assertPropertyEqual(br, "RadiusX", 0.75)
+ self.assertPropertyEqual(br, "RadiusY", 0.75)
+ self.assertPropertyEqual(br, "Center", [0.1, 0.1])
+ self.assertPropertyEqual(br, "GradientOrigin", [0, 0.75])
+ self.assertEqual(len(br), 3)
+ self.assertTagEqual(br[0], "GradientStop")
+ self.assertTagEqual(br[1], "GradientStop")
+ self.assertTagEqual(br[2], "GradientStop")
+ self.assertPropertyEqual(br[0], "Color", "#00000000")
+ self.assertPropertyEqual(br[1], "Color", "#ff00008b")
+ self.assertPropertyEqual(br[2], "Color", "#00000000")
+ self.assertPropertyEqual(br[0], "Offset", 0)
+ self.assertPropertyEqual(br[1], "Offset", 0.5)
+ self.assertPropertyEqual(br[2], "Offset", 1)
+ # The next element has a focal point outside the "gradient ellipse".
+ # According to the specification, it is clamped to the radius.
+ # We just test that the origin lies on the ellipse.
+ br = dwg[0][4][5][0][0]
+ origin = tuple(map(float, br.get("GradientOrigin").split(",")))
+ dist = (origin[0] - 0.1) ** 2 + (origin[1] - 0.1) ** 2
+ self.assertAlmostEqual(dist, 0.75**2)
+ # Also check that the direction of the vector from center to origin
+ # remains identical.
+ self.assertAlmostEqual((origin[0] - 0.1) / (origin[1] - 0.1), 0.7333 / 0.65)
+
+ def test_radialgradient_clamping(self):
+ dgg = self.run_to_dg("gradient_with_mixed_offsets.svg")
+ self.assertTagEqual(dgg[0][1][0], "GeometryDrawing.Brush")
+ br = dgg[0][1][0][0]
+ self.assertTagEqual(br, "RadialGradientBrush")
+ self.assertPropertyEqual(br[0], "Color", "#ffff0000")
+ self.assertPropertyEqual(br[1], "Color", "#ff0000ff")
+ self.assertPropertyEqual(br[2], "Color", "#ffff0000")
+ self.assertPropertyEqual(br[0], "Offset", 0)
+ self.assertPropertyEqual(br[1], "Offset", 1)
+ self.assertPropertyEqual(br[2], "Offset", 1)
+
+ def test_strokestyle(self):
+ """Test stroke-linecap and stroke-dasharray"""
+ dgg = self.run_to_dg("strokestyle.svg")
+ # First test has a round dashcap. All three dashcaps need to be set to achieve
+ # equal rendering
+ self.assertTagEqual(dgg[0][1], "GeometryDrawing.Pen")
+ self.assertTagEqual(dgg[0][1][0], "Pen")
+ self.assertPropertyEqual(dgg[0][1][0], "Thickness", 30)
+ self.assertPropertyEqual(dgg[0][1][0], "DashCap", "Round")
+ self.assertPropertyEqual(dgg[0][1][0], "EndLineCap", "Round")
+ self.assertPropertyEqual(dgg[0][1][0], "StartLineCap", "Round")
+ # Second test has flat dashcap ("butt"), which is "Flat" in XAML
+ self.assertTagEqual(dgg[1][1], "GeometryDrawing.Pen")
+ self.assertTagEqual(dgg[1][1][0], "Pen")
+ self.assertPropertyEqual(dgg[1][1][0], "Thickness", 30)
+ self.assertPropertyEqual(dgg[1][1][0], "DashCap", "Flat", default="Square")
+ self.assertPropertyEqual(dgg[1][1][0], "EndLineCap", "Flat", default="Flat")
+ self.assertPropertyEqual(dgg[1][1][0], "StartLineCap", "Flat", default="Flat")
+ # Third test has Stroke-dasharray "none", so attribute should not be set
+ # in XAML
+ self.assertTagEqual(dgg[2][1], "GeometryDrawing.Pen")
+ self.assertEqual(len(dgg[2][1][0]), 0) # no children for lowlevel
+ # The next two tests have the same linestyle, but the second one specified using
+ # an odd number of argument to stroke-dasharray.
+ # The XAML representation is different because dashes differ by a factor of
+ # the line thickness
+ self.assertPropertyEqual(dgg[3][1][0], "Thickness", 20)
+ self.assertEqual(len(dgg[3][1][0]), 1)
+ self.assertTagEqual(dgg[3][1][0][0], "Pen.DashStyle")
+ self.assertTagEqual(dgg[3][1][0][0][0], "DashStyle")
+ self.assertPropertyEqual(
+ dgg[3][1][0][0][0], "Dashes", [0.25, 0.1, 0.25, 0.25, 0.1, 0.25]
+ )
+ self.assertPropertyEqual(dgg[4][1][0], "Thickness", 10)
+ self.assertPropertyEqual(
+ dgg[4][1][0][0][0], "Dashes", [0.5, 0.2, 0.5, 0.5, 0.2, 0.5]
+ )
+
+ def test_strokestyle_canvas(self):
+ """Test stroke-linecap and stroke-dasharray"""
+ canvas = self.run_to_canvas("strokestyle.svg")
+ # First test has a round dashcap. All three dashcaps need to be set to achieve
+ # equal rendering
+ self.assertTagEqual(canvas[0], "Path")
+ self.assertPropertyEqual(canvas[0], "StrokeThickness", 30)
+ self.assertPropertyEqual(canvas[0], "StrokeDashCap", "Round")
+ self.assertPropertyEqual(canvas[0], "StrokeEndLineCap", "Round")
+ self.assertPropertyEqual(canvas[0], "StrokeStartLineCap", "Round")
+ # Second test has flat dashcap ("butt"), which is "Flat" in XAML
+ self.assertTagEqual(canvas[1], "Path")
+ self.assertPropertyEqual(canvas[1], "StrokeThickness", 30)
+ self.assertPropertyEqual(canvas[1], "StrokeDashCap", "Flat", default="Square")
+ self.assertPropertyEqual(canvas[1], "StrokeEndLineCap", "Flat", default="Flat")
+ self.assertPropertyEqual(
+ canvas[1], "StrokeStartLineCap", "Flat", default="Flat"
+ )
+ # Third test has Stroke-dasharray "none", so attribute should not be set
+ # in XAML
+ self.assertTagEqual(canvas[2], "Path")
+ self.assertPropertyEqual(canvas[2], "StrokeDashArray", None, default=None)
+ # The next two tests have the same linestyle, but the second one specified using
+ # an odd number of argument to stroke-dasharray.
+ # The XAML representation is different because dashes differ by a factor of
+ # the line thickness
+ self.assertPropertyEqual(canvas[3], "StrokeThickness", 20)
+ self.assertPropertyEqual(
+ canvas[3], "StrokeDashArray", [0.25, 0.1, 0.25, 0.25, 0.1, 0.25]
+ )
+ self.assertPropertyEqual(canvas[4], "StrokeThickness", 10)
+ self.assertPropertyEqual(
+ canvas[4], "StrokeDashArray", [0.5, 0.2, 0.5, 0.5, 0.2, 0.5]
+ )
diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_runthrough.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_runthrough.py
new file mode 100644
index 0000000..aef90c4
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_runthrough.py
@@ -0,0 +1,52 @@
+"""
+Full run-through test for svg2xaml. Only covers basic cases.
+"""
+from io import BytesIO
+
+from inkex.tester.mock import Capture
+from .context import XamlOutput
+from inkex.tester import ComparisonMixin, TestCase
+from inkex.tester.filters import CompareNumericFuzzy
+
+
+class XamlOutputRunthroughTest(ComparisonMixin, TestCase):
+ """Test basic configuration of XAML export. The other parameters
+ are checked mostly in test_svg2xaml_adv.py"""
+
+ effect_class = XamlOutput
+ compare_file = "svg/shapes.svg"
+ compare_filters = [CompareNumericFuzzy()]
+ comparisons = [
+ ("--mode=canvas", "--target=wpf", "--indent=4"),
+ ("--mode=canvas", "--target=wpf", "--text-to-path=True"),
+ ("--mode=lowlevel", "--target=wpf"),
+ (
+ "--mode=canvas",
+ "--target=avaloniaui",
+ ),
+ (
+ "--mode=lowlevel",
+ "--target=avaloniaui",
+ ),
+ ]
+
+
+class TestLayerWarning(TestCase):
+ """Test that a warning is created when we run Layers as Resources with
+ toplevel elements that are not layers"""
+
+ def test_warning(self):
+ with Capture("stderr") as stderr:
+ exporter = XamlOutput()
+ out = BytesIO()
+ exporter.run(
+ [
+ "--target=wpf",
+ "--mode=lowlevel",
+ "--layers-as-resources=true",
+ self.data_file("svg", "circle_defaults.svg"),
+ ],
+ output=out,
+ )
+
+ self.assertIn("root element", stderr.getvalue())
diff --git a/share/extensions/other/extension-xaml/tests/test_svg2xaml_text.py b/share/extensions/other/extension-xaml/tests/test_svg2xaml_text.py
new file mode 100644
index 0000000..a56cd7b
--- /dev/null
+++ b/share/extensions/other/extension-xaml/tests/test_svg2xaml_text.py
@@ -0,0 +1,301 @@
+"""Text tests for XAML export"""
+
+from .context import Svg2XamlTester
+import inkex
+
+
+class XamlTestCanvasTexts(Svg2XamlTester):
+ """Test Text support"""
+
+ def setUp(self):
+ self.canvas = self.run_to_canvas("text_types.svg")[0]
+
+ def assert_position(
+ self,
+ text,
+ fontsize,
+ lineheight,
+ left,
+ top,
+ transform=inkex.Transform(),
+ flowroot=False,
+ ):
+ if flowroot:
+ top = top - fontsize + fontsize * (lineheight + 1) / 2
+ else:
+ top = top - fontsize + fontsize * (lineheight - 1) / 2
+
+ self.assertPropertyEqual(text, "Canvas.Left", left)
+ self.assertPropertyEqual(text, "Canvas.Top", top)
+ self.assertPropertyEqual(text, "FontSize", fontsize)
+ self.assertPropertyEqual(
+ text, "LineHeight", lineheight * fontsize, default=fontsize
+ )
+
+ trans = (
+ inkex.Transform(f"translate({-left}, {-top})")
+ @ inkex.Transform(transform)
+ @ inkex.Transform(f"translate({left}, {top})")
+ )
+ self.assertPropertyEqual(
+ text, "RenderTransform", list(trans.to_hexad()), default="1, 0, 0, 1, 0, 0"
+ )
+
+ def test_regular_text(self):
+ """The first text is a regular text."""
+ text = self.canvas[0]
+ self.assertTagEqual(text, "TextBlock")
+ self.assert_position(text, 3, 1.25, 13, 5)
+
+ self.assertPropertyEqual(text, "FontFamily", "Arial")
+ self.assertPropertyEqual(text, "Foreground", "#ff000000")
+ self.assertEqual(text.text.strip(), "This is a regular text")
+ self.assertTagEqual(text[0], "LineBreak")
+ self.assertEqual(text[0].tail.strip(), "With a")
+ self.assertTagEqual(text[1], "Span")
+ # This span can not be simplified because it has a decoration
+ # applied (in form of a property child), we don't test the contents
+ # here (see decorations tests)
+ self.assertTagEqual(text[1][0], "Span.TextDecorations")
+ self.assertEqual(text[1][0].tail.strip(), "line break.")
+ self.assertTagEqual(text[2], "LineBreak")
+
+ def test_transformed_text(self):
+ """The text has a transform set, check that this
+ is corrected for Canvas.Left/Canvas.Top"""
+ # Check that position and transform are correct
+ text = self.canvas[1]
+ self.assert_position(text, 3, 1.25, 80, -6, "matrix(1.2,0.5,-0.4,0.7,0,0)")
+
+ # check the contents
+ self.assertEqual(text.text.strip(), "This is regular text")
+ self.assertTagEqual(text[0], "LineBreak")
+ self.assertEqual(text[0].tail.strip(), "with a line break")
+ self.assertTagEqual(text[1], "LineBreak")
+ self.assertEqual(text[1].tail.strip(), "and some transforms.")
+
+ def test_inline_size(self):
+ """Test that an SVG2 inline-size text is converted to
+ an auto-wrapped textblock."""
+ text = self.canvas[2]
+ # Testing for position ommitted, same as above
+ self.assertPropertyEqual(text, "TextWrapping", "Wrap")
+ self.assertPropertyEqual(text, "Width", 25.75)
+ self.assertEqual(
+ text.text.strip(), "This is an SVG2 flowed text (inline size)."
+ )
+ self.assertEqual(text[0].tail.strip(), "This is a line break")
+ self.assertTagEqual(text[0], "LineBreak")
+ self.assertEqual(text[1].text.strip(), "inside")
+ self.assertTagEqual(text[1], "Span")
+ self.assertPropertyEqual(text[1], "FontWeight", "Bold")
+ self.assertEqual(text[1].tail.strip(), "that text.")
+
+ def test_shape_inside(self):
+ """For a shape inside: rectangle, the text is converted
+ to an auto-wrapped textblock"""
+ text = self.canvas[3]
+ self.assert_position(
+ text, 20, 1.25, 100, 318.01509, "matrix(0.15,0,0,0.15,-3,-3)"
+ )
+
+ self.assertPropertyEqual(text, "TextWrapping", "Wrap")
+ self.assertPropertyEqual(text, "Width", 200)
+ self.assertEqual(
+ text.text.strip(), "This is an SVG2 flowed text (shape inside)"
+ )
+
+ def test_svg12_flowed_text(self):
+ """The position computation is slightly different for flowroots"""
+ text = self.canvas[5]
+ self.assert_position(
+ text, 12, 1.25, 314, 70, "translate(-32,-8)scale(0.25)", True
+ )
+ self.assertPropertyEqual(text, "TextWrapping", "Wrap")
+ self.assertPropertyEqual(text, "Width", 150)
+ self.assertTagEqual(text[0], "Span")
+ self.assertPropertyEqual(text[0], "FontSize", 10)
+ self.assertEqual(
+ text[0].text.strip(), "This is an SVG1.2 flowed text (flowroot)"
+ )
+ self.assertTagEqual(text[1], "LineBreak")
+ self.assertEqual(text[1].tail.strip(), "And this is a linebreak")
+ self.assertTagEqual(text[2], "Span")
+ self.assertPropertyEqual(text[2], "FontSize", 20.5)
+ self.assertEqual(text[2].text.strip(), "inside.")
+ # Also check that absolute line heights on flowroots
+ # are processed correctly
+ text = self.canvas[6]
+ self.assert_position(
+ text, 12, 20 / 12, 300, 70, "translate(10, -10)scale(0.25)", True
+ )
+ # also no line height, assume default value of 1.2
+ text = self.canvas[7]
+ self.assert_position(text, 12, 1, 300, 70, "translate(10, 0)scale(0.25)", True)
+
+ def test_style(self):
+ """Test Blur and invisible text"""
+ text = self.canvas[10]
+ # Only test for the blur
+ self.assertTagEqual(text[1], "TextBlock.Effect")
+ self.assertTagEqual(text[1][0], "BlurEffect")
+ self.assertPropertyEqual(text[1][0], "Radius", 1)
+ self.assertEqual(text[1].tail.strip(), "Blurred text")
+
+ text = self.canvas[11]
+ self.assertPropertyEqual(text, "FontFamily", "Arial, Verdana")
+ self.assertPropertyEqual(text, "Visibility", "Hidden")
+ self.assertEqual(text.text.strip(), "This text should be invisible")
+
+ def test_non_ink_attributes(self):
+ """Test some code paths that can only be triggered with
+ non-inkscape properties"""
+
+ text = self.canvas[12]
+ # Font weight specified numerically
+ self.assertPropertyEqual(text, "FontWeight", "Heavy")
+ # Font stretch in percent
+ self.assertPropertyEqual(text, "FontStretch", "UltraCondensed")
+ # Also the text decoration is set to blink
+ # (which is not supported by XAML, so we don't test it explicitly)
+
+ def test_variable_line_height(self):
+ """An SVG2 text with differing line height is split into multiple."""
+ first = 60.199661
+ text = self.canvas[13]
+ self.assertEqual(text.text.strip(), "This is a text")
+ self.assertPropertyEqual(text, "Canvas.Top", first)
+ text = self.canvas[14]
+ self.assertEqual(text.text.strip(), "which changes")
+ self.assertPropertyEqual(text, "Canvas.Top", first + 3.25)
+ text = self.canvas[15]
+ self.assertEqual(text.text.strip(), "line-height")
+ self.assertPropertyEqual(text, "Canvas.Top", first + 3.25 + 4)
+ text = self.canvas[16]
+ self.assertEqual(text.text.strip(), "midway twice.")
+ self.assertPropertyEqual(text, "Canvas.Top", first + 3.25 * 2 + 4)
+
+
+class TextDecorationsText(Svg2XamlTester):
+ def setUp(self):
+ self.canvas = self.run_to_canvas("text-decorations.svg")
+
+ def test_abbrev(self):
+ """Check that the simplest decorations work"""
+ canvas = self.canvas
+ # The first text has the first word underlined.
+ text = canvas[0]
+ self.assertEqual(len(text), 1)
+ self.assertTagEqual(text[0], "Span")
+ self.assertPropertyEqual(text[0], "TextDecorations", "Underline")
+ self.assertEqual(text[0].text, "Underlined")
+ self.assertEqual(text[0].tail.strip(), "text")
+
+ # The second text has a different color and the first word is overlined.
+ text = canvas[1]
+ self.assertEqual(len(text), 1)
+ self.assertTagEqual(text[0], "Span")
+ self.assertPropertyEqual(text, "Foreground", "#7fff00ff")
+ self.assertPropertyEqual(text[0], "TextDecorations", "Overline")
+ self.assertEqual(text[0].text, "Overlined")
+ self.assertEqual(text[0].tail.strip(), "no shorthand")
+
+ def test_linestyle(self):
+ """Check dotted and dashed decoration"""
+ canvas = self.canvas
+ # The third text is dotted underlined. Here, we have to add a real
+ # TextDecoration element.
+ text = canvas[2]
+ self.assertEqual(len(text), 1)
+ self.assertTagEqual(text[0], "Span")
+ self.assertEqual(len(text[0]), 1)
+ self.assertTagEqual(text[0][0], "Span.TextDecorations")
+ self.assertTagEqual(text[0][0][0], "TextDecorationCollection")
+ self.assertTagEqual(text[0][0][0][0], "TextDecoration")
+ self.assertPropertyEqual(text[0][0][0][0], "Location", "Underline")
+
+ self.assertTagEqual(text[0][0][0][0][0], "TextDecoration.Pen")
+ pen = text[0][0][0][0][0][0]
+ self.assertTagEqual(pen, "Pen")
+ self.assertPropertyEqual(pen, "Brush", "#ff008000")
+ self.assertPropertyEqual(pen, "DashCap", "Round")
+ self.assertPropertyEqual(pen, "Thickness", 1)
+
+ self.assertTagEqual(pen[0], "Pen.DashStyle")
+ self.assertTagEqual(pen[0][0], "DashStyle")
+ dashes = pen[0][0].get("Dashes").split(",")
+ # The first entry needs to be 0, the second entry larger than 1.
+ # The spec leaves the exact style to the user agent
+ self.assertEqual(float(dashes[0]), 0)
+ self.assertGreater(float(dashes[1]), 1)
+ # In this case the text follows the property child Span.TextDecorations as tail
+ # It must not be before, this would be a syntax error if there are other
+ # children as well
+ self.assertEqual(text[0][0].tail.strip(), "Dotted underlined")
+ self.assertEqual(text[0].tail.strip(), "text")
+
+ # The fourth text is overlined with a dashed line. Only check what's different
+ # to the above case.
+ text = canvas[3]
+ self.assertPropertyEqual(text[0][0][0][0], "Location", "Overline")
+ pen = text[0][0][0][0][0][0]
+ self.assertPropertyEqual(pen, "DashCap", "Flat")
+ dashes = pen[0][0].get("Dashes").split(",")
+ # The exact values dont matter, but both ned to be > 0 and equal
+ self.assertEqual(dashes[0], dashes[1])
+ self.assertGreater(float(dashes[0]), 1)
+
+ self.assertEqual(text[0][0].tail.strip(), "dashed overlined")
+ self.assertEqual(text[0].tail.strip(), "text")
+
+ def test_multiple(self):
+ """Check multiple text decoration"""
+ canvas = self.canvas
+ # The 9th text has a double over and underline in a part of the text,
+ # and the font size changes midway.
+ text = canvas[8]
+ self.assertTagEqual(text[0][0], "Span")
+ self.assertEqual(text[0][0].text, "Double")
+ self.assertPropertyEqual(text[0][0], "FontSize", 6.35)
+ self.assertEqual(text[0][0].tail.strip(), "over- and underline")
+
+ coll = text[0][1][0]
+ self.assertTagEqual(coll, "TextDecorationCollection")
+ self.assertEqual(len(coll), 4)
+ self.assertPropertyEqual(coll[0], "Location", "Underline")
+ self.assertTagEqual(coll[0][0], "TextDecoration.Pen")
+ self.assertTagEqual(coll[0][0][0], "Pen")
+ brush = coll[0][0][0]
+ self.assertPropertyEqual(brush, "Brush", "#ff000000")
+ self.assertPropertyEqual(brush, "Thickness", 1)
+
+ dec = text[0][1][0][1]
+ self.assertPropertyEqual(dec, "Location", "Underline")
+ self.assertPropertyEqual(dec, "PenOffset", 0.1)
+ self.assertPropertyEqual(dec, "PenOffsetUnit", "FontRenderingEmSize")
+
+ dec = text[0][1][0][2]
+ self.assertPropertyEqual(dec, "Location", "Overline")
+
+ dec = text[0][1][0][3]
+ self.assertPropertyEqual(dec, "Location", "Overline")
+ self.assertPropertyEqual(dec, "PenOffset", -0.1)
+ self.assertPropertyEqual(dec, "PenOffsetUnit", "FontRenderingEmSize")
+
+ self.assertEqual(text[0].tail.strip(), "text")
+
+ # The 10th text has a red underline everywhere (decoration is applied to the
+ # TextBlock) plus a text-colored strikethrough in the last word.
+ text = canvas[9]
+
+ self.assertEqual(len(text), 2)
+ self.assertEqual(text[0].text, "here")
+ self.assertPropertyEqual(text[0], "TextDecorations", "Strikethrough")
+ self.assertTagEqual(text[1], "TextBlock.TextDecorations")
+ self.assertEqual(
+ text[1].tail.strip(), "Everything red underlined, plus black strikethrough"
+ )
+ self.assertTagEqual(text[1][0], "TextDecorationCollection")
+ self.assertTagEqual(text[1][0][0], "TextDecoration")
+ self.assertPropertyEqual(text[1][0][0], "Location", "Underline")
+ self.assertPropertyEqual(text[1][0][0][0][0], "Brush", "#ffff0000")