aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/.gitignore1
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/COPYING340
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/INSTALL (renamed from contrib/openvpn-tap32/INSTALL)0
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip (renamed from contrib/openvpn-tap32/tap32-signed-i386-2.1.zip)bin33754 -> 33754 bytes
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip (renamed from contrib/openvpn-tap32/tap32-source-2.1.zip)bin53335 -> 53335 bytes
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf (renamed from contrib/openvpn-tap32/tapw32/OemWin2k.inf)0
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat (renamed from contrib/openvpn-tap32/tapw32/tap0901.cat)bin6551 -> 6551 bytes
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys (renamed from contrib/openvpn-tap32/tapw32/tap0901.sys)bin31360 -> 31360 bytes
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf (renamed from contrib/openvpn-tap32/tapw64/OemWin2k.inf)0
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat (renamed from contrib/openvpn-tap32/tapw64/tap0901.cat)bin6587 -> 6587 bytes
-rw-r--r--contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys (renamed from contrib/openvpn-tap32/tapw64/tap0901.sys)bin36736 -> 36736 bytes
-rw-r--r--contrib/Dockerfile56
-rw-r--r--contrib/Makefile.am98
-rw-r--r--contrib/branding/logo/gnunet-logo-big.png (renamed from contrib/gnunet-logo-big.png)bin250489 -> 250489 bytes
-rw-r--r--contrib/branding/logo/gnunet-logo-color.png (renamed from contrib/gnunet-logo-color.png)bin6851 -> 6851 bytes
-rw-r--r--contrib/branding/logo/gnunet-logo-dark-text.svg1411
-rw-r--r--contrib/branding/logo/gnunet-logo.pdf (renamed from contrib/gnunet-logo.pdf)bin91138 -> 91138 bytes
-rw-r--r--contrib/branding/logo/lynXified-amirouche-anonymous-v3.pngbin0 -> 71137 bytes
-rw-r--r--contrib/branding/logo/lynXified-amirouche-v3.svg918
-rw-r--r--contrib/buildslave-0.8.6p1-gnunet-w32.patch202
-rwxr-xr-xcontrib/ci/buildbot/buildbot-update.sh (renamed from contrib/buildbot-update.sh)0
-rw-r--r--contrib/ci/buildbot/ssh-config (renamed from contrib/ssh-config)0
-rw-r--r--contrib/ci/buildbot/ssh-keys (renamed from contrib/ssh-keys)1
-rw-r--r--contrib/ci/docker/Dockerfile32
-rw-r--r--contrib/ci/docker/docker-entrypoint.sh (renamed from contrib/docker-entrypoint.sh)0
-rw-r--r--contrib/conf/colorit/colorit.conf (renamed from contrib/colorit.conf)0
-rw-r--r--contrib/conf/editors/eclipse/gnunet_codingstyle.xml (renamed from contrib/gnunet_codingstyle.xml)0
-rw-r--r--contrib/conf/gnunet/no_autostart_above_core.conf93
-rw-r--r--contrib/conf/gnunet/no_forcestart.conf57
-rw-r--r--contrib/conf/nss/nssswitch.conf (renamed from contrib/nssswitch.conf)0
-rw-r--r--contrib/conf/wireshark/wireshark.lua150
-rw-r--r--contrib/gns/bootstrap.min.css (renamed from contrib/bootstrap.min.css)0
-rw-r--r--contrib/gns/def.tex (renamed from contrib/def.tex)0
-rw-r--r--contrib/gns/gns-bcd.html (renamed from contrib/gns-bcd.html)0
-rw-r--r--contrib/gns/gns-bcd.tex (renamed from contrib/gns-bcd.tex)2
-rw-r--r--contrib/gns/gns-form-fields.xml (renamed from contrib/gns-form-fields.xml)0
-rw-r--r--contrib/gns/gns-form.xslt (renamed from contrib/gns-form.xslt)0
-rw-r--r--contrib/gnunet-arch-full.svg648
-rw-r--r--contrib/gnunet_janitor.py.in78
-rw-r--r--contrib/gnunet_pyexpect.py.in83
-rw-r--r--contrib/no_autostart_above_core.conf87
-rw-r--r--contrib/no_forcestart.conf38
-rw-r--r--contrib/nse/experiments/infiniband.conf (renamed from contrib/experiments/nse/infiniband.conf)38
-rw-r--r--contrib/packages/guix/guix-env-gillmann.scm151
-rw-r--r--contrib/packages/guix/guix-env-py2.scm158
-rw-r--r--contrib/packages/guix/notest-guix-env.scm145
-rw-r--r--contrib/patches/lrn-indent.diff (renamed from contrib/lrn-indent.diff)0
-rw-r--r--contrib/patches/texi2html5-indent.diff (renamed from contrib/texi2html5-indent.diff)0
-rw-r--r--contrib/patches/transport_ats_years.diff (renamed from contrib/transport_ats_years.diff)0
-rwxr-xr-xcontrib/pogen.sh4
-rwxr-xr-xcontrib/removetrailingwhitespace14
-rwxr-xr-xcontrib/repeat.sh1
-rw-r--r--contrib/scripts/.gitignore2
-rwxr-xr-xcontrib/scripts/afferify110
-rwxr-xr-xcontrib/scripts/coverage.sh (renamed from contrib/coverage.sh)0
-rwxr-xr-xcontrib/scripts/debug (renamed from contrib/debug)0
-rw-r--r--contrib/scripts/documentation/gnunet-doc.scm182
-rw-r--r--contrib/scripts/find_typedefs.py (renamed from contrib/find_typedefs.py)3
-rw-r--r--contrib/scripts/gdb-iterate-dll.py (renamed from contrib/gdb-iterate-dll.py)3
-rwxr-xr-xcontrib/scripts/generate-monkey-db.sh (renamed from contrib/generate-monkey-db.sh)0
-rwxr-xr-xcontrib/scripts/gnunet-bugreport (renamed from contrib/report.sh)2
-rwxr-xr-xcontrib/scripts/gnunet-chk.py.in (renamed from contrib/gnunet-chk.py)37
-rwxr-xr-xcontrib/scripts/gnunet-logread/gnunet-logread (renamed from contrib/gnunet-logread)2
-rwxr-xr-xcontrib/scripts/gnunet-logread/gnunet-logread-ipc (renamed from contrib/gnunet-logread-ipc)1
-rwxr-xr-xcontrib/scripts/gnunet-logread/gnunet-logread-ipc-sdedit (renamed from contrib/gnunet-logread-ipc-sdedit)2
-rwxr-xr-xcontrib/scripts/gnunet-suidfix (renamed from contrib/gnunet-suidfix)0
-rw-r--r--contrib/scripts/gnunet_janitor.py.in79
-rw-r--r--contrib/scripts/gnunet_pyexpect.py.in82
-rwxr-xr-xcontrib/scripts/lint-python.sh24
-rwxr-xr-xcontrib/scripts/process_log.sh (renamed from contrib/process_log.sh)0
-rw-r--r--contrib/scripts/pydiffer.py.in (renamed from contrib/pydiffer.py.in)0
-rwxr-xr-xcontrib/scripts/pydmesg (renamed from contrib/pydmesg)0
-rwxr-xr-xcontrib/scripts/regression.sh (renamed from contrib/regression.sh)0
-rwxr-xr-xcontrib/scripts/removetrailingwhitespace.py.in15
-rwxr-xr-xcontrib/scripts/revisionary.sh (renamed from contrib/revisionary.sh)0
-rw-r--r--contrib/scripts/terminate.py.in66
-rwxr-xr-xcontrib/scripts/testbed_cleanup.sh (renamed from contrib/testbed_cleanup.sh)0
-rw-r--r--contrib/scripts/texinfo-hacks.el18
-rwxr-xr-xcontrib/scripts/visualize_stats.sh (renamed from contrib/visualize_stats.sh)2
-rwxr-xr-xcontrib/scripts/zonewalk-to-types.sh35
-rw-r--r--contrib/services/openrc/gnunet.initd82
-rw-r--r--contrib/terminate.py.in64
-rw-r--r--contrib/test_gnunet_prefix.c26
-rw-r--r--contrib/testbed_configs/regex_profiler_infiniband.conf24
-rw-r--r--contrib/testbed_configs/testbed_cluster.conf32
-rw-r--r--contrib/testbed_configs/testbed_infiniband.conf32
-rw-r--r--contrib/testbed_configs/testbed_supermuc.conf20
-rw-r--r--contrib/testbed_perfhacks.patch90
-rwxr-xr-xcontrib/testbed_setup_pre_ecc_tree.sh9
-rw-r--r--contrib/timeout_watchdog.c118
-rw-r--r--contrib/timeout_watchdog_w32.c193
-rw-r--r--contrib/transpot_delay.patch77
-rw-r--r--contrib/web/log.php (renamed from contrib/log.php)0
93 files changed, 4958 insertions, 1280 deletions
diff --git a/contrib/.gitignore b/contrib/.gitignore
index 304706d7e..d6ef469ba 100644
--- a/contrib/.gitignore
+++ b/contrib/.gitignore
@@ -2,7 +2,6 @@ gnunet_janitor.py
2gnunet_pyexpect.py 2gnunet_pyexpect.py
3pydiffer.py 3pydiffer.py
4terminate.py 4terminate.py
5timeout_watchdog
6gnunet_pyexpect.py 5gnunet_pyexpect.py
7gnunet_pyexpect.pyc 6gnunet_pyexpect.pyc
8pydiffer.pyc 7pydiffer.pyc
diff --git a/contrib/3rdparty/Windows/openvpn-tap32/COPYING b/contrib/3rdparty/Windows/openvpn-tap32/COPYING
new file mode 100644
index 000000000..3912109b5
--- /dev/null
+++ b/contrib/3rdparty/Windows/openvpn-tap32/COPYING
@@ -0,0 +1,340 @@
1 GNU GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 Preamble
10
11 The licenses for most software are designed to take away your
12freedom to share and change it. By contrast, the GNU General Public
13License is intended to guarantee your freedom to share and change free
14software--to make sure the software is free for all its users. This
15General Public License applies to most of the Free Software
16Foundation's software and to any other program whose authors commit to
17using it. (Some other Free Software Foundation software is covered by
18the GNU Library General Public License instead.) You can apply it to
19your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22price. Our General Public Licenses are designed to make sure that you
23have the freedom to distribute copies of free software (and charge for
24this service if you wish), that you receive source code or can get it
25if you want it, that you can change the software or use pieces of it
26in new free programs; and that you know you can do these things.
27
28 To protect your rights, we need to make restrictions that forbid
29anyone to deny you these rights or to ask you to surrender the rights.
30These restrictions translate to certain responsibilities for you if you
31distribute copies of the software, or if you modify it.
32
33 For example, if you distribute copies of such a program, whether
34gratis or for a fee, you must give the recipients all the rights that
35you have. You must make sure that they, too, receive or can get the
36source code. And you must show them these terms so they know their
37rights.
38
39 We protect your rights with two steps: (1) copyright the software, and
40(2) offer you this license which gives you legal permission to copy,
41distribute and/or modify the software.
42
43 Also, for each author's protection and ours, we want to make certain
44that everyone understands that there is no warranty for this free
45software. If the software is modified by someone else and passed on, we
46want its recipients to know that what they have is not the original, so
47that any problems introduced by others will not reflect on the original
48authors' reputations.
49
50 Finally, any free program is threatened constantly by software
51patents. We wish to avoid the danger that redistributors of a free
52program will individually obtain patent licenses, in effect making the
53program proprietary. To prevent this, we have made it clear that any
54patent must be licensed for everyone's free use or not licensed at all.
55
56 The precise terms and conditions for copying, distribution and
57modification follow.
58
59 GNU GENERAL PUBLIC LICENSE
60 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
62 0. This License applies to any program or other work which contains
63a notice placed by the copyright holder saying it may be distributed
64under the terms of this General Public License. The "Program", below,
65refers to any such program or work, and a "work based on the Program"
66means either the Program or any derivative work under copyright law:
67that is to say, a work containing the Program or a portion of it,
68either verbatim or with modifications and/or translated into another
69language. (Hereinafter, translation is included without limitation in
70the term "modification".) Each licensee is addressed as "you".
71
72Activities other than copying, distribution and modification are not
73covered by this License; they are outside its scope. The act of
74running the Program is not restricted, and the output from the Program
75is covered only if its contents constitute a work based on the
76Program (independent of having been made by running the Program).
77Whether that is true depends on what the Program does.
78
79 1. You may copy and distribute verbatim copies of the Program's
80source code as you receive it, in any medium, provided that you
81conspicuously and appropriately publish on each copy an appropriate
82copyright notice and disclaimer of warranty; keep intact all the
83notices that refer to this License and to the absence of any warranty;
84and give any other recipients of the Program a copy of this License
85along with the Program.
86
87You may charge a fee for the physical act of transferring a copy, and
88you may at your option offer warranty protection in exchange for a fee.
89
90 2. You may modify your copy or copies of the Program or any portion
91of it, thus forming a work based on the Program, and copy and
92distribute such modifications or work under the terms of Section 1
93above, provided that you also meet all of these conditions:
94
95 a) You must cause the modified files to carry prominent notices
96 stating that you changed the files and the date of any change.
97
98 b) You must cause any work that you distribute or publish, that in
99 whole or in part contains or is derived from the Program or any
100 part thereof, to be licensed as a whole at no charge to all third
101 parties under the terms of this License.
102
103 c) If the modified program normally reads commands interactively
104 when run, you must cause it, when started running for such
105 interactive use in the most ordinary way, to print or display an
106 announcement including an appropriate copyright notice and a
107 notice that there is no warranty (or else, saying that you provide
108 a warranty) and that users may redistribute the program under
109 these conditions, and telling the user how to view a copy of this
110 License. (Exception: if the Program itself is interactive but
111 does not normally print such an announcement, your work based on
112 the Program is not required to print an announcement.)
113
114These requirements apply to the modified work as a whole. If
115identifiable sections of that work are not derived from the Program,
116and can be reasonably considered independent and separate works in
117themselves, then this License, and its terms, do not apply to those
118sections when you distribute them as separate works. But when you
119distribute the same sections as part of a whole which is a work based
120on the Program, the distribution of the whole must be on the terms of
121this License, whose permissions for other licensees extend to the
122entire whole, and thus to each and every part regardless of who wrote it.
123
124Thus, it is not the intent of this section to claim rights or contest
125your rights to work written entirely by you; rather, the intent is to
126exercise the right to control the distribution of derivative or
127collective works based on the Program.
128
129In addition, mere aggregation of another work not based on the Program
130with the Program (or with a work based on the Program) on a volume of
131a storage or distribution medium does not bring the other work under
132the scope of this License.
133
134 3. You may copy and distribute the Program (or a work based on it,
135under Section 2) in object code or executable form under the terms of
136Sections 1 and 2 above provided that you also do one of the following:
137
138 a) Accompany it with the complete corresponding machine-readable
139 source code, which must be distributed under the terms of Sections
140 1 and 2 above on a medium customarily used for software interchange; or,
141
142 b) Accompany it with a written offer, valid for at least three
143 years, to give any third party, for a charge no more than your
144 cost of physically performing source distribution, a complete
145 machine-readable copy of the corresponding source code, to be
146 distributed under the terms of Sections 1 and 2 above on a medium
147 customarily used for software interchange; or,
148
149 c) Accompany it with the information you received as to the offer
150 to distribute corresponding source code. (This alternative is
151 allowed only for noncommercial distribution and only if you
152 received the program in object code or executable form with such
153 an offer, in accord with Subsection b above.)
154
155The source code for a work means the preferred form of the work for
156making modifications to it. For an executable work, complete source
157code means all the source code for all modules it contains, plus any
158associated interface definition files, plus the scripts used to
159control compilation and installation of the executable. However, as a
160special exception, the source code distributed need not include
161anything that is normally distributed (in either source or binary
162form) with the major components (compiler, kernel, and so on) of the
163operating system on which the executable runs, unless that component
164itself accompanies the executable.
165
166If distribution of executable or object code is made by offering
167access to copy from a designated place, then offering equivalent
168access to copy the source code from the same place counts as
169distribution of the source code, even though third parties are not
170compelled to copy the source along with the object code.
171
172 4. You may not copy, modify, sublicense, or distribute the Program
173except as expressly provided under this License. Any attempt
174otherwise to copy, modify, sublicense or distribute the Program is
175void, and will automatically terminate your rights under this License.
176However, parties who have received copies, or rights, from you under
177this License will not have their licenses terminated so long as such
178parties remain in full compliance.
179
180 5. You are not required to accept this License, since you have not
181signed it. However, nothing else grants you permission to modify or
182distribute the Program or its derivative works. These actions are
183prohibited by law if you do not accept this License. Therefore, by
184modifying or distributing the Program (or any work based on the
185Program), you indicate your acceptance of this License to do so, and
186all its terms and conditions for copying, distributing or modifying
187the Program or works based on it.
188
189 6. Each time you redistribute the Program (or any work based on the
190Program), the recipient automatically receives a license from the
191original licensor to copy, distribute or modify the Program subject to
192these terms and conditions. You may not impose any further
193restrictions on the recipients' exercise of the rights granted herein.
194You are not responsible for enforcing compliance by third parties to
195this License.
196
197 7. If, as a consequence of a court judgment or allegation of patent
198infringement or for any other reason (not limited to patent issues),
199conditions are imposed on you (whether by court order, agreement or
200otherwise) that contradict the conditions of this License, they do not
201excuse you from the conditions of this License. If you cannot
202distribute so as to satisfy simultaneously your obligations under this
203License and any other pertinent obligations, then as a consequence you
204may not distribute the Program at all. For example, if a patent
205license would not permit royalty-free redistribution of the Program by
206all those who receive copies directly or indirectly through you, then
207the only way you could satisfy both it and this License would be to
208refrain entirely from distribution of the Program.
209
210If any portion of this section is held invalid or unenforceable under
211any particular circumstance, the balance of the section is intended to
212apply and the section as a whole is intended to apply in other
213circumstances.
214
215It is not the purpose of this section to induce you to infringe any
216patents or other property right claims or to contest validity of any
217such claims; this section has the sole purpose of protecting the
218integrity of the free software distribution system, which is
219implemented by public license practices. Many people have made
220generous contributions to the wide range of software distributed
221through that system in reliance on consistent application of that
222system; it is up to the author/donor to decide if he or she is willing
223to distribute software through any other system and a licensee cannot
224impose that choice.
225
226This section is intended to make thoroughly clear what is believed to
227be a consequence of the rest of this License.
228
229 8. If the distribution and/or use of the Program is restricted in
230certain countries either by patents or by copyrighted interfaces, the
231original copyright holder who places the Program under this License
232may add an explicit geographical distribution limitation excluding
233those countries, so that distribution is permitted only in or among
234countries not thus excluded. In such case, this License incorporates
235the limitation as if written in the body of this License.
236
237 9. The Free Software Foundation may publish revised and/or new versions
238of the General Public License from time to time. Such new versions will
239be similar in spirit to the present version, but may differ in detail to
240address new problems or concerns.
241
242Each version is given a distinguishing version number. If the Program
243specifies a version number of this License which applies to it and "any
244later version", you have the option of following the terms and conditions
245either of that version or of any later version published by the Free
246Software Foundation. If the Program does not specify a version number of
247this License, you may choose any version ever published by the Free Software
248Foundation.
249
250 10. If you wish to incorporate parts of the Program into other free
251programs whose distribution conditions are different, write to the author
252to ask for permission. For software which is copyrighted by the Free
253Software Foundation, write to the Free Software Foundation; we sometimes
254make exceptions for this. Our decision will be guided by the two goals
255of preserving the free status of all derivatives of our free software and
256of promoting the sharing and reuse of software generally.
257
258 NO WARRANTY
259
260 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268REPAIR OR CORRECTION.
269
270 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278POSSIBILITY OF SUCH DAMAGES.
279
280 END OF TERMS AND CONDITIONS
281
282 How to Apply These Terms to Your New Programs
283
284 If you develop a new program, and you want it to be of the greatest
285possible use to the public, the best way to achieve this is to make it
286free software which everyone can redistribute and change under these terms.
287
288 To do so, attach the following notices to the program. It is safest
289to attach them to the start of each source file to most effectively
290convey the exclusion of warranty; and each file should have at least
291the "copyright" line and a pointer to where the full notice is found.
292
293 <one line to give the program's name and a brief idea of what it does.>
294 Copyright (C) <year> <name of author>
295
296 This program is free software; you can redistribute it and/or modify
297 it under the terms of the GNU General Public License as published by
298 the Free Software Foundation; either version 2 of the License, or
299 (at your option) any later version.
300
301 This program is distributed in the hope that it will be useful,
302 but WITHOUT ANY WARRANTY; without even the implied warranty of
303 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
304 GNU General Public License for more details.
305
306 You should have received a copy of the GNU General Public License
307 along with this program; if not, write to the Free Software
308 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
309
310
311Also add information on how to contact you by electronic and paper mail.
312
313If the program is interactive, make it output a short notice like this
314when it starts in an interactive mode:
315
316 Gnomovision version 69, Copyright (C) year name of author
317 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
318 This is free software, and you are welcome to redistribute it
319 under certain conditions; type `show c' for details.
320
321The hypothetical commands `show w' and `show c' should show the appropriate
322parts of the General Public License. Of course, the commands you use may
323be called something other than `show w' and `show c'; they could even be
324mouse-clicks or menu items--whatever suits your program.
325
326You should also get your employer (if you work as a programmer) or your
327school, if any, to sign a "copyright disclaimer" for the program, if
328necessary. Here is a sample; alter the names:
329
330 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
331 `Gnomovision' (which makes passes at compilers) written by James Hacker.
332
333 <signature of Ty Coon>, 1 April 1989
334 Ty Coon, President of Vice
335
336This General Public License does not permit incorporating your program into
337proprietary programs. If your program is a subroutine library, you may
338consider it more useful to permit linking proprietary applications with the
339library. If this is what you want to do, use the GNU Library General
340Public License instead of this License.
diff --git a/contrib/openvpn-tap32/INSTALL b/contrib/3rdparty/Windows/openvpn-tap32/INSTALL
index 8e02c1890..8e02c1890 100644
--- a/contrib/openvpn-tap32/INSTALL
+++ b/contrib/3rdparty/Windows/openvpn-tap32/INSTALL
diff --git a/contrib/openvpn-tap32/tap32-signed-i386-2.1.zip b/contrib/3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip
index e13473203..e13473203 100644
--- a/contrib/openvpn-tap32/tap32-signed-i386-2.1.zip
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip
Binary files differ
diff --git a/contrib/openvpn-tap32/tap32-source-2.1.zip b/contrib/3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip
index 9ffc0b4ef..9ffc0b4ef 100644
--- a/contrib/openvpn-tap32/tap32-source-2.1.zip
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip
Binary files differ
diff --git a/contrib/openvpn-tap32/tapw32/OemWin2k.inf b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf
index 167e30fff..167e30fff 100644
--- a/contrib/openvpn-tap32/tapw32/OemWin2k.inf
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf
diff --git a/contrib/openvpn-tap32/tapw32/tap0901.cat b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat
index a6772f9fd..a6772f9fd 100644
--- a/contrib/openvpn-tap32/tapw32/tap0901.cat
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat
Binary files differ
diff --git a/contrib/openvpn-tap32/tapw32/tap0901.sys b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys
index 3ecf2391b..3ecf2391b 100644
--- a/contrib/openvpn-tap32/tapw32/tap0901.sys
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys
Binary files differ
diff --git a/contrib/openvpn-tap32/tapw64/OemWin2k.inf b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf
index 9b1676afd..9b1676afd 100644
--- a/contrib/openvpn-tap32/tapw64/OemWin2k.inf
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf
diff --git a/contrib/openvpn-tap32/tapw64/tap0901.cat b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat
index 1cac5f5c4..1cac5f5c4 100644
--- a/contrib/openvpn-tap32/tapw64/tap0901.cat
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat
Binary files differ
diff --git a/contrib/openvpn-tap32/tapw64/tap0901.sys b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys
index 566e168ea..566e168ea 100644
--- a/contrib/openvpn-tap32/tapw64/tap0901.sys
+++ b/contrib/3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys
Binary files differ
diff --git a/contrib/Dockerfile b/contrib/Dockerfile
deleted file mode 100644
index d2f2d7c97..000000000
--- a/contrib/Dockerfile
+++ /dev/null
@@ -1,56 +0,0 @@
1from fedora:26
2
3# Install the required build tools
4RUN dnf -y update && dnf -y install which git automake texinfo gettext-devel autoconf libtool libtool-ltdl-devel libidn-devel libunistring-devel glpk libextractor-devel libmicrohttpd-devel gnutls libgcrypt-devel jansson-devel sqlite-devel npm
5
6WORKDIR /usr/src
7
8# Install gnurl from source at version gnurl-7.54.0
9RUN git clone https://git.taler.net/gnurl.git --branch gnurl-7.57.0
10WORKDIR /usr/src/gnurl
11RUN autoreconf -i
12RUN ./configure --disable-ntlm-wb
13RUN make install
14WORKDIR /usr/src
15
16RUN dnf -y install wget flex bison
17
18# Install libpbc
19RUN wget https://crypto.stanford.edu/pbc/files/pbc-0.5.14.tar.gz
20RUN tar xvzpf pbc-0.5.14.tar.gz
21WORKDIR /usr/src/pbc-0.5.14
22RUN ./configure --prefix=/usr
23RUN make install
24WORKDIR /usr/src
25
26RUN dnf -y install glib2-devel
27
28# Install libbswabe
29RUN git clone https://github.com/schanzen/libgabe.git
30WORKDIR /usr/src/libgabe
31RUN ./configure --prefix=/usr
32RUN make install
33
34# Install WebUI
35WORKDIR /usr/src/
36RUN git clone https://github.com/schanzen/gnunet-webui.git
37WORKDIR /usr/src/gnunet-webui
38RUN git checkout gnuidentity
39
40RUN mkdir /usr/src/gnunet
41WORKDIR /usr/src/gnunet
42ADD . .
43ARG NUM_JOBS
44RUN ./bootstrap
45RUN ./configure --prefix=/usr/local
46RUN make -j$NUM_JOBS
47RUN make install
48
49RUN groupadd gnunetdns
50RUN adduser -S -m -h /var/lib/gnunet gnunet
51RUN chown gnunet:gnunet /var/lib/gnunet
52RUN echo '[arm]\nSYSTEM_ONLY = YES\nUSER_ONLY = NO\n' > /etc/gnunet.conf
53
54ADD docker-entrypoint.sh .
55
56CMD ["sh", "docker-entrypoint.sh"]
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 577924fab..eec3300b9 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -5,62 +5,61 @@ tap32dir = $(pkgdatadir)/openvpn-tap32/tapw32/
5 5
6tap64dir = $(pkgdatadir)/openvpn-tap32/tapw64/ 6tap64dir = $(pkgdatadir)/openvpn-tap32/tapw64/
7 7
8noinst_PROGRAMS = \
9 timeout_watchdog
10
11if !MINGW
12timeout_watchdog_SOURCES = \
13 timeout_watchdog.c
14else
15timeout_watchdog_SOURCES = \
16 timeout_watchdog_w32.c
17endif
18
19noinst_SCRIPTS = \ 8noinst_SCRIPTS = \
20 terminate.py \ 9 scripts/terminate.py \
21 pydiffer.py \ 10 scripts/pydiffer.py \
22 gnunet_pyexpect.py \ 11 scripts/removetrailingwhitespace.py \
23 gnunet_janitor.py 12 scripts/gnunet_pyexpect.py \
13 scripts/gnunet_janitor.py \
14 scripts/gnunet-chk.py
24 15
25dist_pkgdata_DATA = \ 16dist_pkgdata_DATA = \
26 gns-bcd.html \ 17 gns/gns-bcd.html \
27 gns-bcd.tex \ 18 gns/gns-bcd.tex \
28 gnunet-logo.pdf \ 19 gns/def.tex \
29 gnunet-logo-color.png \ 20 gns/gns-form-fields.xml \
21 gns/gns-form.xslt \
22 branding/logo/gnunet-logo.pdf \
23 branding/logo/gnunet-logo-color.png \
30 testing_hostkeys.ecc 24 testing_hostkeys.ecc
31 25
32if MINGW 26if MINGW
33tap32_DATA = \ 27tap32_DATA = \
34 openvpn-tap32/tapw32/tap0901.sys \ 28 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys \
35 openvpn-tap32/tapw32/tap0901.cat \ 29 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat \
36 openvpn-tap32/tapw32/OemWin2k.inf 30 3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf
37 31
38tap64_DATA = \ 32tap64_DATA = \
39 openvpn-tap32/tapw64/tap0901.sys \ 33 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys \
40 openvpn-tap32/tapw64/tap0901.cat \ 34 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat \
41 openvpn-tap32/tapw64/OemWin2k.inf 35 3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf
42endif 36endif
43 37
44EXTRA_DIST = \ 38EXTRA_DIST = \
45 no_forcestart.conf \ 39 conf/colorit/colorit.conf \
46 no_autostart_above_core.conf \ 40 conf/editors/eclipse/gnunet_codingstyle.xml \
47 coverage.sh \ 41 conf/gnunet/no_forcestart.conf \
48 nssswitch.conf \ 42 conf/gnunet/no_autostart_above_core.conf \
49 report.sh \ 43 conf/nss/nssswitch.conf \
50 terminate.py.in \ 44 conf/wireshark/wireshark.lua \
51 gnunet_pyexpect.py.in \ 45 scripts/coverage.sh \
52 gnunet_janitor.py.in \ 46 scripts/terminate.py.in \
53 pydiffer.py.in \ 47 scripts/gnunet_pyexpect.py.in \
54 gnunet-gns-import.sh \ 48 scripts/gnunet_janitor.py.in \
55 openvpn-tap32/tapw32/tap0901.sys \ 49 scripts/gnunet-chk.py.in \
56 openvpn-tap32/tapw32/tap0901.cat \ 50 scripts/removetrailingwhitespace.py.in \
57 openvpn-tap32/tapw32/OemWin2k.inf \ 51 scripts/pydiffer.py.in \
58 openvpn-tap32/tapw64/tap0901.sys \ 52 packages/nix/default.nix \
59 openvpn-tap32/tapw64/tap0901.cat \ 53 packages/nix/gnunet-dev.nix \
60 openvpn-tap32/tapw64/OemWin2k.inf \ 54 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.sys \
61 openvpn-tap32/INSTALL \ 55 3rdparty/Windows/openvpn-tap32/tapw32/tap0901.cat \
62 openvpn-tap32/tap32-signed-i386-2.1.zip \ 56 3rdparty/Windows/openvpn-tap32/tapw32/OemWin2k.inf \
63 openvpn-tap32/tap32-source-2.1.zip 57 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.sys \
58 3rdparty/Windows/openvpn-tap32/tapw64/tap0901.cat \
59 3rdparty/Windows/openvpn-tap32/tapw64/OemWin2k.inf \
60 3rdparty/Windows/openvpn-tap32/INSTALL \
61 3rdparty/Windows/openvpn-tap32/tap32-signed-i386-2.1.zip \
62 3rdparty/Windows/openvpn-tap32/tap32-source-2.1.zip
64 63
65CLEANFILES = \ 64CLEANFILES = \
66 $(noinst_SCRIPTS) 65 $(noinst_SCRIPTS)
@@ -77,22 +76,12 @@ do_subst = $(SED) -e 's,[@]PYTHON[@],$(PYTHON),g'
77# chmod +x $@ 76# chmod +x $@
78# 77#
79# instead of this: 78# instead of this:
80
81SUFFIXES = .py.in .py 79SUFFIXES = .py.in .py
82 80
83.py.in.py: 81.py.in.py:
84 $(do_subst) < $< > $@ 82 $(do_subst) < $< > $@
85 chmod +x $@ 83 chmod +x $@
86 84
87# init_gnunet_redhat \
88# init_gnunet_ubuntu \
89# visualize_stats.sh \
90# gnmessage.sh \
91# junkinsert.sh \
92# junklookup.sh \
93# namespacehelper.sh
94
95
96check_PROGRAMS = \ 85check_PROGRAMS = \
97 test_gnunet_prefix 86 test_gnunet_prefix
98 87
@@ -123,6 +112,7 @@ install-data-local:
123 $(INSTALL_DATA) $$hello $(DESTDIR)$(pkghellodir)/ ; \ 112 $(INSTALL_DATA) $$hello $(DESTDIR)$(pkghellodir)/ ; \
124 fi \ 113 fi \
125 done 114 done
115 install scripts/gnunet-bugreport $(DESTDIR)$(bindir)/gnunet-bugreport
126 116
127dist-hook: 117dist-hook:
128 if test -d $(srcdir)/hellos; then \ 118 if test -d $(srcdir)/hellos; then \
diff --git a/contrib/gnunet-logo-big.png b/contrib/branding/logo/gnunet-logo-big.png
index 54c418f8f..54c418f8f 100644
--- a/contrib/gnunet-logo-big.png
+++ b/contrib/branding/logo/gnunet-logo-big.png
Binary files differ
diff --git a/contrib/gnunet-logo-color.png b/contrib/branding/logo/gnunet-logo-color.png
index 326822ebd..326822ebd 100644
--- a/contrib/gnunet-logo-color.png
+++ b/contrib/branding/logo/gnunet-logo-color.png
Binary files differ
diff --git a/contrib/branding/logo/gnunet-logo-dark-text.svg b/contrib/branding/logo/gnunet-logo-dark-text.svg
new file mode 100644
index 000000000..5644e0ae7
--- /dev/null
+++ b/contrib/branding/logo/gnunet-logo-dark-text.svg
@@ -0,0 +1,1411 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg
3 xmlns:dc="http://purl.org/dc/elements/1.1/"
4 xmlns:cc="http://creativecommons.org/ns#"
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6 xmlns:svg="http://www.w3.org/2000/svg"
7 xmlns="http://www.w3.org/2000/svg"
8 xmlns:xlink="http://www.w3.org/1999/xlink"
9 version="1.1"
10 id="svg2"
11 height="280"
12 width="320">
13 <title
14 id="title3310">logo for GNUnet</title>
15 <defs
16 id="defs4">
17 <linearGradient
18 id="gnunet">
19 <stop
20 style="stop-color:#ff0000;stop-opacity:0.58431375;"
21 offset="0"
22 id="stop9516" />
23 <stop
24 style="stop-color:#ffcc00;stop-opacity:1;"
25 offset="1"
26 id="stop9518" />
27 </linearGradient>
28 <linearGradient
29 id="linearGradient4094">
30 <stop
31 style="stop-color:#232323;stop-opacity:1;"
32 offset="0"
33 id="stop4096" />
34 <stop
35 style="stop-color:#4d4d4d;stop-opacity:1;"
36 offset="1"
37 id="stop4098" />
38 </linearGradient>
39 <linearGradient
40 id="linearGradient4014">
41 <stop
42 style="stop-color:#a0a0a0;stop-opacity:1;"
43 offset="0"
44 id="stop4016" />
45 <stop
46 style="stop-color:#ffffff;stop-opacity:1;"
47 offset="1"
48 id="stop4018" />
49 </linearGradient>
50 <linearGradient
51 id="linearGradient4678">
52 <stop
53 style="stop-color:#e5e5e5;stop-opacity:1;"
54 offset="0"
55 id="stop4680" />
56 <stop
57 style="stop-color:#d3cdcd;stop-opacity:1;"
58 offset="1"
59 id="stop4682" />
60 </linearGradient>
61 <linearGradient
62 id="linearGradient4341">
63 <stop
64 id="stop4343"
65 offset="0"
66 style="stop-color:#333333;stop-opacity:1;" />
67 <stop
68 id="stop4345"
69 offset="1"
70 style="stop-color:#484848;stop-opacity:1;" />
71 </linearGradient>
72 <linearGradient
73 id="linearGradient4696-5">
74 <stop
75 id="stop4698-6"
76 offset="0"
77 style="stop-color:#ffb638;stop-opacity:1;" />
78 <stop
79 id="stop4700-2"
80 offset="1"
81 style="stop-color:#f0ae26;stop-opacity:1;" />
82 </linearGradient>
83 <linearGradient
84 id="linearGradient4702-3-6">
85 <stop
86 id="stop4704-1"
87 offset="0"
88 style="stop-color:#ff0000;stop-opacity:0.58431375;" />
89 <stop
90 id="stop4706-8"
91 offset="1"
92 style="stop-color:#ffcc00;stop-opacity:1;" />
93 </linearGradient>
94 <color-profile
95 name="Artifex-PS-CMYK-Profile"
96 xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc"
97 id="color-profile27" />
98 <linearGradient
99 y2="69.791016"
100 x2="177.04297"
101 y1="63.65625"
102 x1="142.96875"
103 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
104 gradientUnits="userSpaceOnUse"
105 id="linearGradient3138"
106 xlink:href="#linearGradient4702-3-6" />
107 <linearGradient
108 y2="1043.709"
109 x2="80.655251"
110 y1="1025.709"
111 x1="108.08774"
112 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
113 gradientUnits="userSpaceOnUse"
114 id="linearGradient3141"
115 xlink:href="#linearGradient4696-5" />
116 <linearGradient
117 y2="922.07178"
118 x2="78.000107"
119 y1="1004.8033"
120 x1="113.5146"
121 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
122 gradientUnits="userSpaceOnUse"
123 id="linearGradient3144"
124 xlink:href="#linearGradient4702-3-6" />
125 <linearGradient
126 y2="70.667412"
127 x2="176.60477"
128 y1="63.65625"
129 x1="142.96875"
130 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
131 gradientUnits="userSpaceOnUse"
132 id="linearGradient3148"
133 xlink:href="#linearGradient4702-3-6" />
134 <linearGradient
135 y2="70.667412"
136 x2="176.60477"
137 y1="63.65625"
138 x1="142.96875"
139 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
140 gradientUnits="userSpaceOnUse"
141 id="linearGradient3780"
142 xlink:href="#linearGradient4702-3-6" />
143 <linearGradient
144 y2="922.07178"
145 x2="78.000107"
146 y1="1004.8033"
147 x1="113.5146"
148 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
149 gradientUnits="userSpaceOnUse"
150 id="linearGradient3782"
151 xlink:href="#linearGradient4702-3-6" />
152 <linearGradient
153 y2="1043.709"
154 x2="80.655251"
155 y1="1025.709"
156 x1="108.08774"
157 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
158 gradientUnits="userSpaceOnUse"
159 id="linearGradient3784"
160 xlink:href="#linearGradient4696-5" />
161 <linearGradient
162 y2="69.791016"
163 x2="177.04297"
164 y1="63.65625"
165 x1="142.96875"
166 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
167 gradientUnits="userSpaceOnUse"
168 id="linearGradient3786"
169 xlink:href="#linearGradient4702-3-6" />
170 <filter
171 id="filter9204"
172 style="color-interpolation-filters:sRGB">
173 <feColorMatrix
174 id="feColorMatrix9194"
175 result="colormatrix"
176 values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -0.2125 -0.7154 -0.0721 1 0 "
177 in="SourceGraphic" />
178 <feComposite
179 k1="0"
180 id="feComposite9196"
181 result="composite"
182 k4="0"
183 k3="0"
184 k2="1"
185 operator="arithmetic"
186 in2="colormatrix"
187 in="SourceGraphic" />
188 <feGaussianBlur
189 id="feGaussianBlur9198"
190 result="blur1"
191 stdDeviation="5 0.01" />
192 <feGaussianBlur
193 id="feGaussianBlur9200"
194 result="blur2"
195 stdDeviation="0.01 5"
196 in="composite" />
197 <feBlend
198 id="feBlend9202"
199 result="blend"
200 mode="darken"
201 in2="blur1"
202 in="blur2" />
203 </filter>
204 <filter
205 id="filter9330"
206 style="color-interpolation-filters:sRGB">
207 <feGaussianBlur
208 id="feGaussianBlur9328"
209 result="blur"
210 stdDeviation="2 2" />
211 </filter>
212 </defs>
213 <metadata
214 id="metadata7">
215 <rdf:RDF>
216 <cc:Work
217 rdf:about="">
218 <dc:format>image/svg+xml</dc:format>
219 <dc:type
220 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
221 <dc:title>logo for GNUnet</dc:title>
222 <dc:creator>
223 <cc:Agent>
224 <dc:title>Luis Felipe López Acevedo, Amirouche Boubekki, carlo von lynX</dc:title>
225 </cc:Agent>
226 </dc:creator>
227 <dc:rights>
228 <cc:Agent>
229 <dc:title>GNUnet e.V.</dc:title>
230 </cc:Agent>
231 </dc:rights>
232 <cc:license
233 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
234 <dc:description />
235 </cc:Work>
236 <cc:License
237 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
238 <cc:permits
239 rdf:resource="http://creativecommons.org/ns#Reproduction" />
240 <cc:permits
241 rdf:resource="http://creativecommons.org/ns#Distribution" />
242 <cc:requires
243 rdf:resource="http://creativecommons.org/ns#Notice" />
244 <cc:requires
245 rdf:resource="http://creativecommons.org/ns#Attribution" />
246 <cc:permits
247 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
248 <cc:requires
249 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
250 </cc:License>
251 </rdf:RDF>
252 </metadata>
253 <g
254 id="g5346"
255 style="display:none"
256 transform="translate(-387.41463,-609.81931)">
257 <text
258 xml:space="preserve"
259 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
260 x="453.95291"
261 y="869.96057"
262 id="text5344"><tspan
263 id="tspan5342"
264 x="453.95291"
265 y="869.96057"
266 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.33333206px;font-family:'Ubuntu Bold';-inkscape-font-specification:'Ubuntu Bold, ';fill:#ffffff;stroke-width:1.03365779px"
267 dx="0 0 0">gnu net</tspan></text>
268 </g>
269 <g
270 transform="translate(-387.41463,-609.81931)"
271 style="display:none"
272 id="g950">
273 <text
274 id="text948"
275 y="869.21057"
276 x="467.77612"
277 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
278 xml:space="preserve"><tspan
279 dx="0 -2.5 -3 0 -19.25 -2.5 -3"
280 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:1.03365779px"
281 y="869.21057"
282 x="467.77612"
283 id="tspan946">gnu net</tspan></text>
284 </g>
285 <g
286 id="g941"
287 style="display:none"
288 transform="translate(0,-20)">
289 <ellipse
290 ry="17.690269"
291 rx="17.68549"
292 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
293 id="ellipse937"
294 cx="157.97346"
295 cy="180.65355" />
296 <ellipse
297 ry="17.690269"
298 rx="17.68549"
299 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:1.68696308;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
300 id="ellipse939"
301 cx="157.97346"
302 cy="111.16864" />
303 </g>
304 <g
305 transform="translate(-387.41463,-609.81931)"
306 style="display:none"
307 id="g935">
308 <g
309 aria-label="gnu net"
310 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
311 id="g933">
312 <path
313 d="m 423.90503,684.79003 h 22.14128 v 61.61056 q 0,11.55196 4.3855,16.04443 4.38546,4.49242 12.72857,4.49242 12.19374,0 20.00203,-9.94753 7.80828,-9.94753 7.80828,-27.48942 v -44.71046 h 22.14128 v 99.6893 h -22.14128 v -24.92231 q -3.31586,12.83553 -12.30071,20.10899 -8.98489,7.27346 -22.14132,7.27346 -15.29567,0 -23.95963,-9.94753 -8.664,-10.0545 -8.664,-30.59135 z"
314 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
315 id="path925" />
316 <path
317 d="m 669.48029,784.47933 h -22.14128 v -61.50359 q 0,-11.65892 -4.3855,-16.15139 -4.38546,-4.49243 -12.72857,-4.49243 -12.30071,0 -20.10899,9.94753 -7.70132,9.94754 -7.70132,27.48947 v 44.71041 h -22.14128 v -99.6893 h 22.14128 v 25.02928 q 3.31586,-12.94249 12.30071,-20.10899 8.98489,-7.27346 22.14132,-7.27346 15.29567,0 23.95967,9.94753 8.66396,9.94753 8.66396,30.59135 z"
318 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:4.46906853px"
319 id="path927" />
320 </g>
321 </g>
322 <g
323 id="g1296"
324 style="display:none"
325 transform="translate(0,-67.278107)">
326 <path
327 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
328 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
329 id="path1256" />
330 <path
331 style="fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
332 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
333 id="path1258" />
334 <path
335 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
336 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
337 id="path1260" />
338 <path
339 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
340 d="m 98.868943,129.31358 37.045597,48.02106"
341 id="path1262" />
342 <path
343 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
344 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
345 id="path1264" />
346 <path
347 style="display:inline;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
348 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
349 id="path1266" />
350 <path
351 transform="translate(-387.41463,-542.5412)"
352 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#dddddd;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
353 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
354 id="path1268" />
355 <path
356 transform="translate(-387.41463,-542.5412)"
357 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
358 d="m 601.57854,741.42859 -2.26809,-64.28015"
359 id="path1270" />
360 <path
361 style="fill:none;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
362 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
363 id="path1272" />
364 <path
365 transform="translate(-387.41463,-542.5412)"
366 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
367 d="m 475.69911,700.21367 24.57107,51.42411"
368 id="path1274" />
369 <path
370 transform="translate(-387.41463,-542.5412)"
371 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
372 d="m 534.29164,751.63778 12.85257,40.08057"
373 id="path1276" />
374 <path
375 transform="translate(-387.41463,-542.5412)"
376 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
377 d="m 525.21925,783.02162 0.37803,45.75234"
378 id="path1278" />
379 <path
380 transform="translate(-387.41463,-542.5412)"
381 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
382 d="m 601.95657,742.56293 -12.09653,36.6775"
383 id="path1280" />
384 <path
385 transform="translate(-387.41463,-542.5412)"
386 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
387 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
388 id="path1282" />
389 <path
390 transform="translate(-387.41463,-542.5412)"
391 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
392 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
393 id="path1284" />
394 <path
395 transform="translate(-387.41463,-542.5412)"
396 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
397 d="m 557.35064,768.27501 31.75336,10.5873"
398 id="path1286" />
399 <path
400 transform="translate(-387.41463,-542.5412)"
401 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
402 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
403 id="path1288" />
404 <path
405 transform="translate(-387.41463,-542.5412)"
406 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
407 d="m 524.46323,829.53019 44.98392,-0.37812"
408 id="path1290" />
409 <path
410 transform="translate(-387.41463,-542.5412)"
411 style="display:inline;opacity:1;fill:none;stroke:#dddddd;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
412 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
413 id="path1292" />
414 <path
415 transform="translate(-387.41463,-542.5412)"
416 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#dddddd;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
417 d="m 409.92428,677.14844 54.05634,6.0499"
418 id="path1294" />
419 </g>
420 <g
421 transform="translate(0,-67.278107)"
422 style="display:none"
423 id="g1254">
424 <ellipse
425 transform="translate(-387.41463,-542.5412)"
426 ry="4.1593032"
427 rx="4.1581793"
428 cy="829.24042"
429 cx="568.98083"
430 id="ellipse1194"
431 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
432 <ellipse
433 transform="translate(-387.41463,-542.5412)"
434 ry="4.1593032"
435 rx="4.1581793"
436 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
437 id="ellipse1196"
438 cx="588.85413"
439 cy="778.67493" />
440 <ellipse
441 transform="translate(-387.41463,-542.5412)"
442 ry="4.1593032"
443 rx="4.1581793"
444 cy="740.67249"
445 cx="601.57867"
446 id="ellipse1198"
447 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
448 <ellipse
449 transform="translate(-387.41463,-542.5412)"
450 ry="4.1593032"
451 rx="4.1581793"
452 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
453 id="ellipse1200"
454 cx="525.79852"
455 cy="829.24042" />
456 <ellipse
457 transform="translate(-387.41463,-542.5412)"
458 ry="4.1593032"
459 rx="4.1581793"
460 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
461 id="ellipse1202"
462 cx="557.82654"
463 cy="768.71582" />
464 <ellipse
465 transform="translate(-387.41463,-542.5412)"
466 ry="4.1593032"
467 rx="4.1581793"
468 cy="783.02173"
469 cx="525.21936"
470 id="ellipse1204"
471 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
472 <ellipse
473 transform="translate(-387.41463,-542.5412)"
474 ry="4.1593032"
475 rx="4.1581793"
476 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
477 id="ellipse1206"
478 cx="400.09586"
479 cy="647.34271" />
480 <ellipse
481 transform="translate(-387.41463,-542.5412)"
482 ry="4.1593032"
483 rx="4.1581793"
484 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
485 id="ellipse1208"
486 cx="450.11285"
487 cy="628.31934" />
488 <ellipse
489 transform="translate(-387.41463,-542.5412)"
490 ry="4.1593032"
491 rx="4.1581793"
492 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
493 id="ellipse1210"
494 cx="622.36951"
495 cy="699.45752" />
496 <ellipse
497 transform="translate(-387.41463,-542.5412)"
498 ry="4.1593032"
499 rx="4.1581793"
500 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
501 id="ellipse1212"
502 cx="547.21771"
503 cy="792.29773" />
504 <ellipse
505 transform="translate(-387.41463,-542.5412)"
506 ry="4.1593032"
507 rx="4.1581793"
508 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
509 id="ellipse1214"
510 cx="566.20697"
511 cy="800.12549" />
512 <ellipse
513 transform="translate(-387.41463,-542.5412)"
514 ry="4.1593032"
515 rx="4.1581793"
516 cy="751.63794"
517 cx="500.64822"
518 id="ellipse1216"
519 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
520 <ellipse
521 transform="translate(-387.41463,-542.5412)"
522 ry="4.1593032"
523 rx="4.1581793"
524 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
525 id="ellipse1218"
526 cx="533.33447"
527 cy="751.72632" />
528 <ellipse
529 transform="translate(-387.41463,-542.5412)"
530 ry="4.1593032"
531 rx="4.1581793"
532 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
533 id="ellipse1220"
534 cx="450.75012"
535 cy="699.83545" />
536 <ellipse
537 transform="translate(-387.41463,-542.5412)"
538 ry="4.1593032"
539 rx="4.1581793"
540 cy="700.59174"
541 cx="476.07718"
542 id="ellipse1222"
543 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
544 <ellipse
545 transform="translate(-387.41463,-542.5412)"
546 ry="4.1593032"
547 rx="4.1581793"
548 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
549 id="ellipse1224"
550 cx="521.49146"
551 cy="719.65314" />
552 <ellipse
553 transform="translate(-387.41463,-542.5412)"
554 ry="4.1593032"
555 rx="4.1581793"
556 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
557 id="ellipse1226"
558 cx="500.6362"
559 cy="703.87305" />
560 <ellipse
561 ry="4.1593032"
562 rx="4.1581793"
563 cy="134.28851"
564 cx="211.9584"
565 id="ellipse1228"
566 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
567 <ellipse
568 transform="translate(-387.41463,-542.5412)"
569 ry="4.1593032"
570 rx="4.1581793"
571 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
572 id="ellipse1230"
573 cx="576.62964"
574 cy="713.44794" />
575 <ellipse
576 ry="4.1593032"
577 rx="4.1581793"
578 cy="123.16669"
579 cx="43.166531"
580 id="ellipse1232"
581 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
582 <ellipse
583 ry="4.1593032"
584 rx="4.1581793"
585 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
586 id="ellipse1234"
587 cx="98.865997"
588 cy="129.43542" />
589 <ellipse
590 ry="4.1593032"
591 rx="4.1581793"
592 cy="130.05022"
593 cx="267.08618"
594 id="ellipse1236"
595 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
596 <ellipse
597 transform="translate(-387.41463,-542.5412)"
598 ry="4.1593032"
599 rx="4.1581793"
600 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
601 id="ellipse1238"
602 cx="679.07196"
603 cy="686.22339" />
604 <ellipse
605 transform="translate(-387.41463,-542.5412)"
606 ry="4.1593032"
607 rx="4.1581793"
608 cy="748.99109"
609 cx="577.00763"
610 id="ellipse1240"
611 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
612 <ellipse
613 transform="translate(-387.41463,-542.5412)"
614 ry="4.1593032"
615 rx="4.1581793"
616 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
617 id="ellipse1242"
618 cx="577.00763"
619 cy="748.99109" />
620 <ellipse
621 transform="translate(-387.41463,-542.5412)"
622 ry="4.1593032"
623 rx="4.1581793"
624 cy="748.99109"
625 cx="577.07013"
626 id="ellipse1244"
627 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
628 <ellipse
629 transform="translate(0,-3e-6)"
630 ry="4.1593032"
631 rx="4.1581793"
632 cy="133.85095"
633 cx="22.887779"
634 id="ellipse1246"
635 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
636 <ellipse
637 transform="translate(-387.41463,-542.5412)"
638 ry="4.1593032"
639 rx="4.1581793"
640 cy="682.1922"
641 cx="462.47165"
642 id="ellipse1248"
643 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
644 <ellipse
645 transform="translate(-387.41463,-542.5412)"
646 ry="4.1593032"
647 rx="4.1581793"
648 cy="647.3053"
649 cx="694.58264"
650 id="ellipse1250"
651 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
652 <ellipse
653 transform="translate(-387.41463,-542.5412)"
654 ry="4.1593032"
655 rx="4.1581793"
656 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:#eeeeee;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
657 id="ellipse1252"
658 cx="649.61285"
659 cy="628.31934" />
660 </g>
661 <g
662 transform="translate(0,-67.278107)"
663 style="display:inline"
664 id="g1533">
665 <path
666 id="path1493"
667 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
668 style="fill:none;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
669 <path
670 id="path1495"
671 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
672 style="fill:none;stroke:#3399cc;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
673 <path
674 id="path1497"
675 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
676 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
677 <path
678 id="path1499"
679 d="m 98.868943,129.31358 37.045597,48.02106"
680 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
681 <path
682 id="path1501"
683 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
684 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
685 <path
686 id="path1503"
687 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
688 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
689 <path
690 id="path1505"
691 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
692 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#3399cc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
693 transform="translate(-387.41463,-542.5412)" />
694 <path
695 id="path1507"
696 d="m 601.57854,741.42859 -2.26809,-64.28015"
697 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
698 transform="translate(-387.41463,-542.5412)" />
699 <path
700 id="path1509"
701 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
702 style="fill:none;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
703 <path
704 id="path1511"
705 d="m 475.69911,700.21367 24.57107,51.42411"
706 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
707 transform="translate(-387.41463,-542.5412)" />
708 <path
709 id="path1513"
710 d="m 534.29164,751.63778 12.85257,40.08057"
711 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
712 transform="translate(-387.41463,-542.5412)" />
713 <path
714 id="path1515"
715 d="m 525.21925,783.02162 0.37803,45.75234"
716 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
717 transform="translate(-387.41463,-542.5412)" />
718 <path
719 id="path1517"
720 d="m 601.95657,742.56293 -12.09653,36.6775"
721 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
722 transform="translate(-387.41463,-542.5412)" />
723 <path
724 id="path1519"
725 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
726 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
727 transform="translate(-387.41463,-542.5412)" />
728 <path
729 id="path1521"
730 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
731 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
732 transform="translate(-387.41463,-542.5412)" />
733 <path
734 id="path1523"
735 d="m 557.35064,768.27501 31.75336,10.5873"
736 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
737 transform="translate(-387.41463,-542.5412)" />
738 <path
739 id="path1525"
740 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
741 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
742 transform="translate(-387.41463,-542.5412)" />
743 <path
744 id="path1527"
745 d="m 524.46323,829.53019 44.98392,-0.37812"
746 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
747 transform="translate(-387.41463,-542.5412)" />
748 <path
749 id="path1529"
750 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
751 style="display:inline;opacity:1;fill:none;stroke:#3399cc;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
752 transform="translate(-387.41463,-542.5412)" />
753 <path
754 id="path1531"
755 d="m 409.92428,677.14844 54.05634,6.0499"
756 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#3399cc;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
757 transform="translate(-387.41463,-542.5412)" />
758 </g>
759 <g
760 id="g1491"
761 style="display:inline"
762 transform="translate(0,-67.278107)">
763 <ellipse
764 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
765 id="ellipse1431"
766 cx="568.98083"
767 cy="829.24042"
768 rx="4.1581793"
769 ry="4.1593032"
770 transform="translate(-387.41463,-542.5412)" />
771 <ellipse
772 cy="778.67493"
773 cx="588.85413"
774 id="ellipse1433"
775 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
776 rx="4.1581793"
777 ry="4.1593032"
778 transform="translate(-387.41463,-542.5412)" />
779 <ellipse
780 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
781 id="ellipse1435"
782 cx="601.57867"
783 cy="740.67249"
784 rx="4.1581793"
785 ry="4.1593032"
786 transform="translate(-387.41463,-542.5412)" />
787 <ellipse
788 cy="829.24042"
789 cx="525.79852"
790 id="ellipse1437"
791 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
792 rx="4.1581793"
793 ry="4.1593032"
794 transform="translate(-387.41463,-542.5412)" />
795 <ellipse
796 cy="768.71582"
797 cx="557.82654"
798 id="ellipse1439"
799 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
800 rx="4.1581793"
801 ry="4.1593032"
802 transform="translate(-387.41463,-542.5412)" />
803 <ellipse
804 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
805 id="ellipse1441"
806 cx="525.21936"
807 cy="783.02173"
808 rx="4.1581793"
809 ry="4.1593032"
810 transform="translate(-387.41463,-542.5412)" />
811 <ellipse
812 cy="647.34271"
813 cx="400.09586"
814 id="ellipse1443"
815 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
816 rx="4.1581793"
817 ry="4.1593032"
818 transform="translate(-387.41463,-542.5412)" />
819 <ellipse
820 cy="628.31934"
821 cx="450.11285"
822 id="ellipse1445"
823 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
824 rx="4.1581793"
825 ry="4.1593032"
826 transform="translate(-387.41463,-542.5412)" />
827 <ellipse
828 cy="699.45752"
829 cx="622.36951"
830 id="ellipse1447"
831 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
832 rx="4.1581793"
833 ry="4.1593032"
834 transform="translate(-387.41463,-542.5412)" />
835 <ellipse
836 cy="792.29773"
837 cx="547.21771"
838 id="ellipse1449"
839 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
840 rx="4.1581793"
841 ry="4.1593032"
842 transform="translate(-387.41463,-542.5412)" />
843 <ellipse
844 cy="800.12549"
845 cx="566.20697"
846 id="ellipse1451"
847 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
848 rx="4.1581793"
849 ry="4.1593032"
850 transform="translate(-387.41463,-542.5412)" />
851 <ellipse
852 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
853 id="ellipse1453"
854 cx="500.64822"
855 cy="751.63794"
856 rx="4.1581793"
857 ry="4.1593032"
858 transform="translate(-387.41463,-542.5412)" />
859 <ellipse
860 cy="751.72632"
861 cx="533.33447"
862 id="ellipse1455"
863 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
864 rx="4.1581793"
865 ry="4.1593032"
866 transform="translate(-387.41463,-542.5412)" />
867 <ellipse
868 cy="699.83545"
869 cx="450.75012"
870 id="ellipse1457"
871 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
872 rx="4.1581793"
873 ry="4.1593032"
874 transform="translate(-387.41463,-542.5412)" />
875 <ellipse
876 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
877 id="ellipse1459"
878 cx="476.07718"
879 cy="700.59174"
880 rx="4.1581793"
881 ry="4.1593032"
882 transform="translate(-387.41463,-542.5412)" />
883 <ellipse
884 cy="719.65314"
885 cx="521.49146"
886 id="ellipse1461"
887 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
888 rx="4.1581793"
889 ry="4.1593032"
890 transform="translate(-387.41463,-542.5412)" />
891 <ellipse
892 cy="703.87305"
893 cx="500.6362"
894 id="ellipse1463"
895 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
896 rx="4.1581793"
897 ry="4.1593032"
898 transform="translate(-387.41463,-542.5412)" />
899 <ellipse
900 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
901 id="ellipse1465"
902 cx="211.9584"
903 cy="134.28851"
904 rx="4.1581793"
905 ry="4.1593032" />
906 <ellipse
907 cy="713.44794"
908 cx="576.62964"
909 id="ellipse1467"
910 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
911 rx="4.1581793"
912 ry="4.1593032"
913 transform="translate(-387.41463,-542.5412)" />
914 <ellipse
915 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
916 id="ellipse1469"
917 cx="43.166531"
918 cy="123.16669"
919 rx="4.1581793"
920 ry="4.1593032" />
921 <ellipse
922 cy="129.43542"
923 cx="98.865997"
924 id="ellipse1471"
925 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
926 rx="4.1581793"
927 ry="4.1593032" />
928 <ellipse
929 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
930 id="ellipse1473"
931 cx="267.08618"
932 cy="130.05022"
933 rx="4.1581793"
934 ry="4.1593032" />
935 <ellipse
936 cy="686.22339"
937 cx="679.07196"
938 id="ellipse1475"
939 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
940 rx="4.1581793"
941 ry="4.1593032"
942 transform="translate(-387.41463,-542.5412)" />
943 <ellipse
944 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
945 id="ellipse1477"
946 cx="577.00763"
947 cy="748.99109"
948 rx="4.1581793"
949 ry="4.1593032"
950 transform="translate(-387.41463,-542.5412)" />
951 <ellipse
952 cy="748.99109"
953 cx="577.00763"
954 id="ellipse1479"
955 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
956 rx="4.1581793"
957 ry="4.1593032"
958 transform="translate(-387.41463,-542.5412)" />
959 <ellipse
960 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
961 id="ellipse1481"
962 cx="577.07013"
963 cy="748.99109"
964 rx="4.1581793"
965 ry="4.1593032"
966 transform="translate(-387.41463,-542.5412)" />
967 <ellipse
968 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
969 id="ellipse1483"
970 cx="22.887779"
971 cy="133.85095"
972 rx="4.1581793"
973 ry="4.1593032"
974 transform="translate(0,-3e-6)" />
975 <ellipse
976 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
977 id="ellipse1485"
978 cx="462.47165"
979 cy="682.1922"
980 rx="4.1581793"
981 ry="4.1593032"
982 transform="translate(-387.41463,-542.5412)" />
983 <ellipse
984 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
985 id="ellipse1487"
986 cx="694.58264"
987 cy="647.3053"
988 rx="4.1581793"
989 ry="4.1593032"
990 transform="translate(-387.41463,-542.5412)" />
991 <ellipse
992 cy="628.31934"
993 cx="649.61285"
994 id="ellipse1489"
995 style="display:inline;opacity:1;fill:#419edb;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
996 rx="4.1581793"
997 ry="4.1593032"
998 transform="translate(-387.41463,-542.5412)" />
999 </g>
1000 <g
1001 id="g1539"
1002 style="display:inline"
1003 transform="translate(0,-20)">
1004 <ellipse
1005 ry="4.1593032"
1006 rx="4.1581793"
1007 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1008 id="ellipse1535"
1009 cx="159.80099"
1010 cy="276.32968" />
1011 <ellipse
1012 ry="4.1593032"
1013 rx="4.1581793"
1014 style="display:inline;opacity:1;fill:#3399cc;fill-opacity:1;stroke:#3399cc;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1015 id="ellipse1537"
1016 cx="159.80099"
1017 cy="259.99252" />
1018 </g>
1019 <g
1020 transform="translate(0,-67.278107)"
1021 style="display:none"
1022 id="layer3">
1023 <path
1024 id="path5313"
1025 d="m 62.698223,85.778107 -39.5,48.000003 v 0 l -1,2"
1026 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1027 <path
1028 id="path5311"
1029 d="m 12.698223,104.77811 10,29 21,-10.5 v 0 0"
1030 style="fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1031 <path
1032 id="path9316"
1033 d="m 11.809253,105.24526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.193047,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
1034 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1035 <path
1036 id="path9318"
1037 d="m 98.868943,129.31358 37.045597,48.02106"
1038 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1039 <path
1040 id="path12058"
1041 d="m 88.284483,158.4287 10.96248,-29.11512 12.474537,32.51819"
1042 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1043 <path
1044 id="path12250"
1045 d="m 212.13974,133.78236 54.69043,-3.64603 -31.75647,27.04795"
1046 style="display:inline;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1047 <path
1048 id="path5161"
1049 d="m 399.11285,648.31931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
1050 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#cc0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1051 transform="translate(-387.41463,-542.5412)" />
1052 <path
1053 id="path12206"
1054 d="m 601.57854,741.42859 -2.26809,-64.28015"
1055 style="display:inline;opacity:1;fill:#729fcf;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1056 transform="translate(-387.41463,-542.5412)" />
1057 <path
1058 id="path5331"
1059 d="m 189.57322,206.52811 -44,2.625 25.375,17.125 v 0"
1060 style="fill:none;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" />
1061 <path
1062 id="path9320"
1063 d="m 475.69911,700.21367 24.57107,51.42411"
1064 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1065 transform="translate(-387.41463,-542.5412)" />
1066 <path
1067 id="path9322"
1068 d="m 534.29164,751.63778 12.85257,40.08057"
1069 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1070 transform="translate(-387.41463,-542.5412)" />
1071 <path
1072 id="path9324"
1073 d="m 525.21925,783.02162 0.37803,45.75234"
1074 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1075 transform="translate(-387.41463,-542.5412)" />
1076 <path
1077 id="path9326"
1078 d="m 601.95657,742.56293 -12.09653,36.6775"
1079 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1080 transform="translate(-387.41463,-542.5412)" />
1081 <path
1082 id="path12060"
1083 d="m 475.69911,700.59178 46.98395,22.0278 10.85256,28.26194"
1084 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1085 transform="translate(-387.41463,-542.5412)" />
1086 <path
1087 id="path12208"
1088 d="m 589.104,778.86231 -12.85255,-66.17074 v 36.6775 z"
1089 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1090 transform="translate(-387.41463,-542.5412)" />
1091 <path
1092 id="path12210"
1093 d="m 557.35064,768.27501 31.75336,10.5873"
1094 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1095 transform="translate(-387.41463,-542.5412)" />
1096 <path
1097 id="path12212"
1098 d="m 500.27018,704.37298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
1099 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1100 transform="translate(-387.41463,-542.5412)" />
1101 <path
1102 id="path12216"
1103 d="m 524.46323,829.53019 44.98392,-0.37812"
1104 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1105 transform="translate(-387.41463,-542.5412)" />
1106 <path
1107 id="path5163"
1108 d="m 694.61285,647.31931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
1109 style="display:inline;opacity:1;fill:none;stroke:#cc0000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
1110 transform="translate(-387.41463,-542.5412)" />
1111 <path
1112 id="path12214"
1113 d="m 409.92428,677.14844 54.05634,6.0499"
1114 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.99607843"
1115 transform="translate(-387.41463,-542.5412)" />
1116 </g>
1117 <g
1118 id="g325"
1119 style="display:none"
1120 transform="translate(0,-67.278107)">
1121 <ellipse
1122 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1123 id="ellipse12254"
1124 cx="568.98083"
1125 cy="829.24042"
1126 rx="4.1581793"
1127 ry="4.1593032"
1128 transform="translate(-387.41463,-542.5412)" />
1129 <ellipse
1130 cy="778.67493"
1131 cx="588.85413"
1132 id="ellipse12290"
1133 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1134 rx="4.1581793"
1135 ry="4.1593032"
1136 transform="translate(-387.41463,-542.5412)" />
1137 <ellipse
1138 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1139 id="ellipse12284"
1140 cx="601.57867"
1141 cy="740.67249"
1142 rx="4.1581793"
1143 ry="4.1593032"
1144 transform="translate(-387.41463,-542.5412)" />
1145 <ellipse
1146 cy="829.24042"
1147 cx="525.79852"
1148 id="ellipse12256"
1149 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1150 rx="4.1581793"
1151 ry="4.1593032"
1152 transform="translate(-387.41463,-542.5412)" />
1153 <ellipse
1154 cy="768.71582"
1155 cx="557.82654"
1156 id="ellipse12306"
1157 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1158 rx="4.1581793"
1159 ry="4.1593032"
1160 transform="translate(-387.41463,-542.5412)" />
1161 <ellipse
1162 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1163 id="ellipse12280"
1164 cx="525.21936"
1165 cy="783.02173"
1166 rx="4.1581793"
1167 ry="4.1593032"
1168 transform="translate(-387.41463,-542.5412)" />
1169 <ellipse
1170 cy="647.34271"
1171 cx="400.09586"
1172 id="ellipse12258"
1173 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1174 rx="4.1581793"
1175 ry="4.1593032"
1176 transform="translate(-387.41463,-542.5412)" />
1177 <ellipse
1178 cy="628.31934"
1179 cx="450.11285"
1180 id="ellipse12258-3"
1181 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1182 rx="4.1581793"
1183 ry="4.1593032"
1184 transform="translate(-387.41463,-542.5412)" />
1185 <ellipse
1186 cy="699.45752"
1187 cx="622.36951"
1188 id="ellipse12294"
1189 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1190 rx="4.1581793"
1191 ry="4.1593032"
1192 transform="translate(-387.41463,-542.5412)" />
1193 <ellipse
1194 cy="792.29773"
1195 cx="547.21771"
1196 id="ellipse12252"
1197 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1198 rx="4.1581793"
1199 ry="4.1593032"
1200 transform="translate(-387.41463,-542.5412)" />
1201 <ellipse
1202 cy="800.12549"
1203 cx="566.20697"
1204 id="ellipse12282"
1205 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1206 rx="4.1581793"
1207 ry="4.1593032"
1208 transform="translate(-387.41463,-542.5412)" />
1209 <ellipse
1210 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1211 id="ellipse12276"
1212 cx="500.64822"
1213 cy="751.63794"
1214 rx="4.1581793"
1215 ry="4.1593032"
1216 transform="translate(-387.41463,-542.5412)" />
1217 <ellipse
1218 cy="751.72632"
1219 cx="533.33447"
1220 id="ellipse12278"
1221 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1222 rx="4.1581793"
1223 ry="4.1593032"
1224 transform="translate(-387.41463,-542.5412)" />
1225 <ellipse
1226 cy="699.83545"
1227 cx="450.75012"
1228 id="ellipse12262"
1229 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1230 rx="4.1581793"
1231 ry="4.1593032"
1232 transform="translate(-387.41463,-542.5412)" />
1233 <ellipse
1234 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1235 id="ellipse12268"
1236 cx="476.07718"
1237 cy="700.59174"
1238 rx="4.1581793"
1239 ry="4.1593032"
1240 transform="translate(-387.41463,-542.5412)" />
1241 <ellipse
1242 cy="719.65314"
1243 cx="521.49146"
1244 id="ellipse12270"
1245 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1246 rx="4.1581793"
1247 ry="4.1593032"
1248 transform="translate(-387.41463,-542.5412)" />
1249 <ellipse
1250 cy="703.87305"
1251 cx="500.6362"
1252 id="ellipse12274"
1253 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1254 rx="4.1581793"
1255 ry="4.1593032"
1256 transform="translate(-387.41463,-542.5412)" />
1257 <ellipse
1258 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1259 id="ellipse12292"
1260 cx="211.9584"
1261 cy="134.28851"
1262 rx="4.1581793"
1263 ry="4.1593032" />
1264 <ellipse
1265 cy="713.44794"
1266 cx="576.62964"
1267 id="ellipse12286"
1268 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1269 rx="4.1581793"
1270 ry="4.1593032"
1271 transform="translate(-387.41463,-542.5412)" />
1272 <ellipse
1273 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1274 id="ellipse12260"
1275 cx="43.166531"
1276 cy="123.16669"
1277 rx="4.1581793"
1278 ry="4.1593032" />
1279 <ellipse
1280 cy="129.43542"
1281 cx="98.865997"
1282 id="ellipse12266"
1283 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1284 rx="4.1581793"
1285 ry="4.1593032" />
1286 <ellipse
1287 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1288 id="ellipse12296"
1289 cx="267.08618"
1290 cy="130.05022"
1291 rx="4.1581793"
1292 ry="4.1593032" />
1293 <ellipse
1294 cy="686.22339"
1295 cx="679.07196"
1296 id="ellipse12298"
1297 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1298 rx="4.1581793"
1299 ry="4.1593032"
1300 transform="translate(-387.41463,-542.5412)" />
1301 <ellipse
1302 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1303 id="ellipse12288"
1304 cx="577.00763"
1305 cy="748.99109"
1306 rx="4.1581793"
1307 ry="4.1593032"
1308 transform="translate(-387.41463,-542.5412)" />
1309 <ellipse
1310 cy="748.99109"
1311 cx="577.00763"
1312 id="ellipse12302"
1313 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1314 rx="4.1581793"
1315 ry="4.1593032"
1316 transform="translate(-387.41463,-542.5412)" />
1317 <ellipse
1318 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1319 id="ellipse12304"
1320 cx="577.07013"
1321 cy="748.99109"
1322 rx="4.1581793"
1323 ry="4.1593032"
1324 transform="translate(-387.41463,-542.5412)" />
1325 <ellipse
1326 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1327 id="ellipse12264"
1328 cx="22.887779"
1329 cy="133.85095"
1330 rx="4.1581793"
1331 ry="4.1593032"
1332 transform="translate(0,-3e-6)" />
1333 <ellipse
1334 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1335 id="ellipse12272"
1336 cx="462.47165"
1337 cy="682.1922"
1338 rx="4.1581793"
1339 ry="4.1593032"
1340 transform="translate(-387.41463,-542.5412)" />
1341 <ellipse
1342 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1343 id="ellipse12300"
1344 cx="694.58264"
1345 cy="647.3053"
1346 rx="4.1581793"
1347 ry="4.1593032"
1348 transform="translate(-387.41463,-542.5412)" />
1349 <ellipse
1350 cy="628.31934"
1351 cx="649.61285"
1352 id="ellipse12258-3-0"
1353 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#cc0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
1354 rx="4.1581793"
1355 ry="4.1593032"
1356 transform="translate(-387.41463,-542.5412)" />
1357 </g>
1358 <g
1359 transform="translate(0,-20)"
1360 style="display:none"
1361 id="layer6">
1362 <ellipse
1363 cy="276.32968"
1364 cx="159.80099"
1365 id="ellipse12282-8-9-0"
1366 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1367 rx="4.1581793"
1368 ry="4.1593032" />
1369 <ellipse
1370 cy="259.99252"
1371 cx="159.80099"
1372 id="ellipse12282-8-9"
1373 style="display:inline;opacity:1;fill:#ee0000;fill-opacity:1;stroke:#ee0000;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
1374 rx="4.1581793"
1375 ry="4.1593032" />
1376 </g>
1377 <g
1378 id="g975"
1379 style="display:inline"
1380 transform="translate(-387.41463,-609.81931)">
1381 <g
1382 id="text973"
1383 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;image-rendering:auto"
1384 aria-label="gnu net">
1385 <path
1386 id="path977"
1387 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1388 d="m 489.62118,868.96318 q 0,2.375 -0.81641,4.23046 -0.81641,1.85547 -2.30078,3.14193 -1.45964,1.28646 -3.46354,1.95443 -1.97917,0.69271 -4.42839,0.69271 -6.01172,0 -10.26693,-3.63672 l 2.42448,-3.95834 q 3.53776,3.04297 7.84245,3.04297 2.64714,0 4.25521,-1.31119 1.63281,-1.28646 1.63281,-4.0573 v -2.47395 q -1.58333,1.36067 -3.04297,2.02864 -1.45963,0.64323 -3.38932,0.64323 -2.22656,0 -4.13151,-0.9401 -1.90495,-0.94011 -3.29037,-2.54818 -1.36067,-1.63281 -2.15234,-3.78516 -0.76693,-2.15234 -0.76693,-4.57682 0,-2.42448 0.76693,-4.57682 0.79167,-2.17709 2.15234,-3.76042 1.38542,-1.60807 3.29037,-2.52344 1.90495,-0.9401 4.13151,-0.9401 1.92969,0 3.4388,0.66797 1.50912,0.64323 2.99349,1.95442 v -2.07812 h 5.1211 z m -5.1211,-16.67448 q -0.91536,-1.01433 -2.375,-1.53386 -1.43489,-0.54427 -2.79557,-0.54427 -2.89453,0 -4.70052,2.02865 -1.78125,2.02864 -1.78125,5.17057 0,1.55859 0.47005,2.89453 0.49479,1.3112 1.33594,2.27604 0.86588,0.96485 2.05338,1.53386 1.21224,0.54427 2.6224,0.54427 1.36068,0 2.79557,-0.54427 1.45964,-0.56901 2.375,-1.58334 z" />
1389 <path
1390 id="path979"
1391 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1392 d="m 514.82951,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54166,2.30078 2.00391,2.30078 2.00391,7.07552 z" />
1393 <path
1394 id="path981"
1395 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1396 d="m 518.90503,846.15328 h 5.12109 v 14.25 q 0,2.67187 1.01433,3.71094 1.01432,1.03906 2.94401,1.03906 2.82031,0 4.6263,-2.30078 1.80599,-2.30078 1.80599,-6.35807 v -10.34115 h 5.12109 v 23.05729 h -5.12109 v -5.76432 q -0.76693,2.96875 -2.84505,4.65104 -2.07813,1.68229 -5.1211,1.68229 -3.53776,0 -5.54166,-2.30078 -2.00391,-2.32552 -2.00391,-7.07552 z" />
1397 <path
1398 id="path983"
1399 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1400 d="m 575.70451,869.21057 h -5.12109 v -14.22526 q 0,-2.69661 -1.01433,-3.73568 -1.01432,-1.03906 -2.94401,-1.03906 -2.84505,0 -4.65104,2.30078 -1.78125,2.30078 -1.78125,6.35808 v 10.34114 h -5.12109 v -23.05729 h 5.12109 v 5.78906 q 0.76693,-2.99349 2.84505,-4.65104 2.07813,-1.68229 5.1211,-1.68229 3.53776,0 5.54167,2.30078 2.0039,2.30078 2.0039,7.07552 z" />
1401 <path
1402 id="path985"
1403 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1404 d="m 583.76832,859.63635 q 0.37109,2.375 2.2513,3.95834 1.90495,1.55859 5.09635,1.55859 2.4987,0 4.32943,-0.76693 1.85547,-0.79166 3.19141,-2.07812 l 2.62239,3.61198 q -2.22656,2.22656 -4.72526,3.04297 -2.47396,0.8164 -5.41797,0.8164 -2.67187,0 -4.97265,-0.89062 -2.30079,-0.89063 -3.98308,-2.47396 -1.68229,-1.60807 -2.64713,-3.8099 -0.94011,-2.20182 -0.94011,-4.89844 0,-2.62239 0.86589,-4.82421 0.89062,-2.22657 2.47396,-3.83464 1.60807,-1.63281 3.83463,-2.52344 2.22657,-0.91536 4.92318,-0.91536 2.79557,0 5.07161,0.96484 2.27605,0.94011 3.88412,2.7461 1.63281,1.80599 2.54818,4.42838 0.91536,2.59766 0.91536,5.88802 z m 13.53255,-4.5026 q -0.39584,-2.22656 -2.30078,-3.5625 -1.90495,-1.36068 -4.32943,-1.36068 -2.42448,0 -4.35417,1.36068 -1.92968,1.33594 -2.32552,3.5625 z" />
1405 <path
1406 id="path987"
1407 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#292929;stroke-width:1.03365779px;fill-opacity:1"
1408 d="m 627.08081,861.86291 q -0.39583,3.63672 -2.86979,5.78907 -2.44922,2.1276 -6.13542,2.1276 -2.02864,0 -3.71094,-0.66797 -1.68229,-0.66797 -2.86979,-1.85547 -1.1875,-1.1875 -1.85547,-2.84505 -0.64322,-1.68229 -0.64322,-3.66146 v -9.97005 h -5.22006 v -4.6263 h 5.22006 v -9.22787 h 5.12109 v 9.22787 h 9.67318 v 4.6263 h -9.67318 v 9.97005 q 0,2.22657 1.08854,3.31511 1.08854,1.08854 2.86979,1.08854 2.17709,0 3.24089,-1.26172 1.0638,-1.26172 1.26172,-3.04297 z" />
1409 </g>
1410 </g>
1411</svg>
diff --git a/contrib/gnunet-logo.pdf b/contrib/branding/logo/gnunet-logo.pdf
index fcc7b10bf..fcc7b10bf 100644
--- a/contrib/gnunet-logo.pdf
+++ b/contrib/branding/logo/gnunet-logo.pdf
Binary files differ
diff --git a/contrib/branding/logo/lynXified-amirouche-anonymous-v3.png b/contrib/branding/logo/lynXified-amirouche-anonymous-v3.png
new file mode 100644
index 000000000..52d7b24fd
--- /dev/null
+++ b/contrib/branding/logo/lynXified-amirouche-anonymous-v3.png
Binary files differ
diff --git a/contrib/branding/logo/lynXified-amirouche-v3.svg b/contrib/branding/logo/lynXified-amirouche-v3.svg
new file mode 100644
index 000000000..b8dd1ac67
--- /dev/null
+++ b/contrib/branding/logo/lynXified-amirouche-v3.svg
@@ -0,0 +1,918 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 width="400"
14 height="300"
15 id="svg2"
16 version="1.1"
17 inkscape:version="0.92.2 5c3e80d, 2017-08-06"
18 sodipodi:docname="lynXified-amirouche-v3.svg"
19 inkscape:export-filename="lynXified-amirouche-anonymous-v3.png"
20 inkscape:export-xdpi="192"
21 inkscape:export-ydpi="192">
22 <title
23 id="title3310">Guix System Distribution (Logo)</title>
24 <defs
25 id="defs4">
26 <linearGradient
27 id="gnunet">
28 <stop
29 id="stop9516"
30 offset="0"
31 style="stop-color:#ff0000;stop-opacity:0.58431375;" />
32 <stop
33 id="stop9518"
34 offset="1"
35 style="stop-color:#ffcc00;stop-opacity:1;" />
36 </linearGradient>
37 <inkscape:path-effect
38 effect="vonkoch"
39 id="path-effect8912"
40 is_visible="true"
41 ref_path="m 386.97986,1494.3277 h 79.02013"
42 generator="m 386.97986,1552.8408 h 26.34004 m 26.34005,0 h 26.34004"
43 similar_only="false"
44 nbgenerations="1"
45 drawall="true"
46 maxComplexity="1000" />
47 <linearGradient
48 id="linearGradient4094">
49 <stop
50 id="stop4096"
51 offset="0"
52 style="stop-color:#232323;stop-opacity:1;" />
53 <stop
54 id="stop4098"
55 offset="1"
56 style="stop-color:#4d4d4d;stop-opacity:1;" />
57 </linearGradient>
58 <linearGradient
59 id="linearGradient4014">
60 <stop
61 id="stop4016"
62 offset="0"
63 style="stop-color:#a0a0a0;stop-opacity:1;" />
64 <stop
65 id="stop4018"
66 offset="1"
67 style="stop-color:#ffffff;stop-opacity:1;" />
68 </linearGradient>
69 <linearGradient
70 id="linearGradient4678">
71 <stop
72 id="stop4680"
73 offset="0"
74 style="stop-color:#e5e5e5;stop-opacity:1;" />
75 <stop
76 id="stop4682"
77 offset="1"
78 style="stop-color:#d3cdcd;stop-opacity:1;" />
79 </linearGradient>
80 <linearGradient
81 id="linearGradient4341">
82 <stop
83 style="stop-color:#333333;stop-opacity:1;"
84 offset="0"
85 id="stop4343" />
86 <stop
87 style="stop-color:#484848;stop-opacity:1;"
88 offset="1"
89 id="stop4345" />
90 </linearGradient>
91 <linearGradient
92 id="linearGradient4696-5">
93 <stop
94 style="stop-color:#ffb638;stop-opacity:1;"
95 offset="0"
96 id="stop4698-6" />
97 <stop
98 style="stop-color:#f0ae26;stop-opacity:1;"
99 offset="1"
100 id="stop4700-2" />
101 </linearGradient>
102 <linearGradient
103 id="linearGradient4702-3-6">
104 <stop
105 style="stop-color:#ff0000;stop-opacity:0.58431375;"
106 offset="0"
107 id="stop4704-1" />
108 <stop
109 style="stop-color:#ffcc00;stop-opacity:1;"
110 offset="1"
111 id="stop4706-8" />
112 </linearGradient>
113 <color-profile
114 id="color-profile26"
115 xlink:href="/usr/share/color/icc/ghostscript/ps_cmyk.icc"
116 name="Artifex-PS-CMYK-Profile" />
117 <linearGradient
118 inkscape:collect="always"
119 xlink:href="#linearGradient4702-3-6"
120 id="linearGradient3138"
121 gradientUnits="userSpaceOnUse"
122 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
123 x1="142.96875"
124 y1="63.65625"
125 x2="177.04297"
126 y2="69.791016" />
127 <linearGradient
128 inkscape:collect="always"
129 xlink:href="#linearGradient4696-5"
130 id="linearGradient3141"
131 gradientUnits="userSpaceOnUse"
132 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
133 x1="108.08774"
134 y1="1025.709"
135 x2="80.655251"
136 y2="1043.709" />
137 <linearGradient
138 inkscape:collect="always"
139 xlink:href="#linearGradient4702-3-6"
140 id="linearGradient3144"
141 gradientUnits="userSpaceOnUse"
142 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
143 x1="113.5146"
144 y1="1004.8033"
145 x2="78.000107"
146 y2="922.07178" />
147 <linearGradient
148 inkscape:collect="always"
149 xlink:href="#linearGradient4702-3-6"
150 id="linearGradient3148"
151 gradientUnits="userSpaceOnUse"
152 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
153 x1="142.96875"
154 y1="63.65625"
155 x2="176.60477"
156 y2="70.667412" />
157 <linearGradient
158 inkscape:collect="always"
159 xlink:href="#linearGradient4702-3-6"
160 id="linearGradient3780"
161 gradientUnits="userSpaceOnUse"
162 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.2161,1106.9294)"
163 x1="142.96875"
164 y1="63.65625"
165 x2="176.60477"
166 y2="70.667412" />
167 <linearGradient
168 inkscape:collect="always"
169 xlink:href="#linearGradient4702-3-6"
170 id="linearGradient3782"
171 gradientUnits="userSpaceOnUse"
172 gradientTransform="matrix(0.88803314,0,0,0.88803314,415.18739,350.00262)"
173 x1="113.5146"
174 y1="1004.8033"
175 x2="78.000107"
176 y2="922.07178" />
177 <linearGradient
178 inkscape:collect="always"
179 xlink:href="#linearGradient4696-5"
180 id="linearGradient3784"
181 gradientUnits="userSpaceOnUse"
182 gradientTransform="matrix(-0.49726789,0,0,0.49726789,555.31016,722.70088)"
183 x1="108.08774"
184 y1="1025.709"
185 x2="80.655251"
186 y2="1043.709" />
187 <linearGradient
188 inkscape:collect="always"
189 xlink:href="#linearGradient4702-3-6"
190 id="linearGradient3786"
191 gradientUnits="userSpaceOnUse"
192 gradientTransform="matrix(-0.88803314,0,0,0.88803314,595.57001,1106.9291)"
193 x1="142.96875"
194 y1="63.65625"
195 x2="177.04297"
196 y2="69.791016" />
197 <filter
198 style="color-interpolation-filters:sRGB"
199 inkscape:label="Cross Blur"
200 id="filter9204">
201 <feColorMatrix
202 in="SourceGraphic"
203 values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 -0.2125 -0.7154 -0.0721 1 0 "
204 result="colormatrix"
205 id="feColorMatrix9194" />
206 <feComposite
207 in="SourceGraphic"
208 in2="colormatrix"
209 operator="arithmetic"
210 k2="1"
211 k3="0"
212 k4="0"
213 result="composite"
214 id="feComposite9196"
215 k1="0" />
216 <feGaussianBlur
217 stdDeviation="5 0.01"
218 result="blur1"
219 id="feGaussianBlur9198" />
220 <feGaussianBlur
221 in="composite"
222 stdDeviation="0.01 5"
223 result="blur2"
224 id="feGaussianBlur9200" />
225 <feBlend
226 in="blur2"
227 in2="blur1"
228 mode="darken"
229 result="blend"
230 id="feBlend9202" />
231 </filter>
232 <filter
233 style="color-interpolation-filters:sRGB"
234 inkscape:label="Blur"
235 id="filter9330">
236 <feGaussianBlur
237 stdDeviation="2 2"
238 result="blur"
239 id="feGaussianBlur9328" />
240 </filter>
241 </defs>
242 <sodipodi:namedview
243 id="base"
244 pagecolor="#ffffff"
245 bordercolor="#e73520"
246 borderopacity="1"
247 inkscape:pageopacity="0.0"
248 inkscape:pageshadow="2"
249 inkscape:zoom="2"
250 inkscape:cx="185.65271"
251 inkscape:cy="142.71577"
252 inkscape:document-units="px"
253 inkscape:current-layer="g950"
254 showgrid="true"
255 inkscape:window-width="1600"
256 inkscape:window-height="835"
257 inkscape:window-x="0"
258 inkscape:window-y="0"
259 inkscape:window-maximized="1"
260 inkscape:showpageshadow="false"
261 showborder="true"
262 borderlayer="true"
263 inkscape:object-nodes="true"
264 inkscape:snap-global="true"
265 showguides="true"
266 inkscape:guide-bbox="true"
267 objecttolerance="20"
268 inkscape:snap-tangential="true"
269 inkscape:snap-perpendicular="true"
270 inkscape:pagecheckerboard="true"
271 fit-margin-top="10"
272 fit-margin-left="10"
273 fit-margin-right="10"
274 fit-margin-bottom="10"
275 inkscape:snap-path-clip="true"
276 inkscape:snap-path-mask="true">
277 <sodipodi:guide
278 position="-307.43549,820.27825"
279 orientation="1,0"
280 id="guide5092"
281 inkscape:locked="false" />
282 <inkscape:grid
283 type="xygrid"
284 id="grid8783"
285 originx="0"
286 originy="0"
287 spacingx="5"
288 spacingy="5" />
289 <sodipodi:guide
290 position="-280.81043,809.79316"
291 orientation="0,1"
292 id="guide8844"
293 inkscape:locked="false" />
294 <sodipodi:guide
295 position="-297.44255,799.75126"
296 orientation="1,0"
297 id="guide8846"
298 inkscape:locked="false" />
299 <sodipodi:guide
300 position="-286.44639,799.75126"
301 orientation="0,1"
302 id="guide8864"
303 inkscape:locked="false" />
304 <sodipodi:guide
305 position="-227.46698,708.44981"
306 orientation="1,0"
307 id="guide8874"
308 inkscape:locked="false" />
309 <sodipodi:guide
310 position="-217.47047,677.79384"
311 orientation="1,0"
312 id="guide8876"
313 inkscape:locked="false" />
314 <sodipodi:guide
315 position="-219.46978,729.7757"
316 orientation="0,1"
317 id="guide8878"
318 inkscape:locked="false" />
319 <sodipodi:guide
320 position="-158.75928,719.78633"
321 orientation="0,1"
322 id="guide8896"
323 inkscape:locked="false" />
324 <sodipodi:guide
325 position="-147.49491,703.61816"
326 orientation="1,0"
327 id="guide8922"
328 inkscape:locked="false" />
329 <sodipodi:guide
330 position="-213.42311,880.00792"
331 orientation="0,1"
332 id="guide8924"
333 inkscape:locked="false" />
334 <sodipodi:guide
335 position="-357.88081,649.83162"
336 orientation="0,1"
337 id="guide8926"
338 inkscape:locked="false" />
339 <sodipodi:guide
340 position="-137.55348,605.74624"
341 orientation="1,0"
342 id="guide8991"
343 inkscape:locked="false" />
344 <sodipodi:guide
345 position="-231.80147,639.67552"
346 orientation="0,1"
347 id="guide8993"
348 inkscape:locked="false" />
349 <sodipodi:guide
350 position="-285.31397,844.81632"
351 orientation="0,1"
352 id="guide9013"
353 inkscape:locked="false" />
354 <sodipodi:guide
355 position="200,352"
356 orientation="1,0"
357 id="guide5070"
358 inkscape:locked="false" />
359 <sodipodi:guide
360 position="50,215"
361 orientation="1,0"
362 id="guide5335"
363 inkscape:locked="false" />
364 <sodipodi:guide
365 position="350,137"
366 orientation="1,0"
367 id="guide5337"
368 inkscape:locked="false" />
369 <sodipodi:guide
370 position="10,275.5"
371 orientation="1,0"
372 id="guide5354"
373 inkscape:locked="false" />
374 <sodipodi:guide
375 position="203.46998,66.733203"
376 orientation="0,1"
377 id="guide5358"
378 inkscape:locked="false" />
379 </sodipodi:namedview>
380 <metadata
381 id="metadata7">
382 <rdf:RDF>
383 <cc:Work
384 rdf:about="">
385 <dc:format>image/svg+xml</dc:format>
386 <dc:type
387 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
388 <dc:title>Guix System Distribution (Logo)</dc:title>
389 <dc:date>2015-02-07</dc:date>
390 <dc:creator>
391 <cc:Agent>
392 <dc:title>Luis Felipe López Acevedo</dc:title>
393 </cc:Agent>
394 </dc:creator>
395 <dc:rights>
396 <cc:Agent>
397 <dc:title>Luis Felipe López Acevedo</dc:title>
398 </cc:Agent>
399 </dc:rights>
400 <cc:license
401 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
402 <dc:description />
403 </cc:Work>
404 <cc:License
405 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
406 <cc:permits
407 rdf:resource="http://creativecommons.org/ns#Reproduction" />
408 <cc:permits
409 rdf:resource="http://creativecommons.org/ns#Distribution" />
410 <cc:requires
411 rdf:resource="http://creativecommons.org/ns#Notice" />
412 <cc:requires
413 rdf:resource="http://creativecommons.org/ns#Attribution" />
414 <cc:permits
415 rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
416 <cc:requires
417 rdf:resource="http://creativecommons.org/ns#ShareAlike" />
418 </cc:License>
419 </rdf:RDF>
420 </metadata>
421 <g
422 inkscape:groupmode="layer"
423 id="layer5"
424 inkscape:label="ramen"
425 sodipodi:insensitive="true">
426 <rect
427 style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.45544064;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
428 id="rect942"
429 width="400"
430 height="300"
431 x="-3.7303494e-14"
432 y="1.7330311e-15" />
433 </g>
434 <g
435 inkscape:groupmode="layer"
436 id="layer4"
437 inkscape:label="bg"
438 style="display:inline"
439 transform="translate(0,-47.278107)"
440 sodipodi:insensitive="true">
441 <rect
442 style="display:inline;opacity:1;vector-effect:none;fill:#421111;fill-opacity:1;stroke:none;stroke-width:1.47144902;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
443 id="rect12062"
444 width="380"
445 height="279.99997"
446 x="10"
447 y="57.278107" />
448 </g>
449 <g
450 inkscape:groupmode="layer"
451 id="layer1"
452 inkscape:label="head"
453 style="display:none;opacity:1"
454 transform="translate(0,-47.278107)"
455 sodipodi:insensitive="true">
456 <g
457 transform="matrix(0.40699717,0,0,0.40699717,31.535627,27.300788)"
458 id="layer1-6"
459 inkscape:label="Layer 1"
460 style="fill:#ff0000">
461 <g
462 transform="translate(126.95974,19.57999)"
463 id="Layer_1"
464 style="fill:#ff0000">
465 <g
466 id="g2490"
467 style="fill:#ff0000">
468 <path
469 style="fill:#ff0000;fill-rule:evenodd"
470 d="m 112.993,304.372 c -3.634,0.247 -8.365,1.875 -11.539,7.564 -2.591,4.646 -8.661,5.387 -11.495,4.451 -4.721,-1.56 -10.755,-2.642 -16.6,1.523 -5.845,4.164 -12.157,1.015 -11.05,-6.576 1.107,-7.59 3.849,-14.351 11.127,-18.538 15.895,-9.144 4.848,-15.508 13.572,-24.685 8.741,-9.195 6.81,-12.009 6.52,-24.497 C 63.985,239.176 47.241,230.661 28.544,207.301 9.847,183.94 2.599,164.711 0.661,135.423 -1.277,106.135 0.403,87.154 13.057,62.843 25.711,38.532 39.034,26.829 62.122,14.69 85.21,2.553 107.832,-0.354 128.742,0 c 20.91,0.353 34.843,1.885 46.658,8.626 11.814,6.741 22.622,15.224 29.512,15.285 6.891,0.061 11.582,-1.744 14.931,-4.31 0.894,22.703 -19.539,24.675 -37.819,25.155 -18.281,0.479 -29.514,-7.083 -46.351,-4.27 -16.837,2.813 -44.404,10.475 -57.833,33.85 -13.429,23.375 -13.887,31.638 -12.771,51.24 1.116,19.603 17.988,34.228 27.512,34.387 9.523,0.159 11.649,-2.599 19.985,-8.036 8.337,-5.438 50.896,-58.122 65.418,-69.956 14.523,-11.834 28.854,-15.488 44.328,-15.678 15.474,-0.19 19.428,0.335 31.908,5.45 12.48,5.114 20.149,14.533 30.211,20.291 5.143,-3.027 8.338,-7.547 13.057,-10.996 16.877,-12.335 25.646,-15.659 45.705,-13.707 11.529,1.122 26.066,7.708 34.74,15.25 15.445,13.429 28.205,32.125 38.516,46.328 8.029,11.061 17.477,24.295 30.965,28.432 14.727,4.515 25.809,-14.559 27.436,-25.139 0.922,-5.995 2.125,-11.249 2.135,-17.847 0.01,-6.599 -0.664,-14.607 -2.566,-21.484 -1.902,-6.877 -5.16,-13.72 -8.688,-19.394 -5.742,-9.235 -15.137,-18.899 -24.912,-23.871 -5.486,-2.79 -18.393,-7.863 -26.529,-8.041 -9.969,-0.216 -17.564,3.133 -26.781,3.761 -11.156,0.761 -31.084,3.269 -39.83,-5.35 -5.566,-5.485 -6.266,-9.144 -7.217,-16.296 2.459,2.026 5.898,3.358 8.959,3.617 6.986,0.59 13.527,-5.114 19.166,-8.419 4.645,-2.723 11.223,-7.589 17.324,-10.048 15.676,-6.32 34.932,-6.138 51.48,-4.445 13.264,1.356 30.461,7.257 42.094,13.84 11.688,6.612 22.951,17.761 31.201,28.271 10.379,13.224 16.053,24.57 19.812,41.063 4.805,21.062 6.137,52.702 0.328,73.469 -4.578,16.365 -19.779,41.504 -32.719,53.827 -12.762,12.155 -27.498,18.022 -44.256,21.231 0.656,3.382 0.764,6.536 1.631,9.309 1.232,3.936 3.588,8.324 8.428,6.936 1.93,-0.553 2.963,-1.032 5.508,1.194 2.543,2.226 1.219,10.825 -5.938,14.684 -3.629,1.957 -7.459,2.382 -13.271,2.498 -5.812,0.116 -14.883,0.141 -21.193,-0.964 -6.309,-1.104 -10.078,-6.111 -17.066,-6.895 -10.799,-1.208 -19.068,-9.01 -27.727,-14.59 -3.613,-2.329 -4.832,-2.353 -6.914,-3.53 1.125,3.444 2.625,7.021 3.373,10.332 0.75,3.311 0.43,6.378 0.828,9.028 0.396,2.648 1.131,4.707 1.559,6.855 1.73,1.547 2.283,3.9 5.189,4.64 2.908,0.739 7.461,-0.412 10.436,-0.812 2.975,-0.4 4.969,-2.021 7.303,-1.577 2.336,0.443 4.549,2.115 6.506,3.682 1.957,1.567 3.639,1.796 5.223,5.706 1.584,3.91 3.037,11.917 3.254,17.269 0.217,5.352 -0.383,10.183 -1.969,14.43 -1.586,4.247 -2.98,6.13 -7.275,10.336 -4.295,4.207 -11.289,10.38 -18.268,14.68 1.285,1.903 1.855,3.645 3.859,5.71 2.004,2.066 6.182,4.381 8.041,6.56 1.857,2.179 2.799,3.742 2.826,6.186 0.029,2.443 -0.09,5.619 -2.074,8.283 -4.941,6.633 -10.785,7.821 -17.891,10.941 1.195,7.462 2.17,12.793 0.443,20.244 -0.705,3.036 -2.271,9.92 -6.016,11.686 -3.746,1.766 -10.969,0.911 -15.541,1.637 -4.572,0.727 -7.131,1.417 -10.695,2.125 -2.166,3.131 -5.391,6.586 -6.496,9.392 -1.107,2.807 -0.773,3.813 0.156,6.679 0.929,2.866 4.092,7.039 4.988,10.395 0.896,3.356 1.07,6.969 0.234,10.334 -0.838,3.365 -2.271,5.807 -5.139,8.795 -2.867,2.989 -8.508,5.336 -11.318,7.758 -2.812,2.423 -5.611,2.714 -4.844,6.723 1.055,5.506 9.1,14.436 14.92,16.562 3.488,1.275 8.17,0.873 12.406,-0.915 -0.287,4.703 -4.357,7.873 -7.016,10.996 7.201,-2.059 14.184,-6.001 19.014,-11.226 -1.498,4.538 -6.652,11.823 -14.361,18.22 -7.709,6.397 -7.662,5.088 -11.494,7.633 6.992,1.405 13.494,1.025 18.91,0.052 -2.969,1.637 -7.836,3.939 -14.283,4.616 -6.447,0.676 -10.422,0.198 -16.232,-1.213 -5.811,-1.412 -11.115,-6.694 -18.156,-10.335 0.686,2.612 1.174,5.753 4.135,8.439 2.961,2.686 7.441,4.052 12.203,6.375 -6.062,-0.688 -12.432,-0.896 -18.389,-2.209 -4.41,-0.973 -7.373,-2.005 -10.6,-3.603 -3.225,-1.598 -5.715,-3.929 -8.572,-5.893 1.369,2.615 1.775,5.691 4.105,7.847 2.33,2.156 6.117,2.959 9.18,4.44 -3.195,-0.07 -6.268,0.623 -9.58,-0.21 -3.314,-0.833 -6.422,-2.142 -9.867,-4.68 -3.445,-2.538 -6.998,-5.663 -9.938,-8.858 -2.938,-3.195 -6.566,-7.337 -7.664,-10.283 -1.1,-2.947 0.66,-5.008 0.99,-7.509 -2.029,1.333 -4.525,2.067 -6.084,4.002 -1.559,1.935 -2.941,3.702 -2.251,7.075 0.691,3.373 3.804,7.496 6.005,11.248 -6.568,-5.371 -10.236,-7.439 -11.799,-13.918 -1.463,-6.066 2.322,-11.572 5.199,-16.159 1.429,-2.278 3.567,-4.398 4.903,-6.597 -2.967,-2.903 -6.358,-5.398 -8.901,-8.709 -2.542,-3.31 -3.61,-7.79 -6.205,-10.957 -2.596,-3.168 -6.088,-5.173 -9.129,-7.756 2.673,5.742 7.066,12.785 8.02,17.229 0.953,4.444 -1.069,7.164 -2.646,9.563 -1.578,2.399 -4.124,2.934 -6.539,4.408 -2.415,1.475 -6.171,0.312 -7.61,2.501 -1.438,2.188 -1.824,5.48 -0.449,7.648 l 5.64,8.902 c -2.078,-1.049 -5.658,-4.1 -7.272,-6.264 -1.614,-2.164 -4.09,-4.163 -4.429,-7.089 -0.339,-2.925 -0.504,-5.464 1.391,-8.07 1.896,-2.605 7.086,-3.477 9.409,-5.48 2.323,-2.003 3.626,-3.307 3.493,-5.896 -0.132,-2.589 -2.661,-4.441 -4.835,-6.073 -6.637,-4.978 -15.151,-9.565 -20.787,-15.565 -3.184,-3.39 -4.712,-6.127 -5.352,-8.466 -0.639,-2.338 0.037,-4.162 1.619,-7.038 1.582,-2.877 7.007,-6.718 7.667,-9.843 0.659,-3.124 -2.081,-3.795 -4.554,-4.897 -2.473,-1.102 -7.17,0.565 -9.464,-1.352 -2.293,-1.917 0.674,-5.945 -1.911,-8.154 -2.584,-2.209 -8.499,-0.976 -11.552,-3.352 -3.053,-2.377 -4.315,-5.327 -5.367,-8.775 -1.052,-3.448 -1.171,-7.225 -0.458,-9.722 0.713,-2.497 2.855,-2.934 4.147,-4.228 1.292,-1.294 2.413,-2.367 0.691,-4.297 -1.722,-1.929 -7.365,0.108 -10.609,-2.369 -3.244,-2.477 -1.258,-8.41 -3.552,-10.911 -2.293,-2.501 -6.409,-1.522 -8.581,-2.321 -2.171,-0.799 -3.023,2.02 -4.355,-2.438 -1.332,-4.459 -1.368,-17.75 -3.16,-22.71 -1.792,-4.96 -5.311,-0.335 -6.945,-5.265 -1.634,-4.929 -0.085,-12.812 -0.821,-20.257 l -3.335,-20.257 c -11.634,7.815 -19.314,10.269 -31.813,12.477 -1.043,30.582 -3.916,48.591 6.464,82.52 10.38,33.928 31.387,53.924 59.726,82.649 -37.395,-28.016 -55.248,-50.792 -66.422,-79.97 -11.176,-29.182 -9.03,-53.586 -7.906,-81.686 z M 311.701,292.08 c 2.877,0.129 6.373,0.859 8.393,2.171 2.021,1.312 4.166,2.384 6,4.251 4.576,4.66 8.008,10.28 9.525,16.738 0.967,4.117 1.111,9.397 1.463,14.231 -1.385,-4.468 -2.316,-9.127 -4.289,-13.13 -3.111,-6.312 -8.396,-12.473 -14.959,-15.31 -2.166,-0.938 -3.611,-0.764 -4.803,-0.598 0.533,0.895 1.426,1.645 1.465,2.956 0.039,1.311 -0.254,3.876 -2.477,4.954 -3.584,1.739 -7.568,0.516 -10.336,-1.931 -2.791,-2.466 -3.742,-6.638 -2.281,-10.223 1.741,-4.272 8.375,-4.283 12.299,-4.109 z M 275.629,286 c 0.361,-7.345 3.012,-13.539 9.594,-17.141 3.404,-1.862 8.648,-4.27 13.467,-4.836 4.629,-0.543 15.889,-0.146 22.662,2.945 5.201,2.374 8.744,6.07 13.311,8.771 4.566,2.702 7.814,4.513 12.162,7.543 6.674,4.651 10.586,9.772 15.213,12.842 2.225,1.475 5.355,1.256 8.309,2.158 -2.297,0.682 -5.299,1.434 -7.777,0.642 -3.09,-0.988 -7.41,-3.813 -9.807,-5.838 -4.236,-3.578 -6.432,-5.324 -11.055,-8.023 -2.76,-1.608 -7.305,-3.503 -10.338,-5.481 -3.035,-1.978 -8.303,-6.318 -11.219,-7.787 -3.707,-1.866 -10.381,-2.904 -14.508,-2.783 -5.686,0.166 -13.916,1.104 -18.316,5.096 -4.371,3.968 -6.031,7.459 -5.045,12.612 1.646,-1.896 2.742,-4.278 4.391,-5.688 3.416,-2.918 7.336,-3.059 11.588,-2.506 4.777,0.622 7.182,3.381 8.76,7.916 -1.062,-0.78 -3.014,-2.493 -4.555,-3.024 -3.617,-1.248 -6.352,-0.864 -9.74,0.953 -4,2.146 -2.912,5.322 -3.488,8.854 -0.264,1.629 -0.879,2.941 -1.318,4.412 -1.504,-0.398 -2.895,-1.024 -4.033,-2.152 0.047,1.65 -0.193,3.093 0.145,4.949 0.336,1.855 1.24,4.059 1.859,6.088 -2.785,-2.786 -5.635,-5.38 -7.434,-8.977 -1.801,-3.599 -3.021,-7.593 -2.828,-11.545 z m 4.82,-53.46 c 2.053,-3.047 2.654,-7.721 3.92,-11.521 -0.506,4.813 0.467,10.106 -1.883,13.592 -2.35,3.486 -6.477,2.875 -9.896,3.889 2.66,-2.028 5.805,-2.913 7.859,-5.96 z m -49.151,71.368 c 2.636,-2.134 9.75,-0.428 15.071,-0.047 -3.824,0.979 -7.648,1.959 -11.472,2.938 -0.356,1.301 -0.195,2.792 -1.068,3.901 -0.874,1.11 -2.534,1.521 -3.8,2.28 0.125,-3.418 -1.367,-6.939 1.269,-9.072 z m 37.491,-148.22 c 3.176,1.71 7.207,3.971 10.012,4.041 2.805,0.07 3.539,-1.834 5.189,-2.933 2.596,8.465 5.576,17.766 9.996,25.447 1.852,3.218 3.033,1.722 4.441,4.956 1.406,3.233 2.031,9.812 3.365,13.943 1.336,4.131 3.078,7.171 4.617,10.756 -3.908,-5.537 -8.957,-12.597 -11.135,-17.205 -2.176,-4.607 -0.783,-5.008 -2.545,-9.396 -1.762,-4.388 -5.324,-11.228 -7.986,-16.842 -1.906,0.253 -4.266,0.6 -5.715,0.153 -1.449,-0.447 -1.16,-1.988 -2.469,-2.984 -1.311,-0.996 -3.514,-0.61 -5.35,-2.2 -1.836,-1.589 -2.254,-4.85 -2.42,-7.736 z m -17.101,41.769 c 2.989,-0.262 6.701,0.539 9.5,0.38 2.799,-0.159 4.797,-0.885 7.196,-1.328 -0.445,-4.216 -0.023,-11.962 -3.915,-14.777 -2.514,-1.818 -12.839,-0.449 -15.597,0.146 -6.206,1.338 -13.433,5.042 -19.435,7.358 5.752,-4.018 10.721,-7.742 17.62,-9.816 4.147,-1.247 13.825,-2.868 18.105,-1.712 1.954,0.527 2.349,1.336 3.534,2.992 4.074,5.688 4.062,10.604 5.119,17.23 1.039,1.619 2.146,2.699 2.988,4.369 0.84,1.67 1.316,4.298 1.551,6.446 -1.066,-1.546 -0.414,-3.485 -3.367,-4.636 -2.955,-1.151 -7.479,-0.076 -11.46,0.34 2.902,2.094 4.344,4.111 4.455,8.538 0.13,5.198 -4.271,8.939 -8.866,9.295 -6.379,0.495 -9.668,-0.906 -12.248,-6.358 -1.13,-2.388 -0.311,-5.261 -0.405,-7.589 -7.665,0.533 -7.54,0.283 -13.142,4.954 3.045,4.461 4.963,7.026 9.995,9.695 2.822,1.498 6.017,2.954 9.514,3.549 3.498,0.595 9.235,1.17 12.909,0.606 3.675,-0.564 5.757,-1.613 8.481,-4.132 2.725,-2.52 2.975,-6.128 4.039,-8.98 -0.242,2.745 -0.557,6.241 -1.576,8.232 -3.1,6.053 -8.461,7.847 -14.862,7.867 -6.144,0.02 -13.744,-1.397 -19.46,-3.767 -4.57,-1.894 -12.146,-7.258 -13.944,-11.918 -1.229,-3.184 -0.256,-7.091 -0.385,-10.637 6.328,-4.208 7.894,-3.173 15.381,-4.405 3.132,-0.516 5.286,-1.679 8.275,-1.942 z m -36.861,-28.501 c 0.178,-2.521 0.457,-2.467 0.686,-3.701 -5.765,-1.542 -8.077,2.198 -11.457,9.144 -1.265,2.599 -0.013,4.146 -1.37,5.857 -1.355,1.711 -3.539,1.471 -5.74,3.114 -2.201,1.642 -4.382,4.787 -6.44,6.488 -4.223,3.491 -9.931,5.622 -14.829,7.971 3.345,-2.468 9.836,-6.211 11.936,-9.797 1.114,-1.901 0.949,-5.486 2.683,-7.195 1.733,-1.71 2.34,-2.893 4.578,-3.329 2.238,-0.436 1.338,-3.03 2.06,-5.092 0.722,-2.062 2.16,-3.526 3.69,-5.586 1.53,-2.06 3.46,-5.153 6.481,-6.276 3.021,-1.124 7.732,0.091 10.019,-0.556 2.286,-0.647 0.973,-2.309 2.634,-3.307 1.663,-0.998 4.896,-0.558 7.117,-1.625 3.937,-1.893 5.82,-5.053 8.188,-8.436 0.344,7.282 0.26,12.525 -2.357,19.376 -2.947,7.711 -5.934,12.253 -14.298,16.995 -2.882,1.633 -5.75,2.2 -8.139,3.057 1.393,-1.9 3.387,-2.725 4.18,-5.7 0.791,-2.977 0.2,-8.88 0.378,-11.402 z m 135.038,35.507 c -3.977,0.259 -4.92,-0.264 -8.102,1.98 1.725,2.684 3.449,5.368 5.172,8.052 -0.152,-5.298 0.364,-6.36 2.93,-10.032 z m -10.42,-3.85 c 5.508,-2.346 10.307,-4.244 16.299,-4.619 2.402,-0.151 6.131,0.221 8.557,0.331 2.066,-3.042 4.699,-5.441 5.664,-8.913 0.639,-2.303 0.324,-12.992 -0.807,-15.767 -3.295,-8.076 -6.498,-8.417 -11.033,-13.043 -3.291,-3.355 -3.422,-8.464 -4.406,-14.189 -0.361,-2.103 -1.393,-4.764 -1.877,-6.934 -5.928,-0.999 -12.303,-1.328 -19.123,-0.987 3.307,-3.172 6.504,-6.07 7.453,-10.832 0.947,-4.762 0.176,-10.617 -2.531,-14.887 -2.707,-4.27 -7.031,-7.99 -11,-11.469 -3.971,-3.479 -9.662,-6.351 -13.424,-9.197 4.893,-1.752 9.889,-4.326 14.682,-5.255 12.486,-2.422 23.244,1.282 35.287,8.563 7.002,4.235 12.793,8.258 20.113,15.921 7.318,7.662 16.395,21.717 23.48,30.052 7.085,8.335 12.805,14.927 18.986,19.898 6.182,4.972 11.777,6.388 17.664,9.581 l 9.176,9.744 7.426,-9.189 11.949,1.351 2.469,-13.412 10.967,-3.005 -1.789,-18.08 7.885,-5.596 -5.926,-11.249 6.021,-12.292 -7.85,-14.051 3.027,-13.529 -9.088,-7.745 -1.186,-14.377 -12.678,-4.836 -5.086,-12.508 -14.254,-0.16 -6.992,-9.285 -9.596,0.672 -10.697,-1.165 -6.049,-4.466 -8.779,5.828 -10.623,-5.539 -21.117,8.017 13.766,-11.972 14.262,-2.278 10.926,-2.785 14.756,4.846 12.988,-3.29 12.523,7.403 13.252,-0.733 6.51,11.681 13.195,1.523 7.139,12.987 8.299,4.531 2.203,16.637 7.391,7.01 -3.25,14.557 8.707,11.024 -8.164,11.812 8.73,7.383 -11.16,9.891 11.303,11.771 -13.65,4.402 8.891,12.625 -11.15,1.924 7.312,13.882 -12.566,-0.167 6.33,10.398 -13.783,-1.659 3.297,14.959 -10.416,-9.163 -3.568,18.13 -7.188,-13.018 -3.893,16.237 -8.873,-11.973 0.242,17.026 -9.807,-15.309 c 2.068,8.686 1.654,18.197 7.359,26.386 17.676,-2.392 29.229,-6.846 42.771,-19.877 12.334,-11.868 27.076,-36.613 31.068,-52.308 4.555,-17.91 4.695,-50.85 0.209,-69.084 C 522.282,71.848 516.67,63.462 506.643,49.136 497.059,38.957 487.633,28.204 475.469,20.945 457.613,10.29 434.717,7.417 414.367,7.694 c -11.268,0.154 -18.816,2.318 -25.553,4.768 -11.781,4.284 -21.203,13.629 -33.18,18.247 -3.906,1.505 -7.037,1.552 -10.113,-0.091 3.012,6.026 6.289,8.729 13.801,10.922 5.434,1.586 18.4,0.583 27.326,-0.241 9.582,-0.885 14.58,-3.734 27.621,-3.555 12.736,0.175 22.828,5.013 28.346,8.168 11.385,6.51 19.549,13.732 26.643,25.172 3.896,6.282 6.625,13.37 8.547,20.603 1.922,7.233 2.764,15.334 2.887,22.415 0.123,7.081 -0.418,13.402 -2.15,19.774 -4.051,14.918 -12.988,30.098 -31.346,27.753 -11.234,-1.436 -28.17,-22.522 -33.842,-30.258 C 401.909,115.758 390.133,98.481 375.752,85.479 366.984,77.554 354.979,72.1 343.19,71.021 c -22.117,-2.024 -28.676,2.177 -45.324,15.899 3.387,1.08 6.693,1.676 10.164,3.24 7.703,3.471 14.748,7.957 20.893,13.711 6.439,6.031 9.328,9.848 9.557,18.484 0.152,5.735 -4.566,10.333 -8.891,14.469 -2.646,2.533 -6.148,4.852 -8.291,6.818 -2.84,2.609 -6.357,5.463 -2.789,9.619 1.342,1.562 3.672,2.74 5.637,4.199 3.119,2.315 1.691,10.919 -2.418,13.201 -5.258,2.917 -11.541,2.591 -15.877,-1.314 5.473,-0.819 8.949,-1.545 8.807,-6.022 -0.082,-2.595 -3.381,-4.751 -6.619,-6.227 -7.809,-3.56 -13.707,-3.035 -21.479,-8.627 -7.85,-5.651 -8.023,-8.745 -10.145,-17.617 -3.785,0.396 -7.27,0.483 -12.331,2.159 -5.061,1.675 -10.654,5.663 -15.249,6.65 -11.572,2.49 -13.878,1.752 -20.211,0.113 -11.15,-2.886 -25.668,2.055 -40.09,6.668 -2.398,0.767 -12.097,0.026 -18.626,2.317 -10.084,3.538 -24.233,12.106 -32.405,18.988 -12.382,10.429 -28.654,41.64 -37.848,77.464 -0.966,10.89 2.131,18.227 -4.729,23.546 -6.86,5.319 -6.67,18.946 -8.996,22.768 -2.326,3.821 -5.019,2.132 -10.026,7.499 -5.007,5.367 -7.556,4.47 -7.43,14.618 4.315,-2.837 10.606,-6.135 16.13,-6.334 4.892,-0.177 4.944,6.264 17.5,-6.149 6.715,-6.641 19.616,-6.844 28.567,-9.773 8.952,-2.929 25.083,-8.965 41.239,-27.027 16.156,-18.062 23.887,-37.077 27.02,-64.567 0.499,4.874 1.365,10.371 -0.722,23.816 -2.087,13.445 -6.585,28.546 2.891,46.634 l 5.904,11.269 c -3.515,-4.797 -10.381,-12.622 -12.448,-18.198 l -4.768,-12.863 c -10.667,16.748 -13.119,19.744 -27.937,31.743 -0.59,7.444 -0.735,15.208 1.698,22.331 2.433,7.122 -1.445,15.332 0.406,20.023 1.851,4.691 6.132,2.021 7.53,6.77 1.398,4.749 -0.73,14.138 1.438,18.767 2.168,4.629 7.487,1.82 10.065,3.315 2.578,1.496 3.421,3.546 4.8,5.513 1.378,1.966 -0.539,6.614 2.265,8.123 2.803,1.51 7.176,0.231 10.093,1.68 2.917,1.449 3.36,4.932 2.661,8.053 -0.7,3.121 -3.817,4.553 -5.186,7.726 -1.368,3.174 -1.215,5.383 0.429,8.297 1.644,2.915 5.284,4.52 8.912,5.991 3.628,1.471 8.726,0.645 12.47,2.679 3.744,2.034 7.109,6.087 9.086,9.033 1.977,2.945 2.526,5.023 2.425,8.12 -0.102,3.096 -1.358,6.663 -3.011,9.654 -1.653,2.991 -5.3,6.631 0.394,12.343 5.694,5.711 5.484,3.249 8.746,6.954 -0.355,-6.409 -3.003,-11.63 -1.067,-16.455 1.937,-4.825 7.752,-5.664 10.817,-7.834 3.065,-2.171 4.83,-5.153 7.246,-7.729 -0.035,3.315 0.32,6.879 -0.057,9.375 -0.768,5.075 -2.266,9.58 5.297,10.394 3.407,0.366 6.642,-1.843 10.227,-3.169 -1.878,3.363 -5.144,6.067 -5.635,10.092 -0.491,4.023 0.099,8.443 2.885,12.436 2.787,3.991 7.599,6.955 11.125,9.301 3.525,2.347 5.414,2.535 8.123,3.804 0.133,3.956 -0.646,8.143 -0.195,11.869 0.451,3.726 1.625,7.024 3.779,10.104 2.156,3.081 5.613,4.848 8.869,7.126 -1.785,-4.157 -5.406,-8.101 -5.357,-12.471 0.049,-4.369 1.359,-7.466 5.621,-11.343 4.262,-3.878 14.24,-7.241 18.945,-11.011 4.705,-3.771 6.223,-6.081 7.912,-9.742 1.689,-3.661 1.219,-9.559 1.531,-12.85 1.549,4.61 1.77,6.043 2.273,10.866 0.506,4.824 -2.811,11.59 -4.215,15.161 5.82,-2.811 9.514,-7.304 11.379,-11.695 1.248,0.74 0.619,2.769 1.078,6.679 2.074,-2.064 4.432,-3.652 6.52,-5.6 2.09,-1.946 4.379,-3.658 5.416,-6.375 1.035,-2.717 0.611,-5.606 -0.16,-8.763 -0.771,-3.157 -4.299,-6.818 -6.199,-10.271 -1.898,-3.452 0.336,-6.841 0.207,-11.001 -3.801,-0.653 -7.029,-2.589 -11.398,-1.96 -4.371,0.628 -9.377,5.533 -13.844,5.59 -4.467,0.057 -6.975,-4.128 -10.637,-5.278 -3.662,-1.15 -7.367,-1.024 -11.049,-1.536 4.664,-4.468 22.766,-6.596 35.148,-8.615 10.895,-1.777 21.707,-2.804 32.746,-2.959 4.93,-0.07 11.266,1.558 14.689,0.574 3.426,-0.982 2.695,-3.315 3.711,-5.858 2.842,-7.108 1.441,-13.438 -0.105,-20.596 -9.91,-1.162 -20.236,-2.584 -30.221,-1.817 -9.762,0.75 -21.322,5.391 -31.391,5.705 -8.754,0.272 -21.717,-1.677 -29.234,-6.259 -9.186,-5.599 -16.293,-17.624 -18.816,-21.485 -4.109,-6.289 -9.292,-18.627 -12.446,-24.268 -3.152,-5.641 -3.847,-7.219 -6.47,-9.574 -2.623,-2.354 -6.216,-2.536 -9.323,-3.805 3.582,0.366 7.493,-0.768 10.747,1.098 4.889,2.805 10.361,14.431 13.403,19.49 3.223,-10.804 2.471,-15.052 11.797,-21.144 -7.516,8.424 -7.703,14.805 -9.535,24.723 6.25,10.258 14.939,26.598 26.309,31.132 4.107,1.639 11.16,2.667 15.6,3.216 13.818,1.711 27.146,-2.668 40.717,-6.019 9.92,-2.45 19.986,-1.463 32.051,-0.754 4.096,0.24 13.754,-2.224 15.754,-6.367 1.08,-2.235 1,-4.921 -0.551,-7.303 -1.553,-2.382 -5.689,-3.534 -7.906,-5.678 -2.217,-2.144 -3.492,-4.689 -5.238,-7.034 -9.215,1.768 -16.795,2.447 -23.635,2.633 4.906,-2.021 9.613,-3.174 14.719,-5.171 5.106,-1.997 10.904,-5.275 15.025,-7.995 4.121,-2.721 6.752,-4.299 9.734,-7.465 2.98,-3.168 6.803,-6.431 9,-10.303 2.199,-3.872 2.539,-8.203 2.662,-12.995 0.123,-4.791 -0.084,-11.514 -1.932,-15.374 -1.846,-3.859 -5.406,-5.03 -8.266,-5.943 -2.861,-0.913 -4.82,1.396 -7.795,1.708 -2.977,0.312 -5.758,2.188 -10.062,0.164 -4.304,-2.024 -9.406,-6.144 -13.758,-12.259 -4.35,-6.116 -7.461,-16.112 -11.896,-23.802 -7.645,-13.256 -17.172,-25.639 -26.283,-37.922 -0.75,-3.029 -1.877,-7.215 -2.252,-11.324 -0.654,-7.16 -0.777,-14.598 1.445,-21.578 1.703,-5.347 4.18,-10.995 9.779,-13.188 2.24,-0.878 5.074,-1.226 7.076,-0.484 2.004,0.741 3.969,3.002 3.182,5.614 -0.865,2.872 -2.855,2.95 -4.207,4.4 -2.295,2.46 -3.213,4.265 -4.08,7.332 2.48,-0.04 5.832,-0.229 7.869,0.307 2.658,0.7 5.133,2.462 6.482,6.228 -3.172,-2.813 -4.748,-4.104 -8.707,-4.204 -1.814,-0.045 -4.018,0.604 -6.025,0.906 -0.75,2.44 -1.191,5.432 -2.25,7.32 -1.059,1.888 -3.121,1.435 -3.895,3.641 -0.774,2.202 -0.819,5.788 -0.429,8.683 z m 27.715,-3.307 c 1.215,0.479 1.678,0.584 3.217,1.755 1.539,1.171 3.662,2.34 4.881,5.138 1.221,2.799 1.164,7.127 0.904,8.89 -1.07,-0.314 -2.529,-0.102 -3.639,-1.051 -1.107,-0.949 -1.768,-3.098 -3.188,-4.018 -1.422,-0.919 -2.607,-0.718 -4.178,-0.917 0.807,2.296 1.199,4.593 0.824,6.675 -0.814,4.545 -3.486,6.847 -7.812,7.391 -1.889,0.237 -4.889,-0.385 -6.533,-0.684 0.762,1.702 2.053,3.193 2.816,4.895 3.658,-0.529 6.369,-0.454 8.336,-1.374 1.967,-0.92 4.076,-2.981 6.6,-3.854 2.525,-0.873 4.777,-0.859 7.539,-1.29 -2.176,1.875 -3.604,3.751 -5.777,5.626 1.594,4.633 3.188,9.265 4.781,13.897 3.379,2.114 6.549,3.228 10.807,5.838 4.26,2.611 9.367,7.281 14.914,9.828 5.547,2.547 8.85,3.933 14.646,5.026 5.795,1.093 10.406,5.787 16.109,6.55 5.703,0.763 16.355,0.917 20.75,0.488 4.99,-0.487 11.473,-3.062 12.055,-8.533 -4.184,1.032 -10.574,0.106 -13.801,-7.767 -1.432,-3.496 -0.73,-9.925 -2.922,-14.059 -2.191,-4.135 -5.246,-5.462 -8.896,-10.556 -3.65,-5.094 -9.621,-13.129 -12.973,-19.954 -3.35,-6.824 -4.139,-14.554 -6.973,-20.669 -2.834,-6.114 -7.109,-11.053 -10.422,-15.766 -7.234,-10.3 -13.068,-17.339 -24.986,-22.535 -5.732,-2.499 -12.258,-3.165 -18.387,-4.748 -2.494,1.117 -5.914,2.351 -6.521,5.268 -0.607,2.917 0.559,7.225 2.676,9.415 3.543,3.661 8.793,7.618 10.857,13.437 1.326,3.734 1.711,16.252 0.562,19.649 -1.192,3.527 -3.963,5.66 -6.266,8.009 z m 1.154,29.629 c -1.107,0.955 -1.951,1.936 -3.732,2.729 -1.779,0.793 -4.209,0.998 -6.57,1.588 3.311,5.154 6.789,10.362 9.961,15.781 3.174,5.418 5.924,11.351 8.953,17.025 -0.143,-3.252 0.049,-6.719 -0.424,-9.758 -0.473,-3.038 -1.85,-5.697 -3.215,-10.258 -1.363,-4.561 -3.041,-10.766 -4.973,-17.107 z M 279.229,113.611 c -0.467,5.07 0.391,12.996 1.441,17.96 1.258,5.942 2.469,9.023 7.291,12.603 8.83,6.555 14.467,5.45 21.26,9.251 3.232,1.809 7.328,4.841 8.523,8.046 1.195,3.205 -0.789,6.685 -3.24,8.053 4.287,0.638 9.094,-4.195 7.088,-9.157 -0.988,-2.442 -5.691,-3.53 -7.133,-5.994 -1.439,-2.463 -1.436,-4.999 -0.758,-7.501 1.225,-4.51 10.148,-8.608 13.301,-12.173 4.852,-5.486 6.715,-10.075 3.967,-17.14 -3.859,-9.925 -18.768,-17.889 -27.691,-21.784 -4.086,-1.783 -6.377,-1.91 -9.564,-2.865 6.525,3.824 13.404,6.87 16.705,15.418 2.756,7.139 0.369,9.829 0.461,16.045 0.043,2.882 3.838,4.323 5.523,6.144 1.467,1.583 1.348,2.758 0.176,4.943 -0.129,-1.971 -0.971,-3.442 -2.484,-4.513 -2.498,-1.771 -5.189,-1.39 -6.52,-5.021 -2.02,-5.52 1.986,-10.748 -2.518,-16.946 -3.369,-4.637 -7.85,-9.827 -13.895,-9.963 -2.861,-0.065 -5.012,0.367 -8.068,1.271 l -4.074,-4.903 -0.094,-0.064 C 270.639,87.758 264.969,81.525 253.344,76.327 241.719,71.13 235.99,70.343 222.661,70.639 c -13.329,0.295 -26.557,1.41 -41.995,14.723 -15.437,13.313 -55.224,64.292 -64.873,70.744 -9.648,6.452 -11.785,8.638 -23.841,8.641 C 79.896,164.75 61.08,147.697 60.343,126.385 59.605,105.072 59.309,97.497 74.124,71.822 88.94,46.146 115.78,38.262 135.694,35.6 c 19.915,-2.662 31.882,4.352 46.613,4.385 14.73,0.034 29.288,-2.509 33.581,-14.224 -2.101,1.251 -4.916,2.661 -12.832,2.246 C 195.14,27.592 184.164,18.427 171.817,12.286 159.47,6.146 145.73,5.427 128.107,5.094 110.484,4.761 88.494,6.108 66.708,17.869 44.922,29.63 30.051,42.109 17.415,65.127 4.779,88.146 2.891,106.94 4.928,134.811 c 2.037,27.871 10.633,48.599 27.184,68.998 16.551,20.399 33.092,30.38 62.918,34.091 l 6.279,-27.696 -11.209,16.086 0.277,-17.891 -10.139,12.581 -4.447,-17.062 -8.214,13.679 -4.08,-19.05 -11.903,9.627 3.768,-15.719 -15.75,1.743 7.235,-10.926 -14.361,0.175 L 40.842,168.86 28.1,166.837 38.26,153.57 22.66,148.945 35.576,136.577 22.823,126.184 32.798,118.426 23.47,106.014 33.42,94.431 29.706,79.135 38.155,71.77 40.67,54.289 50.152,49.527 58.31,35.881 73.389,34.28 l 7.44,-12.274 15.145,0.771 14.312,-7.779 14.843,3.457 16.86,-5.092 12.487,2.926 16.296,2.395 15.733,12.58 -24.133,-8.424 -12.14,5.821 -10.035,-6.125 -6.909,4.693 -12.225,1.224 -10.963,-0.708 -7.992,9.756 -16.291,0.168 -5.811,13.143 -14.486,5.082 -1.355,15.107 -10.388,8.138 3.461,14.216 -8.971,14.765 6.882,12.915 -6.773,11.82 9.011,5.88 -2.044,18.998 12.532,3.158 2.823,14.093 13.656,-1.419 8.484,9.656 10.486,-10.239 c 19.116,-9.532 26.988,-14.864 41.886,-30.977 16.959,-18.343 26.679,-35.302 49.269,-47.861 16.202,-9.008 29.417,-12.25 47.617,-9.105 17.088,2.952 22.81,13.202 35.395,24 1.334,-2.415 1.605,-3.055 3.803,-4.833 -0.69,3.136 -1.786,6.389 -2.065,9.405 z"
471 id="path2492"
472 inkscape:connector-curvature="0" />
473 </g>
474 </g>
475 </g>
476 </g>
477 <g
478 inkscape:label="gnu:net grunge"
479 id="g12308"
480 inkscape:groupmode="layer"
481 style="display:none"
482 transform="translate(-387.41463,-589.81931)">
483 <text
484 xml:space="preserve"
485 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
486 x="478.95114"
487 y="859.00549"
488 id="text12220"><tspan
489 sodipodi:role="line"
490 id="tspan12218"
491 x="478.95114"
492 y="859.00549"
493 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:36px;font-family:ReservoirGrunge;-inkscape-font-specification:ReservoirGrunge;fill:#ffffff;stroke-width:1.03365779px"
494 dx="0 2.5 2.5 0 -4 2.5 2.5">gnu net</tspan></text>
495 </g>
496 <g
497 transform="translate(-387.41463,-589.81931)"
498 style="display:none"
499 inkscape:groupmode="layer"
500 id="g5346"
501 inkscape:label="gnu:net ubuntu">
502 <text
503 id="text5344"
504 y="859.96057"
505 x="493.95291"
506 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
507 xml:space="preserve"><tspan
508 dx="0 0 0"
509 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:49.33333206px;font-family:'Ubuntu Bold';-inkscape-font-specification:'Ubuntu Bold, ';fill:#ffffff;stroke-width:1.03365779px"
510 y="859.96057"
511 x="493.95291"
512 id="tspan5342"
513 sodipodi:role="line">gnu net</tspan></text>
514 </g>
515 <g
516 inkscape:label="gnu:net anonymous"
517 id="g950"
518 inkscape:groupmode="layer"
519 style="display:inline"
520 transform="translate(-387.41463,-589.81931)">
521 <text
522 xml:space="preserve"
523 style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16.53852463px;line-height:125%;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;letter-spacing:0px;word-spacing:0px;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.03365779px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
524 x="507.95291"
525 y="858.71057"
526 id="text948"><tspan
527 sodipodi:role="line"
528 id="tspan946"
529 x="507.95291"
530 y="858.71057"
531 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:50.66666794px;font-family:'Anonymous Pro';-inkscape-font-specification:'Anonymous Pro Bold';fill:#ffffff;stroke-width:1.03365779px"
532 dx="0 -2.5 -3 0 -19.25 -2.5 -3">gnu net</tspan></text>
533 </g>
534 <g
535 inkscape:groupmode="layer"
536 id="layer3"
537 inkscape:label="vertices 2"
538 style="display:inline"
539 transform="translate(0,-47.278107)"
540 sodipodi:insensitive="true">
541 <path
542 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
543 d="m 51.98603,94.74526 63.6227,34.91188 23.31802,-11.09978 -35.03955,28.74946 11.86161,-17.77468 -53.18435,-5.79678 40.95076,23.69646 25.32406,0.49689 24.19305,3.02495 v 48.02104 l 21.04995,-32.14943 -20.559,-15.87161 32.52749,48.02104 -8.06937,31.38386 -24.94907,-31.76198 24.94907,77.51429 22.25436,-36.69889 21.97354,37.07701 -43.59987,-0.37188 41.32877,-28.87448 22.05899,-21.17152 -19.90986,50.171 -3.71591,-29.60613 -8.57843,-31.7682 -9.69437,24.71516 54.37611,-52.19866 -24.96716,8.94671 -18.39175,19.15282 18.27579,-55.07718 25.20812,27.362 20.66591,-41.35238 -46.00204,14.12783 22.94304,-37.07431 23.05297,23.0777 31.8814,-26.48075 40.07874,-25.58708 -15.26372,39.20869 -24.69305,-13.74039 -55.05634,4.03119 79.62738,9.58108 -56.57441,12.73416"
544 id="path9316"
545 inkscape:connector-curvature="0"
546 sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" />
547 <path
548 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
549 d="m 139.04572,118.81358 37.0456,48.02106"
550 id="path9318"
551 inkscape:connector-curvature="0" />
552 <path
553 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
554 d="m 128.46126,147.9287 10.96248,-29.11512 12.47454,32.51819"
555 id="path12058"
556 inkscape:connector-curvature="0" />
557 <path
558 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
559 d="m 252.31652,123.28236 54.69043,-3.64603 -31.75647,27.04795"
560 id="path12250"
561 inkscape:connector-curvature="0"
562 sodipodi:nodetypes="ccc" />
563 <ellipse
564 ry="4.1593032"
565 rx="4.1581793"
566 cy="112.66669"
567 cx="83.343307"
568 id="ellipse12260"
569 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
570 <ellipse
571 ry="4.1593032"
572 rx="4.1581793"
573 cy="123.35095"
574 cx="63.064556"
575 id="ellipse12264"
576 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
577 <ellipse
578 ry="4.1593032"
579 rx="4.1581793"
580 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
581 id="ellipse12266"
582 cx="139.04277"
583 cy="118.93542" />
584 <ellipse
585 ry="4.1593032"
586 rx="4.1581793"
587 inkscape:transform-center-y="-10.724852"
588 inkscape:transform-center-x="9.5305947"
589 cy="123.78851"
590 cx="252.13518"
591 id="ellipse12292"
592 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
593 <ellipse
594 ry="4.1593032"
595 rx="4.1581793"
596 inkscape:transform-center-y="-10.724835"
597 inkscape:transform-center-x="9.5305988"
598 cy="119.55022"
599 cx="307.26297"
600 id="ellipse12296"
601 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
602 <path
603 style="fill:none;stroke:#3498db;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
604 d="m 52.875,94.278107 10,29.000003 21,-10.5 v 0 0"
605 id="path5311"
606 inkscape:connector-curvature="0" />
607 <path
608 style="fill:none;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
609 d="m 102.875,75.278107 -39.5,48.000003 v 0 l -1,2"
610 id="path5313"
611 inkscape:connector-curvature="0" />
612 <path
613 style="fill:none;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
614 d="m 229.75,196.02811 -44,2.625 25.375,17.125 v 0"
615 id="path5331"
616 inkscape:connector-curvature="0" />
617 </g>
618 <g
619 inkscape:groupmode="layer"
620 id="layer2"
621 inkscape:label="vertices 0"
622 style="display:inline;opacity:1"
623 transform="translate(-387.41463,-589.81931)"
624 sodipodi:insensitive="true">
625 <path
626 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
627 d="m 515.87589,689.71367 24.57107,51.42411"
628 id="path9320"
629 inkscape:connector-curvature="0" />
630 <path
631 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
632 d="m 574.46842,741.13778 12.85257,40.08057"
633 id="path9322"
634 inkscape:connector-curvature="0" />
635 <path
636 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
637 d="m 565.39603,772.52162 0.37803,45.75234"
638 id="path9324"
639 inkscape:connector-curvature="0" />
640 <path
641 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
642 d="m 642.13335,732.06293 -12.09653,36.6775"
643 id="path9326"
644 inkscape:connector-curvature="0" />
645 <path
646 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
647 d="m 515.87589,690.09178 46.98395,22.0278 10.85256,28.26194"
648 id="path12060"
649 inkscape:connector-curvature="0"
650 sodipodi:nodetypes="ccc" />
651 <path
652 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
653 d="m 450.10106,666.64844 54.05634,6.0499"
654 id="path12214"
655 inkscape:connector-curvature="0" />
656 <path
657 style="display:inline;fill:#729fcf;fill-rule:evenodd;stroke:#3498db;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
658 d="m 641.75532,730.92859 -2.26809,-64.28015"
659 id="path12206"
660 inkscape:connector-curvature="0" />
661 <path
662 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
663 d="m 629.28078,768.36231 -12.85255,-66.17074 v 36.6775 z"
664 id="path12208"
665 inkscape:connector-curvature="0" />
666 <path
667 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
668 d="m 597.52742,757.77501 31.75336,10.5873"
669 id="path12210"
670 inkscape:connector-curvature="0" />
671 <path
672 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:1.58654225px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
673 d="m 540.44696,693.87298 v 48.77728 l 24.57105,30.2495 23.81505,9.45293"
674 id="path12212"
675 inkscape:connector-curvature="0" />
676 <path
677 style="display:inline;fill:none;fill-rule:evenodd;stroke:#3498db;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
678 d="m 564.64001,819.03019 44.98392,-0.37812"
679 id="path12216"
680 inkscape:connector-curvature="0" />
681 <ellipse
682 ry="4.1593032"
683 rx="4.1581793"
684 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
685 id="ellipse12252"
686 cx="587.39447"
687 cy="781.79773" />
688 <ellipse
689 ry="4.1593032"
690 rx="4.1581793"
691 cy="818.74042"
692 cx="609.15759"
693 id="ellipse12254"
694 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
695 <ellipse
696 ry="4.1593032"
697 rx="4.1581793"
698 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
699 id="ellipse12256"
700 cx="565.97528"
701 cy="818.74042" />
702 <ellipse
703 ry="4.1593032"
704 rx="4.1581793"
705 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
706 id="ellipse12262"
707 cx="490.92691"
708 cy="689.33545" />
709 <ellipse
710 ry="4.1593032"
711 rx="4.1581793"
712 cy="690.09174"
713 cx="516.25397"
714 id="ellipse12268"
715 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
716 <ellipse
717 ry="4.1593032"
718 rx="4.1581793"
719 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
720 id="ellipse12270"
721 cx="561.66821"
722 cy="709.15314" />
723 <ellipse
724 ry="4.1593032"
725 rx="4.1581793"
726 cy="671.6922"
727 cx="502.64844"
728 id="ellipse12272"
729 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
730 <ellipse
731 ry="4.1593032"
732 rx="4.1581793"
733 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
734 id="ellipse12274"
735 cx="540.81299"
736 cy="693.37305" />
737 <ellipse
738 ry="4.1593032"
739 rx="4.1581793"
740 cy="741.13794"
741 cx="540.82501"
742 id="ellipse12276"
743 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
744 <ellipse
745 ry="4.1593032"
746 rx="4.1581793"
747 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
748 id="ellipse12278"
749 cx="573.51123"
750 cy="741.22632" />
751 <ellipse
752 ry="4.1593032"
753 rx="4.1581793"
754 cy="772.52173"
755 cx="565.39612"
756 id="ellipse12280"
757 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
758 <ellipse
759 ry="4.1593032"
760 rx="4.1581793"
761 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
762 id="ellipse12282"
763 cx="606.38373"
764 cy="789.62549"
765 inkscape:transform-center-x="9.5306006"
766 inkscape:transform-center-y="-10.72485" />
767 <ellipse
768 ry="4.1593032"
769 rx="4.1581793"
770 inkscape:transform-center-y="-10.724822"
771 inkscape:transform-center-x="9.5305654"
772 cy="730.17249"
773 cx="641.75543"
774 id="ellipse12284"
775 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
776 <ellipse
777 ry="4.1593032"
778 rx="4.1581793"
779 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
780 id="ellipse12286"
781 cx="616.8064"
782 cy="702.94794"
783 inkscape:transform-center-x="9.5305633"
784 inkscape:transform-center-y="-10.724851" />
785 <ellipse
786 ry="4.1593032"
787 rx="4.1581793"
788 inkscape:transform-center-y="-10.724843"
789 inkscape:transform-center-x="9.5305819"
790 cy="738.49109"
791 cx="617.18439"
792 id="ellipse12288"
793 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
794 <ellipse
795 ry="4.1593032"
796 rx="4.1581793"
797 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
798 id="ellipse12290"
799 cx="629.03088"
800 cy="768.17493"
801 inkscape:transform-center-x="9.5305949"
802 inkscape:transform-center-y="-10.724827" />
803 <ellipse
804 ry="4.1593032"
805 rx="4.1581793"
806 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
807 id="ellipse12294"
808 cx="662.54626"
809 cy="688.95752"
810 inkscape:transform-center-x="9.5306048"
811 inkscape:transform-center-y="-10.724823" />
812 <ellipse
813 ry="4.1593032"
814 rx="4.1581793"
815 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
816 id="ellipse12298"
817 cx="719.24872"
818 cy="675.72339"
819 inkscape:transform-center-x="9.5305824"
820 inkscape:transform-center-y="-10.724798" />
821 <ellipse
822 ry="4.1593032"
823 rx="4.1581793"
824 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
825 id="ellipse12302"
826 cx="617.18439"
827 cy="738.49109"
828 inkscape:transform-center-x="9.5305819"
829 inkscape:transform-center-y="-10.724843" />
830 <ellipse
831 ry="4.1593032"
832 rx="4.1581793"
833 inkscape:transform-center-y="-10.724843"
834 inkscape:transform-center-x="9.5305819"
835 cy="738.49109"
836 cx="617.24689"
837 id="ellipse12304"
838 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
839 <ellipse
840 ry="4.1593032"
841 rx="4.1581793"
842 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
843 id="ellipse12306"
844 cx="598.0033"
845 cy="758.21582"
846 inkscape:transform-center-x="9.5306167"
847 inkscape:transform-center-y="-10.724797" />
848 <ellipse
849 ry="4.1593032"
850 rx="4.1581793"
851 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
852 id="ellipse12258"
853 cx="440.27264"
854 cy="636.84271" />
855 <ellipse
856 ry="4.1593032"
857 rx="4.1581793"
858 inkscape:transform-center-y="-10.724829"
859 inkscape:transform-center-x="9.5306165"
860 cy="636.8053"
861 cx="734.7594"
862 id="ellipse12300"
863 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139" />
864 <ellipse
865 ry="4.1593032"
866 rx="4.1581793"
867 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
868 id="ellipse12258-3"
869 cx="490.28964"
870 cy="617.81934" />
871 <ellipse
872 ry="4.1593032"
873 rx="4.1581793"
874 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
875 id="ellipse12258-3-0"
876 cx="689.78961"
877 cy="617.81934" />
878 <path
879 style="display:inline;fill:none;fill-opacity:1;stroke:#3498db;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
880 d="m 439.28963,637.81931 50.5,-19.5 -14.05,28.1 0.925,-1.725 -5.875,11.75 -0.25,-0.75"
881 id="path5161"
882 inkscape:connector-curvature="0"
883 sodipodi:nodetypes="cccccc" />
884 <path
885 style="display:inline;fill:none;stroke:#3498db;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97647059"
886 d="m 734.78963,636.81931 -40.285,-17.00922 -4.715,-1.99078 29,57.5 v -0.5 0 h 0.5 v 0"
887 id="path5163"
888 inkscape:connector-curvature="0"
889 sodipodi:nodetypes="cccccccc" />
890 </g>
891 <g
892 inkscape:groupmode="layer"
893 id="layer6"
894 inkscape:label="no:des"
895 style="display:inline"
896 sodipodi:insensitive="true">
897 <ellipse
898 transform="translate(-387.41463,-589.81931)"
899 ry="4.1593032"
900 rx="4.1581793"
901 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
902 id="ellipse12282-8-9-0"
903 cx="587.3924"
904 cy="855.64899"
905 inkscape:transform-center-x="9.5306006"
906 inkscape:transform-center-y="-10.72485" />
907 <ellipse
908 transform="translate(-387.41463,-589.81931)"
909 ry="4.1593032"
910 rx="4.1581793"
911 style="display:inline;opacity:1;fill:#3498db;fill-opacity:1;stroke:#3498db;stroke-width:0.39663559;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.97635139"
912 id="ellipse12282-8-9"
913 cx="587.3924"
914 cy="839.31183"
915 inkscape:transform-center-x="9.5306006"
916 inkscape:transform-center-y="-10.72485" />
917 </g>
918</svg>
diff --git a/contrib/buildslave-0.8.6p1-gnunet-w32.patch b/contrib/buildslave-0.8.6p1-gnunet-w32.patch
deleted file mode 100644
index 265db4d71..000000000
--- a/contrib/buildslave-0.8.6p1-gnunet-w32.patch
+++ /dev/null
@@ -1,202 +0,0 @@
1diff -urN /src/buildbot-slave-0.8.6p1.orig/buildslave/runprocess.py /src/buildbot-slave-0.8.6p1/buildslave/runprocess.py
2--- buildbot-slave-0.8.6p1.orig/buildslave/runprocess.py 2012-03-26 04:09:10 +0400
3+++ buildbot-slave-0.8.6p1/buildslave/runprocess.py 2013-03-31 05:18:55 +0400
4@@ -24,6 +24,7 @@
5 import re
6 import subprocess
7 import traceback
8+import tempfile
9 import stat
10 from collections import deque
11
12@@ -36,6 +37,89 @@
13 if runtime.platformType == 'posix':
14 from twisted.internet.process import Process
15
16+if os.name == 'nt':
17+ import win32api
18+ import win32process
19+ import win32event
20+ import pywintypes
21+
22+def safe_terminate_process (proc, code):
23+ if os.name == 'nt':
24+ log.msg ("Obtaining current process handle")
25+ cp = win32api.GetCurrentProcess ()
26+ result = False
27+ log.msg ("Expanding target process handle permissions")
28+ dupproc = win32api.DuplicateHandle (cp, proc._handle, cp, 2 | 1024 | 8 | 32 | 16 | 0x100000, 0, 0)
29+ log.msg ("Expanded.")
30+ try:
31+ log.msg ("Checking exit code of target process")
32+ exitcode = win32process.GetExitCodeProcess (dupproc)
33+ log.msg ("Exit code is %d" % exitcode)
34+ if exitcode == 0x103:
35+ log.msg ("Opening kernel32.dll")
36+ kernel32 = win32api.GetModuleHandle ("kernel32")
37+ log.msg ("Getting ExitProcess() address")
38+ exitprocess = win32api.GetProcAddress (kernel32, "ExitProcess")
39+ try:
40+ log.msg ("Creating remote thread")
41+ th = 0
42+ tid = 0
43+ failed = False
44+ th, tid = win32process.CreateRemoteThread (dupproc, None, 0, exitprocess, code, 0)
45+ log.msg ("Created remote thread %d" % tid)
46+ except pywintypes.error as e:
47+ if e[0] == 5:
48+ log.msg ("Access denied. It still might die, so don't fail yet")
49+ pass
50+ else:
51+ log.msg("exception %s - %s" % (sys.exc_info()[0], sys.exc_info()[1]))
52+ failed = True
53+ except Exception as e:
54+ log.msg("exception %s - %s" % (sys.exc_info()[0], sys.exc_info()[1]))
55+ failed = True
56+ if not failed:
57+ log.msg ("Wait for 5 seconds or until it dies (usually takes around 1 microsecond)")
58+ waitresult = win32event.WaitForSingleObject (dupproc, 5)
59+ log.msg ("Result of waiting: %d" % waitresult)
60+ win32api.CloseHandle (th)
61+ if waitresult == 0:
62+ result = True
63+ else:
64+ result = True
65+ except:
66+ log.msg("exception %s - %s" % (sys.exc_info()[0], sys.exc_info()[1]))
67+ finally:
68+ win32api.CloseHandle (dupproc)
69+ return result
70+ else:
71+ return proc.kill ()
72+
73+class Dummy(object):
74+ def SetHandle (self, h):
75+ self._handle = h
76+
77+def safe_terminate_process_by_pid (proc, code):
78+ if os.name == 'nt':
79+ try:
80+ log.msg("Opening process %d" % proc)
81+ openproc = win32api.OpenProcess (2 | 1024 | 8 | 32 | 16 | 0x100000, 0, proc)
82+ log.msg("Opened process %d" % proc)
83+ try:
84+ d = Dummy ()
85+ d.SetHandle (openproc)
86+ log.msg("Terminating it safely")
87+ safe_terminate_process (d, code)
88+ log.msg("Finished terminating")
89+ finally:
90+ log.msg("Closing process handle")
91+ win32api.CloseHandle (openproc)
92+ except:
93+ log.msg("exception %s - %s" % (sys.exc_info()[0], sys.exc_info()[1]))
94+ pass
95+ else:
96+ return os.kill (proc, code)
97+
98+
99 def shell_quote(cmd_list):
100 # attempt to quote cmd_list such that a shell will properly re-interpret
101 # it. The pipes module is only available on UNIX, and Windows "shell"
102@@ -148,6 +232,7 @@
103 self.pending_stdin = ""
104 self.stdin_finished = False
105 self.killed = False
106+ self.scriptfile = ""
107
108 def setStdin(self, data):
109 assert not self.connected
110@@ -198,6 +283,11 @@
111 rc = 1
112 else:
113 rc = -1
114+ if self.scriptfile:
115+ try:
116+ os.remove (self.scriptfile)
117+ except:
118+ pass
119 self.command.finished(sig, rc)
120
121
122@@ -408,9 +498,14 @@
123
124 if type(self.command) in types.StringTypes:
125 if runtime.platformType == 'win32':
126- argv = os.environ['COMSPEC'].split() # allow %COMSPEC% to have args
127- if '/c' not in argv: argv += ['/c']
128- argv += [self.command]
129+ if os.environ['BUILDSLAVE_SHELL']:
130+ argv = os.environ['BUILDSLAVE_SHELL'].split() # allow %COMSPEC% to have args
131+ argv += [self.command]
132+ else:
133+ argv = os.environ['COMSPEC'].split() # allow %COMSPEC% to have args
134+ if '/c' not in argv:
135+ argv += ['/c']
136+ argv += [self.command]
137 else:
138 # for posix, use /bin/sh. for other non-posix, well, doesn't
139 # hurt to try
140@@ -424,9 +519,26 @@
141 # handle path searching, etc.
142 if runtime.platformType == 'win32' and not \
143 (self.command[0].lower().endswith(".exe") and os.path.isabs(self.command[0])):
144- argv = os.environ['COMSPEC'].split() # allow %COMSPEC% to have args
145- if '/c' not in argv: argv += ['/c']
146- argv += list(self.command)
147+ if os.environ['BUILDSLAVE_SHELL']:
148+ argv = os.environ['BUILDSLAVE_SHELL'].split()
149+ # Create a temporary script file that changes current directory
150+ # and runs the command we want
151+ # It will be deleted after command is finished running (see RunProcessPP)
152+ tf, tf_name = tempfile.mkstemp ()
153+ f = os.fdopen (tf, 'wb')
154+ fcontents = '#!/bin/sh\ncd {}\n{}'.format (
155+ re.sub(r'(?<!\\) ','\\ ', self.workdir.replace('\\','/')),
156+ ' '.join (self.command))
157+ f.write (fcontents)
158+ log.msg("Script: {}".format (fcontents))
159+ f.close ()
160+ self.pp.scriptfile = tf_name
161+ argv += [tf_name.replace('\\','/')]
162+ else:
163+ argv = os.environ['COMSPEC'].split() # allow %COMSPEC% to have args
164+ if '/c' not in argv:
165+ argv += ['/c']
166+ argv += list(self.command)
167 else:
168 argv = self.command
169 # Attempt to format this for use by a shell, although the process isn't perfect
170@@ -439,7 +551,7 @@
171 self.environ['PWD'] = os.path.abspath(self.workdir)
172
173 # self.stdin is handled in RunProcessPP.connectionMade
174-
175+ log.msg("Running {}".format (argv))
176 log.msg(" " + display)
177 self._addToBuffers('header', display+"\n")
178
179@@ -770,9 +882,7 @@
180 if self.interruptSignal == None:
181 log.msg("self.interruptSignal==None, only pretending to kill child")
182 else:
183- log.msg("using TASKKILL /F PID /T to kill pid %s" % self.process.pid)
184- subprocess.check_call("TASKKILL /F /PID %s /T" % self.process.pid)
185- log.msg("taskkill'd pid %s" % self.process.pid)
186+ safe_terminate_process_by_pid (self.process.pid, 1)
187 hit = 1
188
189 # try signalling the process itself (works on Windows too, sorta)
190@@ -795,10 +905,11 @@
191 if not hit:
192 log.msg("signalProcess/os.kill failed both times")
193
194- if runtime.platformType == "posix":
195+ if runtime.platformType == "posix" or runtime.platformType == "win32":
196 # we only do this under posix because the win32eventreactor
197 # blocks here until the process has terminated, while closing
198 # stderr. This is weird.
199+ # LRN: Turns out, things don't work without this on W32. At all.
200 self.pp.transport.loseConnection()
201
202 if self.deferred:
diff --git a/contrib/buildbot-update.sh b/contrib/ci/buildbot/buildbot-update.sh
index 6c9d28b25..6c9d28b25 100755
--- a/contrib/buildbot-update.sh
+++ b/contrib/ci/buildbot/buildbot-update.sh
diff --git a/contrib/ssh-config b/contrib/ci/buildbot/ssh-config
index 857354bf3..857354bf3 100644
--- a/contrib/ssh-config
+++ b/contrib/ci/buildbot/ssh-config
diff --git a/contrib/ssh-keys b/contrib/ci/buildbot/ssh-keys
index 8a786d9cd..6fa51071b 100644
--- a/contrib/ssh-keys
+++ b/contrib/ci/buildbot/ssh-keys
@@ -19,3 +19,4 @@ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4UL53uXZCis1C9VNWJjVXTtyRHVmzFmg3vajTXrRF
19ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCvbeMnZGlujN9IsLxUSTuHBUESoN6ZTXmEFi/GkBKp9RQ7xZAS84JDcV0GFddiCfTHGQL04mkeYXkof5d9NkMWjtTvQ9QFtUgGOqI3PbGCGW83vSwJHsqVbfbv5uqFCODjpTx4/WiJNkEpN/HgE2eIYFcm+Dcpo1vTgC26LjdMfqUaAGv/OTmKWmaMqyOzc4MXuUiBQT83oTfn2zSWDEOJG67yULqg5jMzaXqzPbhsaokBIPehks0bJR/q7OWNwDQJyM1oTKeRIh0ZmC0qYwGu/vlc3rYW4cp//ErAXG5iPfCXXUySUc0DTFHazzkNzUStuUwugznxuUCgbvg2tu5WEnrh/PpzIMuvNaUk2ZSDq00hHDrpVJyKKCih2d1cGV+qs9XFjDoD6Ch2NiSdPnG7fSsTxVw1SB7/APuMqfXWrQDfT5ee5xOKGzKOxQckGihQi39kmqf4WjNESOw4tmhNFZOee9dpC7ESYSpG/3zK8WG6FDln1nU6rHGjVgaSK6HwZUOsneS2fntiQZR2olzEY9+ybL1vh1fk6pkhS78X/PiwS3cSiu4q7JWJ4tUiB0T/cHAFBaODDKHXmEaGefLrPBWLLFRdjbnepWo1d0k1z/NLVovXDCGlF4IOBKqcImIffods/jTpH0hjU/vBjIQHH3Ii0J6vtGJw9whcNAGQfw== t3sserakt@posteo.de 19ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCvbeMnZGlujN9IsLxUSTuHBUESoN6ZTXmEFi/GkBKp9RQ7xZAS84JDcV0GFddiCfTHGQL04mkeYXkof5d9NkMWjtTvQ9QFtUgGOqI3PbGCGW83vSwJHsqVbfbv5uqFCODjpTx4/WiJNkEpN/HgE2eIYFcm+Dcpo1vTgC26LjdMfqUaAGv/OTmKWmaMqyOzc4MXuUiBQT83oTfn2zSWDEOJG67yULqg5jMzaXqzPbhsaokBIPehks0bJR/q7OWNwDQJyM1oTKeRIh0ZmC0qYwGu/vlc3rYW4cp//ErAXG5iPfCXXUySUc0DTFHazzkNzUStuUwugznxuUCgbvg2tu5WEnrh/PpzIMuvNaUk2ZSDq00hHDrpVJyKKCih2d1cGV+qs9XFjDoD6Ch2NiSdPnG7fSsTxVw1SB7/APuMqfXWrQDfT5ee5xOKGzKOxQckGihQi39kmqf4WjNESOw4tmhNFZOee9dpC7ESYSpG/3zK8WG6FDln1nU6rHGjVgaSK6HwZUOsneS2fntiQZR2olzEY9+ybL1vh1fk6pkhS78X/PiwS3cSiu4q7JWJ4tUiB0T/cHAFBaODDKHXmEaGefLrPBWLLFRdjbnepWo1d0k1z/NLVovXDCGlF4IOBKqcImIffods/jTpH0hjU/vBjIQHH3Ii0J6vtGJw9whcNAGQfw== t3sserakt@posteo.de
20ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDRzeeUMJKn/9lY8FJIuU6HuQpWZozerTtbgsoGUNW0n0P/RsPYMQjweURDlJyKQisSZt+xRzRorSr0j9P016L8N13wGR9wtJwoJOi8DpwqEMxleYwPAZOu1zsA1Qty3ftNu6c3xB2wnlSPC0oZ2RYBOlxvIGtSGoNcDY43MKmsJ+IPsNpKOOS3x1J+xE7jOnQ0LHvxt4b54Sdr0uruTbHupwBbzBIxMFzS9hzEN6gL5cYp2fggZM8Qt707UlzIUuNzsU50qM6A8UJ+0Kun1GhKhK2J7T4Dok7M6m8ZtaKGexMfZwCl4luXlP/r1Kn48kXx/EtoQ/OcR23ymxZ95X+X8TB0ZdYcj17M7B+kk7OFz/2SVdJqYDqnMIOmXtAEdUsmSAmI7YxWyYOutRnEIkzQvHfW0h3D2pSA6EApR5huLOi40N5Ga3XLSBJC1yC8+qdiNE/t+5nGGxdlLvJ7VuzkwTEKQs33LNUdS4qKVBcIppZ7yUMjqJ5VzFk6xwEqGPCYcEWzYpNmzBiE/EFvwVSNV15Rknyieq7RB/gY/DNKX7yuC7lRZdEgGG6xu7l34c1ZhtIFhUGCnEtYsx5kJQFGMMP7bi/LNVnm+M7YZGp+uKgsnmWzrYw+YORzLwqBncs6N1tvwOG9DRKJ00S3JqSEDJ5FH/VDIUlWWbIgNwtAIQ== lurchi 20ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDRzeeUMJKn/9lY8FJIuU6HuQpWZozerTtbgsoGUNW0n0P/RsPYMQjweURDlJyKQisSZt+xRzRorSr0j9P016L8N13wGR9wtJwoJOi8DpwqEMxleYwPAZOu1zsA1Qty3ftNu6c3xB2wnlSPC0oZ2RYBOlxvIGtSGoNcDY43MKmsJ+IPsNpKOOS3x1J+xE7jOnQ0LHvxt4b54Sdr0uruTbHupwBbzBIxMFzS9hzEN6gL5cYp2fggZM8Qt707UlzIUuNzsU50qM6A8UJ+0Kun1GhKhK2J7T4Dok7M6m8ZtaKGexMfZwCl4luXlP/r1Kn48kXx/EtoQ/OcR23ymxZ95X+X8TB0ZdYcj17M7B+kk7OFz/2SVdJqYDqnMIOmXtAEdUsmSAmI7YxWyYOutRnEIkzQvHfW0h3D2pSA6EApR5huLOi40N5Ga3XLSBJC1yC8+qdiNE/t+5nGGxdlLvJ7VuzkwTEKQs33LNUdS4qKVBcIppZ7yUMjqJ5VzFk6xwEqGPCYcEWzYpNmzBiE/EFvwVSNV15Rknyieq7RB/gY/DNKX7yuC7lRZdEgGG6xu7l34c1ZhtIFhUGCnEtYsx5kJQFGMMP7bi/LNVnm+M7YZGp+uKgsnmWzrYw+YORzLwqBncs6N1tvwOG9DRKJ00S3JqSEDJ5FH/VDIUlWWbIgNwtAIQ== lurchi
21ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1WzIhCxeYQzjAHvwkSN7oQ3hhakwLzrTC6fXqnGUn71sQQKe4Rb2lmcUqVepnuKx2wEw3GLev89rVBSXwneiiVHwOEPNqFJXKHV5AsQbLYBvt9qlkK0Wff71Ptc9xB+M1qDVluA/4ieLDOemXYvkcK/6fqimyIdBMSlXSs2PKQkpjkAvE3qh0c41HKlagq7Y4rHV/chs1XPWCWX19ZO2EnZoVx6KeZHouc/FoE/lC7X1FudJxSKf5ZIcy3CIiYTQsL//hb6DT/mCgssCL+NtTDDXNsYiuIlj8Oi+nCpW/GkisIeyTZpbPiokDP+r0V3T8jcMbbGCVN6Um33lG2/LR amatus@atom 21ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1WzIhCxeYQzjAHvwkSN7oQ3hhakwLzrTC6fXqnGUn71sQQKe4Rb2lmcUqVepnuKx2wEw3GLev89rVBSXwneiiVHwOEPNqFJXKHV5AsQbLYBvt9qlkK0Wff71Ptc9xB+M1qDVluA/4ieLDOemXYvkcK/6fqimyIdBMSlXSs2PKQkpjkAvE3qh0c41HKlagq7Y4rHV/chs1XPWCWX19ZO2EnZoVx6KeZHouc/FoE/lC7X1FudJxSKf5ZIcy3CIiYTQsL//hb6DT/mCgssCL+NtTDDXNsYiuIlj8Oi+nCpW/GkisIeyTZpbPiokDP+r0V3T8jcMbbGCVN6Um33lG2/LR amatus@atom
22ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILL6PhAcMxsc4GhRuQYRMwchcig5qTDQQFZBQzxFTmxI dvn.me
diff --git a/contrib/ci/docker/Dockerfile b/contrib/ci/docker/Dockerfile
new file mode 100644
index 000000000..b9f019c43
--- /dev/null
+++ b/contrib/ci/docker/Dockerfile
@@ -0,0 +1,32 @@
1FROM ubuntu:18.04
2
3# Install the required build tools
4RUN apt update && apt install -y apt git autopoint automake texinfo gettext autoconf libtool libidn11-dev libunistring-dev gnutls-dev libgcrypt20 libgcrypt20-dev libjansson-dev libsqlite3-dev wget flex bison libglib2.0-dev libgmp3-dev libmicrohttpd-dev libglpk-dev libextractor-dev
5
6# Install gnurl from source at version gnurl-7.54.0
7WORKDIR /usr/src
8RUN git clone https://git.taler.net/gnurl.git --branch gnurl-7.57.0
9RUN cd /usr/src/gnurl && autoreconf -i && ./configure --prefix=/usr --disable-ntlm-wb && make install
10
11# Install libpbc
12WORKDIR /usr/src
13RUN wget https://crypto.stanford.edu/pbc/files/pbc-0.5.14.tar.gz && tar xvzpf pbc-0.5.14.tar.gz && cd /usr/src/pbc-0.5.14 && ./configure --prefix=/usr && make install
14
15# Install libbswabe
16WORKDIR /usr/src
17RUN git clone https://github.com/schanzen/libgabe.git && cd /usr/src/libgabe && ./configure --prefix=/usr && make install
18
19WORKDIR /usr/src
20RUN git clone git://gnunet.org/gnunet.git
21RUN cd /usr/src/gnunet && ./bootstrap && ./configure --enable-experimental --prefix=/usr && make && make install
22
23RUN addgroup gnunetdns && addgroup gnunet && adduser --system --home /var/lib/gnunet gnunet
24RUN chown gnunet:gnunet /var/lib/gnunet
25RUN echo '[arm]\nSTART_SYSTEM_SERVICES = YES\nSTART_USER_SERVICES = NO\n' > /etc/gnunet.conf
26
27ADD docker-entrypoint.sh .
28
29RUN rm -rf /usr/src/*
30#RUN apt remove gcc
31
32CMD ["sh", "docker-entrypoint.sh"]
diff --git a/contrib/docker-entrypoint.sh b/contrib/ci/docker/docker-entrypoint.sh
index 807d86d6f..807d86d6f 100644
--- a/contrib/docker-entrypoint.sh
+++ b/contrib/ci/docker/docker-entrypoint.sh
diff --git a/contrib/colorit.conf b/contrib/conf/colorit/colorit.conf
index 77d57aa59..77d57aa59 100644
--- a/contrib/colorit.conf
+++ b/contrib/conf/colorit/colorit.conf
diff --git a/contrib/gnunet_codingstyle.xml b/contrib/conf/editors/eclipse/gnunet_codingstyle.xml
index a58c2ed0c..a58c2ed0c 100644
--- a/contrib/gnunet_codingstyle.xml
+++ b/contrib/conf/editors/eclipse/gnunet_codingstyle.xml
diff --git a/contrib/conf/gnunet/no_autostart_above_core.conf b/contrib/conf/gnunet/no_autostart_above_core.conf
new file mode 100644
index 000000000..245b6a47d
--- /dev/null
+++ b/contrib/conf/gnunet/no_autostart_above_core.conf
@@ -0,0 +1,93 @@
1# Configuration to disable autostarting of
2# all services above the 'core' level.
3# (including resolver)
4
5[dns]
6START_ON_DEMAND = NO
7
8[dht]
9START_ON_DEMAND = NO
10
11[nse]
12START_ON_DEMAND = NO
13
14[cadet]
15START_ON_DEMAND = NO
16
17[datastore]
18START_ON_DEMAND = NO
19
20[fs]
21START_ON_DEMAND = NO
22
23[dv]
24START_ON_DEMAND = NO
25
26[vpn]
27START_ON_DEMAND = NO
28
29[consensus]
30START_ON_DEMAND = NO
31
32[resolver]
33START_ON_DEMAND = NO
34
35[namestore]
36START_ON_DEMAND = NO
37
38[namecache]
39START_ON_DEMAND = NO
40
41[identity]
42START_ON_DEMAND = NO
43
44[revocation]
45START_ON_DEMAND = NO
46
47[conversation]
48START_ON_DEMAND = NO
49
50[peerstore]
51START_ON_DEMAND = NO
52
53[psycstore]
54START_ON_DEMAND = NO
55
56[gns]
57START_ON_DEMAND = NO
58
59[regex]
60START_ON_DEMAND = NO
61
62[set]
63START_ON_DEMAND = NO
64
65[scalarproduct-bob]
66START_ON_DEMAND = NO
67
68[scalarproduct-alice]
69START_ON_DEMAND = NO
70
71[social]
72START_ON_DEMAND = NO
73
74[psyc]
75START_ON_DEMAND = NO
76
77[rps]
78START_ON_DEMAND = NO
79
80[multicast]
81START_ON_DEMAND = NO
82
83[sensordashboard]
84START_ON_DEMAND = NO
85
86[sensor]
87START_ON_DEMAND = NO
88
89[zonemaster-monitor]
90START_ON_DEMAND = NO
91
92[zonemaster]
93START_ON_DEMAND = NO
diff --git a/contrib/conf/gnunet/no_forcestart.conf b/contrib/conf/gnunet/no_forcestart.conf
new file mode 100644
index 000000000..de58c6039
--- /dev/null
+++ b/contrib/conf/gnunet/no_forcestart.conf
@@ -0,0 +1,57 @@
1# Configuration file that can be included to prevent ANY of the usual
2# IMMEDIATE_START = YES to be set. Also disables NSE POW calculation.
3#
4# This configuration is included from various configuration test files.
5# Whenever a new service is added that has IMMEDIATE_START = YES for
6# production should be disabled for (most) test suites, the option should
7# be added here instead of all over the place ;-).
8
9[core]
10IMMEDIATE_START = NO
11
12[fs]
13IMMEDIATE_START = NO
14
15[dht]
16IMMEDIATE_START = NO
17
18[cadet]
19IMMEDIATE_START = NO
20
21[nse]
22IMMEDIATE_START = NO
23WORKBITS = 0
24
25[revocation]
26IMMEDIATE_START = NO
27
28[topology]
29IMMEDIATE_START = NO
30
31[hostlist]
32IMMEDIATE_START = NO
33
34[gns]
35IMMEDIATE_START = NO
36
37[zonemaster]
38IMMEDIATE_START = NO
39
40[zonemaster-monitor]
41IMMEDIATE_START = NO
42
43[psyc]
44IMMEDIATE_START = NO
45
46[rps]
47IMMEDIATE_START = NO
48
49[consensus]
50IMMEDIATE_START = NO
51
52[set]
53IMMEDIATE_START = NO
54
55[nse]
56IMMEDIATE_START = NO
57
diff --git a/contrib/nssswitch.conf b/contrib/conf/nss/nssswitch.conf
index 89af6471e..89af6471e 100644
--- a/contrib/nssswitch.conf
+++ b/contrib/conf/nss/nssswitch.conf
diff --git a/contrib/conf/wireshark/wireshark.lua b/contrib/conf/wireshark/wireshark.lua
new file mode 100644
index 000000000..ac77029f6
--- /dev/null
+++ b/contrib/conf/wireshark/wireshark.lua
@@ -0,0 +1,150 @@
1-- declare our protocol
2gwlan_proto = Proto("gnunet","Gnunet Layer")
3-- create a function to dissect it
4local f = gwlan_proto.fields
5
6f.len = ProtoField.uint16 ("gnunet.len", "Gnunet Message Len")
7f.type = ProtoField.uint16 ("gnunet.type", "Gnunet Message Type")
8-- rhs_proto.fields.sequence = ProtoField.uint16("rhs.sequence","Sequence number")
9f_proto = DissectorTable.new("gnunet.proto", "Gnunet Protocoll", FT_UINT16, BASE_DEC)
10--gwlan_proto.fields = {f_len, f_type}
11
12function gwlan_proto.dissector(buffer,pinfo,tree)
13 pinfo.cols.protocol = "Gnunet Packet"
14 gnunet_packet_disector(buffer,pinfo,tree)
15end
16
17function gwlan_proto.init()
18end
19
20function gnunet_packet_disector(buffer,pinfo,tree)
21 if (buffer:len() > 4) then
22 local len = buffer(0,2):uint()
23 local type = buffer(2,2):uint()
24 if (len <= buffer:len()) then
25 local dissect = f_proto:get_dissector(type)
26 if dissect ~= nil then
27 dissect:call(buffer(0, len):tvb(), pinfo, tree)
28 else
29 local subtree = tree:add(fragmentack, buffer(),"Gnunet Packet Type: " .. buffer(2,2):uint() .. "(" .. buffer:len() .. ")")
30 gnunet_message_header(buffer, pinfo, subtree)
31 end
32 end
33 --if (len < buffer:len()) then
34 -- gwlan_proto.dissector(buffer(len, buffer:len() - len):tvb(), pinfo, tree)
35 --end
36 else
37 if (buffer:len() == 4) then
38 local subtree = tree:add(fragmentack, buffer(),"Gnunet Packet (" .. buffer:len() .. ")")
39 gnunet_message_header(buffer, pinfo, subtree)
40 end
41 end
42end
43
44function gnunet_message_header(buffer, pinfo, tree)
45 if (buffer:len() >= 4) then
46 local len = buffer(0,2)
47 local type = buffer(2,2)
48 tree:add(buffer(0,2), "Message Len: " .. buffer(0,2):uint())
49 tree:add(buffer(2,2), "Message Type: " .. buffer(2,2):uint())
50 end
51end
52
53-- load the udp.port table
54llc_table = DissectorTable.get("llc.dsap")
55-- register our protocol to handle llc.dsap 0x1e
56llc_table:add(31,gwlan_proto)
57
58fragmentack = Proto("gnunet.fragmentack","Gnunet Fragment Ack")
59
60function fragmentack.dissector(buffer,pinfo,tree)
61 pinfo.cols.protocol = "Gnunet Fragment Ack"
62 local subtree = tree:add(fragmentack, buffer(),"Gnunet Data ack (" .. buffer:len() .. ")")
63 gnunet_message_header(buffer, pinfo, subtree)
64 if buffer:len() >= 16 then
65 subtree:add(buffer(4,4),"Fragment Id: " .. buffer(4,4):uint())
66 subtree:add(buffer(8,8),"Bits: " .. buffer(8,8))
67 end
68end
69
70fragment = Proto("gnunet.fragment","Gnunet Fragment")
71
72function fragment.dissector(buffer,pinfo,tree)
73 pinfo.cols.protocol = "Gnunet Fragment"
74 local subtree = tree:add(fragment, buffer(),"Gnunet Fragment (" .. buffer:len() .. ")")
75 gnunet_message_header(buffer, pinfo, subtree)
76 if buffer:len() >= 13 then
77 subtree:add(buffer(4,4),"Fragment Id: " .. buffer(4,4):uint())
78 subtree:add(buffer(8,2),"Total Size: " .. buffer(8,2):uint())
79 subtree:add(buffer(10,2),"Offset: " .. buffer(10,2):uint())
80 if buffer(10,2):uint() == 0 then
81 if (buffer(8,2):uint() <= buffer:len() - 12) then
82 gnunet_packet_disector(buffer(12):tvb(),pinfo,tree)
83 end
84 else
85 subtree:add(buffer(12), "Data: " .. buffer(12))
86 end
87 end
88end
89
90hello = Proto("gnunet.hello","Gnunet Hello Message")
91
92function hello.dissector(buffer,pinfo,tree)
93 pinfo.cols.protocol = "Gnunet Hello Message"
94 local subtree = tree:add(hello, buffer(),"Gnunet Hello Message (" .. buffer:len() .. ")")
95 gnunet_message_header(buffer, pinfo, subtree)
96 if buffer:len() > (264 + 8) then
97 subtree:add(buffer(4,4),"Reserved: " .. buffer(4,4):uint())
98 RsaPublicKeyBinaryEncoded(buffer(8 , 264):tvb(),pinfo, subtree)
99 else
100 subtree:add(buffer(4), "SIZE WRONG (< 272)")
101 end
102end
103
104wlan = Proto("gnunet.wlan","Gnunet WLAN Message")
105
106function wlan.dissector(buffer,pinfo,tree)
107 pinfo.cols.protocol = "Gnunet WLAN Message"
108 local subtree = tree:add(wlan, buffer(),"Gnunet WLAN Message (" .. buffer:len() .. ")")
109 gnunet_message_header(buffer, pinfo, subtree)
110 if buffer:len() > (4 + 4 + 2*64) then
111 subtree:add(buffer(4,4),"CRC: " .. buffer(4,4):uint())
112 local peer = GNUNET_PeerIdentity(buffer(8,64), pinfo, subtree)
113 peer:append_text(" Traget")
114 peer = GNUNET_PeerIdentity(buffer(8 + 64,64), pinfo, subtree)
115 peer:append_text(" Source")
116 else
117 subtree:add(buffer(8), "SIZE WRONG (< 4 + 4 + 2*64)")
118 end
119 if (buffer:len() - (4 + 4 + 2*64) > 0) then
120 gnunet_packet_disector(buffer(4 + 4 + 2*64):tvb(),pinfo,tree)
121 end
122end
123
124function RsaPublicKeyBinaryEncoded(buffer,pinfo,tree)
125 local subtree = tree:add(gwlan_proto,buffer(),"Gnunet RsaPublicKeyBinaryEncoded(" .. buffer:len() .. ")")
126 subtree:add(buffer(0,2),"Len: " .. buffer(0,2):uint())
127 subtree:add(buffer(2,2),"Sizen: " .. buffer(2,2):uint())
128 subtree:add(buffer(4,258),"Pub Key: " .. buffer(4,258))
129 subtree:add(buffer(262,2),"Padding: " .. buffer(262,2):uint())
130end
131
132function GNUNET_PeerIdentity(buffer,pinfo,tree)
133 local subtree = tree:add(gwlan_proto,buffer(),"Gnunet PeerIdentity(" .. buffer:len() .. ")")
134 subtree:add(buffer(0),"hashPubKey: " .. buffer(0))
135 return subtree
136end
137
138transport_session_keepalive = Proto("gnunet.transport_session_keepalive","Gnunet transport session keepalive")
139
140function transport_session_keepalive.dissector(buffer,pinfo,tree)
141 pinfo.cols.protocol = "Gnunet transport session keepalive"
142 local subtree = tree:add(transport_session_keepalive, buffer(),"Gnunet transport session keepalive (" .. buffer:len() .. ")")
143 gnunet_message_header(buffer, pinfo, subtree)
144end
145
146f_proto:add(43,wlan)
147f_proto:add(39,transport_session_keepalive)
148f_proto:add(19,fragmentack)
149f_proto:add(18,fragment)
150f_proto:add(16,hello)
diff --git a/contrib/bootstrap.min.css b/contrib/gns/bootstrap.min.css
index c547283bb..c547283bb 100644
--- a/contrib/bootstrap.min.css
+++ b/contrib/gns/bootstrap.min.css
diff --git a/contrib/def.tex b/contrib/gns/def.tex
index 669302b08..669302b08 100644
--- a/contrib/def.tex
+++ b/contrib/gns/def.tex
diff --git a/contrib/gns-bcd.html b/contrib/gns/gns-bcd.html
index de2fdb6e6..de2fdb6e6 100644
--- a/contrib/gns-bcd.html
+++ b/contrib/gns/gns-bcd.html
diff --git a/contrib/gns-bcd.tex b/contrib/gns/gns-bcd.tex
index 73a302985..f3a033ebc 100644
--- a/contrib/gns-bcd.tex
+++ b/contrib/gns/gns-bcd.tex
@@ -18782,7 +18782,7 @@
18782 \node[rectangle,draw=white,minimum height=7pt,text width=41mm,inner sep=0pt] at (24.25mm,-29.0mm) {\ifthenelse{\equal{#1}{english}}{\textit{\jobtitleenglish}}{\textit{\jobtitlegerman}}}; 18782 \node[rectangle,draw=white,minimum height=7pt,text width=41mm,inner sep=0pt] at (24.25mm,-29.0mm) {\ifthenelse{\equal{#1}{english}}{\textit{\jobtitleenglish}}{\textit{\jobtitlegerman}}};
18783 } 18783 }
18784 { 18784 {
18785 \node at (78mm,-7mm) {\logo}; %\includegraphics[height=7mm]{gnunet-logo.pdf}}; 18785 \node at (78mm,-7mm) {\logo}; %\includegraphics[height=7mm]{../branding/logo/gnunet-logo.pdf}};
18786 \node[rectangle,draw=white,line width=1pt,inner sep=0pt] at (17mm,-17mm) {\begin{pspicture}(15mm,15mm) \psbarcode{gnunet://gns/\gns}{eclevel=Q}{qrcode}\end{pspicture}}; 18786 \node[rectangle,draw=white,line width=1pt,inner sep=0pt] at (17mm,-17mm) {\begin{pspicture}(15mm,15mm) \psbarcode{gnunet://gns/\gns}{eclevel=Q}{qrcode}\end{pspicture}};
18787 \node[rectangle,draw=white,minimum height=7pt,text width=41mm,inner sep=0pt] at (24.25mm,-35.0mm) {\ifthenelse{\equal{\prefix}{}}{}{\tiny \prefix}}; 18787 \node[rectangle,draw=white,minimum height=7pt,text width=41mm,inner sep=0pt] at (24.25mm,-35.0mm) {\ifthenelse{\equal{\prefix}{}}{}{\tiny \prefix}};
18788 \node[rectangle,draw=white,minimum height=7pt,text width=41mm,inner sep=0pt] at (24.25mm,-41.5mm) {\fontsize{8pt}{8pt}\selectfont \textbf{\name}\ifthenelse{\equal{\suffix}{}}{}{, \tiny \suffix}}; 18788 \node[rectangle,draw=white,minimum height=7pt,text width=41mm,inner sep=0pt] at (24.25mm,-41.5mm) {\fontsize{8pt}{8pt}\selectfont \textbf{\name}\ifthenelse{\equal{\suffix}{}}{}{, \tiny \suffix}};
diff --git a/contrib/gns-form-fields.xml b/contrib/gns/gns-form-fields.xml
index 308e66e0d..308e66e0d 100644
--- a/contrib/gns-form-fields.xml
+++ b/contrib/gns/gns-form-fields.xml
diff --git a/contrib/gns-form.xslt b/contrib/gns/gns-form.xslt
index bf2585616..bf2585616 100644
--- a/contrib/gns-form.xslt
+++ b/contrib/gns/gns-form.xslt
diff --git a/contrib/gnunet-arch-full.svg b/contrib/gnunet-arch-full.svg
new file mode 100644
index 000000000..766f2b855
--- /dev/null
+++ b/contrib/gnunet-arch-full.svg
@@ -0,0 +1,648 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4<!-- Generated by graphviz version 2.38.0 (20140413.2041)
5 -->
6<!-- Title: dependencies Pages: 1 -->
7<svg width="1277pt" height="836pt"
8 viewBox="0.00 0.00 1276.81 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)">
10<title>dependencies</title>
11<polygon fill="white" stroke="none" points="-4,4 -4,-832 1272.81,-832 1272.81,4 -4,4"/>
12<!-- voting -->
13<g id="node1" class="node"><title>voting</title>
14<polygon fill="none" stroke="black" points="120.944,-743.562 80,-756 39.0559,-743.562 39.0942,-723.438 120.906,-723.438 120.944,-743.562"/>
15<text text-anchor="middle" x="80" y="-734.3" font-family="Times,serif" font-size="14.00">voting</text>
16</g>
17<!-- consensus -->
18<g id="node2" class="node"><title>consensus</title>
19<ellipse fill="none" stroke="black" cx="112" cy="-594" rx="46.2923" ry="18"/>
20<text text-anchor="middle" x="112" y="-590.3" font-family="Times,serif" font-size="14.00">consensus</text>
21</g>
22<!-- voting&#45;&gt;consensus -->
23<g id="edge1" class="edge"><title>voting&#45;&gt;consensus</title>
24<path fill="none" stroke="black" d="M121.028,-728.482C145.315,-721.103 174.155,-707.724 189,-684 197.487,-670.436 196.445,-662.162 189,-648 180.933,-632.654 166.19,-620.887 151.748,-612.383"/>
25<polygon fill="black" stroke="black" points="153.308,-609.247 142.857,-607.508 149.942,-615.385 153.308,-609.247"/>
26</g>
27<!-- identity -->
28<g id="node3" class="node"><title>identity</title>
29<ellipse fill="none" stroke="black" cx="282" cy="-450" rx="37.8943" ry="18"/>
30<text text-anchor="middle" x="282" y="-446.3" font-family="Times,serif" font-size="14.00">identity</text>
31</g>
32<!-- voting&#45;&gt;identity -->
33<g id="edge2" class="edge"><title>voting&#45;&gt;identity</title>
34<path fill="none" stroke="black" d="M58.5145,-723.377C45.8789,-714.02 31.0387,-700.353 24,-684 5.02284,-639.911 -2.50901,-616.016 24,-576 46.6577,-541.798 71.8444,-557.396 109,-540 158.351,-516.894 214.207,-487.564 248.77,-469.032"/>
35<polygon fill="black" stroke="black" points="250.781,-471.924 257.931,-464.105 247.466,-465.759 250.781,-471.924"/>
36</g>
37<!-- cadet -->
38<g id="node4" class="node"><title>cadet</title>
39<ellipse fill="none" stroke="black" cx="538" cy="-450" rx="29.4969" ry="18"/>
40<text text-anchor="middle" x="538" y="-446.3" font-family="Times,serif" font-size="14.00">cadet</text>
41</g>
42<!-- voting&#45;&gt;cadet -->
43<g id="edge3" class="edge"><title>voting&#45;&gt;cadet</title>
44<path fill="none" stroke="black" d="M72.0051,-723.243C55.682,-693.149 22.8306,-620.604 57,-576 70.8829,-557.877 390.653,-484.265 500.977,-459.316"/>
45<polygon fill="black" stroke="black" points="501.999,-462.673 510.983,-457.057 500.458,-455.845 501.999,-462.673"/>
46</g>
47<!-- secretsharing -->
48<g id="node5" class="node"><title>secretsharing</title>
49<ellipse fill="none" stroke="black" cx="123" cy="-666" rx="57.3905" ry="18"/>
50<text text-anchor="middle" x="123" y="-662.3" font-family="Times,serif" font-size="14.00">secretsharing</text>
51</g>
52<!-- voting&#45;&gt;secretsharing -->
53<g id="edge4" class="edge"><title>voting&#45;&gt;secretsharing</title>
54<path fill="none" stroke="black" d="M88.4954,-723.17C93.8716,-714.418 100.986,-702.837 107.357,-692.466"/>
55<polygon fill="black" stroke="black" points="110.45,-694.117 112.702,-683.764 104.486,-690.453 110.45,-694.117"/>
56</g>
57<!-- consensus&#45;&gt;cadet -->
58<g id="edge72" class="edge"><title>consensus&#45;&gt;cadet</title>
59<path fill="none" stroke="black" d="M146.507,-581.905C153.275,-579.85 160.34,-577.79 167,-576 236.135,-557.417 256.193,-562.96 324,-540 360.547,-527.625 367.474,-519.056 403,-504 437.068,-489.562 476.509,-474.236 503.927,-463.798"/>
60<polygon fill="black" stroke="black" points="505.344,-467.004 513.453,-460.185 502.862,-460.459 505.344,-467.004"/>
61</g>
62<!-- set -->
63<g id="node24" class="node"><title>set</title>
64<ellipse fill="none" stroke="black" cx="517" cy="-522" rx="27" ry="18"/>
65<text text-anchor="middle" x="517" y="-518.3" font-family="Times,serif" font-size="14.00">set</text>
66</g>
67<!-- consensus&#45;&gt;set -->
68<g id="edge71" class="edge"><title>consensus&#45;&gt;set</title>
69<path fill="none" stroke="black" d="M145.818,-581.678C152.772,-579.596 160.083,-577.583 167,-576 182.24,-572.511 394.44,-541.075 480.815,-528.33"/>
70<polygon fill="black" stroke="black" points="481.561,-531.758 490.943,-526.837 480.539,-524.833 481.561,-531.758"/>
71</g>
72<!-- dht -->
73<g id="node7" class="node"><title>dht</title>
74<ellipse fill="none" stroke="black" cx="756" cy="-378" rx="27" ry="18"/>
75<text text-anchor="middle" x="756" y="-374.3" font-family="Times,serif" font-size="14.00">dht</text>
76</g>
77<!-- cadet&#45;&gt;dht -->
78<g id="edge51" class="edge"><title>cadet&#45;&gt;dht</title>
79<path fill="none" stroke="black" d="M563.434,-440.833C602.822,-428.186 678.592,-403.856 722.428,-389.78"/>
80<polygon fill="black" stroke="black" points="723.607,-393.078 732.058,-386.688 721.467,-386.413 723.607,-393.078"/>
81</g>
82<!-- core -->
83<g id="node8" class="node"><title>core</title>
84<ellipse fill="none" stroke="black" cx="555" cy="-234" rx="27" ry="18"/>
85<text text-anchor="middle" x="555" y="-230.3" font-family="Times,serif" font-size="14.00">core</text>
86</g>
87<!-- cadet&#45;&gt;core -->
88<g id="edge50" class="edge"><title>cadet&#45;&gt;core</title>
89<path fill="none" stroke="black" d="M539.362,-431.849C542.303,-394.832 549.266,-307.181 552.824,-262.386"/>
90<polygon fill="black" stroke="black" points="556.328,-262.478 553.631,-252.232 549.35,-261.924 556.328,-262.478"/>
91</g>
92<!-- block -->
93<g id="node11" class="node"><title>block</title>
94<polygon fill="none" stroke="black" points="429,-324 385.598,-306 429,-288 472.402,-306 429,-324"/>
95<text text-anchor="middle" x="429" y="-302.3" font-family="Times,serif" font-size="14.00">block</text>
96</g>
97<!-- cadet&#45;&gt;block -->
98<g id="edge52" class="edge"><title>cadet&#45;&gt;block</title>
99<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M522.106,-434.467C511.33,-424.227 497.085,-409.913 486,-396 469.058,-374.736 452.633,-348.272 441.802,-329.75"/>
100<polygon fill="blue" stroke="blue" points="444.702,-327.773 436.674,-320.859 438.638,-331.27 444.702,-327.773"/>
101</g>
102<!-- secretsharing&#45;&gt;consensus -->
103<g id="edge5" class="edge"><title>secretsharing&#45;&gt;consensus</title>
104<path fill="none" stroke="black" d="M120.281,-647.697C119.069,-639.983 117.612,-630.712 116.261,-622.112"/>
105<polygon fill="black" stroke="black" points="119.698,-621.44 114.688,-612.104 112.783,-622.526 119.698,-621.44"/>
106</g>
107<!-- fs -->
108<g id="node6" class="node"><title>fs</title>
109<polygon fill="none" stroke="black" points="100,-527.562 73,-540 46,-527.562 46.0252,-507.438 99.9748,-507.438 100,-527.562"/>
110<text text-anchor="middle" x="73" y="-518.3" font-family="Times,serif" font-size="14.00">fs</text>
111</g>
112<!-- fs&#45;&gt;identity -->
113<g id="edge12" class="edge"><title>fs&#45;&gt;identity</title>
114<path fill="none" stroke="black" d="M100.21,-509.307C104.786,-507.46 109.507,-505.625 114,-504 164.764,-485.643 178.566,-484.387 230,-468 233.971,-466.735 238.108,-465.404 242.237,-464.067"/>
115<polygon fill="black" stroke="black" points="243.351,-467.386 251.778,-460.965 241.186,-460.729 243.351,-467.386"/>
116</g>
117<!-- fs&#45;&gt;cadet -->
118<g id="edge9" class="edge"><title>fs&#45;&gt;cadet</title>
119<path fill="none" stroke="black" d="M100.01,-516.934C178.772,-505.077 408.387,-470.512 499.803,-456.75"/>
120<polygon fill="black" stroke="black" points="500.372,-460.204 509.74,-455.254 499.33,-453.282 500.372,-460.204"/>
121</g>
122<!-- fs&#45;&gt;dht -->
123<g id="edge6" class="edge"><title>fs&#45;&gt;dht</title>
124<path fill="none" stroke="black" d="M100.081,-509.411C132.571,-495.433 183.726,-473.164 192,-468 213.144,-454.802 212.035,-441.688 235,-432 322.67,-395.017 615.27,-383.079 719.081,-379.955"/>
125<polygon fill="black" stroke="black" points="719.199,-383.453 729.093,-379.664 718.996,-376.456 719.199,-383.453"/>
126</g>
127<!-- fs&#45;&gt;core -->
128<g id="edge7" class="edge"><title>fs&#45;&gt;core</title>
129<path fill="none" stroke="black" d="M65.0877,-507.277C55.5997,-488.827 42.6595,-455.618 57,-432 93.0072,-372.699 269.007,-312.27 334,-288 397.135,-264.424 474.404,-248.714 518.841,-240.869"/>
130<polygon fill="black" stroke="black" points="519.614,-244.287 528.871,-239.134 518.42,-237.39 519.614,-244.287"/>
131</g>
132<!-- datastore -->
133<g id="node9" class="node"><title>datastore</title>
134<ellipse fill="none" stroke="black" cx="108" cy="-450" rx="42.4939" ry="18"/>
135<text text-anchor="middle" x="108" y="-446.3" font-family="Times,serif" font-size="14.00">datastore</text>
136</g>
137<!-- fs&#45;&gt;datastore -->
138<g id="edge8" class="edge"><title>fs&#45;&gt;datastore</title>
139<path fill="none" stroke="black" d="M79.9149,-507.17C84.2467,-498.507 89.9645,-487.071 95.1098,-476.78"/>
140<polygon fill="black" stroke="black" points="98.2763,-478.274 99.618,-467.764 92.0153,-475.143 98.2763,-478.274"/>
141</g>
142<!-- ats -->
143<g id="node10" class="node"><title>ats</title>
144<ellipse fill="none" stroke="black" cx="385" cy="-90" rx="27" ry="18"/>
145<text text-anchor="middle" x="385" y="-86.3" font-family="Times,serif" font-size="14.00">ats</text>
146</g>
147<!-- fs&#45;&gt;ats -->
148<g id="edge10" class="edge"><title>fs&#45;&gt;ats</title>
149<path fill="none" stroke="black" d="M60.2844,-507.296C39.3694,-483.267 0,-431.113 0,-379 0,-379 0,-379 0,-233 0,-159.097 252.872,-111.714 348.742,-96.4063"/>
150<polygon fill="black" stroke="black" points="349.504,-99.8296 358.84,-94.8203 348.418,-92.9144 349.504,-99.8296"/>
151</g>
152<!-- fs&#45;&gt;block -->
153<g id="edge11" class="edge"><title>fs&#45;&gt;block</title>
154<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M99.0792,-507.426C116.81,-497.613 140.343,-483.417 159,-468 175.732,-454.174 174.815,-445.258 192,-432 259.224,-380.139 351.062,-338.689 398.245,-319.166"/>
155<polygon fill="blue" stroke="blue" points="399.679,-322.361 407.611,-315.337 397.03,-315.881 399.679,-322.361"/>
156</g>
157<!-- dht&#45;&gt;core -->
158<g id="edge42" class="edge"><title>dht&#45;&gt;core</title>
159<path fill="none" stroke="black" d="M780.722,-370.233C802.496,-362.816 832.877,-348.569 847,-324 854.974,-310.128 857.48,-300.09 847,-288 810.092,-245.421 650.341,-266.908 596,-252 592.628,-251.075 589.164,-249.944 585.745,-248.709"/>
160<polygon fill="black" stroke="black" points="586.936,-245.416 576.348,-245.037 584.388,-251.936 586.936,-245.416"/>
161</g>
162<!-- dht&#45;&gt;block -->
163<g id="edge44" class="edge"><title>dht&#45;&gt;block</title>
164<path fill="none" stroke="black" d="M730.132,-372.774C681.84,-364.697 574.817,-345.908 486,-324 478.104,-322.052 469.673,-319.694 461.782,-317.363"/>
165<polygon fill="black" stroke="black" points="462.742,-313.997 452.157,-314.456 460.718,-320.698 462.742,-313.997"/>
166</g>
167<!-- nse -->
168<g id="node27" class="node"><title>nse</title>
169<ellipse fill="none" stroke="black" cx="811" cy="-306" rx="27" ry="18"/>
170<text text-anchor="middle" x="811" y="-302.3" font-family="Times,serif" font-size="14.00">nse</text>
171</g>
172<!-- dht&#45;&gt;nse -->
173<g id="edge43" class="edge"><title>dht&#45;&gt;nse</title>
174<path fill="none" stroke="black" d="M767.934,-361.811C775.214,-352.546 784.663,-340.52 792.854,-330.094"/>
175<polygon fill="black" stroke="black" points="795.663,-332.185 799.089,-322.159 790.159,-327.86 795.663,-332.185"/>
176</g>
177<!-- datacache -->
178<g id="node28" class="node"><title>datacache</title>
179<polygon fill="none" stroke="black" points="702,-324 637.818,-306 702,-288 766.182,-306 702,-324"/>
180<text text-anchor="middle" x="702" y="-302.3" font-family="Times,serif" font-size="14.00">datacache</text>
181</g>
182<!-- dht&#45;&gt;datacache -->
183<g id="edge45" class="edge"><title>dht&#45;&gt;datacache</title>
184<path fill="none" stroke="black" d="M744.016,-361.465C736.66,-351.93 727.125,-339.57 718.998,-329.034"/>
185<polygon fill="black" stroke="black" points="721.73,-326.846 712.851,-321.066 716.187,-331.121 721.73,-326.846"/>
186</g>
187<!-- peerinfo -->
188<g id="node29" class="node"><title>peerinfo</title>
189<ellipse fill="none" stroke="black" cx="518" cy="-90" rx="40.0939" ry="18"/>
190<text text-anchor="middle" x="518" y="-86.3" font-family="Times,serif" font-size="14.00">peerinfo</text>
191</g>
192<!-- dht&#45;&gt;peerinfo -->
193<g id="edge46" class="edge"><title>dht&#45;&gt;peerinfo</title>
194<path fill="none" stroke="black" d="M728.828,-376.457C687.438,-374.282 608.033,-364.658 557,-324 495.436,-274.952 504.26,-168.494 512.535,-118.27"/>
195<polygon fill="black" stroke="black" points="516.027,-118.624 514.32,-108.168 509.133,-117.406 516.027,-118.624"/>
196</g>
197<!-- hello -->
198<g id="node30" class="node"><title>hello</title>
199<polygon fill="none" stroke="black" points="854,-36 813.614,-18 854,-3.55271e-15 894.386,-18 854,-36"/>
200<text text-anchor="middle" x="854" y="-14.3" font-family="Times,serif" font-size="14.00">hello</text>
201</g>
202<!-- dht&#45;&gt;hello -->
203<g id="edge47" class="edge"><title>dht&#45;&gt;hello</title>
204<path fill="none" stroke="black" d="M782.364,-373.864C833.24,-367.278 942.225,-350.399 968,-324 996.322,-294.992 988,-275.542 988,-235 988,-235 988,-235 988,-161 988,-99.7534 921.245,-54.2239 881.968,-32.736"/>
205<polygon fill="black" stroke="black" points="883.108,-29.3792 872.632,-27.796 879.834,-35.5665 883.108,-29.3792"/>
206</g>
207<!-- transport -->
208<g id="node33" class="node"><title>transport</title>
209<ellipse fill="none" stroke="black" cx="680" cy="-162" rx="42.4939" ry="18"/>
210<text text-anchor="middle" x="680" y="-158.3" font-family="Times,serif" font-size="14.00">transport</text>
211</g>
212<!-- core&#45;&gt;transport -->
213<g id="edge58" class="edge"><title>core&#45;&gt;transport</title>
214<path fill="none" stroke="black" d="M575.083,-221.753C594.251,-211.02 623.495,-194.643 646.244,-181.903"/>
215<polygon fill="black" stroke="black" points="648.219,-184.809 655.234,-176.869 644.799,-178.701 648.219,-184.809"/>
216</g>
217<!-- exit -->
218<g id="node12" class="node"><title>exit</title>
219<polygon fill="none" stroke="black" points="952,-540 898,-540 898,-504 952,-504 952,-540"/>
220<text text-anchor="middle" x="925" y="-518.3" font-family="Times,serif" font-size="14.00">exit</text>
221</g>
222<!-- exit&#45;&gt;cadet -->
223<g id="edge13" class="edge"><title>exit&#45;&gt;cadet</title>
224<path fill="none" stroke="black" d="M897.67,-514.323C883.742,-511.021 866.513,-507.093 851,-504 752.337,-484.331 635.236,-465.765 576.155,-456.729"/>
225<polygon fill="black" stroke="black" points="576.571,-453.252 566.158,-455.206 575.517,-460.172 576.571,-453.252"/>
226</g>
227<!-- tun -->
228<g id="node13" class="node"><title>tun</title>
229<polygon fill="none" stroke="black" points="929,-468 897.995,-450 929,-432 960.005,-450 929,-468"/>
230<text text-anchor="middle" x="929" y="-446.3" font-family="Times,serif" font-size="14.00">tun</text>
231</g>
232<!-- exit&#45;&gt;tun -->
233<g id="edge14" class="edge"><title>exit&#45;&gt;tun</title>
234<path fill="none" stroke="black" d="M925.989,-503.697C926.436,-495.868 926.975,-486.435 927.473,-477.728"/>
235<polygon fill="black" stroke="black" points="930.974,-477.806 928.05,-467.622 923.985,-477.406 930.974,-477.806"/>
236</g>
237<!-- dnsstub -->
238<g id="node14" class="node"><title>dnsstub</title>
239<polygon fill="none" stroke="black" points="1032,-468 978.877,-450 1032,-432 1085.12,-450 1032,-468"/>
240<text text-anchor="middle" x="1032" y="-446.3" font-family="Times,serif" font-size="14.00">dnsstub</text>
241</g>
242<!-- exit&#45;&gt;dnsstub -->
243<g id="edge15" class="edge"><title>exit&#45;&gt;dnsstub</title>
244<path fill="none" stroke="black" d="M951.175,-503.876C967.88,-492.948 989.443,-478.841 1006.1,-467.947"/>
245<polygon fill="black" stroke="black" points="1008.33,-470.67 1014.78,-462.266 1004.49,-464.812 1008.33,-470.67"/>
246</g>
247<!-- vpn -->
248<g id="node15" class="node"><title>vpn</title>
249<ellipse fill="none" stroke="black" cx="815" cy="-522" rx="27" ry="18"/>
250<text text-anchor="middle" x="815" y="-518.3" font-family="Times,serif" font-size="14.00">vpn</text>
251</g>
252<!-- vpn&#45;&gt;cadet -->
253<g id="edge16" class="edge"><title>vpn&#45;&gt;cadet</title>
254<path fill="none" stroke="black" d="M793.129,-511.116C787.017,-508.578 780.317,-506.003 774,-504 705.524,-482.293 623.185,-465.931 576.085,-457.463"/>
255<polygon fill="black" stroke="black" points="576.482,-453.979 566.025,-455.678 575.26,-460.871 576.482,-453.979"/>
256</g>
257<!-- vpn&#45;&gt;tun -->
258<g id="edge18" class="edge"><title>vpn&#45;&gt;tun</title>
259<path fill="none" stroke="black" d="M834.339,-509.125C854.149,-496.961 884.945,-478.051 905.995,-465.126"/>
260<polygon fill="black" stroke="black" points="907.942,-468.038 914.632,-459.822 904.279,-462.072 907.942,-468.038"/>
261</g>
262<!-- regex -->
263<g id="node16" class="node"><title>regex</title>
264<ellipse fill="none" stroke="black" cx="756" cy="-450" rx="30.5947" ry="18"/>
265<text text-anchor="middle" x="756" y="-446.3" font-family="Times,serif" font-size="14.00">regex</text>
266</g>
267<!-- vpn&#45;&gt;regex -->
268<g id="edge17" class="edge"><title>vpn&#45;&gt;regex</title>
269<path fill="none" stroke="black" d="M802.198,-505.811C794.496,-496.673 784.53,-484.849 775.827,-474.524"/>
270<polygon fill="black" stroke="black" points="778.307,-472.035 769.186,-466.644 772.954,-476.546 778.307,-472.035"/>
271</g>
272<!-- regex&#45;&gt;dht -->
273<g id="edge57" class="edge"><title>regex&#45;&gt;dht</title>
274<path fill="none" stroke="black" d="M756,-431.697C756,-423.983 756,-414.712 756,-406.112"/>
275<polygon fill="black" stroke="black" points="759.5,-406.104 756,-396.104 752.5,-406.104 759.5,-406.104"/>
276</g>
277<!-- regex&#45;&gt;block -->
278<g id="edge49" class="edge"><title>regex&#45;&gt;block</title>
279<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M732.22,-438.673C673.767,-413.29 523.157,-347.888 458.838,-319.957"/>
280<polygon fill="blue" stroke="blue" points="459.85,-316.581 449.283,-315.808 457.061,-323.002 459.85,-316.581"/>
281</g>
282<!-- pt -->
283<g id="node17" class="node"><title>pt</title>
284<polygon fill="none" stroke="black" points="986,-599.562 959,-612 932,-599.562 932.025,-579.438 985.975,-579.438 986,-599.562"/>
285<text text-anchor="middle" x="959" y="-590.3" font-family="Times,serif" font-size="14.00">pt</text>
286</g>
287<!-- pt&#45;&gt;cadet -->
288<g id="edge19" class="edge"><title>pt&#45;&gt;cadet</title>
289<path fill="none" stroke="black" d="M931.717,-579.439C928.807,-578.197 925.864,-577.023 923,-576 860.875,-553.809 836.841,-571.725 779,-540 758.602,-528.812 761.339,-515.294 741,-504 688.34,-474.76 619.008,-461.18 576.516,-455.23"/>
290<polygon fill="black" stroke="black" points="576.951,-451.758 566.577,-453.91 576.029,-458.697 576.951,-451.758"/>
291</g>
292<!-- pt&#45;&gt;vpn -->
293<g id="edge20" class="edge"><title>pt&#45;&gt;vpn</title>
294<path fill="none" stroke="black" d="M931.915,-579.834C907.352,-567.894 871.179,-550.309 845.585,-537.868"/>
295<polygon fill="black" stroke="black" points="846.864,-534.598 836.34,-533.373 843.803,-540.893 846.864,-534.598"/>
296</g>
297<!-- dns -->
298<g id="node18" class="node"><title>dns</title>
299<ellipse fill="none" stroke="black" cx="997" cy="-522" rx="27" ry="18"/>
300<text text-anchor="middle" x="997" y="-518.3" font-family="Times,serif" font-size="14.00">dns</text>
301</g>
302<!-- pt&#45;&gt;dns -->
303<g id="edge21" class="edge"><title>pt&#45;&gt;dns</title>
304<path fill="none" stroke="black" d="M966.508,-579.17C971.277,-570.385 977.594,-558.748 983.241,-548.346"/>
305<polygon fill="black" stroke="black" points="986.48,-549.716 988.175,-539.257 980.328,-546.376 986.48,-549.716"/>
306</g>
307<!-- dnsparser -->
308<g id="node19" class="node"><title>dnsparser</title>
309<polygon fill="none" stroke="black" points="1143,-540 1080.49,-522 1143,-504 1205.51,-522 1143,-540"/>
310<text text-anchor="middle" x="1143" y="-518.3" font-family="Times,serif" font-size="14.00">dnsparser</text>
311</g>
312<!-- pt&#45;&gt;dnsparser -->
313<g id="edge22" class="edge"><title>pt&#45;&gt;dnsparser</title>
314<path fill="none" stroke="black" d="M986.15,-582.671C1018.5,-570.365 1072.61,-549.781 1108.05,-536.296"/>
315<polygon fill="black" stroke="black" points="1109.42,-539.521 1117.52,-532.694 1106.93,-532.979 1109.42,-539.521"/>
316</g>
317<!-- dns&#45;&gt;tun -->
318<g id="edge23" class="edge"><title>dns&#45;&gt;tun</title>
319<path fill="none" stroke="black" d="M982.91,-506.496C972.543,-495.824 958.362,-481.226 947.147,-469.681"/>
320<polygon fill="black" stroke="black" points="949.418,-466.995 939.94,-462.261 944.397,-471.873 949.418,-466.995"/>
321</g>
322<!-- dns&#45;&gt;dnsstub -->
323<g id="edge24" class="edge"><title>dns&#45;&gt;dnsstub</title>
324<path fill="none" stroke="black" d="M1005.12,-504.765C1009.59,-495.828 1015.21,-484.573 1020.16,-474.673"/>
325<polygon fill="black" stroke="black" points="1023.3,-476.227 1024.64,-465.717 1017.04,-473.096 1023.3,-476.227"/>
326</g>
327<!-- gnsrecord -->
328<g id="node25" class="node"><title>gnsrecord</title>
329<ellipse fill="none" stroke="black" cx="1192" cy="-450" rx="45.4919" ry="18"/>
330<text text-anchor="middle" x="1192" y="-446.3" font-family="Times,serif" font-size="14.00">gnsrecord</text>
331</g>
332<!-- dnsparser&#45;&gt;gnsrecord -->
333<g id="edge39" class="edge"><title>dnsparser&#45;&gt;gnsrecord</title>
334<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1152.92,-506.834C1159.12,-497.971 1167.29,-486.304 1174.55,-475.928"/>
335<polygon fill="blue" stroke="blue" points="1177.51,-477.805 1180.38,-467.606 1171.77,-473.791 1177.51,-477.805"/>
336</g>
337<!-- zonemaster -->
338<g id="node20" class="node"><title>zonemaster</title>
339<polygon fill="none" stroke="black" points="914.433,-599.562 851,-612 787.567,-599.562 787.626,-579.438 914.374,-579.438 914.433,-599.562"/>
340<text text-anchor="middle" x="851" y="-590.3" font-family="Times,serif" font-size="14.00">zonemaster</text>
341</g>
342<!-- zonemaster&#45;&gt;dht -->
343<g id="edge26" class="edge"><title>zonemaster&#45;&gt;dht</title>
344<path fill="none" stroke="black" d="M853.642,-579.298C856.499,-561.438 859.583,-529.479 851,-504 836.849,-461.994 802.343,-422.916 779.052,-399.996"/>
345<polygon fill="black" stroke="black" points="781.264,-397.267 771.628,-392.861 776.413,-402.314 781.264,-397.267"/>
346</g>
347<!-- namestore -->
348<g id="node21" class="node"><title>namestore</title>
349<ellipse fill="none" stroke="black" cx="685" cy="-522" rx="47.3916" ry="18"/>
350<text text-anchor="middle" x="685" y="-518.3" font-family="Times,serif" font-size="14.00">namestore</text>
351</g>
352<!-- zonemaster&#45;&gt;namestore -->
353<g id="edge25" class="edge"><title>zonemaster&#45;&gt;namestore</title>
354<path fill="none" stroke="black" d="M818.599,-579.337C791.812,-568.041 753.653,-551.95 724.971,-539.855"/>
355<polygon fill="black" stroke="black" points="726.212,-536.58 715.637,-535.919 723.492,-543.03 726.212,-536.58"/>
356</g>
357<!-- namestore&#45;&gt;identity -->
358<g id="edge37" class="edge"><title>namestore&#45;&gt;identity</title>
359<path fill="none" stroke="black" d="M642.634,-513.641C566.046,-500.338 405.247,-472.408 326.867,-458.793"/>
360<polygon fill="black" stroke="black" points="327.275,-455.312 316.823,-457.049 326.077,-462.208 327.275,-455.312"/>
361</g>
362<!-- namestore&#45;&gt;gnsrecord -->
363<g id="edge38" class="edge"><title>namestore&#45;&gt;gnsrecord</title>
364<path fill="none" stroke="black" d="M726.085,-512.971C742.503,-509.919 761.609,-506.564 779,-504 918.405,-483.451 954.522,-488.05 1094,-468 1109.42,-465.784 1126.13,-463.019 1141.32,-460.368"/>
365<polygon fill="black" stroke="black" points="1142.32,-463.746 1151.56,-458.558 1141.1,-456.853 1142.32,-463.746"/>
366</g>
367<!-- gns -->
368<g id="node22" class="node"><title>gns</title>
369<ellipse fill="none" stroke="black" cx="850" cy="-666" rx="27" ry="18"/>
370<text text-anchor="middle" x="850" y="-662.3" font-family="Times,serif" font-size="14.00">gns</text>
371</g>
372<!-- gns&#45;&gt;identity -->
373<g id="edge34" class="edge"><title>gns&#45;&gt;identity</title>
374<path fill="none" stroke="black" d="M823.048,-663.899C740.091,-660.169 489.801,-646.281 417,-612 395.952,-602.089 396.543,-591.28 379,-576 359.686,-559.178 350.742,-559.383 334,-540 317.464,-520.856 303.335,-495.717 293.996,-477.041"/>
375<polygon fill="black" stroke="black" points="297.085,-475.39 289.562,-467.93 290.791,-478.453 297.085,-475.39"/>
376</g>
377<!-- gns&#45;&gt;dht -->
378<g id="edge28" class="edge"><title>gns&#45;&gt;dht</title>
379<path fill="none" stroke="black" d="M870.511,-653.985C875.467,-651.699 880.829,-649.525 886,-648 1002.11,-613.746 1046.93,-664.524 1156,-612 1236.59,-573.194 1305.75,-498.559 1246,-432 1215.85,-398.416 902.601,-384.19 793.343,-380.225"/>
380<polygon fill="black" stroke="black" points="793.243,-376.719 783.125,-379.863 792.995,-383.715 793.243,-376.719"/>
381</g>
382<!-- gns&#45;&gt;block -->
383<g id="edge29" class="edge"><title>gns&#45;&gt;block</title>
384<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M822.824,-664.872C770.707,-663.582 654.321,-655.598 569,-612 548.284,-601.414 548.925,-590.83 531,-576 509.902,-558.544 496.079,-562.857 481,-540 438.212,-475.142 430.206,-380.324 428.985,-334.208"/>
385<polygon fill="blue" stroke="blue" points="432.483,-334.033 428.808,-324.096 425.484,-334.156 432.483,-334.033"/>
386</g>
387<!-- gns&#45;&gt;dnsstub -->
388<g id="edge33" class="edge"><title>gns&#45;&gt;dnsstub</title>
389<path fill="none" stroke="black" d="M871.065,-654.325C875.905,-652.077 881.078,-649.834 886,-648 941.778,-627.217 973.486,-654.658 1015,-612 1049.82,-576.222 1044.5,-512.583 1037.99,-476.971"/>
390<polygon fill="black" stroke="black" points="1041.36,-476 1035.97,-466.88 1034.5,-477.373 1041.36,-476"/>
391</g>
392<!-- gns&#45;&gt;vpn -->
393<g id="edge31" class="edge"><title>gns&#45;&gt;vpn</title>
394<path fill="none" stroke="black" d="M827.858,-655.35C811.041,-646.688 789.135,-632.213 779,-612 768.086,-590.233 781.353,-564.325 794.756,-546.091"/>
395<polygon fill="black" stroke="black" points="797.832,-547.84 801.242,-537.808 792.321,-543.524 797.832,-547.84"/>
396</g>
397<!-- gns&#45;&gt;dns -->
398<g id="edge27" class="edge"><title>gns&#45;&gt;dns</title>
399<path fill="none" stroke="black" d="M871.13,-654.496C875.967,-652.239 881.122,-649.949 886,-648 933.377,-629.072 964.65,-653.009 995,-612 1008.03,-594.39 1007.25,-568.995 1003.95,-549.835"/>
400<polygon fill="black" stroke="black" points="1007.35,-549.022 1001.93,-539.921 1000.49,-550.418 1007.35,-549.022"/>
401</g>
402<!-- gns&#45;&gt;dnsparser -->
403<g id="edge32" class="edge"><title>gns&#45;&gt;dnsparser</title>
404<path fill="none" stroke="black" d="M870.586,-654.227C875.54,-651.931 880.881,-649.692 886,-648 963.461,-622.391 995.505,-653.066 1066,-612 1093.37,-596.054 1115.84,-566.774 1129.29,-546.163"/>
405<polygon fill="black" stroke="black" points="1132.29,-547.978 1134.66,-537.654 1126.37,-544.243 1132.29,-547.978"/>
406</g>
407<!-- revocation -->
408<g id="node23" class="node"><title>revocation</title>
409<ellipse fill="none" stroke="black" cx="474" cy="-594" rx="48.1917" ry="18"/>
410<text text-anchor="middle" x="474" y="-590.3" font-family="Times,serif" font-size="14.00">revocation</text>
411</g>
412<!-- gns&#45;&gt;revocation -->
413<g id="edge30" class="edge"><title>gns&#45;&gt;revocation</title>
414<path fill="none" stroke="black" d="M823.776,-661.482C769.658,-654.024 641.808,-635.374 536,-612 531.019,-610.9 525.841,-609.65 520.694,-608.34"/>
415<polygon fill="black" stroke="black" points="521.456,-604.922 510.895,-605.77 519.68,-611.693 521.456,-604.922"/>
416</g>
417<!-- gns&#45;&gt;gnsrecord -->
418<g id="edge41" class="edge"><title>gns&#45;&gt;gnsrecord</title>
419<path fill="none" stroke="black" d="M870.549,-654.113C875.504,-651.822 880.856,-649.613 886,-648 978.027,-619.137 1009.84,-646.249 1100,-612 1156.37,-590.587 1185.79,-592.754 1215,-540 1225.98,-520.174 1217.7,-494.957 1208.15,-476.431"/>
420<polygon fill="black" stroke="black" points="1211.2,-474.717 1203.29,-467.672 1205.08,-478.114 1211.2,-474.717"/>
421</g>
422<!-- revocation&#45;&gt;core -->
423<g id="edge35" class="edge"><title>revocation&#45;&gt;core</title>
424<path fill="none" stroke="black" d="M447.586,-578.755C410.639,-556.683 348,-510.49 348,-451 348,-451 348,-451 348,-377 348,-335.398 347.208,-317.038 377,-288 415.046,-250.916 477.859,-239.613 517.794,-236.267"/>
425<polygon fill="black" stroke="black" points="518.191,-239.747 527.918,-235.547 517.695,-232.765 518.191,-239.747"/>
426</g>
427<!-- revocation&#45;&gt;set -->
428<g id="edge36" class="edge"><title>revocation&#45;&gt;set</title>
429<path fill="none" stroke="black" d="M484.409,-576.055C489.683,-567.469 496.183,-556.888 501.987,-547.439"/>
430<polygon fill="black" stroke="black" points="505.024,-549.182 507.276,-538.829 499.06,-545.518 505.024,-549.182"/>
431</g>
432<!-- set&#45;&gt;cadet -->
433<g id="edge75" class="edge"><title>set&#45;&gt;cadet</title>
434<path fill="none" stroke="black" d="M522.084,-504.055C524.482,-496.059 527.401,-486.331 530.08,-477.4"/>
435<polygon fill="black" stroke="black" points="533.442,-478.373 532.963,-467.789 526.737,-476.362 533.442,-478.373"/>
436</g>
437<!-- conversation -->
438<g id="node26" class="node"><title>conversation</title>
439<polygon fill="none" stroke="black" points="1017.18,-743.562 948,-756 878.82,-743.562 878.884,-723.438 1017.12,-723.438 1017.18,-743.562"/>
440<text text-anchor="middle" x="948" y="-734.3" font-family="Times,serif" font-size="14.00">conversation</text>
441</g>
442<!-- conversation&#45;&gt;cadet -->
443<g id="edge53" class="edge"><title>conversation&#45;&gt;cadet</title>
444<path fill="none" stroke="black" d="M900.537,-723.335C873.864,-714.435 840.677,-701.257 814,-684 756.206,-646.615 759.329,-615.558 703,-576 673.069,-554.981 658.318,-561.866 629,-540 611.601,-527.024 611.36,-519.336 596,-504 585.077,-493.094 572.479,-481.475 561.82,-471.903"/>
445<polygon fill="black" stroke="black" points="563.901,-469.069 554.107,-465.028 559.243,-474.295 563.901,-469.069"/>
446</g>
447<!-- conversation&#45;&gt;gns -->
448<g id="edge54" class="edge"><title>conversation&#45;&gt;gns</title>
449<path fill="none" stroke="black" d="M928.638,-723.17C913.533,-712.381 892.408,-697.291 875.857,-685.469"/>
450<polygon fill="black" stroke="black" points="877.846,-682.589 867.674,-679.625 873.777,-688.285 877.846,-682.589"/>
451</g>
452<!-- conversation&#45;&gt;gnsrecord -->
453<g id="edge40" class="edge"><title>conversation&#45;&gt;gnsrecord</title>
454<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1017.21,-728.51C1076.25,-719.968 1155.24,-705.041 1179,-684 1241.33,-628.786 1256.97,-583.117 1231,-504 1227.58,-493.58 1221.24,-483.522 1214.65,-475.019"/>
455<polygon fill="blue" stroke="blue" points="1217.15,-472.551 1208.08,-467.08 1211.76,-477.015 1217.15,-472.551"/>
456</g>
457<!-- speaker -->
458<g id="node31" class="node"><title>speaker</title>
459<polygon fill="none" stroke="black" points="948,-684 894.877,-666 948,-648 1001.12,-666 948,-684"/>
460<text text-anchor="middle" x="948" y="-662.3" font-family="Times,serif" font-size="14.00">speaker</text>
461</g>
462<!-- conversation&#45;&gt;speaker -->
463<g id="edge55" class="edge"><title>conversation&#45;&gt;speaker</title>
464<path fill="none" stroke="black" d="M948,-723.17C948,-714.919 948,-704.153 948,-694.256"/>
465<polygon fill="black" stroke="black" points="951.5,-694.019 948,-684.019 944.5,-694.019 951.5,-694.019"/>
466</g>
467<!-- microphone -->
468<g id="node32" class="node"><title>microphone</title>
469<polygon fill="none" stroke="black" points="1095,-684 1019.76,-666 1095,-648 1170.24,-666 1095,-684"/>
470<text text-anchor="middle" x="1095" y="-662.3" font-family="Times,serif" font-size="14.00">microphone</text>
471</g>
472<!-- conversation&#45;&gt;microphone -->
473<g id="edge56" class="edge"><title>conversation&#45;&gt;microphone</title>
474<path fill="none" stroke="black" d="M976.692,-723.337C1001.14,-711.695 1036.29,-694.958 1061.92,-682.753"/>
475<polygon fill="black" stroke="black" points="1063.71,-685.777 1071.23,-678.318 1060.7,-679.457 1063.71,-685.777"/>
476</g>
477<!-- nse&#45;&gt;core -->
478<g id="edge48" class="edge"><title>nse&#45;&gt;core</title>
479<path fill="none" stroke="black" d="M790.412,-294.231C785.459,-291.935 780.118,-289.695 775,-288 697.966,-262.487 673.625,-275.652 596,-252 592.83,-251.034 589.569,-249.913 586.336,-248.716"/>
480<polygon fill="black" stroke="black" points="587.428,-245.385 576.841,-244.978 584.864,-251.899 587.428,-245.385"/>
481</g>
482<!-- peerinfo&#45;&gt;hello -->
483<g id="edge76" class="edge"><title>peerinfo&#45;&gt;hello</title>
484<path fill="none" stroke="black" d="M548.194,-77.9517C554.676,-75.8006 561.524,-73.6914 568,-72 654.752,-49.3407 758.747,-32.6176 814.333,-24.4966"/>
485<polygon fill="black" stroke="black" points="815.063,-27.9277 824.46,-23.0344 814.062,-20.9995 815.063,-27.9277"/>
486</g>
487<!-- transport&#45;&gt;ats -->
488<g id="edge66" class="edge"><title>transport&#45;&gt;ats</title>
489<path fill="none" stroke="black" d="M644.122,-152.487C587.168,-138.972 476.742,-112.769 420.21,-99.3548"/>
490<polygon fill="black" stroke="black" points="420.844,-95.9082 410.306,-97.0048 419.228,-102.719 420.844,-95.9082"/>
491</g>
492<!-- transport&#45;&gt;peerinfo -->
493<g id="edge68" class="edge"><title>transport&#45;&gt;peerinfo</title>
494<path fill="none" stroke="black" d="M651.411,-148.647C624.725,-137.116 584.738,-119.837 555.501,-107.204"/>
495<polygon fill="black" stroke="black" points="556.601,-103.867 546.033,-103.113 553.824,-110.292 556.601,-103.867"/>
496</g>
497<!-- transport&#45;&gt;hello -->
498<g id="edge67" class="edge"><title>transport&#45;&gt;hello</title>
499<path fill="none" stroke="black" d="M721.405,-157.922C756.719,-153.037 806.213,-140.439 835,-108 850.042,-91.0495 854.193,-65.1533 854.935,-45.6573"/>
500<polygon fill="black" stroke="black" points="858.435,-45.6195 855.044,-35.5822 851.436,-45.5437 858.435,-45.6195"/>
501</g>
502<!-- nat -->
503<g id="node36" class="node"><title>nat</title>
504<polygon fill="none" stroke="black" points="796,-108 765.835,-90 796,-72 826.165,-90 796,-108"/>
505<text text-anchor="middle" x="796" y="-86.3" font-family="Times,serif" font-size="14.00">nat</text>
506</g>
507<!-- transport&#45;&gt;nat -->
508<g id="edge69" class="edge"><title>transport&#45;&gt;nat</title>
509<path fill="none" stroke="black" d="M703.474,-146.834C723.706,-134.626 752.749,-117.1 772.878,-104.953"/>
510<polygon fill="black" stroke="black" points="774.946,-107.793 781.7,-99.6294 771.33,-101.799 774.946,-107.793"/>
511</g>
512<!-- fragmentation -->
513<g id="node37" class="node"><title>fragmentation</title>
514<polygon fill="none" stroke="black" points="662,-108 576.537,-90 662,-72 747.463,-90 662,-108"/>
515<text text-anchor="middle" x="662" y="-86.3" font-family="Times,serif" font-size="14.00">fragmentation</text>
516</g>
517<!-- transport&#45;&gt;fragmentation -->
518<g id="edge70" class="edge"><title>transport&#45;&gt;fragmentation</title>
519<path fill="none" stroke="black" d="M675.643,-144.055C673.556,-135.941 671.011,-126.044 668.687,-117.006"/>
520<polygon fill="black" stroke="black" points="672.073,-116.12 666.193,-107.307 665.294,-117.864 672.073,-116.12"/>
521</g>
522<!-- topology -->
523<g id="node34" class="node"><title>topology</title>
524<polygon fill="none" stroke="black" points="959.5,-324 894.5,-324 894.5,-288 959.5,-288 959.5,-324"/>
525<text text-anchor="middle" x="927" y="-302.3" font-family="Times,serif" font-size="14.00">topology</text>
526</g>
527<!-- topology&#45;&gt;core -->
528<g id="edge61" class="edge"><title>topology&#45;&gt;core</title>
529<path fill="none" stroke="black" d="M894.413,-292.17C889.63,-290.593 884.724,-289.139 880,-288 756.312,-258.18 718.97,-284.656 596,-252 592.621,-251.103 589.151,-249.989 585.73,-248.765"/>
530<polygon fill="black" stroke="black" points="586.918,-245.471 576.329,-245.106 584.379,-251.995 586.918,-245.471"/>
531</g>
532<!-- topology&#45;&gt;peerinfo -->
533<g id="edge59" class="edge"><title>topology&#45;&gt;peerinfo</title>
534<path fill="none" stroke="black" d="M894.233,-295.354C862.315,-285.612 812.655,-269.532 771,-252 705.781,-224.55 688.475,-218.336 629,-180 597.704,-159.827 564.778,-132.553 542.992,-113.534"/>
535<polygon fill="black" stroke="black" points="545.032,-110.666 535.215,-106.682 540.404,-115.919 545.032,-110.666"/>
536</g>
537<!-- topology&#45;&gt;hello -->
538<g id="edge62" class="edge"><title>topology&#45;&gt;hello</title>
539<path fill="none" stroke="black" d="M922.652,-287.966C910.314,-239.626 875.032,-101.398 860.438,-44.2243"/>
540<polygon fill="black" stroke="black" points="863.829,-43.3557 857.964,-34.532 857.046,-45.087 863.829,-43.3557"/>
541</g>
542<!-- topology&#45;&gt;transport -->
543<g id="edge60" class="edge"><title>topology&#45;&gt;transport</title>
544<path fill="none" stroke="black" d="M897.206,-287.871C850.798,-261.191 761.564,-209.891 713.17,-182.069"/>
545<polygon fill="black" stroke="black" points="714.758,-178.945 704.344,-176.995 711.269,-185.014 714.758,-178.945"/>
546</g>
547<!-- hostlist -->
548<g id="node35" class="node"><title>hostlist</title>
549<polygon fill="none" stroke="black" points="214,-324 158,-324 158,-288 214,-288 214,-324"/>
550<text text-anchor="middle" x="186" y="-302.3" font-family="Times,serif" font-size="14.00">hostlist</text>
551</g>
552<!-- hostlist&#45;&gt;core -->
553<g id="edge63" class="edge"><title>hostlist&#45;&gt;core</title>
554<path fill="none" stroke="black" d="M214.167,-292.599C218.733,-290.88 223.455,-289.271 228,-288 330.933,-259.219 456.746,-244.294 517.975,-238.275"/>
555<polygon fill="black" stroke="black" points="518.666,-241.725 528.286,-237.286 517.998,-234.757 518.666,-241.725"/>
556</g>
557<!-- hostlist&#45;&gt;peerinfo -->
558<g id="edge64" class="edge"><title>hostlist&#45;&gt;peerinfo</title>
559<path fill="none" stroke="black" d="M212.608,-287.849C273.449,-248.632 422.455,-152.586 487.166,-110.875"/>
560<polygon fill="black" stroke="black" points="489.21,-113.721 495.719,-105.362 485.418,-107.838 489.21,-113.721"/>
561</g>
562<!-- hostlist&#45;&gt;hello -->
563<g id="edge65" class="edge"><title>hostlist&#45;&gt;hello</title>
564<path fill="none" stroke="black" d="M192.198,-287.715C209.228,-243.039 261.382,-123.627 349,-72 425.521,-26.9118 694.449,-19.9666 805.486,-19.053"/>
565<polygon fill="black" stroke="black" points="805.751,-22.5513 815.727,-18.9823 805.703,-15.5515 805.751,-22.5513"/>
566</g>
567<!-- scalarproduct -->
568<g id="node38" class="node"><title>scalarproduct</title>
569<ellipse fill="none" stroke="black" cx="636" cy="-594" rx="57.6901" ry="18"/>
570<text text-anchor="middle" x="636" y="-590.3" font-family="Times,serif" font-size="14.00">scalarproduct</text>
571</g>
572<!-- scalarproduct&#45;&gt;cadet -->
573<g id="edge74" class="edge"><title>scalarproduct&#45;&gt;cadet</title>
574<path fill="none" stroke="black" d="M622.726,-576.035C614.79,-565.742 604.61,-552.266 596,-540 581.021,-518.662 564.9,-493.752 553.465,-475.721"/>
575<polygon fill="black" stroke="black" points="556.241,-473.562 547.943,-466.975 550.322,-477.299 556.241,-473.562"/>
576</g>
577<!-- scalarproduct&#45;&gt;set -->
578<g id="edge73" class="edge"><title>scalarproduct&#45;&gt;set</title>
579<path fill="none" stroke="black" d="M610.179,-577.811C591.059,-566.564 565.021,-551.248 545.33,-539.665"/>
580<polygon fill="black" stroke="black" points="546.899,-536.527 536.505,-534.473 543.349,-542.56 546.899,-536.527"/>
581</g>
582<!-- secushare -->
583<g id="node39" class="node"><title>secushare</title>
584<polygon fill="none" stroke="black" points="633.366,-815.562 578,-828 522.634,-815.562 522.686,-795.438 633.314,-795.438 633.366,-815.562"/>
585<text text-anchor="middle" x="578" y="-806.3" font-family="Times,serif" font-size="14.00">secushare</text>
586</g>
587<!-- social -->
588<g id="node42" class="node"><title>social</title>
589<ellipse fill="none" stroke="black" cx="578" cy="-738" rx="31.3957" ry="18"/>
590<text text-anchor="middle" x="578" y="-734.3" font-family="Times,serif" font-size="14.00">social</text>
591</g>
592<!-- secushare&#45;&gt;social -->
593<g id="edge80" class="edge"><title>secushare&#45;&gt;social</title>
594<path fill="none" stroke="black" d="M578,-795.17C578,-786.919 578,-776.153 578,-766.256"/>
595<polygon fill="black" stroke="black" points="581.5,-766.019 578,-756.019 574.5,-766.019 581.5,-766.019"/>
596</g>
597<!-- multicast -->
598<g id="node40" class="node"><title>multicast</title>
599<ellipse fill="none" stroke="black" cx="326" cy="-594" rx="43.5923" ry="18"/>
600<text text-anchor="middle" x="326" y="-590.3" font-family="Times,serif" font-size="14.00">multicast</text>
601</g>
602<!-- multicast&#45;&gt;cadet -->
603<g id="edge82" class="edge"><title>multicast&#45;&gt;cadet</title>
604<path fill="none" stroke="black" d="M347.889,-578.338C386.803,-552.273 467.927,-497.935 510.526,-469.402"/>
605<polygon fill="black" stroke="black" points="512.642,-472.198 519.003,-463.725 508.747,-466.382 512.642,-472.198"/>
606</g>
607<!-- psyc -->
608<g id="node41" class="node"><title>psyc</title>
609<ellipse fill="none" stroke="black" cx="326" cy="-666" rx="27" ry="18"/>
610<text text-anchor="middle" x="326" y="-662.3" font-family="Times,serif" font-size="14.00">psyc</text>
611</g>
612<!-- psyc&#45;&gt;multicast -->
613<g id="edge81" class="edge"><title>psyc&#45;&gt;multicast</title>
614<path fill="none" stroke="black" d="M326,-647.697C326,-639.983 326,-630.712 326,-622.112"/>
615<polygon fill="black" stroke="black" points="329.5,-622.104 326,-612.104 322.5,-622.104 329.5,-622.104"/>
616</g>
617<!-- psycstore -->
618<g id="node43" class="node"><title>psycstore</title>
619<ellipse fill="none" stroke="black" cx="220" cy="-594" rx="44.393" ry="18"/>
620<text text-anchor="middle" x="220" y="-590.3" font-family="Times,serif" font-size="14.00">psycstore</text>
621</g>
622<!-- psyc&#45;&gt;psycstore -->
623<g id="edge79" class="edge"><title>psyc&#45;&gt;psycstore</title>
624<path fill="none" stroke="black" d="M307.536,-652.807C291.938,-642.506 269.271,-627.537 250.911,-615.413"/>
625<polygon fill="black" stroke="black" points="252.567,-612.312 242.294,-609.722 248.71,-618.154 252.567,-612.312"/>
626</g>
627<!-- social&#45;&gt;gns -->
628<g id="edge78" class="edge"><title>social&#45;&gt;gns</title>
629<path fill="none" stroke="black" d="M605.831,-729.838C655.82,-716.973 760.68,-689.987 815.282,-675.935"/>
630<polygon fill="black" stroke="black" points="816.373,-679.268 825.185,-673.386 814.628,-672.489 816.373,-679.268"/>
631</g>
632<!-- social&#45;&gt;psyc -->
633<g id="edge77" class="edge"><title>social&#45;&gt;psyc</title>
634<path fill="none" stroke="black" d="M550.552,-729.376C504.247,-716.513 410.731,-690.537 360.222,-676.506"/>
635<polygon fill="black" stroke="black" points="360.996,-673.089 350.424,-673.784 359.122,-679.833 360.996,-673.089"/>
636</g>
637<!-- rps -->
638<g id="node44" class="node"><title>rps</title>
639<ellipse fill="none" stroke="black" cx="593" cy="-306" rx="27" ry="18"/>
640<text text-anchor="middle" x="593" y="-302.3" font-family="Times,serif" font-size="14.00">rps</text>
641</g>
642<!-- rps&#45;&gt;core -->
643<g id="edge83" class="edge"><title>rps&#45;&gt;core</title>
644<path fill="none" stroke="black" d="M584.187,-288.765C579.582,-280.283 573.845,-269.714 568.679,-260.197"/>
645<polygon fill="black" stroke="black" points="571.613,-258.266 563.766,-251.147 565.461,-261.606 571.613,-258.266"/>
646</g>
647</g>
648</svg>
diff --git a/contrib/gnunet_janitor.py.in b/contrib/gnunet_janitor.py.in
deleted file mode 100644
index 74fc70886..000000000
--- a/contrib/gnunet_janitor.py.in
+++ /dev/null
@@ -1,78 +0,0 @@
1#!@PYTHON@
2# This file is part of GNUnet.
3# (C) 2011 Christian Grothoff (and other contributing authors)
4#
5# GNUnet is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published
7# by the Free Software Foundation; either version 2, or (at your
8# option) any later version.
9#
10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GNUnet; see the file COPYING. If not, write to the
17# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18# Boston, MA 02110-1301, USA.
19#
20# Finds any gnunet processes still running in the system and kills them
21#
22# gnunet janitor can be used by invoking `make' like this:
23# TESTS_ENVIRONMENT='${top_srcdir}/contrib/gnunet_janitor.py &&' make check
24
25from __future__ import print_function
26import os
27import re
28import subprocess
29import sys
30import shutil
31import time
32import signal
33import terminate
34
35if os.name == 'nt':
36 from win32com.client import GetObject
37 WMI = GetObject('winmgmts:')
38
39def get_process_list ():
40 result = []
41 if os.name == 'nt':
42 processes = WMI.InstancesOf('Win32_Process')
43 for p in processes:
44 result.append ((p.Properties_('ProcessId').Value, re.sub (r'(.+)\.exe', r'\1', p.Properties_('Name').Value)))
45 else:
46 pids = [pid for pid in os.listdir('/proc') if pid.isdigit ()]
47 for pid in pids:
48 with open (os.path.join ('/proc', pid, 'cmdline'), 'rb') as p:
49 cmdline = p.read ().split ('\x00')
50 if len (cmdline) > 0:
51 result.append ((pid, cmdline[0]))
52 return result
53
54def main ():
55 procs = get_process_list ()
56 gnunet_procs = []
57 for p in procs:
58 if re.match (r'gnunet-.+', p[1]):
59 gnunet_procs.append (p)
60 for p in gnunet_procs:
61 if re.match (r'gnunet-service-arm', p[1]):
62 print ("killing arm process {0:5} {1}".format (p[0], p[1]))
63 try:
64 terminate.safe_terminate_process_by_pid (int (p[0]), 1)
65 except OSError as e:
66 print ("failed: {0}".format (e))
67 pass
68 for p in gnunet_procs:
69 if not re.match (r'gnunet-service-arm', p[1]):
70 print ("killing non-arm process {0:5} {1}".format (p[0], p[1]))
71 try:
72 terminate.safe_terminate_process_by_pid (int (p[0]), 1)
73 except OSError as e:
74 print ("failed: {0}".format (e))
75 pass
76
77if __name__ == '__main__':
78 sys.exit (main ())
diff --git a/contrib/gnunet_pyexpect.py.in b/contrib/gnunet_pyexpect.py.in
deleted file mode 100644
index cfeb06d8d..000000000
--- a/contrib/gnunet_pyexpect.py.in
+++ /dev/null
@@ -1,83 +0,0 @@
1#!@PYTHON@
2# This file is part of GNUnet.
3# (C) 2010 Christian Grothoff (and other contributing authors)
4#
5# GNUnet is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published
7# by the Free Software Foundation; either version 2, or (at your
8# option) any later version.
9#
10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GNUnet; see the file COPYING. If not, write to the
17# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18# Boston, MA 02110-1301, USA.
19#
20# Testcase for gnunet-peerinfo
21from __future__ import print_function
22import os
23import re
24import subprocess
25import sys
26import shutil
27import time
28
29class pexpect (object):
30 def __init__ (self):
31 super (pexpect, self).__init__ ()
32
33 def spawn (self, stdin, arglist, *pargs, **kwargs):
34 env = kwargs.pop ('env', None)
35 if env is None:
36 env = os.environ.copy ()
37 # This messes up some testcases, disable log redirection
38 env.pop ('GNUNET_FORCE_LOGFILE', None)
39 self.proc = subprocess.Popen (arglist, *pargs, env=env, **kwargs)
40 if self.proc is None:
41 print ("Failed to spawn a process {0}".format (arglist))
42 sys.exit (1)
43 if stdin is not None:
44 self.stdo, self.stde = self.proc.communicate (stdin)
45 else:
46 self.stdo, self.stde = self.proc.communicate ()
47 return self.proc
48
49 def expect (self, s, r, flags=0):
50 stream = self.stdo if s == 'stdout' else self.stde
51 if isinstance (r, str):
52 if r == "EOF":
53 if len (stream) == 0:
54 return True
55 else:
56 print ("Failed to find `{1}' in {0}, which is `{2}' ({3})".format (s, r, stream, len (stream)))
57 sys.exit (2)
58 raise ValueError ("Argument `r' should be an instance of re.RegexObject or a special string, but is `{0}'".format (r))
59 m = r.search (stream.decode(), flags)
60 if not m:
61 print ("Failed to find `{1}' in {0}, which is is `{2}'".format (s, r.pattern, stream))
62 sys.exit (2)
63 stream = stream[m.end ():]
64 if s == 'stdout':
65 self.stdo = stream
66 else:
67 self.stde = stream
68 return m
69
70 def read (self, s, size=-1):
71 stream = self.stdo if s == 'stdout' else self.stde
72 result = ""
73 if size < 0:
74 result = stream
75 new_stream = ""
76 else:
77 result = stream[0:size]
78 new_stream = stream[size:]
79 if s == 'stdout':
80 self.stdo = new_stream
81 else:
82 self.stde = new_stream
83 return result
diff --git a/contrib/no_autostart_above_core.conf b/contrib/no_autostart_above_core.conf
deleted file mode 100644
index 81c01898f..000000000
--- a/contrib/no_autostart_above_core.conf
+++ /dev/null
@@ -1,87 +0,0 @@
1# Configuration to disable autostarting of
2# all services above the 'core' level.
3# (including resolver)
4
5[dns]
6AUTOSTART = NO
7
8[dht]
9AUTOSTART = NO
10
11[nse]
12AUTOSTART = NO
13
14[cadet]
15AUTOSTART = NO
16
17[datastore]
18AUTOSTART = NO
19
20[fs]
21AUTOSTART = NO
22
23[dv]
24AUTOSTART = NO
25
26[vpn]
27AUTOSTART = NO
28
29[consensus]
30AUTOSTART = NO
31
32[resolver]
33AUTOSTART = NO
34
35[namestore]
36AUTOSTART = NO
37
38[namecache]
39AUTOSTART = NO
40
41[identity]
42AUTOSTART = NO
43
44[revocation]
45AUTOSTART = NO
46
47[conversation]
48AUTOSTART = NO
49
50[peerstore]
51AUTOSTART = NO
52
53[psycstore]
54AUTOSTART = NO
55
56[gns]
57AUTOSTART = NO
58
59[regex]
60AUTOSTART = NO
61
62[set]
63AUTOSTART = NO
64
65[scalarproduct-bob]
66AUTOSTART = NO
67
68[scalarproduct-alice]
69AUTOSTART = NO
70
71[social]
72AUTOSTART = NO
73
74[psyc]
75AUTOSTART = NO
76
77[rps]
78AUTOSTART = NO
79
80[multicast]
81AUTOSTART = NO
82
83[sensordashboard]
84AUTOSTART = NO
85
86[sensor]
87AUTOSTART = NO
diff --git a/contrib/no_forcestart.conf b/contrib/no_forcestart.conf
deleted file mode 100644
index e21187ed2..000000000
--- a/contrib/no_forcestart.conf
+++ /dev/null
@@ -1,38 +0,0 @@
1# Configuration file that can be included to prevent ANY of the usual
2# FORCESTART = YES to be set. Also disables NSE POW calculation.
3#
4# This configuration is included from various configuration test files.
5# Whenever a new service is added that has FORCESTART = YES for
6# production should be disabled for (most) test suites, the option should
7# be added here instead of all over the place ;-).
8
9[core]
10FORCESTART = NO
11
12[fs]
13FORCESTART = NO
14
15[dht]
16FORCESTART = NO
17
18[cadet]
19FORCESTART = NO
20
21[nse]
22FORCESTART = NO
23WORKBITS = 0
24
25[revocation]
26FORCESTART = NO
27
28[topology]
29FORCESTART = NO
30
31[hostlist]
32FORCESTART = NO
33
34[gns]
35FORCESTART = NO
36
37[zonemaster]
38FORCESTART = NO \ No newline at end of file
diff --git a/contrib/experiments/nse/infiniband.conf b/contrib/nse/experiments/infiniband.conf
index e42baba95..907c1a35e 100644
--- a/contrib/experiments/nse/infiniband.conf
+++ b/contrib/nse/experiments/infiniband.conf
@@ -1,8 +1,8 @@
1[PATHS] 1[PATHS]
2SERVICEHOME = /tmp/nse-profiler/ 2SERVICEHOME = $GNUNET_TMP/nse-profiler/
3 3
4[testbed] 4[testbed]
5AUTOSTART = NO 5START_ON_DEMAND = NO
6PORT = 12113 6PORT = 12113
7ACCEPT_FROM = 127.0.0.1;192.168.0.0/16; 7ACCEPT_FROM = 127.0.0.1;192.168.0.0/16;
8HOSTNAME = localhost 8HOSTNAME = localhost
@@ -13,11 +13,11 @@ OPERATION_TIMEOUT = 45 s
13 13
14[nse] 14[nse]
15PORT = 12114 15PORT = 12114
16UNIXPATH = /tmp/test-nse-service-nse.unix 16UNIXPATH = $GNUNET_TMP/test-nse-service-nse.unix
17BINARY = gnunet-service-nse 17BINARY = gnunet-service-nse
18#BINARY = /home/mrwiggles/documents/research/gnunet/gnunet-ng/src/nse/.libs/gnunet-service-nse 18#BINARY = /home/mrwiggles/documents/research/gnunet/gnunet-ng/src/nse/.libs/gnunet-service-nse
19#PREFIX = valgrind --leak-check=full --log-file=valgrind_nse.%p 19#PREFIX = valgrind --leak-check=full --log-file=valgrind_nse.%p
20AUTOSTART = NO 20START_ON_DEMAND = NO
21# Overriding network settings for faster testing (do NOT use 21# Overriding network settings for faster testing (do NOT use
22# these values in production just because they are here) 22# these values in production just because they are here)
23WORKDELAY = 60 s 23WORKDELAY = 60 s
@@ -26,20 +26,20 @@ WORKBITS = 0
26PROOFFILE = $SERVICEHOME/nse.proof 26PROOFFILE = $SERVICEHOME/nse.proof
27 27
28[arm] 28[arm]
29UNIXPATH = /tmp/test-nse-service-arm.unix 29UNIXPATH = $GNUNET_TMP/test-nse-service-arm.unix
30 30
31[statistics] 31[statistics]
32AUTOSTART = YES 32START_ON_DEMAND = YES
33PORT = 12115 33PORT = 12115
34 34
35[fs] 35[fs]
36AUTOSTART = NO 36START_ON_DEMAND = NO
37 37
38[datastore] 38[datastore]
39AUTOSTART = NO 39START_ON_DEMAND = NO
40 40
41[dht] 41[dht]
42AUTOSTART = NO 42START_ON_DEMAND = NO
43 43
44[nat] 44[nat]
45DISABLEV6 = YES 45DISABLEV6 = YES
@@ -57,34 +57,34 @@ plugins = udp
57PORT = 12116 57PORT = 12116
58 58
59[core] 59[core]
60AUTOSTART = YES 60START_ON_DEMAND = YES
61 61
62[peerinfo] 62[peerinfo]
63AUTOSTART = YES 63START_ON_DEMAND = YES
64 64
65[dns] 65[dns]
66AUTOSTART = NO 66START_ON_DEMAND = NO
67 67
68[topology] 68[topology]
69AUTOSTART = NO 69START_ON_DEMAND = NO
70 70
71[dv] 71[dv]
72AUTOSTART = NO 72START_ON_DEMAND = NO
73 73
74[resolver] 74[resolver]
75AUTOSTART = YES 75START_ON_DEMAND = YES
76 76
77[cadet] 77[cadet]
78AUTOSTART = NO 78START_ON_DEMAND = NO
79 79
80[chat] 80[chat]
81AUTOSTART = NO 81START_ON_DEMAND = NO
82 82
83[gns] 83[gns]
84AUTOSTART = NO 84START_ON_DEMAND = NO
85 85
86[vpn] 86[vpn]
87AUTOSTART = NO 87START_ON_DEMAND = NO
88 88
89[nse-profiler] 89[nse-profiler]
90OUTPUT_FILE = nse_output_2000_peers.dat 90OUTPUT_FILE = nse_output_2000_peers.dat
diff --git a/contrib/packages/guix/guix-env-gillmann.scm b/contrib/packages/guix/guix-env-gillmann.scm
new file mode 100644
index 000000000..4b977c1bb
--- /dev/null
+++ b/contrib/packages/guix/guix-env-gillmann.scm
@@ -0,0 +1,151 @@
1;;; This file is part of GNUnet.
2;;; Copyright (C) 2016, 2017, 2018 GNUnet e.V.
3;;;
4;;; GNUnet is free software; you can redistribute it and/or modify
5;;; it under the terms of the GNU General Public License as published
6;;; by the Free Software Foundation; either version 3, or (at your
7;;; option) any later version.
8;;;
9;;; GNUnet is distributed in the hope that it will be useful, but
10;;; WITHOUT ANY WARRANTY; without even the implied warranty of
11;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12;;; General Public License for more details.
13;;;
14;;; You should have received a copy of the GNU General Public License
15;;; along with GNUnet; see the file COPYING. If not, write to the
16;;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17;;; Boston, MA 02110-1301, USA.
18
19(use-modules
20 (ice-9 popen)
21 (ice-9 match)
22 (ice-9 rdelim)
23 (guix packages)
24 (guix build-system gnu)
25 (guix gexp)
26 ((guix build utils) #:select (with-directory-excursion))
27 (guix git-download)
28 (guix utils) ; current-source-directory
29 (gnu packages)
30 (gnu packages aidc)
31 (gnu packages autotools)
32 (gnu packages backup)
33 (gnu packages base)
34 (gnu packages compression)
35 (gnu packages curl)
36 (gnu packages databases)
37 (gnu packages file)
38 (gnu packages gettext)
39 (gnu packages glib)
40 (gnu packages gnome)
41 (gnu packages gnunet)
42 (gnu packages gnupg)
43 (gnu packages gnuzilla)
44 (gnu packages groff)
45 (gnu packages gstreamer)
46 (gnu packages gtk)
47 (gnu packages guile)
48 (gnu packages image)
49 (gnu packages image-viewers)
50 (gnu packages libidn)
51 (gnu packages libunistring)
52 (gnu packages linux)
53 (gnu packages maths)
54 (gnu packages multiprecision)
55 (gnu packages perl)
56 (gnu packages pkg-config)
57 (gnu packages pulseaudio)
58 (gnu packages python)
59 (gnu packages tex)
60 (gnu packages texinfo)
61 (gnu packages tex)
62 (gnu packages tls)
63 (gnu packages upnp)
64 (gnu packages video)
65 (gnu packages web)
66 (gnu packages xiph)
67 ((guix licenses) #:prefix license:))
68
69(define %source-dir (current-source-directory))
70
71(define gnunet-dev-env
72 (let* ((revision "1")
73 (select? (delay (or (git-predicate
74 (current-source-directory))
75 source-file?))))
76 (package
77 (inherit gnunet)
78 (name "gnunet")
79 (version (string-append "git" revision))
80 (source
81 (local-file
82 (string-append (getcwd))
83 #:recursive? #t))
84 (inputs
85 `(("glpk" ,glpk)
86 ("gnurl" ,gnurl)
87 ("gstreamer" ,gstreamer)
88 ("gst-plugins-base" ,gst-plugins-base)
89 ("gnutls/dane" ,gnutls/dane)
90 ("iptables" ,iptables)
91 ("libextractor" ,libextractor)
92 ("libgcrypt" ,libgcrypt)
93 ("libidn" ,libidn)
94 ("libmicrohttpd" ,libmicrohttpd)
95 ("libltdl" ,libltdl)
96 ("libunistring" ,libunistring)
97 ("openssl" ,openssl)
98 ("opus" ,opus)
99 ("pulseaudio" ,pulseaudio)
100 ("sqlite" ,sqlite)
101 ("postgresql" ,postgresql)
102 ("mariadb" ,mariadb)
103 ("zlib" ,zlib)
104 ("perl" ,perl)
105 ("python-2" ,python-2) ; tests and gnunet-qr
106 ("jansson" ,jansson)
107 ("nss" ,nss)
108 ("glib" ,glib "bin")
109 ("gmp" ,gmp)
110 ("bluez" ,bluez) ; for optional bluetooth feature
111 ("glib" ,glib)
112 ;; ("texlive" ,texlive) ;FIXME: minimize.
113 ("texlive-tiny" ,texlive-tiny) ;; Seems to be enough for _just_ info output.
114 ("miniupnpc" ,miniupnpc)
115 ("libogg" ,libogg)))
116 (native-inputs
117 `(("pkg-config" ,pkg-config)
118 ("autoconf" ,autoconf)
119 ("automake" ,automake)
120 ("gnu-gettext" ,gnu-gettext)
121 ("which" ,which)
122 ("texinfo" ,texinfo-5) ; Debian stable: 5.2
123 ("libtool" ,libtool)))
124 (outputs '("out" "debug"))
125 (arguments
126 `(;#:configure-flags
127 ;;(list (string-append "--with-nssdir=" %output "/lib")
128 ;;"--enable-gcc-hardening"
129 ;;"--enable-linker-hardening"
130 ;;;;"--enable-documentation-only")
131 ;;;"--enable-logging=verbose"
132 ;;;"CFLAGS=-ggdb -O0")
133 #:phases
134 ;; swap check and install phases and set paths to installed bin
135 (modify-phases %standard-phases
136 (add-after 'unpack 'patch-bin-sh
137 (lambda _
138 (for-each (lambda (f) (chmod f #o755))
139 (find-files "po" ""))
140 #t))
141 (add-after 'patch-bin-sh 'bootstrap
142 (lambda _
143 (zero? (system* "sh" "bootstrap"))))
144 ;;(add-before 'build 'chdir
145 ;; (lambda _
146 ;; (chdir "doc/documentation")))
147 (delete 'check)
148 ;; XXX: https://gnunet.org/bugs/view.php?id=4619
149 ))))))
150
151gnunet-dev-env
diff --git a/contrib/packages/guix/guix-env-py2.scm b/contrib/packages/guix/guix-env-py2.scm
new file mode 100644
index 000000000..6085f96a9
--- /dev/null
+++ b/contrib/packages/guix/guix-env-py2.scm
@@ -0,0 +1,158 @@
1;;; This file is part of GNUnet.
2;;; Copyright (C) 2016, 2017, 2018 GNUnet e.V.
3;;;
4;;; GNUnet is free software; you can redistribute it and/or modify
5;;; it under the terms of the GNU General Public License as published
6;;; by the Free Software Foundation; either version 3, or (at your
7;;; option) any later version.
8;;;
9;;; GNUnet is distributed in the hope that it will be useful, but
10;;; WITHOUT ANY WARRANTY; without even the implied warranty of
11;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12;;; General Public License for more details.
13;;;
14;;; You should have received a copy of the GNU General Public License
15;;; along with GNUnet; see the file COPYING. If not, write to the
16;;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17;;; Boston, MA 02110-1301, USA.
18
19(use-modules
20 (ice-9 popen)
21 (ice-9 match)
22 (ice-9 rdelim)
23 (guix packages)
24 (guix build-system gnu)
25 (guix gexp)
26 ((guix build utils) #:select (with-directory-excursion))
27 (guix git-download)
28 (guix utils) ; current-source-directory
29 (gnu packages)
30 (gnu packages aidc)
31 (gnu packages autotools)
32 (gnu packages backup)
33 (gnu packages base)
34 (gnu packages compression)
35 (gnu packages curl)
36 (gnu packages databases)
37 (gnu packages file)
38 (gnu packages gettext)
39 (gnu packages glib)
40 (gnu packages gnome)
41 (gnu packages gnunet)
42 (gnu packages gnupg)
43 (gnu packages gnuzilla)
44 (gnu packages groff)
45 (gnu packages gstreamer)
46 (gnu packages gtk)
47 (gnu packages guile)
48 (gnu packages image)
49 (gnu packages image-viewers)
50 (gnu packages libidn)
51 (gnu packages libunistring)
52 (gnu packages linux)
53 (gnu packages maths)
54 (gnu packages multiprecision)
55 (gnu packages perl)
56 (gnu packages pkg-config)
57 (gnu packages pulseaudio)
58 (gnu packages python)
59 (gnu packages tex)
60 (gnu packages texinfo)
61 (gnu packages tex)
62 (gnu packages tls)
63 (gnu packages upnp)
64 (gnu packages video)
65 (gnu packages web)
66 (gnu packages xiph)
67 ((guix licenses) #:prefix license:))
68
69(define %source-dir (current-source-directory))
70
71(define gnunet-dev-env
72 (let* ((revision "1")
73 (select? (delay (or (git-predicate
74 (current-source-directory))
75 source-file?))))
76 (package
77 (inherit gnunet)
78 (name "gnunet")
79 (version (string-append "git" revision))
80 (source
81 (local-file
82 (string-append (getcwd))
83 #:recursive? #t))
84 (inputs
85 `(("glpk" ,glpk)
86 ("gnurl" ,gnurl)
87 ("gstreamer" ,gstreamer)
88 ("gst-plugins-base" ,gst-plugins-base)
89 ("gnutls/dane" ,gnutls/dane)
90 ("libextractor" ,libextractor)
91 ("libgcrypt" ,libgcrypt)
92 ("libidn" ,libidn)
93 ("libmicrohttpd" ,libmicrohttpd)
94 ("libltdl" ,libltdl)
95 ("libunistring" ,libunistring)
96 ("openssl" ,openssl)
97 ("opus" ,opus)
98 ("pulseaudio" ,pulseaudio)
99 ("sqlite" ,sqlite)
100 ("postgresql" ,postgresql)
101 ("mysql" ,mysql)
102 ("zlib" ,zlib)
103 ("perl" ,perl)
104 ("python-2" ,python-2) ; tests and gnunet-qr
105 ("python2-future" ,python2-future)
106 ("jansson" ,jansson)
107 ("nss" ,nss)
108 ("glib" ,glib "bin")
109 ("gmp" ,gmp)
110 ("bluez" ,bluez) ; for optional bluetooth feature
111 ("glib" ,glib)
112 ;; ("texlive" ,texlive) ;FIXME: minimize.
113 ("texlive-tiny" ,texlive-tiny) ;; Seems to be enough for _just_ info output.
114 ("miniupnpc" ,miniupnpc)
115 ("libogg" ,libogg)))
116 (native-inputs
117 `(("pkg-config" ,pkg-config)
118 ("autoconf" ,autoconf)
119 ("automake" ,automake)
120 ("gnu-gettext" ,gnu-gettext)
121 ("which" ,which)
122 ("texinfo" ,texinfo-5) ; Debian stable: 5.2
123 ("libtool" ,libtool)))
124 (outputs '("out" "debug"))
125 (arguments
126 `(;#:configure-flags
127 ;;(list (string-append "--with-nssdir=" %output "/lib")
128 ;;"--enable-gcc-hardening"
129 ;;"--enable-linker-hardening"
130 ;;;;"--enable-documentation-only")
131 ;;;"--enable-logging=verbose"
132 ;;;"CFLAGS=-ggdb -O0")
133 #:phases
134 ;; swap check and install phases and set paths to installed bin
135 (modify-phases %standard-phases
136 (add-after 'unpack 'patch-bin-sh
137 (lambda _
138 (for-each (lambda (f) (chmod f #o755))
139 (find-files "po" ""))
140 #t))
141 (add-after 'patch-bin-sh 'bootstrap
142 (lambda _
143 (zero? (system* "sh" "bootstrap"))))
144 ;;(add-before 'build 'chdir
145 ;; (lambda _
146 ;; (chdir "doc/documentation")))
147 (delete 'check)
148 ;; XXX: https://gnunet.org/bugs/view.php?id=4619
149 (add-after 'install 'set-path-for-check
150 (lambda* (#:key outputs #:allow-other-keys)
151 (let* ((out (assoc-ref outputs "out"))
152 (bin (string-append out "/bin"))
153 (lib (string-append out "/lib")))
154 (setenv "GNUNET_PREFIX" lib)
155 (setenv "PATH" (string-append (getenv "PATH") ":" bin))
156 (zero? (system* "make" "check")))))))))))
157
158gnunet-dev-env
diff --git a/contrib/packages/guix/notest-guix-env.scm b/contrib/packages/guix/notest-guix-env.scm
new file mode 100644
index 000000000..ffb0ec889
--- /dev/null
+++ b/contrib/packages/guix/notest-guix-env.scm
@@ -0,0 +1,145 @@
1;;; This file is part of GNUnet.
2;;; Copyright (C) 2016, 2017, 2018 GNUnet e.V.
3;;;
4;;; GNUnet is free software: you can redistribute it and/or modify it
5;;; under the terms of the GNU Affero General Public License as published
6;;; by the Free Software Foundation, either version 3 of the License,
7;;; or (at your option) any later version.
8;;;
9;;; GNUnet is distributed in the hope that it will be useful, but
10;;; WITHOUT ANY WARRANTY; without even the implied warranty of
11;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12;;; Affero General Public License for more details.
13;;;
14;;; You should have received a copy of the GNU Affero General Public License
15;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17(use-modules
18 (ice-9 popen)
19 (ice-9 match)
20 (ice-9 rdelim)
21 (guix packages)
22 (guix build-system gnu)
23 (guix gexp)
24 ((guix build utils) #:select (with-directory-excursion))
25 (guix git-download)
26 (guix utils) ; current-source-directory
27 (gnu packages)
28 (gnu packages aidc)
29 (gnu packages autotools)
30 (gnu packages backup)
31 (gnu packages base)
32 (gnu packages compression)
33 (gnu packages curl)
34 (gnu packages databases)
35 (gnu packages file)
36 (gnu packages gettext)
37 (gnu packages glib)
38 (gnu packages gnome)
39 (gnu packages gnunet)
40 (gnu packages gnupg)
41 (gnu packages gnuzilla)
42 (gnu packages groff)
43 (gnu packages gstreamer)
44 (gnu packages gtk)
45 (gnu packages guile)
46 (gnu packages image)
47 (gnu packages image-viewers)
48 (gnu packages libidn)
49 (gnu packages libunistring)
50 (gnu packages linux)
51 (gnu packages maths)
52 (gnu packages multiprecision)
53 (gnu packages perl)
54 (gnu packages pkg-config)
55 (gnu packages pulseaudio)
56 (gnu packages python)
57 (gnu packages tex)
58 (gnu packages texinfo)
59 (gnu packages tex)
60 (gnu packages tls)
61 (gnu packages upnp)
62 (gnu packages video)
63 (gnu packages web)
64 (gnu packages xiph)
65 ((guix licenses) #:prefix license:))
66
67(define %source-dir (current-source-directory))
68
69(define gnunet-dev-env
70 (let* ((revision "1")
71 (select? (delay (or (git-predicate
72 (current-source-directory))
73 source-file?))))
74 (package
75 (inherit gnunet)
76 (name "gnunet")
77 (version (string-append "git" revision))
78 (source
79 (local-file
80 (string-append (getcwd))
81 #:recursive? #t))
82 (inputs
83 `(("glpk" ,glpk)
84 ("gnurl" ,gnurl)
85 ("gstreamer" ,gstreamer)
86 ("gst-plugins-base" ,gst-plugins-base)
87 ("gnutls/dane" ,gnutls/dane)
88 ("libextractor" ,libextractor)
89 ("libgcrypt" ,libgcrypt)
90 ("libidn" ,libidn)
91 ("libmicrohttpd" ,libmicrohttpd)
92 ("libltdl" ,libltdl)
93 ("libunistring" ,libunistring)
94 ("openssl" ,openssl)
95 ("opus" ,opus)
96 ("pulseaudio" ,pulseaudio)
97 ("sqlite" ,sqlite)
98 ("postgresql" ,postgresql)
99 ("mysql" ,mariadb)
100 ("zlib" ,zlib)
101 ("perl" ,perl)
102 ("python-2" ,python-2) ; tests and gnunet-qr
103 ("python2-future" ,python2-future)
104 ("jansson" ,jansson)
105 ("nss" ,nss)
106 ("glib" ,glib "bin")
107 ("gmp" ,gmp)
108 ("bluez" ,bluez) ; for optional bluetooth feature
109 ("glib" ,glib)
110 ;; ("texlive" ,texlive) ;FIXME: minimize.
111 ("texlive-tiny" ,texlive-tiny) ;; Seems to be enough for _just_ info output.
112 ("miniupnpc" ,miniupnpc)
113 ("libogg" ,libogg)))
114 (native-inputs
115 `(("pkg-config" ,pkg-config)
116 ("autoconf" ,autoconf)
117 ("automake" ,automake)
118 ("gnu-gettext" ,gnu-gettext)
119 ("which" ,which)
120 ("texinfo" ,texinfo-5) ; Debian stable: 5.2
121 ("libtool" ,libtool)))
122 (outputs '("out" "debug"))
123 (arguments
124 `(#:configure-flags
125 (list (string-append "--with-nssdir=" %output "/lib")
126 "--enable-experimental")
127 #:phases
128 ;; swap check and install phases and set paths to installed bin
129 (modify-phases %standard-phases
130 (add-after 'unpack 'patch-bin-sh
131 (lambda _
132 (for-each (lambda (f) (chmod f #o755))
133 (find-files "po" ""))
134 #t))
135 (add-after 'patch-bin-sh 'bootstrap
136 (lambda _
137 (invoke "sh" "bootstrap")))
138 ;;(add-before 'build 'chdir
139 ;; (lambda _
140 ;; (chdir "doc/documentation")))
141 (delete 'check)
142 ;; XXX: https://gnunet.org/bugs/view.php?id=4619
143 ))))))
144
145gnunet-dev-env
diff --git a/contrib/lrn-indent.diff b/contrib/patches/lrn-indent.diff
index 8ba3b77cc..8ba3b77cc 100644
--- a/contrib/lrn-indent.diff
+++ b/contrib/patches/lrn-indent.diff
diff --git a/contrib/texi2html5-indent.diff b/contrib/patches/texi2html5-indent.diff
index 2abbcb766..2abbcb766 100644
--- a/contrib/texi2html5-indent.diff
+++ b/contrib/patches/texi2html5-indent.diff
diff --git a/contrib/transport_ats_years.diff b/contrib/patches/transport_ats_years.diff
index f48c9555d..f48c9555d 100644
--- a/contrib/transport_ats_years.diff
+++ b/contrib/patches/transport_ats_years.diff
diff --git a/contrib/pogen.sh b/contrib/pogen.sh
deleted file mode 100755
index 87c90adf2..000000000
--- a/contrib/pogen.sh
+++ /dev/null
@@ -1,4 +0,0 @@
1#!/bin/sh
2find src -name "*.c" | grep -v \# | grep -v /test_ | grep -v /perf_ | grep -v _old | grep -v chat | grep -v .libs/ | sort > po/POTFILES.in
3grep -l _\( `find src -name "*.h"` | grep -v "platform.h" | grep -v _old | grep -v chat | sort >> po/POTFILES.in
4
diff --git a/contrib/removetrailingwhitespace b/contrib/removetrailingwhitespace
deleted file mode 100755
index 9e620cbb2..000000000
--- a/contrib/removetrailingwhitespace
+++ /dev/null
@@ -1,14 +0,0 @@
1#!/usr/bin/python
2
3import sys
4import re
5
6for fileName in sys.argv[1:]:
7 f = open(fileName, 'r+')
8 fileString = f.read()
9
10 fileString = re.sub(r'[ ]+\n', r'\n', fileString)
11 fileString = re.sub(r'\r', r'', fileString)
12 f.seek(0)
13 f.write(fileString)
14 f.truncate(len(fileString))
diff --git a/contrib/repeat.sh b/contrib/repeat.sh
deleted file mode 100755
index 3efc95f07..000000000
--- a/contrib/repeat.sh
+++ /dev/null
@@ -1 +0,0 @@
1while true; do rm -rf /tmp/test-gnunetd-*; make check || break; done
diff --git a/contrib/scripts/.gitignore b/contrib/scripts/.gitignore
new file mode 100644
index 000000000..547c89185
--- /dev/null
+++ b/contrib/scripts/.gitignore
@@ -0,0 +1,2 @@
1gnunet-chk.py
2removetrailingwhitespace.py
diff --git a/contrib/scripts/afferify b/contrib/scripts/afferify
new file mode 100755
index 000000000..2fa607e1a
--- /dev/null
+++ b/contrib/scripts/afferify
@@ -0,0 +1,110 @@
1#!/usr/bin/perl
2# Catch all in-source GPL2/3 license declarations and convert
3# them to AGPL.
4#
5# You expected this to be using diff & patch? Well, the source
6# files have all sorts of different commenting and indentation
7# styles, not speaking of typos and failed uses of search and
8# replace, that an attempt in using the patch(1) tool would fail
9# miserably. This script instead is based on my rgrep from 1998.
10# Keeping it here as it may be useful to other projects under-
11# going the same pains. It is forbidden to use this script to
12# convert AGPL code back to less strict licensing. Haha, just
13# kidding.
14#
15# -symlynX
16
17use File::Find;
18$|=1;
19# Recurse into current or given directories
20find(\&wanted, $#ARGV >= 0 ? @ARGV : '.');
21print STDERR "\n";
22exit;
23
24
25sub wanted {
26 my $name = $File::Find::name;
27 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime)
28 = lstat;
29 return $File::Find::prune = 1 if /^(CVS|\.git|\.svn)$/;
30 # Nicer if you 'make distclean' first
31 return if /\.(o|pdf)$/i;
32 return if -d _ or -l _;
33 return if /afferify/; # Don't apply this to itself ;)
34 # No.. i didn't do it.. just being careful ;) ;)
35# return unless -T _; # We don't have binaries in the repo, do we?
36
37 # We need the default variable '$_' for more important duties.
38 my $f = $_;
39
40 if (sysopen(I, $f, O_RDONLY)) {
41 $_ = &slurp(*I);
42 close I;
43 # Debugging: What's inside the file we just read?
44# print STDERR '> ', $_;
45
46if (0) {
47# This code did the initial conversion. We ifdef it out.
48
49 # Good idea to have the text start with "GNUnet" rather than "This program"
50 if ( s#GNUnet is free software; you can redistribute it and/or modify it under the#GNUnet is free software: you can redistribute it and/or modify it# ) {
51 # Whoever had the idea of reformatting the GPL license text...
52 print STDERR "\nTrying wide style on $name\t";
53
54 # Most important thing to know in order to be able
55 # to read perl code: if regexps appear without any
56 # context, it means they are applied to the default
57 # variable being '$_'.
58 return unless s#terms of the GNU General Public License as published by the Free Software#under the terms of the GNU Affero General Public License as published#;
59 return unless s#^(\W*\s+)Foundation; either version \d, or \(at your option\) any later version\.#\1by the Free Software Foundation, either version 3 of the License,\n\1or (at your option) any later version.#m;
60 return unless s#GNUnet is distributed in the hope that it will be useful, but WITHOUT ANY#GNUnet is distributed in the hope that it will be useful, but#;
61 return unless s#WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR#WITHOUT ANY WARRANTY; without even the implied warranty of#;
62 return unless s#^(\W*\s+)A PARTICULAR PURPOSE. See the GNU General Public License for more details.#\1MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n\1Affero General Public License for more details.#m;
63 return unless s#^\W*\n\W*\s+You should have received a copy of the GNU General Public License along with\n\W*\s+GNUnet. see the file COPYING\. If not, .* see\s*\W*\s+<http://www.gnu.org/licenses/>\n##m;
64 } else {
65 # If this string is not in the file, leave it alone.
66 return unless s#GNUnet is free software; you can redistribute it and/or modify#GNUnet is free software: you can redistribute it and/or modify it#;
67 print STDERR "\nTrying regular style on $name\t";
68
69 # Patterns are designed to also match some typos and substitutions.
70 return unless s#it under the terms of the GNU General Public Lice\w+ as published#under the terms of the GNU Affero General Public License as published#;
71 return unless s#by the Free Software Foundation; either version \d, or \(at your#by the Free Software Foundation, either version 3 of the License,#;
72 return unless s#option\) any later version\.#or (at your option) any later version.#;
73 return unless s#General Public Lice\w+ for more details\.#Affero General Public License for more details.#;
74 return unless s#^\W*\n\W*\s+You should have received a copy of the GNU General Public Lice\w+\n\W*\s+along with GNUnet. see the file COPYING\. If not, write to the\n\W*\s+Free Software Foundation, Inc\., (51 Franklin Street, Fifth Floor|59 Tem ?ple Place - Suite 330),\n\W*\s+Boston, MA 0211\d-130\d, USA\.\n##m;
75 }
76 print STDERR "OK";
77
78} else {
79# This is the code in actual & current use:
80
81 return unless m#GNUnet is free software: you can redistribute it and/or modify it#;
82 print STDERR "\nTrying $name\t";
83 # There was a mistake in the replacement text!
84 return unless s#under the terms of the GNU General Public License as published#under the terms of the GNU Affero General Public License as published#;
85 # Don't apply this one twice!
86# return unless s#(\n\W*)(\s+)(Affero General Public License for more details\.)#\1\2\3\1\1\2You should have received a copy of the GNU Affero General Public License\1\2along with this program. If not, see <http://www.gnu.org/licenses/>.#;
87 print STDERR "FIXED";
88}
89
90 # We directly overwrite the original file in the
91 # assumption that we're in a healthy revertible git.
92 open(O, '>', $f) or die "Cannot overwrite $f";
93 # Imagine, I could have left out $_ here... ;)
94 print O $_;
95 close O;
96 } else {
97 die "Cannot access $name";
98 }
99}
100
101# Reads a file from a stream into a variable all at once:
102sub slurp {
103 # Perl sure gets clunky here
104 local(*IN) = @_;
105 local($save) = $/;
106 undef $/;
107 local($data) = <IN>;
108 $/ = $save;
109 return $data;
110}
diff --git a/contrib/coverage.sh b/contrib/scripts/coverage.sh
index dd6a6ab53..dd6a6ab53 100755
--- a/contrib/coverage.sh
+++ b/contrib/scripts/coverage.sh
diff --git a/contrib/debug b/contrib/scripts/debug
index 3de2c9a14..3de2c9a14 100755
--- a/contrib/debug
+++ b/contrib/scripts/debug
diff --git a/contrib/scripts/documentation/gnunet-doc.scm b/contrib/scripts/documentation/gnunet-doc.scm
new file mode 100644
index 000000000..077efacad
--- /dev/null
+++ b/contrib/scripts/documentation/gnunet-doc.scm
@@ -0,0 +1,182 @@
1;;; This file is part of GNUnet.
2;;; Copyright (C) 2016, 2017 GNUnet e.V.
3;;;
4;;; GNUnet is free software: you can redistribute it and/or modify it
5;;; under the terms of the GNU Affero General Public License as published
6;;; by the Free Software Foundation, either version 3 of the License, or
7;;; (at your option) any later version.
8;;;
9;;; GNUnet is distributed in the hope that it will be useful, but
10;;; WITHOUT ANY WARRANTY; without even the implied warranty of
11;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12;;; Affero General Public License for more details.
13;;;
14;;; You should have received a copy of the GNU Affero General Public License
15;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
16;;;
17
18(use-modules
19 (ice-9 popen)
20 (ice-9 match)
21 (ice-9 rdelim)
22 (guix packages)
23 (guix build-system gnu)
24 (guix gexp)
25 ((guix build utils) #:select (with-directory-excursion))
26 (guix git-download)
27 (guix utils) ; current-source-directory
28 (gnu packages)
29 (gnu packages aidc)
30 (gnu packages autotools)
31 (gnu packages backup)
32 (gnu packages base)
33 (gnu packages compression)
34 (gnu packages curl)
35 (gnu packages databases)
36 (gnu packages file)
37 (gnu packages gettext)
38 (gnu packages glib)
39 (gnu packages gnome)
40 (gnu packages gnunet)
41 (gnu packages gnupg)
42 (gnu packages gnuzilla)
43 (gnu packages groff)
44 (gnu packages gstreamer)
45 (gnu packages gtk)
46 (gnu packages guile)
47 (gnu packages graphviz)
48 (gnu packages image)
49 (gnu packages image-viewers)
50 (gnu packages libidn)
51 (gnu packages libunistring)
52 (gnu packages linux)
53 (gnu packages maths)
54 (gnu packages multiprecision)
55 (gnu packages perl)
56 (gnu packages pkg-config)
57 (gnu packages pulseaudio)
58 (gnu packages python)
59 (gnu packages tex)
60 (gnu packages texinfo)
61 (gnu packages tex)
62 (gnu packages tls)
63 (gnu packages video)
64 (gnu packages web)
65 (gnu packages xiph)
66 ;;(gnunet packages texlive) ;GNUnet module including texlive-2012 WIP
67 ((guix licenses) #:prefix license:))
68
69;;(define %source-dir (string-append (current-source-directory)
70;; "/../../../"))
71(define %source-dir (dirname (current-filename)))
72
73(define gnunet-doc
74 (let* ((revision "2")
75 (select? (delay (or (git-predicate
76 (string-append (current-source-directory)
77 "/../../../"))
78 source-file?))))
79 (package
80 (name "gnunet-doc")
81 (version (string-append "0.10.1-" revision "." "dev"))
82 (source
83 (local-file ;;"../../.."
84 ;;%source-dir
85 ;;(string-append (getcwd) "/../../../")
86 (string-append (getcwd)) ;drrty hack and this assumes one static position FIXME!
87 #:recursive? #t))
88 ;;#:select? (git-predicate %source-dir)))
89 ;;#:select? (force select?)))
90 (build-system gnu-build-system)
91 (inputs
92 `(("glpk" ,glpk)
93 ("gnurl" ,gnurl)
94 ("gstreamer" ,gstreamer)
95 ("gst-plugins-base" ,gst-plugins-base)
96 ("gnutls/dane" ,gnutls/dane)
97 ("libextractor" ,libextractor)
98 ("libgcrypt" ,libgcrypt)
99 ("libidn" ,libidn)
100 ("libmicrohttpd" ,libmicrohttpd)
101 ("libltdl" ,libltdl)
102 ("libunistring" ,libunistring)
103 ("openssl" ,openssl)
104 ("opus" ,opus)
105 ("pulseaudio" ,pulseaudio)
106 ("sqlite" ,sqlite)
107 ("postgresql" ,postgresql)
108 ("mysql" ,mariadb)
109 ("zlib" ,zlib)
110 ("perl" ,perl)
111 ("python-2" ,python-2) ; tests and gnunet-qr
112 ("jansson" ,jansson)
113 ("nss" ,nss)
114 ("glib" ,glib "bin")
115 ("gmp" ,gmp)
116 ("bluez" ,bluez) ; for optional bluetooth feature
117 ("glib" ,glib)
118 ;;("texlive-minimal" ,texlive-minimal) ; optional.
119 ("texlive" ,texlive) ;TODO: Stabilize Texlive-2012 package
120 ("libogg" ,libogg)))
121 (native-inputs
122 `(("pkg-config" ,pkg-config)
123 ("autoconf" ,autoconf)
124 ("automake" ,automake)
125 ("gnu-gettext" ,gnu-gettext)
126 ("graphviz" ,graphviz) ; dot
127 ("texinfo-5" ,texinfo-5) ; Debian stable
128 ("which" ,which)
129 ("libtool" ,libtool)))
130 (arguments
131 `(#:configure-flags
132 (list "--enable-documentation")
133 #:tests? #f ;Don't run tests
134 #:phases
135 (modify-phases %standard-phases
136 (add-after 'unpack 'autoconf
137 (lambda _
138 (substitute* "bootstrap"
139 (("contrib/pogen.sh") "sh contrib/pogen.sh"))
140 (for-each (lambda (f) (chmod f #o755))
141 (find-files "po" ""))
142 (zero? (system* "sh" "bootstrap"))))
143 (add-after 'build 'run-gendocs
144 (lambda _
145 (chdir "doc/documentation")
146 ;;(zero? (system* "make" "dev-build"))))
147 (zero? (system* "sh" "run-gendocs.sh"))))
148 ;; (zero? (system* "make" "pdf"))
149 ;; (zero? (system* "make" "html"))
150 ;; (zero? (system* "make" "info"))))
151 ;;(zero? (system* "make" "doc-all-give-me-the-noise"))))
152 (replace 'install
153 (lambda _
154 (zero? (system* "make" "doc-gendoc-install")))))))
155 ;;(lambda* (#:key outputs #:allow-other-keys)
156 ;; (let* ((out (assoc-ref outputs "out"))
157 ;; (doc (string-append out "/share/doc/gnunet")))
158 ;; (mkdir-p doc)
159 ;; (copy-recursively "images"
160 ;; (string-append doc
161 ;; "/images"))
162 ;; (mkdir-p (string-append doc "/gnunet"))
163 ;; (install-file "gnunet.pdf" doc)
164 ;; (install-file "gnunet.info" doc)
165 ;; (install-file "gnunet.log" doc) ;TODO: Move to 'dev' output?
166 ;; (copy-recursively "gnunet"
167 ;; (string-append doc
168 ;; "/gnunet"))
169 ;; (install-file "gnunet-c-tutorial.pdf" doc)
170 ;; (install-file "gnunet-c-tutorial.info" doc)
171 ;; (install-file "gnunet-c-tutorial.log" doc) ;TODO: Move to 'dev' output?
172 ;; (copy-recursively "gnunet-c-tutorial"
173 ;; (string-append doc
174 ;; "/gnunet-c-tutorial")))
175 ;; #t)))))
176 (synopsis "Documentation of GNUnet")
177 (description
178 "GNUnet documentation build")
179 (license (list license:fdl1.3+ license:gpl3+))
180 (home-page "https://gnunet.org/"))))
181
182gnunet-doc
diff --git a/contrib/find_typedefs.py b/contrib/scripts/find_typedefs.py
index 68f5c2782..b344cee2b 100644
--- a/contrib/find_typedefs.py
+++ b/contrib/scripts/find_typedefs.py
@@ -1,4 +1,7 @@
1# XXX (F841): local variable 'li' is assigned to but never used
2
1from __future__ import print_function 3from __future__ import print_function
4from __future__ import unicode_literals
2import os 5import os
3import re 6import re
4import sys 7import sys
diff --git a/contrib/gdb-iterate-dll.py b/contrib/scripts/gdb-iterate-dll.py
index 79d46aa96..388ef6e11 100644
--- a/contrib/gdb-iterate-dll.py
+++ b/contrib/scripts/gdb-iterate-dll.py
@@ -1,3 +1,6 @@
1from __future__ import print_function
2from __future__ import unicode_literals
3from builtins import str
1from gdb import * 4from gdb import *
2 5
3 6
diff --git a/contrib/generate-monkey-db.sh b/contrib/scripts/generate-monkey-db.sh
index 2afe55501..2afe55501 100755
--- a/contrib/generate-monkey-db.sh
+++ b/contrib/scripts/generate-monkey-db.sh
diff --git a/contrib/report.sh b/contrib/scripts/gnunet-bugreport
index 7fbb2f46c..f17cb7636 100755
--- a/contrib/report.sh
+++ b/contrib/scripts/gnunet-bugreport
@@ -233,7 +233,7 @@ gcc -o $TMPFILE $TMPFILE.c 2> /dev/null && $TMPFILE || echo "Not found"
233rm -f $TMPFILE $TMPFILE.bin 233rm -f $TMPFILE $TMPFILE.bin
234 234
235 235
236echo -n "GNUtls : " 236echo -n "GnuTLS : "
237TMPFILE=`mktemp /tmp/gnutls-version-testXXXXXX` 237TMPFILE=`mktemp /tmp/gnutls-version-testXXXXXX`
238cat - >$TMPFILE.c <<EOF 238cat - >$TMPFILE.c <<EOF
239#include <gnutls/gnutls.h> 239#include <gnutls/gnutls.h>
diff --git a/contrib/gnunet-chk.py b/contrib/scripts/gnunet-chk.py.in
index dba694c34..cabaef6c4 100755
--- a/contrib/gnunet-chk.py
+++ b/contrib/scripts/gnunet-chk.py.in
@@ -1,21 +1,19 @@
1#!/usr/bin/python 1#!@PYTHON@
2# This file is part of GNUnet. 2# This file is part of GNUnet.
3# (C) 2013 Christian Grothoff (and other contributing authors) 3# (C) 2013, 2018 Christian Grothoff (and other contributing authors)
4# 4#
5# GNUnet is free software; you can redistribute it and/or modify 5# GNUnet is free software: you can redistribute it and/or modify it
6# it under the terms of the GNU General Public License as published 6# under the terms of the GNU Affero General Public License as published
7# by the Free Software Foundation; either version 3, or (at your 7# by the Free Software Foundation, either version 3 of the License, or
8# option) any later version. 8# (at your option) any later version.
9# 9#
10# GNUnet is distributed in the hope that it will be useful, but 10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of 11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details. 13# Affero General Public License for more details.
14# 14#
15# You should have received a copy of the GNU General Public License 15# You should have received a copy of the GNU Affero General Public License
16# along with GNUnet; see the file COPYING. If not, write to the 16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18# Boston, MA 02110-1301, USA.
19# 17#
20# File: gnunet-chk.py 18# File: gnunet-chk.py
21# Brief: Computes GNUNET style Content Hash Key for a given file 19# Brief: Computes GNUNET style Content Hash Key for a given file
@@ -27,6 +25,7 @@ import os
27import getopt 25import getopt
28import sys 26import sys
29from Crypto.Cipher import AES 27from Crypto.Cipher import AES
28from functools import reduce
30 29
31 30
32# Defaults 31# Defaults
@@ -76,7 +75,7 @@ def encode_data_to_string(data):
76 wpos += 1 75 wpos += 1
77 vbit -= 5 76 vbit -= 5
78 assert (0 == vbit) 77 assert (0 == vbit)
79 return out; 78 return out
80 79
81 80
82def sha512_hash(data): 81def sha512_hash(data):
@@ -105,7 +104,7 @@ class AESKey:
105 passphrase: string containing the passphrase to get the AES key and 104 passphrase: string containing the passphrase to get the AES key and
106 initialization vector 105 initialization vector
107 """ 106 """
108 passphrase = bytearray(passphrase); 107 passphrase = bytearray(passphrase)
109 self.key = bytearray(self.KEY_SIZE) 108 self.key = bytearray(self.KEY_SIZE)
110 self.iv = bytearray(self.IV_SIZE) 109 self.iv = bytearray(self.IV_SIZE)
111 if (len(passphrase) > self.KEY_SIZE): 110 if (len(passphrase) > self.KEY_SIZE):
@@ -193,7 +192,7 @@ class Chk:
193 192
194 def uri(self): 193 def uri(self):
195 sizestr = repr(self.fsize) 194 sizestr = repr(self.fsize)
196 if isinstance(self.fsize, long): 195 if isinstance(self.fsize, int):
197 sizestr = sizestr[:-1] 196 sizestr = sizestr[:-1]
198 return GNUNET_FS_URI_PREFIX + GNUNET_FS_URI_CHK_INFIX + \ 197 return GNUNET_FS_URI_PREFIX + GNUNET_FS_URI_CHK_INFIX + \
199 encode_data_to_string(bytearray(self.key)) + "." + \ 198 encode_data_to_string(bytearray(self.key)) + "." + \
@@ -284,7 +283,7 @@ def compute_rootchk(readin, size):
284 readin: the stream where to read data from 283 readin: the stream where to read data from
285 size: the size of data to be read 284 size: the size of data to be read
286 """ 285 """
287 depth = compute_depth_(size); 286 depth = compute_depth_(size)
288 current_depth = 0 287 current_depth = 0
289 chks = [None] * (depth * CHK_PER_INODE) # list buffer 288 chks = [None] * (depth * CHK_PER_INODE) # list buffer
290 read_offset = 0 289 read_offset = 0
@@ -294,13 +293,13 @@ def compute_rootchk(readin, size):
294 off = CHK_PER_INODE * (depth - 1) 293 off = CHK_PER_INODE * (depth - 1)
295 assert (chks[off] is not None) 294 assert (chks[off] is not None)
296 logging.debug("Encoding done, reading CHK `" + chks[off].query + \ 295 logging.debug("Encoding done, reading CHK `" + chks[off].query + \
297 "' from " + repr(off) + "\n") 296 "' from " + repr(off) + "\n")
298 uri_chk = chks[off] 297 uri_chk = chks[off]
299 assert (size == read_offset) 298 assert (size == read_offset)
300 uri_chk.setSize(size) 299 uri_chk.setSize(size)
301 return uri_chk 300 return uri_chk
302 if (0 == current_depth): 301 if (0 == current_depth):
303 pt_size = min(DBLOCK_SIZE, size - read_offset); 302 pt_size = min(DBLOCK_SIZE, size - read_offset)
304 try: 303 try:
305 pt_block = readin.read(pt_size) 304 pt_block = readin.read(pt_size)
306 except IOError: 305 except IOError:
@@ -366,7 +365,7 @@ Options:
366if '__main__' == __name__: 365if '__main__' == __name__:
367 try: 366 try:
368 opts, args = getopt.getopt(sys.argv[1:], "h", ["help"]) 367 opts, args = getopt.getopt(sys.argv[1:], "h", ["help"])
369 except getopt.GetoptError, err: 368 except getopt.GetoptError as err:
370 print(err) 369 print(err)
371 print("Exception occured") 370 print("Exception occured")
372 usage() 371 usage()
@@ -379,4 +378,4 @@ if '__main__' == __name__:
379 print("Incorrect number of arguments passed") 378 print("Incorrect number of arguments passed")
380 usage() 379 usage()
381 sys.exit(1) 380 sys.exit(1)
382 print chkuri_from_path(args[0]) 381 print(chkuri_from_path(args[0]))
diff --git a/contrib/gnunet-logread b/contrib/scripts/gnunet-logread/gnunet-logread
index e4b6752b8..9b1c65401 100755
--- a/contrib/gnunet-logread
+++ b/contrib/scripts/gnunet-logread/gnunet-logread
@@ -1,4 +1,4 @@
1#!/usr/bin/env perl 1#!@PERL@
2# helper tool to make gnunet logs more readable 2# helper tool to make gnunet logs more readable
3# try 'gnunet-logread -h' for usage 3# try 'gnunet-logread -h' for usage
4 4
diff --git a/contrib/gnunet-logread-ipc b/contrib/scripts/gnunet-logread/gnunet-logread-ipc
index 77515d890..72f9f47df 100755
--- a/contrib/gnunet-logread-ipc
+++ b/contrib/scripts/gnunet-logread/gnunet-logread-ipc
@@ -4,6 +4,7 @@
4# 4#
5# ... obsoleted by gnunet-logread's new -f option that does the same thing 5# ... obsoleted by gnunet-logread's new -f option that does the same thing
6 6
7# FIXME: Replace /tmp with our use of $TMPDIR and similar.
7ipc=${1:-/tmp/gnunet-logread-ipc.sock} 8ipc=${1:-/tmp/gnunet-logread-ipc.sock}
8test -e "$ipc" || mkfifo "$ipc" 9test -e "$ipc" || mkfifo "$ipc"
9cat "$ipc" 10cat "$ipc"
diff --git a/contrib/gnunet-logread-ipc-sdedit b/contrib/scripts/gnunet-logread/gnunet-logread-ipc-sdedit
index 197e6f575..f8b7dc735 100755
--- a/contrib/gnunet-logread-ipc-sdedit
+++ b/contrib/scripts/gnunet-logread/gnunet-logread-ipc-sdedit
@@ -1,4 +1,4 @@
1#!/usr/bin/env perl 1#!@PERL@
2 2
3# 1. Start sdedit and enable 'RT diagram server' in 'Global preferences'. 3# 1. Start sdedit and enable 'RT diagram server' in 'Global preferences'.
4# 4#
diff --git a/contrib/gnunet-suidfix b/contrib/scripts/gnunet-suidfix
index 992378966..992378966 100755
--- a/contrib/gnunet-suidfix
+++ b/contrib/scripts/gnunet-suidfix
diff --git a/contrib/scripts/gnunet_janitor.py.in b/contrib/scripts/gnunet_janitor.py.in
new file mode 100644
index 000000000..cbe96a8eb
--- /dev/null
+++ b/contrib/scripts/gnunet_janitor.py.in
@@ -0,0 +1,79 @@
1#!@PYTHON@
2# This file is part of GNUnet.
3# (C) 2011, 2018 Christian Grothoff (and other contributing authors)
4#
5# GNUnet is free software: you can redistribute it and/or modify it
6# under the terms of the GNU Affero General Public License as published
7# by the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details.
14#
15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17#
18# Finds any gnunet processes still running in the system and kills them
19#
20# gnunet janitor can be used by invoking `make' like this:
21# TESTS_ENVIRONMENT='${top_srcdir}/contrib/scripts/gnunet_janitor.py &&' make check
22
23from __future__ import print_function
24import os
25import re
26import subprocess
27import sys
28import shutil
29import time
30import signal
31import terminate
32
33if os.name == 'nt':
34 from win32com.client import GetObject
35 WMI = GetObject('winmgmts:')
36
37
38def get_process_list():
39 result = []
40 if os.name == 'nt':
41 processes = WMI.InstancesOf('Win32_Process')
42 for p in processes:
43 result.append((p.Properties_('ProcessId').Value, re.sub(r'(.+)\.exe', r'\1', p.Properties_('Name').Value)))
44 else:
45 pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
46 for pid in pids:
47 with open(os.path.join('/proc', pid, 'cmdline'), 'rb') as p:
48 cmdline = p.read().split('\x00')
49 if len(cmdline) > 0:
50 result.append((pid, cmdline[0]))
51 return result
52
53
54def main():
55 procs = get_process_list()
56 gnunet_procs = []
57 for p in procs:
58 if re.match(r'gnunet-.+', p[1]):
59 gnunet_procs.append(p)
60 for p in gnunet_procs:
61 if re.match(r'gnunet-service-arm', p[1]):
62 print("killing arm process {0:5} {1}".format(p[0], p[1]))
63 try:
64 terminate.safe_terminate_process_by_pid(int(p[0]), 1)
65 except OSError as e:
66 print("failed: {0}".format(e))
67 pass
68 for p in gnunet_procs:
69 if not re.match(r'gnunet-service-arm', p[1]):
70 print("killing non-arm process {0:5} {1}".format(p[0], p[1]))
71 try:
72 terminate.safe_terminate_process_by_pid(int(p[0]), 1)
73 except OSError as e:
74 print("failed: {0}".format(e))
75 pass
76
77
78if __name__ == '__main__':
79 sys.exit(main())
diff --git a/contrib/scripts/gnunet_pyexpect.py.in b/contrib/scripts/gnunet_pyexpect.py.in
new file mode 100644
index 000000000..f155db5be
--- /dev/null
+++ b/contrib/scripts/gnunet_pyexpect.py.in
@@ -0,0 +1,82 @@
1#!@PYTHON@
2# This file is part of GNUnet.
3# (C) 2010, 2018 Christian Grothoff (and other contributing authors)
4#
5# GNUnet is free software: you can redistribute it and/or modify it
6# under the terms of the GNU Affero General Public License as published
7# by the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details.
14#
15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17#
18# Testcase for gnunet-peerinfo
19from __future__ import print_function
20import os
21import re
22import subprocess
23import sys
24import shutil
25import time
26
27
28class pexpect (object):
29 def __init__(self):
30 super(pexpect, self).__init__()
31
32 def spawn(self, stdin, arglist, *pargs, **kwargs):
33 env = kwargs.pop('env', None)
34 if env is None:
35 env = os.environ.copy()
36 # This messes up some testcases, disable log redirection
37 env.pop('GNUNET_FORCE_LOGFILE', None)
38 self.proc = subprocess.Popen(arglist, *pargs, env=env, **kwargs)
39 if self.proc is None:
40 print("Failed to spawn a process {0}".format(arglist))
41 sys.exit(1)
42 if stdin is not None:
43 self.stdo, self.stde = self.proc.communicate(stdin)
44 else:
45 self.stdo, self.stde = self.proc.communicate()
46 return self.proc
47
48 def expect(self, s, r, flags=0):
49 stream = self.stdo if s == 'stdout' else self.stde
50 if isinstance(r, str):
51 if r == "EOF":
52 if len(stream) == 0:
53 return True
54 else:
55 print("Failed to find `{1}' in {0}, which is `{2}' ({3})".format(s, r, stream, len(stream)))
56 sys.exit(2)
57 raise ValueError("Argument `r' should be an instance of re.RegexObject or a special string, but is `{0}'".format(r))
58 m = r.search(stream.decode(), flags)
59 if not m:
60 print("Failed to find `{1}' in {0}, which is is `{2}'".format(s, r.pattern, stream))
61 sys.exit(2)
62 stream = stream[m.end():]
63 if s == 'stdout':
64 self.stdo = stream
65 else:
66 self.stde = stream
67 return m
68
69 def read(self, s, size=-1):
70 stream = self.stdo if s == 'stdout' else self.stde
71 result = ""
72 if size < 0:
73 result = stream
74 new_stream = ""
75 else:
76 result = stream[0:size]
77 new_stream = stream[size:]
78 if s == 'stdout':
79 self.stdo = new_stream
80 else:
81 self.stde = new_stream
82 return result
diff --git a/contrib/scripts/lint-python.sh b/contrib/scripts/lint-python.sh
new file mode 100755
index 000000000..9f7e0462d
--- /dev/null
+++ b/contrib/scripts/lint-python.sh
@@ -0,0 +1,24 @@
1#!/bin/sh
2# check python style (and 2 to 3 migration)
3
4rm python-lint.log
5
6if [ -e "python" ]
7then
8 python --version >> python-lint.log
9fi
10
11if [ -e "python2" ]
12then
13 python2 --version >> python-lint.log
14fi
15
16if [ -e "python3" ]
17then
18 python3 --version >> python-lint.log
19fi
20
21flake8 >> python-lint.log
22
232to3 -v -d . >> python-lint.log
242to3 -v -p . >> python-lint.log
diff --git a/contrib/process_log.sh b/contrib/scripts/process_log.sh
index c25c515c2..c25c515c2 100755
--- a/contrib/process_log.sh
+++ b/contrib/scripts/process_log.sh
diff --git a/contrib/pydiffer.py.in b/contrib/scripts/pydiffer.py.in
index 10145371c..10145371c 100644
--- a/contrib/pydiffer.py.in
+++ b/contrib/scripts/pydiffer.py.in
diff --git a/contrib/pydmesg b/contrib/scripts/pydmesg
index d60e08fe3..d60e08fe3 100755
--- a/contrib/pydmesg
+++ b/contrib/scripts/pydmesg
diff --git a/contrib/regression.sh b/contrib/scripts/regression.sh
index 1f799797a..1f799797a 100755
--- a/contrib/regression.sh
+++ b/contrib/scripts/regression.sh
diff --git a/contrib/scripts/removetrailingwhitespace.py.in b/contrib/scripts/removetrailingwhitespace.py.in
new file mode 100755
index 000000000..5824fb591
--- /dev/null
+++ b/contrib/scripts/removetrailingwhitespace.py.in
@@ -0,0 +1,15 @@
1#!@PYTHON@
2
3import sys
4import re
5
6
7for fileName in sys.argv[1:]:
8 f = open(fileName, 'r+')
9 fileString = f.read()
10
11 fileString = re.sub(r'[ ]+\n', r'\n', fileString)
12 fileString = re.sub(r'\r', r'', fileString)
13 f.seek(0)
14 f.write(fileString)
15 f.truncate(len(fileString))
diff --git a/contrib/revisionary.sh b/contrib/scripts/revisionary.sh
index 5778cf148..5778cf148 100755
--- a/contrib/revisionary.sh
+++ b/contrib/scripts/revisionary.sh
diff --git a/contrib/scripts/terminate.py.in b/contrib/scripts/terminate.py.in
new file mode 100644
index 000000000..30f5dc97f
--- /dev/null
+++ b/contrib/scripts/terminate.py.in
@@ -0,0 +1,66 @@
1#!@PYTHON@
2# This file is part of GNUnet.
3# (C) 2011, 2018 Christian Grothoff (and other contributing authors)
4#
5# GNUnet is free software: you can redistribute it and/or modify it
6# under the terms of the GNU Affero General Public License as published
7# by the Free Software Foundation, either version 3 of the License, or
8# (at your option) any later version.
9#
10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Affero General Public License for more details.
14#
15# You should have received a copy of the GNU Affero General Public License
16# along with this program. If not, see <http://www.gnu.org/licenses/>.
17#
18# Utility module that implements safe process termination for W32.
19# For other platforms it's equivalent to Popen.kill ()
20# Requires pywin32 on W32.
21
22import sys
23import subprocess
24import os
25if os.name == 'nt':
26 import win32api
27 import win32process
28
29
30class dummyobj (object):
31 pass
32
33
34def safe_terminate_process_by_pid(pid, code):
35 if os.name == 'nt':
36 p = dummyobj()
37 p._handle = win32api.OpenProcess(2 | 1024 | 8 | 32 | 16, 0, pid)
38 result = safe_terminate_process(p, code)
39 win32api.CloseHandle(p._handle)
40 return result
41 else:
42 # XXX (F821): Undefined name 'SIGKILL'
43 return os.kill(int(pid), SIGKILL)
44
45
46def safe_terminate_process(proc, code):
47 if os.name == 'nt':
48 cp = win32api.GetCurrentProcess()
49 result = False
50 dupproc = win32api.DuplicateHandle(cp, proc._handle, cp, 2 | 1024 | 8 | 32 | 16, 0, 0)
51 try:
52 exitcode = win32process.GetExitCodeProcess(dupproc)
53 if exitcode == 0x103:
54 kernel32 = win32api.GetModuleHandle("kernel32")
55 exitprocess = win32api.GetProcAddress(kernel32, "ExitProcess")
56 th, tid = win32process.CreateRemoteThread(dupproc, None, 0, exitprocess, code, 0)
57 win32api.CloseHandle(th)
58 result = True
59 else:
60 result = True
61 # except failed to get exit code? failed to get module handle?
62 finally:
63 win32api.CloseHandle(dupproc)
64 return result
65 else:
66 return proc.kill()
diff --git a/contrib/testbed_cleanup.sh b/contrib/scripts/testbed_cleanup.sh
index 57413fba0..57413fba0 100755
--- a/contrib/testbed_cleanup.sh
+++ b/contrib/scripts/testbed_cleanup.sh
diff --git a/contrib/scripts/texinfo-hacks.el b/contrib/scripts/texinfo-hacks.el
new file mode 100644
index 000000000..bfb5c98fa
--- /dev/null
+++ b/contrib/scripts/texinfo-hacks.el
@@ -0,0 +1,18 @@
1;;;; hacks.el --- a few functions to help me work on the manual
2;;;; Jim Blandy <jimb@red-bean.com> --- October 1998
3;;;; -- imported from https://git.savannah.gnu.org/cgit/guile.git/tree/doc/hacks.el
4;;;; This code should be covered by the same license as GNU Guile (GPL3).
5
6(defun jh-exemplify-region (start end)
7 (interactive "r")
8 (save-excursion
9 (save-restriction
10 (narrow-to-region start end)
11
12 ;; Texinfo doesn't handle tabs well.
13 (untabify (point-min) (point-max))
14
15 ;; Quote any characters special to texinfo.
16 (goto-char (point-min))
17 (while (re-search-forward "[{}@]" nil t)
18 (replace-match "@\\&")))))
diff --git a/contrib/visualize_stats.sh b/contrib/scripts/visualize_stats.sh
index 87d8fc6c4..aaa5e657b 100755
--- a/contrib/visualize_stats.sh
+++ b/contrib/scripts/visualize_stats.sh
@@ -34,7 +34,7 @@ case "$1" in
34 NOW=`date +%s` 34 NOW=`date +%s`
35 RELAT=$[$NOW-$STARTTIME] 35 RELAT=$[$NOW-$STARTTIME]
36 gnunet-statistics | while read KEY VALUE; do 36 gnunet-statistics | while read KEY VALUE; do
37 37 KEY=`echo $KEY | tr / .`
38 # Collect stats of previous round 38 # Collect stats of previous round
39 if [ -e "$STATDIR/$KEY.dat" ]; then 39 if [ -e "$STATDIR/$KEY.dat" ]; then
40 PREV=`tail --lines=1 "$STATDIR/$KEY.dat" | sed -e "s/.* //g"` 40 PREV=`tail --lines=1 "$STATDIR/$KEY.dat" | sed -e "s/.* //g"`
diff --git a/contrib/scripts/zonewalk-to-types.sh b/contrib/scripts/zonewalk-to-types.sh
new file mode 100755
index 000000000..dfe15a8e3
--- /dev/null
+++ b/contrib/scripts/zonewalk-to-types.sh
@@ -0,0 +1,35 @@
1#!/bin/sh
2# This script is in the public domain.
3# Converts the output of gnunet-zonewalk (DNS resolutions)
4# into a proper input for gnunet-gns-benchmark.
5
6NUM_CLIENTS=3
7# How many different groups of names should we
8# create? 1/N will be in the 'shared' group.
9
10# FILE ($1) contains results from DNS lookup; strip
11# everything but the hostnames, remove duplicates
12# and then randomize the order.
13cat $1 | grep -v SOA | awk '{print $1}' | sort | uniq | shuf > $1.tmp
14TOTAL=`cat $1.tmp | wc -l`
15GROUP_SIZE=`expr $TOTAL / \( $NUM_CLIENTS + 1 \)`
16echo "Creating $NUM_CLIENTS benchmark sets with 2x $GROUP_SIZE entries each."
17# First group (0) is to be shared among all clients
18for i in `seq 1 $NUM_CLIENTS`
19do
20 cat $1.tmp | head -n $GROUP_SIZE | awk "{print 0 \" \" \$1}" > $1.$i.tmp
21done
22
23# Second group (1) is unique per client
24OFF=$GROUP_SIZE
25for i in `seq 1 $NUM_CLIENTS`
26do
27 END=`expr $OFF + $GROUP_SIZE`
28 cat $1.tmp | head -n $END | tail -n $GROUP_SIZE | awk "{print 1 \" \" \$1}" >> $1.$i.tmp
29# Shuffle again, so we mix the different request categories in terms of
30# when we issue the queries.
31 cat $1.$i.tmp | shuf > $1.$i
32 OFF="$END"
33 rm $1.$i.tmp
34done
35rm $1.tmp
diff --git a/contrib/services/openrc/gnunet.initd b/contrib/services/openrc/gnunet.initd
new file mode 100644
index 000000000..c042e3de1
--- /dev/null
+++ b/contrib/services/openrc/gnunet.initd
@@ -0,0 +1,82 @@
1#!/sbin/openrc-run
2# Copyright 1999-2016 Gentoo Foundation
3# Distributed under the terms of the GNU General Public License v2
4
5if [ -d /run ] ; then
6 PIDFILE=${PIDFILE:-/run/gnunet/arm-service.pid}
7else
8 PIDFILE=${PIDFILE:-/var/run/gnunet/arm-service.pid}
9fi
10
11depend() {
12 # FIXME: refine?
13 need net
14}
15
16GNUNET_PATH="/usr"
17GNUNET_HOME="/var/lib/gnunet"
18SUID_ROOT_HELPERS="exit nat-server nat-client transport-bluetooth transport-wlan vpn"
19
20chmodown_execbin() {
21 if [ -x $1 ]; then
22 if [ "$3" ]; then
23 chown $3 $1 2>/dev/null && chmod $2 $1
24 else
25 chmod $2 $1
26 fi
27 fi
28}
29
30checkconfig() {
31 if [ -n "$(find ${GNUNET_HOME}/.local/share/gnunet -maxdepth 1 -name gnunet.conf -perm +0044)" ] ; then
32 eerror "${conf} must not be world or group readable. Try:"
33 eerror " chmod 600 ${conf}"
34 eerror " chown gnunet:gnunet ${conf}"
35 return 1
36 fi
37 mkdir -p ${GNUNET_HOME}/.cache/gnunet
38
39 # taken from dangole's lede config.. thx!
40 local libexec="${GNUNET_PATH}/lib/gnunet/libexec" # why not /usr/libexec/gnunet ?
41 # not reliable enough:
42 #[ -e ${libexec}/.permfix ] && return
43 for helper in $SUID_ROOT_HELPERS; do
44 chmodown_execbin ${libexec}/gnunet-helper-$helper u+s
45 done
46 chmodown_execbin ${libexec}/gnunet-helper-dns 4750 root:gnunetdns
47 chmodown_execbin ${libexec}/gnunet-service-dns 2750 gnunet:gnunetdns
48 #touch ${libexec}/.permfix
49}
50
51start() {
52 checkconfig || return 1
53
54 local piddir=$(dirname ${PIDFILE})
55 if [ ! -d ${piddir} ] ; then
56 ebegin "Making ${piddir}"
57 mkdir -p ${piddir}
58 eend $?
59 ebegin "Changing permissions of ${piddir}"
60 chown gnunet:gnunet ${piddir}
61 eend $?
62 fi
63
64 ebegin "Starting ${SVCNAME}"
65 # shouldn't be necessary... but
66 start-stop-daemon --start --user gnunet --name gnunet --pidfile ${PIDFILE} \
67 --exec ${GNUNET_PATH}/lib/gnunet/libexec/gnunet-service-arm -- -d
68 # flags to be passed to the process appear after the double-dash
69 eend $?
70}
71
72stop() {
73 ebegin "Stopping ${SVCNAME}"
74 start-stop-daemon --stop --signal QUIT --pidfile ${PIDFILE}
75 sleep 1
76 killall -u gnunet
77 sleep 1
78 rm -rf /tmp/gnunet-gnunet-runtime >/dev/null 2>&1
79 rm -rf /tmp/gnunet-system-runtime >/dev/null 2>&1
80 eend $?
81}
82
diff --git a/contrib/terminate.py.in b/contrib/terminate.py.in
deleted file mode 100644
index 4a6719f38..000000000
--- a/contrib/terminate.py.in
+++ /dev/null
@@ -1,64 +0,0 @@
1#!@PYTHON@
2# This file is part of GNUnet.
3# (C) 2011 Christian Grothoff (and other contributing authors)
4#
5# GNUnet is free software; you can redistribute it and/or modify
6# it under the terms of the GNU General Public License as published
7# by the Free Software Foundation; either version 2, or (at your
8# option) any later version.
9#
10# GNUnet is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with GNUnet; see the file COPYING. If not, write to the
17# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18# Boston, MA 02110-1301, USA.
19#
20# Utility module that implements safe process termination for W32.
21# For other platforms it's equivalent to Popen.kill ()
22# Requires pywin32 on W32.
23
24import sys
25import os
26import subprocess
27if os.name == 'nt':
28 import win32api
29 import win32process
30
31class dummyobj (object):
32 pass
33
34def safe_terminate_process_by_pid (pid, code):
35 if os.name == 'nt':
36 p = dummyobj ()
37 p._handle = win32api.OpenProcess (2 | 1024 | 8 | 32 | 16, 0, pid)
38 result = safe_terminate_process (p, code)
39 win32api.CloseHandle (p._handle)
40 return result
41 else:
42 return os.kill (int (pid), SIGKILL)
43
44def safe_terminate_process (proc, code):
45 if os.name == 'nt':
46 cp = win32api.GetCurrentProcess ()
47 result = False
48 dupproc = win32api.DuplicateHandle (cp, proc._handle, cp, 2 | 1024 | 8 | 32 | 16, 0, 0)
49 try:
50 exitcode = win32process.GetExitCodeProcess (dupproc)
51 if exitcode == 0x103:
52 kernel32 = win32api.GetModuleHandle ("kernel32")
53 exitprocess = win32api.GetProcAddress (kernel32, "ExitProcess")
54 th, tid = win32process.CreateRemoteThread (dupproc, None, 0, exitprocess, code, 0)
55 win32api.CloseHandle (th)
56 result = True
57 else:
58 result = True
59 # except failed to get exit code? failed to get module handle?
60 finally:
61 win32api.CloseHandle (dupproc)
62 return result
63 else:
64 return proc.kill ()
diff --git a/contrib/test_gnunet_prefix.c b/contrib/test_gnunet_prefix.c
index 0e5325d5f..4614ee9e2 100644
--- a/contrib/test_gnunet_prefix.c
+++ b/contrib/test_gnunet_prefix.c
@@ -1,21 +1,19 @@
1/* 1/*
2 This file is part of GNUnet 2 This file is part of GNUnet
3 Copyright (C) 2011, 2014 GNUnet e.V. 3 Copyright (C) 2011, 2014 GNUnet e.V.
4 4
5 GNUnet is free software; you can redistribute it and/or modify 5 GNUnet is free software: you can redistribute it and/or modify it
6 it under the terms of the GNU General Public License as published 6 under the terms of the GNU Affero General Public License as published
7 by the Free Software Foundation; either version 3, or (at your 7 by the Free Software Foundation, either version 3 of the License, or
8 option) any later version. 8 (at your option) any later version.
9 9
10 GNUnet is distributed in the hope that it will be useful, but 10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of 11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details. 13 Affero General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU Affero General Public License
16 along with GNUnet; see the file COPYING. If not, write to the 16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19 */ 17 */
20 18
21/** 19/**
diff --git a/contrib/testbed_configs/regex_profiler_infiniband.conf b/contrib/testbed_configs/regex_profiler_infiniband.conf
index 206423011..2a748ac51 100644
--- a/contrib/testbed_configs/regex_profiler_infiniband.conf
+++ b/contrib/testbed_configs/regex_profiler_infiniband.conf
@@ -1,5 +1,5 @@
1[testbed] 1[testbed]
2AUTOSTART = NO 2START_ON_DEMAND = NO
3PORT = 11999 3PORT = 11999
4ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 4ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24;
5HOSTNAME = localhost 5HOSTNAME = localhost
@@ -13,7 +13,7 @@ BINARY = /home/szengel/gnunet/src/cadet/.libs/gnunet-daemon-regexprofiler
13REGEX_PREFIX = "GNVPN-0001-PAD" 13REGEX_PREFIX = "GNVPN-0001-PAD"
14 14
15[cadet] 15[cadet]
16AUTOSTART = YES 16START_ON_DEMAND = YES
17ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 17ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24;
18APP_ANNOUNCE_TIME = 240 s 18APP_ANNOUNCE_TIME = 240 s
19ID_ANNOUNCE_TIME = 120 m 19ID_ANNOUNCE_TIME = 120 m
@@ -22,7 +22,7 @@ PORT = 12001
22DHT_REPLICATION_LEVEL = 3 22DHT_REPLICATION_LEVEL = 3
23 23
24[dht] 24[dht]
25AUTOSTART = YES 25START_ON_DEMAND = YES
26ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 26ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24;
27HOSTNAME = localhost 27HOSTNAME = localhost
28# Do not allow DHT to create extra connections, beyond those testbed created 28# Do not allow DHT to create extra connections, beyond those testbed created
@@ -41,14 +41,14 @@ DISABLE_BF = YES
41IN_MEMORY = YES 41IN_MEMORY = YES
42 42
43[fs] 43[fs]
44AUTOSTART = NO 44START_ON_DEMAND = NO
45 45
46[resolver] 46[resolver]
47AUTOSTART = NO 47START_ON_DEMAND = NO
48HOSTNAME = localhost 48HOSTNAME = localhost
49 49
50[transport] 50[transport]
51AUTOSTART = YES 51START_ON_DEMAND = YES
52PLUGINS = tcp 52PLUGINS = tcp
53ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 53ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24;
54ACCEPT_FROM6 = ::1; 54ACCEPT_FROM6 = ::1;
@@ -60,7 +60,7 @@ WAN_QUOTA_OUT = 3932160
60WAN_QUOTA_IN = 3932160 60WAN_QUOTA_IN = 3932160
61 61
62[core] 62[core]
63AUTOSTART = YES 63START_ON_DEMAND = YES
64 64
65[transport-tcp] 65[transport-tcp]
66TIMEOUT = 300 s 66TIMEOUT = 300 s
@@ -74,7 +74,7 @@ ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24;
74 74
75[statistics] 75[statistics]
76PORT = 12008 76PORT = 12008
77AUTOSTART = YES 77START_ON_DEMAND = YES
78ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 78ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24;
79DISABLE = NO 79DISABLE = NO
80 80
@@ -86,18 +86,18 @@ USE_PROGRESSBARS = YES
86PEERGROUP_TIMEOUT = 2400 s 86PEERGROUP_TIMEOUT = 2400 s
87 87
88[PATHS] 88[PATHS]
89SERVICEHOME = /tmp/perf-regex/ 89SERVICEHOME = $GNUNET_TMP/perf-regex/
90 90
91[dns] 91[dns]
92AUTOSTART = NO 92START_ON_DEMAND = NO
93 93
94[nse] 94[nse]
95AUTOSTART = YES 95START_ON_DEMAND = YES
96# Minimize proof-of-work CPU consumption by NSE 96# Minimize proof-of-work CPU consumption by NSE
97WORKBITS = 1 97WORKBITS = 1
98 98
99[vpn] 99[vpn]
100AUTOSTART = NO 100START_ON_DEMAND = NO
101 101
102[nat] 102[nat]
103# Allow running on systems with only loopback? 103# Allow running on systems with only loopback?
diff --git a/contrib/testbed_configs/testbed_cluster.conf b/contrib/testbed_configs/testbed_cluster.conf
index 6d646a0ce..62c83ec78 100644
--- a/contrib/testbed_configs/testbed_cluster.conf
+++ b/contrib/testbed_configs/testbed_cluster.conf
@@ -1,32 +1,32 @@
1[testbed] 1[testbed]
2AUTOSTART = NO 2START_ON_DEMAND = NO
3PORT = 12113 3PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 10.0.0.0/8; 4ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 10.0.0.0/8;
5HOSTNAME = localhost 5HOSTNAME = localhost
6OVERLAY_TOPOLOGY = RANDOM 6OVERLAY_TOPOLOGY = RANDOM
7OVERLAY_RANDOM_LINKS = 10000 7OVERLAY_RANDOM_LINKS = 10000
8OPERATION_TIMEOUT = 45 s 8OPERATION_TIMEOUT = 45 s
9# LOG_FILE = /tmp/testbed.log 9# LOG_FILE = $GNUNET_TMP/testbed.log
10SETUP_TIMEOUT = 30m 10SETUP_TIMEOUT = 30m
11MAX_OPEN_FDS = 512 11MAX_OPEN_FDS = 512
12 12
13[fs] 13[fs]
14AUTOSTART = NO 14START_ON_DEMAND = NO
15 15
16[resolver] 16[resolver]
17AUTOSTART = NO 17START_ON_DEMAND = NO
18 18
19[cadet] 19[cadet]
20AUTOSTART = NO 20START_ON_DEMAND = NO
21PORT = 71 21PORT = 71
22 22
23[dht] 23[dht]
24AUTOSTART = NO 24START_ON_DEMAND = NO
25PORT = 70 25PORT = 70
26DISABLE_TRY_CONNECT = YES 26DISABLE_TRY_CONNECT = YES
27 27
28[statistics] 28[statistics]
29AUTOSTART = NO 29START_ON_DEMAND = NO
30PORT = 72 30PORT = 72
31 31
32[dhtcache] 32[dhtcache]
@@ -42,7 +42,7 @@ NEIGHBOUR_LIMIT = 10
42 42
43[core] 43[core]
44PORT = 12092 44PORT = 12092
45AUTOSTART = YES 45START_ON_DEMAND = YES
46USE_EPHEMERAL_KEYS = NO 46USE_EPHEMERAL_KEYS = NO
47 47
48[arm] 48[arm]
@@ -55,31 +55,31 @@ PORT = 12368
55BROADCAST = NO 55BROADCAST = NO
56 56
57[PATHS] 57[PATHS]
58SERVICEHOME = /tmp/test-testbed/ 58SERVICEHOME = $GNUNET_TMP/test-testbed/
59 59
60[dns] 60[dns]
61AUTOSTART = NO 61START_ON_DEMAND = NO
62 62
63[nse] 63[nse]
64AUTOSTART = NO 64START_ON_DEMAND = NO
65 65
66[vpn] 66[vpn]
67AUTOSTART = NO 67START_ON_DEMAND = NO
68 68
69[nat] 69[nat]
70RETURN_LOCAL_ADDRESSES = YES 70RETURN_LOCAL_ADDRESSES = YES
71 71
72[gns] 72[gns]
73AUTOSTART = NO 73START_ON_DEMAND = NO
74 74
75[peerinfo] 75[peerinfo]
76NO_IO = YES 76NO_IO = YES
77 77
78[consensus] 78[consensus]
79AUTOSTART = NO 79START_ON_DEMAND = NO
80 80
81[dv] 81[dv]
82AUTOSTART = NO 82START_ON_DEMAND = NO
83 83
84[lockmanager] 84[lockmanager]
85AUTOSTART = NO 85START_ON_DEMAND = NO
diff --git a/contrib/testbed_configs/testbed_infiniband.conf b/contrib/testbed_configs/testbed_infiniband.conf
index 7ad50d77a..812945eea 100644
--- a/contrib/testbed_configs/testbed_infiniband.conf
+++ b/contrib/testbed_configs/testbed_infiniband.conf
@@ -1,32 +1,32 @@
1[testbed] 1[testbed]
2AUTOSTART = NO 2START_ON_DEMAND = NO
3PORT = 12113 3PORT = 12113
4ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24; 4ACCEPT_FROM = 127.0.0.1; 192.168.1.0/24;
5HOSTNAME = localhost 5HOSTNAME = localhost
6OVERLAY_TOPOLOGY = RANDOM 6OVERLAY_TOPOLOGY = RANDOM
7OVERLAY_RANDOM_LINKS = 1000 7OVERLAY_RANDOM_LINKS = 1000
8OPERATION_TIMEOUT = 45 s 8OPERATION_TIMEOUT = 45 s
9# LOG_FILE = /tmp/testbed.log 9# LOG_FILE = $GNUNET_TMP/testbed.log
10SETUP_TIMEOUT = 30m 10SETUP_TIMEOUT = 30m
11MAX_OPEN_FDS = 512 11MAX_OPEN_FDS = 512
12 12
13[fs] 13[fs]
14AUTOSTART = NO 14START_ON_DEMAND = NO
15 15
16[resolver] 16[resolver]
17AUTOSTART = NO 17START_ON_DEMAND = NO
18 18
19[cadet] 19[cadet]
20AUTOSTART = NO 20START_ON_DEMAND = NO
21PORT = 71 21PORT = 71
22 22
23[dht] 23[dht]
24AUTOSTART = NO 24START_ON_DEMAND = NO
25PORT = 70 25PORT = 70
26DISABLE_TRY_CONNECT = YES 26DISABLE_TRY_CONNECT = YES
27 27
28[statistics] 28[statistics]
29AUTOSTART = NO 29START_ON_DEMAND = NO
30PORT = 72 30PORT = 72
31 31
32[dhtcache] 32[dhtcache]
@@ -42,7 +42,7 @@ NEIGHBOUR_LIMIT = 10
42 42
43[core] 43[core]
44PORT = 12092 44PORT = 12092
45AUTOSTART = YES 45START_ON_DEMAND = YES
46USE_EPHEMERAL_KEYS = NO 46USE_EPHEMERAL_KEYS = NO
47 47
48[arm] 48[arm]
@@ -55,31 +55,31 @@ PORT = 12368
55BROADCAST = NO 55BROADCAST = NO
56 56
57[PATHS] 57[PATHS]
58SERVICEHOME = /tmp/test-testbed/ 58SERVICEHOME = $GNUNET_TMP/test-testbed/
59 59
60[dns] 60[dns]
61AUTOSTART = NO 61START_ON_DEMAND = NO
62 62
63[nse] 63[nse]
64AUTOSTART = NO 64START_ON_DEMAND = NO
65 65
66[vpn] 66[vpn]
67AUTOSTART = NO 67START_ON_DEMAND = NO
68 68
69[nat] 69[nat]
70RETURN_LOCAL_ADDRESSES = YES 70RETURN_LOCAL_ADDRESSES = YES
71 71
72[gns] 72[gns]
73AUTOSTART = NO 73START_ON_DEMAND = NO
74 74
75[peerinfo] 75[peerinfo]
76NO_IO = YES 76NO_IO = YES
77 77
78[consensus] 78[consensus]
79AUTOSTART = NO 79START_ON_DEMAND = NO
80 80
81[dv] 81[dv]
82AUTOSTART = NO 82START_ON_DEMAND = NO
83 83
84[lockmanager] 84[lockmanager]
85AUTOSTART = NO 85START_ON_DEMAND = NO
diff --git a/contrib/testbed_configs/testbed_supermuc.conf b/contrib/testbed_configs/testbed_supermuc.conf
index 35c6e0789..47bfee43c 100644
--- a/contrib/testbed_configs/testbed_supermuc.conf
+++ b/contrib/testbed_configs/testbed_supermuc.conf
@@ -1,5 +1,5 @@
1[testbed] 1[testbed]
2AUTOSTART = NO 2START_ON_DEMAND = NO
3PORT = 12113 3PORT = 12113
4ACCEPT_FROM = 127.0.0.1;10.0.0.0/8; 4ACCEPT_FROM = 127.0.0.1;10.0.0.0/8;
5HOSTNAME = localhost 5HOSTNAME = localhost
@@ -8,28 +8,28 @@ MAX_PARALLEL_OPERATIONS = 500
8OVERLAY_TOPOLOGY = 2D_TORUS 8OVERLAY_TOPOLOGY = 2D_TORUS
9OVERLAY_RANDOM_LINKS = 4000 9OVERLAY_RANDOM_LINKS = 4000
10OPERATION_TIMEOUT = 10 s 10OPERATION_TIMEOUT = 10 s
11# LOG_FILE = /tmp/testbed.log 11# LOG_FILE = $GNUNET_TMP/testbed.log
12#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args 12#PREFIX = xterm -geometry 100x85 -T peer1 -e libtool --mode=execute gdb --args
13MAX_OPEN_FDS=512 13MAX_OPEN_FDS=512
14SETUP_TIMEOUT = 30 m 14SETUP_TIMEOUT = 30 m
15 15
16[fs] 16[fs]
17AUTOSTART = NO 17START_ON_DEMAND = NO
18 18
19[resolver] 19[resolver]
20AUTOSTART = NO 20START_ON_DEMAND = NO
21 21
22[cadet] 22[cadet]
23AUTOSTART = NO 23START_ON_DEMAND = NO
24PORT = 71 24PORT = 71
25 25
26[dht] 26[dht]
27AUTOSTART = NO 27START_ON_DEMAND = NO
28PORT = 70 28PORT = 70
29DISABLE_TRY_CONNECT = YES 29DISABLE_TRY_CONNECT = YES
30 30
31[statistics] 31[statistics]
32AUTOSTART = NO 32START_ON_DEMAND = NO
33PORT = 72 33PORT = 72
34 34
35[dhtcache] 35[dhtcache]
@@ -45,7 +45,7 @@ NEIGHBOUR_LIMIT = 10
45 45
46[core] 46[core]
47PORT = 12092 47PORT = 12092
48AUTOSTART = YES 48START_ON_DEMAND = YES
49USE_EPHEMERAL_KEYS = NO 49USE_EPHEMERAL_KEYS = NO
50 50
51[arm] 51[arm]
@@ -59,14 +59,14 @@ PORT = 12368
59BROADCAST = NO 59BROADCAST = NO
60 60
61[PATHS] 61[PATHS]
62SERVICEHOME = /tmp/test-testbed/ 62SERVICEHOME = $GNUNET_TMP/test-testbed/
63 63
64[nat] 64[nat]
65BEHIND_NAT = NO 65BEHIND_NAT = NO
66RETURN_LOCAL_ADDRESSES = NO 66RETURN_LOCAL_ADDRESSES = NO
67 67
68[peerinfo] 68[peerinfo]
69AUTOSTART = NO 69START_ON_DEMAND = NO
70NO_IO = YES 70NO_IO = YES
71 71
72[testing] 72[testing]
diff --git a/contrib/testbed_perfhacks.patch b/contrib/testbed_perfhacks.patch
deleted file mode 100644
index 1ad524a30..000000000
--- a/contrib/testbed_perfhacks.patch
+++ /dev/null
@@ -1,90 +0,0 @@
1Index: src/include/gnunet_constants.h
2===================================================================
3--- src/include/gnunet_constants.h (revision 26030)
4+++ src/include/gnunet_constants.h (working copy)
5@@ -49,7 +49,7 @@
6 * After how long do we consider a connection to a peer dead
7 * if we don't receive messages from the peer?
8 */
9-#define GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5)
10+#define GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 5)
11
12 /**
13 * How long do we delay reading more from a peer after a quota violation?
14@@ -61,7 +61,7 @@
15 * even if we assume that the service commonly does not
16 * respond instantly (DNS, Database, etc.).
17 */
18-#define GNUNET_CONSTANTS_SERVICE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 10)
19+#define GNUNET_CONSTANTS_SERVICE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 10)
20
21 /**
22 * How long do we delay messages to get larger packet sizes (CORKing)?
23Index: src/transport/gnunet-service-transport_neighbours.c
24===================================================================
25--- src/transport/gnunet-service-transport_neighbours.c (revision 26030)
26+++ src/transport/gnunet-service-transport_neighbours.c (working copy)
27@@ -65,7 +65,7 @@
28 * send 3 keepalives in each interval, so 3 messages would need to be
29 * lost in a row for a disconnect).
30 */
31-#define KEEPALIVE_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 100)
32+#define KEEPALIVE_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 100)
33
34 /**
35 * How long are we willing to wait for a response from ATS before timing out?
36Index: src/transport/gnunet-service-transport_validation.c
37===================================================================
38--- src/transport/gnunet-service-transport_validation.c (revision 26030)
39+++ src/transport/gnunet-service-transport_validation.c (working copy)
40@@ -43,7 +43,7 @@
41 * OTOH, we don't want to spend too much time generating PONG signatures,
42 * so they must have some lifetime to reduce our CPU usage.
43 */
44-#define PONG_SIGNATURE_LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 1)
45+#define PONG_SIGNATURE_LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 12)
46
47 /**
48 * After how long do we expire an address in a HELLO that we just
49@@ -58,24 +58,24 @@
50 * we cannot validate (because after this time we can destroy the
51 * validation record).
52 */
53-#define UNVALIDATED_PING_KEEPALIVE GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5)
54+#define UNVALIDATED_PING_KEEPALIVE GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 4)
55
56 /**
57 * How often do we PING an address that we have successfully validated
58 * in the past but are not actively using? Should be (significantly)
59 * smaller than HELLO_ADDRESS_EXPIRATION.
60 */
61-#define VALIDATED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15)
62+#define VALIDATED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 6)
63
64 /**
65 * How often do we PING an address that we are currently using?
66 */
67-#define CONNECTED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 2)
68+#define CONNECTED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 2)
69
70 /**
71 * How much delay is acceptable for sending the PING or PONG?
72 */
73-#define ACCEPTABLE_PING_DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1)
74+#define ACCEPTABLE_PING_DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 1)
75
76 /**
77 * Size of the validation map hashmap.
78@@ -745,9 +745,9 @@
79 void
80 GST_validation_start (unsigned int max_fds)
81 {
82- validation_next = GNUNET_TIME_absolute_get();
83- validation_delay.rel_value = (GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT.rel_value) / max_fds;
84- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Delay between validations: %u ms\n ", validation_delay.rel_value);
85+ validation_next = GNUNET_TIME_absolute_get();
86+ validation_delay.rel_value = GNUNET_TIME_UNIT_MILLISECONDS.rel_value;
87+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Delay between validations: %u ms\n ", validation_delay.rel_value);
88 validation_map = GNUNET_CONTAINER_multihashmap_create (VALIDATION_MAP_SIZE,
89 GNUNET_NO);
90 pnc = GNUNET_PEERINFO_notify (GST_cfg, &process_peerinfo_hello, NULL);
diff --git a/contrib/testbed_setup_pre_ecc_tree.sh b/contrib/testbed_setup_pre_ecc_tree.sh
deleted file mode 100755
index 4c6920144..000000000
--- a/contrib/testbed_setup_pre_ecc_tree.sh
+++ /dev/null
@@ -1,9 +0,0 @@
1#!/bin/sh
2
3svn up -r26032
4svn up -r26167 src/nse/
5svn up -r26079 src/include/gnunet_helper_lib.h src/util/helper.c
6svn up -r26219 src/include/gnunet_protocols.h
7svn up src/include/gnunet_testbed_service.h src/testbed/ src/regex/ src/dht/
8svn up contrib
9svn up configure.ac
diff --git a/contrib/timeout_watchdog.c b/contrib/timeout_watchdog.c
deleted file mode 100644
index fc61a7cc7..000000000
--- a/contrib/timeout_watchdog.c
+++ /dev/null
@@ -1,118 +0,0 @@
1/*
2 This file is part of GNUnet
3 Copyright (C) 2010 GNUnet e.V.
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21/**
22 * @file contrib/timeout_watchdog.c
23 * @brief small tool starting a child process, waiting that it terminates or killing it after a given timeout period
24 * @author Matthias Wachs
25 */
26
27#include <sys/types.h>
28#include <sys/wait.h>
29#include <signal.h>
30#include <stdio.h>
31#include <stdlib.h>
32#include <unistd.h>
33
34static pid_t child;
35
36
37static void
38sigchld_handler (int val)
39{
40 int status = 0;
41 int ret = 0;
42
43 (void) val;
44 waitpid (child, &status, 0);
45 if (WIFEXITED (status) != 0)
46 {
47 ret = WEXITSTATUS (status);
48 printf ("Test process exited with result %u\n", ret);
49 }
50 if (WIFSIGNALED (status) != 0)
51 {
52 ret = WTERMSIG (status);
53 printf ("Test process was signaled %u\n", ret);
54 }
55 exit (ret);
56}
57
58
59static void
60sigint_handler (int val)
61{
62 kill (0, val);
63 exit (val);
64}
65
66
67int
68main (int argc,
69 char *argv[])
70{
71 int timeout = 0;
72 pid_t gpid = 0;
73
74 if (argc < 3)
75 {
76 printf
77 ("arg 1: timeout in sec., arg 2: executable, arg<n> arguments\n");
78 exit (1);
79 }
80
81 timeout = atoi (argv[1]);
82
83 if (timeout == 0)
84 timeout = 600;
85
86/* with getpgid() it does not compile, but getpgrp is the BSD version and working */
87 gpid = getpgrp ();
88
89 signal (SIGCHLD, sigchld_handler);
90 signal (SIGABRT, sigint_handler);
91 signal (SIGFPE, sigint_handler);
92 signal (SIGILL, sigint_handler);
93 signal (SIGINT, sigint_handler);
94 signal (SIGSEGV, sigint_handler);
95 signal (SIGTERM, sigint_handler);
96
97 child = fork ();
98 if (child == 0)
99 {
100 /* int setpgrp(pid_t pid, pid_t pgid); is not working on this machine */
101 //setpgrp (0, pid_t gpid);
102 if (-1 != gpid)
103 setpgid (0, gpid);
104 execvp (argv[2], &argv[2]);
105 exit (1);
106 }
107 if (child > 0)
108 {
109 sleep (timeout);
110 printf ("Child processes were killed after timeout of %u seconds\n",
111 timeout);
112 kill (0, SIGTERM);
113 exit (1);
114 }
115 exit (1);
116}
117
118/* end of timeout_watchdog.c */
diff --git a/contrib/timeout_watchdog_w32.c b/contrib/timeout_watchdog_w32.c
deleted file mode 100644
index fa7cd81fd..000000000
--- a/contrib/timeout_watchdog_w32.c
+++ /dev/null
@@ -1,193 +0,0 @@
1/*
2 This file is part of GNUnet
3 Copyright (C) 2010 GNUnet e.V.
4
5 GNUnet is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published
7 by the Free Software Foundation; either version 3, or (at your
8 option) any later version.
9
10 GNUnet is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with GNUnet; see the file COPYING. If not, write to the
17 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19*/
20
21/**
22 * @file contrib/timeout_watchdog_w32.c
23 * @brief small tool starting a child process, waiting that it terminates or killing it after a given timeout period
24 * @author LRN
25 */
26
27#include <windows.h>
28#include <sys/types.h>
29#include <stdio.h>
30
31int
32main (int argc, char *argv[])
33{
34 int i;
35 DWORD wait_result;
36 wchar_t *commandline;
37 wchar_t **wargv;
38 wchar_t *arg;
39 unsigned int cmdlen;
40 STARTUPINFOW start;
41 PROCESS_INFORMATION proc;
42
43 wchar_t wpath[MAX_PATH + 1];
44
45 wchar_t *pathbuf;
46 DWORD pathbuf_len, alloc_len;
47 wchar_t *ptr;
48 wchar_t *non_const_filename;
49 wchar_t *wcmd;
50 int wargc;
51 int timeout = 0;
52 ssize_t wrote;
53
54 HANDLE job;
55
56 if (argc < 3)
57 {
58 printf
59 ("arg 1: timeout in sec., arg 2: executable, arg<n> arguments\n");
60 exit (1);
61 }
62
63 timeout = atoi (argv[1]);
64
65 if (timeout == 0)
66 timeout = 600;
67
68 commandline = GetCommandLineW ();
69 if (commandline == NULL)
70 {
71 printf ("Failed to get commandline: %lu\n", GetLastError ());
72 exit (2);
73 }
74
75 wargv = CommandLineToArgvW (commandline, &wargc);
76 if (wargv == NULL || wargc <= 1)
77 {
78 printf ("Failed to get parse commandline: %lu\n", GetLastError ());
79 exit (3);
80 }
81
82 job = CreateJobObject (NULL, NULL);
83 if (job == NULL)
84 {
85 printf ("Failed to create a job: %lu\n", GetLastError ());
86 exit (4);
87 }
88
89 pathbuf_len = GetEnvironmentVariableW (L"PATH", (wchar_t *) &pathbuf, 0);
90
91 alloc_len = pathbuf_len + 1;
92
93 pathbuf = malloc (alloc_len * sizeof (wchar_t));
94
95 ptr = pathbuf;
96
97 alloc_len = GetEnvironmentVariableW (L"PATH", ptr, pathbuf_len);
98
99 cmdlen = wcslen (wargv[2]);
100 if (cmdlen < 5 || wcscmp (&wargv[2][cmdlen - 4], L".exe") != 0)
101 {
102 non_const_filename = malloc (sizeof (wchar_t) * (cmdlen + 5));
103 swprintf (non_const_filename, cmdlen + 5, L"%S.exe", wargv[2]);
104 }
105 else
106 {
107 non_const_filename = wcsdup (wargv[2]);
108 }
109
110 /* Check that this is the full path. If it isn't, search. */
111 if (non_const_filename[1] == L':')
112 swprintf (wpath, sizeof (wpath) / sizeof (wchar_t), L"%S", non_const_filename);
113 else if (!SearchPathW
114 (pathbuf, non_const_filename, NULL, sizeof (wpath) / sizeof (wchar_t),
115 wpath, NULL))
116 {
117 printf ("Failed to get find executable: %lu\n", GetLastError ());
118 exit (5);
119 }
120 free (pathbuf);
121 free (non_const_filename);
122
123 cmdlen = wcslen (wpath) + 4;
124 i = 3;
125 while (NULL != (arg = wargv[i++]))
126 cmdlen += wcslen (arg) + 4;
127
128 wcmd = malloc (sizeof (wchar_t) * (cmdlen + 1));
129 wrote = 0;
130 i = 2;
131 while (NULL != (arg = wargv[i++]))
132 {
133 /* This is to escape trailing slash */
134 wchar_t arg_lastchar = arg[wcslen (arg) - 1];
135 if (wrote == 0)
136 {
137 wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\" ", wpath,
138 arg_lastchar == L'\\' ? L"\\" : L"");
139 }
140 else
141 {
142 if (wcschr (arg, L' ') != NULL)
143 wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"\"%S%S\"%S", arg,
144 arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" ");
145 else
146 wrote += swprintf (&wcmd[wrote], cmdlen + 1 - wrote, L"%S%S%S", arg,
147 arg_lastchar == L'\\' ? L"\\" : L"", i == wargc ? L"" : L" ");
148 }
149 }
150
151 LocalFree (wargv);
152
153 memset (&start, 0, sizeof (start));
154 start.cb = sizeof (start);
155
156 if (!CreateProcessW (wpath, wcmd, NULL, NULL, TRUE, CREATE_SUSPENDED,
157 NULL, NULL, &start, &proc))
158 {
159 wprintf (L"Failed to get spawn process `%S' with arguments `%S': %lu\n", wpath, wcmd, GetLastError ());
160 exit (6);
161 }
162
163 AssignProcessToJobObject (job, proc.hProcess);
164
165 ResumeThread (proc.hThread);
166 CloseHandle (proc.hThread);
167
168 free (wcmd);
169
170 wait_result = WaitForSingleObject (proc.hProcess, timeout * 1000);
171 if (wait_result == WAIT_OBJECT_0)
172 {
173 DWORD status;
174 wait_result = GetExitCodeProcess (proc.hProcess, &status);
175 CloseHandle (proc.hProcess);
176 if (wait_result != 0)
177 {
178 printf ("Test process exited with result %lu\n", status);
179 TerminateJobObject (job, status);
180 exit (status);
181 }
182 printf ("Test process exited (failed to obtain exit status)\n");
183 TerminateJobObject (job, 0);
184 exit (0);
185 }
186 printf ("Child processes were killed after timeout of %u seconds\n",
187 timeout);
188 TerminateJobObject (job, 1);
189 CloseHandle (proc.hProcess);
190 exit (1);
191}
192
193/* end of timeout_watchdog_w32.c */
diff --git a/contrib/transpot_delay.patch b/contrib/transpot_delay.patch
deleted file mode 100644
index 9ba806960..000000000
--- a/contrib/transpot_delay.patch
+++ /dev/null
@@ -1,77 +0,0 @@
1Index: src/transport/gnunet-service-transport_neighbours.c
2===================================================================
3--- src/transport/gnunet-service-transport_neighbours.c (revision 27335)
4+++ src/transport/gnunet-service-transport_neighbours.c (working copy)
5@@ -65,7 +65,7 @@
6 * send 3 keepalives in each interval, so 3 messages would need to be
7 * lost in a row for a disconnect).
8 */
9-#define KEEPALIVE_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 100)
10+#define KEEPALIVE_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 100)
11
12 /**
13 * How long are we willing to wait for a response from ATS before timing out?
14Index: src/transport/gnunet-service-transport_validation.c
15===================================================================
16--- src/transport/gnunet-service-transport_validation.c (revision 27335)
17+++ src/transport/gnunet-service-transport_validation.c (working copy)
18@@ -42,7 +42,7 @@
19 * OTOH, we don't want to spend too much time generating PONG signatures,
20 * so they must have some lifetime to reduce our CPU usage.
21 */
22-#define PONG_SIGNATURE_LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 1)
23+#define PONG_SIGNATURE_LIFETIME GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 12)
24
25 /**
26 * After how long do we expire an address in a HELLO that we just
27@@ -57,24 +57,24 @@
28 * we cannot validate (because after this time we can destroy the
29 * validation record).
30 */
31-#define UNVALIDATED_PING_KEEPALIVE GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5)
32+#define UNVALIDATED_PING_KEEPALIVE GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 4)
33
34 /**
35 * How often do we PING an address that we have successfully validated
36 * in the past but are not actively using? Should be (significantly)
37 * smaller than HELLO_ADDRESS_EXPIRATION.
38 */
39-#define VALIDATED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 15)
40+#define VALIDATED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_HOURS, 6)
41
42 /**
43 * How often do we PING an address that we are currently using?
44 */
45-#define CONNECTED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 2)
46+#define CONNECTED_PING_FREQUENCY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 2)
47
48 /**
49 * How much delay is acceptable for sending the PING or PONG?
50 */
51-#define ACCEPTABLE_PING_DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1)
52+#define ACCEPTABLE_PING_DELAY GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 1)
53
54 /**
55 * Size of the validation map hashmap.
56Index: src/include/gnunet_constants.h
57===================================================================
58--- src/include/gnunet_constants.h (revision 27335)
59+++ src/include/gnunet_constants.h (working copy)
60@@ -49,7 +49,7 @@
61 * After how long do we consider a connection to a peer dead
62 * if we don't receive messages from the peer?
63 */
64-#define GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5)
65+#define GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 5)
66
67 /**
68 * How long do we delay reading more from a peer after a quota violation?
69@@ -61,7 +61,7 @@
70 * even if we assume that the service commonly does not
71 * respond instantly (DNS, Database, etc.).
72 */
73-#define GNUNET_CONSTANTS_SERVICE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 10)
74+#define GNUNET_CONSTANTS_SERVICE_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_YEARS, 10)
75
76 /**
77 * How long do we delay messages to get larger packet sizes (CORKing)?
diff --git a/contrib/log.php b/contrib/web/log.php
index b2ca9ed6c..b2ca9ed6c 100644
--- a/contrib/log.php
+++ b/contrib/web/log.php