[gbrainy] New logic games + minor fixes in reading games.xml



commit 1cb2f61f8dac2fb848e21cd98ead67c8afd13407
Author: Jordi Mas <jmas softcatala org>
Date:   Tue Jun 22 22:16:44 2010 +0200

    New logic games + minor fixes in reading games.xml

 data/Makefile.am                             |   11 ++-
 data/game-graphics/family.svg                |  162 ----------------------
 data/game-graphics/father_son.svg            |  129 ++++++++++++++++++
 data/game-graphics/money.svg                 |  186 ++++++++++++++++++++++++++
 data/game-graphics/tennis.svg                |   13 ++
 data/games.xml                               |  120 ++++++++++++++++-
 src/Clients/Classical/Dialogs/AboutDialog.cs |    4 +-
 src/Core/Main/Xml/GameXml.cs                 |   36 ++++--
 8 files changed, 477 insertions(+), 184 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 70b4e5d..c3b7bd6 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -45,7 +45,12 @@ analogies_DATA = \
 	verbal_analogies.xml \
 	games.xml \
 	game-graphics/clock.svg \
-	game-graphics/family.svg
+	game-graphics/family.svg \
+	game-graphics/password.svg \
+	game-graphics/tennis.svg \
+	game-graphics/father_son.svg \
+	game-graphics/money.svg 
+	
 
 install-data-local:
 	@-$(mkinstalldirs) $(DESTDIR)$(hicolordir)/scalable/apps
@@ -61,6 +66,10 @@ install-data-local:
 	$(INSTALL_DATA) $(srcdir)/games.xml $(DESTDIR)$(images)/games.xml
 	$(INSTALL_DATA) $(srcdir)/game-graphics/clock.svg $(DESTDIR)$(images)/clock.svg
 	$(INSTALL_DATA) $(srcdir)/game-graphics/family.svg $(DESTDIR)$(images)/family.svg
+	$(INSTALL_DATA) $(srcdir)/game-graphics/password.svg $(DESTDIR)$(images)/password.svg
+	$(INSTALL_DATA) $(srcdir)/game-graphics/tennis.svg $(DESTDIR)$(images)/tennis.svg
+	$(INSTALL_DATA) $(srcdir)/game-graphics/father_son.svg $(DESTDIR)$(images)/father_son.svg
+	$(INSTALL_DATA) $(srcdir)/game-graphics/money.svg $(DESTDIR)$(images)/money.svg
 
 gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
 
diff --git a/data/game-graphics/father_son.svg b/data/game-graphics/father_son.svg
new file mode 100644
index 0000000..56be701
--- /dev/null
+++ b/data/game-graphics/father_son.svg
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Creator: CorelDRAW -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   height="300"
+   id="svg2"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="icons_lumen_design_studi_01.svg"
+   sodipodi:version="0.32"
+   space="preserve"
+   style="fill-rule:evenodd"
+   viewBox="0 0 79.820428 119.74286"
+   width="400"
+   version="1.1">
+  <metadata
+     id="metadata3">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title></dc:title>
+        <dc:description>icons of people and luggage. Suitable for descriptions of a car (for car rental companies), or for WC doors icons. Enjoy!</dc:description>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>icon</rdf:li>
+            <rdf:li>icons</rdf:li>
+            <rdf:li>children</rdf:li>
+            <rdf:li>girl</rdf:li>
+            <rdf:li>luggage</rdf:li>
+            <rdf:li>iconic</rdf:li>
+            <rdf:li>schema</rdf:li>
+            <rdf:li>woman</rdf:li>
+            <rdf:li>car rental</rdf:li>
+            <rdf:li>travel</rdf:li>
+            <rdf:li>boy</rdf:li>
+            <rdf:li>rent a car</rdf:li>
+            <rdf:li>wc</rdf:li>
+            <rdf:li>child</rdf:li>
+            <rdf:li>toilet</rdf:li>
+            <rdf:li>departures</rdf:li>
+            <rdf:li>man</rdf:li>
+            <rdf:li>people</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:publisher>
+          <cc:Agent
+             rdf:about="http://www.openclipart.org/";>
+            <dc:title>Lumen Design Studio</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lumen Design Studio</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Lumen Design Studio</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:date>15 08 2005</dc:date>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="http://web.resource.org/cc/PublicDomain"; />
+        <dc:language>en</dc:language>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://web.resource.org/cc/PublicDomain";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="1.0"
+     id="base"
+     inkscape:current-layer="svg2"
+     inkscape:cx="629.80798"
+     inkscape:cy="170.67623"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:window-height="692"
+     inkscape:window-width="1146"
+     inkscape:window-x="0"
+     inkscape:window-y="52"
+     inkscape:zoom="0.65186685"
+     pagecolor="#ffffff"
+     showgrid="false"
+     inkscape:window-maximized="0" />
+  <defs
+     id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 372.04724 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1052.3622 : 372.04724 : 1"
+       inkscape:persp3d-origin="526.18109 : 248.03149 : 1"
+       id="perspective15" />
+    <style
+       id="style6"
+       type="text/css">
+   
+    .fil0 {fill:#1B1C1F}
+   
+  </style>
+  </defs>
+  <path
+     class="fil0"
+     d="m 15.072837,2.6079449 c 7.523141,0 13.623172,6.09949 13.623172,13.6216001 0,7.52262 -6.100031,13.62264 -13.623172,13.62264 -7.5215845,0 -13.6215915,-6.10002 -13.6215915,-13.62264 0,-7.5221101 6.100007,-13.6216001 13.6215915,-13.6216001 l 0,0 z m -20.7248265,32.2293301 2.063324,0 c 1.408653,0 2.560802,1.15474 2.560802,2.56028 l 0,35.30106 c 0,1.40606 -1.154223,2.5608 -2.560802,2.5608 l -2.063324,0 c -1.406594,0 -2.560298,-1.15111 -2.560298,-2.5608 l 0,-35.30106 c 0,-1.40916 1.152163,-2.56028 2.560298,-2.56028 l 0,0 z m 39.3868785,0 2.0628,0 c 1.40866,0 2.5608,1.15474 2.5608,2.56028 l 0,35.30106 c 0,1.40606 -1.1537,2.5608 -2.5608,2.5608 l -2.0628,0 c -1.4066,0 -2.56082,-1.15111 -2.56082,-2.5608 l 0,-35.30106 c 0,-1.40916 1.15216,-2.56028 2.56082,-2.56028 l 0,0 z m -26.5016635,-2.49203 15.6797575,0 c 2.874694,0 5.226586,2.35189 5.226586,5.22659 0,24.68498 0,49.371518 0,74.056505 0,2.87471 -2.351892,5.2271 -5.226586,5.2271 l -6.027622,0 0,-37.358695 -3.623491,0 0,37.3586
 95 -6.0286445,0 c -2.874709,0 -5.226596,-2.35239 -5.226596,-5.2271 0,-24.684987 0,-49.371525 0,-74.056505 0,-2.8747 2.351887,-5.22659 5.226596,-5.22659 l 0,0 z"
+     id="path14"
+     style="fill:#1b1c1f" />
+  <path
+     d="m 67.597838,30.316755 c -6.37979,0 -11.58434,5.13876 -11.58433,11.53871 0,6.38029 5.20456,11.58431 11.58433,11.58432 6.389591,0 11.538721,-5.20403 11.538701,-11.58432 0,-6.39995 -5.14911,-11.53871 -11.538701,-11.53871 z m -5.70096,25.54023 c -2.0659,0 -3.73979,1.66666 -3.7398,3.73982 0,17.82272 1e-5,35.679608 0,53.497665 0,2.07936 1.6739,3.73983 3.7398,3.73982 l 4.37834,0 0,-26.954057 2.59963,0 0,26.954057 4.378321,0 c 2.07057,0 3.73984,-1.66046 3.73982,-3.73982 0,-17.818057 2e-5,-35.674965 0,-53.497665 0,-2.07315 -1.66923,-3.73982 -3.73982,-3.73982 l -11.356291,0 z m -9.25833,1.7787 c -1.01769,0 -1.86992,0.81073 -1.86991,1.8243 l 0,25.494618 c 0,1.02856 0.8522,1.86991 1.86991,1.86991 l 1.45945,0 c 1.01563,0 1.86991,-0.84135 1.86991,-1.86991 l 0,-25.494618 c 0,-1.01202 -0.85428,-1.82429 -1.86991,-1.8243 l -1.45945,0 z m 28.413521,0 c -1.01511,0 -1.82432,0.81073 -1.82431,1.8243 l 0,25.494618 c 0,1.02856 0.81178,1.86991 1.82431,1.86991 l 1.50505,0 c 1.01666,0 1.82431,-
 0.84135 1.82429,-1.86991 l 0,-25.494618 c 0,-1.01202 -0.80762,-1.82429 -1.82429,-1.8243 l -1.50505,0 z"
+     id="path16"
+     style="fill:#1b1c1f" />
+</svg>
diff --git a/data/game-graphics/money.svg b/data/game-graphics/money.svg
new file mode 100644
index 0000000..9bfd176
--- /dev/null
+++ b/data/game-graphics/money.svg
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/"; xmlns:cc="http://web.resource.org/cc/"; 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://inkscape.sourceforge.net/DTD/s odipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"; width="48px" height="48px" id="svg1306" sodipodi:version="0.32" inkscape:version="0.43" sodipodi:docbase="/home/hbons/Desktop" sodipodi:docname="gnucash.svg" inkscape:export-filename="/home/hbons/Desktop/gnucash.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90">
+  <defs id="defs1308">
+    <linearGradient inkscape:collect="always" id="linearGradient2707">
+      <stop style="stop-color: rgb(237, 237, 237); stop-opacity: 1;" offset="0" id="stop2709"/>
+      <stop style="stop-color: rgb(237, 237, 237); stop-opacity: 0;" offset="1" id="stop2711"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" id="linearGradient2649">
+      <stop style="stop-color: rgb(212, 212, 212); stop-opacity: 1;" offset="0" id="stop2651"/>
+      <stop style="stop-color: rgb(212, 212, 212); stop-opacity: 0;" offset="1" id="stop2653"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" id="linearGradient2632">
+      <stop style="stop-color: rgb(68, 68, 68); stop-opacity: 1;" offset="0" id="stop2635"/>
+      <stop style="stop-color: rgb(68, 68, 68); stop-opacity: 0;" offset="1" id="stop2637"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" id="linearGradient2623">
+      <stop style="stop-color: rgb(187, 187, 187); stop-opacity: 1;" offset="0" id="stop2625"/>
+      <stop style="stop-color: rgb(187, 187, 187); stop-opacity: 0;" offset="1" id="stop2627"/>
+    </linearGradient>
+    <linearGradient id="aigrd2" gradientUnits="userSpaceOnUse" x1="12.2744" y1="32.4165" x2="35.3912" y2="14.2033">
+      <stop offset="0" style="stop-color: rgb(251, 251, 251);" id="stop3043"/>
+      <stop offset="0.5" style="stop-color: rgb(182, 182, 182);" id="stop3045"/>
+      <stop offset="1" style="stop-color: rgb(228, 228, 228);" id="stop3047"/>
+    </linearGradient>
+    <linearGradient id="aigrd1" gradientUnits="userSpaceOnUse" x1="14.9966" y1="11.1885" x2="32.511" y2="34.3075">
+      <stop offset="0" style="stop-color: rgb(235, 235, 235);" id="stop3034"/>
+      <stop offset="0.5" style="stop-color: rgb(255, 255, 255);" id="stop3036"/>
+      <stop offset="1" style="stop-color: rgb(235, 235, 235);" id="stop3038"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" id="linearGradient23419">
+      <stop style="stop-color: rgb(0, 0, 0); stop-opacity: 1;" offset="0" id="stop23421"/>
+      <stop style="stop-color: rgb(0, 0, 0); stop-opacity: 0;" offset="1" id="stop23423"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient23419" id="radialGradient3507" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.25, 0, 31.227)" cx="23.334524" cy="41.63604" fx="23.334524" fy="41.63604" r="22.627417"/>
+    <linearGradient gradientTransform="translate(156.189, -121.911)" y2="16.560732" x2="24.511713" y1="5.8732319" x1="24.511713" gradientUnits="userSpaceOnUse" id="linearGradient3780" xlink:href="#linearGradient2622" inkscape:collect="always"/>
+    <linearGradient y2="7.8678756" x2="60.071049" y1="7.9206076" x1="32.827568" gradientTransform="matrix(0.750458, 0, 0, 1.33252, 156.189, -121.911)" gradientUnits="userSpaceOnUse" id="linearGradient3776" xlink:href="#linearGradient2580" inkscape:collect="always"/>
+    <linearGradient gradientTransform="translate(156.189, -121.911)" y2="15.191534" x2="22.435516" y1="39.066536" x1="24.588383" gradientUnits="userSpaceOnUse" id="linearGradient3773" xlink:href="#linearGradient2614" inkscape:collect="always"/>
+    <linearGradient gradientTransform="translate(156.189, -121.911)" y2="26.625" x2="25.375" y1="20.3125" x1="21.530331" gradientUnits="userSpaceOnUse" id="linearGradient3770" xlink:href="#linearGradient2630" inkscape:collect="always"/>
+    <linearGradient gradientTransform="translate(156.189, -121.911)" y2="25.25" x2="24.996323" y1="37.625" x1="25.850664" gradientUnits="userSpaceOnUse" id="linearGradient3766" xlink:href="#linearGradient2339" inkscape:collect="always"/>
+    <linearGradient y2="25.25" x2="24.996323" y1="37.625" x1="25.850664" gradientUnits="userSpaceOnUse" id="linearGradient3762" xlink:href="#linearGradient2339" inkscape:collect="always"/>
+    <linearGradient y2="26.625" x2="25.375" y1="20.3125" x1="21.530331" gradientUnits="userSpaceOnUse" id="linearGradient3760" xlink:href="#linearGradient2630" inkscape:collect="always"/>
+    <linearGradient y2="15.191534" x2="22.435516" y1="39.066536" x1="24.588383" gradientUnits="userSpaceOnUse" id="linearGradient3758" xlink:href="#linearGradient2614" inkscape:collect="always"/>
+    <linearGradient y2="7.8678756" x2="60.071049" y1="7.9206076" x1="32.827568" gradientTransform="scale(0.750458, 1.33252)" gradientUnits="userSpaceOnUse" id="linearGradient3756" xlink:href="#linearGradient2580" inkscape:collect="always"/>
+    <linearGradient y2="16.560732" x2="24.511713" y1="5.8732319" x1="24.511713" gradientUnits="userSpaceOnUse" id="linearGradient3754" xlink:href="#linearGradient2622" inkscape:collect="always"/>
+    <linearGradient inkscape:collect="always" id="linearGradient2630">
+      <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" offset="0" id="stop2632"/>
+      <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" offset="1" id="stop2634"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2622">
+      <stop style="stop-color: rgb(173, 173, 173); stop-opacity: 1;" offset="0" id="stop2624"/>
+      <stop style="stop-color: rgb(114, 114, 114); stop-opacity: 1;" offset="1" id="stop2626"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2614">
+      <stop style="stop-color: rgb(177, 177, 177); stop-opacity: 1;" offset="0" id="stop2616"/>
+      <stop style="stop-color: rgb(195, 195, 195); stop-opacity: 1;" offset="1" id="stop2618"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2580">
+      <stop id="stop2582" offset="0" style="stop-color: rgb(255, 255, 255); stop-opacity: 1;"/>
+      <stop id="stop2586" offset="1" style="stop-color: rgb(150, 150, 150); stop-opacity: 0;"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" id="linearGradient2339">
+      <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 1;" offset="0" id="stop2341"/>
+      <stop style="stop-color: rgb(255, 255, 255); stop-opacity: 0;" offset="1" id="stop2343"/>
+    </linearGradient>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2580" id="linearGradient320" gradientUnits="userSpaceOnUse" gradientTransform="scale(0.750458, 1.33252)" x1="32.827568" y1="7.9206076" x2="60.071049" y2="7.8678756"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2339" id="linearGradient2345" x1="25.850664" y1="37.625" x2="24.996323" y2="25.25" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2614" id="linearGradient2620" x1="24.588383" y1="39.066536" x2="22.435516" y2="15.191534" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2622" id="linearGradient2628" x1="24.511713" y1="5.8732319" x2="24.511713" y2="16.560732" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2630" id="linearGradient2636" x1="21.530331" y1="20.3125" x2="25.375" y2="26.625" gradientUnits="userSpaceOnUse"/>
+    <radialGradient gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.917623, -0.00135498, 0.000363202, 0.148463, 1.92689, 37.0387)" r="22.728432" fy="43.636444" fx="23.583666" cy="43.636444" cx="23.583666" id="radialGradient2823" xlink:href="#linearGradient2817" inkscape:collect="always"/>
+    <linearGradient id="linearGradient2817" inkscape:collect="always">
+      <stop id="stop2819" offset="0" style="stop-color: rgb(0, 0, 0); stop-opacity: 1;"/>
+      <stop id="stop2821" offset="1" style="stop-color: rgb(0, 0, 0); stop-opacity: 0;"/>
+    </linearGradient>
+    <linearGradient id="linearGradient4928">
+      <stop style="stop-color: rgb(222, 222, 222); stop-opacity: 1;" offset="0" id="stop4930"/>
+      <stop style="stop-color: rgb(222, 222, 222); stop-opacity: 0;" offset="1" id="stop4932"/>
+    </linearGradient>
+    <linearGradient id="linearGradient2300" inkscape:collect="always">
+      <stop id="stop2302" offset="0" style="stop-color: rgb(85, 87, 83); stop-opacity: 1;"/>
+      <stop id="stop2304" offset="1" style="stop-color: rgb(85, 87, 83); stop-opacity: 0;"/>
+    </linearGradient>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient2300" id="radialGradient2596" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.11382, 4.37208e-16, -1.13252e-16, 0.539348, -2.1241, 18.9413)" cx="17.984474" cy="40.604275" fx="17.984474" fy="40.604275" r="21.030567"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient2623" id="radialGradient2629" cx="24.5" cy="18.592903" fx="24.5" fy="18.592903" r="14.5" gradientTransform="matrix(2.94027, 6.52871e-16, -5.40307e-16, 2.43333, -47.5366, -23.3665)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2632" id="linearGradient2639" x1="24.612919" y1="20.159996" x2="29.182333" y2="12.24554" gradientUnits="userSpaceOnUse" gradientTransform="translate(9.53674e-07, 1)"/>
+    <radialGradient inkscape:collect="always" xlink:href="#linearGradient2649" id="radialGradient2655" cx="24.013132" cy="31.643599" fx="24.013132" fy="31.643599" r="14.986866" gradientTransform="matrix(3.32355, 1.57437e-32, -9.88307e-32, 2.77205, -55.7956, -48.8662)" gradientUnits="userSpaceOnUse"/>
+    <linearGradient inkscape:collect="always" xlink:href="#linearGradient2707" id="linearGradient2713" x1="18" y1="39" x2="18" y2="45.780262" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1, 0, 0, 0.833333, 0, 7.5)"/>
+  </defs>
+  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="0.22745098" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="12.125732" inkscape:cx="33.188214" inkscape:cy="26.538208" inkscape:current-layer="layer1" showgrid="true" inkscape:grid-bbox="true" inkscape:document-units="px" stroke="#888a85" fill="#edd400" inkscape:window-width="1268" inkscape:window-height="971" inkscape:window-x="6" inkscape:window-y="21" inkscape:showpageshadow="false" showguides="true" inkscape:guide-bbox="true"/>
+  <metadata id="metadata1311">
+    <rdf:RDF>
+      <cc:Work rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+        <dc:title>Removable drive</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Andreas Nilsson</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:description/>
+        <cc:license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"/>
+        <dc:source>http://www.gnome.org</dc:source>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>Jakub Steiner</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License rdf:about="http://creativecommons.org/licenses/GPL/2.0/";>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Reproduction"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/Distribution"/>
+        <cc:requires rdf:resource="http://web.resource.org/cc/Notice"/>
+        <cc:permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/>
+        <cc:requires rdf:resource="http://web.resource.org/cc/ShareAlike"/>
+        <cc:requires rdf:resource="http://web.resource.org/cc/SourceCode"/>
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer">
+    <path sodipodi:type="arc" style="opacity: 0.5; fill: url(&quot;#radialGradient2596&quot;) rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2290" sodipodi:cx="18.66226" sodipodi:cy="41.416107" sodipodi:rx="21.030567" sodipodi:ry="10.183721" d="M 39.692827 41.416107 A 21.030567 10.183721 0 1 1  -2.3683071,41.416107 A 21.030567 10.183721 0 1 1  39.692827 41.416107 z" transform="matrix(1.1412, 0, 0, 0.834666, 2.7027, 4.93139)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(93, 93, 93); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2773" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5856, 17.3204)"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2775" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 24.7661, 26.0125)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2777" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5952, 15.3268)"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2779" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 24.7758, 24.019)"/>
+    <rect style="opacity: 1; fill: rgb(237, 237, 237); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(85, 87, 83); stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect1354" width="35.041153" height="34.99564" x="6.472692" y="2.5016282" rx="2.0000002" ry="2.0000021"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2781" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5952, 13.3269)"/>
+    <rect style="opacity: 1; fill: url(&quot;#radialGradient2655&quot;) rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2229" width="29.973732" height="25" x="9.026268" y="6" rx="1.6250001" ry="1.6250001"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2783" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 24.7758, 22.019)"/>
+    <path style="opacity: 1; fill: url(&quot;#radialGradient2629&quot;) rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" d="M 14.031251,6 L 14.031251,10 L 10.000001,10 L 10.000001,11 L 14.031251,11 L 14.031251,15 L 10.000001,15 L 10.000001,16 L 14.031251,16 L 14.031251,20 L 10.000001,20 L 10.000001,21 L 14.031251,21 L 14.031251,25 L 10.000001,25 L 10.000001,26 L 14.031251,26 L 14.031251,30 L 15.031251,30 L 15.031251,26 L 19.031251,26 L 19.031251,30 L 20.031251,30 L 20.031251,26 L 24.031251,26 L 24.031251,30 L 25.031251,30 L 25.031251,26 L 29.031251,26 L 29.031251,30 L 30.031251,30 L 30.031251,26 L 34.031251,26 L 34.031251,30 L 35.031251,30 L 35.031251,26 L 39.000001,26 L 39.000001,25 L 35.031251,25 L 35.031251,21 L 39.000001,21 L 39.000001,20 L 35.031251,20 L 35.031251,16 L 39.000001,16 L 39.000001,15 L 35.031251,15 L 35.031251,11 L 39.000001,11 L 39.000001,10 L 35.031251,10 L 
 35.031251,6 L 34.031251,6 L 34.031251,10 L 30.031251,10 L 30.031251,6 L 29.031251,6 L 29.031251,10 L 25.031251,10 L 25.031251,6 L 24.031251,6 L 24.031251,10 L 20.031251,10 L 20.031251,6 L 19.031251,6 L 19.031251,10 L 15.031251,10 L 15.031251,6 L 14.031251,6 z M 15.031251,11 L 19.031251,11 L 19.031251,15 L 15.031251,15 L 15.031251,11 z M 20.031251,11 L 24.031251,11 L 24.031251,15 L 20.031251,15 L 20.031251,11 z M 25.031251,11 L 29.031251,11 L 29.031251,15 L 25.031251,15 L 25.031251,11 z M 30.031251,11 L 34.031251,11 L 34.031251,15 L 30.031251,15 L 30.031251,11 z M 15.031251,16 L 19.031251,16 L 19.031251,20 L 15.031251,20 L 15.031251,16 z M 20.031251,16 L 24.031251,16 L 24.031251,20 L 20.031251,20 L 20.031251,16 z M 25.031251,16 L 29.031251,16 L 29.031251,20 L 25.031251,20 L 25.031251,16 z M 30.031251,16 L 34.031251,16 L 34.031251,20 L 30.031251,20 L 30.031251,16 z M 15.031251,21 L 19.031251,21 L 19.031251,25 L 15.031251,25 L 15.031251,21 z M 20.031251,21 L 24.031251,21 L 24.0
 31251,25 L 20.031251,25 L 20.031251,21 z M 25.031251,21 L 29.031251,21 L 29.031251,25 L 25.031251,25 L 25.031251,21 z M 30.031251,21 L 34.031251,21 L 34.031251,25 L 30.031251,25 L 30.031251,21 z " id="rect2281"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2785" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5827, 11.3219)"/>
+    <path style="opacity: 1; fill: url(&quot;#linearGradient2639&quot;) rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" d="M 28.531251,13 L 23.648235,21.817147 L 15.038453,17.019865 L 9.031251,26.5 L 9.906251,27 L 15.318426,18.273234 L 24.019866,23.054484 L 29.406251,13.5 L 28.531251,13 z " id="rect2293" sodipodi:nodetypes="ccccccccc"/>
+    <rect style="opacity: 1; fill: rgb(136, 138, 133); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2600" width="1" height="30" x="30" y="-39" transform="matrix(4.69498e-19, 1, -1, 2.30054e-19, 0, 0)"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2787" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 24.7758, 20.0125)"/>
+    <rect style="opacity: 1; fill: rgb(136, 138, 133); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2231" width="1" height="25" x="9.026268" y="6"/>
+    <path style="fill: rgb(114, 114, 144); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(68,68,68); stroke-width: 1; stroke-miterlimit: 4; stroke-opacity: 1;" d="M 1.4998397,34.48908 L 25.500165,34.48908 L 25.500165,40.514312 L 1.4998397,40.514312 L 1.4998397,34.48908 z " id="path2321"/>
+    <path style="fill: rgb(130, 130, 130); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(68,68,68); stroke-width: 1; stroke-miterlimit: 4; stroke-opacity: 1;" d="M 4.3258819,28.500695 L 24.597572,28.500695 L 25.500004,34.510156 L 1.499998,34.510156 L 4.3258819,28.500695 z " id="path2323" sodipodi:nodetypes="ccccc"/>
+    <rect style="fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2325" width="23" height="1" x="2.000138" y="38.036678"/>
+    <rect style="fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2327" width="23" height="1" x="2.000138" y="36.036678"/>
+    <path transform="translate(-3.96865, -4.9791)" style="opacity: 0.25; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(255, 255, 255); stroke-width: 1; stroke-miterlimit: 4; stroke-opacity: 1;" d="M 8.90625,34.53125 L 6.9375,38.46875 L 28.28125,38.46875 L 27.6875,34.53125 L 8.90625,34.53125 z " id="path2329" sodipodi:nodetypes="ccccc"/>
+    <rect style="fill: rgb(237, 237, 237); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(85, 87, 83); stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2341" width="4.9373136" height="6.1093535" x="11.531348" y="34.474049"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2746" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.707107, 0, 0, 0.413916, 5.125, 31.6808)"/>
+    <path style="opacity: 1; fill: rgb(212, 212, 212); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(85, 87, 83); stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" d="M 12.5,28.495708 L 11.5,34.132869 L 11.5,40.504299 L 16.5,40.504299 L 16.5,34.078928 L 15.40625,28.495708 L 12.5,28.495708 z " id="path2715" sodipodi:nodetypes="ccccccc"/>
+    <path style="fill: rgb(114, 114, 144); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(68,68,68); stroke-width: 1; stroke-miterlimit: 4; stroke-opacity: 1;" d="M 5.4914627,39.471068 L 29.499977,39.471068 L 29.499977,45.510146 L 5.4914627,45.510146 L 5.4914627,39.471068 z " id="rect2271"/>
+    <path style="fill: rgb(130, 130, 130); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(68,68,68); stroke-width: 1; stroke-miterlimit: 4; stroke-opacity: 1;" d="M 7.4508179,33.505021 L 27.659493,33.505021 L 29.499378,39.498993 L 5.4999839,39.498993 L 7.4508179,33.505021 z " id="path3816" sodipodi:nodetypes="ccccc"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(195, 195, 195); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(93, 93, 93); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2413" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 15.576, 20.314)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2789" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5952, 9.32044)"/>
+    <rect style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2441" width="23" height="1" x="6" y="43"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2415" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 19.7565, 29.0061)"/>
+    <rect style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2443" width="23.000002" height="1" x="6" y="41"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(195, 195, 195); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2417" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 15.5856, 18.3204)"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2791" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 24.7758, 18.0125)"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2419" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 19.7661, 27.0125)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(195, 195, 195); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2421" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 15.5856, 16.3204)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2797" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5952, 7.32535)"/>
+    <path style="opacity: 0.25; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(255, 255, 255); stroke-width: 1; stroke-miterlimit: 4; stroke-opacity: 1;" d="M 8.21875,34.53125 L 6.9375,38.46875 L 28.09375,38.46875 L 26.875,34.53125 L 8.21875,34.53125 z " id="path2269"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2423" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 19.7661, 25.0125)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(195, 195, 195); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2425" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 15.573, 14.3155)"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2427" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 19.7661, 23.0061)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2799" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5827, 5.32042)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(195, 195, 195); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2429" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 15.5856, 12.314)"/>
+    <path sodipodi:type="arc" style="opacity: 0.6; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2431" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 19.7661, 21.0061)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2267" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.141421, 0, 0, 0.137972, 8.19379, 33.5448)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path3843" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.141421, 0, 0, 0.137972, 23.1938, 33.5448)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path3837" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.707106, 0, 0, 0.413916, 9.12501, 36.6808)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path3839" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.214339, 0, 0, 0.137972, 6.79419, 37.5448)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path3841" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.212132, 0, 0, 0.137972, 22.8375, 37.5603)"/>
+    <path style="opacity: 1; fill: rgb(212, 212, 212); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(85, 87, 83); stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" d="M 16.5,33.521308 L 15.5,39.146522 L 15.5,45.504449 L 20.5,45.504449 L 20.5,39.092695 L 19.40625,33.521308 L 16.5,33.521308 z " id="rect1372" sodipodi:nodetypes="ccccccc"/>
+    <rect style="opacity: 1; fill: rgb(136, 138, 133); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2721" width="4" height="5" x="16" y="40"/>
+    <rect style="opacity: 1; fill: url(&quot;#linearGradient2713&quot;) rgb(0, 0, 0); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="rect2673" width="4" height="5" x="16" y="40"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2691" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.212132, 0, 0, 0.137972, 21.8375, 35.5603)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2693" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.212132, 0, 0, 0.137972, 7.8375, 35.5603)"/>
+    <path style="opacity: 0.2; fill: rgb(255, 255, 255); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-opacity: 1;" d="M 9.000001,6 L 39.000001,6 C 26.839345,9.9101256 27.66243,24 9.000001,24 L 9.000001,6 z " id="rect2743" sodipodi:nodetypes="cccc"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2748" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.214339, 0, 0, 0.137972, 2.79419, 32.5603)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2750" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.212132, 0, 0, 0.137972, 19.8375, 32.5603)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2752" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.212132, 0, 0, 0.137972, 18.8375, 30.5603)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(68,68,68); fill-opacity: 1; fill-rule: evenodd; stroke: none; stroke-width: 1; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2754" sodipodi:cx="12.551146" sodipodi:cy="-0.43681452" sodipodi:rx="7.0710678" sodipodi:ry="3.6239223" d="M 19.622213 -0.43681452 A 7.0710678 3.6239223 0 1 1  5.4800777,-0.43681452 A 7.0710678 3.6239223 0 1 1  19.622213 -0.43681452 z" transform="matrix(0.212132, 0, 0, 0.137972, 3.8375, 30.5603)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2801" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5952, 3.31893)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(196, 196, 196); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2809" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.5952, 1.31893)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(222, 222, 222); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2793" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 20.576, -0.684495)"/>
+    <path sodipodi:type="arc" style="opacity: 1; fill: rgb(222, 222, 222); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(109, 109, 109); stroke-width: 1.05; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2761" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.790399, 0, 0, 1.14756, 15.5663, 10.314)"/>
+    <path sodipodi:type="arc" style="opacity: 0.5; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(255, 255, 255); stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2763" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 19.7468, 19.0061)"/>
+    <path sodipodi:type="arc" style="opacity: 0.5; fill: none; fill-opacity: 1; fill-rule: evenodd; stroke: rgb(255, 255, 255); stroke-width: 1.51642; stroke-miterlimit: 4; stroke-dasharray: none; stroke-opacity: 1;" id="path2795" sodipodi:cx="26.492901" sodipodi:cy="18.894651" sodipodi:rx="6.330162" sodipodi:ry="2.1770399" d="M 32.823063 18.894651 A 6.330162 2.1770399 0 1 1  20.162739,18.894651 A 6.330162 2.1770399 0 1 1  32.823063 18.894651 z" transform="matrix(0.632511, 0, 0, 0.687532, 24.7487, 8.00611)"/>
+  </g>
+</svg>
diff --git a/data/game-graphics/tennis.svg b/data/game-graphics/tennis.svg
new file mode 100644
index 0000000..4f1a1da
--- /dev/null
+++ b/data/game-graphics/tennis.svg
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd";>
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg"; xmlns:xlink="http://www.w3.org/1999/xlink"; x="0px" y="0px" width="300px" height="300px" viewBox="0 0 300 300" enable-background="new 0 0 300 300" xml:space="preserve">
+<g>
+	<path d="M84.47,129.58c2.582,1.789,5.65,3.566,8.727,1.75c0.036-0.843,0.105-2.527,0.14-3.369   c11.007,2.402,22.332,2.053,33.522,1.829c5.067-0.495,10.04-1.662,15.064-2.459c6.568-1.346,13.908-2.555,18.623-7.796   c4.176-4.462,2.271-13.796-4.425-14.344c-7.42-0.158-13.677,4.566-20.261,7.331c-19.251,7.749-41.033,8.787-61.065,3.606   c-6.448-3.266-12.745-7.01-18.745-11.019c0.429-2.979,1.708-5.954,1.101-9.002C55.217,81.981,41.046,71.01,26.904,72.268   c-5.83,0.169-11.323,3.423-14.615,8.168c-2.86,5.357-2.656,12.016-0.392,17.554c4.753,10.255,15.693,17.482,27.075,17.233   c4.864,0.102,9.584-1.892,13.313-4.937c3.835,1.852,7.008,4.747,10.739,6.767C70.308,120.993,77.397,125.277,84.47,129.58z    M44.233,108.137c-9.413,3.137-20.221-1.964-25.312-10.145C16,93.72,15.507,87.848,17.954,83.255   c1.87-2.377,4.619-3.998,7.576-4.595c11.92-2.254,24.575,7.27,25.642,19.378C50.933,102.307,48.465,106.741,44.233,108.137z"/>
+	<path d="M217.278,115.819c11.825,4.397,25.53,3.576,36.233,10.926c4.412,2.85,7.053,7.908,7.047,13.142   c-0.048,11.29-3.436,22.657-10.311,31.688c3.767,0.212,5.91-3.69,8.69-5.667c11.285-9.49,16.99-25.176,13.904-39.65   c-1.299-6.402-6.128-11.251-11.088-15.126c-8.774-6.195-19.168-9.641-29.645-11.611c-5.996-0.737-12.334-0.499-17.975,1.836   c-2.526,1.049-5.224,3.548-4.3,6.545C211.02,111.491,213.579,114.652,217.278,115.819z"/>
+	<path d="M258.178,237.626c-9.352-4.469-18.881-10.561-23.126-20.457c-4.909-12.779-4.068-26.705-5.023-40.12   c-0.599-5.64-0.978-11.759-4.513-16.468c-4.168-6.124-15.336-6.841-18.925,0.271c-2.876,5.579-2.167,12.167-1.641,18.2   c2.598,16.971,8.179,33.479,16.365,48.567c6.018,8.933,16.594,13.158,26.668,15.64c11.378,2.553,22.755,5.123,34.135,7.682   c3.17,0.33,7.401,1.84,9.782-1.065C280.717,245.636,268.904,243.059,258.178,237.626z"/>
+	<path d="M197.869,158.957c-4.168-2.54-9.429-1.803-13.824-0.289c-11.773,4.804-21.485,13.224-31.364,21.003   c-29.333,23.355-58.805,46.544-88.071,69.979c-1.911,1.415-4.009,2.544-6.128,3.613c0.46,0.369,0.921,0.742,1.383,1.119   c6.338-2.177,12.528-4.807,18.349-8.14c33.863-18.839,68.132-36.942,101.78-56.166c5.938-3.345,12.024-6.515,17.455-10.665   c3.836-3.001,6.907-8.162,5.263-13.119C201.65,163.576,200.589,160.446,197.869,158.957z"/>
+	<path d="M35.406,124.313c-4.988,0-9.031,4.043-9.031,9.031c0,4.988,4.043,9.031,9.031,9.031c4.988,0,9.031-4.043,9.031-9.031   C44.437,128.356,40.394,124.313,35.406,124.313z M35.406,136.375c-1.671,0-3.031-1.36-3.031-3.031c0-1.671,1.36-3.031,3.031-3.031   c1.672,0,3.031,1.36,3.031,3.031C38.437,135.015,37.077,136.375,35.406,136.375z"/>
+	<circle cx="170.449" cy="74.676" r="21.699"/>
+</g>
+</svg>
\ No newline at end of file
diff --git a/data/games.xml b/data/games.xml
index 0346262..9d82c7a 100644
--- a/data/games.xml
+++ b/data/games.xml
@@ -11,13 +11,12 @@
 			* Answer regular expression + patterns
 -->
 <games>
-
 	<game>
 		<_name>Clock Rotation</_name>
 		<type>Logic</type>
 		<difficulty>All</difficulty>
 		<variables>
-			int num = random.Next (5) * 10;
+			int num = (1 + random.Next (5)) * 10;
 			int rslt = (2 * 360) + (num * 6);
 		</variables>
 		<_rationale>Every hour rotates 360 degrees.</_rationale>
@@ -25,20 +24,125 @@
 		<_question>How many degrees rotates the minute hand of a clock in 2 hours [num] minutes?</_question>
 		<answer>[rslt]</answer>
 	</game>
+
+	<game>
+		<_name>Brothers and sisters</_name>
+		<type>Logic</type>
+		<difficulty>All</difficulty>
+		<svg file = "family.svg" x = "0.15" y = "0.25" width = "0.625" height = "0.5"/>
+		<variant>
+			<variables>
+				int people = 40;
+				int brothers = 10 + random.Next (8);
+				int sisters = 12 + random.Next (8);
+				int both = 5 + random.Next (5);
+				int brothers_only = (brothers - both);
+				int sisters_only = (sisters - both);
+				int rslt = people - brothers_only - sisters_only - both;
+			</variables>
+			<_question>Out of [people] people, [brothers] have brothers, [sisters] have sisters and [both] have both. How many people have neither brothers nor sisters?</_question>
+			<answer>[rslt]</answer>
+			<_rationale>[brothers_only] people have brothers only, [sisters_only] sisters only and [both] have sisters and brothers.</_rationale>
+		</variant>
+	</game>
+
 	<game>
-		<_name>Family relations</_name>
+		<_name>Age</_name>
 		<type>Logic</type>
 		<difficulty>All</difficulty>
-		<svg file = "family.svg" x = "0.25" y = "0.25" width = "0.5" height = "0.5"/>
+		<svg file = "father_son.svg" x = "0.2" y = "0.25" width = "0.6" height = "0.4"/>
+		<!--- http://mathforum.org/library/drmath/view/58577.html -->
 		<variant>
-			<_question>A boy has as many brothers as he has sisters. Each brother has twice as many sisters as brothers. How many brothers and sisters the family has in total?</_question>
-			<answer>7</answer>
-			<_rationale>He has three brothers and four sisters.</_rationale>
+			<variables>
+				int father = 46;
+				int difference = 2 + random.Next (8);
+				int son = (father - difference) / 2;
+			</variables>
+			<_question>John's is 46 years old. His son is [difference] years older than twice John's age. How old is John's son?</_question>
+			<answer>[son]</answer>
 		</variant>
 		<variant>
-			<_question>John's age is nowadays 5 times his son's age. 4 years ago John was 9 times older than his son. What's is John's age nowadays?</_question>
+			<variables>
+				int [] proportions = new int [] {3,4,5};
+				int [] years = new int [] {12, 16, 18};
+				int idx = random.Next (years.Length);
+
+				int ago = years [idx];
+				int proportion = proportions [idx];
+			</variables>
+			<_question>John's age is nowadays 2 times his son's age. [ago] years ago, John was [proportion] times older than his son. How old is John's son nowadays?</_question>
 			<answer>40</answer>
+			<_rationale>[ago] years ago, John's age minus [ago] was equal to [proportion] times his son age minus [ago].</_rationale>
 		</variant>
+	</game>
 
+	<game>
+		<_name>Password</_name>
+		<type>Logic</type>
+		<difficulty>All</difficulty>
+		<svg file = "password.svg" x = "0.2" y = "0.25" width = "0.6" height = "0.3"/>
+		<variant>
+			<variables>
+				int digits = 4 + random.Next (3);
+				int rslt = (int) Math.Pow (10, digits);
+			</variables>
+			<_question>A file is protected by a password formed by a [digits] digit number (ranging from 0 to 9). How many different passwords can you have?</_question>
+			<answer>[rslt]</answer>
+			<_rationale>Every digit has 10 possibilities. The total number of possibilities is 10 at the power of [digits].</_rationale>
+		</variant>
+		<variant>
+			<variables>
+				int digits = 2 + random.Next (2);
+				int rslt = (int) Math.Pow (8, digits);
+			</variables>
+			<_question>A file is protected by a password formed by a [digits] digit octal number (ranging from 0 to 7). How many different passwords can you have?</_question>
+			<answer>[rslt]</answer>
+			<_rationale>Every digit has 8 possibilities. The total number of possibilities is 8 at the power of [digits].</_rationale>
+		</variant>
+	</game>
+
+	<game>
+		<_name>Tennis game</_name>
+		<type>Logic</type>
+		<difficulty>All</difficulty>
+		<svg file = "tennis.svg" x = "0.25" y = "0.25" width = "0.5" height = "0.5"/>
+		<variant>
+			<variables>
+				int games = 5 + random.Next (5);
+				int rslt = (int) Math.Pow (2, games);
+			</variables>
+			<_question>There are [games] tennis games played simultaneous. How many different forecast are possible?</_question>
+			<answer>[rslt]</answer>
+			<_rationale>Every game is an independent event with 2 possible results. The total number of possibilities is 2 at the power of [games].</_rationale>
+		</variant>
+		<variant>
+			<variables>
+				int players = 32 + (random.Next (16) * 2);
+				int rslt = players -1;
+			</variables>
+			<_question>How many matches does it take to determine the winner of a tennis tournament that starts with [players] players?</_question>
+			<_rationale>In every match you eliminate one player, you need the total number of games minus 1 to find out the winner..</_rationale>
+			<answer>[rslt]</answer>
+		</variant>
+	</game>
+
+	<game>
+		<_name>Bank interest</_name>
+		<type>Logic</type>
+		<difficulty>All</difficulty>
+		<svg file = "money.svg" x = "0.25" y = "0.25" width = "0.5" height = "0.5"/>
+		<variant>
+			<variables>
+				int years = 2;
+				double interest = 0.10;
+				int [] money_options = new int [] {100, 200, 300, 400, 500, 600};
+				int money = money_options [random.Next (money_options.Length)];
+
+				double rslt =  money * (Math.Pow (1 + interest, years));
+			</variables>
+			<_question>You have [money] monetary units in your bank account at 10% compound interest annually. How much money will you have at end of 2 years?</_question>
+			<answer>[rslt]</answer>
+			<_rationale>Compound interest is paid on the original amount and on the accumulated past interest.</_rationale>
+		</variant>
 	</game>
 </games>
diff --git a/src/Clients/Classical/Dialogs/AboutDialog.cs b/src/Clients/Classical/Dialogs/AboutDialog.cs
index 4dd721d..3c12c70 100644
--- a/src/Clients/Classical/Dialogs/AboutDialog.cs
+++ b/src/Clients/Classical/Dialogs/AboutDialog.cs
@@ -40,7 +40,9 @@ namespace gbrainy.Clients.Classical
 				"Anna Barber\u00e0 Mar\u00e9",
 				"Carme Cabal Sard\u00e0",
 				"Jordi Mas i Hernandez",
-				"Openclipart.org"
+				"Felipe Menegaz",
+				"Openclipart.org",
+
 			};
 
 			string [] documenters = new string [] {
diff --git a/src/Core/Main/Xml/GameXml.cs b/src/Core/Main/Xml/GameXml.cs
index 69c9788..d5f045a 100644
--- a/src/Core/Main/Xml/GameXml.cs
+++ b/src/Core/Main/Xml/GameXml.cs
@@ -98,30 +98,33 @@ namespace gbrainy.Core.Main
 			variants = game.Variants.Count > 0;
 
 			if (variants && game.Variants[current.Variant].Question != null)
-				question = Catalog.GetString (game.Variants[current.Variant].Question);
+				question = CatalogGetString (game.Variants[current.Variant].Question);
 			else
-				question = Catalog.GetString (game.Question);
+				question = CatalogGetString (game.Question);
 
 			if (variants && game.Variants[current.Variant].Answer != null)
-				answer = Catalog.GetString (game.Variants[current.Variant].Answer);
+				answer = CatalogGetString (game.Variants[current.Variant].Answer);
 			else
-				answer = Catalog.GetString (game.Answer);
+				answer = CatalogGetString (game.Answer);
 
 			if (variants && game.Variants[current.Variant].Rationale != null)
-				rationale = Catalog.GetString (game.Variants[current.Variant].Rationale);
+				rationale = CatalogGetString (game.Variants[current.Variant].Rationale);
 			else
-				rationale = Catalog.GetString (game.Rationale);
+				rationale = CatalogGetString (game.Rationale);
 
 			if (variants && game.Variants[current.Variant].Variables != null)
 				variables = game.Variants[current.Variant].Variables;
 			else
 				variables = game.Variables;
 
-			// Evaluate code
-			EvaluateVariables (variables);
-			question = ReplaceVariables (question);
-			answer = ReplaceVariables (answer);
-			rationale = ReplaceVariables (rationale);
+			if (String.IsNullOrEmpty (variables) == false)
+			{
+				// Evaluate code
+				EvaluateVariables (variables);
+				question = ReplaceVariables (question);
+				answer = ReplaceVariables (answer);
+				rationale = ReplaceVariables (rationale);
+			}
 
 			right_answer = answer;
 		}
@@ -169,6 +172,15 @@ namespace gbrainy.Core.Main
 			}
 		}
 
+		// Protect from calling with null (exception)
+		string CatalogGetString (string str)
+		{
+			if (String.IsNullOrEmpty (str))
+				return str;
+
+			return Catalog.GetString (str);
+		}
+
 		/*
 			Code evaluation functions
 		*/
@@ -284,7 +296,7 @@ namespace gbrainy.Core.Main
 
 		static string ReplaceVariables (string str)
 		{
-			const string exp = "\\[[a-z]+\\]+";
+			const string exp = "\\[[a-z_]+\\]+";
 			string eval, var, vars, var_value;
 			Regex regex;
 			Match match;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]