Final version.
authorEugen Sawin <sawine@me73.com>
Fri, 04 Jun 2010 13:48:28 +0200
changeset 0feede61efa96
child 1 866172a16472
Final version.
Leitfaden_BachelorArbeit_4.pdf
data/analyse.py
data/cutbase.py
data/dflowlog.py
data/filter.py
data/labtar.csv
data/laldo.csv
data/logs/dflow_constraints.cl
data/logs/dflow_logs_2010_03_10-19.tar.gz
data/plot1.plt
data/plot2.plt
data/prismalog.py
data/pushbackcolumn.py
kolloquium1/ATCCL.ppt
kolloquium1/BTColloquium1.pdf
kolloquium1/BTColloquium1.ppt
kolloquium1/OMAE ENR chart.pdf
kolloquium1/mlat.png
kolloquium1/omae.pdf
kolloquium1/overview.png
kolloquium1/overview.psd
kolloquium1/quadrant.png
kolloquium1/radar.png
kolloquium1/user.png
kolloquium2/BTColloquium2.pdf
kolloquium2/BTColloquium2.pptx
kolloquium2/images/AI_CMYK_300DPI.JPG
kolloquium2/images/ahms_symbol.png
kolloquium2/images/aim_blue.png
kolloquium2/images/aim_symbol.png
kolloquium2/images/artas_symbol.png
kolloquium2/images/atccl.png
kolloquium2/images/atccl.svg
kolloquium2/images/atccl_symbol.png
kolloquium2/images/atccl_symbol.psd
kolloquium2/images/auto_blue_symbol.png
kolloquium2/images/auto_symbol.png
kolloquium2/images/dflow.svg
kolloquium2/images/display_symbol.png
kolloquium2/images/end.png
kolloquium2/images/fh-offenburg_cmyk-300dpi.jpg
kolloquium2/images/gcaa.gif
kolloquium2/images/gcaa_symbol.png
kolloquium2/images/monitor_symbol.png
kolloquium2/images/prisma_hardware.png
kolloquium2/images/prisma_symbol.png
kolloquium2/images/rec_symbol.png
kolloquium2/images/support_symbol.png
kolloquium2/images/sur_com_symbol.png
kolloquium2/images/sur_symbol.png
kolloquium2/images/vm.svg
mindmap.mm
paper/atccl.lex
paper/atccl.y
paper/document.tex
paper/geometry.sty
paper/makefile
paper/out/thesis.pdf
paper/src/abstract.tex
paper/src/analysis.tex
paper/src/appendix.tex
paper/src/atccl.y
paper/src/atccl_comments.txt
paper/src/atccl_config.txt
paper/src/atccl_constraints.txt
paper/src/atccl_datatypes.txt
paper/src/atccl_ebnf.txt
paper/src/atccl_ebnf_1.txt
paper/src/atccl_ebnf_2.txt
paper/src/atccl_example1.txt
paper/src/atccl_example2.txt
paper/src/atccl_flowpoints.txt
paper/src/atccl_ids.txt
paper/src/atccl_keywords.txt
paper/src/atccl_letters_digits.txt
paper/src/atccl_operators.txt
paper/src/atccl_patterns.txt
paper/src/atccl_properties.txt
paper/src/atot_etot_atd.pdf
paper/src/atot_etot_atd.tex
paper/src/bison_config1.txt
paper/src/conclusion.tex
paper/src/design.tex
paper/src/document.pdf
paper/src/document.tex
paper/src/ebnf.txt
paper/src/flex_config1.txt
paper/src/flex_config2.txt
paper/src/flex_config3.txt
paper/src/flex_config4.txt
paper/src/flex_config5.txt
paper/src/flex_config6.txt
paper/src/flex_config7.txt
paper/src/flex_config8.txt
paper/src/flex_config9.txt
paper/src/graph1.pdf
paper/src/graph1.tex
paper/src/images/BlankMap-World6.pdf
paper/src/images/Screenshot-4.png
paper/src/images/ai.jpg
paper/src/images/atfm_stats.pdf
paper/src/images/atfm_stats.svg
paper/src/images/compile_process.pdf
paper/src/images/compile_process.svg
paper/src/images/compiler.pdf
paper/src/images/compiler.png
paper/src/images/compiler.svg
paper/src/images/compiler_architecture.pdf
paper/src/images/compiler_design.pdf
paper/src/images/dflow_cln_tables.png
paper/src/images/dflow_displays.png
paper/src/images/dflow_displays_grey.png
paper/src/images/fho.jpg
paper/src/images/flight_plan.png
paper/src/images/hybrid_compiler.pdf
paper/src/images/hybrid_compiler.svg
paper/src/images/interpreter.pdf
paper/src/images/interpreter.svg
paper/src/images/near_east.pdf
paper/src/images/near_east_problem.pdf
paper/src/images/pattern_evaluation.pdf
paper/src/images/pattern_evaluation.svg
paper/src/images/stack_vector_uml.png
paper/src/images/term_operator_uml.png
paper/src/images/title_page.pdf
paper/src/images/uml_factories.png
paper/src/images/uml_flight_plan.png
paper/src/images/uml_property.png
paper/src/images/uml_terms.png
paper/src/images/uml_vm.png
paper/src/images/virtual_machine_basic.pdf
paper/src/images/virtual_machine_basic.svg
paper/src/images/virtual_machine_uml.png
paper/src/images/world_map.pdf
paper/src/impl.tex
paper/src/intro.tex
paper/src/labtar_hist.pdf
paper/src/labtar_hist.tex
paper/src/laldo_hist.pdf
paper/src/laldo_hist.tex
paper/src/pattern_example1.txt
paper/src/preface.tex
paper/src/references.bib
paper/src/research.tex
paper/src/title.tex
paper/src/verification.tex
references/bachelorarbeit-2008-biedermann.pdf
references/eurocontrol_dman.pdf
references/flugleiter2007_04.pdf
report_12.10.2009
report_24.09.2009
thesis_arbeitspakete.pdf
work_breakdown.ods
work_breakdown.xls
     1.1 Binary file Leitfaden_BachelorArbeit_4.pdf has changed
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/data/analyse.py	Fri Jun 04 13:48:28 2010 +0200
     2.3 @@ -0,0 +1,79 @@
     2.4 +#!/usr/bin/python
     2.5 +
     2.6 +import dflowlog
     2.7 +from dflowlog import dflow_fields as fields
     2.8 +from filter import filter
     2.9 +import sys
    2.10 +from datetime import datetime
    2.11 +from datetime import timedelta
    2.12 +from optparse import OptionParser
    2.13 +
    2.14 +
    2.15 +def get_datetime(row, value):
    2.16 +	date, time = row[fields[value]].split()
    2.17 +	year, month, day = date.split("-")
    2.18 +	hour, minute, second = time.split(":")
    2.19 +	return datetime(int(year), int(month), int(day), int(hour), int(minute), int(second))
    2.20 +
    2.21 +def time_diff(dt1, dt2):	
    2.22 +	diff = (max(dt1,dt2) - min(dt1, dt2))
    2.23 +	diff = diff.seconds / 60 + diff.days * 24 * 60
    2.24 +	if dt1 < dt2:
    2.25 +		diff *= -1
    2.26 +	return diff
    2.27 +
    2.28 +def diff(values, plans):
    2.29 +	new_plans = []
    2.30 +	for plan in plans:
    2.31 +		new_plans.append(plan)
    2.32 +		v1 = get_datetime(plan, values[0])
    2.33 +		v2 = get_datetime(plan, values[1])
    2.34 +		new_plans[-1].append(str(time_diff(v1, v2)))
    2.35 +	return new_plans
    2.36 +
    2.37 +def column_diff(values, plans):
    2.38 +	new_plans = []
    2.39 +	flow_points = []
    2.40 +	for plan in plans:
    2.41 +		flow_point = plan[fields["flow_point"]]
    2.42 +		if flow_point not in flow_points:
    2.43 +			flow_points.append(flow_point)
    2.44 +	for fp in flow_points:
    2.45 +		flow_plans = filter("flow_point", fp, plans)		
    2.46 +		for plan in flow_plans:
    2.47 +			min_sep = 999
    2.48 +			current_plan = plan
    2.49 +			current_flow_time = get_datetime(current_plan, values[0])			
    2.50 +			for plan2 in flow_plans:
    2.51 +				if plan2 is not current_plan:
    2.52 +					min_sep = min(min_sep, 
    2.53 +									abs(time_diff(get_datetime(plan2, values[0]),
    2.54 +									current_flow_time)))				
    2.55 +			if min_sep < 999:
    2.56 +				plan.append(str(min_sep))
    2.57 +			new_plans.append(plan)
    2.58 +	return new_plans
    2.59 +
    2.60 +if __name__ == "__main__":
    2.61 +	modes = {"diff": (diff, 3),
    2.62 +				"cdiff": (column_diff, 2)}
    2.63 +	arg_parser = OptionParser(usage="usage: %prog [options] diff column1 column2 csv_logs\
    2.64 +									 %prog [options] cdiff column csv_logs")
    2.65 +	arg_parser.add_option("-f", "--files",
    2.66 +				action="store_true", dest="files_mode",
    2.67 +				help="csv_logs are files")
    2.68 +	arg_parser.set_defaults(files_mode=False)
    2.69 +	(options, args) = arg_parser.parse_args()
    2.70 +	plans = []
    2.71 +	
    2.72 +	if options.files_mode:
    2.73 +		plans =	dflowlog.parse_files(args[modes[args[0]][1]:])
    2.74 +		options.files_mode = False
    2.75 +	else:
    2.76 +		plans = dflowlog.parse_pipe(args[modes[args[0]][1]:])
    2.77 +	
    2.78 +	plans = modes[args[0]][0](args[1:], plans)	
    2.79 +		
    2.80 +	dflowlog.print_logs(plans)
    2.81 +	
    2.82 +
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/data/cutbase.py	Fri Jun 04 13:48:28 2010 +0200
     3.3 @@ -0,0 +1,18 @@
     3.4 +#!/usr/bin/python
     3.5 +
     3.6 +import dflowlog
     3.7 +from dflowlog import dflow_fields as fields
     3.8 +from filter import filter
     3.9 +import sys
    3.10 +from datetime import datetime
    3.11 +from datetime import timedelta
    3.12 +from optparse import OptionParser
    3.13 +
    3.14 +if __name__ == "__main__":	
    3.15 +	arg_parser = OptionParser(usage="usage: %prog [options] column_number csv_file1 csv_file2 ...")
    3.16 +	(options, args) = arg_parser.parse_args()
    3.17 +	plans = dflowlog.parse_files(args[1:])
    3.18 +	plans = [plan[int(args[0]):] for plan in plans]
    3.19 +	dflowlog.print_logs(plans)
    3.20 +	
    3.21 +
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/data/dflowlog.py	Fri Jun 04 13:48:28 2010 +0200
     4.3 @@ -0,0 +1,33 @@
     4.4 +import csv
     4.5 +
     4.6 +dflow_fields={"log_time": 0, "call_sign": 1, "adep": 2,
     4.7 +		"rwy": 3, "ades": 4, "etot": 5, "atot": 6, "flow_point": 7, 
     4.8 +		"flow_time": 8, "atd": 9}
     4.9 +
    4.10 +def parse_files(args):
    4.11 +	plans = []
    4.12 +	for file in args:
    4.13 +		reader = csv.reader(open(file, "rb"), delimiter=",", quoting=csv.QUOTE_NONE, quotechar="'")
    4.14 +		for row in reader:
    4.15 +			plans.append(row)
    4.16 +	return plans
    4.17 +
    4.18 +def parse_pipe(args):
    4.19 +	plans = []
    4.20 +	row = []
    4.21 +	input_str = "".join(args)
    4.22 +	values = input_str.split(",")
    4.23 +	for v in values:
    4.24 +		row.append(v)
    4.25 +		if len(row) == len(dflow_fields):
    4.26 +			plans.append(row)
    4.27 +			row = []
    4.28 +	return plans
    4.29 +
    4.30 +def print_logs(plans):
    4.31 +	plan_str = str()
    4.32 +	for plan in plans:
    4.33 +		if len(plan_str) > 0:
    4.34 +			plan_str += "\n"
    4.35 +		plan_str += ",".join(plan)
    4.36 +	print plan_str
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/data/filter.py	Fri Jun 04 13:48:28 2010 +0200
     5.3 @@ -0,0 +1,73 @@
     5.4 +#!/usr/bin/python
     5.5 +
     5.6 +import dflowlog
     5.7 +from dflowlog import dflow_fields as fields
     5.8 +
     5.9 +import sys
    5.10 +from optparse import OptionParser
    5.11 +
    5.12 +def purge_zero(plans):
    5.13 +	new_plans = []
    5.14 +	for plan in plans:
    5.15 +		if int(plan[10]) != 0:
    5.16 +			new_plans.append(plan)
    5.17 +	return new_plans
    5.18 +	
    5.19 +def purge_empty(plans):
    5.20 +	new_plans = []
    5.21 +	for plan in plans:
    5.22 +		if len(plan) >= len(fields) and len(plan[fields["flow_point"]]) > 1:
    5.23 +			new_plans.append(plan)
    5.24 +	return new_plans
    5.25 +
    5.26 +def purge_duplicates(plans):
    5.27 +	new_plans = dict()
    5.28 +	for plan in plans:
    5.29 +		if len(plan) >= len(fields):
    5.30 +			new_plans[(plan[fields["call_sign"]], plan[fields["atd"]])] = plan
    5.31 +	return new_plans.itervalues()
    5.32 +
    5.33 +def filter(column, value, plans):
    5.34 +	new_plans = []
    5.35 +	for plan in plans:
    5.36 +		if len(plan) >= fields[column] and plan[fields[column]] == value:
    5.37 +			new_plans.append(plan)
    5.38 +	return new_plans			
    5.39 +
    5.40 +if __name__ == "__main__":
    5.41 +	option_map = {str(purge_duplicates): purge_duplicates,
    5.42 +					str(purge_empty): purge_empty,
    5.43 +					str(purge_zero): purge_zero}
    5.44 +	arg_parser = OptionParser(usage="usage: %prog [options] csv_logs ...")
    5.45 +	arg_parser.add_option("-d", "--duplicate",
    5.46 +				action="store_true", dest=str(purge_duplicates),
    5.47 +				help="remove duplicate entries")
    5.48 +	arg_parser.add_option("-e", "--empty",
    5.49 +				action="store_true", dest=str(purge_empty),
    5.50 +				help="remove entries with empty flow points")
    5.51 +	arg_parser.add_option("-z", "--zero",
    5.52 +				action="store_true", dest=str(purge_zero),
    5.53 +				help="remove entries with empty flow points")
    5.54 +	arg_parser.add_option("-f", "--files",
    5.55 +				action="store_true", dest="files_mode",
    5.56 +				help="arguments (csv_logs) are files")
    5.57 +	arg_parser.set_defaults(purge_duplicates=False)
    5.58 +	arg_parser.set_defaults(purge_empty=False)
    5.59 +	arg_parser.set_defaults(purge_zero=False)
    5.60 +	arg_parser.set_defaults(files_mode=False)
    5.61 +	(options, args) = arg_parser.parse_args()
    5.62 +
    5.63 +	plans = []
    5.64 +
    5.65 +	if options.files_mode:
    5.66 +		plans =	dflowlog.parse_files(args)
    5.67 +		options.files_mode = False
    5.68 +	else:
    5.69 +		plans = dflowlog.parse_pipe(args)
    5.70 +
    5.71 +	for option in options.__dict__:
    5.72 +		if getattr(options, option):
    5.73 +			 plans = option_map[option](plans)
    5.74 +	dflowlog.print_logs(plans)
    5.75 +	
    5.76 +
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/data/labtar.csv	Fri Jun 04 13:48:28 2010 +0200
     6.3 @@ -0,0 +1,27 @@
     6.4 +      1 
     6.5 +      4 0
     6.6 +      4 1
     6.7 +      3 2
     6.8 +    103 3
     6.9 +     55 4
    6.10 +    726 5
    6.11 +     11 6
    6.12 +     25 7
    6.13 +     11 8
    6.14 +     23 9
    6.15 +     21 10
    6.16 +      5 11
    6.17 +      6 12
    6.18 +      6 13
    6.19 +      8 14
    6.20 +      3 15
    6.21 +      2 16
    6.22 +      1 17
    6.23 +      1 18
    6.24 +      3 19
    6.25 +      1 20
    6.26 +      1 22
    6.27 +      1 24
    6.28 +      1 27
    6.29 +      3 30
    6.30 +      1 35
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/data/laldo.csv	Fri Jun 04 13:48:28 2010 +0200
     7.3 @@ -0,0 +1,25 @@
     7.4 +      8 0
     7.5 +     12 1
     7.6 +      3 2
     7.7 +    400 3
     7.8 +    125 4
     7.9 +     64 5
    7.10 +     32 6
    7.11 +     18 7
    7.12 +      7 8
    7.13 +     18 9
    7.14 +     15 10
    7.15 +      2 11
    7.16 +      3 12
    7.17 +      7 13
    7.18 +      5 14
    7.19 +      1 15
    7.20 +      1 16
    7.21 +      2 17
    7.22 +      1 18
    7.23 +      4 19
    7.24 +      1 20
    7.25 +      1 22
    7.26 +      1 23
    7.27 +      1 24
    7.28 +      1 30
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/data/logs/dflow_constraints.cl	Fri Jun 04 13:48:28 2010 +0200
     8.3 @@ -0,0 +1,40 @@
     8.4 +######## GCAA DFLOW CONSTRAINTS #######
     8.5 +
     8.6 +#### LALDO flow point ####
     8.7 +pattern Laldo(
     8.8 +	(ADEP is "OMDB" or ADEP is "OMSJ" or ADEP is "OMRK" or ADEP is "OMDM")
     8.9 +	and COPX is "LALDO" or COPX is "GOMTA" and ADES is not "OOMS")
    8.10 +
    8.11 +constraint Laldo5(
    8.12 +        TIME_SEP at ["LALDO", "GOMTA"] is 3 min from 0000 until 0100
    8.13 +        and TIME_SEP at ["LALDO", "GOMTA"] is 3 min from 1820 until 2030
    8.14 +        and TIME_SEP at ["LALDO", "GOMTA"] is 3 min from 2250 until 2359)
    8.15 +
    8.16 +flowpoint LALDO(Laldo: Laldo5)
    8.17 +
    8.18 +#### LABTAR flow point ####
    8.19 +pattern LabTar(
    8.20 +	(ADEP is "OMDB" or ADEP is "OMSJ" or ADEP is "OMRK" or ADEP is "OMAA"
    8.21 +		or ADEP is "OMAD" or ADEP is "OMAL" or ADEP is "OMDM")
    8.22 +	and (COPX is "LABRI" or COPX is "TARDI")
    8.23 +	and (ADES is not "OOMS"))
    8.24 +constraint LabTar3(
    8.25 +	TIME_SEP at ["LABRI", "TARDI"] is 5 min from 0620 until 0730
    8.26 +	and TIME_SEP at ["LABRI", "TARDI"] is 5 min from 1820 until 2000
    8.27 +	and TIME_SEP at ["LABRI", "TARDI"] is 3 min from 1951 until 2130
    8.28 +	and TIME_SEP at ["LABRI", "TARDI"] is 5 min from 2121 until 2359)
    8.29 +
    8.30 +
    8.31 +flowpoint LABTAR(LabTar: LabTar3)
    8.32 +
    8.33 +#### COPPI flow point ####
    8.34 +pattern Coppi("COPPI" in ROUTE)
    8.35 +
    8.36 +constraint Coppi5(TIME_SEP at "COPPI" is 5 min at FL [240, 260, 300, 320, 340, 360, 380, 400])
    8.37 +
    8.38 +flowpoint COPPI(Coppi: Coppi5)
    8.39 +
    8.40 +
    8.41 +
    8.42 +
    8.43 +
     9.1 Binary file data/logs/dflow_logs_2010_03_10-19.tar.gz has changed
    10.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.2 +++ b/data/plot1.plt	Fri Jun 04 13:48:28 2010 +0200
    10.3 @@ -0,0 +1,14 @@
    10.4 +set format "$%g$"
    10.5 +#set title ""
    10.6 +set xlabel "ATOT/ETOT-Differenz (min)"
    10.7 +set ylabel "ATOT/ATD-Differenz (min)"
    10.8 +set border 3
    10.9 +set xtics nomirror
   10.10 +set ytics nomirror
   10.11 +set terminal epslatex
   10.12 +set output "atot_etot_atd.eps"
   10.13 +set datafile separator ","
   10.14 +set size 0.8, 0.8
   10.15 +set xrange [0:40]
   10.16 +set yrange [-30:30]
   10.17 +plot "cut_logs.csv" using 1:2 with points
    11.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.2 +++ b/data/plot2.plt	Fri Jun 04 13:48:28 2010 +0200
    11.3 @@ -0,0 +1,15 @@
    11.4 +set format "$%g$"
    11.5 +#set title ""
    11.6 +set xlabel "Separationszeit (min)"
    11.7 +set ylabel "Häufigkeit"
    11.8 +set border 3
    11.9 +set xtics nomirror
   11.10 +set ytics nomirror
   11.11 +set terminal epslatex
   11.12 +#set datafile separator ","
   11.13 +set size 0.6, 0.6
   11.14 +#set xrange [0:40]
   11.15 +#set yrange [-30:30]
   11.16 +#set style data histogram
   11.17 +set output "laldo_hist.eps"
   11.18 +plot "laldo.csv" using 2:1 with boxes
    12.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.2 +++ b/data/prismalog.py	Fri Jun 04 13:48:28 2010 +0200
    12.3 @@ -0,0 +1,33 @@
    12.4 +import csv
    12.5 +
    12.6 +dflow_fields={"log_time": 0, "call_sign": 1, "adep": 2,
    12.7 +		"rwy": 3, "ades": 4, "etot": 5, "atot": 6, "flow_point": 7, 
    12.8 +		"flow_time": 8, "atd": 9}
    12.9 +
   12.10 +def parse_files(args):
   12.11 +	plans = []
   12.12 +	for file in args:
   12.13 +		reader = csv.reader(open(file, "rb"), delimiter=",", quoting=csv.QUOTE_NONE, quotechar="'")
   12.14 +		for row in reader:
   12.15 +			plans.append(row)
   12.16 +	return plans
   12.17 +
   12.18 +def parse_pipe(args):
   12.19 +	plans = []
   12.20 +	row = []
   12.21 +	input_str = "".join(args)
   12.22 +	values = input_str.split(",")
   12.23 +	for v in values:
   12.24 +		row.append(v)
   12.25 +		if len(row) == len(dflow_fields):
   12.26 +			plans.append(row)
   12.27 +			row = []
   12.28 +	return plans
   12.29 +
   12.30 +def print_logs(plans):
   12.31 +	plan_str = str()
   12.32 +	for plan in plans:
   12.33 +		if len(plan_str) > 0:
   12.34 +			plan_str += "\n"
   12.35 +		plan_str += ",".join(plan)
   12.36 +	print plan_str
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/data/pushbackcolumn.py	Fri Jun 04 13:48:28 2010 +0200
    13.3 @@ -0,0 +1,20 @@
    13.4 +#!/usr/bin/python
    13.5 +
    13.6 +import dflowlog
    13.7 +from dflowlog import dflow_fields as fields
    13.8 +from filter import filter
    13.9 +import sys
   13.10 +from datetime import datetime
   13.11 +from datetime import timedelta
   13.12 +from optparse import OptionParser
   13.13 +
   13.14 +if __name__ == "__main__":	
   13.15 +	arg_parser = OptionParser(usage="usage: %prog [options] column_id csv_file1 csv_file2 ...")
   13.16 +	(options, args) = arg_parser.parse_args()
   13.17 +	plans = dflowlog.parse_files(args[1:])
   13.18 +	for plan in plans:
   13.19 +		index = int(args[0])
   13.20 +		tmp = (plan[index])
   13.21 +		del plan[index]
   13.22 +		plan.append(tmp)
   13.23 +	dflowlog.print_logs(plans)
    14.1 Binary file kolloquium1/ATCCL.ppt has changed
    15.1 Binary file kolloquium1/BTColloquium1.pdf has changed
    16.1 Binary file kolloquium1/BTColloquium1.ppt has changed
    17.1 Binary file kolloquium1/OMAE ENR chart.pdf has changed
    18.1 Binary file kolloquium1/mlat.png has changed
    19.1 Binary file kolloquium1/omae.pdf has changed
    20.1 Binary file kolloquium1/overview.png has changed
    21.1 Binary file kolloquium1/overview.psd has changed
    22.1 Binary file kolloquium1/quadrant.png has changed
    23.1 Binary file kolloquium1/radar.png has changed
    24.1 Binary file kolloquium1/user.png has changed
    25.1 Binary file kolloquium2/BTColloquium2.pdf has changed
    26.1 Binary file kolloquium2/BTColloquium2.pptx has changed
    27.1 Binary file kolloquium2/images/AI_CMYK_300DPI.JPG has changed
    28.1 Binary file kolloquium2/images/ahms_symbol.png has changed
    29.1 Binary file kolloquium2/images/aim_blue.png has changed
    30.1 Binary file kolloquium2/images/aim_symbol.png has changed
    31.1 Binary file kolloquium2/images/artas_symbol.png has changed
    32.1 Binary file kolloquium2/images/atccl.png has changed
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/kolloquium2/images/atccl.svg	Fri Jun 04 13:48:28 2010 +0200
    33.3 @@ -0,0 +1,1303 @@
    33.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    33.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
    33.6 +
    33.7 +<svg
    33.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
    33.9 +   xmlns:cc="http://creativecommons.org/ns#"
   33.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   33.11 +   xmlns:svg="http://www.w3.org/2000/svg"
   33.12 +   xmlns="http://www.w3.org/2000/svg"
   33.13 +   xmlns:xlink="http://www.w3.org/1999/xlink"
   33.14 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   33.15 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   33.16 +   width="744.09448819"
   33.17 +   height="1052.3622047"
   33.18 +   id="svg2"
   33.19 +   version="1.1"
   33.20 +   inkscape:version="0.47 r22583"
   33.21 +   sodipodi:docname="atccl.svg"
   33.22 +   inkscape:export-filename="C:\Users\kiome\Workspace\comsoft\comsoft\thesis\kolloquium2\images\atccl.png"
   33.23 +   inkscape:export-xdpi="90"
   33.24 +   inkscape:export-ydpi="90">
   33.25 +  <defs
   33.26 +     id="defs4">
   33.27 +    <linearGradient
   33.28 +       id="linearGradient7274"
   33.29 +       inkscape:collect="always">
   33.30 +      <stop
   33.31 +         id="stop7276"
   33.32 +         offset="0"
   33.33 +         style="stop-color:#000000;stop-opacity:1;" />
   33.34 +      <stop
   33.35 +         id="stop7278"
   33.36 +         offset="1"
   33.37 +         style="stop-color:#0089f9;stop-opacity:1" />
   33.38 +    </linearGradient>
   33.39 +    <linearGradient
   33.40 +       id="linearGradient7268"
   33.41 +       inkscape:collect="always">
   33.42 +      <stop
   33.43 +         id="stop7270"
   33.44 +         offset="0"
   33.45 +         style="stop-color:#000000;stop-opacity:1" />
   33.46 +      <stop
   33.47 +         id="stop7272"
   33.48 +         offset="1"
   33.49 +         style="stop-color:#0089f9;stop-opacity:1" />
   33.50 +    </linearGradient>
   33.51 +    <linearGradient
   33.52 +       id="linearGradient6864"
   33.53 +       inkscape:collect="always">
   33.54 +      <stop
   33.55 +         id="stop6866"
   33.56 +         offset="0"
   33.57 +         style="stop-color:#000000;stop-opacity:1;" />
   33.58 +      <stop
   33.59 +         id="stop6868"
   33.60 +         offset="1"
   33.61 +         style="stop-color:#ffffff;stop-opacity:1" />
   33.62 +    </linearGradient>
   33.63 +    <linearGradient
   33.64 +       id="linearGradient6858"
   33.65 +       inkscape:collect="always">
   33.66 +      <stop
   33.67 +         id="stop6860"
   33.68 +         offset="0"
   33.69 +         style="stop-color:#000000;stop-opacity:1;" />
   33.70 +      <stop
   33.71 +         id="stop6862"
   33.72 +         offset="1"
   33.73 +         style="stop-color:#ffffff;stop-opacity:1" />
   33.74 +    </linearGradient>
   33.75 +    <marker
   33.76 +       inkscape:stockid="TriangleOutL"
   33.77 +       orient="auto"
   33.78 +       refY="0.0"
   33.79 +       refX="0.0"
   33.80 +       id="TriangleOutL"
   33.81 +       style="overflow:visible">
   33.82 +      <path
   33.83 +         id="path5494"
   33.84 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
   33.85 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
   33.86 +         transform="scale(0.8)" />
   33.87 +    </marker>
   33.88 +    <marker
   33.89 +       inkscape:stockid="Arrow2Lend"
   33.90 +       orient="auto"
   33.91 +       refY="0.0"
   33.92 +       refX="0.0"
   33.93 +       id="Arrow2Lend"
   33.94 +       style="overflow:visible;">
   33.95 +      <path
   33.96 +         id="path5372"
   33.97 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
   33.98 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
   33.99 +         transform="scale(1.1) rotate(180) translate(1,0)" />
  33.100 +    </marker>
  33.101 +    <marker
  33.102 +       inkscape:stockid="EmptyTriangleOutL"
  33.103 +       orient="auto"
  33.104 +       refY="0.0"
  33.105 +       refX="0.0"
  33.106 +       id="EmptyTriangleOutL"
  33.107 +       style="overflow:visible">
  33.108 +      <path
  33.109 +         id="path5512"
  33.110 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
  33.111 +         style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt;marker-start:none"
  33.112 +         transform="scale(0.8) translate(-6,0)" />
  33.113 +    </marker>
  33.114 +    <linearGradient
  33.115 +       id="linearGradient5140">
  33.116 +      <stop
  33.117 +         style="stop-color:#d2d1d4;stop-opacity:0.8295964"
  33.118 +         offset="0"
  33.119 +         id="stop5142" />
  33.120 +      <stop
  33.121 +         style="stop-color:#d2d1d4;stop-opacity:0;"
  33.122 +         offset="1"
  33.123 +         id="stop5144" />
  33.124 +    </linearGradient>
  33.125 +    <linearGradient
  33.126 +       inkscape:collect="always"
  33.127 +       id="linearGradient5038">
  33.128 +      <stop
  33.129 +         style="stop-color:#000000;stop-opacity:1;"
  33.130 +         offset="0"
  33.131 +         id="stop5040" />
  33.132 +      <stop
  33.133 +         style="stop-color:#000000;stop-opacity:0;"
  33.134 +         offset="1"
  33.135 +         id="stop5042" />
  33.136 +    </linearGradient>
  33.137 +    <inkscape:perspective
  33.138 +       sodipodi:type="inkscape:persp3d"
  33.139 +       inkscape:vp_x="605.30337 : 900.99105 : 1"
  33.140 +       inkscape:vp_y="-286.81883 : -301.57816 : 0"
  33.141 +       inkscape:vp_z="380.90072 : 1114.4113 : 1"
  33.142 +       inkscape:persp3d-origin="543.40826 : 1060.5961 : 1"
  33.143 +       id="perspective10" />
  33.144 +    <linearGradient
  33.145 +       inkscape:collect="always"
  33.146 +       xlink:href="#linearGradient7268"
  33.147 +       id="linearGradient5048"
  33.148 +       x1="480"
  33.149 +       y1="304.27365"
  33.150 +       x2="480"
  33.151 +       y2="69.005043"
  33.152 +       gradientUnits="userSpaceOnUse"
  33.153 +       gradientTransform="matrix(0.93291193,0,0,1.0001454,14.084109,-0.02713143)" />
  33.154 +    <inkscape:perspective
  33.155 +       id="perspective5094"
  33.156 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.157 +       inkscape:vp_z="1 : 0.5 : 1"
  33.158 +       inkscape:vp_y="0 : 1000 : 0"
  33.159 +       inkscape:vp_x="0 : 0.5 : 1"
  33.160 +       sodipodi:type="inkscape:persp3d" />
  33.161 +    <filter
  33.162 +       inkscape:collect="always"
  33.163 +       id="filter5210">
  33.164 +      <feGaussianBlur
  33.165 +         inkscape:collect="always"
  33.166 +         stdDeviation="0.53762566"
  33.167 +         id="feGaussianBlur5212" />
  33.168 +    </filter>
  33.169 +    <inkscape:perspective
  33.170 +       id="perspective5226"
  33.171 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.172 +       inkscape:vp_z="1 : 0.5 : 1"
  33.173 +       inkscape:vp_y="0 : 1000 : 0"
  33.174 +       inkscape:vp_x="0 : 0.5 : 1"
  33.175 +       sodipodi:type="inkscape:persp3d" />
  33.176 +    <filter
  33.177 +       color-interpolation-filters="sRGB"
  33.178 +       inkscape:collect="always"
  33.179 +       id="filter5210-3">
  33.180 +      <feGaussianBlur
  33.181 +         inkscape:collect="always"
  33.182 +         stdDeviation="0.53762566"
  33.183 +         id="feGaussianBlur5212-9" />
  33.184 +    </filter>
  33.185 +    <inkscape:perspective
  33.186 +       id="perspective5317"
  33.187 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.188 +       inkscape:vp_z="1 : 0.5 : 1"
  33.189 +       inkscape:vp_y="0 : 1000 : 0"
  33.190 +       inkscape:vp_x="0 : 0.5 : 1"
  33.191 +       sodipodi:type="inkscape:persp3d" />
  33.192 +    <inkscape:perspective
  33.193 +       id="perspective6000"
  33.194 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.195 +       inkscape:vp_z="1 : 0.5 : 1"
  33.196 +       inkscape:vp_y="0 : 1000 : 0"
  33.197 +       inkscape:vp_x="0 : 0.5 : 1"
  33.198 +       sodipodi:type="inkscape:persp3d" />
  33.199 +    <marker
  33.200 +       inkscape:stockid="Arrow2Lend"
  33.201 +       orient="auto"
  33.202 +       refY="0"
  33.203 +       refX="0"
  33.204 +       id="Arrow2Lend-2"
  33.205 +       style="overflow:visible">
  33.206 +      <path
  33.207 +         id="path5372-5"
  33.208 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.209 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.210 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.211 +    </marker>
  33.212 +    <inkscape:perspective
  33.213 +       id="perspective6028"
  33.214 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.215 +       inkscape:vp_z="1 : 0.5 : 1"
  33.216 +       inkscape:vp_y="0 : 1000 : 0"
  33.217 +       inkscape:vp_x="0 : 0.5 : 1"
  33.218 +       sodipodi:type="inkscape:persp3d" />
  33.219 +    <inkscape:perspective
  33.220 +       id="perspective6050"
  33.221 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.222 +       inkscape:vp_z="1 : 0.5 : 1"
  33.223 +       inkscape:vp_y="0 : 1000 : 0"
  33.224 +       inkscape:vp_x="0 : 0.5 : 1"
  33.225 +       sodipodi:type="inkscape:persp3d" />
  33.226 +    <inkscape:perspective
  33.227 +       id="perspective6080"
  33.228 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.229 +       inkscape:vp_z="1 : 0.5 : 1"
  33.230 +       inkscape:vp_y="0 : 1000 : 0"
  33.231 +       inkscape:vp_x="0 : 0.5 : 1"
  33.232 +       sodipodi:type="inkscape:persp3d" />
  33.233 +    <inkscape:perspective
  33.234 +       id="perspective6108"
  33.235 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.236 +       inkscape:vp_z="1 : 0.5 : 1"
  33.237 +       inkscape:vp_y="0 : 1000 : 0"
  33.238 +       inkscape:vp_x="0 : 0.5 : 1"
  33.239 +       sodipodi:type="inkscape:persp3d" />
  33.240 +    <marker
  33.241 +       inkscape:stockid="Arrow2Lend"
  33.242 +       orient="auto"
  33.243 +       refY="0"
  33.244 +       refX="0"
  33.245 +       id="Arrow2Lend-9"
  33.246 +       style="overflow:visible">
  33.247 +      <path
  33.248 +         id="path5372-6"
  33.249 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.250 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.251 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.252 +    </marker>
  33.253 +    <inkscape:perspective
  33.254 +       id="perspective6136"
  33.255 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.256 +       inkscape:vp_z="1 : 0.5 : 1"
  33.257 +       inkscape:vp_y="0 : 1000 : 0"
  33.258 +       inkscape:vp_x="0 : 0.5 : 1"
  33.259 +       sodipodi:type="inkscape:persp3d" />
  33.260 +    <inkscape:perspective
  33.261 +       id="perspective6158"
  33.262 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.263 +       inkscape:vp_z="1 : 0.5 : 1"
  33.264 +       inkscape:vp_y="0 : 1000 : 0"
  33.265 +       inkscape:vp_x="0 : 0.5 : 1"
  33.266 +       sodipodi:type="inkscape:persp3d" />
  33.267 +    <marker
  33.268 +       inkscape:stockid="Arrow2Lend"
  33.269 +       orient="auto"
  33.270 +       refY="0"
  33.271 +       refX="0"
  33.272 +       id="Arrow2Lend-8"
  33.273 +       style="overflow:visible">
  33.274 +      <path
  33.275 +         id="path5372-4"
  33.276 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.277 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.278 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.279 +    </marker>
  33.280 +    <inkscape:perspective
  33.281 +       id="perspective6226"
  33.282 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.283 +       inkscape:vp_z="1 : 0.5 : 1"
  33.284 +       inkscape:vp_y="0 : 1000 : 0"
  33.285 +       inkscape:vp_x="0 : 0.5 : 1"
  33.286 +       sodipodi:type="inkscape:persp3d" />
  33.287 +    <marker
  33.288 +       inkscape:stockid="Arrow2Lend"
  33.289 +       orient="auto"
  33.290 +       refY="0"
  33.291 +       refX="0"
  33.292 +       id="Arrow2Lend-6"
  33.293 +       style="overflow:visible">
  33.294 +      <path
  33.295 +         id="path5372-7"
  33.296 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.297 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.298 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.299 +    </marker>
  33.300 +    <linearGradient
  33.301 +       inkscape:collect="always"
  33.302 +       xlink:href="#linearGradient5038"
  33.303 +       id="linearGradient6260"
  33.304 +       x1="643.45416"
  33.305 +       y1="355.03943"
  33.306 +       x2="643.45416"
  33.307 +       y2="331.13467"
  33.308 +       gradientUnits="userSpaceOnUse"
  33.309 +       gradientTransform="translate(-1.696649,-15.393298)" />
  33.310 +    <inkscape:perspective
  33.311 +       id="perspective6276"
  33.312 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.313 +       inkscape:vp_z="1 : 0.5 : 1"
  33.314 +       inkscape:vp_y="0 : 1000 : 0"
  33.315 +       inkscape:vp_x="0 : 0.5 : 1"
  33.316 +       sodipodi:type="inkscape:persp3d" />
  33.317 +    <linearGradient
  33.318 +       inkscape:collect="always"
  33.319 +       xlink:href="#linearGradient5038-7"
  33.320 +       id="linearGradient6260-3"
  33.321 +       x1="643.45416"
  33.322 +       y1="355.03943"
  33.323 +       x2="643.45416"
  33.324 +       y2="331.13467"
  33.325 +       gradientUnits="userSpaceOnUse"
  33.326 +       gradientTransform="translate(-1.696649,-15.393298)" />
  33.327 +    <linearGradient
  33.328 +       inkscape:collect="always"
  33.329 +       id="linearGradient5038-7">
  33.330 +      <stop
  33.331 +         style="stop-color:#000000;stop-opacity:1;"
  33.332 +         offset="0"
  33.333 +         id="stop5040-3" />
  33.334 +      <stop
  33.335 +         style="stop-color:#000000;stop-opacity:0;"
  33.336 +         offset="1"
  33.337 +         id="stop5042-4" />
  33.338 +    </linearGradient>
  33.339 +    <linearGradient
  33.340 +       y2="331.13467"
  33.341 +       x2="643.45416"
  33.342 +       y1="355.03943"
  33.343 +       x1="643.45416"
  33.344 +       gradientTransform="matrix(0.82428033,0,0,0.78628866,-72.850897,-84.395643)"
  33.345 +       gradientUnits="userSpaceOnUse"
  33.346 +       id="linearGradient6285"
  33.347 +       xlink:href="#linearGradient6864"
  33.348 +       inkscape:collect="always" />
  33.349 +    <inkscape:perspective
  33.350 +       id="perspective6314"
  33.351 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.352 +       inkscape:vp_z="1 : 0.5 : 1"
  33.353 +       inkscape:vp_y="0 : 1000 : 0"
  33.354 +       inkscape:vp_x="0 : 0.5 : 1"
  33.355 +       sodipodi:type="inkscape:persp3d" />
  33.356 +    <inkscape:perspective
  33.357 +       id="perspective6358"
  33.358 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.359 +       inkscape:vp_z="1 : 0.5 : 1"
  33.360 +       inkscape:vp_y="0 : 1000 : 0"
  33.361 +       inkscape:vp_x="0 : 0.5 : 1"
  33.362 +       sodipodi:type="inkscape:persp3d" />
  33.363 +    <linearGradient
  33.364 +       y2="331.13467"
  33.365 +       x2="643.45416"
  33.366 +       y1="355.03943"
  33.367 +       x1="643.45416"
  33.368 +       gradientTransform="matrix(0.82428033,0,0,0.78628866,-72.850897,-90.395643)"
  33.369 +       gradientUnits="userSpaceOnUse"
  33.370 +       id="linearGradient6285-7"
  33.371 +       xlink:href="#linearGradient5038-7-9"
  33.372 +       inkscape:collect="always" />
  33.373 +    <linearGradient
  33.374 +       inkscape:collect="always"
  33.375 +       id="linearGradient5038-7-9">
  33.376 +      <stop
  33.377 +         style="stop-color:#000000;stop-opacity:1;"
  33.378 +         offset="0"
  33.379 +         id="stop5040-3-5" />
  33.380 +      <stop
  33.381 +         style="stop-color:#000000;stop-opacity:0;"
  33.382 +         offset="1"
  33.383 +         id="stop5042-4-6" />
  33.384 +    </linearGradient>
  33.385 +    <linearGradient
  33.386 +       y2="331.13467"
  33.387 +       x2="643.45416"
  33.388 +       y1="355.03943"
  33.389 +       x1="643.45416"
  33.390 +       gradientTransform="matrix(0.82428033,0,0,0.78628866,-73.139661,-127.66023)"
  33.391 +       gradientUnits="userSpaceOnUse"
  33.392 +       id="linearGradient6369"
  33.393 +       xlink:href="#linearGradient6858"
  33.394 +       inkscape:collect="always" />
  33.395 +    <inkscape:perspective
  33.396 +       id="perspective6402"
  33.397 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.398 +       inkscape:vp_z="1 : 0.5 : 1"
  33.399 +       inkscape:vp_y="0 : 1000 : 0"
  33.400 +       inkscape:vp_x="0 : 0.5 : 1"
  33.401 +       sodipodi:type="inkscape:persp3d" />
  33.402 +    <marker
  33.403 +       inkscape:stockid="Arrow2Lend"
  33.404 +       orient="auto"
  33.405 +       refY="0"
  33.406 +       refX="0"
  33.407 +       id="Arrow2Lend-5"
  33.408 +       style="overflow:visible">
  33.409 +      <path
  33.410 +         id="path5372-2"
  33.411 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.412 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.413 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.414 +    </marker>
  33.415 +    <inkscape:perspective
  33.416 +       id="perspective6656"
  33.417 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.418 +       inkscape:vp_z="1 : 0.5 : 1"
  33.419 +       inkscape:vp_y="0 : 1000 : 0"
  33.420 +       inkscape:vp_x="0 : 0.5 : 1"
  33.421 +       sodipodi:type="inkscape:persp3d" />
  33.422 +    <linearGradient
  33.423 +       inkscape:collect="always"
  33.424 +       xlink:href="#linearGradient5038-2"
  33.425 +       id="linearGradient5048-8"
  33.426 +       x1="480"
  33.427 +       y1="304.29077"
  33.428 +       x2="480"
  33.429 +       y2="69.005043"
  33.430 +       gradientUnits="userSpaceOnUse"
  33.431 +       gradientTransform="matrix(0.93291193,0,0,1.0001454,14.084109,-0.02713143)" />
  33.432 +    <linearGradient
  33.433 +       inkscape:collect="always"
  33.434 +       id="linearGradient5038-2">
  33.435 +      <stop
  33.436 +         style="stop-color:#000000;stop-opacity:1;"
  33.437 +         offset="0"
  33.438 +         id="stop5040-0" />
  33.439 +      <stop
  33.440 +         style="stop-color:#000000;stop-opacity:0;"
  33.441 +         offset="1"
  33.442 +         id="stop5042-6" />
  33.443 +    </linearGradient>
  33.444 +    <linearGradient
  33.445 +       y2="68.79892"
  33.446 +       x2="480.00003"
  33.447 +       y1="304.49695"
  33.448 +       x1="480.00003"
  33.449 +       gradientTransform="matrix(0.9763127,0,0,0.48946368,1.910828,391.02959)"
  33.450 +       gradientUnits="userSpaceOnUse"
  33.451 +       id="linearGradient6672"
  33.452 +       xlink:href="#linearGradient7274"
  33.453 +       inkscape:collect="always" />
  33.454 +    <inkscape:perspective
  33.455 +       id="perspective6717"
  33.456 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.457 +       inkscape:vp_z="1 : 0.5 : 1"
  33.458 +       inkscape:vp_y="0 : 1000 : 0"
  33.459 +       inkscape:vp_x="0 : 0.5 : 1"
  33.460 +       sodipodi:type="inkscape:persp3d" />
  33.461 +    <inkscape:perspective
  33.462 +       id="perspective6717-8"
  33.463 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.464 +       inkscape:vp_z="1 : 0.5 : 1"
  33.465 +       inkscape:vp_y="0 : 1000 : 0"
  33.466 +       inkscape:vp_x="0 : 0.5 : 1"
  33.467 +       sodipodi:type="inkscape:persp3d" />
  33.468 +    <filter
  33.469 +       inkscape:collect="always"
  33.470 +       id="filter6798">
  33.471 +      <feGaussianBlur
  33.472 +         inkscape:collect="always"
  33.473 +         stdDeviation="0.4493522"
  33.474 +         id="feGaussianBlur6800" />
  33.475 +    </filter>
  33.476 +    <inkscape:perspective
  33.477 +       id="perspective6810"
  33.478 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.479 +       inkscape:vp_z="1 : 0.5 : 1"
  33.480 +       inkscape:vp_y="0 : 1000 : 0"
  33.481 +       inkscape:vp_x="0 : 0.5 : 1"
  33.482 +       sodipodi:type="inkscape:persp3d" />
  33.483 +    <filter
  33.484 +       color-interpolation-filters="sRGB"
  33.485 +       inkscape:collect="always"
  33.486 +       id="filter6798-1">
  33.487 +      <feGaussianBlur
  33.488 +         inkscape:collect="always"
  33.489 +         stdDeviation="0.4493522"
  33.490 +         id="feGaussianBlur6800-8" />
  33.491 +    </filter>
  33.492 +    <inkscape:perspective
  33.493 +       id="perspective6838"
  33.494 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.495 +       inkscape:vp_z="1 : 0.5 : 1"
  33.496 +       inkscape:vp_y="0 : 1000 : 0"
  33.497 +       inkscape:vp_x="0 : 0.5 : 1"
  33.498 +       sodipodi:type="inkscape:persp3d" />
  33.499 +    <filter
  33.500 +       color-interpolation-filters="sRGB"
  33.501 +       inkscape:collect="always"
  33.502 +       id="filter6798-1-4">
  33.503 +      <feGaussianBlur
  33.504 +         inkscape:collect="always"
  33.505 +         stdDeviation="0.4493522"
  33.506 +         id="feGaussianBlur6800-8-1" />
  33.507 +    </filter>
  33.508 +    <inkscape:perspective
  33.509 +       id="perspective7684"
  33.510 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.511 +       inkscape:vp_z="1 : 0.5 : 1"
  33.512 +       inkscape:vp_y="0 : 1000 : 0"
  33.513 +       inkscape:vp_x="0 : 0.5 : 1"
  33.514 +       sodipodi:type="inkscape:persp3d" />
  33.515 +    <marker
  33.516 +       inkscape:stockid="Arrow2Lend"
  33.517 +       orient="auto"
  33.518 +       refY="0"
  33.519 +       refX="0"
  33.520 +       id="Arrow2Lend-1"
  33.521 +       style="overflow:visible">
  33.522 +      <path
  33.523 +         id="path5372-26"
  33.524 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.525 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.526 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.527 +    </marker>
  33.528 +    <inkscape:perspective
  33.529 +       id="perspective7714"
  33.530 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.531 +       inkscape:vp_z="1 : 0.5 : 1"
  33.532 +       inkscape:vp_y="0 : 1000 : 0"
  33.533 +       inkscape:vp_x="0 : 0.5 : 1"
  33.534 +       sodipodi:type="inkscape:persp3d" />
  33.535 +    <linearGradient
  33.536 +       inkscape:collect="always"
  33.537 +       xlink:href="#linearGradient5038-5"
  33.538 +       id="linearGradient6260-8"
  33.539 +       x1="643.45416"
  33.540 +       y1="355.03943"
  33.541 +       x2="643.45416"
  33.542 +       y2="331.13467"
  33.543 +       gradientUnits="userSpaceOnUse"
  33.544 +       gradientTransform="translate(-1.696649,-15.393298)" />
  33.545 +    <linearGradient
  33.546 +       inkscape:collect="always"
  33.547 +       id="linearGradient5038-5">
  33.548 +      <stop
  33.549 +         style="stop-color:#000000;stop-opacity:1;"
  33.550 +         offset="0"
  33.551 +         id="stop5040-6" />
  33.552 +      <stop
  33.553 +         style="stop-color:#000000;stop-opacity:0;"
  33.554 +         offset="1"
  33.555 +         id="stop5042-2" />
  33.556 +    </linearGradient>
  33.557 +    <linearGradient
  33.558 +       y2="331.13467"
  33.559 +       x2="643.45416"
  33.560 +       y1="355.03943"
  33.561 +       x1="643.45416"
  33.562 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  33.563 +       gradientUnits="userSpaceOnUse"
  33.564 +       id="linearGradient7723"
  33.565 +       xlink:href="#linearGradient5038-5"
  33.566 +       inkscape:collect="always" />
  33.567 +    <inkscape:perspective
  33.568 +       id="perspective7752"
  33.569 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.570 +       inkscape:vp_z="1 : 0.5 : 1"
  33.571 +       inkscape:vp_y="0 : 1000 : 0"
  33.572 +       inkscape:vp_x="0 : 0.5 : 1"
  33.573 +       sodipodi:type="inkscape:persp3d" />
  33.574 +    <inkscape:perspective
  33.575 +       id="perspective7784"
  33.576 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.577 +       inkscape:vp_z="1 : 0.5 : 1"
  33.578 +       inkscape:vp_y="0 : 1000 : 0"
  33.579 +       inkscape:vp_x="0 : 0.5 : 1"
  33.580 +       sodipodi:type="inkscape:persp3d" />
  33.581 +    <marker
  33.582 +       inkscape:stockid="Arrow2Lend"
  33.583 +       orient="auto"
  33.584 +       refY="0"
  33.585 +       refX="0"
  33.586 +       id="Arrow2Lend-69"
  33.587 +       style="overflow:visible">
  33.588 +      <path
  33.589 +         id="path5372-44"
  33.590 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.591 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.592 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.593 +    </marker>
  33.594 +    <inkscape:perspective
  33.595 +       id="perspective7812"
  33.596 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.597 +       inkscape:vp_z="1 : 0.5 : 1"
  33.598 +       inkscape:vp_y="0 : 1000 : 0"
  33.599 +       inkscape:vp_x="0 : 0.5 : 1"
  33.600 +       sodipodi:type="inkscape:persp3d" />
  33.601 +    <linearGradient
  33.602 +       y2="68.79892"
  33.603 +       x2="480.00003"
  33.604 +       y1="304.49695"
  33.605 +       x1="480.00003"
  33.606 +       gradientTransform="matrix(0.9763127,0,0,0.48946368,-18.089172,391.02959)"
  33.607 +       gradientUnits="userSpaceOnUse"
  33.608 +       id="linearGradient6672-0"
  33.609 +       xlink:href="#linearGradient7274-7"
  33.610 +       inkscape:collect="always" />
  33.611 +    <linearGradient
  33.612 +       id="linearGradient7274-7"
  33.613 +       inkscape:collect="always">
  33.614 +      <stop
  33.615 +         id="stop7276-4"
  33.616 +         offset="0"
  33.617 +         style="stop-color:#000000;stop-opacity:1;" />
  33.618 +      <stop
  33.619 +         id="stop7278-3"
  33.620 +         offset="1"
  33.621 +         style="stop-color:#0089f9;stop-opacity:1" />
  33.622 +    </linearGradient>
  33.623 +    <linearGradient
  33.624 +       y2="68.79892"
  33.625 +       x2="480.00003"
  33.626 +       y1="304.49695"
  33.627 +       x1="480.00003"
  33.628 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-24.651047,389.63524)"
  33.629 +       gradientUnits="userSpaceOnUse"
  33.630 +       id="linearGradient7823"
  33.631 +       xlink:href="#linearGradient7274-7"
  33.632 +       inkscape:collect="always" />
  33.633 +    <inkscape:perspective
  33.634 +       id="perspective7856"
  33.635 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.636 +       inkscape:vp_z="1 : 0.5 : 1"
  33.637 +       inkscape:vp_y="0 : 1000 : 0"
  33.638 +       inkscape:vp_x="0 : 0.5 : 1"
  33.639 +       sodipodi:type="inkscape:persp3d" />
  33.640 +    <marker
  33.641 +       inkscape:stockid="Arrow2Lend"
  33.642 +       orient="auto"
  33.643 +       refY="0"
  33.644 +       refX="0"
  33.645 +       id="Arrow2Lend-22"
  33.646 +       style="overflow:visible">
  33.647 +      <path
  33.648 +         id="path5372-69"
  33.649 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.650 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.651 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.652 +    </marker>
  33.653 +    <inkscape:perspective
  33.654 +       id="perspective7884"
  33.655 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.656 +       inkscape:vp_z="1 : 0.5 : 1"
  33.657 +       inkscape:vp_y="0 : 1000 : 0"
  33.658 +       inkscape:vp_x="0 : 0.5 : 1"
  33.659 +       sodipodi:type="inkscape:persp3d" />
  33.660 +    <marker
  33.661 +       inkscape:stockid="Arrow2Lend"
  33.662 +       orient="auto"
  33.663 +       refY="0"
  33.664 +       refX="0"
  33.665 +       id="Arrow2Lend-3"
  33.666 +       style="overflow:visible">
  33.667 +      <path
  33.668 +         id="path5372-55"
  33.669 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  33.670 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  33.671 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  33.672 +    </marker>
  33.673 +    <inkscape:perspective
  33.674 +       id="perspective7916"
  33.675 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.676 +       inkscape:vp_z="1 : 0.5 : 1"
  33.677 +       inkscape:vp_y="0 : 1000 : 0"
  33.678 +       inkscape:vp_x="0 : 0.5 : 1"
  33.679 +       sodipodi:type="inkscape:persp3d" />
  33.680 +    <inkscape:perspective
  33.681 +       id="perspective7941"
  33.682 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.683 +       inkscape:vp_z="1 : 0.5 : 1"
  33.684 +       inkscape:vp_y="0 : 1000 : 0"
  33.685 +       inkscape:vp_x="0 : 0.5 : 1"
  33.686 +       sodipodi:type="inkscape:persp3d" />
  33.687 +    <marker
  33.688 +       inkscape:stockid="EmptyTriangleOutL"
  33.689 +       orient="auto"
  33.690 +       refY="0"
  33.691 +       refX="0"
  33.692 +       id="EmptyTriangleOutL-0"
  33.693 +       style="overflow:visible">
  33.694 +      <path
  33.695 +         id="path5512-6"
  33.696 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.697 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.698 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.699 +    </marker>
  33.700 +    <inkscape:perspective
  33.701 +       id="perspective7984"
  33.702 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.703 +       inkscape:vp_z="1 : 0.5 : 1"
  33.704 +       inkscape:vp_y="0 : 1000 : 0"
  33.705 +       inkscape:vp_x="0 : 0.5 : 1"
  33.706 +       sodipodi:type="inkscape:persp3d" />
  33.707 +    <marker
  33.708 +       inkscape:stockid="EmptyTriangleOutL"
  33.709 +       orient="auto"
  33.710 +       refY="0"
  33.711 +       refX="0"
  33.712 +       id="EmptyTriangleOutL-4"
  33.713 +       style="overflow:visible">
  33.714 +      <path
  33.715 +         id="path5512-1"
  33.716 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.717 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.718 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.719 +    </marker>
  33.720 +    <inkscape:perspective
  33.721 +       id="perspective8012"
  33.722 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.723 +       inkscape:vp_z="1 : 0.5 : 1"
  33.724 +       inkscape:vp_y="0 : 1000 : 0"
  33.725 +       inkscape:vp_x="0 : 0.5 : 1"
  33.726 +       sodipodi:type="inkscape:persp3d" />
  33.727 +    <marker
  33.728 +       inkscape:stockid="EmptyTriangleOutL"
  33.729 +       orient="auto"
  33.730 +       refY="0"
  33.731 +       refX="0"
  33.732 +       id="EmptyTriangleOutL-09"
  33.733 +       style="overflow:visible">
  33.734 +      <path
  33.735 +         id="path5512-3"
  33.736 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.737 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.738 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.739 +    </marker>
  33.740 +    <inkscape:perspective
  33.741 +       id="perspective8012-4"
  33.742 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.743 +       inkscape:vp_z="1 : 0.5 : 1"
  33.744 +       inkscape:vp_y="0 : 1000 : 0"
  33.745 +       inkscape:vp_x="0 : 0.5 : 1"
  33.746 +       sodipodi:type="inkscape:persp3d" />
  33.747 +    <marker
  33.748 +       inkscape:stockid="EmptyTriangleOutL"
  33.749 +       orient="auto"
  33.750 +       refY="0"
  33.751 +       refX="0"
  33.752 +       id="EmptyTriangleOutL-3"
  33.753 +       style="overflow:visible">
  33.754 +      <path
  33.755 +         id="path5512-64"
  33.756 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.757 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.758 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.759 +    </marker>
  33.760 +    <inkscape:perspective
  33.761 +       id="perspective8053"
  33.762 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.763 +       inkscape:vp_z="1 : 0.5 : 1"
  33.764 +       inkscape:vp_y="0 : 1000 : 0"
  33.765 +       inkscape:vp_x="0 : 0.5 : 1"
  33.766 +       sodipodi:type="inkscape:persp3d" />
  33.767 +    <marker
  33.768 +       inkscape:stockid="EmptyTriangleOutL"
  33.769 +       orient="auto"
  33.770 +       refY="0"
  33.771 +       refX="0"
  33.772 +       id="EmptyTriangleOutL-31"
  33.773 +       style="overflow:visible">
  33.774 +      <path
  33.775 +         id="path5512-9"
  33.776 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.777 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.778 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.779 +    </marker>
  33.780 +    <inkscape:perspective
  33.781 +       id="perspective8081"
  33.782 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.783 +       inkscape:vp_z="1 : 0.5 : 1"
  33.784 +       inkscape:vp_y="0 : 1000 : 0"
  33.785 +       inkscape:vp_x="0 : 0.5 : 1"
  33.786 +       sodipodi:type="inkscape:persp3d" />
  33.787 +    <marker
  33.788 +       inkscape:stockid="EmptyTriangleOutL"
  33.789 +       orient="auto"
  33.790 +       refY="0"
  33.791 +       refX="0"
  33.792 +       id="EmptyTriangleOutL-094"
  33.793 +       style="overflow:visible">
  33.794 +      <path
  33.795 +         id="path5512-5"
  33.796 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.797 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.798 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.799 +    </marker>
  33.800 +    <inkscape:perspective
  33.801 +       id="perspective8109"
  33.802 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.803 +       inkscape:vp_z="1 : 0.5 : 1"
  33.804 +       inkscape:vp_y="0 : 1000 : 0"
  33.805 +       inkscape:vp_x="0 : 0.5 : 1"
  33.806 +       sodipodi:type="inkscape:persp3d" />
  33.807 +    <marker
  33.808 +       inkscape:stockid="EmptyTriangleOutL"
  33.809 +       orient="auto"
  33.810 +       refY="0"
  33.811 +       refX="0"
  33.812 +       id="EmptyTriangleOutL-2"
  33.813 +       style="overflow:visible">
  33.814 +      <path
  33.815 +         id="path5512-59"
  33.816 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.817 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.818 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.819 +    </marker>
  33.820 +    <inkscape:perspective
  33.821 +       id="perspective8137"
  33.822 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.823 +       inkscape:vp_z="1 : 0.5 : 1"
  33.824 +       inkscape:vp_y="0 : 1000 : 0"
  33.825 +       inkscape:vp_x="0 : 0.5 : 1"
  33.826 +       sodipodi:type="inkscape:persp3d" />
  33.827 +    <marker
  33.828 +       inkscape:stockid="EmptyTriangleOutL"
  33.829 +       orient="auto"
  33.830 +       refY="0"
  33.831 +       refX="0"
  33.832 +       id="EmptyTriangleOutL-9"
  33.833 +       style="overflow:visible">
  33.834 +      <path
  33.835 +         id="path5512-13"
  33.836 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  33.837 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  33.838 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  33.839 +    </marker>
  33.840 +    <inkscape:perspective
  33.841 +       id="perspective8181"
  33.842 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.843 +       inkscape:vp_z="1 : 0.5 : 1"
  33.844 +       inkscape:vp_y="0 : 1000 : 0"
  33.845 +       inkscape:vp_x="0 : 0.5 : 1"
  33.846 +       sodipodi:type="inkscape:persp3d" />
  33.847 +    <inkscape:perspective
  33.848 +       id="perspective3460"
  33.849 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.850 +       inkscape:vp_z="1 : 0.5 : 1"
  33.851 +       inkscape:vp_y="0 : 1000 : 0"
  33.852 +       inkscape:vp_x="0 : 0.5 : 1"
  33.853 +       sodipodi:type="inkscape:persp3d" />
  33.854 +    <inkscape:perspective
  33.855 +       id="perspective3490"
  33.856 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  33.857 +       inkscape:vp_z="1 : 0.5 : 1"
  33.858 +       inkscape:vp_y="0 : 1000 : 0"
  33.859 +       inkscape:vp_x="0 : 0.5 : 1"
  33.860 +       sodipodi:type="inkscape:persp3d" />
  33.861 +  </defs>
  33.862 +  <sodipodi:namedview
  33.863 +     id="base"
  33.864 +     pagecolor="#ffffff"
  33.865 +     bordercolor="#666666"
  33.866 +     borderopacity="1.0"
  33.867 +     inkscape:pageopacity="0.0"
  33.868 +     inkscape:pageshadow="2"
  33.869 +     inkscape:zoom="0.82802052"
  33.870 +     inkscape:cx="374.30262"
  33.871 +     inkscape:cy="734.82691"
  33.872 +     inkscape:document-units="px"
  33.873 +     inkscape:current-layer="layer1"
  33.874 +     showgrid="false"
  33.875 +     inkscape:window-width="1024"
  33.876 +     inkscape:window-height="718"
  33.877 +     inkscape:window-x="-8"
  33.878 +     inkscape:window-y="-8"
  33.879 +     inkscape:window-maximized="1"
  33.880 +     inkscape:snap-bbox="true" />
  33.881 +  <metadata
  33.882 +     id="metadata7">
  33.883 +    <rdf:RDF>
  33.884 +      <cc:Work
  33.885 +         rdf:about="">
  33.886 +        <dc:format>image/svg+xml</dc:format>
  33.887 +        <dc:type
  33.888 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  33.889 +        <dc:title />
  33.890 +      </cc:Work>
  33.891 +    </rdf:RDF>
  33.892 +  </metadata>
  33.893 +  <g
  33.894 +     inkscape:label="Layer 1"
  33.895 +     inkscape:groupmode="layer"
  33.896 +     id="layer1">
  33.897 +    <rect
  33.898 +       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:10,2.5;stroke-dashoffset:0"
  33.899 +       id="rect7904-1"
  33.900 +       width="170.92165"
  33.901 +       height="204.59888"
  33.902 +       x="10.645319"
  33.903 +       y="388.24454" />
  33.904 +    <rect
  33.905 +       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:10,2.5;stroke-dashoffset:0"
  33.906 +       id="rect7904"
  33.907 +       width="543.42902"
  33.908 +       height="548.27441"
  33.909 +       x="193.74501"
  33.910 +       y="43.013046"
  33.911 +       inkscape:export-xdpi="90"
  33.912 +       inkscape:export-ydpi="90" />
  33.913 +    <rect
  33.914 +       style="fill:url(#linearGradient5048);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.96594387000000004px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  33.915 +       id="rect2816"
  33.916 +       width="447.79773"
  33.917 +       height="234.31978"
  33.918 +       x="237.98297"
  33.919 +       y="69.488014" />
  33.920 +    <flowRoot
  33.921 +       xml:space="preserve"
  33.922 +       id="flowRoot5050"
  33.923 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><flowRegion
  33.924 +         id="flowRegion5052"><rect
  33.925 +           id="rect5054"
  33.926 +           width="195.96297"
  33.927 +           height="47.506172"
  33.928 +           x="524.26453"
  33.929 +           y="256.63379" /></flowRegion><flowPara
  33.930 +         id="flowPara5056">COMPILER</flowPara></flowRoot>    <text
  33.931 +       xml:space="preserve"
  33.932 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  33.933 +       x="523.03851"
  33.934 +       y="293.81125"
  33.935 +       id="text5058"><tspan
  33.936 +         sodipodi:role="line"
  33.937 +         id="tspan5060"
  33.938 +         x="523.03851"
  33.939 +         y="293.81125">COMPILER</tspan></text>
  33.940 +    <rect
  33.941 +       style="fill:none;stroke:#ffffff;stroke-width:1.76806752;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter5210)"
  33.942 +       id="rect5168"
  33.943 +       width="249.40741"
  33.944 +       height="180.69312"
  33.945 +       x="251.10405"
  33.946 +       y="80.182289"
  33.947 +       transform="matrix(0.53983635,0,0,1.0014445,114.82284,-0.24632435)" />
  33.948 +    <text
  33.949 +       xml:space="preserve"
  33.950 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  33.951 +       x="271.13559"
  33.952 +       y="253.19881"
  33.953 +       id="text5214"><tspan
  33.954 +         sodipodi:role="line"
  33.955 +         id="tspan5216"
  33.956 +         x="271.13559"
  33.957 +         y="253.19881">FRONT END</tspan></text>
  33.958 +    <rect
  33.959 +       style="fill:none;stroke:#ffffff;stroke-width:1.71562728;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter5210-3)"
  33.960 +       id="rect5168-2"
  33.961 +       width="249.40741"
  33.962 +       height="180.69312"
  33.963 +       x="456.39859"
  33.964 +       y="80.606445"
  33.965 +       transform="matrix(0.57341243,0,0,1.0013219,268.13,-0.22597359)" />
  33.966 +    <text
  33.967 +       xml:space="preserve"
  33.968 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  33.969 +       x="571.86572"
  33.970 +       y="255.31963"
  33.971 +       id="text5214-4"><tspan
  33.972 +         sodipodi:role="line"
  33.973 +         id="tspan5216-4"
  33.974 +         x="571.86572"
  33.975 +         y="255.31963">BACK END</tspan></text>
  33.976 +    <a
  33.977 +       id="a5260" />
  33.978 +    <rect
  33.979 +       style="fill:none;stroke:#fffeff;stroke-width:1.3;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
  33.980 +       id="rect5301"
  33.981 +       width="102.63158"
  33.982 +       height="56.049965"
  33.983 +       x="259.63333"
  33.984 +       y="87.663475" />
  33.985 +    <text
  33.986 +       xml:space="preserve"
  33.987 +       style="font-size:17.16770363px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  33.988 +       x="272.91205"
  33.989 +       y="111.4675"
  33.990 +       id="text5303"><tspan
  33.991 +         sodipodi:role="line"
  33.992 +         id="tspan5305"
  33.993 +         x="272.91205"
  33.994 +         y="111.4675">LEXICAL</tspan><tspan
  33.995 +         sodipodi:role="line"
  33.996 +         x="272.91205"
  33.997 +         y="132.92712"
  33.998 +         id="tspan5307">ANALYSIS</tspan></text>
  33.999 +    <rect
 33.1000 +       style="fill:none;stroke:#fffeff;stroke-width:1.3;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 33.1001 +       id="rect5301-0"
 33.1002 +       width="102.22069"
 33.1003 +       height="56.050537"
 33.1004 +       x="260.46863"
 33.1005 +       y="166.68083" />
 33.1006 +    <text
 33.1007 +       xml:space="preserve"
 33.1008 +       style="font-size:17.16770363px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1009 +       x="272.48788"
 33.1010 +       y="190.48514"
 33.1011 +       id="text5303-4"><tspan
 33.1012 +         sodipodi:role="line"
 33.1013 +         id="tspan5305-1"
 33.1014 +         x="272.48788"
 33.1015 +         y="190.48514">SYNTAX</tspan><tspan
 33.1016 +         sodipodi:role="line"
 33.1017 +         x="272.48788"
 33.1018 +         y="211.94476"
 33.1019 +         id="tspan5307-7">ANALYSIS</tspan></text>
 33.1020 +    <text
 33.1021 +       xml:space="preserve"
 33.1022 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1023 +       x="311.33511"
 33.1024 +       y="140.41333"
 33.1025 +       id="text5340"><tspan
 33.1026 +         sodipodi:role="line"
 33.1027 +         id="tspan5342"
 33.1028 +         x="311.33511"
 33.1029 +         y="140.41333" /></text>
 33.1030 +    <path
 33.1031 +       style="fill:none;stroke:#ffffff;stroke-width:2.81255388;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:8.43766165, 2.81255388;stroke-dashoffset:0;marker-end:url(#EmptyTriangleOutL)"
 33.1032 +       d="m 385.57258,227.29824 141.39791,0.79517"
 33.1033 +       id="path5346-3"
 33.1034 +       inkscape:connector-type="polyline" />
 33.1035 +    <path
 33.1036 +       style="fill:none;stroke:#000000;stroke-width:2.78755498;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 33.1037 +       d="m 710.48871,173.06585 0.40631,138.73962"
 33.1038 +       id="path5346-3-6-2"
 33.1039 +       inkscape:connector-type="polyline" />
 33.1040 +    <path
 33.1041 +       style="fill:none;stroke:#000000;stroke-width:1.5773077;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 33.1042 +       d="m 685.95735,173.80134 25.32654,0"
 33.1043 +       id="path6248"
 33.1044 +       inkscape:connector-type="polyline" />
 33.1045 +    <rect
 33.1046 +       style="opacity:1;fill:url(#linearGradient6260);fill-opacity:1;stroke:#000000;stroke-width:1.1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 33.1047 +       id="rect6252"
 33.1048 +       width="158.63669"
 33.1049 +       height="45.809525"
 33.1050 +       x="562.43915"
 33.1051 +       y="316.74136" />
 33.1052 +    <text
 33.1053 +       xml:space="preserve"
 33.1054 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1055 +       x="592.77997"
 33.1056 +       y="349.81738"
 33.1057 +       id="text6264"><tspan
 33.1058 +         sodipodi:role="line"
 33.1059 +         id="tspan6266"
 33.1060 +         x="592.77997"
 33.1061 +         y="349.81738">BYTECODE</tspan></text>
 33.1062 +    <rect
 33.1063 +       style="opacity:0.6;fill:url(#linearGradient6285);fill-opacity:1;stroke:#ffffff;stroke-width:0.70999998;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 33.1064 +       id="rect6252-7"
 33.1065 +       width="130.76111"
 33.1066 +       height="36.019508"
 33.1067 +       x="392.15512"
 33.1068 +       y="176.7581" />
 33.1069 +    <text
 33.1070 +       xml:space="preserve"
 33.1071 +       style="font-size:16.46555138px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1072 +       x="413.68591"
 33.1073 +       y="192.79556"
 33.1074 +       id="text5303-8-2"
 33.1075 +       transform="scale(0.9591004,1.0426437)"><tspan
 33.1076 +         sodipodi:role="line"
 33.1077 +         x="413.68591"
 33.1078 +         y="192.79556"
 33.1079 +         id="tspan5307-70-1">SYMBOL TABLE</tspan></text>
 33.1080 +    <rect
 33.1081 +       style="opacity:0.59000005;fill:url(#linearGradient6369);fill-opacity:1;stroke:#ffffff;stroke-width:0.31;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 33.1082 +       id="rect6252-7-8"
 33.1083 +       width="130.76111"
 33.1084 +       height="36.019508"
 33.1085 +       x="391.86636"
 33.1086 +       y="133.49353" />
 33.1087 +    <text
 33.1088 +       xml:space="preserve"
 33.1089 +       style="font-size:17.16770363px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1090 +       x="397.84192"
 33.1091 +       y="157.75252"
 33.1092 +       id="text5303-8-2-9"><tspan
 33.1093 +         sodipodi:role="line"
 33.1094 +         x="397.84192"
 33.1095 +         y="157.75252"
 33.1096 +         id="tspan5307-70-1-5">SYNTAX TREE</tspan></text>
 33.1097 +    <rect
 33.1098 +       style="fill:url(#linearGradient6672);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.6912812px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 33.1099 +       id="rect2816-4"
 33.1100 +       width="468.63013"
 33.1101 +       height="114.67435"
 33.1102 +       x="236.22588"
 33.1103 +       y="425.0498" />
 33.1104 +    <text
 33.1105 +       xml:space="preserve"
 33.1106 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1107 +       x="691.60516"
 33.1108 +       y="529.59027"
 33.1109 +       id="text5058-3"><tspan
 33.1110 +         sodipodi:role="line"
 33.1111 +         id="tspan5060-3"
 33.1112 +         x="691.60516"
 33.1113 +         y="529.59027">VIRTUAL MACHINE</tspan></text>
 33.1114 +    <rect
 33.1115 +       style="fill:none;stroke:#ffffff;stroke-width:3.14547333;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798)"
 33.1116 +       id="rect5168-6"
 33.1117 +       width="249.40741"
 33.1118 +       height="180.69312"
 33.1119 +       x="251.10405"
 33.1120 +       y="80.182289"
 33.1121 +       transform="matrix(0.51731928,0,0,0.330184,118.66717,411.67516)" />
 33.1122 +    <text
 33.1123 +       xml:space="preserve"
 33.1124 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1125 +       x="254.09354"
 33.1126 +       y="460.71094"
 33.1127 +       id="text5214-9"><tspan
 33.1128 +         sodipodi:role="line"
 33.1129 +         id="tspan5216-0"
 33.1130 +         x="254.09354"
 33.1131 +         y="460.71094">PATTERN </tspan><tspan
 33.1132 +         sodipodi:role="line"
 33.1133 +         x="254.09354"
 33.1134 +         y="483.84845"
 33.1135 +         id="tspan6707">EVALUATION</tspan></text>
 33.1136 +    <text
 33.1137 +       xml:space="preserve"
 33.1138 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1139 +       x="395.81879"
 33.1140 +       y="461.15924"
 33.1141 +       id="text5214-9-9"><tspan
 33.1142 +         sodipodi:role="line"
 33.1143 +         x="395.81879"
 33.1144 +         y="461.15924"
 33.1145 +         id="tspan6707-3">CONSTRAINT</tspan><tspan
 33.1146 +         sodipodi:role="line"
 33.1147 +         x="395.81879"
 33.1148 +         y="484.29675"
 33.1149 +         id="tspan6752">ENFORCEMENT</tspan></text>
 33.1150 +    <text
 33.1151 +       xml:space="preserve"
 33.1152 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1153 +       x="560.29266"
 33.1154 +       y="461.15918"
 33.1155 +       id="text5214-9-0"><tspan
 33.1156 +         sodipodi:role="line"
 33.1157 +         x="560.29266"
 33.1158 +         y="461.15918"
 33.1159 +         id="tspan6707-2">FLOW POINT</tspan><tspan
 33.1160 +         sodipodi:role="line"
 33.1161 +         x="560.29266"
 33.1162 +         y="484.29669"
 33.1163 +         id="tspan6756">ASSIGNMENT</tspan></text>
 33.1164 +    <rect
 33.1165 +       style="fill:none;stroke:#ffffff;stroke-width:2.8854203;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-1)"
 33.1166 +       id="rect5168-6-7"
 33.1167 +       width="249.40741"
 33.1168 +       height="180.69312"
 33.1169 +       x="251.10405"
 33.1170 +       y="80.182289"
 33.1171 +       transform="matrix(0.61570086,0,0,0.32968469,234.44465,412.46106)" />
 33.1172 +    <rect
 33.1173 +       style="fill:none;stroke:#ffffff;stroke-width:3.06674451;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-1-4)"
 33.1174 +       id="rect5168-6-7-6"
 33.1175 +       width="249.40741"
 33.1176 +       height="180.69312"
 33.1177 +       x="251.10405"
 33.1178 +       y="80.182289"
 33.1179 +       transform="matrix(0.54445577,0,0,0.33004177,416.25864,412.40017)" />
 33.1180 +    <path
 33.1181 +       style="fill:none;stroke:#000000;stroke-width:1.90176475;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 33.1182 +       d="m 644.26685,360.37807 0.42343,61.96399"
 33.1183 +       id="path5346-3-6-2-4"
 33.1184 +       inkscape:connector-type="polyline" />
 33.1185 +    <a
 33.1186 +       id="a7773"
 33.1187 +       transform="translate(41.953686,46.646652)">
 33.1188 +      <rect
 33.1189 +         y="66.0532"
 33.1190 +         x="8.9369535"
 33.1191 +         height="121.94473"
 33.1192 +         width="98.977188"
 33.1193 +         id="rect6252-5"
 33.1194 +         style="fill:url(#linearGradient7723);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 33.1195 +         ry="12.687277" />
 33.1196 +    </a>
 33.1197 +    <text
 33.1198 +       xml:space="preserve"
 33.1199 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1200 +       x="58.343124"
 33.1201 +       y="158.0553"
 33.1202 +       id="text6264-2"><tspan
 33.1203 +         sodipodi:role="line"
 33.1204 +         id="tspan6266-6"
 33.1205 +         x="58.343124"
 33.1206 +         y="158.0553">ATCCL</tspan><tspan
 33.1207 +         sodipodi:role="line"
 33.1208 +         x="58.343124"
 33.1209 +         y="182.0388"
 33.1210 +         id="tspan7769">SOURCE</tspan><tspan
 33.1211 +         sodipodi:role="line"
 33.1212 +         x="58.343124"
 33.1213 +         y="206.02232"
 33.1214 +         id="tspan7771">FILE</tspan></text>
 33.1215 +    <path
 33.1216 +       style="fill:none;stroke:#000000;stroke-width:2.27615404;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 33.1217 +       d="m 144.17176,171.83484 90.71332,0.57866"
 33.1218 +       id="path5346-3-6-2-4-6"
 33.1219 +       inkscape:connector-type="polyline" />
 33.1220 +    <rect
 33.1221 +       style="fill:url(#linearGradient7823);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36081773px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 33.1222 +       id="rect2816-4-7"
 33.1223 +       width="127.30537"
 33.1224 +       height="115.00481"
 33.1225 +       x="39.001644"
 33.1226 +       y="423.75348" />
 33.1227 +    <text
 33.1228 +       xml:space="preserve"
 33.1229 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1230 +       x="152.89093"
 33.1231 +       y="528.45917"
 33.1232 +       id="text5058-3-9"><tspan
 33.1233 +         sodipodi:role="line"
 33.1234 +         id="tspan5060-3-0"
 33.1235 +         x="152.89093"
 33.1236 +         y="528.45917">CLIENT</tspan></text>
 33.1237 +    <path
 33.1238 +       style="fill:none;stroke:#000000;stroke-width:1.98548174;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 33.1239 +       d="m 165.23441,451.88654 68.08425,0.58665"
 33.1240 +       id="path5346-3-6-2-4-6-0"
 33.1241 +       inkscape:connector-type="polyline" />
 33.1242 +    <path
 33.1243 +       style="fill:none;stroke:#000000;stroke-width:1.97332788;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 33.1244 +       d="m 236.21993,506.98214 -67.198,-0.28784"
 33.1245 +       id="path5346-3-6-2-4-6-0-8"
 33.1246 +       inkscape:connector-type="polyline" />
 33.1247 +    <text
 33.1248 +       xml:space="preserve"
 33.1249 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1250 +       x="729.70685"
 33.1251 +       y="582.97467"
 33.1252 +       id="text5058-3-1"><tspan
 33.1253 +         sodipodi:role="line"
 33.1254 +         id="tspan5060-3-7"
 33.1255 +         x="729.70685"
 33.1256 +         y="582.97467">ATCCL</tspan></text>
 33.1257 +    <path
 33.1258 +       style="fill:none;stroke:#ffffff;stroke-width:1.44697523;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4.34092579, 1.44697527;stroke-dashoffset:0;marker-end:url(#EmptyTriangleOutL)"
 33.1259 +       d="m 361.78152,194.82794 29.368,-0.36411"
 33.1260 +       id="path5346-3-6-0-5"
 33.1261 +       inkscape:connector-type="polyline" />
 33.1262 +    <path
 33.1263 +       style="fill:none;stroke:#ffffff;stroke-width:1.52872646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:4.58617953, 1.52872651;stroke-dashoffset:0;marker-end:url(#EmptyTriangleOutL)"
 33.1264 +       d="M 312.91657,143.37096 312.8082,165.3367"
 33.1265 +       id="path5346-3-6-0-1"
 33.1266 +       inkscape:connector-type="polyline" />
 33.1267 +    <path
 33.1268 +       style="fill:none;stroke:#ffffff;stroke-width:1.46801996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:5.87208002, 1.46802;stroke-dashoffset:0;marker-end:url(#EmptyTriangleOutL)"
 33.1269 +       d="M 362.98005,193.95278 391.3819,152.39944"
 33.1270 +       id="path5346-3-6-0-5-6"
 33.1271 +       inkscape:connector-type="polyline" />
 33.1272 +    <path
 33.1273 +       style="fill:none;stroke:#ffffff;stroke-width:2.81255174;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:8.43765575, 2.81255191;stroke-dashoffset:0;marker-end:url(#EmptyTriangleOutL)"
 33.1274 +       d="m 385.50451,117.04317 141.39792,0.79516"
 33.1275 +       id="path5346-3-1"
 33.1276 +       inkscape:connector-type="polyline" />
 33.1277 +    <rect
 33.1278 +       style="fill:none;stroke:#fffeff;stroke-width:1.3;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 33.1279 +       id="rect5301-7"
 33.1280 +       width="131.06795"
 33.1281 +       height="131.09811"
 33.1282 +       x="535.78375"
 33.1283 +       y="89.850822" />
 33.1284 +    <text
 33.1285 +       xml:space="preserve"
 33.1286 +       style="font-size:16.45739746px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1287 +       x="582.00421"
 33.1288 +       y="160.6235"
 33.1289 +       id="text5303-49"
 33.1290 +       transform="scale(0.95862536,1.0431604)"><tspan
 33.1291 +         sodipodi:role="line"
 33.1292 +         x="582.00421"
 33.1293 +         y="160.6235"
 33.1294 +         id="tspan5307-1">SYNTHESIS</tspan></text>
 33.1295 +    <text
 33.1296 +       xml:space="preserve"
 33.1297 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 33.1298 +       x="173.34232"
 33.1299 +       y="586.24371"
 33.1300 +       id="text5058-3-1-0"><tspan
 33.1301 +         sodipodi:role="line"
 33.1302 +         id="tspan5060-3-7-9"
 33.1303 +         x="173.34232"
 33.1304 +         y="586.24371">DFLOW</tspan></text>
 33.1305 +  </g>
 33.1306 +</svg>
    34.1 Binary file kolloquium2/images/atccl_symbol.png has changed
    35.1 Binary file kolloquium2/images/atccl_symbol.psd has changed
    36.1 Binary file kolloquium2/images/auto_blue_symbol.png has changed
    37.1 Binary file kolloquium2/images/auto_symbol.png has changed
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/kolloquium2/images/dflow.svg	Fri Jun 04 13:48:28 2010 +0200
    38.3 @@ -0,0 +1,1211 @@
    38.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    38.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
    38.6 +
    38.7 +<svg
    38.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
    38.9 +   xmlns:cc="http://creativecommons.org/ns#"
   38.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   38.11 +   xmlns:svg="http://www.w3.org/2000/svg"
   38.12 +   xmlns="http://www.w3.org/2000/svg"
   38.13 +   xmlns:xlink="http://www.w3.org/1999/xlink"
   38.14 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   38.15 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   38.16 +   width="744.09448819"
   38.17 +   height="1052.3622047"
   38.18 +   id="svg4659"
   38.19 +   version="1.1"
   38.20 +   inkscape:version="0.47 r22583"
   38.21 +   sodipodi:docname="dflow.svg"
   38.22 +   inkscape:export-filename="C:\Users\kiome\Workspace\comsoft\comsoft\thesis\kolloquium2\images\dflow.png"
   38.23 +   inkscape:export-xdpi="90"
   38.24 +   inkscape:export-ydpi="90">
   38.25 +  <defs
   38.26 +     id="defs4661">
   38.27 +    <inkscape:perspective
   38.28 +       sodipodi:type="inkscape:persp3d"
   38.29 +       inkscape:vp_x="0 : 526.18109 : 1"
   38.30 +       inkscape:vp_y="0 : 1000 : 0"
   38.31 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
   38.32 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
   38.33 +       id="perspective4667" />
   38.34 +    <inkscape:perspective
   38.35 +       id="perspective4634"
   38.36 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   38.37 +       inkscape:vp_z="1 : 0.5 : 1"
   38.38 +       inkscape:vp_y="0 : 1000 : 0"
   38.39 +       inkscape:vp_x="0 : 0.5 : 1"
   38.40 +       sodipodi:type="inkscape:persp3d" />
   38.41 +    <linearGradient
   38.42 +       y2="68.79892"
   38.43 +       x2="480.00003"
   38.44 +       y1="304.49695"
   38.45 +       x1="480.00003"
   38.46 +       gradientTransform="matrix(0.9763127,0,0,0.48946368,1.910828,391.02959)"
   38.47 +       gradientUnits="userSpaceOnUse"
   38.48 +       id="linearGradient6672"
   38.49 +       xlink:href="#linearGradient7274"
   38.50 +       inkscape:collect="always" />
   38.51 +    <linearGradient
   38.52 +       id="linearGradient7274"
   38.53 +       inkscape:collect="always">
   38.54 +      <stop
   38.55 +         id="stop7276"
   38.56 +         offset="0"
   38.57 +         style="stop-color:#000000;stop-opacity:1;" />
   38.58 +      <stop
   38.59 +         id="stop7278"
   38.60 +         offset="1"
   38.61 +         style="stop-color:#0089f9;stop-opacity:1" />
   38.62 +    </linearGradient>
   38.63 +    <linearGradient
   38.64 +       inkscape:collect="always"
   38.65 +       xlink:href="#linearGradient7274"
   38.66 +       id="linearGradient4724"
   38.67 +       gradientUnits="userSpaceOnUse"
   38.68 +       gradientTransform="matrix(1.3929498,0,0,0.17602761,-297.4193,469.20767)"
   38.69 +       x1="480.00003"
   38.70 +       y1="304.49695"
   38.71 +       x2="480.00003"
   38.72 +       y2="68.79892" />
   38.73 +    <inkscape:perspective
   38.74 +       id="perspective3085"
   38.75 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
   38.76 +       inkscape:vp_z="1 : 0.5 : 1"
   38.77 +       inkscape:vp_y="0 : 1000 : 0"
   38.78 +       inkscape:vp_x="0 : 0.5 : 1"
   38.79 +       sodipodi:type="inkscape:persp3d" />
   38.80 +    <marker
   38.81 +       inkscape:stockid="EmptyTriangleOutL"
   38.82 +       orient="auto"
   38.83 +       refY="0"
   38.84 +       refX="0"
   38.85 +       id="EmptyTriangleOutL"
   38.86 +       style="overflow:visible">
   38.87 +      <path
   38.88 +         id="path5512"
   38.89 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
   38.90 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
   38.91 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
   38.92 +    </marker>
   38.93 +    <marker
   38.94 +       inkscape:stockid="EmptyTriangleOutL"
   38.95 +       orient="auto"
   38.96 +       refY="0"
   38.97 +       refX="0"
   38.98 +       id="marker3091"
   38.99 +       style="overflow:visible">
  38.100 +      <path
  38.101 +         id="path3093"
  38.102 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  38.103 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  38.104 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  38.105 +    </marker>
  38.106 +    <marker
  38.107 +       inkscape:stockid="EmptyTriangleOutL"
  38.108 +       orient="auto"
  38.109 +       refY="0"
  38.110 +       refX="0"
  38.111 +       id="marker3095"
  38.112 +       style="overflow:visible">
  38.113 +      <path
  38.114 +         id="path3097"
  38.115 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  38.116 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  38.117 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  38.118 +    </marker>
  38.119 +    <marker
  38.120 +       inkscape:stockid="EmptyTriangleOutL"
  38.121 +       orient="auto"
  38.122 +       refY="0"
  38.123 +       refX="0"
  38.124 +       id="marker3099"
  38.125 +       style="overflow:visible">
  38.126 +      <path
  38.127 +         id="path3101"
  38.128 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  38.129 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  38.130 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  38.131 +    </marker>
  38.132 +    <marker
  38.133 +       inkscape:stockid="Arrow2Lend"
  38.134 +       orient="auto"
  38.135 +       refY="0"
  38.136 +       refX="0"
  38.137 +       id="Arrow2Lend"
  38.138 +       style="overflow:visible">
  38.139 +      <path
  38.140 +         id="path5372"
  38.141 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.142 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.143 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.144 +    </marker>
  38.145 +    <marker
  38.146 +       inkscape:stockid="Arrow2Lend"
  38.147 +       orient="auto"
  38.148 +       refY="0"
  38.149 +       refX="0"
  38.150 +       id="marker3105"
  38.151 +       style="overflow:visible">
  38.152 +      <path
  38.153 +         id="path3107"
  38.154 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.155 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.156 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.157 +    </marker>
  38.158 +    <linearGradient
  38.159 +       y2="68.79892"
  38.160 +       x2="480.00003"
  38.161 +       y1="304.49695"
  38.162 +       x1="480.00003"
  38.163 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-25.43193,556.55503)"
  38.164 +       gradientUnits="userSpaceOnUse"
  38.165 +       id="linearGradient7823"
  38.166 +       xlink:href="#linearGradient7274-7"
  38.167 +       inkscape:collect="always" />
  38.168 +    <linearGradient
  38.169 +       id="linearGradient7274-7"
  38.170 +       inkscape:collect="always">
  38.171 +      <stop
  38.172 +         id="stop7276-4"
  38.173 +         offset="0"
  38.174 +         style="stop-color:#000000;stop-opacity:1;" />
  38.175 +      <stop
  38.176 +         id="stop7278-3"
  38.177 +         offset="1"
  38.178 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.179 +    </linearGradient>
  38.180 +    <marker
  38.181 +       inkscape:stockid="Arrow2Lend"
  38.182 +       orient="auto"
  38.183 +       refY="0"
  38.184 +       refX="0"
  38.185 +       id="marker3113"
  38.186 +       style="overflow:visible">
  38.187 +      <path
  38.188 +         id="path3115"
  38.189 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.190 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.191 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.192 +    </marker>
  38.193 +    <marker
  38.194 +       inkscape:stockid="Arrow2Lend"
  38.195 +       orient="auto"
  38.196 +       refY="0"
  38.197 +       refX="0"
  38.198 +       id="marker3121"
  38.199 +       style="overflow:visible">
  38.200 +      <path
  38.201 +         id="path3123"
  38.202 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.203 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.204 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.205 +    </marker>
  38.206 +    <filter
  38.207 +       color-interpolation-filters="sRGB"
  38.208 +       inkscape:collect="always"
  38.209 +       id="filter6798-1-4">
  38.210 +      <feGaussianBlur
  38.211 +         inkscape:collect="always"
  38.212 +         stdDeviation="0.4493522"
  38.213 +         id="feGaussianBlur6800-8-1" />
  38.214 +    </filter>
  38.215 +    <filter
  38.216 +       color-interpolation-filters="sRGB"
  38.217 +       inkscape:collect="always"
  38.218 +       id="filter6798-1">
  38.219 +      <feGaussianBlur
  38.220 +         inkscape:collect="always"
  38.221 +         stdDeviation="0.4493522"
  38.222 +         id="feGaussianBlur6800-8" />
  38.223 +    </filter>
  38.224 +    <filter
  38.225 +       color-interpolation-filters="sRGB"
  38.226 +       inkscape:collect="always"
  38.227 +       id="filter6798-4">
  38.228 +      <feGaussianBlur
  38.229 +         inkscape:collect="always"
  38.230 +         stdDeviation="0.4493522"
  38.231 +         id="feGaussianBlur6800-88" />
  38.232 +    </filter>
  38.233 +    <linearGradient
  38.234 +       y2="68.79892"
  38.235 +       x2="480.00003"
  38.236 +       y1="304.49695"
  38.237 +       x1="480.00003"
  38.238 +       gradientTransform="matrix(0.9763127,0,0,0.48946368,1.1299455,557.94938)"
  38.239 +       gradientUnits="userSpaceOnUse"
  38.240 +       id="linearGradient6672-2"
  38.241 +       xlink:href="#linearGradient7274-4"
  38.242 +       inkscape:collect="always" />
  38.243 +    <linearGradient
  38.244 +       id="linearGradient7274-4"
  38.245 +       inkscape:collect="always">
  38.246 +      <stop
  38.247 +         id="stop7276-5"
  38.248 +         offset="0"
  38.249 +         style="stop-color:#000000;stop-opacity:1;" />
  38.250 +      <stop
  38.251 +         id="stop7278-5"
  38.252 +         offset="1"
  38.253 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.254 +    </linearGradient>
  38.255 +    <marker
  38.256 +       inkscape:stockid="Arrow2Lend"
  38.257 +       orient="auto"
  38.258 +       refY="0"
  38.259 +       refX="0"
  38.260 +       id="marker3147"
  38.261 +       style="overflow:visible">
  38.262 +      <path
  38.263 +         id="path3149"
  38.264 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.265 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.266 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.267 +    </marker>
  38.268 +    <marker
  38.269 +       inkscape:stockid="EmptyTriangleOutL"
  38.270 +       orient="auto"
  38.271 +       refY="0"
  38.272 +       refX="0"
  38.273 +       id="marker3151"
  38.274 +       style="overflow:visible">
  38.275 +      <path
  38.276 +         id="path3153"
  38.277 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  38.278 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  38.279 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  38.280 +    </marker>
  38.281 +    <inkscape:perspective
  38.282 +       id="perspective5567"
  38.283 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.284 +       inkscape:vp_z="1 : 0.5 : 1"
  38.285 +       inkscape:vp_y="0 : 1000 : 0"
  38.286 +       inkscape:vp_x="0 : 0.5 : 1"
  38.287 +       sodipodi:type="inkscape:persp3d" />
  38.288 +    <linearGradient
  38.289 +       y2="68.79892"
  38.290 +       x2="480.00003"
  38.291 +       y1="304.49695"
  38.292 +       x1="480.00003"
  38.293 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-25.43193,556.55503)"
  38.294 +       gradientUnits="userSpaceOnUse"
  38.295 +       id="linearGradient7823-1"
  38.296 +       xlink:href="#linearGradient7274-7-5"
  38.297 +       inkscape:collect="always" />
  38.298 +    <linearGradient
  38.299 +       id="linearGradient7274-7-5"
  38.300 +       inkscape:collect="always">
  38.301 +      <stop
  38.302 +         id="stop7276-4-2"
  38.303 +         offset="0"
  38.304 +         style="stop-color:#000000;stop-opacity:1;" />
  38.305 +      <stop
  38.306 +         id="stop7278-3-7"
  38.307 +         offset="1"
  38.308 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.309 +    </linearGradient>
  38.310 +    <linearGradient
  38.311 +       y2="68.79892"
  38.312 +       x2="480.00003"
  38.313 +       y1="304.49695"
  38.314 +       x1="480.00003"
  38.315 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-24.636807,263.8432)"
  38.316 +       gradientUnits="userSpaceOnUse"
  38.317 +       id="linearGradient5578"
  38.318 +       xlink:href="#linearGradient7274-7-5"
  38.319 +       inkscape:collect="always" />
  38.320 +    <inkscape:perspective
  38.321 +       id="perspective5617"
  38.322 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.323 +       inkscape:vp_z="1 : 0.5 : 1"
  38.324 +       inkscape:vp_y="0 : 1000 : 0"
  38.325 +       inkscape:vp_x="0 : 0.5 : 1"
  38.326 +       sodipodi:type="inkscape:persp3d" />
  38.327 +    <linearGradient
  38.328 +       y2="68.79892"
  38.329 +       x2="480.00003"
  38.330 +       y1="304.49695"
  38.331 +       x1="480.00003"
  38.332 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-39.784628,141.07609)"
  38.333 +       gradientUnits="userSpaceOnUse"
  38.334 +       id="linearGradient5578-2"
  38.335 +       xlink:href="#linearGradient7274-7-5-3"
  38.336 +       inkscape:collect="always" />
  38.337 +    <linearGradient
  38.338 +       id="linearGradient7274-7-5-3"
  38.339 +       inkscape:collect="always">
  38.340 +      <stop
  38.341 +         id="stop7276-4-2-2"
  38.342 +         offset="0"
  38.343 +         style="stop-color:#000000;stop-opacity:1;" />
  38.344 +      <stop
  38.345 +         id="stop7278-3-7-2"
  38.346 +         offset="1"
  38.347 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.348 +    </linearGradient>
  38.349 +    <linearGradient
  38.350 +       y2="68.79892"
  38.351 +       x2="480.00003"
  38.352 +       y1="304.49695"
  38.353 +       x1="480.00003"
  38.354 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-33.172072,247.64611)"
  38.355 +       gradientUnits="userSpaceOnUse"
  38.356 +       id="linearGradient5626"
  38.357 +       xlink:href="#linearGradient7274-7-5-3"
  38.358 +       inkscape:collect="always" />
  38.359 +    <inkscape:perspective
  38.360 +       id="perspective5655"
  38.361 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.362 +       inkscape:vp_z="1 : 0.5 : 1"
  38.363 +       inkscape:vp_y="0 : 1000 : 0"
  38.364 +       inkscape:vp_x="0 : 0.5 : 1"
  38.365 +       sodipodi:type="inkscape:persp3d" />
  38.366 +    <linearGradient
  38.367 +       y2="68.79892"
  38.368 +       x2="480.00003"
  38.369 +       y1="304.49695"
  38.370 +       x1="480.00003"
  38.371 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-26.319893,120.879)"
  38.372 +       gradientUnits="userSpaceOnUse"
  38.373 +       id="linearGradient5626-6"
  38.374 +       xlink:href="#linearGradient7274-7-5-3-8"
  38.375 +       inkscape:collect="always" />
  38.376 +    <linearGradient
  38.377 +       id="linearGradient7274-7-5-3-8"
  38.378 +       inkscape:collect="always">
  38.379 +      <stop
  38.380 +         id="stop7276-4-2-2-5"
  38.381 +         offset="0"
  38.382 +         style="stop-color:#000000;stop-opacity:1;" />
  38.383 +      <stop
  38.384 +         id="stop7278-3-7-2-7"
  38.385 +         offset="1"
  38.386 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.387 +    </linearGradient>
  38.388 +    <linearGradient
  38.389 +       y2="68.79892"
  38.390 +       x2="480.00003"
  38.391 +       y1="304.49695"
  38.392 +       x1="480.00003"
  38.393 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-41.707333,235.13211)"
  38.394 +       gradientUnits="userSpaceOnUse"
  38.395 +       id="linearGradient5664"
  38.396 +       xlink:href="#linearGradient7274-7-5-3-8"
  38.397 +       inkscape:collect="always" />
  38.398 +    <inkscape:perspective
  38.399 +       id="perspective5693"
  38.400 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.401 +       inkscape:vp_z="1 : 0.5 : 1"
  38.402 +       inkscape:vp_y="0 : 1000 : 0"
  38.403 +       inkscape:vp_x="0 : 0.5 : 1"
  38.404 +       sodipodi:type="inkscape:persp3d" />
  38.405 +    <marker
  38.406 +       inkscape:stockid="Arrow2Lend"
  38.407 +       orient="auto"
  38.408 +       refY="0"
  38.409 +       refX="0"
  38.410 +       id="Arrow2Lend-1"
  38.411 +       style="overflow:visible">
  38.412 +      <path
  38.413 +         id="path5372-8"
  38.414 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.415 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.416 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.417 +    </marker>
  38.418 +    <inkscape:perspective
  38.419 +       id="perspective5721"
  38.420 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.421 +       inkscape:vp_z="1 : 0.5 : 1"
  38.422 +       inkscape:vp_y="0 : 1000 : 0"
  38.423 +       inkscape:vp_x="0 : 0.5 : 1"
  38.424 +       sodipodi:type="inkscape:persp3d" />
  38.425 +    <marker
  38.426 +       inkscape:stockid="Arrow2Lend"
  38.427 +       orient="auto"
  38.428 +       refY="0"
  38.429 +       refX="0"
  38.430 +       id="Arrow2Lend-2"
  38.431 +       style="overflow:visible">
  38.432 +      <path
  38.433 +         id="path5372-7"
  38.434 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.435 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.436 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.437 +    </marker>
  38.438 +    <inkscape:perspective
  38.439 +       id="perspective5788"
  38.440 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.441 +       inkscape:vp_z="1 : 0.5 : 1"
  38.442 +       inkscape:vp_y="0 : 1000 : 0"
  38.443 +       inkscape:vp_x="0 : 0.5 : 1"
  38.444 +       sodipodi:type="inkscape:persp3d" />
  38.445 +    <marker
  38.446 +       inkscape:stockid="Arrow2Lend"
  38.447 +       orient="auto"
  38.448 +       refY="0"
  38.449 +       refX="0"
  38.450 +       id="Arrow2Lend-23"
  38.451 +       style="overflow:visible">
  38.452 +      <path
  38.453 +         id="path5372-3"
  38.454 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.455 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.456 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.457 +    </marker>
  38.458 +    <marker
  38.459 +       inkscape:stockid="Arrow2Lend"
  38.460 +       orient="auto"
  38.461 +       refY="0"
  38.462 +       refX="0"
  38.463 +       id="marker5794"
  38.464 +       style="overflow:visible">
  38.465 +      <path
  38.466 +         id="path5796"
  38.467 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.468 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.469 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.470 +    </marker>
  38.471 +    <inkscape:perspective
  38.472 +       id="perspective5831"
  38.473 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.474 +       inkscape:vp_z="1 : 0.5 : 1"
  38.475 +       inkscape:vp_y="0 : 1000 : 0"
  38.476 +       inkscape:vp_x="0 : 0.5 : 1"
  38.477 +       sodipodi:type="inkscape:persp3d" />
  38.478 +    <inkscape:perspective
  38.479 +       id="perspective5871"
  38.480 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.481 +       inkscape:vp_z="1 : 0.5 : 1"
  38.482 +       inkscape:vp_y="0 : 1000 : 0"
  38.483 +       inkscape:vp_x="0 : 0.5 : 1"
  38.484 +       sodipodi:type="inkscape:persp3d" />
  38.485 +    <inkscape:perspective
  38.486 +       id="perspective5932"
  38.487 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.488 +       inkscape:vp_z="1 : 0.5 : 1"
  38.489 +       inkscape:vp_y="0 : 1000 : 0"
  38.490 +       inkscape:vp_x="0 : 0.5 : 1"
  38.491 +       sodipodi:type="inkscape:persp3d" />
  38.492 +    <marker
  38.493 +       inkscape:stockid="Arrow2Lend"
  38.494 +       orient="auto"
  38.495 +       refY="0"
  38.496 +       refX="0"
  38.497 +       id="Arrow2Lend-7"
  38.498 +       style="overflow:visible">
  38.499 +      <path
  38.500 +         id="path5372-4"
  38.501 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.502 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.503 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.504 +    </marker>
  38.505 +    <inkscape:perspective
  38.506 +       id="perspective6184"
  38.507 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.508 +       inkscape:vp_z="1 : 0.5 : 1"
  38.509 +       inkscape:vp_y="0 : 1000 : 0"
  38.510 +       inkscape:vp_x="0 : 0.5 : 1"
  38.511 +       sodipodi:type="inkscape:persp3d" />
  38.512 +    <linearGradient
  38.513 +       y2="68.79892"
  38.514 +       x2="480.00003"
  38.515 +       y1="304.49695"
  38.516 +       x1="480.00003"
  38.517 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-25.43193,556.55503)"
  38.518 +       gradientUnits="userSpaceOnUse"
  38.519 +       id="linearGradient7823-7"
  38.520 +       xlink:href="#linearGradient7274-7-7"
  38.521 +       inkscape:collect="always" />
  38.522 +    <linearGradient
  38.523 +       id="linearGradient7274-7-7"
  38.524 +       inkscape:collect="always">
  38.525 +      <stop
  38.526 +         id="stop7276-4-9"
  38.527 +         offset="0"
  38.528 +         style="stop-color:#000000;stop-opacity:1;" />
  38.529 +      <stop
  38.530 +         id="stop7278-3-3"
  38.531 +         offset="1"
  38.532 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.533 +    </linearGradient>
  38.534 +    <linearGradient
  38.535 +       y2="68.79892"
  38.536 +       x2="480.00003"
  38.537 +       y1="304.49695"
  38.538 +       x1="480.00003"
  38.539 +       gradientTransform="matrix(0.26550737,0,0,0.18671945,182.04221,356.77346)"
  38.540 +       gradientUnits="userSpaceOnUse"
  38.541 +       id="linearGradient6195"
  38.542 +       xlink:href="#linearGradient7274-7-7"
  38.543 +       inkscape:collect="always" />
  38.544 +    <inkscape:perspective
  38.545 +       id="perspective6228"
  38.546 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.547 +       inkscape:vp_z="1 : 0.5 : 1"
  38.548 +       inkscape:vp_y="0 : 1000 : 0"
  38.549 +       inkscape:vp_x="0 : 0.5 : 1"
  38.550 +       sodipodi:type="inkscape:persp3d" />
  38.551 +    <marker
  38.552 +       inkscape:stockid="Arrow2Lend"
  38.553 +       orient="auto"
  38.554 +       refY="0"
  38.555 +       refX="0"
  38.556 +       id="Arrow2Lend-7-6"
  38.557 +       style="overflow:visible">
  38.558 +      <path
  38.559 +         id="path5372-4-5"
  38.560 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.561 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.562 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.563 +    </marker>
  38.564 +    <inkscape:perspective
  38.565 +       id="perspective6256"
  38.566 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.567 +       inkscape:vp_z="1 : 0.5 : 1"
  38.568 +       inkscape:vp_y="0 : 1000 : 0"
  38.569 +       inkscape:vp_x="0 : 0.5 : 1"
  38.570 +       sodipodi:type="inkscape:persp3d" />
  38.571 +    <inkscape:perspective
  38.572 +       id="perspective6256-8"
  38.573 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.574 +       inkscape:vp_z="1 : 0.5 : 1"
  38.575 +       inkscape:vp_y="0 : 1000 : 0"
  38.576 +       inkscape:vp_x="0 : 0.5 : 1"
  38.577 +       sodipodi:type="inkscape:persp3d" />
  38.578 +    <inkscape:perspective
  38.579 +       id="perspective6287"
  38.580 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.581 +       inkscape:vp_z="1 : 0.5 : 1"
  38.582 +       inkscape:vp_y="0 : 1000 : 0"
  38.583 +       inkscape:vp_x="0 : 0.5 : 1"
  38.584 +       sodipodi:type="inkscape:persp3d" />
  38.585 +    <inkscape:perspective
  38.586 +       id="perspective7252"
  38.587 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.588 +       inkscape:vp_z="1 : 0.5 : 1"
  38.589 +       inkscape:vp_y="0 : 1000 : 0"
  38.590 +       inkscape:vp_x="0 : 0.5 : 1"
  38.591 +       sodipodi:type="inkscape:persp3d" />
  38.592 +    <inkscape:perspective
  38.593 +       id="perspective7280"
  38.594 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.595 +       inkscape:vp_z="1 : 0.5 : 1"
  38.596 +       inkscape:vp_y="0 : 1000 : 0"
  38.597 +       inkscape:vp_x="0 : 0.5 : 1"
  38.598 +       sodipodi:type="inkscape:persp3d" />
  38.599 +    <inkscape:perspective
  38.600 +       id="perspective7305"
  38.601 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.602 +       inkscape:vp_z="1 : 0.5 : 1"
  38.603 +       inkscape:vp_y="0 : 1000 : 0"
  38.604 +       inkscape:vp_x="0 : 0.5 : 1"
  38.605 +       sodipodi:type="inkscape:persp3d" />
  38.606 +    <linearGradient
  38.607 +       y2="68.79892"
  38.608 +       x2="480.00003"
  38.609 +       y1="304.49695"
  38.610 +       x1="480.00003"
  38.611 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-25.43193,556.55503)"
  38.612 +       gradientUnits="userSpaceOnUse"
  38.613 +       id="linearGradient7823-8"
  38.614 +       xlink:href="#linearGradient7274-7-6"
  38.615 +       inkscape:collect="always" />
  38.616 +    <linearGradient
  38.617 +       id="linearGradient7274-7-6"
  38.618 +       inkscape:collect="always">
  38.619 +      <stop
  38.620 +         id="stop7276-4-5"
  38.621 +         offset="0"
  38.622 +         style="stop-color:#000000;stop-opacity:1;" />
  38.623 +      <stop
  38.624 +         id="stop7278-3-0"
  38.625 +         offset="1"
  38.626 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.627 +    </linearGradient>
  38.628 +    <linearGradient
  38.629 +       y2="68.79892"
  38.630 +       x2="480.00003"
  38.631 +       y1="304.49695"
  38.632 +       x1="480.00003"
  38.633 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,466.46588,288.05132)"
  38.634 +       gradientUnits="userSpaceOnUse"
  38.635 +       id="linearGradient7316"
  38.636 +       xlink:href="#linearGradient7274-7-6"
  38.637 +       inkscape:collect="always" />
  38.638 +    <inkscape:perspective
  38.639 +       id="perspective7349"
  38.640 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.641 +       inkscape:vp_z="1 : 0.5 : 1"
  38.642 +       inkscape:vp_y="0 : 1000 : 0"
  38.643 +       inkscape:vp_x="0 : 0.5 : 1"
  38.644 +       sodipodi:type="inkscape:persp3d" />
  38.645 +    <linearGradient
  38.646 +       y2="68.79892"
  38.647 +       x2="480.00003"
  38.648 +       y1="304.49695"
  38.649 +       x1="480.00003"
  38.650 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-24.636807,263.8432)"
  38.651 +       gradientUnits="userSpaceOnUse"
  38.652 +       id="linearGradient5578-6"
  38.653 +       xlink:href="#linearGradient7274-7-5-1"
  38.654 +       inkscape:collect="always" />
  38.655 +    <linearGradient
  38.656 +       id="linearGradient7274-7-5-1"
  38.657 +       inkscape:collect="always">
  38.658 +      <stop
  38.659 +         id="stop7276-4-2-3"
  38.660 +         offset="0"
  38.661 +         style="stop-color:#000000;stop-opacity:1;" />
  38.662 +      <stop
  38.663 +         id="stop7278-3-7-8"
  38.664 +         offset="1"
  38.665 +         style="stop-color:#0089f9;stop-opacity:1" />
  38.666 +    </linearGradient>
  38.667 +    <linearGradient
  38.668 +       y2="68.79892"
  38.669 +       x2="480.00003"
  38.670 +       y1="304.49695"
  38.671 +       x1="480.00003"
  38.672 +       gradientTransform="matrix(0.26539521,0,0,0.28805522,415.4352,349.18119)"
  38.673 +       gradientUnits="userSpaceOnUse"
  38.674 +       id="linearGradient7362"
  38.675 +       xlink:href="#linearGradient7274-7-5-1"
  38.676 +       inkscape:collect="always" />
  38.677 +    <inkscape:perspective
  38.678 +       id="perspective3156"
  38.679 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.680 +       inkscape:vp_z="1 : 0.5 : 1"
  38.681 +       inkscape:vp_y="0 : 1000 : 0"
  38.682 +       inkscape:vp_x="0 : 0.5 : 1"
  38.683 +       sodipodi:type="inkscape:persp3d" />
  38.684 +    <inkscape:perspective
  38.685 +       id="perspective4046"
  38.686 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.687 +       inkscape:vp_z="1 : 0.5 : 1"
  38.688 +       inkscape:vp_y="0 : 1000 : 0"
  38.689 +       inkscape:vp_x="0 : 0.5 : 1"
  38.690 +       sodipodi:type="inkscape:persp3d" />
  38.691 +    <inkscape:perspective
  38.692 +       id="perspective4071"
  38.693 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.694 +       inkscape:vp_z="1 : 0.5 : 1"
  38.695 +       inkscape:vp_y="0 : 1000 : 0"
  38.696 +       inkscape:vp_x="0 : 0.5 : 1"
  38.697 +       sodipodi:type="inkscape:persp3d" />
  38.698 +    <marker
  38.699 +       inkscape:stockid="Arrow2Lend"
  38.700 +       orient="auto"
  38.701 +       refY="0"
  38.702 +       refX="0"
  38.703 +       id="Arrow2Lend-9"
  38.704 +       style="overflow:visible">
  38.705 +      <path
  38.706 +         id="path5372-48"
  38.707 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.708 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.709 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.710 +    </marker>
  38.711 +    <marker
  38.712 +       inkscape:stockid="Arrow2Lend"
  38.713 +       orient="auto"
  38.714 +       refY="0"
  38.715 +       refX="0"
  38.716 +       id="marker4077"
  38.717 +       style="overflow:visible">
  38.718 +      <path
  38.719 +         id="path4079"
  38.720 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  38.721 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  38.722 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  38.723 +    </marker>
  38.724 +    <inkscape:perspective
  38.725 +       id="perspective4123"
  38.726 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.727 +       inkscape:vp_z="1 : 0.5 : 1"
  38.728 +       inkscape:vp_y="0 : 1000 : 0"
  38.729 +       inkscape:vp_x="0 : 0.5 : 1"
  38.730 +       sodipodi:type="inkscape:persp3d" />
  38.731 +    <inkscape:perspective
  38.732 +       id="perspective4145"
  38.733 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.734 +       inkscape:vp_z="1 : 0.5 : 1"
  38.735 +       inkscape:vp_y="0 : 1000 : 0"
  38.736 +       inkscape:vp_x="0 : 0.5 : 1"
  38.737 +       sodipodi:type="inkscape:persp3d" />
  38.738 +    <inkscape:perspective
  38.739 +       id="perspective4167"
  38.740 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.741 +       inkscape:vp_z="1 : 0.5 : 1"
  38.742 +       inkscape:vp_y="0 : 1000 : 0"
  38.743 +       inkscape:vp_x="0 : 0.5 : 1"
  38.744 +       sodipodi:type="inkscape:persp3d" />
  38.745 +    <inkscape:perspective
  38.746 +       id="perspective4189"
  38.747 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.748 +       inkscape:vp_z="1 : 0.5 : 1"
  38.749 +       inkscape:vp_y="0 : 1000 : 0"
  38.750 +       inkscape:vp_x="0 : 0.5 : 1"
  38.751 +       sodipodi:type="inkscape:persp3d" />
  38.752 +    <inkscape:perspective
  38.753 +       id="perspective4211"
  38.754 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.755 +       inkscape:vp_z="1 : 0.5 : 1"
  38.756 +       inkscape:vp_y="0 : 1000 : 0"
  38.757 +       inkscape:vp_x="0 : 0.5 : 1"
  38.758 +       sodipodi:type="inkscape:persp3d" />
  38.759 +    <inkscape:perspective
  38.760 +       id="perspective4235"
  38.761 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  38.762 +       inkscape:vp_z="1 : 0.5 : 1"
  38.763 +       inkscape:vp_y="0 : 1000 : 0"
  38.764 +       inkscape:vp_x="0 : 0.5 : 1"
  38.765 +       sodipodi:type="inkscape:persp3d" />
  38.766 +  </defs>
  38.767 +  <sodipodi:namedview
  38.768 +     id="base"
  38.769 +     pagecolor="#ffffff"
  38.770 +     bordercolor="#666666"
  38.771 +     borderopacity="1.0"
  38.772 +     inkscape:pageopacity="0.0"
  38.773 +     inkscape:pageshadow="2"
  38.774 +     inkscape:zoom="0.83586341"
  38.775 +     inkscape:cx="370.05541"
  38.776 +     inkscape:cy="547.97189"
  38.777 +     inkscape:document-units="px"
  38.778 +     inkscape:current-layer="layer1"
  38.779 +     showgrid="false"
  38.780 +     inkscape:window-width="1024"
  38.781 +     inkscape:window-height="718"
  38.782 +     inkscape:window-x="-8"
  38.783 +     inkscape:window-y="-8"
  38.784 +     inkscape:window-maximized="1"
  38.785 +     showguides="true"
  38.786 +     inkscape:guide-bbox="true" />
  38.787 +  <metadata
  38.788 +     id="metadata4664">
  38.789 +    <rdf:RDF>
  38.790 +      <cc:Work
  38.791 +         rdf:about="">
  38.792 +        <dc:format>image/svg+xml</dc:format>
  38.793 +        <dc:type
  38.794 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  38.795 +        <dc:title></dc:title>
  38.796 +      </cc:Work>
  38.797 +    </rdf:RDF>
  38.798 +  </metadata>
  38.799 +  <g
  38.800 +     inkscape:label="Layer 1"
  38.801 +     inkscape:groupmode="layer"
  38.802 +     id="layer1">
  38.803 +    <rect
  38.804 +       style="fill:#ffffff;stroke:#000000;stroke-width:2.50000000000000000;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:10, 2.50000000000000000;stroke-dashoffset:0;fill-opacity:1"
  38.805 +       id="rect7904-17"
  38.806 +       width="288.93225"
  38.807 +       height="206.49301"
  38.808 +       x="448.79794"
  38.809 +       y="247.61382"
  38.810 +       inkscape:export-xdpi="90"
  38.811 +       inkscape:export-ydpi="90" />
  38.812 +    <image
  38.813 +       y="252.52176"
  38.814 +       x="466.64136"
  38.815 +       id="image7254"
  38.816 +       height="161.55901"
  38.817 +       width="172.40999"
  38.818 +       xlink:href="file:///C:/Users/kiome/Workspace/comsoft/comsoft/thesis/kolloquium2/images/inkscape_pasted_image_20100125_164858.png"
  38.819 +       style="fill:none;stroke:none" />
  38.820 +    <rect
  38.821 +       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:10,2.5;stroke-dashoffset:0"
  38.822 +       id="rect7904"
  38.823 +       width="544.7868"
  38.824 +       height="205.54776"
  38.825 +       x="194.51956"
  38.826 +       y="555.57275"
  38.827 +       inkscape:export-xdpi="90"
  38.828 +       inkscape:export-ydpi="90" />
  38.829 +    <rect
  38.830 +       style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:10,2.5;stroke-dashoffset:0"
  38.831 +       id="rect7904-1"
  38.832 +       width="168.91"
  38.833 +       height="513.20526"
  38.834 +       x="10.629325"
  38.835 +       y="247.9615" />
  38.836 +    <rect
  38.837 +       style="fill:url(#linearGradient5664);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36081773px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  38.838 +       id="rect2816-4-7-6-1-6"
  38.839 +       width="127.30537"
  38.840 +       height="115.00481"
  38.841 +       x="21.945343"
  38.842 +       y="269.25037" />
  38.843 +    <rect
  38.844 +       style="fill:url(#linearGradient4724);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.49517438px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  38.845 +       id="rect2816-4"
  38.846 +       width="668.61591"
  38.847 +       height="41.240753"
  38.848 +       x="36.888672"
  38.849 +       y="481.4425" />
  38.850 +    <text
  38.851 +       xml:space="preserve"
  38.852 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.853 +       x="692.15564"
  38.854 +       y="512.45129"
  38.855 +       id="text5058-3"><tspan
  38.856 +         sodipodi:role="line"
  38.857 +         id="tspan5060-3"
  38.858 +         x="692.15564"
  38.859 +         y="512.45129">DMAP</tspan></text>
  38.860 +    <text
  38.861 +       xml:space="preserve"
  38.862 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.863 +       x="591.19366"
  38.864 +       y="708.23169"
  38.865 +       id="text5214-4"><tspan
  38.866 +         sodipodi:role="line"
  38.867 +         id="tspan5216-4"
  38.868 +         x="591.19366"
  38.869 +         y="708.23169" /></text>
  38.870 +    <rect
  38.871 +       style="fill:url(#linearGradient6672-2);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.6912812px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  38.872 +       id="rect2816-4-1"
  38.873 +       width="468.63013"
  38.874 +       height="114.67435"
  38.875 +       x="235.44501"
  38.876 +       y="591.9696" />
  38.877 +    <text
  38.878 +       xml:space="preserve"
  38.879 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.880 +       x="690.82428"
  38.881 +       y="696.51007"
  38.882 +       id="text5058-3-7"><tspan
  38.883 +         sodipodi:role="line"
  38.884 +         id="tspan5060-3-1"
  38.885 +         x="690.82428"
  38.886 +         y="696.51007">VIRTUAL MACHINE</tspan></text>
  38.887 +    <rect
  38.888 +       style="fill:none;stroke:#ffffff;stroke-width:3.14547324;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-4)"
  38.889 +       id="rect5168-6"
  38.890 +       width="249.40741"
  38.891 +       height="180.69312"
  38.892 +       x="251.10405"
  38.893 +       y="80.182289"
  38.894 +       transform="matrix(0.51731928,0,0,0.330184,117.88629,578.59495)" />
  38.895 +    <text
  38.896 +       xml:space="preserve"
  38.897 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.898 +       x="253.31265"
  38.899 +       y="627.63074"
  38.900 +       id="text5214-9"><tspan
  38.901 +         sodipodi:role="line"
  38.902 +         id="tspan5216-0"
  38.903 +         x="253.31265"
  38.904 +         y="627.63074">PATTERN </tspan><tspan
  38.905 +         sodipodi:role="line"
  38.906 +         x="253.31265"
  38.907 +         y="650.76825"
  38.908 +         id="tspan6707">EVALUATION</tspan></text>
  38.909 +    <text
  38.910 +       xml:space="preserve"
  38.911 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.912 +       x="395.0379"
  38.913 +       y="628.07904"
  38.914 +       id="text5214-9-9"><tspan
  38.915 +         sodipodi:role="line"
  38.916 +         x="395.0379"
  38.917 +         y="628.07904"
  38.918 +         id="tspan6707-3">CONSTRAINT</tspan><tspan
  38.919 +         sodipodi:role="line"
  38.920 +         x="395.0379"
  38.921 +         y="651.21655"
  38.922 +         id="tspan6752">ENFORCEMENT</tspan></text>
  38.923 +    <text
  38.924 +       xml:space="preserve"
  38.925 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.926 +       x="559.51178"
  38.927 +       y="628.07898"
  38.928 +       id="text5214-9-0"><tspan
  38.929 +         sodipodi:role="line"
  38.930 +         x="559.51178"
  38.931 +         y="628.07898"
  38.932 +         id="tspan6707-2">FLOWPOINT</tspan><tspan
  38.933 +         sodipodi:role="line"
  38.934 +         x="559.51178"
  38.935 +         y="651.21649"
  38.936 +         id="tspan6756">ASSIGNMENT</tspan></text>
  38.937 +    <rect
  38.938 +       style="fill:none;stroke:#ffffff;stroke-width:2.88542032;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-1)"
  38.939 +       id="rect5168-6-7"
  38.940 +       width="249.40741"
  38.941 +       height="180.69312"
  38.942 +       x="251.10405"
  38.943 +       y="80.182289"
  38.944 +       transform="matrix(0.61570086,0,0,0.32968469,233.66377,579.38085)" />
  38.945 +    <rect
  38.946 +       style="fill:none;stroke:#ffffff;stroke-width:3.06674457;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-1-4)"
  38.947 +       id="rect5168-6-7-6"
  38.948 +       width="249.40741"
  38.949 +       height="180.69312"
  38.950 +       x="251.10405"
  38.951 +       y="80.182289"
  38.952 +       transform="matrix(0.54445577,0,0,0.33004177,415.47776,579.31996)" />
  38.953 +    <rect
  38.954 +       style="fill:url(#linearGradient7823);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36081773px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
  38.955 +       id="rect2816-4-7"
  38.956 +       width="127.30537"
  38.957 +       height="115.00481"
  38.958 +       x="38.22076"
  38.959 +       y="590.67328" />
  38.960 +    <text
  38.961 +       xml:space="preserve"
  38.962 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.963 +       x="152.11006"
  38.964 +       y="695.37897"
  38.965 +       id="text5058-3-9"><tspan
  38.966 +         sodipodi:role="line"
  38.967 +         id="tspan5060-3-0"
  38.968 +         x="152.11006"
  38.969 +         y="695.37897">DFLOW</tspan></text>
  38.970 +    <path
  38.971 +       style="fill:none;stroke:#000000;stroke-width:1.98548174;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
  38.972 +       d="m 164.45353,618.80633 68.08425,0.58665"
  38.973 +       id="path5346-3-6-2-4-6-0"
  38.974 +       inkscape:connector-type="polyline" />
  38.975 +    <path
  38.976 +       style="fill:none;stroke:#000000;stroke-width:1.97332788;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
  38.977 +       d="m 235.43905,673.90193 -67.198,-0.28784"
  38.978 +       id="path5346-3-6-2-4-6-0-8"
  38.979 +       inkscape:connector-type="polyline" />
  38.980 +    <text
  38.981 +       xml:space="preserve"
  38.982 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.983 +       x="728.92596"
  38.984 +       y="749.89447"
  38.985 +       id="text5058-3-1"><tspan
  38.986 +         sodipodi:role="line"
  38.987 +         id="tspan5060-3-7"
  38.988 +         x="728.92596"
  38.989 +         y="749.89447">ATCCL</tspan></text>
  38.990 +    <text
  38.991 +       xml:space="preserve"
  38.992 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
  38.993 +       x="172.56145"
  38.994 +       y="753.16351"
  38.995 +       id="text5058-3-1-0"><tspan
  38.996 +         sodipodi:role="line"
  38.997 +         id="tspan5060-3-7-9"
  38.998 +         x="172.56145"
  38.999 +         y="753.16351">FDPS</tspan></text>
 38.1000 +    <rect
 38.1001 +       style="fill:url(#linearGradient5626);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36081773px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 38.1002 +       id="rect2816-4-7-6-1"
 38.1003 +       width="127.30537"
 38.1004 +       height="115.00481"
 38.1005 +       x="30.480604"
 38.1006 +       y="281.76434" />
 38.1007 +    <rect
 38.1008 +       style="fill:url(#linearGradient5578);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36081773px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 38.1009 +       id="rect2816-4-7-6"
 38.1010 +       width="127.30537"
 38.1011 +       height="115.00481"
 38.1012 +       x="39.015881"
 38.1013 +       y="297.96146" />
 38.1014 +    <text
 38.1015 +       xml:space="preserve"
 38.1016 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 38.1017 +       x="156.9052"
 38.1018 +       y="376.66714"
 38.1019 +       id="text5058-3-9-1"><tspan
 38.1020 +         sodipodi:role="line"
 38.1021 +         id="tspan5060-3-0-4"
 38.1022 +         x="156.9052"
 38.1023 +         y="376.66714">FDPS</tspan></text>
 38.1024 +    <text
 38.1025 +       xml:space="preserve"
 38.1026 +       style="font-size:21.08325386px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 38.1027 +       x="64.725693"
 38.1028 +       y="292.50406"
 38.1029 +       id="text5605"
 38.1030 +       transform="scale(0.7263648,1.3767187)"><tspan
 38.1031 +         sodipodi:role="line"
 38.1032 +         id="tspan5607"
 38.1033 +         x="64.725693"
 38.1034 +         y="292.50406">COMPONENTS</tspan></text>
 38.1035 +    <path
 38.1036 +       style="fill:none;stroke:#000000;stroke-width:1.95169508;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 38.1037 +       d="m 81.784666,590.89783 0.501969,-65.74134"
 38.1038 +       id="path5346-3-6-2-4-6-0-9"
 38.1039 +       inkscape:connector-type="polyline" />
 38.1040 +    <path
 38.1041 +       style="fill:none;stroke:#000000;stroke-width:1.94339371;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 38.1042 +       d="m 120.18247,522.82852 0.26808,65.20576"
 38.1043 +       id="path5346-3-6-2-4-6-0-9-9"
 38.1044 +       inkscape:connector-type="polyline" />
 38.1045 +    <path
 38.1046 +       style="fill:none;stroke:#000000;stroke-width:1.95169508;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 38.1047 +       d="m 82.09377,481.59307 0.50197,-65.74134"
 38.1048 +       id="path5346-3-6-2-4-6-0-9-4"
 38.1049 +       inkscape:connector-type="polyline" />
 38.1050 +    <path
 38.1051 +       style="fill:none;stroke:#000000;stroke-width:1.94339371;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 38.1052 +       d="m 120.49158,413.52376 0.26808,65.20576"
 38.1053 +       id="path5346-3-6-2-4-6-0-9-9-1"
 38.1054 +       inkscape:connector-type="polyline" />
 38.1055 +    <path
 38.1056 +       style="fill:none;stroke:#ffffff;stroke-width:1.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.8,1.9;stroke-dashoffset:0"
 38.1057 +       d="m 82.053103,481.73192 -0.388638,41.05671"
 38.1058 +       id="path5819"
 38.1059 +       inkscape:connector-type="polyline" />
 38.1060 +    <path
 38.1061 +       style="fill:none;stroke:#ffffff;stroke-width:1.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3.8,1.9;stroke-dashoffset:0"
 38.1062 +       d="m 120.58104,481.7704 -0.38864,41.05671"
 38.1063 +       id="path5819-1"
 38.1064 +       inkscape:connector-type="polyline" />
 38.1065 +    <text
 38.1066 +       xml:space="preserve"
 38.1067 +       style="font-size:11.7312212px;font-style:normal;font-weight:normal;opacity:0.80973451;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 38.1068 +       x="244.57755"
 38.1069 +       y="250.55681"
 38.1070 +       id="text5859"
 38.1071 +       transform="scale(0.98056966,1.0198154)"><tspan
 38.1072 +         sodipodi:role="line"
 38.1073 +         x="244.57755"
 38.1074 +         y="250.55681"
 38.1075 +         id="tspan5890">Flight Plan Data Processing System</tspan><tspan
 38.1076 +         sodipodi:role="line"
 38.1077 +         x="244.57755"
 38.1078 +         y="265.22086"
 38.1079 +         id="tspan4280">Distributed MAP </tspan><tspan
 38.1080 +         sodipodi:role="line"
 38.1081 +         x="244.57755"
 38.1082 +         y="279.88486"
 38.1083 +         id="tspan4284">(Persistent Data Communication Layer)</tspan><tspan
 38.1084 +         sodipodi:role="line"
 38.1085 +         x="244.57755"
 38.1086 +         y="294.54889"
 38.1087 +         id="tspan5892">Departure Flow Management</tspan><tspan
 38.1088 +         sodipodi:role="line"
 38.1089 +         x="244.57755"
 38.1090 +         y="309.21289"
 38.1091 +         id="tspan4225">Assistent Working Position</tspan><tspan
 38.1092 +         sodipodi:role="line"
 38.1093 +         x="244.57755"
 38.1094 +         y="323.87695"
 38.1095 +         id="tspan5888" /></text>
 38.1096 +    <rect
 38.1097 +       style="fill:url(#linearGradient6195);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.22265531px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 38.1098 +       id="rect2816-4-7-1"
 38.1099 +       width="127.44353"
 38.1100 +       height="43.745693"
 38.1101 +       x="245.76399"
 38.1102 +       y="369.7514" />
 38.1103 +    <text
 38.1104 +       xml:space="preserve"
 38.1105 +       style="font-size:26.48236275px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 38.1106 +       x="401.35559"
 38.1107 +       y="367.02823"
 38.1108 +       id="text5058-3-9-9"
 38.1109 +       transform="scale(0.9104488,1.0983594)"><tspan
 38.1110 +         sodipodi:role="line"
 38.1111 +         id="tspan5060-3-0-8"
 38.1112 +         x="401.35559"
 38.1113 +         y="367.02823">LOGGING</tspan></text>
 38.1114 +    <path
 38.1115 +       style="fill:none;stroke:#000000;stroke-width:1.89999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-7)"
 38.1116 +       d="m 306.61321,481.31551 0.50197,-65.74134"
 38.1117 +       id="path5346-3-6-2-4-6-0-9-2-0"
 38.1118 +       inkscape:connector-type="polyline" />
 38.1119 +    <rect
 38.1120 +       style="fill:url(#linearGradient7362);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.27649319px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 38.1121 +       id="rect2816-4-7-6-9"
 38.1122 +       width="127.38969"
 38.1123 +       height="67.487213"
 38.1124 +       x="479.13"
 38.1125 +       y="369.20248" />
 38.1126 +    <text
 38.1127 +       xml:space="preserve"
 38.1128 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 38.1129 +       x="597.06152"
 38.1130 +       y="400.34842"
 38.1131 +       id="text5058-3-9-1-3"><tspan
 38.1132 +         sodipodi:role="line"
 38.1133 +         id="tspan5060-3-0-4-4"
 38.1134 +         x="597.06152"
 38.1135 +         y="400.34842">DFLOW</tspan></text>
 38.1136 +    <text
 38.1137 +       xml:space="preserve"
 38.1138 +       style="font-size:26.67518806px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 38.1139 +       x="535.56036"
 38.1140 +       y="391.84879"
 38.1141 +       id="text5605-4"
 38.1142 +       transform="scale(0.91901932,1.0881164)"><tspan
 38.1143 +         sodipodi:role="line"
 38.1144 +         id="tspan5607-6"
 38.1145 +         x="535.56036"
 38.1146 +         y="391.84879">DISPLAY</tspan></text>
 38.1147 +    <text
 38.1148 +       xml:space="preserve"
 38.1149 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 38.1150 +       x="728.97961"
 38.1151 +       y="441.44254"
 38.1152 +       id="text5058-3-1-4"><tspan
 38.1153 +         sodipodi:role="line"
 38.1154 +         id="tspan5060-3-7-0"
 38.1155 +         x="728.97961"
 38.1156 +         y="441.44254">AWP</tspan></text>
 38.1157 +    <path
 38.1158 +       style="fill:none;stroke:#000000;stroke-width:1.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 38.1159 +       d="m 520.32933,481.25252 0.50541,-42.98114"
 38.1160 +       id="path5346-3-6-2-4-6-0-9-4-8"
 38.1161 +       inkscape:connector-type="polyline" />
 38.1162 +    <path
 38.1163 +       style="fill:none;stroke:#000000;stroke-width:1.9;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 38.1164 +       d="m 558.99049,436.74937 0.26992,42.63099"
 38.1165 +       id="path5346-3-6-2-4-6-0-9-9-1-2"
 38.1166 +       inkscape:connector-type="polyline" />
 38.1167 +    <path
 38.1168 +       style="fill:none;stroke:#ffffff;stroke-width:1.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:7.5999999,7.5999999;stroke-dashoffset:0"
 38.1169 +       d="m 519.91698,493.88395 -436.410688,-0.086"
 38.1170 +       id="path5819-4"
 38.1171 +       inkscape:connector-type="polyline" />
 38.1172 +    <path
 38.1173 +       style="fill:none;stroke:#ffffff;stroke-width:1.90022576;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:7.60090281, 7.60090281;stroke-dashoffset:0"
 38.1174 +       d="m 557.68204,507.48842 -437.66315,-0.0858"
 38.1175 +       id="path5819-4-5"
 38.1176 +       inkscape:connector-type="polyline" />
 38.1177 +    <path
 38.1178 +       style="fill:none;stroke:#ffffff;stroke-width:1.53320372;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6.13281458, 6.13281458;stroke-dashoffset:0"
 38.1179 +       d="m 559.27549,481.76541 -0.0363,22.52536"
 38.1180 +       id="path5819-4-5-5"
 38.1181 +       inkscape:connector-type="polyline" />
 38.1182 +    <path
 38.1183 +       style="fill:none;stroke:#ffffff;stroke-width:1.50152111;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6.00608428, 6.00608428;stroke-dashoffset:0"
 38.1184 +       d="m 520.28881,481.72084 -0.068,11.5357"
 38.1185 +       id="path5819-4-5-5-7"
 38.1186 +       inkscape:connector-type="polyline" />
 38.1187 +    <text
 38.1188 +       xml:space="preserve"
 38.1189 +       style="font-size:11.96368026999999900px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;opacity:0.80973451"
 38.1190 +       x="189.40768"
 38.1191 +       y="255.49782"
 38.1192 +       id="text5859-1"><tspan
 38.1193 +         sodipodi:role="line"
 38.1194 +         x="189.40768"
 38.1195 +         y="255.49782"
 38.1196 +         id="tspan5888-6">FDPS</tspan><tspan
 38.1197 +         sodipodi:role="line"
 38.1198 +         x="189.40768"
 38.1199 +         y="270.45242"
 38.1200 +         id="tspan4272">DMAP</tspan><tspan
 38.1201 +         sodipodi:role="line"
 38.1202 +         x="189.40768"
 38.1203 +         y="285.40704"
 38.1204 +         id="tspan4282" /><tspan
 38.1205 +         sodipodi:role="line"
 38.1206 +         x="189.40768"
 38.1207 +         y="300.36163"
 38.1208 +         id="tspan4274">DFLOW</tspan><tspan
 38.1209 +         sodipodi:role="line"
 38.1210 +         x="189.40768"
 38.1211 +         y="315.31622"
 38.1212 +         id="tspan4276">AWP</tspan></text>
 38.1213 +  </g>
 38.1214 +</svg>
    39.1 Binary file kolloquium2/images/display_symbol.png has changed
    40.1 Binary file kolloquium2/images/end.png has changed
    41.1 Binary file kolloquium2/images/fh-offenburg_cmyk-300dpi.jpg has changed
    42.1 Binary file kolloquium2/images/gcaa.gif has changed
    43.1 Binary file kolloquium2/images/gcaa_symbol.png has changed
    44.1 Binary file kolloquium2/images/monitor_symbol.png has changed
    45.1 Binary file kolloquium2/images/prisma_hardware.png has changed
    46.1 Binary file kolloquium2/images/prisma_symbol.png has changed
    47.1 Binary file kolloquium2/images/rec_symbol.png has changed
    48.1 Binary file kolloquium2/images/support_symbol.png has changed
    49.1 Binary file kolloquium2/images/sur_com_symbol.png has changed
    50.1 Binary file kolloquium2/images/sur_symbol.png has changed
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/kolloquium2/images/vm.svg	Fri Jun 04 13:48:28 2010 +0200
    51.3 @@ -0,0 +1,3796 @@
    51.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    51.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
    51.6 +
    51.7 +<svg
    51.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
    51.9 +   xmlns:cc="http://creativecommons.org/ns#"
   51.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   51.11 +   xmlns:svg="http://www.w3.org/2000/svg"
   51.12 +   xmlns="http://www.w3.org/2000/svg"
   51.13 +   xmlns:xlink="http://www.w3.org/1999/xlink"
   51.14 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   51.15 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   51.16 +   width="744.09448819"
   51.17 +   height="1052.3622047"
   51.18 +   id="svg2"
   51.19 +   version="1.1"
   51.20 +   inkscape:version="0.47 r22583"
   51.21 +   sodipodi:docname="vm.svg"
   51.22 +   inkscape:export-filename="C:\Users\kiome\Workspace\comsoft\comsoft\thesis\kolloquium2\images\vm.png"
   51.23 +   inkscape:export-xdpi="90"
   51.24 +   inkscape:export-ydpi="90">
   51.25 +  <defs
   51.26 +     id="defs4">
   51.27 +    <linearGradient
   51.28 +       inkscape:collect="always"
   51.29 +       id="linearGradient4793">
   51.30 +      <stop
   51.31 +         style="stop-color:#ff8300;stop-opacity:1"
   51.32 +         offset="0"
   51.33 +         id="stop4795" />
   51.34 +      <stop
   51.35 +         style="stop-color:#ffffff;stop-opacity:1"
   51.36 +         offset="1"
   51.37 +         id="stop4797" />
   51.38 +    </linearGradient>
   51.39 +    <linearGradient
   51.40 +       inkscape:collect="always"
   51.41 +       id="linearGradient4787">
   51.42 +      <stop
   51.43 +         style="stop-color:#ff8300;stop-opacity:1"
   51.44 +         offset="0"
   51.45 +         id="stop4789" />
   51.46 +      <stop
   51.47 +         style="stop-color:#ffffff;stop-opacity:1"
   51.48 +         offset="1"
   51.49 +         id="stop4791" />
   51.50 +    </linearGradient>
   51.51 +    <linearGradient
   51.52 +       id="linearGradient5974"
   51.53 +       inkscape:collect="always">
   51.54 +      <stop
   51.55 +         id="stop5976"
   51.56 +         offset="0"
   51.57 +         style="stop-color:#ff2b00;stop-opacity:1" />
   51.58 +      <stop
   51.59 +         id="stop5978"
   51.60 +         offset="1"
   51.61 +         style="stop-color:#ffffff;stop-opacity:1" />
   51.62 +    </linearGradient>
   51.63 +    <marker
   51.64 +       inkscape:stockid="TriangleOutL"
   51.65 +       orient="auto"
   51.66 +       refY="0.0"
   51.67 +       refX="0.0"
   51.68 +       id="TriangleOutL"
   51.69 +       style="overflow:visible">
   51.70 +      <path
   51.71 +         id="path5494"
   51.72 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
   51.73 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
   51.74 +         transform="scale(0.8)" />
   51.75 +    </marker>
   51.76 +    <marker
   51.77 +       inkscape:stockid="Arrow2Lend"
   51.78 +       orient="auto"
   51.79 +       refY="0.0"
   51.80 +       refX="0.0"
   51.81 +       id="Arrow2Lend"
   51.82 +       style="overflow:visible;">
   51.83 +      <path
   51.84 +         id="path5372"
   51.85 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
   51.86 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
   51.87 +         transform="scale(1.1) rotate(180) translate(1,0)" />
   51.88 +    </marker>
   51.89 +    <marker
   51.90 +       inkscape:stockid="EmptyTriangleOutL"
   51.91 +       orient="auto"
   51.92 +       refY="0.0"
   51.93 +       refX="0.0"
   51.94 +       id="EmptyTriangleOutL"
   51.95 +       style="overflow:visible">
   51.96 +      <path
   51.97 +         id="path5512"
   51.98 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
   51.99 +         style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt;marker-start:none"
  51.100 +         transform="scale(0.8) translate(-6,0)" />
  51.101 +    </marker>
  51.102 +    <linearGradient
  51.103 +       id="linearGradient5140">
  51.104 +      <stop
  51.105 +         style="stop-color:#d2d1d4;stop-opacity:0.8295964"
  51.106 +         offset="0"
  51.107 +         id="stop5142" />
  51.108 +      <stop
  51.109 +         style="stop-color:#d2d1d4;stop-opacity:0;"
  51.110 +         offset="1"
  51.111 +         id="stop5144" />
  51.112 +    </linearGradient>
  51.113 +    <inkscape:perspective
  51.114 +       sodipodi:type="inkscape:persp3d"
  51.115 +       inkscape:vp_x="605.30337 : 900.99105 : 1"
  51.116 +       inkscape:vp_y="-286.81883 : -301.57816 : 0"
  51.117 +       inkscape:vp_z="380.90072 : 1114.4113 : 1"
  51.118 +       inkscape:persp3d-origin="543.40826 : 1060.5961 : 1"
  51.119 +       id="perspective10" />
  51.120 +    <inkscape:perspective
  51.121 +       id="perspective5094"
  51.122 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.123 +       inkscape:vp_z="1 : 0.5 : 1"
  51.124 +       inkscape:vp_y="0 : 1000 : 0"
  51.125 +       inkscape:vp_x="0 : 0.5 : 1"
  51.126 +       sodipodi:type="inkscape:persp3d" />
  51.127 +    <inkscape:perspective
  51.128 +       id="perspective5226"
  51.129 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.130 +       inkscape:vp_z="1 : 0.5 : 1"
  51.131 +       inkscape:vp_y="0 : 1000 : 0"
  51.132 +       inkscape:vp_x="0 : 0.5 : 1"
  51.133 +       sodipodi:type="inkscape:persp3d" />
  51.134 +    <inkscape:perspective
  51.135 +       id="perspective5317"
  51.136 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.137 +       inkscape:vp_z="1 : 0.5 : 1"
  51.138 +       inkscape:vp_y="0 : 1000 : 0"
  51.139 +       inkscape:vp_x="0 : 0.5 : 1"
  51.140 +       sodipodi:type="inkscape:persp3d" />
  51.141 +    <inkscape:perspective
  51.142 +       id="perspective6000"
  51.143 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.144 +       inkscape:vp_z="1 : 0.5 : 1"
  51.145 +       inkscape:vp_y="0 : 1000 : 0"
  51.146 +       inkscape:vp_x="0 : 0.5 : 1"
  51.147 +       sodipodi:type="inkscape:persp3d" />
  51.148 +    <marker
  51.149 +       inkscape:stockid="Arrow2Lend"
  51.150 +       orient="auto"
  51.151 +       refY="0"
  51.152 +       refX="0"
  51.153 +       id="Arrow2Lend-2"
  51.154 +       style="overflow:visible">
  51.155 +      <path
  51.156 +         id="path5372-5"
  51.157 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.158 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.159 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.160 +    </marker>
  51.161 +    <inkscape:perspective
  51.162 +       id="perspective6028"
  51.163 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.164 +       inkscape:vp_z="1 : 0.5 : 1"
  51.165 +       inkscape:vp_y="0 : 1000 : 0"
  51.166 +       inkscape:vp_x="0 : 0.5 : 1"
  51.167 +       sodipodi:type="inkscape:persp3d" />
  51.168 +    <inkscape:perspective
  51.169 +       id="perspective6050"
  51.170 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.171 +       inkscape:vp_z="1 : 0.5 : 1"
  51.172 +       inkscape:vp_y="0 : 1000 : 0"
  51.173 +       inkscape:vp_x="0 : 0.5 : 1"
  51.174 +       sodipodi:type="inkscape:persp3d" />
  51.175 +    <inkscape:perspective
  51.176 +       id="perspective6080"
  51.177 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.178 +       inkscape:vp_z="1 : 0.5 : 1"
  51.179 +       inkscape:vp_y="0 : 1000 : 0"
  51.180 +       inkscape:vp_x="0 : 0.5 : 1"
  51.181 +       sodipodi:type="inkscape:persp3d" />
  51.182 +    <inkscape:perspective
  51.183 +       id="perspective6108"
  51.184 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.185 +       inkscape:vp_z="1 : 0.5 : 1"
  51.186 +       inkscape:vp_y="0 : 1000 : 0"
  51.187 +       inkscape:vp_x="0 : 0.5 : 1"
  51.188 +       sodipodi:type="inkscape:persp3d" />
  51.189 +    <marker
  51.190 +       inkscape:stockid="Arrow2Lend"
  51.191 +       orient="auto"
  51.192 +       refY="0"
  51.193 +       refX="0"
  51.194 +       id="Arrow2Lend-9"
  51.195 +       style="overflow:visible">
  51.196 +      <path
  51.197 +         id="path5372-6"
  51.198 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.199 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.200 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.201 +    </marker>
  51.202 +    <inkscape:perspective
  51.203 +       id="perspective6136"
  51.204 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.205 +       inkscape:vp_z="1 : 0.5 : 1"
  51.206 +       inkscape:vp_y="0 : 1000 : 0"
  51.207 +       inkscape:vp_x="0 : 0.5 : 1"
  51.208 +       sodipodi:type="inkscape:persp3d" />
  51.209 +    <inkscape:perspective
  51.210 +       id="perspective6158"
  51.211 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.212 +       inkscape:vp_z="1 : 0.5 : 1"
  51.213 +       inkscape:vp_y="0 : 1000 : 0"
  51.214 +       inkscape:vp_x="0 : 0.5 : 1"
  51.215 +       sodipodi:type="inkscape:persp3d" />
  51.216 +    <marker
  51.217 +       inkscape:stockid="Arrow2Lend"
  51.218 +       orient="auto"
  51.219 +       refY="0"
  51.220 +       refX="0"
  51.221 +       id="Arrow2Lend-8"
  51.222 +       style="overflow:visible">
  51.223 +      <path
  51.224 +         id="path5372-4"
  51.225 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.226 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.227 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.228 +    </marker>
  51.229 +    <inkscape:perspective
  51.230 +       id="perspective6226"
  51.231 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.232 +       inkscape:vp_z="1 : 0.5 : 1"
  51.233 +       inkscape:vp_y="0 : 1000 : 0"
  51.234 +       inkscape:vp_x="0 : 0.5 : 1"
  51.235 +       sodipodi:type="inkscape:persp3d" />
  51.236 +    <marker
  51.237 +       inkscape:stockid="Arrow2Lend"
  51.238 +       orient="auto"
  51.239 +       refY="0"
  51.240 +       refX="0"
  51.241 +       id="Arrow2Lend-6"
  51.242 +       style="overflow:visible">
  51.243 +      <path
  51.244 +         id="path5372-7"
  51.245 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.246 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.247 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.248 +    </marker>
  51.249 +    <inkscape:perspective
  51.250 +       id="perspective6276"
  51.251 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.252 +       inkscape:vp_z="1 : 0.5 : 1"
  51.253 +       inkscape:vp_y="0 : 1000 : 0"
  51.254 +       inkscape:vp_x="0 : 0.5 : 1"
  51.255 +       sodipodi:type="inkscape:persp3d" />
  51.256 +    <linearGradient
  51.257 +       inkscape:collect="always"
  51.258 +       xlink:href="#linearGradient5038-7"
  51.259 +       id="linearGradient6260-3"
  51.260 +       x1="643.45416"
  51.261 +       y1="355.03943"
  51.262 +       x2="643.45416"
  51.263 +       y2="331.13467"
  51.264 +       gradientUnits="userSpaceOnUse"
  51.265 +       gradientTransform="translate(-1.696649,-15.393298)" />
  51.266 +    <linearGradient
  51.267 +       inkscape:collect="always"
  51.268 +       id="linearGradient5038-7">
  51.269 +      <stop
  51.270 +         style="stop-color:#000000;stop-opacity:1;"
  51.271 +         offset="0"
  51.272 +         id="stop5040-3" />
  51.273 +      <stop
  51.274 +         style="stop-color:#000000;stop-opacity:0;"
  51.275 +         offset="1"
  51.276 +         id="stop5042-4" />
  51.277 +    </linearGradient>
  51.278 +    <inkscape:perspective
  51.279 +       id="perspective6314"
  51.280 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.281 +       inkscape:vp_z="1 : 0.5 : 1"
  51.282 +       inkscape:vp_y="0 : 1000 : 0"
  51.283 +       inkscape:vp_x="0 : 0.5 : 1"
  51.284 +       sodipodi:type="inkscape:persp3d" />
  51.285 +    <inkscape:perspective
  51.286 +       id="perspective6358"
  51.287 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.288 +       inkscape:vp_z="1 : 0.5 : 1"
  51.289 +       inkscape:vp_y="0 : 1000 : 0"
  51.290 +       inkscape:vp_x="0 : 0.5 : 1"
  51.291 +       sodipodi:type="inkscape:persp3d" />
  51.292 +    <linearGradient
  51.293 +       y2="331.13467"
  51.294 +       x2="643.45416"
  51.295 +       y1="355.03943"
  51.296 +       x1="643.45416"
  51.297 +       gradientTransform="matrix(0.82428033,0,0,0.78628866,-72.850897,-90.395643)"
  51.298 +       gradientUnits="userSpaceOnUse"
  51.299 +       id="linearGradient6285-7"
  51.300 +       xlink:href="#linearGradient5038-7-9"
  51.301 +       inkscape:collect="always" />
  51.302 +    <linearGradient
  51.303 +       inkscape:collect="always"
  51.304 +       id="linearGradient5038-7-9">
  51.305 +      <stop
  51.306 +         style="stop-color:#000000;stop-opacity:1;"
  51.307 +         offset="0"
  51.308 +         id="stop5040-3-5" />
  51.309 +      <stop
  51.310 +         style="stop-color:#000000;stop-opacity:0;"
  51.311 +         offset="1"
  51.312 +         id="stop5042-4-6" />
  51.313 +    </linearGradient>
  51.314 +    <inkscape:perspective
  51.315 +       id="perspective6402"
  51.316 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.317 +       inkscape:vp_z="1 : 0.5 : 1"
  51.318 +       inkscape:vp_y="0 : 1000 : 0"
  51.319 +       inkscape:vp_x="0 : 0.5 : 1"
  51.320 +       sodipodi:type="inkscape:persp3d" />
  51.321 +    <marker
  51.322 +       inkscape:stockid="Arrow2Lend"
  51.323 +       orient="auto"
  51.324 +       refY="0"
  51.325 +       refX="0"
  51.326 +       id="Arrow2Lend-5"
  51.327 +       style="overflow:visible">
  51.328 +      <path
  51.329 +         id="path5372-2"
  51.330 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.331 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.332 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.333 +    </marker>
  51.334 +    <inkscape:perspective
  51.335 +       id="perspective6656"
  51.336 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.337 +       inkscape:vp_z="1 : 0.5 : 1"
  51.338 +       inkscape:vp_y="0 : 1000 : 0"
  51.339 +       inkscape:vp_x="0 : 0.5 : 1"
  51.340 +       sodipodi:type="inkscape:persp3d" />
  51.341 +    <linearGradient
  51.342 +       inkscape:collect="always"
  51.343 +       xlink:href="#linearGradient5038-2"
  51.344 +       id="linearGradient5048-8"
  51.345 +       x1="480"
  51.346 +       y1="304.29077"
  51.347 +       x2="480"
  51.348 +       y2="69.005043"
  51.349 +       gradientUnits="userSpaceOnUse"
  51.350 +       gradientTransform="matrix(0.93291193,0,0,1.0001454,14.084109,-0.02713143)" />
  51.351 +    <linearGradient
  51.352 +       inkscape:collect="always"
  51.353 +       id="linearGradient5038-2">
  51.354 +      <stop
  51.355 +         style="stop-color:#000000;stop-opacity:1;"
  51.356 +         offset="0"
  51.357 +         id="stop5040-0" />
  51.358 +      <stop
  51.359 +         style="stop-color:#000000;stop-opacity:0;"
  51.360 +         offset="1"
  51.361 +         id="stop5042-6" />
  51.362 +    </linearGradient>
  51.363 +    <inkscape:perspective
  51.364 +       id="perspective6717"
  51.365 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.366 +       inkscape:vp_z="1 : 0.5 : 1"
  51.367 +       inkscape:vp_y="0 : 1000 : 0"
  51.368 +       inkscape:vp_x="0 : 0.5 : 1"
  51.369 +       sodipodi:type="inkscape:persp3d" />
  51.370 +    <inkscape:perspective
  51.371 +       id="perspective6717-8"
  51.372 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.373 +       inkscape:vp_z="1 : 0.5 : 1"
  51.374 +       inkscape:vp_y="0 : 1000 : 0"
  51.375 +       inkscape:vp_x="0 : 0.5 : 1"
  51.376 +       sodipodi:type="inkscape:persp3d" />
  51.377 +    <filter
  51.378 +       inkscape:collect="always"
  51.379 +       id="filter6798">
  51.380 +      <feGaussianBlur
  51.381 +         inkscape:collect="always"
  51.382 +         stdDeviation="0.4493522"
  51.383 +         id="feGaussianBlur6800" />
  51.384 +    </filter>
  51.385 +    <inkscape:perspective
  51.386 +       id="perspective6810"
  51.387 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.388 +       inkscape:vp_z="1 : 0.5 : 1"
  51.389 +       inkscape:vp_y="0 : 1000 : 0"
  51.390 +       inkscape:vp_x="0 : 0.5 : 1"
  51.391 +       sodipodi:type="inkscape:persp3d" />
  51.392 +    <filter
  51.393 +       color-interpolation-filters="sRGB"
  51.394 +       inkscape:collect="always"
  51.395 +       id="filter6798-1">
  51.396 +      <feGaussianBlur
  51.397 +         inkscape:collect="always"
  51.398 +         stdDeviation="0.4493522"
  51.399 +         id="feGaussianBlur6800-8" />
  51.400 +    </filter>
  51.401 +    <inkscape:perspective
  51.402 +       id="perspective6838"
  51.403 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.404 +       inkscape:vp_z="1 : 0.5 : 1"
  51.405 +       inkscape:vp_y="0 : 1000 : 0"
  51.406 +       inkscape:vp_x="0 : 0.5 : 1"
  51.407 +       sodipodi:type="inkscape:persp3d" />
  51.408 +    <inkscape:perspective
  51.409 +       id="perspective7684"
  51.410 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.411 +       inkscape:vp_z="1 : 0.5 : 1"
  51.412 +       inkscape:vp_y="0 : 1000 : 0"
  51.413 +       inkscape:vp_x="0 : 0.5 : 1"
  51.414 +       sodipodi:type="inkscape:persp3d" />
  51.415 +    <marker
  51.416 +       inkscape:stockid="Arrow2Lend"
  51.417 +       orient="auto"
  51.418 +       refY="0"
  51.419 +       refX="0"
  51.420 +       id="Arrow2Lend-1"
  51.421 +       style="overflow:visible">
  51.422 +      <path
  51.423 +         id="path5372-26"
  51.424 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.425 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.426 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.427 +    </marker>
  51.428 +    <inkscape:perspective
  51.429 +       id="perspective7714"
  51.430 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.431 +       inkscape:vp_z="1 : 0.5 : 1"
  51.432 +       inkscape:vp_y="0 : 1000 : 0"
  51.433 +       inkscape:vp_x="0 : 0.5 : 1"
  51.434 +       sodipodi:type="inkscape:persp3d" />
  51.435 +    <linearGradient
  51.436 +       inkscape:collect="always"
  51.437 +       xlink:href="#linearGradient5038-5"
  51.438 +       id="linearGradient6260-8"
  51.439 +       x1="643.45416"
  51.440 +       y1="355.03943"
  51.441 +       x2="643.45416"
  51.442 +       y2="331.13467"
  51.443 +       gradientUnits="userSpaceOnUse"
  51.444 +       gradientTransform="translate(-1.696649,-15.393298)" />
  51.445 +    <linearGradient
  51.446 +       inkscape:collect="always"
  51.447 +       id="linearGradient5038-5">
  51.448 +      <stop
  51.449 +         style="stop-color:#000000;stop-opacity:1;"
  51.450 +         offset="0"
  51.451 +         id="stop5040-6" />
  51.452 +      <stop
  51.453 +         style="stop-color:#000000;stop-opacity:0;"
  51.454 +         offset="1"
  51.455 +         id="stop5042-2" />
  51.456 +    </linearGradient>
  51.457 +    <inkscape:perspective
  51.458 +       id="perspective7752"
  51.459 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.460 +       inkscape:vp_z="1 : 0.5 : 1"
  51.461 +       inkscape:vp_y="0 : 1000 : 0"
  51.462 +       inkscape:vp_x="0 : 0.5 : 1"
  51.463 +       sodipodi:type="inkscape:persp3d" />
  51.464 +    <inkscape:perspective
  51.465 +       id="perspective7784"
  51.466 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.467 +       inkscape:vp_z="1 : 0.5 : 1"
  51.468 +       inkscape:vp_y="0 : 1000 : 0"
  51.469 +       inkscape:vp_x="0 : 0.5 : 1"
  51.470 +       sodipodi:type="inkscape:persp3d" />
  51.471 +    <marker
  51.472 +       inkscape:stockid="Arrow2Lend"
  51.473 +       orient="auto"
  51.474 +       refY="0"
  51.475 +       refX="0"
  51.476 +       id="Arrow2Lend-69"
  51.477 +       style="overflow:visible">
  51.478 +      <path
  51.479 +         id="path5372-44"
  51.480 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.481 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.482 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.483 +    </marker>
  51.484 +    <inkscape:perspective
  51.485 +       id="perspective7812"
  51.486 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.487 +       inkscape:vp_z="1 : 0.5 : 1"
  51.488 +       inkscape:vp_y="0 : 1000 : 0"
  51.489 +       inkscape:vp_x="0 : 0.5 : 1"
  51.490 +       sodipodi:type="inkscape:persp3d" />
  51.491 +    <linearGradient
  51.492 +       y2="68.79892"
  51.493 +       x2="480.00003"
  51.494 +       y1="304.49695"
  51.495 +       x1="480.00003"
  51.496 +       gradientTransform="matrix(0.9763127,0,0,0.48946368,-18.089172,391.02959)"
  51.497 +       gradientUnits="userSpaceOnUse"
  51.498 +       id="linearGradient6672-0"
  51.499 +       xlink:href="#linearGradient7274-7"
  51.500 +       inkscape:collect="always" />
  51.501 +    <linearGradient
  51.502 +       id="linearGradient7274-7"
  51.503 +       inkscape:collect="always">
  51.504 +      <stop
  51.505 +         id="stop7276-4"
  51.506 +         offset="0"
  51.507 +         style="stop-color:#000000;stop-opacity:1;" />
  51.508 +      <stop
  51.509 +         id="stop7278-3"
  51.510 +         offset="1"
  51.511 +         style="stop-color:#0089f9;stop-opacity:1" />
  51.512 +    </linearGradient>
  51.513 +    <inkscape:perspective
  51.514 +       id="perspective7856"
  51.515 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.516 +       inkscape:vp_z="1 : 0.5 : 1"
  51.517 +       inkscape:vp_y="0 : 1000 : 0"
  51.518 +       inkscape:vp_x="0 : 0.5 : 1"
  51.519 +       sodipodi:type="inkscape:persp3d" />
  51.520 +    <marker
  51.521 +       inkscape:stockid="Arrow2Lend"
  51.522 +       orient="auto"
  51.523 +       refY="0"
  51.524 +       refX="0"
  51.525 +       id="Arrow2Lend-22"
  51.526 +       style="overflow:visible">
  51.527 +      <path
  51.528 +         id="path5372-69"
  51.529 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.530 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.531 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.532 +    </marker>
  51.533 +    <inkscape:perspective
  51.534 +       id="perspective7884"
  51.535 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.536 +       inkscape:vp_z="1 : 0.5 : 1"
  51.537 +       inkscape:vp_y="0 : 1000 : 0"
  51.538 +       inkscape:vp_x="0 : 0.5 : 1"
  51.539 +       sodipodi:type="inkscape:persp3d" />
  51.540 +    <marker
  51.541 +       inkscape:stockid="Arrow2Lend"
  51.542 +       orient="auto"
  51.543 +       refY="0"
  51.544 +       refX="0"
  51.545 +       id="Arrow2Lend-3"
  51.546 +       style="overflow:visible">
  51.547 +      <path
  51.548 +         id="path5372-55"
  51.549 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.550 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.551 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.552 +    </marker>
  51.553 +    <inkscape:perspective
  51.554 +       id="perspective7916"
  51.555 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.556 +       inkscape:vp_z="1 : 0.5 : 1"
  51.557 +       inkscape:vp_y="0 : 1000 : 0"
  51.558 +       inkscape:vp_x="0 : 0.5 : 1"
  51.559 +       sodipodi:type="inkscape:persp3d" />
  51.560 +    <inkscape:perspective
  51.561 +       id="perspective7941"
  51.562 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.563 +       inkscape:vp_z="1 : 0.5 : 1"
  51.564 +       inkscape:vp_y="0 : 1000 : 0"
  51.565 +       inkscape:vp_x="0 : 0.5 : 1"
  51.566 +       sodipodi:type="inkscape:persp3d" />
  51.567 +    <marker
  51.568 +       inkscape:stockid="EmptyTriangleOutL"
  51.569 +       orient="auto"
  51.570 +       refY="0"
  51.571 +       refX="0"
  51.572 +       id="EmptyTriangleOutL-0"
  51.573 +       style="overflow:visible">
  51.574 +      <path
  51.575 +         id="path5512-6"
  51.576 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.577 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.578 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.579 +    </marker>
  51.580 +    <inkscape:perspective
  51.581 +       id="perspective7984"
  51.582 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.583 +       inkscape:vp_z="1 : 0.5 : 1"
  51.584 +       inkscape:vp_y="0 : 1000 : 0"
  51.585 +       inkscape:vp_x="0 : 0.5 : 1"
  51.586 +       sodipodi:type="inkscape:persp3d" />
  51.587 +    <marker
  51.588 +       inkscape:stockid="EmptyTriangleOutL"
  51.589 +       orient="auto"
  51.590 +       refY="0"
  51.591 +       refX="0"
  51.592 +       id="EmptyTriangleOutL-4"
  51.593 +       style="overflow:visible">
  51.594 +      <path
  51.595 +         id="path5512-1"
  51.596 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.597 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.598 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.599 +    </marker>
  51.600 +    <inkscape:perspective
  51.601 +       id="perspective8012"
  51.602 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.603 +       inkscape:vp_z="1 : 0.5 : 1"
  51.604 +       inkscape:vp_y="0 : 1000 : 0"
  51.605 +       inkscape:vp_x="0 : 0.5 : 1"
  51.606 +       sodipodi:type="inkscape:persp3d" />
  51.607 +    <marker
  51.608 +       inkscape:stockid="EmptyTriangleOutL"
  51.609 +       orient="auto"
  51.610 +       refY="0"
  51.611 +       refX="0"
  51.612 +       id="EmptyTriangleOutL-09"
  51.613 +       style="overflow:visible">
  51.614 +      <path
  51.615 +         id="path5512-3"
  51.616 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.617 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.618 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.619 +    </marker>
  51.620 +    <inkscape:perspective
  51.621 +       id="perspective8012-4"
  51.622 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.623 +       inkscape:vp_z="1 : 0.5 : 1"
  51.624 +       inkscape:vp_y="0 : 1000 : 0"
  51.625 +       inkscape:vp_x="0 : 0.5 : 1"
  51.626 +       sodipodi:type="inkscape:persp3d" />
  51.627 +    <marker
  51.628 +       inkscape:stockid="EmptyTriangleOutL"
  51.629 +       orient="auto"
  51.630 +       refY="0"
  51.631 +       refX="0"
  51.632 +       id="EmptyTriangleOutL-3"
  51.633 +       style="overflow:visible">
  51.634 +      <path
  51.635 +         id="path5512-64"
  51.636 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.637 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.638 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.639 +    </marker>
  51.640 +    <inkscape:perspective
  51.641 +       id="perspective8053"
  51.642 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.643 +       inkscape:vp_z="1 : 0.5 : 1"
  51.644 +       inkscape:vp_y="0 : 1000 : 0"
  51.645 +       inkscape:vp_x="0 : 0.5 : 1"
  51.646 +       sodipodi:type="inkscape:persp3d" />
  51.647 +    <marker
  51.648 +       inkscape:stockid="EmptyTriangleOutL"
  51.649 +       orient="auto"
  51.650 +       refY="0"
  51.651 +       refX="0"
  51.652 +       id="EmptyTriangleOutL-31"
  51.653 +       style="overflow:visible">
  51.654 +      <path
  51.655 +         id="path5512-9"
  51.656 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.657 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.658 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.659 +    </marker>
  51.660 +    <inkscape:perspective
  51.661 +       id="perspective8081"
  51.662 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.663 +       inkscape:vp_z="1 : 0.5 : 1"
  51.664 +       inkscape:vp_y="0 : 1000 : 0"
  51.665 +       inkscape:vp_x="0 : 0.5 : 1"
  51.666 +       sodipodi:type="inkscape:persp3d" />
  51.667 +    <marker
  51.668 +       inkscape:stockid="EmptyTriangleOutL"
  51.669 +       orient="auto"
  51.670 +       refY="0"
  51.671 +       refX="0"
  51.672 +       id="EmptyTriangleOutL-094"
  51.673 +       style="overflow:visible">
  51.674 +      <path
  51.675 +         id="path5512-5"
  51.676 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.677 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.678 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.679 +    </marker>
  51.680 +    <inkscape:perspective
  51.681 +       id="perspective8109"
  51.682 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.683 +       inkscape:vp_z="1 : 0.5 : 1"
  51.684 +       inkscape:vp_y="0 : 1000 : 0"
  51.685 +       inkscape:vp_x="0 : 0.5 : 1"
  51.686 +       sodipodi:type="inkscape:persp3d" />
  51.687 +    <marker
  51.688 +       inkscape:stockid="EmptyTriangleOutL"
  51.689 +       orient="auto"
  51.690 +       refY="0"
  51.691 +       refX="0"
  51.692 +       id="EmptyTriangleOutL-2"
  51.693 +       style="overflow:visible">
  51.694 +      <path
  51.695 +         id="path5512-59"
  51.696 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.697 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.698 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.699 +    </marker>
  51.700 +    <inkscape:perspective
  51.701 +       id="perspective8137"
  51.702 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.703 +       inkscape:vp_z="1 : 0.5 : 1"
  51.704 +       inkscape:vp_y="0 : 1000 : 0"
  51.705 +       inkscape:vp_x="0 : 0.5 : 1"
  51.706 +       sodipodi:type="inkscape:persp3d" />
  51.707 +    <marker
  51.708 +       inkscape:stockid="EmptyTriangleOutL"
  51.709 +       orient="auto"
  51.710 +       refY="0"
  51.711 +       refX="0"
  51.712 +       id="EmptyTriangleOutL-9"
  51.713 +       style="overflow:visible">
  51.714 +      <path
  51.715 +         id="path5512-13"
  51.716 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
  51.717 +         style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
  51.718 +         transform="matrix(0.8,0,0,0.8,-4.8,0)" />
  51.719 +    </marker>
  51.720 +    <inkscape:perspective
  51.721 +       id="perspective8181"
  51.722 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.723 +       inkscape:vp_z="1 : 0.5 : 1"
  51.724 +       inkscape:vp_y="0 : 1000 : 0"
  51.725 +       inkscape:vp_x="0 : 0.5 : 1"
  51.726 +       sodipodi:type="inkscape:persp3d" />
  51.727 +    <inkscape:perspective
  51.728 +       id="perspective3460"
  51.729 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.730 +       inkscape:vp_z="1 : 0.5 : 1"
  51.731 +       inkscape:vp_y="0 : 1000 : 0"
  51.732 +       inkscape:vp_x="0 : 0.5 : 1"
  51.733 +       sodipodi:type="inkscape:persp3d" />
  51.734 +    <inkscape:perspective
  51.735 +       id="perspective3490"
  51.736 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.737 +       inkscape:vp_z="1 : 0.5 : 1"
  51.738 +       inkscape:vp_y="0 : 1000 : 0"
  51.739 +       inkscape:vp_x="0 : 0.5 : 1"
  51.740 +       sodipodi:type="inkscape:persp3d" />
  51.741 +    <inkscape:perspective
  51.742 +       id="perspective4977"
  51.743 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.744 +       inkscape:vp_z="1 : 0.5 : 1"
  51.745 +       inkscape:vp_y="0 : 1000 : 0"
  51.746 +       inkscape:vp_x="0 : 0.5 : 1"
  51.747 +       sodipodi:type="inkscape:persp3d" />
  51.748 +    <linearGradient
  51.749 +       y2="68.79892"
  51.750 +       x2="480.00003"
  51.751 +       y1="304.49695"
  51.752 +       x1="480.00003"
  51.753 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-24.651047,389.63524)"
  51.754 +       gradientUnits="userSpaceOnUse"
  51.755 +       id="linearGradient7823-1"
  51.756 +       xlink:href="#linearGradient7274-7-7"
  51.757 +       inkscape:collect="always" />
  51.758 +    <linearGradient
  51.759 +       id="linearGradient7274-7-7"
  51.760 +       inkscape:collect="always">
  51.761 +      <stop
  51.762 +         id="stop7276-4-4"
  51.763 +         offset="0"
  51.764 +         style="stop-color:#000000;stop-opacity:1;" />
  51.765 +      <stop
  51.766 +         id="stop7278-3-0"
  51.767 +         offset="1"
  51.768 +         style="stop-color:#0089f9;stop-opacity:1" />
  51.769 +    </linearGradient>
  51.770 +    <inkscape:perspective
  51.771 +       id="perspective5015"
  51.772 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.773 +       inkscape:vp_z="1 : 0.5 : 1"
  51.774 +       inkscape:vp_y="0 : 1000 : 0"
  51.775 +       inkscape:vp_x="0 : 0.5 : 1"
  51.776 +       sodipodi:type="inkscape:persp3d" />
  51.777 +    <marker
  51.778 +       inkscape:stockid="Arrow2Lend"
  51.779 +       orient="auto"
  51.780 +       refY="0"
  51.781 +       refX="0"
  51.782 +       id="Arrow2Lend-4"
  51.783 +       style="overflow:visible">
  51.784 +      <path
  51.785 +         id="path5372-8"
  51.786 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.787 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.788 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.789 +    </marker>
  51.790 +    <inkscape:perspective
  51.791 +       id="perspective5043"
  51.792 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.793 +       inkscape:vp_z="1 : 0.5 : 1"
  51.794 +       inkscape:vp_y="0 : 1000 : 0"
  51.795 +       inkscape:vp_x="0 : 0.5 : 1"
  51.796 +       sodipodi:type="inkscape:persp3d" />
  51.797 +    <linearGradient
  51.798 +       y2="68.79892"
  51.799 +       x2="480.00003"
  51.800 +       y1="304.49695"
  51.801 +       x1="480.00003"
  51.802 +       gradientTransform="matrix(0.26521953,0,0,0.49087422,-24.651047,389.63524)"
  51.803 +       gradientUnits="userSpaceOnUse"
  51.804 +       id="linearGradient7823-4"
  51.805 +       xlink:href="#linearGradient7274-7-5"
  51.806 +       inkscape:collect="always" />
  51.807 +    <linearGradient
  51.808 +       id="linearGradient7274-7-5"
  51.809 +       inkscape:collect="always">
  51.810 +      <stop
  51.811 +         id="stop7276-4-5"
  51.812 +         offset="0"
  51.813 +         style="stop-color:#000000;stop-opacity:1;" />
  51.814 +      <stop
  51.815 +         id="stop7278-3-1"
  51.816 +         offset="1"
  51.817 +         style="stop-color:#0089f9;stop-opacity:1" />
  51.818 +    </linearGradient>
  51.819 +    <linearGradient
  51.820 +       y2="68.79892"
  51.821 +       x2="480.00003"
  51.822 +       y1="304.49695"
  51.823 +       x1="480.00003"
  51.824 +       gradientTransform="matrix(0.03434248,0,0,0.1570378,217.40819,38.17242)"
  51.825 +       gradientUnits="userSpaceOnUse"
  51.826 +       id="linearGradient5052"
  51.827 +       xlink:href="#linearGradient7274-7-5"
  51.828 +       inkscape:collect="always" />
  51.829 +    <inkscape:perspective
  51.830 +       id="perspective5298"
  51.831 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.832 +       inkscape:vp_z="1 : 0.5 : 1"
  51.833 +       inkscape:vp_y="0 : 1000 : 0"
  51.834 +       inkscape:vp_x="0 : 0.5 : 1"
  51.835 +       sodipodi:type="inkscape:persp3d" />
  51.836 +    <linearGradient
  51.837 +       y2="331.13467"
  51.838 +       x2="643.45416"
  51.839 +       y1="355.03943"
  51.840 +       x1="643.45416"
  51.841 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  51.842 +       gradientUnits="userSpaceOnUse"
  51.843 +       id="linearGradient7723-1"
  51.844 +       xlink:href="#linearGradient5038-5-1"
  51.845 +       inkscape:collect="always" />
  51.846 +    <linearGradient
  51.847 +       inkscape:collect="always"
  51.848 +       id="linearGradient5038-5-1">
  51.849 +      <stop
  51.850 +         style="stop-color:#000000;stop-opacity:1;"
  51.851 +         offset="0"
  51.852 +         id="stop5040-6-5" />
  51.853 +      <stop
  51.854 +         style="stop-color:#000000;stop-opacity:0;"
  51.855 +         offset="1"
  51.856 +         id="stop5042-2-2" />
  51.857 +    </linearGradient>
  51.858 +    <linearGradient
  51.859 +       y2="331.13467"
  51.860 +       x2="643.45416"
  51.861 +       y1="355.03943"
  51.862 +       x1="643.45416"
  51.863 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  51.864 +       gradientUnits="userSpaceOnUse"
  51.865 +       id="linearGradient5312"
  51.866 +       xlink:href="#linearGradient5038-5-1"
  51.867 +       inkscape:collect="always" />
  51.868 +    <inkscape:perspective
  51.869 +       id="perspective5355"
  51.870 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.871 +       inkscape:vp_z="1 : 0.5 : 1"
  51.872 +       inkscape:vp_y="0 : 1000 : 0"
  51.873 +       inkscape:vp_x="0 : 0.5 : 1"
  51.874 +       sodipodi:type="inkscape:persp3d" />
  51.875 +    <marker
  51.876 +       inkscape:stockid="Arrow2Lend"
  51.877 +       orient="auto"
  51.878 +       refY="0"
  51.879 +       refX="0"
  51.880 +       id="Arrow2Lend-7"
  51.881 +       style="overflow:visible">
  51.882 +      <path
  51.883 +         id="path5372-61"
  51.884 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  51.885 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  51.886 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  51.887 +    </marker>
  51.888 +    <inkscape:perspective
  51.889 +       id="perspective5383"
  51.890 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.891 +       inkscape:vp_z="1 : 0.5 : 1"
  51.892 +       inkscape:vp_y="0 : 1000 : 0"
  51.893 +       inkscape:vp_x="0 : 0.5 : 1"
  51.894 +       sodipodi:type="inkscape:persp3d" />
  51.895 +    <linearGradient
  51.896 +       y2="331.13467"
  51.897 +       x2="643.45416"
  51.898 +       y1="355.03943"
  51.899 +       x1="643.45416"
  51.900 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  51.901 +       gradientUnits="userSpaceOnUse"
  51.902 +       id="linearGradient5312-2"
  51.903 +       xlink:href="#linearGradient5038-5-1-3"
  51.904 +       inkscape:collect="always" />
  51.905 +    <linearGradient
  51.906 +       inkscape:collect="always"
  51.907 +       id="linearGradient5038-5-1-3">
  51.908 +      <stop
  51.909 +         style="stop-color:#000000;stop-opacity:1;"
  51.910 +         offset="0"
  51.911 +         id="stop5040-6-5-2" />
  51.912 +      <stop
  51.913 +         style="stop-color:#000000;stop-opacity:0;"
  51.914 +         offset="1"
  51.915 +         id="stop5042-2-2-2" />
  51.916 +    </linearGradient>
  51.917 +    <linearGradient
  51.918 +       y2="331.13467"
  51.919 +       x2="643.45416"
  51.920 +       y1="355.03943"
  51.921 +       x1="643.45416"
  51.922 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  51.923 +       gradientUnits="userSpaceOnUse"
  51.924 +       id="linearGradient5395"
  51.925 +       xlink:href="#linearGradient5038-5-1-3"
  51.926 +       inkscape:collect="always" />
  51.927 +    <inkscape:perspective
  51.928 +       id="perspective5430"
  51.929 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.930 +       inkscape:vp_z="1 : 0.5 : 1"
  51.931 +       inkscape:vp_y="0 : 1000 : 0"
  51.932 +       inkscape:vp_x="0 : 0.5 : 1"
  51.933 +       sodipodi:type="inkscape:persp3d" />
  51.934 +    <linearGradient
  51.935 +       y2="331.13467"
  51.936 +       x2="643.45416"
  51.937 +       y1="355.03943"
  51.938 +       x1="643.45416"
  51.939 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  51.940 +       gradientUnits="userSpaceOnUse"
  51.941 +       id="linearGradient5395-7"
  51.942 +       xlink:href="#linearGradient5038-5-1-3-6"
  51.943 +       inkscape:collect="always" />
  51.944 +    <linearGradient
  51.945 +       inkscape:collect="always"
  51.946 +       id="linearGradient5038-5-1-3-6">
  51.947 +      <stop
  51.948 +         style="stop-color:#000000;stop-opacity:1;"
  51.949 +         offset="0"
  51.950 +         id="stop5040-6-5-2-1" />
  51.951 +      <stop
  51.952 +         style="stop-color:#000000;stop-opacity:0;"
  51.953 +         offset="1"
  51.954 +         id="stop5042-2-2-2-8" />
  51.955 +    </linearGradient>
  51.956 +    <linearGradient
  51.957 +       y2="331.13467"
  51.958 +       x2="643.45416"
  51.959 +       y1="355.03943"
  51.960 +       x1="643.45416"
  51.961 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  51.962 +       gradientUnits="userSpaceOnUse"
  51.963 +       id="linearGradient5440"
  51.964 +       xlink:href="#linearGradient5038-5-1-3-6"
  51.965 +       inkscape:collect="always" />
  51.966 +    <inkscape:perspective
  51.967 +       id="perspective5471"
  51.968 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  51.969 +       inkscape:vp_z="1 : 0.5 : 1"
  51.970 +       inkscape:vp_y="0 : 1000 : 0"
  51.971 +       inkscape:vp_x="0 : 0.5 : 1"
  51.972 +       sodipodi:type="inkscape:persp3d" />
  51.973 +    <linearGradient
  51.974 +       y2="331.13467"
  51.975 +       x2="643.45416"
  51.976 +       y1="355.03943"
  51.977 +       x1="643.45416"
  51.978 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
  51.979 +       gradientUnits="userSpaceOnUse"
  51.980 +       id="linearGradient5440-7"
  51.981 +       xlink:href="#linearGradient5038-5-1-3-6-9"
  51.982 +       inkscape:collect="always" />
  51.983 +    <linearGradient
  51.984 +       inkscape:collect="always"
  51.985 +       id="linearGradient5038-5-1-3-6-9">
  51.986 +      <stop
  51.987 +         style="stop-color:#000000;stop-opacity:1;"
  51.988 +         offset="0"
  51.989 +         id="stop5040-6-5-2-1-5" />
  51.990 +      <stop
  51.991 +         style="stop-color:#000000;stop-opacity:0;"
  51.992 +         offset="1"
  51.993 +         id="stop5042-2-2-2-8-4" />
  51.994 +    </linearGradient>
  51.995 +    <linearGradient
  51.996 +       y2="331.13467"
  51.997 +       x2="643.45416"
  51.998 +       y1="355.03943"
  51.999 +       x1="643.45416"
 51.1000 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1001 +       gradientUnits="userSpaceOnUse"
 51.1002 +       id="linearGradient5481"
 51.1003 +       xlink:href="#linearGradient5038-5-1-3-6-9"
 51.1004 +       inkscape:collect="always" />
 51.1005 +    <inkscape:perspective
 51.1006 +       id="perspective5512"
 51.1007 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1008 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1009 +       inkscape:vp_y="0 : 1000 : 0"
 51.1010 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1011 +       sodipodi:type="inkscape:persp3d" />
 51.1012 +    <linearGradient
 51.1013 +       y2="68.79892"
 51.1014 +       x2="480.00003"
 51.1015 +       y1="304.49695"
 51.1016 +       x1="480.00003"
 51.1017 +       gradientTransform="matrix(0.03434248,0,0,0.1570378,29.408192,38.17242)"
 51.1018 +       gradientUnits="userSpaceOnUse"
 51.1019 +       id="linearGradient5052-2"
 51.1020 +       xlink:href="#linearGradient7274-7-5-3"
 51.1021 +       inkscape:collect="always" />
 51.1022 +    <linearGradient
 51.1023 +       id="linearGradient7274-7-5-3"
 51.1024 +       inkscape:collect="always">
 51.1025 +      <stop
 51.1026 +         id="stop7276-4-5-3"
 51.1027 +         offset="0"
 51.1028 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1029 +      <stop
 51.1030 +         id="stop7278-3-1-4"
 51.1031 +         offset="1"
 51.1032 +         style="stop-color:#0089f9;stop-opacity:1" />
 51.1033 +    </linearGradient>
 51.1034 +    <linearGradient
 51.1035 +       y2="68.79892"
 51.1036 +       x2="480.00003"
 51.1037 +       y1="304.49695"
 51.1038 +       x1="480.00003"
 51.1039 +       gradientTransform="matrix(0.03434248,0,0,0.1570378,217.10829,147.12276)"
 51.1040 +       gradientUnits="userSpaceOnUse"
 51.1041 +       id="linearGradient5521"
 51.1042 +       xlink:href="#linearGradient7274-7-5-3"
 51.1043 +       inkscape:collect="always" />
 51.1044 +    <inkscape:perspective
 51.1045 +       id="perspective5550"
 51.1046 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1047 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1048 +       inkscape:vp_y="0 : 1000 : 0"
 51.1049 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1050 +       sodipodi:type="inkscape:persp3d" />
 51.1051 +    <linearGradient
 51.1052 +       y2="68.79892"
 51.1053 +       x2="480.00003"
 51.1054 +       y1="304.49695"
 51.1055 +       x1="480.00003"
 51.1056 +       gradientTransform="matrix(0.03434248,0,0,0.1570378,29.108287,147.12276)"
 51.1057 +       gradientUnits="userSpaceOnUse"
 51.1058 +       id="linearGradient5521-1"
 51.1059 +       xlink:href="#linearGradient7274-7-5-3-3"
 51.1060 +       inkscape:collect="always" />
 51.1061 +    <linearGradient
 51.1062 +       id="linearGradient7274-7-5-3-3"
 51.1063 +       inkscape:collect="always">
 51.1064 +      <stop
 51.1065 +         id="stop7276-4-5-3-8"
 51.1066 +         offset="0"
 51.1067 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1068 +      <stop
 51.1069 +         id="stop7278-3-1-4-7"
 51.1070 +         offset="1"
 51.1071 +         style="stop-color:#0089f9;stop-opacity:1" />
 51.1072 +    </linearGradient>
 51.1073 +    <inkscape:perspective
 51.1074 +       id="perspective5588"
 51.1075 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1076 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1077 +       inkscape:vp_y="0 : 1000 : 0"
 51.1078 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1079 +       sodipodi:type="inkscape:persp3d" />
 51.1080 +    <inkscape:perspective
 51.1081 +       id="perspective5631"
 51.1082 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1083 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1084 +       inkscape:vp_y="0 : 1000 : 0"
 51.1085 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1086 +       sodipodi:type="inkscape:persp3d" />
 51.1087 +    <linearGradient
 51.1088 +       y2="68.79892"
 51.1089 +       x2="480.00003"
 51.1090 +       y1="304.49695"
 51.1091 +       x1="480.00003"
 51.1092 +       gradientTransform="matrix(0.03434248,0,0,0.1570378,29.108287,147.12276)"
 51.1093 +       gradientUnits="userSpaceOnUse"
 51.1094 +       id="linearGradient5521-9"
 51.1095 +       xlink:href="#linearGradient7274-7-5-3-8"
 51.1096 +       inkscape:collect="always" />
 51.1097 +    <linearGradient
 51.1098 +       id="linearGradient7274-7-5-3-8"
 51.1099 +       inkscape:collect="always">
 51.1100 +      <stop
 51.1101 +         id="stop7276-4-5-3-6"
 51.1102 +         offset="0"
 51.1103 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1104 +      <stop
 51.1105 +         id="stop7278-3-1-4-5"
 51.1106 +         offset="1"
 51.1107 +         style="stop-color:#0089f9;stop-opacity:1" />
 51.1108 +    </linearGradient>
 51.1109 +    <linearGradient
 51.1110 +       y2="68.79892"
 51.1111 +       x2="480.00003"
 51.1112 +       y1="304.49695"
 51.1113 +       x1="480.00003"
 51.1114 +       gradientTransform="matrix(0.03434248,0,0,0.1570378,216.20049,269.44689)"
 51.1115 +       gradientUnits="userSpaceOnUse"
 51.1116 +       id="linearGradient5640"
 51.1117 +       xlink:href="#linearGradient7274-7-5-3-8"
 51.1118 +       inkscape:collect="always" />
 51.1119 +    <inkscape:perspective
 51.1120 +       id="perspective5669"
 51.1121 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1122 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1123 +       inkscape:vp_y="0 : 1000 : 0"
 51.1124 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1125 +       sodipodi:type="inkscape:persp3d" />
 51.1126 +    <linearGradient
 51.1127 +       y2="331.13467"
 51.1128 +       x2="643.45416"
 51.1129 +       y1="355.03943"
 51.1130 +       x1="643.45416"
 51.1131 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1132 +       gradientUnits="userSpaceOnUse"
 51.1133 +       id="linearGradient5312-28"
 51.1134 +       xlink:href="#linearGradient5038-5-1-6"
 51.1135 +       inkscape:collect="always" />
 51.1136 +    <linearGradient
 51.1137 +       inkscape:collect="always"
 51.1138 +       id="linearGradient5038-5-1-6">
 51.1139 +      <stop
 51.1140 +         style="stop-color:#000000;stop-opacity:1;"
 51.1141 +         offset="0"
 51.1142 +         id="stop5040-6-5-0" />
 51.1143 +      <stop
 51.1144 +         style="stop-color:#000000;stop-opacity:0;"
 51.1145 +         offset="1"
 51.1146 +         id="stop5042-2-2-24" />
 51.1147 +    </linearGradient>
 51.1148 +    <marker
 51.1149 +       inkscape:stockid="Arrow2Lend"
 51.1150 +       orient="auto"
 51.1151 +       refY="0"
 51.1152 +       refX="0"
 51.1153 +       id="Arrow2Lend-86"
 51.1154 +       style="overflow:visible">
 51.1155 +      <path
 51.1156 +         id="path5372-50"
 51.1157 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1158 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1159 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1160 +    </marker>
 51.1161 +    <inkscape:perspective
 51.1162 +       id="perspective5721"
 51.1163 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1164 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1165 +       inkscape:vp_y="0 : 1000 : 0"
 51.1166 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1167 +       sodipodi:type="inkscape:persp3d" />
 51.1168 +    <linearGradient
 51.1169 +       y2="331.13467"
 51.1170 +       x2="643.45416"
 51.1171 +       y1="355.03943"
 51.1172 +       x1="643.45416"
 51.1173 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1174 +       gradientUnits="userSpaceOnUse"
 51.1175 +       id="linearGradient5312-28-3"
 51.1176 +       xlink:href="#linearGradient5038-5-1-6-8"
 51.1177 +       inkscape:collect="always" />
 51.1178 +    <linearGradient
 51.1179 +       inkscape:collect="always"
 51.1180 +       id="linearGradient5038-5-1-6-8">
 51.1181 +      <stop
 51.1182 +         style="stop-color:#000000;stop-opacity:1;"
 51.1183 +         offset="0"
 51.1184 +         id="stop5040-6-5-0-9" />
 51.1185 +      <stop
 51.1186 +         style="stop-color:#000000;stop-opacity:0;"
 51.1187 +         offset="1"
 51.1188 +         id="stop5042-2-2-24-3" />
 51.1189 +    </linearGradient>
 51.1190 +    <inkscape:perspective
 51.1191 +       id="perspective5774"
 51.1192 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1193 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1194 +       inkscape:vp_y="0 : 1000 : 0"
 51.1195 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1196 +       sodipodi:type="inkscape:persp3d" />
 51.1197 +    <inkscape:perspective
 51.1198 +       id="perspective5802"
 51.1199 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1200 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1201 +       inkscape:vp_y="0 : 1000 : 0"
 51.1202 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1203 +       sodipodi:type="inkscape:persp3d" />
 51.1204 +    <linearGradient
 51.1205 +       y2="68.79892"
 51.1206 +       x2="480.00003"
 51.1207 +       y1="304.49695"
 51.1208 +       x1="480.00003"
 51.1209 +       gradientTransform="matrix(0.03434248,0,0,0.1570378,217.40819,38.17242)"
 51.1210 +       gradientUnits="userSpaceOnUse"
 51.1211 +       id="linearGradient5052-8"
 51.1212 +       xlink:href="#linearGradient7274-7-5-4"
 51.1213 +       inkscape:collect="always" />
 51.1214 +    <linearGradient
 51.1215 +       id="linearGradient7274-7-5-4"
 51.1216 +       inkscape:collect="always">
 51.1217 +      <stop
 51.1218 +         id="stop7276-4-5-9"
 51.1219 +         offset="0"
 51.1220 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1221 +      <stop
 51.1222 +         id="stop7278-3-1-6"
 51.1223 +         offset="1"
 51.1224 +         style="stop-color:#0089f9;stop-opacity:1" />
 51.1225 +    </linearGradient>
 51.1226 +    <linearGradient
 51.1227 +       y2="68.79892"
 51.1228 +       x2="480.00003"
 51.1229 +       y1="304.49695"
 51.1230 +       x1="480.00003"
 51.1231 +       gradientTransform="matrix(0.03392631,0,0,2.981563,31.566101,-157.78875)"
 51.1232 +       gradientUnits="userSpaceOnUse"
 51.1233 +       id="linearGradient5811"
 51.1234 +       xlink:href="#linearGradient7274-7-5-4"
 51.1235 +       inkscape:collect="always" />
 51.1236 +    <inkscape:perspective
 51.1237 +       id="perspective5840"
 51.1238 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1239 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1240 +       inkscape:vp_y="0 : 1000 : 0"
 51.1241 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1242 +       sodipodi:type="inkscape:persp3d" />
 51.1243 +    <linearGradient
 51.1244 +       y2="68.79892"
 51.1245 +       x2="480.00003"
 51.1246 +       y1="304.49695"
 51.1247 +       x1="480.00003"
 51.1248 +       gradientTransform="matrix(0.03392979,0,0,2.1828721,87.542316,-102.51447)"
 51.1249 +       gradientUnits="userSpaceOnUse"
 51.1250 +       id="linearGradient5811-7"
 51.1251 +       xlink:href="#linearGradient7274-7-5-4-8"
 51.1252 +       inkscape:collect="always" />
 51.1253 +    <linearGradient
 51.1254 +       id="linearGradient7274-7-5-4-8"
 51.1255 +       inkscape:collect="always">
 51.1256 +      <stop
 51.1257 +         id="stop7276-4-5-9-8"
 51.1258 +         offset="0"
 51.1259 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1260 +      <stop
 51.1261 +         id="stop7278-3-1-6-2"
 51.1262 +         offset="1"
 51.1263 +         style="stop-color:#0089f9;stop-opacity:1" />
 51.1264 +    </linearGradient>
 51.1265 +    <linearGradient
 51.1266 +       y2="68.79892"
 51.1267 +       x2="480.00003"
 51.1268 +       y1="304.49695"
 51.1269 +       x1="480.00003"
 51.1270 +       gradientTransform="matrix(0.03392631,0,0,2.981563,270.42728,-156.98297)"
 51.1271 +       gradientUnits="userSpaceOnUse"
 51.1272 +       id="linearGradient5849"
 51.1273 +       xlink:href="#linearGradient7274-7-5-4-8"
 51.1274 +       inkscape:collect="always" />
 51.1275 +    <inkscape:perspective
 51.1276 +       id="perspective5840-1"
 51.1277 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1278 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1279 +       inkscape:vp_y="0 : 1000 : 0"
 51.1280 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1281 +       sodipodi:type="inkscape:persp3d" />
 51.1282 +    <linearGradient
 51.1283 +       y2="68.79892"
 51.1284 +       x2="480.00003"
 51.1285 +       y1="304.49695"
 51.1286 +       x1="480.00003"
 51.1287 +       gradientTransform="matrix(0.03392979,0,0,2.1828721,87.542316,-102.51447)"
 51.1288 +       gradientUnits="userSpaceOnUse"
 51.1289 +       id="linearGradient5811-3"
 51.1290 +       xlink:href="#linearGradient7274-7-5-4-5"
 51.1291 +       inkscape:collect="always" />
 51.1292 +    <linearGradient
 51.1293 +       id="linearGradient7274-7-5-4-5"
 51.1294 +       inkscape:collect="always">
 51.1295 +      <stop
 51.1296 +         id="stop7276-4-5-9-9"
 51.1297 +         offset="0"
 51.1298 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1299 +      <stop
 51.1300 +         id="stop7278-3-1-6-8"
 51.1301 +         offset="1"
 51.1302 +         style="stop-color:#0089f9;stop-opacity:1" />
 51.1303 +    </linearGradient>
 51.1304 +    <linearGradient
 51.1305 +       y2="68.79892"
 51.1306 +       x2="480.00003"
 51.1307 +       y1="304.49695"
 51.1308 +       x1="480.00003"
 51.1309 +       gradientTransform="matrix(0.36596518,0,0,2.9784642,438.84889,-158.01615)"
 51.1310 +       gradientUnits="userSpaceOnUse"
 51.1311 +       id="linearGradient5849-4"
 51.1312 +       xlink:href="#linearGradient7274-7-5-4-5"
 51.1313 +       inkscape:collect="always" />
 51.1314 +    <inkscape:perspective
 51.1315 +       id="perspective5897"
 51.1316 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1317 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1318 +       inkscape:vp_y="0 : 1000 : 0"
 51.1319 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1320 +       sodipodi:type="inkscape:persp3d" />
 51.1321 +    <marker
 51.1322 +       inkscape:stockid="Arrow2Lend"
 51.1323 +       orient="auto"
 51.1324 +       refY="0"
 51.1325 +       refX="0"
 51.1326 +       id="Arrow2Lend-76"
 51.1327 +       style="overflow:visible">
 51.1328 +      <path
 51.1329 +         id="path5372-3"
 51.1330 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1331 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1332 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1333 +    </marker>
 51.1334 +    <inkscape:perspective
 51.1335 +       id="perspective5925"
 51.1336 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1337 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1338 +       inkscape:vp_y="0 : 1000 : 0"
 51.1339 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1340 +       sodipodi:type="inkscape:persp3d" />
 51.1341 +    <linearGradient
 51.1342 +       y2="331.13467"
 51.1343 +       x2="643.45416"
 51.1344 +       y1="355.03943"
 51.1345 +       x1="643.45416"
 51.1346 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1347 +       gradientUnits="userSpaceOnUse"
 51.1348 +       id="linearGradient7723"
 51.1349 +       xlink:href="#linearGradient5038-5-15"
 51.1350 +       inkscape:collect="always" />
 51.1351 +    <linearGradient
 51.1352 +       inkscape:collect="always"
 51.1353 +       id="linearGradient5038-5-15">
 51.1354 +      <stop
 51.1355 +         style="stop-color:#000000;stop-opacity:1;"
 51.1356 +         offset="0"
 51.1357 +         id="stop5040-6-4" />
 51.1358 +      <stop
 51.1359 +         style="stop-color:#000000;stop-opacity:0;"
 51.1360 +         offset="1"
 51.1361 +         id="stop5042-2-20" />
 51.1362 +    </linearGradient>
 51.1363 +    <linearGradient
 51.1364 +       y2="331.13467"
 51.1365 +       x2="643.45416"
 51.1366 +       y1="355.03943"
 51.1367 +       x1="643.45416"
 51.1368 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1369 +       gradientUnits="userSpaceOnUse"
 51.1370 +       id="linearGradient5939"
 51.1371 +       xlink:href="#linearGradient5974"
 51.1372 +       inkscape:collect="always" />
 51.1373 +    <inkscape:perspective
 51.1374 +       id="perspective5988"
 51.1375 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1376 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1377 +       inkscape:vp_y="0 : 1000 : 0"
 51.1378 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1379 +       sodipodi:type="inkscape:persp3d" />
 51.1380 +    <marker
 51.1381 +       inkscape:stockid="Arrow2Lend"
 51.1382 +       orient="auto"
 51.1383 +       refY="0"
 51.1384 +       refX="0"
 51.1385 +       id="Arrow2Lend-26"
 51.1386 +       style="overflow:visible">
 51.1387 +      <path
 51.1388 +         id="path5372-0"
 51.1389 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1390 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1391 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1392 +    </marker>
 51.1393 +    <inkscape:perspective
 51.1394 +       id="perspective6040"
 51.1395 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1396 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1397 +       inkscape:vp_y="0 : 1000 : 0"
 51.1398 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1399 +       sodipodi:type="inkscape:persp3d" />
 51.1400 +    <linearGradient
 51.1401 +       y2="331.13467"
 51.1402 +       x2="643.45416"
 51.1403 +       y1="355.03943"
 51.1404 +       x1="643.45416"
 51.1405 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1406 +       gradientUnits="userSpaceOnUse"
 51.1407 +       id="linearGradient5939-9-4"
 51.1408 +       xlink:href="#linearGradient5974-7-1"
 51.1409 +       inkscape:collect="always" />
 51.1410 +    <linearGradient
 51.1411 +       id="linearGradient5974-7-1"
 51.1412 +       inkscape:collect="always">
 51.1413 +      <stop
 51.1414 +         id="stop5976-3-2"
 51.1415 +         offset="0"
 51.1416 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1417 +      <stop
 51.1418 +         id="stop5978-7-0"
 51.1419 +         offset="1"
 51.1420 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1421 +    </linearGradient>
 51.1422 +    <inkscape:perspective
 51.1423 +       id="perspective6087"
 51.1424 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1425 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1426 +       inkscape:vp_y="0 : 1000 : 0"
 51.1427 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1428 +       sodipodi:type="inkscape:persp3d" />
 51.1429 +    <marker
 51.1430 +       inkscape:stockid="Arrow2Lend"
 51.1431 +       orient="auto"
 51.1432 +       refY="0"
 51.1433 +       refX="0"
 51.1434 +       id="Arrow2Lend-0"
 51.1435 +       style="overflow:visible">
 51.1436 +      <path
 51.1437 +         id="path5372-71"
 51.1438 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1439 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1440 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1441 +    </marker>
 51.1442 +    <inkscape:perspective
 51.1443 +       id="perspective6115"
 51.1444 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1445 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1446 +       inkscape:vp_y="0 : 1000 : 0"
 51.1447 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1448 +       sodipodi:type="inkscape:persp3d" />
 51.1449 +    <linearGradient
 51.1450 +       y2="331.13467"
 51.1451 +       x2="643.45416"
 51.1452 +       y1="355.03943"
 51.1453 +       x1="643.45416"
 51.1454 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1455 +       gradientUnits="userSpaceOnUse"
 51.1456 +       id="linearGradient5939-9-7"
 51.1457 +       xlink:href="#linearGradient5974-7-7"
 51.1458 +       inkscape:collect="always" />
 51.1459 +    <linearGradient
 51.1460 +       id="linearGradient5974-7-7"
 51.1461 +       inkscape:collect="always">
 51.1462 +      <stop
 51.1463 +         id="stop5976-3-7"
 51.1464 +         offset="0"
 51.1465 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1466 +      <stop
 51.1467 +         id="stop5978-7-3"
 51.1468 +         offset="1"
 51.1469 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1470 +    </linearGradient>
 51.1471 +    <linearGradient
 51.1472 +       y2="331.13467"
 51.1473 +       x2="643.45416"
 51.1474 +       y1="355.03943"
 51.1475 +       x1="643.45416"
 51.1476 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1477 +       gradientUnits="userSpaceOnUse"
 51.1478 +       id="linearGradient6127"
 51.1479 +       xlink:href="#linearGradient5974-7-7"
 51.1480 +       inkscape:collect="always" />
 51.1481 +    <inkscape:perspective
 51.1482 +       id="perspective6162"
 51.1483 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1484 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1485 +       inkscape:vp_y="0 : 1000 : 0"
 51.1486 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1487 +       sodipodi:type="inkscape:persp3d" />
 51.1488 +    <linearGradient
 51.1489 +       y2="331.13467"
 51.1490 +       x2="643.45416"
 51.1491 +       y1="355.03943"
 51.1492 +       x1="643.45416"
 51.1493 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1494 +       gradientUnits="userSpaceOnUse"
 51.1495 +       id="linearGradient6127-8"
 51.1496 +       xlink:href="#linearGradient5974-7-7-1"
 51.1497 +       inkscape:collect="always" />
 51.1498 +    <linearGradient
 51.1499 +       id="linearGradient5974-7-7-1"
 51.1500 +       inkscape:collect="always">
 51.1501 +      <stop
 51.1502 +         id="stop5976-3-7-8"
 51.1503 +         offset="0"
 51.1504 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1505 +      <stop
 51.1506 +         id="stop5978-7-3-2"
 51.1507 +         offset="1"
 51.1508 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1509 +    </linearGradient>
 51.1510 +    <marker
 51.1511 +       inkscape:stockid="Arrow2Lend"
 51.1512 +       orient="auto"
 51.1513 +       refY="0"
 51.1514 +       refX="0"
 51.1515 +       id="Arrow2Lend-66"
 51.1516 +       style="overflow:visible">
 51.1517 +      <path
 51.1518 +         id="path5372-03"
 51.1519 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1520 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1521 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1522 +    </marker>
 51.1523 +    <inkscape:perspective
 51.1524 +       id="perspective6233"
 51.1525 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1526 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1527 +       inkscape:vp_y="0 : 1000 : 0"
 51.1528 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1529 +       sodipodi:type="inkscape:persp3d" />
 51.1530 +    <linearGradient
 51.1531 +       y2="331.13467"
 51.1532 +       x2="643.45416"
 51.1533 +       y1="355.03943"
 51.1534 +       x1="643.45416"
 51.1535 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1536 +       gradientUnits="userSpaceOnUse"
 51.1537 +       id="linearGradient6127-0"
 51.1538 +       xlink:href="#linearGradient5974-7-7-9"
 51.1539 +       inkscape:collect="always" />
 51.1540 +    <linearGradient
 51.1541 +       id="linearGradient5974-7-7-9"
 51.1542 +       inkscape:collect="always">
 51.1543 +      <stop
 51.1544 +         id="stop5976-3-7-4"
 51.1545 +         offset="0"
 51.1546 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1547 +      <stop
 51.1548 +         id="stop5978-7-3-7"
 51.1549 +         offset="1"
 51.1550 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1551 +    </linearGradient>
 51.1552 +    <linearGradient
 51.1553 +       y2="331.13467"
 51.1554 +       x2="643.45416"
 51.1555 +       y1="355.03943"
 51.1556 +       x1="643.45416"
 51.1557 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1558 +       gradientUnits="userSpaceOnUse"
 51.1559 +       id="linearGradient6245"
 51.1560 +       xlink:href="#linearGradient5974-7-7-9"
 51.1561 +       inkscape:collect="always" />
 51.1562 +    <inkscape:perspective
 51.1563 +       id="perspective6280"
 51.1564 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1565 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1566 +       inkscape:vp_y="0 : 1000 : 0"
 51.1567 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1568 +       sodipodi:type="inkscape:persp3d" />
 51.1569 +    <marker
 51.1570 +       inkscape:stockid="Arrow2Lend"
 51.1571 +       orient="auto"
 51.1572 +       refY="0"
 51.1573 +       refX="0"
 51.1574 +       id="Arrow2Lend-20"
 51.1575 +       style="overflow:visible">
 51.1576 +      <path
 51.1577 +         id="path5372-1"
 51.1578 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1579 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1580 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1581 +    </marker>
 51.1582 +    <inkscape:perspective
 51.1583 +       id="perspective6355"
 51.1584 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1585 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1586 +       inkscape:vp_y="0 : 1000 : 0"
 51.1587 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1588 +       sodipodi:type="inkscape:persp3d" />
 51.1589 +    <linearGradient
 51.1590 +       y2="331.13467"
 51.1591 +       x2="643.45416"
 51.1592 +       y1="355.03943"
 51.1593 +       x1="643.45416"
 51.1594 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1595 +       gradientUnits="userSpaceOnUse"
 51.1596 +       id="linearGradient5939-1"
 51.1597 +       xlink:href="#linearGradient5974-4"
 51.1598 +       inkscape:collect="always" />
 51.1599 +    <linearGradient
 51.1600 +       id="linearGradient5974-4"
 51.1601 +       inkscape:collect="always">
 51.1602 +      <stop
 51.1603 +         id="stop5976-39"
 51.1604 +         offset="0"
 51.1605 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1606 +      <stop
 51.1607 +         id="stop5978-8"
 51.1608 +         offset="1"
 51.1609 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1610 +    </linearGradient>
 51.1611 +    <marker
 51.1612 +       inkscape:stockid="Arrow2Lend"
 51.1613 +       orient="auto"
 51.1614 +       refY="0"
 51.1615 +       refX="0"
 51.1616 +       id="Arrow2Lend-80"
 51.1617 +       style="overflow:visible">
 51.1618 +      <path
 51.1619 +         id="path5372-87"
 51.1620 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1621 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1622 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1623 +    </marker>
 51.1624 +    <inkscape:perspective
 51.1625 +       id="perspective6407"
 51.1626 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1627 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1628 +       inkscape:vp_y="0 : 1000 : 0"
 51.1629 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1630 +       sodipodi:type="inkscape:persp3d" />
 51.1631 +    <linearGradient
 51.1632 +       y2="331.13467"
 51.1633 +       x2="643.45416"
 51.1634 +       y1="355.03943"
 51.1635 +       x1="643.45416"
 51.1636 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1637 +       gradientUnits="userSpaceOnUse"
 51.1638 +       id="linearGradient5939-7"
 51.1639 +       xlink:href="#linearGradient5974-1"
 51.1640 +       inkscape:collect="always" />
 51.1641 +    <linearGradient
 51.1642 +       id="linearGradient5974-1"
 51.1643 +       inkscape:collect="always">
 51.1644 +      <stop
 51.1645 +         id="stop5976-0"
 51.1646 +         offset="0"
 51.1647 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.1648 +      <stop
 51.1649 +         id="stop5978-73"
 51.1650 +         offset="1"
 51.1651 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1652 +    </linearGradient>
 51.1653 +    <inkscape:perspective
 51.1654 +       id="perspective6445"
 51.1655 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1656 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1657 +       inkscape:vp_y="0 : 1000 : 0"
 51.1658 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1659 +       sodipodi:type="inkscape:persp3d" />
 51.1660 +    <linearGradient
 51.1661 +       y2="331.13467"
 51.1662 +       x2="643.45416"
 51.1663 +       y1="355.03943"
 51.1664 +       x1="643.45416"
 51.1665 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1666 +       gradientUnits="userSpaceOnUse"
 51.1667 +       id="linearGradient5939-96"
 51.1668 +       xlink:href="#linearGradient5974-5"
 51.1669 +       inkscape:collect="always" />
 51.1670 +    <linearGradient
 51.1671 +       id="linearGradient5974-5"
 51.1672 +       inkscape:collect="always">
 51.1673 +      <stop
 51.1674 +         id="stop5976-1"
 51.1675 +         offset="0"
 51.1676 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.1677 +      <stop
 51.1678 +         id="stop5978-0"
 51.1679 +         offset="1"
 51.1680 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1681 +    </linearGradient>
 51.1682 +    <linearGradient
 51.1683 +       y2="331.13467"
 51.1684 +       x2="643.45416"
 51.1685 +       y1="355.03943"
 51.1686 +       x1="643.45416"
 51.1687 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1688 +       gradientUnits="userSpaceOnUse"
 51.1689 +       id="linearGradient6457"
 51.1690 +       xlink:href="#linearGradient5974-5"
 51.1691 +       inkscape:collect="always" />
 51.1692 +    <inkscape:perspective
 51.1693 +       id="perspective6492"
 51.1694 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1695 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1696 +       inkscape:vp_y="0 : 1000 : 0"
 51.1697 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1698 +       sodipodi:type="inkscape:persp3d" />
 51.1699 +    <linearGradient
 51.1700 +       y2="331.13467"
 51.1701 +       x2="643.45416"
 51.1702 +       y1="355.03943"
 51.1703 +       x1="643.45416"
 51.1704 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1705 +       gradientUnits="userSpaceOnUse"
 51.1706 +       id="linearGradient5939-1-3"
 51.1707 +       xlink:href="#linearGradient5974-4-4"
 51.1708 +       inkscape:collect="always" />
 51.1709 +    <linearGradient
 51.1710 +       id="linearGradient5974-4-4"
 51.1711 +       inkscape:collect="always">
 51.1712 +      <stop
 51.1713 +         id="stop5976-39-8"
 51.1714 +         offset="0"
 51.1715 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1716 +      <stop
 51.1717 +         id="stop5978-8-4"
 51.1718 +         offset="1"
 51.1719 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1720 +    </linearGradient>
 51.1721 +    <inkscape:perspective
 51.1722 +       id="perspective6539"
 51.1723 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1724 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1725 +       inkscape:vp_y="0 : 1000 : 0"
 51.1726 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1727 +       sodipodi:type="inkscape:persp3d" />
 51.1728 +    <linearGradient
 51.1729 +       y2="331.13467"
 51.1730 +       x2="643.45416"
 51.1731 +       y1="355.03943"
 51.1732 +       x1="643.45416"
 51.1733 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1734 +       gradientUnits="userSpaceOnUse"
 51.1735 +       id="linearGradient5939-1-5"
 51.1736 +       xlink:href="#linearGradient5974-4-3"
 51.1737 +       inkscape:collect="always" />
 51.1738 +    <linearGradient
 51.1739 +       id="linearGradient5974-4-3"
 51.1740 +       inkscape:collect="always">
 51.1741 +      <stop
 51.1742 +         id="stop5976-39-3"
 51.1743 +         offset="0"
 51.1744 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1745 +      <stop
 51.1746 +         id="stop5978-8-3"
 51.1747 +         offset="1"
 51.1748 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1749 +    </linearGradient>
 51.1750 +    <inkscape:perspective
 51.1751 +       id="perspective6539-3"
 51.1752 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1753 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1754 +       inkscape:vp_y="0 : 1000 : 0"
 51.1755 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1756 +       sodipodi:type="inkscape:persp3d" />
 51.1757 +    <linearGradient
 51.1758 +       y2="331.13467"
 51.1759 +       x2="643.45416"
 51.1760 +       y1="355.03943"
 51.1761 +       x1="643.45416"
 51.1762 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1763 +       gradientUnits="userSpaceOnUse"
 51.1764 +       id="linearGradient5939-1-8"
 51.1765 +       xlink:href="#linearGradient5974-4-0"
 51.1766 +       inkscape:collect="always" />
 51.1767 +    <linearGradient
 51.1768 +       id="linearGradient5974-4-0"
 51.1769 +       inkscape:collect="always">
 51.1770 +      <stop
 51.1771 +         id="stop5976-39-88"
 51.1772 +         offset="0"
 51.1773 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1774 +      <stop
 51.1775 +         id="stop5978-8-0"
 51.1776 +         offset="1"
 51.1777 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1778 +    </linearGradient>
 51.1779 +    <linearGradient
 51.1780 +       y2="331.13467"
 51.1781 +       x2="643.45416"
 51.1782 +       y1="355.03943"
 51.1783 +       x1="643.45416"
 51.1784 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1785 +       gradientUnits="userSpaceOnUse"
 51.1786 +       id="linearGradient6549-6"
 51.1787 +       xlink:href="#linearGradient5974-4-0"
 51.1788 +       inkscape:collect="always" />
 51.1789 +    <inkscape:perspective
 51.1790 +       id="perspective6539-9"
 51.1791 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1792 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1793 +       inkscape:vp_y="0 : 1000 : 0"
 51.1794 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1795 +       sodipodi:type="inkscape:persp3d" />
 51.1796 +    <linearGradient
 51.1797 +       y2="331.13467"
 51.1798 +       x2="643.45416"
 51.1799 +       y1="355.03943"
 51.1800 +       x1="643.45416"
 51.1801 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1802 +       gradientUnits="userSpaceOnUse"
 51.1803 +       id="linearGradient5939-1-89"
 51.1804 +       xlink:href="#linearGradient5974-4-7"
 51.1805 +       inkscape:collect="always" />
 51.1806 +    <linearGradient
 51.1807 +       id="linearGradient5974-4-7"
 51.1808 +       inkscape:collect="always">
 51.1809 +      <stop
 51.1810 +         id="stop5976-39-2"
 51.1811 +         offset="0"
 51.1812 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1813 +      <stop
 51.1814 +         id="stop5978-8-2"
 51.1815 +         offset="1"
 51.1816 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1817 +    </linearGradient>
 51.1818 +    <inkscape:perspective
 51.1819 +       id="perspective6622"
 51.1820 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1821 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1822 +       inkscape:vp_y="0 : 1000 : 0"
 51.1823 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1824 +       sodipodi:type="inkscape:persp3d" />
 51.1825 +    <linearGradient
 51.1826 +       y2="331.13467"
 51.1827 +       x2="643.45416"
 51.1828 +       y1="355.03943"
 51.1829 +       x1="643.45416"
 51.1830 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1831 +       gradientUnits="userSpaceOnUse"
 51.1832 +       id="linearGradient6457-9"
 51.1833 +       xlink:href="#linearGradient5974-5-0"
 51.1834 +       inkscape:collect="always" />
 51.1835 +    <linearGradient
 51.1836 +       id="linearGradient5974-5-0"
 51.1837 +       inkscape:collect="always">
 51.1838 +      <stop
 51.1839 +         id="stop5976-1-7"
 51.1840 +         offset="0"
 51.1841 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.1842 +      <stop
 51.1843 +         id="stop5978-0-8"
 51.1844 +         offset="1"
 51.1845 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1846 +    </linearGradient>
 51.1847 +    <inkscape:perspective
 51.1848 +       id="perspective6695"
 51.1849 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1850 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1851 +       inkscape:vp_y="0 : 1000 : 0"
 51.1852 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1853 +       sodipodi:type="inkscape:persp3d" />
 51.1854 +    <marker
 51.1855 +       inkscape:stockid="Arrow2Lend"
 51.1856 +       orient="auto"
 51.1857 +       refY="0"
 51.1858 +       refX="0"
 51.1859 +       id="Arrow2Lend-39"
 51.1860 +       style="overflow:visible">
 51.1861 +      <path
 51.1862 +         id="path5372-24"
 51.1863 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1864 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1865 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1866 +    </marker>
 51.1867 +    <inkscape:perspective
 51.1868 +       id="perspective6748"
 51.1869 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1870 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1871 +       inkscape:vp_y="0 : 1000 : 0"
 51.1872 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1873 +       sodipodi:type="inkscape:persp3d" />
 51.1874 +    <linearGradient
 51.1875 +       y2="331.13467"
 51.1876 +       x2="643.45416"
 51.1877 +       y1="355.03943"
 51.1878 +       x1="643.45416"
 51.1879 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1880 +       gradientUnits="userSpaceOnUse"
 51.1881 +       id="linearGradient5939-1-2"
 51.1882 +       xlink:href="#linearGradient5974-4-1"
 51.1883 +       inkscape:collect="always" />
 51.1884 +    <linearGradient
 51.1885 +       id="linearGradient5974-4-1"
 51.1886 +       inkscape:collect="always">
 51.1887 +      <stop
 51.1888 +         id="stop5976-39-1"
 51.1889 +         offset="0"
 51.1890 +         style="stop-color:#000000;stop-opacity:1;" />
 51.1891 +      <stop
 51.1892 +         id="stop5978-8-9"
 51.1893 +         offset="1"
 51.1894 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1895 +    </linearGradient>
 51.1896 +    <linearGradient
 51.1897 +       y2="331.13467"
 51.1898 +       x2="643.45416"
 51.1899 +       y1="355.03943"
 51.1900 +       x1="643.45416"
 51.1901 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1902 +       gradientUnits="userSpaceOnUse"
 51.1903 +       id="linearGradient6760"
 51.1904 +       xlink:href="#linearGradient5974-4-1"
 51.1905 +       inkscape:collect="always" />
 51.1906 +    <inkscape:perspective
 51.1907 +       id="perspective6795"
 51.1908 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1909 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1910 +       inkscape:vp_y="0 : 1000 : 0"
 51.1911 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1912 +       sodipodi:type="inkscape:persp3d" />
 51.1913 +    <marker
 51.1914 +       inkscape:stockid="Arrow2Lend"
 51.1915 +       orient="auto"
 51.1916 +       refY="0"
 51.1917 +       refX="0"
 51.1918 +       id="Arrow2Lend-52"
 51.1919 +       style="overflow:visible">
 51.1920 +      <path
 51.1921 +         id="path5372-00"
 51.1922 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.1923 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.1924 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.1925 +    </marker>
 51.1926 +    <inkscape:perspective
 51.1927 +       id="perspective6823"
 51.1928 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1929 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1930 +       inkscape:vp_y="0 : 1000 : 0"
 51.1931 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1932 +       sodipodi:type="inkscape:persp3d" />
 51.1933 +    <linearGradient
 51.1934 +       y2="331.13467"
 51.1935 +       x2="643.45416"
 51.1936 +       y1="355.03943"
 51.1937 +       x1="643.45416"
 51.1938 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1939 +       gradientUnits="userSpaceOnUse"
 51.1940 +       id="linearGradient6457-9-9"
 51.1941 +       xlink:href="#linearGradient5974-5-0-1"
 51.1942 +       inkscape:collect="always" />
 51.1943 +    <linearGradient
 51.1944 +       id="linearGradient5974-5-0-1"
 51.1945 +       inkscape:collect="always">
 51.1946 +      <stop
 51.1947 +         id="stop5976-1-7-8"
 51.1948 +         offset="0"
 51.1949 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.1950 +      <stop
 51.1951 +         id="stop5978-0-8-1"
 51.1952 +         offset="1"
 51.1953 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1954 +    </linearGradient>
 51.1955 +    <linearGradient
 51.1956 +       y2="331.13467"
 51.1957 +       x2="643.45416"
 51.1958 +       y1="355.03943"
 51.1959 +       x1="643.45416"
 51.1960 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1961 +       gradientUnits="userSpaceOnUse"
 51.1962 +       id="linearGradient6833"
 51.1963 +       xlink:href="#linearGradient5974-5-0-1"
 51.1964 +       inkscape:collect="always" />
 51.1965 +    <inkscape:perspective
 51.1966 +       id="perspective6864"
 51.1967 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.1968 +       inkscape:vp_z="1 : 0.5 : 1"
 51.1969 +       inkscape:vp_y="0 : 1000 : 0"
 51.1970 +       inkscape:vp_x="0 : 0.5 : 1"
 51.1971 +       sodipodi:type="inkscape:persp3d" />
 51.1972 +    <linearGradient
 51.1973 +       y2="331.13467"
 51.1974 +       x2="643.45416"
 51.1975 +       y1="355.03943"
 51.1976 +       x1="643.45416"
 51.1977 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.1978 +       gradientUnits="userSpaceOnUse"
 51.1979 +       id="linearGradient6833-3"
 51.1980 +       xlink:href="#linearGradient5974-5-0-1-2"
 51.1981 +       inkscape:collect="always" />
 51.1982 +    <linearGradient
 51.1983 +       id="linearGradient5974-5-0-1-2"
 51.1984 +       inkscape:collect="always">
 51.1985 +      <stop
 51.1986 +         id="stop5976-1-7-8-5"
 51.1987 +         offset="0"
 51.1988 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.1989 +      <stop
 51.1990 +         id="stop5978-0-8-1-2"
 51.1991 +         offset="1"
 51.1992 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.1993 +    </linearGradient>
 51.1994 +    <linearGradient
 51.1995 +       y2="331.13467"
 51.1996 +       x2="643.45416"
 51.1997 +       y1="355.03943"
 51.1998 +       x1="643.45416"
 51.1999 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2000 +       gradientUnits="userSpaceOnUse"
 51.2001 +       id="linearGradient6876"
 51.2002 +       xlink:href="#linearGradient4793"
 51.2003 +       inkscape:collect="always" />
 51.2004 +    <inkscape:perspective
 51.2005 +       id="perspective6913"
 51.2006 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2007 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2008 +       inkscape:vp_y="0 : 1000 : 0"
 51.2009 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2010 +       sodipodi:type="inkscape:persp3d" />
 51.2011 +    <inkscape:perspective
 51.2012 +       id="perspective6935"
 51.2013 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2014 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2015 +       inkscape:vp_y="0 : 1000 : 0"
 51.2016 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2017 +       sodipodi:type="inkscape:persp3d" />
 51.2018 +    <inkscape:perspective
 51.2019 +       id="perspective6967"
 51.2020 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2021 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2022 +       inkscape:vp_y="0 : 1000 : 0"
 51.2023 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2024 +       sodipodi:type="inkscape:persp3d" />
 51.2025 +    <linearGradient
 51.2026 +       y2="331.13467"
 51.2027 +       x2="643.45416"
 51.2028 +       y1="355.03943"
 51.2029 +       x1="643.45416"
 51.2030 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2031 +       gradientUnits="userSpaceOnUse"
 51.2032 +       id="linearGradient6876-2"
 51.2033 +       xlink:href="#linearGradient5974-5-0-1-2-9"
 51.2034 +       inkscape:collect="always" />
 51.2035 +    <linearGradient
 51.2036 +       id="linearGradient5974-5-0-1-2-9"
 51.2037 +       inkscape:collect="always">
 51.2038 +      <stop
 51.2039 +         id="stop5976-1-7-8-5-4"
 51.2040 +         offset="0"
 51.2041 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2042 +      <stop
 51.2043 +         id="stop5978-0-8-1-2-1"
 51.2044 +         offset="1"
 51.2045 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2046 +    </linearGradient>
 51.2047 +    <linearGradient
 51.2048 +       y2="331.13467"
 51.2049 +       x2="643.45416"
 51.2050 +       y1="355.03943"
 51.2051 +       x1="643.45416"
 51.2052 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2053 +       gradientUnits="userSpaceOnUse"
 51.2054 +       id="linearGradient6979"
 51.2055 +       xlink:href="#linearGradient5974-5-0-1-2-9"
 51.2056 +       inkscape:collect="always" />
 51.2057 +    <inkscape:perspective
 51.2058 +       id="perspective7014"
 51.2059 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2060 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2061 +       inkscape:vp_y="0 : 1000 : 0"
 51.2062 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2063 +       sodipodi:type="inkscape:persp3d" />
 51.2064 +    <linearGradient
 51.2065 +       y2="331.13467"
 51.2066 +       x2="643.45416"
 51.2067 +       y1="355.03943"
 51.2068 +       x1="643.45416"
 51.2069 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2070 +       gradientUnits="userSpaceOnUse"
 51.2071 +       id="linearGradient6833-2"
 51.2072 +       xlink:href="#linearGradient5974-5-0-1-5"
 51.2073 +       inkscape:collect="always" />
 51.2074 +    <linearGradient
 51.2075 +       id="linearGradient5974-5-0-1-5"
 51.2076 +       inkscape:collect="always">
 51.2077 +      <stop
 51.2078 +         id="stop5976-1-7-8-54"
 51.2079 +         offset="0"
 51.2080 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2081 +      <stop
 51.2082 +         id="stop5978-0-8-1-9"
 51.2083 +         offset="1"
 51.2084 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2085 +    </linearGradient>
 51.2086 +    <linearGradient
 51.2087 +       y2="331.13467"
 51.2088 +       x2="643.45416"
 51.2089 +       y1="355.03943"
 51.2090 +       x1="643.45416"
 51.2091 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2092 +       gradientUnits="userSpaceOnUse"
 51.2093 +       id="linearGradient7026"
 51.2094 +       xlink:href="#linearGradient4787"
 51.2095 +       inkscape:collect="always" />
 51.2096 +    <inkscape:perspective
 51.2097 +       id="perspective7063"
 51.2098 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2099 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2100 +       inkscape:vp_y="0 : 1000 : 0"
 51.2101 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2102 +       sodipodi:type="inkscape:persp3d" />
 51.2103 +    <inkscape:perspective
 51.2104 +       id="perspective7063-3"
 51.2105 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2106 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2107 +       inkscape:vp_y="0 : 1000 : 0"
 51.2108 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2109 +       sodipodi:type="inkscape:persp3d" />
 51.2110 +    <inkscape:perspective
 51.2111 +       id="perspective7094"
 51.2112 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2113 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2114 +       inkscape:vp_y="0 : 1000 : 0"
 51.2115 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2116 +       sodipodi:type="inkscape:persp3d" />
 51.2117 +    <inkscape:perspective
 51.2118 +       id="perspective7116"
 51.2119 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2120 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2121 +       inkscape:vp_y="0 : 1000 : 0"
 51.2122 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2123 +       sodipodi:type="inkscape:persp3d" />
 51.2124 +    <linearGradient
 51.2125 +       y2="331.13467"
 51.2126 +       x2="643.45416"
 51.2127 +       y1="355.03943"
 51.2128 +       x1="643.45416"
 51.2129 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2130 +       gradientUnits="userSpaceOnUse"
 51.2131 +       id="linearGradient6876-9"
 51.2132 +       xlink:href="#linearGradient5974-5-0-1-2-6"
 51.2133 +       inkscape:collect="always" />
 51.2134 +    <linearGradient
 51.2135 +       id="linearGradient5974-5-0-1-2-6"
 51.2136 +       inkscape:collect="always">
 51.2137 +      <stop
 51.2138 +         id="stop5976-1-7-8-5-7"
 51.2139 +         offset="0"
 51.2140 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2141 +      <stop
 51.2142 +         id="stop5978-0-8-1-2-9"
 51.2143 +         offset="1"
 51.2144 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2145 +    </linearGradient>
 51.2146 +    <marker
 51.2147 +       inkscape:stockid="Arrow2Lend"
 51.2148 +       orient="auto"
 51.2149 +       refY="0"
 51.2150 +       refX="0"
 51.2151 +       id="Arrow2Lend-97"
 51.2152 +       style="overflow:visible">
 51.2153 +      <path
 51.2154 +         id="path5372-693"
 51.2155 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.2156 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.2157 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.2158 +    </marker>
 51.2159 +    <linearGradient
 51.2160 +       y2="331.13467"
 51.2161 +       x2="643.45416"
 51.2162 +       y1="355.03943"
 51.2163 +       x1="643.45416"
 51.2164 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2165 +       gradientUnits="userSpaceOnUse"
 51.2166 +       id="linearGradient6760-5"
 51.2167 +       xlink:href="#linearGradient5974-4-1-7"
 51.2168 +       inkscape:collect="always" />
 51.2169 +    <linearGradient
 51.2170 +       id="linearGradient5974-4-1-7"
 51.2171 +       inkscape:collect="always">
 51.2172 +      <stop
 51.2173 +         id="stop5976-39-1-6"
 51.2174 +         offset="0"
 51.2175 +         style="stop-color:#000000;stop-opacity:1;" />
 51.2176 +      <stop
 51.2177 +         id="stop5978-8-9-6"
 51.2178 +         offset="1"
 51.2179 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2180 +    </linearGradient>
 51.2181 +    <marker
 51.2182 +       inkscape:stockid="Arrow2Lend"
 51.2183 +       orient="auto"
 51.2184 +       refY="0"
 51.2185 +       refX="0"
 51.2186 +       id="marker7130"
 51.2187 +       style="overflow:visible">
 51.2188 +      <path
 51.2189 +         id="path7132"
 51.2190 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.2191 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.2192 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.2193 +    </marker>
 51.2194 +    <linearGradient
 51.2195 +       y2="331.13467"
 51.2196 +       x2="643.45416"
 51.2197 +       y1="355.03943"
 51.2198 +       x1="643.45416"
 51.2199 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2200 +       gradientUnits="userSpaceOnUse"
 51.2201 +       id="linearGradient6457-9-5"
 51.2202 +       xlink:href="#linearGradient5974-5-0-8"
 51.2203 +       inkscape:collect="always" />
 51.2204 +    <linearGradient
 51.2205 +       id="linearGradient5974-5-0-8"
 51.2206 +       inkscape:collect="always">
 51.2207 +      <stop
 51.2208 +         id="stop5976-1-7-2"
 51.2209 +         offset="0"
 51.2210 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2211 +      <stop
 51.2212 +         id="stop5978-0-8-5"
 51.2213 +         offset="1"
 51.2214 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2215 +    </linearGradient>
 51.2216 +    <linearGradient
 51.2217 +       y2="331.13467"
 51.2218 +       x2="643.45416"
 51.2219 +       y1="355.03943"
 51.2220 +       x1="643.45416"
 51.2221 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2222 +       gradientUnits="userSpaceOnUse"
 51.2223 +       id="linearGradient6833-4"
 51.2224 +       xlink:href="#linearGradient5974-5-0-1-4"
 51.2225 +       inkscape:collect="always" />
 51.2226 +    <linearGradient
 51.2227 +       id="linearGradient5974-5-0-1-4"
 51.2228 +       inkscape:collect="always">
 51.2229 +      <stop
 51.2230 +         id="stop5976-1-7-8-1"
 51.2231 +         offset="0"
 51.2232 +         style="stop-color:#ff8300;stop-opacity:1" />
 51.2233 +      <stop
 51.2234 +         id="stop5978-0-8-1-6"
 51.2235 +         offset="1"
 51.2236 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2237 +    </linearGradient>
 51.2238 +    <inkscape:perspective
 51.2239 +       id="perspective7281"
 51.2240 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2241 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2242 +       inkscape:vp_y="0 : 1000 : 0"
 51.2243 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2244 +       sodipodi:type="inkscape:persp3d" />
 51.2245 +    <linearGradient
 51.2246 +       y2="331.13467"
 51.2247 +       x2="643.45416"
 51.2248 +       y1="355.03943"
 51.2249 +       x1="643.45416"
 51.2250 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2251 +       gradientUnits="userSpaceOnUse"
 51.2252 +       id="linearGradient6876-9-0"
 51.2253 +       xlink:href="#linearGradient5974-5-0-1-2-6-3"
 51.2254 +       inkscape:collect="always" />
 51.2255 +    <linearGradient
 51.2256 +       id="linearGradient5974-5-0-1-2-6-3"
 51.2257 +       inkscape:collect="always">
 51.2258 +      <stop
 51.2259 +         id="stop5976-1-7-8-5-7-6"
 51.2260 +         offset="0"
 51.2261 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2262 +      <stop
 51.2263 +         id="stop5978-0-8-1-2-9-4"
 51.2264 +         offset="1"
 51.2265 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2266 +    </linearGradient>
 51.2267 +    <marker
 51.2268 +       inkscape:stockid="Arrow2Lend"
 51.2269 +       orient="auto"
 51.2270 +       refY="0"
 51.2271 +       refX="0"
 51.2272 +       id="Arrow2Lend-92"
 51.2273 +       style="overflow:visible">
 51.2274 +      <path
 51.2275 +         id="path5372-9"
 51.2276 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.2277 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.2278 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.2279 +    </marker>
 51.2280 +    <inkscape:perspective
 51.2281 +       id="perspective7347"
 51.2282 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2283 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2284 +       inkscape:vp_y="0 : 1000 : 0"
 51.2285 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2286 +       sodipodi:type="inkscape:persp3d" />
 51.2287 +    <linearGradient
 51.2288 +       y2="331.13467"
 51.2289 +       x2="643.45416"
 51.2290 +       y1="355.03943"
 51.2291 +       x1="643.45416"
 51.2292 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2293 +       gradientUnits="userSpaceOnUse"
 51.2294 +       id="linearGradient6127-9"
 51.2295 +       xlink:href="#linearGradient5974-7-7-6"
 51.2296 +       inkscape:collect="always" />
 51.2297 +    <linearGradient
 51.2298 +       id="linearGradient5974-7-7-6"
 51.2299 +       inkscape:collect="always">
 51.2300 +      <stop
 51.2301 +         id="stop5976-3-7-3"
 51.2302 +         offset="0"
 51.2303 +         style="stop-color:#000000;stop-opacity:1;" />
 51.2304 +      <stop
 51.2305 +         id="stop5978-7-3-4"
 51.2306 +         offset="1"
 51.2307 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2308 +    </linearGradient>
 51.2309 +    <inkscape:perspective
 51.2310 +       id="perspective7590"
 51.2311 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2312 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2313 +       inkscape:vp_y="0 : 1000 : 0"
 51.2314 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2315 +       sodipodi:type="inkscape:persp3d" />
 51.2316 +    <filter
 51.2317 +       color-interpolation-filters="sRGB"
 51.2318 +       inkscape:collect="always"
 51.2319 +       id="filter6798-4">
 51.2320 +      <feGaussianBlur
 51.2321 +         inkscape:collect="always"
 51.2322 +         stdDeviation="0.4493522"
 51.2323 +         id="feGaussianBlur6800-88" />
 51.2324 +    </filter>
 51.2325 +    <inkscape:perspective
 51.2326 +       id="perspective7664"
 51.2327 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2328 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2329 +       inkscape:vp_y="0 : 1000 : 0"
 51.2330 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2331 +       sodipodi:type="inkscape:persp3d" />
 51.2332 +    <filter
 51.2333 +       color-interpolation-filters="sRGB"
 51.2334 +       inkscape:collect="always"
 51.2335 +       id="filter6798-4-4">
 51.2336 +      <feGaussianBlur
 51.2337 +         inkscape:collect="always"
 51.2338 +         stdDeviation="0.4493522"
 51.2339 +         id="feGaussianBlur6800-88-2" />
 51.2340 +    </filter>
 51.2341 +    <inkscape:perspective
 51.2342 +       id="perspective7957"
 51.2343 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2344 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2345 +       inkscape:vp_y="0 : 1000 : 0"
 51.2346 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2347 +       sodipodi:type="inkscape:persp3d" />
 51.2348 +    <marker
 51.2349 +       inkscape:stockid="TriangleOutL"
 51.2350 +       orient="auto"
 51.2351 +       refY="0"
 51.2352 +       refX="0"
 51.2353 +       id="TriangleOutL-7"
 51.2354 +       style="overflow:visible">
 51.2355 +      <path
 51.2356 +         id="path5494-8"
 51.2357 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
 51.2358 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
 51.2359 +         transform="scale(0.8,0.8)" />
 51.2360 +    </marker>
 51.2361 +    <inkscape:perspective
 51.2362 +       id="perspective7985"
 51.2363 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2364 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2365 +       inkscape:vp_y="0 : 1000 : 0"
 51.2366 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2367 +       sodipodi:type="inkscape:persp3d" />
 51.2368 +    <marker
 51.2369 +       inkscape:stockid="TriangleOutL"
 51.2370 +       orient="auto"
 51.2371 +       refY="0"
 51.2372 +       refX="0"
 51.2373 +       id="TriangleOutL-3"
 51.2374 +       style="overflow:visible">
 51.2375 +      <path
 51.2376 +         id="path5494-0"
 51.2377 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
 51.2378 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
 51.2379 +         transform="scale(0.8,0.8)" />
 51.2380 +    </marker>
 51.2381 +    <inkscape:perspective
 51.2382 +       id="perspective8013"
 51.2383 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2384 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2385 +       inkscape:vp_y="0 : 1000 : 0"
 51.2386 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2387 +       sodipodi:type="inkscape:persp3d" />
 51.2388 +    <filter
 51.2389 +       color-interpolation-filters="sRGB"
 51.2390 +       inkscape:collect="always"
 51.2391 +       id="filter6798-4-4-8">
 51.2392 +      <feGaussianBlur
 51.2393 +         inkscape:collect="always"
 51.2394 +         stdDeviation="0.4493522"
 51.2395 +         id="feGaussianBlur6800-88-2-2" />
 51.2396 +    </filter>
 51.2397 +    <inkscape:perspective
 51.2398 +       id="perspective8091"
 51.2399 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2400 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2401 +       inkscape:vp_y="0 : 1000 : 0"
 51.2402 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2403 +       sodipodi:type="inkscape:persp3d" />
 51.2404 +    <inkscape:perspective
 51.2405 +       id="perspective8128"
 51.2406 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2407 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2408 +       inkscape:vp_y="0 : 1000 : 0"
 51.2409 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2410 +       sodipodi:type="inkscape:persp3d" />
 51.2411 +    <marker
 51.2412 +       inkscape:stockid="TriangleOutL"
 51.2413 +       orient="auto"
 51.2414 +       refY="0"
 51.2415 +       refX="0"
 51.2416 +       id="TriangleOutL-2"
 51.2417 +       style="overflow:visible">
 51.2418 +      <path
 51.2419 +         id="path5494-5"
 51.2420 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
 51.2421 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
 51.2422 +         transform="scale(0.8,0.8)" />
 51.2423 +    </marker>
 51.2424 +    <inkscape:perspective
 51.2425 +       id="perspective8128-5"
 51.2426 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2427 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2428 +       inkscape:vp_y="0 : 1000 : 0"
 51.2429 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2430 +       sodipodi:type="inkscape:persp3d" />
 51.2431 +    <marker
 51.2432 +       inkscape:stockid="TriangleOutL"
 51.2433 +       orient="auto"
 51.2434 +       refY="0"
 51.2435 +       refX="0"
 51.2436 +       id="TriangleOutL-1"
 51.2437 +       style="overflow:visible">
 51.2438 +      <path
 51.2439 +         id="path5494-2"
 51.2440 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
 51.2441 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
 51.2442 +         transform="scale(0.8,0.8)" />
 51.2443 +    </marker>
 51.2444 +    <inkscape:perspective
 51.2445 +       id="perspective8169"
 51.2446 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2447 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2448 +       inkscape:vp_y="0 : 1000 : 0"
 51.2449 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2450 +       sodipodi:type="inkscape:persp3d" />
 51.2451 +    <marker
 51.2452 +       inkscape:stockid="TriangleOutL"
 51.2453 +       orient="auto"
 51.2454 +       refY="0"
 51.2455 +       refX="0"
 51.2456 +       id="TriangleOutL-26"
 51.2457 +       style="overflow:visible">
 51.2458 +      <path
 51.2459 +         id="path5494-4"
 51.2460 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
 51.2461 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
 51.2462 +         transform="scale(0.8,0.8)" />
 51.2463 +    </marker>
 51.2464 +    <marker
 51.2465 +       inkscape:stockid="TriangleOutL"
 51.2466 +       orient="auto"
 51.2467 +       refY="0"
 51.2468 +       refX="0"
 51.2469 +       id="marker8175"
 51.2470 +       style="overflow:visible">
 51.2471 +      <path
 51.2472 +         id="path8177"
 51.2473 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
 51.2474 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
 51.2475 +         transform="scale(0.8,0.8)" />
 51.2476 +    </marker>
 51.2477 +    <filter
 51.2478 +       color-interpolation-filters="sRGB"
 51.2479 +       inkscape:collect="always"
 51.2480 +       id="filter6798-4-4-8-0">
 51.2481 +      <feGaussianBlur
 51.2482 +         inkscape:collect="always"
 51.2483 +         stdDeviation="0.4493522"
 51.2484 +         id="feGaussianBlur6800-88-2-2-7" />
 51.2485 +    </filter>
 51.2486 +    <inkscape:perspective
 51.2487 +       id="perspective8226"
 51.2488 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2489 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2490 +       inkscape:vp_y="0 : 1000 : 0"
 51.2491 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2492 +       sodipodi:type="inkscape:persp3d" />
 51.2493 +    <linearGradient
 51.2494 +       y2="331.13467"
 51.2495 +       x2="643.45416"
 51.2496 +       y1="355.03943"
 51.2497 +       x1="643.45416"
 51.2498 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2499 +       gradientUnits="userSpaceOnUse"
 51.2500 +       id="linearGradient6876-9-3"
 51.2501 +       xlink:href="#linearGradient5974-5-0-1-2-6-1"
 51.2502 +       inkscape:collect="always" />
 51.2503 +    <linearGradient
 51.2504 +       id="linearGradient5974-5-0-1-2-6-1"
 51.2505 +       inkscape:collect="always">
 51.2506 +      <stop
 51.2507 +         id="stop5976-1-7-8-5-7-0"
 51.2508 +         offset="0"
 51.2509 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2510 +      <stop
 51.2511 +         id="stop5978-0-8-1-2-9-6"
 51.2512 +         offset="1"
 51.2513 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2514 +    </linearGradient>
 51.2515 +    <linearGradient
 51.2516 +       y2="331.13467"
 51.2517 +       x2="643.45416"
 51.2518 +       y1="355.03943"
 51.2519 +       x1="643.45416"
 51.2520 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2521 +       gradientUnits="userSpaceOnUse"
 51.2522 +       id="linearGradient6833-4-7"
 51.2523 +       xlink:href="#linearGradient5974-5-0-1-4-5"
 51.2524 +       inkscape:collect="always" />
 51.2525 +    <linearGradient
 51.2526 +       id="linearGradient5974-5-0-1-4-5"
 51.2527 +       inkscape:collect="always">
 51.2528 +      <stop
 51.2529 +         id="stop5976-1-7-8-1-0"
 51.2530 +         offset="0"
 51.2531 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2532 +      <stop
 51.2533 +         id="stop5978-0-8-1-6-0"
 51.2534 +         offset="1"
 51.2535 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2536 +    </linearGradient>
 51.2537 +    <linearGradient
 51.2538 +       y2="331.13467"
 51.2539 +       x2="643.45416"
 51.2540 +       y1="355.03943"
 51.2541 +       x1="643.45416"
 51.2542 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2543 +       gradientUnits="userSpaceOnUse"
 51.2544 +       id="linearGradient6457-9-5-4"
 51.2545 +       xlink:href="#linearGradient5974-5-0-8-5"
 51.2546 +       inkscape:collect="always" />
 51.2547 +    <linearGradient
 51.2548 +       id="linearGradient5974-5-0-8-5"
 51.2549 +       inkscape:collect="always">
 51.2550 +      <stop
 51.2551 +         id="stop5976-1-7-2-4"
 51.2552 +         offset="0"
 51.2553 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2554 +      <stop
 51.2555 +         id="stop5978-0-8-5-9"
 51.2556 +         offset="1"
 51.2557 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2558 +    </linearGradient>
 51.2559 +    <linearGradient
 51.2560 +       y2="331.13467"
 51.2561 +       x2="643.45416"
 51.2562 +       y1="355.03943"
 51.2563 +       x1="643.45416"
 51.2564 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2565 +       gradientUnits="userSpaceOnUse"
 51.2566 +       id="linearGradient8254"
 51.2567 +       xlink:href="#linearGradient5974-5-0-1-4-5"
 51.2568 +       inkscape:collect="always" />
 51.2569 +    <inkscape:perspective
 51.2570 +       id="perspective8325"
 51.2571 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2572 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2573 +       inkscape:vp_y="0 : 1000 : 0"
 51.2574 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2575 +       sodipodi:type="inkscape:persp3d" />
 51.2576 +    <inkscape:perspective
 51.2577 +       id="perspective8354"
 51.2578 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2579 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2580 +       inkscape:vp_y="0 : 1000 : 0"
 51.2581 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2582 +       sodipodi:type="inkscape:persp3d" />
 51.2583 +    <linearGradient
 51.2584 +       y2="331.13467"
 51.2585 +       x2="643.45416"
 51.2586 +       y1="355.03943"
 51.2587 +       x1="643.45416"
 51.2588 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2589 +       gradientUnits="userSpaceOnUse"
 51.2590 +       id="linearGradient5939-1-20"
 51.2591 +       xlink:href="#linearGradient5974-4-70"
 51.2592 +       inkscape:collect="always" />
 51.2593 +    <linearGradient
 51.2594 +       id="linearGradient5974-4-70"
 51.2595 +       inkscape:collect="always">
 51.2596 +      <stop
 51.2597 +         id="stop5976-39-6"
 51.2598 +         offset="0"
 51.2599 +         style="stop-color:#000000;stop-opacity:1;" />
 51.2600 +      <stop
 51.2601 +         id="stop5978-8-07"
 51.2602 +         offset="1"
 51.2603 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2604 +    </linearGradient>
 51.2605 +    <linearGradient
 51.2606 +       y2="331.13467"
 51.2607 +       x2="643.45416"
 51.2608 +       y1="355.03943"
 51.2609 +       x1="643.45416"
 51.2610 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2611 +       gradientUnits="userSpaceOnUse"
 51.2612 +       id="linearGradient8366"
 51.2613 +       xlink:href="#linearGradient5974-4-70"
 51.2614 +       inkscape:collect="always" />
 51.2615 +    <inkscape:perspective
 51.2616 +       id="perspective4417"
 51.2617 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2618 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2619 +       inkscape:vp_y="0 : 1000 : 0"
 51.2620 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2621 +       sodipodi:type="inkscape:persp3d" />
 51.2622 +    <inkscape:perspective
 51.2623 +       id="perspective4442"
 51.2624 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2625 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2626 +       inkscape:vp_y="0 : 1000 : 0"
 51.2627 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2628 +       sodipodi:type="inkscape:persp3d" />
 51.2629 +    <marker
 51.2630 +       inkscape:stockid="Arrow2Lend"
 51.2631 +       orient="auto"
 51.2632 +       refY="0"
 51.2633 +       refX="0"
 51.2634 +       id="Arrow2Lend-09"
 51.2635 +       style="overflow:visible">
 51.2636 +      <path
 51.2637 +         id="path5372-48"
 51.2638 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.2639 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.2640 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.2641 +    </marker>
 51.2642 +    <inkscape:perspective
 51.2643 +       id="perspective4485"
 51.2644 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2645 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2646 +       inkscape:vp_y="0 : 1000 : 0"
 51.2647 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2648 +       sodipodi:type="inkscape:persp3d" />
 51.2649 +    <marker
 51.2650 +       inkscape:stockid="TriangleOutL"
 51.2651 +       orient="auto"
 51.2652 +       refY="0"
 51.2653 +       refX="0"
 51.2654 +       id="TriangleOutL-24"
 51.2655 +       style="overflow:visible">
 51.2656 +      <path
 51.2657 +         id="path5494-55"
 51.2658 +         d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
 51.2659 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
 51.2660 +         transform="scale(0.8,0.8)" />
 51.2661 +    </marker>
 51.2662 +    <inkscape:perspective
 51.2663 +       id="perspective4513"
 51.2664 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2665 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2666 +       inkscape:vp_y="0 : 1000 : 0"
 51.2667 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2668 +       sodipodi:type="inkscape:persp3d" />
 51.2669 +    <linearGradient
 51.2670 +       y2="331.13467"
 51.2671 +       x2="643.45416"
 51.2672 +       y1="355.03943"
 51.2673 +       x1="643.45416"
 51.2674 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2675 +       gradientUnits="userSpaceOnUse"
 51.2676 +       id="linearGradient6979-2"
 51.2677 +       xlink:href="#linearGradient5974-5-0-1-2-9-7"
 51.2678 +       inkscape:collect="always" />
 51.2679 +    <linearGradient
 51.2680 +       id="linearGradient5974-5-0-1-2-9-7"
 51.2681 +       inkscape:collect="always">
 51.2682 +      <stop
 51.2683 +         id="stop5976-1-7-8-5-4-6"
 51.2684 +         offset="0"
 51.2685 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2686 +      <stop
 51.2687 +         id="stop5978-0-8-1-2-1-1"
 51.2688 +         offset="1"
 51.2689 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2690 +    </linearGradient>
 51.2691 +    <inkscape:perspective
 51.2692 +       id="perspective4626"
 51.2693 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2694 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2695 +       inkscape:vp_y="0 : 1000 : 0"
 51.2696 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2697 +       sodipodi:type="inkscape:persp3d" />
 51.2698 +    <marker
 51.2699 +       inkscape:stockid="Arrow2Lend"
 51.2700 +       orient="auto"
 51.2701 +       refY="0"
 51.2702 +       refX="0"
 51.2703 +       id="Arrow2Lend-18"
 51.2704 +       style="overflow:visible">
 51.2705 +      <path
 51.2706 +         id="path5372-92"
 51.2707 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 51.2708 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 51.2709 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 51.2710 +    </marker>
 51.2711 +    <inkscape:perspective
 51.2712 +       id="perspective4654"
 51.2713 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2714 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2715 +       inkscape:vp_y="0 : 1000 : 0"
 51.2716 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2717 +       sodipodi:type="inkscape:persp3d" />
 51.2718 +    <linearGradient
 51.2719 +       y2="331.13467"
 51.2720 +       x2="643.45416"
 51.2721 +       y1="355.03943"
 51.2722 +       x1="643.45416"
 51.2723 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2724 +       gradientUnits="userSpaceOnUse"
 51.2725 +       id="linearGradient6833-5"
 51.2726 +       xlink:href="#linearGradient5974-5-0-1-43"
 51.2727 +       inkscape:collect="always" />
 51.2728 +    <linearGradient
 51.2729 +       id="linearGradient5974-5-0-1-43"
 51.2730 +       inkscape:collect="always">
 51.2731 +      <stop
 51.2732 +         id="stop5976-1-7-8-12"
 51.2733 +         offset="0"
 51.2734 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2735 +      <stop
 51.2736 +         id="stop5978-0-8-1-3"
 51.2737 +         offset="1"
 51.2738 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2739 +    </linearGradient>
 51.2740 +    <linearGradient
 51.2741 +       y2="331.13467"
 51.2742 +       x2="643.45416"
 51.2743 +       y1="355.03943"
 51.2744 +       x1="643.45416"
 51.2745 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2746 +       gradientUnits="userSpaceOnUse"
 51.2747 +       id="linearGradient6457-9-3"
 51.2748 +       xlink:href="#linearGradient5974-5-0-4"
 51.2749 +       inkscape:collect="always" />
 51.2750 +    <linearGradient
 51.2751 +       id="linearGradient5974-5-0-4"
 51.2752 +       inkscape:collect="always">
 51.2753 +      <stop
 51.2754 +         id="stop5976-1-7-1"
 51.2755 +         offset="0"
 51.2756 +         style="stop-color:#ff2b00;stop-opacity:1" />
 51.2757 +      <stop
 51.2758 +         id="stop5978-0-8-13"
 51.2759 +         offset="1"
 51.2760 +         style="stop-color:#ffffff;stop-opacity:1" />
 51.2761 +    </linearGradient>
 51.2762 +    <linearGradient
 51.2763 +       y2="331.13467"
 51.2764 +       x2="643.45416"
 51.2765 +       y1="355.03943"
 51.2766 +       x1="643.45416"
 51.2767 +       gradientTransform="matrix(0.6239237,0,0,2.6619952,-343.04076,-818.0877)"
 51.2768 +       gradientUnits="userSpaceOnUse"
 51.2769 +       id="linearGradient4674"
 51.2770 +       xlink:href="#linearGradient5974-5-0-1-43"
 51.2771 +       inkscape:collect="always" />
 51.2772 +    <inkscape:perspective
 51.2773 +       id="perspective4725"
 51.2774 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2775 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2776 +       inkscape:vp_y="0 : 1000 : 0"
 51.2777 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2778 +       sodipodi:type="inkscape:persp3d" />
 51.2779 +    <linearGradient
 51.2780 +       y2="68.79892"
 51.2781 +       x2="480.00003"
 51.2782 +       y1="304.49695"
 51.2783 +       x1="480.00003"
 51.2784 +       gradientTransform="matrix(0.36596518,0,0,2.9784642,438.84889,-158.01615)"
 51.2785 +       gradientUnits="userSpaceOnUse"
 51.2786 +       id="linearGradient5849-4-9"
 51.2787 +       xlink:href="#linearGradient7274-7-5-4-5-8"
 51.2788 +       inkscape:collect="always" />
 51.2789 +    <linearGradient
 51.2790 +       id="linearGradient7274-7-5-4-5-8"
 51.2791 +       inkscape:collect="always">
 51.2792 +      <stop
 51.2793 +         id="stop7276-4-5-9-9-6"
 51.2794 +         offset="0"
 51.2795 +         style="stop-color:#000000;stop-opacity:1;" />
 51.2796 +      <stop
 51.2797 +         id="stop7278-3-1-6-8-5"
 51.2798 +         offset="1"
 51.2799 +         style="stop-color:#0089f9;stop-opacity:1" />
 51.2800 +    </linearGradient>
 51.2801 +    <linearGradient
 51.2802 +       y2="68.79892"
 51.2803 +       x2="480.00003"
 51.2804 +       y1="304.49695"
 51.2805 +       x1="480.00003"
 51.2806 +       gradientTransform="matrix(0.36739965,0,0,0.3439599,-462.04861,-4.2987802)"
 51.2807 +       gradientUnits="userSpaceOnUse"
 51.2808 +       id="linearGradient4734"
 51.2809 +       xlink:href="#linearGradient7274-7-5-4-5-8"
 51.2810 +       inkscape:collect="always" />
 51.2811 +    <inkscape:perspective
 51.2812 +       id="perspective4763"
 51.2813 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 51.2814 +       inkscape:vp_z="1 : 0.5 : 1"
 51.2815 +       inkscape:vp_y="0 : 1000 : 0"
 51.2816 +       inkscape:vp_x="0 : 0.5 : 1"
 51.2817 +       sodipodi:type="inkscape:persp3d" />
 51.2818 +  </defs>
 51.2819 +  <sodipodi:namedview
 51.2820 +     id="base"
 51.2821 +     pagecolor="#ffffff"
 51.2822 +     bordercolor="#666666"
 51.2823 +     borderopacity="1.0"
 51.2824 +     inkscape:pageopacity="0.0"
 51.2825 +     inkscape:pageshadow="2"
 51.2826 +     inkscape:zoom="0.42375443"
 51.2827 +     inkscape:cx="-121.4113"
 51.2828 +     inkscape:cy="651.34757"
 51.2829 +     inkscape:document-units="px"
 51.2830 +     inkscape:current-layer="layer1"
 51.2831 +     showgrid="false"
 51.2832 +     inkscape:window-width="1024"
 51.2833 +     inkscape:window-height="718"
 51.2834 +     inkscape:window-x="-8"
 51.2835 +     inkscape:window-y="-8"
 51.2836 +     inkscape:window-maximized="1"
 51.2837 +     inkscape:snap-bbox="true" />
 51.2838 +  <metadata
 51.2839 +     id="metadata7">
 51.2840 +    <rdf:RDF>
 51.2841 +      <cc:Work
 51.2842 +         rdf:about="">
 51.2843 +        <dc:format>image/svg+xml</dc:format>
 51.2844 +        <dc:type
 51.2845 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 51.2846 +        <dc:title></dc:title>
 51.2847 +      </cc:Work>
 51.2848 +    </rdf:RDF>
 51.2849 +  </metadata>
 51.2850 +  <g
 51.2851 +     inkscape:label="Layer 1"
 51.2852 +     inkscape:groupmode="layer"
 51.2853 +     id="layer1">
 51.2854 +    <rect
 51.2855 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 8;stroke-dashoffset:0"
 51.2856 +       id="rect6903"
 51.2857 +       width="225.41023"
 51.2858 +       height="127.48096"
 51.2859 +       x="297.29996"
 51.2860 +       y="251.3739" />
 51.2861 +    <flowRoot
 51.2862 +       xml:space="preserve"
 51.2863 +       id="flowRoot5050"
 51.2864 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"><flowRegion
 51.2865 +         id="flowRegion5052"><rect
 51.2866 +           id="rect5054"
 51.2867 +           width="195.96297"
 51.2868 +           height="47.506172"
 51.2869 +           x="524.26453"
 51.2870 +           y="256.63379" /></flowRegion><flowPara
 51.2871 +         id="flowPara5056">COMPILER</flowPara></flowRoot>    <a
 51.2872 +       id="a5260" />
 51.2873 +    <text
 51.2874 +       xml:space="preserve"
 51.2875 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2876 +       x="311.33511"
 51.2877 +       y="140.41333"
 51.2878 +       id="text5340"><tspan
 51.2879 +         sodipodi:role="line"
 51.2880 +         id="tspan5342"
 51.2881 +         x="311.33511"
 51.2882 +         y="140.41333" /></text>
 51.2883 +    <text
 51.2884 +       xml:space="preserve"
 51.2885 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2886 +       x="691.60516"
 51.2887 +       y="529.59027"
 51.2888 +       id="text5058-3"><tspan
 51.2889 +         sodipodi:role="line"
 51.2890 +         id="tspan5060-3"
 51.2891 +         x="691.60516"
 51.2892 +         y="529.59027">VIRTUAL MACHINE</tspan></text>
 51.2893 +    <rect
 51.2894 +       style="fill:none;stroke:#ffffff;stroke-width:3.14547324;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798)"
 51.2895 +       id="rect5168-6"
 51.2896 +       width="249.40741"
 51.2897 +       height="180.69312"
 51.2898 +       x="251.10405"
 51.2899 +       y="80.182289"
 51.2900 +       transform="matrix(0.51731928,0,0,0.330184,304.25177,32.457505)" />
 51.2901 +    <text
 51.2902 +       xml:space="preserve"
 51.2903 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2904 +       x="439.67813"
 51.2905 +       y="81.493286"
 51.2906 +       id="text5214-9"><tspan
 51.2907 +         sodipodi:role="line"
 51.2908 +         id="tspan5216-0"
 51.2909 +         x="439.67813"
 51.2910 +         y="81.493286">PATTERN </tspan><tspan
 51.2911 +         sodipodi:role="line"
 51.2912 +         x="439.67813"
 51.2913 +         y="104.63079"
 51.2914 +         id="tspan6707">EVALUATION</tspan></text>
 51.2915 +    <text
 51.2916 +       xml:space="preserve"
 51.2917 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2918 +       x="395.81879"
 51.2919 +       y="547.15924"
 51.2920 +       id="text5214-9-9"><tspan
 51.2921 +         sodipodi:role="line"
 51.2922 +         x="395.81879"
 51.2923 +         y="547.15924"
 51.2924 +         id="tspan6707-3">CONSTRAINT</tspan><tspan
 51.2925 +         sodipodi:role="line"
 51.2926 +         x="395.81879"
 51.2927 +         y="570.29675"
 51.2928 +         id="tspan6752">ENFORCEMENT</tspan></text>
 51.2929 +    <rect
 51.2930 +       style="fill:none;stroke:#ffffff;stroke-width:2.88542032;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-1)"
 51.2931 +       id="rect5168-6-7"
 51.2932 +       width="249.40741"
 51.2933 +       height="180.69312"
 51.2934 +       x="251.10405"
 51.2935 +       y="80.182289"
 51.2936 +       transform="matrix(0.61570086,0,0,0.32968469,234.44465,498.46106)" />
 51.2937 +    <text
 51.2938 +       xml:space="preserve"
 51.2939 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2940 +       x="340.89093"
 51.2941 +       y="602.45917"
 51.2942 +       id="text5058-3-9"><tspan
 51.2943 +         sodipodi:role="line"
 51.2944 +         id="tspan5060-3-0"
 51.2945 +         x="340.89093"
 51.2946 +         y="602.45917">CLIENT</tspan></text>
 51.2947 +    <text
 51.2948 +       xml:space="preserve"
 51.2949 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2950 +       x="747.70685"
 51.2951 +       y="780.97467"
 51.2952 +       id="text5058-3-1"><tspan
 51.2953 +         sodipodi:role="line"
 51.2954 +         id="tspan5060-3-7"
 51.2955 +         x="747.70685"
 51.2956 +         y="780.97467">VIRTUAL MACHINE</tspan></text>
 51.2957 +    <text
 51.2958 +       xml:space="preserve"
 51.2959 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2960 +       x="339.34232"
 51.2961 +       y="782.24371"
 51.2962 +       id="text5058-3-1-0"><tspan
 51.2963 +         sodipodi:role="line"
 51.2964 +         id="tspan5060-3-7-9"
 51.2965 +         x="339.34232"
 51.2966 +         y="782.24371">DFLOW</tspan></text>
 51.2967 +    <text
 51.2968 +       xml:space="preserve"
 51.2969 +       style="font-size:29.08715248px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.2970 +       x="90.045647"
 51.2971 +       y="782.22339"
 51.2972 +       id="text5058-3-1-0-6"><tspan
 51.2973 +         sodipodi:role="line"
 51.2974 +         id="tspan5060-3-7-9-1"
 51.2975 +         x="90.045639"
 51.2976 +         y="782.22339">DMAP</tspan></text>
 51.2977 +    <rect
 51.2978 +       style="fill:url(#linearGradient5811);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.3180463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 51.2979 +       id="rect2816-4-7-7-3"
 51.2980 +       width="16.284626"
 51.2981 +       height="698.53754"
 51.2982 +       x="39.708412"
 51.2983 +       y="49.445053" />
 51.2984 +    <rect
 51.2985 +       style="fill:url(#linearGradient5849);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.3180463px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 51.2986 +       id="rect2816-4-7-7-3-9"
 51.2987 +       width="16.284626"
 51.2988 +       height="698.53754"
 51.2989 +       x="278.56961"
 51.2990 +       y="50.250847" />
 51.2991 +    <rect
 51.2992 +       style="fill:url(#linearGradient5849-4);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.04403746px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 51.2993 +       id="rect2816-4-7-7-3-0"
 51.2994 +       width="175.66325"
 51.2995 +       height="697.81152"
 51.2996 +       x="526.67993"
 51.2997 +       y="49.002262" />
 51.2998 +    <path
 51.2999 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3000 +       d="M 56.095066,80.976022 275.71208,81.51527"
 51.3001 +       id="path5346-3-6-2-4-6-0-6"
 51.3002 +       inkscape:connector-type="polyline" />
 51.3003 +    <a
 51.3004 +       id="a7773"
 51.3005 +       transform="matrix(1.4123149,0,0,0.20681824,59.31436,37.949282)">
 51.3006 +      <rect
 51.3007 +         y="66.0532"
 51.3008 +         x="8.9369535"
 51.3009 +         height="121.94473"
 51.3010 +         width="98.977188"
 51.3011 +         id="rect6252-5"
 51.3012 +         style="fill:url(#linearGradient5939);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3013 +         ry="0" />
 51.3014 +    </a>
 51.3015 +    <text
 51.3016 +       xml:space="preserve"
 51.3017 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3018 +       x="79.145798"
 51.3019 +       y="71.150673"
 51.3020 +       id="text6264-2"><tspan
 51.3021 +         sodipodi:role="line"
 51.3022 +         x="79.145798"
 51.3023 +         y="71.150673"
 51.3024 +         id="tspan7771">FLIGHT PLAN</tspan></text>
 51.3025 +    <path
 51.3026 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3027 +       d="M 294.66668,83.641848 523.6523,84.179349"
 51.3028 +       id="path5346-3-6-2-4-6-0-6-1"
 51.3029 +       inkscape:connector-type="polyline" />
 51.3030 +    <text
 51.3031 +       xml:space="preserve"
 51.3032 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3033 +       x="308.90451"
 51.3034 +       y="74.032501"
 51.3035 +       id="text6264-2-7"><tspan
 51.3036 +         sodipodi:role="line"
 51.3037 +         x="308.90451"
 51.3038 +         y="74.032501"
 51.3039 +         id="tspan7771-5">FLIGHT PLAN</tspan></text>
 51.3040 +    <path
 51.3041 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3042 +       d="m 526.30445,136.59795 -228.98627,0.015"
 51.3043 +       id="path5346-3-6-2-4-6-0-6-1-7"
 51.3044 +       inkscape:connector-type="polyline" />
 51.3045 +    <a
 51.3046 +       id="a7773-6-3"
 51.3047 +       transform="matrix(1.6615132,0,0,0.20681824,333.28998,92.91392)">
 51.3048 +      <rect
 51.3049 +         y="66.0532"
 51.3050 +         x="8.9369535"
 51.3051 +         height="121.94473"
 51.3052 +         width="98.977188"
 51.3053 +         id="rect6252-5-5-5"
 51.3054 +         style="fill:url(#linearGradient6127);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3055 +         ry="0" />
 51.3056 +    </a>
 51.3057 +    <text
 51.3058 +       xml:space="preserve"
 51.3059 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3060 +       x="351.2923"
 51.3061 +       y="126.1153"
 51.3062 +       id="text6264-2-7-9"><tspan
 51.3063 +         sodipodi:role="line"
 51.3064 +         x="351.2923"
 51.3065 +         y="126.1153"
 51.3066 +         id="tspan7771-5-9">FLOW POINT IDS</tspan></text>
 51.3067 +    <path
 51.3068 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3069 +       d="m 278.28671,188.14036 -218.370482,0.0148"
 51.3070 +       id="path5346-3-6-2-4-6-0-6-1-7-8"
 51.3071 +       inkscape:connector-type="polyline" />
 51.3072 +    <a
 51.3073 +       id="a7773-6-3-8"
 51.3074 +       transform="matrix(1.6615132,0,0,0.20681824,85.603844,145.27366)">
 51.3075 +      <rect
 51.3076 +         y="66.0532"
 51.3077 +         x="8.9369535"
 51.3078 +         height="121.94473"
 51.3079 +         width="98.977188"
 51.3080 +         id="rect6252-5-5-5-3"
 51.3081 +         style="fill:url(#linearGradient6245);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3082 +         ry="0" />
 51.3083 +    </a>
 51.3084 +    <text
 51.3085 +       xml:space="preserve"
 51.3086 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3087 +       x="103.60616"
 51.3088 +       y="178.47504"
 51.3089 +       id="text6264-2-7-9-5"><tspan
 51.3090 +         sodipodi:role="line"
 51.3091 +         x="103.60616"
 51.3092 +         y="178.47504"
 51.3093 +         id="tspan7771-5-9-1">FLOW POINT IDS</tspan></text>
 51.3094 +    <path
 51.3095 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3096 +       d="m 56.145993,247.66011 218.618857,0.53941"
 51.3097 +       id="path5346-3-6-2-4-6-0-6-7"
 51.3098 +       inkscape:connector-type="polyline" />
 51.3099 +    <a
 51.3100 +       id="a7773-8-8"
 51.3101 +       transform="matrix(1.5309808,0,0,0.20681824,68.3095,197.02952)">
 51.3102 +      <rect
 51.3103 +         y="66.0532"
 51.3104 +         x="8.9369535"
 51.3105 +         height="121.94473"
 51.3106 +         width="98.977188"
 51.3107 +         id="rect6252-5-3-1"
 51.3108 +         style="fill:url(#linearGradient6549-6);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3109 +         ry="0" />
 51.3110 +    </a>
 51.3111 +    <text
 51.3112 +       xml:space="preserve"
 51.3113 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3114 +       x="88.399597"
 51.3115 +       y="230.03387"
 51.3116 +       id="text6264-2-8-1"><tspan
 51.3117 +         sodipodi:role="line"
 51.3118 +         x="88.399597"
 51.3119 +         y="230.03387"
 51.3120 +         id="tspan7771-3-74">FLIGHT PLAN 2</tspan></text>
 51.3121 +    <a
 51.3122 +       id="a7773-8"
 51.3123 +       transform="matrix(1.4953832,0,0,0.20681824,57.10963,204.40064)">
 51.3124 +      <rect
 51.3125 +         y="66.0532"
 51.3126 +         x="8.9369535"
 51.3127 +         height="121.94473"
 51.3128 +         width="98.977188"
 51.3129 +         id="rect6252-5-3"
 51.3130 +         style="fill:url(#linearGradient5939-1);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3131 +         ry="0" />
 51.3132 +    </a>
 51.3133 +    <text
 51.3134 +       xml:space="preserve"
 51.3135 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3136 +       x="77.664833"
 51.3137 +       y="237.60204"
 51.3138 +       id="text6264-2-8"><tspan
 51.3139 +         sodipodi:role="line"
 51.3140 +         x="77.664833"
 51.3141 +         y="237.60204"
 51.3142 +         id="tspan7771-3">FLIGHT PLAN 1</tspan></text>
 51.3143 +    <a
 51.3144 +       id="a7773-9"
 51.3145 +       transform="matrix(1.4123149,0,0,0.20681824,296.32386,39.719092)">
 51.3146 +      <rect
 51.3147 +         y="66.0532"
 51.3148 +         x="8.9369535"
 51.3149 +         height="121.94473"
 51.3150 +         width="98.977188"
 51.3151 +         id="rect6252-5-9"
 51.3152 +         style="fill:url(#linearGradient6457);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3153 +         ry="0" />
 51.3154 +    </a>
 51.3155 +    <text
 51.3156 +       xml:space="preserve"
 51.3157 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3158 +       x="316.1553"
 51.3159 +       y="72.920486"
 51.3160 +       id="text6264-2-6"><tspan
 51.3161 +         sodipodi:role="line"
 51.3162 +         x="316.1553"
 51.3163 +         y="72.920486"
 51.3164 +         id="tspan7771-8">FLIGHT PLAN</tspan></text>
 51.3165 +    <text
 51.3166 +       xml:space="preserve"
 51.3167 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3168 +       x="314.50708"
 51.3169 +       y="278.97272"
 51.3170 +       id="text6264-2-7-1"><tspan
 51.3171 +         sodipodi:role="line"
 51.3172 +         x="314.50708"
 51.3173 +         y="278.97272"
 51.3174 +         id="tspan7771-5-2">FLIGHT PLAN</tspan></text>
 51.3175 +    <a
 51.3176 +       id="a7773-9-6-9"
 51.3177 +       transform="matrix(0.55792069,0,0,0.20681824,448.17159,244.47384)">
 51.3178 +      <rect
 51.3179 +         y="66.0532"
 51.3180 +         x="8.9369535"
 51.3181 +         height="121.94473"
 51.3182 +         width="98.977188"
 51.3183 +         id="rect6252-5-9-2-5"
 51.3184 +         style="fill:url(#linearGradient6833);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3185 +         ry="0" />
 51.3186 +    </a>
 51.3187 +    <text
 51.3188 +       xml:space="preserve"
 51.3189 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3190 +       x="462.06183"
 51.3191 +       y="277.04059"
 51.3192 +       id="text6264-2-7-4-5"><tspan
 51.3193 +         sodipodi:role="line"
 51.3194 +         x="462.06183"
 51.3195 +         y="277.04059"
 51.3196 +         id="tspan7771-5-6-8">ETD</tspan></text>
 51.3197 +    <a
 51.3198 +       id="a7773-9-6"
 51.3199 +       transform="matrix(1.4123149,0,0,0.20681824,295.92644,244.65931)">
 51.3200 +      <rect
 51.3201 +         y="66.0532"
 51.3202 +         x="8.9369535"
 51.3203 +         height="121.94473"
 51.3204 +         width="98.977188"
 51.3205 +         id="rect6252-5-9-2"
 51.3206 +         style="fill:url(#linearGradient6457-9);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3207 +         ry="0" />
 51.3208 +    </a>
 51.3209 +    <text
 51.3210 +       xml:space="preserve"
 51.3211 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3212 +       x="315.75787"
 51.3213 +       y="277.86072"
 51.3214 +       id="text6264-2-6-6"><tspan
 51.3215 +         sodipodi:role="line"
 51.3216 +         x="315.75787"
 51.3217 +         y="277.86072"
 51.3218 +         id="tspan7771-8-5">FLIGHT PLAN</tspan></text>
 51.3219 +    <path
 51.3220 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3221 +       d="m 294.68776,317.00679 228.98562,0.5375"
 51.3222 +       id="path5346-3-6-2-4-6-0-6-1-6"
 51.3223 +       inkscape:connector-type="polyline" />
 51.3224 +    <a
 51.3225 +       id="a7773-8-7"
 51.3226 +       transform="matrix(1.5191142,0,0,0.20681824,295.03373,273.50487)">
 51.3227 +      <rect
 51.3228 +         y="66.0532"
 51.3229 +         x="8.9369535"
 51.3230 +         height="121.94473"
 51.3231 +         width="98.977188"
 51.3232 +         id="rect6252-5-3-6"
 51.3233 +         style="fill:url(#linearGradient6760);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3234 +         ry="0" />
 51.3235 +    </a>
 51.3236 +    <text
 51.3237 +       xml:space="preserve"
 51.3238 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3239 +       x="315.79556"
 51.3240 +       y="306.70624"
 51.3241 +       id="text6264-2-8-2"><tspan
 51.3242 +         sodipodi:role="line"
 51.3243 +         x="315.79556"
 51.3244 +         y="306.70624"
 51.3245 +         id="tspan7771-3-9">FLIGHT PLAN 1</tspan></text>
 51.3246 +    <path
 51.3247 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3248 +       d="m 526.03723,362.72615 -228.756,0.015"
 51.3249 +       id="path5346-3-6-2-4-6-0-6-1-7-3"
 51.3250 +       inkscape:connector-type="polyline" />
 51.3251 +    <a
 51.3252 +       id="a7773-9-6-9-5"
 51.3253 +       transform="matrix(0.55792069,0,0,0.20681824,377.99817,319.51982)">
 51.3254 +      <rect
 51.3255 +         y="66.0532"
 51.3256 +         x="8.9369535"
 51.3257 +         height="121.94473"
 51.3258 +         width="98.977188"
 51.3259 +         id="rect6252-5-9-2-5-8"
 51.3260 +         style="fill:url(#linearGradient6876);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3261 +         ry="0" />
 51.3262 +    </a>
 51.3263 +    <text
 51.3264 +       xml:space="preserve"
 51.3265 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3266 +       x="391.88843"
 51.3267 +       y="352.55231"
 51.3268 +       id="text6264-2-7-4-5-6"><tspan
 51.3269 +         sodipodi:role="line"
 51.3270 +         x="391.88843"
 51.3271 +         y="352.55231"
 51.3272 +         id="tspan7771-5-6-8-7">ATD</tspan></text>
 51.3273 +    <rect
 51.3274 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 8;stroke-dashoffset:0"
 51.3275 +       id="rect6903-7"
 51.3276 +       width="224.38818"
 51.3277 +       height="73.364723"
 51.3278 +       x="298.04117"
 51.3279 +       y="515.21033" />
 51.3280 +    <text
 51.3281 +       xml:space="preserve"
 51.3282 +       style="font-size:21.29715729px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3283 +       x="325.93475"
 51.3284 +       y="536.73499"
 51.3285 +       id="text6949"><tspan
 51.3286 +         sodipodi:role="line"
 51.3287 +         x="325.93475"
 51.3288 +         y="536.73499"
 51.3289 +         id="tspan6953">REPEAT WHILE</tspan><tspan
 51.3290 +         sodipodi:role="line"
 51.3291 +         x="325.93475"
 51.3292 +         y="563.35645"
 51.3293 +         id="tspan6955" /></text>
 51.3294 +    <a
 51.3295 +       id="a7773-9-6-9-5-9"
 51.3296 +       transform="matrix(0.55792069,0,0,0.20681824,327.26374,538.01013)">
 51.3297 +      <rect
 51.3298 +         y="66.0532"
 51.3299 +         x="8.9369535"
 51.3300 +         height="121.94473"
 51.3301 +         width="98.977188"
 51.3302 +         id="rect6252-5-9-2-5-8-6"
 51.3303 +         style="fill:url(#linearGradient6979);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3304 +         ry="0" />
 51.3305 +    </a>
 51.3306 +    <text
 51.3307 +       xml:space="preserve"
 51.3308 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3309 +       x="341.15399"
 51.3310 +       y="571.0426"
 51.3311 +       id="text6264-2-7-4-5-6-9"><tspan
 51.3312 +         sodipodi:role="line"
 51.3313 +         x="341.15399"
 51.3314 +         y="571.0426"
 51.3315 +         id="tspan7771-5-6-8-7-8">ATD</tspan></text>
 51.3316 +    <a
 51.3317 +       id="a7773-9-6-9-1"
 51.3318 +       transform="matrix(0.55792069,0,0,0.20681824,412.09882,538.01012)">
 51.3319 +      <rect
 51.3320 +         y="66.0532"
 51.3321 +         x="8.9369535"
 51.3322 +         height="121.94473"
 51.3323 +         width="98.977188"
 51.3324 +         id="rect6252-5-9-2-5-2"
 51.3325 +         style="fill:url(#linearGradient7026);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3326 +         ry="0" />
 51.3327 +    </a>
 51.3328 +    <text
 51.3329 +       xml:space="preserve"
 51.3330 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3331 +       x="425.98907"
 51.3332 +       y="571.0426"
 51.3333 +       id="text6264-2-7-4-5-5"><tspan
 51.3334 +         sodipodi:role="line"
 51.3335 +         x="425.98907"
 51.3336 +         y="571.0426"
 51.3337 +         id="tspan7771-5-6-8-0">ATD</tspan></text>
 51.3338 +    <path
 51.3339 +       style="fill:none;stroke:#000000;stroke-width:1.78774214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 51.3340 +       d="m 392.83482,562.98081 18.19809,0"
 51.3341 +       id="path7053"
 51.3342 +       inkscape:connector-type="polyline" />
 51.3343 +    <path
 51.3344 +       style="fill:none;stroke:#000000;stroke-width:1.40810382;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 51.3345 +       d="m 397.81322,571.66577 9.55967,-12.87431"
 51.3346 +       id="path7053-9"
 51.3347 +       inkscape:connector-type="polyline" />
 51.3348 +    <path
 51.3349 +       style="fill:none;stroke:#000000;stroke-width:1.78774214;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 51.3350 +       d="m 392.74528,567.05393 18.19809,0"
 51.3351 +       id="path7053-3"
 51.3352 +       inkscape:connector-type="polyline" />
 51.3353 +    <rect
 51.3354 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 8;stroke-dashoffset:0"
 51.3355 +       id="rect6903-1"
 51.3356 +       width="225.41023"
 51.3357 +       height="127.48096"
 51.3358 +       x="298.47983"
 51.3359 +       y="383.71185" />
 51.3360 +    <text
 51.3361 +       xml:space="preserve"
 51.3362 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3363 +       x="315.68695"
 51.3364 +       y="411.31067"
 51.3365 +       id="text6264-2-7-1-6"><tspan
 51.3366 +         sodipodi:role="line"
 51.3367 +         x="315.68695"
 51.3368 +         y="411.31067"
 51.3369 +         id="tspan7771-5-2-3">FLIGHT PLAN</tspan></text>
 51.3370 +    <a
 51.3371 +       id="a7773-9-6-9-3"
 51.3372 +       transform="matrix(0.55792069,0,0,0.20681824,449.35146,376.81177)">
 51.3373 +      <rect
 51.3374 +         y="66.0532"
 51.3375 +         x="8.9369535"
 51.3376 +         height="121.94473"
 51.3377 +         width="98.977188"
 51.3378 +         id="rect6252-5-9-2-5-5"
 51.3379 +         style="fill:url(#linearGradient6833-4);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3380 +         ry="0" />
 51.3381 +    </a>
 51.3382 +    <text
 51.3383 +       xml:space="preserve"
 51.3384 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3385 +       x="463.2417"
 51.3386 +       y="409.8443"
 51.3387 +       id="text6264-2-7-4-5-53"><tspan
 51.3388 +         sodipodi:role="line"
 51.3389 +         x="463.2417"
 51.3390 +         y="409.8443"
 51.3391 +         id="tspan7771-5-6-8-2">ATD</tspan></text>
 51.3392 +    <a
 51.3393 +       id="a7773-9-6-8"
 51.3394 +       transform="matrix(1.4123149,0,0,0.20681824,297.10631,376.99724)">
 51.3395 +      <rect
 51.3396 +         y="66.0532"
 51.3397 +         x="8.9369535"
 51.3398 +         height="121.94473"
 51.3399 +         width="98.977188"
 51.3400 +         id="rect6252-5-9-2-2"
 51.3401 +         style="fill:url(#linearGradient6457-9-5);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3402 +         ry="0" />
 51.3403 +    </a>
 51.3404 +    <text
 51.3405 +       xml:space="preserve"
 51.3406 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3407 +       x="316.93774"
 51.3408 +       y="410.19867"
 51.3409 +       id="text6264-2-6-6-5"><tspan
 51.3410 +         sodipodi:role="line"
 51.3411 +         x="316.93774"
 51.3412 +         y="410.19867"
 51.3413 +         id="tspan7771-8-5-3">FLIGHT PLAN</tspan></text>
 51.3414 +    <path
 51.3415 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3416 +       d="m 294.93613,449.5776 228.98562,0.5375"
 51.3417 +       id="path5346-3-6-2-4-6-0-6-1-6-6"
 51.3418 +       inkscape:connector-type="polyline" />
 51.3419 +    <a
 51.3420 +       id="a7773-8-7-1"
 51.3421 +       transform="matrix(1.5191142,0,0,0.20681824,296.2136,405.8428)">
 51.3422 +      <rect
 51.3423 +         y="66.0532"
 51.3424 +         x="8.9369535"
 51.3425 +         height="121.94473"
 51.3426 +         width="98.977188"
 51.3427 +         id="rect6252-5-3-6-8"
 51.3428 +         style="fill:url(#linearGradient6760-5);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3429 +         ry="0" />
 51.3430 +    </a>
 51.3431 +    <text
 51.3432 +       xml:space="preserve"
 51.3433 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3434 +       x="316.97543"
 51.3435 +       y="439.04419"
 51.3436 +       id="text6264-2-8-2-6"><tspan
 51.3437 +         sodipodi:role="line"
 51.3438 +         x="316.97543"
 51.3439 +         y="439.04419"
 51.3440 +         id="tspan7771-3-9-2">FLIGHT PLAN 2</tspan></text>
 51.3441 +    <path
 51.3442 +       style="fill:none;stroke:#000000;stroke-width:2.00569034;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3443 +       d="m 526.51753,494.59834 -229.2165,0.015"
 51.3444 +       id="path5346-3-6-2-4-6-0-6-1-7-3-1"
 51.3445 +       inkscape:connector-type="polyline" />
 51.3446 +    <a
 51.3447 +       id="a7773-9-6-9-5-4"
 51.3448 +       transform="matrix(0.55792069,0,0,0.20681824,379.17804,451.85775)">
 51.3449 +      <rect
 51.3450 +         y="66.0532"
 51.3451 +         x="8.9369535"
 51.3452 +         height="121.94473"
 51.3453 +         width="98.977188"
 51.3454 +         id="rect6252-5-9-2-5-8-62"
 51.3455 +         style="fill:url(#linearGradient6876-9);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3456 +         ry="0" />
 51.3457 +    </a>
 51.3458 +    <text
 51.3459 +       xml:space="preserve"
 51.3460 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3461 +       x="393.0683"
 51.3462 +       y="484.89026"
 51.3463 +       id="text6264-2-7-4-5-6-91"><tspan
 51.3464 +         sodipodi:role="line"
 51.3465 +         x="393.0683"
 51.3466 +         y="484.89026"
 51.3467 +         id="tspan7771-5-6-8-7-5">ATD</tspan></text>
 51.3468 +    <path
 51.3469 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3470 +       d="m 278.20719,602.10624 -219.222504,0.015"
 51.3471 +       id="path5346-3-6-2-4-6-0-6-1-7-3-1-3"
 51.3472 +       inkscape:connector-type="polyline" />
 51.3473 +    <a
 51.3474 +       id="a7773-9-6-9-5-4-4"
 51.3475 +       transform="matrix(0.55792069,0,0,0.20681824,200.40076,559.13279)">
 51.3476 +      <rect
 51.3477 +         y="66.0532"
 51.3478 +         x="8.9369535"
 51.3479 +         height="121.94473"
 51.3480 +         width="98.977188"
 51.3481 +         id="rect6252-5-9-2-5-8-62-4"
 51.3482 +         style="fill:url(#linearGradient6876-9-0);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3483 +         ry="0" />
 51.3484 +    </a>
 51.3485 +    <text
 51.3486 +       xml:space="preserve"
 51.3487 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3488 +       x="214.29102"
 51.3489 +       y="592.16528"
 51.3490 +       id="text6264-2-7-4-5-6-91-0"><tspan
 51.3491 +         sodipodi:role="line"
 51.3492 +         x="214.29102"
 51.3493 +         y="592.16528"
 51.3494 +         id="tspan7771-5-6-8-7-5-5">ATD</tspan></text>
 51.3495 +    <rect
 51.3496 +       style="fill:none;stroke:#ffffff;stroke-width:3.14547324;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-4)"
 51.3497 +       id="rect5168-6-5"
 51.3498 +       width="249.40741"
 51.3499 +       height="180.69312"
 51.3500 +       x="251.10405"
 51.3501 +       y="80.182289"
 51.3502 +       transform="matrix(0.51751038,0,0,0.30610257,411.53671,31.355742)" />
 51.3503 +    <text
 51.3504 +       xml:space="preserve"
 51.3505 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3506 +       x="546.39899"
 51.3507 +       y="78.510635"
 51.3508 +       id="text5214-9-8"><tspan
 51.3509 +         sodipodi:role="line"
 51.3510 +         id="tspan5216-0-1"
 51.3511 +         x="546.39899"
 51.3512 +         y="78.510635">PATTERN </tspan><tspan
 51.3513 +         sodipodi:role="line"
 51.3514 +         x="546.39899"
 51.3515 +         y="101.64814"
 51.3516 +         id="tspan6707-2">EVALUATION</tspan></text>
 51.3517 +    <rect
 51.3518 +       style="fill:none;stroke:#ffffff;stroke-width:3.14547324;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-4-4)"
 51.3519 +       id="rect5168-6-5-9"
 51.3520 +       width="249.40741"
 51.3521 +       height="180.69312"
 51.3522 +       x="251.10405"
 51.3523 +       y="80.182289"
 51.3524 +       transform="matrix(0.51751038,0,0,0.30610257,410.9008,91.449129)" />
 51.3525 +    <text
 51.3526 +       xml:space="preserve"
 51.3527 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3528 +       x="544.39899"
 51.3529 +       y="138.60402"
 51.3530 +       id="text5214-9-8-3"><tspan
 51.3531 +         sodipodi:role="line"
 51.3532 +         id="tspan5216-0-1-0"
 51.3533 +         x="544.39899"
 51.3534 +         y="138.60402">FLOW POINT</tspan><tspan
 51.3535 +         sodipodi:role="line"
 51.3536 +         x="544.39899"
 51.3537 +         y="161.74153"
 51.3538 +         id="tspan6707-2-7">ASSIGNMENT</tspan></text>
 51.3539 +    <path
 51.3540 +       style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
 51.3541 +       d="m 670.88383,78.785745 c 42.60589,39.426345 3.81545,62.954975 3.81545,62.954975"
 51.3542 +       id="path7697"
 51.3543 +       sodipodi:nodetypes="cc" />
 51.3544 +    <path
 51.3545 +       style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);stroke-miterlimit:4;stroke-dasharray:none"
 51.3546 +       d="m 526.18565,83.909589 c 6.17444,-0.849735 9.57567,-0.601495 9.57567,-0.601495"
 51.3547 +       id="path7697-7"
 51.3548 +       sodipodi:nodetypes="cc" />
 51.3549 +    <path
 51.3550 +       style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);stroke-miterlimit:4;stroke-dasharray:none"
 51.3551 +       d="m 540.75897,146.17358 c -5.61276,2.70973 -10.92007,-3.82693 -10.92007,-3.82693"
 51.3552 +       id="path7697-7-3"
 51.3553 +       sodipodi:nodetypes="cc" />
 51.3554 +    <rect
 51.3555 +       style="fill:none;stroke:#ffffff;stroke-width:3.14547324;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-4-4-8)"
 51.3556 +       id="rect5168-6-5-9-5"
 51.3557 +       width="249.40741"
 51.3558 +       height="180.69312"
 51.3559 +       x="251.10405"
 51.3560 +       y="80.182289"
 51.3561 +       transform="matrix(0.6077774,0,0,0.3055363,387.57471,265.36688)" />
 51.3562 +    <text
 51.3563 +       xml:space="preserve"
 51.3564 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3565 +       x="543.59021"
 51.3566 +       y="312.42523"
 51.3567 +       id="text5214-9-8-3-2"><tspan
 51.3568 +         sodipodi:role="line"
 51.3569 +         id="tspan5216-0-1-0-0"
 51.3570 +         x="543.59021"
 51.3571 +         y="312.42523">CONSTRAINT</tspan><tspan
 51.3572 +         sodipodi:role="line"
 51.3573 +         x="543.59021"
 51.3574 +         y="335.56274"
 51.3575 +         id="tspan6707-2-7-3">ENFORCEMENT</tspan></text>
 51.3576 +    <path
 51.3577 +       style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);stroke-miterlimit:4;stroke-dasharray:none"
 51.3578 +       d="m 631.59125,345.3673 c 2.57301,37.49924 -99.42869,18.17232 -99.42869,18.17232"
 51.3579 +       id="path7697-7-3-3"
 51.3580 +       sodipodi:nodetypes="cc" />
 51.3581 +    <path
 51.3582 +       style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);stroke-miterlimit:4;stroke-dasharray:none"
 51.3583 +       d="m 526.3508,317.58982 c 6.51834,0.52586 7.72442,1.06046 7.72442,1.06046"
 51.3584 +       id="path7697-7-3-2"
 51.3585 +       sodipodi:nodetypes="cc" />
 51.3586 +    <rect
 51.3587 +       style="fill:none;stroke:#ffffff;stroke-width:3.14547324;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;filter:url(#filter6798-4-4-8-0)"
 51.3588 +       id="rect5168-6-5-9-5-0"
 51.3589 +       width="249.40741"
 51.3590 +       height="180.69312"
 51.3591 +       x="251.10405"
 51.3592 +       y="80.182289"
 51.3593 +       transform="matrix(0.6077774,0,0,0.3055363,387.29734,397.61547)" />
 51.3594 +    <text
 51.3595 +       xml:space="preserve"
 51.3596 +       style="font-size:18.51000595px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3597 +       x="543.31287"
 51.3598 +       y="444.67383"
 51.3599 +       id="text5214-9-8-3-2-3"><tspan
 51.3600 +         sodipodi:role="line"
 51.3601 +         id="tspan5216-0-1-0-0-4"
 51.3602 +         x="543.31287"
 51.3603 +         y="444.67383">CONSTRAINT</tspan><tspan
 51.3604 +         sodipodi:role="line"
 51.3605 +         x="543.31287"
 51.3606 +         y="467.81134"
 51.3607 +         id="tspan6707-2-7-3-0">ENFORCEMENT</tspan></text>
 51.3608 +    <path
 51.3609 +       style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);stroke-miterlimit:4;stroke-dasharray:none"
 51.3610 +       d="m 631.31388,477.61589 c 2.57301,37.49924 -99.42869,18.17232 -99.42869,18.17232"
 51.3611 +       id="path7697-7-3-3-0"
 51.3612 +       sodipodi:nodetypes="cc" />
 51.3613 +    <path
 51.3614 +       style="fill:none;stroke:#ffffff;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL);stroke-miterlimit:4;stroke-dasharray:none"
 51.3615 +       d="m 526.07343,449.83841 c 6.51834,0.52586 7.72442,1.06046 7.72442,1.06046"
 51.3616 +       id="path7697-7-3-2-5"
 51.3617 +       sodipodi:nodetypes="cc" />
 51.3618 +    <a
 51.3619 +       id="a7773-9-6-9-3-5"
 51.3620 +       transform="matrix(0.48960235,0,0,0.18149299,-266.21198,688.00927)">
 51.3621 +      <rect
 51.3622 +         y="66.0532"
 51.3623 +         x="8.9369535"
 51.3624 +         height="121.94473"
 51.3625 +         width="98.977188"
 51.3626 +         id="rect6252-5-9-2-5-5-6"
 51.3627 +         style="fill:url(#linearGradient8254);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3628 +         ry="0" />
 51.3629 +    </a>
 51.3630 +    <text
 51.3631 +       xml:space="preserve"
 51.3632 +       style="font-size:16.83735275px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3633 +       x="-254.02264"
 51.3634 +       y="716.99689"
 51.3635 +       id="text6264-2-7-4-5-53-4"><tspan
 51.3636 +         sodipodi:role="line"
 51.3637 +         x="-254.02264"
 51.3638 +         y="716.99689"
 51.3639 +         id="tspan7771-5-6-8-2-8">ETD</tspan></text>
 51.3640 +    <a
 51.3641 +       id="a7773-9-6-8-2"
 51.3642 +       transform="matrix(1.2393745,0,0,0.18149299,-347.03125,667.0249)">
 51.3643 +      <rect
 51.3644 +         y="66.0532"
 51.3645 +         x="8.9369535"
 51.3646 +         height="121.94473"
 51.3647 +         width="98.977188"
 51.3648 +         id="rect6252-5-9-2-2-1"
 51.3649 +         style="fill:url(#linearGradient6457-9-5-4);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3650 +         ry="0" />
 51.3651 +    </a>
 51.3652 +    <text
 51.3653 +       xml:space="preserve"
 51.3654 +       style="font-size:16.83735275px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3655 +       x="-329.62823"
 51.3656 +       y="696.16071"
 51.3657 +       id="text6264-2-6-6-5-6"><tspan
 51.3658 +         sodipodi:role="line"
 51.3659 +         x="-329.62823"
 51.3660 +         y="696.16071"
 51.3661 +         id="tspan7771-8-5-3-8">FLIGHT PLAN</tspan></text>
 51.3662 +    <a
 51.3663 +       id="a7773-9-6-9-5-4-3"
 51.3664 +       transform="matrix(0.48960235,0,0,0.18149299,-266.35606,709.6969)">
 51.3665 +      <rect
 51.3666 +         y="66.0532"
 51.3667 +         x="8.9369535"
 51.3668 +         height="121.94473"
 51.3669 +         width="98.977188"
 51.3670 +         id="rect6252-5-9-2-5-8-62-1"
 51.3671 +         style="fill:url(#linearGradient6876-9-3);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3672 +         ry="0" />
 51.3673 +    </a>
 51.3674 +    <text
 51.3675 +       xml:space="preserve"
 51.3676 +       style="font-size:16.83735275px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3677 +       x="-254.16669"
 51.3678 +       y="738.68451"
 51.3679 +       id="text6264-2-7-4-5-6-91-4"><tspan
 51.3680 +         sodipodi:role="line"
 51.3681 +         x="-254.16669"
 51.3682 +         y="738.68451"
 51.3683 +         id="tspan7771-5-6-8-7-5-8">ATD</tspan></text>
 51.3684 +    <text
 51.3685 +       xml:space="preserve"
 51.3686 +       style="font-size:17.55096626px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3687 +       x="-209.30988"
 51.3688 +       y="676.48218"
 51.3689 +       id="text8313"><tspan
 51.3690 +         sodipodi:role="line"
 51.3691 +         id="tspan8315"
 51.3692 +         x="-209.30988"
 51.3693 +         y="676.48218">Validated Flight Plan</tspan><tspan
 51.3694 +         sodipodi:role="line"
 51.3695 +         x="-209.30988"
 51.3696 +         y="698.4209"
 51.3697 +         id="tspan8395">Flight Plan in Evaluation</tspan><tspan
 51.3698 +         sodipodi:role="line"
 51.3699 +         x="-209.30988"
 51.3700 +         y="720.35962"
 51.3701 +         id="tspan8342">Earliest Time of Departure</tspan><tspan
 51.3702 +         sodipodi:role="line"
 51.3703 +         x="-209.30988"
 51.3704 +         y="742.29828"
 51.3705 +         id="tspan8344">Actual Time of Departure</tspan></text>
 51.3706 +    <a
 51.3707 +       id="a7773-8-0"
 51.3708 +       transform="matrix(1.312271,0,0,0.18149299,-354.8534,644.7258)">
 51.3709 +      <rect
 51.3710 +         y="66.0532"
 51.3711 +         x="8.9369535"
 51.3712 +         height="121.94473"
 51.3713 +         width="98.977188"
 51.3714 +         id="rect6252-5-3-5"
 51.3715 +         style="fill:url(#linearGradient8366);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3716 +         ry="0" />
 51.3717 +    </a>
 51.3718 +    <text
 51.3719 +       xml:space="preserve"
 51.3720 +       style="font-size:16.83735275px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3721 +       x="-336.81519"
 51.3722 +       y="673.86163"
 51.3723 +       id="text6264-2-8-6"><tspan
 51.3724 +         sodipodi:role="line"
 51.3725 +         x="-336.81519"
 51.3726 +         y="673.86163"
 51.3727 +         id="tspan7771-3-7">FLIGHT PLAN 1</tspan></text>
 51.3728 +    <path
 51.3729 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 51.3730 +       d="M -198.63155,78.437334 36.329396,78.974186"
 51.3731 +       id="path5346-3-6-2-4-6-0-6-79"
 51.3732 +       inkscape:connector-type="polyline" />
 51.3733 +    <a
 51.3734 +       id="a7773-9-6-9-8"
 51.3735 +       transform="matrix(0.55792069,0,0,0.20681824,-48.259988,33.477561)">
 51.3736 +      <rect
 51.3737 +         y="66.0532"
 51.3738 +         x="8.9369535"
 51.3739 +         height="121.94473"
 51.3740 +         width="98.977188"
 51.3741 +         id="rect6252-5-9-2-5-7"
 51.3742 +         style="fill:url(#linearGradient4674);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3743 +         ry="0" />
 51.3744 +    </a>
 51.3745 +    <text
 51.3746 +       xml:space="preserve"
 51.3747 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3748 +       x="-34.369759"
 51.3749 +       y="66.044312"
 51.3750 +       id="text6264-2-7-4-5-4"><tspan
 51.3751 +         sodipodi:role="line"
 51.3752 +         x="-34.369759"
 51.3753 +         y="66.044312"
 51.3754 +         id="tspan7771-5-6-8-27">ETD</tspan></text>
 51.3755 +    <a
 51.3756 +       id="a7773-9-6-7"
 51.3757 +       transform="matrix(1.4123149,0,0,0.20681824,-200.50514,33.663031)">
 51.3758 +      <rect
 51.3759 +         y="66.0532"
 51.3760 +         x="8.9369535"
 51.3761 +         height="121.94473"
 51.3762 +         width="98.977188"
 51.3763 +         id="rect6252-5-9-2-9"
 51.3764 +         style="fill:url(#linearGradient6457-9-3);fill-opacity:1;stroke:#000000;stroke-width:1.17799997;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 51.3765 +         ry="0" />
 51.3766 +    </a>
 51.3767 +    <text
 51.3768 +       xml:space="preserve"
 51.3769 +       style="font-size:19.18680954px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3770 +       x="-180.67371"
 51.3771 +       y="66.864441"
 51.3772 +       id="text6264-2-6-6-3"><tspan
 51.3773 +         sodipodi:role="line"
 51.3774 +         x="-180.67371"
 51.3775 +         y="66.864441"
 51.3776 +         id="tspan7771-8-5-1">FLIGHT PLAN</tspan></text>
 51.3777 +    <rect
 51.3778 +       style="fill:url(#linearGradient4734);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.35548663px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 51.3779 +       id="rect2816-4-7-7-3-0-0"
 51.3780 +       width="176.35181"
 51.3781 +       height="80.584877"
 51.3782 +       x="-373.87329"
 51.3783 +       y="19.608183" />
 51.3784 +    <text
 51.3785 +       xml:space="preserve"
 51.3786 +       style="font-size:18.96536827px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 51.3787 +       x="-368.4765"
 51.3788 +       y="53.897236"
 51.3789 +       id="text5214-9-8-3-2-3-2"><tspan
 51.3790 +         sodipodi:role="line"
 51.3791 +         x="-368.4765"
 51.3792 +         y="53.897236"
 51.3793 +         id="tspan6707-2-7-3-0-6">DFLOW</tspan><tspan
 51.3794 +         sodipodi:role="line"
 51.3795 +         x="-368.4765"
 51.3796 +         y="77.603943"
 51.3797 +         id="tspan4785">USER INTERFACE</tspan></text>
 51.3798 +  </g>
 51.3799 +</svg>
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/mindmap.mm	Fri Jun 04 13:48:28 2010 +0200
    52.3 @@ -0,0 +1,54 @@
    52.4 +<map version="0.7.1">
    52.5 +<node TEXT="Thesis">
    52.6 +<edge WIDTH="thin"/>
    52.7 +<font NAME="SansSerif" SIZE="12"/>
    52.8 +<node TEXT="constraint language" POSITION="right">
    52.9 +<node TEXT="syntax definition"/>
   52.10 +<node TEXT="parser">
   52.11 +<node TEXT="lexigraphic analysis"/>
   52.12 +<node TEXT="syntax analysis"/>
   52.13 +</node>
   52.14 +<node TEXT="virtual machine">
   52.15 +<node TEXT="pattern matching"/>
   52.16 +<node TEXT="constraint enforcement"/>
   52.17 +</node>
   52.18 +</node>
   52.19 +<node TEXT="DFLOW" POSITION="right">
   52.20 +<node TEXT="FDPS registration/healthy reports"/>
   52.21 +<node TEXT="DMAP">
   52.22 +<node TEXT="FPATH handling"/>
   52.23 +<node TEXT="DFLOW handling"/>
   52.24 +</node>
   52.25 +<node TEXT="communication with vm"/>
   52.26 +</node>
   52.27 +<node TEXT="research" POSITION="left">
   52.28 +<node TEXT="parser/compiler generation">
   52.29 +<node TEXT="tools support">
   52.30 +<node TEXT="Lex/Flex"/>
   52.31 +<node TEXT="Yacc/Bison"/>
   52.32 +</node>
   52.33 +</node>
   52.34 +<node TEXT="GCAA flow constraints">
   52.35 +<node TEXT="use cases"/>
   52.36 +<node TEXT="general requirements"/>
   52.37 +</node>
   52.38 +<node TEXT="PRISMA architecture"/>
   52.39 +<node TEXT="safety implications">
   52.40 +<node TEXT="dynamic allocation"/>
   52.41 +<node TEXT="maximum size restrictions"/>
   52.42 +</node>
   52.43 +</node>
   52.44 +<node TEXT="title" FOLDED="true" POSITION="left">
   52.45 +<node TEXT="DFLOW - A Departure Manager and Constraint Language for ATC Flow Control"/>
   52.46 +<node TEXT="DFLOW - Ein Abflug-Manager und eine Regelsprache zur restriktiven Regelung vom Flugverkehrsfluss"/>
   52.47 +<node TEXT="DFLOW - Abflugplanung zur Verkehrsflussoptimierung unter Verwendung einer regelbasierten Dom&#xe4;nensprache"/>
   52.48 +<node TEXT="DFLOW - Abflugplanung zur Optimierung von Flugverkehrsfluss unter Verwendung einer regelbasierten Dom&#xe4;nensprache"/>
   52.49 +<node TEXT="Realisierung einer Abflugplanungskomponente zur Verkehrsflussoptimierung unter Verwendung einer regelbasierten Dom&#xe4;nensprache"/>
   52.50 +</node>
   52.51 +<node TEXT="performance evaluation" POSITION="right">
   52.52 +<node TEXT="retrieving pre-DFLOW performance data"/>
   52.53 +<node TEXT="collecting DFLOW performance data"/>
   52.54 +<node TEXT="evaluation"/>
   52.55 +</node>
   52.56 +</node>
   52.57 +</map>
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/paper/atccl.lex	Fri Jun 04 13:48:28 2010 +0200
    53.3 @@ -0,0 +1,79 @@
    53.4 +%{
    53.5 +#include <stdio.h>
    53.6 +#include <string.h>
    53.7 +#include "atccl_parser.tab.h"
    53.8 +
    53.9 +int line_no = 1;
   53.10 +char line_buffer[1024];
   53.11 +char* installId();
   53.12 +
   53.13 +%}
   53.14 +
   53.15 +%option nounput
   53.16 +
   53.17 +delim			[ \t]
   53.18 +ws			{delim}+
   53.19 +letter 			[A-Za-z]
   53.20 +digit			[0-9]
   53.21 +id			{letter}({letter}|{digit}|_)*
   53.22 +real			{digit}+\.{digit}+
   53.23 +
   53.24 +%%
   53.25 +
   53.26 +copx			{ return COPX; }
   53.27 +adep			{ return ADEP; }
   53.28 +ades			{ return ADES; }
   53.29 +rwy			{ return RWY; }
   53.30 +route			{ return ROUTE; }
   53.31 +atyp			{ return ATYP; }
   53.32 +equip			{ return EQUIP; }
   53.33 +tas			{ return TAS; }
   53.34 +frul			{ return FRUL; }
   53.35 +ftyp			{ return FTYP; }
   53.36 +travel_type 		{ return TRAVEL_TYPE; }
   53.37 +time_separation		{ return TIMESEP; }
   53.38 +time_sep		{ return TIMESEP; }
   53.39 +fl			{ return FL; }
   53.40 +constraint		{ return CONSTRNT; }
   53.41 +pattern			{ return PATTERN; }
   53.42 +flowpoint		{ return FLOWP; }
   53.43 +
   53.44 +
   53.45 +is			{ return IS; }
   53.46 +in			{ return IN; }
   53.47 +not			{ return NOT; }
   53.48 +less			{ return LESS; }
   53.49 +greater			{ return GREATER; }
   53.50 +than			{ return THAN; }
   53.51 +and			{ return AND; }
   53.52 +or			{ return OR; }
   53.53 +at			{ return AT; }
   53.54 +from			{ return FROM; }
   53.55 +until			{ return UNTIL; }
   53.56 +on			{ return ON; }
   53.57 + 
   53.58 +{digit}+		{ yylval.integer = atoi(yytext); return INTEGER; }
   53.59 +{real}			{ yylval.real = atof(yytext); return REAL; }
   53.60 +{id}			{ yylval.string = installId(); return STRING; }
   53.61 +\"			{ return QUOTE; }
   53.62 +#.*$			{ return COM; }
   53.63 +{ws}			{  }
   53.64 +\n.*			{ strcpy(line_buffer, yytext+1); line_no++; yyless(1); }
   53.65 +.			{ return yytext[0]; }
   53.66 +%%
   53.67 +
   53.68 +char* installId()
   53.69 +{
   53.70 +	static char* no_string = "$$$NO STRING$$$";
   53.71 +	char* id = no_string;
   53.72 +	if (id_table_no < MAX_ID_TABLE_NO)
   53.73 +	{
   53.74 +		id = strdup(yytext);
   53.75 +		id_table[id_table_no++] = id;
   53.76 +	}
   53.77 +	else
   53.78 +	{
   53.79 +		yyerror("Maximum number of string literals used");
   53.80 +	}	
   53.81 +	return id;
   53.82 +}
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/paper/atccl.y	Fri Jun 04 13:48:28 2010 +0200
    54.3 @@ -0,0 +1,330 @@
    54.4 +%{
    54.5 +#include <stdlib.h>
    54.6 +#include <stdio.h>
    54.7 +#include <string.h>
    54.8 +#include "semantic_helper.hh"
    54.9 +
   54.10 +#define MAX_ID_TABLE_NO 1024 
   54.11 +char* id_table[MAX_ID_TABLE_NO];
   54.12 +int id_table_no;
   54.13 +
   54.14 +ErrorType* errors;
   54.15 +int maxErrorNo;
   54.16 +int errorNo;
   54.17 +
   54.18 +int yylex();
   54.19 +int yywrap();
   54.20 +int yyerror(const char *str);
   54.21 +void yyrestart(FILE* file);
   54.22 +
   54.23 +%}
   54.24 +
   54.25 +%token
   54.26 +CONSTRNT PATTERN FLOWP COM
   54.27 +QUOTE THAN FROM UNTIL ON
   54.28 +
   54.29 +%union
   54.30 +{
   54.31 +	int integer;
   54.32 +	double real;
   54.33 +	const char* string;
   54.34 +}
   54.35 +
   54.36 +%token <integer> INTEGER
   54.37 +%token <integer> TIME
   54.38 +%token <real> 	REAL
   54.39 +%token <string> STRING
   54.40 +
   54.41 +
   54.42 +%token <integer> IS 
   54.43 +%token <integer> IN 
   54.44 +%token <integer> GREATER 
   54.45 +%token <integer> LESS 
   54.46 +%token <integer> NOT 
   54.47 +%token <integer> AND 
   54.48 +%token <integer> OR 
   54.49 +%token <integer> AT
   54.50 +%token <integer> COPX
   54.51 +%token <integer> ADEP
   54.52 +%token <integer> ADES
   54.53 +%token <integer> RWY
   54.54 +%token <integer> ROUTE
   54.55 +%token <integer> ATYP
   54.56 +%token <integer> FLVL
   54.57 +%token <integer> TAS
   54.58 +%token <integer> FRUL
   54.59 +%token <integer> FTYP
   54.60 +%token <integer> EQUIP
   54.61 +%token <integer> RFL
   54.62 +%token <integer> TRAVEL_TYPE
   54.63 +%token <integer> TIMESEP 
   54.64 +%token <integer> FL
   54.65 +
   54.66 +%type <string> string
   54.67 +%type <string> pttrn
   54.68 +%type <string> flowp
   54.69 +%type <string> constrnt
   54.70 +%type <integer> int
   54.71 +%type <integer> string_array
   54.72 +%type <integer> int_array
   54.73 +%type <integer> int_pt
   54.74 +%type <integer> char_pt
   54.75 +%type <integer> string_pt
   54.76 +%type <integer> string_array_pt
   54.77 +%type <integer> char_array_pt
   54.78 +%type <integer> int_op
   54.79 +%type <integer> string_op
   54.80 +%type <integer> string_array_op
   54.81 +%type <integer> string_string_array_op
   54.82 +%type <integer> si_unit
   54.83 +
   54.84 +%left OR
   54.85 +%left AND
   54.86 +%right NOT
   54.87 +
   54.88 +%%
   54.89 +prog:			| prog rule {  }
   54.90 +				| error ')' { yyerrok; yyclearin;}				
   54.91 +;
   54.92 +
   54.93 +rule:			pttrn 		{ if (!pattern($1)) printf("Error: %s\n", last_error()); }
   54.94 +				| constrnt 	{ if (!constraint($1)) printf("Error: %s\n", last_error()); }
   54.95 +				| flowp 	{ if (!flowpoint($1)) printf("Error: %s\n", last_error()); }
   54.96 +				| COM		{ comment(); }
   54.97 +;
   54.98 +
   54.99 +flowp:			FLOWP STRING '(' flowp_entry ')'	{ $$ = $2; }
  54.100 +;
  54.101 +
  54.102 +flowp_entry:	pttrn_lbl ':' constrnt_lbl					
  54.103 +;
  54.104 +
  54.105 +pttrn_lbl:		STRING						{ if (!pattern_id($1)) printf("Error: %s\n", last_error()); }						
  54.106 +;
  54.107 +
  54.108 +constrnt_lbl:	STRING	{ if (!constraint_id($1)) printf("Error: %s\n", last_error()); }
  54.109 +;
  54.110 +
  54.111 +constrnt:		CONSTRNT STRING '(' cterm ')' 	{ $$ = $2; }
  54.112 +;
  54.113 +
  54.114 +cterm:			TIMESEP AT string IS INTEGER si_unit		
  54.115 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, 0); }				
  54.116 +				| TIMESEP AT string_array IS INTEGER si_unit
  54.117 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, 0); }		
  54.118 +				| TIMESEP AT string IS INTEGER si_unit FROM INTEGER UNTIL INTEGER	
  54.119 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, 0); }				
  54.120 +				| TIMESEP AT string_array IS INTEGER si_unit FROM INTEGER UNTIL INTEGER
  54.121 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, 0); }		
  54.122 +				
  54.123 +				| TIMESEP AT string IS INTEGER si_unit AT FL int_array
  54.124 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, $9); }				
  54.125 +				| TIMESEP AT string_array IS INTEGER si_unit AT FL int_array
  54.126 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, $9); }		
  54.127 +				| TIMESEP AT string IS INTEGER si_unit FROM INTEGER UNTIL INTEGER AT FL int_array	
  54.128 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, $13); }				
  54.129 +				| TIMESEP AT string_array IS INTEGER si_unit FROM INTEGER UNTIL INTEGER AT FL int_array
  54.130 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, $13); }	
  54.131 +									
  54.132 +				| cterm AND cterm							
  54.133 +				{ and_term(); }
  54.134 +;
  54.135 +
  54.136 +si_unit:		STRING	
  54.137 +				{ 
  54.138 +					if (!strcmp($1, "s")) { $$ = 1; }
  54.139 +					else if (!strcmp($1, "min")) { $$ = 60; }
  54.140 +				}
  54.141 +;
  54.142 +
  54.143 +pttrn: 			PATTERN STRING '(' term ')'	{ $$ = $2; }
  54.144 +				| PATTERN '(' term ')'		{ $$ = get_pattern_id(); }
  54.145 +;
  54.146 +
  54.147 +term:			int_pt int_op INTEGER	
  54.148 +				{ intpt_int_term($2, $1, $3); }	
  54.149 +					
  54.150 +				| char_pt string_op string
  54.151 +				{ charpt_char_term($2, $1, $3); }
  54.152 +						
  54.153 +				| string_pt string_op string
  54.154 +				{ stringpt_string_term($2, $1, $3); }
  54.155 +				
  54.156 +				| string_array_pt string_array_op string_array
  54.157 +				{ stringarraypt_stringarray_term($2, $1, $3); }	
  54.158 +							
  54.159 +				| string_array string_array_op string_array_pt
  54.160 +				{ 
  54.161 +					if ($2 == OT_IN_C)
  54.162 +					{
  54.163 +						$2 = OT_IN_P;
  54.164 +					}
  54.165 +					else if ($2 == OT_NOTIN_C)
  54.166 +					{
  54.167 +						$2 = OT_NOTIN_P;
  54.168 +					}
  54.169 +					stringarraypt_stringarray_term($2, $3, $1); 
  54.170 +				}			
  54.171 +					
  54.172 +				| string string_string_array_op string_array_pt
  54.173 +				{ 
  54.174 +					if ($2 == OT_IN_C)
  54.175 +					{
  54.176 +						$2 = OT_IN_P;
  54.177 +					}
  54.178 +					else if ($2 == OT_NOTIN_C)
  54.179 +					{
  54.180 +						$2 = OT_NOTIN_P;
  54.181 +					} 
  54.182 +					stringarraypt_string_term($2, $3, $1); 
  54.183 +				}		
  54.184 +				
  54.185 +				| string string_string_array_op char_array_pt
  54.186 +				{ 
  54.187 +					if ($2 == OT_IN_C)
  54.188 +					{
  54.189 +						$2 = OT_IN_P;
  54.190 +					}
  54.191 +					else if ($2 == OT_NOTIN_C)
  54.192 +					{
  54.193 +						$2 = OT_NOTIN_P;
  54.194 +					} 
  54.195 +					chararraypt_char_term($2, $3, $1); 
  54.196 +				}	
  54.197 +							
  54.198 +				| term OR term 		
  54.199 +				{ or_term(); }
  54.200 +				
  54.201 +				| term AND term
  54.202 +				{ and_term(); } 	
  54.203 +				
  54.204 +				| NOT term						
  54.205 +				| '(' term ')'				
  54.206 +;
  54.207 +
  54.208 +int_op:			IS 				{ $$ = OT_IS; }	
  54.209 +				| IS NOT		{ $$ = OT_ISNOT; } 
  54.210 +				| GREATER THAN	{ $$ = OT_GREATER; }
  54.211 +				| LESS THAN		{ $$ = OT_LESS; }
  54.212 +;
  54.213 +
  54.214 +string_op:		IS			{ $$ = OT_IS; }	
  54.215 +				| IS NOT	{ $$ = OT_ISNOT; } 
  54.216 +;
  54.217 +
  54.218 +string_array_op:IS			{ $$ = OT_IS; }
  54.219 +				| IS NOT 	{ $$ = OT_ISNOT; } 
  54.220 +				| IN 		{ $$ = OT_IN_P; }
  54.221 +				| NOT IN	{ $$ = OT_NOTIN_P; }
  54.222 +;
  54.223 +
  54.224 +string_string_array_op: IN 			{ $$ = OT_IN_P; }
  54.225 +						| NOT IN	{ $$ = OT_NOTIN_P; }
  54.226 +;
  54.227 +
  54.228 +int_array:		'[' ints ']' { $$ = integer_array(); }
  54.229 +;
  54.230 +
  54.231 +ints:			| ints ',' int
  54.232 +				| ints int
  54.233 +;
  54.234 +
  54.235 +int:		INTEGER { integer($1); $$ = $1; }
  54.236 +; 
  54.237 +
  54.238 +string_array:	'[' strings ']'	{ $$ = string_array(); }
  54.239 +;
  54.240 +
  54.241 +strings:		| strings ',' string
  54.242 +				| strings string
  54.243 +;
  54.244 +
  54.245 +int_pt:			TAS		{ $$ = PT_TAS; }			
  54.246 +;
  54.247 +
  54.248 +char_pt:		FTYP		{ $$ = PT_FTYP; }
  54.249 +
  54.250 +string_pt:		ADEP	{ $$ = PT_ADEP; }
  54.251 +				| ADES	{ $$ = PT_ADES; }
  54.252 +				| RWY 	{ $$ = PT_RWY; }
  54.253 +				| ATYP 	{ $$ = PT_ATYP; }
  54.254 +				| COPX	{ $$ = PT_COPX; }				
  54.255 +				| FRUL 	{ $$ = PT_FRUL; }				
  54.256 +				| RFL	{ $$ = PT_RFL; }
  54.257 +				| TRAVEL_TYPE { $$ = PT_TRAVEL_TYPE; }
  54.258 +;
  54.259 +
  54.260 +string_array_pt:ROUTE	{ $$ = PT_ROUTE; }				
  54.261 +;
  54.262 +
  54.263 +char_array_pt:	EQUIP	{ $$ = PT_EQUIP; }
  54.264 +;
  54.265 +
  54.266 +string:			QUOTE STRING QUOTE	{ string($2); $$ = $2; }
  54.267 +;
  54.268 +%%
  54.269 +
  54.270 +#include "atccl_parser.c"
  54.271 +
  54.272 +void clear_id_table()
  54.273 +{
  54.274 +	int i;
  54.275 +	for (i = 0; i < id_table_no; ++i)
  54.276 +	{
  54.277 +		free(id_table[i]);
  54.278 +		id_table[i] = 0;
  54.279 +	}
  54.280 +	id_table_no = 0;
  54.281 +}
  54.282 +
  54.283 +int yywrap()
  54.284 +{
  54.285 +	clear_id_table();
  54.286 +	return 1;
  54.287 +}
  54.288 +
  54.289 +int semantic_error(const char* str)
  54.290 +{
  54.291 +	if (errorNo < maxErrorNo)
  54.292 +	{
  54.293 +		errors[errorNo].line = -1;
  54.294 +		strcpy(errors[errorNo].text, "");
  54.295 +		strcpy(errors[errorNo].error, str);		
  54.296 +		errorNo++;
  54.297 +	}		
  54.298 +	return 1;
  54.299 +}
  54.300 +
  54.301 +int yyerror(const char *str)
  54.302 +{
  54.303 +	if (errorNo < maxErrorNo)
  54.304 +	{
  54.305 +		errors[errorNo].line = line_no;
  54.306 +		strcpy(errors[errorNo].text, yytext);
  54.307 +		strcpy(errors[errorNo].error, str);		
  54.308 +		errorNo++;
  54.309 +	}		
  54.310 +	return 1;
  54.311 +}
  54.312 +
  54.313 +int parse_syntax(FILE* file, ErrorType* errors_, int maxErrorNo_, int passes)
  54.314 +{
  54.315 +	line_no = 1;
  54.316 +	errors = errors_;
  54.317 +	maxErrorNo = maxErrorNo_;
  54.318 +	errorNo = 0;
  54.319 +	
  54.320 +	clear_all();
  54.321 +	clear_id_table();		
  54.322 +	yyrestart(file);
  54.323 +	yyparse();
  54.324 +	
  54.325 +	if (passes > 1)
  54.326 +	{	
  54.327 +		if (!complete_semantics())
  54.328 +		{
  54.329 +			semantic_error(last_error());
  54.330 +		}	
  54.331 +	}	
  54.332 +	return errorNo;
  54.333 +}
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/paper/document.tex	Fri Jun 04 13:48:28 2010 +0200
    55.3 @@ -0,0 +1,88 @@
    55.4 +\documentclass[11pt, a4paper, abstracton]{scrreprt}
    55.5 +\usepackage[left=3cm, right=2.5cm, bottom=3.5cm, top=3.5cm]{geometry}
    55.6 +\linespread{1.25}
    55.7 +\usepackage[ngerman]{babel}
    55.8 +\usepackage{graphicx}
    55.9 +%\usepackage[latin1]{inputenc}
   55.10 +\usepackage[utf8]{inputenc}
   55.11 +\usepackage{amsmath, amsthm, amssymb}
   55.12 +\usepackage{typearea}
   55.13 +\usepackage{algorithm}
   55.14 +\usepackage{algorithmic}
   55.15 +\usepackage{textcomp} 
   55.16 +\usepackage{color}
   55.17 +\usepackage{booktabs}
   55.18 +%\usepackage{subfig}
   55.19 +
   55.20 +\definecolor{grey1}{rgb}{0.93,0.93,0.93}
   55.21 +\usepackage{listings} \lstset{float=h, captionpos=b, numbers=none, numberstyle=\tiny, numbersep=5pt, language=C++, frame=single, framerule=0pt, %backgroundcolor=\color{grey1}}
   55.22 +} 
   55.23 +\usepackage{hyperref}
   55.24 +\hypersetup
   55.25 +{
   55.26 +    pdfauthor={Eugen Sawin},
   55.27 +    pdfsubject={Bachelorarbeit},
   55.28 +    pdftitle={Flexible Modellierung dynamischer Luftraumbeschränkungen und deren Nutzung zur optimierten Abflugplanung},
   55.29 +    pdfkeywords={DMAN, DFLOW, ATC, Flugsicherung, ATCCL},
   55.30 +    breaklinks=true,
   55.31 +    linktocpage=false,
   55.32 +	colorlinks=true,
   55.33 +	linkcolor=black,
   55.34 +	citecolor=black,
   55.35 +	filecolor=black,
   55.36 +	pagecolor=black,
   55.37 +	urlcolor=black,
   55.38 +	frenchlinks=false
   55.39 +}
   55.40 +\makeatletter% --> De-TeX-FAQ
   55.41 +\renewcommand*{\lstlistoflistings}{%
   55.42 +\begingroup
   55.43 +\if@twocolumn
   55.44 +\@restonecoltrue\onecolumn
   55.45 +\else
   55.46 +\@restonecolfalse
   55.47 +\fi
   55.48 +\lol@heading
   55.49 +\setlength{\parskip}{\z@}%
   55.50 +\setlength{\parindent}{\z@}%
   55.51 +\setlength{\parfillskip}{\z@ \@plus 1fil}%
   55.52 +\@starttoc{lol}%
   55.53 +\if@restonecol\twocolumn\fi
   55.54 +\endgroup
   55.55 +}
   55.56 +\makeatother% --> \makeatletter
   55.57 +
   55.58 +
   55.59 +%\lstset{language=C++}
   55.60 +%\usepackage{SIunits}
   55.61 +\usepackage{longtable}
   55.62 +\bibliographystyle{alpha}
   55.63 +
   55.64 +\makeindex
   55.65 +\begin{document}
   55.66 +\nocite{*}
   55.67 +%\maketitle
   55.68 +\newgeometry{left=3cm,right=3cm,bottom=1cm}
   55.69 +\input{title}
   55.70 +\restoregeometry
   55.71 +
   55.72 +%\pagenumbering{roman}
   55.73 +\input{abstract}
   55.74 +\input{preface}
   55.75 +\tableofcontents
   55.76 +%\pagenumbering{arabic}
   55.77 +\input{intro}
   55.78 +\input{research}
   55.79 +
   55.80 +\input{analysis}
   55.81 +\input{design}
   55.82 +\input{impl}
   55.83 +\input{verification}
   55.84 +\input{conclusion}
   55.85 +\listoffigures
   55.86 +\listoftables
   55.87 +\lstlistoflistings
   55.88 +\bibliography{references}
   55.89 +\appendix
   55.90 +\input{appendix}
   55.91 +\end{document}
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/paper/geometry.sty	Fri Jun 04 13:48:28 2010 +0200
    56.3 @@ -0,0 +1,1112 @@
    56.4 +%%
    56.5 +%% This is file `geometry.sty',
    56.6 +%% generated with the docstrip utility.
    56.7 +%%
    56.8 +%% The original source files were:
    56.9 +%%
   56.10 +%% geometry.dtx  (with options: `package')
   56.11 +%% 
   56.12 +%% Copyright (C) 1996-2010
   56.13 +%% by Hideo Umeki <latexgeometry@gmail.com>
   56.14 +%% 
   56.15 +%% This work may be distributed and/or modified under the conditions of
   56.16 +%% the LaTeX Project Public License, either version 1.3c of this license
   56.17 +%% or (at your option) any later version. The latest version of this
   56.18 +%% license is in
   56.19 +%%    http://www.latex-project.org/lppl.txt
   56.20 +%% and version 1.3c or later is part of all distributions of LaTeX
   56.21 +%% version 2005/12/01 or later.
   56.22 +%% 
   56.23 +%% This work is "maintained" (as per the LPPL maintenance status)
   56.24 +%% by Hideo Umeki.
   56.25 +%% 
   56.26 +%% This work consists of the files geometry.dtx and
   56.27 +%% the derived files: geometry.{sty,ins,drv}, geometry-samples.tex.
   56.28 +%% 
   56.29 +\NeedsTeXFormat{LaTeX2e}
   56.30 +\ProvidesPackage{geometry}
   56.31 +  [2010/03/13 v5.3 Page Geometry]
   56.32 +\RequirePackage{keyval}%
   56.33 +\RequirePackage{ifpdf}%
   56.34 +%\RequirePackage{ifvtex}%
   56.35 +\newif\ifGm@verbose
   56.36 +\newif\ifGm@landscape
   56.37 +\newif\ifGm@swap@papersize\Gm@swap@papersizefalse
   56.38 +\newif\ifGm@includehead
   56.39 +\newif\ifGm@includefoot
   56.40 +\newif\ifGm@includemp
   56.41 +\newif\ifGm@hbody
   56.42 +\newif\ifGm@vbody
   56.43 +\newif\ifGm@heightrounded
   56.44 +\newif\ifGm@showframe
   56.45 +\newif\ifGm@showcrop
   56.46 +\newif\ifGm@pass\Gm@passfalse
   56.47 +\newif\ifGm@resetpaper
   56.48 +\newif\ifGm@layout
   56.49 +\newif\ifGm@newgm
   56.50 +\newcount\Gm@cnth
   56.51 +\newcount\Gm@cntv
   56.52 +\newcount\c@Gm@tempcnt
   56.53 +\newdimen\Gm@bindingoffset
   56.54 +\newdimen\Gm@wd@mp
   56.55 +\newdimen\Gm@odd@mp
   56.56 +\newdimen\Gm@even@mp
   56.57 +\newdimen\Gm@layoutwidth
   56.58 +\newdimen\Gm@layoutheight
   56.59 +\newdimen\Gm@layouthoffset
   56.60 +\newdimen\Gm@layoutvoffset
   56.61 +\newtoks\Gm@dimlist
   56.62 +\def\Gm@warning#1{\PackageWarningNoLine{geometry}{#1}}%
   56.63 +\def\ifGm@preamble#1{%
   56.64 +  \ifGm@newgm
   56.65 +   \Gm@warning{`#1': not available in `\string\newgeometry'; skipped}%
   56.66 +  \else
   56.67 +    \expandafter\@firstofone
   56.68 +  \fi}%
   56.69 +\def\Gm@Dhratio{1:1}% = left:right default for oneside
   56.70 +\def\Gm@Dhratiotwo{2:3}% = inner:outer default for twoside.
   56.71 +\def\Gm@Dvratio{2:3}% = top:bottom default
   56.72 +\def\Gm@Dhscale{0.7}%
   56.73 +\def\Gm@Dvscale{0.7}%
   56.74 +\def\Gm@dvips{dvips}%
   56.75 +\def\Gm@dvipdfm{dvipdfm}%
   56.76 +\def\Gm@pdftex{pdftex}%
   56.77 +\def\Gm@xetex{xetex}%
   56.78 +\def\Gm@vtex{vtex}%
   56.79 +\def\Gm@true{true}%
   56.80 +\def\Gm@false{false}%
   56.81 +\edef\Gm@orgpw{\the\paperwidth}%
   56.82 +\edef\Gm@orgph{\the\paperheight}%
   56.83 +\def\Gm@savelength#1{%
   56.84 +  \g@addto@macro\Gm@restore{\expandafter\noexpand\expandafter\csname
   56.85 +  #1\endcsname\expandafter=\expandafter\the\csname #1\endcsname\relax}}
   56.86 +\def\Gm@saveboolean#1{%
   56.87 +  \csname if#1\endcsname
   56.88 +    \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1true\endcsname}%
   56.89 +  \else
   56.90 +    \g@addto@macro\Gm@restore{\expandafter\noexpand\csname #1false\endcsname}%
   56.91 +  \fi}%
   56.92 +\def\Gm@restore{}%
   56.93 +\def\Gm@save{%
   56.94 +  \Gm@savelength{paperwidth}%
   56.95 +  \Gm@savelength{paperheight}%
   56.96 +  \Gm@savelength{textwidth}%
   56.97 +  \Gm@savelength{textheight}%
   56.98 +  \Gm@savelength{evensidemargin}%
   56.99 +  \Gm@savelength{oddsidemargin}%
  56.100 +  \Gm@savelength{topmargin}%
  56.101 +  \Gm@savelength{headheight}%
  56.102 +  \Gm@savelength{headsep}%
  56.103 +  \Gm@savelength{topskip}%
  56.104 +  \Gm@savelength{footskip}%
  56.105 +  \Gm@savelength{baselineskip}%
  56.106 +  \Gm@savelength{marginparwidth}%
  56.107 +  \Gm@savelength{marginparsep}%
  56.108 +  \Gm@savelength{columnsep}%
  56.109 +  \Gm@savelength{hoffset}%
  56.110 +  \Gm@savelength{voffset}
  56.111 +  \Gm@savelength{Gm@layouthoffset}%
  56.112 +  \Gm@savelength{Gm@layoutvoffset}%
  56.113 +  \Gm@saveboolean{@twocolumn}%
  56.114 +  \Gm@saveboolean{@twoside}%
  56.115 +  \Gm@saveboolean{@mparswitch}%
  56.116 +  \Gm@saveboolean{@reversemargin}}%
  56.117 +\def\Gm@initnewgm{%
  56.118 +  \Gm@dimlist={}
  56.119 +  \Gm@hbodyfalse
  56.120 +  \Gm@vbodyfalse
  56.121 +  \Gm@heightroundedfalse
  56.122 +  \Gm@includeheadfalse
  56.123 +  \Gm@includefootfalse
  56.124 +  \Gm@includempfalse
  56.125 +  \let\Gm@width\@undefined
  56.126 +  \let\Gm@height\@undefined
  56.127 +  \let\Gm@textwidth\@undefined
  56.128 +  \let\Gm@textheight\@undefined
  56.129 +  \let\Gm@lines\@undefined
  56.130 +  \let\Gm@hscale\@undefined
  56.131 +  \let\Gm@vscale\@undefined
  56.132 +  \let\Gm@hmarginratio\@undefined
  56.133 +  \let\Gm@vmarginratio\@undefined
  56.134 +  \let\Gm@lmargin\@undefined
  56.135 +  \let\Gm@rmargin\@undefined
  56.136 +  \let\Gm@tmargin\@undefined
  56.137 +  \let\Gm@bmargin\@undefined
  56.138 +  \Gm@layoutfalse
  56.139 +  \Gm@layouthoffset\z@
  56.140 +  \Gm@layoutvoffset\z@
  56.141 +  \Gm@bindingoffset\z@}%
  56.142 +\def\Gm@initall{%
  56.143 +  \let\Gm@driver\@empty
  56.144 +  \let\Gm@truedimen\@empty
  56.145 +  \let\Gm@paper\@undefined
  56.146 +  \Gm@resetpaperfalse
  56.147 +  \Gm@landscapefalse
  56.148 +  \Gm@verbosefalse
  56.149 +  \Gm@showframefalse
  56.150 +  \Gm@showcropfalse
  56.151 +  \Gm@newgmfalse
  56.152 +  \Gm@initnewgm}%
  56.153 +\def\Gm@setdriver#1{%
  56.154 +  \expandafter\let\expandafter\Gm@driver\csname Gm@#1\endcsname}%
  56.155 +\def\Gm@unsetdriver#1{%
  56.156 +  \expandafter\ifx\csname Gm@#1\endcsname\Gm@driver\let\Gm@driver\@empty\fi}%
  56.157 +\def\Gm@setbool{\@dblarg\Gm@@setbool}%
  56.158 +\def\Gm@setboolrev{\@dblarg\Gm@@setboolrev}%
  56.159 +\def\Gm@@setbool[#1]#2#3{\Gm@doif{#1}{#3}{\csname Gm@#2\Gm@bool\endcsname}}%
  56.160 +\def\Gm@@setboolrev[#1]#2#3{\Gm@doifelse{#1}{#3}%
  56.161 +  {\csname Gm@#2\Gm@false\endcsname}{\csname Gm@#2\Gm@true\endcsname}}%
  56.162 +\def\Gm@doif#1#2#3{%
  56.163 +  \lowercase{\def\Gm@bool{#2}}%
  56.164 +  \ifx\Gm@bool\@empty
  56.165 +    \let\Gm@bool\Gm@true
  56.166 +  \fi
  56.167 +  \ifx\Gm@bool\Gm@true
  56.168 +  \else
  56.169 +    \ifx\Gm@bool\Gm@false
  56.170 +    \else
  56.171 +      \let\Gm@bool\relax
  56.172 +    \fi
  56.173 +  \fi
  56.174 +  \ifx\Gm@bool\relax
  56.175 +    \Gm@warning{`#1' should be set to `true' or `false'}%
  56.176 +  \else
  56.177 +    #3
  56.178 +  \fi}%
  56.179 +\def\Gm@doifelse#1#2#3#4{%
  56.180 +  \Gm@doif{#1}{#2}{\ifx\Gm@bool\Gm@true #3\else #4\fi}}%
  56.181 +\def\Gm@reverse#1{%
  56.182 +  \csname ifGm@#1\endcsname
  56.183 +  \csname Gm@#1false\endcsname\else\csname Gm@#1true\endcsname\fi}%
  56.184 +\def\Gm@defbylen#1#2{%
  56.185 +  \setlength\@tempdima{#2}%
  56.186 +  \expandafter\edef\csname Gm@#1\endcsname{\the\@tempdima}}%
  56.187 +\def\Gm@defbycnt#1#2{%
  56.188 +  \setcounter{Gm@tempcnt}{#2}%
  56.189 +  \expandafter\edef\csname Gm@#1\endcsname{\the\value{Gm@tempcnt}}}%
  56.190 +\def\Gm@sep@ratio#1:#2{\@tempcnta=#1\@tempcntb=#2}%
  56.191 +\def\Gm@setbyratio[#1]#2#3#4{% determine #4 by ratio
  56.192 +  \expandafter\Gm@sep@ratio\Gm@mratio\relax
  56.193 +  \if#1b
  56.194 +    \edef\@@tempa{\the\@tempcnta}%
  56.195 +    \@tempcnta=\@tempcntb
  56.196 +    \@tempcntb=\@@tempa\relax
  56.197 +  \fi
  56.198 +  \expandafter\setlength\expandafter\@tempdimb\expandafter
  56.199 +    {\csname Gm@#3\endcsname}%
  56.200 +  \ifnum\@tempcntb>\z@
  56.201 +    \multiply\@tempdimb\@tempcnta
  56.202 +    \divide\@tempdimb\@tempcntb
  56.203 +  \fi
  56.204 +  \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimb}}%
  56.205 +\def\Gm@detiv#1#2#3#4{% determine #4.
  56.206 +  \expandafter\setlength\expandafter\@tempdima\expandafter
  56.207 +    {\csname Gm@layout#1\endcsname}%
  56.208 +  \expandafter\setlength\expandafter\@tempdimb\expandafter
  56.209 +    {\csname Gm@#2\endcsname}%
  56.210 +  \addtolength\@tempdima{-\@tempdimb}%
  56.211 +  \expandafter\setlength\expandafter\@tempdimb\expandafter
  56.212 +    {\csname Gm@#3\endcsname}%
  56.213 +  \addtolength\@tempdima{-\@tempdimb}%
  56.214 +  \ifdim\@tempdima<\z@
  56.215 +    \Gm@warning{`#4' results in NEGATIVE (\the\@tempdima).%
  56.216 +    ^^J\@spaces `#2' or `#3' should be shortened in length}%
  56.217 +  \fi
  56.218 +  \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdima}}%
  56.219 +\def\Gm@detiiandiii#1#2#3{% determine #2 and #3.
  56.220 +  \expandafter\setlength\expandafter\@tempdima\expandafter
  56.221 +    {\csname Gm@layout#1\endcsname}%
  56.222 +  \expandafter\setlength\expandafter\@tempdimb\expandafter
  56.223 +    {\csname Gm@#1\endcsname}%
  56.224 +  \addtolength\@tempdima{-\@tempdimb}%
  56.225 +  \ifdim\@tempdima<\z@
  56.226 +    \Gm@warning{`#2' and `#3' result in NEGATIVE (\the\@tempdima).%
  56.227 +                  ^^J\@spaces `#1' should be shortened in length}%
  56.228 +  \fi
  56.229 +  \ifx\Gm@mratio\@undefined
  56.230 +    \expandafter\Gm@sep@ratio\Gm@Dmratio\relax
  56.231 +  \else
  56.232 +    \expandafter\Gm@sep@ratio\Gm@mratio\relax
  56.233 +    \ifnum\@tempcntb>\z@\else
  56.234 +      \Gm@warning{margin ratio a:b should be non-zero; default used}%
  56.235 +      \expandafter\Gm@sep@ratio\Gm@Dmratio\relax
  56.236 +    \fi
  56.237 +  \fi
  56.238 +  \@tempdimb=\@tempdima
  56.239 +  \advance\@tempcntb\@tempcnta
  56.240 +  \divide\@tempdima\@tempcntb
  56.241 +  \multiply\@tempdima\@tempcnta
  56.242 +  \advance\@tempdimb-\@tempdima
  56.243 +  \expandafter\edef\csname Gm@#2\endcsname{\the\@tempdima}%
  56.244 +  \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimb}}%
  56.245 +\def\Gm@detall#1#2#3#4{%
  56.246 +  \@tempcnta\z@
  56.247 +  \if#1h
  56.248 +    \let\Gm@mratio\Gm@hmarginratio
  56.249 +    \edef\Gm@Dmratio{\if@twoside\Gm@Dhratiotwo\else\Gm@Dhratio\fi}%
  56.250 +  \else
  56.251 +    \let\Gm@mratio\Gm@vmarginratio
  56.252 +    \edef\Gm@Dmratio{\Gm@Dvratio}%
  56.253 +  \fi
  56.254 +  \if#1h
  56.255 +    \ifx\Gm@lmargin\@undefined\else\advance\@tempcnta4\relax\fi
  56.256 +    \ifGm@hbody\advance\@tempcnta2\relax\fi
  56.257 +    \ifx\Gm@rmargin\@undefined\else\advance\@tempcnta1\relax\fi
  56.258 +    \Gm@cnth\@tempcnta
  56.259 +  \else
  56.260 +    \ifx\Gm@tmargin\@undefined\else\advance\@tempcnta4\relax\fi
  56.261 +    \ifGm@vbody\advance\@tempcnta2\relax\fi
  56.262 +    \ifx\Gm@bmargin\@undefined\else\advance\@tempcnta1\relax\fi
  56.263 +    \Gm@cntv\@tempcnta
  56.264 +  \fi
  56.265 +  \ifcase\@tempcnta
  56.266 +    \if#1h
  56.267 +      \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
  56.268 +    \else
  56.269 +      \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
  56.270 +    \fi
  56.271 +    \Gm@detiiandiii{#2}{#3}{#4}%
  56.272 +  \or
  56.273 +    \ifx\Gm@mratio\@undefined
  56.274 +      \if#1h
  56.275 +        \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
  56.276 +      \else
  56.277 +        \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
  56.278 +      \fi
  56.279 +      \setlength\@tempdimc{\@nameuse{Gm@#4}}%
  56.280 +      \Gm@detiiandiii{#2}{#3}{#4}%
  56.281 +      \expandafter\let\csname Gm@#2\endcsname\@undefined
  56.282 +      \expandafter\edef\csname Gm@#4\endcsname{\the\@tempdimc}%
  56.283 +    \else
  56.284 +      \Gm@setbyratio[f]{#1}{#4}{#3}%
  56.285 +    \fi
  56.286 +    \Gm@detiv{#2}{#3}{#4}{#2}%
  56.287 +  \or\Gm@detiiandiii{#2}{#3}{#4}%
  56.288 +  \or\Gm@detiv{#2}{#2}{#4}{#3}%
  56.289 +  \or
  56.290 +    \ifx\Gm@mratio\@undefined
  56.291 +      \if#1h
  56.292 +        \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
  56.293 +      \else
  56.294 +        \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
  56.295 +      \fi
  56.296 +      \setlength\@tempdimc{\@nameuse{Gm@#3}}%
  56.297 +      \Gm@detiiandiii{#2}{#4}{#3}%
  56.298 +      \expandafter\let\csname Gm@#2\endcsname\@undefined
  56.299 +      \expandafter\edef\csname Gm@#3\endcsname{\the\@tempdimc}%
  56.300 +    \else
  56.301 +      \Gm@setbyratio[b]{#1}{#3}{#4}%
  56.302 +    \fi
  56.303 +    \Gm@detiv{#2}{#3}{#4}{#2}%
  56.304 +  \or\Gm@detiv{#2}{#3}{#4}{#2}%
  56.305 +  \or\Gm@detiv{#2}{#2}{#3}{#4}%
  56.306 +  \or\Gm@warning{Over-specification in `#1'-direction.%
  56.307 +                  ^^J\@spaces `#2' (\@nameuse{Gm@#2}) is ignored}%
  56.308 +    \Gm@detiv{#2}{#3}{#4}{#2}%
  56.309 +  \else\fi}%
  56.310 +\def\Gm@clean{%
  56.311 +  \ifnum\Gm@cnth<4\let\Gm@lmargin\@undefined\fi
  56.312 +  \ifodd\Gm@cnth\else\let\Gm@rmargin\@undefined\fi
  56.313 +  \ifnum\Gm@cntv<4\let\Gm@tmargin\@undefined\fi
  56.314 +  \ifodd\Gm@cntv\else\let\Gm@bmargin\@undefined\fi
  56.315 +  \ifGm@hbody\else
  56.316 +    \let\Gm@hscale\@undefined
  56.317 +    \let\Gm@width\@undefined
  56.318 +    \let\Gm@textwidth\@undefined
  56.319 +  \fi
  56.320 +  \ifGm@vbody\else
  56.321 +    \let\Gm@vscale\@undefined
  56.322 +    \let\Gm@height\@undefined
  56.323 +    \let\Gm@textheight\@undefined
  56.324 +  \fi
  56.325 +  }%
  56.326 +\def\Gm@parse@divide#1#2#3#4{%
  56.327 +  \def\Gm@star{*}%
  56.328 +  \@tempcnta\z@
  56.329 +  \@for\Gm@tmp:=#1\do{%
  56.330 +    \expandafter\KV@@sp@def\expandafter\Gm@frag\expandafter{\Gm@tmp}%
  56.331 +    \edef\Gm@value{\Gm@frag}%
  56.332 +    \ifcase\@tempcnta\relax\edef\Gm@key{#2}%
  56.333 +      \or\edef\Gm@key{#3}%
  56.334 +      \else\edef\Gm@key{#4}%
  56.335 +    \fi
  56.336 +    \@nameuse{Gm@set\Gm@key false}%
  56.337 +    \ifx\empty\Gm@value\else
  56.338 +    \ifx\Gm@star\Gm@value\else
  56.339 +      \setkeys{Gm}{\Gm@key=\Gm@value}%
  56.340 +    \fi\fi
  56.341 +    \advance\@tempcnta\@ne}%
  56.342 +  \let\Gm@star\relax}%
  56.343 +\def\Gm@branch#1#2#3{%
  56.344 +  \@tempcnta\z@
  56.345 +  \@for\Gm@tmp:=#1\do{%
  56.346 +    \KV@@sp@def\Gm@frag{\Gm@tmp}%
  56.347 +    \edef\Gm@value{\Gm@frag}%
  56.348 +    \ifcase\@tempcnta\relax% cnta == 0
  56.349 +      \setkeys{Gm}{#2=\Gm@value}%
  56.350 +    \or% cnta == 1
  56.351 +      \setkeys{Gm}{#3=\Gm@value}%
  56.352 +    \else\fi
  56.353 +    \advance\@tempcnta\@ne}%
  56.354 +  \ifnum\@tempcnta=\@ne
  56.355 +    \setkeys{Gm}{#3=\Gm@value}%
  56.356 +  \fi}%
  56.357 +\def\Gm@magtooffset{%
  56.358 +  \@tempdima=\mag\Gm@truedimen sp%
  56.359 +  \@tempdimb=1\Gm@truedimen in%
  56.360 +  \divide\@tempdimb\@tempdima
  56.361 +  \multiply\@tempdimb\@m
  56.362 +  \addtolength{\hoffset}{1\Gm@truedimen in}%
  56.363 +  \addtolength{\voffset}{1\Gm@truedimen in}%
  56.364 +  \addtolength{\hoffset}{-\the\@tempdimb}%
  56.365 +  \addtolength{\voffset}{-\the\@tempdimb}}%
  56.366 +\def\Gm@setlength#1#2{%
  56.367 +  \let\Gm@len=\relax\let\Gm@td=\relax
  56.368 +  \edef\addtolist{\noexpand\Gm@dimlist=%
  56.369 +  {\the\Gm@dimlist \Gm@len{#1}{#2}}}\addtolist}%
  56.370 +\def\Gm@expandlengths{%
  56.371 +  \def\Gm@td{\Gm@truedimen}%
  56.372 +  \def\Gm@len##1##2{\setlength{##1}{##2}}%
  56.373 +  \the\Gm@dimlist}%
  56.374 +\def\Gm@setsize#1(#2,#3)#4{%
  56.375 +  \let\Gm@td\relax
  56.376 +  \expandafter\Gm@setlength\csname #1width\endcsname{#2\Gm@td #4}%
  56.377 +  \expandafter\Gm@setlength\csname #1height\endcsname{#3\Gm@td #4}%
  56.378 +  \ifGm@landscape\Gm@swap@papersizetrue\else\Gm@swap@papersizefalse\fi}%
  56.379 +\def\Gm@setpaper@ifpre#1{%
  56.380 +  \ifGm@preamble{#1}{\def\Gm@paper{#1}\@nameuse{Gm@#1}{paper}}}%
  56.381 +\@namedef{Gm@a0paper}#1{\Gm@setsize{#1}(841,1189){mm}}% ISO A0
  56.382 +\@namedef{Gm@a1paper}#1{\Gm@setsize{#1}(594,841){mm}}% ISO A1
  56.383 +\@namedef{Gm@a2paper}#1{\Gm@setsize{#1}(420,594){mm}}% ISO A2
  56.384 +\@namedef{Gm@a3paper}#1{\Gm@setsize{#1}(297,420){mm}}% ISO A3
  56.385 +\@namedef{Gm@a4paper}#1{\Gm@setsize{#1}(210,297){mm}}% ISO A4
  56.386 +\@namedef{Gm@a5paper}#1{\Gm@setsize{#1}(148,210){mm}}% ISO A5
  56.387 +\@namedef{Gm@a6paper}#1{\Gm@setsize{#1}(105,148){mm}}% ISO A6
  56.388 +\@namedef{Gm@b0paper}#1{\Gm@setsize{#1}(1000,1414){mm}}% ISO B0
  56.389 +\@namedef{Gm@b1paper}#1{\Gm@setsize{#1}(707,1000){mm}}% ISO B1
  56.390 +\@namedef{Gm@b2paper}#1{\Gm@setsize{#1}(500,707){mm}}% ISO B2
  56.391 +\@namedef{Gm@b3paper}#1{\Gm@setsize{#1}(353,500){mm}}% ISO B3
  56.392 +\@namedef{Gm@b4paper}#1{\Gm@setsize{#1}(250,353){mm}}% ISO B4
  56.393 +\@namedef{Gm@b5paper}#1{\Gm@setsize{#1}(176,250){mm}}% ISO B5
  56.394 +\@namedef{Gm@b6paper}#1{\Gm@setsize{#1}(125,176){mm}}% ISO B6
  56.395 +\@namedef{Gm@b0j}#1{\Gm@setsize{#1}(1030,1456){mm}}% JIS B0
  56.396 +\@namedef{Gm@b1j}#1{\Gm@setsize{#1}(728,1030){mm}}% JIS B1
  56.397 +\@namedef{Gm@b2j}#1{\Gm@setsize{#1}(515,728){mm}}% JIS B2
  56.398 +\@namedef{Gm@b3j}#1{\Gm@setsize{#1}(364,515){mm}}% JIS B3
  56.399 +\@namedef{Gm@b4j}#1{\Gm@setsize{#1}(257,364){mm}}% JIS B4
  56.400 +\@namedef{Gm@b5j}#1{\Gm@setsize{#1}(182,257){mm}}% JIS B5
  56.401 +\@namedef{Gm@b6j}#1{\Gm@setsize{#1}(128,182){mm}}% JIS B6
  56.402 +\@namedef{Gm@ansiapaper}#1{\Gm@setsize{#1}(8.5,11){in}}%
  56.403 +\@namedef{Gm@ansibpaper}#1{\Gm@setsize{#1}(11,17){in}}%
  56.404 +\@namedef{Gm@ansicpaper}#1{\Gm@setsize{#1}(17,22){in}}%
  56.405 +\@namedef{Gm@ansidpaper}#1{\Gm@setsize{#1}(22,34){in}}%
  56.406 +\@namedef{Gm@ansiepaper}#1{\Gm@setsize{#1}(34,44){in}}%
  56.407 +\@namedef{Gm@letterpaper}#1{\Gm@setsize{#1}(8.5,11){in}}%
  56.408 +\@namedef{Gm@legalpaper}#1{\Gm@setsize{#1}(8.5,14){in}}%
  56.409 +\@namedef{Gm@executivepaper}#1{\Gm@setsize{#1}(7.25,10.5){in}}%
  56.410 +\@namedef{Gm@screen}#1{\Gm@setsize{#1}(225,180){mm}}%
  56.411 +\define@key{Gm}{paper}{\setkeys{Gm}{#1}}%
  56.412 +\let\KV@Gm@papername\KV@Gm@paper
  56.413 +\define@key{Gm}{a0paper}[true]{\Gm@setpaper@ifpre{a0paper}}%
  56.414 +\define@key{Gm}{a1paper}[true]{\Gm@setpaper@ifpre{a1paper}}%
  56.415 +\define@key{Gm}{a2paper}[true]{\Gm@setpaper@ifpre{a2paper}}%
  56.416 +\define@key{Gm}{a3paper}[true]{\Gm@setpaper@ifpre{a3paper}}%
  56.417 +\define@key{Gm}{a4paper}[true]{\Gm@setpaper@ifpre{a4paper}}%
  56.418 +\define@key{Gm}{a5paper}[true]{\Gm@setpaper@ifpre{a5paper}}%
  56.419 +\define@key{Gm}{a6paper}[true]{\Gm@setpaper@ifpre{a6paper}}%
  56.420 +\define@key{Gm}{b0paper}[true]{\Gm@setpaper@ifpre{b0paper}}%
  56.421 +\define@key{Gm}{b1paper}[true]{\Gm@setpaper@ifpre{b1paper}}%
  56.422 +\define@key{Gm}{b2paper}[true]{\Gm@setpaper@ifpre{b2paper}}%
  56.423 +\define@key{Gm}{b3paper}[true]{\Gm@setpaper@ifpre{b3paper}}%
  56.424 +\define@key{Gm}{b4paper}[true]{\Gm@setpaper@ifpre{b4paper}}%
  56.425 +\define@key{Gm}{b5paper}[true]{\Gm@setpaper@ifpre{b5paper}}%
  56.426 +\define@key{Gm}{b6paper}[true]{\Gm@setpaper@ifpre{b6paper}}%
  56.427 +\define@key{Gm}{b0j}[true]{\Gm@setpaper@ifpre{b0j}}%
  56.428 +\define@key{Gm}{b1j}[true]{\Gm@setpaper@ifpre{b1j}}%
  56.429 +\define@key{Gm}{b2j}[true]{\Gm@setpaper@ifpre{b2j}}%
  56.430 +\define@key{Gm}{b3j}[true]{\Gm@setpaper@ifpre{b3j}}%
  56.431 +\define@key{Gm}{b4j}[true]{\Gm@setpaper@ifpre{b4j}}%
  56.432 +\define@key{Gm}{b5j}[true]{\Gm@setpaper@ifpre{b5j}}%
  56.433 +\define@key{Gm}{b6j}[true]{\Gm@setpaper@ifpre{b6j}}%
  56.434 +\define@key{Gm}{ansiapaper}[true]{\Gm@setpaper@ifpre{ansiapaper}}%
  56.435 +\define@key{Gm}{ansibpaper}[true]{\Gm@setpaper@ifpre{ansibpaper}}%
  56.436 +\define@key{Gm}{ansicpaper}[true]{\Gm@setpaper@ifpre{ansicpaper}}%
  56.437 +\define@key{Gm}{ansidpaper}[true]{\Gm@setpaper@ifpre{ansidpaper}}%
  56.438 +\define@key{Gm}{ansiepaper}[true]{\Gm@setpaper@ifpre{ansiepaper}}%
  56.439 +\define@key{Gm}{letterpaper}[true]{\Gm@setpaper@ifpre{letterpaper}}%
  56.440 +\define@key{Gm}{legalpaper}[true]{\Gm@setpaper@ifpre{legalpaper}}%
  56.441 +\define@key{Gm}{executivepaper}[true]{\Gm@setpaper@ifpre{executivepaper}}%
  56.442 +\define@key{Gm}{screen}[true]{\Gm@setpaper@ifpre{screen}}%
  56.443 +\define@key{Gm}{paperwidth}{\ifGm@preamble{paperwidth}{%
  56.444 +  \Gm@setlength\paperwidth{#1}}}%
  56.445 +\define@key{Gm}{paperheight}{\ifGm@preamble{paperheight}{%
  56.446 +  \Gm@setlength\paperheight{#1}}}%
  56.447 +\define@key{Gm}{papersize}{\ifGm@preamble{papersize}{%
  56.448 +  \Gm@branch{#1}{paperwidth}{paperheight}}}%
  56.449 +\define@key{Gm}{layout}{\Gm@layouttrue\@nameuse{Gm@#1}{Gm@layout}}%
  56.450 +\let\KV@Gm@layoutname\KV@Gm@layout
  56.451 +\define@key{Gm}{layoutwidth}{\Gm@layouttrue\Gm@setlength\Gm@layoutwidth{#1}}%
  56.452 +\define@key{Gm}{layoutheight}{\Gm@layouttrue\Gm@setlength\Gm@layoutheight{#1}}%
  56.453 +\define@key{Gm}{layoutsize}{\Gm@branch{#1}{layoutwidth}{layoutheight}}%
  56.454 +\define@key{Gm}{landscape}[true]{\ifGm@preamble{landscape}{%
  56.455 +  \Gm@doifelse{landscape}{#1}%
  56.456 +  {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}%
  56.457 +  {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}}}%
  56.458 +\define@key{Gm}{portrait}[true]{\ifGm@preamble{portrait}{%
  56.459 +  \Gm@doifelse{portrait}{#1}%
  56.460 +  {\ifGm@landscape\Gm@landscapefalse\Gm@reverse{swap@papersize}\fi}%
  56.461 +  {\ifGm@landscape\else\Gm@landscapetrue\Gm@reverse{swap@papersize}\fi}}}%
  56.462 +\define@key{Gm}{hscale}{\Gm@hbodytrue\edef\Gm@hscale{#1}}%
  56.463 +\define@key{Gm}{vscale}{\Gm@vbodytrue\edef\Gm@vscale{#1}}%
  56.464 +\define@key{Gm}{scale}{\Gm@branch{#1}{hscale}{vscale}}%
  56.465 +\define@key{Gm}{width}{\Gm@hbodytrue\Gm@defbylen{width}{#1}}%
  56.466 +\define@key{Gm}{height}{\Gm@vbodytrue\Gm@defbylen{height}{#1}}%
  56.467 +\define@key{Gm}{total}{\Gm@branch{#1}{width}{height}}%
  56.468 +\let\KV@Gm@totalwidth\KV@Gm@width
  56.469 +\let\KV@Gm@totalheight\KV@Gm@height
  56.470 +\define@key{Gm}{textwidth}{\Gm@hbodytrue\Gm@defbylen{textwidth}{#1}}%
  56.471 +\define@key{Gm}{textheight}{\Gm@vbodytrue\Gm@defbylen{textheight}{#1}}%
  56.472 +\define@key{Gm}{text}{\Gm@branch{#1}{textwidth}{textheight}}%
  56.473 +\let\KV@Gm@body\KV@Gm@text
  56.474 +\define@key{Gm}{lines}{\Gm@vbodytrue\Gm@defbycnt{lines}{#1}}%
  56.475 +\define@key{Gm}{includehead}[true]{\Gm@setbool{includehead}{#1}}%
  56.476 +\define@key{Gm}{includefoot}[true]{\Gm@setbool{includefoot}{#1}}%
  56.477 +\define@key{Gm}{includeheadfoot}[true]{\Gm@doifelse{includeheadfoot}{#1}%
  56.478 +  {\Gm@includeheadtrue\Gm@includefoottrue}%
  56.479 +  {\Gm@includeheadfalse\Gm@includefootfalse}}%
  56.480 +\define@key{Gm}{includemp}[true]{\Gm@setbool{includemp}{#1}}%
  56.481 +\define@key{Gm}{includeall}[true]{\Gm@doifelse{includeall}{#1}%
  56.482 +  {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}%
  56.483 +  {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}}%
  56.484 +\define@key{Gm}{ignorehead}[true]{%
  56.485 +  \Gm@setboolrev[ignorehead]{includehead}{#1}}%
  56.486 +\define@key{Gm}{ignorefoot}[true]{%
  56.487 +  \Gm@setboolrev[ignorefoot]{includefoot}{#1}}%
  56.488 +\define@key{Gm}{ignoreheadfoot}[true]{\Gm@doifelse{ignoreheadfoot}{#1}%
  56.489 +  {\Gm@includeheadfalse\Gm@includefootfalse}%
  56.490 +  {\Gm@includeheadtrue\Gm@includefoottrue}}%
  56.491 +\define@key{Gm}{ignoremp}[true]{%
  56.492 +  \Gm@setboolrev[ignoremp]{includemp}{#1}}%
  56.493 +\define@key{Gm}{ignoreall}[true]{\Gm@doifelse{ignoreall}{#1}%
  56.494 +  {\Gm@includeheadfalse\Gm@includefootfalse\Gm@includempfalse}%
  56.495 +  {\Gm@includeheadtrue\Gm@includefoottrue\Gm@includemptrue}}%
  56.496 +\define@key{Gm}{heightrounded}[true]{\Gm@setbool{heightrounded}{#1}}%
  56.497 +\define@key{Gm}{hdivide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}}%
  56.498 +\define@key{Gm}{vdivide}{\Gm@parse@divide{#1}{tmargin}{height}{bmargin}}%
  56.499 +\define@key{Gm}{divide}{\Gm@parse@divide{#1}{lmargin}{width}{rmargin}%
  56.500 +  \Gm@parse@divide{#1}{tmargin}{height}{bmargin}}%
  56.501 +\define@key{Gm}{lmargin}{\Gm@defbylen{lmargin}{#1}}%
  56.502 +\define@key{Gm}{rmargin}{\Gm@defbylen{rmargin}{#1}}%
  56.503 +\let\KV@Gm@left\KV@Gm@lmargin
  56.504 +\let\KV@Gm@inner\KV@Gm@lmargin
  56.505 +\let\KV@Gm@innermargin\KV@Gm@lmargin
  56.506 +\let\KV@Gm@right\KV@Gm@rmargin
  56.507 +\let\KV@Gm@outer\KV@Gm@rmargin
  56.508 +\let\KV@Gm@outermargin\KV@Gm@rmargin
  56.509 +\define@key{Gm}{tmargin}{\Gm@defbylen{tmargin}{#1}}%
  56.510 +\define@key{Gm}{bmargin}{\Gm@defbylen{bmargin}{#1}}%
  56.511 +\let\KV@Gm@top\KV@Gm@tmargin
  56.512 +\let\KV@Gm@bottom\KV@Gm@bmargin
  56.513 +\define@key{Gm}{hmargin}{\Gm@branch{#1}{lmargin}{rmargin}}%
  56.514 +\define@key{Gm}{vmargin}{\Gm@branch{#1}{tmargin}{bmargin}}%
  56.515 +\define@key{Gm}{margin}{\Gm@branch{#1}{lmargin}{tmargin}%
  56.516 +  \Gm@branch{#1}{rmargin}{bmargin}}%
  56.517 +\define@key{Gm}{hmarginratio}{\edef\Gm@hmarginratio{#1}}%
  56.518 +\define@key{Gm}{vmarginratio}{\edef\Gm@vmarginratio{#1}}%
  56.519 +\define@key{Gm}{marginratio}{\Gm@branch{#1}{hmarginratio}{vmarginratio}}%
  56.520 +\let\KV@Gm@hratio\KV@Gm@hmarginratio
  56.521 +\let\KV@Gm@vratio\KV@Gm@vmarginratio
  56.522 +\let\KV@Gm@ratio\KV@Gm@marginratio
  56.523 +\define@key{Gm}{hcentering}[true]{\Gm@doifelse{hcentering}{#1}%
  56.524 +  {\def\Gm@hmarginratio{1:1}}{}}%
  56.525 +\define@key{Gm}{vcentering}[true]{\Gm@doifelse{vcentering}{#1}%
  56.526 +  {\def\Gm@vmarginratio{1:1}}{}}%
  56.527 +\define@key{Gm}{centering}[true]{\Gm@doifelse{centering}{#1}%
  56.528 +  {\def\Gm@hmarginratio{1:1}\def\Gm@vmarginratio{1:1}}{}}%
  56.529 +\define@key{Gm}{twoside}[true]{\Gm@doifelse{twoside}{#1}%
  56.530 +  {\@twosidetrue\@mparswitchtrue}{\@twosidefalse\@mparswitchfalse}}%
  56.531 +\define@key{Gm}{asymmetric}[true]{\Gm@doifelse{asymmetric}{#1}%
  56.532 +  {\@twosidetrue\@mparswitchfalse}{}}%
  56.533 +\define@key{Gm}{bindingoffset}{\Gm@setlength\Gm@bindingoffset{#1}}%
  56.534 +\define@key{Gm}{headheight}{\Gm@setlength\headheight{#1}}%
  56.535 +\define@key{Gm}{headsep}{\Gm@setlength\headsep{#1}}%
  56.536 +\define@key{Gm}{footskip}{\Gm@setlength\footskip{#1}}%
  56.537 +\let\KV@Gm@head\KV@Gm@headheight
  56.538 +\let\KV@Gm@foot\KV@Gm@footskip
  56.539 +\define@key{Gm}{nohead}[true]{\Gm@doifelse{nohead}{#1}%
  56.540 +  {\Gm@setlength\headheight\z@\Gm@setlength\headsep\z@}{}}%
  56.541 +\define@key{Gm}{nofoot}[true]{\Gm@doifelse{nofoot}{#1}%
  56.542 +  {\Gm@setlength\footskip\z@}{}}%
  56.543 +\define@key{Gm}{noheadfoot}[true]{\Gm@doifelse{noheadfoot}{#1}%
  56.544 +  {\Gm@setlength\headheight\z@\Gm@setlength\headsep
  56.545 +  \z@\Gm@setlength\footskip\z@}{}}%
  56.546 +\define@key{Gm}{footnotesep}{\Gm@setlength{\skip\footins}{#1}}%
  56.547 +\define@key{Gm}{marginparwidth}{\Gm@setlength\marginparwidth{#1}}%
  56.548 +\let\KV@Gm@marginpar\KV@Gm@marginparwidth
  56.549 +\define@key{Gm}{marginparsep}{\Gm@setlength\marginparsep{#1}}%
  56.550 +\define@key{Gm}{nomarginpar}[true]{\Gm@doifelse{nomarginpar}{#1}%
  56.551 +  {\Gm@setlength\marginparwidth\z@\Gm@setlength\marginparsep\z@}{}}%
  56.552 +\define@key{Gm}{columnsep}{\Gm@setlength\columnsep{#1}}%
  56.553 +\define@key{Gm}{hoffset}{\Gm@setlength\hoffset{#1}}%
  56.554 +\define@key{Gm}{voffset}{\Gm@setlength\voffset{#1}}%
  56.555 +\define@key{Gm}{offset}{\Gm@branch{#1}{hoffset}{voffset}}%
  56.556 +\define@key{Gm}{layouthoffset}{\Gm@setlength\Gm@layouthoffset{#1}}%
  56.557 +\define@key{Gm}{layoutvoffset}{\Gm@setlength\Gm@layoutvoffset{#1}}%
  56.558 +\define@key{Gm}{layoutoffset}{\Gm@branch{#1}{layouthoffset}{layoutvoffset}}%
  56.559 +\define@key{Gm}{twocolumn}[true]{%
  56.560 +  \Gm@doif{twocolumn}{#1}{\csname @twocolumn\Gm@bool\endcsname}}%
  56.561 +\define@key{Gm}{onecolumn}[true]{%
  56.562 +  \Gm@doifelse{onecolumn}{#1}{\@twocolumnfalse}{\@twocolumntrue}}%
  56.563 +\define@key{Gm}{reversemp}[true]{%
  56.564 +  \Gm@doif{reversemp}{#1}{\csname @reversemargin\Gm@bool\endcsname}}%
  56.565 +\define@key{Gm}{reversemarginpar}[true]{%
  56.566 +  \Gm@doif{reversemarginpar}{#1}{\csname @reversemargin\Gm@bool\endcsname}}%
  56.567 +\define@key{Gm}{driver}{\ifGm@preamble{driver}{%
  56.568 +  \edef\@@tempa{#1}\edef\@@auto{auto}\edef\@@none{none}%
  56.569 +  \ifx\@@tempa\@empty\let\Gm@driver\relax\else
  56.570 +  \ifx\@@tempa\@@none\let\Gm@driver\relax\else
  56.571 +  \ifx\@@tempa\@@auto\let\Gm@driver\@empty\else
  56.572 +  \setkeys{Gm}{#1}\fi\fi\fi\let\@@auto\relax\let\@@none\relax}}%
  56.573 +\define@key{Gm}{dvips}[true]{\ifGm@preamble{dvips}{%
  56.574 +  \Gm@doifelse{dvips}{#1}{\Gm@setdriver{dvips}}{\Gm@unsetdriver{dvips}}}}%
  56.575 +\define@key{Gm}{dvipdfm}[true]{\ifGm@preamble{dvipdfm}{%
  56.576 +  \Gm@doifelse{dvipdfm}{#1}{\Gm@setdriver{dvipdfm}}{\Gm@unsetdriver{dvipdfm}}}}%
  56.577 +\define@key{Gm}{pdftex}[true]{\ifGm@preamble{pdftex}{%
  56.578 +  \Gm@doifelse{pdftex}{#1}{\Gm@setdriver{pdftex}}{\Gm@unsetdriver{pdftex}}}}%
  56.579 +\define@key{Gm}{xetex}[true]{\ifGm@preamble{xetex}{%
  56.580 +  \Gm@doifelse{xetex}{#1}{\Gm@setdriver{xetex}}{\Gm@unsetdriver{xetex}}}}%
  56.581 +\define@key{Gm}{vtex}[true]{\ifGm@preamble{vtex}{%
  56.582 +  \Gm@doifelse{vtex}{#1}{\Gm@setdriver{vtex}}{\Gm@unsetdriver{vtex}}}}%
  56.583 +\define@key{Gm}{verbose}[true]{\ifGm@preamble{verbose}{\Gm@setbool{verbose}{#1}}}%
  56.584 +\define@key{Gm}{reset}[true]{\ifGm@preamble{reset}{%
  56.585 +  \Gm@doifelse{reset}{#1}{\Gm@restore@org\Gm@initall
  56.586 +  \ProcessOptionsKV[c]{Gm}\Gm@setdefaultpaper}{}}}%
  56.587 +\define@key{Gm}{resetpaper}[true]{\ifGm@preamble{resetpaper}{%
  56.588 +  \Gm@setbool{resetpaper}{#1}}}%
  56.589 +\define@key{Gm}{mag}{\ifGm@preamble{mag}{\mag=#1}}%
  56.590 +\define@key{Gm}{truedimen}[true]{\ifGm@preamble{truedimen}{%
  56.591 +  \Gm@doifelse{truedimen}{#1}{\let\Gm@truedimen\Gm@true}%
  56.592 +  {\let\Gm@truedimen\@empty}}}%
  56.593 +\define@key{Gm}{pass}[true]{\ifGm@preamble{pass}{\Gm@setbool{pass}{#1}}}%
  56.594 +\define@key{Gm}{showframe}[true]{\Gm@setbool{showframe}{#1}}%
  56.595 +\define@key{Gm}{showcrop}[true]{\Gm@setbool{showcrop}{#1}}%
  56.596 +\def\Gm@setdefaultpaper{%
  56.597 +  \ifx\Gm@paper\@undefined
  56.598 +    \Gm@setsize{paper}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}%
  56.599 +    \Gm@setsize{Gm@layout}(\strip@pt\paperwidth,\strip@pt\paperheight){pt}%
  56.600 +    \Gm@swap@papersizefalse
  56.601 +  \fi}%
  56.602 +\def\Gm@adjustpaper{%
  56.603 +  \ifdim\paperwidth>\p@\else
  56.604 +    \PackageError{geometry}{%
  56.605 +    \string\paperwidth\space(\the\paperwidth) too short}{%
  56.606 +    Set a paper type (e.g., `a4paper').}%
  56.607 +  \fi
  56.608 +  \ifdim\paperheight>\p@\else
  56.609 +    \PackageError{geometry}{%
  56.610 +    \string\paperheight\space(\the\paperheight) too short}{%
  56.611 +    Set a paper type (e.g., `a4paper').}%
  56.612 +  \fi
  56.613 +  \ifGm@swap@papersize
  56.614 +    \setlength\@tempdima{\paperwidth}%
  56.615 +    \setlength\paperwidth{\paperheight}%
  56.616 +    \setlength\paperheight{\@tempdima}%
  56.617 +  \fi
  56.618 +  \ifGm@layout\else
  56.619 +    \let\Gm@layoutwidth\paperwidth
  56.620 +    \let\Gm@layoutheight\paperheight
  56.621 +  \fi}%
  56.622 +\def\Gm@checkmp{%
  56.623 +  \ifGm@includemp\else
  56.624 +    \@tempcnta\z@\@tempcntb\@ne
  56.625 +    \if@twocolumn
  56.626 +      \@tempcnta\@ne
  56.627 +    \else
  56.628 +      \if@reversemargin
  56.629 +        \@tempcnta\@ne\@tempcntb\z@
  56.630 +      \fi
  56.631 +    \fi
  56.632 +    \@tempdima\marginparwidth
  56.633 +    \advance\@tempdima\marginparsep
  56.634 +    \ifnum\@tempcnta=\@ne
  56.635 +      \@tempdimc\@tempdima
  56.636 +      \setlength\@tempdimb{\Gm@lmargin}%
  56.637 +      \advance\@tempdimc-\@tempdimb
  56.638 +      \ifdim\@tempdimc>\z@
  56.639 +        \Gm@warning{The marginal notes overrun the paper edge.^^J
  56.640 +        \@spaces Add \the\@tempdimc\space and more to the left margin}%
  56.641 +      \fi
  56.642 +    \fi
  56.643 +    \ifnum\@tempcntb=\@ne
  56.644 +      \@tempdimc\@tempdima
  56.645 +      \setlength\@tempdimb{\Gm@rmargin}%
  56.646 +      \advance\@tempdimc-\@tempdimb
  56.647 +      \ifdim\@tempdimc>\z@
  56.648 +        \Gm@warning{The marginal notes overrun the paper.^^J
  56.649 +        \@spaces Add \the\@tempdimc\space and more to the right margin}%
  56.650 +      \fi
  56.651 +    \fi
  56.652 +  \fi}%
  56.653 +\def\Gm@adjustmp{%
  56.654 +  \ifGm@includemp
  56.655 +    \@tempdimb\marginparwidth
  56.656 +    \advance\@tempdimb\marginparsep
  56.657 +    \Gm@wd@mp\@tempdimb
  56.658 +    \Gm@odd@mp\z@
  56.659 +    \Gm@even@mp\z@
  56.660 +    \if@twocolumn
  56.661 +      \Gm@wd@mp2\@tempdimb
  56.662 +      \Gm@odd@mp\@tempdimb
  56.663 +      \Gm@even@mp\@tempdimb
  56.664 +    \else
  56.665 +      \if@reversemargin
  56.666 +        \Gm@odd@mp\@tempdimb
  56.667 +        \if@mparswitch\else
  56.668 +          \Gm@even@mp\@tempdimb
  56.669 +        \fi
  56.670 +      \else
  56.671 +        \if@mparswitch
  56.672 +          \Gm@even@mp\@tempdimb
  56.673 +        \fi
  56.674 +      \fi
  56.675 +    \fi
  56.676 +  \fi}%
  56.677 +\def\Gm@adjustbody{
  56.678 +  \ifGm@hbody
  56.679 +    \ifx\Gm@width\@undefined
  56.680 +      \ifx\Gm@hscale\@undefined
  56.681 +        \edef\Gm@width{\Gm@Dhscale\Gm@layoutwidth}%
  56.682 +      \else
  56.683 +        \edef\Gm@width{\Gm@hscale\Gm@layoutwidth}%
  56.684 +      \fi
  56.685 +    \fi
  56.686 +    \ifx\Gm@textwidth\@undefined\else
  56.687 +      \setlength\@tempdima{\Gm@textwidth}%
  56.688 +      \ifGm@includemp
  56.689 +        \advance\@tempdima\Gm@wd@mp
  56.690 +      \fi
  56.691 +      \edef\Gm@width{\the\@tempdima}%
  56.692 +    \fi
  56.693 +  \fi
  56.694 +  \ifGm@vbody
  56.695 +    \ifx\Gm@height\@undefined
  56.696 +      \ifx\Gm@vscale\@undefined
  56.697 +        \edef\Gm@height{\Gm@Dvscale\Gm@layoutheight}%
  56.698 +      \else
  56.699 +        \edef\Gm@height{\Gm@vscale\Gm@layoutheight}%
  56.700 +      \fi
  56.701 +    \fi
  56.702 +    \ifx\Gm@lines\@undefined\else
  56.703 +      \ifdim\topskip<\ht\strutbox
  56.704 +        \setlength\@tempdima{\topskip}%
  56.705 +        \setlength\topskip{\ht\strutbox}%
  56.706 +        \Gm@warning{\noexpand\topskip was changed from \the\@tempdima\space
  56.707 +        to \the\topskip}%
  56.708 +      \fi
  56.709 +      \setlength\@tempdima{\baselineskip}%
  56.710 +      \multiply\@tempdima\Gm@lines
  56.711 +      \addtolength\@tempdima{\topskip}%
  56.712 +      \addtolength\@tempdima{-\baselineskip}%
  56.713 +      \edef\Gm@textheight{\the\@tempdima}%
  56.714 +    \fi
  56.715 +    \ifx\Gm@textheight\@undefined\else
  56.716 +      \setlength\@tempdima{\Gm@textheight}%
  56.717 +      \ifGm@includehead
  56.718 +        \addtolength\@tempdima{\headheight}%
  56.719 +        \addtolength\@tempdima{\headsep}%
  56.720 +      \fi
  56.721 +      \ifGm@includefoot
  56.722 +        \addtolength\@tempdima{\footskip}%
  56.723 +      \fi
  56.724 +      \edef\Gm@height{\the\@tempdima}%
  56.725 +    \fi
  56.726 +  \fi}%
  56.727 +\def\Gm@process{%
  56.728 +  \ifGm@pass
  56.729 +    \Gm@restore@org
  56.730 +  \else
  56.731 +    \Gm@@process
  56.732 +  \fi}%
  56.733 +\def\Gm@@process{%
  56.734 +  \Gm@expandlengths
  56.735 +  \Gm@adjustpaper
  56.736 +  \addtolength\Gm@layoutwidth{-\Gm@bindingoffset}%
  56.737 +  \Gm@adjustmp
  56.738 +  \Gm@adjustbody
  56.739 +  \Gm@detall{h}{width}{lmargin}{rmargin}%
  56.740 +  \Gm@detall{v}{height}{tmargin}{bmargin}%
  56.741 +  \setlength\textwidth{\Gm@width}%
  56.742 +  \setlength\textheight{\Gm@height}%
  56.743 +  \setlength\topmargin{\Gm@tmargin}%
  56.744 +  \setlength\oddsidemargin{\Gm@lmargin}%
  56.745 +  \addtolength\oddsidemargin{-1\Gm@truedimen in}%
  56.746 +  \ifGm@includemp
  56.747 +    \advance\textwidth-\Gm@wd@mp
  56.748 +    \advance\oddsidemargin\Gm@odd@mp
  56.749 +  \fi
  56.750 +  \if@mparswitch
  56.751 +    \setlength\evensidemargin{\Gm@rmargin}%
  56.752 +    \addtolength\evensidemargin{-1\Gm@truedimen in}%
  56.753 +    \ifGm@includemp
  56.754 +      \advance\evensidemargin\Gm@even@mp
  56.755 +    \fi
  56.756 +  \else
  56.757 +    \evensidemargin\oddsidemargin
  56.758 +  \fi
  56.759 +  \advance\oddsidemargin\Gm@bindingoffset
  56.760 +  \addtolength\topmargin{-1\Gm@truedimen in}%
  56.761 +  \ifGm@includehead
  56.762 +    \addtolength\textheight{-\headheight}%
  56.763 +    \addtolength\textheight{-\headsep}%
  56.764 +  \else
  56.765 +    \addtolength\topmargin{-\headheight}%
  56.766 +    \addtolength\topmargin{-\headsep}%
  56.767 +  \fi
  56.768 +  \ifGm@includefoot
  56.769 +    \addtolength\textheight{-\footskip}%
  56.770 +  \fi
  56.771 +  \ifGm@heightrounded
  56.772 +    \setlength\@tempdima{\textheight}%
  56.773 +    \addtolength\@tempdima{-\topskip}%
  56.774 +    \@tempcnta\@tempdima
  56.775 +    \@tempcntb\baselineskip
  56.776 +    \divide\@tempcnta\@tempcntb
  56.777 +    \setlength\@tempdimb{\baselineskip}%
  56.778 +    \multiply\@tempdimb\@tempcnta
  56.779 +    \advance\@tempdima-\@tempdimb
  56.780 +    \multiply\@tempdima\tw@
  56.781 +    \ifdim\@tempdima>\baselineskip
  56.782 +      \addtolength\@tempdimb{\baselineskip}%
  56.783 +    \fi
  56.784 +    \addtolength\@tempdimb{\topskip}%
  56.785 +    \textheight\@tempdimb
  56.786 +  \fi
  56.787 +  \advance\oddsidemargin\Gm@layouthoffset%
  56.788 +  \advance\evensidemargin\Gm@layouthoffset%
  56.789 +  \advance\topmargin\Gm@layoutvoffset%
  56.790 +  \addtolength\Gm@layoutwidth{\Gm@bindingoffset}%
  56.791 +  }% end of \Gm@@process
  56.792 +\def\Gm@detectdriver{%
  56.793 +  \ifx\Gm@driver\@empty
  56.794 +    \typeout{*geometry* driver: auto-detecting}%
  56.795 +    \ifpdf
  56.796 +      \Gm@setdriver{pdftex}%
  56.797 +    \else
  56.798 +      \Gm@setdriver{dvips}%
  56.799 +    \fi
  56.800 +    %\ifvtex
  56.801 +     % \Gm@setdriver{vtex}%
  56.802 +    %\fi
  56.803 +    \@ifundefined{XeTeXversion}{}{\Gm@setdriver{xetex}}%
  56.804 +  \else
  56.805 +    \ifx\Gm@driver\Gm@xetex %%
  56.806 +      \@ifundefined{XeTeXversion}{\Gm@warning{%
  56.807 +            Wrong driver setting: `xetex'; trying `pdftex' driver}%
  56.808 +            \Gm@setdriver{pdftex}}{}%
  56.809 +    \fi
  56.810 +    \ifx\Gm@driver\Gm@vtex
  56.811 +      %\ifvtex\else
  56.812 +       % \Gm@warning{Wrong driver setting: `vtex'; trying `dvips' driver}%
  56.813 +        %\Gm@setdriver{dvips}%
  56.814 +      %\fi
  56.815 +    \fi
  56.816 +  \fi
  56.817 +  \ifx\Gm@driver\relax
  56.818 +    \typeout{*geometry* detected driver: <none>}%
  56.819 +  \else
  56.820 +    \typeout{*geometry* detected driver: \Gm@driver}%
  56.821 +  \fi}%
  56.822 +\def\Gm@showparams#1{%
  56.823 +  \ifGm@pass\else
  56.824 +   \setlength\@tempdima{\Gm@width}\edef\Gm@width{\the\@tempdima}%
  56.825 +   \setlength\@tempdima{\Gm@height}\edef\Gm@height{\the\@tempdima}%
  56.826 +  \fi
  56.827 +  \ifGm@verbose\expandafter\typeout\else\expandafter\wlog\fi
  56.828 +  {\Gm@logcontent{#1}}}%
  56.829 +\def\Gm@showdim#1{* \string#1=\the#1^^J}%
  56.830 +\def\Gm@showbool#1{\@nameuse{ifGm@#1}#1\space\fi}%
  56.831 +\def\Gm@logcontent#1{%
  56.832 +  *geometry* verbose mode - [ #1 ] result:^^J%
  56.833 +  \ifGm@pass * pass (ignores the geometry layout)^^J%
  56.834 +  \else
  56.835 +  * driver: \if\Gm@driver\relax <none>\else\Gm@driver\fi^^J%
  56.836 +  * paper: \ifx\Gm@paper\@undefined\the\paperwidth,
  56.837 +    \the\paperheight\space(class default)\else\Gm@paper\fi^^J%
  56.838 +  * layout: \ifGm@layout \the\Gm@layoutwidth, \the\Gm@layoutheight
  56.839 +  \else\ifx\Gm@paper\@undefined\the\paperwidth,
  56.840 +     \the\paperheight\else\Gm@paper\fi\fi^^J%
  56.841 +  \@ifundefined{Gm@lines}{}{* lines: \Gm@lines^^J}%
  56.842 +  \@ifundefined{Gm@hmarginratio}{}{* hratio: \Gm@hmarginratio^^J}%
  56.843 +  \@ifundefined{Gm@vmarginratio}{}{* vratio: \Gm@vmarginratio^^J}%
  56.844 +  \ifdim\Gm@bindingoffset=\z@\else
  56.845 +  * bindingoffset: \the\Gm@bindingoffset^^J\fi
  56.846 +  * switch(es): %
  56.847 +   \Gm@showbool{landscape}%
  56.848 +   \Gm@showbool{includehead}%
  56.849 +   \Gm@showbool{includefoot}%
  56.850 +   \Gm@showbool{includemp}%
  56.851 +   \if@twoside twoside\space\fi%
  56.852 +   \if@mparswitch\else\if@twoside asymmetric\space\fi\fi%
  56.853 +   \Gm@showbool{heightrounded}%
  56.854 +   \ifx\Gm@truedimen\@empty\else truedimen\space\fi%
  56.855 +  ^^J%
  56.856 +  * h-part:(L,W,R)=(\Gm@lmargin, \Gm@width, \Gm@rmargin)^^J%
  56.857 +  * v-part:(T,H,B)=(\Gm@tmargin, \Gm@height, \Gm@bmargin)^^J%
  56.858 +  \fi
  56.859 +  \Gm@showdim{\paperwidth}%
  56.860 +  \Gm@showdim{\paperheight}%
  56.861 +  \Gm@showdim{\textwidth}%
  56.862 +  \Gm@showdim{\textheight}%
  56.863 +  \Gm@showdim{\oddsidemargin}%
  56.864 +  \Gm@showdim{\evensidemargin}%
  56.865 +  \Gm@showdim{\topmargin}%
  56.866 +  \Gm@showdim{\headheight}%
  56.867 +  \Gm@showdim{\headsep}%
  56.868 +  \Gm@showdim{\footskip}%
  56.869 +  \Gm@showdim{\marginparwidth}%
  56.870 +  \Gm@showdim{\marginparsep}%
  56.871 +  \Gm@showdim{\columnsep}%
  56.872 +  * \string\skip\string\footins=\the\skip\footins^^J%
  56.873 +  \Gm@showdim{\hoffset}%
  56.874 +  \Gm@showdim{\voffset}%
  56.875 +  \Gm@showdim{\mag}%
  56.876 +  * \string\@twocolumn\if@twocolumn true\else false\fi^^J%
  56.877 +  * \string\@twoside\if@twoside true\else false\fi^^J%
  56.878 +  * \string\@mparswitch\if@mparswitch true\else false\fi^^J%
  56.879 +  * \string\@reversemargin\if@reversemargin true\else false\fi^^J%
  56.880 +  * (1in=72.27pt, 1cm=28.453pt)^^J}%
  56.881 +\def\Gm@cropmark(#1,#2,#3,#4){%
  56.882 +  \begin{picture}(0,0)
  56.883 +    \setlength\unitlength{1truemm}\thinlines
  56.884 +    \put(0,0){\line(#1,#2){5}}
  56.885 +    \put(0,0){\line(#3,#4){5}}
  56.886 +  \end{picture}}%
  56.887 +\newcommand*{\Gm@vrules@mpi}{%
  56.888 +  \hb@xt@\@tempdima{\llap{\vrule height\textheight}\ignorespaces
  56.889 +  \hskip \textwidth\vrule height\textheight\hskip \marginparsep
  56.890 +  \llap{\vrule height\textheight}\hfil\vrule height\textheight}}%
  56.891 +\newcommand*{\Gm@vrules@mpii}{%
  56.892 +  \hb@xt@\@tempdima{\hskip-\marginparwidth\hskip-\marginparsep
  56.893 +  \llap{\vrule height\textheight}\ignorespaces
  56.894 +  \hskip \marginparwidth\rlap{\vrule height\textheight}\hskip \marginparsep
  56.895 +  \llap{\vrule height\textheight}\hskip\textwidth\rlap{\vrule height\textheight}\hss}}%
  56.896 +\providecommand*\vb@xt@{\vbox to}%
  56.897 +\newcommand*{\Gm@pageframes}{%
  56.898 +  \vb@xt@\z@{\baselineskip\z@skip\lineskip\z@skip\lineskiplimit\z@%
  56.899 +   \ifGm@showcrop
  56.900 +    \vb@xt@\z@{\vskip-1\Gm@truedimen in\vskip\Gm@layoutvoffset%
  56.901 +     \hb@xt@\z@{\hskip-1\Gm@truedimen in\hskip\Gm@layouthoffset%
  56.902 +      \vb@xt@\Gm@layoutheight{%
  56.903 +       \let\protect\relax
  56.904 +       \hb@xt@\Gm@layoutwidth{\Gm@cropmark(1,0,0,-1)\hfil\Gm@cropmark(-1,0,0,-1)}%
  56.905 +       \vfil
  56.906 +       \hb@xt@\Gm@layoutwidth{\Gm@cropmark(1,0,0,1)\hfil\Gm@cropmark(-1,0,0,1)}}%
  56.907 +     \hss}%
  56.908 +    \vss}%
  56.909 +   \fi%
  56.910 +   \ifGm@showframe
  56.911 +    \if@twoside
  56.912 +     \ifodd\count\z@
  56.913 +       \let\@themargin\oddsidemargin
  56.914 +     \else
  56.915 +       \let\@themargin\evensidemargin
  56.916 +     \fi
  56.917 +    \fi
  56.918 +    \moveright\@themargin%
  56.919 +    \vb@xt@\z@{%
  56.920 +     \vskip\topmargin\vb@xt@\z@{\vss\hrule width\textwidth}%
  56.921 +     \vskip\headheight\vb@xt@\z@{\vss\hrule width\textwidth}%
  56.922 +     \vskip\headsep\vb@xt@\z@{\vss\hrule width\textwidth}
  56.923 +     \@tempdima\textwidth
  56.924 +     \advance\@tempdima by \marginparsep
  56.925 +     \advance\@tempdima by \marginparwidth
  56.926 +     \if@mparswitch
  56.927 +      \ifodd\count\z@
  56.928 +       \Gm@vrules@mpi
  56.929 +      \else
  56.930 +       \Gm@vrules@mpii
  56.931 +      \fi
  56.932 +     \else
  56.933 +      \Gm@vrules@mpi
  56.934 +     \fi
  56.935 +     \vb@xt@\z@{\vss\hrule width\textwidth}%
  56.936 +     \vskip\footskip\vb@xt@\z@{\vss\hrule width\textwidth}%
  56.937 +     \vss}%
  56.938 +    \fi%
  56.939 +  }}%
  56.940 +\let\Gm@shipout\shipout
  56.941 +\newcommand*{\gm@shipi}{%
  56.942 +  \ifvoid\@cclv\expandafter\aftergroup\fi\gm@shipii}%
  56.943 +\newcommand*\gm@shipii{%
  56.944 +  \ifvoid\@cclv
  56.945 +    \Gm@shipout\box\@cclv
  56.946 +  \else
  56.947 +    \ifGm@showframe
  56.948 +      \Gm@shipout\vbox{\Gm@pageframes\ifvbox\@cclv\unvbox\else\box\fi\@cclv}%
  56.949 +    \else\ifGm@showcrop
  56.950 +      \Gm@shipout\vbox{\Gm@pageframes\ifvbox\@cclv\unvbox\else\box\fi\@cclv}%
  56.951 +    \else
  56.952 +      \Gm@shipout\box\@cclv
  56.953 +    \fi\fi
  56.954 +  \fi}
  56.955 +\def\ProcessOptionsKV{\@ifnextchar[%]
  56.956 +  {\@ProcessOptionsKV}{\@ProcessOptionsKV[]}}%
  56.957 +\def\@ProcessOptionsKV[#1]#2{%
  56.958 +  \let\@tempa\@empty
  56.959 +  \@tempcnta\z@
  56.960 +  \if#1p\@tempcnta\@ne\else\if#1c\@tempcnta\tw@\fi\fi
  56.961 +  \ifodd\@tempcnta
  56.962 +   \edef\@tempa{\@ptionlist{\@currname.\@currext}}%
  56.963 +  \else
  56.964 +    \@for\CurrentOption:=\@classoptionslist\do{%
  56.965 +      \@ifundefined{KV@#2@\CurrentOption}%
  56.966 +      {}{\edef\@tempa{\@tempa,\CurrentOption,}}}%
  56.967 +    \ifnum\@tempcnta=\z@
  56.968 +      \edef\@tempa{\@tempa,\@ptionlist{\@currname.\@currext}}%
  56.969 +    \fi
  56.970 +  \fi
  56.971 +  \edef\@tempa{\noexpand\setkeys{#2}{\@tempa}}%
  56.972 +  \@tempa
  56.973 +  \AtEndOfPackage{\let\@unprocessedoptions\relax}}%
  56.974 +\def\Gm@setkeys{\setkeys{Gm}}%
  56.975 +\def\Gm@processconfig{%
  56.976 +  \let\Gm@origExecuteOptions\ExecuteOptions
  56.977 +  \let\ExecuteOptions\Gm@setkeys
  56.978 +  \InputIfFileExists{geometry.cfg}{}{}
  56.979 +  \let\ExecuteOptions\Gm@origExecuteOptions}%
  56.980 +\Gm@save
  56.981 +\edef\Gm@restore@org{\Gm@restore}%
  56.982 +\Gm@initall
  56.983 +\Gm@processconfig
  56.984 +\ProcessOptionsKV[c]{Gm}%
  56.985 +\Gm@setdefaultpaper
  56.986 +\ProcessOptionsKV[p]{Gm}%
  56.987 +\Gm@process
  56.988 +\AtBeginDocument{%
  56.989 +  \Gm@savelength{paperwidth}%
  56.990 +  \Gm@savelength{paperheight}%
  56.991 +  \edef\Gm@restore@org{\Gm@restore}%
  56.992 +  \ifGm@resetpaper
  56.993 +    \edef\Gm@pw{\Gm@orgpw}%
  56.994 +    \edef\Gm@ph{\Gm@orgph}%
  56.995 +  \else
  56.996 +    \edef\Gm@pw{\the\paperwidth}%
  56.997 +    \edef\Gm@ph{\the\paperheight}%
  56.998 +  \fi
  56.999 +  \ifGm@pass\else
 56.1000 +    \ifnum\mag=\@m\else
 56.1001 +      \Gm@magtooffset
 56.1002 +      \divide\paperwidth\@m
 56.1003 +      \multiply\paperwidth\the\mag
 56.1004 +      \divide\paperheight\@m
 56.1005 +      \multiply\paperheight\the\mag
 56.1006 +    \fi
 56.1007 +  \fi
 56.1008 +  \Gm@detectdriver
 56.1009 +  \ifx\Gm@driver\Gm@xetex
 56.1010 +    \@ifundefined{pdfpagewidth}{}{%
 56.1011 +      \setlength\pdfpagewidth{\Gm@pw}%
 56.1012 +      \setlength\pdfpageheight{\Gm@ph}}%
 56.1013 +    \ifnum\mag=\@m\else
 56.1014 +      \ifx\Gm@truedimen\Gm@true
 56.1015 +        \setlength\paperwidth{\Gm@pw}%
 56.1016 +        \setlength\paperheight{\Gm@ph}%
 56.1017 +      \fi
 56.1018 +    \fi
 56.1019 +  \fi
 56.1020 +  \ifx\Gm@driver\Gm@pdftex
 56.1021 +    \@ifundefined{pdfpagewidth}{}{%
 56.1022 +      \setlength\pdfpagewidth{\Gm@pw}%
 56.1023 +      \setlength\pdfpageheight{\Gm@ph}}%
 56.1024 +    \ifnum\mag=\@m\else
 56.1025 +      \@tempdima=\mag sp%
 56.1026 +      \@ifundefined{pdfhorigin}{}{%
 56.1027 +        \divide\pdfhorigin\@tempdima
 56.1028 +        \multiply\pdfhorigin\@m
 56.1029 +        \divide\pdfvorigin\@tempdima
 56.1030 +        \multiply\pdfvorigin\@m}%
 56.1031 +      \ifx\Gm@truedimen\Gm@true
 56.1032 +        \setlength\paperwidth{\Gm@pw}%
 56.1033 +        \setlength\paperheight{\Gm@ph}%
 56.1034 +      \fi
 56.1035 +    \fi
 56.1036 +  \fi
 56.1037 +  \ifx\Gm@driver\Gm@vtex
 56.1038 +    \@ifundefined{mediawidth}{}{%
 56.1039 +      \mediawidth=\paperwidth
 56.1040 +      \mediaheight=\paperheight}%
 56.1041 +    %\ifvtexdvi
 56.1042 +     % \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
 56.1043 +    %\fi
 56.1044 +  \fi
 56.1045 +  \ifx\Gm@driver\Gm@dvips
 56.1046 +    \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
 56.1047 +    \ifx\Gm@driver\Gm@dvips\ifGm@landscape
 56.1048 +      \AtBeginDvi{\special{! /landplus90 true store}}%
 56.1049 +    \fi\fi
 56.1050 +  \else\ifx\Gm@driver\Gm@dvipdfm
 56.1051 +    \ifcase\ifx\AtBeginShipoutFirst\relax\@ne\else
 56.1052 +        \ifx\AtBeginShipoutFirst\@undefined\@ne\else\z@\fi\fi
 56.1053 +      \AtBeginShipoutFirst{\special{papersize=\the\paperwidth,\the\paperheight}}%
 56.1054 +    \or
 56.1055 +      \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}%
 56.1056 +    \fi
 56.1057 +  \fi\fi
 56.1058 +  \ifGm@showframe
 56.1059 +    \renewcommand*{\shipout}{\afterassignment\gm@shipi\setbox\@cclv=}
 56.1060 +  \else\ifGm@showcrop
 56.1061 +    \renewcommand*{\shipout}{\afterassignment\gm@shipi\setbox\@cclv=}
 56.1062 +  \fi\fi
 56.1063 +  \Gm@save
 56.1064 +  \edef\Gm@restore@pkg{\Gm@restore}%
 56.1065 +  \ifGm@verbose\ifGm@pass\else\Gm@checkmp\fi\fi
 56.1066 +  \Gm@showparams{preamble}%
 56.1067 +  \let\Gm@pw\relax
 56.1068 +  \let\Gm@ph\relax
 56.1069 +  }% end of \AtBeginDocument
 56.1070 +\newcommand{\geometry}[1]{%
 56.1071 +  \Gm@clean
 56.1072 +  \setkeys{Gm}{#1}%
 56.1073 +  \Gm@process}%
 56.1074 +\@onlypreamble\geometry
 56.1075 +\DeclareRobustCommand\Gm@changelayout{%
 56.1076 +  \setlength{\@colht}{\textheight}
 56.1077 +  \setlength{\@colroom}{\textheight}%
 56.1078 +  \setlength{\vsize}{\textheight}
 56.1079 +  \setlength{\columnwidth}{\textwidth}%
 56.1080 +  \if@twocolumn%
 56.1081 +    \advance\columnwidth-\columnsep
 56.1082 +    \divide\columnwidth\tw@%
 56.1083 +    \@firstcolumntrue%
 56.1084 +  \fi%
 56.1085 +  \setlength{\hsize}{\columnwidth}%
 56.1086 +  \setlength{\linewidth}{\hsize}}%
 56.1087 +\newcommand\newgeometry[1]{%
 56.1088 +  \clearpage
 56.1089 +  \Gm@restore@org
 56.1090 +  \Gm@initnewgm
 56.1091 +  \Gm@newgmtrue
 56.1092 +  \setkeys{Gm}{#1}%
 56.1093 +  \Gm@newgmfalse
 56.1094 +  \Gm@process
 56.1095 +  \ifnum\mag=\@m\else\Gm@magtooffset\fi
 56.1096 +  \Gm@changelayout
 56.1097 +  \Gm@showparams{newgeometry}}%
 56.1098 +\newcommand\restoregeometry{%
 56.1099 +  \clearpage
 56.1100 +  \Gm@restore@pkg
 56.1101 +  \Gm@changelayout}%
 56.1102 +\newcommand*\savegeometry[1]{%
 56.1103 +  \Gm@save
 56.1104 +  \expandafter\edef\csname Gm@restore@@#1\endcsname{\Gm@restore}}%
 56.1105 +\newcommand*\loadgeometry[1]{%
 56.1106 +  \clearpage
 56.1107 +  \@ifundefined{Gm@restore@@#1}{%
 56.1108 +    \PackageError{geometry}{%
 56.1109 +    \string\loadgeometry : name `#1' undefined}{%
 56.1110 +    The name `#1' should be predefined with \string\savegeometry}%
 56.1111 +  }{\@nameuse{Gm@restore@@#1}%
 56.1112 +  \Gm@changelayout}}%
 56.1113 +\endinput
 56.1114 +%%
 56.1115 +%% End of file `geometry.sty'.
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/paper/makefile	Fri Jun 04 13:48:28 2010 +0200
    57.3 @@ -0,0 +1,13 @@
    57.4 +compile: src/*.tex src/*.bib
    57.5 +	cd src; \
    57.6 +	pdflatex document; \
    57.7 +	pdflatex document; \
    57.8 +	bibtex document; \
    57.9 +	pdflatex document; \
   57.10 +	cd ..; \
   57.11 +	cp src/document.pdf out/thesis.pdf;
   57.12 +
   57.13 +clean:
   57.14 +	cp src/document.tex  .;\
   57.15 +	rm src/document.*; \
   57.16 +	cp document.tex src/;
    58.1 Binary file paper/out/thesis.pdf has changed
    59.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.2 +++ b/paper/src/abstract.tex	Fri Jun 04 13:48:28 2010 +0200
    59.3 @@ -0,0 +1,14 @@
    59.4 +\renewcommand\abstractname{Abstract}
    59.5 +\begin{abstract}
    59.6 +Moderne Flugsicherung hat das Ziel, Luftfahrzeuge effizient und sicher vom Startflughafen bis zum Ziel zu begleiten. Der stetige Wachstum des Luftverkehrs hat eine Verdichtung des Flugraums zur Folge, eine effektive Regelung des Flugbetriebs wird dadurch notwendig. Dabei konkurriert der Sicherheitsaspekt mit ökonomischen und ökologischen Zielen.
    59.7 +
    59.8 +Gegenstand dieser Arbeit ist die Entwicklung einer \emph{domänenspezifischen Sprache} zur Modellierung des Regelwerks der Flugsicherung im Bereich \emph{Air Traffic Flow Management} und die Realisierung einer \emph{Abflugplanungskomponente} zur Optimierung der Abflugzeitenbestimmung.
    59.9 +Die Arbeit beschreibt die Phasen eines Projekts im Bereich Flugsicherung von der Anforderungsanalyse bis zum operativen Betrieb bei dem Kunden.
   59.10 +\vspace{100pt}
   59.11 +\begin{figure}[h]
   59.12 +\centering 
   59.13 +\includegraphics[width=15.5cm]{images/title_page.pdf}
   59.14 +\caption[Luftverkehrsrouten]{Abstraktion der Luftverkehrsrouten ausgehend von den Vereinigten Arabischen Emiraten. \emph{Quelle (Weltkarte): Wikipedia}}
   59.15 +\end{figure}
   59.16 +\end{abstract}
   59.17 +
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/paper/src/analysis.tex	Fri Jun 04 13:48:28 2010 +0200
    60.3 @@ -0,0 +1,138 @@
    60.4 +\chapter{Anforderungsanalyse}
    60.5 +Die Grundlage der Anforderungsanalyse bestand aus den Benutzeranforderungen, die zusammengefasst in einem Dokument von der GCAA bereitgestellt wurden. Diese Anforderungen wurden schrittweise mit Hilfe von sog. User-Stories in einen Kontext gebracht um dadurch etwaige Uneindeutigkeiten zu beseitigen.\\\\
    60.6 +Für jede Benutzeranforderung wurde mindestens eine Anforderung an das System entwickelt. Dabei wurden entstehende Anforderungsabhängigkeiten durch das Extrahieren einer unabhängigen Anforderung aufgelöst.
    60.7 +Bei der Formulierung der Anforderungen wurde strikt zwischen Anforderung an die Sprache, an das verarbeitende System und an das Benutzer-Interface getrennt. Diese Trennung ermöglichte im weiteren Verlauf die Erarbeitung der Anforderungen an die Komponenten, insbesondere an die Syntax der Konfigurationssprache.
    60.8 +
    60.9 +\section{Modellierung der Luftraumbeschränkungen}
   60.10 +Jeder Luftraum besitzt dynamische Beschränkungen auf die Verteilung des Luftverkehrs. Die Beschränkungen dienen maßgeblich zur Gewährleistung der Sicherheit des Luftraums unter Berücksichtigung der geografischen, politischen und technischen Merkmalen der ATS-Routen. Die Dynamik der Regelungen wird durch die Abhängigkeit von Tageszeiten, den Eigenschaften eines Luftfahrzeugs und dessen Flugplan und den vorherrschenden Luftraumbedingungen bestimmt.\\\\
   60.11 +Die Modellierung der Luftraumbeschränkungen soll durch eine Konfigurationssprache realisiert werden. Zur Festlegung der Merkmale für die Konfigurationssprache wurden folgende Aspekte berücksichtigt:
   60.12 +\begin{itemize}
   60.13 +\item Benutzerqualifikation
   60.14 +\item Sicherheitsfaktoren
   60.15 +\item Domänenkontext (Flugplandaten, Flussdichtenregelungen)
   60.16 +\end{itemize}
   60.17 +
   60.18 +\subsection{Benutzerqualifikation}
   60.19 +Die Sprache soll eine domänennahe Konfigurationsmöglichkeit bieten, dabei Redundanz und Komplexität in der Syntax vermeiden. Der typische Benutzer der Sprache hat eine Ausbildung im Bereich Flugsicherung und ist technisch versiert.
   60.20 +Anhand dieser Voraussetzungen entstanden Prototypen für die Syntax der Sprache, die vom Entwicklungsteam evaluiert wurden.\\\\
   60.21 +Die Analyse ergab eine deklarative Sprache, die explizite Syntaxelemente aufweist. 
   60.22 +Eine deklarative Sprache beschreibt das formale Modell der Berechnung. Im Gegensatz dazu wird beim imperativen Programmieren der Berechnungsalgorithmus in einzelnen zustandsverändernden Anweisungen verfasst. Zur Vereinfachung kann man sagen, dass der deklarative Ansatz eine zielorientierte Kodierung bedeutet, während beim imperativen Programmieren der Lösungs"-weg, also der Algorithmus kodiert wird. Die zielorientierte Kodierung bedeutet eine Abstraktion vom darunter liegenden Datenmodell und Berechnungsweg, dies ermöglicht den Einsatz der Sprache in dem Domänenumfeld unter Berücksichtigung der Benutzerqualifikationen.\\\\
   60.23 +Als Vorlagen wurden die Logikprogrammiersprache Prolog für die Regeldefinitionen und die Datenbanksprache SQL\footnote{Structured Query Language -- Sprache zur Definition, Manipulation und Abfrage von Daten in relationalen Datenbanken} für die Definition der Regelbedingungen genommen. Gerade SQL eignet sich in Hinsicht der Nähe zur natürlichen Sprache und der expliziten Ausdrücke für diesen Einsatz.
   60.24 +
   60.25 +\subsection{Sicherheitsfaktoren}
   60.26 +Die Konfiguration der Abflugplanungskomponente hat Einfluss auf die Verarbeitungsprozesse und ist somit weit möglichst auf Korrektheit zu prüfen. Die Prüfung der Konfiguration soll in der Initialisierungsphase des Systems stattfinden, um die sichere Operation eines Systems zu garantieren, \cite{iec_61508}. Bei statisch typisierten Sprachen werden bereits beim Übersetzen die Datentypen festgelegt und somit überprüfbar gemacht. Dies ermöglicht es, eine große Anzahl an möglichen Fehlern in der Konfiguration zu erkennen, bei denen ungültige Kombinationen von Operation und Datentyp bestehen.\\\\
   60.27 +Jede Funktionalität eines Systems muss stets überwacht werden. Bei Fehlverhalten soll eine Wiederaufnahme der Funktionalität gewährleistet werden, ohne die Datenintegrität oder andere Prozesse des Systems zu gefährden. 
   60.28 +
   60.29 +Zur Sicherung der Daten wird eine strikte Trennung von Daten und informationsverarbeitenden Prozessen durchgeführt. Jeder Transaktion wird geprüft, protokolliert und redundant propagiert. In der Flugsicherung ist die redundante Auslegung von Komponenten Kernbestandteil bei der Sicherung der Verfügbarkeit eines Systems. Die letzte Option bei dem Auflösen eines Systemkonflikts liegt in der Abschaltung und Neuinitialisierung eines Systems, während die redundante Auslegung weiterhin die Funktionalität sicherstellt. 
   60.30 +
   60.31 +\subsubsection{Statusmeldungen}
   60.32 +Durch das \emph{Watchdog}-Protokoll ist es möglich die Vitalität einer Komponente zu über\-wachen. In periodischen Abständen wird dabei von einem Überwachungsprozess eine Anfrage an alle Komponenten gestartet, die innerhalb einer bestimmten Zeit beantwortet werden muss. Die Antwort kann detaillierte Informationen über den Status einer Komponente enthalten, oder lediglich deren Aktivität bestätigen. 
   60.33 +
   60.34 +Bei Überschreitung des Zeitlimits für die Antwort wird von einer Fehlfunktion der Komponente ausgegangen. Wird das Zeitlimit wiederholt in Folge überschritten, können Prozesse wie z.B. der Neustart der Komponente zur Wiederherstellung der Vitalität in die Wege geleitet werden. Die Wiederaufnahme der Funktionalität soll in jeden Fall möglich sein.
   60.35 +
   60.36 +\subsubsection{Redundanz}
   60.37 +Um eine erfolgreiche Migration der Aktivitäten von einem System auf ein Ersatzsystem zu gewährleisten, muss die Komponente dafür konzipiert sein. Die Komponente soll auf flüchtige Datenhaltung verzichten, um den Verlust bei einer Migration in Grenzen zu halten. Es soll auf externe Ressourcen wie z.B. File Handles verzichtet werden, da die Freigabe solcher Ressourcen systemabhängig ist und somit nicht garantiert werden kann.\\\\
   60.38 +Sowohl das Reinitialisieren als auch die Migration eines Prozesses gibt folgende Richtlinien für die Entwicklung der Komponenten vor:
   60.39 +\begin{itemize}
   60.40 +\item Kein flüchtigen Daten
   60.41 +\item Verarbeitungszeiten minimieren
   60.42 +\item Transaktionsmodell zur Persistenzschicht
   60.43 +\item Keine externen Abhängigkeiten zur Laufzeit
   60.44 +\end{itemize}
   60.45 +Die PRISMA-Architektur bietet ein Datenprotokoll zur persistenten Datenhaltung mit der \texttt{DMAP}-Komponente an. \texttt{DMAP} ist eine objektorientierte, verteilte Datenbank basierend auf einer dateibasierten Datenhaltung. Die Kommunikation zwischen den Komponenten und der Datenbank ist auf einer gesicherten UDP-Schicht realisiert. Weiterhin bietet PRISMA eine Klasse zur Realisierung des Watchdog-Protokolls. Somit verlagern sich ein Großteil der Anforderungen auf die bestehende Architektur, was die Entwicklung der Komponenten erleichtert.
   60.46 +
   60.47 +\subsection{Flugplandaten}
   60.48 +Um erfolgreich die Sprache in den Kontext Flugsicherung zu integrieren, wurden die Standardflugpläne analysiert und deren Zusammensetzung erfasst. Die einzelnen Merkmale eines Flugplans wurden mit entsprechenden Datentyp in die Syntax der Sprache aufgenommen, \cite{icao_4444}. Die Kodierung der Flugpläne basiert auf dem ASCII\footnote{American Standard Code for Information Interchange -- ein Standard zur Zeichenkodierung für u.a. das lateinische Alphabet und die arabischen Ziffern}-Zeichensatz, in den folgenden Abschnitten soll ein Zeichen bzw. Zeichenketten jeweils auf dem ASCII-Zeichensatz basieren.
   60.49 +
   60.50 +\subsubsection{Aerodrome}
   60.51 +Der Flughafen wird in Flugplänen nach \cite{icao_4444} mit vier Buchstaben kodiert. Jedem internationalen Flughafen wird ein dedizierter Kode zugewiesen, der in den Flugplänen als Abflughafen und Zielflughafen zur Identifikation genutzt wird. Abkürzungen, die oft benutzt werden, lauten \emph{ADEP} oder \emph{DEP} für den \emph{Aerodrome of Departure} und \emph{ADES} oder \emph{DEST} für \emph{Aerodrome of Destination}. Zur Berücksichtigung der Flughäfen soll in der Sprache die Feldnamen \emph{ADEP/ADES} für Startflughafen, respektive Zielflughafen, reserviert werden. Zulässige Werte für sind Zeichenketten zusammengesetzt aus vier Buchstaben.
   60.52 +
   60.53 +\subsubsection{Runway}
   60.54 +Die Bezeichnungen für die Start- und Ladebahnen -- Englisch \emph{Runway} -- können lokal vergeben werden und sind meist eine Kombination aus mehreren Buchstaben und darauf folgenden Zahlen, z.B. RWY01. Es sind bis zu fünf Zeichen für die Identifikation erlaubt, die Abkürzung \emph{RWY} soll das Feld in der Sprache bezeichnen.
   60.55 +
   60.56 +\subsubsection{Aircraft Type}
   60.57 +\emph{ICAO} legt einen vierstelligen Identifikationskode für die Flugzeugtypen fest. Die Kodierung erlaubt sowohl  Buchstaben als auch Zahlen. Beispielkodierungen sind A332 für den \emph{Airbus A330-200} oder B744 für eine \emph{Boeing 747-400}. Gebräuchliche Abkürzung ist \emph{ATYP}. In der Sprache soll das Schlüsselwort \emph{ATYP} für den Flugzeugtyp reserviert sein, zulässige werden sollen alle Zeichenkette der Länge vier darstellen.
   60.58 +
   60.59 +\subsubsection{Flight Type}
   60.60 +Der \emph{Flight Type} beschreibt den Einsatztyp des Fluges, sei es ein Passagierflug, Transportflug oder ein militärischer Einsatz. Hierfür wird ein Zeichen zur Identifizierung genutzt. Die Abkürzung hierfür ist \emph{FTYP}. Die Sprache soll als Wertemenge alle Zeichen akzeptieren.
   60.61 +
   60.62 +\subsubsection{True Airspeed}
   60.63 +In der Luftfahrt gibt es verschiedene Möglichkeiten die Fluggeschwindigkeit eines Luftfahrzeugs zu ermitteln. Die \emph{True Airspeed} bezeichnet die Geschwindigkeit des Luftfahrzeugs relativ zu den Luftmassen, korrigiert nach den Druck- und Temperaturverhältnissen. Die abkürzende Bezeichnung lautet \emph{TAS}. Die Modellierungssprache soll den Feldnamen \emph{TAS} für diese Flugplaneigenschaft reservieren, eine natürliche Zahl dient als zulässiger Wert, die implizite Einheit ist der Knoten.
   60.64 +
   60.65 +\subsection{Flussdichtenregelungen}
   60.66 +\label{analysis:atccl:flow_restrictions}
   60.67 +Eine Äquivalenzklassenanalyse der möglichen Regeln für die Definition von Flussdichten eines Fluginformationsraums ergab eine Anzahl an Regeltypen, die von der Sprache unterstützt werden mussten (siehe Abschnitt \ref{research:gcaa:flow_restrictions}). Zur erfolgreichen Definition jeder möglichen Regeln stellte sich die Boolesche Algebra als ausreichend heraus.\\\\
   60.68 +Die einzelnen Regelterme sind somit entweder Teilmengenrelationen oder Äquivalenz"-relationen, mehrere Regelterme können mit logischen Und- und Oder-Operatoren verknüpft werden. Die Negation dient zum Ausschluss eines Zustands, die Klammersetzung soll die gewünschte Priorität der logischen Auswertung eines Terms vorgeben.
   60.69 +
   60.70 +\section{Abflugplanungskomponente}
   60.71 +Die Komponente soll in die PRISMA-Architektur integriert werden, wobei die Komponente als flugplanverarbeitendes Aggregat dem FDPS zugeordnet wird. Die Schnittstelle zum Gesamtsystem wird durch die DMAP gewährleistet, welche die Kommunikationsschicht für ein verteiltes objektorientiertes Datenbanksystem bildet.\\\\
   60.72 +Anhand eines Ereignismodells soll die Komponente auf bestimmte Dateneinträge reagieren, diese bearbeiten und zurück in das System geben. Es gibt zwei mögliche Ereignisse, die eine Bearbeitung initiieren können:
   60.73 +\begin{itemize}
   60.74 +\item Benutzeranfrage vor Startfreigabe
   60.75 +\item Überflüge 
   60.76 +\end{itemize}
   60.77 +Die Kommunikation mit dem Display, welches die Benutzerinteraktion mit der Komponente gewährleistet, ist ebenfalls durch die DMAP-Kommunikationsschicht entkoppelt. Die strikte Trennung der Komponenten erleichtert u.a. die unabhängige Entwicklung der beiden Module und erhält die Modularität der PRISMA-Architektur. PRISMA erlaubt es dadurch ein System je nach Wunsch des Kunden mit beliebigen Komponenten auszustatten. Auch Fremdkomponenten können integriert werden, solange diese die entsprechenden Standards, wie z.B. das Flugplanformat, unterstützen. In diesem Fall wurde das Display für die Abflugplanungskomponente unabhängig entwickelt und ist nicht Bestandteil dieser Arbeit.
   60.78 +
   60.79 +Die besonderen Anforderung an die Komponente sind:
   60.80 +\begin{itemize}
   60.81 +\item Robustheit
   60.82 +\item Kurze Bearbeitungszeit
   60.83 +\item Keine Systembeanspruchung bei Inaktivität
   60.84 +\end{itemize}
   60.85 +
   60.86 +\section{Musskriterien}
   60.87 +Die folgende Anforderungen sind Kernbestandteil der Komponenten:
   60.88 +\begin{enumerate}
   60.89 +\item \textbf{Dynamische Flugplanfilterung}\\
   60.90 +Die Abflugplanungskomponente soll anhand von Flugplandaten eine Zuordnung zu Flow Points setzen. Die Zuordnung soll anhand der Flugplaneigenschaften und der Tageszeit entschieden werden.
   60.91 +
   60.92 +\item \textbf{Berechnung der optimalen Abflugzeit}\\
   60.93 +Die Abflugplanungskomponente soll anhand von Flugplandaten die optimale Abflugzeit, in Abhängigkeit aller Restriktionen der betreffenden Flow Points, berechnen.
   60.94 +
   60.95 +\item \textbf{Zuweisung der optimalen Flugfläche}\\
   60.96 +Die Abflugplanungskomponente soll anhand von Flugplandaten die optimale Flugfläche, in Abhängigkeit aller Restriktionen der betreffenden Flow Points, bestimmen. Die Höhen"-staffelung soll die bevorzugte Staffelungsart der Komponente sein.
   60.97 +
   60.98 +\item \textbf{Manuelle Übersteuerung}\\
   60.99 +Zu jeder Zeit hat der Bediener der Abflugplanungskomponente Möglichkeiten die automatisch zugewiesenen Werte zu ändern. Manuelle Änderungen sind dauerhaft und keinen weiteren automatischen Überprüfungen ausgesetzt. Manuell angepasste Einträge sollen bei nachfolgenden Berechnungen beachtet werden.
  60.100 +
  60.101 +\item \textbf{Konfigurierbarkeit}\\
  60.102 +Die Abflugplanungskomponente soll konfigurierbar sein. Die Konfiguration soll alle mög"-lichen Staffelungskriterien der GCAA-FIR modellieren können. Die Konfiguration soll alle relevanten Flugplandaten berücksichtigen. 
  60.103 +
  60.104 +\item \textbf{Transaktionsprotokollierung}\\
  60.105 +Alle Vorgänge der Abflugplanungskomponente sollen in persistenter Form protokolliert werden. Dies umfasst die Benutzereingaben und automatischen Wertsetzungen der Komponente. Die Protokolle sollen vollständig sein, um die Nachvollziehbarkeit aller Aktionen und Entscheidungen zu gewährleisten.
  60.106 +\end{enumerate}
  60.107 +
  60.108 +\section{Sollkriterien}
  60.109 +Die folgende Anforderung \emph{sollen} berücksichtigt werden:
  60.110 +\begin{enumerate}
  60.111 +\item \textbf{Statistische Protokollierung}\\
  60.112 +Für jedes von der Abflugplanungskomponente erfasstes Luftfahrzeug soll ein Eintrag in einer persistenten Logdatei erstellt werden. Die Einträge sollen die Anfragezeit, die früheste Abflugzeit, die optimale Abflugzeit, die tatsächliche Abflugzeit neben einer Reihe von Flugplandaten zur eindeutigen Identifizierung des Fluges erfassen. Das Format der Logdatei soll zur statistischen Auswertung geeignet sein, z.B. CSV\footnote{Comma Separated Values -- ein einfaches Dateiformat, bei dem einzelne Dateneinträge mit einem Komma oder einem anderen Trennungszeichen separiert werden}.
  60.113 +
  60.114 +\item \textbf{Fehleranalyse der Konfiguration}\\
  60.115 +In der Initialisierungsphase der Abflugplanungskomponente soll eine Analyse der Konfiguration stattfinden. Es sollen alle Fehler in möglichst expliziter Form dargestellt werden.
  60.116 +
  60.117 +\item \textbf{Hohe Effizienz}\\
  60.118 +Die Abflugplanungskomponente soll unmittelbar auf Anfragen reagieren, die Kalkulationszeit soll minimal gehalten werden, sodass der Arbeitsablauf der bedienenden Personals nicht gestört wird. Die Effizienz der Komponente soll sowohl im Bearbeitungszeitraum als auch während der Inaktivität hoch sein, die Belastung auf das Gesamtsystem soll minimiert werden.
  60.119 +
  60.120 +\item \textbf{Robustheit}\\
  60.121 +Die Abflugplanungskomponente soll sich stets in einem validen Zustand befinden. Die Komponente soll Fehlbedienung, Auftritt von fehlerhaften Daten und Berechnungsfehler korrekt behandeln und eine Fortsetzung der Funktionalität garantieren. Die Komponente soll nach den Richtlinien von IEC 61508 zur Entwicklung von Software nach SIL 2 entwickelt werden, um eine Zertifizierung zu ermöglichen.
  60.122 +\end{enumerate}
  60.123 +
  60.124 +\section{Abgrenzungskriterien}
  60.125 +Die folgende Funktionalität soll \emph{nicht} realisiert werden:
  60.126 +\begin{enumerate}
  60.127 +\item \textbf{Kein Abflugmanagement auf Flughafenebene}\\
  60.128 +Die Abflugplanungskomponente soll Position bzw. Gate des Luftfahrzeugs, Rollzeiten oder Startbahnbelegung bei der Bestimmung von Abflugzeiten \emph{nicht} berücksich"-tigen. Die übermittelte früheste Abflugzeit soll bereits diese Details berücksichtigen -- dies ist Aufgabe des Planers.
  60.129 +
  60.130 +\item \textbf{Keine globale Optimierung}\\
  60.131 +Die Abflugplanungskomponente soll keine Neuberechnung der Abflugzeiten und Flugflächen aller erfassten Flüge durchführen, sobald Änderungen in dem Berechnungsvektor stattfinden. Solch eine Änderung kann z.B. durch manuelle Übersteuerung durch das Flugsicherungspersonal oder durch Abweichungen der Flugvektoren eines Verkehrsfahrzeugs entstehen. Tritt eine Abweichung von den vergebenen Slot-Zeiten ein, sodass Potential für eine Optimierung bereits vergebener Slots entsteht, sollen alle vergebenen Slots unverändert bestehen bleiben.
  60.132 +
  60.133 +\item \textbf{Keine automatische Slot-Zeitenkorrektur}\\
  60.134 +Bedingung von 2. gilt mit folgender Änderung: durch die eintretende Abweichung von den vergebenen Slot-Zeiten entsteht Potential zur Verletzung einer Luftraumbeschränkung. Die vergebenen Slots sollen unverändert bestehen bleiben -- die Gewähr\-leistung der Einhaltung der Luftraumbeschränkung fällt in die Zuständigkeit der Fluglotsen und Luftfahrzeugführer.
  60.135 +\end{enumerate}
  60.136 +
  60.137 +\section{Dokumentation}
  60.138 +Alle ermittelten Anforderungen werden in der sog. System Requirements Specification festgehalten. Das SRS ist die Basis aller folgenden Entwicklungsschritte. Es dient später zur Testfallerzeugung, da hierbei alle Anforderungen mindestens einmal abgedeckt werden müssen.
  60.139 +
  60.140 +Das SRS ist das Referenzdokument für die Abnahme vor Ort und dem Kunden und muss deshalb auch vom Kunden abgenommen werden. Jede Änderung im System muss gegen die Anforderungen geprüft werden, gegebenenfalls müssen neue Anforderungen hinzugefügt werden oder alte angepasst, Beides hat zur Folge, dass eine erneute Abnahme vom Kunden fällig wird.\\\\
  60.141 +Im SRS wird für jede Anforderung eine Identifikationsnummer allokiert, diese wird in den weiteren Phasen des Projekts referenziert. Nach \cite{iec_61508} bildet die Dokumentation die Basis der Nachvollziehbarkeit der Entscheidungsfindung und dadurch auch die Grundlage einer erfolgreichen Zertifizierung.
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/paper/src/appendix.tex	Fri Jun 04 13:48:28 2010 +0200
    61.3 @@ -0,0 +1,42 @@
    61.4 +%\pdfcompresslevel=0
    61.5 +%\pdfimageresolution=72
    61.6 +\chapter{Feinentwurf}
    61.7 +\section{ATCCL}
    61.8 +
    61.9 +\begin{figure}[h]
   61.10 +\subsection{Factory}
   61.11 +\centering \includegraphics[scale=0.7]{images/uml_factories.png}
   61.12 +\label{uml:factories}
   61.13 +%\caption{ATCCL Factory Design}
   61.14 +\end{figure}
   61.15 +
   61.16 +\begin{figure}[h]
   61.17 +\subsection{Term-Hierarchy}
   61.18 +\centering \includegraphics[scale=0.5]{images/uml_terms.png}
   61.19 +%\caption{ATCCL Term-Hierarchy}
   61.20 +\end{figure}
   61.21 +
   61.22 +\begin{figure}[h]
   61.23 +\subsection{Property (Auszug)}
   61.24 +\centering \includegraphics[scale=0.5]{images/uml_property.png}
   61.25 +%\caption{ATCCL Term-Hierarchy}
   61.26 +\label{uml:property}
   61.27 +\end{figure}
   61.28 +
   61.29 +\begin{figure}[h]
   61.30 +\subsection{Virtual Machine}
   61.31 +\centering \includegraphics[scale=0.7]{images/uml_vm.png}
   61.32 +%\caption{ATCCL Virtual Machine}
   61.33 +\end{figure}
   61.34 +
   61.35 +\newpage
   61.36 +\begin{figure}[h]
   61.37 +\subsection{Flight Plan Interface}
   61.38 +\centering \includegraphics[scale=0.7]{images/uml_flight_plan.png}
   61.39 +\label{uml:flight_plan_interface}
   61.40 +%\caption{Flight Plan Interface}
   61.41 +\end{figure}
   61.42 +
   61.43 +\chapter{\texttt{bison}-Konfiguration}
   61.44 +\lstinputlisting[label=bison_config,caption=ATCCL bison-Konfiguration,language=C]{atccl.y}
   61.45 +
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/paper/src/atccl.y	Fri Jun 04 13:48:28 2010 +0200
    62.3 @@ -0,0 +1,285 @@
    62.4 +%{
    62.5 +#include <stdlib.h>
    62.6 +#include <stdio.h>
    62.7 +#include <string.h>
    62.8 +#include "semantic_helper.hh"
    62.9 +
   62.10 +#define MAX_ID_TABLE_NO 1024 
   62.11 +char* id_table[MAX_ID_TABLE_NO];
   62.12 +int id_table_no;
   62.13 +ErrorType* errors;
   62.14 +int maxErrorNo;
   62.15 +int errorNo;
   62.16 +int yylex();
   62.17 +int yywrap();
   62.18 +int yyerror(const char *str);
   62.19 +void yyrestart(FILE* file);
   62.20 +%}
   62.21 +%token
   62.22 +CONSTRNT PATTERN FLOWP COM
   62.23 +QUOTE THAN FROM UNTIL ON
   62.24 +
   62.25 +%union
   62.26 +{
   62.27 +	int integer;
   62.28 +	double real;
   62.29 +	const char* string;
   62.30 +}
   62.31 +
   62.32 +%token <integer> INTEGER
   62.33 +%token <integer> TIME
   62.34 +%token <real> 	REAL
   62.35 +%token <string> STRING
   62.36 +%token <integer> IS 
   62.37 +%token <integer> IN 
   62.38 +%token <integer> GREATER 
   62.39 +%token <integer> LESS 
   62.40 +%token <integer> NOT 
   62.41 +%token <integer> AND 
   62.42 +%token <integer> OR 
   62.43 +%token <integer> AT
   62.44 +%token <integer> COPX
   62.45 +%token <integer> GATE
   62.46 +%token <integer> INTERNAL
   62.47 +%token <integer> GLOBAL
   62.48 +%token <integer> ADEP
   62.49 +%token <integer> ADES
   62.50 +%token <integer> RWY
   62.51 +%token <integer> ROUTE
   62.52 +%token <integer> ATYP
   62.53 +%token <integer> FLVL
   62.54 +%token <integer> TAS
   62.55 +%token <integer> FRUL
   62.56 +%token <integer> FTYP
   62.57 +%token <integer> EQUIP
   62.58 +%token <integer> RFL
   62.59 +%token <integer> TRAVEL_TYPE
   62.60 +%token <integer> TIMESEP 
   62.61 +%token <integer> DEPTIME
   62.62 +%token <integer> ARRTIME
   62.63 +%token <integer> GATETIME
   62.64 +%token <integer> FL
   62.65 +%type <string> string
   62.66 +%type <string> pttrn
   62.67 +%type <string> flowp
   62.68 +%type <string> constrnt
   62.69 +%type <integer> int
   62.70 +%type <integer> string_array
   62.71 +%type <integer> int_array
   62.72 +%type <integer> int_pt
   62.73 +%type <integer> time_pt
   62.74 +%type <integer> char_pt
   62.75 +%type <integer> string_pt
   62.76 +%type <integer> string_array_pt
   62.77 +%type <integer> char_array_pt
   62.78 +%type <integer> int_op
   62.79 +%type <integer> string_op
   62.80 +%type <integer> string_array_op
   62.81 +%type <integer> string_string_array_op
   62.82 +%type <integer> si_unit
   62.83 +
   62.84 +%left OR
   62.85 +%left AND
   62.86 +%right NOT
   62.87 +%%
   62.88 +prog: | prog rule {  } 
   62.89 +      | error ')' { yyerrok; yyclearin;}				
   62.90 +;
   62.91 +rule: pttrn      { if (!pattern($1)) 
   62.92 +                   printf("Error: %s\n", last_error()); }
   62.93 +      | constrnt { if (!constraint($1)) 
   62.94 +                   printf("Error: %s\n", last_error()); }
   62.95 +      | flowp    { if (!flowpoint($1)) 
   62.96 +                   printf("Error: %s\n", last_error()); }
   62.97 +      | COM      { comment(); }
   62.98 +;
   62.99 +flowp: FLOWP STRING '(' flowp_entry ')' { $$ = $2; }
  62.100 +;
  62.101 +flowp_entry: pttrn_lbl ':' constrnt_lbl					
  62.102 +;
  62.103 +pttrn_lbl: STRING { if (!pattern_id($1)) 
  62.104 +                    printf("Error: %s\n", last_error()); }						
  62.105 +;
  62.106 +constrnt_lbl: STRING { if (!constraint_id($1)) 
  62.107 +                       printf("Error: %s\n", last_error()); }
  62.108 +;
  62.109 +constrnt: CONSTRNT STRING '(' cterm ')' { $$ = $2; }
  62.110 +;
  62.111 +cterm:  TIMESEP AT string IS INTEGER si_unit		
  62.112 +        { intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, 
  62.113 +                                 0, 0, 0); }				
  62.114 +        | TIMESEP AT string_array IS INTEGER si_unit
  62.115 +        { intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 
  62.116 +                                      0, 0, 0); }		
  62.117 +        | TIMESEP AT string IS INTEGER si_unit 
  62.118 +          FROM INTEGER UNTIL INTEGER	
  62.119 +        { intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, 
  62.120 +                                 $10, 0); }				
  62.121 +        | TIMESEP AT string_array IS INTEGER si_unit 
  62.122 +          FROM INTEGER UNTIL INTEGER
  62.123 +        { intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 
  62.124 +                                      $8, $10, 0); }	
  62.125 +        | TIMESEP AT string IS INTEGER si_unit AT FL int_array
  62.126 +        { intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, 
  62.127 +                                 0, 0, $9); }				
  62.128 +        | TIMESEP AT string_array IS INTEGER si_unit 
  62.129 +          AT FL int_array
  62.130 +        { intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 
  62.131 +                                      0, 0, $9); }		
  62.132 +        | TIMESEP AT string IS INTEGER si_unit 
  62.133 +            FROM INTEGER UNTIL INTEGER AT FL int_array	
  62.134 +        { intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, 
  62.135 +                                 $10, $13); }				
  62.136 +        | TIMESEP AT string_array IS INTEGER si_unit 
  62.137 +            FROM INTEGER UNTIL INTEGER AT FL int_array
  62.138 +        { intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 
  62.139 +                                      $8, $10, $13); }						
  62.140 +        | cterm AND cterm { and_term(); }
  62.141 +;
  62.142 +si_unit: STRING	{ if (!strcmp($1, "s"))        { $$ = 1; }
  62.143 +                  else if (!strcmp($1, "min")) { $$ = 60; } }
  62.144 +;
  62.145 +pttrn: PATTERN STRING '(' term ')' { $$ = $2; }
  62.146 +       | PATTERN '(' term ')'      { $$ = get_pattern_id(); }
  62.147 +;
  62.148 +term:   int_pt int_op INTEGER	
  62.149 +        { intpt_int_term($2, $1, $3); }	
  62.150 +        | time_pt int_op INTEGER
  62.151 +        { time_pt_int_term($2, $1, $3); }
  62.152 +        | char_pt string_op string
  62.153 +        { charpt_char_term($2, $1, $3); }	
  62.154 +        | string_pt string_op string
  62.155 +        { stringpt_string_term($2, $1, $3); }
  62.156 +        | string_array_pt string_array_op string_array
  62.157 +        { stringarraypt_stringarray_term($2, $1, $3); }			
  62.158 +        | string_array string_array_op string_array_pt
  62.159 +        { if ($2 == OT_IN_C)         { $2 = OT_IN_P; }
  62.160 +          else if ($2 == OT_NOTIN_C) { $2 = OT_NOTIN_P; }
  62.161 +          stringarraypt_stringarray_term($2, $3, $1); }	
  62.162 +        | string string_string_array_op string_array_pt
  62.163 +        { if ($2 == OT_IN_C)         { $2 = OT_IN_P; }
  62.164 +          else if ($2 == OT_NOTIN_C) { $2 = OT_NOTIN_P; } 
  62.165 +          stringarraypt_string_term($2, $3, $1); }	
  62.166 +        | string string_string_array_op char_array_pt
  62.167 +        { if ($2 == OT_IN_C)         { $2 = OT_IN_P; }
  62.168 +          else if ($2 == OT_NOTIN_C) { $2 = OT_NOTIN_P; } 
  62.169 +          chararraypt_char_term($2, $3, $1); }			
  62.170 +        | term OR term 	{ or_term(); }
  62.171 +        | term AND term { and_term(); } 
  62.172 +        | NOT term						
  62.173 +        | '(' term ')'				
  62.174 +;
  62.175 +int_op:	IS             { $$ = OT_IS; }	
  62.176 +        | IS NOT	   { $$ = OT_ISNOT; } 
  62.177 +        | GREATER THAN { $$ = OT_GREATER; }
  62.178 +        | LESS THAN	   { $$ = OT_LESS; }
  62.179 +;
  62.180 +string_op: IS       { $$ = OT_IS; }	
  62.181 +           | IS NOT { $$ = OT_ISNOT; } 
  62.182 +;
  62.183 +string_array_op: IS       { $$ = OT_IS; }
  62.184 +                 | IS NOT { $$ = OT_ISNOT; } 
  62.185 +                 | IN 	  { $$ = OT_IN_P; }
  62.186 +                 | NOT IN { $$ = OT_NOTIN_P; }
  62.187 +;
  62.188 +string_string_array_op: IN       { $$ = OT_IN_P; }
  62.189 +                        | NOT IN { $$ = OT_NOTIN_P; }
  62.190 +;
  62.191 +int_array: '[' ints ']' { $$ = integer_array(); }
  62.192 +;
  62.193 +ints: | ints ',' int
  62.194 +      | ints int
  62.195 +;
  62.196 +int:  INTEGER { integer($1); $$ = $1; }
  62.197 +; 
  62.198 +string_array: '[' strings ']' { $$ = string_array(); }
  62.199 +;
  62.200 +strings: | strings ',' string
  62.201 +         | strings string
  62.202 +;
  62.203 +int_pt: TAS        { $$ = PT_TAS; }
  62.204 +        | INTERNAL { $$ = PT_INTERNAL; } 			
  62.205 +        | GLOBAL   { $$ = PT_GLOBAL; } 			
  62.206 +;
  62.207 +time_pt: DEPTIME    { $$ = PT_DEPTIME;  }
  62.208 +         | ARRTIME  { $$ = PT_ARRTIME;  }
  62.209 +         | GATETIME { $$ = PT_GATETIME; }
  62.210 +;
  62.211 +char_pt: FTYP { $$ = PT_FTYP; }
  62.212 +;
  62.213 +string_pt:  ADEP          { $$ = PT_ADEP; }
  62.214 +            | ADES        { $$ = PT_ADES; }
  62.215 +            | RWY         { $$ = PT_RWY; }
  62.216 +            | ATYP        { $$ = PT_ATYP; }
  62.217 +            | COPX        { $$ = PT_COPX; }				
  62.218 +            | GATE        { $$ = PT_GATE; }				
  62.219 +            | FRUL        { $$ = PT_FRUL; }				
  62.220 +            | RFL         { $$ = PT_RFL; }
  62.221 +            | TRAVEL_TYPE { $$ = PT_TRAVEL_TYPE; }
  62.222 +;
  62.223 +string_array_pt: ROUTE { $$ = PT_ROUTE; }				
  62.224 +;
  62.225 +char_array_pt: EQUIP { $$ = PT_EQUIP; }
  62.226 +;
  62.227 +string: QUOTE STRING QUOTE { string($2); $$ = $2; }
  62.228 +;
  62.229 +%%
  62.230 +#include "atccl_parser.c"
  62.231 +void clear_id_table()
  62.232 +{
  62.233 +    int i;
  62.234 +    for (i = 0; i < id_table_no; ++i)
  62.235 +    {
  62.236 +        free(id_table[i]);
  62.237 +        id_table[i] = 0;
  62.238 +    }
  62.239 +    id_table_no = 0;
  62.240 +}
  62.241 +int yywrap()
  62.242 +{
  62.243 +    clear_id_table();
  62.244 +    return 1;
  62.245 +}
  62.246 +int semantic_error(const char* str)
  62.247 +{
  62.248 +    if (errorNo < maxErrorNo)
  62.249 +    {
  62.250 +        errors[errorNo].line = -1;
  62.251 +        strcpy(errors[errorNo].text, "");
  62.252 +        strcpy(errors[errorNo].error, str);		
  62.253 +        errorNo++;
  62.254 +    }		
  62.255 +    return 1;
  62.256 +}
  62.257 +int yyerror(const char *str)
  62.258 +{
  62.259 +    if (errorNo < maxErrorNo)
  62.260 +    {
  62.261 +        errors[errorNo].line = line_no;
  62.262 +        strcpy(errors[errorNo].text, yytext);
  62.263 +        strcpy(errors[errorNo].error, str);		
  62.264 +        errorNo++;
  62.265 +    }		
  62.266 +    return 1;
  62.267 +}
  62.268 +int parse_syntax(FILE* file, ErrorType* errors_, 
  62.269 +                 int maxErrorNo_, int passes)
  62.270 +{
  62.271 +    line_no = 1;
  62.272 +    errors = errors_;
  62.273 +    maxErrorNo = maxErrorNo_;
  62.274 +    errorNo = 0;
  62.275 +    clear_all();
  62.276 +    clear_id_table();		
  62.277 +    yyrestart(file);
  62.278 +    yyparse();
  62.279 +
  62.280 +    if (passes > 1)
  62.281 +    {	
  62.282 +        if (!complete_semantics())
  62.283 +        {
  62.284 +            semantic_error(last_error());
  62.285 +        }	
  62.286 +    }	
  62.287 +    return errorNo;
  62.288 +}
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/paper/src/atccl_comments.txt	Fri Jun 04 13:48:28 2010 +0200
    63.3 @@ -0,0 +1,1 @@
    63.4 +com              = "#" { visible_character } EOL
    64.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.2 +++ b/paper/src/atccl_config.txt	Fri Jun 04 13:48:28 2010 +0200
    64.3 @@ -0,0 +1,2 @@
    64.4 +config           = { rule | comment }
    64.5 +rule             = pattern | constraint | flow_point
    65.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.2 +++ b/paper/src/atccl_constraints.txt	Fri Jun 04 13:48:28 2010 +0200
    65.3 @@ -0,0 +1,8 @@
    65.4 +constraint       = "constraint" id "(" constraint_term ")"
    65.5 +
    65.6 +constraint_term  = "time_sep" "at" (string | string_array) 
    65.7 +                     "is" int si_unit 
    65.8 +                     [ "from" int "until" int ]
    65.9 +                     [ "at" "fl" int_array ]
   65.10 +		   | constraint_term "and" constraint_term
   65.11 +si_unit          = "s" | "min"
    66.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.2 +++ b/paper/src/atccl_datatypes.txt	Fri Jun 04 13:48:28 2010 +0200
    66.3 @@ -0,0 +1,4 @@
    66.4 +string           = """ { visible_character } """
    66.5 +int              = [ "-" ] digit { digit }
    66.6 +string_array     = "[" { string { "," string } } "]"
    66.7 +int_array        = "[" { int { "," int } } "]"
    67.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.2 +++ b/paper/src/atccl_ebnf.txt	Fri Jun 04 13:48:28 2010 +0200
    67.3 @@ -0,0 +1,65 @@
    67.4 +prog                   ::= { rule }
    67.5 +rule                   ::= pttrn
    67.6 +                         | constrnt
    67.7 +                         | flowp
    67.8 +                         | COM
    67.9 +flowp                  ::= FLOWP STRING "(" flowp_entry ")"
   67.10 +flowp_entry            ::= pttrn_lbl ":" constrnt_lbl
   67.11 +pttrn_lbl              ::= STRING
   67.12 +constrnt_lbl           ::= STRING
   67.13 +constrnt               ::= CONSTRNT STRING "(" cterm ")"
   67.14 +cterm                  ::= TIMESEP AT string IS INTEGER si_unit
   67.15 +                         | TIMESEP AT string_array IS INTEGER si_unit
   67.16 +                         | TIMESEP AT string IS INTEGER si_unit FROM INTEGER
   67.17 +                           UNTIL INTEGER
   67.18 +                         | TIMESEP AT string_array IS INTEGER si_unit FROM
   67.19 +                           INTEGER UNTIL INTEGER
   67.20 +                         | TIMESEP AT string IS INTEGER si_unit AT FL int_array
   67.21 +                         | TIMESEP AT string_array IS INTEGER si_unit AT FL
   67.22 +                           int_array
   67.23 +                         | TIMESEP AT string IS INTEGER si_unit FROM INTEGER
   67.24 +                           UNTIL INTEGER AT FL int_array
   67.25 +                         | TIMESEP AT string_array IS INTEGER si_unit FROM
   67.26 +                           INTEGER UNTIL INTEGER AT FL int_array
   67.27 +                         | cterm AND cterm
   67.28 +si_unit                ::= STRING
   67.29 +pttrn                  ::= PATTERN ( STRING "(" term ")" | "(" term ")" )
   67.30 +term                   ::= int_pt int_op INTEGER
   67.31 +                         | char_pt string_op string
   67.32 +                         | string_pt string_op string
   67.33 +                         | string_array_pt string_array_op string_array
   67.34 +                         | string_array string_array_op string_array_pt
   67.35 +                         | string string_string_array_op string_array_pt
   67.36 +                         | string string_string_array_op char_array_pt
   67.37 +                         | term OR term
   67.38 +                         | term AND term
   67.39 +                         | NOT term
   67.40 +                         | "(" term ")"
   67.41 +int_op                 ::= IS
   67.42 +                         | IS NOT
   67.43 +                         | GREATER THAN
   67.44 +                         | LESS THAN
   67.45 +string_op              ::= IS [ NOT ]
   67.46 +string_array_op        ::= IS
   67.47 +                         | IS NOT
   67.48 +                         | IN
   67.49 +                         | NOT IN
   67.50 +string_string_array_op ::= [ NOT ] IN
   67.51 +int_array              ::= "[" ints "]"
   67.52 +ints                   ::= { ( "," int | int ) }
   67.53 +int                    ::= INTEGER
   67.54 +string_array           ::= "[" strings "]"
   67.55 +strings                ::= { ( "," string | string ) }
   67.56 +int_pt                 ::= TAS
   67.57 +char_pt                ::= FTYP
   67.58 +string_pt              ::= ADEP
   67.59 +                         | ADES
   67.60 +                         | RWY
   67.61 +                         | ATYP
   67.62 +                         | COPX
   67.63 +                         | FRUL
   67.64 +                         | RFL
   67.65 +                         | TRAVEL_TYPE
   67.66 +string_array_pt        ::= ROUTE
   67.67 +char_array_pt          ::= EQUIP
   67.68 +string                 ::= QUOTE STRING QUOTE
    68.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.2 +++ b/paper/src/atccl_ebnf_1.txt	Fri Jun 04 13:48:28 2010 +0200
    68.3 @@ -0,0 +1,38 @@
    68.4 +prog                   = { rule }
    68.5 +rule                   = pttrn
    68.6 +                         | constrnt
    68.7 +                         | flowp
    68.8 +                         | COM
    68.9 +flowp                  = FLOWP STRING "(" flowp_entry ")"
   68.10 +flowp_entry            = pttrn_lbl ":" constrnt_lbl
   68.11 +pttrn_lbl              = STRING
   68.12 +constrnt_lbl           = STRING
   68.13 +constrnt               = CONSTRNT STRING "(" cterm ")"
   68.14 +cterm                  = TIMESEP AT string IS INTEGER si_unit
   68.15 +                         | TIMESEP AT string_array IS INTEGER si_unit
   68.16 +                         | TIMESEP AT string IS INTEGER si_unit 
   68.17 +                           FROM INTEGER UNTIL INTEGER
   68.18 +                         | TIMESEP AT string_array IS INTEGER si_unit 
   68.19 +                           FROM INTEGER UNTIL INTEGER
   68.20 +                         | TIMESEP AT string IS INTEGER si_unit 
   68.21 +                           AT FL int_array
   68.22 +                         | TIMESEP AT string_array IS INTEGER si_unit 
   68.23 +                           AT FL int_array
   68.24 +                         | TIMESEP AT string IS INTEGER si_unit 
   68.25 +                           FROM INTEGER UNTIL INTEGER AT FL int_array
   68.26 +                         | TIMESEP AT string_array IS INTEGER si_unit 
   68.27 +                           FROM INTEGER UNTIL INTEGER AT FL int_array
   68.28 +                         | cterm AND cterm
   68.29 +si_unit                = STRING
   68.30 +pttrn                  = PATTERN ( STRING "(" term ")" | "(" term ")" )
   68.31 +term                   = int_pt int_op INTEGER
   68.32 +                         | char_pt string_op string
   68.33 +                         | string_pt string_op string
   68.34 +                         | string_array_pt string_array_op string_array
   68.35 +                         | string_array string_array_op string_array_pt
   68.36 +                         | string string_string_array_op string_array_pt
   68.37 +                         | string string_string_array_op char_array_pt
   68.38 +                         | term OR term
   68.39 +                         | term AND term
   68.40 +                         | NOT term
   68.41 +                         | "(" term ")"
    69.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.2 +++ b/paper/src/atccl_ebnf_2.txt	Fri Jun 04 13:48:28 2010 +0200
    69.3 @@ -0,0 +1,37 @@
    69.4 +term                   = term AND term
    69.5 +term                   = NOT term
    69.6 +term                   = "(" term ")"
    69.7 +int_op                 = IS
    69.8 +int_op                 = IS NOT
    69.9 +int_op                 = GREATER THAN
   69.10 +int_op                 = LESS THAN
   69.11 +string_op              = IS
   69.12 +string_op              = IS NOT
   69.13 +string_array_op        = IS
   69.14 +string_array_op        = IS NOT
   69.15 +string_array_op        = IN
   69.16 +string_array_op        = NOT IN
   69.17 +string_string_array_op = IN
   69.18 +string_string_array_op = NOT IN
   69.19 +int_array              = "[" ints "]"
   69.20 +ints                   =
   69.21 +ints                   = ints "," int
   69.22 +ints                   = ints int
   69.23 +int                    = INTEGER
   69.24 +string_array           = "[" strings "]"
   69.25 +strings                =
   69.26 +strings                = strings "," string
   69.27 +strings                = strings string
   69.28 +int_pt                 = TAS
   69.29 +char_pt                = FTYP
   69.30 +string_pt              = ADEP
   69.31 +string_pt              = ADES
   69.32 +string_pt              = RWY
   69.33 +string_pt              = ATYP
   69.34 +string_pt              = COPX
   69.35 +string_pt              = FRUL
   69.36 +string_pt              = RFL
   69.37 +string_pt              = TRAVEL_TYPE
   69.38 +string_array_pt        = ROUTE
   69.39 +char_array_pt          = EQUIP
   69.40 +string                 = QUOTE STRING QUOTE
    70.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.2 +++ b/paper/src/atccl_example1.txt	Fri Jun 04 13:48:28 2010 +0200
    70.3 @@ -0,0 +1,10 @@
    70.4 +# flight plan pattern used for the filtering of flight plans
    70.5 +pattern DBCoppiDF(adep is "OMDB" and ades is "EDDF" 
    70.6 +                  and "COPPI" in route)
    70.7 +
    70.8 +# constraint definition for the way point
    70.9 +constraint Coppi5(time_sep at "COPPI" is 5 min)
   70.10 +
   70.11 +# flow point definition by the mapping of a pattern to a constraint
   70.12 +flowpoint DBCoppiDF(DBCoppiDF: Coppi5)
   70.13 +
    71.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.2 +++ b/paper/src/atccl_example2.txt	Fri Jun 04 13:48:28 2010 +0200
    71.3 @@ -0,0 +1,12 @@
    71.4 +pattern DBCoppiBalusDF(adep is "OMDB" and ades is "EDDF" 
    71.5 +                       and ("COPPI" in route or "BALUS" in route))
    71.6 +
    71.7 +constraint CoppiBalus(time_sep at ["COPPI", "BALUS"] is 5 min 
    71.8 +                         from 0000 until 0600 at FL [300, 320, 340]
    71.9 +                      and time_sep at ["COPPI", "BALUS"] is 3 min 
   71.10 +                         from 0601 until 1200 at FL [300, 320]
   71.11 +                      and time_sep at ["COPPI", "BALUS"] is 130s
   71.12 +                         from 1201 until 2200)
   71.13 +
   71.14 +flowpoint Example2(DBCoppiBalusDF: CoppiBalus)
   71.15 +
    72.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.2 +++ b/paper/src/atccl_flowpoints.txt	Fri Jun 04 13:48:28 2010 +0200
    72.3 @@ -0,0 +1,1 @@
    72.4 +flow_point       = "flowpoint" id "(" id ":" id ")"
    73.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.2 +++ b/paper/src/atccl_ids.txt	Fri Jun 04 13:48:28 2010 +0200
    73.3 @@ -0,0 +1,1 @@
    73.4 +id               = letter { letter | digit | "_" }
    74.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.2 +++ b/paper/src/atccl_keywords.txt	Fri Jun 04 13:48:28 2010 +0200
    74.3 @@ -0,0 +1,17 @@
    74.4 +/* Flight plan properties */
    74.5 +copx	adep	ades	rwy
    74.6 +route	atyp	equip	tas
    74.7 +frul	ftyp	travel_type
    74.8 +fl
    74.9 +
   74.10 +/* Rule types */
   74.11 +time_sep	constraint
   74.12 +pattern		flowpoint
   74.13 +
   74.14 +/* Operators */
   74.15 +is	in	not	less
   74.16 +greater	than	and	or
   74.17 +at	from	until	on
   74.18 +
   74.19 +/* SI-Units */
   74.20 +s	min
    75.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.2 +++ b/paper/src/atccl_letters_digits.txt	Fri Jun 04 13:48:28 2010 +0200
    75.3 @@ -0,0 +1,3 @@
    75.4 +letter            = /* Ein ASCII-Zeichen: A..Z und a..z */
    75.5 +digit             = "0" .. "9" 
    75.6 +visible_character = /* Ein sichtbares ASCII-Zeichen */
    76.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.2 +++ b/paper/src/atccl_operators.txt	Fri Jun 04 13:48:28 2010 +0200
    76.3 @@ -0,0 +1,6 @@
    76.4 +int_op                 = "is" [ "not" ] 
    76.5 +                         | ("greater" | "less") "than"
    76.6 +string_op              = "is" [ "not" ]
    76.7 +string_array_op        = "is" [ "not" ]
    76.8 +                         | [ "not" ] "in"
    76.9 +string_string_array_op = [ "not" ] "in"
    77.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.2 +++ b/paper/src/atccl_patterns.txt	Fri Jun 04 13:48:28 2010 +0200
    77.3 @@ -0,0 +1,10 @@
    77.4 +pattern        = "pattern" id "(" pattern_term ")"
    77.5 +pattern_term   = int_pt int_op int
    77.6 +                 | (char_pt | string_pt) string_op string
    77.7 +                 | string_array_pt string_array_op string_array
    77.8 +                 | string_array string_array_op string_array_pt
    77.9 +                 | string string_string_array_op 
   77.10 +                   (string_array_pt | char_array_pt )
   77.11 +                 | pattern_term ("or" | "and") pattern_term
   77.12 +                 | "not" pattern_term
   77.13 +                 | "(" pattern_term ")"
    78.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.2 +++ b/paper/src/atccl_properties.txt	Fri Jun 04 13:48:28 2010 +0200
    78.3 @@ -0,0 +1,6 @@
    78.4 +int_pt           = "tas"
    78.5 +char_pt          = "ftyp"
    78.6 +string_pt        = "adep" | "ades" | "rwy" | "atyp" | "copx" 
    78.7 +                   | "copn" | "frul" | "rfl" | "travel_type"
    78.8 +string_array_pt  = "route"
    78.9 +char_array_pt    = "equip"
    79.1 Binary file paper/src/atot_etot_atd.pdf has changed
    80.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.2 +++ b/paper/src/atot_etot_atd.tex	Fri Jun 04 13:48:28 2010 +0200
    80.3 @@ -0,0 +1,102 @@
    80.4 +% GNUPLOT: LaTeX picture with Postscript
    80.5 +\begingroup
    80.6 +  \makeatletter
    80.7 +  \providecommand\color[2][]{%
    80.8 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
    80.9 +      Package color not loaded in conjunction with
   80.10 +      terminal option `colourtext'%
   80.11 +    }{See the gnuplot documentation for explanation.%
   80.12 +    }{Either use 'blacktext' in gnuplot or load the package
   80.13 +      color.sty in LaTeX.}%
   80.14 +    \renewcommand\color[2][]{}%
   80.15 +  }%
   80.16 +  \providecommand\includegraphics[2][]{%
   80.17 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
   80.18 +      Package graphicx or graphics not loaded%
   80.19 +    }{See the gnuplot documentation for explanation.%
   80.20 +    }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
   80.21 +    \renewcommand\includegraphics[2][]{}%
   80.22 +  }%
   80.23 +  \providecommand\rotatebox[2]{#2}%
   80.24 +  \@ifundefined{ifGPcolor}{%
   80.25 +    \newif\ifGPcolor
   80.26 +    \GPcolorfalse
   80.27 +  }{}%
   80.28 +  \@ifundefined{ifGPblacktext}{%
   80.29 +    \newif\ifGPblacktext
   80.30 +    \GPblacktexttrue
   80.31 +  }{}%
   80.32 +  % define a \g@addto@macro without @ in the name:
   80.33 +  \let\gplgaddtomacro\g@addto@macro
   80.34 +  % define empty templates for all commands taking text:
   80.35 +  \gdef\gplbacktext{}%
   80.36 +  \gdef\gplfronttext{}%
   80.37 +  \makeatother
   80.38 +  \ifGPblacktext
   80.39 +    % no textcolor at all
   80.40 +    \def\colorrgb#1{}%
   80.41 +    \def\colorgray#1{}%
   80.42 +  \else
   80.43 +    % gray or color?
   80.44 +    \ifGPcolor
   80.45 +      \def\colorrgb#1{\color[rgb]{#1}}%
   80.46 +      \def\colorgray#1{\color[gray]{#1}}%
   80.47 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
   80.48 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
   80.49 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
   80.50 +      \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
   80.51 +      \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
   80.52 +      \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
   80.53 +      \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
   80.54 +      \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
   80.55 +      \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
   80.56 +      \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
   80.57 +      \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
   80.58 +      \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
   80.59 +    \else
   80.60 +      % gray
   80.61 +      \def\colorrgb#1{\color{black}}%
   80.62 +      \def\colorgray#1{\color[gray]{#1}}%
   80.63 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
   80.64 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
   80.65 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
   80.66 +      \expandafter\def\csname LT0\endcsname{\color{black}}%
   80.67 +      \expandafter\def\csname LT1\endcsname{\color{black}}%
   80.68 +      \expandafter\def\csname LT2\endcsname{\color{black}}%
   80.69 +      \expandafter\def\csname LT3\endcsname{\color{black}}%
   80.70 +      \expandafter\def\csname LT4\endcsname{\color{black}}%
   80.71 +      \expandafter\def\csname LT5\endcsname{\color{black}}%
   80.72 +      \expandafter\def\csname LT6\endcsname{\color{black}}%
   80.73 +      \expandafter\def\csname LT7\endcsname{\color{black}}%
   80.74 +      \expandafter\def\csname LT8\endcsname{\color{black}}%
   80.75 +    \fi
   80.76 +  \fi
   80.77 +  \setlength{\unitlength}{0.0500bp}%
   80.78 +  \begin{picture}(5760.00,4032.00)%
   80.79 +    \gplgaddtomacro\gplbacktext{%
   80.80 +      \csname LTb\endcsname%
   80.81 +      \put(1342,704){\makebox(0,0)[r]{\strut{}$-30$}}%
   80.82 +      \put(1342,1317){\makebox(0,0)[r]{\strut{}$-20$}}%
   80.83 +      \put(1342,1930){\makebox(0,0)[r]{\strut{}$-10$}}%
   80.84 +      \put(1342,2542){\makebox(0,0)[r]{\strut{}$0$}}%
   80.85 +      \put(1342,3155){\makebox(0,0)[r]{\strut{}$10$}}%
   80.86 +      \put(1342,3768){\makebox(0,0)[r]{\strut{}$20$}}%
   80.87 +      \put(1474,484){\makebox(0,0){\strut{}$0$}}%
   80.88 +      \put(1969,484){\makebox(0,0){\strut{}$5$}}%
   80.89 +      \put(2463,484){\makebox(0,0){\strut{}$10$}}%
   80.90 +      \put(2958,484){\makebox(0,0){\strut{}$15$}}%
   80.91 +      \put(3452,484){\makebox(0,0){\strut{}$20$}}%
   80.92 +      \put(3947,484){\makebox(0,0){\strut{}$25$}}%
   80.93 +      \put(4441,484){\makebox(0,0){\strut{}$30$}}%
   80.94 +      \put(4936,484){\makebox(0,0){\strut{}$35$}}%
   80.95 +      \put(5430,484){\makebox(0,0){\strut{}$40$}}%
   80.96 +      \put(440,2236){\rotatebox{90}{\makebox(0,0){\strut{}ATOT/ATD-Differenz (min)}}}%
   80.97 +      \put(3452,154){\makebox(0,0){\strut{}ATOT/ETOT-Differenz (min)}}%
   80.98 +    }%
   80.99 +    \gplgaddtomacro\gplfronttext{%
  80.100 +    }%
  80.101 +    \gplbacktext
  80.102 +    \put(0,0){\includegraphics{atot_etot_atd}}%
  80.103 +    %\gplfronttext
  80.104 +  \end{picture}%
  80.105 +\endgroup
    81.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.2 +++ b/paper/src/bison_config1.txt	Fri Jun 04 13:48:28 2010 +0200
    81.3 @@ -0,0 +1,243 @@
    81.4 +%token
    81.5 +CONSTRNT PATTERN FLOWP COM
    81.6 +QUOTE THAN FROM UNTIL ON
    81.7 +
    81.8 +%union
    81.9 +{
   81.10 +	int integer;
   81.11 +	double real;
   81.12 +	const char* string;
   81.13 +}
   81.14 +
   81.15 +%token <integer> INTEGER
   81.16 +%token <integer> TIME
   81.17 +%token <real> 	REAL
   81.18 +%token <string> STRING
   81.19 +
   81.20 +
   81.21 +%token <integer> IS 
   81.22 +%token <integer> IN 
   81.23 +%token <integer> GREATER 
   81.24 +%token <integer> LESS 
   81.25 +%token <integer> NOT 
   81.26 +%token <integer> AND 
   81.27 +%token <integer> OR 
   81.28 +%token <integer> AT
   81.29 +%token <integer> COPX
   81.30 +%token <integer> ADEP
   81.31 +%token <integer> ADES
   81.32 +%token <integer> RWY
   81.33 +%token <integer> ROUTE
   81.34 +%token <integer> ATYP
   81.35 +%token <integer> FLVL
   81.36 +%token <integer> TAS
   81.37 +%token <integer> FRUL
   81.38 +%token <integer> FTYP
   81.39 +%token <integer> EQUIP
   81.40 +%token <integer> RFL
   81.41 +%token <integer> TRAVEL_TYPE
   81.42 +%token <integer> TIMESEP 
   81.43 +%token <integer> FL
   81.44 +
   81.45 +%type <string> string
   81.46 +%type <string> pttrn
   81.47 +%type <string> flowp
   81.48 +%type <string> constrnt
   81.49 +%type <integer> int
   81.50 +%type <integer> string_array
   81.51 +%type <integer> int_array
   81.52 +%type <integer> int_pt
   81.53 +%type <integer> char_pt
   81.54 +%type <integer> string_pt
   81.55 +%type <integer> string_array_pt
   81.56 +%type <integer> char_array_pt
   81.57 +%type <integer> int_op
   81.58 +%type <integer> string_op
   81.59 +%type <integer> string_array_op
   81.60 +%type <integer> string_string_array_op
   81.61 +%type <integer> si_unit
   81.62 +
   81.63 +%left OR
   81.64 +%left AND
   81.65 +%right NOT
   81.66 +
   81.67 +%%
   81.68 +prog:			| prog rule {  }
   81.69 +				| error ')' { yyerrok; yyclearin;}				
   81.70 +;
   81.71 +
   81.72 +rule:			pttrn 		{ if (!pattern($1)) printf("Error: %s\n", last_error()); }
   81.73 +				| constrnt 	{ if (!constraint($1)) printf("Error: %s\n", last_error()); }
   81.74 +				| flowp 	{ if (!flowpoint($1)) printf("Error: %s\n", last_error()); }
   81.75 +				| COM		{ comment(); }
   81.76 +;
   81.77 +
   81.78 +flowp:			FLOWP STRING '(' flowp_entry ')'	{ $$ = $2; }
   81.79 +;
   81.80 +
   81.81 +flowp_entry:	pttrn_lbl ':' constrnt_lbl					
   81.82 +;
   81.83 +
   81.84 +pttrn_lbl:		STRING						{ if (!pattern_id($1)) printf("Error: %s\n", last_error()); }						
   81.85 +;
   81.86 +
   81.87 +constrnt_lbl:	STRING	{ if (!constraint_id($1)) printf("Error: %s\n", last_error()); }
   81.88 +;
   81.89 +
   81.90 +constrnt:		CONSTRNT STRING '(' cterm ')' 	{ $$ = $2; }
   81.91 +;
   81.92 +
   81.93 +cterm:			TIMESEP AT string IS INTEGER si_unit		
   81.94 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, 0); }				
   81.95 +				| TIMESEP AT string_array IS INTEGER si_unit
   81.96 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, 0); }		
   81.97 +				| TIMESEP AT string IS INTEGER si_unit FROM INTEGER UNTIL INTEGER	
   81.98 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, 0); }				
   81.99 +				| TIMESEP AT string_array IS INTEGER si_unit FROM INTEGER UNTIL INTEGER
  81.100 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, 0); }		
  81.101 +				
  81.102 +				| TIMESEP AT string IS INTEGER si_unit AT FL int_array
  81.103 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, $9); }				
  81.104 +				| TIMESEP AT string_array IS INTEGER si_unit AT FL int_array
  81.105 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, 0, 0, $9); }		
  81.106 +				| TIMESEP AT string IS INTEGER si_unit FROM INTEGER UNTIL INTEGER AT FL int_array	
  81.107 +				{ intpt_string_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, $13); }				
  81.108 +				| TIMESEP AT string_array IS INTEGER si_unit FROM INTEGER UNTIL INTEGER AT FL int_array
  81.109 +				{ intpt_stringarray_int_cterm(PT_TIMESEP, $3, $5 * $6, $8, $10, $13); }	
  81.110 +									
  81.111 +				| cterm AND cterm							
  81.112 +				{ and_term(); }
  81.113 +;
  81.114 +
  81.115 +si_unit:		STRING	
  81.116 +				{ 
  81.117 +					if (!strcmp($1, "s")) { $$ = 1; }
  81.118 +					else if (!strcmp($1, "min")) { $$ = 60; }
  81.119 +				}
  81.120 +;
  81.121 +
  81.122 +pttrn: 			PATTERN STRING '(' term ')'	{ $$ = $2; }
  81.123 +				| PATTERN '(' term ')'		{ $$ = get_pattern_id(); }
  81.124 +;
  81.125 +
  81.126 +term:			int_pt int_op INTEGER	
  81.127 +				{ intpt_int_term($2, $1, $3); }	
  81.128 +					
  81.129 +				| char_pt string_op string
  81.130 +				{ charpt_char_term($2, $1, $3); }
  81.131 +						
  81.132 +				| string_pt string_op string
  81.133 +				{ stringpt_string_term($2, $1, $3); }
  81.134 +				
  81.135 +				| string_array_pt string_array_op string_array
  81.136 +				{ stringarraypt_stringarray_term($2, $1, $3); }	
  81.137 +							
  81.138 +				| string_array string_array_op string_array_pt
  81.139 +				{ 
  81.140 +					if ($2 == OT_IN_C)
  81.141 +					{
  81.142 +						$2 = OT_IN_P;
  81.143 +					}
  81.144 +					else if ($2 == OT_NOTIN_C)
  81.145 +					{
  81.146 +						$2 = OT_NOTIN_P;
  81.147 +					}
  81.148 +					stringarraypt_stringarray_term($2, $3, $1); 
  81.149 +				}			
  81.150 +					
  81.151 +				| string string_string_array_op string_array_pt
  81.152 +				{ 
  81.153 +					if ($2 == OT_IN_C)
  81.154 +					{
  81.155 +						$2 = OT_IN_P;
  81.156 +					}
  81.157 +					else if ($2 == OT_NOTIN_C)
  81.158 +					{
  81.159 +						$2 = OT_NOTIN_P;
  81.160 +					} 
  81.161 +					stringarraypt_string_term($2, $3, $1); 
  81.162 +				}		
  81.163 +				
  81.164 +				| string string_string_array_op char_array_pt
  81.165 +				{ 
  81.166 +					if ($2 == OT_IN_C)
  81.167 +					{
  81.168 +						$2 = OT_IN_P;
  81.169 +					}
  81.170 +					else if ($2 == OT_NOTIN_C)
  81.171 +					{
  81.172 +						$2 = OT_NOTIN_P;
  81.173 +					} 
  81.174 +					chararraypt_char_term($2, $3, $1); 
  81.175 +				}	
  81.176 +							
  81.177 +				| term OR term 		
  81.178 +				{ or_term(); }
  81.179 +				
  81.180 +				| term AND term
  81.181 +				{ and_term(); } 	
  81.182 +				
  81.183 +				| NOT term						
  81.184 +				| '(' term ')'				
  81.185 +;
  81.186 +
  81.187 +int_op:			IS 				{ $$ = OT_IS; }	
  81.188 +				| IS NOT		{ $$ = OT_ISNOT; } 
  81.189 +				| GREATER THAN	{ $$ = OT_GREATER; }
  81.190 +				| LESS THAN		{ $$ = OT_LESS; }
  81.191 +;
  81.192 +
  81.193 +string_op:		IS			{ $$ = OT_IS; }	
  81.194 +				| IS NOT	{ $$ = OT_ISNOT; } 
  81.195 +;
  81.196 +
  81.197 +string_array_op:IS			{ $$ = OT_IS; }
  81.198 +				| IS NOT 	{ $$ = OT_ISNOT; } 
  81.199 +				| IN 		{ $$ = OT_IN_P; }
  81.200 +				| NOT IN	{ $$ = OT_NOTIN_P; }
  81.201 +;
  81.202 +
  81.203 +string_string_array_op: IN 			{ $$ = OT_IN_P; }
  81.204 +						| NOT IN	{ $$ = OT_NOTIN_P; }
  81.205 +;
  81.206 +
  81.207 +int_array:		'[' ints ']' { $$ = integer_array(); }
  81.208 +;
  81.209 +
  81.210 +ints:			| ints ',' int
  81.211 +				| ints int
  81.212 +;
  81.213 +
  81.214 +int:		INTEGER { integer($1); $$ = $1; }
  81.215 +; 
  81.216 +
  81.217 +string_array:	'[' strings ']'	{ $$ = string_array(); }
  81.218 +;
  81.219 +
  81.220 +strings:		| strings ',' string
  81.221 +				| strings string
  81.222 +;
  81.223 +
  81.224 +int_pt:			TAS		{ $$ = PT_TAS; }			
  81.225 +;
  81.226 +
  81.227 +char_pt:		FTYP		{ $$ = PT_FTYP; }
  81.228 +
  81.229 +string_pt:		ADEP	{ $$ = PT_ADEP; }
  81.230 +				| ADES	{ $$ = PT_ADES; }
  81.231 +				| RWY 	{ $$ = PT_RWY; }
  81.232 +				| ATYP 	{ $$ = PT_ATYP; }
  81.233 +				| COPX	{ $$ = PT_COPX; }				
  81.234 +				| FRUL 	{ $$ = PT_FRUL; }				
  81.235 +				| RFL	{ $$ = PT_RFL; }
  81.236 +				| TRAVEL_TYPE { $$ = PT_TRAVEL_TYPE; }
  81.237 +;
  81.238 +
  81.239 +string_array_pt:ROUTE	{ $$ = PT_ROUTE; }				
  81.240 +;
  81.241 +
  81.242 +char_array_pt:	EQUIP	{ $$ = PT_EQUIP; }
  81.243 +;
  81.244 +
  81.245 +string:			QUOTE STRING QUOTE	{ string($2); $$ = $2; }
  81.246 +;
    82.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.2 +++ b/paper/src/conclusion.tex	Fri Jun 04 13:48:28 2010 +0200
    82.3 @@ -0,0 +1,11 @@
    82.4 +\chapter{Zusammenfassung}
    82.5 +\section{Fazit}
    82.6 +Am Ende dieser Arbeit kann festgestellt werden, dass die Zielsetzung vollständig erreicht wurde. Der Projektverlauf war wie geplant, alle Phasen wurden erfolgreich abgeschlossen. Die Verifizierung ergab ein positives Bild über die Funktionalität der entwickelten Abflugplanungskomponente und des \emph{ATCCL-Frameworks}.
    82.7 +
    82.8 +Die Wahl eine domänenspezifische Sprache für die Modellierung der Luftraumbeschränkungen zu entwickeln, hat sich als ein großer Vorteil herausgestellt. Die Sprache gewährleistet große Freiheiten bei der Konfiguration der Abflugplanungskomponente, gleichzeitig bietet sie eine hervorragende Kontrolle über die Validität der Konfiguration. Bereits während der Bearbeitungszeit der Bachelorarbeit wurde \emph{ATCCL} in einem weiteren Projekt erfolgreich eingesetzt, was die Entwicklungszeit verkürzte und die Dynamik des Projekts erheblich steigerte.\\\\
    82.9 +Seit dem 27. Januar 2010 wird \emph{DFLOW} erfolgreich im operativen Betrieb für die Bestimmung der Abflugzeiten von der \emph{GCAA} eingesetzt. Der störungsfreie Betrieb und ein zufriedener Kunde ist ein weiterer Beweis für die Qualität der realisierten Komponenten.
   82.10 +
   82.11 +\section{Ausblick}
   82.12 +Ein weiterer Ausbau des \emph{ATCCL-Frameworks} kann das Anwendungsgebiet der Sprache erweitern. Alle flugplanverarbeitenden Systeme können tendenziell vom Einsatz der Sprache profitieren. Durch das generische Konzept des Frameworks ist eine Erweiterung der Syntax und Semantik mit wenig Aufwand möglich, was eine schnelle Integration in zukünftige Projekte ermöglichen soll.
   82.13 +
   82.14 +Die systematische Konfigurierbarkeit der \emph{DFLOW-Komponente} macht eine Erweiterung der Verarbeitungslogik möglich. Als Vervollständigung des Automatisierungskonzepts der Abflugregelung, ist eine Integration mit einem Departure Manager, zur Abhandlung des Mikromanagements auf Flughafenebene, geeignet.
    83.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.2 +++ b/paper/src/design.tex	Fri Jun 04 13:48:28 2010 +0200
    83.3 @@ -0,0 +1,437 @@
    83.4 +\chapter{Entwurf}
    83.5 +Die Entwurfsphase definiert die zu realisierenden Module, die alle gestellten Anforderungen erfüllen. Dabei werden u.a. verschiedene Lösungsvarianten verglichen und die Einbindung von Hilfswerkzeugen geplant.\\\\
    83.6 +Ab diesem Abschnitt werden die beiden Komponenten mit ihren Systemnamen referenziert:
    83.7 +\begin{itemize}
    83.8 +\item \textbf{ATCCL}\\
    83.9 +Die \emph{Air Traffic Control Constraint Language} ist die domänenspezifische Modellierungssprache der Luftraumbeschränkungen. Sie gilt als die Konfigurationssprache der DFLOW-Komponente. Der dazugehörige Compiler und die virtuelle Maschine werden oft auch mit dieser Abkürzung, oder aber explizit als das \emph{ATCCL-Framework}, referenziert.
   83.10 +
   83.11 +\item \textbf{DFLOW}\\
   83.12 +DFLOW bezeichnet die Abflugplanungskomponente und steht für \emph{Departure Flow}.
   83.13 +\end{itemize} 
   83.14 +
   83.15 +\section{ATCCL}
   83.16 +Die Anforderungen spannten einen Raum von möglichen Lösungsansätzen auf, während die Sicherheits- und Benutzerakzeptanz  die realisierbaren Möglichkeiten reduzierten. So wurde die Gestaltungsmöglichkeit der Syntax der Modellierungssprache durch die Benutzerzielgruppe stark begrenzt, die Semantik wurde zum großen Teil durch die Anwendungsdomäne bestimmt.\\\\
   83.17 +Bei strikten Vorgaben, also der Reduktion der Freiheiten, gestaltet sich die Entwicklung des Systementwurfs höchst effizient. Da der Grobentwurf zu einem großen Teil eine direkte Ableitung der Anforderung ist, hat sich die Entwurfsphase auf die einzelnen Module und deren Interaktion beschränkt.
   83.18 +
   83.19 +\subsection{Syntax}
   83.20 +Bereits in der Anforderungsanalyse wurden Syntaxprototypen entwickelt, welche sowohl dem Kunden als auch den Projektmitarbeitern präsentiert wurden. Dieses Vorgehen ist hilfreich, um aus einer Reihe von Kandidaten, die mit vergleichbarer Komplexität die selben Ergebnisse liefern, die geeigneteren herauszufinden.\\\\
   83.21 +Zur Spezifizierung der ATCCL-Syntax wurde anhand der Anforderungen und den Prototypen ein vollständige \emph{Erweiterte Backus-Naur-Form} -- kurz EBNF, siehe \cite{ebnf} -- für die Syntax erstellt. Die EBNF wird zur Darstellung von kontextfreien Grammatiken genutzt, ist standardisiert und eignet sich sowohl als Spezifikation der Syntax einer Sprache als auch als Basis für die Erstellung von Parser oder Compiler mit Hilfe von Werkzeugen. Folgend befindet sich die komplette Spezifikation der ATCCL.
   83.22 +
   83.23 +\subsubsection{Notation}
   83.24 +Die Syntax ist in EBNF spezifiziert. Klein geschriebene Produktionsnamen werden zur Tokenidentifizierung verwendet. Nicht-Terminale werden groß geschrieben. Direkte lexikalische Symbole werden in doppelten Anführungszeichen umschlossen.\\\\
   83.25 +Die Form a ... b beschreibt eine Menge von Zeichen, angefangen von a bis b.\\
   83.26 +\lstinputlisting[label=EBNF Notation,caption=EBNF Notation,language=TeX]{ebnf.txt}
   83.27 +
   83.28 +\subsubsection{Buchstaben und Ziffern}
   83.29 +Standardflugpläne unterstützen nur ASCII-Zeichen, deshalb gibt es keine Unicode-Unter"-stützung bei Zeichen. Die Sprache und der Compiler sind in der Lage, neben den natürlichen Zahlen auch reelle Zahlen zu verarbeiten. Es keine reellen Merkmale in einem Flugplan.\\
   83.30 +\lstinputlisting[label=ATCCL EBNF Buchstaben und Zeichen,caption=ATCCL EBNF Buchstaben und Zeichen,language=TeX]{atccl_letters_digits.txt}
   83.31 +Zusätzlich gibt es eine Produktionsregel für alle sichtbaren Zeichen, diese sind zulässige Eingaben innerhalb eines Kommentars oder einer Zeichenkettenkonstante.
   83.32 +
   83.33 +\subsubsection{Kommentare}
   83.34 +ATCCL unterstützt nur einen Typ von Kommentaren, den Zeilenkommentar.
   83.35 +
   83.36 +Ein Kommentar wird mit dem Zeichen \# eingeführt, zum Kommentar gehört der nachfolgende Text bis zum Ende der Zeile. Will man ein Kommentar über mehrere Zeilen setzen, so muss jede Kommentarzeile mit \# eingeleitet werden.\\\\
   83.37 +Kommentare werden vom Parser ignoriert und können alle unterstützen Zeichen enthalten.\\
   83.38 +\lstinputlisting[label=ATCCL EBNF Kommentare,caption=ATCCL EBNF Kommentare,language=TeX]{atccl_comments.txt}
   83.39 +
   83.40 +\subsubsection{Terminatoren}
   83.41 +ATCCL ist frei von Terminatoren jeglicher Art. Es muss kein besonderes Zeichen -- bei vielen Sprachen ist es ein Semikolon, bei Prolog ein Punkt und bei Python das Zeilenende -- zur Terminierung einer Anweisung gesetzt werden. Die Sprache verzichtet dadurch auf ein weiteres syntaktisches Element zur Vereinfachung und Bereinigung der Syntax.\\\\
   83.42 +Aufgrund der einfachen und abgeschlossenen Struktur der Regeldefinitionen wird eine differenzierte Fehlerdiagnose basierend auf der Klammersetzung erreicht.
   83.43 +
   83.44 +\subsubsection{Bezeichner}
   83.45 +Ein Bezeichner setzt den Identifizierungsnamen für eine Regeldefinition. Er kann sich aus beliebigen Buchstaben und Ziffern zusammensetzen und das Unterstrichsymbol beinhalten, solange er mit einem Buchstaben beginnt.\\
   83.46 +\lstinputlisting[label=ATCCL EBNF Bezeichner,caption=ATCCL EBNF Bezeichner,language=TeX]{atccl_ids.txt}
   83.47 +
   83.48 +\subsubsection{Schlüsselwörter}
   83.49 +Schlüsselwörter werden in ATCCL zur Festlegung von Regeldefinitionstypen und für die Operatoren verwendet. Zusätzlich gibt es eine Reihe von Schlüsselwörter, welche die Einträge eines Flugplans bezeichnen.
   83.50 +
   83.51 +Folgende Schlüsselwörter sind reserviert und dürfen nicht als Regeldefinitionsbezeichner genutzt werden.\\
   83.52 +\lstinputlisting[label=ATCCL EBNF Schluesselwoerter,caption=ATCCL EBNF Schluesselwoerter,language=TeX]{atccl_keywords.txt}
   83.53 +Die SI-Typen zur Zeitangabe, \emph{s} für Sekunde und \emph{min} für Minute, sind Schlüsselwörter in der ATCCL-Syntax, diese sind jedoch nicht auf globaler Ebene reserviert und werden nur innerhalb einer Constraint-Regeldefinition genutzt.
   83.54 +
   83.55 +\subsubsection{Datentypen und Konstanten}
   83.56 +Zur erfolgreichen Modellierung der Flussdichtenbeschränkungen eines Fluginformationsgebiets müssen sowohl alle Einträge eines Flugplans als auch Zeitangaben von der Sprache unterstützt werden.
   83.57 +
   83.58 +Die Flugplaneinträge sind in sechs verschiedenen Datentypen erfasst. Als Grundtypen gelten einzelne Zeichen, zusammengesetzte Zeichenketten (Wörter) und die natürlichen Zahlen. Für jeden Grundtyp gibt es die Möglichkeit mehrere Werte in einer Liste zusammenzufassen.\\\\
   83.59 +Zur Festlegung von Separationsregeln ist es notwendig Zeitangaben sowohl in Minuten und in seltenen Fällen sekundengenau zu definieren. Um Regeln bestimmten Uhrzeiten zuzuweisen, ist es notwendig, minutengenau die Tageszeit festzulegen.\\\\
   83.60 +ATCCL kennt folgende Datentypen:
   83.61 +\begin{itemize}
   83.62 +\item Zeichenkette (String)
   83.63 +\item Natürliche Zahl (Integer)
   83.64 +\item Zeichenkettenliste 
   83.65 +\item Liste von natürlichen Zahlen
   83.66 +\end{itemize}
   83.67 +\lstinputlisting[label=ATCCL EBNF Datentypen,caption=ATCCL EBNF Datentypen,language=TeX]{atccl_datatypes.txt}
   83.68 +Die Sprache kommt mit nur zwei Basisdatentypen aus und sie erlaubt zudem noch die Zusammenfassung mehrerer Konstanten in einer Liste. Eine Liste wird durch eckige Klammern gekennzeichnet, wobei die einzelnen Element mit Kommata separiert sind.\\\\
   83.69 +Zu bemerken sind der fehlende Datentyp zur Uhrzeitbestimmung und eine ungewöhnliche Variante von natürlichen Zahlen, wobei eine Zahl mit einer Null beginnen darf. Beide Besonderheiten hängen zusammen: indem vorgeschaltete Nullen bei dem Integer-Datentyp zugelassen werden, kann man auf einen dedizierten Datentyp für die Uhrzeit verzichten und akzeptiert somit die direkte Eingabe im HHMM-Format. Dieses Format ist in der Flugsicherung geläufig und wird auch in den Flugplänen und anderen Flugsicherungssystem so erfasst.\\\\
   83.70 +Alle im Code verwendeten Konstanten müssen von einem der definierten Datentypen sein.
   83.71 +
   83.72 +\subsubsection{Flugplaneigenschaften}
   83.73 +Alle für das System relevanten Einträge eines Flugplans -- auch Flugplaneigenschaften genannt -- sind in ATCCL als Schlüsselwörter reserviert und mit einem festen Datentyp versehen.
   83.74 +
   83.75 +Um auf Eigenschaften zu operieren, werden diese entsprechend ihrem Datentyp in eine Produktion zusammengefasst.\\
   83.76 +\lstinputlisting[label=ATCCL EBNF Flugplaneigenschaften,caption=ATCCL EBNF Flugplaneigenschaften,language=TeX]{atccl_properties.txt}
   83.77 +Eine Besonderheit stellt das Property EQUIP dar. In der EBNF-Spezifizierung ist es als Zeichenliste definiert. Bei der weiterführenden Verarbeitung wird trotzdem auf den Datentyp Zeichenkette (String) zurückgegriffen, dadurch werden spezielle Operationen auf dieser Eigenschaft möglich.\\\\
   83.78 +Das Navigationsausrüstungsfeld (Navigational Equipment) eines Flugplans ist eine Aneinanderreihung von Buchstaben, wobei jeder Buchstabe für eine fest definierte Navigationsausrüstung steht. Es ist üblich, die einzelnen Buchstaben ohne Trennungszeichen aneinanderzureihen, was dem Basisdatentyp Zeichenkette entspricht. Gleichzeitig gilt diese besondere Zeichenkette als eine Liste von Zeichen, damit auch Teilmengenoperatoren darauf angewendet werden können.
   83.79 +
   83.80 +\subsubsection{Operatoren}
   83.81 +Nach der Definition der Datentypen und der Zuweisung der Flugplaneigenschaften zu dem jeweiligen Datentyp folgt die Spezifizierung der Operationen auf den Konstanten und Flugplaneigenschaften.\\\\
   83.82 +Alle Operationen werden mit Hilfe von Operatoren definiert. Eine Operation ist in der Regel ein Tupel von Operator, einer Flugplaneigenschaft und mindestens einer Konstanten.\\
   83.83 +\lstinputlisting[label=ATCCL EBNF Operatoren,caption=ATCCL EBNF Operatoren,language=TeX]{atccl_operators.txt}
   83.84 +
   83.85 +\subsubsection{Regeldefinitionen}
   83.86 +Ein ATCCL-Programm besteht aus Regeldefinitionen. Es gibt drei Typen von Regeldefinitionen: 
   83.87 +\begin{itemize}
   83.88 +\item Flugplanmuster
   83.89 +\item Separationsregel
   83.90 +\item Flow-Point
   83.91 +\end{itemize}
   83.92 +Ein Flugplanmuster definiert eine Regel, die bestimmte Flugplaneigenschaften prüft. Diese Regel setzt sich aus booleschen Termen zusammen und bedient sich dabei den Operatoren, Properties und Konstanten.\\
   83.93 +\lstinputlisting[label=ATCCL EBNF Flugplanmuster,caption=ATCCL EBNF Flugplanmuster,language=TeX]{atccl_patterns.txt}
   83.94 +Eine Separationsregel (Constraint) dient zur Festlegung der Separation an einem, oder mehreren Wegpunkten.\\\\
   83.95 +Zum erfolgreichen Durchsetzen einer Flussdichtenregelung reicht eine zeitliche Staffelung, denkbar sind jedoch auch Abstandsseparationen und das setzen von durchschnittlichen Durchflussdichten verteilt auf eine Zeitspanne. Bei Fertigstellung dieser Arbeit wurde nur die zeitliche Staffelung unterstützt.\\\\
   83.96 +Die Separation kann in Minuten und Sekunden festgelegt werden, kann einen oder eine Liste von Wegpunkten betreffen und kann zeitabhängig sein.\\
   83.97 +\lstinputlisting[label=ATCCL EBNF Separationsregeln,caption=ATCCL EBNF Separationsregeln,language=TeX]{atccl_constraints.txt}
   83.98 +Der Flow-Point definiert eine Zuweisung von Flugplanmuster auf eine Separationsregel. Ein Flow-Point ist somit nicht an einen geographischen Wegpunkt gebunden. Diese Abbildung wird von der Abflugplanungskomponente zur Zuweisung von Flow-Points zu Flugplänen genutzt, worauf die Kalkulation des optimalen Abflugzeitpunkts basiert.\\
   83.99 +\lstinputlisting[label=ATCCL EBNF Flow Point,caption=ATCCL EBNF Flow Point,language=TeX]{atccl_flowpoints.txt}
  83.100 +Zur Verdeutlichung: die erste id dient zur Vergabe des Flow-Point-Namen, die zweite zur Identifizierung des Pattern und die dritte zur Zuweisung des Constraint. Dabei spielt die Lokalität der Pattern- und Constraint-Definition innerhalb der Konfigurationsdatei keine Rolle, diese müssen also nicht der Flow-Point-Definition voranstellen.
  83.101 +
  83.102 +\subsubsection{Programm}
  83.103 +Ein ATCCL-Programm ist eine Konfiguration, welche sich aus einer Reihe von Regeldefinitionen zusammensetzt.\\
  83.104 +\lstinputlisting[label=ATCCL EBNF Konfiguration,caption=ATCCL EBNF Konfiguration,language=TeX]{atccl_config.txt}
  83.105 +
  83.106 +\subsection{Beispiele}
  83.107 +Anhand von repräsentativen Beispielen werden nun mögliche Einsätze der ATCCL vorgeführt.
  83.108 +
  83.109 +\subsubsection{Zielstellung}
  83.110 +Es soll eine zeitliche Mindestseparationsbeschränkung von 5 Minuten an Wegpunkt \emph{COPPI} gesetzt werden. Die Beschränkung soll für alle Flüge gelten, die vom \emph{Dubai International Airport} starten und den Frankfurter Flughafen als Ziel haben. Der ICAO-Code für den Flughafen Frankfurt-Main ist \emph{EDDF} und für den Flughafen Dubai \emph{OMDB}.
  83.111 +
  83.112 +\subsubsection{Code}
  83.113 +\lstinputlisting[label=ATCCL Einfaches Beispiel,caption=ATCCL Einfaches Beispiel,language=TeX]{atccl_example1.txt}
  83.114 +
  83.115 +\subsubsection{Bemerkungen}
  83.116 +Der obige Code definiert einen Flow Point mit dem Namen \emph{DBCoppiDF}. Die Beschränkung auf diesem Flow Point, ist eine zeitliche Separation auf dem Wegpunkt \emph{COPPI}, dies ist in dem Constraint \emph{Coppi5} definiert. Die Bestimmung der Flugpläne, die dem Flow Point \emph{DBCoppiDF} zugeordnet werden, wird durch das Pattern \emph{DBCoppiDF} realisiert. Wie man sieht, ist die Namensauflösung nicht global, sondern basiert auf den drei Regeldefinitionstypen. So ist die mehrfache Vergabe eines Namens für mehrere Pattern-Definitionen nicht zulässig. Die Definition eines Patterns und eines Constraints mit gleichem Namen ist dagegen erlaubt.
  83.117 +
  83.118 +\subsubsection{Zielstellung}
  83.119 +Ein weiteres Beispiel soll eine komplexe Regel realisieren. Es sollen folgende zeitliche Mindestseparationsbeschränkungen in Abhängigkeit der Uhrzeit gewährleistet werden:
  83.120 +\begin{enumerate}
  83.121 +\item 0:00 bis 6:00 Uhr: 5 Minuten, freigeschaltete Flugflächen sind 300, 320, 340
  83.122 +\item 6:01 bis 12:00 Uhr: 3 Minuten, freigeschaltete Flugflächen sind 300, 320
  83.123 +\item 12:01 bis 22:00 Uhr: 130 Sekunden, keine Höhenstaffelung
  83.124 +\end{enumerate}
  83.125 +Wie im ersten Beispiel gilt der Flow Point für alle Flüge, die von Dubai nach Frankfurt unterwegs sind. Die Separation soll dieses mal jedoch an dem Wegpunkt \emph{COPPI} oder \mbox{\emph{BALUS}} durchgeführt werden, abhängig davon welcher der beiden Wegpunkte in der jeweiligen Flugroute liegt.
  83.126 +
  83.127 +\subsubsection{Code}
  83.128 +\lstinputlisting[label=ATCCL Komplexes Beispiel,caption=ATCCL Komplexes Beispiel,language=TeX]{atccl_example2.txt}
  83.129 +
  83.130 +\subsubsection{Bemerkungen}
  83.131 +Der Flow Point \emph{Example2} realisiert alle Anforderungen aus der Zielstellung. Es ist ersichtlich, dass für den Zeitraum von 22:01 Uhr bis 23:59 keine Separation definiert wird, in dieser Zeit gilt keine Beschränkung auf dem Flow Point. Liegen beide Wegpunkte in der Route, so wird lediglich auf einem Wegpunkt gestaffelt. Die Sprache macht keine Aussagen darüber, welcher Wegpunkt in so einem Fall gewählt wird.\\\\
  83.132 +Diese Beispiele sollen keine realistischen Gegebenheiten realisieren und dienen somit ausschließlich der Beschreibung der möglichen Anwendungen der Sprache. Im letzten Beispiel tritt durch die Wegpunkte eine Uneindeutigkeit für die Wegpunktwahl zur Staffelung auf, da die Wegpunkte \emph{BALUS} und \emph{COPPI} sich oft in einer Route befinden. Die Konfigurationen der realen Luftraumbeschränkungen sind im Gegensatz dazu eindeutig gewählt.
  83.133 +
  83.134 +\subsection{Compiler}
  83.135 +Der Übersetzer soll eine ATCCL-Konfiguration in C++-Strukturen überführen. Die entstandene Objektdatenbank wird die Eingabe für die virtuelle Maschine darstellen, auf der alle Laufzeitoperationen stattfinden.\\\\
  83.136 +Vor der Überführung in den Bytecode wird der Syntaxbaum erstellt, dabei gilt es die Konfiguration auf Fehler zu überprüfen. Der Compiler besteht somit aus einem Analysemodul und einem Synthesemodul. Die Analysephase beinhaltet die lexikalische Analyse gefolgt von der Syntaxanalyse.
  83.137 +\begin{figure}[h]
  83.138 +\centering \includegraphics[width=220pt]{images/compile_process.pdf}
  83.139 +\caption{Der Übersetzungsprozess}
  83.140 +\label{fig:compile_process}
  83.141 +\end{figure}
  83.142 +
  83.143 +\subsubsection{Scanner}
  83.144 +Das Modul der lexikalischen Analyse -- auch Scanner genannt -- erstellt aus dem ATCCL-Code eine Token-Codierung. Der Quellcode wird hierbei auf definierte Token untersucht, die Token dienen als Eingabe für die Syntaxanalyse.\\\\
  83.145 +\texttt{GNU flex} bietet eine effektive Möglichkeit lexikalische Scanner zu generieren. Die Basis des Scanners ist eine \texttt{flex}-spezifische Konfiguration zur Definition der Token. Die Konfiguration verwendet eine Syntax ähnlich den regulären Ausdrücken und ist in der Lage Produktionen für Untermengen von Zeichenketten zu erstellen, die bestimmte Entitäten einer Sprache darstellen. Anhand der Konfiguration erstellt \texttt{flex} C-Code für einen Scanner, welcher durch das Bereitstellen eines Interface mit einen \texttt{yacc}- oder \texttt{bison}-generierten Parser gekoppelt werden kann.
  83.146 +
  83.147 +\subsubsection{Parser}
  83.148 +Getrieben durch die Ausgabe des Scanners wird die Syntaxanalyse durchgeführt. Diese Aufgabe übernimmt im ATCCL-Framework der Parser.\\\\
  83.149 +Der Parser wird mit Hilfe von \texttt{bison - GNU Parser Generator} erstellt. Der Parser benötigt ähnlich wie der Scanner eine spezifische Konfiguration, diesmal analog zu der BNF/EBNF-Notation. \texttt{bison} generiert ebenfalls C-Code, basierend auf der \texttt{bison}-Konfigurations"-datei und der Header-Datei des \texttt{flex}-generierten Scanners.\\\\
  83.150 +Das Resultat ist ein Syntaxbaum und eine Symboltabelle der ATCCL-Konfiguration. Der Baum hält die Struktur des Codes fest, während die Symboltabelle Tupel mit Regelsymbol, Regeltyp und Regelreferenz hält. Die semantische Prüfung erlaubt die Analyse von Zusammenhängen zwischen den Elementen eines Programms. Die Prüfung meldet u.a. die Verwendung unerlaubter Kombinationen von Datentyp und Operator und falsche Typenwahl bei Konstanten. 
  83.151 +
  83.152 +\subsubsection{Synthese}
  83.153 +Nach Abschluss der Analysephase erfolgt die Synthese. Anhand der Symboltabelle werden alle Symbole in dem Syntaxbaum aufgelöst. Das Resultat sind vollständige Regeldefinitionen, die im nächsten Schritt in C++-Objekte transformiert werden.\\\\
  83.154 +Die Basis der Objektinstanziierung sollen \emph{Factory}-Klassen nach \cite{design_patterns} bilden. Die \texttt{Term"-Factory} wird die Instanzen der Regelterme realisieren. Durch ein Klassen-Template soll der Datentyp abstrahiert und dadurch eine generische Lösung für alle Fälle bereitgestellt werden. Gleiches gilt für die \texttt{OperatorFactor}. Diese soll je nach Datentyp einen passenden Operator instantiieren.\\\\
  83.155 +Durch die semantisch korrekte Verknüpfung der einzelnen Terme entstehen die Regeldefinitionen. Die Regelobjekte werden in einer semantischen Datenbank zusammengefasst und beinhalten zu diesem Zeitpunkt alle Konstanten und die Entscheidungsbäume zur Regelauswertung. Die semantische Datenbank -- auch \texttt{SemanticTree} genannt -- dient als Eingabe und Basis aller Transformationen für die virtuelle Maschine. Sie beinhaltet:
  83.156 +\begin{itemize}
  83.157 +\item \texttt{Pattern}-Regelinstanzen
  83.158 +\item \texttt{Constraint}-Regelinstanzen
  83.159 +\item \texttt{Flowpoint}-Mappings
  83.160 +\end{itemize}
  83.161 +Die \texttt{SemanticTree}-Datenstruktur bietet zusätzlich verschiedene Zugriffsmöglichkeit auf die Regeln und Mappings, u.a. nach der, in der Konfiguration, vergebenen id, also den Namen bzw. Symbol der Regeldefinition. 
  83.162 +
  83.163 +\subsection{Virtuelle Maschine}
  83.164 +Die virtuelle Maschine bietet eine API\footnote{Application Programmable Interface -- eine Programmierschnittstelle zur Bereitstellung von Softwarefunktionen und zur Integration mit anderen Softwaremodulen} mit folgenden Merkmalen an:
  83.165 +\begin{itemize}
  83.166 +\item \textbf{Evaluierung von Flugplan nach Flugplanmuster}\\
  83.167 +Eingangsparameter: \emph{Pattern}, \emph{FlightPlan} (siehe Abschnitt \ref{design:flight_plan})\\
  83.168 +Ausgangswert: \emph{Boolean}, \emph{true} falls das Muster für den Flugplan gültig ist, sonst \emph{false}
  83.169 +
  83.170 +\item \textbf{Zuordnung von Flow-Points zu Flugplan}\\
  83.171 +Eingangsparameter: \emph{FlightPlan}\\
  83.172 +Ausgangswert: \emph{FlowpointCollection}, eine Liste von \emph{Flowpoint}-Referenzen, denen der Flugplan zugeordnet wird
  83.173 +
  83.174 +\item \textbf{Durchsetzung einer Separationsregel zwischen zwei Flugplänen}\\
  83.175 +Eingangsparameter: \emph{FlightPlan 1}, \emph{FlightPlan 2}, \emph{Constraint}\\
  83.176 +Ausgangswert: \emph{FlightPlan}, dessen Abflugzeit entsprechend des \emph{Constraint} angepasst wurde, um keine Luftbeschränkungen zu verletzen
  83.177 +\end{itemize}
  83.178 +Alle Operationen basieren auf den übergebenen Flugplänen und der semantischen Datenbank, die vom Compiler geliefert wird (Abb. \ref{fig:virtual_machine_basic}). Eine detaillierte Beschreibung zu der Evaluation von Flugplanmuster und der Bestimmung von optimalen Abflugzeiten befindet sich in den Abschnitten \ref{design:pattern_evaluation} und \ref{design:atot_calculation}.\\
  83.179 +\begin{figure}[h]
  83.180 +\centering \includegraphics[width=300pt]{images/virtual_machine_basic.pdf}
  83.181 +\caption{ATCCL \texttt{VirtualMachine}}
  83.182 +\label{fig:virtual_machine_basic}
  83.183 +\end{figure}
  83.184 +
  83.185 +\subsubsection{FlightPlan-Interface}
  83.186 +\label{design:flight_plan}
  83.187 +Die ATCCL-API steht in Abhängigkeit zum \texttt{FlightPlan}-Interface. Die Entscheidung über die Schnittstelle zum Flugplan war essentiell und deshalb nicht einfach. Dabei galt es möglichst hohe Sicherheit bei Laufzeit zu garantieren, ohne die Nutzung und das Testen der API unnötig kompliziert zu machen.\\\\
  83.188 +Zur Auswahl standen ein \texttt{StorageBinder}, der dynamisch zur Laufzeit Objekte vom Typ \texttt{Storage} binden und den internen Prozeduren in der \texttt{VirtualMachine} bereitstellen kann. Der Vorteil dieses Systems wäre der niedrige Wartungsaufwand bei Änderungen in den Flugplaneigenschaften. Bestandteile eines Flugplans, die für ein Projekt nicht relevant sind, könnten ignoriert werden. Der Nachteil ist die hohe Fehleranfälligkeit seitens des Benutzers. Sobald ein Benutzer nicht alle notwendigen Strukturen in den \texttt{StorageBinder} übergibt, fehlen der virtuellen Maschine möglicherweise \texttt{Properties}, die es zur Verarbeitung benötigt. Die Fehlerbehandlung muss bei Laufzeit geschehen und erhöht dadurch die Fehleranfälligkeit des Systems.\\\\
  83.189 +Zur Vorbeugung vor Bedienungsfehler wird ein monolithisches Interface verwendet, das \emph{Zugriffsmethoden} zu allen Flugplaneigenschaften deklariert, siehe Anhang \ref{uml:flight_plan_interface}. Der Vorteil dieses Designs bietet eine vollständige Kontrolle über die Implementierung bei \emph{Über"-setzungszeit}. Der Nachteil liegt in der Test- und Wartbarkeit der Klasse. Zum Testen muss hierfür auf eine \emph{Dummy}\footnote{Ein Objekt, das ein Interface mit statischen Rückgabewerten und Verhalten implementiert}-Implementierung oder ein \emph{Mock-Object}\footnote{Ein Objekt, das ein Interface mit zur Laufzeit bestimmten Werten und Verhalten implementiert} zurückgegriffen werden. Sobald eine Änderung des Interface erfolgt, muss jeder Nutzer dieser Bibliothek Anpassungen vornehmen.\\\\
  83.190 +Um dem Letzteren entgegenzuwirken, wurde das Interface außerhalb des ATCCL-Frame"-works, in der sog. \texttt{stdbase}-Bibliothek abgelegt. Zusätzlich wurde eine \texttt{DMAP}-spezifische Implementierung in der \texttt{DMAP}-Bibliothek erstellt. Dies bedeutet, dass ein Benutzer des ATCCL-Frameworks nicht selbständig das Interface zu realisieren hat, sondern auf die \texttt{DMAP}-spezifische Version zurückgreifen kann. Gleichzeitig bleibt das ATCCL-Framework unabhängig von externen Bibliotheken. Eine Ausnahme bildet die Abhängigkeit von \texttt{stdbase}, wobei diese bereits bestand und wünschenswert ist.\\\\
  83.191 +Flugsicherungssysteme und insbesondere deren Standards erfahren eine sehr langsame Evolution. So wurde die Spezifikation des aktuellen Flugplanstandards bereits vor mehrere Dekaden verabschieden. In den kommenden Jahren wird jedoch ein neuer Standard eingeführt, somit sind die Überlegungen zur effektiven Anpassung der Schnittstelle berechtigt.
  83.192 +
  83.193 +\subsection{Compilerprototyp}
  83.194 +Als Abschluss der Entwurfsphase des ATCCL-Frameworks und Einleitung der Implementierung wurde ein Prototyp für den Übersetzer entwickelt. Anhand eines Beispiels sollte die Realisierbarkeit des Entwurfs bestätigt werden, besonderes Augenmerk galt dabei der erfolgreichen Integration der externen Werkzeuge wie \texttt{flex} und \texttt{bison} in den Compiler-Baustein.\\\\
  83.195 +Die drei Phasen des Compilers wurden inkrementell entwickelt und auf Funktionalität und Fehleranfälligkeit getestet. Bei diesem Vorgehen wurde eine alternative Compiler-Architektur verwendet, als in der finalen Version des Prototyps. Zur Steigerung der Flexibilität der Tests wurde ein Interpreter entwickelt, welcher eine dynamischere Eingabe erlaubte als es mit statischen Konfigurationsdateien möglich gewesen wäre.\\\\
  83.196 +Mit Hilfe des Interpreters konnte gut mit den Werkzeugen experimentiert werden. Es war ohne großen Aufwand möglich, die Syntax zu erweitern oder zu verändern. Durch das unmittelbare Feedback wurden so die letzten Zweifel beseitigt.\\\\
  83.197 +Gerade der Verzicht auf unnötige Syntaxelemente, wie z.B. den Terminatoren, hob die Komplexität der Fehlerfindung und Fehlerbehandlung an. Sollen in einem Übersetzungs"-durchgang möglichst viele -- im Idealfall alle -- Fehler einer ATCCL-Konfiguration diagnostiziert werden, so muss eine differenzierte Fehlerbehandlung implementiert werden. Der Compiler muss in der Lage sein, eine Fehlerquelle genau zu lokalisieren, den Fehlerraum von der Bearbeitung ausschließen und die Zustandsmaschine in den letzten korrekten Zustand versetzen.\\\\
  83.198 +Terminatoren sind bei vielen Sprachen gut dafür geeignet solche Fehlerräume abzugrenzen, dadurch wird durch einen Fehler maximal eine Anweisung invalidiert. Durch das Entfernen der fehlerhaften Anweisung kann das restliche Programm übersetzt werden, mögliche Folgefehler sind meist trivial zu lösen. Im Falle der ATCCL-Syntax boten sich die runden Klammern zur Abgrenzung der Fehlerräume an. Alle ATCCL-Regeln enden mit einer solchen Klammer, somit ist im trivialen Fall ein Fehler dadurch auf eine Regel isoliert.\\\\
  83.199 +Die Nachteile dieser Fehlerbehandlungsmethode sind:
  83.200 +\begin{itemize}
  83.201 +\item bei einfachen Regeln\\
  83.202 +Es wird maximal ein Fehler pro einfacher Regel berichtet.
  83.203 +\item bei komplexen Regeln\\
  83.204 +Ein Fehler kann propagieren, es werden Folgefehler für die Regel berichtet.
  83.205 +\end{itemize}
  83.206 +Die Unterscheidung zwischen einfachen und komplexen Regeln besteht in dem Vorhandensein von Klammern innerhalb einer Regeldefinition, die dazu genutzt werden um Prioritäten der Auswertung von booleschen Termen festzulegen. Einfache Regeln haben keine Klammersetzung innerhalb der Regeldefinition.
  83.207 +
  83.208 +\subsection{Evaluation von Flugplanmustern}
  83.209 +\label{design:pattern_evaluation}
  83.210 +Die virtuelle Maschine des ATCCL-Frameworks soll in der Lage sein die Gültigkeit eines Musters anhand von Flugplandaten zu bestimmen. Die virtuelle Maschine initiiert die Evaluation des Musters durch die Weiterleitung des Flugplans an die \texttt{evaluate}-Methode der entsprechenden \texttt{Pattern}-Referenz.
  83.211 +
  83.212 +\subsubsection{Beispiel}
  83.213 +Es sei folgendes Flugplanmuster definiert:\\
  83.214 +\lstinputlisting[label=ATCCL Pattern-Beispiel,caption=ATCCL Pattern-Beispiel,language=TeX]{pattern_example1.txt}
  83.215 +Das Muster definiert die Menge aller Flüge, die in Dubai starten (\emph{Aerodrome of Departure} ist \emph{OMDB}) und entweder eine schnellere Geschwindigkeit als 200 kn erreichen (\emph{True Airspeed} ist größer als 200) oder der Wegpunkt \emph{BALUS} ist in der Flugplanroute enthalten.\\\\
  83.216 +Die Synthese übersetzt diese Konfiguration in eine Baumstruktur mit zwei Booleschen Termen repräsentativ für die beiden Booleschen Verknüpfungen und sechs Blattknoten, jeweils paarweise eine Konstante und eine Flugplaneigenschaft. Die Operatoren sind für die Aktionen der Terms zuständig, in diesem Beispiel realisieren diese eine Und-Verknüpfung, eine Oder-Verknüpfung, einen Äquivalenztest, einen numerischen Vergleich und eine Teilmengenrelation. Der genaue Schrittabfolge der Auswertung eines solchen Flugplanmusters wird anhand eines Beispiels erläutert.\\\\
  83.217 +Die folgenden Schritte beschreiben die Stationen des Algorithmus, Abb. \ref{fig:pattern_evaluation1} visualisiert den Pattern-Baum und die Schrittabfolge:
  83.218 +\begin{enumerate}
  83.219 +\item[0.] Per \texttt{evaluate}-Methode wird ein Flugplan an den Wurzelknoten übergeben. Die Flugplaneigenschaften seien wie folgt: ADES: OMDB, TAS: 280, ROUTE: DESDI TARDI RASKI.
  83.220 +\item Der \texttt{evaluate}-Aufruf propagiert bis zum ersten Blattknoten.
  83.221 +\item Das \emph{True Airspeed}-Attribut wird aus dem Flugplan extrahiert und an den Operator zurück"-gegeben. \emph{Wert: 280}.
  83.222 +\item Der Wert der Konstante wird an den Operator zurückgegeben. \emph{Wert: 200}.
  83.223 +\item Der Operator führt den Vergleich \emph{280 \textgreater 200} aus. Die \texttt{evaluate}-Methode terminiert mit dem \emph{Rückgabewert: true}.
  83.224 +\item Der Wert der \texttt{evaluation}-Rückgabe wird an den Oder-Operator zurückgegeben.
  83.225 +\item Der Oder-Operator wertet den Ausdruck \emph{true $\vee$ ?} aus. Die Auswertung des rechten Terms ist dadurch unnötig. \emph{Rückgabewert ist true}.
  83.226 +\item Der Rückgabewert aus 6 propagiert zurück zur Wurzel.
  83.227 +\item Zum Auswerten des Wurzelausdrucks \emph{true $\wedge$ ?} ist die Auswertung des rechten Terms nötig.
  83.228 +\item Das \emph{Aerodrome of Departure}-Attribut wird aus dem Flugplan extrahiert und zurück"-ge"-ge"-ben. \emph{Wert: OMDB}.
  83.229 +\item Der Wert der Konstante wird zurückgegeben. \emph{Wert: OMDB}
  83.230 +\item Der Operator führt den Äquivalenzvergleich \emph{OMDB $=$ OMDB} aus mit dem \emph{Ergebnis true}.
  83.231 +\item Das Ergebnis des Äquivalenzvergleichs wird zurück propagiert.
  83.232 +\item Der Operator evaluiert den Booleschen Ausdruck \emph{true $\wedge$ true} mit dem \emph{Ergebnis true} aus. Die Auswertung terminiert, der \texttt{evaluate}-Methodenaufruf gibt \emph{true} zurück.
  83.233 +\end{enumerate}
  83.234 +\begin{figure}[h]
  83.235 +\centering \includegraphics[width=280pt]{images/pattern_evaluation.pdf}
  83.236 +\caption{ATCCL \texttt{Pattern}-Evaluation-Beispiel}
  83.237 +\label{fig:pattern_evaluation1}
  83.238 +\end{figure}
  83.239 +
  83.240 +%\begin{table}
  83.241 +%\begin{center}
  83.242 +%\begin{tabular}{cl}
  83.243 +%\toprule
  83.244 +%\textbf{Schritt} 	& \textbf{Aktion} \\
  83.245 +%\midrule
  83.246 +%0	& Per \texttt{evaluate}-Methode wird ein Flugplan an den\\
  83.247 +%	& Wurzelknoten übergeben. Die Flugplaneigenschaften seien wie folgt:\\ 
  83.248 +%	& ADES: OMDB, TAS: 280, ROUTE: DESDI TARDI RASKI.\\
  83.249 +%1	& Der \texttt{evaluate}-Aufruf propagiert bis zum ersten Blattknoten.\\ 
  83.250 +%2	& Das \emph{True Airspeed}-Attribut wird aus dem Flugplan\\
  83.251 +%	& extrahiert und an den Operator zurückgegeben. \emph{Wert: 280}.\\ 
  83.252 +%3	& Der Wert der Konstante wird an den Operator zurückgegeben.\\
  83.253 +%	& \emph{Wert: 200}.\\ 
  83.254 +%4	& Der Operator führt den Vergleich \emph{280 \textgreater 200}\\
  83.255 +%	& aus. Die \texttt{evaluate}-Methode terminiert mit dem\\
  83.256 +%	& \emph{Rückgabewert: true}.\\
  83.257 +%5	& Der Wert der \texttt{evaluation}-Rückgabe wird an den\\
  83.258 +%	& Oder-Operator zurückgegeben.\\ 
  83.259 +%6	& Der Oder-Operator wertet den Ausdruck \emph{true $\vee$ ?} aus.\\
  83.260 +%	& Die Auswertung des rechten Terms ist dadurch unnötig.\\
  83.261 +%	& \emph{Rückgabewert ist true}.\\
  83.262 +%7	& Der Rückgabewert aus 6 propagiert zurück zur Wurzel.\\ 
  83.263 +%8	& Zum Auswerten des Wurzelausdrucks \emph{true $\wedge$ ?} ist \\
  83.264 +%	& die Auswertung des rechten Terms nötig.\\
  83.265 +%9	& Das \emph{Aerodrome of Departure}-Attribut wird aus dem\\
  83.266 +%	& Flugplan extrahiert und zurückgegeben. \emph{Wert: OMDB}.\\ 
  83.267 +%10	& Der Wert der Konstante wird zurückgegeben. \emph{Wert: OMDB}\\ 
  83.268 +%11	& Der Operator führt den Äquivalenzvergleich \emph{OMDB $=$ OMDB}\\
  83.269 +%	& aus mit dem \emph{Ergebnis true}.\\
  83.270 +%12	& Das Ergebnis des Äquivalenzvergleichs wird zurück propagiert.\\
  83.271 +%13	& Der Operator evaluiert den Booleschen Ausdruck\\
  83.272 +%	& \emph{true $\wedge$ true} mit dem \emph{Ergebnis true} aus.\\
  83.273 +%	& Die Auswertung terminiert, der \texttt{evaluate}-Methodenaufruf\\
  83.274 +%	& gibt \emph{true} zurück.\\
  83.275 +%\bottomrule
  83.276 +%\end{tabular}
  83.277 +%\caption{Schrittabfolge des ATCCL Pattern-Evaluation-Beispiel 1.}
  83.278 +%\label{tab:pattern_evaluation1}
  83.279 +%\end{center}
  83.280 +%\end{table}
  83.281 +
  83.282 +\subsection{Optimierung der Abflugzeit}
  83.283 +\label{design:atot_calculation}
  83.284 +In den folgenden Gleichungen werden Vergleichsrelationen auf Uhrzeiten angewandt, hierbei gilt stets: datiert ein Zeitpunkt $t1$ einen \emph{späteren} Zeitpunkt, unabhängig von der Tageszeit, als ein Zeitpunkt $t2$, so gilt: 
  83.285 +\[
  83.286 +t1 > t2
  83.287 +\]
  83.288 +Anders formuliert liegt $t1$ zum Zeitpunkt $t2$ in der Zukunft.\\\\
  83.289 +Die Optimierung der Abflugzeit bedeutet eine konfliktfreie Slot-Zuordnung an allen betreffenden Flow Points.\\
  83.290 +Sei $f$ ein Flow Point und $M$ die Menge aller Slot-Zeiten von $f$. Eine Slot-Zeit $t$ ist konfliktfrei für Separationszeit $s$, wenn gilt:
  83.291 +\[
  83.292 +\forall m \in M: |t - m| \geq s
  83.293 +\]
  83.294 +Wird die Optimierung angestoßen, findet die virtuelle Maschine die früheste Abflugzeit, sodass im nachfolgendem Routenverlauf kein Separationsregelverstoß auftritt.\\\\
  83.295 +Sei $K$ die Menge aller Abflugzeitenkandidaten. Eine Abflugzeit $d$ ist optimal für die früheste Abflugzeit $e$, wenn gilt:
  83.296 +\[
  83.297 +\forall k \in K: k \geq d \geq e
  83.298 +\]
  83.299 +Dabei ist ein Abflugzeitenkandidat eine Abflugzeit, durch die nur konfliktfreie Slot-Zeiten auf den Wegpunkten der Route folgen.\\\\
  83.300 +Zur Realisierung dieser Optimierung wurden verschiedene Entwürfe in Betracht gezogen, wobei eine kundenspezifische Beschränkung von einem Flow Point pro Flugplan gesetzt wurde. Der Entwurf sollte eine möglichst einfache und dadurch robuste Implementierung ermöglichen. Der Algorithmus wurde hierfür in möglichst kleinen Einheiten mit niedriger Komplexität modelliert.
  83.301 +
  83.302 +\subsubsection{Algorithmus}
  83.303 +Zur Bestimmung der optimalen Abflugzeiten in Abhängigkeit der geltenden Luftraumbeschränkungen und der frühest möglichen Abflugzeit, wurde ein Algorithmus entwickelt. Vor der Initiierung der Berechnung wird der DFLOW-Komponente die früheste Abflugzeit über"-geben. Die Flugpläne des betreffenden Flugplans und alle weiteren Flugpläne, die den gleichen Flow Point teilen, werden bereitgestellt. Die Route des Flugplans muss vor der Kalkulation durch die SID-Wegpunkt vervollständigt worden sein. Basierend auf der gesetzten frühesten Abflugzeit werden mit Hilfe von \texttt{CalcEstimates} die Überflugzeiten bestimmt, insbesondere auch die Überflugzeit des Wegpunkts an dem die Separation stattfinden soll, hier mit $flowtime$ referenziert. $flowtimes$ ist die Menge aller Wegpunktzeiten der anderen Flüge, die den Flow Point teilen. $separation$ hält den definierten Mindestseparationsabstand. Alle Zeiten sind fortlaufende natürliche Zahlen, wie z.B.  durch die \emph{POSIX Time}\footnote{Zeitangabe basierend auf der Anzahl an vergangenen Sekunden seit 1. Januar 1970 0:00 Uhr UTC -- UTC steht für Universal Time Coordinated und stellt die heute gültige Weltzeit dar}-Konvention gegeben.\\\\
  83.304 +Der folgende Pseudocode liefert eine Beschreibung des Algorithmus zur Bestimmung der konfliktfreien Flow Point-Zeit.\\
  83.305 +\begin{algorithm}
  83.306 +\floatname{algorithm}{Algorithmus}
  83.307 +\caption{$resolve(separation, flowtime, flowtimes) \rightarrow flowtime$}
  83.308 +\begin{algorithmic}
  83.309 +\STATE $t_s \gets separation$
  83.310 +\STATE $t_a \gets flowtime$
  83.311 +\STATE $t_b \gets invalid$
  83.312 +\WHILE{$t_a \neq t_b$}	
  83.313 +	\STATE $t_b \gets t_a$ 
  83.314 +	\FORALL{$t_f \in flowtimes$}
  83.315 +		\STATE $t_d \gets (t_a - t_f)$
  83.316 +		\IF{$|t_d| < t_s$}
  83.317 +			\STATE $t_a \gets (t_a + t_s - t_d)$
  83.318 +		\ENDIF
  83.319 +	\ENDFOR
  83.320 +\ENDWHILE
  83.321 +\RETURN $t_a$
  83.322 +\end{algorithmic}
  83.323 +\end{algorithm}\\
  83.324 +Nach der Terminierung wird die erhaltene Flow Point-Zeit zurück propagiert, um daraus die optimale Abflugzeit zu erhalten. Der Algorithmus ist auf die eindeutige Zuweisung von maximal einem Flow Point pro Flugplan beschränkt. Sollen mehrere Flow Points pro Flugplan erlaubt sein, so gilt es den gleichen Algorithmus iterativ auf die Menge aller gemeinsamen Flow Points anzuwenden. Der folgende Pseudocode ist ein Vorschlag, wie der Algorithmus 1 erweitert werden kann, um mehrere Flow Points pro Flugplan zu erlauben. $atot$ steht für die optimierte Abflugzeit, $flightplan$ ist ein Objekt mit den Eigenschaften früheste Abflugzeit ($etot$) und den zugeordneten Flow Points ($flowpoints$). Das Flow Point-Objekt hält Informationen zu der Flow Point-Überflugzeit ($flowtime$) und der definierten Separation ($separation$). Die Beschreibung soll nur die Idee des tatsächlichen Algorithmus erfassen, zur Vereinfachung wurde u.a. auf die Berücksichtigung der Tageszeit und die Höhenstaffelung verzichtet.\\
  83.325 +\begin{algorithm}
  83.326 +\floatname{algorithm}{Algorithmus}
  83.327 +\caption{$multresolve(flightplan, flightplans) \rightarrow atot$}
  83.328 +\begin{algorithmic}
  83.329 +\STATE $atot_a \gets flightplan.etot$
  83.330 +\STATE $atot_b \gets invalid$
  83.331 +\WHILE{$atot_a \neq atot_b$}	
  83.332 +	\STATE $atot_b \gets atot_a$
  83.333 +	\FORALL{$flowpoint \in flightplan.flowpoints$}
  83.334 +		\STATE $atot_d \gets (flowpoint.flowtime - atot_b)$
  83.335 +		\STATE $s \gets flowpoint.separation$
  83.336 +		\STATE $f \gets flowpoint.flowtime$
  83.337 +		\STATE $fs \gets flightplans.flowtimes(flowpoint)$
  83.338 +		\STATE $flowpoint.flowtime \gets resolve(s, f, fs)$
  83.339 +		\STATE $atot_b \gets flowpoint.flowtime - atot_d$
  83.340 +	\ENDFOR
  83.341 +\ENDWHILE
  83.342 +\RETURN $atot_a$
  83.343 +\end{algorithmic}
  83.344 +\end{algorithm}
  83.345 +
  83.346 +\subsubsection{Komplexität}
  83.347 +Die Entscheidung fiel auf ein iteratives Vorgehen, wobei pro Iteration alle beteiligten Flugpläne sequenziell zur Konfliktauflösung in Betracht gezogen werden. Eine Iteration besteht aus $n$ Schritten, wobei $n$ gleich der Anzahl der Flugpläne ist, welche die selben Flow Points belegen, die auch für den zu optimierenden Flugplan gelten. Schrittweise werden auftretende Konflikte zwischen zwei Flugplänen aufgelöst, solange die ermittelte optimale Abflugzeit am Anfang der Iteration ungleich der optimalen Abflugzeit am Ende einer Iteration ist.
  83.348 +
  83.349 +Ist dies der Fall, so terminiert der Algorithmus und man erhält die optimale Abflugzeit. Die obere Schranke der Laufzeitkomplexität für diesen Ansatz liegt bei $\mathcal{O}(n^{2})$, wobei $n$ die Anzahl der Flugpläne ist mit mindestens einem gemeinsamen Flow Point. Bei Konfliktfreiheit oder anderen günstigen Konfliktbedingungen gleicht das asymptotische Verhalten $\Omega(n)$, da nach einer Iteration bereits die Abbruchbedingung erfüllt ist.
  83.350 +
  83.351 +\subsubsection{Alternative}
  83.352 +Eine Alternative beinhaltet die Vorsortierung der Flugpläne nach Slot-Zeiten. Die Sortierung bereitet den Weg für eine Optimierung vor, bei der mit jedem Schritt der Suchraum halbiert werden kann. Man reduziert die betrachteten Flugpläne auf diejenigen, deren Slot-Zeiten in Konflikt oder in der Zukunft zur eigenen liegen. Das asymptotische Verhalten dieses Algorithmus liegt bei $\mathcal{O}(n^{2})$ bzw. $\Omega(n \log n)$ für das Sortieren unter Einsatz von \emph{Quicksort} und insgesamt bei $\mathcal{O}(n^2)$, da im ungünstigstem Fall $n$ Schritte notwendig sind um nach der Sortierung die optimale Zeit zu bestimmen. Im Durchschnitt läge die Komplexität bei $\Theta(n \log n)$.\\\\
  83.353 +Der alternative Ansatz bedeutet eine höhere Komplexität für die Implementierung, da zusätz"-lich das Sortieren zu realisiert ist. Standardalgorithmen wie das \texttt{std::sort} der Standardbibliothek von C++ kommen aufgrund der dynamischen Speicherallokierung nicht in Frage. Außerdem wird für den operativen Betrieb mit einem hohem Aufkommen von günstigen Bedingungen für den iterativen Algorithmus gerechnet, wodurch die Vorsortierung der Flugpläne nur eine Verschlechterung der Leistung bedeutet.
  83.354 +
  83.355 +\subsubsection{Höhenstaffelung}
  83.356 +Eine zusätzliche Komplexität bei der Bestimmung der optimalen Abflugzeit bestand in der Separation nach Flugflächen, siehe \ref{research:flight_level_separation}. ATCCL soll, wenn definiert, auf allen freigegebenen Flugflächen eines Flow Points separieren. Dieser Art der Staffelung soll eine höhere Priorität besitzen als die Längsstaffelung, siehe \ref{research:time_separation}.\\\\
  83.357 +Zur Realisierung dieses Verhaltens wird jede freigegebene Flugfläche für einen Flow Point getrennt behandelt. Besteht auf einer Flugfläche kein Konflikt, ausgehend von der frühesten Abflugzeit, so terminiert der Vorgang frühzeitig, weil das automatisch die optimale Abflugzeit darstellt. Findet kein frühzeitiger Abbruch statt, so wird nach der Ermittlung aller optimalen Zeiten die früheste Zeit mit der entsprechenden Flugfläche für den Flug reserviert.\\\\
  83.358 +Mit der Höhenstaffelung beträgt die Laufzeitkomplexität der Optimierung $\mathcal{O}(m*n^{2}) \rightarrow \mathcal{O}(n^{3})$, wobei $n$ für die Anzahl an Flugplänen und $m$ für die Anzahl an freigegebenen Flugflächen steht. Jedoch ist die Anzahl an möglichen Flugflächen sehr begrenzt. Für einen Flow Point -- der stets nur eine Flugrichtung realisiert -- kann z.B. FL 200 bis FL 600 in Abständen von FL 20 freigegeben sein, was ein $m = 20$ ergibt und als Maximalwert gesehen werden kann.
  83.359 +
  83.360 +\section{DFLOW}
  83.361 +Die DFLOW-Komponente soll als Teil des FDPS in die PRISMA-Architektur integriert werden. Die Komponente hat die Aufgabe, auf Anfragen zu reagieren, die Flugpläne mit Hilfe der virtuellen Maschine des ATCCL-Frameworks zu verarbeiten und die transformierten Flugpläne wieder in das System einzuspeisen. Die DFLOW-Komponente reagiert auf folgende Ereignisse:
  83.362 +\begin{itemize}
  83.363 +\item \textbf{Benutzeranfrage zur optimalen Abflugzeiten- und Flugflächenbestimmung}\\
  83.364 +Über das DFLOW-Display wird eine Anfrage zur Bestimmung der Abflugzeit erzeugt. Die Komponente registriert die Anfrage, bearbeitet sie und gibt die optimale Abflugzeit und Flugfläche in das System.
  83.365 +\item \textbf{Neuer Überflug registriert}\\
  83.366 +Wird ein noch nicht registrierter Überflug erkannt, wird dieser bearbeitet, um ihn bei folgenden Anfragen bei eventuell auftretenden Konflikten zu berücksichtigen.
  83.367 +\end{itemize}
  83.368 +Zur Realisierung dieser Logik und der Integration in PRISMA wurden u.a. PRISMA-Standard"-klassen verwendet. PRISMA folgt einem datengetriebenen Modell, die interne Daten"-über"-tragung findet über die DMAP statt.
  83.369 +
  83.370 +\subsection{DMAP-Interaktion}
  83.371 +PRISMA definiert Schnittstellen zur DMAP mit Hilfe von einer Reihe von Klassen. Es gibt u.a. eine Klasse, die den Lese- und Schreibzugriff auf die einzelnen Datensätze der DMAP bereitstellt. Eine weitere Klasse bietet Möglichkeiten an, auf Transaktionen bestimmter Datensätze zu reagieren.
  83.372 +
  83.373 +\subsubsection{Map}
  83.374 +Für jeden DMAP-Datensatz existiert als Schnittstelle zu den Transaktionen mit diesem Datensatz ein zugehöriges MAP-Interface. Mit Hilfe der MAP-Klasse lassen sich sog. Notify-Objekte als \emph{Observer}, siehe \cite{design_patterns},  registrieren. Weiter bietet die Klasse Zugriffs"-möglich"-keiten auf die Dateneinträge an. 
  83.375 +
  83.376 +\subsubsection{Notify}
  83.377 +Ein Notify-Objekt realisiert die Reaktionen auf Datensatztransaktionen. Mögliche Transaktionen sind:
  83.378 +\begin{itemize}
  83.379 +\item Einfügen eines neuen Eintrags
  83.380 +\item Ändern eines vorhandenen Eintrags
  83.381 +\item Löschen eines vorhandenen Eintrags
  83.382 +\end{itemize}  
  83.383 +Die Basis der Logik der datenverarbeitenden Module des PRISMA und insbesondere des FDPS basiert auf Notify-Objekten. Gänzlich entkoppelt von der Verarbeitungsoperationen der parallel laufenden Prozessen, wird mit dieser Architektur eine modulare und stabile Grundlagen für ein sicherheitskritischen System bereitgestellt.\\\\
  83.384 +Das DFLOW braucht zur Realisierung der Logik Zugriff auf folgende DMAP-Datensätze:
  83.385 +\begin{itemize}
  83.386 +\item \textbf{DFLOW}\\
  83.387 +Dieser Datensatz beinhaltet die DFLOW-spezifischen Einträge. Dazu gehört der sog. \emph{Slot State} -- der aktuelle Verarbeitungszustand des Eintrags. Weiterhin hält der Eintrag Daten über die Startbahn und die geltenden Flow Points. Als Zeiten sind der Zeitpunkt der Anfrage und die früheste und zugewiesene Abflugzeit Bestandteil eines Eintrags. Die DFLOW-Erweiterung der DMAP-Datensätze wird zum Zeitpunkt der Entwicklung bereitgestellt.
  83.388 +\item \textbf{FPATH}\\
  83.389 +Die \emph{Flight Path}-Datensätze halten Informationen über die Wegpunkte und deren veranschlagte Überflugzeiten. Diese Datensätze werden stets vom FDPS korrigiert um möglichst verlässliche Prognosen über den Flugverlauf der Luftfahrzeuge zu erlauben.
  83.390 +\item \textbf{SFPL}\\
  83.391 +Alle Datensätze halten für jeden Eintrag eine Referenznummer -- die SFPI -- zum dazugehörigen \emph{System Flight Plan} -- oder auch SFPL. Dadurch wird die Verbindung zwischen weiterführenden Informationen zum Flugplan gemacht. Der SFPL beinhaltet alle Details eines regulären Flugplans mit einigen systemspezifischen Zusatzinformationen.
  83.392 +\end{itemize}
  83.393 +Die oben genannten Datensätze bieten alle Informationen, die eine DFLOW-Verarbeitung eines Flugplans benötigt. Die Idee ist es möglichst effiziente Entscheidungen anhand von abgefangen Transaktionen der DMAP zu treffen, um dabei die Zugriffe auf die Datensätze zu reduzieren.
  83.394 +
  83.395 +\subsection{Verarbeitungslogik}
  83.396 +Die Aufgabe des DFLOW ist es, optimale Abflugzeiten in Abhängigkeit der betroffenen Flow Points und dem, dafür zugewiesenen, Flugverkehr zu bestimmen. Zur Bedienung der Komponente wird ein DFLOW-Display entwickelt, das nicht Bestandteil dieser Arbeit sein soll. 
  83.397 +
  83.398 +Das Display bietet dem Benutzer Möglichkeiten, Flugpläne zu selektieren, sie mit Zusatzinformationen wie der Startbahn und der frühesten Abflugzeit zu vervollständigen, und die Bestimmung der optimalen Abflugzeit anzufordern. Die Anfrage der optimalen Abflugzeit initiiert die Verarbeitungslogik, hierfür wird dem erzeugten DFLOW-Eintrag ein \texttt{REQUEST}-Flag gesetzt.
  83.399 +
  83.400 +\begin{enumerate}
  83.401 +\item \textbf{Ergänzung: SID-Wegpunkte}\\
  83.402 +Bevor die eigentliche Berechnung beginnen kann, müssen alle notwendigen Informationen bereitgestellt werden. Der erste Schritt ist die Ergänzung der Route um die SID-Wegpunkte, siehe \ref{grundlagen:routensystem}. Für alle internationalen Flughäfen gibt es fest definierte Routen, die in Abhängigkeit der Startbahn eine Verbindung zwischen den Startvektor und der Reiseroute herstellt.
  83.403 +
  83.404 +Im Falle DFLOW ist die vollständige Route essentiell für die Genauigkeit der Zeitenprognosen und somit ausschlaggebend für die Qualität der Optimierung.
  83.405 +
  83.406 +\item \textbf{Bestimmung: Flow Points}\\
  83.407 +Sobald die Vervollständigung der Route abgeschlossen ist, findet die erste Interaktion mit der virtuellen Maschine des ATCCL-Frameworks statt. Die virtuelle Maschine wird mit der Ermittlung aller Flow Points beauftragt, die für den betreffenden Flugplan gelten. Dazu gilt es, den Flugplan durch die Flugplanmuster der Flow Points zu evaluieren. Details dazu sind in Abschnitt \ref{design:pattern_evaluation} zu finden.
  83.408 +
  83.409 +\item \textbf{Laden: Flugpläne}\\
  83.410 +Sobald alle Flow Points bekannt sind, werden alle Einträge im DFLOW-Datensatz geladen, die den gleichen Flow Points zugewiesen sind. Bei Flow Point-Überschneidungen kann es zu Kollisionen in der Zeit-Slot-Vergabe führen, somit müssen alle betroffenen Flugpläne bei der Vergabe der Abflugzeit berücksichtigt werden.
  83.411 +
  83.412 +\item \textbf{Berechnung: Wegpunktzeiten}\\
  83.413 +Mit Hilfe der PRISMA-Klasse \texttt{CalcEstimates} lassen sich die Wegpunktzeiten der Route bestimmen. Ausgangspunkt der Rechnung ist die \emph{Estimated Entry Time} -- oder ETN -- die wir mit der frühesten Abflugzeit belegen. Die Berechnung der Zeiten ist notwendig für die Konfliktauflösung der Flow Point Slot-Zeiten.
  83.414 +
  83.415 +\item \textbf{Berechnung: optimale Abflugzeit}\\
  83.416 +Die Vorbereitungszeit ist abgeschlossen und die Berechnung der optimalen Abflugzeit wird eingeleitet. Die Kalkulation wird von der virtuellen Maschine geleistet. Die Eingabeparameter bestehen aus dem Flugplan, der zur Bearbeitung steht und den Flugplänen mit den gleichen zugewiesenen Flow Points. Der Optimierungsalgorithmus ist in \ref{design:atot_calculation} beschrieben. In diesem Schritt wird ebenfalls die Höhenstaffelung realisiert werden.
  83.417 +\end{enumerate}
  83.418 +Nach Abfolge der Verarbeitungsschritte sind die Flow Points und Flugflächen zugewiesen, die optimale Abflugzeit bestimmt und die resultierende Flow Point-Überflugzeit ermittelt. Die gewonnen Informationen werden durch eine Transaktion an den DMAP-Datensatz übermittelt. Mit der Über"-mittlung beendet die Verarbeitung des DFLOW, für die Visualisierung der DFLOW-spezifischen Daten ist das DFLOW-Display zuständig. Zur Verifizierung der Verarbeitungsterminierung wird dem Eintrag das \texttt{PROPOSAL}-Flag gesetzt.\\\\
  83.419 +Eine automatisierte Vergabe von Abflugzeiten ist stets nur ein Vorschlag, welcher vom Benutzer überstimmt werden kann. Dies stellt eine wichtige Anforderungen an das System dar. Eine voll automatisierte Verarbeitung bietet nicht die Flexibilität, die in einem Umfeld wie der Flugsicherung zu einem reibungsfreien und effektiven Betrieb notwendig ist. Treten Ausnahmesituationen ein, oder wird die Qualität der Automatisierung durch andere Faktoren gestört, so muss es möglich sein, den Flugverkehr ordnungsgemäß in manueller Steuerung abzuhalten. Ist die manuelle Steuerung unmöglich, so kann das zu einer Beeinträchtigung der Flugsicherung und damit der Sicherheit oder Effektivität führen, was letztendlich mit der Abschaltung des Systems enden kann, \cite{flugleiter_dman}.
  83.420 +%\begin{figure}[h]
  83.421 +%\centering \includegraphics[width=450pt]{images/dflow_cln_tables.png}
  83.422 +%\caption{DFLOW DMAP-Client-Tables}
  83.423 +%\label{uml:dflow_cln_tables}
  83.424 +%\end{figure}
  83.425 +
  83.426 +\subsection{Protokollierung}
  83.427 +DFLOW bedient sich der DMAP, welche alle Transaktionen protokolliert. Diese Zustand erleichtert die Nachvollziehbarkeit der Entscheidungen, die von der DFLOW-Komponente automatisch oder manuell gemacht werden. Zur Ergänzung der statistischen Auswertemöglichkeiten des FDPS, sollen zusätzlich DFLOW-spezifische persistente Logdateien erzeugt werden. Ein Logeintrag soll einen Starter mit relevanten Zusatzinformationen wie dessen Rufzeichen, zugewiesener Flow Point und den Zeiten protokollieren.\\\\
  83.428 +Um eine automatisierte Auswertung solcher Protokolle zu erleichtern, wird für die DFLOW-Protokolle ein CSV-Datenformat verwendet. Ein Protokolleintrag hat folgende Datenfelder:
  83.429 +\begin{itemize}
  83.430 +\item \emph{Call Sign:} das Rufzeichen des Luftfahrzeugs
  83.431 +\item \emph{ADEP:} die ICAO-Kennung des Startflughafens
  83.432 +\item \emph{RWY:} die Kennung der Startbahn
  83.433 +\item \emph{ADES:} die ICAO-Kennung des Zielflughafens
  83.434 +\item \emph{ETOT:} die früheste Abflugzeit -- vom Planer gesetzt
  83.435 +\item \emph{ATOT:} die optimierte Abflugzeit -- von DFLOW berechnet
  83.436 +\item \emph{Flow Point:} der von DFLOW zugewiesene Flow Point
  83.437 +\item \emph{Flow Time:} die Prognose der Überflugzeit über den Wegpunkt des Flow Points
  83.438 +\item \emph{Flow Flight Level:} die von DFLOW zugewiesene Flugfläche
  83.439 +\item \emph{ATD:} die tatsächliche Abflugzeit -- von PRISMA automatisch erfasst
  83.440 +\end{itemize}
    84.1 Binary file paper/src/document.pdf has changed
    85.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.2 +++ b/paper/src/document.tex	Fri Jun 04 13:48:28 2010 +0200
    85.3 @@ -0,0 +1,88 @@
    85.4 +\documentclass[11pt, a4paper, abstracton]{scrreprt}
    85.5 +\usepackage[left=3cm, right=2.5cm, bottom=3.5cm, top=3.5cm]{geometry}
    85.6 +\linespread{1.25}
    85.7 +\usepackage[ngerman]{babel}
    85.8 +\usepackage{graphicx}
    85.9 +%\usepackage[latin1]{inputenc}
   85.10 +\usepackage[utf8]{inputenc}
   85.11 +\usepackage{amsmath, amsthm, amssymb}
   85.12 +\usepackage{typearea}
   85.13 +\usepackage{algorithm}
   85.14 +\usepackage{algorithmic}
   85.15 +\usepackage{textcomp} 
   85.16 +\usepackage{color}
   85.17 +\usepackage{booktabs}
   85.18 +%\usepackage{subfig}
   85.19 +
   85.20 +\definecolor{grey1}{rgb}{0.93,0.93,0.93}
   85.21 +\usepackage{listings} \lstset{float=h, captionpos=b, numbers=none, numberstyle=\tiny, numbersep=5pt, language=C++, frame=single, framerule=0pt, %backgroundcolor=\color{grey1}}
   85.22 +} 
   85.23 +\usepackage{hyperref}
   85.24 +\hypersetup
   85.25 +{
   85.26 +    pdfauthor={Eugen Sawin},
   85.27 +    pdfsubject={Bachelorarbeit},
   85.28 +    pdftitle={Flexible Modellierung dynamischer Luftraumbeschränkungen und deren Nutzung zur optimierten Abflugplanung},
   85.29 +    pdfkeywords={DMAN, DFLOW, ATC, Flugsicherung, ATCCL},
   85.30 +    breaklinks=true,
   85.31 +    linktocpage=false,
   85.32 +	colorlinks=true,
   85.33 +	linkcolor=black,
   85.34 +	citecolor=black,
   85.35 +	filecolor=black,
   85.36 +	pagecolor=black,
   85.37 +	urlcolor=black,
   85.38 +	frenchlinks=false
   85.39 +}
   85.40 +\makeatletter% --> De-TeX-FAQ
   85.41 +\renewcommand*{\lstlistoflistings}{%
   85.42 +\begingroup
   85.43 +\if@twocolumn
   85.44 +\@restonecoltrue\onecolumn
   85.45 +\else
   85.46 +\@restonecolfalse
   85.47 +\fi
   85.48 +\lol@heading
   85.49 +\setlength{\parskip}{\z@}%
   85.50 +\setlength{\parindent}{\z@}%
   85.51 +\setlength{\parfillskip}{\z@ \@plus 1fil}%
   85.52 +\@starttoc{lol}%
   85.53 +\if@restonecol\twocolumn\fi
   85.54 +\endgroup
   85.55 +}
   85.56 +\makeatother% --> \makeatletter
   85.57 +
   85.58 +
   85.59 +%\lstset{language=C++}
   85.60 +%\usepackage{SIunits}
   85.61 +\usepackage{longtable}
   85.62 +\bibliographystyle{alpha}
   85.63 +
   85.64 +\makeindex
   85.65 +\begin{document}
   85.66 +\nocite{*}
   85.67 +%\maketitle
   85.68 +\newgeometry{left=3cm,right=3cm,bottom=1cm}
   85.69 +\input{title}
   85.70 +\restoregeometry
   85.71 +
   85.72 +%\pagenumbering{roman}
   85.73 +\input{abstract}
   85.74 +\input{preface}
   85.75 +\tableofcontents
   85.76 +%\pagenumbering{arabic}
   85.77 +\input{intro}
   85.78 +\input{research}
   85.79 +
   85.80 +\input{analysis}
   85.81 +\input{design}
   85.82 +\input{impl}
   85.83 +\input{verification}
   85.84 +\input{conclusion}
   85.85 +\listoffigures
   85.86 +\listoftables
   85.87 +\lstlistoflistings
   85.88 +\bibliography{references}
   85.89 +\appendix
   85.90 +\input{appendix}
   85.91 +\end{document}
    86.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.2 +++ b/paper/src/ebnf.txt	Fri Jun 04 13:48:28 2010 +0200
    86.3 @@ -0,0 +1,13 @@
    86.4 +Produktion       = produktionsname "=" Ausdruck "." 
    86.5 +Ausdruck         = Alternative { "|" Alternative } 
    86.6 +Alternative      = Term { Term } 
    86.7 +Term             = produktionsname | token [ "..." token ] 
    86.8 +		   | Gruppe | Option | Wiederholung 
    86.9 +Gruppe           = "(" Ausdruck ")" 
   86.10 +Option           = "[" Ausdruck "]" 
   86.11 +Wiederholung     = "{" Ausdruck "}" 
   86.12 +
   86.13 +|   Alternation
   86.14 +()  Gruppierung
   86.15 +[]  Option (0 oder 1 mal)
   86.16 +{}  Wiederholung (0 bis n mal)
    87.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.2 +++ b/paper/src/flex_config1.txt	Fri Jun 04 13:48:28 2010 +0200
    87.3 @@ -0,0 +1,6 @@
    87.4 +delim    [ \t]
    87.5 +ws	 {delim}+
    87.6 +letter 	 [A-Za-z]
    87.7 +digit	 [0-9]
    87.8 +id	 {letter}({letter}|{digit}|_)*
    87.9 +real	 {digit}+\.{digit}+
    88.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    88.2 +++ b/paper/src/flex_config2.txt	Fri Jun 04 13:48:28 2010 +0200
    88.3 @@ -0,0 +1,11 @@
    88.4 +copx	    { return COPX; }
    88.5 +adep	    { return ADEP; }
    88.6 +ades	    { return ADES; }
    88.7 +rwy	    { return RWY; }
    88.8 +route	    { return ROUTE; }
    88.9 +atyp	    { return ATYP; }
   88.10 +equip	    { return EQUIP; }
   88.11 +tas	    { return TAS; }
   88.12 +frul	    { return FRUL; }
   88.13 +ftyp	    { return FTYP; }
   88.14 +travel_type { return TRAVEL_TYPE; }
    89.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    89.2 +++ b/paper/src/flex_config3.txt	Fri Jun 04 13:48:28 2010 +0200
    89.3 @@ -0,0 +1,2 @@
    89.4 +time_sep { return TIMESEP; }
    89.5 +fl	 { return FL; }
    90.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    90.2 +++ b/paper/src/flex_config4.txt	Fri Jun 04 13:48:28 2010 +0200
    90.3 @@ -0,0 +1,3 @@
    90.4 +constraint { return CONSTRNT; }
    90.5 +pattern	   { return PATTERN; }
    90.6 +flowpoint  { return FLOWP; }
    91.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    91.2 +++ b/paper/src/flex_config5.txt	Fri Jun 04 13:48:28 2010 +0200
    91.3 @@ -0,0 +1,8 @@
    91.4 +is	 { return IS; }
    91.5 +in	 { return IN; }
    91.6 +not	 { return NOT; }
    91.7 +less	 { return LESS; }
    91.8 +greater	 { return GREATER; }
    91.9 +than	 { return THAN; }
   91.10 +and	 { return AND; }
   91.11 +or	 { return OR; }
    92.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    92.2 +++ b/paper/src/flex_config6.txt	Fri Jun 04 13:48:28 2010 +0200
    92.3 @@ -0,0 +1,4 @@
    92.4 +at	 { return AT; }
    92.5 +from	 { return FROM; }
    92.6 +until	 { return UNTIL; }
    92.7 +on	 { return ON; }
    93.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.2 +++ b/paper/src/flex_config7.txt	Fri Jun 04 13:48:28 2010 +0200
    93.3 @@ -0,0 +1,3 @@
    93.4 +{digit}+ { yylval.integer = atoi(yytext); return INTEGER; }
    93.5 +{real}	 { yylval.real = atof(yytext); return REAL; }
    93.6 +{string} { yylval.string = installString(); return STRING; }
    94.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.2 +++ b/paper/src/flex_config8.txt	Fri Jun 04 13:48:28 2010 +0200
    94.3 @@ -0,0 +1,5 @@
    94.4 +{id}	 { yylval.string = installString(); return ID; }
    94.5 +\"	 { return QUOTE; }
    94.6 +#.*$	 { return COM; }
    94.7 +{ws}	 {  }
    94.8 +.	 { return yytext[0]; }
    95.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.2 +++ b/paper/src/flex_config9.txt	Fri Jun 04 13:48:28 2010 +0200
    95.3 @@ -0,0 +1,2 @@
    95.4 +\n.*	 { strcpy(line_buffer, yytext+1); 
    95.5 +           line_no++; yyless(1); }
    96.1 Binary file paper/src/graph1.pdf has changed
    97.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.2 +++ b/paper/src/graph1.tex	Fri Jun 04 13:48:28 2010 +0200
    97.3 @@ -0,0 +1,110 @@
    97.4 +% GNUPLOT: LaTeX picture with Postscript
    97.5 +\begingroup
    97.6 +  \makeatletter
    97.7 +  \providecommand\color[2][]{%
    97.8 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
    97.9 +      Package color not loaded in conjunction with
   97.10 +      terminal option `colourtext'%
   97.11 +    }{See the gnuplot documentation for explanation.%
   97.12 +    }{Either use 'blacktext' in gnuplot or load the package
   97.13 +      color.sty in LaTeX.}%
   97.14 +    \renewcommand\color[2][]{}%
   97.15 +  }%
   97.16 +  \providecommand\includegraphics[2][]{%
   97.17 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
   97.18 +      Package graphicx or graphics not loaded%
   97.19 +    }{See the gnuplot documentation for explanation.%
   97.20 +    }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
   97.21 +    \renewcommand\includegraphics[2][]{}%
   97.22 +  }%
   97.23 +  \providecommand\rotatebox[2]{#2}%
   97.24 +  \@ifundefined{ifGPcolor}{%
   97.25 +    \newif\ifGPcolor
   97.26 +    \GPcolorfalse
   97.27 +  }{}%
   97.28 +  \@ifundefined{ifGPblacktext}{%
   97.29 +    \newif\ifGPblacktext
   97.30 +    \GPblacktexttrue
   97.31 +  }{}%
   97.32 +  % define a \g@addto@macro without @ in the name:
   97.33 +  \let\gplgaddtomacro\g@addto@macro
   97.34 +  % define empty templates for all commands taking text:
   97.35 +  \gdef\gplbacktext{}%
   97.36 +  \gdef\gplfronttext{}%
   97.37 +  \makeatother
   97.38 +  \ifGPblacktext
   97.39 +    % no textcolor at all
   97.40 +    \def\colorrgb#1{}%
   97.41 +    \def\colorgray#1{}%
   97.42 +  \else
   97.43 +    % gray or color?
   97.44 +    \ifGPcolor
   97.45 +      \def\colorrgb#1{\color[rgb]{#1}}%
   97.46 +      \def\colorgray#1{\color[gray]{#1}}%
   97.47 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
   97.48 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
   97.49 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
   97.50 +      \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
   97.51 +      \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
   97.52 +      \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
   97.53 +      \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
   97.54 +      \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
   97.55 +      \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
   97.56 +      \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
   97.57 +      \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
   97.58 +      \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
   97.59 +    \else
   97.60 +      % gray
   97.61 +      \def\colorrgb#1{\color{black}}%
   97.62 +      \def\colorgray#1{\color[gray]{#1}}%
   97.63 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
   97.64 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
   97.65 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
   97.66 +      \expandafter\def\csname LT0\endcsname{\color{black}}%
   97.67 +      \expandafter\def\csname LT1\endcsname{\color{black}}%
   97.68 +      \expandafter\def\csname LT2\endcsname{\color{black}}%
   97.69 +      \expandafter\def\csname LT3\endcsname{\color{black}}%
   97.70 +      \expandafter\def\csname LT4\endcsname{\color{black}}%
   97.71 +      \expandafter\def\csname LT5\endcsname{\color{black}}%
   97.72 +      \expandafter\def\csname LT6\endcsname{\color{black}}%
   97.73 +      \expandafter\def\csname LT7\endcsname{\color{black}}%
   97.74 +      \expandafter\def\csname LT8\endcsname{\color{black}}%
   97.75 +    \fi
   97.76 +  \fi
   97.77 +  \setlength{\unitlength}{0.0500bp}%
   97.78 +  \begin{picture}(7200.00,5040.00)%
   97.79 +    \gplgaddtomacro\gplbacktext{%
   97.80 +      \csname LTb\endcsname%
   97.81 +      \put(1342,704){\makebox(0,0)[r]{\strut{}$-10$}}%
   97.82 +      \put(1342,1072){\makebox(0,0)[r]{\strut{}$0$}}%
   97.83 +      \put(1342,1439){\makebox(0,0)[r]{\strut{}$10$}}%
   97.84 +      \put(1342,1807){\makebox(0,0)[r]{\strut{}$20$}}%
   97.85 +      \put(1342,2174){\makebox(0,0)[r]{\strut{}$30$}}%
   97.86 +      \put(1342,2542){\makebox(0,0)[r]{\strut{}$40$}}%
   97.87 +      \put(1342,2910){\makebox(0,0)[r]{\strut{}$50$}}%
   97.88 +      \put(1342,3277){\makebox(0,0)[r]{\strut{}$60$}}%
   97.89 +      \put(1342,3645){\makebox(0,0)[r]{\strut{}$70$}}%
   97.90 +      \put(1342,4012){\makebox(0,0)[r]{\strut{}$80$}}%
   97.91 +      \put(1342,4380){\makebox(0,0)[r]{\strut{}$90$}}%
   97.92 +      \put(1474,484){\makebox(0,0){\strut{}$0$}}%
   97.93 +      \put(2149,484){\makebox(0,0){\strut{}$2$}}%
   97.94 +      \put(2823,484){\makebox(0,0){\strut{}$4$}}%
   97.95 +      \put(3498,484){\makebox(0,0){\strut{}$6$}}%
   97.96 +      \put(4172,484){\makebox(0,0){\strut{}$8$}}%
   97.97 +      \put(4847,484){\makebox(0,0){\strut{}$10$}}%
   97.98 +      \put(5521,484){\makebox(0,0){\strut{}$12$}}%
   97.99 +      \put(6196,484){\makebox(0,0){\strut{}$14$}}%
  97.100 +      \put(6870,484){\makebox(0,0){\strut{}$16$}}%
  97.101 +      \put(440,2542){\rotatebox{90}{\makebox(0,0){\strut{}Voltage $V_p$ [V]}}}%
  97.102 +      \put(4172,154){\makebox(0,0){\strut{}Resistance $R_0$ [$Omega$]}}%
  97.103 +      \put(4172,4710){\makebox(0,0){\strut{}Graph 3: Dependence of $V_p$ on $R_0$}}%
  97.104 +    }%
  97.105 +    \gplgaddtomacro\gplfronttext{%
  97.106 +      \csname LTb\endcsname%
  97.107 +      \put(5883,4207){\makebox(0,0)[r]{\strut{}"cut_laldo.csv" using 1:2}}%
  97.108 +    }%
  97.109 +    \gplbacktext
  97.110 +    \put(0,0){\includegraphics{graph1}}%
  97.111 +    \gplfronttext
  97.112 +  \end{picture}%
  97.113 +\endgroup
    98.1 Binary file paper/src/images/BlankMap-World6.pdf has changed
    99.1 Binary file paper/src/images/Screenshot-4.png has changed
   100.1 Binary file paper/src/images/ai.jpg has changed
   101.1 Binary file paper/src/images/atfm_stats.pdf has changed
   102.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   102.2 +++ b/paper/src/images/atfm_stats.svg	Fri Jun 04 13:48:28 2010 +0200
   102.3 @@ -0,0 +1,216 @@
   102.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   102.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
   102.6 +
   102.7 +<svg
   102.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
   102.9 +   xmlns:cc="http://creativecommons.org/ns#"
  102.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  102.11 +   xmlns:svg="http://www.w3.org/2000/svg"
  102.12 +   xmlns="http://www.w3.org/2000/svg"
  102.13 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  102.14 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  102.15 +   width="744.09448819"
  102.16 +   height="1052.3622047"
  102.17 +   id="svg2"
  102.18 +   version="1.1"
  102.19 +   inkscape:version="0.47pre4 r22446"
  102.20 +   sodipodi:docname="atfm_stats.svg">
  102.21 +  <defs
  102.22 +     id="defs4">
  102.23 +    <inkscape:perspective
  102.24 +       sodipodi:type="inkscape:persp3d"
  102.25 +       inkscape:vp_x="0 : 526.18109 : 1"
  102.26 +       inkscape:vp_y="0 : 1000 : 0"
  102.27 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
  102.28 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
  102.29 +       id="perspective10" />
  102.30 +    <inkscape:perspective
  102.31 +       id="perspective3657"
  102.32 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  102.33 +       inkscape:vp_z="1 : 0.5 : 1"
  102.34 +       inkscape:vp_y="0 : 1000 : 0"
  102.35 +       inkscape:vp_x="0 : 0.5 : 1"
  102.36 +       sodipodi:type="inkscape:persp3d" />
  102.37 +    <inkscape:perspective
  102.38 +       id="perspective3690"
  102.39 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  102.40 +       inkscape:vp_z="1 : 0.5 : 1"
  102.41 +       inkscape:vp_y="0 : 1000 : 0"
  102.42 +       inkscape:vp_x="0 : 0.5 : 1"
  102.43 +       sodipodi:type="inkscape:persp3d" />
  102.44 +    <inkscape:perspective
  102.45 +       id="perspective3726"
  102.46 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  102.47 +       inkscape:vp_z="1 : 0.5 : 1"
  102.48 +       inkscape:vp_y="0 : 1000 : 0"
  102.49 +       inkscape:vp_x="0 : 0.5 : 1"
  102.50 +       sodipodi:type="inkscape:persp3d" />
  102.51 +    <inkscape:perspective
  102.52 +       id="perspective3726-1"
  102.53 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  102.54 +       inkscape:vp_z="1 : 0.5 : 1"
  102.55 +       inkscape:vp_y="0 : 1000 : 0"
  102.56 +       inkscape:vp_x="0 : 0.5 : 1"
  102.57 +       sodipodi:type="inkscape:persp3d" />
  102.58 +    <inkscape:perspective
  102.59 +       id="perspective3726-7"
  102.60 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  102.61 +       inkscape:vp_z="1 : 0.5 : 1"
  102.62 +       inkscape:vp_y="0 : 1000 : 0"
  102.63 +       inkscape:vp_x="0 : 0.5 : 1"
  102.64 +       sodipodi:type="inkscape:persp3d" />
  102.65 +    <inkscape:perspective
  102.66 +       id="perspective3788"
  102.67 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  102.68 +       inkscape:vp_z="1 : 0.5 : 1"
  102.69 +       inkscape:vp_y="0 : 1000 : 0"
  102.70 +       inkscape:vp_x="0 : 0.5 : 1"
  102.71 +       sodipodi:type="inkscape:persp3d" />
  102.72 +  </defs>
  102.73 +  <sodipodi:namedview
  102.74 +     id="base"
  102.75 +     pagecolor="#ffffff"
  102.76 +     bordercolor="#666666"
  102.77 +     borderopacity="1.0"
  102.78 +     inkscape:pageopacity="0.0"
  102.79 +     inkscape:pageshadow="2"
  102.80 +     inkscape:zoom="0.74978041"
  102.81 +     inkscape:cx="306.61312"
  102.82 +     inkscape:cy="786.43443"
  102.83 +     inkscape:document-units="px"
  102.84 +     inkscape:current-layer="layer1"
  102.85 +     showgrid="false"
  102.86 +     inkscape:window-width="1024"
  102.87 +     inkscape:window-height="691"
  102.88 +     inkscape:window-x="448"
  102.89 +     inkscape:window-y="1200"
  102.90 +     inkscape:window-maximized="1" />
  102.91 +  <metadata
  102.92 +     id="metadata7">
  102.93 +    <rdf:RDF>
  102.94 +      <cc:Work
  102.95 +         rdf:about="">
  102.96 +        <dc:format>image/svg+xml</dc:format>
  102.97 +        <dc:type
  102.98 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  102.99 +        <dc:title></dc:title>
 102.100 +      </cc:Work>
 102.101 +    </rdf:RDF>
 102.102 +  </metadata>
 102.103 +  <g
 102.104 +     inkscape:label="Layer 1"
 102.105 +     inkscape:groupmode="layer"
 102.106 +     id="layer1">
 102.107 +    <path
 102.108 +       style="opacity:0.76000001;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 102.109 +       d="M 262.0636,257.36125 C 261.13673,256.49782 151.25815,128.59628 144.0371,119.97531 l -9.19975,-10.9833 6.13134,-5.11286 c 23.14913,-19.303818 59.76965,-34.938035 92.63629,-39.548747 21.2676,-2.983535 48.68218,-2.061097 68.83241,2.316048 27.09656,5.886072 51.71544,16.765628 73.44945,32.458719 9.84814,7.11089 21.43379,16.79299 21.28561,17.78832 -0.0417,0.27984 -29.37914,30.88304 -65.19439,68.00709 -35.81525,37.12406 -66.1467,68.66233 -67.4032,70.08505 -1.2565,1.42273 -2.38656,2.49174 -2.51125,2.3756 l 0,0 z"
 102.110 +       id="path3623" />
 102.111 +    <path
 102.112 +       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:0.096"
 102.113 +       d="m 297.99525,463.85045 c -40.52477,7.06453 -78.11489,2.78466 -114.89861,-13.08192 C 154.6086,438.48028 131.59686,421.23727 111.43283,397.06987 96.13948,378.74024 87.324519,364.07822 78.955212,343.04978 62.782891,302.41578 61.000648,256.79167 73.878511,213.09048 79.290022,194.72647 92.408967,168.67506 103.69364,153.88403 l 3.49892,-4.58608 5.2196,4.05766 c 13.68548,10.63892 146.86543,117.05574 147.60612,117.94398 1.3907,1.66772 49.8473,189.52079 49.05154,190.15945 -0.40361,0.32355 -5.38697,1.39992 -11.07457,2.39141 z"
 102.114 +       id="path3635" />
 102.115 +    <path
 102.116 +       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:0.256"
 102.117 +       d="m 180.09301,204.77084 c -46.24292,-36.85877 -71.01812,-57.07381 -70.79276,-57.76253 0.58553,-1.78938 9.24142,-11.17964 16.78601,-18.21015 l 7.16499,-6.67679 8.96701,10.76261 c 4.93209,5.91924 27.91788,32.80242 51.07999,59.74002 23.16212,26.93761 45.67272,53.44876 50.02357,58.91369 l 18.27637,19.46793 -81.50522,-66.23474 4e-5,-4e-5 z"
 102.118 +       id="path3637"
 102.119 +       sodipodi:nodetypes="cscccscccc" />
 102.120 +    <path
 102.121 +       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:0.724"
 102.122 +       d="m 322.13122,457.75879 c -4.83164,1.4974 -9.13705,2.69065 -9.56758,2.65165 -0.43054,-0.039 -1.35955,-2.3733 -2.06447,-5.18732 -0.70492,-2.81403 -10.30369,-39.81935 -21.33058,-82.23405 -11.0269,-42.41472 -28.50542,-101.99742 -28.21064,-101.97072 0.66673,0.0604 70.80883,183.34928 70.31583,183.73672 -0.19661,0.15484 -4.31092,1.50631 -9.14256,3.00372 z"
 102.123 +       id="path3639"
 102.124 +       sodipodi:nodetypes="csssssc" />
 102.125 +    <path
 102.126 +       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:0.184"
 102.127 +       d="m 378.4446,428.94049 c -11.24124,8.16122 -26.91517,17.18151 -38.49842,22.15571 -3.30874,1.42088 -6.20916,2.3674 -6.44537,2.10337 -0.2362,-0.26403 -15.84794,-40.23796 -34.69272,-88.83098 -21.64778,-55.8208 -38.1281,-95.08557 -37.19536,-94.57931 2.85897,1.55171 140.86117,136.52081 140.73621,137.58739 -0.14267,1.21776 -17.71935,17.07349 -23.90434,21.56382 z"
 102.128 +       id="path3641"
 102.129 +       sodipodi:nodetypes="csssssc" />
 102.130 +    <path
 102.131 +       style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:0.116"
 102.132 +       d="m 334.16451,338.63718 c -38.74561,-36.87712 -70.428,-67.25437 -70.40529,-67.505 0.0843,-0.9313 134.93314,-140.49005 135.68304,-140.42212 1.75254,0.15874 23.83825,27.86011 29.00717,36.38271 14.0378,23.14583 23.50313,48.82584 27.21361,73.83219 4.57134,30.80803 1.49345,64.78469 -8.53862,94.25723 -8.02354,23.57182 -22.75547,48.56804 -39.73454,67.41912 l -2.7788,3.08518 -70.44657,-67.04931 0,0 z"
 102.133 +       id="path3643" />
 102.134 +    <text
 102.135 +       xml:space="preserve"
 102.136 +       style="font-size:18.15711594px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 102.137 +       x="264.84821"
 102.138 +       y="26.875925"
 102.139 +       id="text3645"><tspan
 102.140 +         sodipodi:role="line"
 102.141 +         id="tspan3647"
 102.142 +         x="264.84821"
 102.143 +         y="26.875925">Air Traffic Flow Management</tspan><tspan
 102.144 +         sodipodi:role="line"
 102.145 +         x="264.84821"
 102.146 +         y="49.572323"
 102.147 +         id="tspan3680">23%</tspan></text>
 102.148 +    <text
 102.149 +       xml:space="preserve"
 102.150 +       style="font-size:18.15711594px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 102.151 +       x="67.16655"
 102.152 +       y="105.59721"
 102.153 +       id="text3645-5"><tspan
 102.154 +         sodipodi:role="line"
 102.155 +         id="tspan3647-9"
 102.156 +         x="67.166557"
 102.157 +         y="105.59721">Wetterbedingt</tspan><tspan
 102.158 +         sodipodi:role="line"
 102.159 +         x="67.16655"
 102.160 +         y="128.29361"
 102.161 +         id="tspan3676">3%</tspan></text>
 102.162 +    <text
 102.163 +       xml:space="preserve"
 102.164 +       style="font-size:18.15711594px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 102.165 +       x="14.012856"
 102.166 +       y="408.91656"
 102.167 +       id="text3645-5-6"><tspan
 102.168 +         sodipodi:role="line"
 102.169 +         x="14.012858"
 102.170 +         y="408.91656"
 102.171 +         id="tspan3676-1">Folgeverspätungen</tspan><tspan
 102.172 +         sodipodi:role="line"
 102.173 +         x="14.012856"
 102.174 +         y="431.61295"
 102.175 +         id="tspan3714">39%</tspan></text>
 102.176 +    <text
 102.177 +       xml:space="preserve"
 102.178 +       style="font-size:18.15711594px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 102.179 +       x="577.82025"
 102.180 +       y="262.42456"
 102.181 +       id="text3645-5-6-8"><tspan
 102.182 +         sodipodi:role="line"
 102.183 +         x="577.82025"
 102.184 +         y="262.42456"
 102.185 +         id="tspan3714-9">Luftvekehrsgesellschaft</tspan><tspan
 102.186 +         sodipodi:role="line"
 102.187 +         x="577.82025"
 102.188 +         y="285.12094"
 102.189 +         id="tspan3761">25%</tspan></text>
 102.190 +    <text
 102.191 +       xml:space="preserve"
 102.192 +       style="font-size:18.15711594px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 102.193 +       x="463.77197"
 102.194 +       y="447.67133"
 102.195 +       id="text3645-5-6-5"><tspan
 102.196 +         sodipodi:role="line"
 102.197 +         x="463.77197"
 102.198 +         y="447.67133"
 102.199 +         id="tspan3676-1-3">Flugplatzbetreiber</tspan><tspan
 102.200 +         sodipodi:role="line"
 102.201 +         x="463.77197"
 102.202 +         y="470.36771"
 102.203 +         id="tspan3714-8">8%</tspan></text>
 102.204 +    <text
 102.205 +       xml:space="preserve"
 102.206 +       style="font-size:18.15711594px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 102.207 +       x="344.3876"
 102.208 +       y="495.82123"
 102.209 +       id="text3645-5-6-5-8"><tspan
 102.210 +         sodipodi:role="line"
 102.211 +         x="344.3876"
 102.212 +         y="495.82123"
 102.213 +         id="tspan3676-1-3-3">Nicht zuzuordnen</tspan><tspan
 102.214 +         sodipodi:role="line"
 102.215 +         x="344.3876"
 102.216 +         y="518.51758"
 102.217 +         id="tspan3714-8-1">2%</tspan></text>
 102.218 +  </g>
 102.219 +</svg>
   103.1 Binary file paper/src/images/compile_process.pdf has changed
   104.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   104.2 +++ b/paper/src/images/compile_process.svg	Fri Jun 04 13:48:28 2010 +0200
   104.3 @@ -0,0 +1,1521 @@
   104.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   104.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
   104.6 +
   104.7 +<svg
   104.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
   104.9 +   xmlns:cc="http://creativecommons.org/ns#"
  104.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  104.11 +   xmlns:svg="http://www.w3.org/2000/svg"
  104.12 +   xmlns="http://www.w3.org/2000/svg"
  104.13 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  104.14 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  104.15 +   width="744.09448819"
  104.16 +   height="1052.3622047"
  104.17 +   id="svg2"
  104.18 +   version="1.1"
  104.19 +   inkscape:version="0.47pre4 r22446"
  104.20 +   sodipodi:docname="compile_process.svg">
  104.21 +  <defs
  104.22 +     id="defs4">
  104.23 +    <marker
  104.24 +       inkscape:stockid="DotM"
  104.25 +       orient="auto"
  104.26 +       refY="0.0"
  104.27 +       refX="0.0"
  104.28 +       id="DotM"
  104.29 +       style="overflow:visible">
  104.30 +      <path
  104.31 +         id="path6901"
  104.32 +         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
  104.33 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none"
  104.34 +         transform="scale(0.4) translate(7.4, 1)" />
  104.35 +    </marker>
  104.36 +    <marker
  104.37 +       inkscape:stockid="EmptyTriangleOutL"
  104.38 +       orient="auto"
  104.39 +       refY="0.0"
  104.40 +       refX="0.0"
  104.41 +       id="EmptyTriangleOutL"
  104.42 +       style="overflow:visible">
  104.43 +      <path
  104.44 +         id="path6997"
  104.45 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
  104.46 +         style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt;marker-start:none"
  104.47 +         transform="scale(0.8) translate(-6,0)" />
  104.48 +    </marker>
  104.49 +    <marker
  104.50 +       inkscape:stockid="Arrow2Lend"
  104.51 +       orient="auto"
  104.52 +       refY="0.0"
  104.53 +       refX="0.0"
  104.54 +       id="Arrow2Lend"
  104.55 +       style="overflow:visible;">
  104.56 +      <path
  104.57 +         id="path6857"
  104.58 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
  104.59 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  104.60 +         transform="scale(1.1) rotate(180) translate(1,0)" />
  104.61 +    </marker>
  104.62 +    <inkscape:perspective
  104.63 +       sodipodi:type="inkscape:persp3d"
  104.64 +       inkscape:vp_x="0 : 526.18109 : 1"
  104.65 +       inkscape:vp_y="0 : 1000 : 0"
  104.66 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
  104.67 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
  104.68 +       id="perspective10" />
  104.69 +    <inkscape:perspective
  104.70 +       id="perspective3727"
  104.71 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  104.72 +       inkscape:vp_z="1 : 0.5 : 1"
  104.73 +       inkscape:vp_y="0 : 1000 : 0"
  104.74 +       inkscape:vp_x="0 : 0.5 : 1"
  104.75 +       sodipodi:type="inkscape:persp3d" />
  104.76 +    <inkscape:perspective
  104.77 +       id="perspective3727-5"
  104.78 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  104.79 +       inkscape:vp_z="1 : 0.5 : 1"
  104.80 +       inkscape:vp_y="0 : 1000 : 0"
  104.81 +       inkscape:vp_x="0 : 0.5 : 1"
  104.82 +       sodipodi:type="inkscape:persp3d" />
  104.83 +    <inkscape:perspective
  104.84 +       id="perspective3760"
  104.85 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  104.86 +       inkscape:vp_z="1 : 0.5 : 1"
  104.87 +       inkscape:vp_y="0 : 1000 : 0"
  104.88 +       inkscape:vp_x="0 : 0.5 : 1"
  104.89 +       sodipodi:type="inkscape:persp3d" />
  104.90 +    <inkscape:perspective
  104.91 +       id="perspective5313"
  104.92 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  104.93 +       inkscape:vp_z="1 : 0.5 : 1"
  104.94 +       inkscape:vp_y="0 : 1000 : 0"
  104.95 +       inkscape:vp_x="0 : 0.5 : 1"
  104.96 +       sodipodi:type="inkscape:persp3d" />
  104.97 +    <inkscape:perspective
  104.98 +       id="perspective5335"
  104.99 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.100 +       inkscape:vp_z="1 : 0.5 : 1"
 104.101 +       inkscape:vp_y="0 : 1000 : 0"
 104.102 +       inkscape:vp_x="0 : 0.5 : 1"
 104.103 +       sodipodi:type="inkscape:persp3d" />
 104.104 +    <inkscape:perspective
 104.105 +       id="perspective5335-5"
 104.106 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.107 +       inkscape:vp_z="1 : 0.5 : 1"
 104.108 +       inkscape:vp_y="0 : 1000 : 0"
 104.109 +       inkscape:vp_x="0 : 0.5 : 1"
 104.110 +       sodipodi:type="inkscape:persp3d" />
 104.111 +    <inkscape:perspective
 104.112 +       id="perspective5335-4"
 104.113 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.114 +       inkscape:vp_z="1 : 0.5 : 1"
 104.115 +       inkscape:vp_y="0 : 1000 : 0"
 104.116 +       inkscape:vp_x="0 : 0.5 : 1"
 104.117 +       sodipodi:type="inkscape:persp3d" />
 104.118 +    <inkscape:perspective
 104.119 +       id="perspective5335-8"
 104.120 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.121 +       inkscape:vp_z="1 : 0.5 : 1"
 104.122 +       inkscape:vp_y="0 : 1000 : 0"
 104.123 +       inkscape:vp_x="0 : 0.5 : 1"
 104.124 +       sodipodi:type="inkscape:persp3d" />
 104.125 +    <inkscape:perspective
 104.126 +       id="perspective5335-9"
 104.127 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.128 +       inkscape:vp_z="1 : 0.5 : 1"
 104.129 +       inkscape:vp_y="0 : 1000 : 0"
 104.130 +       inkscape:vp_x="0 : 0.5 : 1"
 104.131 +       sodipodi:type="inkscape:persp3d" />
 104.132 +    <inkscape:perspective
 104.133 +       id="perspective5335-3"
 104.134 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.135 +       inkscape:vp_z="1 : 0.5 : 1"
 104.136 +       inkscape:vp_y="0 : 1000 : 0"
 104.137 +       inkscape:vp_x="0 : 0.5 : 1"
 104.138 +       sodipodi:type="inkscape:persp3d" />
 104.139 +    <inkscape:perspective
 104.140 +       id="perspective5335-31"
 104.141 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.142 +       inkscape:vp_z="1 : 0.5 : 1"
 104.143 +       inkscape:vp_y="0 : 1000 : 0"
 104.144 +       inkscape:vp_x="0 : 0.5 : 1"
 104.145 +       sodipodi:type="inkscape:persp3d" />
 104.146 +    <inkscape:perspective
 104.147 +       id="perspective5335-6"
 104.148 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.149 +       inkscape:vp_z="1 : 0.5 : 1"
 104.150 +       inkscape:vp_y="0 : 1000 : 0"
 104.151 +       inkscape:vp_x="0 : 0.5 : 1"
 104.152 +       sodipodi:type="inkscape:persp3d" />
 104.153 +    <inkscape:perspective
 104.154 +       id="perspective5335-33"
 104.155 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.156 +       inkscape:vp_z="1 : 0.5 : 1"
 104.157 +       inkscape:vp_y="0 : 1000 : 0"
 104.158 +       inkscape:vp_x="0 : 0.5 : 1"
 104.159 +       sodipodi:type="inkscape:persp3d" />
 104.160 +    <inkscape:perspective
 104.161 +       id="perspective5429"
 104.162 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.163 +       inkscape:vp_z="1 : 0.5 : 1"
 104.164 +       inkscape:vp_y="0 : 1000 : 0"
 104.165 +       inkscape:vp_x="0 : 0.5 : 1"
 104.166 +       sodipodi:type="inkscape:persp3d" />
 104.167 +    <inkscape:perspective
 104.168 +       id="perspective5465"
 104.169 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.170 +       inkscape:vp_z="1 : 0.5 : 1"
 104.171 +       inkscape:vp_y="0 : 1000 : 0"
 104.172 +       inkscape:vp_x="0 : 0.5 : 1"
 104.173 +       sodipodi:type="inkscape:persp3d" />
 104.174 +    <inkscape:perspective
 104.175 +       id="perspective5490"
 104.176 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.177 +       inkscape:vp_z="1 : 0.5 : 1"
 104.178 +       inkscape:vp_y="0 : 1000 : 0"
 104.179 +       inkscape:vp_x="0 : 0.5 : 1"
 104.180 +       sodipodi:type="inkscape:persp3d" />
 104.181 +    <inkscape:perspective
 104.182 +       id="perspective5546"
 104.183 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.184 +       inkscape:vp_z="1 : 0.5 : 1"
 104.185 +       inkscape:vp_y="0 : 1000 : 0"
 104.186 +       inkscape:vp_x="0 : 0.5 : 1"
 104.187 +       sodipodi:type="inkscape:persp3d" />
 104.188 +    <inkscape:perspective
 104.189 +       id="perspective5546-1"
 104.190 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.191 +       inkscape:vp_z="1 : 0.5 : 1"
 104.192 +       inkscape:vp_y="0 : 1000 : 0"
 104.193 +       inkscape:vp_x="0 : 0.5 : 1"
 104.194 +       sodipodi:type="inkscape:persp3d" />
 104.195 +    <inkscape:perspective
 104.196 +       id="perspective5546-0"
 104.197 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.198 +       inkscape:vp_z="1 : 0.5 : 1"
 104.199 +       inkscape:vp_y="0 : 1000 : 0"
 104.200 +       inkscape:vp_x="0 : 0.5 : 1"
 104.201 +       sodipodi:type="inkscape:persp3d" />
 104.202 +    <inkscape:perspective
 104.203 +       id="perspective5546-5"
 104.204 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.205 +       inkscape:vp_z="1 : 0.5 : 1"
 104.206 +       inkscape:vp_y="0 : 1000 : 0"
 104.207 +       inkscape:vp_x="0 : 0.5 : 1"
 104.208 +       sodipodi:type="inkscape:persp3d" />
 104.209 +    <inkscape:perspective
 104.210 +       id="perspective5595"
 104.211 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.212 +       inkscape:vp_z="1 : 0.5 : 1"
 104.213 +       inkscape:vp_y="0 : 1000 : 0"
 104.214 +       inkscape:vp_x="0 : 0.5 : 1"
 104.215 +       sodipodi:type="inkscape:persp3d" />
 104.216 +    <inkscape:perspective
 104.217 +       id="perspective5623"
 104.218 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.219 +       inkscape:vp_z="1 : 0.5 : 1"
 104.220 +       inkscape:vp_y="0 : 1000 : 0"
 104.221 +       inkscape:vp_x="0 : 0.5 : 1"
 104.222 +       sodipodi:type="inkscape:persp3d" />
 104.223 +    <inkscape:perspective
 104.224 +       id="perspective5664"
 104.225 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.226 +       inkscape:vp_z="1 : 0.5 : 1"
 104.227 +       inkscape:vp_y="0 : 1000 : 0"
 104.228 +       inkscape:vp_x="0 : 0.5 : 1"
 104.229 +       sodipodi:type="inkscape:persp3d" />
 104.230 +    <inkscape:perspective
 104.231 +       id="perspective5664-1"
 104.232 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.233 +       inkscape:vp_z="1 : 0.5 : 1"
 104.234 +       inkscape:vp_y="0 : 1000 : 0"
 104.235 +       inkscape:vp_x="0 : 0.5 : 1"
 104.236 +       sodipodi:type="inkscape:persp3d" />
 104.237 +    <inkscape:perspective
 104.238 +       id="perspective5731"
 104.239 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.240 +       inkscape:vp_z="1 : 0.5 : 1"
 104.241 +       inkscape:vp_y="0 : 1000 : 0"
 104.242 +       inkscape:vp_x="0 : 0.5 : 1"
 104.243 +       sodipodi:type="inkscape:persp3d" />
 104.244 +    <inkscape:perspective
 104.245 +       id="perspective5731-9"
 104.246 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.247 +       inkscape:vp_z="1 : 0.5 : 1"
 104.248 +       inkscape:vp_y="0 : 1000 : 0"
 104.249 +       inkscape:vp_x="0 : 0.5 : 1"
 104.250 +       sodipodi:type="inkscape:persp3d" />
 104.251 +    <inkscape:perspective
 104.252 +       id="perspective5772"
 104.253 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.254 +       inkscape:vp_z="1 : 0.5 : 1"
 104.255 +       inkscape:vp_y="0 : 1000 : 0"
 104.256 +       inkscape:vp_x="0 : 0.5 : 1"
 104.257 +       sodipodi:type="inkscape:persp3d" />
 104.258 +    <inkscape:perspective
 104.259 +       id="perspective5794"
 104.260 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.261 +       inkscape:vp_z="1 : 0.5 : 1"
 104.262 +       inkscape:vp_y="0 : 1000 : 0"
 104.263 +       inkscape:vp_x="0 : 0.5 : 1"
 104.264 +       sodipodi:type="inkscape:persp3d" />
 104.265 +    <inkscape:perspective
 104.266 +       id="perspective5794-0"
 104.267 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.268 +       inkscape:vp_z="1 : 0.5 : 1"
 104.269 +       inkscape:vp_y="0 : 1000 : 0"
 104.270 +       inkscape:vp_x="0 : 0.5 : 1"
 104.271 +       sodipodi:type="inkscape:persp3d" />
 104.272 +    <inkscape:perspective
 104.273 +       id="perspective5794-6"
 104.274 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.275 +       inkscape:vp_z="1 : 0.5 : 1"
 104.276 +       inkscape:vp_y="0 : 1000 : 0"
 104.277 +       inkscape:vp_x="0 : 0.5 : 1"
 104.278 +       sodipodi:type="inkscape:persp3d" />
 104.279 +    <inkscape:perspective
 104.280 +       id="perspective5794-67"
 104.281 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.282 +       inkscape:vp_z="1 : 0.5 : 1"
 104.283 +       inkscape:vp_y="0 : 1000 : 0"
 104.284 +       inkscape:vp_x="0 : 0.5 : 1"
 104.285 +       sodipodi:type="inkscape:persp3d" />
 104.286 +    <inkscape:perspective
 104.287 +       id="perspective5794-69"
 104.288 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.289 +       inkscape:vp_z="1 : 0.5 : 1"
 104.290 +       inkscape:vp_y="0 : 1000 : 0"
 104.291 +       inkscape:vp_x="0 : 0.5 : 1"
 104.292 +       sodipodi:type="inkscape:persp3d" />
 104.293 +    <inkscape:perspective
 104.294 +       id="perspective5794-7"
 104.295 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.296 +       inkscape:vp_z="1 : 0.5 : 1"
 104.297 +       inkscape:vp_y="0 : 1000 : 0"
 104.298 +       inkscape:vp_x="0 : 0.5 : 1"
 104.299 +       sodipodi:type="inkscape:persp3d" />
 104.300 +    <inkscape:perspective
 104.301 +       id="perspective5794-2"
 104.302 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.303 +       inkscape:vp_z="1 : 0.5 : 1"
 104.304 +       inkscape:vp_y="0 : 1000 : 0"
 104.305 +       inkscape:vp_x="0 : 0.5 : 1"
 104.306 +       sodipodi:type="inkscape:persp3d" />
 104.307 +    <inkscape:perspective
 104.308 +       id="perspective5870"
 104.309 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.310 +       inkscape:vp_z="1 : 0.5 : 1"
 104.311 +       inkscape:vp_y="0 : 1000 : 0"
 104.312 +       inkscape:vp_x="0 : 0.5 : 1"
 104.313 +       sodipodi:type="inkscape:persp3d" />
 104.314 +    <inkscape:perspective
 104.315 +       id="perspective5870-6"
 104.316 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.317 +       inkscape:vp_z="1 : 0.5 : 1"
 104.318 +       inkscape:vp_y="0 : 1000 : 0"
 104.319 +       inkscape:vp_x="0 : 0.5 : 1"
 104.320 +       sodipodi:type="inkscape:persp3d" />
 104.321 +    <inkscape:perspective
 104.322 +       id="perspective5870-2"
 104.323 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.324 +       inkscape:vp_z="1 : 0.5 : 1"
 104.325 +       inkscape:vp_y="0 : 1000 : 0"
 104.326 +       inkscape:vp_x="0 : 0.5 : 1"
 104.327 +       sodipodi:type="inkscape:persp3d" />
 104.328 +    <inkscape:perspective
 104.329 +       id="perspective5870-61"
 104.330 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.331 +       inkscape:vp_z="1 : 0.5 : 1"
 104.332 +       inkscape:vp_y="0 : 1000 : 0"
 104.333 +       inkscape:vp_x="0 : 0.5 : 1"
 104.334 +       sodipodi:type="inkscape:persp3d" />
 104.335 +    <inkscape:perspective
 104.336 +       id="perspective5870-21"
 104.337 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.338 +       inkscape:vp_z="1 : 0.5 : 1"
 104.339 +       inkscape:vp_y="0 : 1000 : 0"
 104.340 +       inkscape:vp_x="0 : 0.5 : 1"
 104.341 +       sodipodi:type="inkscape:persp3d" />
 104.342 +    <inkscape:perspective
 104.343 +       id="perspective5870-9"
 104.344 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.345 +       inkscape:vp_z="1 : 0.5 : 1"
 104.346 +       inkscape:vp_y="0 : 1000 : 0"
 104.347 +       inkscape:vp_x="0 : 0.5 : 1"
 104.348 +       sodipodi:type="inkscape:persp3d" />
 104.349 +    <inkscape:perspective
 104.350 +       id="perspective5937"
 104.351 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.352 +       inkscape:vp_z="1 : 0.5 : 1"
 104.353 +       inkscape:vp_y="0 : 1000 : 0"
 104.354 +       inkscape:vp_x="0 : 0.5 : 1"
 104.355 +       sodipodi:type="inkscape:persp3d" />
 104.356 +    <inkscape:perspective
 104.357 +       id="perspective5937-9"
 104.358 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.359 +       inkscape:vp_z="1 : 0.5 : 1"
 104.360 +       inkscape:vp_y="0 : 1000 : 0"
 104.361 +       inkscape:vp_x="0 : 0.5 : 1"
 104.362 +       sodipodi:type="inkscape:persp3d" />
 104.363 +    <inkscape:perspective
 104.364 +       id="perspective5983"
 104.365 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.366 +       inkscape:vp_z="1 : 0.5 : 1"
 104.367 +       inkscape:vp_y="0 : 1000 : 0"
 104.368 +       inkscape:vp_x="0 : 0.5 : 1"
 104.369 +       sodipodi:type="inkscape:persp3d" />
 104.370 +    <inkscape:perspective
 104.371 +       id="perspective6011"
 104.372 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.373 +       inkscape:vp_z="1 : 0.5 : 1"
 104.374 +       inkscape:vp_y="0 : 1000 : 0"
 104.375 +       inkscape:vp_x="0 : 0.5 : 1"
 104.376 +       sodipodi:type="inkscape:persp3d" />
 104.377 +    <inkscape:perspective
 104.378 +       id="perspective6039"
 104.379 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.380 +       inkscape:vp_z="1 : 0.5 : 1"
 104.381 +       inkscape:vp_y="0 : 1000 : 0"
 104.382 +       inkscape:vp_x="0 : 0.5 : 1"
 104.383 +       sodipodi:type="inkscape:persp3d" />
 104.384 +    <inkscape:perspective
 104.385 +       id="perspective6067"
 104.386 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.387 +       inkscape:vp_z="1 : 0.5 : 1"
 104.388 +       inkscape:vp_y="0 : 1000 : 0"
 104.389 +       inkscape:vp_x="0 : 0.5 : 1"
 104.390 +       sodipodi:type="inkscape:persp3d" />
 104.391 +    <inkscape:perspective
 104.392 +       id="perspective6095"
 104.393 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.394 +       inkscape:vp_z="1 : 0.5 : 1"
 104.395 +       inkscape:vp_y="0 : 1000 : 0"
 104.396 +       inkscape:vp_x="0 : 0.5 : 1"
 104.397 +       sodipodi:type="inkscape:persp3d" />
 104.398 +    <inkscape:perspective
 104.399 +       id="perspective6123"
 104.400 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.401 +       inkscape:vp_z="1 : 0.5 : 1"
 104.402 +       inkscape:vp_y="0 : 1000 : 0"
 104.403 +       inkscape:vp_x="0 : 0.5 : 1"
 104.404 +       sodipodi:type="inkscape:persp3d" />
 104.405 +    <inkscape:perspective
 104.406 +       id="perspective6148"
 104.407 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.408 +       inkscape:vp_z="1 : 0.5 : 1"
 104.409 +       inkscape:vp_y="0 : 1000 : 0"
 104.410 +       inkscape:vp_x="0 : 0.5 : 1"
 104.411 +       sodipodi:type="inkscape:persp3d" />
 104.412 +    <inkscape:perspective
 104.413 +       id="perspective6173"
 104.414 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.415 +       inkscape:vp_z="1 : 0.5 : 1"
 104.416 +       inkscape:vp_y="0 : 1000 : 0"
 104.417 +       inkscape:vp_x="0 : 0.5 : 1"
 104.418 +       sodipodi:type="inkscape:persp3d" />
 104.419 +    <inkscape:perspective
 104.420 +       id="perspective6216"
 104.421 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.422 +       inkscape:vp_z="1 : 0.5 : 1"
 104.423 +       inkscape:vp_y="0 : 1000 : 0"
 104.424 +       inkscape:vp_x="0 : 0.5 : 1"
 104.425 +       sodipodi:type="inkscape:persp3d" />
 104.426 +    <inkscape:perspective
 104.427 +       id="perspective6238"
 104.428 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.429 +       inkscape:vp_z="1 : 0.5 : 1"
 104.430 +       inkscape:vp_y="0 : 1000 : 0"
 104.431 +       inkscape:vp_x="0 : 0.5 : 1"
 104.432 +       sodipodi:type="inkscape:persp3d" />
 104.433 +    <inkscape:perspective
 104.434 +       id="perspective6238-9"
 104.435 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.436 +       inkscape:vp_z="1 : 0.5 : 1"
 104.437 +       inkscape:vp_y="0 : 1000 : 0"
 104.438 +       inkscape:vp_x="0 : 0.5 : 1"
 104.439 +       sodipodi:type="inkscape:persp3d" />
 104.440 +    <inkscape:perspective
 104.441 +       id="perspective6269"
 104.442 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.443 +       inkscape:vp_z="1 : 0.5 : 1"
 104.444 +       inkscape:vp_y="0 : 1000 : 0"
 104.445 +       inkscape:vp_x="0 : 0.5 : 1"
 104.446 +       sodipodi:type="inkscape:persp3d" />
 104.447 +    <inkscape:perspective
 104.448 +       id="perspective6291"
 104.449 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.450 +       inkscape:vp_z="1 : 0.5 : 1"
 104.451 +       inkscape:vp_y="0 : 1000 : 0"
 104.452 +       inkscape:vp_x="0 : 0.5 : 1"
 104.453 +       sodipodi:type="inkscape:persp3d" />
 104.454 +    <inkscape:perspective
 104.455 +       id="perspective6313"
 104.456 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.457 +       inkscape:vp_z="1 : 0.5 : 1"
 104.458 +       inkscape:vp_y="0 : 1000 : 0"
 104.459 +       inkscape:vp_x="0 : 0.5 : 1"
 104.460 +       sodipodi:type="inkscape:persp3d" />
 104.461 +    <inkscape:perspective
 104.462 +       id="perspective6313-4"
 104.463 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.464 +       inkscape:vp_z="1 : 0.5 : 1"
 104.465 +       inkscape:vp_y="0 : 1000 : 0"
 104.466 +       inkscape:vp_x="0 : 0.5 : 1"
 104.467 +       sodipodi:type="inkscape:persp3d" />
 104.468 +    <inkscape:perspective
 104.469 +       id="perspective6344"
 104.470 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.471 +       inkscape:vp_z="1 : 0.5 : 1"
 104.472 +       inkscape:vp_y="0 : 1000 : 0"
 104.473 +       inkscape:vp_x="0 : 0.5 : 1"
 104.474 +       sodipodi:type="inkscape:persp3d" />
 104.475 +    <inkscape:perspective
 104.476 +       id="perspective6366"
 104.477 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.478 +       inkscape:vp_z="1 : 0.5 : 1"
 104.479 +       inkscape:vp_y="0 : 1000 : 0"
 104.480 +       inkscape:vp_x="0 : 0.5 : 1"
 104.481 +       sodipodi:type="inkscape:persp3d" />
 104.482 +    <inkscape:perspective
 104.483 +       id="perspective6388"
 104.484 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.485 +       inkscape:vp_z="1 : 0.5 : 1"
 104.486 +       inkscape:vp_y="0 : 1000 : 0"
 104.487 +       inkscape:vp_x="0 : 0.5 : 1"
 104.488 +       sodipodi:type="inkscape:persp3d" />
 104.489 +    <inkscape:perspective
 104.490 +       id="perspective6410"
 104.491 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.492 +       inkscape:vp_z="1 : 0.5 : 1"
 104.493 +       inkscape:vp_y="0 : 1000 : 0"
 104.494 +       inkscape:vp_x="0 : 0.5 : 1"
 104.495 +       sodipodi:type="inkscape:persp3d" />
 104.496 +    <inkscape:perspective
 104.497 +       id="perspective6435"
 104.498 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.499 +       inkscape:vp_z="1 : 0.5 : 1"
 104.500 +       inkscape:vp_y="0 : 1000 : 0"
 104.501 +       inkscape:vp_x="0 : 0.5 : 1"
 104.502 +       sodipodi:type="inkscape:persp3d" />
 104.503 +    <inkscape:perspective
 104.504 +       id="perspective6460"
 104.505 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.506 +       inkscape:vp_z="1 : 0.5 : 1"
 104.507 +       inkscape:vp_y="0 : 1000 : 0"
 104.508 +       inkscape:vp_x="0 : 0.5 : 1"
 104.509 +       sodipodi:type="inkscape:persp3d" />
 104.510 +    <inkscape:perspective
 104.511 +       id="perspective6485"
 104.512 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.513 +       inkscape:vp_z="1 : 0.5 : 1"
 104.514 +       inkscape:vp_y="0 : 1000 : 0"
 104.515 +       inkscape:vp_x="0 : 0.5 : 1"
 104.516 +       sodipodi:type="inkscape:persp3d" />
 104.517 +    <inkscape:perspective
 104.518 +       id="perspective6485-4"
 104.519 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.520 +       inkscape:vp_z="1 : 0.5 : 1"
 104.521 +       inkscape:vp_y="0 : 1000 : 0"
 104.522 +       inkscape:vp_x="0 : 0.5 : 1"
 104.523 +       sodipodi:type="inkscape:persp3d" />
 104.524 +    <inkscape:perspective
 104.525 +       id="perspective6521"
 104.526 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.527 +       inkscape:vp_z="1 : 0.5 : 1"
 104.528 +       inkscape:vp_y="0 : 1000 : 0"
 104.529 +       inkscape:vp_x="0 : 0.5 : 1"
 104.530 +       sodipodi:type="inkscape:persp3d" />
 104.531 +    <inkscape:perspective
 104.532 +       id="perspective6546"
 104.533 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.534 +       inkscape:vp_z="1 : 0.5 : 1"
 104.535 +       inkscape:vp_y="0 : 1000 : 0"
 104.536 +       inkscape:vp_x="0 : 0.5 : 1"
 104.537 +       sodipodi:type="inkscape:persp3d" />
 104.538 +    <inkscape:perspective
 104.539 +       id="perspective6568"
 104.540 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.541 +       inkscape:vp_z="1 : 0.5 : 1"
 104.542 +       inkscape:vp_y="0 : 1000 : 0"
 104.543 +       inkscape:vp_x="0 : 0.5 : 1"
 104.544 +       sodipodi:type="inkscape:persp3d" />
 104.545 +    <inkscape:perspective
 104.546 +       id="perspective6590"
 104.547 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.548 +       inkscape:vp_z="1 : 0.5 : 1"
 104.549 +       inkscape:vp_y="0 : 1000 : 0"
 104.550 +       inkscape:vp_x="0 : 0.5 : 1"
 104.551 +       sodipodi:type="inkscape:persp3d" />
 104.552 +    <inkscape:perspective
 104.553 +       id="perspective6615"
 104.554 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.555 +       inkscape:vp_z="1 : 0.5 : 1"
 104.556 +       inkscape:vp_y="0 : 1000 : 0"
 104.557 +       inkscape:vp_x="0 : 0.5 : 1"
 104.558 +       sodipodi:type="inkscape:persp3d" />
 104.559 +    <inkscape:perspective
 104.560 +       id="perspective6643"
 104.561 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.562 +       inkscape:vp_z="1 : 0.5 : 1"
 104.563 +       inkscape:vp_y="0 : 1000 : 0"
 104.564 +       inkscape:vp_x="0 : 0.5 : 1"
 104.565 +       sodipodi:type="inkscape:persp3d" />
 104.566 +    <inkscape:perspective
 104.567 +       id="perspective6665"
 104.568 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.569 +       inkscape:vp_z="1 : 0.5 : 1"
 104.570 +       inkscape:vp_y="0 : 1000 : 0"
 104.571 +       inkscape:vp_x="0 : 0.5 : 1"
 104.572 +       sodipodi:type="inkscape:persp3d" />
 104.573 +    <inkscape:perspective
 104.574 +       id="perspective6717"
 104.575 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.576 +       inkscape:vp_z="1 : 0.5 : 1"
 104.577 +       inkscape:vp_y="0 : 1000 : 0"
 104.578 +       inkscape:vp_x="0 : 0.5 : 1"
 104.579 +       sodipodi:type="inkscape:persp3d" />
 104.580 +    <inkscape:perspective
 104.581 +       id="perspective6754"
 104.582 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.583 +       inkscape:vp_z="1 : 0.5 : 1"
 104.584 +       inkscape:vp_y="0 : 1000 : 0"
 104.585 +       inkscape:vp_x="0 : 0.5 : 1"
 104.586 +       sodipodi:type="inkscape:persp3d" />
 104.587 +    <inkscape:perspective
 104.588 +       id="perspective6782"
 104.589 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.590 +       inkscape:vp_z="1 : 0.5 : 1"
 104.591 +       inkscape:vp_y="0 : 1000 : 0"
 104.592 +       inkscape:vp_x="0 : 0.5 : 1"
 104.593 +       sodipodi:type="inkscape:persp3d" />
 104.594 +    <inkscape:perspective
 104.595 +       id="perspective7475"
 104.596 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.597 +       inkscape:vp_z="1 : 0.5 : 1"
 104.598 +       inkscape:vp_y="0 : 1000 : 0"
 104.599 +       inkscape:vp_x="0 : 0.5 : 1"
 104.600 +       sodipodi:type="inkscape:persp3d" />
 104.601 +    <marker
 104.602 +       inkscape:stockid="Arrow2Lend"
 104.603 +       orient="auto"
 104.604 +       refY="0"
 104.605 +       refX="0"
 104.606 +       id="Arrow2Lend-2"
 104.607 +       style="overflow:visible">
 104.608 +      <path
 104.609 +         id="path6857-6"
 104.610 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.611 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.612 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.613 +    </marker>
 104.614 +    <inkscape:perspective
 104.615 +       id="perspective7693"
 104.616 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.617 +       inkscape:vp_z="1 : 0.5 : 1"
 104.618 +       inkscape:vp_y="0 : 1000 : 0"
 104.619 +       inkscape:vp_x="0 : 0.5 : 1"
 104.620 +       sodipodi:type="inkscape:persp3d" />
 104.621 +    <marker
 104.622 +       inkscape:stockid="Arrow2Lend"
 104.623 +       orient="auto"
 104.624 +       refY="0"
 104.625 +       refX="0"
 104.626 +       id="Arrow2Lend-7"
 104.627 +       style="overflow:visible">
 104.628 +      <path
 104.629 +         id="path6857-9"
 104.630 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.631 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.632 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.633 +    </marker>
 104.634 +    <inkscape:perspective
 104.635 +       id="perspective7721"
 104.636 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.637 +       inkscape:vp_z="1 : 0.5 : 1"
 104.638 +       inkscape:vp_y="0 : 1000 : 0"
 104.639 +       inkscape:vp_x="0 : 0.5 : 1"
 104.640 +       sodipodi:type="inkscape:persp3d" />
 104.641 +    <marker
 104.642 +       inkscape:stockid="Arrow2Lend"
 104.643 +       orient="auto"
 104.644 +       refY="0"
 104.645 +       refX="0"
 104.646 +       id="Arrow2Lend-0"
 104.647 +       style="overflow:visible">
 104.648 +      <path
 104.649 +         id="path6857-4"
 104.650 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.651 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.652 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.653 +    </marker>
 104.654 +    <inkscape:perspective
 104.655 +       id="perspective8329"
 104.656 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.657 +       inkscape:vp_z="1 : 0.5 : 1"
 104.658 +       inkscape:vp_y="0 : 1000 : 0"
 104.659 +       inkscape:vp_x="0 : 0.5 : 1"
 104.660 +       sodipodi:type="inkscape:persp3d" />
 104.661 +    <marker
 104.662 +       inkscape:stockid="Arrow2Lend"
 104.663 +       orient="auto"
 104.664 +       refY="0"
 104.665 +       refX="0"
 104.666 +       id="Arrow2Lend-0-0"
 104.667 +       style="overflow:visible">
 104.668 +      <path
 104.669 +         id="path6857-4-4"
 104.670 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.671 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.672 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.673 +    </marker>
 104.674 +    <inkscape:perspective
 104.675 +       id="perspective8367"
 104.676 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.677 +       inkscape:vp_z="1 : 0.5 : 1"
 104.678 +       inkscape:vp_y="0 : 1000 : 0"
 104.679 +       inkscape:vp_x="0 : 0.5 : 1"
 104.680 +       sodipodi:type="inkscape:persp3d" />
 104.681 +    <marker
 104.682 +       inkscape:stockid="Arrow2Lend"
 104.683 +       orient="auto"
 104.684 +       refY="0"
 104.685 +       refX="0"
 104.686 +       id="Arrow2Lend-24"
 104.687 +       style="overflow:visible">
 104.688 +      <path
 104.689 +         id="path6857-7"
 104.690 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.691 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.692 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.693 +    </marker>
 104.694 +    <inkscape:perspective
 104.695 +       id="perspective8395"
 104.696 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.697 +       inkscape:vp_z="1 : 0.5 : 1"
 104.698 +       inkscape:vp_y="0 : 1000 : 0"
 104.699 +       inkscape:vp_x="0 : 0.5 : 1"
 104.700 +       sodipodi:type="inkscape:persp3d" />
 104.701 +    <marker
 104.702 +       inkscape:stockid="Arrow2Lend"
 104.703 +       orient="auto"
 104.704 +       refY="0"
 104.705 +       refX="0"
 104.706 +       id="Arrow2Lend-3"
 104.707 +       style="overflow:visible">
 104.708 +      <path
 104.709 +         id="path6857-92"
 104.710 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.711 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.712 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.713 +    </marker>
 104.714 +    <inkscape:perspective
 104.715 +       id="perspective8423"
 104.716 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.717 +       inkscape:vp_z="1 : 0.5 : 1"
 104.718 +       inkscape:vp_y="0 : 1000 : 0"
 104.719 +       inkscape:vp_x="0 : 0.5 : 1"
 104.720 +       sodipodi:type="inkscape:persp3d" />
 104.721 +    <marker
 104.722 +       inkscape:stockid="Arrow2Lend"
 104.723 +       orient="auto"
 104.724 +       refY="0"
 104.725 +       refX="0"
 104.726 +       id="Arrow2Lend-30"
 104.727 +       style="overflow:visible">
 104.728 +      <path
 104.729 +         id="path6857-1"
 104.730 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.731 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.732 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.733 +    </marker>
 104.734 +    <inkscape:perspective
 104.735 +       id="perspective8423-8"
 104.736 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.737 +       inkscape:vp_z="1 : 0.5 : 1"
 104.738 +       inkscape:vp_y="0 : 1000 : 0"
 104.739 +       inkscape:vp_x="0 : 0.5 : 1"
 104.740 +       sodipodi:type="inkscape:persp3d" />
 104.741 +    <marker
 104.742 +       inkscape:stockid="Arrow2Lend"
 104.743 +       orient="auto"
 104.744 +       refY="0"
 104.745 +       refX="0"
 104.746 +       id="Arrow2Lend-9"
 104.747 +       style="overflow:visible">
 104.748 +      <path
 104.749 +         id="path6857-15"
 104.750 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 104.751 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 104.752 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 104.753 +    </marker>
 104.754 +    <inkscape:perspective
 104.755 +       id="perspective8497"
 104.756 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.757 +       inkscape:vp_z="1 : 0.5 : 1"
 104.758 +       inkscape:vp_y="0 : 1000 : 0"
 104.759 +       inkscape:vp_x="0 : 0.5 : 1"
 104.760 +       sodipodi:type="inkscape:persp3d" />
 104.761 +    <inkscape:perspective
 104.762 +       id="perspective8527"
 104.763 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.764 +       inkscape:vp_z="1 : 0.5 : 1"
 104.765 +       inkscape:vp_y="0 : 1000 : 0"
 104.766 +       inkscape:vp_x="0 : 0.5 : 1"
 104.767 +       sodipodi:type="inkscape:persp3d" />
 104.768 +    <inkscape:perspective
 104.769 +       id="perspective8552"
 104.770 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.771 +       inkscape:vp_z="1 : 0.5 : 1"
 104.772 +       inkscape:vp_y="0 : 1000 : 0"
 104.773 +       inkscape:vp_x="0 : 0.5 : 1"
 104.774 +       sodipodi:type="inkscape:persp3d" />
 104.775 +    <inkscape:perspective
 104.776 +       id="perspective9801"
 104.777 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.778 +       inkscape:vp_z="1 : 0.5 : 1"
 104.779 +       inkscape:vp_y="0 : 1000 : 0"
 104.780 +       inkscape:vp_x="0 : 0.5 : 1"
 104.781 +       sodipodi:type="inkscape:persp3d" />
 104.782 +    <inkscape:perspective
 104.783 +       id="perspective9853"
 104.784 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.785 +       inkscape:vp_z="1 : 0.5 : 1"
 104.786 +       inkscape:vp_y="0 : 1000 : 0"
 104.787 +       inkscape:vp_x="0 : 0.5 : 1"
 104.788 +       sodipodi:type="inkscape:persp3d" />
 104.789 +    <inkscape:perspective
 104.790 +       id="perspective13612"
 104.791 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.792 +       inkscape:vp_z="1 : 0.5 : 1"
 104.793 +       inkscape:vp_y="0 : 1000 : 0"
 104.794 +       inkscape:vp_x="0 : 0.5 : 1"
 104.795 +       sodipodi:type="inkscape:persp3d" />
 104.796 +    <inkscape:perspective
 104.797 +       id="perspective13612-0"
 104.798 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 104.799 +       inkscape:vp_z="1 : 0.5 : 1"
 104.800 +       inkscape:vp_y="0 : 1000 : 0"
 104.801 +       inkscape:vp_x="0 : 0.5 : 1"
 104.802 +       sodipodi:type="inkscape:persp3d" />
 104.803 +  </defs>
 104.804 +  <sodipodi:namedview
 104.805 +     id="base"
 104.806 +     pagecolor="#ffffff"
 104.807 +     bordercolor="#666666"
 104.808 +     borderopacity="1.0"
 104.809 +     inkscape:pageopacity="0.0"
 104.810 +     inkscape:pageshadow="2"
 104.811 +     inkscape:zoom="8.4410472"
 104.812 +     inkscape:cx="207.65862"
 104.813 +     inkscape:cy="630.4998"
 104.814 +     inkscape:document-units="px"
 104.815 +     inkscape:current-layer="layer1"
 104.816 +     showgrid="false"
 104.817 +     inkscape:window-width="1024"
 104.818 +     inkscape:window-height="691"
 104.819 +     inkscape:window-x="448"
 104.820 +     inkscape:window-y="1200"
 104.821 +     inkscape:window-maximized="1" />
 104.822 +  <metadata
 104.823 +     id="metadata7">
 104.824 +    <rdf:RDF>
 104.825 +      <cc:Work
 104.826 +         rdf:about="">
 104.827 +        <dc:format>image/svg+xml</dc:format>
 104.828 +        <dc:type
 104.829 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 104.830 +        <dc:title></dc:title>
 104.831 +      </cc:Work>
 104.832 +    </rdf:RDF>
 104.833 +  </metadata>
 104.834 +  <g
 104.835 +     inkscape:label="Layer 1"
 104.836 +     inkscape:groupmode="layer"
 104.837 +     id="layer1">
 104.838 +    <text
 104.839 +       xml:space="preserve"
 104.840 +       style="font-size:28px;font-style:normal;font-weight:normal;text-align:end;writing-mode:lr-tb;text-anchor:end;opacity:0.4;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;-inkscape-font-specification:Andale Mono"
 104.841 +       x="79.056923"
 104.842 +       y="337.789"
 104.843 +       id="text8477-4-48"><tspan
 104.844 +         sodipodi:role="line"
 104.845 +         x="79.056923"
 104.846 +         y="337.789"
 104.847 +         id="tspan8481-6-5">Token</tspan><tspan
 104.848 +         sodipodi:role="line"
 104.849 +         x="79.056923"
 104.850 +         y="372.789"
 104.851 +         id="tspan8569" /><tspan
 104.852 +         sodipodi:role="line"
 104.853 +         x="79.056923"
 104.854 +         y="407.789"
 104.855 +         id="tspan8585" /><tspan
 104.856 +         sodipodi:role="line"
 104.857 +         x="79.056923"
 104.858 +         y="442.789"
 104.859 +         id="tspan8571">Sybomtabelle</tspan><tspan
 104.860 +         sodipodi:role="line"
 104.861 +         x="79.056923"
 104.862 +         y="477.789"
 104.863 +         id="tspan8581" /><tspan
 104.864 +         sodipodi:role="line"
 104.865 +         x="79.056923"
 104.866 +         y="512.789"
 104.867 +         id="tspan8573">Syntaxbaum</tspan><tspan
 104.868 +         sodipodi:role="line"
 104.869 +         x="79.056923"
 104.870 +         y="547.789"
 104.871 +         id="tspan8583" /><tspan
 104.872 +         sodipodi:role="line"
 104.873 +         x="79.056923"
 104.874 +         y="582.789"
 104.875 +         id="tspan8575" /><tspan
 104.876 +         sodipodi:role="line"
 104.877 +         x="79.056923"
 104.878 +         y="617.789"
 104.879 +         id="tspan8577" /><tspan
 104.880 +         sodipodi:role="line"
 104.881 +         x="79.056923"
 104.882 +         y="652.789"
 104.883 +         id="tspan9701" /><tspan
 104.884 +         sodipodi:role="line"
 104.885 +         x="79.056923"
 104.886 +         y="687.789"
 104.887 +         id="tspan9703" /><tspan
 104.888 +         sodipodi:role="line"
 104.889 +         x="79.056923"
 104.890 +         y="722.789"
 104.891 +         id="tspan9705" /><tspan
 104.892 +         sodipodi:role="line"
 104.893 +         x="79.056923"
 104.894 +         y="617.789"
 104.895 +         id="tspan9707">Semantische</tspan><tspan
 104.896 +         sodipodi:role="line"
 104.897 +         x="79.056923"
 104.898 +         y="757.789"
 104.899 +         id="tspan8579">Datenbank</tspan></text>
 104.900 +    <path
 104.901 +       sodipodi:type="arc"
 104.902 +       style="fill:none;stroke:#000000;stroke-width:2.00294668;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6.00884003,6.00884003;stroke-dashoffset:0"
 104.903 +       id="path3717"
 104.904 +       sodipodi:cx="171.9754"
 104.905 +       sodipodi:cy="238.75661"
 104.906 +       sodipodi:rx="80.97496"
 104.907 +       sodipodi:ry="80.97496"
 104.908 +       d="m 252.95036,238.75661 a 80.97496,80.97496 0 1 1 -161.949917,0 80.97496,80.97496 0 1 1 161.949917,0 z"
 104.909 +       transform="matrix(0.99852883,0,0,0.99852883,33.835784,-2.8055282)" />
 104.910 +    <rect
 104.911 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.912 +       id="rect3750-7"
 104.913 +       width="66.309761"
 104.914 +       height="12.326462"
 104.915 +       x="414.66449"
 104.916 +       y="150.72304" />
 104.917 +    <rect
 104.918 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.919 +       id="rect3750-7-8"
 104.920 +       width="66.309761"
 104.921 +       height="12.326462"
 104.922 +       x="414.45862"
 104.923 +       y="169.11182" />
 104.924 +    <rect
 104.925 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.926 +       id="rect3750-7-7"
 104.927 +       width="66.309761"
 104.928 +       height="12.326462"
 104.929 +       x="414.36243"
 104.930 +       y="186.71916" />
 104.931 +    <rect
 104.932 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.933 +       id="rect3750-7-8-7"
 104.934 +       width="66.309761"
 104.935 +       height="12.326462"
 104.936 +       x="414.15649"
 104.937 +       y="205.10794" />
 104.938 +    <rect
 104.939 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.940 +       id="rect3750-7-6"
 104.941 +       width="66.309761"
 104.942 +       height="12.326462"
 104.943 +       x="414.06799"
 104.944 +       y="223.0705" />
 104.945 +    <rect
 104.946 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.947 +       id="rect3750-7-8-4"
 104.948 +       width="66.309761"
 104.949 +       height="12.326462"
 104.950 +       x="413.86206"
 104.951 +       y="241.45927" />
 104.952 +    <rect
 104.953 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.954 +       id="rect3750-7-7-3"
 104.955 +       width="66.309761"
 104.956 +       height="12.326462"
 104.957 +       x="413.76587"
 104.958 +       y="259.06662" />
 104.959 +    <rect
 104.960 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.961 +       id="rect3750-7-8-7-0"
 104.962 +       width="66.309761"
 104.963 +       height="12.326462"
 104.964 +       x="413.56"
 104.965 +       y="277.45541" />
 104.966 +    <rect
 104.967 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 104.968 +       id="rect3750-7-4"
 104.969 +       width="66.309761"
 104.970 +       height="12.326462"
 104.971 +       x="317.67624"
 104.972 +       y="229.82715" />
 104.973 +    <text
 104.974 +       xml:space="preserve"
 104.975 +       style="font-size:35.25738907px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 104.976 +       x="232.09673"
 104.977 +       y="219.49977"
 104.978 +       id="text2933-0-2"
 104.979 +       transform="scale(0.88143469,1.134514)"><tspan
 104.980 +         sodipodi:role="line"
 104.981 +         id="tspan2935-5-6"
 104.982 +         x="232.09673"
 104.983 +         y="219.49977">Scanner</tspan></text>
 104.984 +    <path
 104.985 +       sodipodi:type="arc"
 104.986 +       style="fill:none;stroke:#000000;stroke-width:2.00294668;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6.00884003,6.00884003;stroke-dashoffset:0"
 104.987 +       id="path3717-4"
 104.988 +       sodipodi:cx="171.9754"
 104.989 +       sodipodi:cy="238.75661"
 104.990 +       sodipodi:rx="80.97496"
 104.991 +       sodipodi:ry="80.97496"
 104.992 +       d="m 252.95036,238.75661 a 80.97496,80.97496 0 1 1 -161.949917,0 80.97496,80.97496 0 1 1 161.949917,0 z"
 104.993 +       transform="matrix(0.99852883,0,0,0.99852883,275.51866,240.75899)" />
 104.994 +    <text
 104.995 +       xml:space="preserve"
 104.996 +       style="font-size:35.25738907px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 104.997 +       x="506.28928"
 104.998 +       y="434.18768"
 104.999 +       id="text2933-0-2-1"
104.1000 +       transform="scale(0.88143469,1.134514)"><tspan
104.1001 +         sodipodi:role="line"
104.1002 +         id="tspan2935-5-6-2"
104.1003 +         x="506.28928"
104.1004 +         y="434.18768">Parser</tspan></text>
104.1005 +    <rect
104.1006 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1007 +       id="rect3750-7-4-8"
104.1008 +       width="66.309761"
104.1009 +       height="12.326462"
104.1010 +       x="413.91739"
104.1011 +       y="338.16507" />
104.1012 +    <rect
104.1013 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1014 +       id="rect5536-8"
104.1015 +       width="14.67208"
104.1016 +       height="14.67208"
104.1017 +       x="200.69604"
104.1018 +       y="483.11923" />
104.1019 +    <path
104.1020 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1021 +       d="m 200.94435,497.38498 -11.94188,13.34689"
104.1022 +       id="path6206-92"
104.1023 +       inkscape:connector-type="polyline" />
104.1024 +    <path
104.1025 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1026 +       d="m 214.88381,497.24696 11.45899,13.7635"
104.1027 +       id="path6206-9-8"
104.1028 +       inkscape:connector-type="polyline" />
104.1029 +    <rect
104.1030 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1031 +       id="rect5536-1-8"
104.1032 +       width="14.67208"
104.1033 +       height="14.67208"
104.1034 +       x="174.50137"
104.1035 +       y="510.56104" />
104.1036 +    <rect
104.1037 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1038 +       id="rect5536-6-8"
104.1039 +       width="14.67208"
104.1040 +       height="14.67208"
104.1041 +       x="225.92155"
104.1042 +       y="510.70166" />
104.1043 +    <path
104.1044 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1045 +       d="M 174.88298,525.13237 162.94111,538.4791"
104.1046 +       id="path6206-2-6"
104.1047 +       inkscape:connector-type="polyline" />
104.1048 +    <path
104.1049 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1050 +       d="m 189.03318,524.92397 11.45899,13.76352"
104.1051 +       id="path6206-9-5-8"
104.1052 +       inkscape:connector-type="polyline" />
104.1053 +    <rect
104.1054 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1055 +       id="rect5536-1-4-38"
104.1056 +       width="14.67208"
104.1057 +       height="14.67208"
104.1058 +       x="200.21141"
104.1059 +       y="538.23804" />
104.1060 +    <rect
104.1061 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1062 +       id="rect5536-1-9-3"
104.1063 +       width="14.67208"
104.1064 +       height="14.67208"
104.1065 +       x="148.22932"
104.1066 +       y="538.37878" />
104.1067 +    <path
104.1068 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1069 +       d="m 240.59397,525.3454 11.45899,13.76366"
104.1070 +       id="path6206-9-9-3"
104.1071 +       inkscape:connector-type="polyline" />
104.1072 +    <rect
104.1073 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1074 +       id="rect5536-1-4-3-3"
104.1075 +       width="14.67208"
104.1076 +       height="14.67208"
104.1077 +       x="251.7722"
104.1078 +       y="539.08118" />
104.1079 +    <rect
104.1080 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1081 +       id="rect3750-7-4-8-8"
104.1082 +       width="65.171761"
104.1083 +       height="46.529694"
104.1084 +       x="175.07274"
104.1085 +       y="398.59753" />
104.1086 +    <path
104.1087 +       sodipodi:type="arc"
104.1088 +       style="fill:none;stroke:#000000;stroke-width:2.00294668;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6.00884003,6.00884003;stroke-dashoffset:0"
104.1089 +       id="path3717-4-0"
104.1090 +       sodipodi:cx="171.9754"
104.1091 +       sodipodi:cy="238.75661"
104.1092 +       sodipodi:rx="80.97496"
104.1093 +       sodipodi:ry="80.97496"
104.1094 +       d="m 252.95036,238.75661 a 80.97496,80.97496 0 1 1 -161.949917,0 80.97496,80.97496 0 1 1 161.949917,0 z"
104.1095 +       transform="matrix(0.99852883,0,0,0.99852883,36.495413,461.25776)" />
104.1096 +    <text
104.1097 +       xml:space="preserve"
104.1098 +       style="font-size:35.25738907px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
104.1099 +       x="235.11368"
104.1100 +       y="628.54553"
104.1101 +       id="text2933-0-2-1-4"
104.1102 +       transform="scale(0.88143469,1.134514)"><tspan
104.1103 +         sodipodi:role="line"
104.1104 +         id="tspan2935-5-6-2-7"
104.1105 +         x="235.11368"
104.1106 +         y="628.54553">Synthese</tspan></text>
104.1107 +    <rect
104.1108 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1109 +       id="rect5536-8-6"
104.1110 +       width="7.726438"
104.1111 +       height="8.459693"
104.1112 +       x="399.22473"
104.1113 +       y="657.91382" />
104.1114 +    <path
104.1115 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1116 +       d="m 399.35547,666.13921 -6.28869,7.69561"
104.1117 +       id="path6206-92-8"
104.1118 +       inkscape:connector-type="polyline" />
104.1119 +    <path
104.1120 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1121 +       d="m 406.6961,666.05963 6.0344,7.93582"
104.1122 +       id="path6206-9-8-9"
104.1123 +       inkscape:connector-type="polyline" />
104.1124 +    <rect
104.1125 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1126 +       id="rect5536-1-8-0"
104.1127 +       width="7.726438"
104.1128 +       height="8.459693"
104.1129 +       x="385.43039"
104.1130 +       y="673.73627" />
104.1131 +    <rect
104.1132 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1133 +       id="rect5536-6-8-6"
104.1134 +       width="7.726438"
104.1135 +       height="8.459693"
104.1136 +       x="412.50867"
104.1137 +       y="673.81744" />
104.1138 +    <path
104.1139 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1140 +       d="m 385.63134,682.13793 -6.28869,7.69551"
104.1141 +       id="path6206-2-6-8"
104.1142 +       inkscape:connector-type="polyline" />
104.1143 +    <path
104.1144 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1145 +       d="m 393.08295,682.01776 6.0344,7.93584"
104.1146 +       id="path6206-9-5-8-7"
104.1147 +       inkscape:connector-type="polyline" />
104.1148 +    <rect
104.1149 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1150 +       id="rect5536-1-4-38-9"
104.1151 +       width="7.726438"
104.1152 +       height="8.459693"
104.1153 +       x="398.96951"
104.1154 +       y="689.69446" />
104.1155 +    <rect
104.1156 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1157 +       id="rect5536-1-9-3-0"
104.1158 +       width="7.726438"
104.1159 +       height="8.459693"
104.1160 +       x="371.59531"
104.1161 +       y="689.77557" />
104.1162 +    <path
104.1163 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1164 +       d="m 420.23529,682.26075 6.03439,7.93592"
104.1165 +       id="path6206-9-9-3-3"
104.1166 +       inkscape:connector-type="polyline" />
104.1167 +    <rect
104.1168 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1169 +       id="rect5536-1-4-3-3-3"
104.1170 +       width="7.726438"
104.1171 +       height="8.459693"
104.1172 +       x="426.12183"
104.1173 +       y="690.1806" />
104.1174 +    <rect
104.1175 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1176 +       id="rect3750-7-4-8-8-3"
104.1177 +       width="159.8775"
104.1178 +       height="109.26003"
104.1179 +       x="361.83142"
104.1180 +       y="649.84491" />
104.1181 +    <path
104.1182 +       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
104.1183 +       d="m 207.95524,88.501556 -0.82066,64.515354"
104.1184 +       id="path6831"
104.1185 +       inkscape:connector-type="polyline" />
104.1186 +    <path
104.1187 +       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none"
104.1188 +       d="m 286.81547,235.60486 29.18335,0"
104.1189 +       id="path7281"
104.1190 +       inkscape:connector-type="polyline" />
104.1191 +    <path
104.1192 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2,6;marker-end:url(#EmptyTriangleOutL);stroke-dashoffset:0"
104.1193 +       d="m 350.97921,229.81921 c 4.3467,-155.321965 89.92338,-117.18613 99.10549,-80.11857"
104.1194 +       id="path7281-5"
104.1195 +       inkscape:connector-type="polyline"
104.1196 +       sodipodi:nodetypes="cc" />
104.1197 +    <path
104.1198 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2,4;marker-end:url(#EmptyTriangleOutL);stroke-dashoffset:0"
104.1199 +       d="m 447.15711,290.1502 0,46.14106"
104.1200 +       id="path7281-6"
104.1201 +       inkscape:connector-type="polyline" />
104.1202 +    <path
104.1203 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
104.1204 +       d="m 447.06303,350.42169 0,46.14106"
104.1205 +       id="path7281-6-1"
104.1206 +       inkscape:connector-type="polyline" />
104.1207 +    <path
104.1208 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-0);stroke-miterlimit:4;stroke-dasharray:none"
104.1209 +       d="M 366.17036,483.15291 C 290.48925,475.57952 313.4328,424.01667 241.18147,424.95957"
104.1210 +       id="path7933"
104.1211 +       inkscape:connector-type="polyline"
104.1212 +       sodipodi:nodetypes="cc" />
104.1213 +    <path
104.1214 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend-0);stroke-miterlimit:4;stroke-dasharray:none"
104.1215 +       d="m 366.33217,483.203 c -62.6415,0.0468 -69.9457,45.40763 -124.06084,41.72604"
104.1216 +       id="path7933-8"
104.1217 +       inkscape:connector-type="polyline"
104.1218 +       sodipodi:nodetypes="cc" />
104.1219 +    <path
104.1220 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,6;stroke-dashoffset:0"
104.1221 +       d="M 155.10797,538.37878 C 129.61907,453.29123 149.9669,432.7918 174.99361,418.88532"
104.1222 +       id="path8349"
104.1223 +       inkscape:connector-type="polyline"
104.1224 +       inkscape:connection-start="#rect5536-1-9-3"
104.1225 +       sodipodi:nodetypes="cc" />
104.1226 +    <path
104.1227 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,6;stroke-dashoffset:0"
104.1228 +       d="m 182.38243,510.56104 c -4.19732,-11.00485 -7.00702,-24.5867 4.86073,-65.42668"
104.1229 +       id="path8351"
104.1230 +       inkscape:connector-type="polyline"
104.1231 +       inkscape:connection-start="#rect5536-1-8"
104.1232 +       sodipodi:nodetypes="cc" />
104.1233 +    <path
104.1234 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;stroke-miterlimit:4;stroke-dasharray:2,6;stroke-dashoffset:0"
104.1235 +       d="m 232.60764,510.70841 c 9.88176,-7.71563 7.61255,-38.01396 -5.99767,-65.40943"
104.1236 +       id="path8355"
104.1237 +       inkscape:connector-type="polyline"
104.1238 +       sodipodi:nodetypes="cc" />
104.1239 +    <path
104.1240 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,6;stroke-dashoffset:0"
104.1241 +       d="m 257.91213,539.08118 c 20.27219,-45.25 22.83164,-83.97315 -17.34747,-110.62276"
104.1242 +       id="path8357"
104.1243 +       inkscape:connector-type="polyline"
104.1244 +       inkscape:connection-start="#rect5536-1-4-3-3"
104.1245 +       sodipodi:nodetypes="cc" />
104.1246 +    <path
104.1247 +       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
104.1248 +       d="m 208.14431,552.49501 -0.82066,64.51535"
104.1249 +       id="path6831-9"
104.1250 +       inkscape:connector-type="polyline" />
104.1251 +    <path
104.1252 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
104.1253 +       d="m 282.84737,669.60356 77.26177,0"
104.1254 +       id="path7281-8"
104.1255 +       inkscape:connector-type="polyline" />
104.1256 +    <path
104.1257 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
104.1258 +       d="m 288.61951,698.89781 71.26731,0"
104.1259 +       id="path7281-8-7"
104.1260 +       inkscape:connector-type="polyline" />
104.1261 +    <path
104.1262 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
104.1263 +       d="m 282.91349,730.9699 77.26026,0"
104.1264 +       id="path7281-8-4"
104.1265 +       inkscape:connector-type="polyline" />
104.1266 +    <text
104.1267 +       xml:space="preserve"
104.1268 +       style="font-size:36px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
104.1269 +       x="206.41553"
104.1270 +       y="42.257351"
104.1271 +       id="text8483"><tspan
104.1272 +         sodipodi:role="line"
104.1273 +         id="tspan8485"
104.1274 +         x="206.41553"
104.1275 +         y="42.257351">ATCCL</tspan><tspan
104.1276 +         sodipodi:role="line"
104.1277 +         x="206.41553"
104.1278 +         y="87.257355"
104.1279 +         id="tspan8487">Code</tspan></text>
104.1280 +    <path
104.1281 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.40000000000000002;marker-end:none;marker-start:url(#DotM);stroke-miterlimit:4;stroke-dasharray:none"
104.1282 +       d="M 82.448105,330.55895 C 251.47046,331.25988 350.69482,320.42441 352.34364,243.05954"
104.1283 +       id="path8587"
104.1284 +       inkscape:connector-type="polyline"
104.1285 +       inkscape:connection-end="#rect3750-7-4"
104.1286 +       sodipodi:nodetypes="cc" />
104.1287 +    <path
104.1288 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM);opacity:0.40000000000000002;stroke-miterlimit:4;stroke-dasharray:none"
104.1289 +       d="M 84.251671,434.96956 175.07274,424.86878"
104.1290 +       id="path8997"
104.1291 +       inkscape:connector-type="polyline"
104.1292 +       inkscape:connection-end="#rect3750-7-4-8-8"
104.1293 +       sodipodi:nodetypes="cc" />
104.1294 +    <path
104.1295 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM);opacity:0.40000000000000002;stroke-miterlimit:4;stroke-dasharray:none"
104.1296 +       d="m 83.34574,505.17928 64.88358,36.50298"
104.1297 +       id="path9203"
104.1298 +       inkscape:connector-type="polyline"
104.1299 +       inkscape:connection-end="#rect5536-1-9-3"
104.1300 +       sodipodi:nodetypes="cc" />
104.1301 +    <path
104.1302 +       style="opacity:0.40000000000000002;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM);stroke-miterlimit:4;stroke-dasharray:none"
104.1303 +       d="M 84.731172,769.4982 C 222.02151,799.50999 449.88728,815.43834 449.15562,759.63954"
104.1304 +       id="path9411"
104.1305 +       inkscape:connector-type="polyline"
104.1306 +       sodipodi:nodetypes="cc" />
104.1307 +    <rect
104.1308 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1309 +       id="rect5536-8-6-6"
104.1310 +       width="7.726438"
104.1311 +       height="8.459693"
104.1312 +       x="475.43301"
104.1313 +       y="658.3205" />
104.1314 +    <path
104.1315 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1316 +       d="m 475.56378,666.5459 -6.28869,7.69561"
104.1317 +       id="path6206-92-8-7"
104.1318 +       inkscape:connector-type="polyline" />
104.1319 +    <path
104.1320 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1321 +       d="m 482.90441,666.46632 6.0344,7.93582"
104.1322 +       id="path6206-9-8-9-0"
104.1323 +       inkscape:connector-type="polyline" />
104.1324 +    <rect
104.1325 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1326 +       id="rect5536-1-8-0-4"
104.1327 +       width="7.726438"
104.1328 +       height="8.459693"
104.1329 +       x="461.63867"
104.1330 +       y="674.14294" />
104.1331 +    <rect
104.1332 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1333 +       id="rect5536-6-8-6-8"
104.1334 +       width="7.726438"
104.1335 +       height="8.459693"
104.1336 +       x="488.71695"
104.1337 +       y="674.22412" />
104.1338 +    <path
104.1339 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1340 +       d="m 461.83965,682.54462 -6.28869,7.69551"
104.1341 +       id="path6206-2-6-8-4"
104.1342 +       inkscape:connector-type="polyline" />
104.1343 +    <path
104.1344 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1345 +       d="m 469.29126,682.42445 6.0344,7.93584"
104.1346 +       id="path6206-9-5-8-7-8"
104.1347 +       inkscape:connector-type="polyline" />
104.1348 +    <rect
104.1349 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1350 +       id="rect5536-1-4-38-9-1"
104.1351 +       width="7.726438"
104.1352 +       height="8.459693"
104.1353 +       x="475.1778"
104.1354 +       y="690.10114" />
104.1355 +    <rect
104.1356 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1357 +       id="rect5536-1-9-3-0-6"
104.1358 +       width="7.726438"
104.1359 +       height="8.459693"
104.1360 +       x="447.80359"
104.1361 +       y="690.18225" />
104.1362 +    <path
104.1363 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1364 +       d="m 496.4436,682.66744 6.03439,7.93592"
104.1365 +       id="path6206-9-9-3-3-8"
104.1366 +       inkscape:connector-type="polyline" />
104.1367 +    <rect
104.1368 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1369 +       id="rect5536-1-4-3-3-3-5"
104.1370 +       width="7.726438"
104.1371 +       height="8.459693"
104.1372 +       x="502.33011"
104.1373 +       y="690.58728" />
104.1374 +    <rect
104.1375 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1376 +       id="rect5536-8-6-7"
104.1377 +       width="7.726438"
104.1378 +       height="8.459693"
104.1379 +       x="399.21146"
104.1380 +       y="709.98584" />
104.1381 +    <path
104.1382 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1383 +       d="m 399.3422,718.21128 -6.28869,7.69561"
104.1384 +       id="path6206-92-8-1"
104.1385 +       inkscape:connector-type="polyline" />
104.1386 +    <path
104.1387 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1388 +       d="m 406.68283,718.1317 6.0344,7.93582"
104.1389 +       id="path6206-9-8-9-2"
104.1390 +       inkscape:connector-type="polyline" />
104.1391 +    <rect
104.1392 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1393 +       id="rect5536-1-8-0-2"
104.1394 +       width="7.726438"
104.1395 +       height="8.459693"
104.1396 +       x="385.41711"
104.1397 +       y="725.80829" />
104.1398 +    <rect
104.1399 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1400 +       id="rect5536-6-8-6-1"
104.1401 +       width="7.726438"
104.1402 +       height="8.459693"
104.1403 +       x="412.49539"
104.1404 +       y="725.88947" />
104.1405 +    <path
104.1406 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1407 +       d="m 385.61807,734.21 -6.28869,7.69551"
104.1408 +       id="path6206-2-6-8-5"
104.1409 +       inkscape:connector-type="polyline" />
104.1410 +    <path
104.1411 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1412 +       d="m 393.06968,734.08983 6.0344,7.93584"
104.1413 +       id="path6206-9-5-8-7-0"
104.1414 +       inkscape:connector-type="polyline" />
104.1415 +    <rect
104.1416 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1417 +       id="rect5536-1-4-38-9-9"
104.1418 +       width="7.726438"
104.1419 +       height="8.459693"
104.1420 +       x="398.95624"
104.1421 +       y="741.76648" />
104.1422 +    <rect
104.1423 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1424 +       id="rect5536-1-9-3-0-0"
104.1425 +       width="7.726438"
104.1426 +       height="8.459693"
104.1427 +       x="371.58203"
104.1428 +       y="741.8476" />
104.1429 +    <path
104.1430 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1431 +       d="m 420.22202,734.33282 6.03439,7.93592"
104.1432 +       id="path6206-9-9-3-3-4"
104.1433 +       inkscape:connector-type="polyline" />
104.1434 +    <rect
104.1435 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1436 +       id="rect5536-1-4-3-3-3-0"
104.1437 +       width="7.726438"
104.1438 +       height="8.459693"
104.1439 +       x="426.10855"
104.1440 +       y="742.25262" />
104.1441 +    <rect
104.1442 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1443 +       id="rect5536-8-6-6-1"
104.1444 +       width="7.726438"
104.1445 +       height="8.459693"
104.1446 +       x="475.41974"
104.1447 +       y="710.39252" />
104.1448 +    <path
104.1449 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1450 +       d="m 475.55051,718.61797 -6.28869,7.69561"
104.1451 +       id="path6206-92-8-7-3"
104.1452 +       inkscape:connector-type="polyline" />
104.1453 +    <path
104.1454 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1455 +       d="m 482.89114,718.53839 6.0344,7.93582"
104.1456 +       id="path6206-9-8-9-0-7"
104.1457 +       inkscape:connector-type="polyline" />
104.1458 +    <rect
104.1459 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1460 +       id="rect5536-1-8-0-4-4"
104.1461 +       width="7.726438"
104.1462 +       height="8.459693"
104.1463 +       x="461.6254"
104.1464 +       y="726.21497" />
104.1465 +    <rect
104.1466 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1467 +       id="rect5536-6-8-6-8-1"
104.1468 +       width="7.726438"
104.1469 +       height="8.459693"
104.1470 +       x="488.70367"
104.1471 +       y="726.29614" />
104.1472 +    <path
104.1473 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1474 +       d="m 461.82638,734.61669 -6.28869,7.69551"
104.1475 +       id="path6206-2-6-8-4-1"
104.1476 +       inkscape:connector-type="polyline" />
104.1477 +    <path
104.1478 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1479 +       d="m 469.27799,734.49652 6.0344,7.93584"
104.1480 +       id="path6206-9-5-8-7-8-3"
104.1481 +       inkscape:connector-type="polyline" />
104.1482 +    <rect
104.1483 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1484 +       id="rect5536-1-4-38-9-1-0"
104.1485 +       width="7.726438"
104.1486 +       height="8.459693"
104.1487 +       x="475.16452"
104.1488 +       y="742.17316" />
104.1489 +    <rect
104.1490 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1491 +       id="rect5536-1-9-3-0-6-3"
104.1492 +       width="7.726438"
104.1493 +       height="8.459693"
104.1494 +       x="447.79031"
104.1495 +       y="742.25427" />
104.1496 +    <path
104.1497 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1498 +       d="m 496.43033,734.73951 6.03439,7.93592"
104.1499 +       id="path6206-9-9-3-3-8-2"
104.1500 +       inkscape:connector-type="polyline" />
104.1501 +    <rect
104.1502 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
104.1503 +       id="rect5536-1-4-3-3-3-5-1"
104.1504 +       width="7.726438"
104.1505 +       height="8.459693"
104.1506 +       x="502.3168"
104.1507 +       y="742.6593" />
104.1508 +    <path
104.1509 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1510 +       d="m 186.35129,410.72167 41.22711,0.11847"
104.1511 +       id="path13602"
104.1512 +       inkscape:connector-type="polyline" />
104.1513 +    <path
104.1514 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1515 +       d="m 186.35129,421.72866 41.22711,0.11847"
104.1516 +       id="path13602-5"
104.1517 +       inkscape:connector-type="polyline" />
104.1518 +    <path
104.1519 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
104.1520 +       d="m 186.31664,432.16787 41.22711,0.11847"
104.1521 +       id="path13602-4"
104.1522 +       inkscape:connector-type="polyline" />
104.1523 +  </g>
104.1524 +</svg>
   105.1 Binary file paper/src/images/compiler.pdf has changed
   106.1 Binary file paper/src/images/compiler.png has changed
   107.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   107.2 +++ b/paper/src/images/compiler.svg	Fri Jun 04 13:48:28 2010 +0200
   107.3 @@ -0,0 +1,305 @@
   107.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   107.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
   107.6 +
   107.7 +<svg
   107.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
   107.9 +   xmlns:cc="http://creativecommons.org/ns#"
  107.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  107.11 +   xmlns:svg="http://www.w3.org/2000/svg"
  107.12 +   xmlns="http://www.w3.org/2000/svg"
  107.13 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  107.14 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  107.15 +   width="744.09448819"
  107.16 +   height="1052.3622047"
  107.17 +   id="svg2"
  107.18 +   version="1.1"
  107.19 +   inkscape:version="0.47pre4 r22446"
  107.20 +   sodipodi:docname="compiler.svg"
  107.21 +   inkscape:export-filename="/home/sowa/workspace/comsoft/thesis/paper/src/images/compiler.png"
  107.22 +   inkscape:export-xdpi="90"
  107.23 +   inkscape:export-ydpi="90">
  107.24 +  <defs
  107.25 +     id="defs4">
  107.26 +    <marker
  107.27 +       inkscape:stockid="EmptyTriangleOutL"
  107.28 +       orient="auto"
  107.29 +       refY="0.0"
  107.30 +       refX="0.0"
  107.31 +       id="EmptyTriangleOutL"
  107.32 +       style="overflow:visible">
  107.33 +      <path
  107.34 +         id="path3801"
  107.35 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
  107.36 +         style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt;marker-start:none"
  107.37 +         transform="scale(0.8) translate(-6,0)" />
  107.38 +    </marker>
  107.39 +    <marker
  107.40 +       inkscape:stockid="Arrow2Lend"
  107.41 +       orient="auto"
  107.42 +       refY="0.0"
  107.43 +       refX="0.0"
  107.44 +       id="Arrow2Lend"
  107.45 +       style="overflow:visible;">
  107.46 +      <path
  107.47 +         id="path3661"
  107.48 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
  107.49 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  107.50 +         transform="scale(1.1) rotate(180) translate(1,0)" />
  107.51 +    </marker>
  107.52 +    <inkscape:perspective
  107.53 +       sodipodi:type="inkscape:persp3d"
  107.54 +       inkscape:vp_x="0 : 526.18109 : 1"
  107.55 +       inkscape:vp_y="0 : 1000 : 0"
  107.56 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
  107.57 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
  107.58 +       id="perspective10" />
  107.59 +    <inkscape:perspective
  107.60 +       id="perspective3606"
  107.61 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  107.62 +       inkscape:vp_z="1 : 0.5 : 1"
  107.63 +       inkscape:vp_y="0 : 1000 : 0"
  107.64 +       inkscape:vp_x="0 : 0.5 : 1"
  107.65 +       sodipodi:type="inkscape:persp3d" />
  107.66 +    <inkscape:perspective
  107.67 +       id="perspective4093"
  107.68 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  107.69 +       inkscape:vp_z="1 : 0.5 : 1"
  107.70 +       inkscape:vp_y="0 : 1000 : 0"
  107.71 +       inkscape:vp_x="0 : 0.5 : 1"
  107.72 +       sodipodi:type="inkscape:persp3d" />
  107.73 +    <marker
  107.74 +       inkscape:stockid="Arrow2Lend"
  107.75 +       orient="auto"
  107.76 +       refY="0"
  107.77 +       refX="0"
  107.78 +       id="Arrow2Lend-1"
  107.79 +       style="overflow:visible">
  107.80 +      <path
  107.81 +         id="path3661-0"
  107.82 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  107.83 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  107.84 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  107.85 +    </marker>
  107.86 +    <inkscape:perspective
  107.87 +       id="perspective4123"
  107.88 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  107.89 +       inkscape:vp_z="1 : 0.5 : 1"
  107.90 +       inkscape:vp_y="0 : 1000 : 0"
  107.91 +       inkscape:vp_x="0 : 0.5 : 1"
  107.92 +       sodipodi:type="inkscape:persp3d" />
  107.93 +    <marker
  107.94 +       inkscape:stockid="Arrow2Lend"
  107.95 +       orient="auto"
  107.96 +       refY="0"
  107.97 +       refX="0"
  107.98 +       id="Arrow2Lend-6"
  107.99 +       style="overflow:visible">
 107.100 +      <path
 107.101 +         id="path3661-3"
 107.102 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 107.103 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 107.104 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 107.105 +    </marker>
 107.106 +    <inkscape:perspective
 107.107 +       id="perspective4355"
 107.108 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 107.109 +       inkscape:vp_z="1 : 0.5 : 1"
 107.110 +       inkscape:vp_y="0 : 1000 : 0"
 107.111 +       inkscape:vp_x="0 : 0.5 : 1"
 107.112 +       sodipodi:type="inkscape:persp3d" />
 107.113 +    <inkscape:perspective
 107.114 +       id="perspective4593"
 107.115 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 107.116 +       inkscape:vp_z="1 : 0.5 : 1"
 107.117 +       inkscape:vp_y="0 : 1000 : 0"
 107.118 +       inkscape:vp_x="0 : 0.5 : 1"
 107.119 +       sodipodi:type="inkscape:persp3d" />
 107.120 +    <marker
 107.121 +       inkscape:stockid="Arrow2Lend"
 107.122 +       orient="auto"
 107.123 +       refY="0"
 107.124 +       refX="0"
 107.125 +       id="Arrow2Lend-2"
 107.126 +       style="overflow:visible">
 107.127 +      <path
 107.128 +         id="path3661-6"
 107.129 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 107.130 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 107.131 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 107.132 +    </marker>
 107.133 +    <inkscape:perspective
 107.134 +       id="perspective4627"
 107.135 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 107.136 +       inkscape:vp_z="1 : 0.5 : 1"
 107.137 +       inkscape:vp_y="0 : 1000 : 0"
 107.138 +       inkscape:vp_x="0 : 0.5 : 1"
 107.139 +       sodipodi:type="inkscape:persp3d" />
 107.140 +    <marker
 107.141 +       inkscape:stockid="Arrow2Lend"
 107.142 +       orient="auto"
 107.143 +       refY="0"
 107.144 +       refX="0"
 107.145 +       id="Arrow2Lend-0"
 107.146 +       style="overflow:visible">
 107.147 +      <path
 107.148 +         id="path3661-2"
 107.149 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 107.150 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 107.151 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 107.152 +    </marker>
 107.153 +    <inkscape:perspective
 107.154 +       id="perspective4661"
 107.155 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 107.156 +       inkscape:vp_z="1 : 0.5 : 1"
 107.157 +       inkscape:vp_y="0 : 1000 : 0"
 107.158 +       inkscape:vp_x="0 : 0.5 : 1"
 107.159 +       sodipodi:type="inkscape:persp3d" />
 107.160 +    <marker
 107.161 +       inkscape:stockid="Arrow2Lend"
 107.162 +       orient="auto"
 107.163 +       refY="0"
 107.164 +       refX="0"
 107.165 +       id="Arrow2Lend-9"
 107.166 +       style="overflow:visible">
 107.167 +      <path
 107.168 +         id="path3661-4"
 107.169 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 107.170 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 107.171 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 107.172 +    </marker>
 107.173 +  </defs>
 107.174 +  <sodipodi:namedview
 107.175 +     id="base"
 107.176 +     pagecolor="#ffffff"
 107.177 +     bordercolor="#666666"
 107.178 +     borderopacity="1.0"
 107.179 +     inkscape:pageopacity="0.0"
 107.180 +     inkscape:pageshadow="2"
 107.181 +     inkscape:zoom="0.69254275"
 107.182 +     inkscape:cx="52.202011"
 107.183 +     inkscape:cy="700.48367"
 107.184 +     inkscape:document-units="px"
 107.185 +     inkscape:current-layer="layer1"
 107.186 +     showgrid="false"
 107.187 +     inkscape:window-width="1024"
 107.188 +     inkscape:window-height="691"
 107.189 +     inkscape:window-x="448"
 107.190 +     inkscape:window-y="1200"
 107.191 +     inkscape:window-maximized="1" />
 107.192 +  <metadata
 107.193 +     id="metadata7">
 107.194 +    <rdf:RDF>
 107.195 +      <cc:Work
 107.196 +         rdf:about="">
 107.197 +        <dc:format>image/svg+xml</dc:format>
 107.198 +        <dc:type
 107.199 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 107.200 +        <dc:title />
 107.201 +      </cc:Work>
 107.202 +    </rdf:RDF>
 107.203 +  </metadata>
 107.204 +  <g
 107.205 +     inkscape:label="Layer 1"
 107.206 +     inkscape:groupmode="layer"
 107.207 +     id="layer1">
 107.208 +    <rect
 107.209 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 107.210 +       id="rect2816"
 107.211 +       width="278.17865"
 107.212 +       height="148.43781"
 107.213 +       x="195.1964"
 107.214 +       y="162.14328" />
 107.215 +    <text
 107.216 +       xml:space="preserve"
 107.217 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 107.218 +       x="243.96864"
 107.219 +       y="252.75813"
 107.220 +       id="text3590"><tspan
 107.221 +         sodipodi:role="line"
 107.222 +         id="tspan3592"
 107.223 +         x="243.96864"
 107.224 +         y="252.75813">Compiler</tspan></text>
 107.225 +    <text
 107.226 +       xml:space="preserve"
 107.227 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 107.228 +       x="-76.885719"
 107.229 +       y="251.48082"
 107.230 +       id="text3594"><tspan
 107.231 +         sodipodi:role="line"
 107.232 +         id="tspan3596"
 107.233 +         x="-76.885719"
 107.234 +         y="251.48082">Quellcode</tspan></text>
 107.235 +    <text
 107.236 +       xml:space="preserve"
 107.237 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 107.238 +       x="539.60974"
 107.239 +       y="252.60211"
 107.240 +       id="text3594-6"><tspan
 107.241 +         sodipodi:role="line"
 107.242 +         id="tspan3596-1"
 107.243 +         x="539.60974"
 107.244 +         y="252.60211">Programm</tspan></text>
 107.245 +    <path
 107.246 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 107.247 +       d="m 131.78902,239.83907 60.27371,0"
 107.248 +       id="path3635-3"
 107.249 +       inkscape:connector-type="polyline" />
 107.250 +    <path
 107.251 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 107.252 +       d="m 473.13647,239.79011 60.27371,0"
 107.253 +       id="path3635-3-1"
 107.254 +       inkscape:connector-type="polyline" />
 107.255 +    <rect
 107.256 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 107.257 +       id="rect2816-6"
 107.258 +       width="278.17865"
 107.259 +       height="148.43781"
 107.260 +       x="196.01573"
 107.261 +       y="386.2915" />
 107.262 +    <text
 107.263 +       xml:space="preserve"
 107.264 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 107.265 +       x="234.78798"
 107.266 +       y="470.90637"
 107.267 +       id="text3590-7"><tspan
 107.268 +         sodipodi:role="line"
 107.269 +         id="tspan3592-7"
 107.270 +         x="234.78798"
 107.271 +         y="470.90637">Programm</tspan></text>
 107.272 +    <text
 107.273 +       xml:space="preserve"
 107.274 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 107.275 +       x="-38.960587"
 107.276 +       y="471.90784"
 107.277 +       id="text3594-4"><tspan
 107.278 +         sodipodi:role="line"
 107.279 +         id="tspan3596-5"
 107.280 +         x="-38.960587"
 107.281 +         y="471.90784">Eingabe</tspan></text>
 107.282 +    <path
 107.283 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 107.284 +       d="m 133.71415,460.26609 60.27371,0"
 107.285 +       id="path3635-3-2"
 107.286 +       inkscape:connector-type="polyline" />
 107.287 +    <text
 107.288 +       xml:space="preserve"
 107.289 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 107.290 +       x="540.07758"
 107.291 +       y="470.72382"
 107.292 +       id="text3594-6-5"><tspan
 107.293 +         sodipodi:role="line"
 107.294 +         id="tspan3596-1-1"
 107.295 +         x="540.07758"
 107.296 +         y="470.72382">Ausgabe</tspan></text>
 107.297 +    <path
 107.298 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 107.299 +       d="m 473.6043,457.9118 60.27371,0"
 107.300 +       id="path3635-3-1-0"
 107.301 +       inkscape:connector-type="polyline" />
 107.302 +    <path
 107.303 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2,12;marker-end:url(#EmptyTriangleOutL);stroke-dashoffset:0"
 107.304 +       d="m 647.08726,260.8795 c 0,0 -10.41129,63.19115 -153.18081,71.99016 -142.76952,8.79902 -163.67065,51.19597 -163.67065,51.19597"
 107.305 +       id="path4731"
 107.306 +       sodipodi:nodetypes="csc" />
 107.307 +  </g>
 107.308 +</svg>
   108.1 Binary file paper/src/images/compiler_architecture.pdf has changed
   109.1 Binary file paper/src/images/compiler_design.pdf has changed
   110.1 Binary file paper/src/images/dflow_cln_tables.png has changed
   111.1 Binary file paper/src/images/dflow_displays.png has changed
   112.1 Binary file paper/src/images/dflow_displays_grey.png has changed
   113.1 Binary file paper/src/images/fho.jpg has changed
   114.1 Binary file paper/src/images/flight_plan.png has changed
   115.1 Binary file paper/src/images/hybrid_compiler.pdf has changed
   116.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   116.2 +++ b/paper/src/images/hybrid_compiler.svg	Fri Jun 04 13:48:28 2010 +0200
   116.3 @@ -0,0 +1,345 @@
   116.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   116.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
   116.6 +
   116.7 +<svg
   116.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
   116.9 +   xmlns:cc="http://creativecommons.org/ns#"
  116.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  116.11 +   xmlns:svg="http://www.w3.org/2000/svg"
  116.12 +   xmlns="http://www.w3.org/2000/svg"
  116.13 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  116.14 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  116.15 +   width="744.09448819"
  116.16 +   height="1052.3622047"
  116.17 +   id="svg2"
  116.18 +   version="1.1"
  116.19 +   inkscape:version="0.47pre4 r22446"
  116.20 +   sodipodi:docname="hybrid_compiler.svg"
  116.21 +   inkscape:export-filename="/home/sowa/workspace/comsoft/thesis/paper/src/images/compiler.png"
  116.22 +   inkscape:export-xdpi="90"
  116.23 +   inkscape:export-ydpi="90">
  116.24 +  <defs
  116.25 +     id="defs4">
  116.26 +    <marker
  116.27 +       inkscape:stockid="EmptyTriangleOutL"
  116.28 +       orient="auto"
  116.29 +       refY="0.0"
  116.30 +       refX="0.0"
  116.31 +       id="EmptyTriangleOutL"
  116.32 +       style="overflow:visible">
  116.33 +      <path
  116.34 +         id="path3801"
  116.35 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
  116.36 +         style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt;marker-start:none"
  116.37 +         transform="scale(0.8) translate(-6,0)" />
  116.38 +    </marker>
  116.39 +    <marker
  116.40 +       inkscape:stockid="Arrow2Lend"
  116.41 +       orient="auto"
  116.42 +       refY="0.0"
  116.43 +       refX="0.0"
  116.44 +       id="Arrow2Lend"
  116.45 +       style="overflow:visible;">
  116.46 +      <path
  116.47 +         id="path3661"
  116.48 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
  116.49 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  116.50 +         transform="scale(1.1) rotate(180) translate(1,0)" />
  116.51 +    </marker>
  116.52 +    <inkscape:perspective
  116.53 +       sodipodi:type="inkscape:persp3d"
  116.54 +       inkscape:vp_x="0 : 526.18109 : 1"
  116.55 +       inkscape:vp_y="0 : 1000 : 0"
  116.56 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
  116.57 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
  116.58 +       id="perspective10" />
  116.59 +    <inkscape:perspective
  116.60 +       id="perspective3606"
  116.61 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  116.62 +       inkscape:vp_z="1 : 0.5 : 1"
  116.63 +       inkscape:vp_y="0 : 1000 : 0"
  116.64 +       inkscape:vp_x="0 : 0.5 : 1"
  116.65 +       sodipodi:type="inkscape:persp3d" />
  116.66 +    <inkscape:perspective
  116.67 +       id="perspective4093"
  116.68 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  116.69 +       inkscape:vp_z="1 : 0.5 : 1"
  116.70 +       inkscape:vp_y="0 : 1000 : 0"
  116.71 +       inkscape:vp_x="0 : 0.5 : 1"
  116.72 +       sodipodi:type="inkscape:persp3d" />
  116.73 +    <marker
  116.74 +       inkscape:stockid="Arrow2Lend"
  116.75 +       orient="auto"
  116.76 +       refY="0"
  116.77 +       refX="0"
  116.78 +       id="Arrow2Lend-1"
  116.79 +       style="overflow:visible">
  116.80 +      <path
  116.81 +         id="path3661-0"
  116.82 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  116.83 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  116.84 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  116.85 +    </marker>
  116.86 +    <inkscape:perspective
  116.87 +       id="perspective4123"
  116.88 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  116.89 +       inkscape:vp_z="1 : 0.5 : 1"
  116.90 +       inkscape:vp_y="0 : 1000 : 0"
  116.91 +       inkscape:vp_x="0 : 0.5 : 1"
  116.92 +       sodipodi:type="inkscape:persp3d" />
  116.93 +    <marker
  116.94 +       inkscape:stockid="Arrow2Lend"
  116.95 +       orient="auto"
  116.96 +       refY="0"
  116.97 +       refX="0"
  116.98 +       id="Arrow2Lend-6"
  116.99 +       style="overflow:visible">
 116.100 +      <path
 116.101 +         id="path3661-3"
 116.102 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 116.103 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 116.104 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 116.105 +    </marker>
 116.106 +    <inkscape:perspective
 116.107 +       id="perspective4355"
 116.108 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 116.109 +       inkscape:vp_z="1 : 0.5 : 1"
 116.110 +       inkscape:vp_y="0 : 1000 : 0"
 116.111 +       inkscape:vp_x="0 : 0.5 : 1"
 116.112 +       sodipodi:type="inkscape:persp3d" />
 116.113 +    <inkscape:perspective
 116.114 +       id="perspective4593"
 116.115 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 116.116 +       inkscape:vp_z="1 : 0.5 : 1"
 116.117 +       inkscape:vp_y="0 : 1000 : 0"
 116.118 +       inkscape:vp_x="0 : 0.5 : 1"
 116.119 +       sodipodi:type="inkscape:persp3d" />
 116.120 +    <marker
 116.121 +       inkscape:stockid="Arrow2Lend"
 116.122 +       orient="auto"
 116.123 +       refY="0"
 116.124 +       refX="0"
 116.125 +       id="Arrow2Lend-2"
 116.126 +       style="overflow:visible">
 116.127 +      <path
 116.128 +         id="path3661-6"
 116.129 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 116.130 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 116.131 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 116.132 +    </marker>
 116.133 +    <inkscape:perspective
 116.134 +       id="perspective4627"
 116.135 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 116.136 +       inkscape:vp_z="1 : 0.5 : 1"
 116.137 +       inkscape:vp_y="0 : 1000 : 0"
 116.138 +       inkscape:vp_x="0 : 0.5 : 1"
 116.139 +       sodipodi:type="inkscape:persp3d" />
 116.140 +    <marker
 116.141 +       inkscape:stockid="Arrow2Lend"
 116.142 +       orient="auto"
 116.143 +       refY="0"
 116.144 +       refX="0"
 116.145 +       id="Arrow2Lend-0"
 116.146 +       style="overflow:visible">
 116.147 +      <path
 116.148 +         id="path3661-2"
 116.149 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 116.150 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 116.151 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 116.152 +    </marker>
 116.153 +    <inkscape:perspective
 116.154 +       id="perspective4661"
 116.155 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 116.156 +       inkscape:vp_z="1 : 0.5 : 1"
 116.157 +       inkscape:vp_y="0 : 1000 : 0"
 116.158 +       inkscape:vp_x="0 : 0.5 : 1"
 116.159 +       sodipodi:type="inkscape:persp3d" />
 116.160 +    <marker
 116.161 +       inkscape:stockid="Arrow2Lend"
 116.162 +       orient="auto"
 116.163 +       refY="0"
 116.164 +       refX="0"
 116.165 +       id="Arrow2Lend-9"
 116.166 +       style="overflow:visible">
 116.167 +      <path
 116.168 +         id="path3661-4"
 116.169 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 116.170 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 116.171 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 116.172 +    </marker>
 116.173 +    <inkscape:perspective
 116.174 +       id="perspective5782"
 116.175 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 116.176 +       inkscape:vp_z="1 : 0.5 : 1"
 116.177 +       inkscape:vp_y="0 : 1000 : 0"
 116.178 +       inkscape:vp_x="0 : 0.5 : 1"
 116.179 +       sodipodi:type="inkscape:persp3d" />
 116.180 +    <marker
 116.181 +       inkscape:stockid="Arrow2Lend"
 116.182 +       orient="auto"
 116.183 +       refY="0"
 116.184 +       refX="0"
 116.185 +       id="Arrow2Lend-7"
 116.186 +       style="overflow:visible">
 116.187 +      <path
 116.188 +         id="path3661-8"
 116.189 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 116.190 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 116.191 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 116.192 +    </marker>
 116.193 +  </defs>
 116.194 +  <sodipodi:namedview
 116.195 +     id="base"
 116.196 +     pagecolor="#ffffff"
 116.197 +     bordercolor="#666666"
 116.198 +     borderopacity="1.0"
 116.199 +     inkscape:pageopacity="0.0"
 116.200 +     inkscape:pageshadow="2"
 116.201 +     inkscape:zoom="0.69254275"
 116.202 +     inkscape:cx="328.20622"
 116.203 +     inkscape:cy="700.48367"
 116.204 +     inkscape:document-units="px"
 116.205 +     inkscape:current-layer="layer1"
 116.206 +     showgrid="false"
 116.207 +     inkscape:window-width="1024"
 116.208 +     inkscape:window-height="691"
 116.209 +     inkscape:window-x="448"
 116.210 +     inkscape:window-y="1200"
 116.211 +     inkscape:window-maximized="1" />
 116.212 +  <metadata
 116.213 +     id="metadata7">
 116.214 +    <rdf:RDF>
 116.215 +      <cc:Work
 116.216 +         rdf:about="">
 116.217 +        <dc:format>image/svg+xml</dc:format>
 116.218 +        <dc:type
 116.219 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 116.220 +        <dc:title />
 116.221 +      </cc:Work>
 116.222 +    </rdf:RDF>
 116.223 +  </metadata>
 116.224 +  <g
 116.225 +     inkscape:label="Layer 1"
 116.226 +     inkscape:groupmode="layer"
 116.227 +     id="layer1">
 116.228 +    <rect
 116.229 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 116.230 +       id="rect2816"
 116.231 +       width="278.17865"
 116.232 +       height="148.43781"
 116.233 +       x="195.1964"
 116.234 +       y="162.14328" />
 116.235 +    <text
 116.236 +       xml:space="preserve"
 116.237 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 116.238 +       x="243.96864"
 116.239 +       y="252.75813"
 116.240 +       id="text3590"><tspan
 116.241 +         sodipodi:role="line"
 116.242 +         id="tspan3592"
 116.243 +         x="243.96864"
 116.244 +         y="252.75813">Compiler</tspan></text>
 116.245 +    <text
 116.246 +       xml:space="preserve"
 116.247 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 116.248 +       x="-76.885719"
 116.249 +       y="251.48082"
 116.250 +       id="text3594"><tspan
 116.251 +         sodipodi:role="line"
 116.252 +         id="tspan3596"
 116.253 +         x="-76.885719"
 116.254 +         y="251.48082">Quellcode</tspan></text>
 116.255 +    <text
 116.256 +       xml:space="preserve"
 116.257 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 116.258 +       x="539.60974"
 116.259 +       y="252.60211"
 116.260 +       id="text3594-6"><tspan
 116.261 +         sodipodi:role="line"
 116.262 +         id="tspan3596-1"
 116.263 +         x="539.60974"
 116.264 +         y="252.60211">Bytecode</tspan></text>
 116.265 +    <path
 116.266 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 116.267 +       d="m 131.78902,239.83907 60.27371,0"
 116.268 +       id="path3635-3"
 116.269 +       inkscape:connector-type="polyline" />
 116.270 +    <path
 116.271 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 116.272 +       d="m 473.13647,239.79011 60.27371,0"
 116.273 +       id="path3635-3-1"
 116.274 +       inkscape:connector-type="polyline" />
 116.275 +    <rect
 116.276 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 116.277 +       id="rect2816-6"
 116.278 +       width="278.17865"
 116.279 +       height="148.43781"
 116.280 +       x="196.01573"
 116.281 +       y="386.2915" />
 116.282 +    <text
 116.283 +       xml:space="preserve"
 116.284 +       style="font-size:40px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 116.285 +       x="335.86478"
 116.286 +       y="453.57892"
 116.287 +       id="text3590-7"
 116.288 +       sodipodi:linespacing="125%"><tspan
 116.289 +         sodipodi:role="line"
 116.290 +         id="tspan3592-7"
 116.291 +         x="335.86478"
 116.292 +         y="453.57892">Virtual</tspan><tspan
 116.293 +         sodipodi:role="line"
 116.294 +         x="335.86478"
 116.295 +         y="503.57892"
 116.296 +         id="tspan6366">Machine</tspan></text>
 116.297 +    <text
 116.298 +       xml:space="preserve"
 116.299 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 116.300 +       x="-38.960587"
 116.301 +       y="505.90784"
 116.302 +       id="text3594-4"><tspan
 116.303 +         sodipodi:role="line"
 116.304 +         id="tspan3596-5"
 116.305 +         x="-38.960587"
 116.306 +         y="505.90784">Eingabe</tspan></text>
 116.307 +    <path
 116.308 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 116.309 +       d="m 133.71415,494.26609 60.27371,0"
 116.310 +       id="path3635-3-2"
 116.311 +       inkscape:connector-type="polyline" />
 116.312 +    <text
 116.313 +       xml:space="preserve"
 116.314 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 116.315 +       x="540.07758"
 116.316 +       y="470.72382"
 116.317 +       id="text3594-6-5"><tspan
 116.318 +         sodipodi:role="line"
 116.319 +         id="tspan3596-1-1"
 116.320 +         x="540.07758"
 116.321 +         y="470.72382">Ausgabe</tspan></text>
 116.322 +    <path
 116.323 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 116.324 +       d="m 473.6043,457.9118 60.27371,0"
 116.325 +       id="path3635-3-1-0"
 116.326 +       inkscape:connector-type="polyline" />
 116.327 +    <path
 116.328 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2,12;stroke-dashoffset:0;marker-end:url(#EmptyTriangleOutL)"
 116.329 +       d="m 646.56783,261.39893 c 0,0 -19.98176,75.25029 -293.99056,85.72848 C 78.568475,357.6056 38.454216,408.09342 38.454216,408.09342"
 116.330 +       id="path4731"
 116.331 +       sodipodi:nodetypes="csc" />
 116.332 +    <text
 116.333 +       xml:space="preserve"
 116.334 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 116.335 +       x="-64.062073"
 116.336 +       y="442.25735"
 116.337 +       id="text3594-5"><tspan
 116.338 +         sodipodi:role="line"
 116.339 +         id="tspan3596-9"
 116.340 +         x="-64.062073"
 116.341 +         y="442.25735">Bytecode</tspan></text>
 116.342 +    <path
 116.343 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 116.344 +       d="m 132.61267,430.6156 60.27371,0"
 116.345 +       id="path3635-3-27"
 116.346 +       inkscape:connector-type="polyline" />
 116.347 +  </g>
 116.348 +</svg>
   117.1 Binary file paper/src/images/interpreter.pdf has changed
   118.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   118.2 +++ b/paper/src/images/interpreter.svg	Fri Jun 04 13:48:28 2010 +0200
   118.3 @@ -0,0 +1,268 @@
   118.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   118.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
   118.6 +
   118.7 +<svg
   118.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
   118.9 +   xmlns:cc="http://creativecommons.org/ns#"
  118.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  118.11 +   xmlns:svg="http://www.w3.org/2000/svg"
  118.12 +   xmlns="http://www.w3.org/2000/svg"
  118.13 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  118.14 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  118.15 +   width="744.09448819"
  118.16 +   height="1052.3622047"
  118.17 +   id="svg2"
  118.18 +   version="1.1"
  118.19 +   inkscape:version="0.47pre4 r22446"
  118.20 +   sodipodi:docname="interpreter.svg"
  118.21 +   inkscape:export-filename="/home/sowa/workspace/comsoft/thesis/paper/src/images/compiler.png"
  118.22 +   inkscape:export-xdpi="90"
  118.23 +   inkscape:export-ydpi="90">
  118.24 +  <defs
  118.25 +     id="defs4">
  118.26 +    <marker
  118.27 +       inkscape:stockid="EmptyTriangleOutL"
  118.28 +       orient="auto"
  118.29 +       refY="0.0"
  118.30 +       refX="0.0"
  118.31 +       id="EmptyTriangleOutL"
  118.32 +       style="overflow:visible">
  118.33 +      <path
  118.34 +         id="path3801"
  118.35 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
  118.36 +         style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt;marker-start:none"
  118.37 +         transform="scale(0.8) translate(-6,0)" />
  118.38 +    </marker>
  118.39 +    <marker
  118.40 +       inkscape:stockid="Arrow2Lend"
  118.41 +       orient="auto"
  118.42 +       refY="0.0"
  118.43 +       refX="0.0"
  118.44 +       id="Arrow2Lend"
  118.45 +       style="overflow:visible;">
  118.46 +      <path
  118.47 +         id="path3661"
  118.48 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
  118.49 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  118.50 +         transform="scale(1.1) rotate(180) translate(1,0)" />
  118.51 +    </marker>
  118.52 +    <inkscape:perspective
  118.53 +       sodipodi:type="inkscape:persp3d"
  118.54 +       inkscape:vp_x="0 : 526.18109 : 1"
  118.55 +       inkscape:vp_y="0 : 1000 : 0"
  118.56 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
  118.57 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
  118.58 +       id="perspective10" />
  118.59 +    <inkscape:perspective
  118.60 +       id="perspective3606"
  118.61 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  118.62 +       inkscape:vp_z="1 : 0.5 : 1"
  118.63 +       inkscape:vp_y="0 : 1000 : 0"
  118.64 +       inkscape:vp_x="0 : 0.5 : 1"
  118.65 +       sodipodi:type="inkscape:persp3d" />
  118.66 +    <inkscape:perspective
  118.67 +       id="perspective4093"
  118.68 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  118.69 +       inkscape:vp_z="1 : 0.5 : 1"
  118.70 +       inkscape:vp_y="0 : 1000 : 0"
  118.71 +       inkscape:vp_x="0 : 0.5 : 1"
  118.72 +       sodipodi:type="inkscape:persp3d" />
  118.73 +    <marker
  118.74 +       inkscape:stockid="Arrow2Lend"
  118.75 +       orient="auto"
  118.76 +       refY="0"
  118.77 +       refX="0"
  118.78 +       id="Arrow2Lend-1"
  118.79 +       style="overflow:visible">
  118.80 +      <path
  118.81 +         id="path3661-0"
  118.82 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
  118.83 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
  118.84 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
  118.85 +    </marker>
  118.86 +    <inkscape:perspective
  118.87 +       id="perspective4123"
  118.88 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  118.89 +       inkscape:vp_z="1 : 0.5 : 1"
  118.90 +       inkscape:vp_y="0 : 1000 : 0"
  118.91 +       inkscape:vp_x="0 : 0.5 : 1"
  118.92 +       sodipodi:type="inkscape:persp3d" />
  118.93 +    <marker
  118.94 +       inkscape:stockid="Arrow2Lend"
  118.95 +       orient="auto"
  118.96 +       refY="0"
  118.97 +       refX="0"
  118.98 +       id="Arrow2Lend-6"
  118.99 +       style="overflow:visible">
 118.100 +      <path
 118.101 +         id="path3661-3"
 118.102 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 118.103 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 118.104 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 118.105 +    </marker>
 118.106 +    <inkscape:perspective
 118.107 +       id="perspective4355"
 118.108 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 118.109 +       inkscape:vp_z="1 : 0.5 : 1"
 118.110 +       inkscape:vp_y="0 : 1000 : 0"
 118.111 +       inkscape:vp_x="0 : 0.5 : 1"
 118.112 +       sodipodi:type="inkscape:persp3d" />
 118.113 +    <inkscape:perspective
 118.114 +       id="perspective4593"
 118.115 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 118.116 +       inkscape:vp_z="1 : 0.5 : 1"
 118.117 +       inkscape:vp_y="0 : 1000 : 0"
 118.118 +       inkscape:vp_x="0 : 0.5 : 1"
 118.119 +       sodipodi:type="inkscape:persp3d" />
 118.120 +    <marker
 118.121 +       inkscape:stockid="Arrow2Lend"
 118.122 +       orient="auto"
 118.123 +       refY="0"
 118.124 +       refX="0"
 118.125 +       id="Arrow2Lend-2"
 118.126 +       style="overflow:visible">
 118.127 +      <path
 118.128 +         id="path3661-6"
 118.129 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 118.130 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 118.131 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 118.132 +    </marker>
 118.133 +    <inkscape:perspective
 118.134 +       id="perspective4627"
 118.135 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 118.136 +       inkscape:vp_z="1 : 0.5 : 1"
 118.137 +       inkscape:vp_y="0 : 1000 : 0"
 118.138 +       inkscape:vp_x="0 : 0.5 : 1"
 118.139 +       sodipodi:type="inkscape:persp3d" />
 118.140 +    <marker
 118.141 +       inkscape:stockid="Arrow2Lend"
 118.142 +       orient="auto"
 118.143 +       refY="0"
 118.144 +       refX="0"
 118.145 +       id="Arrow2Lend-0"
 118.146 +       style="overflow:visible">
 118.147 +      <path
 118.148 +         id="path3661-2"
 118.149 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 118.150 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 118.151 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 118.152 +    </marker>
 118.153 +    <inkscape:perspective
 118.154 +       id="perspective4661"
 118.155 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 118.156 +       inkscape:vp_z="1 : 0.5 : 1"
 118.157 +       inkscape:vp_y="0 : 1000 : 0"
 118.158 +       inkscape:vp_x="0 : 0.5 : 1"
 118.159 +       sodipodi:type="inkscape:persp3d" />
 118.160 +    <marker
 118.161 +       inkscape:stockid="Arrow2Lend"
 118.162 +       orient="auto"
 118.163 +       refY="0"
 118.164 +       refX="0"
 118.165 +       id="Arrow2Lend-9"
 118.166 +       style="overflow:visible">
 118.167 +      <path
 118.168 +         id="path3661-4"
 118.169 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 118.170 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 118.171 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 118.172 +    </marker>
 118.173 +  </defs>
 118.174 +  <sodipodi:namedview
 118.175 +     id="base"
 118.176 +     pagecolor="#ffffff"
 118.177 +     bordercolor="#666666"
 118.178 +     borderopacity="1.0"
 118.179 +     inkscape:pageopacity="0.0"
 118.180 +     inkscape:pageshadow="2"
 118.181 +     inkscape:zoom="1.1766892"
 118.182 +     inkscape:cx="166.2906"
 118.183 +     inkscape:cy="816"
 118.184 +     inkscape:document-units="px"
 118.185 +     inkscape:current-layer="layer1"
 118.186 +     showgrid="false"
 118.187 +     inkscape:window-width="1024"
 118.188 +     inkscape:window-height="691"
 118.189 +     inkscape:window-x="448"
 118.190 +     inkscape:window-y="1200"
 118.191 +     inkscape:window-maximized="1" />
 118.192 +  <metadata
 118.193 +     id="metadata7">
 118.194 +    <rdf:RDF>
 118.195 +      <cc:Work
 118.196 +         rdf:about="">
 118.197 +        <dc:format>image/svg+xml</dc:format>
 118.198 +        <dc:type
 118.199 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 118.200 +        <dc:title />
 118.201 +      </cc:Work>
 118.202 +    </rdf:RDF>
 118.203 +  </metadata>
 118.204 +  <g
 118.205 +     inkscape:label="Layer 1"
 118.206 +     inkscape:groupmode="layer"
 118.207 +     id="layer1">
 118.208 +    <rect
 118.209 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 118.210 +       id="rect2816"
 118.211 +       width="278.17865"
 118.212 +       height="148.43781"
 118.213 +       x="195.1964"
 118.214 +       y="162.14328" />
 118.215 +    <text
 118.216 +       xml:space="preserve"
 118.217 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 118.218 +       x="229.96864"
 118.219 +       y="252.75813"
 118.220 +       id="text3590"><tspan
 118.221 +         sodipodi:role="line"
 118.222 +         id="tspan3592"
 118.223 +         x="229.96864"
 118.224 +         y="252.75813">Interpreter</tspan></text>
 118.225 +    <text
 118.226 +       xml:space="preserve"
 118.227 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 118.228 +       x="-76.885719"
 118.229 +       y="223.48082"
 118.230 +       id="text3594"><tspan
 118.231 +         sodipodi:role="line"
 118.232 +         id="tspan3596"
 118.233 +         x="-76.885719"
 118.234 +         y="223.48082">Quellcode</tspan></text>
 118.235 +    <path
 118.236 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 118.237 +       d="m 131.78902,211.83907 60.27371,0"
 118.238 +       id="path3635-3"
 118.239 +       inkscape:connector-type="polyline" />
 118.240 +    <text
 118.241 +       xml:space="preserve"
 118.242 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 118.243 +       x="-40.960587"
 118.244 +       y="275.90784"
 118.245 +       id="text3594-4"><tspan
 118.246 +         sodipodi:role="line"
 118.247 +         id="tspan3596-5"
 118.248 +         x="-40.960587"
 118.249 +         y="275.90784">Eingabe</tspan></text>
 118.250 +    <path
 118.251 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 118.252 +       d="m 131.71415,264.26609 60.27371,0"
 118.253 +       id="path3635-3-2"
 118.254 +       inkscape:connector-type="polyline" />
 118.255 +    <text
 118.256 +       xml:space="preserve"
 118.257 +       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 118.258 +       x="540.07758"
 118.259 +       y="250.72382"
 118.260 +       id="text3594-6-5"><tspan
 118.261 +         sodipodi:role="line"
 118.262 +         id="tspan3596-1-1"
 118.263 +         x="540.07758"
 118.264 +         y="250.72382">Ausgabe</tspan></text>
 118.265 +    <path
 118.266 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 118.267 +       d="m 473.6043,237.9118 60.27371,0"
 118.268 +       id="path3635-3-1-0"
 118.269 +       inkscape:connector-type="polyline" />
 118.270 +  </g>
 118.271 +</svg>
   119.1 Binary file paper/src/images/near_east.pdf has changed
   120.1 Binary file paper/src/images/near_east_problem.pdf has changed
   121.1 Binary file paper/src/images/pattern_evaluation.pdf has changed
   122.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   122.2 +++ b/paper/src/images/pattern_evaluation.svg	Fri Jun 04 13:48:28 2010 +0200
   122.3 @@ -0,0 +1,1902 @@
   122.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   122.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
   122.6 +
   122.7 +<svg
   122.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
   122.9 +   xmlns:cc="http://creativecommons.org/ns#"
  122.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  122.11 +   xmlns:svg="http://www.w3.org/2000/svg"
  122.12 +   xmlns="http://www.w3.org/2000/svg"
  122.13 +   xmlns:xlink="http://www.w3.org/1999/xlink"
  122.14 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  122.15 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  122.16 +   width="744.09448819"
  122.17 +   height="1052.3622047"
  122.18 +   id="svg2"
  122.19 +   version="1.1"
  122.20 +   inkscape:version="0.47pre4 r22446"
  122.21 +   sodipodi:docname="pattern_evaluation.svg">
  122.22 +  <defs
  122.23 +     id="defs4">
  122.24 +    <pattern
  122.25 +       inkscape:stockid="Stripes 1:1"
  122.26 +       id="Strips1_1"
  122.27 +       patternTransform="matrix(10,0,0,10,0,90)"
  122.28 +       height="1"
  122.29 +       width="2"
  122.30 +       patternUnits="userSpaceOnUse"
  122.31 +       inkscape:collect="always">
  122.32 +      <rect
  122.33 +         id="rect4583"
  122.34 +         height="2"
  122.35 +         width="1"
  122.36 +         y="-0.5"
  122.37 +         x="0"
  122.38 +         style="fill:black;stroke:none" />
  122.39 +    </pattern>
  122.40 +    <pattern
  122.41 +       inkscape:stockid="Polka dots, large"
  122.42 +       id="Polkadots-large"
  122.43 +       patternTransform="matrix(10,0,0,10,0,90)"
  122.44 +       height="10"
  122.45 +       width="10"
  122.46 +       patternUnits="userSpaceOnUse"
  122.47 +       inkscape:collect="always">
  122.48 +      <circle
  122.49 +         id="circle5033"
  122.50 +         r="0.45"
  122.51 +         cy="0.810"
  122.52 +         cx="2.567"
  122.53 +         style="fill:black;stroke:none" />
  122.54 +      <circle
  122.55 +         id="circle5035"
  122.56 +         r="0.45"
  122.57 +         cy="2.33"
  122.58 +         cx="3.048"
  122.59 +         style="fill:black;stroke:none" />
  122.60 +      <circle
  122.61 +         id="circle5037"
  122.62 +         r="0.45"
  122.63 +         cy="2.415"
  122.64 +         cx="4.418"
  122.65 +         style="fill:black;stroke:none" />
  122.66 +      <circle
  122.67 +         id="circle5039"
  122.68 +         r="0.45"
  122.69 +         cy="3.029"
  122.70 +         cx="1.844"
  122.71 +         style="fill:black;stroke:none" />
  122.72 +      <circle
  122.73 +         id="circle5041"
  122.74 +         r="0.45"
  122.75 +         cy="1.363"
  122.76 +         cx="6.08"
  122.77 +         style="fill:black;stroke:none" />
  122.78 +      <circle
  122.79 +         id="circle5043"
  122.80 +         r="0.45"
  122.81 +         cy="4.413"
  122.82 +         cx="5.819"
  122.83 +         style="fill:black;stroke:none" />
  122.84 +      <circle
  122.85 +         id="circle5045"
  122.86 +         r="0.45"
  122.87 +         cy="4.048"
  122.88 +         cx="4.305"
  122.89 +         style="fill:black;stroke:none" />
  122.90 +      <circle
  122.91 +         id="circle5047"
  122.92 +         r="0.45"
  122.93 +         cy="3.045"
  122.94 +         cx="5.541"
  122.95 +         style="fill:black;stroke:none" />
  122.96 +      <circle
  122.97 +         id="circle5049"
  122.98 +         r="0.45"
  122.99 +         cy="5.527"
 122.100 +         cx="4.785"
 122.101 +         style="fill:black;stroke:none" />
 122.102 +      <circle
 122.103 +         id="circle5051"
 122.104 +         r="0.45"
 122.105 +         cy="5.184"
 122.106 +         cx="2.667"
 122.107 +         style="fill:black;stroke:none" />
 122.108 +      <circle
 122.109 +         id="circle5053"
 122.110 +         r="0.45"
 122.111 +         cy="1.448"
 122.112 +         cx="7.965"
 122.113 +         style="fill:black;stroke:none" />
 122.114 +      <circle
 122.115 +         id="circle5055"
 122.116 +         r="0.45"
 122.117 +         cy="5.049"
 122.118 +         cx="7.047"
 122.119 +         style="fill:black;stroke:none" />
 122.120 +      <circle
 122.121 +         id="circle5057"
 122.122 +         r="0.45"
 122.123 +         cy="0.895"
 122.124 +         cx="4.340"
 122.125 +         style="fill:black;stroke:none" />
 122.126 +      <circle
 122.127 +         id="circle5059"
 122.128 +         r="0.45"
 122.129 +         cy="0.340"
 122.130 +         cx="7.125"
 122.131 +         style="fill:black;stroke:none" />
 122.132 +      <circle
 122.133 +         id="circle5061"
 122.134 +         r="0.45"
 122.135 +         cy="1.049"
 122.136 +         cx="9.553"
 122.137 +         style="fill:black;stroke:none" />
 122.138 +      <circle
 122.139 +         id="circle5063"
 122.140 +         r="0.45"
 122.141 +         cy="2.689"
 122.142 +         cx="7.006"
 122.143 +         style="fill:black;stroke:none" />
 122.144 +      <circle
 122.145 +         id="circle5065"
 122.146 +         r="0.45"
 122.147 +         cy="2.689"
 122.148 +         cx="8.909"
 122.149 +         style="fill:black;stroke:none" />
 122.150 +      <circle
 122.151 +         id="circle5067"
 122.152 +         r="0.45"
 122.153 +         cy="4.407"
 122.154 +         cx="9.315"
 122.155 +         style="fill:black;stroke:none" />
 122.156 +      <circle
 122.157 +         id="circle5069"
 122.158 +         r="0.45"
 122.159 +         cy="3.870"
 122.160 +         cx="7.820"
 122.161 +         style="fill:black;stroke:none" />
 122.162 +      <circle
 122.163 +         id="circle5071"
 122.164 +         r="0.45"
 122.165 +         cy="5.948"
 122.166 +         cx="8.270"
 122.167 +         style="fill:black;stroke:none" />
 122.168 +      <circle
 122.169 +         id="circle5073"
 122.170 +         r="0.45"
 122.171 +         cy="7.428"
 122.172 +         cx="7.973"
 122.173 +         style="fill:black;stroke:none" />
 122.174 +      <circle
 122.175 +         id="circle5075"
 122.176 +         r="0.45"
 122.177 +         cy="8.072"
 122.178 +         cx="9.342"
 122.179 +         style="fill:black;stroke:none" />
 122.180 +      <circle
 122.181 +         id="circle5077"
 122.182 +         r="0.45"
 122.183 +         cy="9.315"
 122.184 +         cx="8.206"
 122.185 +         style="fill:black;stroke:none" />
 122.186 +      <circle
 122.187 +         id="circle5079"
 122.188 +         r="0.45"
 122.189 +         cy="9.475"
 122.190 +         cx="9.682"
 122.191 +         style="fill:black;stroke:none" />
 122.192 +      <circle
 122.193 +         id="circle5081"
 122.194 +         r="0.45"
 122.195 +         cy="6.186"
 122.196 +         cx="9.688"
 122.197 +         style="fill:black;stroke:none" />
 122.198 +      <circle
 122.199 +         id="circle5083"
 122.200 +         r="0.45"
 122.201 +         cy="6.296"
 122.202 +         cx="3.379"
 122.203 +         style="fill:black;stroke:none" />
 122.204 +      <circle
 122.205 +         id="circle5085"
 122.206 +         r="0.45"
 122.207 +         cy="8.204"
 122.208 +         cx="2.871"
 122.209 +         style="fill:black;stroke:none" />
 122.210 +      <circle
 122.211 +         id="circle5087"
 122.212 +         r="0.45"
 122.213 +         cy="8.719"
 122.214 +         cx="4.59"
 122.215 +         style="fill:black;stroke:none" />
 122.216 +      <circle
 122.217 +         id="circle5089"
 122.218 +         r="0.45"
 122.219 +         cy="9.671"
 122.220 +         cx="3.181"
 122.221 +         style="fill:black;stroke:none" />
 122.222 +      <circle
 122.223 +         id="circle5091"
 122.224 +         r="0.45"
 122.225 +         cy="7.315"
 122.226 +         cx="5.734"
 122.227 +         style="fill:black;stroke:none" />
 122.228 +      <circle
 122.229 +         id="circle5093"
 122.230 +         r="0.45"
 122.231 +         cy="6.513"
 122.232 +         cx="6.707"
 122.233 +         style="fill:black;stroke:none" />
 122.234 +      <circle
 122.235 +         id="circle5095"
 122.236 +         r="0.45"
 122.237 +         cy="9.670"
 122.238 +         cx="5.730"
 122.239 +         style="fill:black;stroke:none" />
 122.240 +      <circle
 122.241 +         id="circle5097"
 122.242 +         r="0.45"
 122.243 +         cy="8.373"
 122.244 +         cx="6.535"
 122.245 +         style="fill:black;stroke:none" />
 122.246 +      <circle
 122.247 +         id="circle5099"
 122.248 +         r="0.45"
 122.249 +         cy="7.154"
 122.250 +         cx="4.37"
 122.251 +         style="fill:black;stroke:none" />
 122.252 +      <circle
 122.253 +         id="circle5101"
 122.254 +         r="0.45"
 122.255 +         cy="7.25"
 122.256 +         cx="0.622"
 122.257 +         style="fill:black;stroke:none" />
 122.258 +      <circle
 122.259 +         id="circle5103"
 122.260 +         r="0.45"
 122.261 +         cy="5.679"
 122.262 +         cx="0.831"
 122.263 +         style="fill:black;stroke:none" />
 122.264 +      <circle
 122.265 +         id="circle5105"
 122.266 +         r="0.45"
 122.267 +         cy="8.519"
 122.268 +         cx="1.257"
 122.269 +         style="fill:black;stroke:none" />
 122.270 +      <circle
 122.271 +         id="circle5107"
 122.272 +         r="0.45"
 122.273 +         cy="6.877"
 122.274 +         cx="1.989"
 122.275 +         style="fill:black;stroke:none" />
 122.276 +      <circle
 122.277 +         id="circle5109"
 122.278 +         r="0.45"
 122.279 +         cy="3.181"
 122.280 +         cx="0.374"
 122.281 +         style="fill:black;stroke:none" />
 122.282 +      <circle
 122.283 +         id="circle5111"
 122.284 +         r="0.45"
 122.285 +         cy="1.664"
 122.286 +         cx="1.166"
 122.287 +         style="fill:black;stroke:none" />
 122.288 +      <circle
 122.289 +         id="circle5113"
 122.290 +         r="0.45"
 122.291 +         cy="0.093"
 122.292 +         cx="1.151"
 122.293 +         style="fill:black;stroke:none" />
 122.294 +      <circle
 122.295 +         id="circle5115"
 122.296 +         r="0.45"
 122.297 +         cy="10.093"
 122.298 +         cx="1.151"
 122.299 +         style="fill:black;stroke:none" />
 122.300 +      <circle
 122.301 +         id="circle5117"
 122.302 +         r="0.45"
 122.303 +         cy="4.451"
 122.304 +         cx="1.302"
 122.305 +         style="fill:black;stroke:none" />
 122.306 +      <circle
 122.307 +         id="circle5119"
 122.308 +         r="0.45"
 122.309 +         cy="3.763"
 122.310 +         cx="3.047"
 122.311 +         style="fill:black;stroke:none" />
 122.312 +    </pattern>
 122.313 +    <marker
 122.314 +       inkscape:stockid="Arrow2Lend"
 122.315 +       orient="auto"
 122.316 +       refY="0.0"
 122.317 +       refX="0.0"
 122.318 +       id="Arrow2Lend"
 122.319 +       style="overflow:visible;">
 122.320 +      <path
 122.321 +         id="path5376"
 122.322 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
 122.323 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
 122.324 +         transform="scale(1.1) rotate(180) translate(1,0)" />
 122.325 +    </marker>
 122.326 +    <marker
 122.327 +       inkscape:stockid="Arrow2Lstart"
 122.328 +       orient="auto"
 122.329 +       refY="0.0"
 122.330 +       refX="0.0"
 122.331 +       id="Arrow2Lstart"
 122.332 +       style="overflow:visible">
 122.333 +      <path
 122.334 +         id="path5373"
 122.335 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
 122.336 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
 122.337 +         transform="scale(1.1) translate(1,0)" />
 122.338 +    </marker>
 122.339 +    <inkscape:perspective
 122.340 +       sodipodi:type="inkscape:persp3d"
 122.341 +       inkscape:vp_x="0 : 526.18109 : 1"
 122.342 +       inkscape:vp_y="0 : 1000 : 0"
 122.343 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
 122.344 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
 122.345 +       id="perspective10" />
 122.346 +    <inkscape:perspective
 122.347 +       id="perspective3613"
 122.348 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.349 +       inkscape:vp_z="1 : 0.5 : 1"
 122.350 +       inkscape:vp_y="0 : 1000 : 0"
 122.351 +       inkscape:vp_x="0 : 0.5 : 1"
 122.352 +       sodipodi:type="inkscape:persp3d" />
 122.353 +    <inkscape:perspective
 122.354 +       id="perspective3613-2"
 122.355 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.356 +       inkscape:vp_z="1 : 0.5 : 1"
 122.357 +       inkscape:vp_y="0 : 1000 : 0"
 122.358 +       inkscape:vp_x="0 : 0.5 : 1"
 122.359 +       sodipodi:type="inkscape:persp3d" />
 122.360 +    <inkscape:perspective
 122.361 +       id="perspective3671"
 122.362 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.363 +       inkscape:vp_z="1 : 0.5 : 1"
 122.364 +       inkscape:vp_y="0 : 1000 : 0"
 122.365 +       inkscape:vp_x="0 : 0.5 : 1"
 122.366 +       sodipodi:type="inkscape:persp3d" />
 122.367 +    <inkscape:perspective
 122.368 +       id="perspective3742"
 122.369 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.370 +       inkscape:vp_z="1 : 0.5 : 1"
 122.371 +       inkscape:vp_y="0 : 1000 : 0"
 122.372 +       inkscape:vp_x="0 : 0.5 : 1"
 122.373 +       sodipodi:type="inkscape:persp3d" />
 122.374 +    <inkscape:perspective
 122.375 +       id="perspective3779"
 122.376 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.377 +       inkscape:vp_z="1 : 0.5 : 1"
 122.378 +       inkscape:vp_y="0 : 1000 : 0"
 122.379 +       inkscape:vp_x="0 : 0.5 : 1"
 122.380 +       sodipodi:type="inkscape:persp3d" />
 122.381 +    <inkscape:perspective
 122.382 +       id="perspective3779-0"
 122.383 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.384 +       inkscape:vp_z="1 : 0.5 : 1"
 122.385 +       inkscape:vp_y="0 : 1000 : 0"
 122.386 +       inkscape:vp_x="0 : 0.5 : 1"
 122.387 +       sodipodi:type="inkscape:persp3d" />
 122.388 +    <inkscape:perspective
 122.389 +       id="perspective5282"
 122.390 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.391 +       inkscape:vp_z="1 : 0.5 : 1"
 122.392 +       inkscape:vp_y="0 : 1000 : 0"
 122.393 +       inkscape:vp_x="0 : 0.5 : 1"
 122.394 +       sodipodi:type="inkscape:persp3d" />
 122.395 +    <inkscape:perspective
 122.396 +       id="perspective5282-7"
 122.397 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.398 +       inkscape:vp_z="1 : 0.5 : 1"
 122.399 +       inkscape:vp_y="0 : 1000 : 0"
 122.400 +       inkscape:vp_x="0 : 0.5 : 1"
 122.401 +       sodipodi:type="inkscape:persp3d" />
 122.402 +    <inkscape:perspective
 122.403 +       id="perspective5330"
 122.404 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.405 +       inkscape:vp_z="1 : 0.5 : 1"
 122.406 +       inkscape:vp_y="0 : 1000 : 0"
 122.407 +       inkscape:vp_x="0 : 0.5 : 1"
 122.408 +       sodipodi:type="inkscape:persp3d" />
 122.409 +    <inkscape:perspective
 122.410 +       id="perspective5994"
 122.411 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.412 +       inkscape:vp_z="1 : 0.5 : 1"
 122.413 +       inkscape:vp_y="0 : 1000 : 0"
 122.414 +       inkscape:vp_x="0 : 0.5 : 1"
 122.415 +       sodipodi:type="inkscape:persp3d" />
 122.416 +    <inkscape:perspective
 122.417 +       id="perspective6021"
 122.418 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.419 +       inkscape:vp_z="1 : 0.5 : 1"
 122.420 +       inkscape:vp_y="0 : 1000 : 0"
 122.421 +       inkscape:vp_x="0 : 0.5 : 1"
 122.422 +       sodipodi:type="inkscape:persp3d" />
 122.423 +    <inkscape:perspective
 122.424 +       id="perspective6058"
 122.425 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.426 +       inkscape:vp_z="1 : 0.5 : 1"
 122.427 +       inkscape:vp_y="0 : 1000 : 0"
 122.428 +       inkscape:vp_x="0 : 0.5 : 1"
 122.429 +       sodipodi:type="inkscape:persp3d" />
 122.430 +    <inkscape:perspective
 122.431 +       id="perspective6297"
 122.432 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.433 +       inkscape:vp_z="1 : 0.5 : 1"
 122.434 +       inkscape:vp_y="0 : 1000 : 0"
 122.435 +       inkscape:vp_x="0 : 0.5 : 1"
 122.436 +       sodipodi:type="inkscape:persp3d" />
 122.437 +    <marker
 122.438 +       inkscape:stockid="Arrow2Lend"
 122.439 +       orient="auto"
 122.440 +       refY="0"
 122.441 +       refX="0"
 122.442 +       id="Arrow2Lend-4"
 122.443 +       style="overflow:visible">
 122.444 +      <path
 122.445 +         id="path5376-2"
 122.446 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.447 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.448 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.449 +    </marker>
 122.450 +    <inkscape:perspective
 122.451 +       id="perspective6297-6"
 122.452 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.453 +       inkscape:vp_z="1 : 0.5 : 1"
 122.454 +       inkscape:vp_y="0 : 1000 : 0"
 122.455 +       inkscape:vp_x="0 : 0.5 : 1"
 122.456 +       sodipodi:type="inkscape:persp3d" />
 122.457 +    <marker
 122.458 +       inkscape:stockid="Arrow2Lend"
 122.459 +       orient="auto"
 122.460 +       refY="0"
 122.461 +       refX="0"
 122.462 +       id="Arrow2Lend-5"
 122.463 +       style="overflow:visible">
 122.464 +      <path
 122.465 +         id="path5376-9"
 122.466 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.467 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.468 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.469 +    </marker>
 122.470 +    <inkscape:perspective
 122.471 +       id="perspective6297-61"
 122.472 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.473 +       inkscape:vp_z="1 : 0.5 : 1"
 122.474 +       inkscape:vp_y="0 : 1000 : 0"
 122.475 +       inkscape:vp_x="0 : 0.5 : 1"
 122.476 +       sodipodi:type="inkscape:persp3d" />
 122.477 +    <marker
 122.478 +       inkscape:stockid="Arrow2Lend"
 122.479 +       orient="auto"
 122.480 +       refY="0"
 122.481 +       refX="0"
 122.482 +       id="Arrow2Lend-1"
 122.483 +       style="overflow:visible">
 122.484 +      <path
 122.485 +         id="path5376-4"
 122.486 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.487 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.488 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.489 +    </marker>
 122.490 +    <inkscape:perspective
 122.491 +       id="perspective6297-7"
 122.492 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.493 +       inkscape:vp_z="1 : 0.5 : 1"
 122.494 +       inkscape:vp_y="0 : 1000 : 0"
 122.495 +       inkscape:vp_x="0 : 0.5 : 1"
 122.496 +       sodipodi:type="inkscape:persp3d" />
 122.497 +    <marker
 122.498 +       inkscape:stockid="Arrow2Lend"
 122.499 +       orient="auto"
 122.500 +       refY="0"
 122.501 +       refX="0"
 122.502 +       id="Arrow2Lend-2"
 122.503 +       style="overflow:visible">
 122.504 +      <path
 122.505 +         id="path5376-7"
 122.506 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.507 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.508 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.509 +    </marker>
 122.510 +    <inkscape:perspective
 122.511 +       id="perspective6297-9"
 122.512 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.513 +       inkscape:vp_z="1 : 0.5 : 1"
 122.514 +       inkscape:vp_y="0 : 1000 : 0"
 122.515 +       inkscape:vp_x="0 : 0.5 : 1"
 122.516 +       sodipodi:type="inkscape:persp3d" />
 122.517 +    <marker
 122.518 +       inkscape:stockid="Arrow2Lend"
 122.519 +       orient="auto"
 122.520 +       refY="0"
 122.521 +       refX="0"
 122.522 +       id="Arrow2Lend-24"
 122.523 +       style="overflow:visible">
 122.524 +      <path
 122.525 +         id="path5376-44"
 122.526 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.527 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.528 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.529 +    </marker>
 122.530 +    <inkscape:perspective
 122.531 +       id="perspective6297-93"
 122.532 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.533 +       inkscape:vp_z="1 : 0.5 : 1"
 122.534 +       inkscape:vp_y="0 : 1000 : 0"
 122.535 +       inkscape:vp_x="0 : 0.5 : 1"
 122.536 +       sodipodi:type="inkscape:persp3d" />
 122.537 +    <marker
 122.538 +       inkscape:stockid="Arrow2Lend"
 122.539 +       orient="auto"
 122.540 +       refY="0"
 122.541 +       refX="0"
 122.542 +       id="Arrow2Lend-8"
 122.543 +       style="overflow:visible">
 122.544 +      <path
 122.545 +         id="path5376-3"
 122.546 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.547 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.548 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.549 +    </marker>
 122.550 +    <inkscape:perspective
 122.551 +       id="perspective6297-95"
 122.552 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.553 +       inkscape:vp_z="1 : 0.5 : 1"
 122.554 +       inkscape:vp_y="0 : 1000 : 0"
 122.555 +       inkscape:vp_x="0 : 0.5 : 1"
 122.556 +       sodipodi:type="inkscape:persp3d" />
 122.557 +    <marker
 122.558 +       inkscape:stockid="Arrow2Lend"
 122.559 +       orient="auto"
 122.560 +       refY="0"
 122.561 +       refX="0"
 122.562 +       id="Arrow2Lend-43"
 122.563 +       style="overflow:visible">
 122.564 +      <path
 122.565 +         id="path5376-94"
 122.566 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.567 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.568 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.569 +    </marker>
 122.570 +    <inkscape:perspective
 122.571 +       id="perspective6849"
 122.572 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.573 +       inkscape:vp_z="1 : 0.5 : 1"
 122.574 +       inkscape:vp_y="0 : 1000 : 0"
 122.575 +       inkscape:vp_x="0 : 0.5 : 1"
 122.576 +       sodipodi:type="inkscape:persp3d" />
 122.577 +    <marker
 122.578 +       inkscape:stockid="Arrow2Lend"
 122.579 +       orient="auto"
 122.580 +       refY="0"
 122.581 +       refX="0"
 122.582 +       id="Arrow2Lend-43-3"
 122.583 +       style="overflow:visible">
 122.584 +      <path
 122.585 +         id="path5376-94-6"
 122.586 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.587 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.588 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.589 +    </marker>
 122.590 +    <inkscape:perspective
 122.591 +       id="perspective6877"
 122.592 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.593 +       inkscape:vp_z="1 : 0.5 : 1"
 122.594 +       inkscape:vp_y="0 : 1000 : 0"
 122.595 +       inkscape:vp_x="0 : 0.5 : 1"
 122.596 +       sodipodi:type="inkscape:persp3d" />
 122.597 +    <marker
 122.598 +       inkscape:stockid="Arrow2Lend"
 122.599 +       orient="auto"
 122.600 +       refY="0"
 122.601 +       refX="0"
 122.602 +       id="Arrow2Lend-43-1"
 122.603 +       style="overflow:visible">
 122.604 +      <path
 122.605 +         id="path5376-94-2"
 122.606 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.607 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.608 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.609 +    </marker>
 122.610 +    <inkscape:perspective
 122.611 +       id="perspective6905"
 122.612 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.613 +       inkscape:vp_z="1 : 0.5 : 1"
 122.614 +       inkscape:vp_y="0 : 1000 : 0"
 122.615 +       inkscape:vp_x="0 : 0.5 : 1"
 122.616 +       sodipodi:type="inkscape:persp3d" />
 122.617 +    <marker
 122.618 +       inkscape:stockid="Arrow2Lend"
 122.619 +       orient="auto"
 122.620 +       refY="0"
 122.621 +       refX="0"
 122.622 +       id="Arrow2Lend-43-39"
 122.623 +       style="overflow:visible">
 122.624 +      <path
 122.625 +         id="path5376-94-1"
 122.626 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.627 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.628 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.629 +    </marker>
 122.630 +    <inkscape:perspective
 122.631 +       id="perspective6905-8"
 122.632 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.633 +       inkscape:vp_z="1 : 0.5 : 1"
 122.634 +       inkscape:vp_y="0 : 1000 : 0"
 122.635 +       inkscape:vp_x="0 : 0.5 : 1"
 122.636 +       sodipodi:type="inkscape:persp3d" />
 122.637 +    <marker
 122.638 +       inkscape:stockid="Arrow2Lend"
 122.639 +       orient="auto"
 122.640 +       refY="0"
 122.641 +       refX="0"
 122.642 +       id="Arrow2Lend-43-7"
 122.643 +       style="overflow:visible">
 122.644 +      <path
 122.645 +         id="path5376-94-0"
 122.646 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.647 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.648 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.649 +    </marker>
 122.650 +    <inkscape:perspective
 122.651 +       id="perspective6905-2"
 122.652 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.653 +       inkscape:vp_z="1 : 0.5 : 1"
 122.654 +       inkscape:vp_y="0 : 1000 : 0"
 122.655 +       inkscape:vp_x="0 : 0.5 : 1"
 122.656 +       sodipodi:type="inkscape:persp3d" />
 122.657 +    <marker
 122.658 +       inkscape:stockid="Arrow2Lend"
 122.659 +       orient="auto"
 122.660 +       refY="0"
 122.661 +       refX="0"
 122.662 +       id="Arrow2Lend-43-79"
 122.663 +       style="overflow:visible">
 122.664 +      <path
 122.665 +         id="path5376-94-19"
 122.666 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.667 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.668 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.669 +    </marker>
 122.670 +    <inkscape:perspective
 122.671 +       id="perspective7003"
 122.672 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.673 +       inkscape:vp_z="1 : 0.5 : 1"
 122.674 +       inkscape:vp_y="0 : 1000 : 0"
 122.675 +       inkscape:vp_x="0 : 0.5 : 1"
 122.676 +       sodipodi:type="inkscape:persp3d" />
 122.677 +    <inkscape:perspective
 122.678 +       id="perspective7058"
 122.679 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.680 +       inkscape:vp_z="1 : 0.5 : 1"
 122.681 +       inkscape:vp_y="0 : 1000 : 0"
 122.682 +       inkscape:vp_x="0 : 0.5 : 1"
 122.683 +       sodipodi:type="inkscape:persp3d" />
 122.684 +    <marker
 122.685 +       inkscape:stockid="Arrow2Lend"
 122.686 +       orient="auto"
 122.687 +       refY="0"
 122.688 +       refX="0"
 122.689 +       id="Arrow2Lend-43-37"
 122.690 +       style="overflow:visible">
 122.691 +      <path
 122.692 +         id="path5376-94-9"
 122.693 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.694 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.695 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 122.696 +    </marker>
 122.697 +    <inkscape:perspective
 122.698 +       id="perspective7090"
 122.699 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.700 +       inkscape:vp_z="1 : 0.5 : 1"
 122.701 +       inkscape:vp_y="0 : 1000 : 0"
 122.702 +       inkscape:vp_x="0 : 0.5 : 1"
 122.703 +       sodipodi:type="inkscape:persp3d" />
 122.704 +    <inkscape:perspective
 122.705 +       id="perspective7184"
 122.706 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.707 +       inkscape:vp_z="1 : 0.5 : 1"
 122.708 +       inkscape:vp_y="0 : 1000 : 0"
 122.709 +       inkscape:vp_x="0 : 0.5 : 1"
 122.710 +       sodipodi:type="inkscape:persp3d" />
 122.711 +    <inkscape:perspective
 122.712 +       id="perspective7206"
 122.713 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.714 +       inkscape:vp_z="1 : 0.5 : 1"
 122.715 +       inkscape:vp_y="0 : 1000 : 0"
 122.716 +       inkscape:vp_x="0 : 0.5 : 1"
 122.717 +       sodipodi:type="inkscape:persp3d" />
 122.718 +    <marker
 122.719 +       inkscape:stockid="Arrow2Lstart"
 122.720 +       orient="auto"
 122.721 +       refY="0"
 122.722 +       refX="0"
 122.723 +       id="Arrow2Lstart-6"
 122.724 +       style="overflow:visible">
 122.725 +      <path
 122.726 +         id="path5373-4"
 122.727 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.728 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.729 +         transform="matrix(1.1,0,0,1.1,1.1,0)" />
 122.730 +    </marker>
 122.731 +    <inkscape:perspective
 122.732 +       id="perspective7234"
 122.733 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.734 +       inkscape:vp_z="1 : 0.5 : 1"
 122.735 +       inkscape:vp_y="0 : 1000 : 0"
 122.736 +       inkscape:vp_x="0 : 0.5 : 1"
 122.737 +       sodipodi:type="inkscape:persp3d" />
 122.738 +    <inkscape:perspective
 122.739 +       id="perspective7256"
 122.740 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.741 +       inkscape:vp_z="1 : 0.5 : 1"
 122.742 +       inkscape:vp_y="0 : 1000 : 0"
 122.743 +       inkscape:vp_x="0 : 0.5 : 1"
 122.744 +       sodipodi:type="inkscape:persp3d" />
 122.745 +    <inkscape:perspective
 122.746 +       id="perspective7278"
 122.747 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.748 +       inkscape:vp_z="1 : 0.5 : 1"
 122.749 +       inkscape:vp_y="0 : 1000 : 0"
 122.750 +       inkscape:vp_x="0 : 0.5 : 1"
 122.751 +       sodipodi:type="inkscape:persp3d" />
 122.752 +    <marker
 122.753 +       inkscape:stockid="Arrow2Lstart"
 122.754 +       orient="auto"
 122.755 +       refY="0"
 122.756 +       refX="0"
 122.757 +       id="Arrow2Lstart-1"
 122.758 +       style="overflow:visible">
 122.759 +      <path
 122.760 +         id="path5373-0"
 122.761 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 122.762 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 122.763 +         transform="matrix(1.1,0,0,1.1,1.1,0)" />
 122.764 +    </marker>
 122.765 +    <inkscape:perspective
 122.766 +       id="perspective7306"
 122.767 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.768 +       inkscape:vp_z="1 : 0.5 : 1"
 122.769 +       inkscape:vp_y="0 : 1000 : 0"
 122.770 +       inkscape:vp_x="0 : 0.5 : 1"
 122.771 +       sodipodi:type="inkscape:persp3d" />
 122.772 +    <inkscape:perspective
 122.773 +       id="perspective5599"
 122.774 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.775 +       inkscape:vp_z="1 : 0.5 : 1"
 122.776 +       inkscape:vp_y="0 : 1000 : 0"
 122.777 +       inkscape:vp_x="0 : 0.5 : 1"
 122.778 +       sodipodi:type="inkscape:persp3d" />
 122.779 +    <pattern
 122.780 +       patternTransform="matrix(10,0,0,10,-424.46325,-373.10086)"
 122.781 +       id="pattern5681"
 122.782 +       xlink:href="#Polkadots-large-4"
 122.783 +       inkscape:collect="always" />
 122.784 +    <inkscape:perspective
 122.785 +       id="perspective5631"
 122.786 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 122.787 +       inkscape:vp_z="1 : 0.5 : 1"
 122.788 +       inkscape:vp_y="0 : 1000 : 0"
 122.789 +       inkscape:vp_x="0 : 0.5 : 1"
 122.790 +       sodipodi:type="inkscape:persp3d" />
 122.791 +    <pattern
 122.792 +       inkscape:stockid="Polka dots, large"
 122.793 +       id="Polkadots-large-4"
 122.794 +       patternTransform="translate(0,0) scale(10,10)"
 122.795 +       height="10"
 122.796 +       width="10"
 122.797 +       patternUnits="userSpaceOnUse"
 122.798 +       inkscape:collect="always">
 122.799 +      <circle
 122.800 +         id="circle5033-8"
 122.801 +         r="0.45"
 122.802 +         cy="0.810"
 122.803 +         cx="2.567"
 122.804 +         style="fill:black;stroke:none" />
 122.805 +      <circle
 122.806 +         id="circle5035-8"
 122.807 +         r="0.45"
 122.808 +         cy="2.33"
 122.809 +         cx="3.048"
 122.810 +         style="fill:black;stroke:none" />
 122.811 +      <circle
 122.812 +         id="circle5037-8"
 122.813 +         r="0.45"
 122.814 +         cy="2.415"
 122.815 +         cx="4.418"
 122.816 +         style="fill:black;stroke:none" />
 122.817 +      <circle
 122.818 +         id="circle5039-9"
 122.819 +         r="0.45"
 122.820 +         cy="3.029"
 122.821 +         cx="1.844"
 122.822 +         style="fill:black;stroke:none" />
 122.823 +      <circle
 122.824 +         id="circle5041-7"
 122.825 +         r="0.45"
 122.826 +         cy="1.363"
 122.827 +         cx="6.08"
 122.828 +         style="fill:black;stroke:none" />
 122.829 +      <circle
 122.830 +         id="circle5043-7"
 122.831 +         r="0.45"
 122.832 +         cy="4.413"
 122.833 +         cx="5.819"
 122.834 +         style="fill:black;stroke:none" />
 122.835 +      <circle
 122.836 +         id="circle5045-6"
 122.837 +         r="0.45"
 122.838 +         cy="4.048"
 122.839 +         cx="4.305"
 122.840 +         style="fill:black;stroke:none" />
 122.841 +      <circle
 122.842 +         id="circle5047-4"
 122.843 +         r="0.45"
 122.844 +         cy="3.045"
 122.845 +         cx="5.541"
 122.846 +         style="fill:black;stroke:none" />
 122.847 +      <circle
 122.848 +         id="circle5049-3"
 122.849 +         r="0.45"
 122.850 +         cy="5.527"
 122.851 +         cx="4.785"
 122.852 +         style="fill:black;stroke:none" />
 122.853 +      <circle
 122.854 +         id="circle5051-0"
 122.855 +         r="0.45"
 122.856 +         cy="5.184"
 122.857 +         cx="2.667"
 122.858 +         style="fill:black;stroke:none" />
 122.859 +      <circle
 122.860 +         id="circle5053-3"
 122.861 +         r="0.45"
 122.862 +         cy="1.448"
 122.863 +         cx="7.965"
 122.864 +         style="fill:black;stroke:none" />
 122.865 +      <circle
 122.866 +         id="circle5055-0"
 122.867 +         r="0.45"
 122.868 +         cy="5.049"
 122.869 +         cx="7.047"
 122.870 +         style="fill:black;stroke:none" />
 122.871 +      <circle
 122.872 +         id="circle5057-9"
 122.873 +         r="0.45"
 122.874 +         cy="0.895"
 122.875 +         cx="4.340"
 122.876 +         style="fill:black;stroke:none" />
 122.877 +      <circle
 122.878 +         id="circle5059-2"
 122.879 +         r="0.45"
 122.880 +         cy="0.340"
 122.881 +         cx="7.125"
 122.882 +         style="fill:black;stroke:none" />
 122.883 +      <circle
 122.884 +         id="circle5061-5"
 122.885 +         r="0.45"
 122.886 +         cy="1.049"
 122.887 +         cx="9.553"
 122.888 +         style="fill:black;stroke:none" />
 122.889 +      <circle
 122.890 +         id="circle5063-4"
 122.891 +         r="0.45"
 122.892 +         cy="2.689"
 122.893 +         cx="7.006"
 122.894 +         style="fill:black;stroke:none" />
 122.895 +      <circle
 122.896 +         id="circle5065-0"
 122.897 +         r="0.45"
 122.898 +         cy="2.689"
 122.899 +         cx="8.909"
 122.900 +         style="fill:black;stroke:none" />
 122.901 +      <circle
 122.902 +         id="circle5067-5"
 122.903 +         r="0.45"
 122.904 +         cy="4.407"
 122.905 +         cx="9.315"
 122.906 +         style="fill:black;stroke:none" />
 122.907 +      <circle
 122.908 +         id="circle5069-9"
 122.909 +         r="0.45"
 122.910 +         cy="3.870"
 122.911 +         cx="7.820"
 122.912 +         style="fill:black;stroke:none" />
 122.913 +      <circle
 122.914 +         id="circle5071-4"
 122.915 +         r="0.45"
 122.916 +         cy="5.948"
 122.917 +         cx="8.270"
 122.918 +         style="fill:black;stroke:none" />
 122.919 +      <circle
 122.920 +         id="circle5073-6"
 122.921 +         r="0.45"
 122.922 +         cy="7.428"
 122.923 +         cx="7.973"
 122.924 +         style="fill:black;stroke:none" />
 122.925 +      <circle
 122.926 +         id="circle5075-9"
 122.927 +         r="0.45"
 122.928 +         cy="8.072"
 122.929 +         cx="9.342"
 122.930 +         style="fill:black;stroke:none" />
 122.931 +      <circle
 122.932 +         id="circle5077-2"
 122.933 +         r="0.45"
 122.934 +         cy="9.315"
 122.935 +         cx="8.206"
 122.936 +         style="fill:black;stroke:none" />
 122.937 +      <circle
 122.938 +         id="circle5079-2"
 122.939 +         r="0.45"
 122.940 +         cy="9.475"
 122.941 +         cx="9.682"
 122.942 +         style="fill:black;stroke:none" />
 122.943 +      <circle
 122.944 +         id="circle5081-4"
 122.945 +         r="0.45"
 122.946 +         cy="6.186"
 122.947 +         cx="9.688"
 122.948 +         style="fill:black;stroke:none" />
 122.949 +      <circle
 122.950 +         id="circle5083-7"
 122.951 +         r="0.45"
 122.952 +         cy="6.296"
 122.953 +         cx="3.379"
 122.954 +         style="fill:black;stroke:none" />
 122.955 +      <circle
 122.956 +         id="circle5085-7"
 122.957 +         r="0.45"
 122.958 +         cy="8.204"
 122.959 +         cx="2.871"
 122.960 +         style="fill:black;stroke:none" />
 122.961 +      <circle
 122.962 +         id="circle5087-5"
 122.963 +         r="0.45"
 122.964 +         cy="8.719"
 122.965 +         cx="4.59"
 122.966 +         style="fill:black;stroke:none" />
 122.967 +      <circle
 122.968 +         id="circle5089-4"
 122.969 +         r="0.45"
 122.970 +         cy="9.671"
 122.971 +         cx="3.181"
 122.972 +         style="fill:black;stroke:none" />
 122.973 +      <circle
 122.974 +         id="circle5091-8"
 122.975 +         r="0.45"
 122.976 +         cy="7.315"
 122.977 +         cx="5.734"
 122.978 +         style="fill:black;stroke:none" />
 122.979 +      <circle
 122.980 +         id="circle5093-1"
 122.981 +         r="0.45"
 122.982 +         cy="6.513"
 122.983 +         cx="6.707"
 122.984 +         style="fill:black;stroke:none" />
 122.985 +      <circle
 122.986 +         id="circle5095-2"
 122.987 +         r="0.45"
 122.988 +         cy="9.670"
 122.989 +         cx="5.730"
 122.990 +         style="fill:black;stroke:none" />
 122.991 +      <circle
 122.992 +         id="circle5097-8"
 122.993 +         r="0.45"
 122.994 +         cy="8.373"
 122.995 +         cx="6.535"
 122.996 +         style="fill:black;stroke:none" />
 122.997 +      <circle
 122.998 +         id="circle5099-9"
 122.999 +         r="0.45"
122.1000 +         cy="7.154"
122.1001 +         cx="4.37"
122.1002 +         style="fill:black;stroke:none" />
122.1003 +      <circle
122.1004 +         id="circle5101-3"
122.1005 +         r="0.45"
122.1006 +         cy="7.25"
122.1007 +         cx="0.622"
122.1008 +         style="fill:black;stroke:none" />
122.1009 +      <circle
122.1010 +         id="circle5103-6"
122.1011 +         r="0.45"
122.1012 +         cy="5.679"
122.1013 +         cx="0.831"
122.1014 +         style="fill:black;stroke:none" />
122.1015 +      <circle
122.1016 +         id="circle5105-8"
122.1017 +         r="0.45"
122.1018 +         cy="8.519"
122.1019 +         cx="1.257"
122.1020 +         style="fill:black;stroke:none" />
122.1021 +      <circle
122.1022 +         id="circle5107-0"
122.1023 +         r="0.45"
122.1024 +         cy="6.877"
122.1025 +         cx="1.989"
122.1026 +         style="fill:black;stroke:none" />
122.1027 +      <circle
122.1028 +         id="circle5109-2"
122.1029 +         r="0.45"
122.1030 +         cy="3.181"
122.1031 +         cx="0.374"
122.1032 +         style="fill:black;stroke:none" />
122.1033 +      <circle
122.1034 +         id="circle5111-1"
122.1035 +         r="0.45"
122.1036 +         cy="1.664"
122.1037 +         cx="1.166"
122.1038 +         style="fill:black;stroke:none" />
122.1039 +      <circle
122.1040 +         id="circle5113-0"
122.1041 +         r="0.45"
122.1042 +         cy="0.093"
122.1043 +         cx="1.151"
122.1044 +         style="fill:black;stroke:none" />
122.1045 +      <circle
122.1046 +         id="circle5115-5"
122.1047 +         r="0.45"
122.1048 +         cy="10.093"
122.1049 +         cx="1.151"
122.1050 +         style="fill:black;stroke:none" />
122.1051 +      <circle
122.1052 +         id="circle5117-1"
122.1053 +         r="0.45"
122.1054 +         cy="4.451"
122.1055 +         cx="1.302"
122.1056 +         style="fill:black;stroke:none" />
122.1057 +      <circle
122.1058 +         id="circle5119-1"
122.1059 +         r="0.45"
122.1060 +         cy="3.763"
122.1061 +         cx="3.047"
122.1062 +         style="fill:black;stroke:none" />
122.1063 +    </pattern>
122.1064 +    <pattern
122.1065 +       patternTransform="matrix(10,0,0,10,-758.37454,-191.03945)"
122.1066 +       id="pattern5799"
122.1067 +       xlink:href="#Strips1_1-8"
122.1068 +       inkscape:collect="always" />
122.1069 +    <inkscape:perspective
122.1070 +       id="perspective5792"
122.1071 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
122.1072 +       inkscape:vp_z="1 : 0.5 : 1"
122.1073 +       inkscape:vp_y="0 : 1000 : 0"
122.1074 +       inkscape:vp_x="0 : 0.5 : 1"
122.1075 +       sodipodi:type="inkscape:persp3d" />
122.1076 +    <pattern
122.1077 +       inkscape:stockid="Stripes 1:1"
122.1078 +       id="Strips1_1-8"
122.1079 +       patternTransform="translate(0,0) scale(10,10)"
122.1080 +       height="1"
122.1081 +       width="2"
122.1082 +       patternUnits="userSpaceOnUse"
122.1083 +       inkscape:collect="always">
122.1084 +      <rect
122.1085 +         id="rect4583-5"
122.1086 +         height="2"
122.1087 +         width="1"
122.1088 +         y="-0.5"
122.1089 +         x="0"
122.1090 +         style="fill:black;stroke:none" />
122.1091 +    </pattern>
122.1092 +    <inkscape:perspective
122.1093 +       id="perspective5887"
122.1094 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
122.1095 +       inkscape:vp_z="1 : 0.5 : 1"
122.1096 +       inkscape:vp_y="0 : 1000 : 0"
122.1097 +       inkscape:vp_x="0 : 0.5 : 1"
122.1098 +       sodipodi:type="inkscape:persp3d" />
122.1099 +    <inkscape:perspective
122.1100 +       id="perspective5887-6"
122.1101 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
122.1102 +       inkscape:vp_z="1 : 0.5 : 1"
122.1103 +       inkscape:vp_y="0 : 1000 : 0"
122.1104 +       inkscape:vp_x="0 : 0.5 : 1"
122.1105 +       sodipodi:type="inkscape:persp3d" />
122.1106 +  </defs>
122.1107 +  <sodipodi:namedview
122.1108 +     id="base"
122.1109 +     pagecolor="#ffffff"
122.1110 +     bordercolor="#666666"
122.1111 +     borderopacity="1.0"
122.1112 +     inkscape:pageopacity="0.0"
122.1113 +     inkscape:pageshadow="2"
122.1114 +     inkscape:zoom="1.1735931"
122.1115 +     inkscape:cx="221.93156"
122.1116 +     inkscape:cy="431.16782"
122.1117 +     inkscape:document-units="px"
122.1118 +     inkscape:current-layer="layer1"
122.1119 +     showgrid="false"
122.1120 +     inkscape:window-width="1920"
122.1121 +     inkscape:window-height="1173"
122.1122 +     inkscape:window-x="0"
122.1123 +     inkscape:window-y="0"
122.1124 +     inkscape:window-maximized="1" />
122.1125 +  <metadata
122.1126 +     id="metadata7">
122.1127 +    <rdf:RDF>
122.1128 +      <cc:Work
122.1129 +         rdf:about="">
122.1130 +        <dc:format>image/svg+xml</dc:format>
122.1131 +        <dc:type
122.1132 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
122.1133 +        <dc:title></dc:title>
122.1134 +      </cc:Work>
122.1135 +    </rdf:RDF>
122.1136 +  </metadata>
122.1137 +  <g
122.1138 +     inkscape:label="Layer 1"
122.1139 +     inkscape:groupmode="layer"
122.1140 +     id="layer1">
122.1141 +    <path
122.1142 +       sodipodi:type="arc"
122.1143 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1144 +       id="path2816"
122.1145 +       sodipodi:cx="283.37222"
122.1146 +       sodipodi:cy="180.53554"
122.1147 +       sodipodi:rx="33.136269"
122.1148 +       sodipodi:ry="33.136269"
122.1149 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1150 +       transform="translate(91.410396,120.02067)" />
122.1151 +    <path
122.1152 +       sodipodi:type="arc"
122.1153 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1154 +       id="path2816-7"
122.1155 +       sodipodi:cx="283.37222"
122.1156 +       sodipodi:cy="180.53554"
122.1157 +       sodipodi:rx="33.136269"
122.1158 +       sodipodi:ry="33.136269"
122.1159 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1160 +       transform="translate(-224.24147,274.12991)" />
122.1161 +    <path
122.1162 +       sodipodi:type="arc"
122.1163 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1164 +       id="path2816-72"
122.1165 +       sodipodi:cx="283.37222"
122.1166 +       sodipodi:cy="180.53554"
122.1167 +       sodipodi:rx="33.136269"
122.1168 +       sodipodi:ry="33.136269"
122.1169 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1170 +       transform="translate(269.39436,274.12992)" />
122.1171 +    <path
122.1172 +       sodipodi:type="arc"
122.1173 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1174 +       id="path2816-7-0"
122.1175 +       sodipodi:cx="283.37222"
122.1176 +       sodipodi:cy="180.53554"
122.1177 +       sodipodi:rx="33.136269"
122.1178 +       sodipodi:ry="33.136269"
122.1179 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1180 +       transform="translate(-389.71511,424.02485)" />
122.1181 +    <path
122.1182 +       sodipodi:type="arc"
122.1183 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1184 +       id="path2816-72-3"
122.1185 +       sodipodi:cx="283.37222"
122.1186 +       sodipodi:cy="180.53554"
122.1187 +       sodipodi:rx="33.136269"
122.1188 +       sodipodi:ry="33.136269"
122.1189 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1190 +       transform="translate(-64.079283,428.02485)" />
122.1191 +    <rect
122.1192 +       style="fill:url(#Polkadots-large);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1193 +       id="rect3603-5"
122.1194 +       width="22.852598"
122.1195 +       height="22.852598"
122.1196 +       x="209.18231"
122.1197 +       y="683.83386" />
122.1198 +    <path
122.1199 +       sodipodi:type="arc"
122.1200 +       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1201 +       id="path2816-7-03"
122.1202 +       sodipodi:cx="283.37222"
122.1203 +       sodipodi:cy="180.53554"
122.1204 +       sodipodi:rx="33.136269"
122.1205 +       sodipodi:ry="33.136269"
122.1206 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1207 +       transform="translate(-156.81945,579.82208)" />
122.1208 +    <path
122.1209 +       sodipodi:type="arc"
122.1210 +       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1211 +       id="path2816-72-1"
122.1212 +       sodipodi:cx="283.37222"
122.1213 +       sodipodi:cy="180.53554"
122.1214 +       sodipodi:rx="33.136269"
122.1215 +       sodipodi:ry="33.136269"
122.1216 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1217 +       transform="translate(26.81637,579.82208)" />
122.1218 +    <path
122.1219 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1220 +       d="m 209.18231,703.16847 -55.38024,38.3295"
122.1221 +       id="path3659-8"
122.1222 +       inkscape:connector-type="polyline"
122.1223 +       inkscape:connection-start="#rect3603-5"
122.1224 +       inkscape:connection-end="#path2816-7-03" />
122.1225 +    <path
122.1226 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1227 +       d="m 232.03491,703.56361 51.34595,37.31292"
122.1228 +       id="path3661-0"
122.1229 +       inkscape:connector-type="polyline"
122.1230 +       inkscape:connection-start="#rect3603-5"
122.1231 +       inkscape:connection-end="#path2816-72-1" />
122.1232 +    <path
122.1233 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1234 +       d="m 220.43522,683.83386 -0.63949,-42.14094"
122.1235 +       id="path5272"
122.1236 +       inkscape:connector-type="polyline"
122.1237 +       inkscape:connection-start="#rect3603-5"
122.1238 +       inkscape:connection-end="#path2816-72-3" />
122.1239 +    <rect
122.1240 +       style="fill:url(#Strips1_1);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1241 +       id="rect3603-5-1"
122.1242 +       width="22.852598"
122.1243 +       height="22.852598"
122.1244 +       x="542.67188"
122.1245 +       y="531.5954" />
122.1246 +    <path
122.1247 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1248 +       d="m 553.92597,531.5954 -0.66006,-43.79736"
122.1249 +       id="path5296"
122.1250 +       inkscape:connector-type="polyline"
122.1251 +       inkscape:connection-start="#rect3603-5-1"
122.1252 +       inkscape:connection-end="#path2816-72" />
122.1253 +    <rect
122.1254 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0"
122.1255 +       id="rect3603-5-9"
122.1256 +       width="22.852598"
122.1257 +       height="22.852598"
122.1258 +       x="114.36478"
122.1259 +       y="840.53021" />
122.1260 +    <path
122.1261 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 6;stroke-dashoffset:0"
122.1262 +       d="m 125.88609,840.53021 0.39115,-47.03745"
122.1263 +       id="path5320"
122.1264 +       inkscape:connector-type="polyline"
122.1265 +       inkscape:connection-start="#rect3603-5-9"
122.1266 +       inkscape:connection-end="#path2816-7-03" />
122.1267 +    <rect
122.1268 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0"
122.1269 +       id="rect3603-5-9-1"
122.1270 +       width="22.852598"
122.1271 +       height="22.852598"
122.1272 +       x="298.37836"
122.1273 +       y="840.06854" />
122.1274 +    <path
122.1275 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 6;stroke-dashoffset:0"
122.1276 +       d="M 309.85279,840.06854 310.049,793.4936"
122.1277 +       id="path5344"
122.1278 +       inkscape:connector-type="polyline"
122.1279 +       inkscape:connection-start="#rect3603-5-9-1"
122.1280 +       inkscape:connection-end="#path2816-72-1" />
122.1281 +    <text
122.1282 +       xml:space="preserve"
122.1283 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1284 +       x="372.69061"
122.1285 +       y="199.36656"
122.1286 +       id="text5346"><tspan
122.1287 +         sodipodi:role="line"
122.1288 +         id="tspan5348"
122.1289 +         x="372.69061"
122.1290 +         y="199.36656">Flugplan</tspan></text>
122.1291 +    <path
122.1292 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart)"
122.1293 +       d="m 374.83865,265.41999 0.14546,-55.06426"
122.1294 +       id="path5350"
122.1295 +       inkscape:connector-type="polyline"
122.1296 +       sodipodi:nodetypes="cc" />
122.1297 +    <rect
122.1298 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1299 +       id="rect3603-5-9-2"
122.1300 +       width="22.852598"
122.1301 +       height="22.852598"
122.1302 +       x="-116.74095"
122.1303 +       y="684.24438" />
122.1304 +    <path
122.1305 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1306 +       d="m -105.96895,637.69459 0.52534,46.54979"
122.1307 +       id="path6011"
122.1308 +       inkscape:connector-type="polyline"
122.1309 +       inkscape:connection-start="#path2816-7-0"
122.1310 +       inkscape:connection-end="#rect3603-5-9-2" />
122.1311 +    <path
122.1312 +       sodipodi:type="arc"
122.1313 +       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1314 +       id="path2816-7-03-0"
122.1315 +       sodipodi:cx="283.37222"
122.1316 +       sodipodi:cy="180.53554"
122.1317 +       sodipodi:rx="33.136269"
122.1318 +       sodipodi:ry="33.136269"
122.1319 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1320 +       transform="translate(174.76143,428.35404)" />
122.1321 +    <path
122.1322 +       sodipodi:type="arc"
122.1323 +       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1324 +       id="path2816-72-1-3"
122.1325 +       sodipodi:cx="283.37222"
122.1326 +       sodipodi:cy="180.53554"
122.1327 +       sodipodi:rx="33.136269"
122.1328 +       sodipodi:ry="33.136269"
122.1329 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1330 +       transform="translate(362.39724,428.35404)" />
122.1331 +    <rect
122.1332 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0"
122.1333 +       id="rect3603-5-9-0"
122.1334 +       width="22.852598"
122.1335 +       height="22.852598"
122.1336 +       x="445.94565"
122.1337 +       y="689.06213" />
122.1338 +    <path
122.1339 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 6;stroke-dashoffset:0"
122.1340 +       d="m 457.46696,689.06213 0.39115,-47.03741"
122.1341 +       id="path5320-3"
122.1342 +       inkscape:connector-type="polyline"
122.1343 +       inkscape:connection-start="#rect3603-5-9-0"
122.1344 +       inkscape:connection-end="#path2816-7-03-0" />
122.1345 +    <rect
122.1346 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0"
122.1347 +       id="rect3603-5-9-1-3"
122.1348 +       width="22.852598"
122.1349 +       height="22.852598"
122.1350 +       x="633.95923"
122.1351 +       y="688.60046" />
122.1352 +    <path
122.1353 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 6;stroke-dashoffset:0"
122.1354 +       d="m 645.43366,688.60046 0.19621,-46.5749"
122.1355 +       id="path5344-7"
122.1356 +       inkscape:connector-type="polyline"
122.1357 +       inkscape:connection-start="#rect3603-5-9-1-3"
122.1358 +       inkscape:connection-end="#path2816-72-1-3" />
122.1359 +    <path
122.1360 +       sodipodi:type="arc"
122.1361 +       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1362 +       id="path2816-7-03-9"
122.1363 +       sodipodi:cx="283.37222"
122.1364 +       sodipodi:cy="180.53554"
122.1365 +       sodipodi:rx="33.136269"
122.1366 +       sodipodi:ry="33.136269"
122.1367 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1368 +       transform="translate(-483.49013,578.43479)" />
122.1369 +    <path
122.1370 +       sodipodi:type="arc"
122.1371 +       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1372 +       id="path2816-72-1-4"
122.1373 +       sodipodi:cx="283.37222"
122.1374 +       sodipodi:cy="180.53554"
122.1375 +       sodipodi:rx="33.136269"
122.1376 +       sodipodi:ry="33.136269"
122.1377 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1378 +       transform="translate(-307.85431,578.43479)" />
122.1379 +    <rect
122.1380 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0"
122.1381 +       id="rect3603-5-9-9"
122.1382 +       width="22.852598"
122.1383 +       height="22.852598"
122.1384 +       x="-212.30591"
122.1385 +       y="839.14294" />
122.1386 +    <path
122.1387 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 6;stroke-dashoffset:0"
122.1388 +       d="m -200.78459,839.14294 0.39114,-47.03747"
122.1389 +       id="path5320-9"
122.1390 +       inkscape:connector-type="polyline"
122.1391 +       inkscape:connection-start="#rect3603-5-9-9"
122.1392 +       inkscape:connection-end="#path2816-7-03-9" />
122.1393 +    <rect
122.1394 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0"
122.1395 +       id="rect3603-5-9-1-1"
122.1396 +       width="22.852598"
122.1397 +       height="22.852598"
122.1398 +       x="-36.292263"
122.1399 +       y="838.68127" />
122.1400 +    <path
122.1401 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 6;stroke-dashoffset:0"
122.1402 +       d="m -24.817836,838.68127 0.196178,-46.57496"
122.1403 +       id="path5344-9"
122.1404 +       inkscape:connector-type="polyline"
122.1405 +       inkscape:connection-start="#rect3603-5-9-1-1"
122.1406 +       inkscape:connection-end="#path2816-72-1-4" />
122.1407 +    <path
122.1408 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1409 +       d="m -172.55705,740.56809 55.8161,-37.26813"
122.1410 +       id="path6087"
122.1411 +       inkscape:connector-type="polyline"
122.1412 +       inkscape:connection-start="#path2816-7-03-9"
122.1413 +       inkscape:connection-end="#rect3603-5-9-2" />
122.1414 +    <path
122.1415 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1416 +       d="M -50.572029,738.5394 -93.888353,704.61857"
122.1417 +       id="path6089"
122.1418 +       inkscape:connector-type="polyline"
122.1419 +       inkscape:connection-start="#path2816-72-1-4"
122.1420 +       inkscape:connection-end="#rect3603-5-9-2" />
122.1421 +    <path
122.1422 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1423 +       d="m 485.45619,590.136 57.21568,-39.27155"
122.1424 +       id="path6093"
122.1425 +       inkscape:connector-type="polyline"
122.1426 +       inkscape:connection-start="#path2816-7-03-0"
122.1427 +       inkscape:connection-end="#rect3603-5-1" />
122.1428 +    <path
122.1429 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1430 +       d="M 618.85738,589.55264 565.52447,551.23175"
122.1431 +       id="path6097"
122.1432 +       inkscape:connector-type="polyline"
122.1433 +       inkscape:connection-start="#path2816-72-1-3"
122.1434 +       inkscape:connection-end="#rect3603-5-1" />
122.1435 +    <path
122.1436 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1437 +       d="M 340.8179,300.34151 C 50.307692,303.5017 -17.457666,444.66684 -106.18074,572.84732"
122.1438 +       id="path6423"
122.1439 +       inkscape:connector-type="polyline"
122.1440 +       sodipodi:nodetypes="cc" />
122.1441 +    <path
122.1442 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend-43)"
122.1443 +       d="m -172.1557,741.62752 c 40.48481,0.36183 61.12883,-25.95772 66.08451,-33.41352"
122.1444 +       id="path6625"
122.1445 +       inkscape:connector-type="polyline"
122.1446 +       sodipodi:nodetypes="cc" />
122.1447 +    <path
122.1448 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend-43)"
122.1449 +       d="m -50.381979,737.91491 c -29.870891,7.92771 -41.247706,-11.88569 -53.461631,-30.44343"
122.1450 +       id="path6627"
122.1451 +       inkscape:connector-type="polyline"
122.1452 +       sodipodi:nodetypes="cc" />
122.1453 +    <path
122.1454 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1455 +       d="M -75.73731,597.35056 C 37.810362,589.51134 45.172671,572.43861 57.174244,555.76929"
122.1456 +       id="path6629"
122.1457 +       inkscape:connector-type="polyline"
122.1458 +       sodipodi:nodetypes="cc" />
122.1459 +    <path
122.1460 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1461 +       d="M 92.072808,449.58856 C 200.66722,457.9325 305.8608,460.04157 374.23141,394.64188"
122.1462 +       id="path6631"
122.1463 +       inkscape:connector-type="polyline"
122.1464 +       sodipodi:nodetypes="cc" />
122.1465 +    <path
122.1466 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1467 +       d="m 406.79285,301.63184 c 114.8421,11.19647 127.60665,67.49698 147.87157,120.48337"
122.1468 +       id="path6633"
122.1469 +       inkscape:connector-type="polyline"
122.1470 +       sodipodi:nodetypes="cc" />
122.1471 +    <path
122.1472 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend-43)"
122.1473 +       d="m 485.60981,589.92534 c 51.23582,-6.64116 56.17091,-20.99911 68.31209,-34.15605"
122.1474 +       id="path6635"
122.1475 +       inkscape:connector-type="polyline"
122.1476 +       sodipodi:nodetypes="cc" />
122.1477 +    <path
122.1478 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend-43)"
122.1479 +       d="m 618.52136,589.92534 c -30.14524,-0.89688 -50.34863,-20.56851 -64.59947,-34.89856"
122.1480 +       id="path6637"
122.1481 +       inkscape:connector-type="polyline"
122.1482 +       sodipodi:nodetypes="cc" />
122.1483 +    <path
122.1484 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1485 +       d="M 520.50837,442.90585 C 474.18244,430.57646 448.96603,462.08994 376.45899,395.3844"
122.1486 +       id="path6639"
122.1487 +       inkscape:connector-type="polyline"
122.1488 +       sodipodi:nodetypes="cc" />
122.1489 +    <path
122.1490 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1491 +       d="m -105.39451,681.03989 c 35.980047,1.89428 11.808763,-27.1657 -0.74253,-41.58126"
122.1492 +       id="path6629-5"
122.1493 +       inkscape:connector-type="polyline"
122.1494 +       sodipodi:nodetypes="cc" />
122.1495 +    <path
122.1496 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1497 +       d="m 554.3373,529.49474 c 25.9772,-2.71259 9.67091,-22.83603 -1.48505,-40.83874"
122.1498 +       id="path6629-5-5"
122.1499 +       inkscape:connector-type="polyline"
122.1500 +       sodipodi:nodetypes="cc" />
122.1501 +    <path
122.1502 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1503 +       d="m 375.38936,375.79256 c 33.42882,-5.18907 10.44353,-30.11708 -1e-5,-41.58126"
122.1504 +       id="path6629-5-6"
122.1505 +       inkscape:connector-type="polyline"
122.1506 +       sodipodi:nodetypes="cc" />
122.1507 +    <path
122.1508 +       sodipodi:type="star"
122.1509 +       style="fill:none;stroke:#000000;stroke-width:4.3825655;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1510 +       id="path6993"
122.1511 +       sodipodi:sides="3"
122.1512 +       sodipodi:cx="-11.13784"
122.1513 +       sodipodi:cy="214.79665"
122.1514 +       sodipodi:r1="32.348774"
122.1515 +       sodipodi:r2="16.174385"
122.1516 +       sodipodi:arg1="0.52359878"
122.1517 +       sodipodi:arg2="1.5707963"
122.1518 +       inkscape:flatsided="true"
122.1519 +       inkscape:rounded="0"
122.1520 +       inkscape:randomized="0"
122.1521 +       d="m 16.87702,230.97103 -56.02972,0 28.01486,-48.52316 28.01486,48.52316 z"
122.1522 +       transform="matrix(0.45635369,0,0,0.45635369,379.76383,289.41662)" />
122.1523 +    <path
122.1524 +       sodipodi:type="star"
122.1525 +       style="fill:none;stroke:#000000;stroke-width:4.3825655;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1526 +       id="path6993-9"
122.1527 +       sodipodi:sides="3"
122.1528 +       sodipodi:cx="-11.13784"
122.1529 +       sodipodi:cy="214.79665"
122.1530 +       sodipodi:r1="32.348774"
122.1531 +       sodipodi:r2="16.174385"
122.1532 +       sodipodi:arg1="0.52359878"
122.1533 +       sodipodi:arg2="1.5707963"
122.1534 +       inkscape:flatsided="true"
122.1535 +       inkscape:rounded="0"
122.1536 +       inkscape:randomized="0"
122.1537 +       d="m 16.87702,230.97103 -56.02972,0 28.01486,-48.52316 28.01486,48.52316 z"
122.1538 +       transform="matrix(-0.45635369,0,0,-0.45635369,52.091446,638.22155)" />
122.1539 +    <path
122.1540 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1541 +       d="M 188.50698,596.27943 62.369944,545.96157"
122.1542 +       id="path7017"
122.1543 +       inkscape:connector-type="polyline"
122.1544 +       inkscape:connection-start="#path2816-72-3"
122.1545 +       inkscape:connection-end="#path6993-9" />
122.1546 +    <path
122.1547 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1548 +       d="M -75.267742,593.03025 51.909675,545.8423"
122.1549 +       id="path7019"
122.1550 +       inkscape:connector-type="polyline"
122.1551 +       inkscape:connection-start="#path2816-7-0"
122.1552 +       inkscape:connection-end="#path6993-9" />
122.1553 +    <path
122.1554 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1555 +       d="m 57.417027,532.81707 0.987278,-45.02316"
122.1556 +       id="path7021"
122.1557 +       inkscape:connector-type="polyline"
122.1558 +       inkscape:connection-start="#path6993-9"
122.1559 +       inkscape:connection-end="#path2816-7" />
122.1560 +    <path
122.1561 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1562 +       d="M 91.467615,447.39812 367.3356,385.40004"
122.1563 +       id="path7023"
122.1564 +       inkscape:connector-type="polyline"
122.1565 +       inkscape:connection-start="#path2816-7"
122.1566 +       inkscape:connection-end="#path6993" />
122.1567 +    <path
122.1568 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1569 +       d="M 521.97321,442.40309 382.9818,387.05472"
122.1570 +       id="path7025"
122.1571 +       inkscape:connector-type="polyline"
122.1572 +       inkscape:connection-start="#path2816-72"
122.1573 +       inkscape:connection-end="#path6993" />
122.1574 +    <path
122.1575 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
122.1576 +       d="m 374.69453,372.70075 0.0476,-39.0083"
122.1577 +       id="path7027"
122.1578 +       inkscape:connector-type="polyline"
122.1579 +       inkscape:connection-start="#path6993"
122.1580 +       inkscape:connection-end="#path2816" />
122.1581 +    <path
122.1582 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-43)"
122.1583 +       d="m 58.26837,531.80882 c 30.800128,-7.62369 10.040472,-26.10208 -3e-6,-42.32379"
122.1584 +       id="path6629-0"
122.1585 +       inkscape:connector-type="polyline"
122.1586 +       sodipodi:nodetypes="cc" />
122.1587 +    <text
122.1588 +       xml:space="preserve"
122.1589 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1590 +       x="71.441093"
122.1591 +       y="360.59363"
122.1592 +       id="text7078"><tspan
122.1593 +         sodipodi:role="line"
122.1594 +         id="tspan7080"
122.1595 +         x="71.441093"
122.1596 +         y="360.59363">1</tspan></text>
122.1597 +    <text
122.1598 +       xml:space="preserve"
122.1599 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1600 +       x="-139.4847"
122.1601 +       y="756.47797"
122.1602 +       id="text7107"><tspan
122.1603 +         sodipodi:role="line"
122.1604 +         id="tspan7109"
122.1605 +         x="-139.4847"
122.1606 +         y="756.47797">2</tspan></text>
122.1607 +    <text
122.1608 +       xml:space="preserve"
122.1609 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1610 +       x="-83.052979"
122.1611 +       y="756.47797"
122.1612 +       id="text7111"><tspan
122.1613 +         sodipodi:role="line"
122.1614 +         id="tspan7113"
122.1615 +         x="-83.052979"
122.1616 +         y="756.47797">3</tspan></text>
122.1617 +    <text
122.1618 +       xml:space="preserve"
122.1619 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1620 +       x="-80.934975"
122.1621 +       y="673.54303"
122.1622 +       id="text7115"><tspan
122.1623 +         sodipodi:role="line"
122.1624 +         id="tspan7117"
122.1625 +         x="-80.934975"
122.1626 +         y="673.54303">4</tspan></text>
122.1627 +    <text
122.1628 +       xml:space="preserve"
122.1629 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1630 +       x="-3.7126169"
122.1631 +       y="610.42859"
122.1632 +       id="text7119"><tspan
122.1633 +         sodipodi:role="line"
122.1634 +         id="tspan7121"
122.1635 +         x="-3.7126169"
122.1636 +         y="610.42859">5</tspan></text>
122.1637 +    <text
122.1638 +       xml:space="preserve"
122.1639 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1640 +       x="88.360199"
122.1641 +       y="522.35577"
122.1642 +       id="text7123"><tspan
122.1643 +         sodipodi:role="line"
122.1644 +         id="tspan7125"
122.1645 +         x="88.360199"
122.1646 +         y="522.35577">6</tspan></text>
122.1647 +    <text
122.1648 +       xml:space="preserve"
122.1649 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1650 +       x="243.54742"
122.1651 +       y="476.31937"
122.1652 +       id="text7127"><tspan
122.1653 +         sodipodi:role="line"
122.1654 +         id="tspan7129"
122.1655 +         x="243.54742"
122.1656 +         y="476.31937">7</tspan></text>
122.1657 +    <text
122.1658 +       xml:space="preserve"
122.1659 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1660 +       x="504.91541"
122.1661 +       y="319.64709"
122.1662 +       id="text7131"><tspan
122.1663 +         sodipodi:role="line"
122.1664 +         id="tspan7133"
122.1665 +         x="504.91541"
122.1666 +         y="319.64709">8</tspan></text>
122.1667 +    <text
122.1668 +       xml:space="preserve"
122.1669 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1670 +       x="520.50836"
122.1671 +       y="601.80566"
122.1672 +       id="text7135"><tspan
122.1673 +         sodipodi:role="line"
122.1674 +         id="tspan7137"
122.1675 +         x="520.50836"
122.1676 +         y="601.80566">9</tspan></text>
122.1677 +    <text
122.1678 +       xml:space="preserve"
122.1679 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1680 +       x="579.91016"
122.1681 +       y="601.06317"
122.1682 +       id="text7139"><tspan
122.1683 +         sodipodi:role="line"
122.1684 +         id="tspan7141"
122.1685 +         x="579.91016"
122.1686 +         y="601.06317">10</tspan></text>
122.1687 +    <text
122.1688 +       xml:space="preserve"
122.1689 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1690 +       x="591.04803"
122.1691 +       y="523.09827"
122.1692 +       id="text7143"><tspan
122.1693 +         sodipodi:role="line"
122.1694 +         id="tspan7145"
122.1695 +         x="591.04803"
122.1696 +         y="523.09827">11</tspan></text>
122.1697 +    <text
122.1698 +       xml:space="preserve"
122.1699 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1700 +       x="441.05844"
122.1701 +       y="461.4689"
122.1702 +       id="text7147"><tspan
122.1703 +         sodipodi:role="line"
122.1704 +         id="tspan7149"
122.1705 +         x="441.05844"
122.1706 +         y="461.4689">12</tspan></text>
122.1707 +    <text
122.1708 +       xml:space="preserve"
122.1709 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1710 +       x="410.61502"
122.1711 +       y="370.13861"
122.1712 +       id="text7151"><tspan
122.1713 +         sodipodi:role="line"
122.1714 +         id="tspan7153"
122.1715 +         x="410.61502"
122.1716 +         y="370.13861">13</tspan></text>
122.1717 +    <path
122.1718 +       style="opacity:0.4;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart)"
122.1719 +       d="m -172.33608,294.01715 -55.06426,-0.14546"
122.1720 +       id="path5350-3"
122.1721 +       inkscape:connector-type="polyline"
122.1722 +       sodipodi:nodetypes="cc" />
122.1723 +    <path
122.1724 +       sodipodi:type="star"
122.1725 +       style="opacity:0.4;fill:none;stroke:#000000;stroke-width:4.3825655;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1726 +       id="path6993-1"
122.1727 +       sodipodi:sides="3"
122.1728 +       sodipodi:cx="-11.13784"
122.1729 +       sodipodi:cy="214.79665"
122.1730 +       sodipodi:r1="32.348774"
122.1731 +       sodipodi:r2="16.174385"
122.1732 +       sodipodi:arg1="0.52359878"
122.1733 +       sodipodi:arg2="1.5707963"
122.1734 +       inkscape:flatsided="true"
122.1735 +       inkscape:rounded="0"
122.1736 +       inkscape:randomized="0"
122.1737 +       d="m 16.87702,230.97103 -56.02972,0 28.01486,-48.52316 28.01486,48.52316 z"
122.1738 +       transform="matrix(0.45635369,0,0,0.45635369,-197.77531,78.215891)" />
122.1739 +    <path
122.1740 +       sodipodi:type="star"
122.1741 +       style="opacity:0.4;fill:none;stroke:#000000;stroke-width:4.3825655;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1742 +       id="path6993-9-9"
122.1743 +       sodipodi:sides="3"
122.1744 +       sodipodi:cx="-11.13784"
122.1745 +       sodipodi:cy="214.79665"
122.1746 +       sodipodi:r1="32.348774"
122.1747 +       sodipodi:r2="16.174385"
122.1748 +       sodipodi:arg1="0.52359878"
122.1749 +       sodipodi:arg2="1.5707963"
122.1750 +       inkscape:flatsided="true"
122.1751 +       inkscape:rounded="0"
122.1752 +       inkscape:randomized="0"
122.1753 +       d="m 16.87702,230.97103 -56.02972,0 28.01486,-48.52316 28.01486,48.52316 z"
122.1754 +       transform="matrix(-0.45635369,0,0,-0.45635369,-208.01075,240.66499)" />
122.1755 +    <path
122.1756 +       style="opacity:0.4;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-start:url(#Arrow2Lstart)"
122.1757 +       d="m -173.14844,323.692 -55.06426,-0.14546"
122.1758 +       id="path5350-3-9"
122.1759 +       inkscape:connector-type="polyline"
122.1760 +       sodipodi:nodetypes="cc" />
122.1761 +    <path
122.1762 +       sodipodi:type="arc"
122.1763 +       style="opacity:0.4;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1764 +       id="path2816-5"
122.1765 +       sodipodi:cx="283.37222"
122.1766 +       sodipodi:cy="180.53554"
122.1767 +       sodipodi:rx="33.136269"
122.1768 +       sodipodi:ry="33.136269"
122.1769 +       d="m 316.50849,180.53554 a 33.136269,33.136269 0 1 1 -66.27254,0 33.136269,33.136269 0 1 1 66.27254,0 z"
122.1770 +       transform="translate(-485.27856,-85.877348)" />
122.1771 +    <text
122.1772 +       xml:space="preserve"
122.1773 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:start;text-anchor:start;opacity:0.4;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1774 +       x="-147.85071"
122.1775 +       y="93.381699"
122.1776 +       id="text7322"><tspan
122.1777 +         sodipodi:role="line"
122.1778 +         id="tspan7324"
122.1779 +         x="-147.85071"
122.1780 +         y="93.381699" /><tspan
122.1781 +         sodipodi:role="line"
122.1782 +         x="-147.85071"
122.1783 +         y="123.3817"
122.1784 +         id="tspan7326">Term</tspan><tspan
122.1785 +         sodipodi:role="line"
122.1786 +         x="-147.85071"
122.1787 +         y="153.3817"
122.1788 +         id="tspan7328">Oder-Verknüpfung</tspan><tspan
122.1789 +         sodipodi:role="line"
122.1790 +         x="-147.85071"
122.1791 +         y="183.3817"
122.1792 +         id="tspan7332">Und-Verknüfpung</tspan><tspan
122.1793 +         sodipodi:role="line"
122.1794 +         x="-147.85071"
122.1795 +         y="213.3817"
122.1796 +         id="tspan7336">Größer-Als-Vergleich</tspan><tspan
122.1797 +         sodipodi:role="line"
122.1798 +         x="-147.85071"
122.1799 +         y="243.3817"
122.1800 +         id="tspan5587">Teilmenrelation</tspan><tspan
122.1801 +         sodipodi:role="line"
122.1802 +         x="-147.85071"
122.1803 +         y="273.38171"
122.1804 +         id="tspan5589">Äquivalenzvergleich</tspan><tspan
122.1805 +         sodipodi:role="line"
122.1806 +         x="-147.85071"
122.1807 +         y="303.38171"
122.1808 +         id="tspan7338">Boolesche Anfrage/Antwort</tspan><tspan
122.1809 +         sodipodi:role="line"
122.1810 +         x="-147.85071"
122.1811 +         y="333.38171"
122.1812 +         id="tspan7340">Werterückgabe</tspan></text>
122.1813 +    <rect
122.1814 +       style="opacity:0.40000000000000002;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1815 +       id="rect3603-5-9-2-0"
122.1816 +       width="22.852598"
122.1817 +       height="22.852598"
122.1818 +       x="-215.0744"
122.1819 +       y="190.91006" />
122.1820 +    <rect
122.1821 +       style="opacity:0.4;fill:url(#pattern5681);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1822 +       id="rect3603-5-0"
122.1823 +       width="22.852598"
122.1824 +       height="22.852598"
122.1825 +       x="-215.28096"
122.1826 +       y="220.733" />
122.1827 +    <rect
122.1828 +       style="opacity:0.4;fill:url(#pattern5799);fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
122.1829 +       id="rect3603-5-1-0"
122.1830 +       width="22.852598"
122.1831 +       height="22.852598"
122.1832 +       x="-215.70267"
122.1833 +       y="250.55595" />
122.1834 +    <text
122.1835 +       xml:space="preserve"
122.1836 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1837 +       x="362.13574"
122.1838 +       y="236.06563"
122.1839 +       id="text6023"><tspan
122.1840 +         sodipodi:role="line"
122.1841 +         id="tspan6025"
122.1842 +         x="362.13574"
122.1843 +         y="236.06563">0</tspan></text>
122.1844 +    <text
122.1845 +       xml:space="preserve"
122.1846 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1847 +       x="455.86499"
122.1848 +       y="739.64728"
122.1849 +       id="text6069"><tspan
122.1850 +         sodipodi:role="line"
122.1851 +         id="tspan6071"
122.1852 +         x="455.86499"
122.1853 +         y="739.64728">ADEP</tspan></text>
122.1854 +    <text
122.1855 +       xml:space="preserve"
122.1856 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1857 +       x="647.58392"
122.1858 +       y="741.3515"
122.1859 +       id="text6073"><tspan
122.1860 +         sodipodi:role="line"
122.1861 +         id="tspan6075"
122.1862 +         x="647.58392"
122.1863 +         y="741.3515">&quot;OMDB&quot;</tspan></text>
122.1864 +    <text
122.1865 +       xml:space="preserve"
122.1866 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1867 +       x="-203.64809"
122.1868 +       y="891.3183"
122.1869 +       id="text6077"><tspan
122.1870 +         sodipodi:role="line"
122.1871 +         id="tspan6079"
122.1872 +         x="-203.64809"
122.1873 +         y="891.3183">TAS</tspan></text>
122.1874 +    <text
122.1875 +       xml:space="preserve"
122.1876 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1877 +       x="-28.118778"
122.1878 +       y="889.61414"
122.1879 +       id="text6081"><tspan
122.1880 +         sodipodi:role="line"
122.1881 +         id="tspan6083"
122.1882 +         x="-28.118778"
122.1883 +         y="889.61414">200</tspan></text>
122.1884 +    <text
122.1885 +       xml:space="preserve"
122.1886 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1887 +       x="122.70011"
122.1888 +       y="888.76202"
122.1889 +       id="text6085"><tspan
122.1890 +         sodipodi:role="line"
122.1891 +         id="tspan6087"
122.1892 +         x="122.70011"
122.1893 +         y="888.76202">ROUTE</tspan></text>
122.1894 +    <text
122.1895 +       xml:space="preserve"
122.1896 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
122.1897 +       x="311.01068"
122.1898 +       y="887.90991"
122.1899 +       id="text6089"><tspan
122.1900 +         sodipodi:role="line"
122.1901 +         id="tspan6091"
122.1902 +         x="311.01068"
122.1903 +         y="887.90991">&quot;BALUS&quot;</tspan></text>
122.1904 +  </g>
122.1905 +</svg>
   123.1 Binary file paper/src/images/stack_vector_uml.png has changed
   124.1 Binary file paper/src/images/term_operator_uml.png has changed
   125.1 Binary file paper/src/images/title_page.pdf has changed
   126.1 Binary file paper/src/images/uml_factories.png has changed
   127.1 Binary file paper/src/images/uml_flight_plan.png has changed
   128.1 Binary file paper/src/images/uml_property.png has changed
   129.1 Binary file paper/src/images/uml_terms.png has changed
   130.1 Binary file paper/src/images/uml_vm.png has changed
   131.1 Binary file paper/src/images/virtual_machine_basic.pdf has changed
   132.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   132.2 +++ b/paper/src/images/virtual_machine_basic.svg	Fri Jun 04 13:48:28 2010 +0200
   132.3 @@ -0,0 +1,729 @@
   132.4 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
   132.5 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
   132.6 +
   132.7 +<svg
   132.8 +   xmlns:dc="http://purl.org/dc/elements/1.1/"
   132.9 +   xmlns:cc="http://creativecommons.org/ns#"
  132.10 +   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  132.11 +   xmlns:svg="http://www.w3.org/2000/svg"
  132.12 +   xmlns="http://www.w3.org/2000/svg"
  132.13 +   xmlns:xlink="http://www.w3.org/1999/xlink"
  132.14 +   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  132.15 +   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  132.16 +   width="744.09448819"
  132.17 +   height="1052.3622047"
  132.18 +   id="svg10173"
  132.19 +   version="1.1"
  132.20 +   inkscape:version="0.47pre4 r22446"
  132.21 +   sodipodi:docname="virtual_machine_basic.svg">
  132.22 +  <defs
  132.23 +     id="defs10175">
  132.24 +    <marker
  132.25 +       inkscape:stockid="DotM"
  132.26 +       orient="auto"
  132.27 +       refY="0.0"
  132.28 +       refX="0.0"
  132.29 +       id="DotM"
  132.30 +       style="overflow:visible">
  132.31 +      <path
  132.32 +         id="path6901"
  132.33 +         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
  132.34 +         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none"
  132.35 +         transform="scale(0.4) translate(7.4, 1)" />
  132.36 +    </marker>
  132.37 +    <linearGradient
  132.38 +       inkscape:collect="always"
  132.39 +       id="linearGradient17128">
  132.40 +      <stop
  132.41 +         style="stop-color:#000000;stop-opacity:1;"
  132.42 +         offset="0"
  132.43 +         id="stop17130" />
  132.44 +      <stop
  132.45 +         style="stop-color:#000000;stop-opacity:0;"
  132.46 +         offset="1"
  132.47 +         id="stop17132" />
  132.48 +    </linearGradient>
  132.49 +    <marker
  132.50 +       inkscape:stockid="EmptyTriangleInL"
  132.51 +       orient="auto"
  132.52 +       refY="0.0"
  132.53 +       refX="0.0"
  132.54 +       id="EmptyTriangleInL"
  132.55 +       style="overflow:visible">
  132.56 +      <path
  132.57 +         id="path6988"
  132.58 +         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
  132.59 +         style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt;marker-start:none"
  132.60 +         transform="scale(-0.8) translate(-6,0)" />
  132.61 +    </marker>
  132.62 +    <marker
  132.63 +       inkscape:stockid="Arrow2Lstart"
  132.64 +       orient="auto"
  132.65 +       refY="0.0"
  132.66 +       refX="0.0"
  132.67 +       id="Arrow2Lstart"
  132.68 +       style="overflow:visible">
  132.69 +      <path
  132.70 +         id="path6854"
  132.71 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
  132.72 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  132.73 +         transform="scale(1.1) translate(1,0)" />
  132.74 +    </marker>
  132.75 +    <marker
  132.76 +       inkscape:stockid="Arrow2Lend"
  132.77 +       orient="auto"
  132.78 +       refY="0.0"
  132.79 +       refX="0.0"
  132.80 +       id="Arrow2Lend"
  132.81 +       style="overflow:visible;">
  132.82 +      <path
  132.83 +         id="path6857"
  132.84 +         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
  132.85 +         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
  132.86 +         transform="scale(1.1) rotate(180) translate(1,0)" />
  132.87 +    </marker>
  132.88 +    <inkscape:perspective
  132.89 +       sodipodi:type="inkscape:persp3d"
  132.90 +       inkscape:vp_x="0 : 526.18109 : 1"
  132.91 +       inkscape:vp_y="0 : 1000 : 0"
  132.92 +       inkscape:vp_z="744.09448 : 526.18109 : 1"
  132.93 +       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
  132.94 +       id="perspective10181" />
  132.95 +    <inkscape:perspective
  132.96 +       id="perspective10124"
  132.97 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
  132.98 +       inkscape:vp_z="1 : 0.5 : 1"
  132.99 +       inkscape:vp_y="0 : 1000 : 0"
 132.100 +       inkscape:vp_x="0 : 0.5 : 1"
 132.101 +       sodipodi:type="inkscape:persp3d" />
 132.102 +    <inkscape:perspective
 132.103 +       id="perspective15032"
 132.104 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.105 +       inkscape:vp_z="1 : 0.5 : 1"
 132.106 +       inkscape:vp_y="0 : 1000 : 0"
 132.107 +       inkscape:vp_x="0 : 0.5 : 1"
 132.108 +       sodipodi:type="inkscape:persp3d" />
 132.109 +    <inkscape:perspective
 132.110 +       id="perspective15067"
 132.111 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.112 +       inkscape:vp_z="1 : 0.5 : 1"
 132.113 +       inkscape:vp_y="0 : 1000 : 0"
 132.114 +       inkscape:vp_x="0 : 0.5 : 1"
 132.115 +       sodipodi:type="inkscape:persp3d" />
 132.116 +    <inkscape:perspective
 132.117 +       id="perspective15067-4"
 132.118 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.119 +       inkscape:vp_z="1 : 0.5 : 1"
 132.120 +       inkscape:vp_y="0 : 1000 : 0"
 132.121 +       inkscape:vp_x="0 : 0.5 : 1"
 132.122 +       sodipodi:type="inkscape:persp3d" />
 132.123 +    <inkscape:perspective
 132.124 +       id="perspective15130"
 132.125 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.126 +       inkscape:vp_z="1 : 0.5 : 1"
 132.127 +       inkscape:vp_y="0 : 1000 : 0"
 132.128 +       inkscape:vp_x="0 : 0.5 : 1"
 132.129 +       sodipodi:type="inkscape:persp3d" />
 132.130 +    <inkscape:perspective
 132.131 +       id="perspective15161"
 132.132 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.133 +       inkscape:vp_z="1 : 0.5 : 1"
 132.134 +       inkscape:vp_y="0 : 1000 : 0"
 132.135 +       inkscape:vp_x="0 : 0.5 : 1"
 132.136 +       sodipodi:type="inkscape:persp3d" />
 132.137 +    <inkscape:perspective
 132.138 +       id="perspective15196"
 132.139 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.140 +       inkscape:vp_z="1 : 0.5 : 1"
 132.141 +       inkscape:vp_y="0 : 1000 : 0"
 132.142 +       inkscape:vp_x="0 : 0.5 : 1"
 132.143 +       sodipodi:type="inkscape:persp3d" />
 132.144 +    <inkscape:perspective
 132.145 +       id="perspective15196-5"
 132.146 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.147 +       inkscape:vp_z="1 : 0.5 : 1"
 132.148 +       inkscape:vp_y="0 : 1000 : 0"
 132.149 +       inkscape:vp_x="0 : 0.5 : 1"
 132.150 +       sodipodi:type="inkscape:persp3d" />
 132.151 +    <inkscape:perspective
 132.152 +       id="perspective15805"
 132.153 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.154 +       inkscape:vp_z="1 : 0.5 : 1"
 132.155 +       inkscape:vp_y="0 : 1000 : 0"
 132.156 +       inkscape:vp_x="0 : 0.5 : 1"
 132.157 +       sodipodi:type="inkscape:persp3d" />
 132.158 +    <marker
 132.159 +       inkscape:stockid="Arrow2Lstart"
 132.160 +       orient="auto"
 132.161 +       refY="0"
 132.162 +       refX="0"
 132.163 +       id="Arrow2Lstart-6"
 132.164 +       style="overflow:visible">
 132.165 +      <path
 132.166 +         id="path6854-1"
 132.167 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 132.168 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 132.169 +         transform="matrix(1.1,0,0,1.1,1.1,0)" />
 132.170 +    </marker>
 132.171 +    <marker
 132.172 +       inkscape:stockid="Arrow2Lend"
 132.173 +       orient="auto"
 132.174 +       refY="0"
 132.175 +       refX="0"
 132.176 +       id="Arrow2Lend-3"
 132.177 +       style="overflow:visible">
 132.178 +      <path
 132.179 +         id="path6857-7"
 132.180 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 132.181 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 132.182 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 132.183 +    </marker>
 132.184 +    <inkscape:perspective
 132.185 +       id="perspective15839"
 132.186 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.187 +       inkscape:vp_z="1 : 0.5 : 1"
 132.188 +       inkscape:vp_y="0 : 1000 : 0"
 132.189 +       inkscape:vp_x="0 : 0.5 : 1"
 132.190 +       sodipodi:type="inkscape:persp3d" />
 132.191 +    <marker
 132.192 +       inkscape:stockid="Arrow2Lstart"
 132.193 +       orient="auto"
 132.194 +       refY="0"
 132.195 +       refX="0"
 132.196 +       id="Arrow2Lstart-1"
 132.197 +       style="overflow:visible">
 132.198 +      <path
 132.199 +         id="path6854-2"
 132.200 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 132.201 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 132.202 +         transform="matrix(1.1,0,0,1.1,1.1,0)" />
 132.203 +    </marker>
 132.204 +    <marker
 132.205 +       inkscape:stockid="Arrow2Lend"
 132.206 +       orient="auto"
 132.207 +       refY="0"
 132.208 +       refX="0"
 132.209 +       id="Arrow2Lend-1"
 132.210 +       style="overflow:visible">
 132.211 +      <path
 132.212 +         id="path6857-0"
 132.213 +         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
 132.214 +         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
 132.215 +         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
 132.216 +    </marker>
 132.217 +    <inkscape:perspective
 132.218 +       id="perspective16966"
 132.219 +       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
 132.220 +       inkscape:vp_z="1 : 0.5 : 1"
 132.221 +       inkscape:vp_y="0 : 1000 : 0"
 132.222 +       inkscape:vp_x="0 : 0.5 : 1"
 132.223 +       sodipodi:type="inkscape:persp3d" />
 132.224 +    <linearGradient
 132.225 +       inkscape:collect="always"
 132.226 +       xlink:href="#linearGradient17128"
 132.227 +       id="linearGradient17134"
 132.228 +       x1="145.94409"
 132.229 +       y1="7.737237"
 132.230 +       x2="282.99554"
 132.231 +       y2="0.93697453"
 132.232 +       gradientUnits="userSpaceOnUse" />
 132.233 +  </defs>
 132.234 +  <sodipodi:namedview
 132.235 +     id="base"
 132.236 +     pagecolor="#ffffff"
 132.237 +     bordercolor="#666666"
 132.238 +     borderopacity="1.0"
 132.239 +     inkscape:pageopacity="0.0"
 132.240 +     inkscape:pageshadow="2"
 132.241 +     inkscape:zoom="1.7218925"
 132.242 +     inkscape:cx="360.31258"
 132.243 +     inkscape:cy="860.92747"
 132.244 +     inkscape:document-units="px"
 132.245 +     inkscape:current-layer="layer1"
 132.246 +     showgrid="false"
 132.247 +     inkscape:window-width="1920"
 132.248 +     inkscape:window-height="1173"
 132.249 +     inkscape:window-x="0"
 132.250 +     inkscape:window-y="0"
 132.251 +     inkscape:window-maximized="1" />
 132.252 +  <metadata
 132.253 +     id="metadata10178">
 132.254 +    <rdf:RDF>
 132.255 +      <cc:Work
 132.256 +         rdf:about="">
 132.257 +        <dc:format>image/svg+xml</dc:format>
 132.258 +        <dc:type
 132.259 +           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
 132.260 +        <dc:title></dc:title>
 132.261 +      </cc:Work>
 132.262 +    </rdf:RDF>
 132.263 +  </metadata>
 132.264 +  <g
 132.265 +     inkscape:label="Layer 1"
 132.266 +     inkscape:groupmode="layer"
 132.267 +     id="layer1">
 132.268 +    <rect
 132.269 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.270 +       id="rect5536-8-6"
 132.271 +       width="7.726438"
 132.272 +       height="8.459693"
 132.273 +       x="320.31171"
 132.274 +       y="-38.198914" />
 132.275 +    <path
 132.276 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.277 +       d="m 320.44244,-29.97353 -6.28869,7.69561"
 132.278 +       id="path6206-92-8"
 132.279 +       inkscape:connector-type="polyline" />
 132.280 +    <path
 132.281 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.282 +       d="m 327.78307,-30.05311 6.0344,7.93582"
 132.283 +       id="path6206-9-8-9"
 132.284 +       inkscape:connector-type="polyline" />
 132.285 +    <rect
 132.286 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.287 +       id="rect5536-1-8-0"
 132.288 +       width="7.726438"
 132.289 +       height="8.459693"
 132.290 +       x="306.51736"
 132.291 +       y="-22.376465" />
 132.292 +    <rect
 132.293 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.294 +       id="rect5536-6-8-6"
 132.295 +       width="7.726438"
 132.296 +       height="8.459693"
 132.297 +       x="333.59564"
 132.298 +       y="-22.295288" />
 132.299 +    <path
 132.300 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.301 +       d="m 306.71831,-13.97481 -6.28869,7.69551"
 132.302 +       id="path6206-2-6-8"
 132.303 +       inkscape:connector-type="polyline" />
 132.304 +    <path
 132.305 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.306 +       d="m 314.16992,-14.09498 6.0344,7.93584"
 132.307 +       id="path6206-9-5-8-7"
 132.308 +       inkscape:connector-type="polyline" />
 132.309 +    <rect
 132.310 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.311 +       id="rect5536-1-4-38-9"
 132.312 +       width="7.726438"
 132.313 +       height="8.459693"
 132.314 +       x="320.05649"
 132.315 +       y="-6.4182739" />
 132.316 +    <rect
 132.317 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.318 +       id="rect5536-1-9-3-0"
 132.319 +       width="7.726438"
 132.320 +       height="8.459693"
 132.321 +       x="292.68228"
 132.322 +       y="-6.3371582" />
 132.323 +    <path
 132.324 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.325 +       d="m 341.32226,-13.85199 6.03439,7.93592"
 132.326 +       id="path6206-9-9-3-3"
 132.327 +       inkscape:connector-type="polyline" />
 132.328 +    <rect
 132.329 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.330 +       id="rect5536-1-4-3-3-3"
 132.331 +       width="7.726438"
 132.332 +       height="8.459693"
 132.333 +       x="347.2088"
 132.334 +       y="-5.9321289" />
 132.335 +    <rect
 132.336 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.337 +       id="rect3750-7-4-8-8-3"
 132.338 +       width="159.8775"
 132.339 +       height="109.26003"
 132.340 +       x="282.9184"
 132.341 +       y="-46.267822" />
 132.342 +    <rect
 132.343 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.344 +       id="rect5536-8-6-6"
 132.345 +       width="7.726438"
 132.346 +       height="8.459693"
 132.347 +       x="396.51999"
 132.348 +       y="-37.792236" />
 132.349 +    <path
 132.350 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.351 +       d="m 396.65075,-29.56684 -6.28869,7.69561"
 132.352 +       id="path6206-92-8-7"
 132.353 +       inkscape:connector-type="polyline" />
 132.354 +    <path
 132.355 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.356 +       d="m 403.99138,-29.64642 6.0344,7.93582"
 132.357 +       id="path6206-9-8-9-0"
 132.358 +       inkscape:connector-type="polyline" />
 132.359 +    <rect
 132.360 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.361 +       id="rect5536-1-8-0-4"
 132.362 +       width="7.726438"
 132.363 +       height="8.459693"
 132.364 +       x="382.72565"
 132.365 +       y="-21.969788" />
 132.366 +    <rect
 132.367 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.368 +       id="rect5536-6-8-6-8"
 132.369 +       width="7.726438"
 132.370 +       height="8.459693"
 132.371 +       x="409.80392"
 132.372 +       y="-21.888611" />
 132.373 +    <path
 132.374 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.375 +       d="m 382.92662,-13.56812 -6.28869,7.69551"
 132.376 +       id="path6206-2-6-8-4"
 132.377 +       inkscape:connector-type="polyline" />
 132.378 +    <path
 132.379 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.380 +       d="m 390.37823,-13.68829 6.0344,7.93584"
 132.381 +       id="path6206-9-5-8-7-8"
 132.382 +       inkscape:connector-type="polyline" />
 132.383 +    <rect
 132.384 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.385 +       id="rect5536-1-4-38-9-1"
 132.386 +       width="7.726438"
 132.387 +       height="8.459693"
 132.388 +       x="396.26477"
 132.389 +       y="-6.0115967" />
 132.390 +    <rect
 132.391 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.392 +       id="rect5536-1-9-3-0-6"
 132.393 +       width="7.726438"
 132.394 +       height="8.459693"
 132.395 +       x="368.89056"
 132.396 +       y="-5.930481" />
 132.397 +    <path
 132.398 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.399 +       d="m 417.53057,-13.4453 6.03439,7.93592"
 132.400 +       id="path6206-9-9-3-3-8"
 132.401 +       inkscape:connector-type="polyline" />
 132.402 +    <rect
 132.403 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.404 +       id="rect5536-1-4-3-3-3-5"
 132.405 +       width="7.726438"
 132.406 +       height="8.459693"
 132.407 +       x="423.41708"
 132.408 +       y="-5.5254517" />
 132.409 +    <rect
 132.410 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.411 +       id="rect5536-8-6-7"
 132.412 +       width="7.726438"
 132.413 +       height="8.459693"
 132.414 +       x="320.29843"
 132.415 +       y="13.873108" />
 132.416 +    <path
 132.417 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.418 +       d="m 320.42917,22.09854 -6.28869,7.69561"
 132.419 +       id="path6206-92-8-1"
 132.420 +       inkscape:connector-type="polyline" />
 132.421 +    <path
 132.422 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.423 +       d="m 327.7698,22.01896 6.0344,7.93582"
 132.424 +       id="path6206-9-8-9-2"
 132.425 +       inkscape:connector-type="polyline" />
 132.426 +    <rect
 132.427 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.428 +       id="rect5536-1-8-0-2"
 132.429 +       width="7.726438"
 132.430 +       height="8.459693"
 132.431 +       x="306.50409"
 132.432 +       y="29.695557" />
 132.433 +    <rect
 132.434 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.435 +       id="rect5536-6-8-6-1"
 132.436 +       width="7.726438"
 132.437 +       height="8.459693"
 132.438 +       x="333.58237"
 132.439 +       y="29.776733" />
 132.440 +    <path
 132.441 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.442 +       d="m 306.70504,38.09726 -6.28869,7.69551"
 132.443 +       id="path6206-2-6-8-5"
 132.444 +       inkscape:connector-type="polyline" />
 132.445 +    <path
 132.446 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.447 +       d="m 314.15665,37.97709 6.0344,7.93584"
 132.448 +       id="path6206-9-5-8-7-0"
 132.449 +       inkscape:connector-type="polyline" />
 132.450 +    <rect
 132.451 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.452 +       id="rect5536-1-4-38-9-9"
 132.453 +       width="7.726438"
 132.454 +       height="8.459693"
 132.455 +       x="320.04321"
 132.456 +       y="45.653748" />
 132.457 +    <rect
 132.458 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.459 +       id="rect5536-1-9-3-0-0"
 132.460 +       width="7.726438"
 132.461 +       height="8.459693"
 132.462 +       x="292.66901"
 132.463 +       y="45.734863" />
 132.464 +    <path
 132.465 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.466 +       d="m 341.30899,38.22008 6.03439,7.93592"
 132.467 +       id="path6206-9-9-3-3-4"
 132.468 +       inkscape:connector-type="polyline" />
 132.469 +    <rect
 132.470 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.471 +       id="rect5536-1-4-3-3-3-0"
 132.472 +       width="7.726438"
 132.473 +       height="8.459693"
 132.474 +       x="347.19553"
 132.475 +       y="46.139893" />
 132.476 +    <rect
 132.477 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.478 +       id="rect5536-8-6-6-1"
 132.479 +       width="7.726438"
 132.480 +       height="8.459693"
 132.481 +       x="396.50671"
 132.482 +       y="14.279785" />
 132.483 +    <path
 132.484 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.485 +       d="m 396.63748,22.50523 -6.28869,7.69561"
 132.486 +       id="path6206-92-8-7-3"
 132.487 +       inkscape:connector-type="polyline" />
 132.488 +    <path
 132.489 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.490 +       d="m 403.97811,22.42565 6.0344,7.93582"
 132.491 +       id="path6206-9-8-9-0-7"
 132.492 +       inkscape:connector-type="polyline" />
 132.493 +    <rect
 132.494 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.495 +       id="rect5536-1-8-0-4-4"
 132.496 +       width="7.726438"
 132.497 +       height="8.459693"
 132.498 +       x="382.71237"
 132.499 +       y="30.102226" />
 132.500 +    <rect
 132.501 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.502 +       id="rect5536-6-8-6-8-1"
 132.503 +       width="7.726438"
 132.504 +       height="8.459693"
 132.505 +       x="409.79065"
 132.506 +       y="30.183411" />
 132.507 +    <path
 132.508 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.509 +       d="m 382.91335,38.50395 -6.28869,7.69551"
 132.510 +       id="path6206-2-6-8-4-1"
 132.511 +       inkscape:connector-type="polyline" />
 132.512 +    <path
 132.513 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.514 +       d="m 390.36496,38.38378 6.0344,7.93584"
 132.515 +       id="path6206-9-5-8-7-8-3"
 132.516 +       inkscape:connector-type="polyline" />
 132.517 +    <rect
 132.518 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.519 +       id="rect5536-1-4-38-9-1-0"
 132.520 +       width="7.726438"
 132.521 +       height="8.459693"
 132.522 +       x="396.2515"
 132.523 +       y="46.060417" />
 132.524 +    <rect
 132.525 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.526 +       id="rect5536-1-9-3-0-6-3"
 132.527 +       width="7.726438"
 132.528 +       height="8.459693"
 132.529 +       x="368.87729"
 132.530 +       y="46.141541" />
 132.531 +    <path
 132.532 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
 132.533 +       d="m 417.5173,38.62677 6.03439,7.93592"
 132.534 +       id="path6206-9-9-3-3-8-2"
 132.535 +       inkscape:connector-type="polyline" />
 132.536 +    <rect
 132.537 +       style="opacity:1;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.538 +       id="rect5536-1-4-3-3-3-5-1"
 132.539 +       width="7.726438"
 132.540 +       height="8.459693"
 132.541 +       x="423.40378"
 132.542 +       y="46.54657" />
 132.543 +    <path
 132.544 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.545 +       d="m 357.0836,272.25679 c -24.65907,-1.65928 -48.85285,-9.55341 -69.10125,-23.87878 -31.66104,-22.50078 -53.17646,-59.11621 -55.18187,-98.144 -3.05004,-40.46003 13.99511,-81.782657 44.96329,-108.015995 7.58341,-3.854114 2.207,14.056414 3.94295,19.86737 0.20724,28.481029 0.0841,56.962995 0.16566,85.444405 53.98986,0 107.97971,0 161.96957,0 0.26528,-35.34636 -0.64704,-70.706417 0.61543,-106.041357 11.57111,2.264895 18.34029,16.537796 26.34785,24.857214 15.18416,22.370155 24.46737,49.416023 23.03389,76.782343 0.66164,36.86399 -16.90341,72.9368 -44.55855,96.96351 -25.12683,22.02955 -58.78608,33.66727 -92.19697,32.16529 z"
 132.546 +       id="path14320" />
 132.547 +    <path
 132.548 +       style="fill:none;stroke:#000000;stroke-width:1.95815217;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)"
 132.549 +       d="m 364.74831,63.44919 0,61.12464"
 132.550 +       id="path14836"
 132.551 +       inkscape:connector-type="polyline" />
 132.552 +    <text
 132.553 +       xml:space="preserve"
 132.554 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:url(#linearGradient17134);fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans;opacity:0.4"
 132.555 +       x="143.4268"
 132.556 +       y="0.92808366"
 132.557 +       id="text14322-9"
 132.558 +       sodipodi:linespacing="125%"><tspan
 132.559 +         sodipodi:role="line"
 132.560 +         id="tspan14324-9"
 132.561 +         x="143.4268"
 132.562 +         y="0.92808366"
 132.563 +         style="fill-opacity:1;fill:url(#linearGradient17134)">Semantische</tspan><tspan
 132.564 +         sodipodi:role="line"
 132.565 +         x="143.4268"
 132.566 +         y="30.928085"
 132.567 +         id="tspan15049"
 132.568 +         style="fill-opacity:1;fill:url(#linearGradient17134)">Datenbank</tspan><tspan
 132.569 +         sodipodi:role="line"
 132.570 +         x="143.4268"
 132.571 +         y="60.928085"
 132.572 +         id="tspan17112"
 132.573 +         style="fill-opacity:1;fill:url(#linearGradient17134)" /><tspan
 132.574 +         sodipodi:role="line"
 132.575 +         x="143.4268"
 132.576 +         y="90.928078"
 132.577 +         id="tspan17114"
 132.578 +         style="fill-opacity:1;fill:url(#linearGradient17134)" /><tspan
 132.579 +         sodipodi:role="line"
 132.580 +         x="143.4268"
 132.581 +         y="120.92808"
 132.582 +         id="tspan17116"
 132.583 +         style="fill-opacity:1;fill:url(#linearGradient17134)" /><tspan
 132.584 +         sodipodi:role="line"
 132.585 +         x="143.4268"
 132.586 +         y="150.92809"
 132.587 +         id="tspan17124"
 132.588 +         style="fill-opacity:1;fill:url(#linearGradient17134)">Virtuelle Machine</tspan></text>
 132.589 +    <rect
 132.590 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.591 +       id="rect15055"
 132.592 +       width="17.059069"
 132.593 +       height="14.329618"
 132.594 +       x="354.276"
 132.595 +       y="-11.850805"
 132.596 +       transform="matrix(0.7331973,0.68001597,-0.68001597,0.7331973,0,0)" />
 132.597 +    <rect
 132.598 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.599 +       id="rect15055-9"
 132.600 +       width="17.059069"
 132.601 +       height="14.329618"
 132.602 +       x="353.94543"
 132.603 +       y="273.36102"
 132.604 +       transform="matrix(0.99999695,-0.00247003,0.00247003,0.99999695,0,0)" />
 132.605 +    <rect
 132.606 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
 132.607 +       id="rect15055-6"
 132.608 +       width="17.059069"
 132.609 +       height="14.329618"
 132.610 +       x="159.93155"
 132.611 +       y="482.14066"
 132.612 +       transform="matrix(0.73233701,-0.68094236,0.68094236,0.73233701,0,0)" />
 132.613 +    <text
 132.614 +       xml:space="preserve"
 132.615 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 132.616 +       x="360.5567"
 132.617 +       y="255.55258"
 132.618 +       id="text14322-4"><tspan
 132.619 +         sodipodi:role="line"
 132.620 +         id="tspan14324-94"
 132.621 +         x="360.5567"
 132.622 +         y="255.55258">API</tspan></text>
 132.623 +    <path
 132.624 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline;stroke-miterlimit:4;stroke-dasharray:none"
 132.625 +       d="m 268.8251,230.72833 29.893,-30.05791"
 132.626 +       id="path15147"
 132.627 +       inkscape:connector-type="polyline"
 132.628 +       sodipodi:nodetypes="cc" />
 132.629 +    <path
 132.630 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
 132.631 +       d="M 457.37016,231.84725 429.87994,200.75287"
 132.632 +       id="path15149"
 132.633 +       inkscape:connector-type="polyline"
 132.634 +       sodipodi:nodetypes="cc" />
 132.635 +    <path
 132.636 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
 132.637 +       d="m 298.37933,200.8104 c 40.41522,23.43588 84.13188,29.44315 131.93279,0.14261"
 132.638 +       id="path15151"
 132.639 +       inkscape:connector-type="polyline"
 132.640 +       sodipodi:nodetypes="cc" />
 132.641 +    <text
 132.642 +       xml:space="preserve"
 132.643 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 132.644 +       x="111.49712"
 132.645 +       y="331.08017"
 132.646 +       id="text14322-47"><tspan
 132.647 +         sodipodi:role="line"
 132.648 +         x="111.49712"
 132.649 +         y="331.08017"
 132.650 +         id="tspan15182">Flugplanmuster</tspan><tspan
 132.651 +         sodipodi:role="line"
 132.652 +         x="111.49712"
 132.653 +         y="361.08017"
 132.654 +         id="tspan15186">Evaluierung</tspan></text>
 132.655 +    <text
 132.656 +       xml:space="preserve"
 132.657 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 132.658 +       x="366.81879"
 132.659 +       y="395.14505"
 132.660 +       id="text14322-47-4"><tspan
 132.661 +         sodipodi:role="line"
 132.662 +         x="366.81879"
 132.663 +         y="395.14505"
 132.664 +         id="tspan15182-9">Flow Point</tspan><tspan
 132.665 +         sodipodi:role="line"
 132.666 +         x="366.81879"
 132.667 +         y="425.14505"
 132.668 +         id="tspan15186-6">Zuweisung</tspan></text>
 132.669 +    <text
 132.670 +       xml:space="preserve"
 132.671 +       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
 132.672 +       x="656.33508"
 132.673 +       y="341.1427"
 132.674 +       id="text14322-47-46"><tspan
 132.675 +         sodipodi:role="line"
 132.676 +         x="656.33508"
 132.677 +         y="341.1427"
 132.678 +         id="tspan15186-2">Startzeit &amp; Flugfläche</tspan><tspan
 132.679 +         sodipodi:role="line"
 132.680 +         x="656.33508"
 132.681 +         y="371.1427"
 132.682 +         id="tspan15235">Zuweisung</tspan></text>
 132.683 +    <path
 132.684 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart);marker-end:url(#Arrow2Lend)"
 132.685 +       d="m 260.7757,250.15024 -56.43918,55.46345"
 132.686 +       id="path15237"
 132.687 +       inkscape:connector-type="polyline" />
 132.688 +    <path
 132.689 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart);marker-end:url(#Arrow2Lend)"
 132.690 +       d="m 464.16934,250.95294 53.72203,58.09919"
 132.691 +       id="path15237-7"
 132.692 +       inkscape:connector-type="polyline" />
 132.693 +    <path
 132.694 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow2Lstart);marker-end:url(#Arrow2Lend)"
 132.695 +       d="m 363.8808,290.39266 -1.11209,79.12229"
 132.696 +       id="path15237-7-8"
 132.697 +       inkscape:connector-type="polyline" />
 132.698 +    <path
 132.699 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,6;stroke-dashoffset:0;marker-start:none"
 132.700 +       d="m 274.99319,237.52034 c 32.82749,-25.24187 52.45506,-56.57671 65.78271,-90.1487"
 132.701 +       id="path15865"
 132.702 +       inkscape:connector-type="polyline"
 132.703 +       inkscape:connection-start="#rect15055"
 132.704 +       sodipodi:nodetypes="cc" />
 132.705 +    <path
 132.706 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,6;stroke-dashoffset:0;marker-start:none"
 132.707 +       d="M 363.13126,272.46491 362.5063,147.53535"
 132.708 +       id="path15867"
 132.709 +       inkscape:connector-type="polyline"
 132.710 +       inkscape:connection-start="#rect15055-9"
 132.711 +       sodipodi:nodetypes="cc" />
 132.712 +    <path
 132.713 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,6;stroke-dashoffset:0;marker-start:none"
 132.714 +       d="M 452.3224,237.7801 C 420.24174,210.55801 399.23417,180.1505 386.2419,147.43723"
 132.715 +       id="path15869"
 132.716 +       inkscape:connector-type="polyline"
 132.717 +       inkscape:connection-start="#rect15055-6"
 132.718 +       sodipodi:nodetypes="cc" />
 132.719 +    <path
 132.720 +       style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;opacity:0.40000000000000002;marker-start:url(#DotM)"
 132.721 +       d="M 151.27382,7.355484 282.86259,6.9143542"
 132.722 +       id="path17136"
 132.723 +       inkscape:connector-type="polyline"
 132.724 +       sodipodi:nodetypes="cc" />
 132.725 +    <path
 132.726 +       style="opacity:0.40000000000000002;fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM)"
 132.727 +       d="m 152.49442,144.76319 79.804,0.22932"
 132.728 +       id="path17138"
 132.729 +       inkscape:connector-type="polyline"
 132.730 +       sodipodi:nodetypes="cc" />
 132.731 +  </g>
 132.732 +</svg>
   133.1 Binary file paper/src/images/virtual_machine_uml.png has changed
   134.1 Binary file paper/src/images/world_map.pdf has changed
   135.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   135.2 +++ b/paper/src/impl.tex	Fri Jun 04 13:48:28 2010 +0200
   135.3 @@ -0,0 +1,134 @@
   135.4 +\chapter{Realisierung}
   135.5 +
   135.6 +\section{Programmiersprache \& Hilfsbibliotheken}
   135.7 +Alle Module in der PRISMA-Architektur sind in C++ realisiert. Zur nahtlosen Integration in das bestehende System und entsprechend der fachlichen Qualifikation der Entwickler wurden auch die Komponenten dieser Arbeit in C++ entwickelt.
   135.8 +
   135.9 +C++ eignet sich für systemnahe und objektorientierte Programmierung. Aufgrund einer fehlenden automatischen Speicherverwaltung, auch \emph{Garbage Collection} genannt, sind einige Richtlinien nach \cite{iec_61508} zu befolgen.\\\\
  135.10 +Zur Entwicklung von robuster Software, wie sie in sicherheitskritischen Systemen verlangt wird, soll u.a. auf dynamische Speicherallokierung verzichtet werden. Wobei der Standard die Laufzeit eines Systems in eine Initialisierungsphase und eine Betriebsphase teilt, in der Initialisierungsphase ist die Allokierung von benötigten Speicher erlaubt, \cite{iec_61508}. Auch \emph{Stack}-basierte Allokationen sind möglich, oft unumgänglich. \cite{iec_61508} beschreibt die Initialisierungsphase als die Zeit unmittelbar nach dem Start eines Systems bis zum Zeitpunkt der Bereitstellung aller Funktionen. Somit ist ein Zeitraum gegeben um auch dynamische Strukturen zu initialisieren, ohne eine Gefährdung der Stabilität eines Systems zu riskieren.
  135.11 +
  135.12 +\subsection{Compiler}
  135.13 +Der ATCCL-Parser wurde mit Hilfe von \texttt{flex} und \texttt{bison} entwickelt und ist daher in der Programmiersprache C realisiert. Nach der Evaluation der C++-Varianten beider Werkzeuge hat sich die schwierige Integration der generierten Module bemerkbar gemacht, die aufgrund von Versionsinkompatibilitäten entstanden sein muss. Gleichzeit war der Aufwand solche Konflikte aufzulösen nicht gerechtfertigt, da der Vorteil eines objektorientierten Designs an dieser Stelle vernachlässigbar sind.\\\\
  135.14 +Die C-Versionen der beiden Werkzeugen sind ausgereift, stabil und bieten eine problemlose Integration. Die Effektivität der Compilerentwicklung wurde durch den Einsatz von \texttt{flex} und \texttt{bison} erheblich gesteigert. Die Entwicklung der Analysephase des Compilers fand in C statt, während die Synthese in C++ realisiert eine C-Schnittstelle bietet um eine erfolgreiches Zusammenspiel zu gewährleisten.
  135.15 +
  135.16 +\subsection{Comsoft \texttt{stdbase}}
  135.17 +Die \emph{C++ Standard Library} schließt dynamische Speicherallokierung nicht aus, in den gängigen Implementierungen, so auch in dem \texttt{GCC}, wird davon auch intensiv gebraucht macht. Dieser Zustand macht den Einsatz der Standardbibliothek für die Entwicklung von PRISMA-Modulen nicht möglich.\\\\
  135.18 +Die \texttt{stdbase}-Bibliothek bietet eine Reihe von Klassen an, die entsprechend der sicherheitstechnischen Richtlinien arbeiten. Diese bieten ein vergleichbares Interface wie die \emph{C++-STL} an, sodass erfahrene C++-Entwickler ohne Einlernungsaufwand dieser bedienen können.
  135.19 +
  135.20 +Als Beispiel bietet die \texttt{stdbase} eine längenbeschränkte \texttt{String}-Klasse an, die eine \emph{Stack}-basierte Variante der \texttt{std::string} mit fast identischem Interface darstellt.\\\\
  135.21 +Bisher bot die \texttt{stdbase} keine Variante der \texttt{std::vector} und \texttt{std::map} an. Die Verwendung dieser Klassen würde an vielen Stellen in dem Entwurf Anwendung finden und die Entwicklung effektiver machen. \texttt{StackVector} (Abb. \ref{uml:stack_vector}) wurde für lokale Objektsammlungen mit begrenzter Lebenszeit konzipiert und bei den Auswertungsprozeduren verwendet. Die Klasse bietet ein ähnliches Interface, wie es die \texttt{std::vector}-Klasse bietet, jedoch mit einigen Einschränkungen wie einer maximalen Kapazität. Außerdem ist das Verhalten beim Löschen beschränkt, nur das Löschen des jeweils letzten Elements ist erlaubt.
  135.22 +\begin{figure}[h]
  135.23 +\centering \includegraphics[width=200pt]{images/stack_vector_uml.png}
  135.24 +\caption{\texttt{StackVector}}
  135.25 +\label{uml:stack_vector}
  135.26 +\end{figure}
  135.27 +
  135.28 +\subsection{CppUnit}
  135.29 +\emph{CppUnit} ist ein C++-Testframework. Mit Hilfe von Präprozessormakros bietet das Framework Möglichkeiten, Klassen nach potentiellen Fehlern, d.h. Abweichungen von deren Spezifikation, zu testen. Die Auswertung der Unit-Tests wird im XML-Format bereitgestellt und kann somit bequem aufbereitet werden.
  135.30 +
  135.31 +\subsection{Code Coverage}
  135.32 +\emph{Code Coverage} bezeichnet die verschiedenen Metriken zur Festlegung der Codeabdeckung von Tests. Bei der Integration verschiedener Überdeckungsanalysen ergibt sich eine verlässliche Statistik über die Testqualität. Diese kann dazu genutzt werden, Schwachstellen in der Testerstellung auszumachen und zu beseitigen.
  135.33 +
  135.34 +\section{Entwicklungsumgebung}
  135.35 +
  135.36 +\subsection{IDE}
  135.37 +Der Großteil der Implementierungsarbeit fand unter der \emph{Eclipse IDE} statt. \emph{Eclipse} bietet als Framework ein gelungene Schnittstelle an um die Funktionalität der IDE anzupassen oder zu erweitern. Für die C++-Entwicklung gibt es ein Plugin, das eine vollwertige C++-Entwicklungs"-umgebung bereitstellt. Die Vorteile der Nutzung einer integrierten Entwicklungsumgebung sind:
  135.38 +\begin{itemize}
  135.39 +\item Syntaxhervorhebung (\emph{Syntax highlighting})
  135.40 +\item Autovervollständigung (\emph{Autocomplete})
  135.41 +\item Integration mit anderen Werkzeugen wie Unit-Tests, Compiler, Versionierungssystem
  135.42 +\end{itemize}
  135.43 +Zudem bietet Eclipse genügend Anpassungsmöglichkeit des Editors, um diesen entsprechend den Comsoft-Richtlinien zu konfigurieren.
  135.44 +
  135.45 +Weiterhin kamen die Texteditoren \emph{Vim}\footnote{Vi Improved -- eine Weiterentwicklung des konsolenbasierten Texteditors vi} und der \emph{GNOME Editor} -- kurz \texttt{gedit} zum Einsatz, u.a. bei der Entwicklung der Python-Skripte.  
  135.46 +
  135.47 +\subsection{Versionsverwaltung}
  135.48 +Ein Unternehmen für die Entwicklung von sicherheitskritischen Systemen ist stets bestrebt sowohl die Produkte als auch den Entwicklungsprozess sicher zu gestalten. Dies hat mitunter ein konservatives Verhalten bei der Technologiewahl als Konsequenz. Erprobte und bewährte Systeme und Prozesse werden nur nach gründlicher Voruntersuchung der Alternativen ersetzt, so auch im Falle des Versionsverwaltungssystems.
  135.49 +So wurde für dieses Projekt \emph{CVS}\footnote{Concurrent Versions System -- ein dateibasiertes Versionsverwaltungssystem für Quellcode} für die Versionsverwaltung des Quellcodes eingesetzt.
  135.50 +
  135.51 +\subsection{Betriebssystem}
  135.52 +Das eingesetzte Betriebssystem während der Entwicklung war \emph{Red Hat Enterprise Linux 5.2}. Auch die Zielsysteme sind mit einem Red Hat Betriebssystem konfiguriert.
  135.53 +
  135.54 +\section{Dokumentation \& Entwurf}
  135.55 +Die Comsoft-Dokumentation wird in \emph{Microsoft Word} erstellt, basierend auf hauseigenen Vorlagen. Für die Ausarbeitung der Bachelorarbeit wurde \LaTeX verwendet. 
  135.56 +
  135.57 +Für die Erstellung von Vektorgrafiken wurde \emph{Inkscape (\texttt{www.inkscape.org})} eingesetzt. Zur Entwicklung des UML-Entwurfs wurden \emph{MagicDraw\texttrademark UML} und der \emph{Umbrello UML Modeller (\texttt{www.uml.sourceforge.net})} verwendet. Die Codedokumentation wird automatisch mit \emph{Doxygen (\texttt{www.stack.nl/$\sim$dimitri/doxygen})} generiert.
  135.58 +
  135.59 +Für die grafische Auswertung der aufbereiteten Protokolldaten des operativen Betriebs diente das Programm \emph{Gnuplot (\texttt{www.gnuplot.info})}. 
  135.60 +
  135.61 +\section{ATCCL}
  135.62 +\subsection{\texttt{flex}-Konfiguration}
  135.63 +\texttt{flex} unterstützt reguläre Ausdrücke zur Bestimmung der Token. Anhand einfacher Regeln und der Verwendung von Metazeichen (Abb. \ref{flex_metazeichen}) kann nach Zeichenkettenmuster gefiltert werden. Dafür entwickelt man Regeln, die auf der linken Seite einen regulären Ausdruck erhalten, während auf der rechten Seite die Aktion festgelegt wird.\\\\
  135.64 +Die Definition von Zeichenklassen erhöht den Ausdruckswert von komplexeren Regeln und dadurch deren Verständlichkeit. Für ATCCL wurden Zeichenklassen erstellt, die Basistypen der Sprache definieren.\\
  135.65 +\lstinputlisting[label=flex_config1, caption=ATCCL \texttt{flex}-Konfiguration: Zeichenklassen,language=TeX]{flex_config1.txt}
  135.66 +\begin{table}[h]
  135.67 +\begin{center}
  135.68 +\begin{tabular}{cl}
  135.69 +\toprule
  135.70 +\textbf{Metazeichen} 	& \textbf{Bedeutung} \\
  135.71 +\midrule
  135.72 +\texttt{.}		& beliebiges zeichen außer Zeilenumbruch \\ 
  135.73 +\texttt{\textbackslash n}& Zeilenumbruch \\ 
  135.74 +\texttt{\textbackslash t}& Tabulator \\ 
  135.75 +\texttt{\textasteriskcentered}		& null- oder mehrfache Kopie eines Ausdrucks \\ 
  135.76 +\texttt{+}		& ein- oder mehrfache Kopie eines Ausdrucks \\ 
  135.77 +\texttt{?}		& null- oder einfache Kopie eines Ausdrucks \\ 
  135.78 +\texttt{\textasciicircum}& Zeilenanfang \\ 
  135.79 +\texttt{\$}		& Zeilenende \\ 
  135.80 +\texttt{a|b}		& \texttt{a} oder \texttt{b} \\ 
  135.81 +\texttt{(ab)+}		& ein- oder mehrfache Kopie von \texttt{ab} \\ 
  135.82 +\texttt{'a+b'}		& \texttt{'a+b'} Literal \\ 
  135.83 +\texttt{[]}		& Zeichenklasse \\ 
  135.84 +\bottomrule
  135.85 +\end{tabular}
  135.86 +\caption{\texttt{flex}-Metazeichen \emph{(Quelle: \cite{lex_paper}, \cite{lex_yacc_guide})}}
  135.87 +\label{flex_metazeichen}
  135.88 +\end{center}
  135.89 +\end{table}
  135.90 +Nun werden für die Schlüsselwörter der Flugplaneigenschaften entsprechende Token erstellt.\\
  135.91 +\lstinputlisting[label=flex_config2, caption=ATCCL \texttt{flex}-Konfiguration: Flugplaneigenschaften,language=TeX]{flex_config2.txt}
  135.92 +Zur Bestimmung der Separationszeiten wird auf eine weitere Flugplaneigenschaft zugegriffen -- die Flugfläche, dies ist nur innerhalb einer Separationsdefinition möglich. \texttt{time\_sep} bezeichnet die Art der Separation, in diesem Fall die Längsstaffelung nach Zeit.\\
  135.93 +\lstinputlisting[label=flex_config3, caption=ATCCL \texttt{flex}-Konfiguration: Separationstyp und Flugfläche,language=TeX]{flex_config3.txt}
  135.94 +Die folgenden Regeln gelten der Identifizierung des Regeltyps.\\
  135.95 +\lstinputlisting[label=flex_config4, caption=ATCCL \texttt{flex}-Konfiguration: Typ der Regeldefinition,language=TeX]{flex_config4.txt}
  135.96 +Die Operatoren bestehen aus einem oder mehreren Token. Zusammengesetzte Operatoren sind z.B. \texttt{not in}, \texttt{greater than} und \texttt{is not}.\\
  135.97 +\lstinputlisting[label=flex_config5, caption=ATCCL \texttt{flex}-Konfiguration: Operatoren,language=TeX]{flex_config5.txt}
  135.98 +Zusätzlich werden eine Reihe von Hilfstoken zur deskriptiven Definition der Separationsregeln erstellt.\\
  135.99 +\lstinputlisting[label=flex_config6, caption=ATCCL \texttt{flex}-Konfiguration: \texttt{Constraint}-Token,language=TeX]{flex_config6.txt}
 135.100 +Das yylval wird in der \texttt{bison}-Konfiguration als \texttt{union} von \texttt{integer, double} und \texttt{char*} deklariert. Dadurch wird eine typensichere Wertübertragung von Konstanten in die Syntaxanalyse ermöglicht.\\
 135.101 +\lstinputlisting[label=flex_config7, caption=ATCCL \texttt{flex}-Konfiguration: Basisdatentypen,language=TeX]{flex_config7.txt}
 135.102 +Zur zusätzlichen Unterstützung der nachfolgenden Analyse wird eine Regel für die Regeldefinitionsidentifikation gestellt und die Kommentare lokalisiert, zu Bemerken ist Kommentarinhalt wird nicht übergeben, wird demnach ignoriert. Die letzte Regel leitet alle Zeichen weiter, die bisher in keiner Regel aufgefangen wurde, wie z.B. die Klammern.\\
 135.103 +\lstinputlisting[label=flex_config8, caption=ATCCL \texttt{flex}-Konfiguration: IDs und Kommentare,language=TeX]{flex_config8.txt}
 135.104 +Eine Besonderheit in der \texttt{flex}-Konfiguration stellt die letzte Zeile dar, die bei Zeilenende den Inhalt der Zeile in einem Puffer zwischenspeichert und einen Zeilenzähler inkrementiert. Diese Regel dient der Fehlerbehandlung. Durch das puffern der Zeilen ist im Fehlerfall eine weitere Analyse möglich, außerdem kann man durch die Zeilenangabe die Lokalität des Fehlers präzisieren.\\
 135.105 +\lstinputlisting[label=flex_config9, caption=ATCCL \texttt{flex}-Konfiguration: Fehlerbehandlung,language=TeX]{flex_config9.txt}
 135.106 +\subsection{\texttt{bison}-Konfiguration}
 135.107 +Die Syntaxanalyse wird mit Hilfe von \texttt{bison} erstellt. Das Werkzeug erlaubt es in EBNF-ähnlicher Notation die Produktionen zu entwickeln und ist mit \texttt{flex} integrierbar.\\\\
 135.108 +Die Integration mit \texttt{flex} basiert auf der zustandsbehafteten Funktionsrückgabe der Funktion \texttt{yylex} welche die Token zur Weiterverarbeitung an \texttt{bison} liefert. Die vollständige Konfiguration befindet sich in Anhang \ref{bison_config}.
 135.109 +%\lstinputlisting[label=bison_config1 caption=ATCCL \texttt{bison}-Konfiguration 1,language=TeX]{bison_config1.txt}
 135.110 +
 135.111 +\subsection{Synthese}
 135.112 +Der Entwurf sah die Nutzung des Factory Patterns zur generischen Objekterzeugung vor. Die Umsetzung wurde entsprechend durchgeführt. Es wurden zwei Factory-Klassen mit jeweils mehreren überladenen Funktionen erstellt. Anhang \ref{uml:factories} beschreibt die implementierten Klassen.
 135.113 +
 135.114 +Die Analysephase erfasst die Operator- und Property-Typen und übergibt diese an die Factory-Klasse. Aus den verschiedenen Kombinationen ergeben sich die Term-Instanzen. Das \emph{Adapter Pattern} nach \cite{design_patterns} erlaubt eine generische Lösung für die Klassendefinition der Flugplaneigenschaften (Properties). Die Klassendefinition einer Flugplaneigenschaft wird in den typenabhängigen Rumpf, das \texttt{Property}-Template und eine Adapterklasse verteilt. Der Rumpf erhält den Datentyp der betreffenden Eigenschaft und den Adapter als Template-Parameter. Für jede Flugplaneigenschaft wird ein Adapter definiert, welcher mit Hilfe des FlightPlan-Interface die entsprechenden Dateneinträge in den Cache des Property-Objekts lädt.\\\\
 135.115 +Muss das ATCCL-Framework zu einem späteren Zeitpunkt um die Unterstützung einer weiterer Flugplaneigenschaft erweitert werden, so ist es notwendig einen Adapter dafür zu definieren und die Factory soweit zu erweitern, dass dieser Typ instanziiert wird. Selbstverständlich muss auch die \texttt{flex}- und \texttt{bison}-Konfiguration die neue Flugplaneigenschaft unterstützen und dieser einen Datentyp zuordnen. Diese Methode erlaubt ein strukturiertes Erweitern der Sprache und reduziert dabei den Implementierungsaufwand durch die Auslagerung aller gemeinsamen Funktionalität.
 135.116 +
 135.117 +\section{DFLOW}
 135.118 +Zur Realisierung der DFLOW-Komponente konnte man auf den großen Funktionsumfang von PRISMA zugreifen. So war es nicht notwendig eigene Routinen zur Erstellung der Prognosen über die Überflugzeiten zu entwickeln, diese Funktion wurde bereits von \emph{CalcEstimates} bereitgestellt. FPATH übernimmt als FPDS-Komponente die Aktualisierung solcher Routentabellen samt prognostizierter Zeiten entsprechend dem realen Flugverlauf. Die Ergänzung der Flugroute unmittelbar nach dem Startvorgang wurde mit Hilfe von SID-Lookup-Tabellen realisiert, eine Erklärung zur Bedeutung der SIDs befindet sich in Abschnitt \ref{grundlagen:routensystem}. Die SID-Wegpunkte sind für jede Kombination von Flughafen, Startbahn und Routenverlauf festgelegt und statisch.
 135.119 +
 135.120 +\subsection{FDPS}
 135.121 +Die DFLOW-Komponente wurde in den FDPS integriert. Die Komponente ist eine flugplanverarbeitende Instanz und interagiert mit anderen Komponenten des FDPS oder auch den Displays durch das DMAP-Protokoll. Sog. \emph{Notifier}-Klassen implementieren das Observer Pattern für bestimmte Datensätze der DMAP-Datenbank. \emph{Storage}-Klassen bieten eine transparente Zugriffsschicht auf DMAP-Datensätze. Durch die beiden Klassentypen ist es möglich, Event-getrieben und dadurch effektiv auf der DMAP zu arbeiten und gleichzeitig jederzeit volle Zugriffsmöglichkeit mit Hilfe von transparenten Transaktionen auf alle notwendigen Datensätze zu haben.
 135.122 +
 135.123 +\subsection{Node Manager}
 135.124 +Der Node Manager ist für die Kontrolle der Vitalität der einzelnen PRISMA-Komponenten zuständig. Basierend auf dem Watchdog-Verfahren werden Prozesse aktiv angesprochen und die Reaktionszeiten zu messen. Ist die Vitalität des Systems durch eine Komponente gefährdet, so kann der Node Manager den Neustart oder die Deaktivierung der identifizierten Komponente mit Fehlfunktion veranlassen. Der Node Manager bietet für dessen Protokoll eine Klasse an, die eine voll automatisierte Lösung des Watchdog-Verfahrens auf Client-Seite darstellt.
 135.125 +
 135.126 +\subsection{AWP}
 135.127 +Die AWP bietet eine Reihe von strategischer Displays als integrierte Lösung an. Ein Planer hat u.a. die Aufgaben Flugpläne den Startern zuzuordnen, Prognosen über Verkehrsaufkommen zu analysieren und basierend drauf Entscheidungen zu treffen.
 135.128 +\begin{figure}[h]
 135.129 +\centering \includegraphics[width=15.5cm]{images/dflow_displays_grey.png}
 135.130 +\label{fig:dflow_displays}
 135.131 +\caption[DFLOW Window \& Flow Aid Window]{Links: das Flow Aid Window zeigt eine graphische Übersicht der Flow Point Slot-Verteilung über Zeit und Flugfläche. Rechts: das DFLOW Window stellt die Interaktion mit der DFLOW-Komponente dar samt Übersicht über die erfasste Flugpläne.}
 135.132 +\end{figure}\\
 135.133 +Die DFLOW-Komponente soll mit Hilfe eines in die CWP integrierten Displays zu steuern sein. Die Entwicklung des DFLOW-Displays wurde von einem weiteren Mitarbeiter von Comsoft durchgeführt. Das Display bietet eine Übersicht über alle DFLOW-Dateneinträge, d.h. alle DFLOW-kontrollierten Flüge. Das DFLOW-Display erlaubt es dem Benutzer nach Flugplänen zu suchen und mit der Übergabe der frühesten Abflugzeit die Berechnung des optimalen Abflugslots zu initiieren.
 135.134 +
 135.135 +\subsection{CWP}
 135.136 +Das CWP-Display ist das Kernstück des Flugsicherungssystems aus der Sicht des Benutzers. Die Controller erhalten mit diesem Display eine Übersicht über das Luftlagebild, potentielle Gefahrensituationen und erlaubt ein intelligentes Verteilen von Zuständigkeits"-bereichen. Im Gegensatz zur AWP, ist das Display für die unmittelbare Sicherung des Luftraums entwickelt, jedoch soll auch hier bei Bedarf die Information der CWP bereitgestellt werden.\\\\
 135.137 +Das DFLOW-Window wurde dazu auch in die CWP integriert. Da die Abflugplanung nicht unter die Zuständigkeit der Flutlotsen, die an der CWP aktiv sind, fällt, ist das DFLOW-Display hier als \emph{read-only}-Variante mit Echtzeitverfolgung realisiert.
   136.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   136.2 +++ b/paper/src/intro.tex	Fri Jun 04 13:48:28 2010 +0200
   136.3 @@ -0,0 +1,44 @@
   136.4 +\chapter{Einleitung}
   136.5 +Das Ziel der Flugsicherung ist es den Flugverkehr sicher und entsprechend
   136.6 +internationalen und regionalen Richtlinien vom Startflughafen bis zur
   136.7 +sicheren Landung am Zielflughafen zu begleiten.
   136.8 +
   136.9 +Die Sicherheit im Flugverkehr wird in erster Linie durch die Staffelung erreicht.
  136.10 +Als Grundlage dazu bestehen in jedem Flugraum Wegpunkte, welche die Flugverkehrsrouten bilden.
  136.11 +Der Verkehr wird auf diesen Routen zeitlich, vertikal und horizontal separiert.
  136.12 +Zur Festlegung der Separationsabstände gibt es Regeln, welche
  136.13 +von den Flugzeugeigenschaften und gegebenen Umweltbedingungen
  136.14 +abhängen.\\\\
  136.15 +Oftmals werden an den Übergabewegpunkten von einem Fluginformationsgebiet in das angrenzende
  136.16 +maximale Verkehrsflussdichten gesetzt. Diese gebietsübergreifende Regelungen dienen dazu
  136.17 +den Regulierungsaufwand bei der Übernahme von Flügen in das kontrollierte Gebiet zu minimieren.
  136.18 +
  136.19 +Bei der Bewältigung von Überkapazitäten werden u.a. die Luftfahrzeuge angewiesen bestimmte Flugmanöver auszuführen, diese sind z.B. \emph{Hold}\footnote{Ein Flugmanöver, wobei eine vollständige Ellipse geflogen wird} und \emph{Dog Tail}\footnote{Ein Flugmanöver, das vertikal betrachtet die Form eines "n" bildet}. Eine weitere Möglich"-keit ist die Anpassung der Fluggeschwindigkeit als Regulierungsmaßnahme.
  136.20 +Der Nachteil solcher Eingriffe in den Flugverlauf sind die entstehende Mehrkosten für die Flugbetreiber und mögliche Wartezeiten und Verspätungen für die Passagiere. So sind laut \cite{moderne_flugsicherung} bis zu 23\% aller in Europa registrierten Verspätungen im Flugverkehr auf das Air Traffic Flow Management zurückzuführen, ein Indiz dafür, dass hier großes Optimierungspotential besteht (Abb. \ref{fig:atfm_stats}).
  136.21 +\begin{figure}[h]
  136.22 +\centering \includegraphics[width=300pt]{images/atfm_stats.pdf}
  136.23 +\caption{Ursachen für Abflugverspätungen in Europa. \emph{Quelle: \cite{moderne_flugsicherung}}}
  136.24 +\label{fig:atfm_stats}
  136.25 +\end{figure}
  136.26 +
  136.27 +\section{Zielsetzung}
  136.28 +Um die Notwendigkeit der regulatorischen Maßnahmen zu reduzieren, sollen bei der Abflugplanung die Verkehrsflussregelungen berücksichtigt werden. Bereits vor Abflug sollen die Flugpläne der registrierten Starter analysiert und der Startzeitpunkt entsprechend des späteren Flugverlaufs gesetzt werden.
  136.29 +
  136.30 +Diese Funktion übernimmt die Abflugplanungskomponente. Die Komponente berechnet den optimalen Abflugzeitpunkt für individuelle Flüge, basierend auf den konfigurierbaren Regeln formuliert in einer Domänensprache. Anhand des Regelwerks werden die Flüge nach passenden Mustern sortiert und an den relevanten Wegpunkten gestaffelt.
  136.31 +
  136.32 +Zur Modellierung der dynamischen Luftraumbeschränkungen wird eine domänenspezifische Sprache entwickelt. Sie bildet die Schnittstelle zwischen der Planungskomponente und dem Verkehrsflussmanagement. Die Sprache soll eine redundanzfreie Konfiguration der Flugplanmuster und Verkehrsflussbeschränkungen bieten, die der Planer selbst verwalten kann.\\\\
  136.33 +Das erste Ziel der Arbeit war es, eine Modellierungssprache für den Bereich des Verkehrsflussmanagements und der allgemeinen Flugsicherung zu erstellen. 
  136.34 +Als zweiter Teil der Arbeit galt es eine Abflugplanungskomponente zu entwickeln und in eine bereits bestehende Flugsicherungsarchitektur zu integrieren. Die Komponente soll die Domänensprache als Konfigurationssprache akzeptieren. Die Berechnungen der Abflugplanungskomponente basierend auf dem Modell der Luftraumbeschränkungen.
  136.35 +
  136.36 +\section{Aufbau der Arbeit}
  136.37 +Das erste Kapitel beinhaltet Danksagungen für alle, die an der Fertigstellung des Projekts mitgewirkt haben, oder diejenigen, die Unterstützung für die Ausarbeitung dieser Arbeit leisteten.
  136.38 +Darauf folgenden bietet das zweite Kapitel eine kurze Einleitung über die Arbeit und das Unternehmen, in dem das hier beschriebene Projekt stattgefunden hat.\\\\
  136.39 +Das Grundlagenkapitel widmet sich der Thematik Flugsicherung, der Softwarearchitektur in der die Neuentwicklungen zu integrieren waren, der Einführung in die Entwicklung von Compiler, den relevanten Sicherheitsfragen für das Projekt und abschließend der Marktanalyse über Produkte mit ähnlicher Funktionalität. Die Absicht dieses Kapitels ist die Schaffung einer Wissensbasis, auf der die folgenden Kapiteln implizit aufbauen und so eine effiziente Abhandlung ermöglicht wird. Ebenso soll die Notwendigkeit der im Rahmen dieser Arbeit entwickelten Komponenten verdeutlicht werden, der Produktvergleich dient als Übersicht über bestehende Systeme und deren Funktionsumfang.\\\\
  136.40 +Die Kapitel vier bis sieben protokollieren die Entwicklungsphasen eines Projekts nach dem Prozessmodell V-Modell XT. Die Anforderungsanalyse bildet die erste Phase, basierend auf deren Ergebnissen wird der Entwurf der Komponenten entwickelt. Nach Fertigstellung des Entwurfs werden die Komponenten realisiert und abschließend geprüft. Die Verifikation dient dabei nicht nur der Bestätigung der Richtigkeit im Sinne einer Softwareprüfung, sondern bewertet auch die tatsächliche Leistung des Systems im operativen Betrieb und daraus folgende Auswirkungen auf den Luftverkehrsbetrieb.\\\\
  136.41 +Das letzte Kapitel ist einer Zusammenfassung der gesammelten Erfahrungen und bietet einen Ausblick in mögliche Weiterentwicklung der präsentierten Lösung. 
  136.42 +
  136.43 +\section{Comsoft GmbH}
  136.44 +Die Comsoft GmbH ist ein mittelständisches Unternehmen mit Sitz in Karlsruhe. Als Systemhaus mit Beratungskompetenz hat sich Comsoft im Bereich Flugsicherung auf internationaler Ebene etabliert.\\\\
  136.45 +Durch projektgetriebene Arbeitsweise bewahrt sich Comsoft die nötige Flexibilität um kundenorientierte Lösungen zu entwickeln. Als zertifiziertes Unternehmen mit über 20 Jahren Erfahrung im Flugsicherungssektor, entwickelt Comsoft hauptsächlich für das europäische und asiatische Ausland, oder wie im Falle der Abflugplanungskomponente für die Vereinigten Arabischen Emirate.
  136.46 +
  136.47 +	
   137.1 Binary file paper/src/labtar_hist.pdf has changed
   138.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   138.2 +++ b/paper/src/labtar_hist.tex	Fri Jun 04 13:48:28 2010 +0200
   138.3 @@ -0,0 +1,104 @@
   138.4 +% GNUPLOT: LaTeX picture with Postscript
   138.5 +\begingroup
   138.6 +  \makeatletter
   138.7 +  \providecommand\color[2][]{%
   138.8 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
   138.9 +      Package color not loaded in conjunction with
  138.10 +      terminal option `colourtext'%
  138.11 +    }{See the gnuplot documentation for explanation.%
  138.12 +    }{Either use 'blacktext' in gnuplot or load the package
  138.13 +      color.sty in LaTeX.}%
  138.14 +    \renewcommand\color[2][]{}%
  138.15 +  }%
  138.16 +  \providecommand\includegraphics[2][]{%
  138.17 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
  138.18 +      Package graphicx or graphics not loaded%
  138.19 +    }{See the gnuplot documentation for explanation.%
  138.20 +    }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
  138.21 +    \renewcommand\includegraphics[2][]{}%
  138.22 +  }%
  138.23 +  \providecommand\rotatebox[2]{#2}%
  138.24 +  \@ifundefined{ifGPcolor}{%
  138.25 +    \newif\ifGPcolor
  138.26 +    \GPcolorfalse
  138.27 +  }{}%
  138.28 +  \@ifundefined{ifGPblacktext}{%
  138.29 +    \newif\ifGPblacktext
  138.30 +    \GPblacktexttrue
  138.31 +  }{}%
  138.32 +  % define a \g@addto@macro without @ in the name:
  138.33 +  \let\gplgaddtomacro\g@addto@macro
  138.34 +  % define empty templates for all commands taking text:
  138.35 +  \gdef\gplbacktext{}%
  138.36 +  \gdef\gplfronttext{}%
  138.37 +  \makeatother
  138.38 +  \ifGPblacktext
  138.39 +    % no textcolor at all
  138.40 +    \def\colorrgb#1{}%
  138.41 +    \def\colorgray#1{}%
  138.42 +  \else
  138.43 +    % gray or color?
  138.44 +    \ifGPcolor
  138.45 +      \def\colorrgb#1{\color[rgb]{#1}}%
  138.46 +      \def\colorgray#1{\color[gray]{#1}}%
  138.47 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
  138.48 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
  138.49 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
  138.50 +      \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
  138.51 +      \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
  138.52 +      \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
  138.53 +      \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
  138.54 +      \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
  138.55 +      \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
  138.56 +      \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
  138.57 +      \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
  138.58 +      \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
  138.59 +    \else
  138.60 +      % gray
  138.61 +      \def\colorrgb#1{\color{black}}%
  138.62 +      \def\colorgray#1{\color[gray]{#1}}%
  138.63 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
  138.64 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
  138.65 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
  138.66 +      \expandafter\def\csname LT0\endcsname{\color{black}}%
  138.67 +      \expandafter\def\csname LT1\endcsname{\color{black}}%
  138.68 +      \expandafter\def\csname LT2\endcsname{\color{black}}%
  138.69 +      \expandafter\def\csname LT3\endcsname{\color{black}}%
  138.70 +      \expandafter\def\csname LT4\endcsname{\color{black}}%
  138.71 +      \expandafter\def\csname LT5\endcsname{\color{black}}%
  138.72 +      \expandafter\def\csname LT6\endcsname{\color{black}}%
  138.73 +      \expandafter\def\csname LT7\endcsname{\color{black}}%
  138.74 +      \expandafter\def\csname LT8\endcsname{\color{black}}%
  138.75 +    \fi
  138.76 +  \fi
  138.77 +  \setlength{\unitlength}{0.0500bp}%
  138.78 +  \begin{picture}(4320.00,3024.00)%
  138.79 +    \gplgaddtomacro\gplbacktext{%
  138.80 +      \csname LTb\endcsname%
  138.81 +      \put(1342,704){\makebox(0,0)[r]{\strut{}$0$}}%
  138.82 +      \put(1342,961){\makebox(0,0)[r]{\strut{}$100$}}%
  138.83 +      \put(1342,1218){\makebox(0,0)[r]{\strut{}$200$}}%
  138.84 +      \put(1342,1475){\makebox(0,0)[r]{\strut{}$300$}}%
  138.85 +      \put(1342,1732){\makebox(0,0)[r]{\strut{}$400$}}%
  138.86 +      \put(1342,1989){\makebox(0,0)[r]{\strut{}$500$}}%
  138.87 +      \put(1342,2246){\makebox(0,0)[r]{\strut{}$600$}}%
  138.88 +      \put(1342,2503){\makebox(0,0)[r]{\strut{}$700$}}%
  138.89 +      \put(1342,2760){\makebox(0,0)[r]{\strut{}$800$}}%
  138.90 +      \put(1474,484){\makebox(0,0){\strut{}$0$}}%
  138.91 +      \put(1833,484){\makebox(0,0){\strut{}$5$}}%
  138.92 +      \put(2193,484){\makebox(0,0){\strut{}$10$}}%
  138.93 +      \put(2552,484){\makebox(0,0){\strut{}$15$}}%
  138.94 +      \put(2912,484){\makebox(0,0){\strut{}$20$}}%
  138.95 +      \put(3271,484){\makebox(0,0){\strut{}$25$}}%
  138.96 +      \put(3631,484){\makebox(0,0){\strut{}$30$}}%
  138.97 +      \put(3990,484){\makebox(0,0){\strut{}$35$}}%
  138.98 +      \put(440,1732){\rotatebox{90}{\makebox(0,0){\strut{}Häufigkeit}}}%
  138.99 +      \put(2732,154){\makebox(0,0){\strut{}Separationszeit (min)}}%
 138.100 +    }%
 138.101 +    \gplgaddtomacro\gplfronttext{%
 138.102 +    }%
 138.103 +    \gplbacktext
 138.104 +    \put(0,0){\includegraphics{labtar_hist}}%
 138.105 +    %\gplfronttext
 138.106 +  \end{picture}%
 138.107 +\endgroup
   139.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   139.2 +++ b/paper/src/laldo_hist.pdf	Fri Jun 04 13:48:28 2010 +0200
   139.3 @@ -0,0 +1,84 @@
   139.4 +%PDF-1.4
   139.5 +%쏢
   139.6 +5 0 obj
   139.7 +<</Length 6 0 R/Filter /FlateDecode>>
   139.8 +stream
   139.9 +xMR!Nzff.
  139.10 $ճ:{$c{xzr	DA^ro&C;j8-mC
  139.11 GKŃ֚H<.SmIXa9MZܳk*6cs\Gy֘pOtLWtzh|ߒ.=0RÒ&)#4m`5
  139.12 ؎ɖWaZrIE-ҀPlߙN+?Fj..f1a=MTT'cgiVU0,39/#ɺ/Na-cECu
  139.13 ~vendstream
  139.14 +endobj
  139.15 +6 0 obj
  139.16 +323
  139.17 +endobj
  139.18 +4 0 obj
  139.19 +<</Type/Page/MediaBox [0 0 216 151]
  139.20 +/Parent 3 0 R
  139.21 +/Resources<</ProcSet[/PDF]
  139.22 +/ExtGState 8 0 R
  139.23 +>>
  139.24 +/Contents 5 0 R
  139.25 +>>
  139.26 +endobj
  139.27 +3 0 obj
  139.28 +<< /Type /Pages /Kids [
  139.29 +4 0 R
  139.30 +] /Count 1
  139.31 +>>
  139.32 +endobj
  139.33 +1 0 obj
  139.34 +<</Type /Catalog /Pages 3 0 R
  139.35 +/Metadata 9 0 R
  139.36 +>>
  139.37 +endobj
  139.38 +7 0 obj
  139.39 +<</Type/ExtGState
  139.40 +/OPM 1>>endobj
  139.41 +8 0 obj
  139.42 +<</R7
  139.43 +7 0 R>>
  139.44 +endobj
  139.45 +9 0 obj
  139.46 +<</Type/Metadata
  139.47 +/Subtype/XML/Length 1481>>stream
  139.48 +<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
  139.49 +<?adobe-xap-filters esc="CRLF"?>
  139.50 +<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
  139.51 +<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
  139.52 +<rdf:Description rdf:about='cf4bc742-8af4-11ea-0000-5b321171be3c' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 8.70'/>
  139.53 +<rdf:Description rdf:about='cf4bc742-8af4-11ea-0000-5b321171be3c' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>Wed -Ap-r T28: 1:7:10::6 </xmp:ModifyDate>
  139.54 +<xmp:CreateDate>Wed -Ap-r T28: 1:7:10::6 </xmp:CreateDate>
  139.55 +<xmp:CreatorTool>gnuplot 4.2 patchlevel 5 </xmp:CreatorTool></rdf:Description>
  139.56 +<rdf:Description rdf:about='cf4bc742-8af4-11ea-0000-5b321171be3c' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='cf4bc742-8af4-11ea-0000-5b321171be3c'/>
  139.57 +<rdf:Description rdf:about='cf4bc742-8af4-11ea-0000-5b321171be3c' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>laldo_hist.tex</rdf:li></rdf:Alt></dc:title><dc:creator><rdf:Seq><rdf:li>sowa,,,</rdf:li></rdf:Seq></dc:creator><dc:description><rdf:Seq><rdf:li>gnuplot plot</rdf:li></rdf:Seq></dc:description></rdf:Description>
  139.58 +</rdf:RDF>
  139.59 +</x:xmpmeta>
  139.60 +                                                                        
  139.61 +                                                                        
  139.62 +<?xpacket end='w'?>
  139.63 +endstream
  139.64 +endobj
  139.65 +2 0 obj
  139.66 +<</Producer(GPL Ghostscript 8.70)
  139.67 +/CreationDate(Wed Apr 28 17:10:56 2010)
  139.68 +/ModDate(D:20100428171103+02'00')
  139.69 +/Title(laldo_hist.tex)
  139.70 +/Creator(gnuplot 4.2 patchlevel 5 )
  139.71 +/Subject(gnuplot plot)
  139.72 +/Author(sowa,,,)>>endobj
  139.73 +xref
  139.74 +0 10
  139.75 +0000000000 65535 f 
  139.76 +0000000617 00000 n 
  139.77 +0000002308 00000 n 
  139.78 +0000000558 00000 n 
  139.79 +0000000427 00000 n 
  139.80 +0000000015 00000 n 
  139.81 +0000000408 00000 n 
  139.82 +0000000681 00000 n 
  139.83 +0000000722 00000 n 
  139.84 +0000000751 00000 n 
  139.85 +trailer
  139.86 +<< /Size 10 /Root 1 0 R /Info 2 0 R
  139.87 +/ID [<70E09127D036AC60223A4932F54D1914><70E09127D036AC60223A4932F54D1914>]
  139.88 +>>
  139.89 +startxref
  139.90 +2531
  139.91 +%%EOF
   140.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   140.2 +++ b/paper/src/laldo_hist.tex	Fri Jun 04 13:48:28 2010 +0200
   140.3 @@ -0,0 +1,103 @@
   140.4 +% GNUPLOT: LaTeX picture with Postscript
   140.5 +\begingroup
   140.6 +  \makeatletter
   140.7 +  \providecommand\color[2][]{%
   140.8 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
   140.9 +      Package color not loaded in conjunction with
  140.10 +      terminal option `colourtext'%
  140.11 +    }{See the gnuplot documentation for explanation.%
  140.12 +    }{Either use 'blacktext' in gnuplot or load the package
  140.13 +      color.sty in LaTeX.}%
  140.14 +    \renewcommand\color[2][]{}%
  140.15 +  }%
  140.16 +  \providecommand\includegraphics[2][]{%
  140.17 +    \GenericError{(gnuplot) \space\space\space\@spaces}{%
  140.18 +      Package graphicx or graphics not loaded%
  140.19 +    }{See the gnuplot documentation for explanation.%
  140.20 +    }{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
  140.21 +    \renewcommand\includegraphics[2][]{}%
  140.22 +  }%
  140.23 +  \providecommand\rotatebox[2]{#2}%
  140.24 +  \@ifundefined{ifGPcolor}{%
  140.25 +    \newif\ifGPcolor
  140.26 +    \GPcolorfalse
  140.27 +  }{}%
  140.28 +  \@ifundefined{ifGPblacktext}{%
  140.29 +    \newif\ifGPblacktext
  140.30 +    \GPblacktexttrue
  140.31 +  }{}%
  140.32 +  % define a \g@addto@macro without @ in the name:
  140.33 +  \let\gplgaddtomacro\g@addto@macro
  140.34 +  % define empty templates for all commands taking text:
  140.35 +  \gdef\gplbacktext{}%
  140.36 +  \gdef\gplfronttext{}%
  140.37 +  \makeatother
  140.38 +  \ifGPblacktext
  140.39 +    % no textcolor at all
  140.40 +    \def\colorrgb#1{}%
  140.41 +    \def\colorgray#1{}%
  140.42 +  \else
  140.43 +    % gray or color?
  140.44 +    \ifGPcolor
  140.45 +      \def\colorrgb#1{\color[rgb]{#1}}%
  140.46 +      \def\colorgray#1{\color[gray]{#1}}%
  140.47 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
  140.48 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
  140.49 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
  140.50 +      \expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
  140.51 +      \expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
  140.52 +      \expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
  140.53 +      \expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
  140.54 +      \expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
  140.55 +      \expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
  140.56 +      \expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
  140.57 +      \expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
  140.58 +      \expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
  140.59 +    \else
  140.60 +      % gray
  140.61 +      \def\colorrgb#1{\color{black}}%
  140.62 +      \def\colorgray#1{\color[gray]{#1}}%
  140.63 +      \expandafter\def\csname LTw\endcsname{\color{white}}%
  140.64 +      \expandafter\def\csname LTb\endcsname{\color{black}}%
  140.65 +      \expandafter\def\csname LTa\endcsname{\color{black}}%
  140.66 +      \expandafter\def\csname LT0\endcsname{\color{black}}%
  140.67 +      \expandafter\def\csname LT1\endcsname{\color{black}}%
  140.68 +      \expandafter\def\csname LT2\endcsname{\color{black}}%
  140.69 +      \expandafter\def\csname LT3\endcsname{\color{black}}%
  140.70 +      \expandafter\def\csname LT4\endcsname{\color{black}}%
  140.71 +      \expandafter\def\csname LT5\endcsname{\color{black}}%
  140.72 +      \expandafter\def\csname LT6\endcsname{\color{black}}%
  140.73 +      \expandafter\def\csname LT7\endcsname{\color{black}}%
  140.74 +      \expandafter\def\csname LT8\endcsname{\color{black}}%
  140.75 +    \fi
  140.76 +  \fi
  140.77 +  \setlength{\unitlength}{0.0500bp}%
  140.78 +  \begin{picture}(4320.00,3024.00)%
  140.79 +    \gplgaddtomacro\gplbacktext{%
  140.80 +      \csname LTb\endcsname%
  140.81 +      \put(1342,704){\makebox(0,0)[r]{\strut{}$0$}}%
  140.82 +      \put(1342,961){\makebox(0,0)[r]{\strut{}$50$}}%
  140.83 +      \put(1342,1218){\makebox(0,0)[r]{\strut{}$100$}}%
  140.84 +      \put(1342,1475){\makebox(0,0)[r]{\strut{}$150$}}%
  140.85 +      \put(1342,1732){\makebox(0,0)[r]{\strut{}$200$}}%
  140.86 +      \put(1342,1989){\makebox(0,0)[r]{\strut{}$250$}}%
  140.87 +      \put(1342,2246){\makebox(0,0)[r]{\strut{}$300$}}%
  140.88 +      \put(1342,2503){\makebox(0,0)[r]{\strut{}$350$}}%
  140.89 +      \put(1342,2760){\makebox(0,0)[r]{\strut{}$400$}}%
  140.90 +      \put(1474,484){\makebox(0,0){\strut{}$0$}}%
  140.91 +      \put(1893,484){\makebox(0,0){\strut{}$5$}}%
  140.92 +      \put(2313,484){\makebox(0,0){\strut{}$10$}}%
  140.93 +      \put(2732,484){\makebox(0,0){\strut{}$15$}}%
  140.94 +      \put(3151,484){\makebox(0,0){\strut{}$20$}}%
  140.95 +      \put(3571,484){\makebox(0,0){\strut{}$25$}}%
  140.96 +      \put(3990,484){\makebox(0,0){\strut{}$30$}}%
  140.97 +      \put(440,1732){\rotatebox{90}{\makebox(0,0){\strut{}Häufigkeit}}}%
  140.98 +      \put(2732,154){\makebox(0,0){\strut{}Separationszeit (min)}}%
  140.99 +    }%
 140.100 +    \gplgaddtomacro\gplfronttext{%
 140.101 +    }%
 140.102 +    \gplbacktext
 140.103 +    \put(0,0){\includegraphics{laldo_hist}}%
 140.104 +    %\gplfronttext
 140.105 +  \end{picture}%
 140.106 +\endgroup
   141.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   141.2 +++ b/paper/src/pattern_example1.txt	Fri Jun 04 13:48:28 2010 +0200
   141.3 @@ -0,0 +1,2 @@
   141.4 +pattern Example1(adep is "OMDB" and 
   141.5 +		 (tas greater than 200 or "BALUS" in route))
   142.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   142.2 +++ b/paper/src/preface.tex	Fri Jun 04 13:48:28 2010 +0200
   142.3 @@ -0,0 +1,26 @@
   142.4 +\chapter{Vorwort}
   142.5 +\section{Danksagungen}
   142.6 +Als Erstes danke ich Herrn Pitz, als Leiter der Abteilung Centre Solutions hat er mir die Arbeit an diesem Kundenprojekt ermöglicht.
   142.7 +
   142.8 +Ein besonderer Dank geht an meine beiden Betreuer, Prof. Dr. Mayer von der Hochschule Offenburg und Dr. Schulz von der Comsoft GmbH, für die tatkräftige Unterstützung bei der Einarbeitung in die Domäne Flugsicherung und bei organisatorischen und fachlichen Fragen.
   142.9 +
  142.10 +Herr Hilt hat mich bei der Entwicklung und Einarbeitung in die PRISMA-Architektur begleitet. Als Entwickler des DFLOW-Displays hat Herr Svojanovsky die Planungskomponente für den Benutzer zugänglich gemacht. Hiermit danke ich beiden, ebenso den Mitarbeitern des Testteams, welche die Komponenten auf ihre Zuverlässigkeit geprüft haben.
  142.11 +\newpage
  142.12 +\section{Eidesstattliche Erklärung}
  142.13 +Hiermit versichere ich eidesstattlich, dass die vorliegende Bachelorarbeit
  142.14 +von mir selbst"-ständig und ohne unerlaubte fremde Hilfe angefertigt worden ist,
  142.15 +insbesondere, dass ich alle Stellen, die wörtlich oder annähernd wörtlich
  142.16 +oder dem Gedanken nach aus Veröffentlichungen, unveröffentlichten Unterlagen
  142.17 +und Gesprächen entnommen worden sind, als solche an den entsprechenden Stellen
  142.18 +innerhalb der Arbeit durch Zitate kenntlich gemacht habe, wobei in den Zitaten
  142.19 +jeweils der Umfang der entnommenen Originalzitate kenntlich gemacht wurde.
  142.20 +Ich bin mir bewusst, dass eine falsche Versicherung rechtliche Folgen haben
  142.21 +wird.\\\\\\\\
  142.22 +
  142.23 +(Datum, Unterschrift)\\\\\\
  142.24 +Diese Bachelorarbeit ist urheberrechtlich geschützt, unbeschadet dessen wird folgenden Rechts"-übertragungen zugestimmt:
  142.25 +\begin{itemize}
  142.26 +\item der Übertragung des Rechts zur Vervielfältigung der Bachelorarbeit für Lehrzwecke an der Hochschule Offenburg (§16 UrhG)
  142.27 +\item der Übertragung des Vortrags-, Aufführungs- und Vorführungsrechts für Lehrzwecke durch Professoren der Hochschule Offenburg (§19 UrhG)
  142.28 +\item der Übertragung des Rechts auf Wiedergabe durch Bild- oder Tonträger an die Hochschule Offenburg (§21 UrhG)
  142.29 +\end{itemize}
   143.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   143.2 +++ b/paper/src/references.bib	Fri Jun 04 13:48:28 2010 +0200
   143.3 @@ -0,0 +1,87 @@
   143.4 +@book{iec_61508,
   143.5 +	author="International Electrotechnical Commission",
   143.6 +	publisher="IEC",
   143.7 +	title="IEC 61508 Functional safety of electrical/electronic/programmable electronic safety-related systems",
   143.8 +	year="1998/2005"
   143.9 +}
  143.10 +@book{personal,
  143.11 +	author="Rodney May",
  143.12 +	publisher="Programmable Electronics and Safety Systems: Issues, Standards and Practical Aspects",
  143.13 +	title="Personal Competencies and the Requirements of IEC 61508",
  143.14 +	year=2002
  143.15 +}
  143.16 +@book{moderne_flugsicherung,
  143.17 +	author="Heinrich Mensen",
  143.18 +	publisher="Springer",
  143.19 +	title="Moderne Flugsicherung - Organisation, Verfahren, Technik",
  143.20 +	year=2004
  143.21 +}
  143.22 +@book{compilers,
  143.23 +	author="Alfred V. Aho and Monica S. Lam and Ravi Sethi and Jeffrey D. Ullman",
  143.24 +	publisher="Addison Wesley",
  143.25 +	title="Compilers - Principles, Techniques and Tools",
  143.26 +	year=2007
  143.27 +}
  143.28 +@book{code_gen,
  143.29 +	author="Tilman Gloetzner",
  143.30 +	publisher="3rd IET International conference on System Safety",
  143.31 +	title="IEC 61508 Certification of a Code Generator",
  143.32 +	year=2008
  143.33 +}
  143.34 +@book{eurocontrol_dman,
  143.35 +	author="E. Dubouchet and G. Mavoian and E.Page",
  143.36 +	publisher="EUROCONTROL / CENA",
  143.37 +	title="PHARE - Advanced Tools Departure Manager",
  143.38 +	year=1999
  143.39 +}
  143.40 +@book{lex_paper,
  143.41 +	author="M. E. Lesk and E. Schmidt",
  143.42 +	publisher="The University of Texas At Austin \emph{(Online)}",
  143.43 +	title="Lex -- A Lexical Analyser Generator"
  143.44 +}
  143.45 +@book{yacc_paper,
  143.46 +	author="Stephen C. Johnson",
  143.47 +	publisher="The University of Texas At Austin \emph{(Online)}",
  143.48 +	title="Yacc: Yet Another Compiler-Compiler"
  143.49 +}
  143.50 +@book{bison_manual,
  143.51 +	author="Charles Donnelly and Richard Stallman",
  143.52 +	publisher="Free Software Foundation",
  143.53 +	title="Bison -- The Yacc-compatible Parser Generator",
  143.54 +	year=2009
  143.55 +}
  143.56 +@book{flex_manual,
  143.57 +	author="Vern Paxson and Will Estes and John Millaway",
  143.58 +	publisher="The Flex Project",
  143.59 +	title="The flex Manual",
  143.60 +	year=2007
  143.61 +}
  143.62 +@book{lex_yacc_guide,
  143.63 +	author="Tom Niemann",
  143.64 +	publisher="epaperpress.com",
  143.65 +	title="A Compact Guide to Lex and Yacc"
  143.66 +}
  143.67 +@book{icao_4444,
  143.68 +	author="International Civil Aviation Organization",
  143.69 +	publisher="ICAO",
  143.70 +	title="Procedures for Air Navigation Services: Rules of the Air and Air Traffic Services",
  143.71 +	year=1996
  143.72 +}
  143.73 +@book{flugleiter_dman,
  143.74 +	author="Marek Kluzniak",
  143.75 +	publisher="Der Flugleiter -- Gewerkschaft der Flugsicherung GdF",
  143.76 +	title="Departure Manager DMAN Frankfurt",
  143.77 +	year="April, 2007"
  143.78 +}
  143.79 +@book{design_patterns,
  143.80 +	author="Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides",
  143.81 +	publisher="Addison-Wesley Longman",
  143.82 +	title="Design Patterns. Elements of Reusable Object-Oriented Software",
  143.83 +	year=1995
  143.84 +}
  143.85 +@book{ebnf,
  143.86 +	author="Niklaus Wirth",
  143.87 +	publisher="ACM",
  143.88 +	title="Communications of the ACM",
  143.89 +	year=1977
  143.90 +}
   144.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   144.2 +++ b/paper/src/research.tex	Fri Jun 04 13:48:28 2010 +0200
   144.3 @@ -0,0 +1,189 @@
   144.4 +\chapter{Grundlagen}
   144.5 +\section{Flugsicherung}
   144.6 +Die Hauptaufgabe der Flugsicherung ist die Vermeidung von Kollisionen zwischen den Luftfahrzeugen. Dazu wird zwischen den Flugobjekten eine räumliche Trennung erwirkt. Im Sichtflugbetrieb stellt diese Aufgabe nur in Ausnahmesituationen ein Problem dar und kann auf die Piloten übertragen werden. Im Instrumentenflugbetrieb jedoch ist der Pilot auf die Anweisungen der Fluglotsen und seine Navigationsinstrumente angewiesen.\\\\
   144.7 +Um die Sicherheit der Flugzeuge zu gewährleisten gibt es eine Reihe von Verfahren zur Staffelung des Flugverkehrs.
   144.8 +
   144.9 +\subsection{Luftraumorganisation}
  144.10 +Die Strukturierung des Luftraums bildet die Grundlage, auf der Flugsicherungsmechanismen arbeiten. Die Struktur soll die Koordination von Flugbewegungen ermöglichen und die Häufigkeit von Eingriffen in den Flugverlauf reduzieren. Außerdem ist die Auflösung und somit die Genauigkeit von Überwachungseinrichtungen wie der Primär- und Sekundärradare beschränkt, dies soll durch intelligente Organisation des Flugverkehrs kompensiert werden.\\\\
  144.11 +In den folgenden Abschnitten wird die Basis der Luftraumorganisation erläutert, \cite{moderne_flugsicherung}.
  144.12 +
  144.13 +\subsubsection{Fluginformationsgebiet}
  144.14 +Der internationale Luftraum ist in Fluginformationsgebiete unterteilt. Es sind geographische Sektoren, die einen Zuständigkeitsbereich zur Regelung des Flugverkehrs definieren. Die Fluginformationsgebiete selbst können in mehreren Kontrollbezirken organisiert sein. Diese Gebietshierarchie ermöglicht eine effektive Vergabe von Zuständigkeiten an unabhängige, jedoch vernetzte Organe, die den Flugverkehr innerhalb ihrer Bereiche sichern.
  144.15 +
  144.16 +Gerade bei internationalen Gebietsgrenzen spielen sog. \emph{Coordination Exit/Entry Points} eine wichtige Rolle, diese markieren Wegpunkte für die Übergabe des Flugverkehrs von einem FIR\footnote{Flight Information Region -- das Fluginformationsgebiet ist ein Luftraumsektor, in dem Fluginformations- und Alarmdienste angeboten werden} in den angrenzenden Kontrollsektor.
  144.17 +
  144.18 +\subsubsection{Routensystem}
  144.19 +\label{grundlagen:routensystem}
  144.20 +Ähnlich dem Straßenverkehrsnetz, hat auch der Luftraum fest definierte Flugrouten -- die sog. \emph{Air Traffic Service Routes} -- kurz ATS-Routes. Der Flugverkehr hat diesen Routen mit einer bestimmten Genauigkeit zu folgen.\\\\
  144.21 +Die ATS-Routen ermöglichen erst eine Sicherung des Flugraums mit hohen Verkehrsdichten. Eine ergänzende Routenführung findet im Nahbereich von Flughäfen statt, hier existieren zusätzlich die \emph{Standard Arrival Routes} und die \emph{Standard Instrument Departure Routes}. Die \emph{Standard Arrival Routes} -- kurz STAR -- führen die Luftfahrzeug von den ATS-Routen zum Flugplatz, während die \emph{Standard Instrument Departure Routes} -- kurz SID -- die Wegpunkte von Flugplatz zu den ATS-Routen setzten.
  144.22 +
  144.23 +\subsubsection{Flugflächensystem}
  144.24 +Zur Vermeidung von Kollisionen auf dem Routennetz und zur Ausnutzung der technischen Möglichkeiten eines Luftfahrzeugs -- der Navigation auf verschiedenen Höhen -- wird eine Höhen"-separation durchgeführt.
  144.25 +
  144.26 +Für jeden Routenabschnitt werden hierfür mehrere Flughöhen festgesetzt, auf denen die Luftfahrzeuge navigieren können. Die Angabe der Flughöhe wird in Flight Levels -- kurz FL -- angegeben, wobei ein FL 100 ft barometrischer Höhe entspricht, umgerechnet ca. 30,48 Meter.
  144.27 +
  144.28 +\subsection{Staffelungsverfahren}
  144.29 +Die Staffelung bildet eine Reihe von Verfahren, die zur Separation von Luftfahrzeugen verwendet werden, \cite{moderne_flugsicherung}. Es gibt besondere Staffelungsverfahren für Landeanflüge und Startvorgänge, da diese Arbeit jedoch nur die Separation im Streckenflug -- also nach Abschluss von Start- und Landemanövern -- gewährleisten soll, werden diese nicht weiter erläutert.
  144.30 +
  144.31 +\subsubsection{Längsstaffelung}
  144.32 +\label{research:time_separation}
  144.33 +Im folgenden wird lediglich die Längsstaffelung nach Zeit beschrieben, da nur diese Form der Längsstaffelung für das Projekt relevant war.\\\\
  144.34 +Bei der Längsstaffelung nach Zeit werden Mindestabstände zwischen Luftfahrzeugen erwirkt, indem man minimale Zeitabstände zwischen zwei aufeinander folgenden Flügen an bestimmten Wegpunkten durchsetzt. Dabei wird bei der Festlegung der minimalen Zeitabstände eine Klassifizierung nach Verkehrsrichtung etabliert:
  144.35 +\begin{itemize}
  144.36 +\item Verkehr in gleicher Richtung
  144.37 +\item Kreuzender Verkehr
  144.38 +\item Gegenverkehr
  144.39 +\end{itemize}
  144.40 +Bei Verkehr in gleicher Richtung gilt ein Mindestzeitabstand von 10 Minuten, 5 Minuten bei großem Geschwindigkeitsvorteil des voraus fliegenden Luftfahrzeugs. Wechselt ein Luftfahrzeug die Flugfläche und kreuzt dabei die Flugbahn eines anderen Flugobjekts, spricht man von kreuzendem Verkehr. Hier gilt ein Mindestabstand von 5 Minuten zum Zeitpunkt des Kreuzen. Bei Gegenverkehr gilt es spätestens 10 Minuten vor dem Zusammentreffen die Durchführung einer Höhenstaffelung einzuleiten. Nach dem Überflug kann die Höhenstaffelung ab 5 Flugminuten Abstand aufgehoben werden.
  144.41 +
  144.42 +\subsubsection{Höhenstaffelung}
  144.43 +\label{research:flight_level_separation}
  144.44 +Für die vertikale Separation wird der Luftraum in zwei Bereiche geteilt, wobei jeweils verschiedene Separationsregeln gelten. Für den Luftraum unter Flugfläche 290 gilt ein Mindestvertikalabstand von 1000 ft.\\\\
  144.45 +Da die Genauigkeit der Barometertechnik zur Bestimmung der Flughöhe durch den Luftdruck in größeren Höhen abnimmt, lag die historische minimale Vertikalseparation für Flüge oberhalb der Flugfläche 290 bis Flugfläche 410 bei 2000 ft. Mit dem Fortschritt der Technik wurden die Geräte präziser und auch in großen Höhen verlässlicher. Seit 2005 gilt deshalb in den meisten Lufträumen der westlichen Hemisphäre auch in den Höhen oberhalb der Flugfläche 290 ein vertikaler Mindestabstand zwischen zwei Flugobjekten von 1000 ft. Die Voraussetzung hierfür ist eine technische Ausrüstung, die festgelegte Kriterien der Genauigkeit und Robustheit durch Redundanz erfüllt. Die Regelung nennt sich \emph{Reduced Vertical Separation Minima} -- kurz RVSM -- oder ins Deutsche übersetzt \emph{reduzierte Vertikalstaffelung}.
  144.46 +
  144.47 +\subsubsection{Slot}
  144.48 +Für die sichere Durchführung der Flugsicherung ist es notwendig, die vergebenen Zeiten möglichst genau einzuhalten. Die Dynamik des Luftverkehrs verhindert jedoch zumeist eine sekundengenaue Präzision, durch die Addition minimaler Abweichungen entsteht Potential für Gefahrensituationen. Um diesem Potential entgegenzuwirken, werden in der Flugsicherung stets Zeitfenster vergeben. Die Zeitfenster -- auch \emph{Slots} genannt -- bieten minimalen Spielraum für die Piloten und Fluglotsen. Werden die vergebenen Zeiten nicht eingehalten, so gilt es lediglich im Rahmen eines Zeitfensters zu bleiben, um die Sicherheit des Flugverkehrs nicht zu beeinträchtigen.\\\\
  144.49 +Solche Slots werden für die Start- und Landemanöver vom Flughafen vergeben und für die Überflüge über den gesetzten Wegpunkten von den Lotsen. Werden Slot-Zeiten verletzt so muss dieser Zustand in die Aufmerksamkeit des zuständigen Lotsen gebracht werden, es besteht möglicherweise Handlungsbedarf um die Sicherheit zu erhalten.
  144.50 +
  144.51 +\subsection{GCAA}
  144.52 +Die \emph{General Civil Aviation Authority} (GCAA) ist die Flugsicherungsbehörde der \emph{Vereinigten Arabischen Emirate}. In Zusammenarbeit mit den lokalen Autoritäten hat die GCAA die Sicherung des Flugraums über Abu Dhabi, Dubai, Sharjah, Ajman, Umm al-Quwain, Ras al-Khhaimah und Fujairah als Aufgabe. Auch die regelkonforme Weiterleitung des Flugverkehrs in angrenzende Kontrollgebiete gehört zu den Zuständigkeiten der Behörde. 
  144.53 +
  144.54 +Die GCAA ist der Kunde, in dessen Auftrag die Abflugplanungskomponente entwickelt wurde. Zur Abflugregulierung müssen die zuständigen Fluglotsen der Flughäfen im GCAA-kontrollieren Gebiet jeden Starter registrieren. Beim Anmelden eines Starters hat die GCAA die Möglichkeit, Einfluss auf die Startzeit des Luftfahrzeugs zu nehmen. Die Bewilligung einer Startzeit soll im Sinne der Sicherheit, somit also der Einhaltung der Staffelungsrichtlinien und eventuellen Flussdichtenbeschränkungen, stattfinden.\\\\
  144.55 +In Zusammenarbeit mit einem Berater der Behörde und einigen GCAA-Fluglotsen wurde die Sachlage der Flussdichtenbeschränkungen analysiert. 
  144.56 +
  144.57 +\subsubsection{Beschränkungen auf Verkehrsflussdichten}
  144.58 +\label{research:gcaa:flow_restrictions}
  144.59 +Der Flugverkehr kann an geeigneten Wegpunkten reguliert werden. Das Setzen von maximalen Flussdichten bedeutet eine Begrenzung der Anzahl an Überflügen innerhalb einer Zeitspanne. Aus der Flussdichtenbeschränkung kann eine Durchflussfrequenz abgeleitet werden. 
  144.60 +
  144.61 +Das Ziel der Beschränkungen ist die Sicherung des Flugverkehrs über Gebieten, die aufgrund ihrer geographischen Eigenschaften nicht durch Radar überwacht werden. Im Falle des GCAA-FIR sind besonders die nordwestlichen und östlichen Routen von solchen Beschränkungen betroffen. In nordwestlicher Richtung liegen ausgedehnte Wüstengebiete, die kaum Radarüberdeckung aufweisen, da der Betrieb von Radaranlagen dort sehr kostspielig und wartungsintensiv ist. In östlicher Richtung führen die Flugrouten über den Indischen Ozean, auch hier ist zum heutigen Stand der Technik keine flächendeckende Radarüberwachung möglich. Dass Abb. \ref{fig:near_east} veranschaulicht die Gefahrenzonen im Umfeld von den GCAA-kontrollierten Gebiet.\\\\
  144.62 +\begin{figure}[h]
  144.63 +\centering \includegraphics[width=300pt]{images/near_east_problem.pdf}
  144.64 +\caption[GCAA Luftraumbeschränkungen]{GCAA FIR und umliegende Gebiete. Die gestreiften Gebiete sind größtenteils nicht von Radar überwacht. \emph{Quelle (Weltkarte): Wikipedia}}
  144.65 +\label{fig:near_east}
  144.66 +\end{figure}
  144.67 +Die Analyse der verschiedenen Flussdichtenregelungen der GCAA hat ergeben, dass man neben den regulären Beschränkungen auf einem Wegpunkt auch drei Sonderfälle betrachten muss:
  144.68 +\begin{itemize}
  144.69 +\item \textbf{Kombinierte Wegpunkte}\\
  144.70 +Aufgrund eines Zusammenführens mehrerer Flugrouten im späteren Flugverlauf, gilt es bereits im kontrollierten Gebiet mehrere Wegpunkte einem abstrakten Durchflusswegpunkt -- \emph{Flow Point} genannt -- zuzuordnen. Ein Flow Point wird bei der Zuordnung der Zeiten als ein logischer Wegpunkt betrachtet, auch wenn die explizite Überflugzeiten dem entsprechenden Wegpunkt zugeordnet werden.
  144.71 +\item \textbf{Routenverlauf}\\
  144.72 +Nicht alle Routen von einem Wegpunkt müssen über das restriktive Gebiet führen. Manche Flugrouten bieten Abzweigungen außerhalb des FIR an, die in andere Gebiete ohne Restriktionen führen. Hier gilt es den den nachfolgenden Routenverlauf zu betrachten um eine positive Zuweisung zu einem Flow Point zu leisten. 
  144.73 +\item \textbf{Wegpunkten außerhalb des kontrollierten Gebiets}\\
  144.74 +Eine besondere Regelung der GCAA fordert eine Separation auf einem Wegpunkt, der außerhalb des kontrollierten FIR liegt. Hier gilt es durch die Prognose der Überflugzeit an dem besagten Wegpunkt eine Separation an den kontrollierten Exit Points zu leisten.
  144.75 +\end{itemize}
  144.76 +Die Besonderheiten der Flow Point-Zuweisung erhöht die Komplexität der Komponenten, die eine Automatisierung der Zuordnung und Startzeitvergabe realisieren sollen. Die Einteilung der Regelungen in Äquivalenzklassen ermöglicht eine genauere Analyse der Anforderung an ein System. Sind alle Klassen identifiziert, muss die Unterstützung für alle Regelungen nicht explizit in die Anforderungen aufgenommen werden und später verifiziert werden. Die Recherche der Luftraumbeschränkungen ist die Basis der Analyse im Abschnitt \ref{analysis:atccl:flow_restrictions}. 
  144.77 +
  144.78 +\subsubsection{Manuelle Abflugplanung}
  144.79 +Vor der Einführung der DFLOW-Komponente, wurde der Abflugzeitpunkt manuell durch das Personal der GCAA bestimmt. Die Vorgabe für die Planer bestand darin, eine maximale Frequenz an Startern pro Flugroute nicht zu überschreiten. Hierbei war eine Berücksichtigung der Eigenschaften des Luftfahrzeugs, wie z.B. dessen Ausrüstung, Reisegeschwindigkeit und Flughöhe, nicht möglich. Die Berechnungsvektoren für eine Optimierung sind für einen Menschen zu umfangreich, die Berücksichtigung aller Eigenschaften -- dazu zählt auch die aktuelle Slot-Belegung an den jeweiligen Wegpunkten einer Route -- ist bei manueller Bearbeitung nicht in einer praktikablen Zeit möglich.\\\\
  144.80 +Die höchste Priorität bei der Vergabe von Startzeiten gilt der Wahrung der Sicherheit. Durch die manuelle Vergabe der Abflugzeiten entsteht eine ineffektive Nutzung der Luftraumkapazitäten. Dies hat negative Folgen für die Wirtschaftlichkeit der Flugsicherung, insbesondere im Fall der GCAA und des enormen Wachstums des Luftverkehrs in deren kontrollierten Region.
  144.81 +
  144.82 +\section{PRISMA-Architektur}
  144.83 +PRISMA von der Comsoft GmbH ist eine modulare Lösung zur integrierten Flugsicherungsautomation. Ein PRISMA-System ist eine kundenspezifische Kombination und Konfiguration von Komponenten. Alle PRISMA-Komponenten sind außerdem als eigenständige Module erhältlich und somit in andere Umgebungen integrierbar.\\\\
  144.84 +Die Hauptkomponenten von PRISMA sind:
  144.85 +\begin{itemize}
  144.86 +\item \textbf{CWP -- \emph{Controller Working Position}}\\
  144.87 +Die CWP ist das Display für die Lotsen und die Lotsenaufsicht. Es bildet das Kernstück des PRISMA-Frontends und bietet ein interaktives Luftlagebild über den kontrollierten Sektor. Alle Komponenten des PRISMA werden in diesem Display integriert, so liefert das SDPS die Tracks\footnote{Der Flugverlauf eines Luftfahrzeugs basierend auf der Integration verschiedener Überwachungsdaten}, das FDPS die Flugpläne während die Konfliktwarnungen des Safety Net im Display visualisiert und mit einem Audiosignal versehen werden.
  144.88 +\item \textbf{AWP -- \emph{Assistent Working Position}}\\
  144.89 +Die AWP ist das Display für die Assistent Controller -- auch Planer genannt. Das Display bietet eine strategische Ansicht, geeignet zur Vorverarbeitung der Flugplandaten, Zuweisung von Flugplänen zu Luftfahrzeugen und Vergabe von Abflugslots. Zusätzlich stellt es Werkzeuge bereit zur Bildung und Darstellung von Prognosen über das Verkehrsaufkommen. 
  144.90 +\item \textbf{FDPS -- \emph{Flight Plan Data Processing System}}\\
  144.91 +Das FDPS ist der Bearbeitung von Flugplandaten dediziert. Es werden u.a. dynamische Flugplanprofile erstellt, Überflugzeiten prognostiziert und Vorhersagen über das Verkehrsaufkommen entwickelt.
  144.92 +\item \textbf{SDPS -- \emph{Surveillance Data Processing System}}\\
  144.93 +Das SDPS bietet die Integration von mehreren heterogenen Datenquellen der Luft"-raum"-überwachung an. Das System unterstützt Primär- und Sekundärradare, Mode-S, ADS-B/C und Multilateration als Datenquellen.
  144.94 +\item \textbf{Safety Net}\\
  144.95 +Zur Unterstützung der Fluglotsen validieren die sog. Safety Nets die Flugsicherheit. Die Prozesse suchen den Flugraum nach möglichen Gefahrenquellen ab und melden potentielle Verstöße gegen die Regelungen der Flugsicherung.
  144.96 +\item \textbf{Daten-, Audio- und Displayaufzeichnung}\\
  144.97 +Eine sorgfältige Protokollierung der Datenströme ist die Grundlage der Nachvollziehbarkeit von Fehlerereignissen und der Nachvollziehbarkeit von Benutzerentscheidungen. PRISMA bietet hierfür eine Reihe von Werkzeugen an, von der automatisierten Aufzeichnung aller Datenbanktransaktionen bis zur synchronisierten Funkverkehr- und Displayaufzeichnungen.
  144.98 +\end{itemize}
  144.99 +
 144.100 +\subsection{DMAP}
 144.101 +Eine Besonderheit in der PRISMA-Architektur stellt das Modell der Datenkommunikation dar. PRISMA besitzt eine verteilte Datenbank, die im höchsten Maße die Robustheit der beteiligten Systeme und die Sicherheit der Daten garantiert. 
 144.102 +
 144.103 +Die DMAP ist eine sichere Kommunikationsschicht auf der UDP\footnote{User Datagram Protocol -- ein verbindungsloses, nachrichtenbasiertes Internetprotokoll der Transportschicht}/IP-Schicht zur Realisierung von Transaktionen auf den persistenten Datensätzen. Die Datensätze sind in semantische Gruppen organisiert, wie z.B. die \texttt{SFPL} als Datensatztyp für sie \emph{System Flight Plans} oder \texttt{FPATH} für die Routenzusatzinformationen.\\\\
 144.104 +Jede Komponente von PRISMA, die mit der DMAP interagiert, hält stets lokale Kopien der relevanten Datensätze, Änderungen werden durch das DMAP-Protokoll zur \emph{primären Datenbank} und von dort zu allen verteilten Abonnenten propagiert.
 144.105 +Jegliche Interaktion zwischen PRISMA-Komponenten wird durch diese Schicht realisiert, der datengetriebene Ansatz ermöglicht eine hohe Dynamik in der Entwicklung und Integration neuer Komponenten und minimiert die Notwendigkeit feste Schnittstellen zu pflegen.
 144.106 +
 144.107 +Dieses Modell bietet zudem einen hohen Grad an Redundanz der Daten. Die lokalen Kopien der Komponenten befähigen diese auch bei Abbruch der Verbindung zu dem Server weiterhin operativ zu bleiben, Benutzereingaben zu verarbeiten und bei Wiederaufnahme der Verbindung die Transaktionen fortzusetzen.
 144.108 +
 144.109 +\section{Compilerbau}
 144.110 +Zur effektiven Modellierung der Luftraumbeschränkungen soll eine domänennahe Konfigurationssprache entwickelt werden. Für diesen Zweck galt es einen Compiler zu entwickeln, der die Sprache akzeptiert und das Modell der Luftraumbeschränkungen in ein geeignetes Format zur dynamischen Weiterverarbeitung überführt. Dieser Abschnitt ist die Zusammenfassung der Recherche von Techniken der Compilerentwicklung und der vorhandenen Technologien.\\\\
 144.111 +Die Übersetzung eines Programms von einer Sprache in eine andere Sprache wird von einem Compiler durchgeführt.
 144.112 +Es gibt verschiedene Gründe für die Notwendigkeit einer Übersetzung, die Gemeinsamkeit liegt in der Zugänglichkeit und
 144.113 +erhöhten Effizienz, die dadurch für die Entwicklung erreicht wird.\\\\
 144.114 +Eine Programmiersprache soll die Kommunikation zwischen Mensch und Computer erleichtern. Die Sprache ist an die
 144.115 +menschlichen Bedürfnisse angepasst und erlaubt im besten Fall eine Abstraktion über das darunter liegende System.
 144.116 +Das Übersetzen des Programms in ein Programm in Maschinensprache ermöglicht letztendlich das Ausführen des Programms auf einem Computer.\\\\
 144.117 +In manchen Situationen bietet es sich an eine weitere plattformunabhängige Schicht dazwischen zu setzen, die sog. Virtuelle Maschine. Diese Schicht bedient sich der Schnittstellen des Systems und bietet dafür eine abstrahierte Laufzeitumgebung an. Eine Virtuelle Maschine kann somit plattformunabhängigen Bytecode auf verschiedenen System ausführen.\\\\
 144.118 +Eine wichtige Rolle eines Compilers ist es, Fehler im Programmcode zu berichten, die während der Übersetzung
 144.119 +entdeckt wurden. Zur effektiven Auflösung von auftretenden Fehlern gilt es eine möglichst genaue Beschreibung und Lokalität des Fehlers zu liefern. Zur Reduzierung von wiederholten Übersetzungsvorgängen ist es hilfreich möglichst viele Fehler in einem Durchlauf zu erkennen. Hierfür ist es notwendig Richtlinien zu setzen, die eine Fortsetzung des Übersetzungsvorgangs ermöglichen und das Entstehen von Seiteneffekten durch vorhergegangene Fehler vermeiden.
 144.120 +
 144.121 +\subsection{Compilerarchitekturen}
 144.122 +Nach \cite{compilers} fordern verschiedene Anwendungsgebiete bestimmte Eigenschaften von einem Übersetzer.
 144.123 +Der traditionelle Compiler übersetzt Quellcode von einer Programmiersprache in ein lauffähiges Programm. Das Resultat ist eine ausführbare Datei, welches bestimmte Eingaben erwartet, auf denen es die programmierten Funktionen ausführt. So ein Programm ist systemabhängig (Abb. \ref{fig:compiler}).
 144.124 +\begin{figure}[h]
 144.125 +%\begin{picture}(100, 100)
 144.126 +\centering \includegraphics[width=200pt]{images/compiler.pdf}
 144.127 +%\end{picture}
 144.128 +\caption{Ein Compiler. \emph{Quelle: \cite{compilers}}}
 144.129 +\label{fig:compiler}
 144.130 +\end{figure}\\\\
 144.131 +Einen anderen Ansatz bietet der Interpreter (Abb. \ref{fig:interpreter}), welcher sowohl den Quellcode als auch die Eingabeparameter erhält und daraus direkt die Ausgabe produziert. Der Übersetzungs"-prozess passiert iterativ für jeden Befehl, was Optimierungsmaßnahmen schwierig macht. Ein Interpreter wird eingesetzt, wenn ein interaktives Werkzeug gebraucht wird und die Berechnung der Ausgabe nicht zeitkritisch ist.
 144.132 +\begin{figure}[h]
 144.133 +\centering \includegraphics[width=200pt]{images/interpreter.pdf}
 144.134 +\caption{Ein Interpreter. \emph{Quelle: \cite{compilers}}}
 144.135 +\label{fig:interpreter}
 144.136 +\end{figure}\\\\
 144.137 +Will man jedoch ein systemunabhängiges Programm erstellen, welches eventuell sogar auf das jeweilige Zielsystem optimiert werden soll, lässt sich ein sog. hybrider Compiler samt virtueller Maschine einsetzten (Abb. \ref{fig:hybrid_compiler}).
 144.138 +
 144.139 +In diesem Fall übersetzt der Compiler den Quellcode in ein sog. \emph{Intermediate Program}. Das Resultat ist ein systemunabhängiger Bytecode, welcher als Eingabeprogramm für die virtuelle Maschine genutzt wird. Die virtuelle Maschine ist nun in der Lage, systemabhängige Optimierungen am Programm durchzuführen. Zusammen mit den Eingabeparameter, führt die virtuelle Maschine die Berechnungen durch und erzeugt somit die Ausgabe. 
 144.140 +\begin{figure}[h]
 144.141 +\centering \includegraphics[width=200pt]{images/hybrid_compiler.pdf}
 144.142 +\caption{Ein hybrider Compiler. \emph{Quelle: \cite{compilers}}}
 144.143 +\label{fig:hybrid_compiler}
 144.144 +\end{figure}
 144.145 +
 144.146 +\subsection{Werkzeugunterstützung}
 144.147 +In der Analysephase eines Übersetzers wird der Eingabecode analysiert und auf Fehler über"-prüft um aus dem validen Code die Überführung in das Back-End zu gewährleisten.
 144.148 +Das Front-End eines Compilers wird auch Parser genannt. Die Geschichte der Compiler-Entwick"-lung hat seit dem ersten Compiler im Jahre 1952, welches von Grace Hopper entwickelt wurde, die später auch an der Entwicklung von \emph{COBOL} beteiligt war, enorme Fortschritte gemacht. Mittlerweile stehen für die Entwicklung eines Übersetzers eine Vielzahl an Werkzeugen zur Verfügung, die jede Phase des Compilers abdecken.\\\\
 144.149 +Für die Entwicklung des Compilers für die Konfigurationssprache wurden verschiedene Technologien evaluiert:
 144.150 +\begin{itemize}
 144.151 +\item LLVM\footnote{Low Level Virtual Machine -- eine modulare Compilerarchitektur mit optimiertem Übersetzungskonzept}
 144.152 +\item \texttt{lex}
 144.153 +\item \texttt{yacc}
 144.154 +\item \texttt{flex}/\texttt{flex++}
 144.155 +\item \texttt{bison}/\texttt{bison++}
 144.156 +\end{itemize}
 144.157 +
 144.158 +\subsubsection{LLVM}
 144.159 +\emph{LLVM} ist eine Compiler-Infrastruktur zur Optimierung von Programmen, die in beliebigen Sprachen erstellt werden können. In einigen Anwendungsgebieten -- wie z.B. in der Entwicklung von Objective-C-Programmen -- soll es den \texttt{GCC}\footnote{GNU Compiler Collection -- eine Compilersammlung für u.a. C, C++ und Java unter GPL-Lizenz} ersetzen. Der Vorteil von \emph{LLVM} liegt in der modernen Architektur des Frameworks und den fortgeschrittenen Optimierungsmechanismen. Auch die Integration mit anderen Werkzeugen, wie z.B. einer IDE\footnote{Integrated Development Environment -- eine integrierte Entwicklungsumgebung}, sollen mit \emph{LLVM} erleichtert werden.
 144.160 +
 144.161 +\subsubsection{\texttt{lex} und \texttt{flex}}
 144.162 +Die Erstellung der lexikalischen Analyse ist der erste Schritt in einer Parser-Entwicklung. \texttt{lex} bietet eine Möglichkeit die Analyse mit Hilfe einer Konfiguration zu automatisieren. Das Resultat ist ein Scanner in der Programmiersprache C.
 144.163 +
 144.164 +\texttt{flex} ist eine unter \emph{GNU Public License} entwickeltes Kommandozeilen-Tool, welches die Funktionen des \texttt{lex} implementiert und darüber hinaus Erweiterungen bietet. \texttt{flex++} bietet eine Reihe von C++-Klassen an, die eine Integration in einen C++-Parser erleichtern sollen. Auch der generierte Code ist dann in C++ verfasst.
 144.165 +
 144.166 +\subsubsection{\texttt{yacc} und \texttt{bison}}
 144.167 +Dieses Kommandozeilenwerkzeug soll die Parser-Generierung automatisieren. Der Name steht für \emph{Yet Another Compiler-Compiler}, was jedoch irreführend sein kann, denn es handelt sich definitiv nicht um einen Compiler-Generator. Mit einer Konfigurationsnotation wird die Syntax einer Sprache definiert, \texttt{yacc} generiert daraus C-Code, der die Syntaxanalyse realisiert.
 144.168 +\texttt{bison} ist ein Werkzeug, welches die Funktionalität des \texttt{yacc} kopiert, jedoch unter der \emph{GNU Public License} erhältlich ist. \texttt{bison++} bildet das C++-Pendant und bietet eine Integration mit \texttt{flex++} an.
 144.169 +
 144.170 +\section{Sicherheitsfaktoren}
 144.171 +Systeme im Einsatz zur Flugsicherung müssen bestimmte Richtlinien der Sicherheit erfüllen. U.a. werden diese Richtlinien durch den \emph{IEC 61508 Standard} festgelegt, der die \emph{Funktionale Sicherheit sicherheitsbezogener elektrischer/elektronischer/programmierbar elektronischer Systeme} definiert.\\\\
 144.172 +Als Planungskomponente erfüllt das DFLOW-System zwar keine unmittelbaren sicherheitsbezogenen Aufgaben, jedoch sollen die Richtlinien die Grundlage bilden für eine reibungslose Integration in das sicherheitskritische PRISMA-System.
 144.173 +
 144.174 +\section{Produktvergleich}
 144.175 +Auf dem Markt befinden sich eine Reihe von Systemen, die das Abflugmanagement und Funktionen des \emph{Air Traffic Flow Managements} automatisieren. Die Systeme bieten eine große Vielfalt an Ansätzen zur Bewältigung der Aufgaben an, exemplarisch werden drei Systeme kurz erläutert.
 144.176 +
 144.177 +\subsection{CFMU}
 144.178 +Das \emph{Central Flow Management Unit} -- oder auch CFMU -- ist ein koordiniertes, zentrales System zur Regelung des Luftverkehrsflusses im europäischen Raum. Das System wird von EUROCONTROL\footnote{Die europäische Organisation für Flugsicherung} betrieben, ausführliche Dokumentation ist online unter\\ \texttt{www.cfmu.eurocontrol.int} erhältlich.
 144.179 +
 144.180 +CFMU bietet eine Architektur basierend auf Web Services. Es werden eine Reihe von Diensten zur Vorbereitung und Übermittlung von Flugplänen, zur Visualisierung von Routen und Flugräumen und zur Erstellung von statistischen Reports angeboten. Es gibt eine große Bandbreite an Werkzeugen zur Interaktion mit diesen Diensten.\\\\
 144.181 +CFMU ist ein für den europäischen Flugraum konzipiertes System, die Funktionen realisieren somit nur die europäischen Regelungen. Es gibt keine Möglichkeit die Dienste für einen anderen Flugraum zu konfigurieren und die Systeme auf einem abgeschlossenen System, unabhängig von dem Internet, zu betreiben. 
 144.182 +
 144.183 +\subsection{PATS Departure Manager}
 144.184 +Ein weiteres von EUROCONTROL in Auftrag gegebenes System ist der \emph{PATS Departure Manager}. Im Rahmen eines \emph{PHARE}\footnote{Programme for Harmonised Air Traffic Management Research in EUROCONTROL}-Projekts wurde ein Abflugmanager entwickelt, der europäischen Standards entspricht. Die Gewichtung der Aufgaben des \emph{PATS Departure Manager} liegt
 144.185 +bei der Sicherung des Abflugverkehrs unter Betrachtung der Trajektorie der Luftfahrzeuge während der Startmanöver \cite{eurocontrol_dman}. Mit Hilfe der \emph{PATS Conflict Probe} wird eine optimale und konfliktfreie Auflösung des startenden Flugverkehrs realisiert, während der \emph{PATS Trajectory Predictor} die Trajektorieberechnungen aller Alternativen durchführt. Hierbei bilden die SIDs-Wegpunkte die Route zur Integration der Starter in die Reiseverkehrsrouten. 
 144.186 +
 144.187 +Neben einer Integration mit einem Arrival Manager zur Regelung von sog. Mixed Mode Airways\footnote{Startbahnen, die sowohl für Start- als auch Landeverkehr freigegeben sind} realisiert ein Display die Interaktion mit den Komponenten.\\\\
 144.188 +Der \emph{PATS Departure Manager} realisiert laut \cite{eurocontrol_dman} 2.3.3 keine Optimierung des Flugverlaufs hinsichtlich der weiterführenden Route und deren Verkehrsflussdichten. Auch die Separation nach Flugfläche ist nicht Bestandteil der Funktionalität.
 144.189 +
 144.190 +\subsection{Departure Manager Frankfurt}
 144.191 +Eine weitere Entwicklung im Bereich Abflugmanager stellt der \emph{darts4D DMAN} von der Firma \emph{Delair} dar. Das System soll verbindliche Aussagen über die Startzeit, bzw. die sog. \emph{Off-Block Time}, unter Berücksichtigung aller Prozesse und Richtlinien des Flughafens machen. Der Departure Manager wurde im April 2007 in Frankfurt in Betrieb genommen und aufgrund von Beeinträchtigung des Abflugmanagements wenige Monate später wieder aus dem System genommen \cite{flugleiter_dman}.\\\\
 144.192 +Interessant hierbei sind die genannten Gründe für den Fehlschlag: eine unausreichende Einbindung der Endanwender und Domänenexperten in den Entwicklungsprozess sollen laut \cite{flugleiter_dman} die Hauptgründe für die fehlerhafte Konzeption gewesen sein. Ein weiterer Grund werden die komplexen Abhängigkeiten der vielen Parameter sein, die zum erfolgreichen Mikromanagement eines Abflugs in die Berechnung aufgenommen werden. Die Eingangsparameter sind zudem durch äußere und menschliche Einflüsse höchst dynamisch, was die Zuverlässigkeit der Prognosen reduziert.
   145.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   145.2 +++ b/paper/src/title.tex	Fri Jun 04 13:48:28 2010 +0200
   145.3 @@ -0,0 +1,37 @@
   145.4 +%\title{A Domain-Specific Language\\ and Departure Manager\\ for Air Traffic Flow Control}
   145.5 +
   145.6 +
   145.7 +\begin{titlepage}
   145.8 +\begin{center}
   145.9 +\includegraphics[scale=0.06]{images/fho.jpg} 
  145.10 +\hspace{27pt}
  145.11 +\includegraphics[scale=0.093]{images/ai.jpg}\\
  145.12 +\vspace{70pt}
  145.13 +\large {{Bachelorarbeit}}\\
  145.14 +\vspace{30pt}
  145.15 +%\LARGE \textrm{\textbf{Entwicklung einer domänenspezifischen Sprache und Planungskomponente zur Luftverkehrsoptimierung}}\\
  145.16 +%\LARGE \textrm{\textbf{Entwicklung einer Modellierungssprache und Planungskomponente zur Luftverkehrsoptimierung}}\\
  145.17 +%\LARGE \textrm{\textbf{Optimierte Abflugplanung durch Modellierung von Luftraumbeschränkungen}}\\
  145.18 +\LARGE \textrm{\textbf{Flexible Modellierung dynamischer Luftraumbeschränkungen und deren Nutzung 
  145.19 +zur optimierten Abflugplanung}}\\
  145.20 +%\LARGE \textrm{\textbf{Flexible Modeling of Dynamic Air Traffic Flow Restrictions and its Application in Departure Flow Optimisation}}\\
  145.21 +\vspace{50pt}
  145.22 +\large
  145.23 +\textbf{Eugen Sawin}\\
  145.24 +\small
  145.25 +%Angewandte Informatik, Hochschule Offenburg\\
  145.26 +Fichtenweg 11, 77656 Offenburg\\
  145.27 +Matrikel-Nr. 168626\\ \vspace{10pt}
  145.28 +\large
  145.29 +\textbf{Prof. Dr. rer. nat. Erwin Mayer}\\
  145.30 +\small
  145.31 +Erstprüfer, Hochschule Offenburg\\ \vspace{10pt}
  145.32 +\large
  145.33 +\textbf{Dr. rer. nat. Stephan Schulz}\\
  145.34 +\small
  145.35 +Betreuer, Comsoft GmbH\\ \vspace{10pt}
  145.36 +\large \textbf{Bearbeitungszeitraum}\\
  145.37 +\small Oktober 2009 -- April 2010%\today
  145.38 +%\vspace{30pt}
  145.39 +\end{center}
  145.40 +\end{titlepage}
   146.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   146.2 +++ b/paper/src/verification.tex	Fri Jun 04 13:48:28 2010 +0200
   146.3 @@ -0,0 +1,105 @@
   146.4 +\chapter{Verifikation}
   146.5 +\section{Werkzeugeinsatz}
   146.6 +Nach Beendigung der Entwicklungsphase, war man in der Lage ein Fazit über die Qualität der eingesetzten Werkzeuge zu stellen. Deren Einsatz wurde hinsichtlich der Effektivitätssteigerung bewertet. Tabelle \ref{auto_gen_loc} bietet eine quantitative Übersicht über die Komplexität der entwickelten Komponenten.\\
   146.7 +\begin{table}[h]
   146.8 +\begin{center}
   146.9 +\begin{tabular}{cll}
  146.10 +\toprule
  146.11 +\textbf{Komponente}				& \textbf{Lines of Code}	& \textbf{autogenerierter Anteil}\\
  146.12 +\midrule
  146.13 +\texttt{flex}-Konfiguration		& 84						& -\\
  146.14 +\texttt{bison}-Konfiguration	& 348						& -\\
  146.15 +{autogeneriert}					& 4188 						& -\\
  146.16 +{ATCCL}							& 13741 					& 30\%\\
  146.17 +{DFLOW}							& 5796						& 0\%\\
  146.18 +Gesamt							& 19537						& 21\%\\
  146.19 +\bottomrule
  146.20 +\end{tabular}
  146.21 +\caption{Anteil an automatisch generiertem Code}
  146.22 +\label{auto_gen_loc}
  146.23 +\end{center}
  146.24 +\end{table}\\
  146.25 +Das ATCCL-Framework ist in Codezeilen bemessen der Schwerpunkt der Entwicklung gewesen. Mit einem Konfigurationsaufwand von 432 Zeilen Code, wurde mit Hilfe von \texttt{flex} und \texttt{bison} rund 30\% des ATCCL-Frameworks generiert. Die quantitative Auswertung beinhaltet nicht die hohe Komplexität einer Parsergenerierung und der notwendigen Testprozeduren, um die Fehlerfreiheit des Parsers zu gewährleisten. Zusammenfassend kann man behaupten, mit dem Einsatz der Parsergeneratoren eine enorme Steigerung der Produktivität erzielt zu haben.\\\\
  146.26 +Nach \cite{code_gen} bietet der Einsatz von Codegeneratoren auch beim Zertifizierungsprozess einen Vorteil gegenüber manuell entwickeltem Code. Bei dem ATCCL-Framework wird die Zertifizierung der Parsergeneratoren nicht notwendig sein, da der automatisch generierter Code ausschließlich im Compiler-Front-End zum Einsatz kommt. Das Front-End ist für die Syntax- und Semantikanalyse zuständig, welche nur bei der Initialisierung durchgeführt werden. Fehlverhalten in der Initialisierungsphase bedeutet keine Gefährdung der Sicherheit, solange diese erfolgreich erkannt werden und somit die operative Phase verhindert wird. Die Synthese erfolgt durch manuell entwickeltem Code, die generierten Objekte daraus werden auch zur Laufzeit aktiv.
  146.27 +
  146.28 +\section{Unit-Tests}
  146.29 +Während der Implementierungsphase wurden für die C++-Klassen Unit-Tests erstellt, die das Verhalten der Einheiten gegen die Anforderungen prüfen. Mit Hilfe von Über"-deckungs"-diagnosen werden nicht ausreichend getestete Module lokalisiert und die ungeprüften Bereiche mit weiteren Tests belegt.
  146.30 +
  146.31 +Zu den kritischen Modulen gehören u.a. \texttt{VirtualMachine}, \texttt{StackVector} und \texttt{TermFactory}.
  146.32 +Die \texttt{Virtual"-Machine} beherbergt die zeit-bestimmenden Algorithmen und muss deshalb besonders intensiv getestet werden. Hier ist nicht nur die Korrektheit der Ergebnisse relevant, sondern auch die Laufzeiten der Berechnungen, mehr dazu in Abschnitt \ref{verification:efficiency}. Die StackVector-Klasse dient als Standardklasse für eine Reihe von Situationen, Fehler in dieser Klasse würden Konsequenzen für eine Reihe von Modulen haben. Die TermFactory ist als objekterzeugende Einheit wegen der dynamischen Speicherallokierung kritisch. Gleichzeitig bieten die Tests dieser Klasse eine unmittelbare Prüfung für neu integrierte Property-Klassen.
  146.33 +
  146.34 +\section{Testspezifikation}
  146.35 +Die Testspezifikation -- auch System Test Description -- wird analog zu dem SRS\footnote{System Requirements Specification -- Dokument zur Spezifikation der Systemanforderungen} entwickelt. Jeder Test hat mindestens eine Anforderung abzudecken, alle Anforderungen müssen mindestens in einem Test verifiziert werden.
  146.36 +
  146.37 +Die Testspezifikation beschreibt unabhängige Tests. Ein Test besteht aus einer Vorbereitungssequenz und den Testschritten. Jeder Test muss die getesteten Anforderungen und die zu testende Version der Software referenzieren.
  146.38 +
  146.39 +Ein Testschritt beschreibt eine Aktion und den erwarteten Effekt. Tritt dieser Effekt nicht auf, oder ist die Durchführung der Aktion nicht möglich, gilt der Testschritt als fehlgeschlagen. Bei Fehlschlag findet eine Gewichtung des Fehlers statt, die in Abhängigkeit von der Priorität der getesteten Anforderung und der Art des Fehlereffekts ermittelt wird.
  146.40 +
  146.41 +Am Ende des Tests wird ermittelt ob der Durchlauf erfolgreich war. Sind während des Durchlaufs Fehler aufgetreten, hängt die Gesamtbewertung von der Gewichtung und Anzahl der Fehler ab.\\\\
  146.42 +Die Granularität der Testabdeckung spielt eine entscheidende Rolle bei der Effektivität der Testläufe. Ist diese zu hoch, entstehen möglicherweise viele redundante Testschritte, die einen Testdurchlauf unnötigerweise verlangsamen. Deckt man hingegen zu viele Anforderungen mit einem Test ab, so erschwert es die Lokalisierung des Fehlverhaltens.
  146.43 +
  146.44 +\section{Testdurchführung}
  146.45 +Die Tests werden entsprechend der STD\footnote{System Test Description -- Dokumentation der Systemtestprozeduren} durchgeführt. Für die Durchführung der Tests sind die Testingenieure des Testteams verantwortlich.
  146.46 +
  146.47 +Die Verifizierungstests werden bei jeder neuen Softwareversion durchgeführt. Bei verteilten Systemen kann eine Komponente Einfluss auf andere Komponenten haben, in diesem Fall müssen alle in Verbindung stehenden Komponenten auch getestet werden, dies sind die sog. \emph{Regression Tests}\footnote{Testprozeduren, die mit jeder neuen Version wiederholt durchgeführt werden, um alle in Abhängigkeit stehenden Komponenten auf ihre Korrektheit zu überprüfen}.
  146.48 +
  146.49 +Da das ATCCL-Framework eine eigenständige Library ist, ist diese größtenteils unabhängig von anderen Modulen und muss nur bei neuen Versionen getestet werden. Die DFLOW-Kom"-ponente hingegen ist in das FDPS integriert. Bei jeder Aktualisierung des FDPS oder einer Komponente, die in Verbindung mit dem FDPS steht, muss auch DFLOW neu verifiziert werden.
  146.50 +
  146.51 +\section{Effizienz}
  146.52 +\label{verification:efficiency}
  146.53 +Beansprucht das DFLOW zu viel Bearbeitungszeit für eine Anfrage, so kann es den Betrieb eines Planers stören. Eine höhere Belastung als bei der manuellen Eingabe ist die automatische Übernahme von Überflügen in das DFLOW-System. Da die Komplexität der Bearbeitung in der virtuellen Maschine des ATCCL-Frameworks liegt, muss diese auf ihre Leistungsfähigkeit geprüft werden.
  146.54 +
  146.55 +Zum Testen der Performance der virtuellen Maschine wurde eine Reihe von Worst-Case-Szenarien mit Hilfe von Unit-Tests entwickelt und diese auf einer GCC-optimierten Version ausgeführt. Dafür wurden Flugplanmuster mit unwahrscheinlichen und sehr vielen Kombinationen gewählt. Die Testdurchläufe wurden auf Systemen durchgeführt, die auch beim Kunden in Einsatz kommen.\\\\
  146.56 +Die Evaluation ergab einen Mittelwert von 11 µs pro Auswertung eines Flugplanmusters, was bei der Evaluation von 3000 Flugplänen eine Gesamtzeit von 33 ms ergibt. Im Realbetrieb werden sich maximal 1000 bis 1500 Flugpläne zum gleichen Zeitpunkt im System befinden, bei einem Umsatz von ca. 150 pro Stunde.
  146.57 +
  146.58 +\section{Leistungsanalyse}
  146.59 +Das Ziel der DFLOW-Komponente bestand in der Optimierung der Abflugplanung unter Berücksichtigung der Luftraumbeschränkungen. Nach der erfolgreichen Realisierung aller Anforderungen, galt es die Leistung der Komponente im operativen Betrieb zu bewerten.
  146.60 +
  146.61 +\subsection{Analysewerkzeuge}
  146.62 +Die Bewertung basiert auf den von DFLOW erstellten Logdaten und den DMAP-Transaktions"-protokollen. Die DFLOW-Logs enthalten einen Eintrag für jeden erfassten Starter, während die \emph{Daily Movement Logs} -- kurz DML -- alle Flüge innerhalb des kontrollierten Gebiets protokollieren.
  146.63 +
  146.64 +Durch die detaillierte Protokollführung, entstehen große Datenmengen. Die tägliche Datenmenge misst im Durchschnitt ca. 350 kB für die DFLOW-Logs, 6 MB für die DMLs und 60 MB für die DMAP-Transaktionen. Um eine Analyse dieser Daten zu ermöglichen, wurden \emph{Python}\footnote{Eine dynamische, höhere Programmiersprache, der gute Lesbarkeit attestiert wird -- wird durch die hohe Abstraktion und weite Verbreitung oft als Skriptsprache eingesetzt}-Skripte entwickelt. Die Skripte dienen der Vorverarbeitung der Datensätze, im Detail:
  146.65 +\begin{itemize}
  146.66 +\item \texttt{dflowlog.py} ist das Basismodul zur Interaktion mit DFLOW-Logs
  146.67 +\item \texttt{filter.py} dient zum Entfernen nicht relevanter Datensätze
  146.68 +\item \texttt{analyse.py} bietet mehrere Auswertemöglichkeit, u.a. Differenzenbildung von Zeiten und Ermittlung der zeitlichen Separation der individuellen Flüge
  146.69 +\item \texttt{pushback.py} versetzt Spalteneinträge nach hinten, erleichtert den Einsatz von cutbase.py
  146.70 +\item \texttt{cutbase.py} entfernt nicht relevante Spalten, als Vorbereitung zur Weiterverarbeitung mit \texttt{gnuplot}
  146.71 +\end{itemize}
  146.72 +Zusätzlich wurde nach dem Prinzip des \emph{Data-Warehouse} eine \emph{MySQL}\footnote{Ein Open-Source-Datenbankmanagementsystem}-Datenbank angelegt. In die Datenbank wurden Daten, in aufbereiteter und auf den aussagekräftigen Informationsteil reduziert, aus den verschiedenen Protokollquellen importiert. Die Datenbank bietet eine Möglichkeit mit SQL-Abfragen dynamische Auswertungen und Zusammenhänge zwischen verschiedenen Datensätzen zu bilden. Die Extraktion, Transformation und das Laden in die Datenbank wurde mit einem weiteren Python-Skript realisiert:
  146.73 +\begin{itemize}
  146.74 +\item \texttt{dml.py} ist das Basismodul zur Interaktion mit DML-Dateien
  146.75 +\item \texttt{dml2db.py} dient zur Extraktion relevanter DML-Einträge und dem Laden der Daten in die Datenbank
  146.76 +\end{itemize}
  146.77 +\subsection{Datensatz}
  146.78 +Die Analysen basieren auf den Aufzeichnungen von 1. Januar bis zum 8. April 2010. Der Datensatz basiert auf den Logdaten eines von mehreren FDPS-Servern. Da die Server in einem redundanten System agieren und die aktuellen Daten zum Zeitpunkt der Analyse noch nicht zusammengeführt waren, waren keine absoluten Bewertungen der Daten möglich, wie z.B. hinsichtlich der Verkehrsflussdichten. 
  146.79 + 
  146.80 +\subsection{Auswertung}
  146.81 +Abbildung \ref{fig:atot_etot_atd} zeigt die Verteilung der Differenz zwischen der frühesten Abflugzeit \emph{ETOT} und der von DFLOW vergebenen Abflugzeit \emph{ATOT}. Die Gegenüberstellung mit der Differenz der vergebenen Abflugzeit und der tatsächlichen Abflugzeit soll die Konformität der Abflugplanung mit der DFLOW-Vergabe visualisieren.\\
  146.82 +\begin{figure}[h]
  146.83 +\begin{center}
  146.84 +\input{atot_etot_atd}
  146.85 +\caption{Abflugzeitkonformität}
  146.86 +\label{fig:atot_etot_atd}
  146.87 +\end{center}
  146.88 +\end{figure}\\
  146.89 +Die Analyse der rund 1800 Flüge ergab, dass die vergebenen Zeiten zum größten Teil sehr strikt eingehalten werden. Man sieht eine starke Konzentration um den Nullpunkt auf der X-Achse. Die Streuung beschränkt sich, bis auf wenige Ausnahmen, auf eine Abweichung von $\pm$3 Minuten. 
  146.90 +
  146.91 +Interessant ist eine kleine Gruppe von abweichenden Zeiten im Bereich (-20, 25). Die Flüge in diesem Bereich wurden zur Einhaltung der Separationsregeln um rund 25 Minuten zeitlich versetzt. Die tatsächliche Abflugzeit liegt jedoch 20 Minuten vor der vergebenen Zeit, also unmittelbar nach der frühesten Abflugzeit. Die Entscheidung der Planer die vergebene Zeit nicht zu übersteuern und trotzdem den frühzeitigen Abflug zu gestatten, mag in der Funktion von DFLOW liegen, solche Verletzungen der Abflugslots visuell zu signalisieren. Sowohl der Planer an der AWP als auch der Fluglotse an der CWP werden durch eine definierte Zeichenkette über die Abweichung informiert und diesen Flügen besondere Aufmerksamkeit bei der Eingliederung in den Luftverkehr widmen.
  146.92 +\begin{figure}[h]%
  146.93 +%\centering
  146.94 +\parbox{6.5cm}{\input{laldo_hist}}%
  146.95 +\qquad
  146.96 +\begin{minipage}{1.2in}%
  146.97 +\input{labtar_hist}
  146.98 +\end{minipage}%
  146.99 +\caption[Histogramm von Separationszeiten]{Histogramm von den Separationszeiten an zwei verschiedenen Flow Points. Links: \emph{LALDO}, rechts: \emph{LABTAR}}%
 146.100 +\label{fig:1figs}%
 146.101 +\end{figure}\\
 146.102 +Eine wichtige Anmerkung zur folgenden Auswertung ist, dass die Separationsbeschränkungen auf Zeiträume mit hohem Verkehrsaufkommen gelegt werden. Da in diesen Zeiträumen der Großteil des täglichen Flugverkehrs abgehandelt wird, hat dies Auswirkung auf die Statistik.\\\\
 146.103 +Flow Point \emph{LALDO} umfasst zwei Wegpunkte und definiert in der Summe ca. 6 Stunden am Tag eine zeitliche Separation von 3 Minuten. Die Statistik belegt diesen Zustand und die erfolgreiche Funktion des DFLOW: für über 54\% der erfassten Flüge wurde von DFLOW eine Separation von 3 Minuten geplant. Die größeren Separationen zwischen 3 und 10 Minuten sind ein Zeichen dafür, dass der Flow Point noch freie Kapazitäten besitzt. Zum Vergleich weist \emph{LABTAR} im Durchschnitt eine höhere Verkehrsflussdichte von 29\% auf.
 146.104 +
 146.105 +Auch für den Flow Point \emph{LABTAR} sind zwei Wegpunkte für die Separation definiert. Die Separationskonfiguration für diesen Flow Point ist differenzierter und umfasst mehrere Zeiträume mit unterschiedlichen Zeiten. Rund 7,5 Stunden pro Tag gilt eine Separation von 5 Minuten, während ca. 1,5 Stunden eine zeitliche Separation von 3 Minuten gewährleistet werden soll. Das Histogramm zeigt dieses Verhalten mit den beiden größten Ausschlägen, 70\% der Separationszeiten liegen bei 5 Minuten und 10\% bei 3 Minuten.
 146.106 +
 146.107 +
 146.108 +
   147.1 Binary file references/bachelorarbeit-2008-biedermann.pdf has changed
   148.1 Binary file references/eurocontrol_dman.pdf has changed
   149.1 Binary file references/flugleiter2007_04.pdf has changed
   150.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   150.2 +++ b/report_12.10.2009	Fri Jun 04 13:48:28 2010 +0200
   150.3 @@ -0,0 +1,23 @@
   150.4 +Hallo Herr Mayer,
   150.5 +
   150.6 +als Erstes zum Organisatorischen: was sind die nächsten Schritte für mich, damit der BA-Antrag akzeptiert wird und war das Formular soweit in Ordnung?
   150.7 +
   150.8 +In den letzten beiden Wochen war meine Hauptaufgabe die Erstellung der ersten Version des Systems. Diese Version wird der GCAA übermittelt, dadurch erhalten wir erste Erfahrungsberichte vom Umgang mit der Planungskomponente. Die Kommentare der Planer werden wir zur Erarbeitung möglicherweise fehlender Requirements nutzen.
   150.9 +
  150.10 +Hierfür hat Wenzel Svojanovsky die GUI fertiggestellt, die soweit alle Vorgänge wie das Suchen nach Flugplänen, die Initiierung der Abflugszeitenkalkulation und das manuellen Setzen von Abflugszeiten unterstützt.
  150.11 +
  150.12 +Aufgrund der guten Werkzeugunterstützung war die lexikalische und syntaktische Analyse schnell und verlässlich erstellt. Der zeitliche Aufwand lag hauptsächlich bei der Entwicklung der virtuellen Maschine und dem FDPS-Prozess samt Interaktion mit der DMAP. 
  150.13 +
  150.14 +Die Grundelemente der VM und eine einfache API zur Ansteuerung wurden entwickelt. Die VM unterstützt nun die Zuordnung von Flugplanmuster und somit auch von Flow Points. Des weiteren ist der Algorithmus zur Evaluation der Abflugzeit realisiert worden, bisher jedoch nur mit Unterstützung für einen Flow Point.
  150.15 +
  150.16 +Der FDPS-DFLOW-Prozess interagiert mit der DMAP, in der sowohl die Flugplandaten als auch die DFLOW-Einträge festgehalten sind. Hierfür habe ich die vorhandene DMAP-Struktur und die der DFLOW-Erweiterung analysiert und entsprechend den DFLOW-Prozess entwickelt.
  150.17 +FDPS stellt mit Hilfe des Watchdog-Verfahrens die Vitalität der Prozesse fest, hierfür gab es eine Klasse, die dieses Verhalten automatisiert.
  150.18 +
  150.19 +Als letzten Schritt galt es die Testskripte für die erste Version zu erstellen. Die Skripte wurden mehrmals reviewed und erkannte Skriptfehler wurden beseitigt. Heute wurden die Tests von einem Mitarbeiter der Testteams durchgeführt, da ich jedoch heute krank bin, war ich nicht vor Ort und kenne die endgültigen Ergebnisse nicht. 
  150.20 +
  150.21 +Da ich das Software-Design lokal auf dem Arbeitssystem erstellt habe, kann ich im Moment nicht darauf zugreifen und werde es mit dem nächsten Bericht nachreichen.
  150.22 +
  150.23 +Gruß,
  150.24 +Eugen Sawin
  150.25 +
  150.26 +
   151.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   151.2 +++ b/report_24.09.2009	Fri Jun 04 13:48:28 2010 +0200
   151.3 @@ -0,0 +1,23 @@
   151.4 +Hallo Herr Mayer,
   151.5 +
   151.6 +als Erstes zum Titel der Bachelor-Arbeit, vorläufige Titel sind (englisch, deutsch):
   151.7 +(1) "DFLOW - A Departure Manager and Constraint Language for ATC Flow Control"
   151.8 +(2) "DFLOW - Abflugplanung zur Optimierung vom Flugverkehrsfluss unter Verwendung einer regelbasierten Domänensprache"
   151.9 +oder
  151.10 +(3) "DFLOW - Abflugplanung zur Verkehrsflussoptimierung unter Verwendung einer regelbasierten Domänensprache".
  151.11 +
  151.12 +Im Anhang befindet sich ein Auszug aus der Mindmap, die ich für die Thesis zwecks Übersicht erstellt habe.
  151.13 +In den letzten Wochen habe ich mich verstärkt mit dem "research"-Zweig beschäftigt.
  151.14 +
  151.15 +Nachdem ich bereits die Möglichkeit hatte in einem Meeting mit der GCAA zwecks Anforderungsanalyse dabei zu sein, war mir die Problematik der Verkehrsflusssteuerung bekannt. Weiterführend wurden zusammen mit Stephan Schulz und Nils Hilt die generellen Anforderungen an die Sprache und das DFLOW-System erarbeitet.
  151.16 + 
  151.17 +Darauf hin habe ich Literatur zum Thema Compiler-Bau untersucht und mich mit den Konzepten vertraut gemacht. Tools wie Lex und Yacc und deren C++- und GNU-Varianten wurden evaluiert. Anhand von Prototypen habe ich dann eine Entscheidung über den Einsatz solcher Parser-/Compiler-erzeugenden Tools gefällt.
  151.18 +
  151.19 +Die erste Syntax-Version der Sprache wurde definiert und besprochen, die Sprache läuft nun unter dem Titel ATCCL was für Air Traffic Control Constraint Language steht.
  151.20 +
  151.21 +Zum Thema Sicherheit habe bereits Vorkenntnisse gehabt was die Entwicklung nach dem IEC 61508 Standard angeht und habe diesbezüglich mich über vorhandene Datenstrukturen informiert, die ich nach SIL 2 einsetzen kann.
  151.22 +
  151.23 +Zum nächsten Bericht habe ich vor das vorerst grobe Design des Parser und des DFLOW-Systems in UML oder Ähnlichem festzusetzen.
  151.24 +
  151.25 +Gruß,
  151.26 +Eugen Sawin
   152.1 Binary file thesis_arbeitspakete.pdf has changed
   153.1 Binary file work_breakdown.ods has changed
   154.1 Binary file work_breakdown.xls has changed