lib/gamnit: intro the asteronit example
authorAlexis Laferrière <alexis.laf@xymus.net>
Sat, 12 Dec 2015 00:19:06 +0000 (19:19 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 14 Dec 2015 16:09:55 +0000 (11:09 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

16 files changed:
lib/gamnit/examples/asteronits/Makefile [new file with mode: 0644]
lib/gamnit/examples/asteronits/README.md [new file with mode: 0644]
lib/gamnit/examples/asteronits/art/controls.svg [new file with mode: 0644]
lib/gamnit/examples/asteronits/art/icon.svg [new file with mode: 0644]
lib/gamnit/examples/asteronits/art/sheet.xml [new file with mode: 0644]
lib/gamnit/examples/asteronits/assets/.gitignore [new file with mode: 0644]
lib/gamnit/examples/asteronits/assets/images/sheet.png [new file with mode: 0644]
lib/gamnit/examples/asteronits/bin/.gitignore [new file with mode: 0644]
lib/gamnit/examples/asteronits/org.nitlanguage.asteronits.txt [new file with mode: 0644]
lib/gamnit/examples/asteronits/package.ini [new file with mode: 0644]
lib/gamnit/examples/asteronits/res/.gitignore [new file with mode: 0644]
lib/gamnit/examples/asteronits/src/.gitignore [new file with mode: 0644]
lib/gamnit/examples/asteronits/src/asteronits.nit [new file with mode: 0644]
lib/gamnit/examples/asteronits/src/game_logic.nit [new file with mode: 0644]
lib/gamnit/examples/asteronits/src/texture_atlas_parser.nit [new file with mode: 0644]
lib/gamnit/examples/asteronits/src/touch_ui.nit [new file with mode: 0644]

diff --git a/lib/gamnit/examples/asteronits/Makefile b/lib/gamnit/examples/asteronits/Makefile
new file mode 100644 (file)
index 0000000..dae31dd
--- /dev/null
@@ -0,0 +1,34 @@
+NITC=../../../../bin/nitc
+NITLS=../../../../bin/nitls
+
+all: bin/asteronits
+
+bin/asteronits: $(shell ${NITLS} -M src/asteronits.nit linux) ${NITC} pre-build
+       ${NITC} src/asteronits.nit -m linux -o $@
+
+bin/texture_atlas_parser: src/texture_atlas_parser.nit
+       ${NITC} src/texture_atlas_parser.nit -o $@
+
+src/controls.nit: art/controls.svg
+       ../../../../contrib/inkscape_tools/bin/svg_to_png_and_nit art/controls.svg -a assets/ -s src/ -x 2.0 -g
+
+src/spritesheet_city.nit: bin/texture_atlas_parser
+       bin/texture_atlas_parser art/sheet.xml --dir src/ -n spritesheet
+
+pre-build: src/controls.nit src/spritesheet_city.nit
+
+check: bin/asteronits
+       bin/asteronits
+
+# ---
+# Android
+
+android: bin/asteronits.apk
+bin/asteronits.apk: $(shell ${NITLS} -M src/asteronits.nit android) ${NITC} res/drawable-hdpi/icon.png
+       ${NITC} src/touch_ui.nit -m android -o $@
+
+android-release: $(shell ${NITLS} -M src/asteronits.nit android) ${NITC} res/drawable-hdpi/icon.png
+       ${NITC} src/touch_ui.nit -m android -o bin/asteronits.apk --release
+
+res/drawable-hdpi/icon.png: art/icon.svg
+       ../../../../contrib/inkscape_tools/bin/svg_to_icons --out res --android art/icon.svg
diff --git a/lib/gamnit/examples/asteronits/README.md b/lib/gamnit/examples/asteronits/README.md
new file mode 100644 (file)
index 0000000..aefee88
--- /dev/null
@@ -0,0 +1,13 @@
+Sample portable 2D game implemented with the `simple_2d` API of gamnit
+
+This projects is organized in 3 modules, one per concern:
+
+* `game_logic` defines the pure game logic without any of the display details.
+
+* `asteronits` implements the display logic with support for keyboard input events.
+
+* `touch_ui` adds an interface for touchscreen devices with buttons to open fire and control the ship.
+
+# Art
+
+Artwork created by Kenney.nl under CC0
diff --git a/lib/gamnit/examples/asteronits/art/controls.svg b/lib/gamnit/examples/asteronits/art/controls.svg
new file mode 100644 (file)
index 0000000..903898d
--- /dev/null
@@ -0,0 +1,2198 @@
+<?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"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="900"
+   height="592"
+   sodipodi:docname="controls.svg">
+  <metadata
+     id="metadata501">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="2558"
+     inkscape:window-height="1379"
+     id="namedview499"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="2.5371829"
+     inkscape:cx="273.28266"
+     inkscape:cy="501.2337"
+     inkscape:window-x="2560"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="0joystick_down" />
+  <defs
+     id="defs4">
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,44,484)"
+       id="gradient0">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop7" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,104,484)"
+       id="gradient1">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop12" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop14" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,164,484)"
+       id="gradient2">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop17" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop19" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,224,484)"
+       id="gradient3">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop22" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop24" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,284,484)"
+       id="gradient4">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop27" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop29" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,344,484)"
+       id="gradient5">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop32" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop34" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,44,424)"
+       id="gradient6">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop37" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop39" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,104,424)"
+       id="gradient7">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop42" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop44" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,164,424)"
+       id="gradient8">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop47" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop49" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,224,424)"
+       id="gradient9">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop52" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop54" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,284,424)"
+       id="gradient10">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop57" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop59" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,344,424)"
+       id="gradient11">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop62" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop64" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,44,364)"
+       id="gradient12">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop67" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop69" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,104,364)"
+       id="gradient13">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop72" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop74" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,164,364)"
+       id="gradient14">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop77" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop79" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,224,364)"
+       id="gradient15">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop82" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop84" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,284,364)"
+       id="gradient16">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop87" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop89" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,344,364)"
+       id="gradient17">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop92" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop94" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02935791,0.02929688,0,314,574)"
+       id="gradient18">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop97" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop99" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02935791,0.02929688,0,194,574)"
+       id="gradient19">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop102" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop104" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,700,470)"
+       id="gradient20">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop107" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop109" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,610,470)"
+       id="gradient21">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop112" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop114" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,520,470)"
+       id="gradient22">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop117" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop119" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,430,470)"
+       id="gradient23">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop122" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop124" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,880,380)"
+       id="gradient24">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop127" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop129" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,790,380)"
+       id="gradient25">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop132" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop134" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,700,380)"
+       id="gradient26">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop137" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop139" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,610,380)"
+       id="gradient27">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop142" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop144" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,520,380)"
+       id="gradient28">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop147" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop149" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,430,380)"
+       id="gradient29">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop152" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop154" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.09765625,0.09765625,0,279.95,240)"
+       id="gradient30">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop157" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop159" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0.04142761,-0.04142761,0.04142761,0.04142761,279.95,70)"
+       id="gradient31">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop162" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop164" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.05493164,0.05493164,0,279.95,70)"
+       id="gradient32">
+      <stop
+         offset="0.00392156862745098"
+         stop-color="#434343"
+         id="stop167" />
+      <stop
+         offset="1"
+         stop-color="#2C2C2C"
+         id="stop169" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.09762573,0.09762573,0,459.95,239.95)"
+       id="gradient33">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop172" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop174" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02935791,0.02929688,0,74,574)"
+       id="gradient34">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop177" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop179" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.09765625,0.09765625,0,840,240)"
+       id="gradient35">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop182" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop184" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0.05392456,-0.05392456,0.05392456,0.05392456,839.45,70.45)"
+       id="gradient36">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop187" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop189" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.07260132,0.07260132,0,839.4,70.5)"
+       id="gradient37">
+      <stop
+         offset="0.00392156862745098"
+         stop-color="#434343"
+         id="stop192" />
+      <stop
+         offset="1"
+         stop-color="#2C2C2C"
+         id="stop194" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04608154,0.04608154,0,650.5,117.75)"
+       id="gradient38">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop197" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop199" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.0378418,0.03723145,0,692.7,200.5)"
+       id="gradient39">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop202" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop204" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.0447998,0.04544067,0,650.5,282.7)"
+       id="gradient40">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop207" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop209" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03723145,0.03723145,0,607.75,200.5)"
+       id="gradient41">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop212" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop214" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.09765625,0.09765625,0,100,240)"
+       id="gradient42">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop217" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop219" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.05267334,0.05264282,0,100.05,70.05)"
+       id="gradient43">
+      <stop
+         offset="0.00392157"
+         stop-color="#434343"
+         id="stop222"
+         style="stop-color:#262626;stop-opacity:1;" />
+      <stop
+         offset="1"
+         stop-color="#2C2C2C"
+         id="stop224"
+         style="stop-color:#0d0d0d;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0.04142761,-0.04142761,0.04142761,0.04142761,100.1,70.15)"
+       id="gradient44">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop227" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop229" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,880,470)"
+       id="gradient45">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop232" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop234" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,790,470)"
+       id="gradient46">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop237" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop239" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,700,560)"
+       id="gradient47">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop242" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop244" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,610,560)"
+       id="gradient48">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop247" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop249" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,520,560)"
+       id="gradient49">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop252" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop254" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,880,560)"
+       id="gradient50">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop257" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop259" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,790,560)"
+       id="gradient51">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop262" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop264" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,430,560)"
+       id="gradient52">
+      <stop
+         offset="0"
+         stop-color="#383838"
+         id="stop267" />
+      <stop
+         offset="1"
+         stop-color="#585858"
+         id="stop269" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient3714"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,24,476)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient3716"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,84,476)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient3718"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,144,476)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient3720"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,204,476)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient3722"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,264,476)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient3724"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,324,476)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient6"
+       id="linearGradient3726"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,24,416)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient7"
+       id="linearGradient3728"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,84,416)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient8"
+       id="linearGradient3730"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,144,416)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient9"
+       id="linearGradient3732"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,204,416)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient10"
+       id="linearGradient3734"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,264,416)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient11"
+       id="linearGradient3736"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,324,416)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient12"
+       id="linearGradient3738"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,24,356)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient13"
+       id="linearGradient3740"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,84,356)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient14"
+       id="linearGradient3742"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,144,356)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient15"
+       id="linearGradient3744"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,204,356)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient16"
+       id="linearGradient3746"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,264,356)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient17"
+       id="linearGradient3748"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02929688,0.02929688,0,324,356)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient18"
+       id="linearGradient3750"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02935791,0.02929688,0,294,566)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient19"
+       id="linearGradient3752"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02935791,0.02929688,0,174,566)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient20"
+       id="linearGradient3754"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,680,462)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient21"
+       id="linearGradient3756"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,590,462)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient22"
+       id="linearGradient3758"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,500,462)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient23"
+       id="linearGradient3760"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,410,462)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient24"
+       id="linearGradient3762"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,860,372)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient25"
+       id="linearGradient3764"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,770,372)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient26"
+       id="linearGradient3766"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,680,372)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient27"
+       id="linearGradient3768"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,590,372)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient28"
+       id="linearGradient3770"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,500,372)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient29"
+       id="linearGradient3772"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,410,372)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient30"
+       id="linearGradient3774"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.09765625,0.09765625,0,259.95,232)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient31"
+       id="linearGradient3776"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.04142761,-0.04142761,0.04142761,0.04142761,259.95,62)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient52"
+       id="linearGradient3824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,410,552)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient51"
+       id="linearGradient3829"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,770,552)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient50"
+       id="linearGradient3833"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,860,552)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient49"
+       id="linearGradient3837"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,500,552)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient48"
+       id="linearGradient3841"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,590,552)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient47"
+       id="linearGradient3845"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,680,552)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient46"
+       id="linearGradient3849"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,770,462)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient45"
+       id="linearGradient3853"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04882812,0.04882812,0,860,462)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient44"
+       id="linearGradient3860"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.04142761,-0.04142761,0.04142761,0.04142761,80.1,62.15)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient43"
+       id="linearGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.05267334,0.05264282,0,80.05,62.05)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient42"
+       id="linearGradient3868"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.09765625,0.09765625,0,80,232)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient41"
+       id="linearGradient3871"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03723145,0.03723145,0,587.75,192.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient40"
+       id="linearGradient3874"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.0447998,0.04544067,0,630.5,274.7)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient39"
+       id="linearGradient3877"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.0378418,0.03723145,0,672.7,192.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient38"
+       id="linearGradient3882"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.04608154,0.04608154,0,630.5,109.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient37"
+       id="linearGradient3888"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.07260132,0.07260132,0,819.4,62.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient36"
+       id="linearGradient3891"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.05392456,-0.05392456,0.05392456,0.05392456,819.45,62.45)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient35"
+       id="linearGradient3895"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.09765625,0.09765625,0,820,232)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient34"
+       id="linearGradient3901"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02935791,0.02929688,0,54,566)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient33"
+       id="linearGradient3905"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.09762573,0.09762573,0,439.95,231.95)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient32"
+       id="linearGradient3909"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.05493164,0.05493164,0,259.95,62)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient40"
+       id="linearGradient3374"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.0447998,0.04544067,0,630.5,274.7)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+  </defs>
+  <path
+     style="fill:url(#linearGradient3714);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path273"
+     d="m 3,457.2 0,37.85 Q 3.1,497 5.2,497 l 37.65,0 q 2.05,0 2.15,-1.95 L 45,457.2 Q 45,455 42.85,455 L 5.2,455 Q 3,455 3,457.2 m -3,0 Q 0,452 5.2,452 l 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 Q 47.9,500 42.85,500 L 5.2,500 Q 0.1,500 0,495.05 L 0,457.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path275"
+     d="M 3,457.2 Q 3,455 5.2,455 l 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 Q 44.9,497 42.85,497 L 5.2,497 Q 3.1,497 3,495.05 L 3,457.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path277"
+     d="m 63,457.2 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85" />
+  <path
+     style="fill:url(#linearGradient3716);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path279"
+     d="m 63,457.2 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 m 39.85,-5.2 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path281"
+     d="m 162.85,455 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0" />
+  <path
+     style="fill:url(#linearGradient3718);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path283"
+     d="m 162.85,455 -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 m 0,-3 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path285"
+     d="m 183,457.2 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85" />
+  <path
+     style="fill:url(#linearGradient3720);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path287"
+     d="m 183,457.2 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 m 2.2,-5.2 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path289"
+     d="m 243,457.2 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85" />
+  <path
+     style="fill:url(#linearGradient3722);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path291"
+     d="m 243,457.2 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 m -3,0 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path293"
+     d="m 303,495.05 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95" />
+  <path
+     style="fill:url(#linearGradient3724);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path295"
+     d="m 303,495.05 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 m -3,0 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95" />
+  <path
+     style="fill:url(#linearGradient3726);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path297"
+     d="M 45,397.2 Q 45,395 42.85,395 L 5.2,395 Q 3,395 3,397.2 l 0,37.85 Q 3.1,437 5.2,437 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 m 3,0 0,37.85 Q 47.9,440 42.85,440 L 5.2,440 Q 0.1,440 0,435.05 L 0,397.2 Q 0,392 5.2,392 l 37.65,0 q 5.15,0 5.15,5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path299"
+     d="m 45,397.2 0,37.85 Q 44.9,437 42.85,437 L 5.2,437 Q 3.1,437 3,435.05 L 3,397.2 Q 3,395 5.2,395 l 37.65,0 q 2.15,0 2.15,2.2" />
+  <path
+     style="fill:url(#linearGradient3728);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path301"
+     d="m 105,397.2 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 m 3,0 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path303"
+     d="m 105,397.2 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path305"
+     d="m 165,397.2 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2" />
+  <path
+     style="fill:url(#linearGradient3730);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path307"
+     d="m 165,397.2 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 m 3,0 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path309"
+     d="m 225,397.2 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2" />
+  <path
+     style="fill:url(#linearGradient3732);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path311"
+     d="m 225,397.2 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 m 3,0 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path313"
+     d="m 285,397.2 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2" />
+  <path
+     style="fill:url(#linearGradient3734);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path315"
+     d="m 285,397.2 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 m 3,0 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path317"
+     d="m 303,435.05 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95" />
+  <path
+     style="fill:url(#linearGradient3736);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path319"
+     d="m 303,435.05 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 m -3,0 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95" />
+  <path
+     style="fill:url(#linearGradient3738);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path321"
+     d="M 42.85,335 5.2,335 Q 3,335 3,337.2 l 0,37.85 Q 3.1,377 5.2,377 l 37.65,0 q 2.05,0 2.15,-1.95 L 45,337.2 Q 45,335 42.85,335 m 0,-3 q 5.15,0 5.15,5.2 l 0,37.85 Q 47.9,380 42.85,380 L 5.2,380 Q 0.1,380 0,375.05 L 0,337.2 Q 0,332 5.2,332 l 37.65,0" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path323"
+     d="m 42.85,335 q 2.15,0 2.15,2.2 l 0,37.85 Q 44.9,377 42.85,377 L 5.2,377 Q 3.1,377 3,375.05 L 3,337.2 Q 3,335 5.2,335 l 37.65,0" />
+  <path
+     style="fill:url(#linearGradient3740);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path325"
+     d="m 60,375.05 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 M 102.85,335 65.2,335 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path327"
+     d="m 102.85,335 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path329"
+     d="m 123,337.2 q 0,-2.2 2.2,-2.2 l 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85" />
+  <path
+     style="fill:url(#linearGradient3742);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path331"
+     d="m 123,337.2 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 q -2.2,0 -2.2,2.2 m -3,0 q 0,-5.2 5.2,-5.2 l 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path333"
+     d="m 185.2,335 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2" />
+  <path
+     style="fill:url(#linearGradient3744);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path335"
+     d="m 185.2,335 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 m 0,-3 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path337"
+     d="m 282.85,335 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 37.65,0" />
+  <path
+     style="fill:url(#linearGradient3746);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path339"
+     d="m 282.85,335 -37.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 m 0,-3 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 37.65,0" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path341"
+     d="m 305.2,335 37.65,0 q 2.15,0 2.15,2.2 l 0,37.85 q -0.1,1.95 -2.15,1.95 l -37.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2" />
+  <path
+     style="fill:url(#linearGradient3748);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path343"
+     d="m 305.2,335 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 37.65,0 q 2.05,0 2.15,-1.95 l 0,-37.85 q 0,-2.2 -2.15,-2.2 l -37.65,0 m 0,-3 37.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -37.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2" />
+  <path
+     style="fill:url(#linearGradient3750);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path345"
+     d="m 243,547.2 0,37.85 q 0.1,1.95 2.2,1.95 l 97.65,0 q 2.1,0 2.15,-2 l 0,-37.8 q 0,-2.2 -2.15,-2.2 l -97.65,0 q -2.2,0 -2.2,2.2 m -3,37.85 0,-37.85 q 0,-5.2 5.2,-5.2 l 97.65,0 q 5.15,0 5.15,5.2 l 0,37.85 q -0.1,4.95 -5.15,4.95 l -97.65,0 q -5.1,0 -5.2,-4.95" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path347"
+     d="m 243,547.2 q 0,-2.2 2.2,-2.2 l 97.65,0 q 2.15,0 2.15,2.2 l 0,37.8 q -0.05,2 -2.15,2 l -97.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85" />
+  <path
+     style="fill:url(#linearGradient3752);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path349"
+     d="m 225,585 0,-37.8 q 0,-2.2 -2.15,-2.2 l -97.65,0 q -2.2,0 -2.2,2.2 l 0,37.85 q 0.1,1.95 2.2,1.95 l 97.65,0 q 2.1,0 2.15,-2 m 3,-37.8 0,37.85 q -0.1,4.95 -5.15,4.95 l -97.65,0 q -5.1,0 -5.2,-4.95 l 0,-37.85 q 0,-5.2 5.2,-5.2 l 97.65,0 q 5.15,0 5.15,5.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path351"
+     d="m 225,585 q -0.05,2 -2.15,2 l -97.65,0 q -2.1,0 -2.2,-1.95 l 0,-37.85 q 0,-2.2 2.2,-2.2 l 97.65,0 q 2.15,0 2.15,2.2 l 0,37.8" />
+  <path
+     style="fill:url(#linearGradient3754);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path353"
+     d="M 708.25,433.7 Q 720,445.45 720,462 720,478.55 708.25,490.25 696.55,502 680,502 663.35,502 651.65,490.25 640,478.55 640,462 640,445.45 651.65,433.7 663.35,422 680,422 q 16.55,0 28.25,11.7 M 645.7,462 q 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path355"
+     d="m 645.7,462 q 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 Q 645.7,476.25 645.7,462" />
+  <path
+     style="fill:url(#linearGradient3756);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path357"
+     d="M 618.25,433.7 Q 630,445.45 630,462 630,478.55 618.25,490.25 606.55,502 590,502 573.35,502 561.65,490.25 550,478.55 550,462 550,445.45 561.65,433.7 573.35,422 590,422 q 16.55,0 28.25,11.7 M 555.7,462 q 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path359"
+     d="m 555.7,462 q 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 Q 555.7,476.25 555.7,462" />
+  <path
+     style="fill:url(#linearGradient3758);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path361"
+     d="m 500,422 q 16.55,0 28.25,11.7 Q 540,445.45 540,462 540,478.55 528.25,490.25 516.55,502 500,502 483.35,502 471.65,490.25 460,478.55 460,462 460,445.45 471.65,433.7 483.35,422 500,422 m 24.2,64.2 q 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path363"
+     d="m 524.2,486.2 q -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2" />
+  <path
+     style="fill:url(#linearGradient3760);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path365"
+     d="m 434.2,486.2 q 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 m 4.05,-52.5 Q 450,445.45 450,462 450,478.55 438.25,490.25 426.55,502 410,502 393.35,502 381.65,490.25 370,478.55 370,462 370,445.45 381.65,433.7 393.35,422 410,422 q 16.55,0 28.25,11.7" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path367"
+     d="m 434.2,486.2 q -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2" />
+  <path
+     style="fill:url(#linearGradient3762);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path369"
+     d="M 831.65,343.7 Q 843.35,332 860,332 q 16.55,0 28.25,11.7 Q 900,355.45 900,372 900,388.55 888.25,400.25 876.55,412 860,412 843.35,412 831.65,400.25 820,388.55 820,372 q 0,-16.55 11.65,-28.3 m 4.1,4.05 q -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path371"
+     d="m 835.75,347.75 q 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25" />
+  <path
+     style="fill:url(#linearGradient3764);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path373"
+     d="M 741.65,343.7 Q 753.35,332 770,332 q 16.55,0 28.25,11.7 Q 810,355.45 810,372 810,388.55 798.25,400.25 786.55,412 770,412 753.35,412 741.65,400.25 730,388.55 730,372 q 0,-16.55 11.65,-28.3 m 4.1,4.05 q -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path375"
+     d="m 745.75,347.75 q 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25" />
+  <path
+     style="fill:url(#linearGradient3766);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path377"
+     d="M 651.65,343.7 Q 663.35,332 680,332 q 16.55,0 28.25,11.7 Q 720,355.45 720,372 720,388.55 708.25,400.25 696.55,412 680,412 663.35,412 651.65,400.25 640,388.55 640,372 q 0,-16.55 11.65,-28.3 m 4.1,4.05 q -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path379"
+     d="m 655.75,347.75 q 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25" />
+  <path
+     style="fill:url(#linearGradient3768);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path381"
+     d="M 561.65,343.7 Q 573.35,332 590,332 q 16.55,0 28.25,11.7 Q 630,355.45 630,372 630,388.55 618.25,400.25 606.55,412 590,412 573.35,412 561.65,400.25 550,388.55 550,372 q 0,-16.55 11.65,-28.3 m 4.1,4.05 q -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path383"
+     d="m 565.75,347.75 q 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25" />
+  <path
+     style="fill:url(#linearGradient3770);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path385"
+     d="m 540,372 q 0,16.55 -11.75,28.25 Q 516.55,412 500,412 483.35,412 471.65,400.25 460,388.55 460,372 460,355.45 471.65,343.7 483.35,332 500,332 q 16.55,0 28.25,11.7 Q 540,355.45 540,372 m -5.7,0 q 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path387"
+     d="m 534.3,372 q 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25" />
+  <path
+     style="fill:url(#linearGradient3772);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path389"
+     d="M 381.65,343.7 Q 393.35,332 410,332 q 16.55,0 28.25,11.7 Q 450,355.45 450,372 450,388.55 438.25,400.25 426.55,412 410,412 393.35,412 381.65,400.25 370,388.55 370,372 q 0,-16.55 11.65,-28.3 M 444.3,372 q 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path391"
+     d="m 444.3,372 q 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25" />
+  <path
+     style="fill:url(#linearGradient3774);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path393"
+     d="m 334.95,157.2 -0.2,-0.2 -149.65,0 -0.15,0.2 0,149.65 0.15,0.15 149.65,0 0.2,-0.15 0,-149.65 m -0.2,-5.2 q 5.2,0 5.2,5.2 l 0,149.65 q 0,5.15 -5.2,5.15 l -149.65,0 q -5.15,0 -5.15,-5.15 l 0,-149.65 q 0,-5.2 5.15,-5.2 l 149.65,0" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path395"
+     d="m 334.95,157.2 0,149.65 -0.2,0.15 -149.65,0 -0.15,-0.15 0,-149.65 0.15,-0.2 149.65,0 0.2,0.2" />
+  <path
+     style="fill:#000000;fill-opacity:0.10196078;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path397"
+     d="m 307.95,105.1 0,2 q -0.15,4.9 -5.2,4.9 l -85.65,0 q -5,0 -5.15,-4.9 l 0,-2 q 0.15,4.9 5.15,4.9 l 85.65,0 q 5.05,0 5.2,-4.9" />
+  <path
+     style="fill:url(#linearGradient3776);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path399"
+     d="m 307.95,105.1 q -0.15,4.9 -5.2,4.9 l -85.65,0 q -5,0 -5.15,-4.9 l 0,-85.9 q 0,-5.2 5.15,-5.2 l 85.65,0 q 5.2,0 5.2,5.2 l 0,85.9 m -3,-0.1 0,-85.8 q 0,-2.2 -2.2,-2.2 l -85.65,0 q -2.15,0 -2.15,2.2 l 0,85.9 q 0.15,1.9 2.15,1.9 l 85.65,0 q 2.1,0 2.2,-2" />
+  <path
+     style="fill:url(#linearGradient3909);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path401"
+     d="m 304.95,105 q -0.1,2 -2.2,2 l -85.65,0 q -2,0 -2.15,-1.9 l 0,-85.9 q 0,-2.2 2.15,-2.2 l 85.65,0 q 2.2,0 2.2,2.2 l 0,85.8" />
+  <path
+     style="fill:#666666;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path403"
+     d="m 264,31 q 0,1.6 -1.2,2.8 -1.2,1.2 -2.8,1.2 -1.65,0 -2.85,-1.2 Q 256,32.6 256,31 l 0.05,-0.5 q 0.15,-1.35 1.1,-2.35 1.2,-1.15 2.85,-1.15 1.6,0 2.8,1.15 1,1 1.2,2.35 l 0,0.5 m -32.15,28.15 q 0.95,1 1.15,2.35 l 0,0.5 q 0,1.6 -1.15,2.8 -1.2,1.2 -2.85,1.2 -1.6,0 -2.8,-1.2 Q 225,63.6 225,62 l 0.05,-0.5 q 0.15,-1.35 1.15,-2.35 1.2,-1.15 2.8,-1.15 1.65,0 2.85,1.15 M 260,89 q 1.6,0 2.8,1.15 1,1 1.2,2.35 l 0,0.5 q 0,1.6 -1.2,2.8 -1.2,1.2 -2.8,1.2 -1.65,0 -2.85,-1.2 Q 256,94.6 256,93 l 0.05,-0.5 q 0.15,-1.35 1.1,-2.35 Q 258.35,89 260,89 M 288.2,59.15 Q 289.4,58 291,58 q 1.65,0 2.85,1.15 0.95,1 1.15,2.35 l 0,0.5 q 0,1.6 -1.15,2.8 -1.2,1.2 -2.85,1.2 -1.6,0 -2.8,-1.2 Q 287,63.6 287,62 l 0.05,-0.5 q 0.15,-1.35 1.15,-2.35" />
+  <path
+     style="fill:url(#linearGradient3905);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path405"
+     d="m 467,157 q 0,-1 -1,-1 l -51,0 q -1,0 -1,1 l 0,45 q 0,1.65 -1.15,2.85 -1.2,1.15 -2.85,1.15 l -45,0 q -1,0 -1,1 l 0,51 q 0,1 1,1 l 45,0 q 1.65,0 2.85,1.2 1.15,1.15 1.15,2.8 l 0,43.95 q 0,1 1,1 l 51,0 q 1,0 1,-1 L 467,263 q 0,-1.65 1.2,-2.8 1.15,-1.2 2.8,-1.2 l 43.95,0 q 1,0 1,-1 l 0,-51 q 0,-1 -1,-1 L 471,206 q -1.65,0 -2.8,-1.15 -1.2,-1.2 -1.2,-2.85 l 0,-45 m -1,-5 q 5,0 5,5 l 0,45 43.95,0 q 5,0 5,5 l 0,51 q 0,5 -5,5 l -43.95,0 0,43.95 q 0,5 -5,5 l -51,0 q -5,0 -5,-5 l 0,-43.95 -45,0 q -5,0 -5,-5 l 0,-51 q 0,-5 5,-5 l 45,0 0,-45 q 0,-5 5,-5 l 51,0" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path407"
+     d="m 467,157 0,45 q 0,1.65 1.2,2.85 1.15,1.15 2.8,1.15 l 43.95,0 q 1,0 1,1 l 0,51 q 0,1 -1,1 L 471,259 q -1.65,0 -2.8,1.2 -1.2,1.15 -1.2,2.8 l 0,43.95 q 0,1 -1,1 l -51,0 q -1,0 -1,-1 L 414,263 q 0,-1.65 -1.15,-2.8 -1.2,-1.2 -2.85,-1.2 l -45,0 q -1,0 -1,-1 l 0,-51 q 0,-1 1,-1 l 45,0 q 1.65,0 2.85,-1.15 1.15,-1.2 1.15,-2.85 l 0,-45 q 0,-1 1,-1 l 51,0 q 1,0 1,1" />
+  <path
+     style="fill:url(#linearGradient3901);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path409"
+     d="m 3,547.2 0,37.85 Q 3.1,587 5.2,587 l 97.65,0 q 2.1,0 2.15,-2 l 0,-37.8 q 0,-2.2 -2.15,-2.2 L 5.2,545 Q 3,545 3,547.2 M 0,585.05 0,547.2 Q 0,542 5.2,542 l 97.65,0 q 5.15,0 5.15,5.2 l 0,37.85 Q 107.9,590 102.85,590 L 5.2,590 Q 0.1,590 0,585.05" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path411"
+     d="M 3,547.2 Q 3,545 5.2,545 l 97.65,0 q 2.15,0 2.15,2.2 l 0,37.8 q -0.05,2 -2.15,2 L 5.2,587 Q 3.1,587 3,585.05 L 3,547.2" />
+  <path
+     style="fill:#666666;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path413"
+     d="m 441,167 q 0.35,0 0.65,0.3 l 5.05,5.05 q 0.45,0.45 0.2,1.05 -0.25,0.6 -0.9,0.6 l -10.05,0 q -0.65,0 -0.9,-0.6 L 435,173 q -0.05,-0.35 0.25,-0.65 l 0.05,0 5,-5.05 q 0.3,-0.3 0.7,-0.3 m -66,66 q 0,-0.35 0.3,-0.65 l 5.05,-5.05 q 0.45,-0.45 1.05,-0.2 0.6,0.25 0.6,0.9 l 0,10.05 q 0,0.65 -0.6,0.9 L 381,239 q -0.35,0.05 -0.65,-0.25 l 0,-0.05 -5.05,-5 Q 375,233.4 375,233 m 71.7,58.65 -5.05,5.05 -0.65,0.3 -0.7,-0.3 -5,-5.05 -0.05,0 q -0.3,-0.3 -0.25,-0.65 l 0.05,-0.4 q 0.25,-0.6 0.9,-0.6 l 10.05,0 q 0.65,0 0.9,0.6 0.25,0.6 -0.2,1.05 M 505,233 l -0.3,0.7 -5.05,5 0,0.05 -0.65,0.25 -0.4,-0.05 Q 498,238.7 498,238.05 L 498,228 q 0,-0.65 0.6,-0.9 0.6,-0.25 1.05,0.2 l 5.05,5.05 0.3,0.65" />
+  <path
+     style="fill:#666666;fill-opacity:0.30196078;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path415"
+     d="m 444,231.5 0,0.5 q 0,1.6 -1.15,2.8 -1.2,1.2 -2.85,1.2 -1.6,0 -2.8,-1.2 -1.2,-1.2 -1.2,-2.8 l 0.05,-0.5 q 0.15,-1.35 1.15,-2.35 1.2,-1.15 2.8,-1.15 1.65,0 2.85,1.15 0.95,1 1.15,2.35" />
+  <path
+     style="fill:url(#linearGradient3895);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path417"
+     d="M 873.7,178.25 Q 851.45,156 820,156 788.35,156 766.15,178.25 744,200.55 744,232 l 0,1 0,0.75 0,0.25 0,0.3 q 0.8,29.95 22.15,51.4 11.9,11.95 26.55,17.5 12.6,4.8 27.3,4.8 14.6,0 27.2,-4.8 14.55,-5.55 26.5,-17.5 21.55,-21.5 22.3,-51.55 l 0,-0.15 0,-0.75 0,-0.25 0,-0.5 0,-0.5 q 0,-31.45 -22.3,-53.75 m 2.8,-2.85 Q 900,198.9 900,232 l 0,0.5 0,0.5 0,0.25 0,0.75 0,0.25 q -0.8,31.65 -23.5,54.25 -12.55,12.6 -27.9,18.45 Q 835.35,312 820,312 804.55,312 791.25,306.95 775.85,301.1 763.3,288.5 740.8,265.9 740,234.3 l 0,-0.3 0,-0.25 0,-0.75 0,-1 q 0,-33.1 23.3,-56.6 23.4,-23.4 56.7,-23.4 33.1,0 56.5,23.4" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path419"
+     d="M 873.7,178.25 Q 896,200.55 896,232 l 0,0.5 0,0.5 0,0.25 0,0.75 0,0.15 q -0.75,30.05 -22.3,51.55 -11.95,11.95 -26.5,17.5 -12.6,4.8 -27.2,4.8 -14.7,0 -27.3,-4.8 -14.65,-5.55 -26.55,-17.5 Q 744.8,264.25 744,234.3 l 0,-0.3 0,-0.25 0,-0.75 0,-1 q 0,-31.45 22.15,-53.75 Q 788.35,156 820,156 q 31.45,0 53.7,22.25" />
+  <path
+     style="fill:url(#linearGradient3891);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path421"
+     d="m 878.95,81 0,-36 q 0,-2 -2,-2 L 843,43 q -1.25,0 -2.1,-0.85 Q 840,41.25 840,40 l 0,-35 q 0,-2 -2,-2 l -36,0 q -2,0 -2,2 l 0,35 q 0,1.25 -0.85,2.15 Q 798.25,43 797,43 l -35,0 q -2,0 -2,2 l 0,36 q 0,2 2,2 l 35,0 q 1.25,0 2.15,0.9 0.85,0.85 0.85,2.1 l 0,33.95 q 0,2 2,2 l 36,0 q 2,0 2,-2 L 840,86 q 0,-1.25 0.9,-2.1 0.85,-0.9 2.1,-0.9 l 33.95,0 q 2,0 2,-2 M 757,81.25 757,45 q 0,-5 5,-5 l 35,0 0,-35 q 0,-5 5,-5 l 36,0 q 5,0 5,5 l 0,35 33.95,0 q 5,0 5,5 l 0,36.25 q -0.15,4.75 -5,4.75 l -33.95,0 0,2 0,32.2 q -0.15,4.75 -5,4.75 l -36,0 q -4.85,0 -5,-4.75 l 0,-32.2 0,-2 -35,0 q -4.85,0 -5,-4.75" />
+  <path
+     style="fill:url(#linearGradient3888);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path423"
+     d="m 878.95,81 q 0,2 -2,2 L 843,83 q -1.25,0 -2.1,0.9 -0.9,0.85 -0.9,2.1 l 0,33.95 q 0,2 -2,2 l -36,0 q -2,0 -2,-2 L 800,86 q 0,-1.25 -0.85,-2.1 Q 798.25,83 797,83 l -35,0 q -2,0 -2,-2 l 0,-36 q 0,-2 2,-2 l 35,0 q 1.25,0 2.15,-0.85 Q 800,41.25 800,40 l 0,-35 q 0,-2 2,-2 l 36,0 q 2,0 2,2 l 0,35 q 0,1.25 0.9,2.15 0.85,0.85 2.1,0.85 l 33.95,0 q 2,0 2,2 l 0,36" />
+  <path
+     style="fill:#000000;fill-opacity:0.10196078;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path425"
+     d="m 757,81.25 q 0.15,4.75 5,4.75 l 35,0 0,2 -35,0 q -5,0 -5,-5 l 0,-1.75 m 40,38.95 q 0.15,4.75 5,4.75 l 36,0 q 4.85,0 5,-4.75 l 0,1.75 q 0,5 -5,5 l -36,0 q -5,0 -5,-5 l 0,-1.75 m 46,-32.2 0,-2 33.95,0 q 4.85,0 5,-4.75 l 0,1.75 q 0,5 -5,5 L 843,88" />
+  <path
+     style="fill:#666666;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path427"
+     d="M 826.9,23.4 Q 826.65,24 826,24 l -10.05,0 q -0.65,0 -0.9,-0.6 L 815,23 q -0.05,-0.35 0.25,-0.65 l 0.05,0 5,-5.05 q 0.3,-0.3 0.7,-0.3 0.35,0 0.65,0.3 l 5.05,5.05 q 0.45,0.45 0.2,1.05 m 31.7,33.7 q 0.6,-0.25 1.05,0.2 l 5.05,5.05 0.3,0.65 -0.3,0.7 -5.05,5 0,0.05 q -0.3,0.3 -0.65,0.25 l -0.4,-0.05 Q 858,68.7 858,68.05 L 858,58 q 0,-0.65 0.6,-0.9 m -31.7,43.5 q 0.25,0.6 -0.2,1.05 l -5.05,5.05 -0.65,0.3 q -0.4,0 -0.7,-0.3 l -5,-5.05 -0.05,0 q -0.3,-0.3 -0.25,-0.65 l 0.05,-0.4 q 0.25,-0.6 0.9,-0.6 l 10.05,0 q 0.65,0 0.9,0.6 M 780.35,57.3 q 0.45,-0.45 1.05,-0.2 0.6,0.25 0.6,0.9 l 0,10.05 q 0,0.65 -0.6,0.9 L 781,69 q -0.35,0.05 -0.65,-0.25 l 0,-0.05 -5.05,-5 Q 775,63.4 775,63 q 0,-0.35 0.3,-0.65 l 5.05,-5.05" />
+  <path
+     style="fill:#666666;fill-opacity:0.30196078;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path429"
+     d="M 817.2,59.15 Q 818.4,58 820,58 q 1.65,0 2.85,1.15 0.95,1 1.15,2.35 l 0,0.5 q 0,1.6 -1.15,2.8 -1.2,1.2 -2.85,1.2 -1.6,0 -2.8,-1.2 Q 816,63.6 816,62 l 0.05,-0.5 q 0.15,-1.35 1.15,-2.35" />
+  <g
+     id="0forward"
+     inkscape:label="#g3999">
+    <path
+       d="m 656,72 q 5,0 5,5 l 0,40 -30.5,30.5 L 600,117 600,77 q 0,-5 5,-5 l 51,0 m 1,5 q 0,-1 -1,-1 l -51,0 q -1,0 -1,1 l 0,38.35 26.5,26.5 26.5,-26.5 0,-38.35"
+       id="path431"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3882);stroke:none" />
+    <path
+       id="path3989"
+       d="m 657,77 0,38.35 -26.5,26.5 L 604,115.35 604,77 q 0,-1 1,-1 l 51,0 q 1,0 1,1"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path3987"
+       d="m 631,87 q -0.4,0 -0.7,0.3 l -5,5.05 -0.05,0 q -0.3,0.3 -0.25,0.65 l 0.05,0.4 q 0.25,0.6 0.9,0.6 L 636,94 q 0.65,0 0.9,-0.6 0.25,-0.6 -0.2,-1.05 L 631.65,87.3 Q 631.35,87 631,87"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path3997"
+       d="m 631,87 q 0.35,0 0.65,0.3 l 5.05,5.05 q 0.45,0.45 0.2,1.05 -0.25,0.6 -0.9,0.6 l -10.05,0 q -0.65,0 -0.9,-0.6 L 625,93 q -0.05,-0.35 0.25,-0.65 l 0.05,0 5,-5.05 Q 630.6,87 631,87"
+       style="fill:#666666;stroke:none" />
+  </g>
+  <g
+     id="0right"
+     inkscape:label="#g4011">
+    <path
+       id="path3985"
+       d="m 689.65,187.3 q -0.45,-0.45 -1.05,-0.2 -0.6,0.25 -0.6,0.9 l 0,10.05 q 0,0.65 0.6,0.9 l 0.4,0.05 0.65,-0.25 0,-0.05 5.05,-5 0.3,-0.7 -0.3,-0.65 -5.05,-5.05"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path3983"
+       d="m 705.95,167 0,51 q 0,1 -1,1 l -37.3,0 -26.5,-26.5 26.5,-26.5 37.3,0 q 1,0 1,1"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path3995"
+       d="m 689.65,187.3 5.05,5.05 0.3,0.65 -0.3,0.7 -5.05,5 0,0.05 -0.65,0.25 -0.4,-0.05 Q 688,198.7 688,198.05 L 688,188 q 0,-0.65 0.6,-0.9 0.6,-0.25 1.05,0.2"
+       style="fill:#666666;stroke:none" />
+    <path
+       d="m 705.95,167 q 0,-1 -1,-1 l -37.3,0 -26.5,26.5 26.5,26.5 37.3,0 q 1,0 1,-1 l 0,-51 m -39.95,-5 38.95,0 q 5,0 5,5 l 0,51 q 0,5 -5,5 L 666,223 635.5,192.5 666,162"
+       id="path437"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3877);stroke:none" />
+  </g>
+  <g
+     id="0back"
+     inkscape:label="#g4017">
+    <path
+       id="path3981"
+       d="m 657,269.65 0,37.3 q 0,1 -1,1 l -51,0 q -1,0 -1,-1 l 0,-37.3 26.5,-26.5 26.5,26.5"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path3979"
+       d="m 631,297 0.65,-0.3 5.05,-5.05 q 0.45,-0.45 0.2,-1.05 -0.25,-0.6 -0.9,-0.6 l -10.05,0 q -0.65,0 -0.9,0.6 L 625,291 q -0.05,0.35 0.25,0.65 l 0.05,0 5,5.05 0.7,0.3"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path3993"
+       d="m 631,297 -0.7,-0.3 -5,-5.05 -0.05,0 q -0.3,-0.3 -0.25,-0.65 l 0.05,-0.4 q 0.25,-0.6 0.9,-0.6 l 10.05,0 q 0.65,0 0.9,0.6 0.25,0.6 -0.2,1.05 l -5.05,5.05 -0.65,0.3"
+       style="fill:#666666;stroke:none" />
+    <path
+       d="m 657,269.65 -26.5,-26.5 -26.5,26.5 0,37.3 q 0,1 1,1 l 51,0 q 1,0 1,-1 l 0,-37.3 M 630.5,237.5 661,268 l 0,38.95 q 0,5 -5,5 l -51,0 q -5,0 -5,-5 l 0,-38.95 30.5,-30.5"
+       id="path439"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3874);stroke:none" />
+  </g>
+  <g
+     id="0left"
+     inkscape:label="#g4005">
+    <path
+       id="path3977"
+       d="m 571.4,187.1 q -0.6,-0.25 -1.05,0.2 l -5.05,5.05 q -0.3,0.3 -0.3,0.65 0,0.4 0.3,0.7 l 5.05,5 0,0.05 q 0.3,0.3 0.65,0.25 l 0.4,-0.05 q 0.6,-0.25 0.6,-0.9 L 572,188 q 0,-0.65 -0.6,-0.9"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path433"
+       d="m 555,166 38.35,0 26.5,26.5 -26.5,26.5 -38.35,0 q -1,0 -1,-1 l 0,-51 q 0,-1 1,-1"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path435"
+       d="m 571.4,187.1 q 0.6,0.25 0.6,0.9 l 0,10.05 q 0,0.65 -0.6,0.9 L 571,199 q -0.35,0.05 -0.65,-0.25 l 0,-0.05 -5.05,-5 q -0.3,-0.3 -0.3,-0.7 0,-0.35 0.3,-0.65 l 5.05,-5.05 q 0.45,-0.45 1.05,-0.2"
+       style="fill:#666666;stroke:none" />
+    <path
+       d="m 550,167 q 0,-5 5,-5 l 40,0 30.5,30.5 -30.5,30.5 -40,0 q -5,0 -5,-5 l 0,-51 m 5,-1 q -1,0 -1,1 l 0,51 q 0,1 1,1 l 38.35,0 26.5,-26.5 -26.5,-26.5 -38.35,0"
+       id="path441"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3871);stroke:none" />
+  </g>
+  <path
+     style="fill:url(#linearGradient3868);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path443"
+     d="M 133,178.95 Q 111.05,157 80,157 48.75,157 26.85,178.95 5,200.95 5,232 q 0,31.05 21.85,53 21.95,22 53.15,22 31,0 52.95,-22 L 133,284.95 Q 155,263 155,232 q 0,-31.05 -22,-53.05 m 3.5,-3.55 Q 160,198.9 160,232 160,265.1 136.5,288.5 113.1,312 80,312 46.7,312 23.3,288.5 0,265.1 0,232 0,198.9 23.3,175.4 46.7,152 80,152 q 33.1,0 56.5,23.4" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path445"
+     d="m 133,178.95 q 22,22 22,53.05 0,31 -22,52.95 L 132.95,285 Q 111,307 80,307 48.8,307 26.85,285 5,263.05 5,232 5,200.95 26.85,178.95 48.75,157 80,157 q 31.05,0 53,21.95" />
+  <path
+     style="fill:#ffffff;fill-opacity:0.05098039;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path447"
+     d="m 80,167.05 q 0.35,0 0.65,0.3 l 5.05,5.05 q 0.45,0.45 0.2,1.05 -0.25,0.6 -0.9,0.6 l -10.05,0 q -0.65,0 -0.9,-0.6 L 74,173.05 q -0.05,-0.35 0.25,-0.65 l 0.05,0 5,-5.05 q 0.3,-0.3 0.7,-0.3 m 59.5,61.5 q 0,-0.65 0.6,-0.9 0.6,-0.25 1.05,0.2 l 5.05,5.05 0.3,0.65 -0.3,0.7 -5.05,5 0,0.05 -0.65,0.25 -0.4,-0.05 q -0.6,-0.25 -0.6,-0.9 l 0,-10.05 m -119,0 0,10.05 q 0,0.65 -0.6,0.9 l -0.4,0.05 q -0.35,0.05 -0.65,-0.25 l 0,-0.05 -5.05,-5 q -0.3,-0.3 -0.3,-0.7 0,-0.35 0.3,-0.65 l 5.05,-5.05 q 0.45,-0.45 1.05,-0.2 0.6,0.25 0.6,0.9 m 65.4,65.1 q 0.25,0.6 -0.2,1.05 l -5.05,5.05 -0.65,0.3 -0.7,-0.3 -5,-5.05 -0.05,0 q -0.3,-0.3 -0.25,-0.65 l 0.05,-0.4 q 0.25,-0.6 0.9,-0.6 l 10.05,0 q 0.65,0 0.9,0.6" />
+  <g
+     id="0joystick_back"
+     inkscape:label="#g3365">
+    <path
+       d="M 45.75,88.35 Q 40.6,81.8 38.45,74 37.3,69.8 37,65.25 l -0.1,-3.1 Q 36.95,44.25 49.55,31.6 l 3.55,-3.25 q 5.4,-4.4 11.65,-6.75 5.4,-2 11.35,-2.5 l 4,-0.15 Q 97,19 109.25,30.25 l 1.25,1.2 0.15,0.15 q 9.45,9.45 11.8,21.85 0.65,3.55 0.75,7.35 l 0,1.2 0,1 Q 122.85,80.2 110.5,92.5 97.85,105.2 80,105.2 L 75.25,105 Q 68.3,104.3 62.2,101.55 57,99.15 52.45,95.3 l -2.95,-2.75 -3.75,-4.2"
+       id="path449"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3863);stroke:none" />
+    <path
+       d="m 45.75,88.35 q 1.7,2.25 3.75,4.3 12.6,12.7 30.65,12.7 l 3.45,-0.1 q 5,-0.4 9.65,-1.85 7.25,-2.25 13.35,-7.15 l 4,-3.6 q 11.45,-11.5 12.6,-27.15 l 0,-0.35 0,-0.15 0.05,-0.4 0.05,-1.5 0,-0.95 q 0,-4.55 -0.85,-8.7 -2.35,-12.4 -11.8,-21.85 l -0.15,-0.15 -1.25,-1.2 Q 97,19 80.1,18.95 l -4,0.15 Q 70.15,19.6 64.75,21.6 58.5,23.95 53.1,28.35 L 49.55,31.6 Q 36.95,44.25 36.9,62.15 l 0.1,3.1 q 0.3,4.55 1.45,8.75 2.15,7.8 7.3,14.35 m -13.6,-24.5 -0.05,-0.7 0,-1 q 0,-19.8 14,-34 14,-14 34,-14 19.8,0 33.85,14 14.1,14.15 14.15,34 l 0,1 0,0.7 q -0.65,18.75 -14.1,32.2 -14.1,14.1 -33.9,14.1 -20,0 -34,-14.1 -13.4,-13.5 -13.95,-32.2"
+       id="path451"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3860);stroke:none" />
+    <path
+       d="m 123.2,63 0,-1 0,-1.2 0.1,2.3 -0.05,1.5 -0.05,-0.6 0,-0.2 0,-0.8"
+       id="path453"
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:0.30196078;stroke:none" />
+    <path
+       d="m 123.2,63 0,0.8 0,0.2 0,0.65 0,0.35 0,0.15 0,0.35 q -1.15,15.65 -12.6,27.15 l -4,3.6 q -6.1,4.9 -13.35,7.15 -4.65,1.45 -9.65,1.85 l -3.45,0.1 q -18.05,0 -30.65,-12.7 -2.05,-2.05 -3.75,-4.3 l 3.75,4.2 2.95,2.75 q 4.55,3.85 9.75,6.25 6.1,2.75 13.05,3.45 l 4.75,0.2 q 17.85,0 30.5,-12.7 12.35,-12.3 12.7,-29.5 m 0,-2.2 q -0.1,-3.8 -0.75,-7.35 0.85,4.15 0.85,8.7 l 0,0.95 -0.1,-2.3"
+       id="path455"
+       inkscape:connector-curvature="0"
+       style="fill:#000000;fill-opacity:0.2;stroke:none" />
+  </g>
+  <path
+     style="fill:url(#linearGradient3853);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path461"
+     d="m 884.2,486.2 q 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 M 900,462 q 0,16.55 -11.75,28.25 Q 876.55,502 860,502 843.35,502 831.65,490.25 820,478.55 820,462 820,445.45 831.65,433.7 843.35,422 860,422 q 16.55,0 28.25,11.7 Q 900,445.45 900,462" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path463"
+     d="m 884.2,486.2 q -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2" />
+  <path
+     style="fill:url(#linearGradient3849);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path465"
+     d="m 794.2,486.2 q 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 M 810,462 q 0,16.55 -11.75,28.25 Q 786.55,502 770,502 753.35,502 741.65,490.25 730,478.55 730,462 730,445.45 741.65,433.7 753.35,422 770,422 q 16.55,0 28.25,11.7 Q 810,445.45 810,462" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path467"
+     d="m 794.2,486.2 q -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2" />
+  <path
+     style="fill:url(#linearGradient3845);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path469"
+     d="M 708.25,523.7 Q 720,535.45 720,552 720,568.55 708.25,580.25 696.55,592 680,592 663.35,592 651.65,580.25 640,568.55 640,552 640,535.45 651.65,523.7 663.35,512 680,512 q 16.55,0 28.25,11.7 m -4.05,4.05 Q 694.25,517.7 680,517.7 q -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path471"
+     d="m 704.2,527.75 q 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05" />
+  <path
+     style="fill:url(#linearGradient3841);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path473"
+     d="M 614.2,527.75 Q 604.25,517.7 590,517.7 q -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 m 4.05,-4.05 Q 630,535.45 630,552 630,568.55 618.25,580.25 606.55,592 590,592 573.35,592 561.65,580.25 550,568.55 550,552 550,535.45 561.65,523.7 573.35,512 590,512 q 16.55,0 28.25,11.7" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path475"
+     d="m 614.2,527.75 q 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05" />
+  <path
+     style="fill:url(#linearGradient3837);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path477"
+     d="m 500,512 q 16.55,0 28.25,11.7 Q 540,535.45 540,552 540,568.55 528.25,580.25 516.55,592 500,592 483.35,592 471.65,580.25 460,568.55 460,552 460,535.45 471.65,523.7 483.35,512 500,512 m 0,5.7 q -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 Q 514.25,517.7 500,517.7" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path479"
+     d="m 500,517.7 q 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05" />
+  <path
+     style="fill:url(#linearGradient3833);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path481"
+     d="m 860,512 q 16.55,0 28.25,11.7 Q 900,535.45 900,552 900,568.55 888.25,580.25 876.55,592 860,592 843.35,592 831.65,580.25 820,568.55 820,552 820,535.45 831.65,523.7 843.35,512 860,512 m 0,5.7 q -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 Q 874.25,517.7 860,517.7" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path483"
+     d="m 860,517.7 q 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05" />
+  <path
+     style="fill:#ffffff;fill-opacity:0.05098039;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path489"
+     d="m 326.2,232.9 0.3,0.65 -0.3,0.7 -5.05,5 0,0.05 -0.65,0.25 -0.4,-0.05 q -0.6,-0.25 -0.6,-0.9 l 0,-10.05 q 0,-0.65 0.6,-0.9 0.6,-0.25 1.05,0.2 l 5.05,5.05 m -132.4,0 5.05,-5.05 q 0.45,-0.45 1.05,-0.2 0.6,0.25 0.6,0.9 l 0,10.05 q 0,0.65 -0.6,0.9 l -0.4,0.05 -0.65,-0.25 0,-0.05 -5.05,-5 -0.3,-0.7 q 0,-0.35 0.3,-0.65 M 260,167.05 q 0.35,0 0.65,0.3 l 5.05,5.05 q 0.45,0.45 0.2,1.05 -0.25,0.6 -0.9,0.6 l -10.05,0 q -0.65,0 -0.9,-0.6 l -0.05,-0.4 q -0.05,-0.35 0.25,-0.65 l 0.05,0 5,-5.05 q 0.3,-0.3 0.7,-0.3 m 5.9,126.6 q 0.25,0.6 -0.2,1.05 l -5.05,5.05 -0.65,0.3 q -0.4,0 -0.7,-0.3 l -5,-5.05 -0.05,0 q -0.3,-0.3 -0.25,-0.65 l 0.05,-0.4 q 0.25,-0.6 0.9,-0.6 l 10.05,0 q 0.65,0 0.9,0.6" />
+  <path
+     style="fill:url(#linearGradient3824);stroke:none"
+     inkscape:connector-curvature="0"
+     id="path491"
+     d="m 370,552 q 0,-16.55 11.65,-28.3 11.7,-11.7 28.35,-11.7 16.55,0 28.25,11.7 Q 450,535.45 450,552 450,568.55 438.25,580.25 426.55,592 410,592 393.35,592 381.65,580.25 370,568.55 370,552 m 40,-34.3 q -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 Q 424.25,517.7 410,517.7" />
+  <path
+     style="fill:#383838;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path493"
+     d="m 410,517.7 q 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2 -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 866.5,356.65 q 0.7,-0.75 1.95,-0.6 1.05,0.15 1.8,0.95 l 0.45,0.45 q 0.5,0.65 0.5,1.45 l 0.1,0 q 0.05,0.95 -0.4,1.65 l 4.2,4.2 q 1.25,1.25 0,2.45 l -0.95,0.95 -0.4,0.25 q -0.2,0 -0.4,-0.2 l -0.65,-0.65 -2.25,2.25 0.65,0.65 0.1,0.4 -0.15,0.4 -0.9,0.95 q -1.25,1.25 -2.5,0 l -4.2,-4.2 -4.05,4.1 q 1.2,2 1.65,4.3 l -0.05,0.1 q 0.75,4.25 -1.95,6.75 -2.6,2.75 -6.85,2.1 -3.4,-0.6 -6.15,-3.15 l -0.45,-0.4 q -2.9,-2.85 -3.45,-6.45 l 0,-0.05 q -0.25,-1.4 -0.05,-2.55 0.1,-2.6 2,-4.35 1.8,-1.9 4.4,-2.15 l 2.45,0.1 0.15,0 q 2.15,0.4 4.1,1.65 l 11.3,-11.35"
+     id="path4129" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 770.05,354.45 6.75,8.45 10.2,3.75 -6,9.05 -0.55,10.75 -10.4,-2.85 -10.55,2.85 -0.5,-10.75 -6,-9.05 10.2,-3.75 6.85,-8.45"
+     id="path4127" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 662.3,370.65 q 0.85,-2.4 3.7,-2.65 l 5.1,0 0,-12 q 0,-0.75 0.55,-1.35 0.5,-0.65 1.4,-0.65 l 12.9,0 q 0.8,0 1.4,0.6 0.6,0.6 0.6,1.4 l 0.05,12 5,0 q 2.7,0.15 3.75,2.55 l 0.05,0.3 q 0.75,2.2 -0.9,3.8 l 0.05,0 -13.8,14.15 -0.15,0.2 q -1.15,1 -2.5,1 -1.5,0 -2.6,-1.2 l 0,0.05 -13.7,-14.1 -0.2,-0.15 -0.05,-0.05 q -1.05,-1.2 -0.95,-2.5 l 0,-0.05 q 0,-0.7 0.3,-1.4 l 0,0.05"
+     id="path4125" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 848.25,372.5 q -0.5,0.7 -0.35,1.8 0.35,1.8 1.85,3.35 l 0.45,0.4 q 1.3,1.2 2.95,1.45 l 0.1,0.05 q 1,0.15 1.65,-0.45 0.5,-0.6 0.35,-1.55 l 0,-0.2 q -0.3,-1.55 -1.45,-2.95 l -0.35,-0.35 -0.15,-0.15 q -1.5,-1.4 -3.25,-1.75 -1.05,-0.2 -1.8,0.35"
+     id="path4123" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="M 849.3125 537 C 847.54583 537 846.29375 537.58333 845.59375 538.75 C 844.89375 539.68333 844.64583 541.07083 844.8125 542.9375 L 847.34375 566.1875 C 847.64375 568.92083 849.17292 570.3125 851.90625 570.3125 L 870.15625 570.3125 C 872.85625 570.3125 874.35625 568.92083 874.65625 566.1875 L 877.1875 542.9375 C 877.3875 541.07083 877.13958 539.68333 876.40625 538.75 C 875.70625 537.58333 874.45417 537 872.6875 537 L 849.3125 537 z M 853 543.9375 C 853.56667 543.9375 854.03958 544.1625 854.40625 544.5625 C 854.80625 544.9625 855 545.40417 855 545.9375 C 855 546.50417 854.80625 546.97708 854.40625 547.34375 C 854.03958 547.74375 853.56667 547.9375 853 547.9375 C 852.43333 547.9375 851.9625 547.74375 851.5625 547.34375 C 851.19583 546.97708 851 546.50417 851 545.9375 C 851 545.40417 851.19583 544.9625 851.5625 544.5625 C 851.9625 544.1625 852.43333 543.9375 853 543.9375 z M 861 543.9375 C 861.56667 543.9375 862.03958 544.1625 862.40625 544.5625 C 862.80625 544.9625 863 545.40417 863 545.9375 C 863 546.50417 862.80625 546.97708 862.40625 547.34375 C 862.03958 547.74375 861.56667 547.9375 861 547.9375 C 860.43333 547.9375 859.9625 547.74375 859.5625 547.34375 C 859.19583 546.97708 859 546.50417 859 545.9375 C 859 545.40417 859.19583 544.9625 859.5625 544.5625 C 859.9625 544.1625 860.43333 543.9375 861 543.9375 z M 869 543.9375 C 869.56667 543.9375 870.03958 544.1625 870.40625 544.5625 C 870.80625 544.9625 871 545.40417 871 545.9375 C 871 546.50417 870.80625 546.97708 870.40625 547.34375 C 870.03958 547.74375 869.56667 547.9375 869 547.9375 C 868.43333 547.9375 867.9625 547.74375 867.5625 547.34375 C 867.19583 546.97708 867 546.50417 867 545.9375 C 867 545.40417 867.19583 544.9625 867.5625 544.5625 C 867.9625 544.1625 868.43333 543.9375 869 543.9375 z M 853 551.9375 C 853.56667 551.9375 854.03958 552.1625 854.40625 552.5625 C 854.80625 552.9625 855 553.40417 855 553.9375 C 855 554.50417 854.80625 554.97708 854.40625 555.34375 C 854.03958 555.74375 853.56667 555.9375 853 555.9375 C 852.43333 555.9375 851.9625 555.74375 851.5625 555.34375 C 851.19583 554.97708 851 554.50417 851 553.9375 C 851 553.40417 851.19583 552.9625 851.5625 552.5625 C 851.9625 552.1625 852.43333 551.9375 853 551.9375 z M 861 551.9375 C 861.56667 551.9375 862.03958 552.1625 862.40625 552.5625 C 862.80625 552.9625 863 553.40417 863 553.9375 C 863 554.50417 862.80625 554.97708 862.40625 555.34375 C 862.03958 555.74375 861.56667 555.9375 861 555.9375 C 860.43333 555.9375 859.9625 555.74375 859.5625 555.34375 C 859.19583 554.97708 859 554.50417 859 553.9375 C 859 553.40417 859.19583 552.9625 859.5625 552.5625 C 859.9625 552.1625 860.43333 551.9375 861 551.9375 z M 869 551.9375 C 869.56667 551.9375 870.03958 552.1625 870.40625 552.5625 C 870.80625 552.9625 871 553.40417 871 553.9375 C 871 554.50417 870.80625 554.97708 870.40625 555.34375 C 870.03958 555.74375 869.56667 555.9375 869 555.9375 C 868.43333 555.9375 867.9625 555.74375 867.5625 555.34375 C 867.19583 554.97708 867 554.50417 867 553.9375 C 867 553.40417 867.19583 552.9625 867.5625 552.5625 C 867.9625 552.1625 868.43333 551.9375 869 551.9375 z M 853 559.9375 C 853.56667 559.9375 854.03958 560.1625 854.40625 560.5625 C 854.80625 560.9625 855 561.40417 855 561.9375 C 855 562.50417 854.80625 562.97708 854.40625 563.34375 C 854.03958 563.74375 853.56667 563.9375 853 563.9375 C 852.43333 563.9375 851.9625 563.74375 851.5625 563.34375 C 851.19583 562.97708 851 562.50417 851 561.9375 C 851 561.40417 851.19583 560.9625 851.5625 560.5625 C 851.9625 560.1625 852.43333 559.9375 853 559.9375 z M 861 559.9375 C 861.56667 559.9375 862.03958 560.1625 862.40625 560.5625 C 862.80625 560.9625 863 561.40417 863 561.9375 C 863 562.50417 862.80625 562.97708 862.40625 563.34375 C 862.03958 563.74375 861.56667 563.9375 861 563.9375 C 860.43333 563.9375 859.9625 563.74375 859.5625 563.34375 C 859.19583 562.97708 859 562.50417 859 561.9375 C 859 561.40417 859.19583 560.9625 859.5625 560.5625 C 859.9625 560.1625 860.43333 559.9375 861 559.9375 z M 869 559.9375 C 869.56667 559.9375 870.03958 560.1625 870.40625 560.5625 C 870.80625 560.9625 871 561.40417 871 561.9375 C 871 562.50417 870.80625 562.97708 870.40625 563.34375 C 870.03958 563.74375 869.56667 563.9375 869 563.9375 C 868.43333 563.9375 867.9625 563.74375 867.5625 563.34375 C 867.19583 562.97708 867 562.50417 867 561.9375 C 867 561.40417 867.19583 560.9625 867.5625 560.5625 C 867.9625 560.1625 868.43333 559.9375 869 559.9375 z "
+     id="path4121" />
+  <g
+     id="0fire"
+     inkscape:label="#g4133">
+    <path
+       d="M 798.25,580.25 Q 786.55,592 770,592 753.35,592 741.65,580.25 730,568.55 730,552 730,535.45 741.65,523.7 753.35,512 770,512 q 16.55,0 28.25,11.7 11.75,11.75 11.75,28.3 0,16.55 -11.75,28.25 m -4.05,-4.05 q 10.1,-9.95 10.1,-24.2 0,-14.15 -10.1,-24.25 -9.95,-10.05 -24.2,-10.05 -14.25,0 -24.25,10.05 -10.05,10.1 -10.05,24.25 0,14.25 10.05,24.2 10,10.1 24.25,10.1 14.25,0 24.2,-10.1"
+       id="path485"
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3829);stroke:none" />
+    <path
+       d="m 794.2,576.2 q -9.95,10.1 -24.2,10.1 -14.25,0 -24.25,-10.1 -10.05,-9.95 -10.05,-24.2 0,-14.15 10.05,-24.25 10,-10.05 24.25,-10.05 14.25,0 24.2,10.05 10.1,10.1 10.1,24.25 0,14.25 -10.1,24.2"
+       id="path487"
+       inkscape:connector-curvature="0"
+       style="fill:#383838;stroke:none" />
+    <path
+       id="path4103"
+       d="m 791.55,551 0.4,0.8 0,0.2 0,0.2 -0.4,0.8 -0.7,0.45 -17.3,4.65 5.9,7.05 0.3,0.8 -0.25,0.9 -0.65,0.5 -0.9,0.05 -19.65,-5.7 -0.1,-0.05 q -8.4,-3.4 -8.35,-9.65 -0.05,-6.25 8.35,-9.65 l 0.1,-0.05 19.65,-5.7 0.9,0.05 0.65,0.5 q 0.3,0.4 0.25,0.9 l -0.3,0.8 -5.9,7.05 17.3,4.65 0.7,0.45"
+       style="fill:#666666;stroke:none;fill-opacity:1" />
+  </g>
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 688.55,545.45 q -3.15,-3.1 -7.55,-3.1 -4.45,0 -7.55,3.1 -3.15,3.15 -3.15,7.55 0,4.45 3.15,7.55 3.1,3.15 7.55,3.15 4.4,0 7.5,-3.15 l 0.05,0 q 3.1,-3.1 3.1,-7.55 0,-4.4 -3.1,-7.55"
+     id="path4099" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 693,541 q 5,5 5,12 0,7.05 -5,12.05 -5,4.95 -12,4.95 -7.05,0 -12.05,-4.95 -4.95,-5 -4.95,-12.05 0,-7 4.9,-12 l 0.05,0 0,-0.05 q 5,-4.95 12.05,-4.95 7,0 12,5"
+     id="path4097" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 685.25,548.75 q 1.75,1.75 1.75,4.25 0,2.5 -1.75,4.25 -1.8,1.8 -4.25,1.8 -2.55,0 -4.3,-1.8 -1.75,-1.75 -1.75,-4.25 0,-2.5 1.75,-4.25 1.75,-1.75 4.3,-1.75 2.45,0 4.25,1.75"
+     id="path4095" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 327.5,350.8 0,0.15 0,1 -0.15,1.15 7.3,7.15 q 1.15,1.05 1.3,2.55 l 0.05,0.65 q 0,1.95 -1.35,3.25 -1.25,1.3 -3.3,1.3 -1.85,0 -3.25,-1.3 l -4.65,-4.65 0.05,-0.1 -2.75,-2.65 q -1.05,0.3 -2.1,0 -2.55,-0.4 -4.35,-2.15 -2.55,-2.7 -2.25,-6 0.05,-1.05 0.45,-2.15 l 4.45,4.5 q 1.3,1.3 2.5,0 l 1.9,-1.95 q 0.9,-0.9 0.45,-1.9 l -0.45,-0.65 -4.55,-4.35 0.95,-0.4 3.45,-0.1 q 2.25,0.4 3.95,2.15 2,1.85 2.35,4.5"
+     id="path4093" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 74,344 6,0 q 2,0 2,2 l 0,20 q 0,2 -2,2 l -6,0 q -2,0 -2,-2 l 0,-20 q 0,-2 2,-2"
+     id="path4091" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 94,344 q 2,0 2,2 l 0,20 q 0,2 -2,2 l -6,0 q -2,0 -2,-2 l 0,-20 q 0,-2 2,-2 l 6,0"
+     id="path4089" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 574.15,369.35 -0.05,0 13.8,-14.15 0.15,-0.2 q 1.15,-1 2.5,-1 1.5,0 2.6,1.2 l 0,-0.05 13.7,14.1 0.2,0.15 0.05,0.05 q 1.05,1.2 0.95,2.5 l 0,0.05 -0.3,1.4 0,-0.05 q -0.85,2.4 -3.7,2.65 l -5.1,0 0,12 q 0,0.75 -0.55,1.35 -0.5,0.65 -1.4,0.65 l -12.9,0 q -0.8,0 -1.4,-0.6 -0.6,-0.6 -0.6,-1.4 l -0.05,-12 -5,0 q -2.7,-0.15 -3.75,-2.55 l -0.05,-0.3 q -0.75,-2.2 0.9,-3.8"
+     id="path4087" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 502.65,356.15 0,-0.05 14.15,13.8 0.2,0.15 q 1,1.15 1,2.5 0,1.5 -1.2,2.6 l 0.05,0 -14.1,13.7 -0.15,0.2 -0.05,0.05 q -1.2,1.05 -2.5,0.95 l -0.05,0 -1.4,-0.3 0.05,0 q -2.4,-0.85 -2.65,-3.7 l 0,-5.1 -12,0 q -0.75,0 -1.35,-0.55 Q 482,379.9 482,379 l 0,-12.9 q 0,-0.8 0.6,-1.4 0.6,-0.6 1.4,-0.6 l 12,-0.05 0,-5 q 0.15,-2.7 2.55,-3.75 l 0.3,-0.05 q 2.2,-0.75 3.8,0.9"
+     id="path4085" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 407.25,356.2 0.15,-0.2 0.05,-0.05 q 1.2,-1.05 2.5,-0.95 l 0.05,0 1.4,0.3 -0.05,0 q 2.4,0.85 2.65,3.7 l 0,5.1 12,0 q 0.75,0 1.35,0.55 0.65,0.5 0.65,1.4 l 0,12.9 q 0,0.8 -0.6,1.4 -0.6,0.6 -1.4,0.6 l -12,0.05 0,5 q -0.15,2.7 -2.55,3.75 l -0.3,0.05 q -2.2,0.75 -3.8,-0.9 l 0,0.05 L 393.2,375.15 393,375 q -1,-1.15 -1,-2.5 0,-1.5 1.2,-2.6 l -0.05,0 14.1,-13.7"
+     id="path4083" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 333.85,362.95 -0.65,-1 q -1.7,-1.45 -3.4,0 -0.45,0.45 -0.55,1 l -0.1,0.65 q 0,0.95 0.65,1.7 0.75,0.65 1.7,0.65 1,0 1.7,-0.65 0.75,-0.75 0.75,-1.7 l -0.1,-0.65"
+     id="path4081" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 138.25,344.15 q 1.15,-0.45 2.05,0.4 l 9.9,9.65 0.05,0 q 0.55,0.6 0.55,1.3 0,0.8 -0.6,1.35 l -9.9,9.6 -0.05,0.05 q -0.6,0.55 -1.3,0.5 l -0.7,-0.15 Q 137,366.4 137,365.15 l 0,-19.25 q 0,-1.25 1.2,-1.75 l 0.05,0"
+     id="path4079" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 250.2,357.9 q 0.1,-2.1 1.6,-3.5 1.45,-1.5 3.5,-1.7 l 1.95,0.1 0.15,0 q 1.7,0.3 3.25,1.3 l 9,-9.05 q 0.55,-0.6 1.55,-0.45 0.85,0.1 1.45,0.75 l 0.35,0.35 q 0.4,0.5 0.4,1.15 l 0.05,0 q 0.05,0.75 -0.3,1.3 l 3.35,3.35 q 1,1 0,1.95 l -0.75,0.75 -0.35,0.2 -0.3,-0.15 -0.5,-0.5 -1.8,1.8 0.5,0.5 0.1,0.3 -0.15,0.35 -0.7,0.75 q -1,1 -2,0 l -3.35,-3.35 -3.2,3.25 q 0.95,1.6 1.3,3.45 l -0.05,0.05 q 0.6,3.4 -1.55,5.4 -2.05,2.2 -5.45,1.65 -2.7,-0.45 -4.9,-2.5 L 253,365.1 q -2.3,-2.3 -2.75,-5.15 l 0,-0.05 q -0.2,-1.1 -0.05,-2"
+     id="path4077" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 204.05,344 4.75,6.05 7.2,2.7 -4.2,6.5 -0.4,7.75 -7.35,-2.05 -7.45,2.05 -0.35,-7.75 -4.25,-6.5 7.2,-2.7 4.85,-6.05"
+     id="path4075" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 256.65,362.1 q 1.05,0.95 2.35,1.15 l 0.1,0.05 q 0.8,0.1 1.3,-0.35 0.4,-0.5 0.3,-1.25 l 0,-0.15 q -0.25,-1.25 -1.15,-2.35 l -0.3,-0.3 -0.1,-0.1 q -1.2,-1.1 -2.6,-1.4 -0.85,-0.15 -1.45,0.3 -0.4,0.55 -0.25,1.4 0.25,1.45 1.45,2.7 l 0.35,0.3"
+     id="path4073" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 264.85,407.25 0.65,0.1 11.05,9.15 0.2,0.5 -0.2,0.45 -0.05,0 -11.15,8.45 q -0.3,0.2 -0.7,0 -0.35,-0.2 -0.3,-0.6 l 0.5,-4.25 q -8.45,0.2 -13.7,3.4 1.85,-9.85 13.8,-12.3 l -0.45,-4.3 q 0,-0.35 0.35,-0.6"
+     id="path4071" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 258,466 0,7 12,0 0,-7 -12,0"
+     id="path4069" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 256,477 0,9 16,0 0,-9 -16,0"
+     id="path4067" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 266,467 3,0 0,5 -3,0 0,-5"
+     id="path4065" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 275.95,468.1 0,19.85 -22.95,0 0,-24 18.85,0 4.1,4.15"
+     id="path4063" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 142.55,411.75 0,11.25 q 0,2.05 -1.5,3.4 l -0.05,0.1 q -1.25,1.25 -2.9,1.45 l -0.05,0 q -1.85,0.15 -3,-1.05 -1.2,-1.15 -1,-3 0.15,-1.75 1.4,-3.05 l 0.05,-0.05 q 1.15,-1.15 2.55,-1.4 l 0.05,0 1.25,-0.05 0,-11.3 q 0,-2.05 2.05,-2.05 l 9.55,0 q 2.1,0 2.1,2.05 l 0,10.85 0,0.1 q -0.2,1.95 -1.4,3.2 l -0.05,0 q -1.3,1.4 -3,1.55 l -0.05,0 q -1.8,0.15 -3,-1.1 -1.15,-1.15 -1,-3.05 0.2,-1.7 1.45,-3 1.15,-1.2 2.6,-1.4 l -0.05,0 1.25,-0.1 0,-3.35 -7.25,0"
+     id="path4061" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 14.05,470.9 -2.1,2.05 0,-7.95 8,0 -2.1,2.1 2.35,2.3 -3.8,3.8 -2.35,-2.3"
+     id="path4059" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 26.35,405 1.4,0 0,8.95 0.3,0.25 q 0.95,0.95 0.95,2.3 0,1.3 -0.95,2.2 l -0.3,0.35 0,8.95 -1.4,0 -9.55,-8.8 q -0.7,0.5 -1.65,0.5 -1.3,0 -2.25,-1 -0.9,-0.9 -0.9,-2.2 0,-1.35 0.9,-2.3 0.95,-0.9 2.25,-0.9 0.95,0 1.7,0.45 l 9.5,-8.75"
+     id="path4057" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 31.2,410 q 1.4,0.45 2.65,1.7 2.2,2.15 2.2,5.3 0,3.1 -2.2,5.25 -1.25,1.2 -2.65,1.75 l -1.15,-3.15 q 0.85,-0.2 1.5,-0.85 1.25,-1.3 1.25,-3 0,-1.75 -1.25,-3 -0.65,-0.7 -1.5,-0.85 L 31.2,410"
+     id="path4055" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 80.9,475.6 q -0.05,0.9 0.3,1.75 0.35,0.9 1.1,1.4 0.7,0.55 1.65,0.65 l 1.7,-0.3 q 0.85,-0.35 1.4,-1.1 l 0.65,-1.65 q 0.1,-0.9 -0.3,-1.75 -0.35,-0.85 -1.1,-1.35 -0.7,-0.55 -1.6,-0.65 l -1.75,0.25 q -1.8,0.8 -2.05,2.75"
+     id="path4053" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 75.75,467.6 q 2.1,0.7 3.85,1.9 0.55,-0.45 1.5,-0.85 0.7,-0.35 1.65,-0.55 0.4,-2.1 1.55,-4.1 l 2.95,0.4 q 0.45,2.1 0.3,4.25 l 1.5,0.85 1.3,1.2 q 2,-0.7 4.3,-0.7 l 1.15,2.75 q -1.6,1.5 -3.55,2.35 l 0,1.75 -0.35,1.75 q 1.65,1.4 2.75,3.4 l -1.8,2.35 q -2.15,-0.7 -3.8,-1.9 l -1.5,0.9 -1.7,0.5 q -0.4,2.2 -1.55,4.15 l -2.95,-0.4 q -0.45,-2.1 -0.25,-4.25 l -1.5,-0.9 -1.3,-1.15 q -2.1,0.7 -4.35,0.7 l -1.15,-2.75 q 1.6,-1.5 3.55,-2.4 l 0,-1.75 0.35,-1.7 Q 75.05,472 73.95,470 l 1.8,-2.4"
+     id="path4051" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 86.35,405 1.4,0 0,8.95 0.3,0.25 q 0.95,0.95 0.95,2.3 0,1.3 -0.95,2.2 l -0.3,0.35 0,8.95 -1.4,0 -9.55,-8.8 q -0.7,0.5 -1.65,0.5 -1.3,0 -2.25,-1 -0.9,-0.9 -0.9,-2.2 0,-1.35 0.9,-2.3 0.95,-0.9 2.25,-0.9 0.95,0 1.7,0.45 l 9.5,-8.75"
+     id="path4049" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 192,485 0,-2 q 0,-2 2,-2 l 20,0 q 2,0 2,2 l 0,2 q 0,2 -2,2 l -20,0 q -2,0 -2,-2"
+     id="path4047" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 194,471 q -2,0 -2,-2 l 0,-2 q 0,-2 2,-2 l 20,0 q 2,0 2,2 l 0,2 q 0,2 -2,2 l -20,0"
+     id="path4045" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 192,475 q 0,-2 2,-2 l 20,0 q 2,0 2,2 l 0,2 q 0,2 -2,2 l -20,0 q -2,0 -2,-2 l 0,-2"
+     id="path4043" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 145.1,472.95 q 0,-1.75 -1.25,-3.05 -1.25,-1.25 -3,-1.25 -1.75,0 -2.95,1.25 l -0.05,0.05 q -1.25,1.25 -1.25,3 0,1.75 1.25,3 1.25,1.3 3,1.3 1.75,0 3,-1.25 l 0,-0.05 q 1.25,-1.25 1.25,-3"
+     id="path4041" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 146.7,467.05 q 2.45,2.45 2.45,5.9 0,1.9 -0.75,3.45 l 6.4,6.5 q 0.85,0.8 0.8,1.95 0,1.1 -0.8,1.95 -0.8,0.8 -1.9,0.8 -1.15,0 -1.95,-0.8 l -6.3,-6.4 q -1.7,0.9 -3.8,0.9 -3.4,0 -5.85,-2.45 -2.4,-2.45 -2.4,-5.9 0,-3.45 2.4,-5.9 l 0.05,0 q 2.4,-2.45 5.8,-2.45 3.45,0 5.85,2.45"
+     id="path4039" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 14.05,482.1 2.35,-2.35 3.8,3.8 -2.35,2.35 2.1,2.1 -8,0 0,-8 2.1,2.1"
+     id="path4037" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 34.95,473 -2.05,-2.1 -2.35,2.3 -3.8,-3.8 2.35,-2.3 -2.1,-2.1 7.95,0 0,8"
+     id="path4035" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 26.75,483.55 3.8,-3.8 2.35,2.35 2.05,-2.1 0,8 -7.95,0 2.1,-2.1 -2.35,-2.35"
+     id="path4033" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 498.25,551.55 11,-13.05 q 0.4,-0.5 1.05,-0.6 0.65,-0.05 1.15,0.4 l 6.55,5.6 q 0.5,0.4 0.55,1.05 l -0.35,1.2 -18.7,22.4 -0.75,0.5 -0.9,0 -0.8,-0.5 -13.25,-15.9 q -0.45,-0.5 -0.4,-1.15 0.05,-0.7 0.55,-1.1 l 6.5,-5.6 q 0.55,-0.45 1.2,-0.4 0.65,0.05 1.1,0.55 l 5.5,6.6"
+     id="path4031" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 314.85,464.85 q 1.7,-1.65 3.35,0 l 6,6 5.65,-5.6 q 1.7,-1.7 3.35,0 l 1.75,1.65 q 1.7,1.75 0,3.4 l -5.65,5.6 5.9,5.85 q 1.65,1.7 0,3.35 l -1.7,1.7 q -1.75,1.7 -3.4,0.05 l -5.9,-5.85 -6.25,6.2 q -1.65,1.65 -3.35,-0.05 l -1.75,-1.7 q -1.65,-1.65 0,-3.3 l 6.25,-6.25 -6,-5.95 q -1.65,-1.65 0.05,-3.4 l 1.7,-1.7"
+     id="path4029" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 336,410 -13.45,16 -9.55,-11.35 4.7,-4 4.85,5.7 8.75,-10.35 4.7,4"
+     id="path4027" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 579.35,538.8 q 2.15,-2.1 4.25,0 l 7.65,7.65 7.2,-7.15 q 2.15,-2.2 4.3,0 l 2.2,2.1 q 2.2,2.25 0,4.35 l -7.2,7.1 7.55,7.5 q 2.1,2.15 0,4.25 l -2.2,2.15 -4.3,0.1 -7.55,-7.5 -7.95,7.95 -4.3,-0.1 -2.2,-2.15 q -2.1,-2.1 0,-4.2 l 7.95,-8 -7.65,-7.55 q -2.1,-2.1 0.05,-4.35 l 2.2,-2.15"
+     id="path4025" />
+  <path
+     style="fill:#ffffff;stroke:none"
+     d="m 411.45,535.2 q 0.55,-0.4 0.9,-0.2 l 18.1,8.25 0.5,0.55 -0.15,0.7 -0.05,0 -11.9,15 q -0.35,0.4 -0.9,0.25 -0.65,-0.1 -0.65,-0.65 l -0.85,-5.65 q -6.15,2.4 -9.8,7.75 -2.65,3.6 -3.45,8.05 l -0.4,0.55 -0.65,0.1 -10.4,-2.35 q -0.9,-0.15 -0.7,-0.95 1.4,-6.65 5.35,-12.3 6.4,-9.15 16.95,-12.7 l -2.15,-5.45 q -0.1,-0.5 0.25,-0.95"
+     id="path495" />
+  <path
+     style="fill:#ffffff;fill-opacity:0.30196078;stroke:none"
+     inkscape:connector-curvature="0"
+     id="path497"
+     d="m 213.05,408.05 0,10.85 0,0.1 q -0.2,1.95 -1.4,3.2 l -0.05,0 q -1.3,1.4 -3,1.55 l -0.05,0 q -1.8,0.15 -3,-1.1 -1.15,-1.15 -1,-3.05 0.2,-1.7 1.45,-3 1.15,-1.2 2.6,-1.4 l -0.05,0 1.25,-0.1 0,-3.35 -7.25,0 0,11.25 q 0,2.05 -1.5,3.4 l -0.05,0.1 q -1.25,1.25 -2.9,1.45 l -0.05,0 q -1.85,0.15 -3,-1.05 -1.2,-1.15 -1,-3 0.15,-1.75 1.4,-3.05 l 0.05,-0.05 q 1.15,-1.15 2.55,-1.4 l 0.05,0 1.25,-0.05 0,-11.3 q 0,-2.05 2.05,-2.05 l 9.55,0 q 2.1,0 2.1,2.05" />
+  <g
+     inkscape:label="#g4017"
+     id="0joystick_down"
+     transform="translate(-175.57949,-208.46581)">
+    <path
+       style="fill:#1a1a1a;stroke:none;fill-opacity:1"
+       d="m 657,269.65 0,37.3 q 0,1 -1,1 l -51,0 q -1,0 -1,-1 l 0,-37.3 26.5,-26.5 26.5,26.5"
+       id="path3366"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:url(#linearGradient3374);stroke:none"
+       inkscape:connector-curvature="0"
+       id="path3372"
+       d="m 657,269.65 -26.5,-26.5 -26.5,26.5 0,37.3 q 0,1 1,1 l 51,0 q 1,0 1,-1 l 0,-37.3 M 630.5,237.5 661,268 l 0,38.95 q 0,5 -5,5 l -51,0 q -5,0 -5,-5 l 0,-38.95 30.5,-30.5" />
+  </g>
+</svg>
diff --git a/lib/gamnit/examples/asteronits/art/icon.svg b/lib/gamnit/examples/asteronits/art/icon.svg
new file mode 100644 (file)
index 0000000..d8b9998
--- /dev/null
@@ -0,0 +1,1886 @@
+<?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"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   width="256"
+   height="256"
+   sodipodi:docname="icon.svg">
+  <metadata
+     id="metadata2758">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1279"
+     inkscape:window-height="1379"
+     id="namedview2756"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="3.5881183"
+     inkscape:cx="110.75147"
+     inkscape:cy="143.97094"
+     inkscape:window-x="2560"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="g3288"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs4">
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       id="gradient0">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         id="stop7" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       id="gradient1">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         stop-opacity="0"
+         id="stop12" />
+      <stop
+         offset="1"
+         stop-color="#71C937"
+         id="stop14" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       id="linearGradient16">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         id="stop18" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop20" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       id="linearGradient22">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         stop-opacity="0"
+         id="stop24" />
+      <stop
+         offset="1"
+         stop-color="#71C937"
+         id="stop26" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       id="linearGradient28">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         stop-opacity="0"
+         id="stop30" />
+      <stop
+         offset="1"
+         stop-color="#71C937"
+         id="stop32" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       id="linearGradient34">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         id="stop36" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop38" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       id="linearGradient40">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         id="stop42" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop44" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       id="linearGradient46">
+      <stop
+         offset="0"
+         stop-color="#71C937"
+         stop-opacity="0"
+         id="stop48" />
+      <stop
+         offset="1"
+         stop-color="#71C937"
+         id="stop50" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       id="gradient2">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         stop-opacity="0"
+         id="stop53" />
+      <stop
+         offset="1"
+         stop-color="#AC3939"
+         id="stop55" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       id="gradient3">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         id="stop58" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop60" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       id="linearGradient62">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         stop-opacity="0"
+         id="stop64" />
+      <stop
+         offset="1"
+         stop-color="#AC3939"
+         id="stop66" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       id="linearGradient68">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         id="stop70" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop72" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       id="linearGradient74">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         stop-opacity="0"
+         id="stop76" />
+      <stop
+         offset="1"
+         stop-color="#AC3939"
+         id="stop78" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       id="linearGradient80">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         id="stop82" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop84" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       id="linearGradient86">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         stop-opacity="0"
+         id="stop88" />
+      <stop
+         offset="1"
+         stop-color="#AC3939"
+         id="stop90" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       id="linearGradient92">
+      <stop
+         offset="0"
+         stop-color="#AC3939"
+         id="stop94" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop96" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       id="gradient4">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         id="stop99" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop101" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       id="gradient5">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         stop-opacity="0"
+         id="stop104" />
+      <stop
+         offset="1"
+         stop-color="#36BBF5"
+         id="stop106" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       id="linearGradient108">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         id="stop110" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop112" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       id="linearGradient114">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         stop-opacity="0"
+         id="stop116" />
+      <stop
+         offset="1"
+         stop-color="#36BBF5"
+         id="stop118" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       id="linearGradient120">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         id="stop122" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop124" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       id="linearGradient126">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         stop-opacity="0"
+         id="stop128" />
+      <stop
+         offset="1"
+         stop-color="#36BBF5"
+         id="stop130" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       id="linearGradient132">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         stop-opacity="0"
+         id="stop134" />
+      <stop
+         offset="1"
+         stop-color="#36BBF5"
+         id="stop136" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       id="linearGradient138">
+      <stop
+         offset="0"
+         stop-color="#36BBF5"
+         id="stop140" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         id="stop142" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.07275391,0.07202148,0,281.45,713.55)"
+       id="gradient6">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0.10196078431372549"
+         id="stop145" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop147" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.07159424,-0.07296753,0,446.05,732.3)"
+       id="gradient7">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop150" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.10196078431372549"
+         id="stop152" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.07254028,0.07202148,0,446,713.85)"
+       id="gradient8">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0.10196078431372549"
+         id="stop155" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop157" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.06896973,0.06896973,0,573.45,715.45)"
+       id="gradient9">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop160" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.10196078431372549"
+         id="stop162" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,746.2,1078.9)"
+       id="gradient10">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop165" />
+      <stop
+         offset="0.34901960784313724"
+         stop-color="#FACC08"
+         stop-opacity="0.08235294117647059"
+         id="stop167" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop169" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,718.2,1078.9)"
+       id="gradient11">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop172" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop174" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,806,1078.9)"
+       id="gradient12">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop177" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop179" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.00708008,-0.00698853,0,806,1089.1)"
+       id="gradient13">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop182" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop184" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,835,1078.9)"
+       id="gradient14">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop187" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop189" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.01573181,-0.00698853,0,835,1082.2)"
+       id="gradient15">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop192" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop194" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02618408,0.02441406,0,946.85,1076.2)"
+       id="gradient16">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop197" />
+      <stop
+         offset="0.34901960784313724"
+         stop-color="#FACC08"
+         stop-opacity="0.08235294117647059"
+         id="stop199" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop201" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02557373,0.02441406,0,923.85,1076.2)"
+       id="gradient17">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop204" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop206" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02160645,-0.02062988,0,776.2,1080.55)"
+       id="gradient18">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop209" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop211" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop213" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02441406,-0.02441406,0,971.05,1075)"
+       id="gradient19">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop216" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop218" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop220" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02105713,-0.02264404,0,863,1078.9)"
+       id="gradient20">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop223" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop225" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop227" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.00708008,-0.00698853,0,863,1089.1)"
+       id="gradient21">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop230" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop232" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02105713,-0.02264404,0,890,1078.9)"
+       id="gradient22">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop235" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop237" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop239" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.01573181,-0.00698853,0,890,1082.2)"
+       id="gradient23">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop242" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop244" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,746.2,1133.5)"
+       id="gradient24">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop247" />
+      <stop
+         offset="0.34901960784313724"
+         stop-color="#FACC08"
+         stop-opacity="0.08235294117647059"
+         id="stop249" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop251" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,718.2,1133.5)"
+       id="gradient25">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop254" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop256" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,806,1133.5)"
+       id="gradient26">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop259" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop261" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.00708008,-0.00698853,0,806,1123.3)"
+       id="gradient27">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop264" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop266" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,835,1133.5)"
+       id="gradient28">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop269" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop271" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.01573181,-0.00698853,0,835,1130.2)"
+       id="gradient29">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop274" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop276" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02618408,0.02441406,0,946.85,1136.2)"
+       id="gradient30">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop279" />
+      <stop
+         offset="0.34901960784313724"
+         stop-color="#FACC08"
+         stop-opacity="0.08235294117647059"
+         id="stop281" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop283" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,0.02557373,0.02441406,0,923.85,1136.2)"
+       id="gradient31">
+      <stop
+         offset="0"
+         stop-color="#99FFFF"
+         stop-opacity="0"
+         id="stop286" />
+      <stop
+         offset="1"
+         stop-color="#6AB7EA"
+         id="stop288" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02160645,-0.02062988,0,776.2,1131.85)"
+       id="gradient32">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop291" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop293" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop295" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02441406,-0.02441406,0,971.05,1137.4)"
+       id="gradient33">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop298" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop300" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop302" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02105713,-0.02264404,0,863,1133.5)"
+       id="gradient34">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop305" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop307" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop309" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.00708008,-0.00698853,0,863,1123.3)"
+       id="gradient35">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop312" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop314" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.02105713,-0.02264404,0,890,1133.5)"
+       id="gradient36">
+      <stop
+         offset="0"
+         stop-color="#FF7E00"
+         stop-opacity="0.5019607843137255"
+         id="stop317" />
+      <stop
+         offset="0.3568627450980392"
+         stop-color="#FFCC00"
+         stop-opacity="0.30196078431372547"
+         id="stop319" />
+      <stop
+         offset="1"
+         stop-color="#FFCC00"
+         stop-opacity="0"
+         id="stop321" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       x1="-819.20001"
+       x2="819.20001"
+       spreadMethod="pad"
+       gradientTransform="matrix(0,-0.01573181,-0.00698853,0,890,1130.2)"
+       id="gradient37">
+      <stop
+         offset="0"
+         stop-color="#FFFFFF"
+         stop-opacity="0"
+         id="stop324" />
+      <stop
+         offset="1"
+         stop-color="#FFFFFF"
+         stop-opacity="0.30196078431372547"
+         id="stop326" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient5735"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient5737"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient5739"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient5741"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient5743"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient5745"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient5747"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient5749"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient5751"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient5753"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient5755"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient5757"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient5759"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient5761"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient5763"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient5765"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient5767"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient5769"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient5771"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient5773"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient5775"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient5777"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient5779"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient5781"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient37"
+       id="linearGradient5874"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.01573181,-0.00698853,0,890,1130.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient36"
+       id="linearGradient5877"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02105713,-0.02264404,0,890,1133.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient35"
+       id="linearGradient5880"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.00708008,-0.00698853,0,863,1123.3)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient34"
+       id="linearGradient5883"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02105713,-0.02264404,0,863,1133.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient33"
+       id="linearGradient5886"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02441406,-0.02441406,0,971.05,1137.4)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient32"
+       id="linearGradient5889"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02160645,-0.02062988,0,776.2,1131.85)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient31"
+       id="linearGradient5892"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02557373,0.02441406,0,923.85,1136.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient30"
+       id="linearGradient5895"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02618408,0.02441406,0,946.85,1136.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient29"
+       id="linearGradient5898"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.01573181,-0.00698853,0,835,1130.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient28"
+       id="linearGradient5901"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,835,1133.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient27"
+       id="linearGradient5904"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.00708008,-0.00698853,0,806,1123.3)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient26"
+       id="linearGradient5907"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,806,1133.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient25"
+       id="linearGradient5910"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,718.2,1133.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient24"
+       id="linearGradient5913"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02105713,0.02264404,0,746.2,1133.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient23"
+       id="linearGradient5916"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.01573181,-0.00698853,0,890,1082.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient22"
+       id="linearGradient5919"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02105713,-0.02264404,0,890,1078.9)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient21"
+       id="linearGradient5922"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.00708008,-0.00698853,0,863,1089.1)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient20"
+       id="linearGradient5925"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02105713,-0.02264404,0,863,1078.9)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient19"
+       id="linearGradient5928"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02441406,-0.02441406,0,971.05,1075)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient18"
+       id="linearGradient5931"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.02160645,-0.02062988,0,776.2,1080.55)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient17"
+       id="linearGradient5934"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02557373,0.02441406,0,923.85,1076.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient16"
+       id="linearGradient5937"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02618408,0.02441406,0,946.85,1076.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient15"
+       id="linearGradient5940"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.01573181,-0.00698853,0,835,1082.2)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient14"
+       id="linearGradient5943"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,835,1078.9)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient13"
+       id="linearGradient5946"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.00708008,-0.00698853,0,806,1089.1)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient12"
+       id="linearGradient5949"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,806,1078.9)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient11"
+       id="linearGradient5952"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,718.2,1078.9)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient10"
+       id="linearGradient5955"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02105713,0.02264404,0,746.2,1078.9)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient9"
+       id="linearGradient6682"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.06896973,0.06896973,0,573.45,715.45)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient8"
+       id="linearGradient6687"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.07254028,0.07202148,0,446,713.85)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient7"
+       id="linearGradient6690"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,0.07159424,-0.07296753,0,446.05,732.3)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient6"
+       id="linearGradient6693"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.07275391,0.07202148,0,281.45,713.55)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient6752"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient6755"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient6758"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient6761"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient6764"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient6767"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient5"
+       id="linearGradient6770"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,584.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient4"
+       id="linearGradient6773"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,590.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient6776"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient6779"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient6782"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient6785"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient6788"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient6791"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient3"
+       id="linearGradient6794"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,520.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient2"
+       id="linearGradient6797"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,514.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient6800"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient6803"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient6806"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient6809"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient6812"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient6815"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient1"
+       id="linearGradient6862"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.02746582,0.03479004,0,258,444.75)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#gradient0"
+       id="linearGradient6865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.03112793,0.03112793,0,258.45,450.5)"
+       spreadMethod="pad"
+       x1="-819.20001"
+       x2="819.20001" />
+  </defs>
+  <path
+     d="m 115.86248,91.076531 q -0.824,1.618075 -2.54436,2.498232 L 53.838269,119.29335 50.734994,119.70568 47.994745,118.344 1.7790391,76.233275 0.36804822,74.096233 6.4039997e-6,71.679733 3.7798445,33.638828 4.5944804,31.464345 6.2006882,29.636676 49.418719,0.59035426 51.86079,-0.20372563 q 1.338619,-0.21895308 2.460792,0.31873353 l 45.969168,17.7242661 2.21877,1.501411 1.22012,2.467644 12.72852,65.7551 q 0.35868,1.860094 -0.59568,3.513102 M 52.440933,5.0902442 9.222903,34.136566 5.4430649,72.177472 51.658771,114.2882 111.13862,88.56961 98.410098,22.81451 52.440933,5.0902442"
+     id="path7132"
+     inkscape:connector-curvature="0"
+     style="fill:#3b2b21;stroke:none;fill-opacity:1" />
+  <path
+     d="M 79.825067,76.000749 52.226193,79.902629 29.02474,53.283199 55.516309,32.211936 84.047828,44.827598 79.825067,76.000749"
+     id="path7134"
+     inkscape:connector-curvature="0"
+     style="fill:#997055;stroke:none" />
+  <path
+     d="M 79.825067,76.000749 84.047828,44.827598 55.516309,32.211936 29.02474,53.283199 52.226193,79.902629 79.825067,76.000749 M 52.440933,5.0902442 98.410098,22.81451 111.13862,88.56961 51.658771,114.2882 5.4430649,72.177472 9.222903,34.136566 52.440933,5.0902442"
+     id="path7136"
+     inkscape:connector-curvature="0"
+     style="fill:#684c3a;stroke:none;fill-opacity:1" />
+  <path
+     d="m 255.89705,184.75917 -2.04667,2.10094 -47.18339,27.46635 q -1.59122,1.03155 -3.54009,0.72174 l -3.18602,-1.50556 -50.76717,-48.74672 -1.57267,-2.67631 0.0471,-2.9897 11.06853,-38.20294 q 0.5661,-1.76541 1.87891,-2.84122 l 38.35634,-30.296843 q 1.45201,-1.053679 3.02753,-1.088662 1.61978,-0.313394 3.06252,0.486855 l 48.15435,24.78201 2.24014,2.0688 q 0.91448,1.42989 0.81025,2.98328 l 0.37134,64.99814 -0.72101,2.73984 m -52.02416,24.69868 47.18338,-27.46635 -0.37133,-64.99814 -48.15436,-24.782016 -38.35634,30.296846 -11.06853,38.20294 50.76718,48.74672"
+     id="path7140"
+     inkscape:connector-curvature="0"
+     style="fill:#3b2b21;stroke:none;fill-opacity:1" />
+  <path
+     d="m 203.87289,209.45785 -50.76718,-48.74672 11.06853,-38.20294 38.35634,-30.296846 48.15436,24.782016 0.37133,64.99814 -47.18338,27.46635 m 0.0285,-27.1129 22.14432,-13.60646 2.16296,-36.05059 -27.14503,-4.31531 -15.04127,18.30373 17.87902,35.66863"
+     id="path7142"
+     inkscape:connector-curvature="0"
+     style="fill:#684c3a;stroke:none;fill-opacity:1" />
+  <path
+     d="m 203.90139,182.34495 -17.87902,-35.66863 15.04127,-18.30373 27.14503,4.31531 -2.16296,36.05059 -22.14432,13.60646"
+     id="path7144"
+     inkscape:connector-curvature="0"
+     style="fill:#997055;stroke:none" />
+  <path
+     d="m 178.01071,87.363672 -3.13924,-1.559947 -31.76691,-28.9453 -1.61643,-2.448202 -0.42163,-2.768349 2.59811,-26.147862 0.93325,-2.491093 1.84008,-2.093783 29.70642,-19.96532969 2.79764,-0.90970019 q 1.53353,-0.25083327 2.81909,0.36514205 L 213.35854,12.58223 q 1.58426,0.535938 2.54183,1.720021 l 1.39777,2.82694 8.7491,45.197538 q 0.41091,2.130928 -0.68242,4.024619 -0.94397,1.853672 -2.91482,2.861982 l -40.88417,17.677971 -3.55512,0.472371 m 1.05828,-6.206288 40.88417,-17.677971 -8.7491,-45.197538 -31.59744,-12.182982 -29.70642,19.96533 -2.59812,26.147861 31.76691,28.9453"
+     id="path7148"
+     inkscape:connector-curvature="0"
+     style="fill:#3b2b21;stroke:none;fill-opacity:1" />
+  <path
+     d="m 179.06899,81.157384 -31.76691,-28.9453 2.59812,-26.147861 29.70642,-19.96533 31.59744,12.182982 8.7491,45.197538 -40.88417,17.677971 m 19.36043,-26.317325 2.90256,-21.427231 -19.61147,-8.671522 -18.20929,14.483579 15.94779,18.297177 18.97041,-2.682003"
+     id="path7150"
+     inkscape:connector-curvature="0"
+     style="fill:#684c3a;stroke:none;fill-opacity:1" />
+  <path
+     d="m 198.42942,54.840059 -18.97041,2.682003 -15.94779,-18.297177 18.20929,-14.483579 19.61147,8.671522 -2.90256,21.427231"
+     id="path7152"
+     inkscape:connector-curvature="0"
+     style="fill:#997055;stroke:none" />
+  <g
+     id="g3288"
+     transform="matrix(1.3739344,0.66485688,-0.66881519,1.3658029,-253.5313,-289.60898)">
+    <path
+       style="fill:#8d8d8d;stroke:none;fill-opacity:1"
+       d="m 336.56847,141.26372 c -2.76121,4.18362 -2.59131,8.46951 -8.826,12.54256 -2.80957,4.1978 -10.60099,7.6334 -10.3615,12.30119 0.0589,7.45626 9.72606,5.74491 6.90218,0.11884 4.66062,-6.61722 12.94902,-11.97255 17.87907,-18.86884 0.95438,-3.23321 -2.47073,-5.29512 -4.03125,-7.59375 -0.52083,0.5 -1.04167,1 -1.5625,1.5 z m 23.65625,13.90625 c -5.61413,1.4639 -3.8194,9.63378 -6.13392,13.76525 -1.21488,5.94948 -2.76241,12.4171 -6.70983,14.266 -3.2545,5.92346 8.58753,5.70584 8.75308,1.56381 2.03022,-7.76086 4.06045,-15.52171 6.09067,-23.28256 5.02315,1.67273 5.54603,-8.44276 -0.9375,-6.3125 -0.34705,-0.0507 -0.71536,-0.0507 -1.0625,0 z m -49.53125,40.8125 c -3.75245,4.64539 -7.89936,9.21409 -14.6802,6.46554 -5.74719,1.26397 -9.91048,-6.61927 -12.8823,-0.24679 -0.82992,6.83334 8.27968,5.58957 12.64299,6.2377 5.21524,0.5377 11.85395,2.80327 14.66461,-3.48275 3.14983,-5.6194 11.85808,2.96299 14.18745,5.19333 -1.95538,4.3668 -3.84826,9.67059 0.76941,13.14897 4.11673,3.77316 5.65734,12.20918 11.86054,12.77775 4.52016,-0.78459 4.50294,-3.85176 1.90142,-7.38787 -4.51792,1.61623 -6.99032,-8.16199 -10.65142,-11.26838 0.33771,-4.64712 6.79899,-11.10366 0.33065,-12.87535 -5.76565,-3.33462 -11.53889,-6.65616 -17.2994,-9.99965 l -0.5062,0.86242 -0.33755,0.57508 z"
+       id="path2074"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#354528;stroke:none;fill-opacity:1"
+       d="m 330.34972,133.63872 c -7.30372,3.8238 -12.9762,10.69823 -19.76036,15.48903 -9.56535,8.28107 -20.04674,15.70251 -29.08339,24.47972 -0.19221,10.18768 1.31536,20.44469 1.78125,30.65625 8.61831,1.61644 5.04599,-6.99835 5.09991,-12.53926 0.29741,-5.32756 -2.13337,-11.84287 -0.13116,-16.42949 14.10657,-11.66007 28.25135,-23.27368 42.40625,-34.875 2.42889,5.51679 8.67196,8.2741 9.40632,1.65164 -3.14642,-2.58776 -5.13035,-8.48059 -9.71882,-8.43289 z m 31.65625,23.5625 c -5.1028,7.65417 10.04382,2.0127 7.10357,8.61593 -2.90363,17.47231 -5.76342,34.95538 -8.72857,52.41532 -8.27873,4.05719 -16.57833,8.07213 -24.84375,12.15625 0.99451,8.96763 7.45099,2.61793 12.3998,0.61338 5.56495,-3.48462 12.95244,-4.93575 17.6627,-9.39463 3.92892,-20.1224 7.17801,-40.64482 10.25,-60.9375 -1.60132,-5.32756 -9.1999,-3.61689 -13.375,-5.28125 l -0.25038,0.96815 -0.21837,0.84435 z"
+       id="path2076"
+       inkscape:connector-curvature="0" />
+    <path
+       id="path2070"
+       d="m 329.13123,209.20341 q 0.35311,0.0884 0.73792,0.0219 l 6.73993,-1.07391 -3.54522,12.04051 4.85535,11.29028 -1.33613,0.61423 -10.293,-14.37198 2.84115,-8.52103 m 19.83179,-19.14967 0.30635,-4.73061 4.6641,-0.0785 6.80792,-26.09166 2.70167,0.52058 -7.5852,29.33794 -6.89484,1.04221 m -27.62297,-20.85561 -3.94365,2.63061 -2.50154,-6.46721 21.6148,-21.23794 1.80167,2.07942 -19.19208,18.94166 2.2208,4.05346 m -13.43971,22.37827 2.48323,6.39891 q 0.13481,0.3665 0.38792,0.6281 l -5.95885,6.72103 -17.593,-1.72802 -0.13613,-1.46423 12.20535,-1.44028 8.61148,-9.11551 m 21.66127,15.68157 -17.3205,-10 12.4,-21.47743 q -0.6567,1.23743 -0.29068,2.60346 0.35933,1.47763 1.70167,2.25263 l 10.95522,6.325 q 1.34234,0.775 2.80167,0.34737 1.43432,-0.38433 2.20262,-1.61507 l -12.45,21.56404"
+       inkscape:connector-curvature="0"
+       style="fill:#eeeeee;stroke:none" />
+    <path
+       id="path2072"
+       d="m 329.56161,207.25797 10.0166,-1.54927 7.175,-12.42746 1.00972,-16.44887 -18.31644,-10.575 -13.69698,9.12387 -7.175,12.42746 3.6666,9.44927 -1,1.73205 -0.46962,-0.38661 q -0.25311,-0.2616 -0.38792,-0.6281 l -2.48323,-6.39891 -1.18337,-3.05036 -0.12631,-0.88121 0.25179,-0.83613 7.175,-12.42746 0.62321,-0.67942 2.75574,-1.87308 3.94365,-2.63061 1.67942,-1.10884 5.31817,-3.51135 1.04952,-0.31782 1.05933,0.26519 18.31644,10.575 q 0.47631,0.275 0.75932,0.78481 l 0.24952,1.06782 -0.38182,6.36135 -0.12058,2.00884 -0.30635,4.73061 -0.20096,3.34808 -0.27679,0.87942 -7.175,12.42746 -0.59821,0.63613 -0.82631,0.33121 -3.27667,0.47536 -6.73993,1.07391 q -0.38481,0.0665 -0.73792,-0.0219 l -0.56962,-0.21339 1,-1.73205"
+       inkscape:connector-curvature="0"
+       style="fill:#6d6d6d;stroke:none;fill-opacity:1" />
+    <path
+       id="path2078"
+       d="m 287.07861,201.84069 -1.82878,-26.63247 1.69952,-1.44365 12.83977,14.86086 12.89712,-13.33845 -6.60247,-17.2642 24.83609,-20.41736 5.5898,6.51817 -21.6148,21.23794 2.50154,6.46721 -2.75574,1.87308 -0.62321,0.67942 -7.175,12.42746 -0.25179,0.83613 0.12631,0.88121 1.18337,3.05036 -8.61148,9.11551 -12.20535,1.44028 -0.005,-0.2915 m 50.8406,29.6415 -4.85535,-11.29028 3.54522,-12.04051 3.27667,-0.47536 0.82631,-0.33121 0.59821,-0.63613 7.175,-12.42746 0.27679,-0.87942 0.20096,-3.34808 6.89484,-1.04221 7.5852,-29.33794 8.4398,1.58183 -5.26391,31.71736 -18.25247,2.9142 -5.10288,17.83845 19.28977,3.68914 -0.40048,2.19365 -23.97878,11.73247 -0.2549,0.1415"
+       inkscape:connector-curvature="0"
+       style="fill:#7c9865;stroke:none" />
+    <path
+       id="path2080"
+       d="m 312.24111,197.25797 -3.6666,-9.44927 7.175,-12.42746 13.69698,-9.12387 18.31644,10.575 -1.00972,16.44887 -7.175,12.42746 -10.0166,1.54927 12.45,-21.56404 0.05,-0.0866 0.05,-0.0866 q 0.5067,-0.97763 0.41209,-2.01375 l -0.11471,-0.70131 q -0.35933,-1.47763 -1.70167,-2.25263 l -10.95522,-6.325 q -1.34234,-0.775 -2.80167,-0.34737 l -0.63971,0.20801 q -0.92631,0.50442 -1.51961,1.43205 l -0.05,0.0866 -0.1,0.17321 -12.4,21.47743"
+       inkscape:connector-curvature="0"
+       style="fill:#dbdbdb;stroke:none" />
+    <path
+       id="path2082"
+       d="m 362.55337,217.41457 -19.28977,-3.68914 5.10288,-17.83845 18.25247,-2.9142 -4.06558,24.44179 m -75.60402,-43.65 19.13442,-15.74179 6.60247,17.2642 -12.89712,13.33845 -12.83977,-14.86086"
+       inkscape:connector-curvature="0"
+       style="fill:#536941;stroke:none;fill-opacity:1" />
+    <path
+       id="path2084"
+       d="m 324.64111,175.78054 0.1,-0.17321 0.05,-0.0866 q 0.5933,-0.92763 1.51961,-1.43205 l 0.63971,-0.20801 q 1.45933,-0.42763 2.80167,0.34737 l 10.95522,6.325 q 1.34234,0.775 1.70167,2.25263 l 0.11471,0.70131 q 0.0946,1.03612 -0.41209,2.01375 l -0.05,0.0866 -0.05,0.0866 q -0.7683,1.23074 -2.20262,1.61507 -1.45933,0.42763 -2.80167,-0.34737 l -10.95522,-6.325 q -1.34234,-0.775 -1.70167,-2.25263 -0.36602,-1.36603 0.29068,-2.60346"
+       inkscape:connector-curvature="0"
+       style="fill:#4a3c55;stroke:none" />
+  </g>
+</svg>
diff --git a/lib/gamnit/examples/asteronits/art/sheet.xml b/lib/gamnit/examples/asteronits/art/sheet.xml
new file mode 100644 (file)
index 0000000..71e1ccf
--- /dev/null
@@ -0,0 +1,296 @@
+<TextureAtlas imagePath="sheet.png">
+       <SubTexture name="beam0.png" x="143" y="377" width="43" height="31"/>
+       <SubTexture name="beam1.png" x="327" y="644" width="40" height="20"/>
+       <SubTexture name="beam2.png" x="262" y="907" width="38" height="31"/>
+       <SubTexture name="beam3.png" x="396" y="384" width="29" height="29"/>
+       <SubTexture name="beam4.png" x="177" y="496" width="41" height="17"/>
+       <SubTexture name="beam5.png" x="186" y="377" width="40" height="25"/>
+       <SubTexture name="beam6.png" x="120" y="688" width="43" height="23"/>
+       <SubTexture name="beamLong1.png" x="828" y="943" width="15" height="67"/>
+       <SubTexture name="beamLong2.png" x="307" y="309" width="25" height="64"/>
+       <SubTexture name="bold_silver.png" x="810" y="837" width="19" height="30"/>
+       <SubTexture name="bolt_bronze.png" x="810" y="467" width="19" height="30"/>
+       <SubTexture name="bolt_gold.png" x="809" y="437" width="19" height="30"/>
+       <SubTexture name="buttonBlue.png" x="0" y="78" width="222" height="39"/>
+       <SubTexture name="buttonGreen.png" x="0" y="117" width="222" height="39"/>
+       <SubTexture name="buttonRed.png" x="0" y="0" width="222" height="39"/>
+       <SubTexture name="buttonYellow.png" x="0" y="39" width="222" height="39"/>
+       <SubTexture name="cockpitBlue_0.png" x="586" y="0" width="51" height="75"/>
+       <SubTexture name="cockpitBlue_1.png" x="736" y="862" width="40" height="40"/>
+       <SubTexture name="cockpitBlue_2.png" x="684" y="67" width="42" height="56"/>
+       <SubTexture name="cockpitBlue_3.png" x="336" y="384" width="60" height="61"/>
+       <SubTexture name="cockpitBlue_4.png" x="637" y="0" width="47" height="67"/>
+       <SubTexture name="cockpitBlue_5.png" x="627" y="144" width="48" height="75"/>
+       <SubTexture name="cockpitBlue_6.png" x="684" y="0" width="42" height="67"/>
+       <SubTexture name="cockpitBlue_7.png" x="737" y="542" width="41" height="71"/>
+       <SubTexture name="cockpitGreen_0.png" x="576" y="225" width="51" height="75"/>
+       <SubTexture name="cockpitGreen_1.png" x="734" y="977" width="40" height="40"/>
+       <SubTexture name="cockpitGreen_2.png" x="696" y="659" width="42" height="56"/>
+       <SubTexture name="cockpitGreen_3.png" x="346" y="234" width="60" height="61"/>
+       <SubTexture name="cockpitGreen_4.png" x="627" y="219" width="47" height="67"/>
+       <SubTexture name="cockpitGreen_5.png" x="694" y="364" width="42" height="67"/>
+       <SubTexture name="cockpitGreen_6.png" x="737" y="471" width="41" height="71"/>
+       <SubTexture name="cockpitGreen_7.png" x="602" y="525" width="48" height="75"/>
+       <SubTexture name="cockpitRed_0.png" x="535" y="75" width="51" height="75"/>
+       <SubTexture name="cockpitRed_1.png" x="351" y="982" width="40" height="40"/>
+       <SubTexture name="cockpitRed_2.png" x="718" y="197" width="42" height="56"/>
+       <SubTexture name="cockpitRed_3.png" x="520" y="661" width="60" height="61"/>
+       <SubTexture name="cockpitRed_4.png" x="647" y="857" width="47" height="67"/>
+       <SubTexture name="cockpitRed_5.png" x="605" y="707" width="48" height="75"/>
+       <SubTexture name="cockpitRed_6.png" x="736" y="795" width="42" height="67"/>
+       <SubTexture name="cockpitRed_7.png" x="736" y="329" width="41" height="71"/>
+       <SubTexture name="cockpitYellow_0.png" x="726" y="80" width="40" height="40"/>
+       <SubTexture name="cockpitYellow_1.png" x="247" y="309" width="60" height="61"/>
+       <SubTexture name="cockpitYellow_2.png" x="637" y="67" width="47" height="67"/>
+       <SubTexture name="cockpitYellow_3.png" x="607" y="782" width="48" height="75"/>
+       <SubTexture name="cockpitYellow_4.png" x="696" y="262" width="42" height="67"/>
+       <SubTexture name="cockpitYellow_5.png" x="736" y="400" width="41" height="71"/>
+       <SubTexture name="cockpitYellow_6.png" x="734" y="921" width="42" height="56"/>
+       <SubTexture name="cockpitYellow_7.png" x="600" y="375" width="51" height="75"/>
+       <SubTexture name="cursor.png" x="797" y="173" width="30" height="33"/>
+       <SubTexture name="enemyBlack1.png" x="423" y="728" width="93" height="84"/>
+       <SubTexture name="enemyBlack2.png" x="120" y="604" width="104" height="84"/>
+       <SubTexture name="enemyBlack3.png" x="144" y="156" width="103" height="84"/>
+       <SubTexture name="enemyBlack4.png" x="518" y="325" width="82" height="84"/>
+       <SubTexture name="enemyBlack5.png" x="346" y="150" width="97" height="84"/>
+       <SubTexture name="enemyBlue1.png" x="425" y="468" width="93" height="84"/>
+       <SubTexture name="enemyBlue2.png" x="143" y="293" width="104" height="84"/>
+       <SubTexture name="enemyBlue3.png" x="222" y="0" width="103" height="84"/>
+       <SubTexture name="enemyBlue4.png" x="518" y="409" width="82" height="84"/>
+       <SubTexture name="enemyBlue5.png" x="421" y="814" width="97" height="84"/>
+       <SubTexture name="enemyGreen1.png" x="425" y="552" width="93" height="84"/>
+       <SubTexture name="enemyGreen2.png" x="133" y="412" width="104" height="84"/>
+       <SubTexture name="enemyGreen3.png" x="224" y="496" width="103" height="84"/>
+       <SubTexture name="enemyGreen4.png" x="518" y="493" width="82" height="84"/>
+       <SubTexture name="enemyGreen5.png" x="408" y="907" width="97" height="84"/>
+       <SubTexture name="enemyRed1.png" x="425" y="384" width="93" height="84"/>
+       <SubTexture name="enemyRed2.png" x="120" y="520" width="104" height="84"/>
+       <SubTexture name="enemyRed3.png" x="224" y="580" width="103" height="84"/>
+       <SubTexture name="enemyRed4.png" x="520" y="577" width="82" height="84"/>
+       <SubTexture name="enemyRed5.png" x="423" y="644" width="97" height="84"/>
+       <SubTexture name="engine1.png" x="224" y="907" width="38" height="23"/>
+       <SubTexture name="engine2.png" x="163" y="688" width="42" height="28"/>
+       <SubTexture name="engine3.png" x="644" y="1002" width="27" height="22"/>
+       <SubTexture name="engine4.png" x="144" y="240" width="49" height="45"/>
+       <SubTexture name="engine5.png" x="133" y="496" width="44" height="24"/>
+       <SubTexture name="fire00.png" x="827" y="125" width="16" height="40"/>
+       <SubTexture name="fire01.png" x="828" y="206" width="14" height="31"/>
+       <SubTexture name="fire02.png" x="827" y="663" width="14" height="32"/>
+       <SubTexture name="fire03.png" x="829" y="437" width="14" height="34"/>
+       <SubTexture name="fire04.png" x="831" y="0" width="14" height="31"/>
+       <SubTexture name="fire05.png" x="834" y="299" width="14" height="31"/>
+       <SubTexture name="fire06.png" x="835" y="502" width="14" height="31"/>
+       <SubTexture name="fire07.png" x="835" y="330" width="14" height="31"/>
+       <SubTexture name="fire08.png" x="827" y="867" width="16" height="40"/>
+       <SubTexture name="fire09.png" x="811" y="663" width="16" height="40"/>
+       <SubTexture name="fire10.png" x="812" y="206" width="16" height="40"/>
+       <SubTexture name="fire11.png" x="835" y="395" width="14" height="31"/>
+       <SubTexture name="fire12.png" x="835" y="533" width="14" height="32"/>
+       <SubTexture name="fire13.png" x="835" y="361" width="14" height="34"/>
+       <SubTexture name="fire14.png" x="831" y="31" width="14" height="31"/>
+       <SubTexture name="fire15.png" x="829" y="471" width="14" height="31"/>
+       <SubTexture name="fire16.png" x="828" y="268" width="14" height="31"/>
+       <SubTexture name="fire17.png" x="828" y="237" width="14" height="31"/>
+       <SubTexture name="fire18.png" x="827" y="165" width="16" height="41"/>
+       <SubTexture name="fire19.png" x="812" y="246" width="16" height="41"/>
+       <SubTexture name="gun00.png" x="827" y="907" width="16" height="36"/>
+       <SubTexture name="gun01.png" x="810" y="867" width="17" height="33"/>
+       <SubTexture name="gun02.png" x="829" y="611" width="14" height="36"/>
+       <SubTexture name="gun03.png" x="809" y="796" width="20" height="41"/>
+       <SubTexture name="gun04.png" x="827" y="84" width="16" height="41"/>
+       <SubTexture name="gun05.png" x="423" y="0" width="21" height="41"/>
+       <SubTexture name="gun06.png" x="810" y="900" width="17" height="38"/>
+       <SubTexture name="gun07.png" x="829" y="796" width="14" height="41"/>
+       <SubTexture name="gun08.png" x="848" y="263" width="10" height="47"/>
+       <SubTexture name="gun09.png" x="809" y="611" width="20" height="52"/>
+       <SubTexture name="gun10.png" x="808" y="961" width="20" height="52"/>
+       <SubTexture name="laserBlue01.png" x="856" y="421" width="9" height="54"/>
+       <SubTexture name="laserBlue02.png" x="841" y="647" width="13" height="37"/>
+       <SubTexture name="laserBlue03.png" x="856" y="57" width="9" height="37"/>
+       <SubTexture name="laserBlue04.png" x="835" y="565" width="13" height="37"/>
+       <SubTexture name="laserBlue05.png" x="858" y="475" width="9" height="37"/>
+       <SubTexture name="laserBlue06.png" x="835" y="752" width="13" height="37"/>
+       <SubTexture name="laserBlue07.png" x="856" y="775" width="9" height="37"/>
+       <SubTexture name="laserBlue08.png" x="596" y="961" width="48" height="46"/>
+       <SubTexture name="laserBlue09.png" x="434" y="325" width="48" height="46"/>
+       <SubTexture name="laserBlue10.png" x="740" y="724" width="37" height="37"/>
+       <SubTexture name="laserBlue11.png" x="698" y="795" width="38" height="37"/>
+       <SubTexture name="laserBlue12.png" x="835" y="695" width="13" height="57"/>
+       <SubTexture name="laserBlue13.png" x="856" y="869" width="9" height="57"/>
+       <SubTexture name="laserBlue14.png" x="842" y="206" width="13" height="57"/>
+       <SubTexture name="laserBlue15.png" x="849" y="480" width="9" height="57"/>
+       <SubTexture name="laserBlue16.png" x="843" y="62" width="13" height="54"/>
+       <SubTexture name="laserGreen01.png" x="740" y="686" width="37" height="38"/>
+       <SubTexture name="laserGreen02.png" x="843" y="116" width="13" height="57"/>
+       <SubTexture name="laserGreen03.png" x="855" y="173" width="9" height="57"/>
+       <SubTexture name="laserGreen04.png" x="848" y="565" width="13" height="37"/>
+       <SubTexture name="laserGreen05.png" x="854" y="639" width="9" height="37"/>
+       <SubTexture name="laserGreen06.png" x="845" y="0" width="13" height="57"/>
+       <SubTexture name="laserGreen07.png" x="849" y="364" width="9" height="57"/>
+       <SubTexture name="laserGreen08.png" x="848" y="738" width="13" height="37"/>
+       <SubTexture name="laserGreen09.png" x="856" y="94" width="9" height="37"/>
+       <SubTexture name="laserGreen10.png" x="843" y="426" width="13" height="54"/>
+       <SubTexture name="laserGreen11.png" x="849" y="310" width="9" height="54"/>
+       <SubTexture name="laserGreen12.png" x="843" y="602" width="13" height="37"/>
+       <SubTexture name="laserGreen13.png" x="858" y="0" width="9" height="37"/>
+       <SubTexture name="laserGreen14.png" x="193" y="240" width="48" height="46"/>
+       <SubTexture name="laserGreen15.png" x="443" y="182" width="48" height="46"/>
+       <SubTexture name="laserGreen16.png" x="760" y="192" width="37" height="37"/>
+       <SubTexture name="laserRed01.png" x="858" y="230" width="9" height="54"/>
+       <SubTexture name="laserRed02.png" x="843" y="977" width="13" height="37"/>
+       <SubTexture name="laserRed03.png" x="856" y="602" width="9" height="37"/>
+       <SubTexture name="laserRed04.png" x="843" y="940" width="13" height="37"/>
+       <SubTexture name="laserRed05.png" x="856" y="983" width="9" height="37"/>
+       <SubTexture name="laserRed06.png" x="843" y="903" width="13" height="37"/>
+       <SubTexture name="laserRed07.png" x="856" y="131" width="9" height="37"/>
+       <SubTexture name="laserRed08.png" x="580" y="661" width="48" height="46"/>
+       <SubTexture name="laserRed09.png" x="602" y="600" width="48" height="46"/>
+       <SubTexture name="laserRed10.png" x="738" y="650" width="37" height="36"/>
+       <SubTexture name="laserRed11.png" x="737" y="613" width="37" height="37"/>
+       <SubTexture name="laserRed12.png" x="843" y="846" width="13" height="57"/>
+       <SubTexture name="laserRed13.png" x="856" y="812" width="9" height="57"/>
+       <SubTexture name="laserRed14.png" x="843" y="789" width="13" height="57"/>
+       <SubTexture name="laserRed15.png" x="856" y="926" width="9" height="57"/>
+       <SubTexture name="laserRed16.png" x="848" y="684" width="13" height="54"/>
+       <SubTexture name="meteorBrown_big1.png" x="224" y="664" width="101" height="84"/>
+       <SubTexture name="meteorBrown_big2.png" x="0" y="520" width="120" height="98"/>
+       <SubTexture name="meteorBrown_big3.png" x="518" y="810" width="89" height="82"/>
+       <SubTexture name="meteorBrown_big4.png" x="327" y="452" width="98" height="96"/>
+       <SubTexture name="meteorBrown_med1.png" x="651" y="447" width="43" height="43"/>
+       <SubTexture name="meteorBrown_med3.png" x="237" y="452" width="45" height="40"/>
+       <SubTexture name="meteorBrown_small1.png" x="406" y="234" width="28" height="28"/>
+       <SubTexture name="meteorBrown_small2.png" x="778" y="587" width="29" height="26"/>
+       <SubTexture name="meteorBrown_tiny1.png" x="346" y="814" width="18" height="18"/>
+       <SubTexture name="meteorBrown_tiny2.png" x="399" y="814" width="16" height="15"/>
+       <SubTexture name="meteorGrey_big1.png" x="224" y="748" width="101" height="84"/>
+       <SubTexture name="meteorGrey_big2.png" x="0" y="618" width="120" height="98"/>
+       <SubTexture name="meteorGrey_big3.png" x="516" y="728" width="89" height="82"/>
+       <SubTexture name="meteorGrey_big4.png" x="327" y="548" width="98" height="96"/>
+       <SubTexture name="meteorGrey_med1.png" x="674" y="219" width="43" height="43"/>
+       <SubTexture name="meteorGrey_med2.png" x="282" y="452" width="45" height="40"/>
+       <SubTexture name="meteorGrey_small1.png" x="406" y="262" width="28" height="28"/>
+       <SubTexture name="meteorGrey_small2.png" x="396" y="413" width="29" height="26"/>
+       <SubTexture name="meteorGrey_tiny1.png" x="364" y="814" width="18" height="18"/>
+       <SubTexture name="meteorGrey_tiny2.png" x="602" y="646" width="16" height="15"/>
+       <SubTexture name="numeral0.png" x="367" y="644" width="19" height="19"/>
+       <SubTexture name="numeral1.png" x="205" y="688" width="19" height="19"/>
+       <SubTexture name="numeral2.png" x="406" y="290" width="19" height="19"/>
+       <SubTexture name="numeral3.png" x="580" y="707" width="19" height="19"/>
+       <SubTexture name="numeral4.png" x="386" y="644" width="19" height="19"/>
+       <SubTexture name="numeral5.png" x="628" y="646" width="19" height="19"/>
+       <SubTexture name="numeral6.png" x="671" y="1002" width="19" height="19"/>
+       <SubTexture name="numeral7.png" x="690" y="1004" width="19" height="19"/>
+       <SubTexture name="numeral8.png" x="709" y="1004" width="19" height="19"/>
+       <SubTexture name="numeral9.png" x="491" y="215" width="19" height="19"/>
+       <SubTexture name="numeralX.png" x="382" y="814" width="17" height="17"/>
+       <SubTexture name="pill_blue.png" x="674" y="262" width="22" height="21"/>
+       <SubTexture name="pill_green.png" x="573" y="989" width="22" height="21"/>
+       <SubTexture name="pill_red.png" x="222" y="108" width="22" height="21"/>
+       <SubTexture name="pill_yellow.png" x="222" y="129" width="22" height="21"/>
+       <SubTexture name="playerLife1_blue.png" x="482" y="358" width="33" height="26"/>
+       <SubTexture name="playerLife1_green.png" x="535" y="150" width="33" height="26"/>
+       <SubTexture name="playerLife1_orange.png" x="777" y="327" width="33" height="26"/>
+       <SubTexture name="playerLife1_red.png" x="775" y="301" width="33" height="26"/>
+       <SubTexture name="playerLife2_blue.png" x="465" y="991" width="37" height="26"/>
+       <SubTexture name="playerLife2_green.png" x="391" y="991" width="37" height="26"/>
+       <SubTexture name="playerLife2_orange.png" x="428" y="991" width="37" height="26"/>
+       <SubTexture name="playerLife2_red.png" x="502" y="991" width="37" height="26"/>
+       <SubTexture name="playerLife3_blue.png" x="777" y="385" width="32" height="26"/>
+       <SubTexture name="playerLife3_green.png" x="778" y="469" width="32" height="26"/>
+       <SubTexture name="playerLife3_orange.png" x="777" y="712" width="32" height="26"/>
+       <SubTexture name="playerLife3_red.png" x="777" y="443" width="32" height="26"/>
+       <SubTexture name="playerShip1_blue.png" x="211" y="941" width="99" height="75"/>
+       <SubTexture name="playerShip1_damage1.png" x="112" y="941" width="99" height="75"/>
+       <SubTexture name="playerShip1_damage2.png" x="247" y="234" width="99" height="75"/>
+       <SubTexture name="playerShip1_damage3.png" x="247" y="159" width="99" height="75"/>
+       <SubTexture name="playerShip1_green.png" x="237" y="377" width="99" height="75"/>
+       <SubTexture name="playerShip1_orange.png" x="247" y="84" width="99" height="75"/>
+       <SubTexture name="playerShip1_red.png" x="224" y="832" width="99" height="75"/>
+       <SubTexture name="playerShip2_blue.png" x="112" y="791" width="112" height="75"/>
+       <SubTexture name="playerShip2_damage1.png" x="0" y="866" width="112" height="75"/>
+       <SubTexture name="playerShip2_damage2.png" x="0" y="791" width="112" height="75"/>
+       <SubTexture name="playerShip2_damage3.png" x="0" y="716" width="112" height="75"/>
+       <SubTexture name="playerShip2_green.png" x="112" y="866" width="112" height="75"/>
+       <SubTexture name="playerShip2_orange.png" x="112" y="716" width="112" height="75"/>
+       <SubTexture name="playerShip2_red.png" x="0" y="941" width="112" height="75"/>
+       <SubTexture name="playerShip3_blue.png" x="325" y="739" width="98" height="75"/>
+       <SubTexture name="playerShip3_damage1.png" x="323" y="832" width="98" height="75"/>
+       <SubTexture name="playerShip3_damage2.png" x="310" y="907" width="98" height="75"/>
+       <SubTexture name="playerShip3_damage3.png" x="325" y="664" width="98" height="75"/>
+       <SubTexture name="playerShip3_green.png" x="346" y="75" width="98" height="75"/>
+       <SubTexture name="playerShip3_orange.png" x="336" y="309" width="98" height="75"/>
+       <SubTexture name="playerShip3_red.png" x="325" y="0" width="98" height="75"/>
+       <SubTexture name="powerupBlue.png" x="696" y="329" width="34" height="33"/>
+       <SubTexture name="powerupBlue_bolt.png" x="539" y="989" width="34" height="33"/>
+       <SubTexture name="powerupBlue_shield.png" x="777" y="679" width="34" height="33"/>
+       <SubTexture name="powerupBlue_star.png" x="776" y="895" width="34" height="33"/>
+       <SubTexture name="powerupGreen.png" x="774" y="613" width="34" height="33"/>
+       <SubTexture name="powerupGreen_bolt.png" x="766" y="80" width="34" height="33"/>
+       <SubTexture name="powerupGreen_shield.png" x="776" y="862" width="34" height="33"/>
+       <SubTexture name="powerupGreen_star.png" x="651" y="490" width="34" height="33"/>
+       <SubTexture name="powerupRed.png" x="491" y="182" width="34" height="33"/>
+       <SubTexture name="powerupRed_bolt.png" x="775" y="646" width="34" height="33"/>
+       <SubTexture name="powerupRed_shield.png" x="776" y="928" width="34" height="33"/>
+       <SubTexture name="powerupRed_star.png" x="774" y="977" width="34" height="33"/>
+       <SubTexture name="powerupYellow.png" x="774" y="761" width="34" height="33"/>
+       <SubTexture name="powerupYellow_bolt.png" x="740" y="761" width="34" height="33"/>
+       <SubTexture name="powerupYellow_shield.png" x="482" y="325" width="34" height="33"/>
+       <SubTexture name="powerupYellow_star.png" x="607" y="857" width="34" height="33"/>
+       <SubTexture name="scratch1.png" x="325" y="814" width="21" height="16"/>
+       <SubTexture name="scratch2.png" x="423" y="41" width="21" height="16"/>
+       <SubTexture name="scratch3.png" x="346" y="295" width="16" height="12"/>
+       <SubTexture name="shield1.png" x="0" y="412" width="133" height="108"/>
+       <SubTexture name="shield2.png" x="0" y="293" width="143" height="119"/>
+       <SubTexture name="shield3.png" x="0" y="156" width="144" height="137"/>
+       <SubTexture name="shield_bronze.png" x="797" y="143" width="30" height="30"/>
+       <SubTexture name="shield_gold.png" x="797" y="113" width="30" height="30"/>
+       <SubTexture name="shield_silver.png" x="778" y="824" width="30" height="30"/>
+       <SubTexture name="speed.png" x="858" y="284" width="7" height="108"/>
+       <SubTexture name="star1.png" x="628" y="681" width="25" height="24"/>
+       <SubTexture name="star2.png" x="222" y="84" width="25" height="24"/>
+       <SubTexture name="star3.png" x="576" y="300" width="24" height="24"/>
+       <SubTexture name="star_bronze.png" x="778" y="794" width="31" height="30"/>
+       <SubTexture name="star_gold.png" x="778" y="557" width="31" height="30"/>
+       <SubTexture name="star_silver.png" x="778" y="527" width="31" height="30"/>
+       <SubTexture name="things_bronze.png" x="778" y="495" width="32" height="32"/>
+       <SubTexture name="things_gold.png" x="777" y="411" width="32" height="32"/>
+       <SubTexture name="things_silver.png" x="777" y="353" width="32" height="32"/>
+       <SubTexture name="turretBase_big.png" x="310" y="982" width="41" height="41"/>
+       <SubTexture name="turretBase_small.png" x="808" y="301" width="26" height="26"/>
+       <SubTexture name="ufoBlue.png" x="444" y="91" width="91" height="91"/>
+       <SubTexture name="ufoGreen.png" x="434" y="234" width="91" height="91"/>
+       <SubTexture name="ufoRed.png" x="444" y="0" width="91" height="91"/>
+       <SubTexture name="ufoYellow.png" x="505" y="898" width="91" height="91"/>
+       <SubTexture name="wingBlue_0.png" x="647" y="924" width="45" height="78"/>
+       <SubTexture name="wingBlue_1.png" x="738" y="253" width="37" height="72"/>
+       <SubTexture name="wingBlue_2.png" x="805" y="0" width="26" height="84"/>
+       <SubTexture name="wingBlue_3.png" x="600" y="450" width="51" height="75"/>
+       <SubTexture name="wingBlue_4.png" x="692" y="924" width="42" height="80"/>
+       <SubTexture name="wingBlue_5.png" x="596" y="892" width="51" height="69"/>
+       <SubTexture name="wingBlue_6.png" x="694" y="847" width="42" height="74"/>
+       <SubTexture name="wingBlue_7.png" x="675" y="134" width="43" height="83"/>
+       <SubTexture name="wingGreen_0.png" x="650" y="525" width="45" height="78"/>
+       <SubTexture name="wingGreen_1.png" x="775" y="229" width="37" height="72"/>
+       <SubTexture name="wingGreen_2.png" x="809" y="527" width="26" height="84"/>
+       <SubTexture name="wingGreen_3.png" x="535" y="0" width="51" height="75"/>
+       <SubTexture name="wingGreen_4.png" x="694" y="431" width="42" height="80"/>
+       <SubTexture name="wingGreen_5.png" x="525" y="251" width="51" height="69"/>
+       <SubTexture name="wingGreen_6.png" x="695" y="511" width="42" height="74"/>
+       <SubTexture name="wingGreen_7.png" x="655" y="764" width="43" height="83"/>
+       <SubTexture name="wingRed_0.png" x="809" y="712" width="26" height="84"/>
+       <SubTexture name="wingRed_1.png" x="768" y="0" width="37" height="72"/>
+       <SubTexture name="wingRed_2.png" x="600" y="300" width="51" height="75"/>
+       <SubTexture name="wingRed_3.png" x="698" y="715" width="42" height="80"/>
+       <SubTexture name="wingRed_4.png" x="586" y="75" width="51" height="69"/>
+       <SubTexture name="wingRed_5.png" x="718" y="123" width="42" height="74"/>
+       <SubTexture name="wingRed_6.png" x="653" y="681" width="43" height="83"/>
+       <SubTexture name="wingRed_7.png" x="651" y="286" width="45" height="78"/>
+       <SubTexture name="wingYellow_0.png" x="650" y="603" width="45" height="78"/>
+       <SubTexture name="wingYellow_1.png" x="760" y="120" width="37" height="72"/>
+       <SubTexture name="wingYellow_2.png" x="809" y="353" width="26" height="84"/>
+       <SubTexture name="wingYellow_3.png" x="576" y="150" width="51" height="75"/>
+       <SubTexture name="wingYellow_4.png" x="726" y="0" width="42" height="80"/>
+       <SubTexture name="wingYellow_5.png" x="525" y="182" width="51" height="69"/>
+       <SubTexture name="wingYellow_6.png" x="695" y="585" width="42" height="74"/>
+       <SubTexture name="wingYellow_7.png" x="651" y="364" width="43" height="83"/>
+</TextureAtlas>
\ No newline at end of file
diff --git a/lib/gamnit/examples/asteronits/assets/.gitignore b/lib/gamnit/examples/asteronits/assets/.gitignore
new file mode 100644 (file)
index 0000000..23a22a6
--- /dev/null
@@ -0,0 +1 @@
+images/controls.png
diff --git a/lib/gamnit/examples/asteronits/assets/images/sheet.png b/lib/gamnit/examples/asteronits/assets/images/sheet.png
new file mode 100644 (file)
index 0000000..8c58b86
Binary files /dev/null and b/lib/gamnit/examples/asteronits/assets/images/sheet.png differ
diff --git a/lib/gamnit/examples/asteronits/bin/.gitignore b/lib/gamnit/examples/asteronits/bin/.gitignore
new file mode 100644 (file)
index 0000000..72e8ffc
--- /dev/null
@@ -0,0 +1 @@
+*
diff --git a/lib/gamnit/examples/asteronits/org.nitlanguage.asteronits.txt b/lib/gamnit/examples/asteronits/org.nitlanguage.asteronits.txt
new file mode 100644 (file)
index 0000000..9f47066
--- /dev/null
@@ -0,0 +1,10 @@
+Categories:Nit,Games
+License:Apache2
+Web Site:http://nitlanguage.org
+Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/lib/gamnit/examples/asteronits
+Issue Tracker:https://github.com/nitlang/nit/issues
+
+Summary:Destroy asteroids in this simple 2D sample game made with gamnit
+Description:
+Sample portable gamnit game implemented with the simple_2d API.
+.
diff --git a/lib/gamnit/examples/asteronits/package.ini b/lib/gamnit/examples/asteronits/package.ini
new file mode 100644 (file)
index 0000000..ebdbce2
--- /dev/null
@@ -0,0 +1,12 @@
+[package]
+name=asteronits
+tags=example
+maintainer=Alexis Laferrière <alexis.laf@xymus.net>
+license=Apache-2.0
+[upstream]
+browse=https://github.com/nitlang/nit/tree/master/lib/gamnit/examples/asteronits/
+git=https://github.com/nitlang/nit.git
+git.directory=lib/gamnit/examples/asteronits/
+homepage=http://nitlanguage.org
+issues=https://github.com/nitlang/nit/issues
+apk=http://nitlanguage.org/fdroid/apk/asteronits.apk
diff --git a/lib/gamnit/examples/asteronits/res/.gitignore b/lib/gamnit/examples/asteronits/res/.gitignore
new file mode 100644 (file)
index 0000000..72e8ffc
--- /dev/null
@@ -0,0 +1 @@
+*
diff --git a/lib/gamnit/examples/asteronits/src/.gitignore b/lib/gamnit/examples/asteronits/src/.gitignore
new file mode 100644 (file)
index 0000000..2e17176
--- /dev/null
@@ -0,0 +1,2 @@
+controls.nit
+spritesheet.nit
diff --git a/lib/gamnit/examples/asteronits/src/asteronits.nit b/lib/gamnit/examples/asteronits/src/asteronits.nit
new file mode 100644 (file)
index 0000000..588bdb6
--- /dev/null
@@ -0,0 +1,213 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Portable game to destroy asteroids
+module asteronits is
+       app_name "Asteronits"
+       app_namespace "org.nitlanguage.asteronits"
+       app_version(1, 0, git_revision)
+
+       android_manifest_activity """android:screenOrientation="sensorLandscape""""
+       android_api_target 15
+end
+
+import gamnit::simple_2d
+
+import game_logic
+import spritesheet
+
+redef class Spritesheet
+       # Largest meteors, organized by color
+       var meteors_big: Array[Array[Texture]] = [
+               [meteor_brown_big1, meteor_brown_big2, meteor_brown_big3, meteor_brown_big4],
+               [meteor_grey_big1, meteor_grey_big2, meteor_grey_big3, meteor_grey_big4]]
+
+       # Medium size meteors, organized by color
+       var meteors_med: Array[Array[Texture]] = [
+               [meteor_brown_med1, meteor_brown_med3],
+               [meteor_grey_med1, meteor_grey_med2]]
+
+       # Small meteors, organized by color
+       var meteors_small: Array[Array[Texture]] = [
+               [meteor_brown_small1, meteor_brown_small2],
+               [meteor_grey_small1, meteor_grey_small2]]
+
+       # Tiny meteors, organized by color
+       #
+       # TODO use these in particles
+       var meteors_tiny: Array[Array[Texture]] = [
+               [meteor_brown_tiny1, meteor_brown_tiny2],
+               [meteor_grey_tiny1, meteor_grey_tiny2]]
+
+       # Available ships
+       var ships: Array[Texture] = [enemy_green1]
+end
+
+redef class App
+
+       # Current world in play
+       var world = new World(12, 2, display.aspect_ratio) is lazy
+
+       redef fun on_create
+       do
+               super
+
+               # Move the camera to show all the world world in the screen range
+               world_camera.reset_height(world.half_height * 2.0)
+       end
+
+       # Main spritesheet with ships, asteroids and beams
+       var spritesheet = new Spritesheet
+
+       redef fun update(dt)
+       do
+               # Update game logic
+               world.do_turn dt
+
+               # Setup new world if all asteroids are destroyed
+               if world.asteroids.is_empty then
+                       sprites.clear
+                       world = new World(world.n_asteroids*2, world.n_asteroid_parts+1, display.aspect_ratio)
+               end
+       end
+
+       redef fun accept_event(event)
+       do
+               if event isa QuitEvent then
+                       exit 0
+               else if event isa KeyEvent then
+                       var thrust = event.thrust
+                       if thrust != 0.0 then
+                               app.world.ship.applied_thrust = if event.is_down then thrust else 0.0
+                               return true
+                       end
+
+                       var rot = event.rotation
+                       if rot != 0.0 then
+                               app.world.ship.applied_rotation = if event.is_down then rot else 0.0
+                               return true
+                       end
+
+                       if event.name == "space" and event.is_down then
+                               app.world.ship.fire
+                               return true
+                       else if event.name == "escape" then
+                               exit 0
+                       end
+               end
+
+               return false
+       end
+end
+
+redef class SpacialObject
+       # Main `Sprite` to draw for this object
+       var sprite: Sprite is noinit
+
+       # All `Sprites` composing this object
+       var sprites: Collection[Sprite] = new Ref[Sprite](sprite) is lazy
+
+       init do app.sprites.add_all sprites
+
+       redef fun do_turn(dt)
+       do
+               super
+               sprite.rotation = rotation + pi/2.0
+       end
+
+       redef fun destroy
+       do
+               super
+               for s in sprites do app.sprites.remove s
+       end
+end
+
+redef class Asteroid
+
+       init
+       do
+               # Select texture from `size` and `color`
+               var tex = if size == 3 then
+                               app.spritesheet.meteors_big[color].rand
+                       else if size == 2 then
+                               app.spritesheet.meteors_med[color].rand
+                       else app.spritesheet.meteors_small[color].rand
+
+               sprite = new Sprite(tex, center)
+               super
+       end
+end
+
+redef class Bullet
+       init
+       do
+               sprite = new Sprite(app.spritesheet.laser_blue01, center)
+               super
+       end
+end
+
+redef class Ship
+       init
+       do
+               sprite = new Sprite(app.spritesheet.ships.rand, center)
+               sprites = [sprite, thrust_sprite]
+
+               super
+       end
+
+       private var thrust_sprite = new Sprite(app.spritesheet.fire09, new Point3d[Float](0.0, 0.0, 0.0))
+
+       private var sprites_with_fire: Array[Sprite] = [thrust_sprite, sprite] is lazy
+
+       redef fun do_turn(dt)
+       do
+               super
+
+               # Update position of the thrust sprite
+               var dist_to_engine = 45.0
+               thrust_sprite.center.x = center.x - dist_to_engine*rotation.cos
+               thrust_sprite.center.y = center.y - dist_to_engine*rotation.sin
+               thrust_sprite.center.z = center.z
+               thrust_sprite.rotation = rotation + pi/2.0
+
+               # Show or hide the thrust sprite
+               if applied_thrust > 0.0 then
+                       thrust_sprite.alpha = 1.0
+               else if thrust_sprite.alpha > 0.0 then
+                       thrust_sprite.alpha -= dt*4.0
+                       if thrust_sprite.alpha < 0.0 then thrust_sprite.alpha = 0.0
+               end
+
+               # HACK, the "enemy" ship used for the player points downwards
+               sprite.rotation += pi
+       end
+end
+
+redef class KeyEvent
+
+       # How does this event affect the ship thrust?
+       fun thrust: Float
+       do
+               if is_arrow_up or name == "w" then return 1.0
+               return 0.0
+       end
+
+       # How does this event affect the ship thrust?
+       fun rotation: Float
+       do
+               if is_arrow_right or name == "d" then return 1.0
+               if is_arrow_left or name == "a" then return -1.0
+               return 0.0
+       end
+end
diff --git a/lib/gamnit/examples/asteronits/src/game_logic.nit b/lib/gamnit/examples/asteronits/src/game_logic.nit
new file mode 100644 (file)
index 0000000..8d45e54
--- /dev/null
@@ -0,0 +1,272 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Pure game logic, independent of gamnit and other display concerns
+module game_logic
+
+import geometry::points_and_lines
+
+# Root of all entities of a single play
+class World
+
+       # Number of original asteroids per play
+       var n_asteroids: Int
+
+       # Number of parts created when an asteroid explodes
+       var n_asteroid_parts: Int
+
+       # Ratio of the world: height / width
+       var ratio_height_width: Float
+
+       # Minimum half size of the world, applied either to `half_width` of `half_height`
+       private var min_half_size = 500.0
+
+       # Width of the world
+       var half_width: Float = if ratio_height_width <= 1.0 then
+                       min_half_size
+               else min_half_size * ratio_height_width is lazy
+
+       # Height of the world
+       var half_height: Float = if ratio_height_width >= 1.0 then
+                       min_half_size
+               else min_half_size / ratio_height_width is lazy
+
+       # Player's ship
+       var ship = new Ship(self)
+
+       # All live spacial objects
+       var objects = new Array[SpacialObject].with_items(ship)
+
+       # All live asteroids
+       var asteroids = new Array[Asteroid]
+
+       # All live bullets
+       var bullets = new Array[SpacialObject]
+
+       init
+       do
+               for a in n_asteroids.times do
+                       var asteroid = new Asteroid(self, 3)
+                       asteroid.center.x = half_width - 2.0*half_width.rand
+                       asteroid.center.y = half_height - 2.0*half_height.rand
+                       asteroid.rotation_inertia = 0.5 - 1.0.rand
+
+                       objects.add asteroid
+                       asteroids.add asteroid
+               end
+       end
+
+       # Execute a turn that took `dt` seconds
+       fun do_turn(dt: Float)
+       do
+               for object in objects do object.do_turn dt
+
+               for object in objects.to_a do if not object isa Asteroid then
+
+                       for asteroid in asteroids.to_a do
+                               var d2 = object.center.dist2(asteroid.center)
+
+                               var r = object.radius + asteroid.radius
+                               if d2 < r*r then
+                                       # Boom
+                                       if object == ship then
+                                               # The ship is invincible
+                                               # TODO health and losing
+                                       else
+                                               object.destroy
+                                       end
+
+                                       asteroid.destroy
+                                       break
+                               end
+                       end
+               end
+       end
+end
+
+# Physical object in space physics
+abstract class SpacialObject
+
+       # World in which this object belongs
+       var world: World
+
+       # Current position
+       var center = new Point3d[Float](0.0, 0.0, 0.0)
+
+       # Position inertia, applied on `center` at each `do_turn`
+       var inertia = new Point3d[Float](0.0, 0.0, 0.0)
+
+       # Current rotation
+       var rotation = 0.0
+
+       # Rotation inertia, applied on `rotation` at each `do_turn`
+       var rotation_inertia = 0.0
+
+       # Rotation force, currently applied by the pilot
+       var applied_rotation = 0.0 is writable
+
+       # Thrust force, currently applied by the pilot
+       var applied_thrust = 0.0 is writable
+
+       # Radius of this object for collision detection
+       var radius: Float is noinit
+
+       # New instance copying the data from `other` with an optional `variation`
+       init copy(other: SpacialObject, variation: nullable Float)
+       do
+               init other.world
+
+               if variation == null then variation = 0.0
+
+               center.x = other.center.x
+               center.y = other.center.y
+               center.z = other.center.z
+
+               inertia.x = other.inertia.x + variation - 2.0*variation.rand
+               inertia.y = other.inertia.y + variation - 2.0*variation.rand
+
+               rotation = other.rotation
+               if variation != 0.0 then rotation = 2.0 * pi.rand
+       end
+
+       # Apply `thrust` forward on this object
+       fun apply_thrust(thrust: Float)
+       do
+               inertia.x += thrust * rotation.cos
+               inertia.y += thrust * rotation.sin
+       end
+
+       # Execute a turn that took `dt` seconds
+       fun do_turn(dt: Float)
+       do
+               # Forces to inertia
+               var t = applied_thrust * 5.0
+               inertia.x += t * rotation.cos
+               inertia.y += t * rotation.sin
+
+               # Arcade rotation
+               var r = applied_rotation * 0.05
+               rotation += r
+
+               # Realistic rotation, kept for reference and reality minded individuals
+               #var r = applied_rotation * 0.2
+               #rotation_inertia += r
+               #rotation_inertia = rotation_inertia.min(2.0).max(-2.0)
+
+               # Inertia to position
+               rotation += rotation_inertia * dt
+               center.x += inertia.x * dt
+               center.y += inertia.y * dt
+               center.z += inertia.z * dt
+
+               # Wrap objects so they stay in the screen
+               while center.x < -world.half_width do center.x += 2.0 * world.half_width
+               while center.x > world.half_width do center.x -= 2.0 * world.half_width
+               while center.y < -world.half_height do center.y += 2.0 * world.half_height
+               while center.y > world.half_height do center.y -= 2.0 * world.half_height
+       end
+
+       # Destroy this object
+       fun destroy do world.objects.remove self
+end
+
+# Player's ship
+class Ship
+       super SpacialObject
+
+       init do radius = 20.0
+
+       # Open fire forward
+       fun fire
+       do
+               var bullet = new Bullet.copy(world.ship)
+               bullet.center.z = -1.0 # in the background
+               bullet.apply_thrust 500.0 # give a boost
+
+               world.objects.add bullet
+               world.bullets.add bullet
+       end
+end
+
+# Asteroid, the main obstacle in this game
+class Asteroid
+       super SpacialObject
+
+       # Size of this asteroid, should be greater than 0
+       var size: Int
+
+       # Color, or type, on this asteroid
+       var color: Int = 2.rand
+
+       init
+       do
+               rotation_inertia = 0.5 - 1.0.rand
+               radius = 22.5 * size.to_f
+       end
+
+       # New asteroid breaking off from `other`
+       init break_off(other: Asteroid)
+       do
+               size = other.size - 1
+               color = other.color
+
+               copy(other, 60.0)
+       end
+
+       # Explode and break off this asteroid
+       redef fun destroy
+       do
+               super
+
+               world.asteroids.remove self
+
+               if size == 1 then return # Do not break off
+
+               for p in world.n_asteroid_parts.times do
+                       var asteroid = new Asteroid.break_off(self)
+                       asteroid.size = size - 1
+                       asteroid.color = color
+
+                       asteroid.inertia.x += 1.0 - 2.0.rand
+                       asteroid.inertia.y += 1.0 - 2.0.rand
+
+                       world.objects.add asteroid
+                       world.asteroids.add asteroid
+               end
+       end
+end
+
+# Bullet or beam fired from a `Ship`
+class Bullet
+       super SpacialObject
+
+       # Time left before this bullet expires
+       var ttl = 5.0
+
+       init do radius = 0.0
+
+       redef fun do_turn(dt)
+       do
+               super
+
+               ttl -= dt
+               if ttl <= 0.0 then destroy
+       end
+
+       redef fun destroy
+       do
+               super
+               world.bullets.remove self
+       end
+end
diff --git a/lib/gamnit/examples/asteronits/src/texture_atlas_parser.nit b/lib/gamnit/examples/asteronits/src/texture_atlas_parser.nit
new file mode 100644 (file)
index 0000000..113b887
--- /dev/null
@@ -0,0 +1,117 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Tool to parse XML texture atlas and generated Nit code to access subtextures
+module texture_atlas_parser
+
+import dom
+import gen_nit
+import opts
+
+# Command line options
+var opts = new OptionContext
+var opt_name = new OptionString("Name of the module to generate", "--name", "-n")
+var opt_dir = new OptionString("Folder where to write the generated module", "--dir")
+opts.add_option(opt_name, opt_dir)
+opts.parse
+var rest = opts.rest
+
+if opts.errors.not_empty then
+       print_error opts.errors
+       exit 1
+end
+
+if rest.is_empty then
+       print_error "Error: Expected the path to the XML file as argument"
+       exit 2
+end
+
+# Prepare to read XML file and gather the attributes
+var xml_file = rest.first
+var attributes = new Array[String]
+
+# Insert the first attribute, to load the root texture
+var png_file = "images" / xml_file.basename("xml") + "png"
+attributes.add """
+       var root_texture = new Texture("{{{png_file}}}")"""
+
+# Read XML file
+var content = xml_file.to_path.read_all
+var xml = content.to_xml
+if xml isa XMLError then
+       print_error "RSS Parse Error: {xml.message}:{xml.location or else "null"}"
+       exit 3
+end
+
+var items = xml["TextureAtlas"].first.children
+for item in items do if item isa XMLOnelinerTag then
+       var x = null
+       var y = null
+       var width = null
+       var height = null
+       var name = null
+       for attr in item.attributes do if attr isa XMLStringAttr then
+               if attr.name == "x" then
+                       x = attr.value.to_i
+               else if attr.name == "y" then
+                       y = attr.value.to_i
+               else if attr.name == "width" then
+                       width = attr.value.to_i
+               else if attr.name == "height" then
+                       height = attr.value.to_i
+               else if attr.name == "name" then
+                       name = attr.value
+               end
+       end
+
+       if x != null and y != null and width != null and height != null and name != null then
+               name = name.strip_extension(".png").to_snake_case
+
+                       var coords = "{x}, {y}, {width}, {height}"
+                       attributes.add """
+       var {{{name}}}: Texture = root_texture.subtexture({{{coords}}})"""
+       else
+               print_error "Error on {item}"
+       end
+end
+
+var module_name = opt_name.value
+if module_name == null then module_name = "spritesheet"
+var class_name = module_name.capitalized.to_camel_case
+
+# Generate Nit code
+var nit_module = new NitModule(module_name)
+nit_module.header = """
+# This file is generated by texture_atlas_parser
+"""
+
+nit_module.content.add """
+import gamnit::display
+import gamnit::textures
+
+class {{{class_name}}}
+"""
+
+for a in attributes do nit_module.content.add a
+
+nit_module.content.add """
+end"""
+
+var dir = opt_dir.value
+if dir != null then
+       var out_path = dir / module_name + ".nit"
+       nit_module.write_to_file out_path
+else
+       printn nit_module.write_to_string
+end
diff --git a/lib/gamnit/examples/asteronits/src/touch_ui.nit b/lib/gamnit/examples/asteronits/src/touch_ui.nit
new file mode 100644 (file)
index 0000000..91ce2be
--- /dev/null
@@ -0,0 +1,117 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Touchscreen UI for mobile devices
+module touch_ui
+
+import asteronits
+import controls
+
+redef class App
+
+       # Controls texture
+       var spritesheet_controls = new ControlsImages
+
+       private var joystick_x = 200.0
+       private var joystick_y = 100.0
+
+       redef fun accept_event(event)
+       do
+               super
+
+               var display = display
+               if display == null then return false
+
+               if event isa PointerEvent and not event.is_move then
+
+                       # Convert input coordinates from screen coordinates to UI units.
+                       # Effectively reverting the transformation created by `ui_camera.reset_height`.
+                       var ui_pos = ui_camera.camera_to_ui(event.x, event.y)
+
+                       var ship = world.ship
+
+                       if ui_pos.y.to_i > display.height/2 then
+                               # Lower half of the screen
+                               if ui_pos.x.to_i > display.width/2 then
+                                       # Bottom right
+                                       if event.pressed then ship.fire
+                               else
+                                       # Bottom left
+                                       var dx = ui_pos.x - joystick_x
+                                       var dy = ui_pos.y - (ui_camera.height - joystick_y)
+
+                                       # Any touch in the joystick reset all joystick effects.
+                                       # It prevents leaving a button without releasing by moving
+                                       # the pointer over another button.
+                                       ship.applied_rotation = 0.0
+                                       ship.applied_thrust = 0.0
+
+                                       if not event.pressed then return true
+
+                                       if dy > 0.0 then
+                                               # Bottom part of the joystick, turns left or right
+                                               if dx < 0.0 then
+                                                       ship.applied_rotation = -1.0
+                                               else
+                                                       ship.applied_rotation = 1.0
+                                               end
+                                       else
+                                               # Upper part of the joystick, detect action using 45d angles
+                                               if dx < dy then
+                                                       ship.applied_rotation = -1.0
+                                               else if dx > -dy then
+                                                       ship.applied_rotation = 1.0
+                                               else
+                                                       ship.applied_thrust = 1.0
+                                               end
+                                       end
+                               end
+                       end
+                       return true
+               end
+
+               return false
+       end
+
+       redef fun on_create
+       do
+               super
+
+               var display = display
+               assert display != null
+
+               # Standardize the UI size to look like a 1600 pixels high screen.
+               # Meaning that the controls have a size proportional to the height of each screen.
+               # In the code, we can use "pixel" precision as if the target screen was 1600 pixels high.
+               ui_camera.reset_height 1600.0
+
+               # Add the joystick to the UI
+               ui_sprites.add new Sprite(spritesheet_controls.forward,
+                       ui_camera.bottom_left.offset(joystick_x, -200.0, 0.0))
+               ui_sprites.add new Sprite(spritesheet_controls.left,
+                       ui_camera.bottom_left.offset(joystick_x-100.0, -joystick_y, 0.0))
+               ui_sprites.add new Sprite(spritesheet_controls.right,
+                       ui_camera.bottom_left.offset(joystick_x+100.0, -joystick_y, 0.0))
+
+               # Purely cosmetic joystick background
+               ui_sprites.add new Sprite(spritesheet_controls.joystick_back,
+                       ui_camera.bottom_left.offset(joystick_x, -joystick_y, -1.0)) # In the back
+               ui_sprites.add new Sprite(spritesheet_controls.joystick_down,
+                       ui_camera.bottom_left.offset(joystick_x, 0.0, 1.0))
+
+               # Add the "open fire" button
+               ui_sprites.add new Sprite(spritesheet_controls.fire,
+                       ui_camera.bottom_right.offset(-150.0, -150.0, 0.0))
+       end
+end