Initial commit.
|
@ -0,0 +1,98 @@
|
||||||
|
## Core latex/pdflatex auxiliary files:
|
||||||
|
*.aux
|
||||||
|
*.lof
|
||||||
|
*.log
|
||||||
|
*.lot
|
||||||
|
*.fls
|
||||||
|
*.out
|
||||||
|
*.toc
|
||||||
|
|
||||||
|
## Intermediate documents:
|
||||||
|
*.dvi
|
||||||
|
/*.ps
|
||||||
|
/*.eps
|
||||||
|
/*.pdf
|
||||||
|
|
||||||
|
## Bibliography auxiliary files (bibtex/biblatex/biber):
|
||||||
|
*.bbl
|
||||||
|
*.bcf
|
||||||
|
*.blg
|
||||||
|
*-blx.aux
|
||||||
|
*-blx.bib
|
||||||
|
*.run.xml
|
||||||
|
|
||||||
|
## Build tool auxiliary files:
|
||||||
|
*.fdb_latexmk
|
||||||
|
*.synctex.gz
|
||||||
|
*.synctex.gz(busy)
|
||||||
|
*.pdfsync
|
||||||
|
|
||||||
|
## Auxiliary and intermediate files from other packages:
|
||||||
|
|
||||||
|
# algorithms
|
||||||
|
*.alg
|
||||||
|
*.loa
|
||||||
|
|
||||||
|
# amsthm
|
||||||
|
*.thm
|
||||||
|
|
||||||
|
# beamer
|
||||||
|
*.nav
|
||||||
|
*.snm
|
||||||
|
*.vrb
|
||||||
|
|
||||||
|
# glossaries
|
||||||
|
*.acn
|
||||||
|
*.acr
|
||||||
|
*.glg
|
||||||
|
*.glo
|
||||||
|
*.gls
|
||||||
|
|
||||||
|
# hyperref
|
||||||
|
*.brf
|
||||||
|
|
||||||
|
# listings
|
||||||
|
*.lol
|
||||||
|
|
||||||
|
# makeidx
|
||||||
|
*.idx
|
||||||
|
*.ilg
|
||||||
|
*.ind
|
||||||
|
*.ist
|
||||||
|
|
||||||
|
# minitoc
|
||||||
|
*.maf
|
||||||
|
*.mtc
|
||||||
|
*.mtc0
|
||||||
|
|
||||||
|
# minted
|
||||||
|
*.pyg
|
||||||
|
|
||||||
|
# nomencl
|
||||||
|
*.nlo
|
||||||
|
|
||||||
|
# sagetex
|
||||||
|
*.sagetex.sage
|
||||||
|
*.sagetex.py
|
||||||
|
*.sagetex.scmd
|
||||||
|
|
||||||
|
# sympy
|
||||||
|
*.sout
|
||||||
|
*.sympy
|
||||||
|
sympy-plots-for-*.tex/
|
||||||
|
|
||||||
|
# todonotes
|
||||||
|
*.tdo
|
||||||
|
|
||||||
|
# xindy
|
||||||
|
*.xdy
|
||||||
|
|
||||||
|
# Pandoc output
|
||||||
|
/*.tex
|
||||||
|
!/template.tex
|
||||||
|
/*.odt
|
||||||
|
/*.docx
|
||||||
|
|
||||||
|
# Aufgabenblatt
|
||||||
|
sheets
|
||||||
|
#!AA_*.pdf
|
|
@ -0,0 +1,124 @@
|
||||||
|
---
|
||||||
|
author: Carl Kittelberger
|
||||||
|
title: Dateisysteme
|
||||||
|
date: 2017-06-02
|
||||||
|
|
||||||
|
papersize: a4
|
||||||
|
documentclass: report
|
||||||
|
classoption: oneside
|
||||||
|
#classoption: draft
|
||||||
|
mainfont: Arial
|
||||||
|
sansfont: Arial
|
||||||
|
fontsize: 12pt
|
||||||
|
|
||||||
|
toc: true
|
||||||
|
|
||||||
|
header-includes:
|
||||||
|
# For \textcolor
|
||||||
|
- \usepackage{xcolor}
|
||||||
|
|
||||||
|
# Long tables (used by pandoc latex template itself)
|
||||||
|
- \usepackage{longtable}
|
||||||
|
|
||||||
|
# Localization to German for all package injections
|
||||||
|
- \usepackage[ngerman]{babel}
|
||||||
|
|
||||||
|
# Fancy header!
|
||||||
|
- \usepackage{fancyhdr}
|
||||||
|
- \usepackage{graphicx}
|
||||||
|
- \pagestyle{fancy}
|
||||||
|
- \fancyhf{}
|
||||||
|
- \fancyhead[L]{\bfseries{\large{ITS \\ Dateisysteme}}}
|
||||||
|
- \fancyhead[R]{\raisebox{-0.1\height}{\includegraphics[height=32pt]{img/steinbeis.png}}}
|
||||||
|
- \fancyfoot[L]{\textcolor{gray}{Carl Kittelberger}}
|
||||||
|
- \fancyfoot[R]{\textcolor{gray}{\bfseries{Seite \thepage}}}
|
||||||
|
- \renewcommand{\headrulewidth}{0.4pt}
|
||||||
|
- \renewcommand{\footrulewidth}{0.4pt}
|
||||||
|
- \setlength\headheight{36pt}
|
||||||
|
- \fancypagestyle{plain}{}
|
||||||
|
---
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
# Strukturierung einer Festplatte
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Eine Festplatte wird an sich so aufgeteilt, dass die Daten darauf für den Computer zuverlässig addressierbar werden. Dies geschieht dadurch, dass die Festplatte zuerst in Datenringe eingeteilt wird, die sich dann **Datenspuren** nennen. Diese Spuren wiederum werden in jeweils gleich lange Segmente eingeteilt, das sind dann die **Datensektoren**.
|
||||||
|
|
||||||
|
# Begriffsklärung
|
||||||
|
|
||||||
|
Ein Dateisystem ist eine Verwaltungsabstraktion der Daten auf einer Festplatte mittels Zeigereinträgen und weiteren Metadaten wie Dateinamen und Dateigrößen. Jedes Dateisystem macht auf unterschiedliche Art und Weise Nutzen von dem zur Verfügung stehenden Speicher, hat daher eine eigene Stärke und kann unterschiedliche Aspekte eines Betriebssystems zum eigenen Vorteil nutzen.
|
||||||
|
|
||||||
|
In der Regel können mehrere Dateisysteme auf der gleichen Festplatte durch Partitionierung gleichzeitig existieren, andere Dateisystem erlauben auch die Verbindung mehrerer Festplatten oder verschiedener Partitionen auf mehreren Festplatten zu einem großen Speicher.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
# Oft verwendete Dateisysteme
|
||||||
|
|
||||||
|
## FAT
|
||||||
|
|
||||||
|
Das FAT-Dateisystem (kurz für *File Allocation Table*) ist einer der ältesten Dateisysteme und wird hauptsächlich seit DOS auf Computern eingesetzt. Auch bei modernen Betriebssystemen wird FAT immer noch oft zur portablen und weitestgehend kompatiblen Speicherung von Dateien auf USB-Sticks verwendet.
|
||||||
|
|
||||||
|
FAT teilt den gesamten Speicher in so genannte Cluster ein, welche abgegrenzte Datensegmente darstellen. Die maximale Anzahl solcher Cluster ist limitiert, somit kann es vor allem bei vielen großen Dateien dazu kommen, dass trotz ungenutztem echten Speicherplatz ein Speichern von Daten nicht mehr möglich ist.
|
||||||
|
|
||||||
|
Es gibt zwei oft anzutreffende Variationen von FAT, FAT16 und FAT32, die jeweils mit unterschiedlichen maximalen Partitionsgrößen und Clusteranzahlen arbeiten und somit unterschiedliche Dateianzahlen und -größen zulassen. Heutzutage kommt eigentlich nur noch FAT32 zum Einsatz, vor allem auf portablen Medien wie USB-Speichersticks, SD-Karten u. Ä.
|
||||||
|
|
||||||
|
## NTFS
|
||||||
|
|
||||||
|
Das NTFS-Dateisystem (*New Technology File System*) wurde von Microsoft im Zuge der Entwicklung des NT-Kernels für ihr Windows-Betriebssystem entwickelt. Ein Hauptvorteil von NTFS gegenüber von vor allem FAT ist die Möglichkeit, einzelnen Dateien oder Verzeichnissen fein festgelegte Berechtigungen zuzuweisen. So ist es zum Beispiel möglich, auf einen Ordner bestimmten Benutzern Vollzugriff zu geben, während andere Benutzer eventuell nur Lesezugriff oder gar keinen Zugriff erhalten. Dieses Berechtigungssystem nennt sich auch ACL (*Access Control List*).
|
||||||
|
|
||||||
|
Das NTFS-Dateisystem ist bis heute sehr aktiv bei allen modernen Windows-Betriebssystemen inkl. Windows 10 im Einsatz.
|
||||||
|
|
||||||
|
## ext2/3/4
|
||||||
|
|
||||||
|
ext2/3/4 (*second/third/fourth extended filesystem*) sind hauptsächlich auf Linux-Installationen verwendete Dateisysteme. ext2 is dabei die älteste Version, mit ext3 als größere Erweiterung zu ext2 mit Journaling-Funktionalitäten. Die neueste Version ext4 hebt die Einschränkungen der vorherigen Versionen an indem es größere Dateien und Partitionsgrößen zulässt und die maximale Anzahl von Unterverzeichnissen in einem Verzeichnis erhöht. Außerdem wurden weitere Optimierungen eingeführt die die Performance des Dateisystems insgesamt verbessern. Die ext-Dateisysteme erlauben einfache Rechteverwaltung auf Basis von Informationen über den Besitzer und die Gruppe des Besitzers. Das Setzen der Rechte geschieht unter Linux üblicherweise über den `chmod` Befehl der die Rechte für den Besitzer, die Besitzergruppe und alle anderen in Zahlenform entgegennimmt.
|
||||||
|
|
||||||
|
ext4 ist heutzutage Standard bei neuen Linuxinstallationen und verbreitet sich daher zügig.
|
||||||
|
|
||||||
|
# Spezielle Dateisysteme
|
||||||
|
|
||||||
|
Die folgenden Dateisysteme sind Beispiele die für spezielle Zwecke oder Anforderungen zum Einsatz kommen.
|
||||||
|
|
||||||
|
## zfs
|
||||||
|
|
||||||
|
zfs (*Zettabyte File System*) ist ein für extrem große Festplattengrößen optimiertes Dateisystem. Zur Laufzeit erstellt der zfs-Treiber auf dem entsprechenden Betriebssystem im RAM einen recht großen Cachespeicher, den dieser dann mit Verlinkungen zu oft verwendeten Daten auf der Festplatte befüllt, während diese Verlinkungen auch auf der Festplatte selbst aufgezeichnet werden. Dadurch, dass diese Daten komplett im RAM bereitstehen, entsteht ein immenser Geschwindigkeitsvorteil, vor allem bei per RAID zusammengeschalteten Festplatten, allerdings ist der offensichtliche Nachteil die riesige Menge an RAM die benötigt wird. Diese Menge hängt auch von der insgesamten Speichergröße ab.
|
||||||
|
|
||||||
|
## VMFS
|
||||||
|
|
||||||
|
VMFS (*Virtual Machine File System*) wurde von VMware entwickelt als Dateisystem zur Verwaltung von Festplattendaten von virtuellen Maschinen. Im Speziellen kann dieses Dateisystem sicherstellen, dass der Betrieb virtueller Maschinen nicht dadurch gestört wird, dass ein Programm oder eine zweite virtuelle Maschine gleichzeitig auf die gleichen Daten zugreift. Es erlaubt außerdem das Anlegen virtueller Festplatten über Festplattengrenzen hinweg, solange weitere Festplatten existieren die den zusätzlichen benötigten Speicher anbieten können.
|
||||||
|
|
||||||
|
## OverlayFS/Overlay2
|
||||||
|
|
||||||
|
OverlayFS ist ein quelloffenes Dateisystem das auf Linux verwendet wird um logische Kombinationen verschiedener vorher existierender Dateisysteme anzubieten. Dieses Dateisystem wird vor allem in Zusammenhang mit so genannten Linux-Containern verwendet, da Containerverwaltungssoftware oft über das Internet bereitgestellte Dateisystemschichten zusammensetzen muss um eine komplette Betriebssystemumgebung für zu betreibende Software automatisiert bereitstellen zu können. Dies wiederum ermöglicht das reproduzierbare und portable Ausführen von jeglicher Software ohne den oft nervigen und komplexen Installationsaufwand.
|
||||||
|
|
||||||
|
# Anlegen eines Dateisystems auf der Festplatte
|
||||||
|
|
||||||
|
Um ein Dateisystem auf Festplatten anlegen zu können benötigt es immer eine entsprechende Softwareimplementierung. Die Implementierung ist für jedes Betriebssystem unterschiedlich. Allgemein muss jedoch bevor das Dateisystem angelegt werden kann immer zumindest eine leere Rohpartition auf der Festplatte vorangelegt sein.
|
||||||
|
|
||||||
|
## Windows
|
||||||
|
|
||||||
|
Unter Windows übernimmt das Betriebssystem selbst die Erstellung des Dateisystems. In der grafischen Benutzeroberfläche muss im Windows Explorer die entsprechende Partition mit der rechten Maustaste angeklickt und darauf der Unterpunkt **Formattieren...** aufgerufen werden. Über die Eingabeaufforderung kann die Formattierung mit dem `format`-Tool durchgeführt werden. Um zum Beispiel ein FAT32-Dateisystem auf der Partition die `F:` benannt wurde anzulegen, kann der Befehl `format /FS:FAT32 /Q`, wobei der `/Q`-Parameter optional ist und die Formattierung beschleunigt indem es die komplette Überschreibung der vorherigen Daten mit Null-Bytes überspringt.
|
||||||
|
|
||||||
|
## Linux
|
||||||
|
|
||||||
|
Unter Linux existieren für die meisten Dateisysteme jeweilige `mkfs`-Werkzeugprogramme. Diese Programme benötigen einen Pfad zu der Partition auf der das Dateisystem angelegt werden soll. So kann zum Beispiel mit `mkfs.ext4 /dev/sda1` die erste Partition auf der ersten erkannten Festplatte auf dem System mit einem leeren ext4-Dateisystem beschrieben werden.
|
||||||
|
|
||||||
|
Im Gegensatz zu Windows können unter Linux sehr oft Softwarepakete nachinstalliert werden die es erlauben auf weitere Dateisysteme zuzugreifen.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Quellenangaben
|
||||||
|
|
||||||
|
Alle Quellen wurden zuletzt am 15.07.2017 geprüft.
|
||||||
|
|
||||||
|
- [http://www.allround-pc.com/artikel/wissen/2009/fat32-ntfs-exfat-was-man-ueber-diese-dateisysteme-wissen-sollte](http://www.allround-pc.com/artikel/wissen/2009/fat32-ntfs-exfat-was-man-ueber-diese-dateisysteme-wissen-sollte)
|
||||||
|
- [http://www.informatik.uni-ulm.de/ni/Lehre/WS03/TechInf2/2003w-TI2-D3-4.pdf](http://www.informatik.uni-ulm.de/ni/Lehre/WS03/TechInf2/2003w-TI2-D3-4.pdf)
|
||||||
|
- [https://de.wikipedia.org/wiki/Dateisystem](https://de.wikipedia.org/wiki/Dateisystem)
|
||||||
|
- [https://de.wikipedia.org/wiki/Ext4](https://de.wikipedia.org/wiki/Ext4)
|
||||||
|
- [https://opensource.com/article/17/5/introduction-ext4-filesystem](https://opensource.com/article/17/5/introduction-ext4-filesystem)
|
||||||
|
- [https://wiki.ubuntuusers.de/ext/](https://wiki.ubuntuusers.de/ext/)
|
||||||
|
- [https://www.heise.de/ct/artikel/Das-Linux-Dateisystem-Ext4-221262.html](https://www.heise.de/ct/artikel/Das-Linux-Dateisystem-Ext4-221262.html)
|
||||||
|
- [http://www.admin-magazin.de/Online-Artikel/ZFS-Snapshots-RAID-und-Datensicherheit](http://www.admin-magazin.de/Online-Artikel/ZFS-Snapshots-RAID-und-Datensicherheit)
|
||||||
|
- [http://www.searchstorage.de/definition/VMware-VMFS-Virtual-Machine-File-System](http://www.searchstorage.de/definition/VMware-VMFS-Virtual-Machine-File-System)
|
||||||
|
- [https://www.heise.de/open/meldung/Linux-Kernel-mit-OverlayFS-Dateisysteme-uebereinander-lagern-2432269.html](https://www.heise.de/open/meldung/Linux-Kernel-mit-OverlayFS-Dateisysteme-uebereinander-lagern-2432269.html)
|
|
@ -0,0 +1,42 @@
|
||||||
|
---
|
||||||
|
title: Dateisysteme
|
||||||
|
author: Carl Kittelberger
|
||||||
|
|
||||||
|
papersize: a4
|
||||||
|
classoption: oneside
|
||||||
|
mainfont: Arial
|
||||||
|
sansfont: Arial
|
||||||
|
|
||||||
|
header-includes:
|
||||||
|
- \usepackage{longtable}
|
||||||
|
---
|
||||||
|
|
||||||
|
| Abkürzung | Beschreibung |
|
||||||
|
|-----------|----------------------------------------------------------------------|
|
||||||
|
| Btrfs | **B-tr**ee **F**ile **S**ystem (oft "Butter FS" ausgesprochen) |
|
||||||
|
| exFAT | **ex**tended **F**ile **A**llocation **T**able |
|
||||||
|
| ext2/3/4 | **ext**ended File System 2/3/4 |
|
||||||
|
| F2FS | **F**lash-**f**riendly File System |
|
||||||
|
| FAT | **F**ile **A**llocation **T**able |
|
||||||
|
| HPFS/NTFS | **NT-F**ile **S**ystem |
|
||||||
|
| ISO 9660 | Von DIN standardisiertes CD-Dateisystem, wird abgelöst von UDF |
|
||||||
|
| ReiserFS | Entwickelt von Hans Reiser |
|
||||||
|
| UDF | **U**niversal **D**isk **F**ormat (für CDs) |
|
||||||
|
| zfs | **Z**ettabyte **F**ile **S**ystem, von Java Microsystems entwickelt. |
|
||||||
|
| ⋮ | |
|
||||||
|
|
||||||
|
journaling file systems: führen ein Journal über Änderungen
|
||||||
|
|
||||||
|
Ältere Dateisysteme führen kein Journal.
|
||||||
|
|
||||||
|
## Arbeitsauftrag/Hausarbeit
|
||||||
|
|
||||||
|
Recherchieren Sie im Internet nach Dateisystemen. Welche Dateisysteme werden aktuell eingesetzt, wie gelangt ein Dateisystem auf die Festplatte? Worin liegen die Hauptunterschiede?
|
||||||
|
|
||||||
|
Ergebnis in einer Datei abliefern mit Deckblatt, Inhaltsverzeichnis, strukturiertem Inhalt, Bildern, und Quellenangabe!
|
||||||
|
|
||||||
|
Einzelarbeit - kein Teamwork!
|
||||||
|
|
||||||
|
Achtung: **NOTEN!**
|
||||||
|
|
||||||
|
Umfang: > 4 Seiten Inhalt, max. 8 Seiten Inhalt, Schriftart Arial 10pt/11pt
|
|
@ -0,0 +1,326 @@
|
||||||
|
---
|
||||||
|
author: Carl Kittelberger
|
||||||
|
title: "ITS: Hypertext Transfer Protocol"
|
||||||
|
date: 2018-01-25
|
||||||
|
|
||||||
|
papersize: a4
|
||||||
|
documentclass: report
|
||||||
|
classoption: oneside
|
||||||
|
#classoption: draft
|
||||||
|
mainfont: Arial
|
||||||
|
sansfont: Arial
|
||||||
|
fontsize: 12pt
|
||||||
|
|
||||||
|
toc: true
|
||||||
|
|
||||||
|
header-includes:
|
||||||
|
|
||||||
|
# For \textcolor
|
||||||
|
- \usepackage{xcolor}
|
||||||
|
|
||||||
|
# Long tables (used by pandoc latex template itself)
|
||||||
|
- \usepackage{longtable}
|
||||||
|
|
||||||
|
# Localization to German for all package injections
|
||||||
|
- \usepackage[ngerman]{babel}
|
||||||
|
|
||||||
|
|
||||||
|
# Fancy header!
|
||||||
|
- \usepackage{fancyhdr}
|
||||||
|
- \usepackage{graphicx}
|
||||||
|
- \pagestyle{fancy}
|
||||||
|
- \fancyhf{}
|
||||||
|
- \fancyhead[L]{\large{\textit{\textbf{ITS} \\ Hypertext Transfer Protocol}}}
|
||||||
|
- \fancyhead[R]{\raisebox{-0.1\height}{\includegraphics[height=32pt]{img/steinbeis.png}}}
|
||||||
|
- \fancyfoot[L]{\textcolor{gray}{Carl Kittelberger}}
|
||||||
|
- \fancyfoot[R]{\textcolor{gray}{\bfseries{Seite \thepage}}}
|
||||||
|
- \renewcommand{\headrulewidth}{0.4pt}
|
||||||
|
- \renewcommand{\footrulewidth}{0.4pt}
|
||||||
|
- \setlength\headheight{36pt}
|
||||||
|
- \fancypagestyle{plain}{}
|
||||||
|
|
||||||
|
# monospace
|
||||||
|
- \lstset{basicstyle=\footnotesize\ttfamily,breaklines=true}
|
||||||
|
- \lstset{framextopmargin=50pt}
|
||||||
|
---
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
# Definition
|
||||||
|
|
||||||
|
HTTP (*HyperText Transfer Protocol*) ist ein Standard, der festlegt wie
|
||||||
|
Webseiten über das Internet übertragen werden. Es definiert ein Protokoll auf
|
||||||
|
der Sitzungsschicht des OSI-Schichtenmodells, welches auf Basis des
|
||||||
|
TCP/IP-Stacks läuft.
|
||||||
|
|
||||||
|
Das Protokoll an sich definiert die Übertragung der Anfrage und der Antwort
|
||||||
|
im Klartext. Dies soll die konsistente Implementierung deutlich vereinfachen.
|
||||||
|
|
||||||
|
Jedoch wird HTTP heutzutage oft in anderen Protokollen eingebettet wie zum
|
||||||
|
Beispiel TLS für den sicheren, verschlüsselten Zugriff auf eine Website oder auch
|
||||||
|
Tor für dezentralisierte, anonymisierte Zugriffe auf Websites.
|
||||||
|
|
||||||
|
# Geschichte
|
||||||
|
|
||||||
|
Entwickelt wurde HTTP als Teil des Webprojekts an der Forschungseinrichtung
|
||||||
|
CERN von Tim Berners-Lee, Roy Fielding und anderen Teilnehmern. Die erste
|
||||||
|
bekannte Version von HTTP war die Version 0.9.
|
||||||
|
|
||||||
|
## HTTP/0.9
|
||||||
|
|
||||||
|
Diese frühe Version von HTTP definiert ein Subset des kompletten Protokolls
|
||||||
|
als Prototyp und wurde bereits so entworfen, dass zukünftige Versionen von HTTP
|
||||||
|
rückwärtskompatibel mit dieser sind.
|
||||||
|
|
||||||
|
Hier wurden bereits fundamentale Eigenschaften des Protokolls, wie dessen Abhängigkeit
|
||||||
|
vom TCP/IP-Stack, der Port 80 für Datenaustausch sowie das Nutzen von ASCII-Klartext
|
||||||
|
festgelegt. Nach jeder Anfrage, die verarbeitet wurde, wurde die Verbindung direkt
|
||||||
|
wieder geschlossen.
|
||||||
|
|
||||||
|
## HTTP/1.0
|
||||||
|
|
||||||
|
Diese Version von HTTP ist die meistgenutzte Version für die einfachsten Anfragen
|
||||||
|
zu Webservern und ist die erste mit einer vollständigen Spezifikation. Sie
|
||||||
|
unterstützt unter anderem die Kodierung von Inhalten mit GZip/Compress.
|
||||||
|
|
||||||
|
## HTTP/1.1
|
||||||
|
|
||||||
|
Die Version 1.1 von HTTP wurde 1999 unter der [RFC 2616](https://tools.ietf.org/html/rfc2616)
|
||||||
|
publiziert. Neuerungen in dieser Version sind unter anderem das Wiederverwenden
|
||||||
|
einer bereits aufgebauten HTTP-Verbindung über mehrere HTTP-Anfragen hinweg
|
||||||
|
erlaubt (siehe `Keep-Alive` Header später). Außerdem erlaubt diese Version
|
||||||
|
auch das Herunterladen von Teilen einer Datei anstatt die gesamte Datei
|
||||||
|
herunterladen zu müssen, um zum Beispiel bereits angefangene Übertragungen
|
||||||
|
nahtlos fortzusetzen.
|
||||||
|
|
||||||
|
Es werden auch weitere HTTP-Methoden neben `GET` und `POST` eingeführt, die
|
||||||
|
für das direkte Speichern, Löschen und Verwalten von Dateien auf einem Server
|
||||||
|
geeignet sind. Diese Methoden werden vor allem bei WebDAV eingesetzt.
|
||||||
|
|
||||||
|
Später wurden über mehrere RFCs hinweg (7230-7235) einige Aspekte von HTTP/1.1
|
||||||
|
noch einmal klarer spezifiziert um Unklarheiten zur Implementierung zu beseitigen.
|
||||||
|
|
||||||
|
## HTTP/2
|
||||||
|
|
||||||
|
Zu dieser im Mai 2015 von der IETF verabschiedeten Version von HTTP wurde maßgeblich
|
||||||
|
beigetragen von Google und Microsoft, die jeweils Versuche gemacht haben, HTTP
|
||||||
|
in Hinsicht auf Geschwindigkeit und Latenz zu verbessern. Ein bekannter und
|
||||||
|
grundgebender Vorgänger dieser Version war das von Google kreierte SPDY-Protokoll.
|
||||||
|
|
||||||
|
In dieser Version können mehrere Anfragen zusammengefasst werden ("Multiplex")
|
||||||
|
und dann zum Beispiel gemeinsam inklusive Headerdaten komprimiert werden, Inhalte
|
||||||
|
können binär kodiert übertragen werden und der Server kann von sich aus Inhalte
|
||||||
|
in den Client vorladen ("push"-Verfahren).
|
||||||
|
|
||||||
|
HTTP/2 funktioniert — obwohl die Spezifikation das mittlerweile nicht mehr
|
||||||
|
strikt einschränkt — so gut wie nur noch auf TLS-verschlüsselten Verbindungen
|
||||||
|
("HTTPS"). Hintergrund ist der Gedanke, dass Verbindungen grundsätzlich
|
||||||
|
verschlüsselt sein sollten um vor allem Man-In-The-Middle-Attacken (MITM)
|
||||||
|
und ähnliche unerlaubte Zugriffe auf Klartextbasis zu verhindern.
|
||||||
|
|
||||||
|
Diese Version von HTTP wird in der Analyse nicht behandelt, da die Verschlüsselung
|
||||||
|
und binäre Kodierung den Rahmen des Dokuments sprengt.
|
||||||
|
|
||||||
|
# Analyse
|
||||||
|
|
||||||
|
Die Analyse der Anfragen findet auf der obersten OSI-Schicht statt, also wird
|
||||||
|
nur der Inhalt der eigentlichen Anfrage analysiert, nicht die Daten auf TCP-,
|
||||||
|
IP- oder Ethernet-Schicht.
|
||||||
|
|
||||||
|
Zum Auslesen der Anfragen und Antworten wird die Software Wireshark verwendet,
|
||||||
|
die vorher wie im folgenden Screenshot konfiguriert wurde:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Jede HTTP-Anfrage wird in einer TCP-Verbindung gekapselt, entsprechend wird zuerst mit TCP jeweils eine Verbindung per SYN-/ACK-Paketaustausch aufgebaut bevor die eigentliche HTTP-Anfrage verschickt wird:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Wireshark kann die eigentlich HTTP-Anfrage aus dem Paketstrom wieder zusammensetzen, indem man per Rechtsklick, Auswahl von "Folgen" und "TCP Stream" den Inhalt verfolgt:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Unten stehende Anfragen und Antworten sind jeweils zusammenhängend.
|
||||||
|
|
||||||
|
## `GET`-Anfrage
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Anfrage
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET / HTTP/1.1
|
||||||
|
Host: test.icedream.tech
|
||||||
|
Connection: keep-alive
|
||||||
|
Cache-Control: max-age=0
|
||||||
|
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
|
||||||
|
Upgrade-Insecure-Requests: 1
|
||||||
|
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
|
||||||
|
DNT: 1
|
||||||
|
Accept-Encoding: gzip, deflate
|
||||||
|
Accept-Language: en-US,en;q=0.9
|
||||||
|
```
|
||||||
|
|
||||||
|
Die obige Anfrage wurde vom Chromium-Browser generiert, die Seite die hier aufgerufen
|
||||||
|
wurde ist http://test.icedream.tech.
|
||||||
|
|
||||||
|
Die erste Zeile enthält die Information, dass diese Anfrage eine `GET`-Anfrage
|
||||||
|
ist, also keine Daten hochlädt sondern nur Daten anfordert. Sie enthält außerdem
|
||||||
|
die Information, dass Daten vom Pfad `/`, also dem Wurzelverzeichnis angefragt
|
||||||
|
werden. Zum Schluss gibt der Browser an, dass er auf der HTTP-Version 1.1
|
||||||
|
kommuniziert.
|
||||||
|
|
||||||
|
Nach der ersten Zeile folgen die eigentlichen Kopf- bzw. Headerinformationen
|
||||||
|
zu der Anfrage:
|
||||||
|
|
||||||
|
- `Host` gibt an über welchen DNS-Hostnamen die Website erreicht wurde. Dies
|
||||||
|
erlaubt dem Webserver Seiten für verschiedene Domains anzubieten und über
|
||||||
|
den Hostnamen zu entscheiden welche Website ausgeliefert wird.
|
||||||
|
- `Connection` gibt an ob die Verbindung nach Verarbeitung dieser Anfrage und
|
||||||
|
Rückgabe der Antwort geschlossen wird oder nicht. Die meisten modernen
|
||||||
|
Browser wollen die TCP-Verbindung aus Leistungsgründen aufrecht erhalten
|
||||||
|
und geben daher hier den Wert `keep-alive` an. Ansonsten kann hier `close`
|
||||||
|
übergeben werden, dann schließt der Webserver nach Beantwortung diese
|
||||||
|
TCP-Verbindung.
|
||||||
|
- `Cache-Control` gibt Informationen zum Cachingverhalten des Browsers an.
|
||||||
|
Diese Information ist in der Regel irrelevant.
|
||||||
|
- `User-Agent` gibt einige Informationen über den Client an der genutzt wurde
|
||||||
|
um die HTTP-Anfrage zu generieren. In diesem Fall gibt der Browser an ein
|
||||||
|
Mozilla-kompatibler Browser zu sein (`Mozilla/5.0`). Die meisten modernen
|
||||||
|
Browser geben hier Mozilla aus historischen Gründen an und geben stattdessen
|
||||||
|
nebendran genauere Informationen an. In diesem Fall folgt, dass das
|
||||||
|
Betriebssystem des Browsers ein Linux-basiertes 64-Bit System mit einem
|
||||||
|
Desktop auf Basis von X11 ist, sowie dass der Browser die Apple WebKit-Engine
|
||||||
|
verwendet, sich wie Gecko verhält und es auch ein Chrome-Browser sowie
|
||||||
|
ein Safari-kompatibler Browser ist, da Safari eine ähnliche Engine verwendet.
|
||||||
|
- `Upgrade-Insecure-Requests` ist eine Anfrage die moderne Browser mitschicken
|
||||||
|
um den Webserver aus Sicherheitsgründen zu bitten, auf HTTPS umzuleiten,
|
||||||
|
wenn eine HTTPS-Alternative existiert.
|
||||||
|
- `Accept` enthält die Dateitypen, die der Browser von der Website akzeptieren
|
||||||
|
würde samt Präferenzwerten.
|
||||||
|
- `DNT` (*Do Not Track*) ist ein Header, der von modernen Browsern
|
||||||
|
mitgeschickt wird um anzudeuten, dass der Benutzer des Browsers sich ungerne
|
||||||
|
tracken lassen würde.
|
||||||
|
- `Accept-Encoding` gibt an, welche Kodierformate der Browser unterstützt um
|
||||||
|
den Inhalt wieder entziffern zu können, in diesem Fall akzeptiert der Browser
|
||||||
|
`gzip`- und `deflate`-kodierte Daten neben den bereits implizierten
|
||||||
|
Klartextdaten. Diese Information kann der Server nutzen um Traffic-sparenden
|
||||||
|
Inhalt zu liefern.
|
||||||
|
- `Accept-Language` gibt an, welche Sprachen der Browser vorzieht. Je nach
|
||||||
|
Sprache kann sich die Website dazu entscheiden, zum Beispiel die englische
|
||||||
|
Version einer Seite statt der deutschen auszuliefern.
|
||||||
|
|
||||||
|
### Antwort
|
||||||
|
|
||||||
|
```http
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Content-Encoding: gzip
|
||||||
|
Content-Length: 760
|
||||||
|
Content-Type: text/plain
|
||||||
|
Date: Mon, 22 Jan 2018 16:11:59 GMT
|
||||||
|
Server: Caddy
|
||||||
|
Server: Caddy
|
||||||
|
Server: Caddy
|
||||||
|
Vary: Accept-Encoding
|
||||||
|
|
||||||
|
............[s.8....)...j.T.....<.0..MeQ..G....o.EB..w.n..e.d..~..t.:+H.<..s.w.4T..2...-..Od.2A.JkH6P.P"y'.......u%v.B............/.
|
||||||
|
=...{(.Vj..F[(.=l.m...g./Q ?.Piru.7Z..@Q.i.tU.,.We...i.."/uuu."..le...'......r\.C:.72.b......b
|
||||||
|
.m.t..dQ$*.Z..q.....j.|.A..KK.2...6E3.E..>.....k.B.Y..z.../U...n...Uvfz..t...}^.-.N..a...,.|Op.Fq*..e..}N......S?8...D5."...9.\8..Y.z......}[.@./.[......T...J.i.H.}Xw:_.Le..:.......E..
|
||||||
|
6.J.........T.g-..;@.Dw.Gd..<.c.#m.....N...y+K.,;..u8....6.....!..F.......:m...H.t.^.g..|...S..w......w.........P..w.).nG#....!./i.q.u....b]..........j...,qnlT....J#.#...T....S.88M7*;K......I[...u/x..-.. .....Q.l......)..I...=.&z..[.SA....{..]|....p....)v.x.[r.y.....S_3....1.X.jw.N....9.C.A.../....6..7..k.Zu...r.-.".'berFq.?.....c3.?.....#1.-...
|
||||||
|
```
|
||||||
|
|
||||||
|
Die Header-Daten setzen sich hier wie folgt zusammen:
|
||||||
|
|
||||||
|
- Die erste Zeile gibt die HTTP-Version des Servers (`HTTP/1.1`) und den
|
||||||
|
Statuscode für die Anfrage same Bedeutungstext (`200 OK`) zurück.
|
||||||
|
- `Content-Encoding` gibt an, dass der angefragte Inhalt kodiert wurde, und
|
||||||
|
wie der Inhalt kodiert wurde (in diesem Fall GZip-kodiert).
|
||||||
|
- `Content-Length` gibt die Länge des Inhalts in Bytes zurück. Dieser Header
|
||||||
|
ist tatsächlich optional und kann für endlos streamende Daten, wie z. B.
|
||||||
|
Livemedien (Icecast/Shoutcast o. Ä.) weggelassen werden.
|
||||||
|
- `Content-Type` gibt den MIME-Typen des Inhalts an. In diesem Fall wird ein
|
||||||
|
Klartextinhalt zurückgegeben. Würde der Inhalt auf einer Festplatte gespeichert
|
||||||
|
werden, hätte die Datei üblicherweise die Dateierweiterung `.txt` gehabt.
|
||||||
|
Weitere Beispiele wären:
|
||||||
|
- `text/html` (HTML-Inhalte),
|
||||||
|
- `application/javascript` (JavaScript-Ressourcen)
|
||||||
|
- `audio/mpeg` (MP3-Audiodateien)
|
||||||
|
- `video/mp4` (MP4-Videodateien)
|
||||||
|
- oder `image/jpeg` (JPEG-Bilder).
|
||||||
|
- `Date` beinhaltet das aktuelle Datum und die aktuelle Uhrzeit auf dem Server.
|
||||||
|
- `Server` gibt die Software aus auf der der Webserver läuft. In diesem Fall
|
||||||
|
wurden aufgrund eines Proxysetups auf dem Webserver mehrere Server-Header
|
||||||
|
hintereinander verschickt.
|
||||||
|
- `Vary` gibt Header an, die ein Cachingserver, der vor dem Webserver stehen
|
||||||
|
könnte, auswerten kann um zu entscheiden, ob bereits zwischengespeicherter
|
||||||
|
Inhalt für die gegebene Anfrage verwendet werden kann oder ob der Inhalt
|
||||||
|
aktualisiert werden muss. Für einen Browser ist dieser Header in der Regel
|
||||||
|
irrelevant.
|
||||||
|
|
||||||
|
Der Inhalt ist in diesem Fall kodiert. Wurde kein `Content-Encoding` angegeben,
|
||||||
|
wäre der Inhalt im Klartext sichtbar. Die Seite hat zwar sogenannte AJAX-Kapabilitäten, sprich sie kann bereits im Hintergrund Informationen zur Suchanfrage abschicken, die hier dafür benutzt werden Suchanfragen vor dem Abschicken der eigentlichen Suche zu liefern, aber diese Anfragen ignorieren wir hier.
|
||||||
|
|
||||||
|
## `POST`-Anfrage
|
||||||
|
|
||||||
|
Für den Test einer solchen Frage bin ich auf die unverschlüsselte Version der Seite
|
||||||
|
http://wiki.selfhtml.org gegangen und habe das Loginformular dort verwendet mit diesen Eingaben:
|
||||||
|
|
||||||
|
- Username: `testuser`
|
||||||
|
- Passwort: `testpasswort`
|
||||||
|
- Angemeldet bleiben: ja
|
||||||
|
- Vorherige Aktion: Suche nach Artikeln mit Wort `test`
|
||||||
|
|
||||||
|
Natürlich sind diese Daten nicht in ihrer Nutzerdatenbank existent, wir verwenden sie hier nur zu Testzwecken.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /index.php?title=Spezial:Anmelden&returnto=Spezial:Suche&returnquery=profile%3Ddefault%26fulltext%3DSearch%26search%3Dtest HTTP/1.1
|
||||||
|
Host: wiki.selfhtml.org
|
||||||
|
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
|
||||||
|
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
|
||||||
|
Accept-Language: de,en-US;q=0.7,en;q=0.3
|
||||||
|
Accept-Encoding: gzip, deflate
|
||||||
|
Referer: http://wiki.selfhtml.org/index.php?title=Spezial:Anmelden&returnto=Spezial:Suche&returnquery=profile%3Ddefault%26fulltext%3DSearch%26search%3Dtest
|
||||||
|
Content-Type: application/x-www-form-urlencoded
|
||||||
|
Content-Length: 204
|
||||||
|
Cookie: webwiki_session=0v7632i2prj2ugc7mfjn60cbmle378fl
|
||||||
|
Connection: keep-alive
|
||||||
|
Upgrade-Insecure-Requestüs: 1
|
||||||
|
|
||||||
|
wpName=testuser&wpPassword=testpasswort&wpRemember=1&wploginattempt=Anmelden&wpEditToken=%2B%5C&title=Spezial%3AAnmelden&authAction=login&force=&wpLoginToken=c36f62fc9e3043163962cbb7530e29e35a69764f%2B%5C
|
||||||
|
```
|
||||||
|
|
||||||
|
Der eigentliche Unterschied zur `GET`-Anfrage ist eigentlich nur die Anfrage selbst. Die Antwort wird ähnlich, wenn nicht genau gleich aufgebaut sein wie bei der `GET`-Anfrage, da auf diese Anfrage wieder nur ein Inhalt ausgeliefert wird, auch wenn er dynamisch als Reaktion zum Login generiert wurde.
|
||||||
|
|
||||||
|
- Die erste Zeile enthält jetzt als Methode `POST` statt `GET`.
|
||||||
|
- Der Client hat jetzt einen `Referer`-Header mitverschickt um anzudeuten von welcher Seite die Daten gekommen sind.
|
||||||
|
- Außerdem wurde ein `Cookie` mitverschickt, den der Client bei sich gespeichert hat um dem Server bei der Zuweisung von Sitzungsdaten zu helfen.
|
||||||
|
- Der Browser hat einen `Content-Length` Header verschickt. Wie bei der Antwort zu einer `GET`-Anfrage auch wird hier die Länge des verschickten Inhalts angegeben, in diesem Fall von dem Inhalt der mit der `POST`-Anfrage verschickt wurde.
|
||||||
|
|
||||||
|
Nach den Headerdaten folgt ein Query als Inhalt, so wie man ihn auch von dynamischen Seiten von der Addresszeile kennt. Dieser Inhalt wird zu keinem Zeitpunkt dem Nutzer direkt angezeigt, sondern der gesamte Inhalt wird direkt vom Server ausgewertet. Das ist der Sinn und Zweck einer `POST`-Anfrage, nämlich Daten beliebiger Länge direkt dem Server zur Verarbeitung zukommen zu lassen.
|
||||||
|
|
||||||
|
In diesem Query sind unter anderem folgende Daten enthalten (unklare oder unwichtige Daten habe ich hier weggelassen):
|
||||||
|
|
||||||
|
- `wpName` mit Wert `testuser` — unser Username.
|
||||||
|
- `wpPassword` mit Wert `testpasswort` — unser Passwort.
|
||||||
|
- `wpRemember` mit Wert `1` — unsere Checkbox die sagt ob wir angemeldet bleiben wollen. Dafür wird auch unser Cookie verwendet.
|
||||||
|
- `wploginattempt` — Der Inhalt dieses Wertes ist der Inhalt des Absenden-Knopfs, `Anmelden`. Der Browser kann sich zwischen mehreren Absendknöpfen entscheiden und nur den Wert schicken, den der Benutzer auch angeklickt hat.
|
||||||
|
- `authAction` mit Wert `login` — gibt dem Server die Aktion an, die vom Formular angetriggert wird.
|
||||||
|
- `wpLoginToken` — enthält den Token für das Formular zum Login. Jedes Formular wird per sogenanntem "CSRF"-Token abgesichert um das Versenden eines solchen Formulars von einer fremden Seite zu vermeiden und der muss genau mit dem übereinstimmen was der Server erwartet.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Quellenangaben
|
||||||
|
|
||||||
|
Alle Quellen wurden zuletzt am 24.01.2018 geprüft.
|
||||||
|
|
||||||
|
- https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
|
||||||
|
- https://wiki.selfhtml.org/wiki/HTTP/WebDAV
|
||||||
|
- https://www.w3.org/Protocols/HTTP/1.0/spec.html
|
||||||
|
- https://www.w3.org/Protocols/HTTP/AsImplemented.html
|
||||||
|
|
||||||
|
Analysen wurden erstellt auf Basis dieser Seiten
|
||||||
|
|
||||||
|
- http://test.icedream.tech
|
||||||
|
- http://wiki.selfhtml.org
|
|
@ -0,0 +1,199 @@
|
||||||
|
---
|
||||||
|
author: Carl Kittelberger
|
||||||
|
date: 2018-03-01
|
||||||
|
title: "ITS: IP und ICMP"
|
||||||
|
institute: "Ferdinand-von-Steinbeis Berufsschule"
|
||||||
|
lang: de-DE
|
||||||
|
babel-lang: ngerman
|
||||||
|
babel-otherlangs:
|
||||||
|
- english
|
||||||
|
polyglossia-lang:
|
||||||
|
name: german
|
||||||
|
options:
|
||||||
|
- spelling=new
|
||||||
|
#subtitle: "Internet Protocol und Internet Control Message Protocol"
|
||||||
|
#classoption: draft
|
||||||
|
classoption: oneside
|
||||||
|
colorlinks: true
|
||||||
|
documentclass: report
|
||||||
|
fontsize: 12pt
|
||||||
|
logo: img/steinbeis.png
|
||||||
|
mainfont: Arial
|
||||||
|
papersize: a4
|
||||||
|
sansfont: Arial
|
||||||
|
tables: true
|
||||||
|
template: template.tex
|
||||||
|
|
||||||
|
toc: true
|
||||||
|
|
||||||
|
header-includes:
|
||||||
|
|
||||||
|
# For \textcolor
|
||||||
|
- \usepackage{xcolor}
|
||||||
|
|
||||||
|
# Long tables (used by pandoc latex template itself)
|
||||||
|
#- \usepackage{longtable}
|
||||||
|
|
||||||
|
# Localization to German for all package injections
|
||||||
|
#- \usepackage[ngerman]{babel}
|
||||||
|
|
||||||
|
# Fancy header!
|
||||||
|
- \usepackage{fancyhdr}
|
||||||
|
- \usepackage{graphicx}
|
||||||
|
- \pagestyle{fancy}
|
||||||
|
- \fancyhf{}
|
||||||
|
- \fancyhead[L]{\large{\textit{\textbf{ITS} \\ IP und ICMP}}}
|
||||||
|
- \fancyhead[R]{\raisebox{-0.1\height}{\includegraphics[height=32pt]{img/steinbeis.png}}}
|
||||||
|
- \fancyfoot[L]{\textcolor{gray}{Carl Kittelberger}}
|
||||||
|
- \fancyfoot[R]{\textcolor{gray}{\bfseries{Seite \thepage}}}
|
||||||
|
- \renewcommand{\headrulewidth}{0.4pt}
|
||||||
|
- \renewcommand{\footrulewidth}{0.4pt}
|
||||||
|
- \setlength\headheight{36pt}
|
||||||
|
- \fancypagestyle{plain}{}
|
||||||
|
|
||||||
|
# monospace
|
||||||
|
- \lstset{basicstyle=\footnotesize\ttfamily,breaklines=true}
|
||||||
|
- \lstset{framextopmargin=50pt}
|
||||||
|
---
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
|
||||||
|
# Analyse eines Pings
|
||||||
|
|
||||||
|
Im Folgenden wurde die IP-Adresse `8.8.8.8` als Ziel für die Pinganfragen verwendet,
|
||||||
|
die untersucht werden. Die Pinganfragen wurden von einer VM mit Netzwerkbrücke
|
||||||
|
auf einem Ethernetadapter durchgeführt und Wireshark wurde zur Aufzeichnung
|
||||||
|
innerhalb der VM verwendet.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Im ersten Screenshot lässt sich ablesen, dass die *IP-Adresse des Computers* von
|
||||||
|
dem die Pinganfrage verschickt wurde **`192.168.188.52`** lautet.
|
||||||
|
|
||||||
|
Der *Typ* des IP-Pakets ist als Wert **`1` (`ICMP`)** angegeben.
|
||||||
|
|
||||||
|
Im IP-Paket sind insgesamt laut Wireshark **84 Bytes** enthalten, davon belegt der
|
||||||
|
*IP-Header* **20 Bytes**, die restlichen **64 Bytes** sind die tatsächliche
|
||||||
|
*Nutzlast* des IP-Pakets, die aus der ICMP-Nachricht besteht.
|
||||||
|
|
||||||
|
Die *Roundtrip Time (RTT)* ist der Zeitabstand zwischen Versand des Anfragepakets
|
||||||
|
und Erhalten des Antwortpakets. Im Screenshot sieht man als Interval für die
|
||||||
|
erste Anfrage (Pakete 1 und 2) **etwa 15,05 Millisekunden**.
|
||||||
|
|
||||||
|
Die *Identifikationsnummern* lauten laut Wireshark für das IP-Paket selbst
|
||||||
|
`0x7566 (30054)` und das ICMP-Paket selbst hat die Identifikationsnummern
|
||||||
|
im *Big-Endian-Format (BE)* `3533` oder `0x0dcd` bzw. im *Little-Endian-Format (LE)*
|
||||||
|
`52493` oder `0xcd0d`. Im zweiten Screenshot sieht man, dass die Identifikationsnummern
|
||||||
|
für das Antwortpaket genau gleich sind. Wären diese Nummern verschieden, könnte
|
||||||
|
die Antwort der Anfrage nicht mehr zugeordnet werden.
|
||||||
|
|
||||||
|
Das IP-Paket der Anfrage wurde nicht fragmentiert. Fragmentiert ist ein Paket erst dann,
|
||||||
|
wenn es beim Versenden in mehrere Teile aufgespalten wurde und der entsprechende
|
||||||
|
Flag für die Fragmentierung im IP-Header gesetzt wurde, was hier nicht der Fall ist
|
||||||
|
(der Flag ist `0x4000` was Wireshark entsprechend als `Don't fragment` anzeigt).
|
||||||
|
|
||||||
|
## Analyse eines fragmentierten Pings
|
||||||
|
|
||||||
|
### Ping mit 2000 Bytes Inhalt
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Die *IP-Adressen* haben sich nicht geändert.
|
||||||
|
|
||||||
|
Der IP-Header enthält als *Typ* ebenso noch den gleichen Wert.
|
||||||
|
|
||||||
|
Die Headergröße hat sich ebenfalls nicht verändert, aber die Größe der *Nutzlast*
|
||||||
|
ist jetzt auf **1500 Bytes** angewachsen. Die restlichen **500 Bytes** finden
|
||||||
|
sich in einem Folgepaket das aufgrund der Fragmentierung mitgeschickt wurde.
|
||||||
|
|
||||||
|
Die *Roundtrip Time* beträgt jetzt **16,93 Millisekunden** (Unterschied Paket 1 zu 3).
|
||||||
|
|
||||||
|
### Ping mit 3500 Bytes Inhalt
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Die Änderungen sind ähnlich wie oben, außer dass die *Nutzlast* des ersten Pakets
|
||||||
|
sich nicht mehr ändert und **1500 Bytes** beträgt. Dafür ist ein weiteres Teilpaket
|
||||||
|
dazugekommen, bei dem der zusätzliche Inhalt angehängt wurde.
|
||||||
|
|
||||||
|
Die *Roundtrip Time* beträgt jetzt **15,80 Millisekunden** (Unterschied Paket 1 zu 4).
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Analyse der Fragmentierung
|
||||||
|
|
||||||
|
In dieser Analyse scheinen Daten über 1500 Bytes fragmentiert zu werden. Beide
|
||||||
|
Pakete (2000 Bytes und 3500 Bytes) wurden in max. 1500 Bytes große Datenteile
|
||||||
|
aufgespalten und dann nacheinander verschickt.
|
||||||
|
|
||||||
|
Die wichtige Identifikationsnummer für fragmentierte Pakete ist die `Identification`
|
||||||
|
im IP-Header, nicht die `Identifier`-Felder im ICMP-Paket, denn dieses wurde
|
||||||
|
in mehrere Teile zerspaltet und um das Paket zusammensetzen zu können muss stattdessen
|
||||||
|
die Quelle mehrere Pakete mit dem gleichen Identifizierer verschicken. Entsprechend sehen wir im obigen Screenshot, dass die IP-ID der Folgepakete in der Übersicht die gleiche ID haben wir der IP-Header des ersten Pakets.
|
||||||
|
|
||||||
|
Während der Analyse konnten wir kaum wertvolle Informationen zur Änderung der
|
||||||
|
*Roundtrip Time* abhängig von der Fragmentierung gewinnen. In der Theorie braucht
|
||||||
|
es länger, größere Datenmengen zu verschicken, vor allem wenn diese vorher in mehrere
|
||||||
|
Teile aufgespalten wurden und für jeden Teil ein weiterer Header mitverschickt wird.
|
||||||
|
Die Übertragung läuft jedoch hier in der Praxis so schnell ab, dass andere Abweichungen
|
||||||
|
in der Übertragung sich stärker in der RTT abbilden.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Analyse einer Routenverfolgung
|
||||||
|
|
||||||
|
Im Folgenden wurde `reutlingen.de` explizit über IPv4 als Ziel für die Routenverfolgung
|
||||||
|
verwendet. Das Tool das eingesetzt wurde ist `tracepath` (mit entsprechendem `-4` Flag).
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Wireshark registriert eine Sequenz von Paketen vom Typ DNS, UDP und meistens ICMP als Antwort.
|
||||||
|
Die Pakete der eigentlichen Anfragen zur Routenverfolgung werden über **UDP** versendet.
|
||||||
|
Dabei fällt auf, dass die UDP-Pakete von oben nach unten beginnend von einer *Time-To-Live (TTL)*
|
||||||
|
**von `1` inkrementierend größere Werte** (`2`, dann `3`, usw.) zugewiesen bekommen.
|
||||||
|
|
||||||
|
Die *Antwort* auf alle Pakete ist immer ein **ICMP**-Paket. Alle Antworten bis auf
|
||||||
|
das letzte Paket sind ein **ICMP-Paket mit der Nachricht "Time-to-live exceeded"**.
|
||||||
|
Diese Antwort wird von dem jeweiligen routenden Knotenserver selbst verschickt
|
||||||
|
und daran misst `tracepath` die Zeit und die Reaktionsfähigkeit des jeweiligen
|
||||||
|
Knotens.
|
||||||
|
|
||||||
|
Die *ersten beiden Knotenpunkte* in diesem Fall sind:
|
||||||
|
|
||||||
|
- `192.168.188.1` (`fritz.box`) - der Router im lokalen Netzwerk.
|
||||||
|
- `62.214.63.94` (`i59F4DCE4.versanet.de`) - der erste externe Router aus dem ISP-Netzwerk.
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# ICMP
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Ein ICMP-Paket ist wie folgt aufgebaut:
|
||||||
|
|
||||||
|
- **`Type`** - ein Wert der die Art der ICMP-Nachricht angibt, z. B. `8` für eine Echo-Anfrage oder `11` für *Time-to-live exceeded*. **Weitere Typen** wären:
|
||||||
|
- `0` - Echo Reply
|
||||||
|
- `3` - Destination Unreachable
|
||||||
|
- `5` - Redirect (IP-Umleitung)
|
||||||
|
- `9` - Router Advertisement (wird benutzt um einem Rechner den Router bekannt zu machen zur IP-Vergabe). Gegenstück dazu: `10` (Router Solicitation)
|
||||||
|
- `12` - Parameter Problem (bei ungültigen Inhalten in einer ICMP-Anfrage)
|
||||||
|
- `13` - Timestamp. Gegenstück: `14` (Timestamp Reply)
|
||||||
|
- **`Code`** - ein separater Code zur Angabe einer Fehlerursache oder eines anderen Details
|
||||||
|
- **`Checksum`** - ein Hash des Pakets zum Sicherstellen einer korrekten Übertragung
|
||||||
|
- **Informationen zu ursprünglichen Anfragepaketen**, meisten IP-Paket und dessen Inhalt. Aufgrund der Informationen die hier enthalten sind (wie der Identifizierer) weiß der Empfänger der Nachricht **basiend auf diesen Informationen auf welche ursprünglich gesendeten Pakete sich diese ICMP-Meldung bezieht.**
|
||||||
|
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
# Quellenangaben
|
||||||
|
|
||||||
|
- https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml#icmp-parameters-types
|
|
@ -0,0 +1,52 @@
|
||||||
|
PANDOC = pandoc
|
||||||
|
LATEX = lualatex
|
||||||
|
LATEX_FLAGS = \
|
||||||
|
-file-line-error \
|
||||||
|
-recorder \
|
||||||
|
-interaction=nonstopmode \
|
||||||
|
-halt-on-error \
|
||||||
|
--shell-escape
|
||||||
|
PANDOC_FLAGS = --top-level-division=section
|
||||||
|
PANDOC_TEX_FLAGS = --template=template.tex
|
||||||
|
PANDOC_TEX_DEPENDENCIES = template.tex
|
||||||
|
SOFFICE = soffice
|
||||||
|
SOFFICE_FLAGS = --headless
|
||||||
|
|
||||||
|
MARKDOWN_INPUTS = $(wildcard *.md)
|
||||||
|
|
||||||
|
.PHONY: all build clean clean-pdf clean-tex clean-odt clean-docx default
|
||||||
|
|
||||||
|
TEXINPUTS := .:./pkg/:$(TEXINPUTS)
|
||||||
|
export TEXINPUTS
|
||||||
|
|
||||||
|
default: all
|
||||||
|
|
||||||
|
all: all-tex all-pdf
|
||||||
|
|
||||||
|
all-tex: $(addsuffix .tex,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
all-pdf: $(addsuffix .pdf,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
clean: clean-pdf clean-tex
|
||||||
|
|
||||||
|
clean-tex:
|
||||||
|
rm -f $(addsuffix .tex,$(basename $(MARKDOWN_INPUTS)))
|
||||||
|
|
||||||
|
clean-pdf:
|
||||||
|
rm -f \
|
||||||
|
$(addsuffix .aux,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .pdf,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .out,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .fls,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .log,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
$(addsuffix .toc,$(basename $(MARKDOWN_INPUTS))) \
|
||||||
|
missfont.log
|
||||||
|
|
||||||
|
%.pdf: %.tex $(PANDOC_TEX_DEPENDENCIES)
|
||||||
|
@echo $< "->" $@
|
||||||
|
$(LATEX) $(LATEX_FLAGS) $(LATEX_PDF_FLAGS) $< 1>/dev/null
|
||||||
|
$(LATEX) $(LATEX_FLAGS) $(LATEX_PDF_FLAGS) $< 1>/dev/null
|
||||||
|
|
||||||
|
%.tex: %.md
|
||||||
|
@echo $< "->" $@
|
||||||
|
$(PANDOC) $(PANDOC_FLAGS) $(PANDOC_TEX_FLAGS) --listings -s $< -o $@
|
After Width: | Height: | Size: 74 KiB |
|
@ -0,0 +1,362 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.2" width="107.01mm" height="80.02mm" viewBox="1199 1299 10701 8002" preserveAspectRatio="xMidYMid" fill-rule="evenodd" stroke-width="28.222" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" xmlns:ooo="http://xml.openoffice.org/svg/export" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:presentation="http://sun.com/xmlns/staroffice/presentation" xmlns:smil="http://www.w3.org/2001/SMIL20/" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" xml:space="preserve">
|
||||||
|
<defs class="ClipPathGroup">
|
||||||
|
<clipPath id="presentation_clip_path" clipPathUnits="userSpaceOnUse">
|
||||||
|
<rect x="1199" y="1299" width="10701" height="8002"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="presentation_clip_path_shrink" clipPathUnits="userSpaceOnUse">
|
||||||
|
<rect x="1209" y="1307" width="10680" height="7986"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<defs>
|
||||||
|
<font id="EmbeddedFont_1" horiz-adv-x="2048">
|
||||||
|
<font-face font-family="Liberation Sans embedded" units-per-em="2048" font-weight="normal" font-style="normal" ascent="1826" descent="423"/>
|
||||||
|
<missing-glyph horiz-adv-x="2048" d="M 0,0 L 2047,0 2047,2047 0,2047 0,0 Z"/>
|
||||||
|
<glyph unicode="u" horiz-adv-x="874" d="M 314,1082 L 314,396 C 314,325 321,269 335,230 349,191 371,162 402,145 433,128 478,119 537,119 624,119 692,149 742,208 792,267 817,350 817,455 L 817,1082 997,1082 997,231 C 997,105 999,28 1003,0 L 833,0 C 832,3 832,12 831,27 830,42 830,59 829,78 828,97 826,132 825,185 L 822,185 C 781,110 733,58 679,27 624,-4 557,-20 476,-20 357,-20 271,10 216,69 161,128 133,225 133,361 L 133,1082 314,1082 Z"/>
|
||||||
|
<glyph unicode="t" horiz-adv-x="531" d="M 554,8 C 495,-8 434,-16 372,-16 228,-16 156,66 156,229 L 156,951 31,951 31,1082 163,1082 216,1324 336,1324 336,1082 536,1082 536,951 336,951 336,268 C 336,216 345,180 362,159 379,138 408,127 450,127 474,127 509,132 554,141 L 554,8 Z"/>
|
||||||
|
<glyph unicode="r" horiz-adv-x="530" d="M 142,0 L 142,830 C 142,906 140,990 136,1082 L 306,1082 C 311,959 314,886 314,861 L 318,861 C 347,954 380,1017 417,1051 454,1085 507,1102 575,1102 599,1102 623,1099 648,1092 L 648,927 C 624,934 592,937 552,937 477,937 420,905 381,841 342,776 322,684 322,564 L 322,0 142,0 Z"/>
|
||||||
|
<glyph unicode="p" horiz-adv-x="953" d="M 1053,546 C 1053,169 920,-20 655,-20 488,-20 376,43 319,168 L 314,168 C 317,163 318,106 318,-2 L 318,-425 138,-425 138,861 C 138,972 136,1046 132,1082 L 306,1082 C 307,1079 308,1070 309,1054 310,1037 312,1012 314,978 315,944 316,921 316,908 L 320,908 C 352,975 394,1024 447,1055 500,1086 569,1101 655,1101 788,1101 888,1056 954,967 1020,878 1053,737 1053,546 Z M 864,542 C 864,693 844,800 803,865 762,930 698,962 609,962 538,962 482,947 442,917 401,887 371,840 350,777 329,713 318,630 318,528 318,386 341,281 386,214 431,147 505,113 607,113 696,113 762,146 803,212 844,277 864,387 864,542 Z"/>
|
||||||
|
<glyph unicode="o" horiz-adv-x="980" d="M 1053,542 C 1053,353 1011,212 928,119 845,26 724,-20 565,-20 407,-20 288,28 207,125 126,221 86,360 86,542 86,915 248,1102 571,1102 736,1102 858,1057 936,966 1014,875 1053,733 1053,542 Z M 864,542 C 864,691 842,800 798,868 753,935 679,969 574,969 469,969 393,935 346,866 299,797 275,689 275,542 275,399 298,292 345,221 391,149 464,113 563,113 671,113 748,148 795,217 841,286 864,395 864,542 Z"/>
|
||||||
|
<glyph unicode="k" horiz-adv-x="901" d="M 816,0 L 450,494 318,385 318,0 138,0 138,1484 318,1484 318,557 793,1082 1004,1082 565,617 1027,0 816,0 Z"/>
|
||||||
|
<glyph unicode="e" horiz-adv-x="980" d="M 276,503 C 276,379 302,283 353,216 404,149 479,115 578,115 656,115 719,131 766,162 813,193 844,233 861,281 L 1019,236 C 954,65 807,-20 578,-20 418,-20 296,28 213,123 129,218 87,360 87,548 87,727 129,864 213,959 296,1054 416,1102 571,1102 889,1102 1048,910 1048,527 L 1048,503 276,503 Z M 862,641 C 852,755 823,838 775,891 727,943 658,969 568,969 481,969 412,940 361,882 310,823 282,743 278,641 L 862,641 Z"/>
|
||||||
|
<glyph unicode="S" horiz-adv-x="1192" d="M 1272,389 C 1272,259 1221,158 1120,87 1018,16 875,-20 690,-20 347,-20 148,99 93,338 L 278,375 C 299,290 345,228 414,189 483,149 578,129 697,129 820,129 916,150 983,193 1050,235 1083,297 1083,379 1083,425 1073,462 1052,491 1031,520 1001,543 963,562 925,581 880,596 827,609 774,622 716,635 652,650 541,675 456,699 399,724 341,749 295,776 262,807 229,837 203,872 186,913 168,954 159,1000 159,1053 159,1174 205,1267 298,1332 390,1397 522,1430 694,1430 854,1430 976,1406 1061,1357 1146,1308 1205,1224 1239,1106 L 1051,1073 C 1030,1148 991,1202 933,1236 875,1269 795,1286 692,1286 579,1286 493,1267 434,1230 375,1193 345,1137 345,1063 345,1020 357,984 380,956 403,927 436,903 479,884 522,864 609,840 738,811 781,801 825,791 868,781 911,770 952,758 991,744 1030,729 1067,712 1102,693 1136,674 1166,650 1191,622 1216,594 1236,561 1251,523 1265,485 1272,440 1272,389 Z"/>
|
||||||
|
</font>
|
||||||
|
</defs>
|
||||||
|
<defs class="TextShapeIndex">
|
||||||
|
<g ooo:slide="id1" ooo:id-list="id3 id4 id5 id6 id7 id8 id9 id10 id11"/>
|
||||||
|
</defs>
|
||||||
|
<defs class="EmbeddedBulletChars">
|
||||||
|
<g id="bullet-char-template(57356)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 580,1141 L 1163,571 580,0 -4,571 580,1141 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(57354)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 8,1128 L 1137,1128 1137,0 8,0 8,1128 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(10146)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 174,0 L 602,739 174,1481 1456,739 174,0 Z M 1358,739 L 309,1346 659,739 1358,739 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(10132)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 2015,739 L 1276,0 717,0 1260,543 174,543 174,936 1260,936 717,1481 1274,1481 2015,739 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(10007)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 0,-2 C -7,14 -16,27 -25,37 L 356,567 C 262,823 215,952 215,954 215,979 228,992 255,992 264,992 276,990 289,987 310,991 331,999 354,1012 L 381,999 492,748 772,1049 836,1024 860,1049 C 881,1039 901,1025 922,1006 886,937 835,863 770,784 769,783 710,716 594,584 L 774,223 C 774,196 753,168 711,139 L 727,119 C 717,90 699,76 672,76 641,76 570,178 457,381 L 164,-76 C 142,-110 111,-127 72,-127 30,-127 9,-110 8,-76 1,-67 -2,-52 -2,-32 -2,-23 -1,-13 0,-2 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(10004)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 285,-33 C 182,-33 111,30 74,156 52,228 41,333 41,471 41,549 55,616 82,672 116,743 169,778 240,778 293,778 328,747 346,684 L 369,508 C 377,444 397,411 428,410 L 1163,1116 C 1174,1127 1196,1133 1229,1133 1271,1133 1292,1118 1292,1087 L 1292,965 C 1292,929 1282,901 1262,881 L 442,47 C 390,-6 338,-33 285,-33 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(9679)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 813,0 C 632,0 489,54 383,161 276,268 223,411 223,592 223,773 276,916 383,1023 489,1130 632,1184 813,1184 992,1184 1136,1130 1245,1023 1353,916 1407,772 1407,592 1407,412 1353,268 1245,161 1136,54 992,0 813,0 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(8226)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 346,457 C 273,457 209,483 155,535 101,586 74,649 74,723 74,796 101,859 155,911 209,963 273,989 346,989 419,989 480,963 531,910 582,859 608,796 608,723 608,648 583,586 532,535 482,483 420,457 346,457 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(8211)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M -4,459 L 1135,459 1135,606 -4,606 -4,459 Z"/>
|
||||||
|
</g>
|
||||||
|
<g id="bullet-char-template(61548)" transform="scale(0.00048828125,-0.00048828125)">
|
||||||
|
<path d="M 173,740 C 173,903 231,1043 346,1159 462,1274 601,1332 765,1332 928,1332 1067,1274 1183,1159 1299,1043 1357,903 1357,740 1357,577 1299,437 1183,322 1067,206 928,148 765,148 601,148 462,206 346,322 231,437 173,577 173,740 Z"/>
|
||||||
|
</g>
|
||||||
|
</defs>
|
||||||
|
<defs class="TextEmbeddedBitmaps"/>
|
||||||
|
<g class="SlideGroup">
|
||||||
|
<g>
|
||||||
|
<g id="container-id1">
|
||||||
|
<g id="id1" class="Slide" clip-path="url(#presentation_clip_path)">
|
||||||
|
<g class="Page">
|
||||||
|
<g class="Group">
|
||||||
|
<g class="com.sun.star.drawing.CustomShape">
|
||||||
|
<g id="id3">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="1199" y="1299" width="8004" height="8004"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5200,1300 C 5246,1300 5292,1301 5337,1302"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5446,1307 C 5491,1309 5536,1313 5581,1317"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5687,1327 C 5732,1332 5775,1338 5819,1344"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5926,1361 C 5971,1369 6015,1377 6060,1386"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6165,1409 C 6209,1420 6253,1430 6296,1442"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6399,1471 C 6442,1484 6484,1497 6527,1511"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6629,1547 C 6672,1563 6714,1579 6756,1595"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6855,1637 C 6896,1655 6937,1674 6977,1693"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7073,1740 C 7114,1761 7154,1782 7193,1804"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7287,1857 C 7326,1880 7364,1904 7402,1928"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7492,1987 C 7529,2013 7565,2038 7601,2065"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7688,2130 C 7723,2157 7758,2186 7793,2214"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7875,2285 C 7909,2314 7942,2345 7974,2375"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8052,2451 C 8083,2482 8114,2515 8145,2547"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8217,2627 C 8247,2661 8276,2695 8305,2730"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8372,2815 C 8400,2850 8427,2886 8453,2923"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8514,3011 C 8540,3048 8564,3086 8588,3124"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8644,3216 C 8667,3254 8689,3294 8711,3333"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8761,3429 C 8782,3469 8801,3509 8820,3550"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8864,3648 C 8882,3689 8899,3730 8916,3772"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8954,3873 C 8969,3916 8984,3959 8998,4002"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9030,4104 C 9042,4147 9054,4190 9066,4233"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9091,4337 C 9101,4381 9111,4425 9120,4470"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9139,4577 C 9147,4621 9154,4665 9160,4710"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9173,4816 C 9178,4860 9182,4904 9186,4949"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9193,5057 C 9196,5102 9198,5148 9199,5193"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9200,5303 C 9200,5349 9199,5395 9198,5440"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9193,5549 C 9190,5594 9187,5639 9183,5684"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9172,5790 C 9167,5834 9162,5878 9155,5922"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9138,6029 C 9131,6074 9122,6118 9113,6163"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9090,6268 C 9080,6312 9069,6356 9057,6399"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 9028,6502 C 9015,6545 9002,6587 8988,6630"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8952,6732 C 8936,6775 8920,6817 8903,6859"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8862,6958 C 8844,6999 8825,7040 8806,7080"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8759,7176 C 8738,7216 8717,7256 8695,7296"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8641,7390 C 8618,7428 8594,7466 8570,7504"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8511,7594 C 8486,7631 8460,7668 8434,7704"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8368,7790 C 8341,7826 8313,7861 8284,7895"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8213,7977 C 8184,8011 8153,8044 8123,8076"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8047,8154 C 8016,8185 7983,8217 7950,8247"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7870,8319 C 7837,8349 7802,8378 7768,8407"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7683,8474 C 7647,8501 7611,8528 7575,8555"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7487,8616 C 7450,8641 7412,8666 7374,8690"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7282,8746 C 7243,8768 7204,8791 7164,8812"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7068,8863 C 7028,8883 6988,8902 6948,8921"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6850,8965 C 6809,8983 6767,9000 6725,9017"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6624,9055 C 6581,9070 6538,9085 6495,9099"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6393,9131 C 6350,9143 6307,9155 6264,9166"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6160,9192 C 6116,9202 6072,9212 6027,9220"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5920,9240 C 5876,9247 5832,9254 5787,9260"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5681,9273 C 5637,9278 5593,9283 5548,9286"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5440,9293 C 5395,9296 5349,9298 5304,9299"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5194,9300 C 5148,9300 5102,9299 5057,9298"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4948,9293 C 4903,9290 4858,9287 4813,9283"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4707,9272 C 4663,9267 4619,9261 4575,9255"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4468,9238 C 4423,9230 4379,9222 4334,9213"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4229,9189 C 4185,9179 4142,9168 4098,9156"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3996,9127 C 3952,9114 3910,9101 3868,9087"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3765,9051 C 3722,9035 3680,9019 3639,9002"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3539,8961 C 3498,8943 3458,8924 3417,8905"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3321,8857 C 3281,8837 3241,8815 3202,8793"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3108,8739 C 3069,8717 3031,8693 2993,8669"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2904,8609 C 2866,8584 2830,8558 2794,8532"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2708,8467 C 2672,8439 2637,8411 2602,8382"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2521,8312 C 2487,8282 2454,8251 2421,8220"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2344,8145 C 2313,8113 2281,8081 2251,8048"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2179,7968 C 2149,7934 2120,7900 2091,7865"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2024,7781 C 1997,7745 1970,7709 1944,7672"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1882,7584 C 1857,7547 1833,7509 1809,7471"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1753,7379 C 1730,7340 1708,7301 1686,7261"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1636,7165 C 1616,7126 1596,7086 1577,7045"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1534,6947 C 1516,6906 1499,6864 1482,6822"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1444,6721 C 1429,6678 1414,6636 1400,6592"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1369,6490 C 1356,6448 1344,6405 1333,6361"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1307,6257 C 1297,6213 1288,6169 1279,6124"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1259,6017 C 1252,5973 1245,5929 1239,5884"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1226,5778 C 1221,5734 1217,5690 1214,5645"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1206,5537 C 1204,5492 1202,5446 1201,5401"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1200,5291 C 1200,5245 1201,5199 1202,5154"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1207,5045 C 1210,5000 1213,4955 1217,4910"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1228,4804 C 1233,4760 1239,4716 1245,4672"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1263,4565 C 1270,4520 1279,4476 1288,4431"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1311,4326 C 1322,4282 1333,4239 1344,4196"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1374,4093 C 1386,4050 1400,4007 1414,3965"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1450,3862 C 1466,3820 1482,3778 1499,3736"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1541,3637 C 1559,3596 1577,3555 1597,3515"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1644,3419 C 1665,3378 1686,3338 1708,3299"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1762,3205 C 1785,3167 1809,3128 1833,3091"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 1892,3001 C 1918,2964 1944,2927 1970,2891"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2035,2805 C 2063,2770 2091,2735 2120,2700"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2190,2618 C 2220,2585 2251,2552 2282,2519"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2357,2442 C 2389,2410 2421,2379 2454,2349"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2534,2277 C 2568,2247 2602,2218 2637,2190"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2722,2122 C 2757,2095 2793,2068 2830,2042"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2918,1981 C 2955,1956 2993,1931 3031,1907"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3123,1851 C 3162,1829 3201,1806 3241,1785"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3337,1735 C 3377,1715 3417,1695 3458,1676"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3556,1632 C 3597,1615 3638,1598 3680,1581"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3782,1543 C 3824,1528 3867,1513 3911,1499"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4013,1468 C 4055,1455 4098,1443 4142,1432"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4246,1407 C 4290,1397 4334,1387 4379,1379"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4486,1359 C 4530,1352 4574,1345 4619,1339"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4725,1326 C 4769,1321 4813,1317 4858,1313"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4966,1306 C 5011,1304 5057,1302 5102,1301"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.CustomShape">
|
||||||
|
<g id="id4">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="2199" y="2299" width="6004" height="6004"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5200,2300 C 5246,2300 5292,2301 5337,2303"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5445,2309 C 5490,2312 5535,2317 5579,2322"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5684,2336 C 5729,2343 5774,2351 5818,2359"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5924,2382 C 5968,2392 6011,2403 6054,2415"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6156,2446 C 6200,2460 6243,2474 6285,2490"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6386,2529 C 6427,2546 6468,2564 6509,2583"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6605,2630 C 6645,2651 6685,2672 6724,2694"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6817,2750 C 6855,2773 6893,2798 6930,2823"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7017,2886 C 7054,2912 7089,2940 7124,2969"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7206,3038 C 7240,3068 7273,3099 7305,3130"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7381,3206 C 7412,3239 7442,3272 7472,3306"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7541,3388 C 7570,3423 7597,3459 7624,3495"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7686,3583 C 7711,3620 7735,3658 7759,3696"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7813,3789 C 7835,3829 7857,3869 7877,3909"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7923,4005 C 7942,4046 7960,4087 7977,4129"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8015,4230 C 8031,4272 8045,4315 8059,4358"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8089,4461 C 8101,4504 8112,4547 8122,4591"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8144,4697 C 8152,4742 8160,4786 8166,4831"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8180,4937 C 8185,4981 8189,5026 8192,5071"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8198,5179 C 8199,5219 8200,5259 8200,5300 8200,5305 8200,5311 8200,5316"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8198,5426 C 8196,5471 8193,5516 8190,5561"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8179,5668 C 8174,5712 8168,5756 8162,5799"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8143,5907 C 8134,5952 8125,5996 8114,6039"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8088,6143 C 8076,6187 8063,6229 8049,6271"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 8014,6374 C 7998,6417 7982,6459 7965,6500"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7922,6599 C 7903,6639 7883,6680 7863,6719"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7811,6815 C 7789,6854 7766,6892 7742,6930"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7683,7021 C 7658,7058 7632,7094 7605,7130"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7539,7215 C 7510,7250 7481,7284 7451,7318"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7378,7397 C 7347,7429 7315,7461 7282,7492"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7203,7565 C 7169,7594 7135,7623 7099,7651"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7014,7717 C 6978,7744 6941,7770 6904,7795"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6813,7853 C 6775,7876 6736,7899 6697,7921"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6601,7972 C 6561,7992 6521,8011 6480,8030"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6381,8072 C 6340,8089 6298,8106 6255,8121"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6152,8155 C 6110,8169 6067,8181 6024,8193"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5920,8219 C 5876,8229 5832,8238 5787,8247"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5680,8265 C 5636,8271 5592,8277 5548,8282"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5441,8291 C 5396,8295 5351,8297 5305,8298"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5195,8300 C 5149,8300 5104,8299 5059,8297"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4950,8291 C 4906,8287 4861,8283 4817,8278"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4712,8263 C 4666,8256 4622,8249 4577,8240"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4472,8217 C 4428,8207 4384,8196 4342,8183"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4239,8153 C 4196,8139 4153,8124 4111,8108"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4010,8069 C 3969,8052 3928,8034 3887,8015"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3791,7968 C 3751,7947 3711,7926 3672,7903"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3579,7848 C 3541,7824 3503,7800 3467,7774"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3379,7712 C 3343,7685 3307,7657 3273,7629"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3191,7559 C 3157,7529 3124,7498 3092,7467"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3016,7391 C 2985,7358 2955,7325 2925,7291"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2856,7208 C 2828,7173 2800,7137 2774,7101"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2712,7013 C 2687,6976 2662,6938 2639,6900"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2584,6807 C 2562,6767 2541,6728 2521,6687"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2475,6591 C 2456,6550 2438,6509 2422,6467"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2383,6366 C 2368,6323 2353,6281 2340,6237"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2310,6135 C 2298,6092 2287,6048 2277,6004"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2255,5898 C 2247,5854 2240,5809 2233,5764"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2220,5659 C 2215,5615 2211,5570 2208,5525"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2202,5417 C 2201,5378 2200,5339 2200,5300 2200,5293 2200,5286 2200,5279"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2203,5170 C 2204,5124 2207,5079 2211,5035"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2221,4928 C 2226,4884 2232,4840 2239,4796"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2258,4689 C 2267,4644 2276,4600 2287,4556"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2314,4452 C 2326,4409 2338,4367 2352,4324"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2388,4222 C 2403,4179 2420,4137 2437,4096"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2480,3997 C 2499,3957 2519,3916 2539,3877"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2591,3782 C 2613,3742 2636,3704 2660,3666"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2719,3576 C 2745,3539 2771,3502 2798,3466"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 2864,3381 C 2893,3346 2922,3312 2952,3279"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3025,3200 C 3056,3167 3088,3136 3121,3105"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3201,3032 C 3234,3003 3269,2974 3304,2946"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3390,2880 C 3426,2854 3463,2828 3500,2803"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3591,2745 C 3629,2721 3668,2699 3707,2677"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3803,2626 C 3843,2606 3883,2587 3924,2568"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4023,2526 C 4064,2509 4107,2493 4149,2478"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4252,2443 C 4294,2430 4337,2417 4380,2406"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4485,2380 C 4529,2370 4573,2361 4617,2353"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4725,2335 C 4768,2328 4812,2323 4857,2318"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4964,2308 C 5009,2305 5054,2303 5099,2302"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.CustomShape">
|
||||||
|
<g id="id5">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="3200" y="3300" width="4004" height="4004"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5200,3301 C 5246,3301 5291,3302 5336,3305"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5444,3315 C 5488,3320 5533,3326 5576,3334"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5683,3356 C 5727,3366 5770,3377 5812,3390"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5915,3424 C 5957,3440 5999,3457 6040,3475"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6137,3521 C 6177,3541 6217,3563 6255,3586"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6346,3644 C 6383,3670 6419,3696 6455,3724"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6538,3793 C 6571,3823 6604,3854 6635,3885"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6709,3964 C 6739,3998 6767,4033 6794,4069"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6857,4156 C 6883,4193 6906,4231 6929,4270"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6981,4365 C 7001,4405 7020,4445 7038,4487"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7077,4587 C 7092,4629 7106,4672 7119,4715"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7146,4819 C 7156,4863 7165,4908 7172,4953"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7187,5058 C 7192,5103 7195,5148 7197,5193"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7200,5302 C 7200,5348 7198,5394 7196,5439"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7186,5546 C 7181,5591 7175,5635 7167,5679"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7145,5785 C 7135,5829 7123,5872 7110,5914"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 7076,6017 C 7060,6059 7043,6101 7025,6142"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6979,6239 C 6958,6279 6936,6318 6913,6357"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6855,6448 C 6830,6485 6803,6521 6775,6556"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6706,6639 C 6677,6673 6646,6705 6614,6737"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6535,6810 C 6501,6840 6466,6868 6430,6896"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6343,6958 C 6306,6983 6268,7007 6229,7030"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 6133,7082 C 6094,7102 6053,7121 6012,7138"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5911,7178 C 5869,7193 5827,7207 5783,7219"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5679,7246 C 5635,7256 5591,7265 5546,7272"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5440,7287 C 5396,7292 5351,7295 5306,7297"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 5196,7300 C 5150,7300 5105,7298 5060,7296"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4953,7286 C 4908,7281 4864,7274 4820,7266"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4714,7244 C 4670,7234 4627,7223 4584,7210"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4482,7175 C 4439,7160 4398,7143 4357,7125"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4260,7078 C 4220,7058 4180,7036 4142,7012"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4051,6954 C 4014,6929 3978,6902 3943,6874"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3860,6805 C 3826,6775 3794,6744 3762,6712"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3689,6633 C 3660,6599 3631,6565 3604,6529"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3541,6441 C 3516,6404 3492,6366 3470,6327"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3418,6232 C 3398,6192 3379,6151 3362,6110"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3322,6009 C 3307,5967 3294,5925 3281,5881"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3254,5777 C 3244,5733 3236,5689 3228,5644"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3214,5538 C 3209,5494 3206,5449 3203,5404"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3201,5294 C 3201,5248 3203,5203 3206,5158"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3215,5051 C 3220,5006 3227,4962 3235,4918"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3257,4812 C 3267,4768 3279,4725 3292,4682"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3326,4580 C 3342,4537 3359,4496 3377,4455"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3424,4358 C 3444,4318 3466,4278 3490,4240"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3548,4149 C 3573,4112 3600,4076 3628,4041"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3697,3958 C 3727,3925 3758,3892 3790,3861"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 3869,3788 C 3903,3758 3938,3730 3974,3702"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4061,3640 C 4098,3615 4137,3591 4176,3568"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4271,3517 C 4311,3497 4351,3478 4393,3461"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4493,3422 C 4535,3406 4578,3393 4622,3380"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4726,3354 C 4770,3344 4814,3335 4859,3328"/>
|
||||||
|
<path fill="none" stroke="rgb(102,102,102)" d="M 4965,3314 C 5009,3309 5054,3305 5099,3303"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.LineShape">
|
||||||
|
<g id="id6">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="8200" y="5500" width="3402" height="201"/>
|
||||||
|
<path fill="none" stroke="rgb(0,0,0)" d="M 8716,5600 L 11600,5600"/>
|
||||||
|
<path fill="rgb(0,0,0)" stroke="none" d="M 8729,5500 L 8729,5700 8200,5600 8729,5500 Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.TextShape">
|
||||||
|
<g id="id7">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="10100" y="5000" width="1324" height="684"/>
|
||||||
|
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="388px" font-weight="400"><tspan class="TextPosition" x="10350" y="5476"><tspan fill="rgb(0,0,0)" stroke="none">Spur</tspan></tspan></tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.CustomShape">
|
||||||
|
<g id="id8">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="7999" y="3930" width="182" height="211"/>
|
||||||
|
<path fill="none" stroke="rgb(0,0,0)" d="M 8000,3940 C 8023,3930 8050,3928 8053,3936 L 8075,3988 C 8079,3996 8106,3994 8129,3984 8106,3994 8086,4013 8090,4021 L 8125,4102 C 8128,4110 8110,4129 8087,4139"/>
|
||||||
|
<path fill="none" stroke="rgb(0,0,0)" d="M 8000,3940 L 8000,3940 Z"/>
|
||||||
|
<path fill="none" stroke="rgb(0,0,0)" d="M 8179,4099 L 8179,4099 Z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.LineShape">
|
||||||
|
<g id="id9">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="8099" y="3299" width="1703" height="703"/>
|
||||||
|
<path fill="none" stroke="rgb(0,0,0)" d="M 9800,3300 L 8100,4000"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.LineShape">
|
||||||
|
<g id="id10">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="9799" y="3299" width="1803" height="3"/>
|
||||||
|
<path fill="none" stroke="rgb(0,0,0)" d="M 11600,3300 L 9800,3300"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g class="com.sun.star.drawing.TextShape">
|
||||||
|
<g id="id11">
|
||||||
|
<rect class="BoundingBox" stroke="none" fill="none" x="10100" y="2700" width="1801" height="1116"/>
|
||||||
|
<text class="TextShape"><tspan class="TextParagraph" font-family="Liberation Sans, sans-serif" font-size="388px" font-weight="400"><tspan class="TextPosition" x="10350" y="3176"><tspan fill="rgb(0,0,0)" stroke="none">Sektor</tspan></tspan></tspan></text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 90 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 79 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 246 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 133 KiB |
After Width: | Height: | Size: 148 KiB |
After Width: | Height: | Size: 153 KiB |
After Width: | Height: | Size: 354 KiB |
After Width: | Height: | Size: 356 KiB |
After Width: | Height: | Size: 21 KiB |
|
@ -0,0 +1,415 @@
|
||||||
|
\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
|
||||||
|
\PassOptionsToPackage{hyphens}{url}
|
||||||
|
$if(colorlinks)$
|
||||||
|
\PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor}
|
||||||
|
$endif$
|
||||||
|
%
|
||||||
|
\documentclass[$if(fontsize)$$fontsize$,$endif$$if(lang)$$babel-lang$,$endif$$if(papersize)$$papersize$paper,$endif$$if(beamer)$ignorenonframetext,$if(handout)$handout,$endif$$if(aspectratio)$aspectratio=$aspectratio$,$endif$$endif$$for(classoption)$$classoption$$sep$,$endfor$]{$documentclass$}
|
||||||
|
$if(beamer)$
|
||||||
|
\setbeamertemplate{caption}[numbered]
|
||||||
|
\setbeamertemplate{caption label separator}{: }
|
||||||
|
\setbeamercolor{caption name}{fg=normal text.fg}
|
||||||
|
\beamertemplatenavigationsymbols$if(navigation)$$navigation$$else$empty$endif$
|
||||||
|
$endif$
|
||||||
|
$if(beamerarticle)$
|
||||||
|
\usepackage{beamerarticle} % needs to be loaded first
|
||||||
|
$endif$
|
||||||
|
$if(fontfamily)$
|
||||||
|
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
|
||||||
|
$else$
|
||||||
|
\usepackage{lmodern}
|
||||||
|
$endif$
|
||||||
|
$if(linestretch)$
|
||||||
|
\usepackage{setspace}
|
||||||
|
\setstretch{$linestretch$}
|
||||||
|
$endif$
|
||||||
|
\usepackage{amssymb,amsmath}
|
||||||
|
\usepackage{ifxetex,ifluatex}
|
||||||
|
\usepackage{fixltx2e} % provides \textsubscript
|
||||||
|
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
||||||
|
\usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
|
||||||
|
\usepackage[utf8]{inputenc}
|
||||||
|
\usepackage{textcomp} % provides euro and other symbols
|
||||||
|
\else % if luatex or xelatex
|
||||||
|
$if(mathspec)$
|
||||||
|
\ifxetex
|
||||||
|
\usepackage{mathspec}
|
||||||
|
\else
|
||||||
|
\usepackage{unicode-math}
|
||||||
|
\fi
|
||||||
|
$else$
|
||||||
|
\usepackage{unicode-math}
|
||||||
|
$endif$
|
||||||
|
\defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
|
||||||
|
$for(fontfamilies)$
|
||||||
|
\newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$}
|
||||||
|
$endfor$
|
||||||
|
$if(mainfont)$
|
||||||
|
\setmainfont[$for(mainfontoptions)$$mainfontoptions$$sep$,$endfor$]{$mainfont$}
|
||||||
|
$endif$
|
||||||
|
$if(sansfont)$
|
||||||
|
\setsansfont[$for(sansfontoptions)$$sansfontoptions$$sep$,$endfor$]{$sansfont$}
|
||||||
|
$endif$
|
||||||
|
$if(monofont)$
|
||||||
|
\setmonofont[Mapping=tex-ansi$if(monofontoptions)$,$for(monofontoptions)$$monofontoptions$$sep$,$endfor$$endif$]{$monofont$}
|
||||||
|
$endif$
|
||||||
|
$if(mathfont)$
|
||||||
|
$if(mathspec)$
|
||||||
|
\ifxetex
|
||||||
|
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||||
|
\else
|
||||||
|
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||||
|
\fi
|
||||||
|
$else$
|
||||||
|
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(CJKmainfont)$
|
||||||
|
\ifxetex
|
||||||
|
\usepackage{xeCJK}
|
||||||
|
\setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$if(luatexjapresetoptions)$
|
||||||
|
\ifluatex
|
||||||
|
\usepackage[$for(luatexjapresetoptions)$$luatexjapresetoptions$$sep$,$endfor$]{luatexja-preset}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$if(CJKmainfont)$
|
||||||
|
\ifluatex
|
||||||
|
\usepackage[$for(luatexjafontspecoptions)$$luatexjafontspecoptions$$sep$,$endfor$]{luatexja-fontspec}
|
||||||
|
\setmainjfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
\fi
|
||||||
|
$if(beamer)$
|
||||||
|
$if(theme)$
|
||||||
|
\usetheme[$for(themeoptions)$$themeoptions$$sep$,$endfor$]{$theme$}
|
||||||
|
$endif$
|
||||||
|
$if(colortheme)$
|
||||||
|
\usecolortheme{$colortheme$}
|
||||||
|
$endif$
|
||||||
|
$if(fonttheme)$
|
||||||
|
\usefonttheme{$fonttheme$}
|
||||||
|
$endif$
|
||||||
|
$if(mainfont)$
|
||||||
|
\usefonttheme{serif} % use mainfont rather than sansfont for slide text
|
||||||
|
$endif$
|
||||||
|
$if(innertheme)$
|
||||||
|
\useinnertheme{$innertheme$}
|
||||||
|
$endif$
|
||||||
|
$if(outertheme)$
|
||||||
|
\useoutertheme{$outertheme$}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
% use upquote if available, for straight quotes in verbatim environments
|
||||||
|
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
||||||
|
% use microtype if available
|
||||||
|
\IfFileExists{microtype.sty}{%
|
||||||
|
\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
|
||||||
|
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
||||||
|
}{}
|
||||||
|
$if(indent)$
|
||||||
|
$else$
|
||||||
|
\IfFileExists{parskip.sty}{%
|
||||||
|
\usepackage{parskip}
|
||||||
|
}{% else
|
||||||
|
\setlength{\parindent}{0pt}
|
||||||
|
\setlength{\parskip}{6pt plus 2pt minus 1pt}
|
||||||
|
}
|
||||||
|
$endif$
|
||||||
|
$if(verbatim-in-note)$
|
||||||
|
\usepackage{fancyvrb}
|
||||||
|
$endif$
|
||||||
|
$if(colorlinks)$
|
||||||
|
\usepackage{xcolor}
|
||||||
|
$endif$
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup{
|
||||||
|
$if(title-meta)$
|
||||||
|
pdftitle={$title-meta$},
|
||||||
|
$endif$
|
||||||
|
$if(author-meta)$
|
||||||
|
pdfauthor={$author-meta$},
|
||||||
|
$endif$
|
||||||
|
$if(keywords)$
|
||||||
|
pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
|
||||||
|
$endif$
|
||||||
|
$if(colorlinks)$
|
||||||
|
colorlinks=true,
|
||||||
|
linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$,
|
||||||
|
citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,
|
||||||
|
urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$,
|
||||||
|
$else$
|
||||||
|
pdfborder={0 0 0},
|
||||||
|
$endif$
|
||||||
|
breaklinks=true}
|
||||||
|
\urlstyle{same} % don't use monospace font for urls
|
||||||
|
$if(verbatim-in-note)$
|
||||||
|
\VerbatimFootnotes % allows verbatim text in footnotes
|
||||||
|
$endif$
|
||||||
|
$if(geometry)$
|
||||||
|
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
\newif\ifbibliography
|
||||||
|
$endif$
|
||||||
|
$if(listings)$
|
||||||
|
\usepackage{listings}
|
||||||
|
\newcommand{\passthrough}[1]{#1}
|
||||||
|
$endif$
|
||||||
|
$if(lhs)$
|
||||||
|
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
||||||
|
$endif$
|
||||||
|
$if(highlighting-macros)$
|
||||||
|
$highlighting-macros$
|
||||||
|
$endif$
|
||||||
|
$if(tables)$
|
||||||
|
\usepackage{longtable,booktabs}
|
||||||
|
$if(beamer)$
|
||||||
|
\usepackage{caption}
|
||||||
|
% These lines are needed to make table captions work with longtable:
|
||||||
|
\makeatletter
|
||||||
|
\def\fnum@table{\tablename~\thetable}
|
||||||
|
\makeatother
|
||||||
|
$else$
|
||||||
|
% Fix footnotes in tables (requires footnote package)
|
||||||
|
\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{longtable}}{}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(graphics)$
|
||||||
|
\usepackage{graphicx,grffile}
|
||||||
|
\makeatletter
|
||||||
|
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
|
||||||
|
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
|
||||||
|
\makeatother
|
||||||
|
% Scale images if necessary, so that they will not overflow the page
|
||||||
|
% margins by default, and it is still possible to overwrite the defaults
|
||||||
|
% using explicit options in \includegraphics[width, height, ...]{}
|
||||||
|
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
% Prevent slide breaks in the middle of a paragraph:
|
||||||
|
\widowpenalties 1 10000
|
||||||
|
\raggedbottom
|
||||||
|
$if(section-titles)$
|
||||||
|
\setbeamertemplate{part page}{
|
||||||
|
\centering
|
||||||
|
\begin{beamercolorbox}[sep=16pt,center]{part title}
|
||||||
|
\usebeamerfont{part title}\insertpart\par
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
\setbeamertemplate{section page}{
|
||||||
|
\centering
|
||||||
|
\begin{beamercolorbox}[sep=12pt,center]{part title}
|
||||||
|
\usebeamerfont{section title}\insertsection\par
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
\setbeamertemplate{subsection page}{
|
||||||
|
\centering
|
||||||
|
\begin{beamercolorbox}[sep=8pt,center]{part title}
|
||||||
|
\usebeamerfont{subsection title}\insertsubsection\par
|
||||||
|
\end{beamercolorbox}
|
||||||
|
}
|
||||||
|
\AtBeginPart{
|
||||||
|
\frame{\partpage}
|
||||||
|
}
|
||||||
|
\AtBeginSection{
|
||||||
|
\ifbibliography
|
||||||
|
\else
|
||||||
|
\frame{\sectionpage}
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\AtBeginSubsection{
|
||||||
|
\frame{\subsectionpage}
|
||||||
|
}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(links-as-notes)$
|
||||||
|
% Make links footnotes instead of hotlinks:
|
||||||
|
\DeclareRobustCommand{\href}[2]{#2\footnote{\url{#1}}}
|
||||||
|
$endif$
|
||||||
|
$if(strikeout)$
|
||||||
|
\usepackage[normalem]{ulem}
|
||||||
|
% avoid problems with \sout in headers with hyperref:
|
||||||
|
\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
|
||||||
|
$endif$
|
||||||
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
||||||
|
\providecommand{\tightlist}{%
|
||||||
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
||||||
|
$if(numbersections)$
|
||||||
|
\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
|
||||||
|
$else$
|
||||||
|
\setcounter{secnumdepth}{0}
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
$else$
|
||||||
|
$if(subparagraph)$
|
||||||
|
$else$
|
||||||
|
% Redefines (sub)paragraphs to behave more like sections
|
||||||
|
\ifx\paragraph\undefined\else
|
||||||
|
\let\oldparagraph\paragraph
|
||||||
|
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
|
||||||
|
\fi
|
||||||
|
\ifx\subparagraph\undefined\else
|
||||||
|
\let\oldsubparagraph\subparagraph
|
||||||
|
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(pagestyle)$
|
||||||
|
\pagestyle{$pagestyle$}
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
% set default figure placement to htbp
|
||||||
|
\makeatletter
|
||||||
|
\def\fps@figure{htbp}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
$for(header-includes)$
|
||||||
|
$header-includes$
|
||||||
|
$endfor$
|
||||||
|
$if(lang)$
|
||||||
|
%\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
||||||
|
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
|
||||||
|
$if(babel-newcommands)$
|
||||||
|
$babel-newcommands$
|
||||||
|
$endif$
|
||||||
|
%\else
|
||||||
|
% % load polyglossia as late as possible as it *could* call bidi if RTL lang (e.g. Hebrew or Arabic)
|
||||||
|
% \usepackage{polyglossia}
|
||||||
|
% \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
|
||||||
|
$for(polyglossia-otherlangs)$
|
||||||
|
% \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
|
||||||
|
$endfor$
|
||||||
|
%\fi
|
||||||
|
$endif$
|
||||||
|
$if(dir)$
|
||||||
|
\ifxetex
|
||||||
|
% load bidi as late as possible as it modifies e.g. graphicx
|
||||||
|
$if(latex-dir-rtl)$
|
||||||
|
\usepackage[RTLdocument]{bidi}
|
||||||
|
$else$
|
||||||
|
\usepackage{bidi}
|
||||||
|
$endif$
|
||||||
|
\fi
|
||||||
|
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
||||||
|
\TeXXeTstate=1
|
||||||
|
\newcommand{\RL}[1]{\beginR #1\endR}
|
||||||
|
\newcommand{\LR}[1]{\beginL #1\endL}
|
||||||
|
\newenvironment{RTL}{\beginR}{\endR}
|
||||||
|
\newenvironment{LTR}{\beginL}{\endL}
|
||||||
|
\fi
|
||||||
|
$endif$
|
||||||
|
$if(natbib)$
|
||||||
|
\usepackage[$natbiboptions$]{natbib}
|
||||||
|
\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
|
||||||
|
$endif$
|
||||||
|
$if(biblatex)$
|
||||||
|
\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
|
||||||
|
$for(bibliography)$
|
||||||
|
\addbibresource{$bibliography$}
|
||||||
|
$endfor$
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$if(title)$
|
||||||
|
\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
|
||||||
|
$endif$
|
||||||
|
$if(subtitle)$
|
||||||
|
\providecommand{\subtitle}[1]{}
|
||||||
|
\subtitle{$subtitle$}
|
||||||
|
$endif$
|
||||||
|
$if(author)$
|
||||||
|
\author{$for(author)$$author$$sep$ \and $endfor$}
|
||||||
|
$endif$
|
||||||
|
$if(institute)$
|
||||||
|
\providecommand{\institute}[1]{}
|
||||||
|
\institute{$for(institute)$$institute$$sep$ \and $endfor$}
|
||||||
|
$endif$
|
||||||
|
\date{$date$}
|
||||||
|
$if(beamer)$
|
||||||
|
$if(titlegraphic)$
|
||||||
|
\titlegraphic{\includegraphics{$titlegraphic$}}
|
||||||
|
$endif$
|
||||||
|
$if(logo)$
|
||||||
|
\logo{\includegraphics{$logo$}}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
$if(title)$
|
||||||
|
$if(beamer)$
|
||||||
|
\frame{\titlepage}
|
||||||
|
$else$
|
||||||
|
\maketitle
|
||||||
|
$endif$
|
||||||
|
$if(abstract)$
|
||||||
|
\begin{abstract}
|
||||||
|
$abstract$
|
||||||
|
\end{abstract}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$for(include-before)$
|
||||||
|
$include-before$
|
||||||
|
|
||||||
|
$endfor$
|
||||||
|
$if(toc)$
|
||||||
|
$if(beamer)$
|
||||||
|
\begin{frame}
|
||||||
|
\tableofcontents[hideallsubsections]
|
||||||
|
\end{frame}
|
||||||
|
$else$
|
||||||
|
{
|
||||||
|
$if(colorlinks)$
|
||||||
|
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$$endif$}
|
||||||
|
$endif$
|
||||||
|
\setcounter{tocdepth}{$toc-depth$}
|
||||||
|
\tableofcontents
|
||||||
|
}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(lot)$
|
||||||
|
\listoftables
|
||||||
|
$endif$
|
||||||
|
$if(lof)$
|
||||||
|
\listoffigures
|
||||||
|
$endif$
|
||||||
|
$body$
|
||||||
|
|
||||||
|
$if(natbib)$
|
||||||
|
$if(bibliography)$
|
||||||
|
$if(biblio-title)$
|
||||||
|
$if(book-class)$
|
||||||
|
\renewcommand\bibname{$biblio-title$}
|
||||||
|
$else$
|
||||||
|
\renewcommand\refname{$biblio-title$}
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(beamer)$
|
||||||
|
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||||
|
\bibliographytrue
|
||||||
|
$endif$
|
||||||
|
\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
|
||||||
|
$if(beamer)$
|
||||||
|
\end{frame}
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$endif$
|
||||||
|
$endif$
|
||||||
|
$if(biblatex)$
|
||||||
|
$if(beamer)$
|
||||||
|
\begin{frame}[allowframebreaks]{$biblio-title$}
|
||||||
|
\bibliographytrue
|
||||||
|
\printbibliography[heading=none]
|
||||||
|
\end{frame}
|
||||||
|
$else$
|
||||||
|
\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
$endif$
|
||||||
|
$for(include-after)$
|
||||||
|
$include-after$
|
||||||
|
|
||||||
|
$endfor$
|
||||||
|
\end{document}
|