+++ /dev/null
-/*! @page tutorial_msg SimGrid Tutorial with MSG
-
-SimGrid is a toolkit providing the core functionalities for the
-simulation of distributed applications in heterogeneous distributed
-environments.
-
-The project goal is both to facilitate research and to help improving
-real applications in the area of distributed and parallel systems,
-ranging from simple network of workstations to Computational Grids to
-Clouds and to supercomputers.
-
-\tableofcontents
-
-\section Scenario
-The goal of this practical session is to illustrate various usage of
-the MSG interface. To this end we will use the following simple setting:
-
-> Assume we have a (possibly large) bunch of (possibly large) data to
-> process and which originally reside on a server (a.k.a. master). For
-> sake of simplicity, we assume all input file require the same amount
-> of computation. We assume the server can be helped by a (possibly
-> large) set of worker machines. What is the best way to organize the
-> computations ?
-
-Although this looks like a very simple setting it raises several
-interesting questions:
-
-- Which algorithm should the master use to send workload?
-
- The most obvious algorithm would be to send tasks to workers in a
- round-robin fashion. This is the initial code we provide you.
-
- A less obvious but probably more efficient approach would be to set up
- a request mechanism where a client first ask for tasks, which allows
- the server to decide which request to answer and possibly to send
- the tasks to the fastest machines. Maybe you can think of a
- smarter mechanism...
-
-- How many tasks should the client ask for?
-
- Indeed, if we set up a request mechanism so that workers only
- send request whenever they have no more task to process, they are
- likely to be poorly exploited since they will have to wait for the
- master to consider their request and for the input data to be
- transferred. A client should thus probably request a pool of tasks
- but if it requests too many tasks, it is likely to lead to a poor
- load-balancing...
-
-- How is the quality of such algorithm dependent on the platform
- characteristics and on the task characteristics?
-
- Whenever the input communication time is very small compared to
- processing time and workers are homogeneous, it is likely that the
- round-robin algorithm performs very well. Would it still hold true
- when transfer time is not negligible and the platform is, say,
- a volunteer computing system ?
-
-- The network topology interconnecting the master and the workers
- may be quite complicated. How does such a topology impact the
- previous result?
-
- When data transfers are the bottleneck, it is likely that a good
- modeling of the platform becomes essential. In this case, you may
- want to be able to account for complex platform topologies.
-
-- Do the algorithms depend on a perfect knowledge of this
- topology?
-
- Should we still use a flat master worker deployment or should we
- use a
-
-- How is such an algorithm sensitive to external workload variation?
-
- What if bandwidth, latency and power can vary with no warning?
- Shouldn't you study whether your algorithm is sensitive to such
- load variations?
-
-- Although an algorithm may be more efficient than another, how
- does it interfere with other applications?
-
- As you can see, this very simple setting may need to evolve way
- beyond what you initially imagined.
-
- <blockquote> Premature optimization is the root of all evil. -- D.E.Knuth</blockquote>
-
- Furthermore, writing your own simulator is much harder than you
- may imagine. This is why you should rely on an established and flexible
- one.
-
-The following figure is a screenshot of [triva][fn:1] visualizing a [SimGrid
-simulation][fn:2] of two master worker applications (one in light gray and
-the other in dark gray) running in concurrence and showing resource
-usage over a long period of time.
-
-![Test](./sc3-description.png)
-
-\section Prerequisites
-
-Of course, you need to install SimGrid before taking this tutorial.
-Please refer to the relevant Section: \ref install.
-
-## Tutorials
-
-A lot of information on how to install and use Simgrid are
-provided by the [online documentation][fn:4] and by several tutorials:
-
-- http://simgrid.gforge.inria.fr/tutorials/simgrid-use-101.pdf
-- http://simgrid.gforge.inria.fr/tutorials/simgrid-tracing-101.pdf
-- http://simgrid.gforge.inria.fr/tutorials/simgrid-platf-101.pdf
-
-## Installing the visualization softwares
-
-Several tools can be used to visualize the result of SimGrid
-simulations and get a better understanding of simulations.
-
-- [pajeng][fn:5] provides a Gantt-chart visualization.
-- [Vite][fn:6] also provides a Gantt-chart visualization.
-
-Under Debian or Ubuntu, this is really easy with apt-get, while you
-may have to install from the source on other systems. Check the
-documentation of each software for more details.
-
-~~~~{.sh}
-sudo apt-get install pajeng vite
-~~~~
-
-\section intro_start Let's get started
-
-\anchor intro_setup
-## Setting up and Compiling
-
-The corresponding source files can be obtained
-[online on GitLab](https://gitlab.inria.fr/simgrid/simgrid/tree/master/doc/msg-tuto-src).
-If you find the right button on the top right of the interface, you can download the whole
-directory in one archive file. If you wish, you can find other platform file in
-[this GitLab directory](https://gitlab.inria.fr/simgrid/simgrid/tree/master/examples/platforms).
-
-As you can see, there is already a little Makefile that compiles
-everything for you. If you struggle with the compilation, then you should double check
-your @ref install "SimGrid installation".
-On need, please refer to the @ref install_yours_trouble section.
-
-Once the tiny example has been compiled and it can be easily run as follows:
-
-~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml
-~~~~
-
-For a more "fancy" output, you can use simgrid-colorizer.
-
-~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml 2>&1 | simgrid-colorizer
-~~~~
-
-If you installed SimGrid to a non-standard path, you may have to
-specify the full path to simgrid-colorizer on the above line, such as
-\c /opt/simgrid/bin/simgrid-colorizer. If you did not install it at all,
-you can find it in <simgrid_root_directory>/bin/colorize.
-
-For a classical Gantt-Chart visualization, you can produce a [Paje][fn:5] trace:
-
-~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
- --cfg=tracing/msg/process:yes
-pajeng simgrid.trace
-~~~~
-
-Alternatively, you can use [vite][fn:6].
-
-~~~~{.sh}
-./masterworker0 platforms/platform.xml deployment0.xml --cfg=tracing:yes \
- --cfg=tracing/msg/process:yes --cfg=tracing/basic:yes
-vite simgrid.trace
-~~~~
-
-## Getting Rid of Workers in the Deployment File
-
-In the previous example, the deployment file `deployment0.xml`
-is tightly connected to the platform file `platform.xml` and a
-worker process is launched on each host:
-
-~~~~{.xml}
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
- <!-- The master process (with some arguments) -->
- <process host="Tremblay" function="master">
- <argument value="20"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- <argument value="Jupiter"/> <!-- First worker -->
- <argument value="Fafard"/> <!-- Second worker -->
- <argument value="Ginette"/> <!-- Third worker -->
- <argument value="Bourassa"/> <!-- Last worker -->
- <argument value="Tremblay"/> <!-- Me! I can work too! -->
- </process>
- <!-- The worker process (with no argument) -->
- <process host="Tremblay" function="worker" on_failure="RESTART"/>
- <process host="Jupiter" function="worker" on_failure="RESTART"/>
- <process host="Fafard" function="worker" on_failure="RESTART"/>
- <process host="Ginette" function="worker" on_failure="RESTART"/>
- <process host="Bourassa" function="worker" on_failure="RESTART"/>
-</platform>
-~~~~
-
-This is ok as the platform is rather small but will be painful when
-using larger platforms. Instead, modify the simulator
-`masterworker0.c` into `masterworker1.c` so that the master
-launches a worker process on all the other machines at startup. The
-new deployment file `deployment1.xml` should thus now simply be:
-
-~~~~{.xml}
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
- <!-- The master process (with some arguments) -->
- <process host="Tremblay" function="master">
- <argument value="20"/> <!-- Number of tasks -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- </process>
-</platform>
-~~~~
-
-To this end you may need the following MSG functions (click on the links
-to see their descriptions):
-
-~~~~{.c}
-int MSG_get_host_number(void);
-xbt_dynar_t MSG_hosts_as_dynar(void);
-void * xbt_dynar_to_array (xbt_dynar_t dynar);
-msg_process_t MSG_process_create(const char *name, xbt_main_func_t code,
- void *data, msg_host_t host);
-~~~~
-
-\note
- It may avoid bugs later to avoid launching a worker on
- the master host so you probably want to remove it from the host
- list.
-
-The `data` field of the @ref MSG_process_create can be used to pass
-a channel name that will be private between master
-and workers (e.g., `master_name:worker_name`). Adding the
-`master_name` in the channel name will allow to easily have several
-masters and a worker per master on each machine. To this end, you
-may need to use the following functions:
-
-~~~~{.c}
-msg_host_t MSG_host_self(void);
-const char * MSG_host_get_name(msg_host_t host);
-msg_process_t MSG_process_self(void);
-void * MSG_process_get_data(msg_process_t process);
-~~~~
-
-If you are not too familiar with string
-manipulation in C, you may want to use the following functions
-(see the C reference for details):
-
-~~~~{.c}
-char *strcpy(char *dest, const char *src);
-char *strcat(char *dest, const char *src);
-~~~~
-
-## Setting up a Time Limit Mechanism
-
-In the current version, the number of tasks is defined through the
-worker arguments. Hence, tasks are created at the very beginning of
-the simulation. Instead, create tasks as needed and provide a time
-limit indicating when it stops sending tasks. To this end, you will
-obviously need to know what time it is:
-
-~~~~{.c}
-double MSG_get_clock(void);
-~~~~
-
-Otherwise, a quite effective way of terminating the simulation
-would be to use some of the following functions:
-
-~~~~{.c}
-void MSG_process_kill(msg_process_t process);
-int MSG_process_killall(int reset_PIDs);
-~~~~
-
-Anyway, the new deployment `deployment2.xml` file should thus look
-like this:
-
-~~~~{.xml}
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
- <process host="Tremblay" function="master">
- <argument value="3600"/> <!-- Simulation timeout -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="1000000"/> <!-- Communication size of tasks -->
- </process>
-</platform>
-~~~~
-
-It may also be a good idea to transform most of the `XBT_INFO` into
-`XBT_DEBUG` (e.g., keep the information on the total number of
-tasks processed). These debug messages can be activated as follows:
-
-~~~~{.sh}
-./masterworker2 platforms/platform.xml deployment2.xml --log=msg_test.thres:debug
-~~~~
-
-## Using the Tracing Mechanism
-
-SimGrid can trace all resource consumption and the outcome can be
-displayed as illustrated in the section \ref intro_setup. However, when several
-masters are deployed, it is hard to understand what happens.
-
-~~~~{.xml}
-<?xml version='1.0'?>
-<!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
-<platform version="3">
- <process host="Tremblay" function="master">
- <argument value="3600"/> <!-- Simulation timeout -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="10"/> <!-- Communication size of tasks -->
- </process>
- <process host="Fafard" function="master">
- <argument value="3600"/> <!-- Simulation timeout -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="10"/> <!-- Communication size of tasks -->
- </process>
- <process host="Jupiter" function="master">
- <argument value="3600"/> <!-- Simulation timeout -->
- <argument value="50000000"/> <!-- Computation size of tasks -->
- <argument value="10"/> <!-- Communication size of tasks -->
- </process>
-</platform>
-~~~~
-
-So let's use categories to track more precisely who does what and when:
-
-~~~~{.c}
-void TRACE_category(const char *category);
-void MSG_task_set_category (msg_task_t task, const char *category);
-~~~~
-
-The outcome can then be visualized as a Gantt-chart as follows:
-
-~~~~{.sh}
-./masterworker3 platforms/platform.xml deployment3.xml --cfg=tracing:yes \
- --cfg=tracing/msg/process:yes
-pajeng simgrid.trace
-~~~~
-
-Right now, you should realize that nothing is behaving like you expect. Most
-workers are idle even though input data are ridiculous and there are several
-masters deployed on the platform. So it should now be obvious that round robin
-is actually very bad.
-
-## Improving the Scheduling
-
-Instead of a round-robin scheduling, let's implement a first-come
-first-served mechanism. To this end, workers need to send a tiny
-request first. A possible way to implement such a request with MSG
-is to send on a specific channel (e.g., the name of the master
-name) a task with payload 0 and whose attached data is the worker
-name. This way, the master can keep track of which workers are idle
-and willing to work.
-
-To know whether it has pending requests, the master can use the
-following [function][fn:7]:
-
-~~~~{.c}
-int MSG_task_listen(const char *alias);
-~~~~
-
-If so, it should get the request and push the corresponding host
-into a dynar so that they can later be retrieved when sending a
-real [task][fn:7].
-
-~~~~{.c}
-xbt_dynar_t xbt_dynar_new(const unsigned long elm_size,
- void_f_pvoid_t const free_f);
-void xbt_dynar_push(xbt_dynar_t const dynar, const void *src);
-void xbt_dynar_shift(xbt_dynar_t const dynar, void *const dst);
-unsigned long xbt_dynar_length(const xbt_dynar_t dynar);
-~~~~
-
-As you will soon realize, with such simple mechanisms, simple
-deadlocks will soon appear. They can easily be removed with a
-simple polling mechanism, hence the need for the following
-[function][fn:7]:
-
-~~~~{.c}
-msg_error_t MSG_process_sleep(double nb_sec);
-~~~~
-
-As you should quickly realize, on the simple previous example, it
-will double the throughput of the platform but will be quite
-ineffective when input size of the tasks is not negligible anymore.
-
-From this, many things can easily be added. For example, you could:
-- add a performance measurement mechanism;
-- enable the master to make smart scheduling choices using
- measurement information;
-- allow workers to have several pending requests so as to overlap
- communication and computations as much as possible;
-- ...
-
-## Using More Elaborate Platforms
-
-SimGrid offers a rather powerful platform modeling mechanism. The
-`src/examples/platforms/` repository comprises a variety of platforms ranging
-from simple to elaborate. Associated to a good
-visualization tool to ensure your simulation is meaningful, they
-can allow you to study to which extent your algorithm scales...
-
-What is the largest number of tasks requiring 50e6 flops and 1e5
-bytes that you manage to distribute and process in one hour on
-`g5k.xml` (you should use `deployment_general.xml`)?
-
-\section intro_todo TODO: Points to improve for the next time
-
-- Propose equivalent exercises and skeleton in java.
-- Propose a virtualbox image with everything (simgrid, pajeng, ...) already set
- up.
-- Ease the installation on mac OS X (binary installer) and
- windows.
-- Explain that programming in C or java and having a working
- development environment is a prerequisite.
-
-[fn:1]: http://triva.gforge.inria.fr/index.html
-[fn:2]: http://hal.inria.fr/inria-00529569
-[fn:3]: http://hal.inria.fr/hal-00738321
-[fn:4]: http://simgrid.gforge.inria.fr/simgrid/latest/doc/
-[fn:5]: https://github.com/schnorr/pajeng/
-[fn:6]: http://vite.gforge.inria.fr/
-
-
-
-
-
-*/
--- /dev/null
+<?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"
+ width="86.313606mm"
+ height="41.106529mm"
+ viewBox="0 0 86.313605 41.106529"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
+ sodipodi:docname="overview.svg">
+ <defs
+ id="defs2">
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1496"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Mend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1502"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.4,0,0,-0.4,-4,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-6"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-3"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-3"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend-9"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path1496-8"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.8"
+ inkscape:cx="75.667359"
+ inkscape:cy="76.402423"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1019"
+ inkscape:window-x="0"
+ inkscape:window-y="32"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-29.950586,-101.20699)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="47.823597"
+ y="119.2951"
+ id="text817"><tspan
+ sodipodi:role="line"
+ id="tspan815"
+ x="47.823597"
+ y="119.2951"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.16372044px">Master</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.43658787;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path819"
+ cx="55.781475"
+ cy="121.76025"
+ rx="12.693116"
+ ry="8.3518229" />
+ <g
+ id="g5649"
+ transform="matrix(0.61878596,0,0,0.61878596,10.598982,54.807393)">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,62.219405,60.11345)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-15"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-06"
+ y="107.92625"
+ x="85.694588"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="107.92625"
+ x="85.694588"
+ id="tspan815-8-50"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ id="g5641"
+ transform="matrix(0.61878596,0,0,0.61878596,11.505291,54.982808)">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ id="g1489"
+ transform="matrix(0.61878596,0,0,0.61878596,19.779021,54.251913)">
+ <g
+ transform="translate(0.29020366)"
+ id="g1294">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3"><tspan
+ sodipodi:role="line"
+ id="tspan815-8"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-6"
+ transform="translate(0.29020366,13.157293)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-0"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-89"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-2"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-2"
+ transform="translate(0.29020366,26.31459)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-3"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-18"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-3"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-4"
+ transform="translate(0.29020366,52.629172)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-2"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-2"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-4"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ <g
+ id="g1294-5"
+ transform="translate(0.29020366,39.471889)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="125.17461"
+ y="85.676834"
+ id="text817-3-1"><tspan
+ sodipodi:role="line"
+ id="tspan815-8-75"
+ x="125.17461"
+ y="85.676834"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px">Worker</tspan></text>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path1289-7"
+ cx="138.98015"
+ cy="82.78347"
+ rx="16.30344"
+ ry="6.5481029" />
+ </g>
+ </g>
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+ d="m 68.602797,121.43899 27.144559,-16.2551"
+ id="path1491"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-1)"
+ d="m 68.602797,121.43899 27.144559,-8.05361"
+ id="path1491-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-8)"
+ d="m 68.602797,121.43899 27.144559,0.14787"
+ id="path1491-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-3)"
+ d="m 68.602797,121.43899 27.144559,8.34936"
+ id="path1491-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend-9)"
+ d="m 68.602797,121.43899 27.144559,16.55085"
+ id="path1491-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.80246687px;line-height:4.0930109px;font-family:'Amiri Quran Colored';-inkscape-font-specification:'Amiri Quran Colored';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.16372044px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="58.617321"
+ y="135.63525"
+ id="text4842"><tspan
+ sodipodi:role="line"
+ id="tspan4840"
+ x="58.617321"
+ y="135.63525"
+ style="text-align:center;text-anchor:middle;fill:#ff0000;stroke-width:0.16372044px">How should the master</tspan><tspan
+ sodipodi:role="line"
+ x="58.617321"
+ y="139.81946"
+ style="text-align:center;text-anchor:middle;fill:#ff0000;stroke-width:0.16372044px"
+ id="tspan5522">distribute the tasks?</tspan></text>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,12.703959,52.631832)"
+ id="g5641-0">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-4"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-8"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-4"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,14.01957,54.912224)"
+ id="g5641-8">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-1"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-6"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-8"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,12.236186,57.484974)"
+ id="g5641-5">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-2"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-1"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-9"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,14.896644,57.777332)"
+ id="g5641-9">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-6"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-0"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-6"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,17.586337,57.046437)"
+ id="g5641-4">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-9"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-9"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-0"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,17.264743,54.093622)"
+ id="g5641-89">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-3"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-14"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-89"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,18.083346,59.765366)"
+ id="g5641-6">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-7"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-7"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-3"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,15.422888,60.262374)"
+ id="g5641-7">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-12"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-2"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-1"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,19.282013,61.987286)"
+ id="g5641-50">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-90"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-4"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-01"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,20.539152,59.414536)"
+ id="g5641-3">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-74"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-11"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-30"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,20.042144,56.05242)"
+ id="g5641-32">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-17"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-5"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-65"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.614894,54.473687)"
+ id="g5641-42">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-21"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-72"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-41"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.84878,56.987965)"
+ id="g5641-65">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-78"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-59"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-2"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,23.024194,59.882309)"
+ id="g5641-73">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-64"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-79"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-7"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.081987,59.18065)"
+ id="g5641-2">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-216"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-3"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-02"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.713888,57.572681)"
+ id="g5641-1">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-5"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-65"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-00"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.929825,56.841786)"
+ id="g5641-34">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-66"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-02"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-5"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.129172,55.029167)"
+ id="g5641-895">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-0"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-60"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-83"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.023516,54.269036)"
+ id="g5641-78">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-210"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-58"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-55"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,22.264064,62.133465)"
+ id="g5641-07">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-38"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-23"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-07"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,25.450765,61.431807)"
+ id="g5641-77">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-69"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-119"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-08"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,28.052752,61.519514)"
+ id="g5641-98">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-8"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-03"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-70"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,31.151746,59.794602)"
+ id="g5641-69">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-217"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-797"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-62"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,31.736462,57.309559)"
+ id="g5641-71">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-58"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-84"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-56"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.61878596,0,0,0.61878596,34.163033,55.263054)"
+ id="g5641-56">
+ <path
+ transform="matrix(0.53833311,-0.02069077,0.02257551,0.49338976,28.863006,60.727662)"
+ inkscape:transform-center-y="-0.1233255"
+ inkscape:transform-center-x="0.088729829"
+ d="m 44.366742,100.02236 c -0.493309,0.45536 -2.681943,0.19034 -3.352755,0.16351 -0.670812,-0.0268 -2.873621,0.0625 -3.328983,-0.430784 -0.455362,-0.493309 -0.19035,-2.681944 -0.163517,-3.352755 0.02683,-0.670812 -0.06252,-2.873621 0.430786,-3.328983 0.493309,-0.455362 2.681944,-0.19035 3.352756,-0.163517 0.670811,0.02683 2.873621,-0.06252 3.328983,0.430786 0.455362,0.493309 0.190349,2.681944 0.163517,3.352755 -0.02683,0.670812 0.06252,2.873621 -0.430787,3.328988 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.2"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.610775"
+ sodipodi:arg1="0.82537685"
+ sodipodi:r2="3.6409302"
+ sodipodi:r1="4.7284808"
+ sodipodi:cy="96.547852"
+ sodipodi:cx="41.159508"
+ sodipodi:sides="4"
+ id="path823-226-84"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.70555556;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ sodipodi:type="star" />
+ <text
+ id="text817-8-91-88"
+ y="108.54047"
+ x="52.338184"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.76111126px;line-height:6.61458349px;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.82222223px;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.26458332px"
+ y="108.54047"
+ x="52.338184"
+ id="tspan815-8-04-38"
+ sodipodi:role="line">T</tspan></text>
+ </g>
+ <ellipse
+ style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.44087529;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path5967"
+ cx="75.089897"
+ cy="120.15488"
+ rx="3.0595784"
+ ry="6.408577" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:13.57525826px;line-height:3.97712588px;font-family:'Amiri Quran Colored';-inkscape-font-specification:'Amiri Quran Colored';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:0.15908505px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="72.321075"
+ y="130.08104"
+ id="text5965"
+ transform="scale(1.0291379,0.97168708)"><tspan
+ sodipodi:role="line"
+ id="tspan5963"
+ x="72.321075"
+ y="130.08104"
+ style="font-size:13.57525826px;fill:#ff0000;stroke-width:0.15908505px">?</tspan></text>
+ </g>
+</svg>
--- /dev/null
+/*! @page tutorial_msg SimGrid Tutorial with MSG
+
+\tableofcontents
+
+\section tuto-msg-intro Introduction
+
+\subsection tuto-msg-intro-settings Settings
+
+This tutorial will guide your create and run your first SimGrid
+simulator. Let's consider the following scenario:
+
+> Assume we have a (possibly large) bunch of (possibly large) data to
+> process and which originally reside on a server (a.k.a. master). For
+> sake of simplicity, we assume all input file require the same amount
+> of computation. We assume the server can be helped by a (possibly
+> large) set of worker machines. What is the best way to organize the
+> computations ?
+
+\htmlonly
+<div align="center">
+\endhtmlonly
+\htmlinclude tuto-msg/overview.svg
+\htmlonly
+</div>
+\endhtmlonly
+
+\subsection tuto-msg-intro-questions Raised Questions
+
+Although this looks like a very simple setting it raises several
+interesting questions:
+
+- Which algorithm should the master use to send workload?
+
+ The provided code sends the tasks to the workers with a trivial
+ round-robin algorithm. It would probably be more efficient if the
+ workers were asking for tasks, to let the master distribute the
+ tasks in a more cleaver way.
+
+- Should the worker specify how many tasks they want? Or should the
+ master decide everything?
+
+ The workers will starve if they don't get the tasks fast
+ enough. One possibility to reduce latency would be to send tasks
+ in pools instead of one by one. But if the pools are too big, the
+ load balancing will likely get uneven, in particular when
+ distributing the last tasks.
+
+- How does the quality of such algorithm dependent on the platform
+ characteristics and on the task characteristics?
+
+ Whenever the input communication time is very small compared to
+ processing time and workers are homogeneous, it is likely that the
+ round-robin algorithm performs very well. Would it still hold true
+ when transfer time is not negligible and the platform is, say, a
+ volunteer computing system ? What if some tasks are performed
+ faster on some specific nodes?
+
+- The network topology interconnecting the master and the workers
+ may be quite complicated. How does such a topology impact the
+ previous result?
+
+ When data transfers are the bottleneck, it is likely that a good
+ modeling of the platform becomes essential. The SimGrid platform
+ models are particularly handy to account for complex platform
+ topologies.
+
+- What topology to use for the application?
+
+ Is a flat master worker deployment sufficient? Should we go for a
+ hierarchical algorithm, with some forwarders taking large pools of
+ tasks from the master, each of them distributing their tasks to a
+ sub-pool of workers? Or should we introduce super-peers,
+ dupplicating the master's role in a peer-to-peer manner? Do the
+ algorithms require a perfect knowledge of the network?
+
+- How is such an algorithm sensitive to external workload variation?
+
+ What if bandwidth, latency and computing speed can vary with no
+ warning? Shouldn't you study whether your algorithm is sensitive
+ to such load variations?
+
+- Although an algorithm may be more efficient than another, how
+ does it interfere with other applications?
+
+
+- Etc, etc.
+
+As you can see, this very simple setting may need to evolve way beyond
+what you initially imagined. And this is a good news.
+
+But don't believe the fools saying that all you need to study such
+settings is a simple discrete event simulator. Do you really want to
+reinvent the wheel, write your own tool, debug it, optimize it and
+validate its models against real settings for ages, or do you prefer
+to sit on the shoulders of a giant?<br>
+With SimGrid, you can forget about most technical details (but not
+all), and focus on your algorithm. The whole simulation mechanism is
+already working.
+
+\subsection tuto-msg-intro-goal Envisionned Study
+
+
+The following figure is a screenshot of [triva][fn:1] visualizing a [SimGrid
+simulation][fn:2] of two master worker applications (one in light gray and
+the other in dark gray) running in concurrence and showing resource
+usage over a long period of time.
+
+![Test](./sc3-description.png)
+
+\section tuto-msg-starting Getting Started
+
+\subsection tuto-msg-prerequesite Prerequisite
+
+In this example, we use Pajeng and Vite to visualize the result of
+SimGrid simulations. These external tools are usually very easy to
+install. On Debian and Ubuntu for example, you can get them as follows:
+
+~~~~{.sh}
+sudo apt-get install pajeng vite
+~~~~
+
+\subsection tuto-msg-setup Setting up and Compiling
+
+The corresponding source files can be obtained
+[online on GitLab](https://gitlab.inria.fr/simgrid/simgrid/tree/master/doc/tuto-msg/src).
+There is a button on the top right to download the whole
+directory in one archive file. If you wish, other platform files are available from
+[this GitLab directory](https://gitlab.inria.fr/simgrid/simgrid/tree/master/examples/platforms).
+
+As you can see, there is already a little Makefile that compiles
+everything for you. If you struggle with the compilation, then you should double check
+your @ref install "SimGrid installation".
+On need, please refer to the @ref install_yours_trouble section.
+
+\section tuto-msg-ex0 Discovering the provided simulator
+
+Please compile and execute the provided simulator as follows:
+
+~~~~{.sh}
+make masterworker
+./masterworker examples/platforms/small_platform.xml deployment0.xml
+~~~~
+
+For a more "fancy" output, you can use simgrid-colorizer.
+
+~~~~{.sh}
+./masterworker examples/platforms/small_platform.xml deployment0.xml 2>&1 | simgrid-colorizer
+~~~~
+
+If you installed SimGrid to a non-standard path, you may have to
+specify the full path to simgrid-colorizer on the above line, such as
+\c /opt/simgrid/bin/simgrid-colorizer. If you did not install it at all,
+you can find it in <simgrid_root_directory>/bin/colorize.
+
+For a classical Gantt-Chart visualization, you can produce a [Paje][fn:5] trace:
+
+~~~~{.sh}
+./masterworker platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+ --cfg=tracing/msg/process:yes
+pajeng simgrid.trace
+~~~~
+
+Alternatively, you can use [vite][fn:6].
+
+~~~~{.sh}
+./masterworker platforms/platform.xml deployment0.xml --cfg=tracing:yes \
+ --cfg=tracing/msg/process:yes --cfg=tracing/basic:yes
+vite simgrid.trace
+~~~~
+
+\subsection tuto-msg-exo0-source Understanding this source code
+
+Explore the \ref doc/tuto-msg/masterworker.c source file. It contains 3 functions:
+ - \c master: that's the code executed by the master process.<br>
+ It creates a large array containing all tasks,
+ dispatches all tasks to the workers and then dispatch
+ specific tasks which name is "finalize".
+ - \c worker: each workers will execute this function.<br>
+ That's an infinite loop waiting for incomming tasks.
+ We exit the loop if the name of the received task is "finalize", or process the task otherwise.
+ - \c main: this setups the simulation.
+
+How does SimGrid know that we need one master and several workers?
+Because it's written in the deployment file (called \c
+deployment0.xml), that we pass to MSG_create_environment() during the setup.
+
+\include doc/tuto-msg/deployment0.xml
+
+\section tuto-msg-exo1 Exercise 1: Simplifying the deployment file
+
+In the provided example, the deployment file `deployment0.xml` is
+tightly connected to the platform file `small_platform.xml` and adding
+more workers quickly becomes a pain: You need to start them (at the
+bottom of the file), add to inform the master that they are available
+(in the master parameters list).
+
+Instead, modify the simulator `masterworker.c` into `masterworker-exo1.c`
+so that the master launches a worker process on all the other machines
+at startup. The new deployment file `deployment1.xml` should be as
+simple as:
+
+\include doc/tuto-msg/deployment1.xml
+
+For that, the master needs to retrieve the list of hosts declared in
+the platform, with the following functions (follow the links for their
+documentation):
+
+~~~~{.c}
+int MSG_get_host_number(void);
+xbt_dynar_t MSG_hosts_as_dynar(void);
+void * xbt_dynar_to_array (xbt_dynar_t dynar);
+~~~~
+
+Then, the master should start the worker processes with the following function:
+
+~~~~{.c}
+msg_process_t MSG_process_create(const char *name, xbt_main_func_t code, void *data, msg_host_t host);
+~~~~
+
+\subsection tuto-msg-exo1-config Increasing configurability
+
+The worker processes wait for incomming messages on a channel which
+name they need to know beforehand. In the provided code, each worker
+uses the name of its host as a channel name. You can see this in the
+receiver source code:
+
+~~~~{.c}
+ int res = MSG_task_receive(&(task), MSG_host_get_name(MSG_host_self()));
+ xbt_assert(res == MSG_OK, "MSG_task_receive failed");
+~~~~
+
+This way, you can have at most one worker per host. To later study the
+behavior of concurrent applications on the platform, we need to
+alleviate this. Several solutions exist:
+
+Now that the the master creates the workers, it knows their PID
+(process ID -- given by @ref MSG_process_get_pid()), so you could use
+it in the channel name.
+
+Another possibility for the master is to determine a channel name
+before the process creation, and give that name as a parameter to the
+starting process. This is what the `data` parameter of @ref
+MSG_process_create is meant for. You can pass any arbitrary pointer,
+and the created process can retrieve this value later with the @ref
+MSG_process_get_data and @ref MSG_process_self functions. Since we
+want later to study concurrent applications, it is advised to use a
+channel name such as `master_name:worker_name`.
+
+A third possibility would be to inverse the communication architecture
+and have the workers pulling work from the master. This require to
+pass the master's channel to the workers.
+
+\subsection tuto-msg-exo1-wrapup Wrap up
+
+In this exercise, we reduced the amount of configuration that our
+simulator requests. This is both a good idea, and a dangerous
+trend. This simplification is an application of the good old DRY/SPOT
+programming principle (Don't Repeat Yourself / Single Point Of Truth
+-- <a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself">more on wikipedia</a>),
+and you really want your programming artefacts to follow these software engineering principles.
+
+But at the same time, you should be careful in separating your
+scientific contribution (the master/wokers algorithm) and the
+artefacts used to test it (platform, deployment and workload). This is
+why SimGrid forces you to expres your platform and deployment files in
+XML instead of using a programming interface: it forces a clear
+separation of concerns between things that are of very different
+nature.
+
+If you struggle with this exercise, have a look at
+our solution in \ref doc/tuto-msg/masterworker-sol1.c
+This is not perfect at all, and many other solutions would have been possible, of course.
+
+\section tuto-msg-exo2 Exercise 2: Infinite amount of work, fixed experiment duration
+
+In the current version, the number of tasks is defined through the
+worker arguments. Hence, tasks are created at the very beginning of
+the simulation. Instead, have the master dispatching tasks for a
+predetermined amount of time. The tasks must now be created on demand
+instead of beforehand.
+
+Of course, usual time functions like `gettimeofday` will give you the
+time on your real machine, which is prety useless in the
+simulation. Instead, retrieve the time in the simulated world with
+@ref MSG_get_clock.
+
+You can still stop your workers with a specific task as previously,
+but other methods exist. You can forcefully stop processes with the
+following functions, but be warned that SimGrid traditionnally had
+issues with forcefully stopping procsses involved in computations or
+communications. We hope that it's better now, but YMMV.
+
+~~~~{.c}
+void MSG_process_kill(msg_process_t process);
+int MSG_process_killall(int reset_PIDs);
+~~~~
+
+Anyway, the new deployment `deployment2.xml` file should thus look
+like this:
+
+\include doc/tuto-msg/deployment2.xml
+
+\subsection tuto-msg-exo2-verbosity Controlling the message verbosity
+
+Not all messages are equally informative, so you probably want to
+change most of the `XBT_INFO` into `XBT_DEBUG` so that they are hidden
+by default. You could for example show only the total number of tasks
+processed by default. You can still see the debug messages as follows:
+
+~~~~{.sh}
+./masterworker examples/platforms/small_platform.xml deployment2.xml --log=msg_test.thres:debug
+~~~~
+
+\subsection tuto-msg-exo2-wrapup Wrap up
+
+Our imperfect solution to this exercise is available as @ref doc/tuto-msg/masterworker-sol2.c
+But there is still much to improve in that code.
+
+\section tuto-msg-exo3 Exercise 3: Understanding how competing applications behave
+
+It is now time to start several applications at once, with the following `deployment3.xml` file.
+
+\include doc/tuto-msg/deployment3.xml
+
+Things happen when you do so, but it remains utterly difficult to
+understand what's happening exactely. Even visualizations with pajeng
+and Vite contain too much information to be useful: it is impossible
+to understand which task belong to which application. To fix this, we
+will categorize the tasks.
+
+For that, first let each master create its own category of tasks with
+@ref TRACE_category(), and then assign this category to each task using
+@ref MSG_task_set_category().
+
+The outcome can then be visualized as a Gantt-chart as follows:
+
+~~~~{.sh}
+./masterworker examples/platforms/small_platform.xml deployment3.xml --cfg=tracing:yes --cfg=tracing/msg/process:yes
+vite simgrid.trace
+~~~~
+
+\subsection tuto-msg-exo3-further Going further
+
+vite is not enough to understand the situation, because it does not
+deal with categorization. That is why you should switch to R to
+visualize your outcomes, as explained on <a
+href="http://simgrid.gforge.inria.fr/contrib/R_visualization.php">this
+page</a>.
+
+As usual, you can explore our imperfect solution, in @ref doc/tuto-msg/masterworker-sol3.c.
+
+\section tuto-msg-exo4 Exercise 4: Better scheduling: FCFS
+
+You don't need a very advanced visualization solution to notice that
+round-robin is completely suboptimal: most of the workers keep waiting
+for more work. We will move to a First-Come First-Served mechanism
+instead.
+
+For that, your workers should explicitely request for work with a
+message sent to a channel that is specific to their master. The name
+of their private channel name should be attached (using the last
+parameter of @ref MSG_task_create()) to the message sent, so that
+their master can answer.
+
+The master should serve requests in a round-robin manner, until the
+time is up. Things get a bit more complex to stop the workers
+afterward: the master cannot simply send a terminating task, as the
+workers are blocked until their request for work is accepted. So
+instead, the master should wait for incomming requests even once the
+time is up, and answer with a terminating task.
+
+Once it works, you will see that such as simple FCFS schema allows to
+double the amount of tasks handled over time in this case.
+
+\subsection tuto-msg-exo4-further Going further
+
+From this, many things can easily be added. For example, you could:
+- Allow workers to have several pending requests so as to overlap
+ communication and computations as much as possible. Non-blocking communication will probably become handy here.
+- Add a performance measurement mechanism, enabling the master to make smart scheduling choices.
+- Test your code on other platforms, from the `examples/platforms` directory in your archive.<br>
+ What is the largest number of tasks requiring 50e6 flops and 1e5
+ bytes that you manage to distribute and process in one hour on
+ `g5k.xml` (you should use `deployment_general.xml`)?
+- Optimize not only for the amount of tasks handled, but also for the total energy dissipated.
+- And so on. If you come up with a really nice extension, please share it with us so that we can extend this tutorial.
+
+\section tuto-msg-further Where to go from here?
+
+This tutorial is now terminated. You could keep reading the [online documentation][fn:4] or
+[tutorials][fn:7], or you could head up to the example section to read some code.
+
+\subsection tuto-msg-further-todo TODO: Points to improve for the next time
+
+- Propose equivalent exercises and skeleton in java.
+- Propose a virtualbox image with everything (simgrid, pajeng, ...) already set
+ up.
+- Ease the installation on mac OS X (binary installer) and
+ windows.
+- Explain that programming in C or java and having a working
+ development environment is a prerequisite.
+
+
+[fn:1]: http://triva.gforge.inria.fr/index.html
+[fn:2]: http://hal.inria.fr/inria-00529569
+[fn:3]: http://hal.inria.fr/hal-00738321
+[fn:4]: http://simgrid.gforge.inria.fr/simgrid/latest/doc/
+[fn:5]: https://github.com/schnorr/pajeng/
+[fn:6]: http://vite.gforge.inria.fr/
+[fn:7]: http://simgrid.org/tutorials/
+
+
+*/
+
+
+/**
+ * @example doc/tuto-msg/masterworker.c
+ * @example doc/tuto-msg/masterworker-sol1.c
+ * @example doc/tuto-msg/masterworker-sol2.c
+ * @example doc/tuto-msg/masterworker-sol3.c
+ * @example doc/tuto-msg/masterworker-sol4.c
+ */
\ No newline at end of file