Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCecilia <caggsld@gmail.com>2013-01-25 20:51:50 (GMT)
committer Cecilia <caggsld@gmail.com>2013-01-25 20:51:50 (GMT)
commitadd1a847e772d698eb6509b5891ca5b8830622e3 (patch)
treeeff9c3dcb79a00bad8f2cf35aa6840380ef3b406
parentdef8c40ffba0438573a3413b5db6f251deb6821a (diff)
Depuracion de codigo y cambio de iconoHEADmaster
-rw-r--r--CalculArte.activity/activity.py57
-rw-r--r--CalculArte.activity/activity.pycbin4779 -> 6687 bytes
-rw-r--r--CalculArte.activity/activity.py~124
-rw-r--r--CalculArte.activity/activity/activity.info2
-rw-r--r--CalculArte.activity/activity/activity.info~8
-rw-r--r--CalculArte.activity/activity/icon-abacus.svg79
6 files changed, 184 insertions, 86 deletions
diff --git a/CalculArte.activity/activity.py b/CalculArte.activity/activity.py
index 85436e2..87fd14d 100644
--- a/CalculArte.activity/activity.py
+++ b/CalculArte.activity/activity.py
@@ -14,7 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-"""HelloWorld Activity: A case study for developing an activity."""
+"""CalculArteActivity: Calculadora que realiza operaciones basicas disenhada para personas con problemas de motricidad fisica."""
import gtk
import gobject
@@ -40,10 +40,10 @@ DELAY = 1000
class CalculArteActivity(activity.Activity):
- """HelloWorldActivity class as specified in activity.info"""
+ """CalculArteActivity class as specified in activity.info"""
def __init__(self, handle):
- """Set up the HelloWorld activity."""
+ """Set up the CalculArte activity."""
activity.Activity.__init__(self, handle)
# we do not have collaboration features
@@ -77,33 +77,24 @@ class CalculArteActivity(activity.Activity):
self.set_toolbar_box(toolbar_box)
toolbar_box.show()
-
- # label with the text, make the string translatable
-
+
vbox = gtk.VBox()
hbox = gtk.HBox(True)
self.label_historial = gtk.Label()
self.label_historial.set_line_wrap(True)
self.entry_visor = gtk.Entry()
- table = gtk.Table(5,5, True)
+ self.table = gtk.Table(5,5, True)
boton = gtk.Button('boton falso')
- #window.connect('destroy', self.destroy)
-
self.label_historial.set_text('Ultimo resultado:')
- #label_historial.justify()
-
-
- #window.add(hbox)
self.set_canvas(hbox)
hbox.add(vbox)
hbox.add(self.label_historial)
vbox.add(self.entry_visor)
- vbox.add(table)
+ vbox.add(self.table)
vbox.add(boton)
OPTIONS.reverse()
for j in range(4):
-
for i in range(OPT_LENGHT):
button = gtk.Button()
option = OPTIONS.pop()
@@ -113,26 +104,24 @@ class CalculArteActivity(activity.Activity):
#canvas = self.get_canvas()
#canvas.connect('key-press-event', self.__barrido_columnas_cb)
if option == 'Aceptar':
- table.attach(button, i, i+3, j, j+1)
+ self.table.attach(button, i, i+3, j, j+1)
break
else:
- table.attach(button, i, i+1, j, j+1)
-
+ self.table.attach(button, i, i+1, j, j+1)
hbox.show_all()
boton.hide()
-
- #window.grab_focus()
-
- #table.set_focus()
+
OPTIONS.reverse()
self._filas_index = 0
self._columnas_index = 0
self._flag_fila_columna = 0
- gobject.timeout_add(DELAY, self.__timeout_cb, table)
+ gobject.timeout_add(DELAY, self.__timeout_cb, self.table)
def __button_cb(self, button, entry, boton, label):
+ """ Callback que maneja el evento activate """
+
if (button.get_label() == 'Aceptar'):
try:
@@ -160,10 +149,8 @@ class CalculArteActivity(activity.Activity):
def __timeout_cb(self, table):
- #self._button_index = (self._button_index + 1) % OPT_LENGHT
- #buttons = hbox.get_children()
- #button = buttons[self._button_index]
- #button.grab_focus()
+ """ Callback que realiza el barrido automatico"""
+
if self._flag_fila_columna == 0:
self._filas_index = (self._filas_index) % OPT_FILAS
buttons = table.get_children()
@@ -190,29 +177,25 @@ class CalculArteActivity(activity.Activity):
button.grab_focus()
self._columnas_index += 1
-
- #buttons = table.get(row = self._filas_index)
-
-
+
return True
def __barrido_columnas_cb(self, table, arg):
+ """ Callback para cambiar valor del flag que verifica si corresponde a una fila o columna"""
self._flag_fila_columna = 1
def read_file(self, tmp_file):
- """ datastore high-level interaction to read
- logging.debug("The tmp_file is at %s, for reading", tmp_file)"""
# resume metadata
try:
self.label_historial.set_label(self.metadata['entry'])
- self._filas_index = int(self.metadata['fila'])
+ self._filas_index = int(self.metadata['fila'])
self._columnas_index = int(self.metadata['columna'])
self._flag_fila_columna = int(self.metadata['flag'])
- buttons = table.get_children()
+ buttons = self.table.get_children()
buttons.reverse()
- buttons_focus = buttons[self._filas_index*OPT_LENGHT:self._filas_index*OPT_LENGHT+OPT_LENGHT]
+ buttons_focus = buttons[(self._filas_index-1)*OPT_LENGHT:(self._filas_index-1)*OPT_LENGHT+OPT_LENGHT]
for button in buttons:
button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color('dark gray'))
for button in buttons_focus:
@@ -227,8 +210,6 @@ class CalculArteActivity(activity.Activity):
data.close()
def write_file(self, tmp_file):
- """ datastore high-level interaction to write
- logging.debug("The tmp_file is at %s, for writing", tmp_file)"""
# save metadata
self.metadata['entry'] = self.label_historial.get_label()
diff --git a/CalculArte.activity/activity.pyc b/CalculArte.activity/activity.pyc
index 4bc96b1..630b20c 100644
--- a/CalculArte.activity/activity.pyc
+++ b/CalculArte.activity/activity.pyc
Binary files differ
diff --git a/CalculArte.activity/activity.py~ b/CalculArte.activity/activity.py~
index 377dc4e..87fd14d 100644
--- a/CalculArte.activity/activity.py~
+++ b/CalculArte.activity/activity.py~
@@ -14,7 +14,7 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-"""HelloWorld Activity: A case study for developing an activity."""
+"""CalculArteActivity: Calculadora que realiza operaciones basicas disenhada para personas con problemas de motricidad fisica."""
import gtk
import gobject
@@ -40,10 +40,10 @@ DELAY = 1000
class CalculArteActivity(activity.Activity):
- """HelloWorldActivity class as specified in activity.info"""
+ """CalculArteActivity class as specified in activity.info"""
def __init__(self, handle):
- """Set up the HelloWorld activity."""
+ """Set up the CalculArte activity."""
activity.Activity.__init__(self, handle)
# we do not have collaboration features
@@ -77,64 +77,69 @@ class CalculArteActivity(activity.Activity):
self.set_toolbar_box(toolbar_box)
toolbar_box.show()
-
- # label with the text, make the string translatable
-
+
vbox = gtk.VBox()
- hbox = gtk.HBox()
- label_historial = gtk.Label()
- entry_visor = gtk.Entry()
- table = gtk.Table(5,5, True)
+ hbox = gtk.HBox(True)
+ self.label_historial = gtk.Label()
+ self.label_historial.set_line_wrap(True)
+ self.entry_visor = gtk.Entry()
+ self.table = gtk.Table(5,5, True)
boton = gtk.Button('boton falso')
- #window.connect('destroy', self.destroy)
-
- label_historial.set_text('Ultimo resultado:')
- #label_historial.justify()
-
-
- #window.add(hbox)
+ self.label_historial.set_text('Ultimo resultado:')
self.set_canvas(hbox)
hbox.add(vbox)
- hbox.add(label_historial)
- vbox.add(entry_visor)
- vbox.add(table)
+ hbox.add(self.label_historial)
+ vbox.add(self.entry_visor)
+ vbox.add(self.table)
vbox.add(boton)
OPTIONS.reverse()
for j in range(4):
-
for i in range(OPT_LENGHT):
button = gtk.Button()
option = OPTIONS.pop()
button.set_label(option)
- button.connect('activate', self.__button_cb, entry_visor, boton, label_historial)
+ button.connect('activate', self.__button_cb, self.entry_visor, boton, self.label_historial)
self.connect('key-press-event', self.__barrido_columnas_cb)
#canvas = self.get_canvas()
#canvas.connect('key-press-event', self.__barrido_columnas_cb)
if option == 'Aceptar':
- table.attach(button, i, i+3, j, j+1)
+ self.table.attach(button, i, i+3, j, j+1)
break
else:
- table.attach(button, i, i+1, j, j+1)
-
+ self.table.attach(button, i, i+1, j, j+1)
hbox.show_all()
- #boton.show(False)
-
- #window.grab_focus()
-
- #table.set_focus()
+ boton.hide()
+
OPTIONS.reverse()
self._filas_index = 0
self._columnas_index = 0
self._flag_fila_columna = 0
- gobject.timeout_add(DELAY, self.__timeout_cb, table)
+ gobject.timeout_add(DELAY, self.__timeout_cb, self.table)
def __button_cb(self, button, entry, boton, label):
+ """ Callback que maneja el evento activate """
+
if (button.get_label() == 'Aceptar'):
- resultado = str(eval(entry.get_text()))
- label.set_label('Ultimo resultado:\n' + entry.get_text() + ': ' + resultado)
+ try:
+
+ resultado = str(eval(entry.get_text()))
+ label.set_label('Ultimo resultado:\n' + entry.get_text() + ': ' + resultado)
+ except ZeroDivisionError:
+ label.set_label('Ultimo resultado:\n Error: Division por cero [' + entry.get_text()+']' )
+ entry.set_text("")
+
+ except:
+ label.set_label('Ultimo resultado:\n Imposible de realizar la operacion. Intente nuevamente')
+ entry.set_text("")
+
+
+ entry.set_text("")
+ elif (button.get_label() == 'Borrar'):
+ entry.set_text(entry.get_text()[0:entry.get_text_length()-1])
+
else:
entry.set_text(entry.get_text() + button.get_label())
self._flag_fila_columna = 0
@@ -144,10 +149,8 @@ class CalculArteActivity(activity.Activity):
def __timeout_cb(self, table):
- #self._button_index = (self._button_index + 1) % OPT_LENGHT
- #buttons = hbox.get_children()
- #button = buttons[self._button_index]
- #button.grab_focus()
+ """ Callback que realiza el barrido automatico"""
+
if self._flag_fila_columna == 0:
self._filas_index = (self._filas_index) % OPT_FILAS
buttons = table.get_children()
@@ -170,17 +173,52 @@ class CalculArteActivity(activity.Activity):
self._columnas_index = (self._columnas_index) % OPT_LENGHT
buttons_focus = buttons[(self._filas_index-1)*OPT_LENGHT:(self._filas_index-1)*OPT_LENGHT+OPT_LENGHT]
- print self._filas_index
- print self._columnas_index
button = buttons_focus[self._columnas_index]
button.grab_focus()
self._columnas_index += 1
-
- #buttons = table.get(row = self._filas_index)
-
-
+
return True
def __barrido_columnas_cb(self, table, arg):
+ """ Callback para cambiar valor del flag que verifica si corresponde a una fila o columna"""
self._flag_fila_columna = 1
+
+
+ def read_file(self, tmp_file):
+
+ # resume metadata
+ try:
+ self.label_historial.set_label(self.metadata['entry'])
+ self._filas_index = int(self.metadata['fila'])
+ self._columnas_index = int(self.metadata['columna'])
+ self._flag_fila_columna = int(self.metadata['flag'])
+ buttons = self.table.get_children()
+ buttons.reverse()
+ buttons_focus = buttons[(self._filas_index-1)*OPT_LENGHT:(self._filas_index-1)*OPT_LENGHT+OPT_LENGHT]
+ for button in buttons:
+ button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color('dark gray'))
+ for button in buttons_focus:
+ button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color('light gray'))
+ except KeyError:
+ logging.error("No entry metadata")
+
+ # resume data
+ data = open(tmp_file, "r")
+ buffer = self.entry_visor
+ buffer.set_text(data.read())
+ data.close()
+
+ def write_file(self, tmp_file):
+
+ # save metadata
+ self.metadata['entry'] = self.label_historial.get_label()
+ self.metadata['fila'] = self._filas_index
+ self.metadata['columna'] = self._columnas_index
+ self.metadata['flag'] = self._flag_fila_columna
+
+ # save data
+ data = open(tmp_file, "w")
+ buffer = self.entry_visor.get_text()
+ data.write(buffer)
+ data.close()
diff --git a/CalculArte.activity/activity/activity.info b/CalculArte.activity/activity/activity.info
index 7ba9d8b..36a67d4 100644
--- a/CalculArte.activity/activity/activity.info
+++ b/CalculArte.activity/activity/activity.info
@@ -3,5 +3,5 @@ name = CalculArte
activity_version = 1
bundle_id = org.calcularte.CalculArte
exec = sugar-activity activity.CalculArteActivity
-icon = activity-helloworld
+icon = icon-abacus
license = GPLv2+
diff --git a/CalculArte.activity/activity/activity.info~ b/CalculArte.activity/activity/activity.info~
index 4aa4f7f..7ba9d8b 100644
--- a/CalculArte.activity/activity/activity.info~
+++ b/CalculArte.activity/activity/activity.info~
@@ -1,7 +1,7 @@
[Activity]
-name = HelloWorld
-activity_version = 3
-bundle_id = org.sugarlabs.HelloWorld
-exec = sugar-activity activity.HelloWorldActivity
+name = CalculArte
+activity_version = 1
+bundle_id = org.calcularte.CalculArte
+exec = sugar-activity activity.CalculArteActivity
icon = activity-helloworld
license = GPLv2+
diff --git a/CalculArte.activity/activity/icon-abacus.svg b/CalculArte.activity/activity/icon-abacus.svg
new file mode 100644
index 0000000..f26b42f
--- /dev/null
+++ b/CalculArte.activity/activity/icon-abacus.svg
@@ -0,0 +1,79 @@
+<?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://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="60.0000000" id="svg1" inkscape:version="0.46" sodipodi:docbase="/home/danny/flat/scalable/apps" sodipodi:docname="1194996149691250047edu_miscellaneous.svg" sodipodi:version="0.32" version="1.0" width="60.0000000" x="0" y="0" inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <metadata id="metadata3">
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:title>Part of the Flat Icon Collection (Wed Aug 25 23:23:49 2004)</dc:title>
+ <dc:description/>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>hash</rdf:li>
+ <rdf:li/>
+ <rdf:li>application</rdf:li>
+ <rdf:li>computer</rdf:li>
+ <rdf:li>icons</rdf:li>
+ <rdf:li>theme</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <dc:publisher>
+ <cc:Agent rdf:about="http://www.openclipart.org">
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:publisher>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:rights>
+ <cc:Agent>
+ <dc:title>Danny Allen</dc:title>
+ </cc:Agent>
+ </dc:rights>
+ <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:cx="31.608066" inkscape:cy="32.863054" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:window-height="693" inkscape:window-width="1016" inkscape:window-x="69" inkscape:window-y="39" inkscape:zoom="9.8238822" pagecolor="#ffffff" showgrid="false" inkscape:current-layer="svg1"/>
+ <defs id="defs3">
+ <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 30 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="60 : 30 : 1" inkscape:persp3d-origin="30 : 20 : 1" id="perspective35"/>
+ </defs>
+ <path d="M 4.9891038,55.801049 L 12.138905,43.331437 L 8.7828759,4.6501913 L 4.9891038,55.801049 z " id="path838" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#fec324;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:3.01202209999999980;stroke-dasharray:none;stroke-linejoin:round;stroke-linecap:round;stroke-opacity:1" transform="matrix(1.037509,0.000000,0.000000,1.037509,-0.891976,-0.624781)"/>
+ <path d="M 9.4158295,5.7953598 L 51.023617,5.7953598 M 9.9247933,13.406815 L 50.896376,13.652097 M 9.1613476,21.318754 L 51.278099,21.318754 M 9.9247933,29.971138 L 51.532580,29.971138 M 9.4158295,38.241799 L 52.423267,38.241799" id="path839" sodipodi:nodetypes="cccccccccc" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:none;fill-rule:evenodd;stroke:#333333;stroke-opacity:1.0000000;stroke-width:1.8072132;stroke-linejoin:round;stroke-linecap:round;fill-opacity:0.75;stroke-dasharray:none;" transform="matrix(1.037509,0.000000,0.000000,1.037509,-0.891976,-0.624781)"/>
+ <path d="M 41.922358,55.801049 L 54.391970,43.331437 L 48.538887,4.6501913 L 41.922358,55.801049 z " id="path837" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" style="fill:#fec324;fill-rule:evenodd;stroke:#333333;stroke-opacity:1;stroke-width:3.97775079999999990;stroke-linejoin:round;stroke-linecap:round;fill-opacity:1;stroke-dasharray:none" transform="matrix(0.594885,0.000000,0.000000,1.037509,23.45985,-0.624781)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path840" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="translate(0.000000,0.381723)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path841" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(3.543307,0.381723)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path842" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(7.086614,0.381723)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path843" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(10.62992,0.381723)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path844" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(28.34647,0.381723)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path845" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,30.91955,8.231782)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path846" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,34.46286,8.231782)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path847" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="matrix(-1.000000,0.000000,0.000000,1.000000,38.00617,8.231782)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path848" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(28.34644,16.69861)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path849" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(3.543306,16.69861)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path850" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(-1.125000e-6,16.69861)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path851" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="translate(24.80313,16.69861)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path852" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="translate(21.25982,16.69861)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path853" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,52.17940,8.231782)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path854" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="matrix(-1.000000,0.000000,0.000000,1.000000,55.72271,8.231782)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path855" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,59.88279,25.18488)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path856" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,56.33948,25.18488)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path857" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,52.79617,25.18488)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path858" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="matrix(-1.000000,0.000000,0.000000,1.000000,42.16625,25.18488)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path859" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="matrix(-1.000000,0.000000,0.000000,1.000000,31.53632,25.18488)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path860" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="matrix(-1.000000,0.000000,0.000000,1.000000,59.88279,33.77895)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path861" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="matrix(-1.000000,0.000000,0.000000,1.000000,52.01329,33.77895)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path862" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.69999999)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#feaa24;fill-opacity:1;fill-rule:evenodd;stroke:#333333;stroke-width:1pt;stroke-opacity:1" transform="matrix(-1.000000,0.000000,0.000000,1.000000,48.46998,33.77895)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path863" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,35.80420,33.77895)"/>
+ <path d="M 17.177527 5.1591549 A 1.7177527 2.9265416 0 1 0 13.742021,5.1591549 A 1.7177527 2.9265416 0 1 0 17.177527 5.1591549 z" id="path864" sodipodi:cx="15.459774" sodipodi:cy="5.1591549" sodipodi:fill-cmyk="(0.0000000 0.0000000 0.0000000 0.50000000)" sodipodi:rx="1.7177527" sodipodi:ry="2.9265416" sodipodi:stroke-cmyk="(0.0000000 0.0000000 0.0000000 0.80000001)" sodipodi:type="arc" style="fill:#7f7f7f;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#333333;stroke-width:1.0000000pt;stroke-opacity:1.0000000;" transform="matrix(-1.000000,0.000000,0.000000,1.000000,31.53632,33.77895)"/>
+</svg> \ No newline at end of file