Compare commits

..

13 Commits

Author SHA1 Message Date
3f8e076a3e aaa 2019-11-14 17:26:44 +01:00
8451b54cd1 the final countdooooown dududu du dududu dudu 2019-11-14 17:16:39 +01:00
dd17a0394a add .keep to build/ 2019-11-14 16:50:57 +01:00
be78e22b84 rendu 2019-11-14 13:14:07 +01:00
e0adc1e19e j'ai faim putaaaaaain 2019-11-14 12:51:11 +01:00
7a8af5aee4 hou 2019-11-13 18:03:32 +01:00
0c97dac0d1 maintenant à deux voies! 2019-11-13 17:33:17 +01:00
8b350efed2 suppression de `-Werror' des drapeaux de compilation 2019-11-13 13:11:16 +01:00
3a6c3a9753 correction d’une erreur dans le makefile 2019-11-13 13:04:18 +01:00
8e0502d9e9 suppression des binaires du dépo (oups) 2019-11-13 12:55:02 +01:00
33cdb682d6 non 2019-11-13 11:10:05 +01:00
c5108dcccf coucou 2019-11-06 07:36:00 +01:00
32d6d9f74c lol sa coupe je passe ds un tunnel 2019-10-25 23:53:43 +02:00
28 changed files with 1113 additions and 152 deletions

17
LISEZ-MOI.txt Normal file
View File

@ -0,0 +1,17 @@
Le code est situé dans partage/src et partage/test. Un simple `make'
depuis partage/ suffit à générer tous les exécutables.
VM1-6 et VM3-6 sont configurée pour démarrer sans interface graphique.
On peut sy connecter en exécutant `vagrant ssh' depuis leurs
répertoires respectifs, ou bien décommenter `vb.gui = true' de leur
Vagrantfile.
On configure les machines en exécutant /mnt/partage/config.sh en tant
que superutilisateur pour chaque machine, salt nous ayant causé trop
de problèmes.
partage/configure-tun.sh contient le script appelé par tunnel64d pour
configurer linterface.
partage/config.{vm1-6,vm3-6} contient les fichiers de configuration à
passer en option à tunnel64d.

2
VM1-6/Vagrantfile vendored
View File

@ -25,7 +25,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider "virtualbox" do |vb|
# Commenter pour s'exécuter sans GUI
vb.gui = true
# vb.gui = true
vb.customize ["modifyvm", :id, "--memory", "768"]
end

2
VM3-6/Vagrantfile vendored
View File

@ -25,7 +25,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider "virtualbox" do |vb|
# Commenter pour s'exécuter sans GUI
vb.gui = true
# vb.gui = true
vb.customize ["modifyvm", :id, "--memory", "768"]
end

View File

@ -1,11 +0,0 @@
2.2.3. La capture est vide.
2.2.4. On voit cette fois les requêtes echo qui naboutissent pas.
2.2.5. Dans le premier cas on ne voit pas les requêtes car cest elles
sont vers notre propre adresse ip et le noyau traite et nous
renvoie le paquet sans le faire passer par linterface.
Dans le second cas on les voit car ils passent par notre
interface mais ils naboutissent pas car il ny a personne qui
à cette adresse/pas de route pour y aller.

BIN
compte_rendu_projet.odt Normal file

Binary file not shown.

BIN
compte_rendu_projet.pdf Normal file

Binary file not shown.

View File

@ -1,23 +1,41 @@
CC := gcc -Wall -Wextra -Wpedantic -Werror -Iinclude -std=c11 -g
CC := gcc -Wall -Wextra -Wpedantic -Iinclude -Isrc -g -std=c11
# pkg-config
# LIBS :=
# LDFLAGS := $(LDFLAGS) $(shell pkg-config --libs $(LIBS))
# CFLAGS := $(CFLAGS) $(shell pkg-config --cflags $(LIBS))
CFLAGS := $(CFLAGS) -D_POSIX_C_SOURCE=200809L
OUT := test-ext-in test-ext-out test-iftun tunnel64d
SRC := $(wildcard src/*.c)
TEST := $(wildcard test/*.c)
OBJS := $(patsubst src/%.c,build/%.o,$(SRC))
TEST_OBJS := $(patsubst test/%.c,build/test-%.o,$(TEST))
DEPS := $(wildcard build/*.d)
all: build test-iftun
.PHONY: all
all: test-ext-in test-ext-out test-iftun tunnel64d
build:
-mkdir build
$(OUT):
$(CC) $(LDFLAGS) -o $@ $^
test-iftun: build/test-iftun.o build/iftun.a
$(CC) $(CFLAGS) $^ -o $@
test-ext-in: build/test-ext-in.o build/extremite.o build/iftun.o
test-ext-out: build/test-ext-out.o build/extremite.o build/iftun.o
test-iftun: build/test-iftun.o build/iftun.o
build/test-iftun.o: src/test-iftun.c src/iftun.h
$(CC) $(CFLAGS) $< -c -o $@
tunnel64d: build/tunnel64d.o build/extremite.o build/iftun.o
build/iftun.a: build/iftun.o
ar rcs $@ $<
-include $(DEPS)
build/test-%.o: test/%.c
$(CC) $(CFLAGS) -MP -MD $< -c -o $@
build/%.o: src/%.c
$(CC) $(CFLAGS) -MP -MD $< -c -o $@
build/iftun.o: src/iftun.c src/iftun.h
$(CC) $(CFLAGS) $< -c -o $@
clean:
-rm -f $(BUILD_DIR)/*.o
-rm -f $(BUILD_DIR)/*.d
-rm -f build/*.o
-rm -f build/*.d
-rm -f $(OUT)

0
partage/build/.keep Normal file
View File

23
partage/capture.txt Normal file
View File

@ -0,0 +1,23 @@
No. Time Source Destination Protocol Length Info
1 0.000000000 172.16.2.1 172.16.2.10 ICMP 84 Echo (ping) request id=0x0529, seq=1/256, ttl=64 (no response found!)
Frame 1: 84 bytes on wire (672 bits), 84 bytes captured (672 bits) on interface 0
Raw packet data
Internet Protocol Version 4, Src: 172.16.2.1 (172.16.2.1), Dst: 172.16.2.10 (172.16.2.10)
Internet Control Message Protocol
No. Time Source Destination Protocol Length Info
2 1.009432000 172.16.2.1 172.16.2.10 ICMP 84 Echo (ping) request id=0x0529, seq=2/512, ttl=64 (no response found!)
Frame 2: 84 bytes on wire (672 bits), 84 bytes captured (672 bits) on interface 0
Raw packet data
Internet Protocol Version 4, Src: 172.16.2.1 (172.16.2.1), Dst: 172.16.2.10 (172.16.2.10)
Internet Control Message Protocol
No. Time Source Destination Protocol Length Info
3 2.016974000 172.16.2.1 172.16.2.10 ICMP 84 Echo (ping) request id=0x0529, seq=3/768, ttl=64 (no response found!)
Frame 3: 84 bytes on wire (672 bits), 84 bytes captured (672 bits) on interface 0
Raw packet data
Internet Protocol Version 4, Src: 172.16.2.1 (172.16.2.1), Dst: 172.16.2.10 (172.16.2.10)
Internet Control Message Protocol

View File

@ -1,10 +1,10 @@
#!/bin/sh
if [ $(id -u) != 0 ]; then
setxkbmap fr bepo -option ctrl:nocaps
xset r rate 200 30
exit 0
fi
#if [ $(id -u) != 0 ]; then
# setxkbmap fr bepo -option ctrl:nocaps
# xset r rate 200 30
# exit 0
#fi
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
@ -20,8 +20,8 @@ case $(hostname) in
vm1)
ip address add 172.16.2.131/28 dev eth1
ip address add 172.16.2.151/28 dev eth2
ip route add $lan2 via 172.16.2.132
ip route add $lan4 via 172.16.2.132
ip route add $lan2 via 172.16.2.156 #132
ip route add $lan4 via 172.16.2.156 #132
;;
vm2)
ip address add 172.16.2.132/28 dev eth1
@ -32,28 +32,30 @@ case $(hostname) in
vm3)
ip address add 172.16.2.163/28 dev eth1
ip address add 172.16.2.183/28 dev eth2
ip route add $lan1 via 172.16.2.162
ip route add $lan3 via 172.16.2.162
ip route add $lan1 via 172.16.2.186 #162
ip route add $lan3 via 172.16.2.186 #162
;;
vm1-6)
ip address add 172.16.2.156/28 dev eth1
ip address add fc00:1234:1::16/64 dev eth2
ip route add $lan2_6 via fc00:1234:1::26
ip route add $lan1 via 172.16.2.151
ip route add $lan2 via 172.16.2.151
ip route add $lan4 via 172.16.2.151
#ip route add $lan1 via 172.16.2.151
#ip route add $lan2 via 172.16.2.151
#ip route add $lan4 via 172.16.2.151
#ip route add $lan4 dev tun0
;;
vm2-6)
ip address add fc00:1234:1::26/64 dev eth1
ip address add fc00:1234:2::26/64 dev eth2
;;
vm3-6)
ip address add fc00:1234:2::26/64 dev eth1
ip address add fc00:1234:2::36/64 dev eth1
ip address add 172.16.2.186/28 dev eth2
ip route add $lan1_6 via fc00:1234:2::26
ip route add $lan1 via 172.16.2.183
ip route add $lan2 via 172.16.2.183
ip route add $lan3 via 172.16.2.183
#ip route add $lan1 via 172.16.2.183
#ip route add $lan2 via 172.16.2.183
#ip route add $lan3 via 172.16.2.183
#ip route add $lan3 dev tun0
;;
*)
echo "Nom dhôte non reconu."

9
partage/config.vm1-6 Normal file
View File

@ -0,0 +1,9 @@
# interface tun
tun=tun0
# adresse locale
inip=172.16.2.1/28
inport=123
options=
# adresse distante
outip=fc00:1234:2::36
outport=123

9
partage/config.vm3-6 Normal file
View File

@ -0,0 +1,9 @@
# interface tun
tun=tun0
# adresse locale
inip=172.16.2.10/28
inport=123
options=
# adresse distante
outip=fc00:1234:1::16
outport=123

View File

@ -1,3 +1,11 @@
#!/bin/sh
ip l set tun0 up
ip a a 172.16.2.1/28 dev tun0
ip l set "$1" up
ip a a "$2" dev tun0
case $(hostname) in
vm1-6)
ip r add 172.16.2.176/28 dev tun0
;;
vm3-6)
ip r add 172.16.2.144/28 dev tun0
;;
esac

125
partage/ip_a.txt Normal file
View File

@ -0,0 +1,125 @@
vm1
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:f8:33:b7 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef8:33b7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:f2:3f:76 brd ff:ff:ff:ff:ff:ff
inet 172.16.2.131/28 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef2:3f76/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:55:f9:e8 brd ff:ff:ff:ff:ff:ff
inet 172.16.2.151/28 scope global eth2
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe55:f9e8/64 scope link
valid_lft forever preferred_lft forever
vm3
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:f8:33:b7 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef8:33b7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:1a:58:5d brd ff:ff:ff:ff:ff:ff
inet 172.16.2.163/28 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe1a:585d/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:9e:2f:c0 brd ff:ff:ff:ff:ff:ff
inet 172.16.2.183/28 scope global eth2
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe9e:2fc0/64 scope link
valid_lft forever preferred_lft forever
vm1-6
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:f8:33:b7 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef8:33b7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:1c:5a:8f brd ff:ff:ff:ff:ff:ff
inet 172.16.2.156/28 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe1c:5a8f/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:03:01:a9 brd ff:ff:ff:ff:ff:ff
inet6 fc00:1234:1::16/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe03:1a9/64 scope link
valid_lft forever preferred_lft forever
vm2-6
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:f8:33:b7 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef8:33b7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:95:de:c7 brd ff:ff:ff:ff:ff:ff
inet6 fc00:1234:1::26/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe95:dec7/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:60:11:c6 brd ff:ff:ff:ff:ff:ff
inet6 fc00:1234:2::26/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fe60:11c6/64 scope link
valid_lft forever preferred_lft forever
vm3-6
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:f8:33:b7 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef8:33b7/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:c8:7b:cc brd ff:ff:ff:ff:ff:ff
inet6 fc00:1234:2::36/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fec8:7bcc/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:cb:8c:38 brd ff:ff:ff:ff:ff:ff
inet 172.16.2.186/28 scope global eth2
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fecb:8c38/64 scope link
valid_lft forever preferred_lft forever

25
partage/ip_r.txt Normal file
View File

@ -0,0 +1,25 @@
vm1
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
172.16.2.128/28 dev eth1 proto kernel scope link src 172.16.2.131
172.16.2.144/28 dev eth2 proto kernel scope link src 172.16.2.151
172.16.2.160/28 via 172.16.2.156 dev eth2
172.16.2.176/28 via 172.16.2.156 dev eth2
vm3
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
172.16.2.128/28 via 172.16.2.186 dev eth2
172.16.2.144/28 via 172.16.2.186 dev eth2
172.16.2.160/28 dev eth1 proto kernel scope link src 172.16.2.163
172.16.2.176/28 dev eth2 proto kernel scope link src 172.16.2.183
vm1-6
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
172.16.2.144/28 dev eth1 proto kernel scope link src 172.16.2.156
vm2-6
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
vm3-6
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
172.16.2.176/28 dev eth2 proto kernel scope link src 172.16.2.186

237
partage/src/extremite.c Normal file
View File

@ -0,0 +1,237 @@
#include "extremite.h"
#include <arpa/inet.h>
#include <fcntl.h>
#include <linux/if.h>
#include <linux/if_tun.h>
#include <netdb.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/select.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#define BUFSIZE 1024
static int setup_out(int port) {
/* Create the socket. */
int server = socket(AF_INET6, SOCK_STREAM, 0);
if (server == -1) {
perror("socket");
exit(1);
}
/* Enable socket re-use, makes debugging easier. */
setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &(int) {1}, sizeof (int));
/* Bind to any local IPv6 address on port PORT. */
struct sockaddr_in6 server_addr = {0};
server_addr.sin6_family = AF_INET6;
server_addr.sin6_port = htons(port);
server_addr.sin6_addr = in6addr_any;
if (bind(server, (struct sockaddr *) &server_addr, sizeof server_addr) == -1) {
perror("bind");
exit(1);
}
/* Pretty print the matched address. */
char server_addr_pretty[INET6_ADDRSTRLEN] = "";
inet_ntop(AF_INET6, &(server_addr.sin6_addr), server_addr_pretty, sizeof server_addr_pretty);
printf("Écoute sur : %s\n", server_addr_pretty);
if (listen(server, 1) == -1) {
perror("listen");
exit(1);
}
return server;
}
static int accept_client(int server) {
/* Wait for a connection attempt. */
struct sockaddr_in6 client_addr;
socklen_t client_addr_len;
puts("Attente dun client.");
int client = accept(server, (struct sockaddr *) &client_addr, &client_addr_len);
/* We only serve one peer, no need to keep the server socket
* open. */
close(server);
/* Pretty print the peers address */
char client_addr_pretty[INET6_ADDRSTRLEN] = "";
inet_ntop(AF_INET6, &(client_addr.sin6_addr), client_addr_pretty, sizeof client_addr_pretty);
printf("Client connecté : %s\n", client_addr_pretty);
return client;
}
int ext_out(int port) {
int server = setup_out(port);
return accept_client(server);
}
static int setup_in() {
int s = socket(AF_INET6, SOCK_STREAM, 0);
if (s == -1) {
perror("socket");
exit(1);
}
return s;
}
static int try_connect(int s, const char addr[], int port) {
struct sockaddr_in6 sa = {0};
sa.sin6_family = AF_INET6;
sa.sin6_port = htons(port);
inet_pton(AF_INET6, addr, &sa.sin6_addr);
puts("Connexion.");
if (connect(s, (struct sockaddr *) &sa, sizeof sa) == -1) {
perror("connect");
return 0;
}
char addr_pretty[INET6_ADDRSTRLEN] = "";
inet_ntop(AF_INET6, &(sa.sin6_addr), addr_pretty, sizeof addr_pretty);
printf("Connecté à : %s\n", addr_pretty);
return 1;
}
int ext_in(const char addr[], int port) {
int s = setup_in();
/* Attempt a connection every second (waiting for the server to
* start). */
while (!try_connect(s, addr, port)) {
sleep(1);
}
return s;
}
/* On établie ici une connexion bidirectionelle en se connectant à un
* serveur distant ET en écoutant nous-même sur un port local en
* attente dun client. Cela nous donne donc deux connexions
* matérialisées par deux socket, lune qui est utilisée en lecture et
* lautre en écriture.
*
* Il pourrait suffir davoir une extremité qui écoute, et lautre qui
* se connecte, établissant ainsi une seule connexion quon
* utiliserait en lecture/écriture, mais cela pose le problème de
* savoir qui écoute et qui se connecte.
*
* De plus, si les deux tentent en parallèle de se connecter OU
* daccepter une connexion (mais de ne pas attendre que les deux
* conditions soient vraies, et dutiliser une seule socket en
* lecture/écriture, la première disponible), se posent tout un tas de
* problèmes de synchronisation si les deux extrémités du tunnel
* essaient de se connecter en même temps par exemple.
*/
void ext_bidir(const char addr[], int port, int local_port, int local_r, int local_w) {
/* First, lets establish a full-duplex connection. */
int server = setup_out(local_port);
int peer_r; /* Future remote client socket to read from. */
int peer_w = setup_in(addr, port);
int client_connected = 0;
int server_connected = 0;
struct timeval one_sec = {.tv_sec=1, .tv_usec=0};
struct timeval *timeout = &one_sec;
fd_set set;
while (!(client_connected && server_connected)) {
if (!client_connected) {
FD_ZERO(&set);
FD_SET(server, &set);
}
select(server + 1, &set, NULL, NULL, timeout);
if (FD_ISSET(server, &set)) {
/* The server socket is readable, a peer is trying to
* connect. */
fputs("acceptation\n", stderr);
peer_r = accept_client(server);
FD_CLR(server, &set);
client_connected = 1;
fputs("Client connecté.\n", stderr);
}
else {
/* Attempt to connect every second. */
if (try_connect(peer_w, addr, port)) {
timeout = NULL;
server_connected = 1;
fputs("Connecté au serveur.\n", stderr);
}
else {
timeout->tv_sec = 1;
timeout->tv_usec = 0;
}
}
}
fputs("Connexion bidirectionelle établie.\n", stderr);
fd_set rfd;
int nfds = peer_r > local_r ? peer_r : local_r;
nfds++;
char in_buf[1024];
char out_buf[1024];
while (1) {
FD_ZERO(&rfd);
FD_SET(peer_r, &rfd);
FD_SET(local_r, &rfd);
select(nfds, &rfd, NULL, NULL, NULL);
if (FD_ISSET(peer_r, &rfd)) {
/* Ready to read from client. */
ssize_t n = read(peer_r, in_buf, sizeof in_buf);
if (n < 0) {
perror("read (from out)");
exit(1);
}
if (write(local_w, in_buf, n) < 0) {
perror("write (to local_out)");
exit(1);
}
}
if (FD_ISSET(local_r, &rfd)) {
/* Ready to read from tun dev. */
ssize_t n = read(local_r, out_buf, sizeof out_buf);
if (n < 0) {
perror("read (from local_in)");
exit(1);
}
if (write(peer_w, out_buf, n) < 0) {
perror("write (to in)");
exit(1);
}
}
}
}

19
partage/src/extremite.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef EXTREMITE_H
#define EXTREMITE_H
/* Sets up a tunnel exit on the specified PORT, returns a readable fd
* representing it. */
int ext_out(int port);
/* Sets up a tunnel entrance connected to the exit at ADDR and PORT,
* returns a writable fd representing it. */
int ext_in(const char addr[], int port);
/* Establishes a full-duplex tunnel listening on LOCAL_PORT and
* connected to ADDR and PORT. Copies data from local_r to the tunnel,
* and data from the tunnel to local_w. */
void ext_bidir(const char addr[], int port, int local_port, int local_r, int local_w);
#endif

View File

@ -17,27 +17,27 @@
#include <linux/if_tun.h>
int tun_alloc(char *dev) {
int tun_alloc(const char *dev) {
int fd = open("/dev/net/tun", O_RDWR);
if(fd < 0 ) {
perror("alloc tun");
if(fd < 0) {
perror("open");
exit(1);
}
struct ifreq ifr = {.ifr_flags = IFF_TUN};
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
struct ifreq ifr = {
.ifr_flags = IFF_TUN | IFF_NO_PI
};
if (*dev) {
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
}
int err = ioctl(fd, TUNSETIFF, (void *) &ifr);
if(err < 0 ){
close(fd);
return err;
if(err < 0){
perror("ioctl");
exit(1);
}
strcpy(dev, ifr.ifr_name);
return fd;
}
@ -47,7 +47,15 @@ int copy(int src, int dest) {
int n = 0;
while (1) {
n = read(src, buf, 1024);
write(dest, buf, n);
n = read(src, buf, sizeof buf);
if (n < 0) {
perror("copy");
exit(1);
}
n = write(dest, buf, n);
if (n < 0) {
perror("copy");
exit(1);
}
}
}

View File

@ -2,7 +2,7 @@
#define IFTUN_H
int tun_alloc(char *dev);
int tun_alloc(const char *dev);
int copy(int src, int dest);

View File

@ -1,16 +0,0 @@
#include "iftun.h"
#include <stdio.h>
int main(int argc, char *argv[argc]) {
if (argc != 2) {
fprintf(stderr, "Utilisation : %s interface\n", argv[0]);
return 1;
}
int tun = tun_alloc(argv[1]);
fprintf(stderr, "Configurez linterface puis appuyez sur une touche.\n");
getchar();
copy(tun, 1);
return 0;
}

View File

@ -1,79 +0,0 @@
#define _POSIX_C_SOURCE 200112L
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <string.h>
#include <netdb.h>
#include <unistd.h>
#include <fcntl.h>
#include <linux/if.h>
#include <linux/if_tun.h>
void ext_out() {
struct addrinfo hints = {
.ai_family = AF_UNSPEC,
.ai_socktype = SOCK_DGRAM,
.ai_flags = AI_PASSIVE,
.ai_protocol = 0,
.ai_canonname = NULL,
.ai_addr = NULL,
.ai_next = NULL,
};
struct addrinfo *results;
int s = getaddrinfo(NULL, "123", &hints, &results);
if (s != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(s));
exit(1);
}
struct addrinfo *rp;
int sfd;
for (rp = results; rp != NULL; rp = rp->ai_next) {
sfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
if (sfd == -1)
continue;
if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == 0)
break;
close(sfd);
}
if (rp == NULL) {
fprintf(stderr, "Could not bind\n");
exit(EXIT_FAILURE);
}
freeaddrinfo(results);
struct sockaddr_storage peer_addr;
socklen_t peer_addr_len;
char buf[1024];
while (1) {
peer_addr_len = sizeof (struct sockaddr_storage);
ssize_t n = recvfrom(sfd, buf, sizeof buf, 0,
(struct sockaddr *) &peer_addr, &peer_addr_len);
if (n == -1) {
perror("recvfrom: ");
exit(1);
}
write(1, buf, n);
}
}
int main(int argc, char *argv[argc]){
int tun = tun_alloc(argv[1]);
/* printf("Configure %s puis appuie sur un touche…\n", argv[1]); */
/* getchar(); */
/* copy(tun, 1); */
/* ext_out(); */
return 0;
}

74
partage/src/tunnel64d.c Normal file
View File

@ -0,0 +1,74 @@
#include "iftun.h"
#include "extremite.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/types.h>
char *dev;
char *inip;
char *outip;
int inport;
int outport;
int main(int argc, char *argv[argc]) {
if (argc != 2) {
fprintf(stderr, "Utilisation : %s fichier_conf\n", argv[0]);
}
if (getuid() != 0) {
fprintf(stderr, "%s doit être lancé en tant que superutilisateur.\n", argv[0]);
return 1;
}
FILE *f = fopen(argv[1], "r");
char *line = NULL;
size_t n = 0;
ssize_t len;
while ((len = getline(&line, &n, f)) > 0) {
char *pair = strtok(line, "#");
char *key = strtok(pair, "=");
char *val = strtok(NULL, "=");
if (val != NULL) {
line[len-1] = '\0';
printf("%s=%s\n", key, val);
if (strcmp(key, "tun") == 0) {
dev = malloc(strlen(val));
strcpy(dev, val);
}
else if (strcmp(key, "inip") == 0) {
inip = malloc(strlen(val) + 1);
strcpy(inip, val);
}
else if (strcmp(key, "outip") == 0) {
outip = malloc(strlen(val) + 1);
strcpy(outip, val);
}
else if (strcmp(key, "inport") == 0) {
inport = atoi(val);
}
else if (strcmp(key, "outport") == 0) {
outport = atoi(val);
}
}
}
if (line) free(line);
fclose(f);
int tun = tun_alloc(dev);
char full_cmd[1024] = "";
sprintf(full_cmd, "./configure-tun.sh %s %s", dev, inip);
if (system(full_cmd) != 0) {
fprintf(stderr, "Erreur lors de lexécution du script de configuration de linterface.\n");
return 1;
}
ext_bidir(outip, outport, inport, tun, tun);
return 0;
}

34
partage/test/ext-in.c Normal file
View File

@ -0,0 +1,34 @@
#include "extremite.h"
#include "iftun.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char *argv[argc]) {
int port = 123;
if (argc == 3) {
port = atoi(argv[2]);
}
else if (argc != 2) {
fprintf(stderr, "Utilisation : %s adresse [port]\n", argv[0]);
return 1;
}
if (getuid() != 0) {
fprintf(stderr, "%s doit être lancé en tant que superutilisateur.\n", argv[0]);
return 1;
}
int tun = tun_alloc("tun0");
if (system("./configure-tun.sh tun0 172.16.2.1/28") != 0) {
fprintf(stderr, "Erreur lors de lexécution du script de configuration de linterface.\n");
return 1;
}
int ext = ext_in(argv[1], port);
copy(tun, ext);
return 0;
}

34
partage/test/ext-out.c Normal file
View File

@ -0,0 +1,34 @@
#include "extremite.h"
#include "iftun.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char *argv[argc]) {
int port = 123;
if (argc == 2) {
port = atoi(argv[1]);
}
else if (argc != 1) {
fprintf(stderr, "Utilisation : %s [port]\n", argv[0]);
return 1;
}
if (getuid() != 0) {
fprintf(stderr, "%s doit être lancé en tant que superutilisateur.\n", argv[0]);
return 1;
}
int tun = tun_alloc("tun0");
if (system("./configure-tun.sh tun0 172.16.2.10/28") != 0) {
fprintf(stderr, "Erreur lors de lexécution du script de configuration de linterface.\n");
return 1;
}
int ext = ext_out(port);
copy(ext, tun);
return 0;
}

25
partage/test/iftun.c Normal file
View File

@ -0,0 +1,25 @@
#include "iftun.h"
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[argc]) {
if (argc != 2) {
fprintf(stderr, "Utilisation : %s interface\n", argv[0]);
return 1;
}
if (getuid() != 0) {
fprintf(stderr, "%s doit être lancé en tant que superutilisateur.\n", argv[0]);
return 1;
}
int tun = tun_alloc(argv[1]);
fprintf(stderr, "Configurez linterface puis appuyez sur <Entrée>... ");
fflush(stderr);
getchar();
fprintf(stderr, "Démarrage.");
copy(tun, 1);
return 0;
}

BIN
schema-gimp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 807 KiB

BIN
schema-gimp.xcf Normal file

Binary file not shown.

400
tunneld.svg Normal file
View File

@ -0,0 +1,400 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="849.13904" height="316.76263" id="svg2985" version="1.1" inkscape:version="0.48.4 r9939" sodipodi:docname="tunneld.svg" inkscape:export-filename="/home/godard/ens/reseaux/tp/projet/tunneld.png" inkscape:export-xdpi="90.067444" inkscape:export-ydpi="90.067444">
<defs id="defs2987">
<filter height="2.3981147" y="-0.69905728" width="1.1334563" x="-0.066728197" id="filter11642" inkscape:collect="always" color-interpolation-filters="sRGB">
<feGaussianBlur id="feGaussianBlur11644" stdDeviation="0.76459391" inkscape:collect="always"/>
</filter>
<linearGradient y2="69.836746" x2="327.39044" y1="75.493599" x1="329.86533" gradientTransform="translate(-294.97889,-38.39488)" gradientUnits="userSpaceOnUse" id="linearGradient9088" xlink:href="#linearGradient4783" inkscape:collect="always"/>
<linearGradient id="linearGradient4783">
<stop style="stop-color:#000000;stop-opacity:1" offset="0" id="stop4785"/>
<stop style="stop-color:#000000;stop-opacity:0;" offset="1" id="stop4787"/>
</linearGradient>
<filter id="filter4777" inkscape:collect="always" color-interpolation-filters="sRGB">
<feGaussianBlur id="feGaussianBlur4779" stdDeviation="0.39456135" inkscape:collect="always"/>
</filter>
<linearGradient y2="67.36187" x2="327.47882" y1="74.43293" x1="328.62787" gradientTransform="translate(-295.12721,-37.918469)" gradientUnits="userSpaceOnUse" id="linearGradient9090" xlink:href="#linearGradient3847" inkscape:collect="always"/>
<linearGradient id="linearGradient3847" inkscape:collect="always">
<stop id="stop3849" offset="0" style="stop-color:#babdb6;stop-opacity:1;"/>
<stop id="stop3851" offset="1" style="stop-color:#babdb6;stop-opacity:0;"/>
</linearGradient>
<filter inkscape:collect="always" id="filter6655" x="-0.060939956" width="1.1218799" y="-0.66942996" height="2.3388598" color-interpolation-filters="sRGB">
<feGaussianBlur inkscape:collect="always" stdDeviation="1.1680158" id="feGaussianBlur6657"/>
</filter>
<linearGradient y2="93.379616" x2="320.28125" y1="86.913208" x1="320.28125" gradientUnits="userSpaceOnUse" id="linearGradient8955" xlink:href="#linearGradient4693" inkscape:collect="always"/>
<linearGradient id="linearGradient4693">
<stop style="stop-color:#555753;stop-opacity:1" offset="0" id="stop4695"/>
<stop id="stop4701" offset="0.30146292" style="stop-color:#babdb6;stop-opacity:1"/>
<stop style="stop-color:#eeeeec;stop-opacity:1" offset="0.48027775" id="stop3408"/>
<stop id="stop4699" offset="0.64304489" style="stop-color:#ffffff;stop-opacity:1"/>
<stop style="stop-color:#555753;stop-opacity:1" offset="1" id="stop4697"/>
</linearGradient>
<linearGradient y2="93.728882" x2="325.8125" y1="86.031227" x1="325.8125" gradientUnits="userSpaceOnUse" id="linearGradient8957" xlink:href="#linearGradient2702" inkscape:collect="always"/>
<linearGradient id="linearGradient2702">
<stop style="stop-color:#555753;stop-opacity:1" offset="0" id="stop2704"/>
<stop id="stop2706" offset="0.64084536" style="stop-color:#babdb6;stop-opacity:1"/>
<stop style="stop-color:#888a85;stop-opacity:1" offset="0.85106832" id="stop2708"/>
<stop style="stop-color:#555753;stop-opacity:1" offset="1" id="stop2710"/>
</linearGradient>
<radialGradient r="8.4375" fy="91.50647" fx="320.03125" cy="91.50647" cx="320.03125" gradientTransform="matrix(1.852385,2.7827307e-8,0,0.3925925,-272.78985,54.512731)" gradientUnits="userSpaceOnUse" id="radialGradient8959" xlink:href="#linearGradient4713" inkscape:collect="always"/>
<linearGradient id="linearGradient4713" inkscape:collect="always">
<stop id="stop4715" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop4717" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient y2="93.5" x2="328.25" y1="93.5" x1="311.625" gradientUnits="userSpaceOnUse" id="linearGradient8961" xlink:href="#linearGradient3396" inkscape:collect="always"/>
<linearGradient id="linearGradient3396">
<stop id="stop3398" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop style="stop-color:#babdb6;stop-opacity:1" offset="0.14204781" id="stop3404"/>
<stop id="stop3406" offset="0.88917607" style="stop-color:#d3d7cf;stop-opacity:1"/>
<stop id="stop3400" offset="1" style="stop-color:#ffffff;stop-opacity:1"/>
</linearGradient>
<radialGradient r="23" fy="61.654819" fx="314.30969" cy="61.654819" cx="314.30969" gradientTransform="matrix(1.1263461,4.0658759,-1.0745854,0.278502,23.033648,-1233.4504)" gradientUnits="userSpaceOnUse" id="radialGradient8963" xlink:href="#linearGradient4654" inkscape:collect="always"/>
<linearGradient id="linearGradient4654" inkscape:collect="always">
<stop id="stop4656" offset="0" style="stop-color:#eeeeec;stop-opacity:1"/>
<stop id="stop4658" offset="1" style="stop-color:#babdb6;stop-opacity:1"/>
</linearGradient>
<linearGradient y2="54.01783" x2="293" y1="97" x1="333.25" gradientTransform="matrix(1,0,0,0.9672415,0,3.7680911)" gradientUnits="userSpaceOnUse" id="linearGradient8965" xlink:href="#linearGradient5538" inkscape:collect="always"/>
<linearGradient inkscape:collect="always" id="linearGradient5538">
<stop style="stop-color:#555753;stop-opacity:1;" offset="0" id="stop5540"/>
<stop style="stop-color:#babdb6;stop-opacity:1" offset="1" id="stop5542"/>
</linearGradient>
<radialGradient r="22.000002" fy="75.283829" fx="314.36905" cy="75.283829" cx="314.36905" gradientTransform="matrix(-3.0899695,-1.0228037,0.214115,-0.6015075,1278.6302,433.73934)" gradientUnits="userSpaceOnUse" id="radialGradient8967" xlink:href="#linearGradient4646" inkscape:collect="always"/>
<linearGradient id="linearGradient4646" inkscape:collect="always">
<stop id="stop4648" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop4650" offset="1" style="stop-color:#ffffff;stop-opacity:0.1"/>
</linearGradient>
<radialGradient r="19.00016" fy="37.921711" fx="24.006104" cy="37.921711" cx="24.006104" gradientTransform="matrix(2.5089911,0,0,1.0747802,259.76908,42.963911)" gradientUnits="userSpaceOnUse" id="radialGradient8969" xlink:href="#linearGradient2699" inkscape:collect="always"/>
<linearGradient id="linearGradient2699">
<stop id="stop2701" offset="0" style="stop-color:#97bf60;stop-opacity:1"/>
<stop id="stop2703" offset="1" style="stop-color:#51751e;stop-opacity:1"/>
</linearGradient>
<radialGradient r="12.5" fy="58" fx="327.5" cy="58" cx="327.5" gradientTransform="matrix(6.4215263,5.8880003e-8,-1.5792387e-8,1.4577864,-1775.5499,-25.551629)" gradientUnits="userSpaceOnUse" id="radialGradient8971" xlink:href="#linearGradient4788" inkscape:collect="always"/>
<linearGradient id="linearGradient4788" inkscape:collect="always">
<stop id="stop4790" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop4792" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient y2="202.5" x2="178" y1="44.5" x1="88" gradientTransform="matrix(0.1923079,0,0,0.1854838,291.53839,45.645162)" gradientUnits="userSpaceOnUse" id="linearGradient8973" xlink:href="#linearGradient5687" inkscape:collect="always"/>
<linearGradient id="linearGradient5687" inkscape:collect="always">
<stop id="stop5689" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop5691" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<radialGradient r="12.5" fy="58" fx="326.0206" cy="58" cx="326.0206" gradientTransform="matrix(-2.3452637,1.0305331e-6,0.1678059,-1.6711651,1062.4349,156.14514)" gradientUnits="userSpaceOnUse" id="radialGradient8975" xlink:href="#linearGradient4788-7" inkscape:collect="always"/>
<linearGradient id="linearGradient4788-7" inkscape:collect="always">
<stop id="stop4790-8" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop4792-6" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<filter height="1.4864938" y="-0.24324691" width="1.0690911" x="-0.034545526" id="filter4804" inkscape:collect="always" color-interpolation-filters="sRGB">
<feGaussianBlur id="feGaussianBlur4806" stdDeviation="0.64763895" inkscape:collect="always"/>
</filter>
<linearGradient y2="404.6619" x2="145.43736" y1="353.40439" x1="147.5" gradientUnits="userSpaceOnUse" id="linearGradient9915" xlink:href="#linearGradient2740" inkscape:collect="always"/>
<linearGradient id="linearGradient2740">
<stop id="stop2742" offset="0" style="stop-color:#888a85;stop-opacity:1"/>
<stop id="stop2744" offset="1" style="stop-color:#888a85;stop-opacity:0;"/>
</linearGradient>
<linearGradient y2="360.96701" x2="110.53181" y1="416.36923" x1="110.53181" gradientUnits="userSpaceOnUse" id="linearGradient9917" xlink:href="#linearGradient4538" inkscape:collect="always"/>
<linearGradient id="linearGradient4538" inkscape:collect="always">
<stop id="stop4540" offset="0" style="stop-color:#555753;stop-opacity:1;"/>
<stop id="stop4542" offset="1" style="stop-color:#888a85;stop-opacity:1"/>
</linearGradient>
<clipPath id="clipPath3519" clipPathUnits="userSpaceOnUse">
<path style="fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new" d="m 49.053018,377.91849 c -0.710706,0.0727 -1.339556,0.49196 -1.68004,1.12002 l -14.280335,26.38285 c -0.171895,0.32432 -0.254644,0.67287 -0.248894,1.02669 1.72e-4,0.0106 -3.28e-4,0.0205 0,0.0311 l 0,2.98673 0,0.31112 0.06222,0 c 0.04534,0.25962 0.109053,0.51286 0.248895,0.74669 0.388063,0.64889 1.079535,1.05365 1.835599,1.0578 l 220.862957,0 c 0.76537,0.002 1.4767,-0.39926 1.86671,-1.0578 0.13743,-0.23204 0.20572,-0.48851 0.2489,-0.74669 0.0487,-0.29136 0.0622,-0.87113 0.0622,-0.87113 l 0,-2.08449 c 0,-0.49198 -0.0355,-0.98746 -0.28001,-1.43115 L 242.9109,379.0074 c -0.38858,-0.68003 -1.11464,-1.09662 -1.89783,-1.08891 l -191.742269,0 c -0.07255,-0.004 -0.145236,-0.004 -0.217783,0 z" id="path3521" sodipodi:nodetypes="cccsccccsccsscsccccc" inkscape:connector-curvature="0"/>
</clipPath>
<radialGradient r="112.59389" fy="260.93466" fx="139.85194" cy="260.93466" cx="139.85194" gradientTransform="matrix(-0.9950172,-1.7234204,1.1254929,-0.6498033,7.41235,817.82855)" gradientUnits="userSpaceOnUse" id="radialGradient9919" xlink:href="#linearGradient2748" inkscape:collect="always"/>
<linearGradient id="linearGradient2748" inkscape:collect="always">
<stop id="stop2750" offset="0" style="stop-color:#eeeeec;stop-opacity:1"/>
<stop id="stop2752" offset="1" style="stop-color:#babdb6;stop-opacity:1"/>
</linearGradient>
<filter height="1.7325989" y="-0.36629945" width="1.0121998" x="-0.006099917" id="filter3523" inkscape:collect="always" color-interpolation-filters="sRGB">
<feGaussianBlur id="feGaussianBlur3525" stdDeviation="0.57234376" inkscape:collect="always"/>
</filter>
<linearGradient y2="404.6619" x2="145.43736" y1="353.40439" x1="147.5" gradientUnits="userSpaceOnUse" id="linearGradient9921" xlink:href="#linearGradient2740" inkscape:collect="always"/>
<linearGradient y2="371.44675" x2="178.91721" y1="409.98514" x1="178.91721" gradientUnits="userSpaceOnUse" id="linearGradient9923" xlink:href="#linearGradient3833" inkscape:collect="always"/>
<linearGradient id="linearGradient3833" inkscape:collect="always">
<stop id="stop3835" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop3837" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient y2="90.819603" x2="316.18286" y1="83.224533" x1="316.18286" gradientTransform="matrix(0.9167044,0,0,0.8153692,76.67546,19.06288)" gradientUnits="userSpaceOnUse" id="linearGradient9925" xlink:href="#linearGradient4574" inkscape:collect="always"/>
<linearGradient id="linearGradient4574" inkscape:collect="always">
<stop id="stop4576" offset="0" style="stop-color:#2e3436;stop-opacity:1"/>
<stop id="stop4578" offset="1" style="stop-color:#888a85;stop-opacity:1"/>
</linearGradient>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10041" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient id="linearGradient3832" inkscape:collect="always">
<stop id="stop3834" offset="0" style="stop-color:#babdb6;stop-opacity:1;"/>
<stop id="stop3836" offset="1" style="stop-color:#babdb6;stop-opacity:0;"/>
</linearGradient>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9927" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9929" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9931" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9933" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9935" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9937" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9939" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9941" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9943" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9945" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9947" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9949" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9951" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9953" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9955" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9957" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9959" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9961" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9963" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9965" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9967" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9969" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9971" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9973" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9975" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9977" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9979" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9981" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9983" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9985" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9987" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9989" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9991" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9993" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9995" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9997" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient9999" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10001" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10003" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10005" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10007" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10009" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10011" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10013" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10015" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10017" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10019" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10021" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10023" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10025" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10027" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10029" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10031" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10033" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10035" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10037" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<linearGradient y2="75.623993" x2="305.5" y1="83.375" x1="305.5" gradientUnits="userSpaceOnUse" id="linearGradient10039" xlink:href="#linearGradient3832" inkscape:collect="always"/>
<filter id="filter3704" height="1.6358513" y="-0.31792566" width="1.1380142" x="-0.069007114" inkscape:collect="always" color-interpolation-filters="sRGB">
<feGaussianBlur id="feGaussianBlur3706" stdDeviation="1.3113763" inkscape:collect="always"/>
</filter>
<linearGradient y2="-431.91833" x2="279.97546" y1="-437.10501" x1="275.94193" gradientUnits="userSpaceOnUse" id="linearGradient3153" xlink:href="#linearGradient6527" inkscape:collect="always"/>
<linearGradient y2="-436.70703" x2="289.76562" y1="-439.48358" x1="286.66589" gradientUnits="userSpaceOnUse" id="linearGradient3151" xlink:href="#linearGradient6549" inkscape:collect="always"/>
<linearGradient y2="-436.4429" x2="289.39124" y1="-439.939" x1="285.94086" gradientUnits="userSpaceOnUse" id="linearGradient3149" xlink:href="#linearGradient6538" inkscape:collect="always"/>
<linearGradient y2="-436.32199" x2="289.67633" y1="-439.75281" x1="287.5173" gradientUnits="userSpaceOnUse" id="linearGradient3147" xlink:href="#linearGradient6497" inkscape:collect="always"/>
<linearGradient y2="-436.83109" x2="288.89954" y1="-441.23294" x1="284.80219" gradientUnits="userSpaceOnUse" id="linearGradient3145" xlink:href="#linearGradient6538" inkscape:collect="always"/>
<linearGradient y2="-436.14453" x2="289.85379" y1="-441.29074" x1="286.51172" gradientUnits="userSpaceOnUse" id="linearGradient3143" xlink:href="#linearGradient6513" inkscape:collect="always"/>
<linearGradient gradientTransform="matrix(1.6296296,0,0,1.7058462,-433.11111,768.10157)" y2="-431.96991" x2="285.02859" y1="-441.05182" x1="271.0217" gradientUnits="userSpaceOnUse" id="linearGradient3140" xlink:href="#linearGradient6470" inkscape:collect="always"/>
<linearGradient id="linearGradient6470" inkscape:collect="always">
<stop id="stop6472" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop6474" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient id="linearGradient6497" inkscape:collect="always">
<stop id="stop6499" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop6501" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient id="linearGradient6513" inkscape:collect="always">
<stop id="stop6515" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop6517" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient id="linearGradient6538" inkscape:collect="always">
<stop id="stop6540" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop6542" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient id="linearGradient6527" inkscape:collect="always">
<stop id="stop6530" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop6532" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
<linearGradient id="linearGradient6549" inkscape:collect="always">
<stop id="stop6551" offset="0" style="stop-color:#ffffff;stop-opacity:1;"/>
<stop id="stop6553" offset="1" style="stop-color:#ffffff;stop-opacity:0;"/>
</linearGradient>
</defs>
<sodipodi:namedview inkscape:document-units="mm" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.6549505" inkscape:cx="302.88356" inkscape:cy="120.36552" inkscape:current-layer="layer1" id="namedview2989" showgrid="false" showguides="true" inkscape:guide-bbox="true" inkscape:window-width="1920" inkscape:window-height="1200" inkscape:window-x="0" inkscape:window-y="0" inkscape:window-maximized="1" units="mm" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0"/>
<metadata id="metadata2991">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-39.53076,-255.7934)">
<g inkscape:label="Layer 1" id="layer1-7" transform="translate(40.492353,466.35113)">
<rect style="opacity:0.47150263;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter11642);enable-background:accumulate" id="rect10838" width="27.5" height="2.625" x="306.625" y="93" rx="1.3125" ry="1.8139008" transform="matrix(0.7818182,0,0,0.7235787,-226.35001,-30.805213)"/>
<path sodipodi:nodetypes="csss" id="path4625" d="m 39.798245,44.10512 c 0,0 -3.28582,-2.83484 -2.51847,-4.932011 0.93374,-2.55191 10.17883,-0.09195 10.17883,-1.888855 0,-2.886087 -20.87495,0.08421 -21.40703,-1.888855" style="opacity:0.21461188;fill:none;stroke:url(#linearGradient9088);stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;filter:url(#filter4777);enable-background:new" inkscape:connector-curvature="0"/>
<path sodipodi:nodetypes="cssc" id="path3590" d="m 39.798245,43.547062 c 0,0 -3.28582,-2.83484 -2.51847,-4.932011 0.93374,-2.55191 10.17883,-0.09195 10.17883,-1.888855 0,-2.886087 -20.87495,0.08421 -21.40703,-1.888855" style="fill:none;stroke:url(#linearGradient9090);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new" inkscape:connector-curvature="0"/>
<g transform="translate(1203.6157,183.08346)" style="display:inline;enable-background:new" id="g256"/>
<g transform="translate(605.63799,523.85886)" style="display:inline;enable-background:new" id="g4021"/>
<g transform="translate(790.6157,90.837429)" style="display:inline;enable-background:new" id="g4445"/>
<g transform="translate(819.21873,319.35215)" style="display:inline;enable-background:new" id="g5542"/>
<g style="opacity:0.47150263;display:inline;enable-background:new" transform="matrix(1,0,0,0.7235787,-296.24984,-30.805213)" id="g11680"/>
<g transform="translate(-295.99975,-20.000497)" id="g8934" style="display:inline;enable-background:new">
<g id="g2789" transform="translate(0,-37)">
<rect style="opacity:0.06024098;fill:#2e3436;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter6655);enable-background:accumulate" id="rect6551" width="46" height="4.1875" x="297" y="90.8125" rx="1.5812495" ry="1.4394537" transform="matrix(0.9673917,0,0,0.9552235,10.434651,6.2537675)"/>
</g>
<g id="g2784" transform="translate(0,-37)">
<path sodipodi:nodetypes="cccsccscccc" id="path4675" d="m 314.5,82.5 c 0,0 0,7 0,7 -0.0221,1.80197 -2.875,3 -2.875,3 -0.75136,0.08843 -1.125,0.446 -1.125,1 0,0.554 0.50583,1 1.125,1 l 16.8125,0 c 0.61917,0 1.125,-0.446 1.125,-1 0,-0.554 -0.37364,-0.911573 -1.125,-1 0,0 -2.8529,-1.19803 -2.875,-3 0,0 0,-7 0,-7 l -11.0625,0 z" style="fill:url(#linearGradient8955);fill-opacity:1;stroke:url(#linearGradient8957);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.50000001;display:inline;enable-background:new" inkscape:connector-curvature="0"/>
<path d="m 315.5625,83.5625 0,5.9375 c -0.0179,1.458692 -1.04314,2.42157 -1.875,3.03125 -0.80136,0.587324 -1.53727,0.88251 -1.59375,0.90625 l 15.875,0 C 327.91227,93.41376 327.17636,93.118574 326.375,92.53125 325.54314,91.92157 324.51789,90.958692 324.5,89.5 l 0,-5.9375 -8.9375,0 z" id="path4709" style="fill:none;stroke:url(#radialGradient8959);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.50000001;display:inline;enable-background:new" inkscape:original="M 314.5 82.5 C 314.5 82.5 314.5 89.5 314.5 89.5 C 314.4779 91.30197 311.625 92.5 311.625 92.5 C 310.87364 92.588427 310.5 92.946 310.5 93.5 C 310.5 94.054 311.00583 94.5 311.625 94.5 L 328.4375 94.5 C 329.05667 94.5 329.5625 94.054 329.5625 93.5 C 329.5625 92.946 329.18886 92.588427 328.4375 92.5 C 328.4375 92.5 325.5846 91.30197 325.5625 89.5 C 325.5625 89.5 325.5625 82.5 325.5625 82.5 L 314.5 82.5 z " inkscape:radius="-1.0625" sodipodi:type="inkscape:offset"/>
<rect ry="0.50000012" rx="0.50000012" y="93" x="311" height="1.0000002" width="18" id="rect4703" style="fill:url(#linearGradient8961);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
</g>
<g id="g2795" transform="matrix(1.0434783,0,0,1,-13.913043,-36)">
<rect ry="1.0276941" rx="1.0625" y="56.5" x="297.5" height="29" width="45" id="rect2722" style="fill:url(#radialGradient8963);fill-opacity:1;stroke:url(#linearGradient8965);stroke-width:0.97894514;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.50000001"/>
<rect ry="0" rx="0" y="57.5" x="298.5" height="27.017836" width="43.000004" id="rect4642" style="fill:none;stroke:url(#radialGradient8967);stroke-width:0.97894514;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.50000001;display:inline;enable-background:new"/>
<rect ry="0" rx="0" y="57.5" x="298.43753" height="27.017836" width="43.124969" id="rect5043" style="opacity:0.15;fill:none;stroke:#ffffff;stroke-width:0.97894514;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.50000001;display:inline;enable-background:new"/>
<path sodipodi:nodetypes="cscss" id="rect5045" d="m 337.73478,86.002816 c 0,0 -0.006,-0.502816 -0.006,-0.502816 0,-0.554 0.446,-1 1,-1 0.554,0 1,0.446 1,1 0,0 0.0156,0.498552 0.0156,0.498552" style="fill:#888a85;fill-opacity:1;stroke:#555753;stroke-width:0.97894502;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0.50000001" inkscape:connector-curvature="0"/>
</g>
<g id="g2758" transform="matrix(1.047619,0,0,0.9600002,-15.238095,-32.68001)">
<rect style="fill:url(#radialGradient8969);fill-opacity:1;fill-rule:evenodd;stroke:#51751e;stroke-width:0.99715501px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;enable-background:new" id="rect2716" width="41" height="24" x="299.5" y="58.500004"/>
<path sodipodi:nodetypes="ccccc" id="rect4785" d="m 330,59 10,0 0,23 -22,0 12,-23 z" style="opacity:0.24497992;fill:url(#radialGradient8971);fill-opacity:1;stroke:none" inkscape:connector-curvature="0"/>
<rect y="59" x="299.99994" height="23" width="40.000061" id="rect3466" style="opacity:0.15;fill:url(#linearGradient8973);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline;enable-background:new"/>
<path sodipodi:nodetypes="ccccc" id="path10688-3" d="m 317.0849,59.217901 7.71076,0 -9.16144,19.917752 -3.78204,-0.223795 5.23272,-19.693957 0,0 z" style="opacity:0.24497992;fill:url(#radialGradient8975);fill-opacity:1;stroke:none;display:inline;enable-background:new" inkscape:connector-curvature="0"/>
</g>
</g>
<g transform="translate(-345.99975,-50.000497)" id="g9846" style="display:inline;enable-background:new">
<path style="opacity:0.6;fill:#000000;fill-opacity:1;stroke:none;display:inline;filter:url(#filter4804);enable-background:new" d="M 300.26999,82 297.50623,88.374691 342.5,88.389941 339.62033,82 300.26999,82 z" id="path4789" sodipodi:nodetypes="ccccc" transform="matrix(0.977821,0,0,0.8509468,57.118094,22.22236)" inkscape:connector-curvature="0"/>
<path sodipodi:type="inkscape:offset" inkscape:radius="2.1041079" inkscape:original="M 49.0625 377.90625 C 48.351795 377.97898 47.715484 378.40319 47.375 379.03125 L 33.09375 405.40625 C 32.921854 405.73057 32.838 406.08368 32.84375 406.4375 C 32.843921 406.44806 32.843422 406.45818 32.84375 406.46875 L 32.84375 409.46875 L 32.84375 409.78125 L 32.90625 409.78125 C 32.951585 410.04087 33.016408 410.29742 33.15625 410.53125 C 33.544315 411.18013 34.243936 411.5896 35 411.59375 L 255.84375 411.59375 C 256.60912 411.59549 257.32874 411.18979 257.71875 410.53125 C 257.85619 410.2992 257.92557 410.03943 257.96875 409.78125 C 258.01748 409.48989 258.03125 408.90625 258.03125 408.90625 L 258.03125 406.8125 C 258.03125 406.32053 257.99454 405.81869 257.75 405.375 L 242.90625 379 C 242.51767 378.31998 241.78319 377.89854 241 377.90625 L 49.28125 377.90625 C 49.208701 377.90258 49.135047 377.90258 49.0625 377.90625 z " style="fill:url(#linearGradient9915);fill-opacity:1;stroke:url(#linearGradient9917);stroke-width:5.77455425;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.3612;display:inline;enable-background:new" id="path3698" d="m 48.84375,375.8125 c -1.408468,0.14414 -2.637736,0.97407 -3.3125,2.21875 L 31.25,404.40625 c -0.335245,0.63251 -0.51152,1.35363 -0.5,2.0625 -0.0013,-0.0775 -0.0037,-0.0558 0,0.0625 l 0,2.9375 0,0.3125 A 2.1043183,2.1043183 0 0 0 31.125,411 c 0.07626,0.21987 0.07331,0.38181 0.21875,0.625 0.759704,1.27029 2.147648,2.05422 3.65625,2.0625 l 220.84375,0 c 1.51191,0.003 2.91229,-0.7848 3.6875,-2.09375 0.3301,-0.55733 0.43421,-1.07538 0.5,-1.46875 0.11351,-0.67866 0.0937,-1.15625 0.0937,-1.15625 a 2.1043183,2.1043183 0 0 0 0,-0.0625 l 0,-2.09375 c 0,-0.59664 -0.006,-1.51562 -0.53125,-2.46875 L 244.75,377.96875 a 2.1043183,2.1043183 0 0 0 -0.0312,0 C 243.95446,376.63124 242.53888,375.80847 241,375.8125 l -0.0312,0 -191.59375,0 c -0.0333,-0.002 -0.06058,9.1e-4 -0.09375,0 -0.110578,-0.003 -0.201488,-0.006 -0.3125,0 a 2.1043183,2.1043183 0 0 0 -0.125,0 z" transform="matrix(0.1878343,0,0,0.1596571,342.70276,30.499403)"/>
<g style="display:inline;enable-background:new" id="g3594" clip-path="url(#clipPath3519)" transform="matrix(0.1872588,0,0,0.1485186,342.78643,34.872494)">
<path sodipodi:nodetypes="cccsccccsccsscsccccc" id="path3596" d="m 49.053018,377.91849 c -0.710706,0.0727 -1.339556,0.49196 -1.68004,1.12002 l -14.280335,26.38285 c -0.171895,0.32432 -0.254644,0.67287 -0.248894,1.02669 1.72e-4,0.0106 -3.28e-4,0.0205 0,0.0311 l 0,2.98673 0,0.31112 0.06222,0 c 0.04534,0.25962 0.109053,0.51286 0.248895,0.74669 0.388063,0.64889 1.079535,1.05365 1.835599,1.0578 l 220.862957,0 c 0.76537,0.002 1.4767,-0.39926 1.86671,-1.0578 0.13743,-0.23204 0.20572,-0.48851 0.2489,-0.74669 0.0487,-0.29136 0.0622,-0.87113 0.0622,-0.87113 l 0,-2.08449 c 0,-0.49198 -0.0355,-0.98746 -0.28001,-1.43115 L 242.9109,379.0074 c -0.38858,-0.68003 -1.11464,-1.09662 -1.89783,-1.08891 l -191.742269,0 c -0.07255,-0.004 -0.145236,-0.004 -0.217783,0 z" style="fill:url(#radialGradient9919);fill-opacity:1;stroke:none;display:inline;enable-background:new" inkscape:connector-curvature="0"/>
<path id="path3598" d="m 32.84375,407.84375 0,1.625 0,0.3125 0.0625,0 c 0.04533,0.25962 0.11016,0.51617 0.25,0.75 0.38805,0.64888 1.08768,1.05835 1.84375,1.0625 l 220.84375,0 c 0.7654,0.002 1.48499,-0.40396 1.875,-1.0625 0.13741,-0.23205 0.20682,-0.49182 0.25,-0.75 0.0487,-0.29136 0.0625,-0.875 0.0625,-0.875 l 0,-1.0625 c -0.40966,0.50416 -1.02665,0.81401 -1.6875,0.8125 l -221.84375,0 c -0.65281,-0.004 -1.25015,-0.31528 -1.65625,-0.8125 z" style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline;filter:url(#filter3523);enable-background:new" inkscape:connector-curvature="0"/>
<path sodipodi:nodetypes="cccsccccsccsscsccccc" id="path3600" d="m 49.053018,377.91849 c -0.710706,0.0727 -1.339556,0.49196 -1.68004,1.12002 l -14.280335,26.38285 c -0.171895,0.32432 -0.254644,0.67287 -0.248894,1.02669 1.72e-4,0.0106 -3.28e-4,0.0205 0,0.0311 l 0,2.98673 0,0.31112 0.06222,0 c 0.04534,0.25962 0.109053,0.51286 0.248895,0.74669 0.388063,0.64889 1.079535,1.05365 1.835599,1.0578 l 220.862957,0 c 0.76537,0.002 1.4767,-0.39926 1.86671,-1.0578 0.13743,-0.23204 0.20572,-0.48851 0.2489,-0.74669 0.0487,-0.29136 0.0622,-0.87113 0.0622,-0.87113 l 0,-2.08449 c 0,-0.49198 -0.0355,-0.98746 -0.28001,-1.43115 L 242.9109,379.0074 c -0.38858,-0.68003 -1.11464,-1.09662 -1.89783,-1.08891 l -191.742269,0 c -0.07255,-0.004 -0.145236,-0.004 -0.217783,0 z" style="fill:url(#linearGradient9921);fill-opacity:1;stroke:none;display:inline;enable-background:new" inkscape:connector-curvature="0"/>
</g>
<path style="opacity:0.8310502;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline;enable-background:new" d="M 353.09083,90 350.77007,95.06953 375.582,95.06323 374.92639,90 353.09083,90 z m 22.96983,0 0.35972,2.567703 4.85041,0 L 380.59197,90 l -4.53131,0 z m 5.66708,0.810116 1.29962,4.253091 6.24429,0 -1.99586,-4.253091 -5.54805,0 z m -3.51456,2.430333 0.12764,0.81011 -1.59553,0 0.16245,1.012648 5.0999,0 -0.31911,-1.012648 -1.63615,0 -0.20305,-0.81011 -1.63615,0 z" id="path3702" sodipodi:nodetypes="cccccccccccccccccccccccc" inkscape:connector-curvature="0"/>
<path sodipodi:type="inkscape:offset" inkscape:radius="-2.5097508" inkscape:original="M 49.0625 377.90625 C 48.351795 377.97898 47.715484 378.40319 47.375 379.03125 L 33.09375 405.40625 C 32.921854 405.73057 32.838 406.08368 32.84375 406.4375 C 32.843921 406.44806 32.843422 406.45818 32.84375 406.46875 L 32.84375 409.46875 L 32.84375 409.78125 L 32.90625 409.78125 C 32.951585 410.04087 33.016408 410.29742 33.15625 410.53125 C 33.544315 411.18013 34.243936 411.5896 35 411.59375 L 255.84375 411.59375 C 256.60912 411.59549 257.32874 411.18979 257.71875 410.53125 C 257.85619 410.2992 257.92557 410.03943 257.96875 409.78125 C 258.01748 409.48989 258.03125 408.90625 258.03125 408.90625 L 258.03125 406.8125 C 258.03125 406.32053 257.99454 405.81869 257.75 405.375 L 242.90625 379 C 242.51767 378.31998 241.78319 377.89854 241 377.90625 L 49.28125 377.90625 C 49.208701 377.90258 49.135047 377.90258 49.0625 377.90625 z " style="opacity:0.84474888;fill:none;stroke:url(#linearGradient9923);stroke-width:6.19703245;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.3612;display:inline;enable-background:new" id="path8710" d="m 49.5,380.40625 -14.15625,26.125 0,2.5625 220.1875,0 c 0.008,-0.10782 -0.004,-0.13803 0,-0.1875 l 0,-0.0625 0,-2.03125 c 0,-0.36712 -0.0591,-0.38271 0.0312,-0.21875 l -14.75,-26.1875 -191.3125,0 z" transform="matrix(0.1867514,0,0,0.1394339,342.86027,38.458456)"/>
<path style="fill:url(#linearGradient9925);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline;enable-background:new" d="m 353.09083,90 -2.32076,4.076847 24.81193,-0.0051 L 374.92639,90 353.09083,90 z m 22.96983,0 0.35972,2.06491 4.85041,0 L 380.59197,90 l -4.53131,0 z m 5.66708,0.651483 1.29962,3.420274 6.24429,0 -1.99586,-3.420274 -5.54805,0 z m -3.51456,1.954442 0.12764,0.651476 -1.59553,0 0.16245,0.814356 5.0999,0 -0.31911,-0.814356 -1.63615,0 -0.20305,-0.651476 -1.63615,0 z" id="path3704" sodipodi:nodetypes="cccccccccccccccccccccccc" inkscape:connector-curvature="0"/>
<g id="g3735" style="fill:url(#linearGradient10041);fill-opacity:1" transform="translate(50.020859,10.047559)">
<rect ry="0.28125" rx="0.28125" y="82" x="302" height="1" width="1" id="rect4584" style="opacity:0.55363734;fill:url(#linearGradient9927);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="301" height="1" width="1" id="rect4586" style="opacity:0.55363734;fill:url(#linearGradient9929);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="303" height="1" width="1" id="rect4590" style="opacity:0.55363734;fill:url(#linearGradient9931);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="303" height="1" width="1" id="rect4592" style="opacity:0.55363734;fill:url(#linearGradient9933);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="304" height="1" width="1" id="rect4594" style="opacity:0.55363734;fill:url(#linearGradient9935);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="306" height="1" width="1" id="rect4607" style="opacity:0.55363734;fill:url(#linearGradient9937);fill-opacity:1;stroke:none"/>
<rect ry="0.28125" rx="0.28125" y="82" x="306" height="1" width="1" id="rect4609" style="opacity:0.55363734;fill:url(#linearGradient9939);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="305" height="1" width="1" id="rect4611" style="opacity:0.55363734;fill:url(#linearGradient9941);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="305" height="1" width="1" id="rect4613" style="opacity:0.55363734;fill:url(#linearGradient9943);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="307" height="1" width="1" id="rect4615" style="opacity:0.55363734;fill:url(#linearGradient9945);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="308" height="1" width="1" id="rect4619" style="opacity:0.55363734;fill:url(#linearGradient9947);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="308" height="1" width="1" id="rect4628" style="opacity:0.55363734;fill:url(#linearGradient9949);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="304" height="1" width="1" id="rect4630" style="opacity:0.55363734;fill:url(#linearGradient9951);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="310" height="1" width="1" id="rect4639" style="opacity:0.55363734;fill:url(#linearGradient9953);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="310" height="1" width="1" id="rect4641" style="opacity:0.55363734;fill:url(#linearGradient9955);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="309" height="1" width="1" id="rect4645" style="opacity:0.55363734;fill:url(#linearGradient9957);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="311" height="1" width="1" id="rect4647" style="opacity:0.55363734;fill:url(#linearGradient9959);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="312" height="1" width="1" id="rect4651" style="opacity:0.55363734;fill:url(#linearGradient9961);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="314" height="1" width="1" id="rect4653" style="opacity:0.55363734;fill:url(#linearGradient9963);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="314" height="1" width="1" id="rect4655" style="opacity:0.55363734;fill:url(#linearGradient9965);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="313" height="1" width="1" id="rect4659" style="opacity:0.55363734;fill:url(#linearGradient9967);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="315" height="1" width="1" id="rect4661" style="opacity:0.55363734;fill:url(#linearGradient9969);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="316" height="1" width="1" id="rect4665" style="opacity:0.55363734;fill:url(#linearGradient9971);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="316" height="1" width="1" id="rect4667" style="opacity:0.55363734;fill:url(#linearGradient9973);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="312" height="1" width="1" id="rect4669" style="opacity:0.55363734;fill:url(#linearGradient9975);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="318" height="1" width="1" id="rect4671" style="opacity:0.55363734;fill:url(#linearGradient9977);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="318" height="1" width="1" id="rect4673" style="opacity:0.55363734;fill:url(#linearGradient9979);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="317" height="1" width="1" id="rect4677" style="opacity:0.55363734;fill:url(#linearGradient9981);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="319" height="1" width="1" id="rect4679" style="opacity:0.55363734;fill:url(#linearGradient9983);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="320" height="1" width="1" id="rect4683" style="opacity:0.55363734;fill:url(#linearGradient9985);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="322" height="1" width="1" id="rect4685" style="opacity:0.55363734;fill:url(#linearGradient9987);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="322" height="1" width="1" id="rect4687" style="opacity:0.55363734;fill:url(#linearGradient9989);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="321" height="1" width="1" id="rect4689" style="opacity:0.55363734;fill:url(#linearGradient9991);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="321" height="1" width="1" id="rect4691" style="opacity:0.55363734;fill:url(#linearGradient9993);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="323" height="1" width="1" id="rect4693" style="opacity:0.55363734;fill:url(#linearGradient9995);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="323" height="1" width="1" id="rect4695" style="opacity:0.55363734;fill:url(#linearGradient9997);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="324" height="1" width="1" id="rect4697" style="opacity:0.55363734;fill:url(#linearGradient9999);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="324" height="1" width="1" id="rect4699" style="opacity:0.55363734;fill:url(#linearGradient10001);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="320" height="1" width="1" id="rect4701" style="opacity:0.55363734;fill:url(#linearGradient10003);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="326" height="1" width="1" id="rect4704" style="opacity:0.55363734;fill:url(#linearGradient10005);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="325" height="1" width="1" id="rect4708" style="opacity:0.55363734;fill:url(#linearGradient10007);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="327" height="1" width="1" id="rect4712" style="opacity:0.55363734;fill:url(#linearGradient10009);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="327" height="1" width="1" id="rect4714" style="opacity:0.55363734;fill:url(#linearGradient10011);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="328" height="1" width="1" id="rect4716" style="opacity:0.55363734;fill:url(#linearGradient10013);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="80" x="330" height="1" width="1" id="rect4718" style="opacity:0.55363734;fill:url(#linearGradient10015);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="329" height="1" width="1" id="rect4722" style="opacity:0.55363734;fill:url(#linearGradient10017);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="329" height="1" width="1" id="rect4724" style="opacity:0.55363734;fill:url(#linearGradient10019);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="331" height="1" width="1" id="rect4728" style="opacity:0.55363734;fill:url(#linearGradient10021);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="333" height="1" width="1" id="rect4736" style="opacity:0.55363734;fill:url(#linearGradient10023);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="333" height="1" width="1" id="rect4738" style="opacity:0.55363734;fill:url(#linearGradient10025);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="336" height="1" width="1" id="rect4744" style="opacity:0.55363734;fill:url(#linearGradient10027);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="335" height="1" width="1" id="rect4746" style="opacity:0.55363734;fill:url(#linearGradient10029);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="335" height="1" width="1" id="rect4748" style="opacity:0.55363734;fill:url(#linearGradient10031);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="81" x="337" height="1" width="1" id="rect4750" style="opacity:0.55363734;fill:url(#linearGradient10033);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="83" x="337" height="1" width="1" id="rect4752" style="opacity:0.55363734;fill:url(#linearGradient10035);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="338" height="1" width="1" id="rect4756" style="opacity:0.55363734;fill:url(#linearGradient10037);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
<rect ry="0.28125" rx="0.28125" y="82" x="334" height="1" width="1" id="rect4758" style="opacity:0.55363734;fill:url(#linearGradient10039);fill-opacity:1;stroke:none;display:inline;enable-background:new"/>
</g>
</g>
</g>
<g inkscape:label="Layer 1" id="layer1-6" transform="matrix(8.8081092,0,0,7.2855475,446.72886,239.92631)">
<path transform="matrix(1.0085864,0,0,1.0101526,-0.06976669,-0.5230355)" d="m 46.669046,36.15596 c 0,2.73367 -10.209785,4.949747 -22.804193,4.949747 -12.594408,0 -22.8041936,-2.216077 -22.8041936,-4.949747 0,-2.73367 10.2097856,-4.949747 22.8041936,-4.949747 12.594408,0 22.804193,2.216077 22.804193,4.949747 z" sodipodi:ry="4.9497471" sodipodi:rx="22.804193" sodipodi:cy="36.15596" sodipodi:cx="23.864853" id="path2733" style="opacity:0.3;fill:#2e3436;fill-opacity:0.75;fill-rule:evenodd;stroke:none;filter:url(#filter3704)" sodipodi:type="arc"/>
<path sodipodi:nodetypes="ccsscsssscsscc" id="path7796" d="m 24.037295,8.4999999 c -3.643498,0 -6.594263,2.5838001 -7.571134,6.0416661 C 15.353888,13.935283 14.148475,13.5 12.805943,13.5 c -4.4283615,0 -8.0224103,3.733316 -8.0223943,8.333333 0,0.964883 0.26076,1.846166 0.5515397,2.708333 -2.2037037,1.284567 -3.7604975,3.648333 -3.7604975,6.458333 0,4.140001 3.2346295,7.500017 7.2201551,7.500001 0.2842013,0 30.200898,0 30.485099,0 3.98551,0 7.220155,-3.36 7.220155,-7.500001 0,-2.81 -1.556794,-5.173766 -3.760497,-6.458333 0.290795,-0.86215 0.551539,-1.743466 0.551539,-2.708333 0,-4.6 -3.594032,-8.333316 -8.022394,-8.333333 -1.342532,0 -2.547945,0.435283 -3.660218,1.041666 C 30.631559,11.0838 27.680794,8.4999999 24.037295,8.4999999 z" style="fill:#c4c5c2;fill-opacity:1;stroke:#888a85;stroke-width:0.99999982;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" inkscape:connector-curvature="0"/>
<path sodipodi:nodetypes="ccsscsssscsscc" id="path7798" d="m 24.000003,9.0000009 c -3.568432,0 -6.068088,2.2786181 -7.163118,6.5564551 -1.089342,-0.586164 -2.521998,-1.421568 -3.836881,-1.421568 -4.4269049,0 -7.7491169,3.307329 -7.7491009,7.753992 0,0.932706 0.435453,2.274644 0.720231,3.108069 -2.15833,1.241771 -3.97113,3.224903 -3.97113,5.753052 0,4.002001 2.519684,7.25 7.071419,7.25 0.278357,0 29.5788199,0 29.8571609,0 4.515719,0 7.07142,-3.247999 7.07142,-7.25 0,-2.716339 -1.8128,-4.548963 -3.971131,-5.790734 0.284794,-0.833408 0.756263,-2.137698 0.756263,-3.070387 0,-4.446646 -3.447987,-7.791674 -7.785116,-7.791691 -1.3149,0 -2.675541,0.835421 -3.764884,1.421583 C 30.17775,11.387998 27.568453,9.0000009 24.000003,9.0000009 z" style="fill:url(#linearGradient3140);fill-opacity:1;stroke:none" inkscape:connector-curvature="0"/>
<g transform="matrix(1.7142858,0,0,1.857141,-456.85716,834.57059)" id="g7800">
<path sodipodi:type="arc" style="fill:#c4c5c2;fill-opacity:1;stroke:none" id="path7802" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)"/>
<path sodipodi:type="arc" style="fill:url(#linearGradient3147);fill-opacity:1;stroke:none" id="path7804" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-24.19818,21.86331)"/>
</g>
<rect y="20.968407" x="8.0000038" height="16.031593" width="32.884319" id="rect7806" style="fill:#c4c5c2;fill-opacity:1;stroke:none"/>
<path transform="matrix(1.6603788,0,0,1.6670178,-470.31173,760.95456)" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" sodipodi:ry="3.3125" sodipodi:rx="3.3125" sodipodi:cy="-437.59375" sodipodi:cx="288.375" id="path7808" style="fill:#c4c5c2;fill-opacity:1;stroke:none" sodipodi:type="arc"/>
<g transform="matrix(1.7103073,0,0,1.7142622,-456.16919,770.9898)" id="g7810">
<path sodipodi:type="arc" style="fill:#c4c5c2;fill-opacity:1;stroke:none" id="path7812" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-17.19811,24.86321)"/>
<path sodipodi:type="arc" style="fill:url(#linearGradient3143);fill-opacity:1;stroke:none" id="path7814" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-17.19818,24.86331)"/>
</g>
<g transform="matrix(1.8571417,0,0,1.8571383,-495.42825,833.998)" id="g7816">
<path sodipodi:type="arc" style="fill:#c4c5c2;fill-opacity:1;stroke:none" id="path7818" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"/>
<path sodipodi:type="arc" style="fill:url(#linearGradient3149);fill-opacity:1;stroke:none" id="path7820" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"/>
</g>
<g transform="matrix(1.6044789,0,0,1.6624543,-427.62352,749.12339)" id="g7822">
<path style="fill:#c4c5c2;fill-opacity:1;stroke:none" d="m 280.46875,-440.96875 c -3.57938,0 -6.46875,2.92063 -6.46875,6.5 0,2.37068 1.34943,4.33779 3.25,5.46875 l 6.46875,0 c 1.90057,-1.13096 3.25,-3.12931 3.25,-5.5 0,-3.57938 -2.92063,-6.46875 -6.5,-6.46875 z" id="path7824" inkscape:connector-curvature="0"/>
<path style="fill:url(#linearGradient3153);fill-opacity:1;stroke:none" d="m 280.5,-441 c -3.588,0 -6.5,2.91201 -6.5,6.5 0,2.3764 1.34485,4.36632 3.25,5.5 l 6.5,0 c 1.90515,-1.13368 3.25,-3.1236 3.25,-5.5 0,-3.588 -2.912,-6.49999 -6.5,-6.5 z" id="path7826" inkscape:connector-curvature="0"/>
</g>
<path transform="matrix(1.6603778,0,0,1.6603765,-470.31146,758.07037)" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" sodipodi:ry="3.3125" sodipodi:rx="3.3125" sodipodi:cy="-437.59375" sodipodi:cx="288.375" id="path7828" style="fill:url(#linearGradient3151);fill-opacity:1;stroke:none" sodipodi:type="arc"/>
<path sodipodi:nodetypes="ccss" id="path7830" d="m 43.581384,22.075669 c -0.0014,3.559462 -3.078778,4.924332 -3.078778,4.924332 0,0 2.211892,-2.15585 2.200694,-4.912479 0,0 0.878084,-0.01185 0.878084,-0.01185 z" style="fill:#888a85;fill-opacity:1;fill-rule:evenodd;stroke:none" inkscape:connector-curvature="0"/>
<g transform="matrix(1.8571412,0,0,1.8571418,-478.42811,841.99952)" id="g7832">
<path sodipodi:type="arc" style="fill:#c4c5c2;fill-opacity:1;stroke:none" id="path7834" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"/>
<path sodipodi:type="arc" style="fill:url(#linearGradient3145);fill-opacity:1;stroke:none" id="path7836" sodipodi:cx="288.375" sodipodi:cy="-437.59375" sodipodi:rx="3.3125" sodipodi:ry="3.3125" d="m 291.6875,-437.59375 c 0,1.82944 -1.48306,3.3125 -3.3125,3.3125 -1.82944,0 -3.3125,-1.48306 -3.3125,-3.3125 0,-1.82944 1.48306,-3.3125 3.3125,-3.3125 1.82944,0 3.3125,1.48306 3.3125,3.3125 z" transform="matrix(1.056604,0,0,1.056604,-31.19818,24.86331)"/>
</g>
</g>
<rect style="fill:#666666;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect3977" width="193.47778" height="262.577" x="248.75716" y="255.7934" ry="50.672756"/>
<rect style="fill:#1a1a1a;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect3979" width="172.74803" height="2.3033071" x="262.577" y="373.26205" ry="1.1516535"/>
<path style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 70,511.01756 36.92308,24.61538 224.61538,0 22.30769,-24.61538" id="path3981" inkscape:connector-curvature="0"/>
<path style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 393.07692,506.40218 14.61539,23.84615 45.38461,-1.53846 38.46154,-21.53846" id="path3983" inkscape:connector-curvature="0"/>
<rect style="fill:#ff7f2a;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect3985" width="92.307693" height="120" x="330.76923" y="385.63293" ry="20.534605"/>
<rect style="fill:#aa0000;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect3987" width="23.846153" height="3.8461537" x="345.38461" y="503.32526" ry="1.9230769"/>
<rect style="fill:#aa0000;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect3989" width="20" height="4.6153846" x="382.74802" y="503.34119" ry="1.9230769"/>
<rect style="fill:#ff0000;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect3997" width="27.692308" height="6.1538463" x="352.30768" y="381.01755" ry="3.0769231"/>
<path sodipodi:type="arc" style="fill:#ffffff;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="path3999" sodipodi:cx="392.69232" sodipodi:cy="314.09448" sodipodi:rx="53.461536" sodipodi:ry="35.384617" d="m 446.15386,314.09448 c 0,19.54239 -23.93555,35.38462 -53.46154,35.38462 -29.52599,0 -53.46153,-15.84223 -53.46153,-35.38462 0,-19.54238 23.93554,-35.38461 53.46153,-35.38461 29.52599,0 53.46154,15.84223 53.46154,35.38461 z" transform="translate(-17.692308,3.8461538)"/>
<text xml:space="preserve" style="font-size:12px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="258.98108" y="470.1409" id="text4004" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4006" x="258.98108" y="470.1409">Système</tspan><tspan sodipodi:role="line" x="258.98108" y="485.1409" id="tspan4008">d'exploitation</tspan></text>
<text xml:space="preserve" style="font-size:12px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="269.23077" y="275.63293" id="text4010" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4012" x="269.23077" y="275.63293">Espace</tspan><tspan sodipodi:role="line" x="269.23077" y="290.63293" id="tspan4014">Utilisateur</tspan></text>
<text xml:space="preserve" style="font-size:12px;font-style:normal;font-weight:bold;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" x="372.68045" y="437.94061" id="text4016" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4018" x="372.68045" y="437.94061">Pile</tspan><tspan sodipodi:role="line" x="372.68045" y="452.94061" id="tspan4020">Réseau</tspan></text>
<text xml:space="preserve" style="font-size:22px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" x="586.15387" y="400.24832" id="text4022" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4024" x="586.15387" y="400.24832">Internet v6</tspan></text>
<text xml:space="preserve" style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" x="405.87387" y="384.35843" id="text4045" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4047" x="405.87387" y="384.35843">socket()</tspan></text>
<text xml:space="preserve" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Droid Sans Mono;-inkscape-font-specification:Droid Sans Mono" x="351.25848" y="301.56146" id="text4049" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4051" x="351.25848" y="301.56146">tunnel46d</tspan></text>
<text xml:space="preserve" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" x="327.69232" y="386.40216" id="text4053" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4055" x="327.69232" y="386.40216">tun0</tspan></text>
<text xml:space="preserve" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" x="347.69232" y="499.4791" id="text4057" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4059" x="347.69232" y="499.4791">eth0</tspan></text>
<text xml:space="preserve" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" x="387.69232" y="496.40216" id="text4061" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4063" x="387.69232" y="496.40216">eth1</tspan></text>
<rect style="fill:#00ff00;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect4065" width="182.30769" height="18.461538" x="119.23077" y="554.09448" ry="3.0769231"/>
<text xml:space="preserve" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" x="118.46154" y="567.17139" id="text4087" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4089" x="118.46154" y="567.17139">Ethernet| IPv4 | TCP |....|CRC</tspan></text>
<rect style="fill:#ff8080;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none" id="rect4173" width="262.79031" height="20.000023" x="363.17023" y="542.98401" ry="8.0769234"/>
<g id="g4141" transform="translate(18.718864,11.197192)">
<rect ry="3.0769231" y="532.55603" x="475" height="18.461538" width="111.53846" id="rect4065-7" style="fill:#00ffff;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none"/>
<text sodipodi:linespacing="125%" id="text4102" y="544.86371" x="486.92307" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" xml:space="preserve"><tspan y="544.86371" x="486.92307" id="tspan4104" sodipodi:role="line">IPv4 | TCP |....</tspan></text>
</g>
<g transform="translate(-236.89106,-180.39595)" id="g4106-1">
<rect ry="3.0769231" y="532.55603" x="475" height="18.461538" width="111.53846" id="rect4065-7-3" style="fill:#00ff00;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none"/>
<text sodipodi:linespacing="125%" id="text4102-8" y="544.86371" x="486.92307" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" xml:space="preserve"><tspan y="544.86371" x="486.92307" id="tspan4104-4" sodipodi:role="line">IPv4 | TCP |....</tspan></text>
</g>
<g transform="translate(-62.137053,-180.67593)" id="g4141-6" inkscape:transform-center-x="16.923077">
<rect ry="3.0769231" y="532.55603" x="475" height="18.461538" width="111.53846" id="rect4065-7-4" style="fill:#00ffff;fill-opacity:0.50169492;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none"/>
<text sodipodi:linespacing="125%" id="text4102-6" y="544.86371" x="486.92307" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" xml:space="preserve"><tspan y="544.86371" x="486.92307" id="tspan4104-2" sodipodi:role="line">IPv4 | TCP |....</tspan></text>
</g>
<text xml:space="preserve" style="font-size:9.89631176px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" x="370.98218" y="549.44159" id="text4175" sodipodi:linespacing="125%" transform="scale(0.98963115,1.0104775)"><tspan sodipodi:role="line" id="tspan4177" x="370.98218" y="549.44159">Ethernet | IPv6 | TCP |</tspan></text>
<text xml:space="preserve" style="font-size:10px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" x="606.63647" y="557.14874" id="text4179" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4181" x="606.63647" y="557.14874">CRC</tspan></text>
<path style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 343.35689,341.65481 23.07692,38.46154" id="path4185" inkscape:connector-curvature="0"/>
<path style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" d="m 413.3855,336.14826 -11.96642,49.49748" id="path4187" inkscape:connector-curvature="0"/>
<text xml:space="preserve" style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Andale Mono;-inkscape-font-specification:Andale Mono" x="350.28983" y="335.06039" id="text4208" sodipodi:linespacing="125%"><tspan sodipodi:role="line" id="tspan4210" x="350.28983" y="335.06039">T<tspan style="font-size:8px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Sans;-inkscape-font-specification:Sans" id="tspan4214">r</tspan>aitement()</tspan><tspan sodipodi:role="line" x="350.28983" y="345.15063" id="tspan4212"/></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 74 KiB